@alpacakit/agents 0.1.0-beta.36 → 0.1.0-beta.39

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 (35) hide show
  1. package/README.md +14 -10
  2. package/dist/agents/claude.d.ts.map +1 -1
  3. package/dist/agents/claude.js +30 -0
  4. package/dist/agents/openai-compatible/engine.d.ts +5 -4
  5. package/dist/agents/openai-compatible/engine.d.ts.map +1 -1
  6. package/dist/agents/openai-compatible/engine.js +5 -4
  7. package/dist/config/agent-configs.d.ts +3 -1
  8. package/dist/config/agent-configs.d.ts.map +1 -1
  9. package/dist/config/agent-configs.js +23 -2
  10. package/dist/config/compose.d.ts.map +1 -1
  11. package/dist/config/compose.js +1 -0
  12. package/dist/config/index.d.ts +2 -1
  13. package/dist/config/index.d.ts.map +1 -1
  14. package/dist/config/index.js +1 -1
  15. package/dist/config/model.d.ts +6 -0
  16. package/dist/config/model.d.ts.map +1 -1
  17. package/dist/config/values.d.ts +19 -0
  18. package/dist/config/values.d.ts.map +1 -1
  19. package/dist/config/values.js +18 -0
  20. package/dist/index.d.ts +2 -3
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +2 -3
  23. package/dist/internal/controlled-process/host-controller.d.ts.map +1 -1
  24. package/dist/internal/controlled-process/host-controller.js +23 -1
  25. package/dist/internal/controlled-process/supervisor-runtime.js +14 -1
  26. package/package.json +3 -11
  27. package/dist/auth/profile-store.d.ts +0 -14
  28. package/dist/auth/profile-store.d.ts.map +0 -1
  29. package/dist/auth/profile-store.js +0 -102
  30. package/dist/keyring/index.d.ts +0 -2
  31. package/dist/keyring/index.d.ts.map +0 -1
  32. package/dist/keyring/index.js +0 -1
  33. package/dist/keyring/resolver.d.ts +0 -9
  34. package/dist/keyring/resolver.d.ts.map +0 -1
  35. package/dist/keyring/resolver.js +0 -64
