@usine/agents 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/README.md +35 -6
  2. package/dist/pi/authentication.d.ts +4 -4
  3. package/dist/pi/authentication.d.ts.map +1 -1
  4. package/dist/pi/authentication.js +2 -2
  5. package/dist/pi/authentication.js.map +1 -1
  6. package/dist/pi/children.d.ts +4 -1
  7. package/dist/pi/children.d.ts.map +1 -1
  8. package/dist/pi/children.js +4 -1
  9. package/dist/pi/children.js.map +1 -1
  10. package/dist/pi/claude.d.ts +6 -2
  11. package/dist/pi/claude.d.ts.map +1 -1
  12. package/dist/pi/claude.js +80 -15
  13. package/dist/pi/claude.js.map +1 -1
  14. package/dist/pi/codex/account.d.ts +11 -0
  15. package/dist/pi/codex/account.d.ts.map +1 -0
  16. package/dist/pi/codex/account.js +43 -0
  17. package/dist/pi/codex/account.js.map +1 -0
  18. package/dist/pi/codex/app-server.d.ts +15 -6
  19. package/dist/pi/codex/app-server.d.ts.map +1 -1
  20. package/dist/pi/codex/app-server.js +61 -22
  21. package/dist/pi/codex/app-server.js.map +1 -1
  22. package/dist/pi/codex/codec.d.ts +96 -0
  23. package/dist/pi/codex/codec.d.ts.map +1 -0
  24. package/dist/pi/codex/codec.js +110 -0
  25. package/dist/pi/codex/codec.js.map +1 -0
  26. package/dist/pi/codex/codex.d.ts +2 -0
  27. package/dist/pi/codex/codex.d.ts.map +1 -1
  28. package/dist/pi/codex/codex.js +143 -148
  29. package/dist/pi/codex/codex.js.map +1 -1
  30. package/dist/pi/conversation.d.ts +26 -0
  31. package/dist/pi/conversation.d.ts.map +1 -0
  32. package/dist/pi/conversation.js +93 -0
  33. package/dist/pi/conversation.js.map +1 -0
  34. package/dist/pi/live.d.ts +4 -0
  35. package/dist/pi/live.d.ts.map +1 -0
  36. package/dist/pi/{index.js → live.js} +2 -9
  37. package/dist/pi/live.js.map +1 -0
  38. package/dist/pi/pi.d.ts +3 -1
  39. package/dist/pi/pi.d.ts.map +1 -1
  40. package/dist/pi/pi.js +90 -64
  41. package/dist/pi/pi.js.map +1 -1
  42. package/dist/pi/sdk.d.ts +18 -13
  43. package/dist/pi/sdk.d.ts.map +1 -1
  44. package/dist/pi/sdk.js +15 -10
  45. package/dist/pi/sdk.js.map +1 -1
  46. package/dist/pi/session.d.ts +20 -21
  47. package/dist/pi/session.d.ts.map +1 -1
  48. package/dist/pi/session.js +23 -11
  49. package/dist/pi/session.js.map +1 -1
  50. package/dist/pi/subagents.d.ts +17 -11
  51. package/dist/pi/subagents.d.ts.map +1 -1
  52. package/dist/pi/subagents.js +81 -44
  53. package/dist/pi/subagents.js.map +1 -1
  54. package/dist/pi/thinking.d.ts +8 -0
  55. package/dist/pi/thinking.d.ts.map +1 -0
  56. package/dist/pi/thinking.js +15 -0
  57. package/dist/pi/thinking.js.map +1 -0
  58. package/dist/pi/turns.d.ts +28 -0
  59. package/dist/pi/turns.d.ts.map +1 -0
  60. package/dist/pi/turns.js +54 -0
  61. package/dist/pi/turns.js.map +1 -0
  62. package/dist/pi/usage.d.ts +25 -0
  63. package/dist/pi/usage.d.ts.map +1 -0
  64. package/dist/pi/usage.js +72 -0
  65. package/dist/pi/usage.js.map +1 -0
  66. package/dist/preflight/command.d.ts +7 -0
  67. package/dist/preflight/command.d.ts.map +1 -0
  68. package/dist/preflight/command.js +42 -0
  69. package/dist/preflight/command.js.map +1 -0
  70. package/dist/preflight/preflight.d.ts +13 -0
  71. package/dist/preflight/preflight.d.ts.map +1 -0
  72. package/dist/preflight/preflight.js +100 -0
  73. package/dist/preflight/preflight.js.map +1 -0
  74. package/dist/prompt.d.ts +15 -11
  75. package/dist/prompt.d.ts.map +1 -1
  76. package/dist/prompt.js +14 -11
  77. package/dist/prompt.js.map +1 -1
  78. package/dist/protocol/codex.d.ts +20 -6
  79. package/dist/protocol/codex.d.ts.map +1 -1
  80. package/dist/protocol/codex.js +7 -1
  81. package/dist/protocol/codex.js.map +1 -1
  82. package/dist/runtime.d.ts +59 -25
  83. package/dist/runtime.d.ts.map +1 -1
  84. package/dist/runtime.js +47 -34
  85. package/dist/runtime.js.map +1 -1
  86. package/package.json +34 -10
  87. package/dist/index.d.ts +0 -4
  88. package/dist/index.d.ts.map +0 -1
  89. package/dist/index.js +0 -4
  90. package/dist/index.js.map +0 -1
  91. package/dist/pi/index.d.ts +0 -11
  92. package/dist/pi/index.d.ts.map +0 -1
  93. package/dist/pi/index.js.map +0 -1
package/README.md CHANGED
@@ -2,27 +2,56 @@
2
2
 
