Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
264 changes: 132 additions & 132 deletions .aqua/aqua-checksums.json
Original file line number Diff line number Diff line change
@@ -1,134 +1,134 @@
{
"checksums": [
{
"id": "github_release/github.com/caarlos0/svu/v3.2.4/svu_3.2.4_darwin_all.tar.gz",
"checksum": "E5664B4DE41C6696358BD456F5283E86F0BD30E65AB65FAAD349293D804F088E",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/caarlos0/svu/v3.2.4/svu_3.2.4_linux_amd64.tar.gz",
"checksum": "89A0BD658256C8561272EF2927EC0240C860779B042598C0456864583C88F702",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/caarlos0/svu/v3.2.4/svu_3.2.4_linux_arm64.tar.gz",
"checksum": "59B973E51E65BB153B97A1D4CA1E46347136EEDC0DA60594F6BB5B87C8B1AD45",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/caarlos0/svu/v3.2.4/svu_3.2.4_windows_amd64.zip",
"checksum": "74D8F24C312F2FFBD0866A2D38780B076A3D5EDF6690FBB17783358E3E88AFB4",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/caarlos0/svu/v3.2.4/svu_3.2.4_windows_arm64.zip",
"checksum": "2622A9322D6786363E746F6A5CA4884F858C59289571D567B46C18D2C2E160ED",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/casey/just/1.43.0/just-1.43.0-aarch64-apple-darwin.tar.gz",
"checksum": "BB0D35F6CA04709B798A19217693C16F4086170C580CC3B5C2531AD2794D2E32",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/casey/just/1.43.0/just-1.43.0-aarch64-unknown-linux-musl.tar.gz",
"checksum": "4FCD8310081C32742EB984B1FDD0EEE2E5D4D0F1BE9629318012D42606EC9B3E",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/casey/just/1.43.0/just-1.43.0-x86_64-apple-darwin.tar.gz",
"checksum": "687F66A6BD4D7D946EF5FF1E3EFEBB3D39DADAD151A8C6B1DE884CC93ADC06A5",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/casey/just/1.43.0/just-1.43.0-x86_64-pc-windows-msvc.zip",
"checksum": "04BE7B6D7F8419288CE75532F1962CEE1756992E494E6C8063BB3AB8DB21B52C",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/casey/just/1.43.0/just-1.43.0-x86_64-unknown-linux-musl.tar.gz",
"checksum": "A1BC93654F31669FD964EA3011A5E5E9676B9B6F8ADCD762606E5140632EA72D",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/goreleaser/goreleaser/v2.12.3/goreleaser_Darwin_all.tar.gz",
"checksum": "7AF0CE76660556F8A7CEB6C3D1B438E170EE3F551D5408153830697EB25F5962",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/goreleaser/goreleaser/v2.12.3/goreleaser_Linux_arm64.tar.gz",
"checksum": "A841DB4911C1DC32FB8EB1D4AFE91AE218C71BBC3B18379F9CDDB2EE899ACA31",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/goreleaser/goreleaser/v2.12.3/goreleaser_Linux_x86_64.tar.gz",
"checksum": "FD64C4BAEA57043A63CC209E8AD3FA54A7E3EDA88BF0D053D1AF9B577F328EAC",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/goreleaser/goreleaser/v2.12.3/goreleaser_Windows_arm64.zip",
"checksum": "D2FF86ED139485397DE82274628D6C1F725AD33614F81F043C798FDA46030D23",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/goreleaser/goreleaser/v2.12.3/goreleaser_Windows_x86_64.zip",
"checksum": "2D7E94D17806ED2EB704870716E66218AC8D062BFDB7DC105E575564AA54ADFE",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/oven-sh/bun/bun-v1.2.22/bun-darwin-aarch64.zip",
"checksum": "EB8C7E09CBEA572414A0A367848E1ACBF05294A946A594405A014B1FB3B3FC76",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/oven-sh/bun/bun-v1.2.22/bun-darwin-x64.zip",
"checksum": "A7484721A7EAD45887C812E760B124047E663173CF2A3BA7C5AA1992CB22CD3E",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/oven-sh/bun/bun-v1.2.22/bun-linux-aarch64.zip",
"checksum": "A97C687FB5E54DE4E2FB0869A7AC9A2D9C3AF75AC182E2B68138C1DD8F98131B",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/oven-sh/bun/bun-v1.2.22/bun-linux-x64.zip",
"checksum": "4C446AF1A01D7B40E1E11BAEBC352F9B2BFD12887E51B97DD3B59879CEE2743A",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/oven-sh/bun/bun-v1.2.22/bun-windows-x64.zip",
"checksum": "3A28C685B47A159C5707D150ACCB5B4903C30F1E7B4DD01BB311D4112BDEB452",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/oven-sh/bun/bun-v1.3.4/bun-darwin-aarch64.zip",
"checksum": "8803774E4C6C55C8A517464C508F02821E6DB57F94CA1BB5CC2A39F4D2326A51",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/oven-sh/bun/bun-v1.3.4/bun-darwin-x64.zip",
"checksum": "3390F9E6A82A9C718E187513B1C56405D0DE9ED3F6B092222B15B4D4BA6E304D",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/oven-sh/bun/bun-v1.3.4/bun-linux-aarch64.zip",
"checksum": "C46E841FED85347521915B1B3904D6D175D8E2FD915E18E01C111318219115A4",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/oven-sh/bun/bun-v1.3.4/bun-linux-x64.zip",
"checksum": "33C6996049E8D37E8B815959B14B05E5B6F496121352BF11BAE7D047193C28BF",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/oven-sh/bun/bun-v1.3.4/bun-windows-x64.zip",
"checksum": "2A9C0A9E6AD77D0C31FD8FB1F596B61AFA7F2F2F580BAAD597F17E7A0DBAD960",
"algorithm": "sha256"
},
{
"id": "registries/github_content/github.com/aquaproj/aqua-registry/v4.418.0/registry.yaml",
"checksum": "A388A9445DBB89721022D840C42A73106650FB0536C4ED6F0C38537C7AC32701",
"algorithm": "sha256"
}
]
"checksums": [
{
"id": "github_release/github.com/caarlos0/svu/v3.2.4/svu_3.2.4_darwin_all.tar.gz",
"checksum": "E5664B4DE41C6696358BD456F5283E86F0BD30E65AB65FAAD349293D804F088E",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/caarlos0/svu/v3.2.4/svu_3.2.4_linux_amd64.tar.gz",
"checksum": "89A0BD658256C8561272EF2927EC0240C860779B042598C0456864583C88F702",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/caarlos0/svu/v3.2.4/svu_3.2.4_linux_arm64.tar.gz",
"checksum": "59B973E51E65BB153B97A1D4CA1E46347136EEDC0DA60594F6BB5B87C8B1AD45",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/caarlos0/svu/v3.2.4/svu_3.2.4_windows_amd64.zip",
"checksum": "74D8F24C312F2FFBD0866A2D38780B076A3D5EDF6690FBB17783358E3E88AFB4",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/caarlos0/svu/v3.2.4/svu_3.2.4_windows_arm64.zip",
"checksum": "2622A9322D6786363E746F6A5CA4884F858C59289571D567B46C18D2C2E160ED",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/casey/just/1.43.0/just-1.43.0-aarch64-apple-darwin.tar.gz",
"checksum": "BB0D35F6CA04709B798A19217693C16F4086170C580CC3B5C2531AD2794D2E32",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/casey/just/1.43.0/just-1.43.0-aarch64-unknown-linux-musl.tar.gz",
"checksum": "4FCD8310081C32742EB984B1FDD0EEE2E5D4D0F1BE9629318012D42606EC9B3E",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/casey/just/1.43.0/just-1.43.0-x86_64-apple-darwin.tar.gz",
"checksum": "687F66A6BD4D7D946EF5FF1E3EFEBB3D39DADAD151A8C6B1DE884CC93ADC06A5",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/casey/just/1.43.0/just-1.43.0-x86_64-pc-windows-msvc.zip",
"checksum": "04BE7B6D7F8419288CE75532F1962CEE1756992E494E6C8063BB3AB8DB21B52C",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/casey/just/1.43.0/just-1.43.0-x86_64-unknown-linux-musl.tar.gz",
"checksum": "A1BC93654F31669FD964EA3011A5E5E9676B9B6F8ADCD762606E5140632EA72D",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/goreleaser/goreleaser/v2.12.3/goreleaser_Darwin_all.tar.gz",
"checksum": "7AF0CE76660556F8A7CEB6C3D1B438E170EE3F551D5408153830697EB25F5962",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/goreleaser/goreleaser/v2.12.3/goreleaser_Linux_arm64.tar.gz",
"checksum": "A841DB4911C1DC32FB8EB1D4AFE91AE218C71BBC3B18379F9CDDB2EE899ACA31",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/goreleaser/goreleaser/v2.12.3/goreleaser_Linux_x86_64.tar.gz",
"checksum": "FD64C4BAEA57043A63CC209E8AD3FA54A7E3EDA88BF0D053D1AF9B577F328EAC",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/goreleaser/goreleaser/v2.12.3/goreleaser_Windows_arm64.zip",
"checksum": "D2FF86ED139485397DE82274628D6C1F725AD33614F81F043C798FDA46030D23",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/goreleaser/goreleaser/v2.12.3/goreleaser_Windows_x86_64.zip",
"checksum": "2D7E94D17806ED2EB704870716E66218AC8D062BFDB7DC105E575564AA54ADFE",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/oven-sh/bun/bun-v1.2.22/bun-darwin-aarch64.zip",
"checksum": "EB8C7E09CBEA572414A0A367848E1ACBF05294A946A594405A014B1FB3B3FC76",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/oven-sh/bun/bun-v1.2.22/bun-darwin-x64.zip",
"checksum": "A7484721A7EAD45887C812E760B124047E663173CF2A3BA7C5AA1992CB22CD3E",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/oven-sh/bun/bun-v1.2.22/bun-linux-aarch64.zip",
"checksum": "A97C687FB5E54DE4E2FB0869A7AC9A2D9C3AF75AC182E2B68138C1DD8F98131B",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/oven-sh/bun/bun-v1.2.22/bun-linux-x64.zip",
"checksum": "4C446AF1A01D7B40E1E11BAEBC352F9B2BFD12887E51B97DD3B59879CEE2743A",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/oven-sh/bun/bun-v1.2.22/bun-windows-x64.zip",
"checksum": "3A28C685B47A159C5707D150ACCB5B4903C30F1E7B4DD01BB311D4112BDEB452",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/oven-sh/bun/bun-v1.3.4/bun-darwin-aarch64.zip",
"checksum": "8803774E4C6C55C8A517464C508F02821E6DB57F94CA1BB5CC2A39F4D2326A51",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/oven-sh/bun/bun-v1.3.4/bun-darwin-x64.zip",
"checksum": "3390F9E6A82A9C718E187513B1C56405D0DE9ED3F6B092222B15B4D4BA6E304D",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/oven-sh/bun/bun-v1.3.4/bun-linux-aarch64.zip",
"checksum": "C46E841FED85347521915B1B3904D6D175D8E2FD915E18E01C111318219115A4",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/oven-sh/bun/bun-v1.3.4/bun-linux-x64.zip",
"checksum": "33C6996049E8D37E8B815959B14B05E5B6F496121352BF11BAE7D047193C28BF",
"algorithm": "sha256"
},
{
"id": "github_release/github.com/oven-sh/bun/bun-v1.3.4/bun-windows-x64.zip",
"checksum": "2A9C0A9E6AD77D0C31FD8FB1F596B61AFA7F2F2F580BAAD597F17E7A0DBAD960",
"algorithm": "sha256"
},
{
"id": "registries/github_content/github.com/aquaproj/aqua-registry/v4.418.0/registry.yaml",
"checksum": "A388A9445DBB89721022D840C42A73106650FB0536C4ED6F0C38537C7AC32701",
"algorithm": "sha256"
}
]
}
6 changes: 6 additions & 0 deletions .github/workflows/source-quality.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,12 @@ jobs:
- name: Install dependencies
run: bun install

