@alpacakit/agents 0.1.0-beta.39 → 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/supervisor-runtime.js +27 -1
- 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
|
@@ -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";
|
|
@@ -368,7 +368,28 @@ async function runSupervisorSession(input) {
|
|
|
368
368
|
await runCoordinatorOperation(async (current) => current.acknowledge());
|
|
369
369
|
coordinatorAckMayHaveCommitted = true;
|
|
370
370
|
await input.dependencies.writeShimAck(shimControl);
|
|
371
|
-
|
|
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
|
+
}
|
|
372
393
|
if (shimReadySettlement.status === "rejected") {
|
|
373
394
|
throw shimReadySettlement.reason;
|
|
374
395
|
}
|
|
@@ -944,3 +965,8 @@ async function selfSigkill() {
|
|
|
944
965
|
function randomHex(bytes) {
|
|
945
966
|
return randomBytes(bytes).toString("hex");
|
|
946
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) {
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session driver pieces shared by the built-in hosts: the definition-side
|
|
3
|
+
* capability contract, the long-lived interactive child (spawn, NDJSON
|
|
4
|
+
* lines, EOF-first close), and the turn/event state
|
|
5
|
+
* every Session keeps. Protocol knowledge (what to write, how to read a
|
|
6
|
+
* line) stays in the adapter modules.
|
|
7
|
+
*/
|
|
8
|
+
import { AGENT_ERROR_CODE, AgentError } from "../core/error.js";
|
|
9
|
+
import type { Clock, Exec, ExecExit, Logger } from "../core/ports.js";
|
|
10
|
+
import { type Session, type SessionEvent, type SessionFacts, type TurnOutcome, type TurnResult } from "../core/session.js";
|
|
11
|
+
import type { HostContext } from "../host/context.js";
|
|
12
|
+
/** Resolved (rule 2): what a session adapter gets to open or resume. */
|
|
13
|
+
export type SessionContext = {
|
|
14
|
+
/** Fully layered: baseEnv → options.env. */
|
|
15
|
+
env: Record<string, string>;
|
|
16
|
+
exec: Exec;
|
|
17
|
+
clock: Clock;
|
|
18
|
+
/** Pre-scoped to the session by the kernel. */
|
|
19
|
+
logger: Logger;
|
|
20
|
+
};
|
|
21
|
+
export type ResolvedSessionOpenOptions<Permissions> = {
|
|
22
|
+
workspace: string;
|
|
23
|
+
permissions: Permissions;
|
|
24
|
+
};
|
|
25
|
+
export type ResolvedSessionResumeOptions<Permissions> = ResolvedSessionOpenOptions<Permissions> & {
|
|
26
|
+
/** Codex only: unarchive an archived thread before resuming it. */
|
|
27
|
+
unarchive: boolean;
|
|
28
|
+
};
|
|
29
|
+
/** Definition-side session capability; absent = `Agent.session` is `null`. */
|
|
30
|
+
export type SessionCapability<Permissions> = {
|
|
31
|
+
open(options: ResolvedSessionOpenOptions<Permissions>, ctx: SessionContext): Promise<Session>;
|
|
32
|
+
resume(id: string, options: ResolvedSessionResumeOptions<Permissions>, ctx: SessionContext): Promise<Session>;
|
|
33
|
+
inspect(id: string, ctx: HostContext): Promise<SessionFacts<Permissions> | null>;
|
|
34
|
+
};
|
|
35
|
+
export declare function assertHostSessionId(id: string, agentId: string): void;
|
|
36
|
+
export declare function sessionStateError(agentId: string, reason: string): AgentError<typeof AGENT_ERROR_CODE.invalidInput>;
|
|
37
|
+
export declare function sessionExitedError(agentId: string, exit: ExecExit | null, stderrTail: string): AgentError<typeof AGENT_ERROR_CODE.failed>;
|
|
38
|
+
/**
|
|
39
|
+
* One interactive child held for the life of a Session: stdout is read as
|
|
40
|
+
* NDJSON lines, stdin stays open for incremental writes, and `close()`
|
|
41
|
+
* ends stdin first (both hosts exit on EOF) before escalating to signals.
|
|
42
|
+
*/
|
|
43
|
+
export declare class SessionProcess {
|
|
44
|
+
private readonly process;
|
|
45
|
+
private readonly clock;
|
|
46
|
+
private exitValue;
|
|
47
|
+
private stderrTail;
|
|
48
|
+
private constructor();
|
|
49
|
+
static spawn(input: {
|
|
50
|
+
command: string;
|
|
51
|
+
args: readonly string[];
|
|
52
|
+
cwd: string;
|
|
53
|
+
ctx: SessionContext;
|
|
54
|
+
agentId: string;
|
|
55
|
+
}): Promise<SessionProcess>;
|
|
56
|
+
get exit(): Promise<ExecExit>;
|
|
57
|
+
get exited(): ExecExit | null;
|
|
58
|
+
get stderr(): string;
|
|
59
|
+
writeLine(line: string): void;
|
|
60
|
+
/** Non-empty stdout lines in order; stderr is kept as a tail for errors. */
|
|
61
|
+
lines(): AsyncGenerator<string, void, void>;
|
|
62
|
+
close(): Promise<ExecExit>;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Turn bookkeeping and the event stream. Exactly one turn runs at a time:
|
|
66
|
+
* `send` needs idle, `steer`/`interrupt` need active — both are typed
|
|
67
|
+
* `invalid_input`, never a silent queue.
|
|
68
|
+
*/
|
|
69
|
+
export declare class SessionState {
|
|
70
|
+
private readonly agentId;
|
|
71
|
+
private readonly broadcast;
|
|
72
|
+
private active;
|
|
73
|
+
/** A turn whose start the host has not acknowledged yet (Codex `turn/start` in flight). */
|
|
74
|
+
private starting;
|
|
75
|
+
private ended;
|
|
76
|
+
constructor(agentId: string);
|
|
77
|
+
get events(): AsyncIterable<SessionEvent>;
|
|
78
|
+
get activeTurnId(): string | null;
|
|
79
|
+
get isEnded(): boolean;
|
|
80
|
+
get isStarting(): boolean;
|
|
81
|
+
emit(event: SessionEvent): void;
|
|
82
|
+
/** Record a message for the turn's fallback text and publish it. */
|
|
83
|
+
message(text: string): void;
|
|
84
|
+
requireOpen(): void;
|
|
85
|
+
requireIdle(): void;
|
|
86
|
+
/** Reserve the idle slot while the host is asked to start the turn. */
|
|
87
|
+
markStarting(): void;
|
|
88
|
+
/** The host refused to start the turn; the slot is idle again. */
|
|
89
|
+
clearStarting(): void;
|
|
90
|
+
requireActive(): string;
|
|
91
|
+
beginTurn(turnId: string): Promise<TurnResult>;
|
|
92
|
+
/** `text === null` falls back to the turn's collected messages. */
|
|
93
|
+
endTurn(outcome: TurnOutcome, text: string | null): void;
|
|
94
|
+
/** The process is gone: fail the running turn, publish `exited`, end the stream. */
|
|
95
|
+
end(exit: ExecExit, stderrTail: string): void;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/kernel/session.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,gBAAgB,EAChB,UAAU,EAEX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,KAAK,EACL,IAAI,EACJ,QAAQ,EAER,MAAM,EACP,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,YAAY,EAEjB,KAAK,WAAW,EAChB,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD,wEAAwE;AACxE,MAAM,MAAM,cAAc,GAAG;IAC3B,4CAA4C;IAC5C,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,KAAK,CAAC;IACb,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,0BAA0B,CAAC,WAAW,IAAI;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,4BAA4B,CAAC,WAAW,IAClD,0BAA0B,CAAC,WAAW,CAAC,GAAG;IACxC,mEAAmE;IACnE,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEJ,8EAA8E;AAC9E,MAAM,MAAM,iBAAiB,CAAC,WAAW,IAAI;IAC3C,IAAI,CACF,OAAO,EAAE,0BAA0B,CAAC,WAAW,CAAC,EAChD,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,MAAM,CACJ,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,4BAA4B,CAAC,WAAW,CAAC,EAClD,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,OAAO,CACL,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC;CAC9C,CAAC;AAQF,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAWrE;AAgBD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,UAAU,CAAC,OAAO,gBAAgB,CAAC,YAAY,CAAC,CAQlD;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,QAAQ,GAAG,IAAI,EACrB,UAAU,EAAE,MAAM,GACjB,UAAU,CAAC,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAa5C;AAED;;;;GAIG;AACH,qBAAa,cAAc;IAKvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IALxB,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,UAAU,CAAM;IAExB,OAAO;WAcM,KAAK,CAAC,KAAK,EAAE;QACxB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;QACxB,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,cAAc,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,cAAc,CAAC;IAsB3B,IAAI,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,CAE5B;IAED,IAAI,MAAM,IAAI,QAAQ,GAAG,IAAI,CAE5B;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI7B,4EAA4E;IACrE,KAAK,IAAI,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;IAuBlD,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC;CAM3B;AASD;;;;GAIG;AACH,qBAAa,YAAY;IAUX,OAAO,CAAC,QAAQ,CAAC,OAAO;IATpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAGxB;IACF,OAAO,CAAC,MAAM,CAA2B;IACzC,2FAA2F;IAC3F,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAAS;gBAEO,OAAO,EAAE,MAAM;IAE5C,IAAI,MAAM,IAAI,aAAa,CAAC,YAAY,CAAC,CAExC;IAED,IAAI,YAAY,IAAI,MAAM,GAAG,IAAI,CAEhC;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,IAAI,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAI/B,oEAAoE;IACpE,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK3B,WAAW,IAAI,IAAI;IAMnB,WAAW,IAAI,IAAI;IAUnB,uEAAuE;IACvE,YAAY,IAAI,IAAI;IAIpB,kEAAkE;IAClE,aAAa,IAAI,IAAI;IAIrB,aAAa,IAAI,MAAM;IAQvB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAQ9C,mEAAmE;IACnE,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAkBxD,oFAAoF;IACpF,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;CAuB9C"}
|