3
3
  The agent runtime for [usine](https://github.com/basaltbytes/usine). Each Attempt starts an in-process Pi parent, which can delegate focused work through the usine-owned `subagent` tool. An agent's brain spec selects Claude Code, Codex, or Pi for the child.
4
4
 
5
- The package root is platform-free. It exports prompt assembly, normalized session events, typed runtime errors, and the `AgentRuntime` and `ChildBackend` service contracts. The Node implementation lives at `@usine/agents/pi`:
5
+ `@usine/agents/prompt` and `@usine/agents/runtime` are platform-free: prompt assembly, typed runtime errors, and the `AgentRuntime` and `ChildBackend` service contracts. The Node implementation lives at `@usine/agents/pi/live`:
6
6
 
7
7
  ```ts
8
- import { layer as agentLayer } from "@usine/agents/pi";
8
+ import { layer as agentLayer } from "@usine/agents/pi/live";
9
9
  ```
10
10
 
11
- The production layer resolves the Pi parent model from the Run spec, installs the subagents extension, and dispatches each child from the rostered `harness` field. The parent accepts API-key-backed Pi models and ChatGPT subscription models from the `openai-codex` provider. Claude Code runs with `bypassPermissions` and reads only worker-user settings. Codex uses app-server JSON-RPC over standard input and output with `approvalPolicy: never`; its thread stays ephemeral and records ChatGPT plan rate-window updates as `PoolRateLimitsUpdated` session events. Pi children remain API-key-only.
11
+ Use `@usine/agents/pi` to compose the Pi parent with your own child backend:
12
+
13
+ ```ts
14
+ import { Layer } from "effect";
15
+ import { piParentLayer, piSdkLive } from "@usine/agents/pi";
16
+
17
+ // childBackendLayer supplies ChildBackend from @usine/agents/runtime.
18
+ const agentLayer = piParentLayer.pipe(
19
+ Layer.provide(piSdkLive),
20
+ Layer.provide(childBackendLayer),
21
+ );
22
+ ```
23
+
24
+ `@usine/agents/children` provides `childDispatcherLayer`, which selects a child backend by harness. Compose its `ClaudeChildBackend`, `CodexChildBackend`, and `PiChildBackend` requirements with the adapter layers from `/claude`, `/codex`, and `/pi`. These Node entry points also provide their SDK service contracts and production SDK layers for caller-controlled composition. `/pi/live` assembles the parent and all three child backends.
25
+
26
+ The production layer resolves the Pi parent model from the Run spec, installs the subagents extension, and dispatches each child from the rostered `harness` field. The Run spec also defines the per-Attempt child-session budget. Every accepted spawn logs its cumulative count and a 160-character task excerpt; an excess spawn stops the parent with `ChildSessionBudgetExceededError`. The parent accepts API-key-backed Pi models and ChatGPT subscription models from the `openai-codex` provider. Claude Code runs the worker’s `claude` executable through the Agent SDK with `bypassPermissions` and reads only worker-user settings. Codex uses app-server JSON-RPC over standard input and output with `approvalPolicy: never`; it verifies ChatGPT authentication with `account/read` before creating an ephemeral thread and records ChatGPT plan rate-window updates as `PoolRateLimitsUpdated` session events. Pi children remain API-key-only.
12
27
 
13
28
  The Attempt worktree counts as repository-controlled input. Pi ignores project `.pi/` settings, extensions, prompt templates, skills, and themes. Claude omits project setting sources, while Codex marks the worktree untrusted before starting its thread. AGENTS instructions remain available to the coding harnesses. Worker isolation remains the executor's responsibility.
14
29
 
15
- Parent and child output becomes typed session events: `SessionStarted`, `TextOutput`, tool calls, pool observations, and `SessionFinished`. Each completed assistant message produces one `TextOutput`; streaming deltas don't enter the Attempt transcript. Parent and child controls support steer and interrupt. A child session always names one parent session, so recursive child events cannot enter the public model.
30
+ Parent and child output becomes typed session events: `SessionStarted`, `TextOutput`, tool calls, pool observations, and `SessionFinished`. Completed assistant text produces `TextOutput` events; streaming deltas don't enter the Attempt transcript. Parent and child controls support steer and interrupt. A child session always names one parent session, so recursive child events cannot enter the public model.
16
31
 
17
- Model identifiers stay opaque until the selected harness checks its registry. Agent-reported failures use `AgentResultError`; SDK, process, and protocol failures use `SessionOperationError`. `toAttemptFailure` maps only `SessionOperationError` to retryable infrastructure failure.
32
+ Model identifiers stay opaque until the selected harness checks its registry. Agent-reported failures use `AgentResultError`; SDK, process, and protocol failures use `SessionOperationError`. `toAttemptFailure` maps only `SessionOperationError` to retryable infrastructure failure, while `ChildSessionBudgetExceededError` becomes a non-retryable `ChildSessionBudgetFailure`.
18
33
 
19
34
  Configure Pi with either a provider API key or ChatGPT Plus/Pro OAuth for the parent. Pi children require API keys; Claude and Codex children use their CLI login state. The parent-start log records `apiKeys` or `chatgptPlan` according to the resolved credential. The harness SDK and protocol dependencies use exact versions.
20
35
 
21
- Run the opt-in live contracts with explicit models:
36
+ `@usine/agents/preflight` provides the Node `preflight(brain)` operation. Supply a `ChildProcessSpawner` layer to check a worker without running a prompt. It accepts Codex CLI **0.144.0 or 0.153.4**, verifies the Codex ChatGPT account, checks `claude auth status --json` for a Claude subscription, and checks Pi’s model and API-key authentication through the installed SDK. `HarnessUnavailableError` identifies a binary, version, or login gap; `SessionOperationError` reports an incomplete check, including a timeout or failed SDK connection. Install and log in as the worker user before starting usine.
37
+
38
+ A Codex API-key login, absent login, or unsupported account response produces `PoolUnavailableError`, which requires operator action. The verified authentication method and pool appear in structured logs. An authentication change during a running Codex session ends it before further rate windows are recorded.
39
+
40
+ The opt-in live contracts run in disposable directories. They steer a child during a waiting command, assert the changed response and event framing, and interrupt another active command. The Codex contract also requires a real rate-window snapshot. Use a supported Codex CLI with a ChatGPT login; the Pi contract requires API-key authentication for the specified provider.
41
+
42
+ Run them with explicit models:
22
43
 
23
44
  ```sh
24
45
  USINE_CODEX_INTEGRATION_MODEL=gpt-5.6-terra pnpm --filter @usine/agents test:integration:codex
25
46
  USINE_PI_INTEGRATION_MODEL=anthropic/claude-sonnet-4-6 pnpm --filter @usine/agents test:integration:pi
26
47
  ```
27
48
 
49
+ The protocol conformance gate retains 0.144.0 as its baseline. Codex 0.153.4 was also checked against its generated protocol types and the real steering/interruption contracts, including Astra. Other CLI builds require verification before they are accepted.
50
+
51
+ Each Codex child owns one app-server process. On completion or interruption, usine closes its input and waits for graceful shutdown before publishing the result, so background commands are released. Scope cleanup uses the same bounded shutdown and logs before forcing a stalled process to stop.
52
+
28
53
  Everything here is 0.x, so APIs can change between minor releases. Supply `effect` at the version pinned by the usine workspace.
54
+
55
+ Agents share the installation’s GitHub App identity. Runtime instructions require comment reviews at the reviewed head commit and the outcome labels defined by the Loop. An agent success label does not satisfy GitHub’s required-review rule; an independent reviewer supplies required approval and the operator merges. See the [review/fix guide](../../docs/guides/review-fix-loops.md).
56
+
57
+ Claude children persist their sessions; Codex children start non-ephemeral threads. Their `SessionStarted.harnessSession` records the native session id and worker working directory, and structured launch logs include `harnessSessionId`, `sessionId`, and `cwd`. Resume with `claude --resume <id>` or `codex resume <id>` from that directory on the same worker and account, while its worktree and saved session files still exist. Attempt cleanup removes the worktree.
@@ -1,13 +1,13 @@
1
- import type { Agent } from "@usine/core";
1
+ import type { BillingPool } from "@usine/core/agent/session";
2
2
  export type PiAuthentication = {
3
3
  readonly _tag: "ApiKey";
4
4
  } | {
5
5
  readonly _tag: "OAuth";
6
6
  readonly subscription: boolean;
7
7
  };
8
- export type PiPool = Extract<Agent.Pool, "apiKeys" | "chatgptPlan">;
9
- /** Billing pool the selected Pi provider must have available before launch. */
8
+ export type PiPool = Extract<BillingPool, "apiKeys" | "chatgptPlan">;
9
+ /** The billing pool the chosen Pi provider spends from, checked before launch. */
10
10
  export declare const requiredPiPool: (provider: string) => PiPool;
11
- /** Resolve Pi's billing source from the credential that will spend the model request. */
11
+ /** Returns the billing pool of the credential that pays for the model request. */
12
12
  export declare const resolvePiPool: (provider: string, authentication: PiAuthentication | undefined) => PiPool | undefined;
13
13
  //# sourceMappingURL=authentication.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"authentication.d.ts","sourceRoot":"","sources":["../../src/pi/authentication.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC3B;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;CAAE,CAAC;AAC/D,MAAM,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,aAAa,CAAC,CAAC;AAEpE,+EAA+E;AAC/E,eAAO,MAAM,cAAc,aAAc,MAAM,KAAG,MACO,CAAC;AAE1D,yFAAyF;AACzF,eAAO,MAAM,aAAa,aACd,MAAM,kBACA,gBAAgB,GAAG,SAAS,KAC3C,MAAM,GAAG,SAUX,CAAC"}
1
+ {"version":3,"file":"authentication.d.ts","sourceRoot":"","sources":["../../src/pi/authentication.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC3B;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;CAAE,CAAC;AAC/D,MAAM,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,SAAS,GAAG,aAAa,CAAC,CAAC;AAErE,kFAAkF;AAClF,eAAO,MAAM,cAAc,aAAc,MAAM,KAAG,MACO,CAAC;AAE1D,kFAAkF;AAClF,eAAO,MAAM,aAAa,aACd,MAAM,kBACA,gBAAgB,GAAG,SAAS,KAC3C,MAAM,GAAG,SAUX,CAAC"}
@@ -1,6 +1,6 @@
1
- /** Billing pool the selected Pi provider must have available before launch. */
1
+ /** The billing pool the chosen Pi provider spends from, checked before launch. */
2
2
  export const requiredPiPool = (provider) => provider === "openai-codex" ? "chatgptPlan" : "apiKeys";
3
- /** Resolve Pi's billing source from the credential that will spend the model request. */
3
+ /** Returns the billing pool of the credential that pays for the model request. */
4
4
  export const resolvePiPool = (provider, authentication) => {
5
5
  if (authentication?._tag === "ApiKey")
6
6
  return "apiKeys";
@@ -1 +1 @@
1
- {"version":3,"file":"authentication.js","sourceRoot":"","sources":["../../src/pi/authentication.ts"],"names":[],"mappings":"AAOA,+EAA+E;AAC/E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAU,EAAE,CACzD,QAAQ,KAAK,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;AAE1D,yFAAyF;AACzF,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,QAAgB,EAChB,cAA4C,EACxB,EAAE;IACtB,IAAI,cAAc,EAAE,IAAI,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACxD,IACE,cAAc,EAAE,IAAI,KAAK,OAAO;QAChC,cAAc,CAAC,YAAY;QAC3B,QAAQ,KAAK,cAAc,EAC3B,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC"}
1
+ {"version":3,"file":"authentication.js","sourceRoot":"","sources":["../../src/pi/authentication.ts"],"names":[],"mappings":"AAOA,kFAAkF;AAClF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAU,EAAE,CACzD,QAAQ,KAAK,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;AAE1D,kFAAkF;AAClF,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,QAAgB,EAChB,cAA4C,EACxB,EAAE;IACtB,IAAI,cAAc,EAAE,IAAI,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACxD,IACE,cAAc,EAAE,IAAI,KAAK,OAAO;QAChC,cAAc,CAAC,YAAY;QAC3B,QAAQ,KAAK,cAAc,EAC3B,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC"}
@@ -1,5 +1,8 @@
1
1
  import { Layer } from "effect";
2
2
  import { ChildBackend, ClaudeChildBackend, CodexChildBackend, PiChildBackend } from "../runtime.ts";
3
- /** Selects one concrete child backend from the authored BrainSpec harness. */
3
+ /**
4
+ * Selects Claude Code, Codex, or Pi for each delegated task from the Agent's harness.
5
+ * Supply the three backend layers here, or use a concrete backend directly.
6
+ */
4
7
  export declare const childDispatcherLayer: Layer.Layer<ChildBackend, never, ClaudeChildBackend | CodexChildBackend | PiChildBackend>;
5
8
  //# sourceMappingURL=children.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"children.d.ts","sourceRoot":"","sources":["../../src/pi/children.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAyBpG,8EAA8E;AAC9E,eAAO,MAAM,oBAAoB,2FAAkD,CAAC"}
1
+ {"version":3,"file":"children.d.ts","sourceRoot":"","sources":["../../src/pi/children.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAyBpG;;;GAGG;AACH,eAAO,MAAM,oBAAoB,2FAAkD,CAAC"}
@@ -21,6 +21,9 @@ const makeChildDispatcher = Effect.gen(function* () {
21
21
  }),
22
22
  });
23
23
  });