- name: Lint
run: just lint

- name: Format check
run: bun run oxfmt --check

- name: Typecheck
run: just typecheck

Expand Down
5 changes: 5 additions & 0 deletions .oxfmtrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"useTabs": true,
"singleQuote": false,
"experimentalSortImports": {}
}
8 changes: 8 additions & 0 deletions .oxlintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"categories": {
"correctness": "error"
},
"rules": {
"unicorn/no-new-array": "off"
}
}
9 changes: 9 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ src/
### Process Management (useProcessManager.tsx:1)

The heart of Curse's orchestration system. Handles:

- Process lifecycle (spawn, kill, restart)
- Dependency resolution and execution ordering
- Readiness probes (HTTP and exec)
Expand All @@ -70,6 +71,7 @@ The heart of Curse's orchestration system. Handles:
### Log System

**LogBuffer** (lib/LogBuffer.ts:1): Fixed-size circular buffer using a dequeue for efficient log storage and retrieval. Supports:

- O(1) append operations
- Efficient line-by-line access
- Memory-bounded storage (default 5,000 lines)
Expand All @@ -79,6 +81,7 @@ The heart of Curse's orchestration system. Handles:
### Configuration (parser.ts:1)

Uses arktype for runtime validation of TOML configs. Validates:

- Process definitions and dependencies
- Readiness probe configurations
- Lifecycle hooks
Expand Down Expand Up @@ -109,18 +112,21 @@ shutdown = { name = "cleanup", command = "docker-compose down" }
## Process Dependencies

Three dependency conditions:

- **started**: Dependent runs when dependency is running (any state after pending)
- **succeeded**: Dependent waits for dependency to exit successfully (exit code 0)
- **ready**: Dependent waits for readiness probe to pass (or running state if no probe)

## Readiness Probes

**HTTP Probe**: Polls an HTTP endpoint until it returns 200 OK

```toml
readiness_probe = { type = "http", host = "127.0.0.1", path = "/health", port = 8080 }
```

**Exec Probe**: Runs a shell command until it exits with code 0

```toml
readiness_probe = { type = "exec", command = "pg_isready -h localhost" }
```
Expand All @@ -138,13 +144,16 @@ readiness_probe = { type = "exec", command = "pg_isready -h localhost" }
## Development

### Building

```bash
bun install
bun run src/index.ts -p examples/basic/curse.toml
```

### Testing Examples

The `examples/` directory contains various test scenarios:

- `basic/`: Simple process configuration
- `deps/`: Dependency chain testing
- `hooks/`: Lifecycle hook examples
Expand Down
Loading