@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.
Files changed (64) hide show
  1. package/README.md +121 -1
  2. package/dist/agents/claude-session.d.ts +37 -0
  3. package/dist/agents/claude-session.d.ts.map +1 -0
  4. package/dist/agents/claude-session.js +419 -0
  5. package/dist/agents/claude-stream.d.ts +65 -0
  6. package/dist/agents/claude-stream.d.ts.map +1 -0
  7. package/dist/agents/claude-stream.js +111 -0
  8. package/dist/agents/claude.d.ts +2 -1
  9. package/dist/agents/claude.d.ts.map +1 -1
  10. package/dist/agents/claude.js +6 -107
  11. package/dist/agents/codex-session.d.ts +52 -0
  12. package/dist/agents/codex-session.d.ts.map +1 -0
  13. package/dist/agents/codex-session.js +495 -0
  14. package/dist/agents/codex.d.ts +2 -1
  15. package/dist/agents/codex.d.ts.map +1 -1
  16. package/dist/agents/codex.js +3 -1
  17. package/dist/codex/app-server.d.ts +50 -1
  18. package/dist/codex/app-server.d.ts.map +1 -1
  19. package/dist/codex/app-server.js +130 -27
  20. package/dist/codex/index.d.ts +3 -2
  21. package/dist/codex/index.d.ts.map +1 -1
  22. package/dist/codex/index.js +2 -1
  23. package/dist/codex/protocol.d.ts +101 -0
  24. package/dist/codex/protocol.d.ts.map +1 -1
  25. package/dist/codex/protocol.js +78 -0
  26. package/dist/core/process-close.d.ts +11 -0
  27. package/dist/core/process-close.d.ts.map +1 -0
  28. package/dist/core/process-close.js +27 -0
  29. package/dist/core/session.d.ts +100 -0
  30. package/dist/core/session.d.ts.map +1 -0
  31. package/dist/core/session.js +29 -0
  32. package/dist/host/session-files.d.ts +22 -0
  33. package/dist/host/session-files.d.ts.map +1 -0
  34. package/dist/host/session-files.js +91 -0
  35. package/dist/index.d.ts +7 -2
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +3 -0
  38. package/dist/internal/controlled-process/host-controller.d.ts.map +1 -1
  39. package/dist/internal/controlled-process/host-controller.js +23 -1
  40. package/dist/internal/controlled-process/supervisor-runtime.js +41 -2
  41. package/dist/kernel/definition.d.ts +11 -2
  42. package/dist/kernel/definition.d.ts.map +1 -1
  43. package/dist/kernel/facets.d.ts +38 -1
  44. package/dist/kernel/facets.d.ts.map +1 -1
  45. package/dist/kernel/facets.js +20 -0
  46. package/dist/kernel/runtime.d.ts +10 -6
  47. package/dist/kernel/runtime.d.ts.map +1 -1
  48. package/dist/kernel/runtime.js +4 -1
  49. package/dist/kernel/session.d.ts +97 -0
  50. package/dist/kernel/session.d.ts.map +1 -0
  51. package/dist/kernel/session.js +255 -0
  52. package/dist/testing/fake-exec.d.ts +6 -0
  53. package/dist/testing/fake-exec.d.ts.map +1 -1
  54. package/dist/testing/fake-exec.js +3 -1
  55. package/package.json +2 -2
  56. package/dist/auth/profile-store.d.ts +0 -14
  57. package/dist/auth/profile-store.d.ts.map +0 -1
  58. package/dist/auth/profile-store.js +0 -102
  59. package/dist/keyring/index.d.ts +0 -2
  60. package/dist/keyring/index.d.ts.map +0 -1
  61. package/dist/keyring/index.js +0 -1
  62. package/dist/keyring/resolver.d.ts +0 -9
  63. package/dist/keyring/resolver.d.ts.map +0 -1
  64. 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";
