@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.
- package/README.md +14 -10
- package/dist/agents/claude.d.ts.map +1 -1
- package/dist/agents/claude.js +30 -0
- package/dist/agents/openai-compatible/engine.d.ts +5 -4
- package/dist/agents/openai-compatible/engine.d.ts.map +1 -1
- package/dist/agents/openai-compatible/engine.js +5 -4
- package/dist/config/agent-configs.d.ts +3 -1
- package/dist/config/agent-configs.d.ts.map +1 -1
- package/dist/config/agent-configs.js +23 -2
- package/dist/config/compose.d.ts.map +1 -1
- package/dist/config/compose.js +1 -0
- package/dist/config/index.d.ts +2 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +1 -1
- package/dist/config/model.d.ts +6 -0
- package/dist/config/model.d.ts.map +1 -1
- package/dist/config/values.d.ts +19 -0
- package/dist/config/values.d.ts.map +1 -1
- package/dist/config/values.js +18 -0
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -3
- package/dist/internal/controlled-process/host-controller.d.ts.map +1 -1
- package/dist/internal/controlled-process/host-controller.js +23 -1
- package/dist/internal/controlled-process/supervisor-runtime.js +14 -1
- package/package.json +3 -11
- package/dist/auth/profile-store.d.ts +0 -14
- package/dist/auth/profile-store.d.ts.map +0 -1
- package/dist/auth/profile-store.js +0 -102
- package/dist/keyring/index.d.ts +0 -2
- package/dist/keyring/index.d.ts.map +0 -1
- package/dist/keyring/index.js +0 -1
- package/dist/keyring/resolver.d.ts +0 -9
- package/dist/keyring/resolver.d.ts.map +0 -1
- 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`),
|
|
12
|
-
|
|
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
|
|
312
|
-
chat-completions engine is the dependency-free default
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
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;
|
|
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"}
|
package/dist/agents/claude.js
CHANGED
|
@@ -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).
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
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
|
|
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).
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
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":"
|
|
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,
|
|
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"}
|
package/dist/config/compose.js
CHANGED
|
@@ -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);
|
package/dist/config/index.d.ts
CHANGED
|
@@ -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 {
|
|
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,
|
|
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"}
|
package/dist/config/index.js
CHANGED
|
@@ -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";
|
package/dist/config/model.d.ts
CHANGED
|
@@ -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":"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;
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/config/model.ts"],"names":[],"mappings":"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"}
|
package/dist/config/values.d.ts
CHANGED
|
@@ -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"}
|
package/dist/config/values.js
CHANGED
|
@@ -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`),
|
|
8
|
-
*
|
|
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";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,gBAAgB,EAChB,KAAK,cAAc,EACnB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,MAAM,EACN,KAAK,aAAa,EAClB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/D,YAAY,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACtF,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,eAAe,GAChB,MAAM,yCAAyC,CAAC;AACjD,YAAY,EACV,SAAS,EACT,sBAAsB,EACtB,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,YAAY,EACV,eAAe,EACf,YAAY,EACZ,UAAU,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,QAAQ,GACT,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACjE,YAAY,EACV,oBAAoB,EACpB,cAAc,EACd,YAAY,EACZ,sBAAsB,EACtB,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,SAAS,GACV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,
|
|
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`),
|
|
8
|
-
*
|
|
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;
|
|
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 === "
|
|
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.
|
|
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.
|
|
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
|
-
}
|
package/dist/keyring/index.d.ts
DELETED
|
@@ -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"}
|
package/dist/keyring/index.js
DELETED
|
@@ -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"}
|
package/dist/keyring/resolver.js
DELETED
|
@@ -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
|
-
}
|