package/README.md CHANGED
@@ -8,8 +8,9 @@ Design: [`src/v2/design/l_agents_library.md`](https://github.com/alpacakit/alpac
8
8
 
9
9
  The whole runtime surface — including extension points — ships from one
10
10
  root entry. Only genuine isolation lives on a subpath: dev fakes
11
- (`/testing`), the codex app-server client (`/codex`), the native keyring
12
- (`/keyring`), and machine-local config storage (`/config`).
11
+ (`/testing`), the codex app-server client (`/codex`), and machine-local
12
+ config storage (`/config`). The OS keychain is not here at all: it belongs
13
+ to `@alpacakit/core/keyring`, the single keychain owner of the workspace.
13
14
 
14
15
  Most apps need only a handful of root exports: `runAgent`,
15
16
  `createAgentRuntime`, `processEnv`, the built-in `claude` / `codex`
@@ -276,7 +277,9 @@ const config = await loadAgentsRuntimeConfig(
276
277
 
277
278
  Family-specific conventions (a fixed path env var + a keyring service)
278
279
  belong in the consumer's own convention module, not in this package — they
279
- are a plain instance of the same preset shape.
280
+ are a plain instance of the same preset shape. Secret resolvers backed by the
281
+ OS keychain come from `@alpacakit/core/keyring`; this package only consumes
282
+ the `SecretResolver` port.
280
283
 
281
284
  ## Host plane: execution availability, skills & MCP (operator)
282
285
 
@@ -301,16 +304,17 @@ installed skills and MCP servers remains in progress.
301
304
  | `/config/extension` | custom agent-config kinds (`defineAgentConfigType`) |
302
305
  | `/testing` | `fakeExec`, `fakeClock`, `fakeAgent`, `fakeSecretResolver` — no subprocess ever spawns |
303
306
  | `/codex` | codex app-server JSON-RPC client (advanced) |
304
- | `/keyring` | `keyringResolver` (loads the optional `@napi-rs/keyring` peer) |
305
307
 
306
308
  ## Status
307
309
 
308
310
  Implemented: kernel (runtime, run handle, guards, classification), CLI
309
311
  blueprint with built-in `claude()` / `codex()`, ambient execution availability,
310
312
  structured output with repair, fleet with cooldown / auth-mark stores, auth
311
- materials and secret resolvers, `openaiCompatible` (engine port; the built-in HTTP
312
- chat-completions engine is the dependency-free default), and the first
313
- host-plane skill / MCP implementations (Claude local-dir skills plus
314
- Claude / Codex stdio MCP registration). Not yet implemented: the
315
- in-process pi-session engine for `openaiCompatible`, GitHub / plugin skill
316
- installers, and availability listing for installed skills / MCP servers.
313
+ materials and secret resolvers, `openaiCompatible` (engine port; the built-in
314
+ HTTP chat-completions engine is the dependency-free default and the in-process
315
+ `piSessionEngine` ships behind an optional peer, selected per agent config by
316
+ `engine: "pi"`), CLI sign-in for `codex` (oauth, device) and `claude` (oauth —
317
+ the CLI has no device flow), and the first host-plane skill / MCP
318
+ implementations (Claude local-dir skills plus Claude / Codex stdio MCP
319
+ registration). Not yet implemented: GitHub / plugin skill installers and
320
+ availability listing for installed skills / MCP servers.
@@ -1 +1 @@
1
- {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/agents/claude.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA8CH,OAAO,EACL,KAAK,cAAc,EAEpB,MAAM,uBAAuB,CAAC;AAM/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,eAAO,MAAM,yBAAyB,sBAAsB,CAAC;AAC7D,eAAO,MAAM,sBAAsB,sBAAsB,CAAC;AAsK1D;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,cAAc,CA0CvD;AAoSD,MAAM,MAAM,aAAa,GAAG;IAC1B;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;CAClD,CAAC;AAEF,wBAAgB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,eAAe,CAAC,QAAQ,CAAC,CA2E7E"}
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/agents/claude.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA+CH,OAAO,EACL,KAAK,cAAc,EAEpB,MAAM,uBAAuB,CAAC;AAO/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,eAAO,MAAM,yBAAyB,sBAAsB,CAAC;AAC7D,eAAO,MAAM,sBAAsB,sBAAsB,CAAC;AAsK1D;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,cAAc,CA0CvD;AA6TD,MAAM,MAAM,aAAa,GAAG;IAC1B;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;CAClD,CAAC;AAEF,wBAAgB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,eAAe,CAAC,QAAQ,CAAC,CAgF7E"}
@@ -7,6 +7,7 @@
7
7
  */
8
8
  import { cp, mkdir, readdir, readFile, rm, stat } from "node:fs/promises";
9
9
  import path from "node:path";
10
+ import { LOGIN_METHOD } from "../auth/login.js";
10
11
  import { cliLoginProbe } from "../auth/login-probe.js";
11
12
  import { AUTH_MATERIAL_KIND, envVarAuthMaterial } from "../auth/material.js";
12
13
  import { requireSecret } from "../auth/secrets.js";
@@ -22,6 +23,7 @@ import { listMcpServersViaCli } from "../host/mcp-list.js";
22
23
  import { hostCommandFailedError, runHostCommand, runHostCommandResult, } from "../host/run-command.js";
23
24
  import { parseEpochTimestamp, } from "../kernel/classify.js";
24
25
  import { defineCliAgent, } from "../kernel/cli-agent.js";
26
+ import { cliLoginCommand } from "../kernel/cli-login.js";
25
27
  import { GRANT_KIND, SANDBOX_MODE } from "../kernel/options.js";
26
28
  export const CLAUDE_CONFIG_DIR_ENV_VAR = "CLAUDE_CONFIG_DIR";
27
29
  export const CLAUDE_API_KEY_ENV_VAR = "ANTHROPIC_API_KEY";
@@ -224,6 +226,29 @@ const homeDirHandler = envVarAuthMaterial({
224
226
  ctx,
225
227
  }),
226
228
  });
229
+ /**
230
+ * `claude auth login --claudeai` writes its credential into
231
+ * `CLAUDE_CONFIG_DIR`, so pointing that at the requested home is the whole
232
+ * isolation mechanism — the competing token variables are unset for the same
233
+ * reason `homeDirHandler` unsets them: an inherited token would authenticate
234
+ * the CLI without ever populating the home we are creating.
235
+ *
236
+ * Only `oauth` is offered. The CLI has no device-code flow (`--console` /
237
+ * `--sso` are still browser flows), and declaring an unimplemented method
238
+ * would make `agent.login.supports("device")` lie.
239
+ */
240
+ function claudeLogin(args) {
241
+ return (request, ctx) => cliLoginCommand({
242
+ command: CLAUDE.command,
243
+ args,
244
+ envPatch: {
245
+ set: { [CLAUDE_CONFIG_DIR_ENV_VAR]: request.homeDir },
246
+ unset: COMPETING_TOKEN_VARS,
247
+ },
248
+ request,
249
+ ctx,
250
+ });
251
+ }
227
252
  /** Install/list roots in priority order; the first is the install target. */
228
253
  function claudeSkillRoots(ctx) {
229
254
  const userRoot = {
@@ -494,6 +519,11 @@ export function claude(options = {}) {
494
519
  unset: COMPETING_CONFIG_VARS,
495
520
  }),
496
521
  },
522
+ login: {
523
+ methods: {
524
+ [LOGIN_METHOD.oauth]: claudeLogin(CLAUDE.auth.loginArgs),
525
+ },
526
+ },
497
527
  skills: {
498
528
  list: listClaudeSkills,
499
529
  install: {
@@ -2,10 +2,11 @@
2
2
  * The engine port: how a resolved OpenAI-compatible config is turned
3
3
  * into an AgentRun. The engine owns its own availability — its doctor
4
4
  * checks describe requirements of the engine itself (peer packages,
5
- * node floor), never of the config (the resolver owns those). The
6
- * shipped default is the dependency-free fetch chat-completions engine;
7
- * an in-process pi-session engine (design E3, v1 parity) is a
8
- * detail-backlog implementation of this same port.
5
+ * node floor), never of the config (the resolver owns those). Two
6
+ * implementations ship: the dependency-free fetch chat-completions engine
7
+ * (the default), and the in-process pi-session engine (`piSessionEngine`
8
+ * in `pi/engine.ts`, which needs pi installed as an optional peer),
9
+ * selected per agent config with `engine: "pi"`.
9
10
  */
10
11
  import type { DoctorCheck } from "../../host/capabilities.js";
11
12
  import type { AgentRun, RunContext } from "../../kernel/definition.js";
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/agents/openai-compatible/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,YAAY,CAAC;AAEjE,MAAM,WAAW,sBAAsB;IACrC,YAAY,IAAI,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAAC;IAChD,GAAG,CACD,MAAM,EAAE,8BAA8B,EACtC,OAAO,EAAE,kBAAkB,EAC3B,GAAG,EAAE,UAAU,GACd,QAAQ,CAAC;CACb"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/agents/openai-compatible/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,YAAY,CAAC;AAEjE,MAAM,WAAW,sBAAsB;IACrC,YAAY,IAAI,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAAC;IAChD,GAAG,CACD,MAAM,EAAE,8BAA8B,EACtC,OAAO,EAAE,kBAAkB,EAC3B,GAAG,EAAE,UAAU,GACd,QAAQ,CAAC;CACb"}
@@ -2,9 +2,10 @@
2
2
  * The engine port: how a resolved OpenAI-compatible config is turned
3
3
  * into an AgentRun. The engine owns its own availability — its doctor
4
4
  * checks describe requirements of the engine itself (peer packages,
5
- * node floor), never of the config (the resolver owns those). The
6
- * shipped default is the dependency-free fetch chat-completions engine;
7
- * an in-process pi-session engine (design E3, v1 parity) is a
8
- * detail-backlog implementation of this same port.
5
+ * node floor), never of the config (the resolver owns those). Two
6
+ * implementations ship: the dependency-free fetch chat-completions engine
7
+ * (the default), and the in-process pi-session engine (`piSessionEngine`
8
+ * in `pi/engine.ts`, which needs pi installed as an optional peer),
9
+ * selected per agent config with `engine: "pi"`.
9
10
  */
10
11
  export {};
@@ -1,7 +1,7 @@
1
1
  import { type JsonObject } from "@alpacakit/core";
2
2
  import { type AgentConfigKind } from "./ids.js";
3
3
  import type { AgentConfig, AgentConfigType, AgentConfigTypeRegistry } from "./model.js";
