@alpacakit/agents 0.1.0-beta.37 → 0.2.0-beta.2
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 +121 -1
- package/dist/agents/claude-session.d.ts +37 -0
- package/dist/agents/claude-session.d.ts.map +1 -0
- package/dist/agents/claude-session.js +419 -0
- package/dist/agents/claude-stream.d.ts +65 -0
- package/dist/agents/claude-stream.d.ts.map +1 -0
- package/dist/agents/claude-stream.js +111 -0
- package/dist/agents/claude.d.ts +2 -1
- package/dist/agents/claude.d.ts.map +1 -1
- package/dist/agents/claude.js +6 -107
- package/dist/agents/codex-session.d.ts +52 -0
- package/dist/agents/codex-session.d.ts.map +1 -0
- package/dist/agents/codex-session.js +495 -0
- package/dist/agents/codex.d.ts +2 -1
- package/dist/agents/codex.d.ts.map +1 -1
- package/dist/agents/codex.js +3 -1
- package/dist/codex/app-server.d.ts +50 -1
- package/dist/codex/app-server.d.ts.map +1 -1
- package/dist/codex/app-server.js +130 -27
- package/dist/codex/index.d.ts +3 -2
- package/dist/codex/index.d.ts.map +1 -1
- package/dist/codex/index.js +2 -1
- package/dist/codex/protocol.d.ts +101 -0
- package/dist/codex/protocol.d.ts.map +1 -1
- package/dist/codex/protocol.js +78 -0
- package/dist/core/process-close.d.ts +11 -0
- package/dist/core/process-close.d.ts.map +1 -0
- package/dist/core/process-close.js +27 -0
- package/dist/core/session.d.ts +100 -0
- package/dist/core/session.d.ts.map +1 -0
- package/dist/core/session.js +29 -0
- package/dist/host/session-files.d.ts +22 -0
- package/dist/host/session-files.d.ts.map +1 -0
- package/dist/host/session-files.js +91 -0
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- 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 +41 -2
- package/dist/kernel/definition.d.ts +11 -2
- package/dist/kernel/definition.d.ts.map +1 -1
- package/dist/kernel/facets.d.ts +38 -1
- package/dist/kernel/facets.d.ts.map +1 -1
- package/dist/kernel/facets.js +20 -0
- package/dist/kernel/runtime.d.ts +10 -6
- package/dist/kernel/runtime.d.ts.map +1 -1
- package/dist/kernel/runtime.js +4 -1
- package/dist/kernel/session.d.ts +97 -0
- package/dist/kernel/session.d.ts.map +1 -0
- package/dist/kernel/session.js +255 -0
- package/dist/testing/fake-exec.d.ts +6 -0
- package/dist/testing/fake-exec.d.ts.map +1 -1
- package/dist/testing/fake-exec.js +3 -1
- package/package.json +2 -2
- 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
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session-plane vocabulary: a Session is one long-lived host conversation
|
|
3
|
+
* (Claude `-p --input-format stream-json` process, Codex app-server thread)
|
|
4
|
+
* that the caller keeps open across turns. One turn is one `send()`; the
|
|
5
|
+
* host's own conversation id is the Session id. Outbound types follow
|
|
6
|
+
* absence rule 2: keys always present, `null` is meaningful absence.
|
|
7
|
+
*/
|
|
8
|
+
export const SESSION_EVENT_TYPE = {
|
|
9
|
+
turnStarted: "turn_started",
|
|
10
|
+
turnEnded: "turn_ended",
|
|
11
|
+
message: "message",
|
|
12
|
+
tool: "tool",
|
|
13
|
+
approvalRequested: "approval_requested",
|
|
14
|
+
exited: "exited",
|
|
15
|
+
};
|
|
16
|
+
export const TURN_OUTCOME = {
|
|
17
|
+
completed: "completed",
|
|
18
|
+
interrupted: "interrupted",
|
|
19
|
+
failed: "failed",
|
|
20
|
+
};
|
|
21
|
+
/** The neutral answer to a host approval request; hosts map it to their own words. */
|
|
22
|
+
export const APPROVAL_DECISION = {
|
|
23
|
+
accept: "accept",
|
|
24
|
+
decline: "decline",
|
|
25
|
+
};
|
|
26
|
+
export const SESSION_OWNER_KIND = {
|
|
27
|
+
none: "none",
|
|
28
|
+
process: "process",
|
|
29
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read-only helpers over the files a host writes about its conversations
|
|
3
|
+
* (Claude transcripts and session registry, Codex rollouts and writer
|
|
4
|
+
* locks). Nothing here decides paths: callers build them from
|
|
5
|
+
* `HostContext.location.homeDir`, never from `os.homedir()`.
|
|
6
|
+
*/
|
|
7
|
+
import { type UnknownRecord } from "../core/json.js";
|
|
8
|
+
export type FirstAndLast<T> = {
|
|
9
|
+
first: T | null;
|
|
10
|
+
last: T | null;
|
|
11
|
+
};
|
|
12
|
+
/** Directory entry names; a missing directory reads as empty, anything else surfaces. */
|
|
13
|
+
export declare function readDirectoryNames(directory: string): Promise<string[]>;
|
|
14
|
+
export declare function fileExists(target: string): Promise<boolean>;
|
|
15
|
+
/** Parse one JSON file; `null` when it is absent or not a JSON object. */
|
|
16
|
+
export declare function readJsonFile(target: string): Promise<UnknownRecord | null>;
|
|
17
|
+
/**
|
|
18
|
+
* Stream a JSONL file once and keep the first and last non-null picks.
|
|
19
|
+
* Lines that are not JSON objects are skipped (hosts append other kinds).
|
|
20
|
+
*/
|
|
21
|
+
export declare function scanJsonlFirstLast<T>(file: string, pick: (record: UnknownRecord) => T | null): Promise<FirstAndLast<T>>;
|
|
22
|
+
//# sourceMappingURL=session-files.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-files.d.ts","sourceRoot":"","sources":["../../src/host/session-files.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrE,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;IAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAA;CAAE,CAAC;AAYlE,yFAAyF;AACzF,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAS7E;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAUjE;AAED,0EAA0E;AAC1E,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAW/B;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,EACxC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,CAAC,GAAG,IAAI,GACxC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAwB1B"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read-only helpers over the files a host writes about its conversations
|
|
3
|
+
* (Claude transcripts and session registry, Codex rollouts and writer
|
|
4
|
+
* locks). Nothing here decides paths: callers build them from
|
|
5
|
+
* `HostContext.location.homeDir`, never from `os.homedir()`.
|
|
6
|
+
*/
|
|
7
|
+
import { createReadStream } from "node:fs";
|
|
8
|
+
import { access, readdir, readFile } from "node:fs/promises";
|
|
9
|
+
import { createInterface } from "node:readline";
|
|
10
|
+
import { AGENT_ERROR_CODE, AgentError } from "../core/error.js";
|
|
11
|
+
import { isErrnoCode } from "../core/fs.js";
|
|
12
|
+
import { readJsonRecord } from "../core/json.js";
|
|
13
|
+
import { TEXT_ENCODING } from "../core/values.js";
|
|
14
|
+
function hostFileReadError(target, cause) {
|
|
15
|
+
return new AgentError({
|
|
16
|
+
code: AGENT_ERROR_CODE.failed,
|
|
17
|
+
classification: AgentError.agentFailure(AGENT_ERROR_CODE.failed),
|
|
18
|
+
message: `Could not read host session file: ${target}`,
|
|
19
|
+
data: { exitCode: null, stdoutTail: null, stderrTail: null },
|
|
20
|
+
cause,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
/** Directory entry names; a missing directory reads as empty, anything else surfaces. */
|
|
24
|
+
export async function readDirectoryNames(directory) {
|
|
25
|
+
try {
|
|
26
|
+
return await readdir(directory);
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
if (isErrnoCode(error, "ENOENT") || isErrnoCode(error, "ENOTDIR")) {
|
|
30
|
+
return [];
|
|
31
|
+
}
|
|
32
|
+
throw hostFileReadError(directory, error);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export async function fileExists(target) {
|
|
36
|
+
try {
|
|
37
|
+
await access(target);
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
if (isErrnoCode(error, "ENOENT") || isErrnoCode(error, "ENOTDIR")) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
throw hostFileReadError(target, error);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/** Parse one JSON file; `null` when it is absent or not a JSON object. */
|
|
48
|
+
export async function readJsonFile(target) {
|
|
49
|
+
let text;
|
|
50
|
+
try {
|
|
51
|
+
text = await readFile(target, TEXT_ENCODING);
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
if (isErrnoCode(error, "ENOENT") || isErrnoCode(error, "ENOTDIR")) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
throw hostFileReadError(target, error);
|
|
58
|
+
}
|
|
59
|
+
return readJsonRecord(text.trim());
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Stream a JSONL file once and keep the first and last non-null picks.
|
|
63
|
+
* Lines that are not JSON objects are skipped (hosts append other kinds).
|
|
64
|
+
*/
|
|
65
|
+
export async function scanJsonlFirstLast(file, pick) {
|
|
66
|
+
const result = { first: null, last: null };
|
|
67
|
+
const stream = createReadStream(file, { encoding: TEXT_ENCODING });
|
|
68
|
+
const lines = createInterface({ input: stream, crlfDelay: Infinity });
|
|
69
|
+
try {
|
|
70
|
+
for await (const line of lines) {
|
|
71
|
+
const record = readJsonRecord(line.trim());
|
|
72
|
+
if (record === null) {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
const picked = pick(record);
|
|
76
|
+
if (picked === null) {
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
result.first ??= picked;
|
|
80
|
+
result.last = picked;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
throw hostFileReadError(file, error);
|
|
85
|
+
}
|
|
86
|
+
finally {
|
|
87
|
+
lines.close();
|
|
88
|
+
stream.destroy();
|
|
89
|
+
}
|
|
90
|
+
return result;
|
|
91
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,7 +9,9 @@
|
|
|
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";
|
|
12
|
+
export { CLAUDE_PERMISSION_MODE, type ClaudePermissionMode, type ClaudeSessionPermissions, } from "./agents/claude-session.js";
|
|
12
13
|
export { capacityTextMatcher, codex } from "./agents/codex.js";
|
|
14
|
+
export { CODEX_APPROVAL_POLICY, CODEX_APPROVALS_REVIEWER, type CodexApprovalPolicy, type CodexApprovalsReviewer, type CodexSandboxMode, type CodexSandboxPolicy, type CodexSessionPermissions, } from "./agents/codex-session.js";
|
|
13
15
|
export type { PiSessionEngineOptions } from "./agents/openai-compatible/pi/engine.js";
|
|
14
16
|
export { PI_DEFAULT_CONTEXT_WINDOW, PI_DEFAULT_MAX_TOKENS, piSessionEngine, } from "./agents/openai-compatible/pi/engine.js";
|
|
15
17
|
export type { JsonValue, OpenAiCompatibleConfig, OpenAiCompatibleConfigInput, OpenAiCompatibleEngine, } from "./agents/openai-compatible.js";
|
|
@@ -22,6 +24,8 @@ export { envResolver, requireSecret } from "./auth/secrets.js";
|
|
|
22
24
|
export type { ChildProcessAbsenceProof, ChildProcessCompletion, ChildProcessIdentity, ChildProcessLifecycle, ChildProcessTerminationEvidence, ChildProcessTerminationPhase, ChildProcessTerminationResult, ChildProcessUnkillableReason, ControlledExec, ControlledExecOptions, ControlledExecProcess, ControlledProcessRecovery, } from "./core/controlled-process.js";
|
|
23
25
|
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";
|
|
24
26
|
export type { EnvPatch } from "./core/env.js";
|
|
27
|
+
export type { ApprovalDecision, Session, SessionEvent, SessionFacts, SessionOwner, TurnOutcome, TurnResult, } from "./core/session.js";
|
|
28
|
+
export { APPROVAL_DECISION, SESSION_EVENT_TYPE, SESSION_OWNER_KIND, TURN_OUTCOME, } from "./core/session.js";
|
|
25
29
|
export { applyEnvPatch, EMPTY_ENV_PATCH, mergeEnvPatches, processEnv, } from "./core/env.js";
|
|
26
30
|
export type { AgentErrorCode, AgentErrorData, AgentErrorOptions, AgentFailure, AgentFailureClass, AgentFailureCode, AgentInfrastructureFailureCode, AuthFailureReason, ControlledProcessLaunchFailureCode, ControlledProcessLaunchFailureData, ControlledProcessLaunchFailureRetryability, GuardViolation, Issue, NotAvailableCause, TimeoutKind, } from "./core/error.js";
|
|
27
31
|
export { AGENT_ERROR_CODE, AGENT_FAILURE_CLASS, AGENT_INFRASTRUCTURE_FAILURE_CODE, AgentError, AUTH_FAILURE_REASON, agentFailure, CONTROLLED_PROCESS_LAUNCH_FAILURE_CODE, CONTROLLED_PROCESS_LAUNCH_FAILURE_RETRYABILITY, infrastructureFailure, isAgentError, NOT_AVAILABLE_CAUSE, TIMEOUT_KIND, } from "./core/error.js";
|
|
@@ -53,17 +57,18 @@ export type { ClassifiedFailure, FailureEvidence, FailureMatcher, } from "./kern
|
|
|
53
57
|
export { authIf, capacityIf, classifyFailure, parseCooldownHint, quotaIf, sharedFailureMatchers, } from "./kernel/classify.js";
|
|
54
58
|
export type { ArgContext, CliAgentBlueprint, CliResultCapture, OutputState, SandboxArgBuilders, } from "./kernel/cli-agent.js";
|
|
55
59
|
export { defineCliAgent } from "./kernel/cli-agent.js";
|
|
56
|
-
export type { AgentDefinition, AgentRun, RunContext, } from "./kernel/definition.js";
|
|
60
|
+
export type { AgentDefinition, AgentRun, RunContext, SessionPermissionsOf, } from "./kernel/definition.js";
|
|
57
61
|
export { defineAgent } from "./kernel/definition.js";
|
|
58
62
|
export type { EnvTemplate, EnvTemplateResolution, } from "./kernel/env-template.js";
|
|
59
63
|
export { referencedEnvNames, resolveEnvTemplate, } from "./kernel/env-template.js";
|
|
60
|
-
export type { AgentAuth, AgentAvailabilityProbe, AgentDoctor, AgentLogin, AgentMcp, AgentSkills, } from "./kernel/facets.js";
|
|
64
|
+
export type { AgentAuth, AgentAvailabilityProbe, AgentDoctor, AgentLogin, AgentMcp, AgentSessions, AgentSkills, SessionOpenOptions, SessionResumeOptions, } from "./kernel/facets.js";
|
|
61
65
|
export type { Guard, GuardContext, GuardFactory } from "./kernel/guard.js";
|
|
62
66
|
export { maxToolCalls, maxTurns, noProgress, repeatedOutput, } from "./kernel/guard.js";
|
|
63
67
|
export type { ControlledChildProcessResource, Grant, Limits, ResolvedLimits, ResolvedRunOptions, ResolvedRunResources, ResolvedSandbox, RunOptions, RunResources, Sandbox, SandboxMode, } from "./kernel/options.js";
|
|
64
68
|
export { GRANT_KIND, SANDBOX_MODE } from "./kernel/options.js";
|
|
65
69
|
export type { Agent, AgentRuntime, AgentRuntimeOptions, } from "./kernel/runtime.js";
|
|
66
70
|
export { createAgentRuntime, resolvePorts } from "./kernel/runtime.js";
|
|
71
|
+
export type { ResolvedSessionOpenOptions, ResolvedSessionResumeOptions, SessionCapability, SessionContext, } from "./kernel/session.js";
|
|
67
72
|
export { type RunAgentOptions, runAgent } from "./run-agent.js";
|
|
68
73
|
export type { ExtractionStrategy, JsonParseOutcome, Markers, } from "./structured/extract.js";
|
|
69
74
|
export { DEFAULT_MARKERS, defaultExtractionStrategies, extractBlock, parseJsonResilient, } from "./structured/extract.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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
|
@@ -9,13 +9,16 @@
|
|
|
9
9
|
*/
|
|
10
10
|
export { BUILTIN_AGENT_ID, builtinAgentFactories, } from "./agents/builtin.js";
|
|
11
11
|
export { claude, structuredQuotaMatcher, } from "./agents/claude.js";
|
|
12
|
+
export { CLAUDE_PERMISSION_MODE, } from "./agents/claude-session.js";
|
|
12
13
|
export { capacityTextMatcher, codex } from "./agents/codex.js";
|
|
14
|
+
export { CODEX_APPROVAL_POLICY, CODEX_APPROVALS_REVIEWER, } from "./agents/codex-session.js";
|
|
13
15
|
export { PI_DEFAULT_CONTEXT_WINDOW, PI_DEFAULT_MAX_TOKENS, piSessionEngine, } from "./agents/openai-compatible/pi/engine.js";
|
|
14
16
|
export { openaiCompatible } from "./agents/openai-compatible.js";
|
|
15
17
|
export { LOGIN_EVENT_TYPE, LOGIN_METHOD } from "./auth/login.js";
|
|
16
18
|
export { AUTH_MATERIAL_KIND, AUTH_STATUS, createApiKeyProfile, createHomeDirProfile, envVarAuthMaterial, } from "./auth/material.js";
|
|
17
19
|
export { envResolver, requireSecret } from "./auth/secrets.js";
|
|
18
20
|
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";
|
|
21
|
+
export { APPROVAL_DECISION, SESSION_EVENT_TYPE, SESSION_OWNER_KIND, TURN_OUTCOME, } from "./core/session.js";
|
|
19
22
|
export { applyEnvPatch, EMPTY_ENV_PATCH, mergeEnvPatches, processEnv, } from "./core/env.js";
|
|
20
23
|
export { AGENT_ERROR_CODE, AGENT_FAILURE_CLASS, AGENT_INFRASTRUCTURE_FAILURE_CODE, AgentError, AUTH_FAILURE_REASON, agentFailure, CONTROLLED_PROCESS_LAUNCH_FAILURE_CODE, CONTROLLED_PROCESS_LAUNCH_FAILURE_RETRYABILITY, infrastructureFailure, isAgentError, NOT_AVAILABLE_CAUSE, TIMEOUT_KIND, } from "./core/error.js";
|
|
21
24
|
export { createControlledExec } from "./core/node-controlled-exec.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 = {
|
|
@@ -369,7 +368,28 @@ async function runSupervisorSession(input) {
|
|
|
369
368
|
await runCoordinatorOperation(async (current) => current.acknowledge());
|
|
370
369
|
coordinatorAckMayHaveCommitted = true;
|
|
371
370
|
await input.dependencies.writeShimAck(shimControl);
|
|
372
|
-
|
|
371
|
+
// The relay deadline is the supervisor's own decision: when it elapses
|
|
372
|
+
// before the shim has failed, it cuts the shim's input, and the early
|
|
373
|
+
// EOF the shim then reports is a consequence (seen on slow CI while the
|
|
374
|
+
// shim was still starting). Every other relay failure is itself a
|
|
375
|
+
// consequence of the shim side (a worker exit closes the pipe), so the
|
|
376
|
+
// shim's report keeps precedence there.
|
|
377
|
+
let firstFailure = null;
|
|
378
|
+
const [inputRelaySettlement, shimReadySettlement] = await Promise.allSettled([
|
|
379
|
+
inputRelay.catch((error) => {
|
|
380
|
+
firstFailure ??= "relay";
|
|
381
|
+
throw error;
|
|
382
|
+
}),
|
|
383
|
+
shimReady.catch((error) => {
|
|
384
|
+
firstFailure ??= "shim";
|
|
385
|
+
throw error;
|
|
386
|
+
}),
|
|
387
|
+
]);
|
|
388
|
+
if (inputRelaySettlement.status === "rejected" &&
|
|
389
|
+
firstFailure === "relay" &&
|
|
390
|
+
isInputTransferTimeout(inputRelaySettlement.reason)) {
|
|
391
|
+
throw inputRelaySettlement.reason;
|
|
392
|
+
}
|
|
373
393
|
if (shimReadySettlement.status === "rejected") {
|
|
374
394
|
throw shimReadySettlement.reason;
|
|
375
395
|
}
|
|
@@ -701,9 +721,23 @@ function spawnShim(bootstrap) {
|
|
|
701
721
|
env: {},
|
|
702
722
|
stdio: ["ignore", "pipe", "pipe", "pipe", "pipe", "pipe"],
|
|
703
723
|
});
|
|
724
|
+
containShimStdioErrors(shim);
|
|
704
725
|
shim.once("error", () => { });
|
|
705
726
|
return shim;
|
|
706
727
|
}
|
|
728
|
+
/**
|
|
729
|
+
* The supervisor owns every shim stdio error from spawn until the shim closes.
|
|
730
|
+
* Framed writes, status reads, and output pumps keep their own listeners and
|
|
731
|
+
* remain responsible for their outcomes; this owner only contains the pipe
|
|
732
|
+
* errors a dying shim raises once those operations have settled, so a late
|
|
733
|
+
* reset can never end supervisor custody before its failure is reported.
|
|
734
|
+
*/
|
|
735
|
+
function containShimStdioErrors(shim) {
|
|
736
|
+
for (const stream of shim.stdio) {
|
|
737
|
+
stream?.on("error", consumeShimStdioError);
|
|
738
|
+
}
|
|
739
|
+
}
|
|
740
|
+
function consumeShimStdioError() { }
|
|
707
741
|
function waitForShimClose(shim) {
|
|
708
742
|
return new Promise((resolve) => {
|
|
709
743
|
shim.once("close", () => resolve());
|
|
@@ -931,3 +965,8 @@ async function selfSigkill() {
|
|
|
931
965
|
function randomHex(bytes) {
|
|
932
966
|
return randomBytes(bytes).toString("hex");
|
|
933
967
|
}
|
|
968
|
+
function isInputTransferTimeout(error) {
|
|
969
|
+
return (error instanceof ControlledProcessLaunchError &&
|
|
970
|
+
error.failure.code ===
|
|
971
|
+
CONTROLLED_PROCESS_LAUNCH_FAILURE_CODE.inputTransferTimeout);
|
|
972
|
+
}
|
|
@@ -11,6 +11,7 @@ import type { AgentEvent, AgentRunOutcome } from "../core/run.js";
|
|
|
11
11
|
import type { AgentAvailabilityCapability } from "../host/availability.js";
|
|
12
12
|
import type { DoctorCapability, McpCapability, SkillsCapability } from "../host/capabilities.js";
|
|
13
13
|
import type { ResolvedRunOptions } from "./options.js";
|
|
14
|
+
import type { SessionCapability } from "./session.js";
|
|
14
15
|
/** Resolved (rule 2): the adapter's whole world. */
|
|
15
16
|
export type RunContext = {
|
|
16
17
|
/** The ONE stop channel — caller abort, timeout, and guard violations. */
|
|
@@ -25,7 +26,12 @@ export type RunContext = {
|
|
|
25
26
|
logger: Logger;
|
|
26
27
|
};
|
|
27
28
|
export type AgentRun = AsyncGenerator<AgentEvent, AgentRunOutcome, void>;
|
|
28
|
-
|
|
29
|
+
/**
|
|
30
|
+
* `SessionPermissions` is the host-specific permission shape a session is
|
|
31
|
+
* opened with (`ClaudeSessionPermissions`, `CodexSessionPermissions`); it
|
|
32
|
+
* stays a type parameter so the neutral `Sandbox` never learns host words.
|
|
33
|
+
*/
|
|
34
|
+
export interface AgentDefinition<Id extends string = string, SessionPermissions = unknown> {
|
|
29
35
|
id: Id;
|
|
30
36
|
run(options: ResolvedRunOptions, ctx: RunContext): AgentRun;
|
|
31
37
|
availability?: AgentAvailabilityCapability;
|
|
@@ -34,10 +40,13 @@ export interface AgentDefinition<Id extends string = string> {
|
|
|
34
40
|
doctor?: DoctorCapability;
|
|
35
41
|
skills?: SkillsCapability;
|
|
36
42
|
mcp?: McpCapability;
|
|
43
|
+
session?: SessionCapability<SessionPermissions>;
|
|
37
44
|
}
|
|
45
|
+
/** The session permission type a definition declares (`unknown` when it has no session facet). */
|
|
46
|
+
export type SessionPermissionsOf<Definition> = Definition extends AgentDefinition<string, infer Permissions> ? Permissions : unknown;
|
|
38
47
|
/**
|
|
39
48
|
* Identity helper for hand-rolled agents: pins the `Id` literal and
|
|
40
49
|
* type-checks the definition in place. No runtime behavior.
|
|
41
50
|
*/
|
|
42
|
-
export declare function defineAgent<const Id extends string>(definition: AgentDefinition<Id>): AgentDefinition<Id>;
|
|
51
|
+
export declare function defineAgent<const Id extends string, SessionPermissions = unknown>(definition: AgentDefinition<Id, SessionPermissions>): AgentDefinition<Id, SessionPermissions>;
|
|
43
52
|
//# sourceMappingURL=definition.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/kernel/definition.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/kernel/definition.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,oDAAoD;AACpD,MAAM,MAAM,UAAU,GAAG;IACvB,0EAA0E;IAC1E,MAAM,EAAE,WAAW,CAAC;IACpB,yDAAyD;IACzD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,2EAA2E;IAC3E,KAAK,EAAE,KAAK,CAAC;IACb,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,cAAc,CAAC,UAAU,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;AAEzE;;;;GAIG;AACH,MAAM,WAAW,eAAe,CAC9B,EAAE,SAAS,MAAM,GAAG,MAAM,EAC1B,kBAAkB,GAAG,OAAO;IAE5B,EAAE,EAAE,EAAE,CAAC;IACP,GAAG,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC5D,YAAY,CAAC,EAAE,2BAA2B,CAAC;IAC3C,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,GAAG,CAAC,EAAE,aAAa,CAAC;IACpB,OAAO,CAAC,EAAE,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;CACjD;AAED,kGAAkG;AAClG,MAAM,MAAM,oBAAoB,CAAC,UAAU,IACzC,UAAU,SAAS,eAAe,CAAC,MAAM,EAAE,MAAM,WAAW,CAAC,GACzD,WAAW,GACX,OAAO,CAAC;AAEd;;;GAGG;AACH,wBAAgB,WAAW,CACzB,KAAK,CAAC,EAAE,SAAS,MAAM,EACvB,kBAAkB,GAAG,OAAO,EAE5B,UAAU,EAAE,eAAe,CAAC,EAAE,EAAE,kBAAkB,CAAC,GAClD,eAAe,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAEzC"}
|
package/dist/kernel/facets.d.ts
CHANGED
|
@@ -6,11 +6,13 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { type LoginCapability, type LoginHandle, type LoginMethod, type LoginRequest } from "../auth/login.js";
|
|
8
8
|
import type { AuthCapability, AuthMaterial, AuthMaterialDescriptor, AuthMaterialKind, AuthStatus } from "../auth/material.js";
|
|
9
|
-
import type
|
|
9
|
+
import { type EnvPatch } from "../core/env.js";
|
|
10
10
|
import type { Clock, Exec, HttpClient, Logger, SecretResolvers } from "../core/ports.js";
|
|
11
11
|
import type { AgentAvailability, AgentAvailabilityCapability } from "../host/availability.js";
|
|
12
12
|
import type { DoctorCapability, DoctorReport, InstalledSkill, InstallOptions, InstallOutcome, McpCapability, McpScope, McpServerSpec, McpServerState, SkillSource, SkillsCapability } from "../host/capabilities.js";
|
|
13
|
+
import type { Session, SessionFacts } from "../core/session.js";
|
|
13
14
|
import type { HostLocation } from "../host/context.js";
|
|
15
|
+
import type { SessionCapability } from "./session.js";
|
|
14
16
|
export type AgentAuth = {
|
|
15
17
|
supports(kind: AuthMaterialKind): boolean;
|
|
16
18
|
/** Supported material kinds in canonical order (empty if none). */
|
|
@@ -45,6 +47,40 @@ export type AgentMcp = {
|
|
|
45
47
|
scope: McpScope;
|
|
46
48
|
}): Promise<void>;
|
|
47
49
|
};
|
|
50
|
+
/** Call-site input (rule 1): `env` patches the runtime's base environment. */
|
|
51
|
+
export type SessionOpenOptions<Permissions> = {
|
|
52
|
+
workspace: string;
|
|
53
|
+
permissions: Permissions;
|
|
54
|
+
env?: EnvPatch;
|
|
55
|
+
};
|
|
56
|
+
export type SessionResumeOptions<Permissions> = SessionOpenOptions<Permissions> & {
|
|
57
|
+
/**
|
|
58
|
+
* Codex only (Claude has no archive): when `true`, an archived thread is
|
|
59
|
+
* `thread/unarchive`d before `thread/resume`, which also moves it back into
|
|
60
|
+
* the ChatGPT app's active list. Default `false`: resuming an archived
|
|
61
|
+
* thread fails with the server's "is archived" message; check
|
|
62
|
+
* `inspect(id).archived` first.
|
|
63
|
+
*/
|
|
64
|
+
unarchive?: boolean;
|
|
65
|
+
};
|
|
66
|
+
export type AgentSessions<Permissions> = {
|
|
67
|
+
/**
|
|
68
|
+
* Start a new conversation in `workspace`. Codex note: `thread/start`
|
|
69
|
+
* with a writable sandbox (`workspace-write`, `danger-full-access`) makes
|
|
70
|
+
* Codex append a `trust_level` entry for the workspace to
|
|
71
|
+
* `~/.codex/config.toml`; `read-only` does not (T53/T57, codex 0.153.4).
|
|
72
|
+
*/
|
|
73
|
+
open(options: SessionOpenOptions<Permissions>): Promise<Session>;
|
|
74
|
+
/**
|
|
75
|
+
* Take over an existing conversation by the host's id. Permissions are
|
|
76
|
+
* always passed explicitly — hosts do not reliably restore the original
|
|
77
|
+
* ones (Codex `thread/resume` without `sandbox` ran as danger-full-access).
|
|
78
|
+
* An archived Codex thread is unarchived only when `unarchive: true`.
|
|
79
|
+
*/
|
|
80
|
+
resume(id: string, options: SessionResumeOptions<Permissions>): Promise<Session>;
|
|
81
|
+
/** Read the host's own files about a conversation; `null` when it has none. */
|
|
82
|
+
inspect(id: string, location: HostLocation): Promise<SessionFacts<Permissions> | null>;
|
|
83
|
+
};
|
|
48
84
|
export type FacetBinding = {
|
|
49
85
|
agentId: string;
|
|
50
86
|
env: Record<string, string>;
|
|
@@ -59,5 +95,6 @@ export declare function bindAvailability(capability: AgentAvailabilityCapability
|
|
|
59
95
|
export declare function bindLogin(capability: LoginCapability, binding: FacetBinding): AgentLogin;
|
|
60
96
|
export declare function bindDoctor(capability: DoctorCapability, binding: FacetBinding): AgentDoctor;
|
|
61
97
|
export declare function bindSkills(capability: SkillsCapability, binding: FacetBinding): AgentSkills;
|
|
98
|
+
export declare function bindSessions<Permissions>(capability: SessionCapability<Permissions>, binding: FacetBinding): AgentSessions<Permissions>;
|
|
62
99
|
export declare function bindMcp(capability: McpCapability, binding: FacetBinding): AgentMcp;
|
|
63
100
|
//# sourceMappingURL=facets.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facets.d.ts","sourceRoot":"","sources":["../../src/kernel/facets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,WAAW,EAEhB,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,sBAAsB,EACtB,gBAAgB,EAChB,UAAU,EAGX,MAAM,qBAAqB,CAAC;AAM7B,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"facets.d.ts","sourceRoot":"","sources":["../../src/kernel/facets.ts"],"names":[],"mappings":"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"}
|
package/dist/kernel/facets.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { LOGIN_METHOD, } from "../auth/login.js";
|
|
8
8
|
import { AUTH_MATERIAL_KIND, AUTH_STATUS, authMaterialRequiresSecret, } from "../auth/material.js";
|
|
9
|
+
import { applyEnvPatch, EMPTY_ENV_PATCH } from "../core/env.js";
|
|
9
10
|
import { AGENT_ERROR_CODE, AgentError } from "../core/error.js";
|
|
10
11
|
import { resolveHostLocation } from "../host/context.js";
|
|
11
12
|
import { validateSpecSecrets } from "../host/validate-spec.js";
|
|
@@ -83,6 +84,25 @@ export function bindSkills(capability, binding) {
|
|
|
83
84
|
},
|
|
84
85
|
};
|
|
85
86
|
}
|
|
87
|
+
export function bindSessions(capability, binding) {
|
|
88
|
+
const context = (options) => ({
|
|
89
|
+
env: applyEnvPatch(binding.env, options.env ?? EMPTY_ENV_PATCH),
|
|
90
|
+
exec: binding.exec,
|
|
91
|
+
clock: binding.clock,
|
|
92
|
+
logger: {
|
|
93
|
+
log: (level, message, data) => binding.logger.log(level, `[session ${binding.agentId}] ${message}`, data),
|
|
94
|
+
},
|
|
95
|
+
});
|
|
96
|
+
const resolved = (options) => ({
|
|
97
|
+
workspace: options.workspace,
|
|
98
|
+
permissions: options.permissions,
|
|
99
|
+
});
|
|
100
|
+
return {
|
|
101
|
+
open: (options) => capability.open(resolved(options), context(options)),
|
|
102
|
+
resume: (id, options) => capability.resume(id, { ...resolved(options), unarchive: options.unarchive ?? false }, context(options)),
|
|
103
|
+
inspect: (id, location) => capability.inspect(id, hostContext(binding, location)),
|
|
104
|
+
};
|
|
105
|
+
}
|
|
86
106
|
export function bindMcp(capability, binding) {
|
|
87
107
|
return {
|
|
88
108
|
list: (location) => capability.list(hostContext(binding, location)),
|
package/dist/kernel/runtime.d.ts
CHANGED
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
import { type Ports } from "../core/ports.js";
|
|
8
8
|
import type { RunHandle } from "../core/run.js";
|
|
9
9
|
import { type StructuredHandle, type StructuredRunOptions } from "../structured/run-structured.js";
|
|
10
|
-
import type { AgentDefinition } from "./definition.js";
|
|
11
|
-
import { type AgentAuth, type AgentAvailabilityProbe, type AgentDoctor, type AgentLogin, type AgentMcp, type AgentSkills } from "./facets.js";
|
|
10
|
+
import type { AgentDefinition, SessionPermissionsOf } from "./definition.js";
|
|
11
|
+
import { type AgentAuth, type AgentAvailabilityProbe, type AgentDoctor, type AgentLogin, type AgentMcp, type AgentSessions, type AgentSkills } from "./facets.js";
|
|
12
12
|
import { type RunOptions } from "./options.js";
|
|
13
|
-
export interface Agent<Id extends string = string> {
|
|
13
|
+
export interface Agent<Id extends string = string, SessionPermissions = unknown> {
|
|
14
14
|
readonly id: Id;
|
|
15
15
|
run<T>(options: StructuredRunOptions<T>): StructuredHandle<T>;
|
|
16
16
|
run(options: RunOptions): RunHandle;
|
|
@@ -21,9 +21,13 @@ export interface Agent<Id extends string = string> {
|
|
|
21
21
|
skills: AgentSkills | null;
|
|
22
22
|
mcp: AgentMcp | null;
|
|
23
23
|
doctor: AgentDoctor | null;
|
|
24
|
+
/** Long-lived conversations; `null` when the definition has no session facet. */
|
|
25
|
+
session: AgentSessions<SessionPermissions> | null;
|
|
24
26
|
}
|
|
25
|
-
export interface AgentRuntime<Id extends string = string> {
|
|
26
|
-
agent<I extends Id>(id: I): Agent<I
|
|
27
|
+
export interface AgentRuntime<Id extends string = string, Defs extends readonly AgentDefinition[] = readonly AgentDefinition<Id>[]> {
|
|
28
|
+
agent<I extends Id>(id: I): Agent<I, SessionPermissionsOf<Extract<Defs[number], {
|
|
29
|
+
id: I;
|
|
30
|
+
}>>>;
|
|
27
31
|
agents(): Agent<Id>[];
|
|
28
32
|
/** The resolved ports — composition layers (fleet) reuse these. */
|
|
29
33
|
readonly ports: Ports;
|
|
@@ -45,5 +49,5 @@ export type AgentRuntimeOptions<Defs extends readonly AgentDefinition[]> = {
|
|
|
45
49
|
* resolver, so registering "keychain" never silently drops "env".
|
|
46
50
|
*/
|
|
47
51
|
export declare function resolvePorts(ports?: Partial<Ports>): Ports;
|
|
48
|
-
export declare function createAgentRuntime<const Defs extends readonly AgentDefinition[]>(options: AgentRuntimeOptions<Defs>): AgentRuntime<Defs[number]["id"]>;
|
|
52
|
+
export declare function createAgentRuntime<const Defs extends readonly AgentDefinition[]>(options: AgentRuntimeOptions<Defs>): AgentRuntime<Defs[number]["id"], Defs>;
|
|
49
53
|
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/kernel/runtime.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAA6B,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAE1B,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/kernel/runtime.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAA6B,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAE1B,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EACL,KAAK,SAAS,EACd,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,WAAW,EASjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,UAAU,EAAqB,MAAM,cAAc,CAAC;AAGlE,MAAM,WAAW,KAAK,CACpB,EAAE,SAAS,MAAM,GAAG,MAAM,EAC1B,kBAAkB,GAAG,OAAO;IAE5B,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;IAChB,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC9D,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,CAAC;IACpC,GAAG,CAAC,CAAC,EACH,OAAO,EAAE,UAAU,GAAG,oBAAoB,CAAC,CAAC,CAAC,GAC5C,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACnC,YAAY,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAC5C,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,iFAAiF;IACjF,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC;CACnD;AAED,MAAM,WAAW,YAAY,CAC3B,EAAE,SAAS,MAAM,GAAG,MAAM,EAC1B,IAAI,SAAS,SAAS,eAAe,EAAE,GAAG,SAAS,eAAe,CAAC,EAAE,CAAC,EAAE;IAExE,KAAK,CAAC,CAAC,SAAS,EAAE,EAChB,EAAE,EAAE,CAAC,GACJ,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,EAAE,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC,CAAC,CAAC;IACpE,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;IACtB,mEAAmE;IACnE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;CACvB;AAED,MAAM,MAAM,mBAAmB,CAAC,IAAI,SAAS,SAAS,eAAe,EAAE,IAAI;IACzE,MAAM,EAAE,IAAI,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACvB;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAS1D;AA6ED,wBAAgB,kBAAkB,CAChC,KAAK,CAAC,IAAI,SAAS,SAAS,eAAe,EAAE,EAC7C,OAAO,EAAE,mBAAmB,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAwC5E"}
|
package/dist/kernel/runtime.js
CHANGED
|
@@ -10,7 +10,7 @@ import { AGENT_ERROR_CODE, AgentError } from "../core/error.js";
|
|
|
10
10
|
import { fetchHttp, nodeExec, systemClock } from "../core/node-ports.js";
|
|
11
11
|
import { noopLogger, noopTelemetry } from "../core/ports.js";
|
|
12
12
|
import { isStructuredRunOptions, resolveStructuredRunOptions, startStructuredRun, } from "../structured/run-structured.js";
|
|
13
|
-
import { bindAuth, bindAvailability, bindDoctor, bindLogin, bindMcp, bindSkills, } from "./facets.js";
|
|
13
|
+
import { bindAuth, bindAvailability, bindDoctor, bindLogin, bindMcp, bindSessions, bindSkills, } from "./facets.js";
|
|
14
14
|
import { resolveRunOptions } from "./options.js";
|
|
15
15
|
import { startRun } from "./run.js";
|
|
16
16
|
/**
|
|
@@ -77,6 +77,9 @@ function bindAgent(definition, ports, baseEnv) {
|
|
|
77
77
|
doctor: definition.doctor === undefined
|
|
78
78
|
? null
|
|
79
79
|
: bindDoctor(definition.doctor, binding),
|
|
80
|
+
session: definition.session === undefined
|
|
81
|
+
? null
|
|
82
|
+
: bindSessions(definition.session, binding),
|
|
80
83
|
};
|
|
81
84
|
}
|
|
82
85
|
export function createAgentRuntime(options) {
|