24
- /** Selects one concrete child backend from the authored BrainSpec harness. */
24
+ /**
25
+ * Selects Claude Code, Codex, or Pi for each delegated task from the Agent's harness.
26
+ * Supply the three backend layers here, or use a concrete backend directly.
27
+ */
25
28
  export const childDispatcherLayer = Layer.effect(ChildBackend, makeChildDispatcher);
26
29
  //# sourceMappingURL=children.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"children.js","sourceRoot":"","sources":["../../src/pi/children.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpG,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,kBAAkB,CAAC;IACzC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,iBAAiB,CAAC;IACvC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC;IAEjC,OAAO,YAAY,CAAC,EAAE,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO;YACzD,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,2BAA2B,EAAE;gBAClD,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO;gBACtC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;aAC9B,CAAC,CAAC;YACH,QAAQ,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACtC,KAAK,QAAQ;oBACX,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACvC,KAAK,OAAO;oBACV,OAAO,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACtC,KAAK,IAAI;oBACP,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACrC,CAAC;QACH,CAAC,CAAC;KACH,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC"}
1
+ {"version":3,"file":"children.js","sourceRoot":"","sources":["../../src/pi/children.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpG,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,kBAAkB,CAAC;IACzC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,iBAAiB,CAAC;IACvC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC;IAEjC,OAAO,YAAY,CAAC,EAAE,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO;YACzD,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,2BAA2B,EAAE;gBAClD,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO;gBACtC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;aAC9B,CAAC,CAAC;YACH,QAAQ,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACtC,KAAK,QAAQ;oBACX,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACvC,KAAK,OAAO;oBACV,OAAO,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACtC,KAAK,IAAI;oBACP,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACrC,CAAC;QACH,CAAC,CAAC;KACH,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC"}
@@ -9,12 +9,12 @@ export interface ClaudeUserMessage {
9
9
  };
10
10
  readonly parent_tool_use_id: null;
11
11
  }