@@ -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;AAgnBD,wBAAsB,wBAAwB,CAAC,KAAK,EAAE;IACpD,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CAAC;CACrE,GAAG,OAAO,CAAC,6BAA6B,CAAC,CA4BzC"}
1
+ {"version":3,"file":"host-controller.d.ts","sourceRoot":"","sources":["../../../src/internal/controlled-process/host-controller.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EAErB,6BAA6B,EAC9B,MAAM,kCAAkC,CAAC;AAQ1C,OAAO,KAAK,EAAY,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AA6BtE,OAAO,KAAK,EACV,uBAAuB,EAEvB,uBAAuB,EACxB,MAAM,uBAAuB,CAAC;AAqC/B,MAAM,MAAM,4BAA4B,GAAG;IACzC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC;CAC3C,CAAC;AAEF,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,uBAAuB,CAAC,CAAC;IACxD,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACrD,kBAAkB,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAAC;CACvD;AAsED,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,2BAA2B,CAAC,CAoJtC;AA6oBD,wBAAsB,wBAAwB,CAAC,KAAK,EAAE;IACpD,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CAAC;CACrE,GAAG,OAAO,CAAC,6BAA6B,CAAC,CA4BzC"}
@@ -366,7 +366,17 @@ async function requestTerminationBeforeDeadline(input) {
366
366
  if (raced.kind === "closed") {
367
367
  return null;
368
368
  }
369
- if (raced.kind === "failure" || raced.kind === "deadline") {
369
+ if (raced.kind === "deadline") {
370
+ throw raced.error;
371
+ }
372
+ if (raced.kind === "failure") {
373
+ // A supervisor that rolled back before reporting its launch failure has
374
+ // already unlinked its socket, so this request can fail while its close is
375
+ // the only remaining evidence. Join that close within the same deadline;
376
+ // the caller still has to prove absence from the signed record.
377
+ if (await closedBeforeDeadline(input.supervisorClose, input.deadline)) {
378
+ return null;
379
+ }
370
380
  throw raced.error;
371
381
  }
372
382
  if (raced.response.kind !== SUPERVISOR_RESPONSE_KIND.termination) {
@@ -379,6 +389,18 @@ async function requestTerminationBeforeDeadline(input) {
379
389
  supervisorExit: null,
380
390
  };
381
391
  }
392
+ function closedBeforeDeadline(supervisorClose, deadline) {
393
+ if (supervisorClose.didClose()) {
394
+ return Promise.resolve(true);
395
+ }
396
+ return new Promise((resolve) => {
397
+ const timeout = setTimeout(() => resolve(false), Math.max(0, deadline - Date.now()));
398
+ void supervisorClose.promise.then(() => {
399
+ clearTimeout(timeout);
400
+ resolve(true);
401
+ });
402
+ });
403
+ }
382
404
  async function raceSupervisorRequestWithClose(input) {
383
405
  if (input.supervisorClose.didClose()) {
384
406
  return {
@@ -238,7 +238,6 @@ async function runSupervisorSession(input) {
238
238
  shimControl = shim.stdio[SHIM_CONTROL_FD];
239
239
  shimStatus = shim.stdio[SHIM_STATUS_FD];
240
240
  shimInput = shim.stdio.at(SHIM_INPUT_FD);
241
- shimInput.on("error", () => { });
242
241
  const pid = requireShimPid(shim);
243
242
  shimPid = pid;
244
243
  const record = {
@@ -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
- const [inputRelaySettlement, shimReadySettlement] = await Promise.allSettled([inputRelay, shimReady]);
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
- export interface AgentDefinition<Id extends string = string> {
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;AAEvD,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,MAAM,WAAW,eAAe,CAAC,EAAE,SAAS,MAAM,GAAG,MAAM;IACzD,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;CACrB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EACjD,UAAU,EAAE,eAAe,CAAC,EAAE,CAAC,GAC9B,eAAe,CAAC,EAAE,CAAC,CAErB"}
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"}
@@ -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 { EnvPatch } from "../core/env.js";
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":"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"}
1
+ {"version":3,"file":"facets.d.ts","sourceRoot":"","sources":["../../src/kernel/facets.ts"],"names":[],"mappings":"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"}
@@ -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)),
@@ -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;AACvD,OAAO,EACL,KAAK,SAAS,EACd,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,WAAW,EAQjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,UAAU,EAAqB,MAAM,cAAc,CAAC;AAGlE,MAAM,WAAW,KAAK,CAAC,EAAE,SAAS,MAAM,GAAG,MAAM;IAC/C,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;CAC5B;AAED,MAAM,WAAW,YAAY,CAAC,EAAE,SAAS,MAAM,GAAG,MAAM;IACtD,KAAK,CAAC,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACrC,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;AAyED,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,CAAC,CAoCtE"}
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"}
@@ -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) {