4
- import { AGENT_CONFIG_KIND } from "./values.js";
4
+ import { AGENT_CONFIG_KIND, type OpenAiCompatibleEngineKind } from "./values.js";
5
5
  type BuiltinAgentConfigPayload = {
6
6
  readonly model: string | null;
7
7
  readonly effort: string | null;
@@ -12,6 +12,7 @@ type OpenAiCompatibleAgentConfigPayload = {
12
12
  readonly apiKey: string | null;
13
13
  readonly headers: Readonly<Record<string, string>>;
14
14
  readonly requestParams: JsonObject;
15
+ readonly engine: OpenAiCompatibleEngineKind;
15
16
  };
16
17
  export type BuiltinAgentConfigOptions = {
17
18
  readonly id: string;
@@ -27,6 +28,7 @@ export type OpenAiCompatibleAgentConfigOptions = {
27
28
  readonly apiKey?: string;
28
29
  readonly headers?: Readonly<Record<string, string>>;
29
30
  readonly requestParams?: JsonObject;
31
+ readonly engine?: OpenAiCompatibleEngineKind;
30
32
  };
31
33
  export declare function codexAgentConfig(options: BuiltinAgentConfigOptions): AgentConfig<typeof AGENT_CONFIG_KIND.codex, BuiltinAgentConfigPayload>;
32
34
  export declare function claudeAgentConfig(options: BuiltinAgentConfigOptions): AgentConfig<typeof AGENT_CONFIG_KIND.claude, BuiltinAgentConfigPayload>;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-configs.d.ts","sourceRoot":"","sources":["../../src/config/agent-configs.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,UAAU,EAEhB,MAAM,iBAAiB,CAAC;AAQzB,OAAO,EAAE,KAAK,eAAe,EAAiB,MAAM,UAAU,CAAC;AAC/D,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EAGf,uBAAuB,EAGxB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,iBAAiB,EAGlB,MAAM,aAAa,CAAC;AAQrB,KAAK,yBAAyB,GAAG;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,CAAC;AAOF,KAAK,kCAAkC,GAAG;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,QAAQ,CAAC,aAAa,EAAE,UAAU,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAAG;IAC/C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC;CACrC,CAAC;AAiCF,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,yBAAyB,GACjC,WAAW,CAAC,OAAO,iBAAiB,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAExE;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,yBAAyB,GACjC,WAAW,CAAC,OAAO,iBAAiB,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAEzE;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,kCAAkC,GAC1C,WAAW,CACZ,OAAO,iBAAiB,CAAC,gBAAgB,EACzC,kCAAkC,CACnC,CAaA;AA2CD,wBAAgB,oCAAoC,IAAI,uBAAuB,CAoB9E;AAED,wBAAgB,qBAAqB,CACnC,IAAI,SAAS,eAAe,EAC5B,OAAO,SAAS,UAAU,EAC1B,OAAO,SAAS,MAAM,EAEtB,UAAU,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,GAClD,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAEzC"}
1
+ {"version":3,"file":"agent-configs.d.ts","sourceRoot":"","sources":["../../src/config/agent-configs.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,UAAU,EAEhB,MAAM,iBAAiB,CAAC;AAUzB,OAAO,EAAE,KAAK,eAAe,EAAiB,MAAM,UAAU,CAAC;AAC/D,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EAGf,uBAAuB,EAGxB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,iBAAiB,EAKjB,KAAK,0BAA0B,EAChC,MAAM,aAAa,CAAC;AAQrB,KAAK,yBAAyB,GAAG;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,CAAC;AAOF,KAAK,kCAAkC,GAAG;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,QAAQ,CAAC,aAAa,EAAE,UAAU,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAAG;IAC/C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,0BAA0B,CAAC;CAC9C,CAAC;AAiCF,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,yBAAyB,GACjC,WAAW,CAAC,OAAO,iBAAiB,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAExE;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,yBAAyB,GACjC,WAAW,CAAC,OAAO,iBAAiB,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAEzE;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,kCAAkC,GAC1C,WAAW,CACZ,OAAO,iBAAiB,CAAC,gBAAgB,EACzC,kCAAkC,CACnC,CAcA;AAgDD,wBAAgB,oCAAoC,IAAI,uBAAuB,CAoB9E;AAED,wBAAgB,qBAAqB,CACnC,IAAI,SAAS,eAAe,EAC5B,OAAO,SAAS,UAAU,EAC1B,OAAO,SAAS,MAAM,EAEtB,UAAU,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,GAClD,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAEzC"}
@@ -1,11 +1,13 @@
1
+ import path from "node:path";
1
2
  import { createKeyedRegistry, createSchemaRuntimeCodec, jsonValueSchema, } from "@alpacakit/core";
2
3
  import { z } from "zod";
3
4
  import { claude } from "../agents/claude.js";
4
5
  import { codex } from "../agents/codex.js";
5
6
  import { openaiCompatible } from "../agents/openai-compatible.js";
7
+ import { piSessionEngine } from "../agents/openai-compatible/pi/engine.js";
6
8
  import { agentConfigId } from "./ids.js";
7
9
  import { formatFieldPath, ZOD_ISSUE_CODE } from "./support.js";
8
- import { AGENT_CONFIG_KIND, BUILTIN_AGENT_ID, CANDIDATE_SOURCE_KIND, } from "./values.js";
10
+ import { AGENT_CONFIG_KIND, AGENTS_CONFIG_DIRECTORY, BUILTIN_AGENT_ID, CANDIDATE_SOURCE_KIND, OPENAI_COMPATIBLE_ENGINE, } from "./values.js";
9
11
  const ENV_TEMPLATE_EXPRESSION_START = "${";
10
12
  const OPENAI_COMPATIBLE_PAYLOAD_FIELD = {
11
13
  apiKey: "apiKey",
@@ -44,6 +46,7 @@ export function openAiCompatibleAgentConfig(options) {
44
46
  apiKey: options.apiKey ?? null,
45
47
  headers: options.headers ?? {},
46
48
  requestParams: options.requestParams ?? {},
49
+ engine: options.engine ?? OPENAI_COMPATIBLE_ENGINE.fetch,
47
50
  },
48
51
  };
49
52
  }
@@ -61,6 +64,11 @@ const openAiCompatibleAgentConfigPayloadCodec = createSchemaRuntimeCodec(z
61
64
  apiKey: z.string().min(1).nullable(),
62
65
  headers: z.record(z.string(), z.string().min(1)).readonly(),
63
66
  requestParams: z.record(z.string(), jsonValueSchema).readonly(),
67
+ // Defaulted, not required: an agent-settings file written before the
68
+ // engine choice existed reads back as the `fetch` it was running on.
69
+ engine: z
70
+ .enum(Object.values(OPENAI_COMPATIBLE_ENGINE))
71
+ .default(OPENAI_COMPATIBLE_ENGINE.fetch),
64
72
  })
65
73
  .strict()
66
74
  .readonly()
@@ -164,8 +172,9 @@ function createOpenAiCompatibleAgentConfig() {
164
172
  headers: input.record.payload.headers,
165
173
  requestParams: input.record.payload.requestParams,
166
174
  };
175
+ const engine = resolveOpenAiCompatibleEngine(input.record.payload.engine, input.rootDir);
167
176
  return {
168
- agents: [openaiCompatible(config)],
177
+ agents: [openaiCompatible(config, engine === null ? {} : { engine })],
169
178
  candidates: [
170
179
  {
171
180
  candidate: { agentId, model: input.record.payload.model },
@@ -181,6 +190,18 @@ function createOpenAiCompatibleAgentConfig() {
181
190
  },
182
191
  });
183
192
  }
193
+ /**
194
+ * `null` selects `openaiCompatible`'s own dependency-free default rather than
195
+ * naming it twice. The pi engine's agent home is derived from the config root
196
+ * so the persisted payload stays machine-independent.
197
+ */
198
+ function resolveOpenAiCompatibleEngine(kind, rootDir) {
199
+ return kind === OPENAI_COMPATIBLE_ENGINE.pi
200
+ ? piSessionEngine({
201
+ agentDir: path.join(rootDir, AGENTS_CONFIG_DIRECTORY.piAgentHome),
202
+ })
203
+ : null;
204
+ }
184
205
  function rejectDirectSecretIfPresent(value, field, context) {
185
206
  if (value === null) {
186
207
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../src/config/compose.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,uBAAuB,EACvB,mBAAmB,EACnB,UAAU,EAEV,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAwBpB,KAAK,iCAAiC,GAAG;IACvC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,eAAe,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;IACjE,QAAQ,CAAC,gBAAgB,EAAE,uBAAuB,CAAC;IACnD,QAAQ,CAAC,eAAe,EAAE,SAAS,mBAAmB,EAAE,CAAC;CAC1D,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,iCAAiC,GACvC,mBAAmB,CA2CrB"}
1
+ {"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../src/config/compose.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,uBAAuB,EACvB,mBAAmB,EACnB,UAAU,EAEV,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAwBpB,KAAK,iCAAiC,GAAG;IACvC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,eAAe,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;IACjE,QAAQ,CAAC,gBAAgB,EAAE,uBAAuB,CAAC;IACnD,QAAQ,CAAC,eAAe,EAAE,SAAS,mBAAmB,EAAE,CAAC;CAC1D,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,iCAAiC,GACvC,mBAAmB,CA4CrB"}
@@ -37,6 +37,7 @@ export function composeRuntimeConfig(input) {
37
37
  record: validation.record,
38
38
  profiles: input.data.profiles,
39
39
  ambientBuiltinAuth: input.data.agentConfigs.ambientBuiltinAuth.enabled,
40
+ rootDir: input.data.paths.rootDir,
40
41
  });
41
42
  for (const agent of projection.agents) {
42
43
  addAgentDefinition(agentDefinitions, agent);
@@ -8,5 +8,6 @@ export type { AgentConfigId, AgentConfigKind, ProfileId } from "./ids.js";
8
8
  export { agentConfigId, agentConfigKind, profileId } from "./ids.js";
9
9
  export type { AgentConfig, AgentConfigManager, AgentConfigPatch, AgentConfigSettings, AgentsConfigPaths, AgentsRuntimeConfig, ApiKeyProfileInput, CandidateSource, CandidateSourceInfo, CandidateWithSource, HomeDirProfileInput, NamedSecretResolver, ProfileInputBase, ProfileManager, ProfileRecord, } from "./model.js";
10
10
  export { DEFAULT_AGENTS_CONFIG_AGENT_SETTINGS } from "./store.js";
11
- export { AGENT_CONFIG_KIND, AGENTS_CONFIG_FILE, BUILTIN_AGENT_ID, CANDIDATE_SOURCE_KIND, DEFAULT_AGENT_CONFIG_ID, } from "./values.js";
11
+ export type { OpenAiCompatibleEngineKind } from "./values.js";
12
+ export { AGENT_CONFIG_KIND, AGENTS_CONFIG_DIRECTORY, AGENTS_CONFIG_FILE, BUILTIN_AGENT_ID, CANDIDATE_SOURCE_KIND, DEFAULT_AGENT_CONFIG_ID, OPENAI_COMPATIBLE_ENGINE, } from "./values.js";
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,yBAAyB,EACzB,kCAAkC,GACnC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,qBAAqB,EACrB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,YAAY,EACZ,uBAAuB,GACxB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrE,YAAY,EACV,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,oCAAoC,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,yBAAyB,EACzB,kCAAkC,GACnC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,qBAAqB,EACrB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,YAAY,EACZ,uBAAuB,GACxB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrE,YAAY,EACV,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,oCAAoC,EAAE,MAAM,YAAY,CAAC;AAClE,YAAY,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,aAAa,CAAC"}
@@ -3,4 +3,4 @@ export { AGENTS_CONFIG_ERROR_CODE, AgentsConfigError, isAgentsConfigError, } fro
3
3
  export { loadAgentsRuntimeConfig, openAgentsConfig, candidatesForFleet, secretsForRuntime, } from "./config.js";
4
4
  export { agentConfigId, agentConfigKind, profileId } from "./ids.js";
5
5
  export { DEFAULT_AGENTS_CONFIG_AGENT_SETTINGS } from "./store.js";
6
- export { AGENT_CONFIG_KIND, AGENTS_CONFIG_FILE, BUILTIN_AGENT_ID, CANDIDATE_SOURCE_KIND, DEFAULT_AGENT_CONFIG_ID, } from "./values.js";
6
+ export { AGENT_CONFIG_KIND, AGENTS_CONFIG_DIRECTORY, AGENTS_CONFIG_FILE, BUILTIN_AGENT_ID, CANDIDATE_SOURCE_KIND, DEFAULT_AGENT_CONFIG_ID, OPENAI_COMPATIBLE_ENGINE, } from "./values.js";
@@ -68,6 +68,12 @@ export type AgentConfigProjectionInput<Kind extends AgentConfigKind, Payload ext
68
68
  readonly record: AgentConfig<Kind, Payload>;
69
69
  readonly profiles: readonly ProfileRecord[];
70
70
  readonly ambientBuiltinAuth: boolean;
71
+ /**
72
+ * The machine-local config root. An agent config whose engine keeps state
73
+ * on disk (the pi session engine's agent home) hangs it off this root
74
+ * rather than putting a machine path in the persisted payload.
75
+ */
76
+ readonly rootDir: string;
71
77
  };
72
78
  export interface AgentConfigType<Kind extends AgentConfigKind, Payload extends JsonObject, AgentId extends string> {
73
79
  readonly kind: Kind;
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/config/model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/config/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEzD,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAE3D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,aAAa,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,IAAI;IAC3D,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,IAAI;IAC9D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,mBAAmB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,IAC7D,gBAAgB,CAAC,OAAO,CAAC,GAAG;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,CAAC;AAEJ,MAAM,MAAM,kBAAkB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,IAC5D,gBAAgB,CAAC,OAAO,CAAC,GAAG;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;CAC5B,CAAC;AAEJ,MAAM,MAAM,WAAW,CACrB,IAAI,SAAS,eAAe,GAAG,eAAe,EAC9C,OAAO,SAAS,UAAU,GAAG,UAAU,IACrC;IACF,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,kBAAkB,EAAE;QAC3B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;KAC3B,CAAC;IACF,QAAQ,CAAC,YAAY,EAAE,SAAS,WAAW,EAAE,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;IAC5C,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,eAAe,GACzB,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,OAAO,qBAAqB,CAAC,CAAC;AAErE,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,mBAAmB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,IAAI;IACjE,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,MAAM,IAAI;IAC1D,QAAQ,CAAC,MAAM,EAAE,SAAS,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;IACrD,QAAQ,CAAC,UAAU,EAAE,SAAS,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;CAC9D,CAAC;AAEF,MAAM,MAAM,0BAA0B,CACpC,IAAI,SAAS,eAAe,EAC5B,OAAO,SAAS,UAAU,IACxB;IACF,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;IAC5C,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,WAAW,eAAe,CAC9B,IAAI,SAAS,eAAe,EAC5B,OAAO,SAAS,UAAU,EAC1B,OAAO,SAAS,MAAM;IAEtB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IAC7C,OAAO,CACL,KAAK,EAAE,0BAA0B,CAAC,IAAI,EAAE,OAAO,CAAC,GAC/C,qBAAqB,CAAC,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAC5C,eAAe,EACf,eAAe,CAAC,eAAe,EAAE,UAAU,EAAE,MAAM,CAAC,CACrD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,mBAAmB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,IAAI;IACjE,QAAQ,CAAC,MAAM,EAAE,SAAS,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;IACrD,QAAQ,CAAC,UAAU,EAAE,SAAS,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7D,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,QAAQ,CAAC,eAAe,EAAE,SAAS,mBAAmB,EAAE,CAAC;CAC1D,CAAC;AAEF,MAAM,WAAW,cAAc,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM;IAC7D,IAAI,IAAI,OAAO,CAAC,SAAS,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACnD,UAAU,CACR,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,GAClC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IACnC,SAAS,CACP,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,GACjC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,IAAI,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAAC;IACxC,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC5C,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACzE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAAC;IACjE,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACvE"}
@@ -18,4 +18,23 @@ export declare const CANDIDATE_SOURCE_KIND: {
18
18
  readonly ambient: "ambient";
19
19
  readonly configured: "configured";
20
20
  };
21
+ /**
22
+ * Which engine an `openai-compatible` agent config runs on: the
23
+ * dependency-free HTTP chat-completions default, or the in-process pi
24
+ * session, which needs pi installed as an optional peer.
25
+ */
26
+ export declare const OPENAI_COMPATIBLE_ENGINE: {
27
+ readonly fetch: "fetch";
28
+ readonly pi: "pi";
29
+ };
30
+ export type OpenAiCompatibleEngineKind = (typeof OPENAI_COMPATIBLE_ENGINE)[keyof typeof OPENAI_COMPATIBLE_ENGINE];
31
+ /**
32
+ * Directories the config root owns beyond its files. `pi` is the agent home
33
+ * the pi engine loads resources and skills from; it is shared by every
34
+ * `openai-compatible` agent config in one root, so installing a skill there
35
+ * is a property of the machine's agents home, not of one agent.
36
+ */
37
+ export declare const AGENTS_CONFIG_DIRECTORY: {
38
+ readonly piAgentHome: "pi";
39
+ };
21
40
  //# sourceMappingURL=values.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../../src/config/values.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,eAAO,MAAM,kBAAkB;;;;CAIrB,CAAC;AAEX,eAAO,MAAM,iBAAiB;;;;CAIpB,CAAC;AAEX,eAAO,MAAM,uBAAuB;;;CAG1B,CAAC;AAEX,eAAO,MAAM,qBAAqB;;;;CAIxB,CAAC"}
1
+ {"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../../src/config/values.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,eAAO,MAAM,kBAAkB;;;;CAIrB,CAAC;AAEX,eAAO,MAAM,iBAAiB;;;;CAIpB,CAAC;AAEX,eAAO,MAAM,uBAAuB;;;CAG1B,CAAC;AAEX,eAAO,MAAM,qBAAqB;;;;CAIxB,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,wBAAwB;;;CAG3B,CAAC;AAEX,MAAM,MAAM,0BAA0B,GACpC,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,OAAO,wBAAwB,CAAC,CAAC;AAE3E;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB;;CAE1B,CAAC"}
@@ -20,3 +20,21 @@ export const CANDIDATE_SOURCE_KIND = {
20
20
  ambient: "ambient",
21
21
  configured: "configured",
22
22
  };
23
+ /**
24
+ * Which engine an `openai-compatible` agent config runs on: the
25
+ * dependency-free HTTP chat-completions default, or the in-process pi
26
+ * session, which needs pi installed as an optional peer.
27
+ */
28
+ export const OPENAI_COMPATIBLE_ENGINE = {
29
+ fetch: "fetch",
30
+ pi: "pi",
31
+ };
32
+ /**
33
+ * Directories the config root owns beyond its files. `pi` is the agent home
34
+ * the pi engine loads resources and skills from; it is shared by every
35
+ * `openai-compatible` agent config in one root, so installing a skill there
36
+ * is a property of the machine's agents home, not of one agent.
37
+ */
38
+ export const AGENTS_CONFIG_DIRECTORY = {
39
+ piAgentHome: "pi",
40
+ };
package/dist/index.d.ts CHANGED
@@ -4,8 +4,8 @@
4
4
  * One root entry holds the whole surface: extension points must never
5
5
  * require knowing which internal layer owns them. Only genuine isolation
6
6
  * lives on a subpath — dev fakes (`/testing`), the codex app-server client
7
- * (`/codex`), the native keyring (`/keyring`), and machine-local config
8
- * storage (`/config`).
7
+ * (`/codex`), and machine-local config storage (`/config`). The OS keychain
8
+ * is not here at all: it belongs to `@alpacakit/core/keyring`.
9
9
  */
10
10
  export { BUILTIN_AGENT_ID, type BuiltinAgentId, builtinAgentFactories, } from "./agents/builtin.js";
11
11
  export { claude, type ClaudeOptions, structuredQuotaMatcher, } from "./agents/claude.js";
@@ -18,7 +18,6 @@ export type { LoginCapability, LoginContext, LoginEvent, LoginHandle, LoginHandl
18
18
  export { LOGIN_EVENT_TYPE, LOGIN_METHOD } from "./auth/login.js";
19
19
  export type { ApiKeyProfileOptions, AuthCapability, AuthMaterial, AuthMaterialDescriptor, AuthMaterialKind, AuthProfile, AuthStatus, HomeDirProfileOptions, MaterialHandler, MaterialHandlers, SecretRef, } from "./auth/material.js";
20
20
  export { AUTH_MATERIAL_KIND, AUTH_STATUS, createApiKeyProfile, createHomeDirProfile, envVarAuthMaterial, } from "./auth/material.js";
21
- export { fileProfileStore, type ProfileStore } from "./auth/profile-store.js";
22
21
  export { envResolver, requireSecret } from "./auth/secrets.js";
23
22
  export type { ChildProcessAbsenceProof, ChildProcessCompletion, ChildProcessIdentity, ChildProcessLifecycle, ChildProcessTerminationEvidence, ChildProcessTerminationPhase, ChildProcessTerminationResult, ChildProcessUnkillableReason, ControlledExec, ControlledExecOptions, ControlledExecProcess, ControlledProcessRecovery, } from "./core/controlled-process.js";
24
23
  export { CHILD_PROCESS_ABSENCE_PROOF, CHILD_PROCESS_TERMINATION_EVIDENCE_KIND, CHILD_PROCESS_TERMINATION_KIND, CHILD_PROCESS_TERMINATION_PHASE, CHILD_PROCESS_UNKILLABLE_REASON, } from "./core/controlled-process.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -4,8 +4,8 @@
4
4
  * One root entry holds the whole surface: extension points must never
5
5
  * require knowing which internal layer owns them. Only genuine isolation
6
6
  * lives on a subpath — dev fakes (`/testing`), the codex app-server client
7
- * (`/codex`), the native keyring (`/keyring`), and machine-local config
8
- * storage (`/config`).
7
+ * (`/codex`), and machine-local config storage (`/config`). The OS keychain
8
+ * is not here at all: it belongs to `@alpacakit/core/keyring`.
9
9
  */
10
10
  export { BUILTIN_AGENT_ID, builtinAgentFactories, } from "./agents/builtin.js";
11
11
  export { claude, structuredQuotaMatcher, } from "./agents/claude.js";
@@ -14,7 +14,6 @@ export { PI_DEFAULT_CONTEXT_WINDOW, PI_DEFAULT_MAX_TOKENS, piSessionEngine, } fr
14
14
  export { openaiCompatible } from "./agents/openai-compatible.js";
15
15
  export { LOGIN_EVENT_TYPE, LOGIN_METHOD } from "./auth/login.js";
16
16
  export { AUTH_MATERIAL_KIND, AUTH_STATUS, createApiKeyProfile, createHomeDirProfile, envVarAuthMaterial, } from "./auth/material.js";
17
- export { fileProfileStore } from "./auth/profile-store.js";
18
17
  export { envResolver, requireSecret } from "./auth/secrets.js";
19
18
  export { CHILD_PROCESS_ABSENCE_PROOF, CHILD_PROCESS_TERMINATION_EVIDENCE_KIND, CHILD_PROCESS_TERMINATION_KIND, CHILD_PROCESS_TERMINATION_PHASE, CHILD_PROCESS_UNKILLABLE_REASON, } from "./core/controlled-process.js";
20
19
  export { applyEnvPatch, EMPTY_ENV_PATCH, mergeEnvPatches, processEnv, } from "./core/env.js";
@@ -1 +1 @@
1
- {"version":3,"file":"host-controller.d.ts","sourceRoot":"","sources":["../../../src/internal/controlled-process/host-controller.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EAErB,6BAA6B,EAC9B,MAAM,kCAAkC,CAAC;AAQ1C,OAAO,KAAK,EAAY,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AA6BtE,OAAO,KAAK,EACV,uBAAuB,EAEvB,uBAAuB,EACxB,MAAM,uBAAuB,CAAC;AAqC/B,MAAM,MAAM,4BAA4B,GAAG;IACzC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC;CAC3C,CAAC;AAEF,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,uBAAuB,CAAC,CAAC;IACxD,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACrD,kBAAkB,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAAC;CACvD;AAsED,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,2BAA2B,CAAC,CAoJtC;AAgnBD,wBAAsB,wBAAwB,CAAC,KAAK,EAAE;IACpD,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CAAC;CACrE,GAAG,OAAO,CAAC,6BAA6B,CAAC,CA4BzC"}
1
+ {"version":3,"file":"host-controller.d.ts","sourceRoot":"","sources":["../../../src/internal/controlled-process/host-controller.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EAErB,6BAA6B,EAC9B,MAAM,kCAAkC,CAAC;AAQ1C,OAAO,KAAK,EAAY,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AA6BtE,OAAO,KAAK,EACV,uBAAuB,EAEvB,uBAAuB,EACxB,MAAM,uBAAuB,CAAC;AAqC/B,MAAM,MAAM,4BAA4B,GAAG;IACzC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC;CAC3C,CAAC;AAEF,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,uBAAuB,CAAC,CAAC;IACxD,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACrD,kBAAkB,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAAC;CACvD;AAsED,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,2BAA2B,CAAC,CAoJtC;AA6oBD,wBAAsB,wBAAwB,CAAC,KAAK,EAAE;IACpD,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CAAC;CACrE,GAAG,OAAO,CAAC,6BAA6B,CAAC,CA4BzC"}
@@ -366,7 +366,17 @@ async function requestTerminationBeforeDeadline(input) {
366
366
  if (raced.kind === "closed") {
367
367
  return null;
368
368
  }
369
- if (raced.kind === "failure" || raced.kind === "deadline") {
369
+ if (raced.kind === "deadline") {
370
+ throw raced.error;
371
+ }
372
+ if (raced.kind === "failure") {
373
+ // A supervisor that rolled back before reporting its launch failure has
374
+ // already unlinked its socket, so this request can fail while its close is
375
+ // the only remaining evidence. Join that close within the same deadline;
376
+ // the caller still has to prove absence from the signed record.
377
+ if (await closedBeforeDeadline(input.supervisorClose, input.deadline)) {
378
+ return null;
379
+ }
370
380
  throw raced.error;
371
381
  }
372
382
  if (raced.response.kind !== SUPERVISOR_RESPONSE_KIND.termination) {
@@ -379,6 +389,18 @@ async function requestTerminationBeforeDeadline(input) {
379
389
  supervisorExit: null,
380
390
  };
381
391
  }
392
+ function closedBeforeDeadline(supervisorClose, deadline) {
393
+ if (supervisorClose.didClose()) {
394
+ return Promise.resolve(true);
395
+ }
396
+ return new Promise((resolve) => {
397
+ const timeout = setTimeout(() => resolve(false), Math.max(0, deadline - Date.now()));
398
+ void supervisorClose.promise.then(() => {
399
+ clearTimeout(timeout);
400
+ resolve(true);
401
+ });
402
+ });
403
+ }
382
404
  async function raceSupervisorRequestWithClose(input) {
383
405
  if (input.supervisorClose.didClose()) {
384
406
  return {
@@ -238,7 +238,6 @@ async function runSupervisorSession(input) {
238
238
  shimControl = shim.stdio[SHIM_CONTROL_FD];
239
239
  shimStatus = shim.stdio[SHIM_STATUS_FD];
240
240
  shimInput = shim.stdio.at(SHIM_INPUT_FD);
241
- shimInput.on("error", () => { });
242
241
  const pid = requireShimPid(shim);
243
242
  shimPid = pid;
244
243
  const record = {
@@ -701,9 +700,23 @@ function spawnShim(bootstrap) {
701
700
  env: {},
702
701
  stdio: ["ignore", "pipe", "pipe", "pipe", "pipe", "pipe"],
703
702
  });
703
+ containShimStdioErrors(shim);
704
704
  shim.once("error", () => { });
705
705
  return shim;
706
706
  }
707
+ /**
708
+ * The supervisor owns every shim stdio error from spawn until the shim closes.
709
+ * Framed writes, status reads, and output pumps keep their own listeners and
710
+ * remain responsible for their outcomes; this owner only contains the pipe
711
+ * errors a dying shim raises once those operations have settled, so a late
712
+ * reset can never end supervisor custody before its failure is reported.
713
+ */
714
+ function containShimStdioErrors(shim) {
715
+ for (const stream of shim.stdio) {
716
+ stream?.on("error", consumeShimStdioError);
717
+ }
718
+ }
719
+ function consumeShimStdioError() { }
707
720
  function waitForShimClose(shim) {
708
721
  return new Promise((resolve) => {
709
722
  shim.once("close", () => resolve());
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alpacakit/agents",
3
- "version": "0.1.0-beta.36",
3
+ "version": "0.1.0-beta.39",
4
4
  "description": "Run AI coding agents programmatically: execute, stream, classify failures, fail over.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -25,10 +25,6 @@
25
25
  "types": "./dist/codex/index.d.ts",
26
26
  "import": "./dist/codex/index.js"
27
27
  },
28
- "./keyring": {
29
- "types": "./dist/keyring/index.d.ts",
30
- "import": "./dist/keyring/index.js"
31
- },
32
28
  "./testing": {
33
29
  "types": "./dist/testing/index.d.ts",
34
30
  "import": "./dist/testing/index.js"
@@ -49,22 +45,18 @@
49
45
  },
50
46
  "dependencies": {
51
47
  "zod": "^4.3.6",
52
- "@alpacakit/core": "0.1.0-beta.36"
48
+ "@alpacakit/core": "0.1.0-beta.39"
53
49
  },
54
50
  "devDependencies": {
55
51
  "typescript": "^5.9.3",
56
52
  "vitest": "^4.0.18"
57
53
  },
58
54
  "peerDependencies": {
59
- "@earendil-works/pi-coding-agent": "0.75.5",
60
- "@napi-rs/keyring": "^1.3.0"
55
+ "@earendil-works/pi-coding-agent": "0.75.5"
61
56
  },
62
57
  "peerDependenciesMeta": {
63
58
  "@earendil-works/pi-coding-agent": {
64
59
  "optional": true
65
- },
66
- "@napi-rs/keyring": {
67
- "optional": true
68
60
  }
69
61
  },
70
62
  "scripts": {
@@ -1,14 +0,0 @@
1
- /**
2
- * Minimal file-backed profile store (A11): rows follow rule 2 and never
3
- * contain secret values (A9) — materials carry refs and paths only.
4
- * Profile management UX is consumer territory. Unlike fleet state, this
5
- * is durable user data: malformed or unknown-version files are typed
6
- * errors, never silent resets.
7
- */
8
- import { type AuthProfile } from "./material.js";
9
- export interface ProfileStore {
10
- list(): Promise<AuthProfile[]>;
11
- save(profiles: AuthProfile[]): Promise<void>;
12
- }
13
- export declare function fileProfileStore(filePath: string): ProfileStore;
14
- //# sourceMappingURL=profile-store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"profile-store.d.ts","sourceRoot":"","sources":["../../src/auth/profile-store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAcrE,MAAM,WAAW,YAAY;IAC3B,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/B,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C;AA+FD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAE/D"}
@@ -1,102 +0,0 @@
1
- /**
2
- * Minimal file-backed profile store (A11): rows follow rule 2 and never
3
- * contain secret values (A9) — materials carry refs and paths only.
4
- * Profile management UX is consumer territory. Unlike fleet state, this
5
- * is durable user data: malformed or unknown-version files are typed
6
- * errors, never silent resets.
7
- */
8
- import { readFile } from "node:fs/promises";
9
- import { AGENT_ERROR_CODE, AgentError } from "../core/error.js";
10
- import { isErrnoCode, writeFileAtomically } from "../core/fs.js";
11
- import { readUnknownRecord } from "../core/json.js";
12
- import { TEXT_ENCODING } from "../core/values.js";
13
- import { AUTH_MATERIAL_KIND } from "./material.js";
14
- const PROFILE_FILE_VERSION = 1;
15
- const PROFILE_STORE_ERROR_REASON = {
16
- unreadable: "unreadable file",
17
- malformedJson: "malformed JSON",
18
- rootMustBeObject: "root must be an object",
19
- unsupportedVersion: "unsupported version",
20
- invalidProfiles: "profiles must be auth profile records",
21
- };
22
- function profileStoreError(reason, cause) {
23
- return new AgentError({
24
- code: AGENT_ERROR_CODE.invalidInput,
25
- classification: AgentError.agentFailure(AGENT_ERROR_CODE.invalidInput),
26
- message: `Invalid auth profile store: ${reason}`,
27
- data: { reason },
28
- ...(cause === undefined ? {} : { cause }),
29
- });
30
- }
31
- function isSecretRef(value) {
32
- const record = readUnknownRecord(value);
33
- if (record === null) {
34
- return false;
35
- }
36
- const { resolver, id } = record;
37
- return typeof resolver === "string" && typeof id === "string";
38
- }
39
- function isAuthProfile(value) {
40
- const record = readUnknownRecord(value);
41
- if (record === null) {
42
- return false;
43
- }
44
- const { id, agentId, material: materialValue } = record;
45
- const material = readUnknownRecord(materialValue);
46
- if (material === null) {
47
- return false;
48
- }
49
- const { kind, path, secret } = material;
50
- const materialValid = (kind === AUTH_MATERIAL_KIND.homeDir && typeof path === "string") ||
51
- (kind === AUTH_MATERIAL_KIND.apiKey && isSecretRef(secret));
52
- return typeof id === "string" && typeof agentId === "string" && materialValid;
53
- }
54
- function parseProfileFile(raw) {
55
- let parsed;
56
- try {
57
- parsed = JSON.parse(raw);
58
- }
59
- catch (error) {
60
- throw profileStoreError(PROFILE_STORE_ERROR_REASON.malformedJson, error);
61
- }
62
- const root = readUnknownRecord(parsed);
63
- if (root === null) {
64
- throw profileStoreError(PROFILE_STORE_ERROR_REASON.rootMustBeObject);
65
- }
66
- const { version, profiles } = root;
67
- if (version !== PROFILE_FILE_VERSION) {
68
- throw profileStoreError(PROFILE_STORE_ERROR_REASON.unsupportedVersion);
69
- }
70
- if (!Array.isArray(profiles) || !profiles.every(isAuthProfile)) {
71
- throw profileStoreError(PROFILE_STORE_ERROR_REASON.invalidProfiles);
72
- }
73
- return profiles;
74
- }
75
- class FileProfileStore {
76
- filePath;
77
- constructor(filePath) {
78
- this.filePath = filePath;
79
- }
80
- async list() {
81
- let raw;
82
- try {
83
- raw = await readFile(this.filePath, TEXT_ENCODING);
84
- }
85
- catch (error) {
86
- // Durable user data: only "not created yet" reads as empty; any
87
- // other read failure surfaces instead of masking real profiles.
88
- if (isErrnoCode(error, "ENOENT")) {
89
- return [];
90
- }
91
- throw profileStoreError(PROFILE_STORE_ERROR_REASON.unreadable, error);
92
- }
93
- return parseProfileFile(raw);
94
- }
95
- async save(profiles) {
96
- const file = { version: PROFILE_FILE_VERSION, profiles };
97
- await writeFileAtomically(this.filePath, `${JSON.stringify(file, null, 2)}\n`);
98
- }
99
- }
100
- export function fileProfileStore(filePath) {
101
- return new FileProfileStore(filePath);
102
- }
@@ -1,2 +0,0 @@
1
- export { keyringResolver, type KeyringResolverOptions, } from "./resolver.js";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/keyring/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,KAAK,sBAAsB,GAC5B,MAAM,eAAe,CAAC"}
@@ -1 +0,0 @@
1
- export { keyringResolver, } from "./resolver.js";
@@ -1,9 +0,0 @@
1
- import type { SecretResolver } from "../core/ports.js";
2
- export type KeyringResolverOptions = {
3
- readonly service: string;
4
- };
5
- type KeyringModuleLoader = () => Promise<unknown>;
6
- export declare function keyringResolver(options: KeyringResolverOptions): SecretResolver;
7
- export declare function createKeyringResolver(options: KeyringResolverOptions, loader: KeyringModuleLoader): SecretResolver;
8
- export {};
9
- //# sourceMappingURL=resolver.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/keyring/resolver.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,KAAK,mBAAmB,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;AAiBlD,wBAAgB,eAAe,CAC7B,OAAO,EAAE,sBAAsB,GAC9B,cAAc,CAEhB;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,sBAAsB,EAC/B,MAAM,EAAE,mBAAmB,GAC1B,cAAc,CA4BhB"}
@@ -1,64 +0,0 @@
1
- // biome-ignore-all lint/style/useNamingConvention: Keyring peer exports mirror upstream PascalCase names.
2
- import { AGENT_ERROR_CODE, AgentError, NOT_AVAILABLE_CAUSE, } from "../core/error.js";
3
- const KEYRING_PEER_PACKAGE = "@napi-rs/keyring";
4
- const KEYRING_ENTRY_EXPORT = "Entry";
5
- const EMPTY_SECRET_VALUE = "";
6
- const defaultKeyringModuleLoader = () => import(KEYRING_PEER_PACKAGE);
7
- export function keyringResolver(options) {
8
- return createKeyringResolver(options, defaultKeyringModuleLoader);
9
- }
10
- export function createKeyringResolver(options, loader) {
11
- const service = options.service;
12
- let modulePromise = null;
13
- const load = () => {
14
- modulePromise ??= loadKeyringModule(loader);
15
- return modulePromise;
16
- };
17
- return {
18
- resolve: async (id) => {
19
- const module = await load();
20
- try {
21
- // Absent entries are the `null` return (`Entry.getPassword():
22
- // string | null` in @napi-rs/keyring); anything thrown is a real
23
- // keychain failure, never "missing secret".
24
- const value = await new module.Entry(service, id).getPassword();
25
- return value === EMPTY_SECRET_VALUE ? null : value;
26
- }
27
- catch (error) {
28
- throw new AgentError({
29
- code: AGENT_ERROR_CODE.failed,
30
- classification: AgentError.agentFailure(AGENT_ERROR_CODE.failed),
31
- message: `Keyring secret "${id}" could not be read`,
32
- data: { exitCode: null, stdoutTail: null, stderrTail: null },
33
- cause: error,
34
- });
35
- }
36
- },
37
- };
38
- }
39
- async function loadKeyringModule(loader) {
40
- let loaded;
41
- try {
42
- loaded = await loader();
43
- }
44
- catch (error) {
45
- throw keyringNotInstalledError(error);
46
- }
47
- if (typeof loaded !== "object" || loaded === null) {
48
- throw keyringNotInstalledError(null);
49
- }
50
- const entry = Reflect.get(loaded, KEYRING_ENTRY_EXPORT);
51
- if (typeof entry !== "function") {
52
- throw keyringNotInstalledError(null);
53
- }
54
- return { Entry: entry };
55
- }
56
- function keyringNotInstalledError(cause) {
57
- return new AgentError({
58
- code: AGENT_ERROR_CODE.notAvailable,
59
- classification: AgentError.agentFailure(AGENT_ERROR_CODE.notAvailable),
60
- message: "Keyring peer is not installed",
61
- data: { cause: NOT_AVAILABLE_CAUSE.notInstalled },
62
- cause,
63
- });
64
- }