12
- export type ClaudeQueryOptions = Pick<Options, "allowDangerouslySkipPermissions" | "cwd" | "effort" | "model" | "permissionMode" | "persistSession" | "settingSources" | "thinking">;
12
+ export type ClaudeQueryOptions = Pick<Options, "allowDangerouslySkipPermissions" | "cwd" | "effort" | "model" | "pathToClaudeCodeExecutable" | "permissionMode" | "persistSession" | "settingSources" | "thinking" | "hooks">;
13
13
  export interface ClaudeModelInfo {
14
14
  readonly value: string;
15
15
  readonly resolvedModel?: string;
16
16
  }
17
- /** Narrow vendor seam: tests never need to imitate the SDK's large Query surface. */
17
+ /** A live Claude Code session with its messages, model discovery, and stop controls. */
18
18
  export interface ClaudeQuery extends AsyncIterable<Schema.Json> {
19
19
  readonly close: () => void;
20
20
  readonly interrupt: () => Promise<void>;
@@ -23,10 +23,14 @@ export interface ClaudeQuery extends AsyncIterable<Schema.Json> {
23
23
  declare const ClaudeSdk_base: Context.ServiceClass<ClaudeSdk, "@usine/agents/pi/ClaudeSdk", {
24
24
  readonly open: (input: AsyncIterable<ClaudeUserMessage>, options: ClaudeQueryOptions) => ClaudeQuery;
25
25
  }>;
26
+ /** Opens Claude Code sessions with the supplied task input and session settings. */
26
27
  export declare class ClaudeSdk extends ClaudeSdk_base {
27
28
  }
29
+ /** Provides Claude Code's session creation and model discovery. */
28
30
  export declare const claudeSdkLive: Layer.Layer<ClaudeSdk, never, never>;
31
+ /** Uses Claude Code for every task delegated through `ChildBackend`. */
29
32
  export declare const claudeChildLayer: Layer.Layer<ChildBackend, never, ClaudeSdk>;
33
+ /** Provides the Claude Code backend for direct use or harness-based dispatch. */
30
34
  export declare const claudeChildBackendLayer: Layer.Layer<ClaudeChildBackend, never, ClaudeSdk>;
31
35
  export {};
32
36
  //# sourceMappingURL=claude.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/pi/claude.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,OAAO,EAGb,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,OAAO,EAAoB,KAAK,EAAU,MAAM,EAAU,MAAM,QAAQ,CAAC;AAClF,OAAO,EAEL,kBAAkB,EAClB,YAAY,EAKb,MAAM,eAAe,CAAC;AAGvB,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE,QAAQ,CAAC,kBAAkB,EAAE,IAAI,CAAC;CACnC;AAED,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,OAAO,EACL,iCAAiC,GACjC,KAAK,GACL,QAAQ,GACR,OAAO,GACP,gBAAgB,GAChB,gBAAgB,GAChB,gBAAgB,GAChB,UAAU,CACb,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,qFAAqF;AACrF,MAAM,WAAW,WAAY,SAAQ,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC;IAC7D,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,QAAQ,CAAC,eAAe,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC;CACzE;;mBAKkB,CACb,KAAK,EAAE,aAAa,CAAC,iBAAiB,CAAC,EACvC,OAAO,EAAE,kBAAkB,KACxB,WAAW;;AANpB,qBAAa,SAAU,SAAQ,cAQE;CAAG;AAOpC,eAAO,MAAM,aAAa,sCAexB,CAAC;AAgRH,eAAO,MAAM,gBAAgB,6CAA8C,CAAC;AAC5E,eAAO,MAAM,uBAAuB,mDAAoD,CAAC"}
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/pi/claude.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,OAAO,EAIb,MAAM,gCAAgC,CAAC;AAaxC,OAAO,EAAE,OAAO,EAA2B,KAAK,EAAe,MAAM,EAAU,MAAM,QAAQ,CAAC;AAC9F,OAAO,EAEL,kBAAkB,EAClB,YAAY,EAKb,MAAM,eAAe,CAAC;AAKvB,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE,QAAQ,CAAC,kBAAkB,EAAE,IAAI,CAAC;CACnC;AAED,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,OAAO,EACL,iCAAiC,GACjC,KAAK,GACL,QAAQ,GACR,OAAO,GACP,4BAA4B,GAC5B,gBAAgB,GAChB,gBAAgB,GAChB,gBAAgB,GAChB,UAAU,GACV,OAAO,CACV,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,wFAAwF;AACxF,MAAM,WAAW,WAAY,SAAQ,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC;IAC7D,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,QAAQ,CAAC,eAAe,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC;CACzE;;mBAMkB,CACb,KAAK,EAAE,aAAa,CAAC,iBAAiB,CAAC,EACvC,OAAO,EAAE,kBAAkB,KACxB,WAAW;;AAPpB,oFAAoF;AACpF,qBAAa,SAAU,SAAQ,cAQE;CAAG;AAOpC,mEAAmE;AACnE,eAAO,MAAM,aAAa,sCAexB,CAAC;AA0VH,wEAAwE;AACxE,eAAO,MAAM,gBAAgB,6CAA8C,CAAC;AAC5E,iFAAiF;AACjF,eAAO,MAAM,uBAAuB,mDAAoD,CAAC"}
package/dist/pi/claude.js CHANGED
@@ -1,15 +1,20 @@
1
1
  import { query as openClaudeQuery, } from "@anthropic-ai/claude-agent-sdk";
2
- import { Agent } from "@usine/core";
3
- import { Context, Deferred, Effect, Layer, Option, Schema, Stream } from "effect";
2
+ import { ModelId } from "@usine/core/agent/brain";
3
+ import { AgentSessionEvent, ChildSession, HarnessSession, HarnessSessionId, SessionStarted, SessionTokensUpdated, TextOutput, ToolFinished, ToolStarted, } from "@usine/core/agent/session";
4
+ import { Context, Deferred, Effect, Fiber, Layer, Option, Ref, Schema, Stream } from "effect";
4
5
  import { AgentResultError, ClaudeChildBackend, ChildBackend, SessionOperationError, UnknownModelError, } from "../runtime.js";
5
6
  import { sessionChannel } from "./session.js";
7
+ import { sessionConversation } from "./conversation.js";
8
+ import { claudeTokenMeter } from "./usage.js";
9
+ /** Opens Claude Code sessions with the supplied task input and session settings. */
6
10
  export class ClaudeSdk extends Context.Service()("@usine/agents/pi/ClaudeSdk") {
7
11
  }
8
12
  const decodeVendorMessage = Schema.decodeUnknownSync(Schema.fromJsonString(Schema.Json));
9
13
  const vendorMessageJson = (message) => decodeVendorMessage(JSON.stringify(message));
14
+ /** Provides Claude Code's session creation and model discovery. */
10
15
  export const claudeSdkLive = Layer.succeed(ClaudeSdk)({
11
16
  open: (input, options) => {
12
- // SAFETY: ClaudeUserMessage is the exact streaming-input subset of SDKUserMessage.
17
+ // SAFETY: ClaudeUserMessage is the streaming-input subset of SDKUserMessage.
13
18
  const query = openClaudeQuery({ prompt: input, options });
14
19
  return {
15
20
  close: () => query.close(),
@@ -74,11 +79,13 @@ const optionsFor = (request) => {
74
79
  allowDangerouslySkipPermissions: true,
75
80
  cwd: request.cwd,
76
81
  model: request.session.brain.model,
82
+ // Use the same worker-provisioned binary that readiness checks inspect.
83
+ pathToClaudeCodeExecutable: "claude",
77
84
  permissionMode: "bypassPermissions",
78
- persistSession: false,
79
- // The Attempt worktree is repository-controlled input: its project and
80
- // local settings (hooks, env) must never load into a child that carries
81
- // the App credential. Only the worker user's own settings apply.
85
+ persistSession: true,
86
+ // The worktree is repository-controlled input. Its project and local
87
+ // settings (hooks, env) must not load into a child that runs with the App
88
+ // credential, so only the worker user's settings apply.
82
89
  settingSources: ["user"],
83
90
  };
84
91
  return effort === "off"
@@ -90,6 +97,11 @@ const optionsFor = (request) => {
90
97
  };
91
98
  };
92
99
  const modelExists = (models, model) => models.some((candidate) => candidate.value === model || candidate.resolvedModel === model);
100
+ const decodeClaudeInit = Schema.decodeUnknownOption(Schema.Struct({
101
+ type: Schema.Literal("system"),
102
+ subtype: Schema.Literal("init"),
103
+ session_id: HarnessSessionId,
104
+ }));
93
105
  const ClaudeTextBlock = Schema.Struct({
94
106
  type: Schema.Literal("text"),
95
107
  text: Schema.NonEmptyString,
@@ -122,14 +134,14 @@ const sessionEventsFrom = (message, session, tools) => {
122
134
  return [];
123
135
  const events = [];
124
136
  for (const block of message.message.content) {
125
- // Complete messages only: one TextOutput per finished assistant message
126
- // keeps transcript volume at message granularity, matching the parent.
137
+ // Emit each text block from a completed assistant message; streaming deltas
138
+ // do not enter the transcript.
127
139
  if (message.type === "assistant" && Schema.is(ClaudeTextBlock)(block)) {
128
- events.push(new Agent.TextOutput({ session, text: block.text }));
140
+ events.push(new TextOutput({ session, text: block.text }));
129
141
  }
130
142
  else if (Schema.is(ClaudeToolUseBlock)(block)) {
131
143
  tools.set(block.id, block.name);
132
- events.push(new Agent.ToolStarted({
144
+ events.push(new ToolStarted({
133
145
  session,
134
146
  callId: block.id,
135
147
  tool: block.name,
@@ -137,7 +149,7 @@ const sessionEventsFrom = (message, session, tools) => {
137
149
  }));
138
150
  }
139
151
  else if (Schema.is(ClaudeToolResultBlock)(block)) {
140
- events.push(new Agent.ToolFinished({
152
+ events.push(new ToolFinished({
141
153
  session,
142
154
  callId: block.tool_use_id,
143
155
  tool: tools.get(block.tool_use_id) ?? "unknown",
@@ -161,7 +173,20 @@ const makeClaudeChild = Effect.gen(function* () {
161
173
  });
162
174
  yield* Effect.logInfo("Launching Claude child session");
163
175
  const input = new AsyncInput();
164
- const query = sdk.open(input, optionsFor(request));
176
+ const context = yield* Effect.context();
177
+ const scope = yield* Effect.scope;
178
+ let boundary = Effect.void;
179
+ const pauseAtBoundary = async (_input, _id, options) => {
180
+ await Effect.runPromiseWith(context)(Effect.acquireUseRelease(Effect.forkIn(Effect.suspend(() => boundary), scope), Fiber.join, Fiber.interrupt), { signal: options.signal });
181
+ return {};
182
+ };
183
+ const query = sdk.open(input, {
184
+ ...optionsFor(request),
185
+ hooks: {
186
+ PreToolUse: [{ hooks: [pauseAtBoundary], timeout: 86_400 }],
187
+ PostToolUse: [{ hooks: [pauseAtBoundary], timeout: 86_400 }],
188
+ },
189
+ });
165
190
  yield* Effect.addFinalizer(() => Effect.sync(() => {
166
191
  input.end();
167
192
  query.close();
@@ -185,10 +210,47 @@ const makeClaudeChild = Effect.gen(function* () {
185
210
  channel.onTerminal(() => {
186
211
  input.end();
187
212
  });
213
+ const conversation = yield* sessionConversation({
214
+ session: request.session,
215
+ channel,
216
+ send: (message) => Effect.try({
217
+ try: () => input.offer(userMessage(message)),
218
+ catch: (cause) => operationError("steer", request, "Could not send a message to Claude", cause),
219
+ }),
220
+ pause: Effect.void,
221
+ beforeFinish: Effect.void,
222
+ });
223
+ boundary = conversation.awaitUnpaused;
188
224
  const tools = new Map();
189
- yield* channel.emit(new Agent.SessionStarted({ session: request.session }));
225
+ const tokens = claudeTokenMeter();
226
+ // Claude repeats its `init` message ahead of every turn; only the first
227
+ // one is the launch record, and its session id stays constant.
228
+ const launched = yield* Ref.make(false);
190
229
  input.offer(userMessage(request.prompt));
191
230
  const consume = Stream.fromAsyncIterable(query, (cause) => operationError("stream", request, "Claude output stream failed", cause)).pipe(Stream.runForEach((message) => Effect.gen(function* () {
231
+ const init = decodeClaudeInit(message);
232
+ if (Option.isSome(init) && !(yield* Ref.getAndSet(launched, true))) {
233
+ const harnessSession = new HarnessSession({
234
+ id: init.value.session_id,
235
+ cwd: request.cwd,
236
+ });
237
+ yield* channel.emit(new SessionStarted({
238
+ session: request.session,
239
+ harnessSession: Option.some(harnessSession),
240
+ }));
241
+ yield* Effect.logInfo("Claude child session saved", {
242
+ sessionId: request.session.id,
243
+ parentSessionId: request.session.parentId,
244
+ harnessSessionId: harnessSession.id,
245
+ cwd: harnessSession.cwd,
246
+ });
247
+ }
248
+ const totalTokens = tokens(message);
249
+ if (Option.isSome(totalTokens))
250
+ yield* channel.emit(new SessionTokensUpdated({
251
+ session: request.session,
252
+ totalTokens: totalTokens.value,
253
+ }));
192
254
  for (const event of sessionEventsFrom(message, request.session, tools)) {
193
255
  yield* channel.emit(event);
194
256
  }
@@ -205,7 +267,7 @@ const makeClaudeChild = Effect.gen(function* () {
205
267
  if (message.queued_turn_count !== undefined && message.queued_turn_count > 0) {
206
268
  return;
207
269
  }
208
- yield* channel.finish(request.session, message.result.trim() || "Claude child session completed");
270
+ yield* conversation.finish(message.result.trim() || "Claude child session completed");
209
271
  })), Effect.flatMap(() => channel.isTerminal.pipe(Effect.flatMap((done) => done
210
272
  ? Effect.void
211
273
  : channel.fail(operationError("stream", request, "Claude output closed without a result", new Error("unexpected end of output")))))), Effect.catch((error) => channel.fail(error)));
@@ -228,10 +290,13 @@ const makeClaudeChild = Effect.gen(function* () {
228
290
  interrupt,
229
291
  result: Deferred.await(channel.result),
230
292
  steer,
293
+ intervene: conversation.intervene,
231
294
  };
232
295
  });
233
296
  return ChildBackend.of({ launch });
234
297
  });
298
+ /** Uses Claude Code for every task delegated through `ChildBackend`. */
235
299
  export const claudeChildLayer = Layer.effect(ChildBackend, makeClaudeChild);
300
+ /** Provides the Claude Code backend for direct use or harness-based dispatch. */
236
301
  export const claudeChildBackendLayer = Layer.effect(ClaudeChildBackend, makeClaudeChild);
237
302
  //# sourceMappingURL=claude.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/pi/claude.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/pi/claude.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { ModelId } from "@usine/core/agent/brain";
2
+ import { Effect } from "effect";
3
+ import { PoolUnavailableError } from "../../runtime.ts";
4
+ import type { CodexConnection } from "./app-server.ts";
5
+ /** Negotiates the app-server connection before account inspection or child creation. */
6
+ export declare const initializeCodex: (connection: CodexConnection) => Effect.Effect<void, import("../../runtime.ts").SessionOperationError, never>;
7
+ /** Operator-facing refusal when Codex cannot prove it uses the ChatGPT pool. */
8
+ export declare const codexPoolUnavailable: (model: ModelId) => PoolUnavailableError;
9
+ /** Refuses unknown, absent, or API-key authentication before any model request (ADR 0013). */
10
+ export declare const verifyCodexAccount: (connection: CodexConnection, model: string & import("effect/Brand").Brand<"ModelId">) => Effect.Effect<"chatgptPlan", PoolUnavailableError | import("../../runtime.ts").SessionOperationError, never>;
11
+ //# sourceMappingURL=account.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../../src/pi/codex/account.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAMxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,wFAAwF;AACxF,eAAO,MAAM,eAAe,+GAS1B,CAAC;AAEH,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,UAAW,OAAO,yBAM/C,CAAC;AAEL,8FAA8F;AAC9F,eAAO,MAAM,kBAAkB,wMAgC7B,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { Effect, Schema } from "effect";
2
+ import { PoolUnavailableError } from "../../runtime.js";
3
+ import { AccountResponse, } from "../../protocol/codex.js";
4
+ /** Negotiates the app-server connection before account inspection or child creation. */
5
+ export const initializeCodex = Effect.fn("Codex.initialize")(function* (connection) {
6
+ const params = {
7
+ clientInfo: { name: "usine", title: "usine", version: "0.0.1" },
8
+ capabilities: null,
9
+ };
10
+ yield* connection.request("launch", "initialize", Schema.decodeUnknownSync(Schema.Json)(params));
11
+ yield* connection.notify("launch", "initialized", {});
12
+ });
13
+ /** Operator-facing refusal when Codex cannot prove it uses the ChatGPT pool. */
14
+ export const codexPoolUnavailable = (model) => new PoolUnavailableError({
15
+ harness: "codex",
16
+ model,
17
+ pool: "chatgptPlan",
18
+ message: "Codex children require a ChatGPT login; run codex login on the Worker",
19
+ });
20
+ /** Refuses unknown, absent, or API-key authentication before any model request (ADR 0013). */
21
+ export const verifyCodexAccount = Effect.fn("Codex.verifyAccount")(function* (connection, model) {
22
+ yield* Effect.annotateCurrentSpan({ harness: "codex", model });
23
+ const params = { refreshToken: false };
24
+ const response = yield* connection.request("launch", "account/read", Schema.decodeUnknownSync(Schema.Json)(params));
25
+ const account = yield* Schema.decodeUnknownEffect(AccountResponse)(response).pipe(Effect.tapError(() => Effect.logError("Codex returned an unrecognized account status", { model })),
26
+ // An unrecognized auth response is not evidence of a supported billing pool.
27
+ Effect.mapError(() => codexPoolUnavailable(model)));
28
+ if (account.account?.type !== "chatgpt" || !account.requiresOpenaiAuth) {
29
+ yield* Effect.logError("Codex rejected an unavailable billing pool", {
30
+ model,
31
+ requiredPool: "chatgptPlan",
32
+ authentication: account.account?.type ?? "logged-out",
33
+ });
34
+ return yield* codexPoolUnavailable(model);
35
+ }
36
+ yield* Effect.logInfo("Codex billing pool verified", {
37
+ model,
38
+ authentication: account.account.type,
39
+ pool: "chatgptPlan",
40
+ });
41
+ return "chatgptPlan";
42
+ });
43
+ //# sourceMappingURL=account.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../../../src/pi/codex/account.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EACL,eAAe,GAGhB,MAAM,yBAAyB,CAAC;AAGjC,wFAAwF;AACxF,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,EACpE,UAA2B;IAE3B,MAAM,MAAM,GAAqB;QAC/B,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE;QAC/D,YAAY,EAAE,IAAI;KACnB,CAAC;IACF,KAAK,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACjG,KAAK,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC;AAEH,gFAAgF;AAChF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAc,EAAE,EAAE,CACrD,IAAI,oBAAoB,CAAC;IACvB,OAAO,EAAE,OAAO;IAChB,KAAK;IACL,IAAI,EAAE,aAAa;IACnB,OAAO,EAAE,uEAAuE;CACjF,CAAC,CAAC;AAEL,8FAA8F;AAC9F,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,QAAQ,CAAC,EAC1E,UAA2B,EAC3B,KAAc;IAEd,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAqB,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IACzD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,OAAO,CACxC,QAAQ,EACR,cAAc,EACd,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAC9C,CAAC;IACF,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC/E,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CACnB,MAAM,CAAC,QAAQ,CAAC,+CAA+C,EAAE,EAAE,KAAK,EAAE,CAAC,CAC5E;IACD,6EAA6E;IAC7E,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CACnD,CAAC;IACF,IAAI,OAAO,CAAC,OAAO,EAAE,IAAI,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;QACvE,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,4CAA4C,EAAE;YACnE,KAAK;YACL,YAAY,EAAE,aAAa;YAC3B,cAAc,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,IAAI,YAAY;SACtD,CAAC,CAAC;QACH,OAAO,KAAK,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IACD,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,6BAA6B,EAAE;QACnD,KAAK;QACL,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI;QACpC,IAAI,EAAE,aAAa;KACpB,CAAC,CAAC;IACH,OAAO,aAAsB,CAAC;AAChC,CAAC,CAAC,CAAC"}
@@ -1,23 +1,32 @@
1
- import { Context, Effect, Layer, Schema, Scope, Stream } from "effect";
1
+ import { Context, Effect, Layer, Option, Schema, Scope, Stream } from "effect";
2
2
  import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";
3
- import { type ChildRequest, SessionOperationError } from "../../runtime.ts";
3
+ import type { AgentSessionId } from "@usine/core/agent/session";
4
+ import { type WorkingDirectory, SessionOperationError } from "../../runtime.ts";
5
+ /** Worker directory and optional session identity for a scoped app-server connection. */
6
+ export interface CodexClient {
7
+ readonly cwd: WorkingDirectory;
8
+ /** None during preflight, before a child Session exists. */
9
+ readonly sessionId: Option.Option<AgentSessionId>;
10
+ }
4
11
  export interface CodexNotification {
5
12
  readonly method: string;
6
13
  readonly params: Schema.Json;
7
14
  }
8
- /** One scoped JSON-RPC app-server connection, narrow enough to script in tests. */
15
+ /** One JSON-RPC connection to the app server, scoped to its process. */
9
16
  export interface CodexConnection {
17
+ /** Closes stdin and waits for the app server to release its threads and commands. */
18
+ readonly close: Effect.Effect<void, SessionOperationError>;
10
19
  readonly notifications: Stream.Stream<CodexNotification, SessionOperationError>;
11
20
  readonly request: (operation: SessionOperationError["operation"], method: string, params: Schema.Json) => Effect.Effect<Schema.Json, SessionOperationError>;
12
21
  readonly notify: (operation: SessionOperationError["operation"], method: string, params: Schema.Json) => Effect.Effect<void, SessionOperationError>;
13
22
  }
14
23
  declare const CodexAppServer_base: Context.ServiceClass<CodexAppServer, "@usine/agents/pi/CodexAppServer", {
15
- readonly open: (request: ChildRequest) => Effect.Effect<CodexConnection, SessionOperationError, Scope.Scope>;
24
+ readonly open: (request: CodexClient) => Effect.Effect<CodexConnection, SessionOperationError, Scope.Scope>;
16
25
  }>;
17
- /** Process seam for the Codex app-server transport. */
26
+ /** Spawns the Codex app-server process and exposes its JSON-RPC connection. */
18
27
  export declare class CodexAppServer extends CodexAppServer_base {
19
28
  }
20
- export declare const operationError: (operation: SessionOperationError["operation"], request: ChildRequest, message: string, cause: unknown) => SessionOperationError;
29
+ export declare const operationError: (operation: SessionOperationError["operation"], request: CodexClient, message: string, cause: unknown) => SessionOperationError;
21
30
  export declare const codexAppServerCommand: (cwd: string, stdin?: ChildProcess.CommandOptions["stdin"]) => ChildProcess.Command;
22
31
  export declare const codexAppServerLive: Layer.Layer<CodexAppServer, never, ChildProcessSpawner.ChildProcessSpawner>;
23
32
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"app-server.d.ts","sourceRoot":"","sources":["../../../src/pi/codex/app-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,OAAO,EAEP,MAAM,EACN,KAAK,EAIL,MAAM,EACN,KAAK,EACL,MAAM,EACP,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE5E,OAAO,EAAE,KAAK,YAAY,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAE5E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;CAC9B;AAED,mFAAmF;AACnF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,qBAAqB,CAAC,CAAC;IAChF,QAAQ,CAAC,OAAO,EAAE,CAChB,SAAS,EAAE,qBAAqB,CAAC,WAAW,CAAC,EAC7C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,IAAI,KAChB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;IACvD,QAAQ,CAAC,MAAM,EAAE,CACf,SAAS,EAAE,qBAAqB,CAAC,WAAW,CAAC,EAC7C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,IAAI,KAChB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;CACjD;;mBAMkB,CACb,OAAO,EAAE,YAAY,KAClB,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,qBAAqB,EAAE,KAAK,CAAC,KAAK,CAAC;;AAN3E,uDAAuD;AACvD,qBAAa,cAAe,SAAQ,mBAOE;CAAG;AA2BzC,eAAO,MAAM,cAAc,cACd,qBAAqB,CAAC,WAAW,CAAC,WACpC,YAAY,WACZ,MAAM,SACR,OAAO,KACb,qBAMC,CAAC;AAWL,eAAO,MAAM,qBAAqB,QAC3B,MAAM,UACH,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,KAC3C,YAAY,CAAC,OAuBf,CAAC;AA2QF,eAAO,MAAM,kBAAkB,6EAAmD,CAAC"}
1
+ {"version":3,"file":"app-server.d.ts","sourceRoot":"","sources":["../../../src/pi/codex/app-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,OAAO,EAEP,MAAM,EAEN,KAAK,EACL,MAAM,EAGN,MAAM,EACN,KAAK,EACL,MAAM,EACP,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,KAAK,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEhF,yFAAyF;AACzF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC;IAC/B,4DAA4D;IAC5D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;CAC9B;AAED,wEAAwE;AACxE,MAAM,WAAW,eAAe;IAC9B,qFAAqF;IACrF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;IAC3D,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,qBAAqB,CAAC,CAAC;IAChF,QAAQ,CAAC,OAAO,EAAE,CAChB,SAAS,EAAE,qBAAqB,CAAC,WAAW,CAAC,EAC7C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,IAAI,KAChB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;IACvD,QAAQ,CAAC,MAAM,EAAE,CACf,SAAS,EAAE,qBAAqB,CAAC,WAAW,CAAC,EAC7C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,IAAI,KAChB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;CACjD;;mBAMkB,CACb,OAAO,EAAE,WAAW,KACjB,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,qBAAqB,EAAE,KAAK,CAAC,KAAK,CAAC;;AAN3E,+EAA+E;AAC/E,qBAAa,cAAe,SAAQ,mBAOE;CAAG;AA2BzC,eAAO,MAAM,cAAc,cACd,qBAAqB,CAAC,WAAW,CAAC,WACpC,WAAW,WACX,MAAM,SACR,OAAO,KACb,qBAMC,CAAC;AAWL,eAAO,MAAM,qBAAqB,QAC3B,MAAM,UACH,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,KAC3C,YAAY,CAAC,OAuBf,CAAC;AA0VF,eAAO,MAAM,kBAAkB,6EAAmD,CAAC"}