@botiverse/oar 0.0.11 → 0.1.0
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 +2 -2
- package/dist/contracts/model-catalog.d.ts +1 -1
- package/dist/contracts/model-catalog.js +1 -1
- package/dist/contracts/provider-auth.d.ts +2 -2
- package/dist/contracts/provider-auth.js +2 -2
- package/dist/contracts/records.d.ts +205 -0
- package/dist/contracts/records.d.ts.map +1 -0
- package/dist/contracts/records.js +8 -0
- package/dist/contracts/records.js.map +1 -0
- package/dist/contracts/session.d.ts +83 -144
- package/dist/contracts/session.d.ts.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/observe/agent-status.d.ts +32 -18
- package/dist/observe/agent-status.d.ts.map +1 -1
- package/dist/observe/agent-status.js +66 -14
- package/dist/observe/agent-status.js.map +1 -1
- package/dist/observe/aggregate-events.d.ts +7 -6
- package/dist/observe/aggregate-events.d.ts.map +1 -1
- package/dist/observe/aggregate-events.js +38 -28
- package/dist/observe/aggregate-events.js.map +1 -1
- package/dist/observe/index.d.ts +4 -1
- package/dist/observe/index.d.ts.map +1 -1
- package/dist/observe/index.js +3 -1
- package/dist/observe/index.js.map +1 -1
- package/dist/observe/observe-agent.d.ts +4 -4
- package/dist/observe/observe-agent.d.ts.map +1 -1
- package/dist/observe/observe-agent.js +3 -3
- package/dist/observe/observe-agent.js.map +1 -1
- package/dist/observe/stall-observer.d.ts +7 -6
- package/dist/observe/stall-observer.d.ts.map +1 -1
- package/dist/observe/stall-observer.js +6 -5
- package/dist/observe/stall-observer.js.map +1 -1
- package/dist/observe/tool-activity.d.ts +2 -2
- package/dist/observe/tool-activity.d.ts.map +1 -1
- package/dist/observe/tool-activity.js +1 -1
- package/dist/observe/tool-activity.js.map +1 -1
- package/dist/observe/turns.d.ts +37 -0
- package/dist/observe/turns.d.ts.map +1 -0
- package/dist/observe/turns.js +70 -0
- package/dist/observe/turns.js.map +1 -0
- package/dist/observe/usage.d.ts +15 -0
- package/dist/observe/usage.d.ts.map +1 -0
- package/dist/observe/usage.js +79 -0
- package/dist/observe/usage.js.map +1 -0
- package/dist/runtimes/claude/account-usage.js +1 -1
- package/dist/runtimes/claude/context-usage.d.ts +1 -1
- package/dist/runtimes/claude/context-usage.js +1 -1
- package/dist/runtimes/claude/projection.d.ts +40 -27
- package/dist/runtimes/claude/projection.d.ts.map +1 -1
- package/dist/runtimes/claude/projection.js +107 -21
- package/dist/runtimes/claude/projection.js.map +1 -1
- package/dist/runtimes/claude/session.d.ts.map +1 -1
- package/dist/runtimes/claude/session.js +119 -87
- package/dist/runtimes/claude/session.js.map +1 -1
- package/dist/runtimes/codex/app-server-client.d.ts +38 -3
- package/dist/runtimes/codex/app-server-client.d.ts.map +1 -1
- package/dist/runtimes/codex/app-server-client.js +62 -15
- package/dist/runtimes/codex/app-server-client.js.map +1 -1
- package/dist/runtimes/codex/projection.d.ts +12 -12
- package/dist/runtimes/codex/projection.d.ts.map +1 -1
- package/dist/runtimes/codex/projection.js +101 -38
- package/dist/runtimes/codex/projection.js.map +1 -1
- package/dist/runtimes/codex/rpc-control.d.ts +31 -0
- package/dist/runtimes/codex/rpc-control.d.ts.map +1 -0
- package/dist/runtimes/codex/rpc-control.js +51 -0
- package/dist/runtimes/codex/rpc-control.js.map +1 -0
- package/dist/runtimes/codex/session.d.ts.map +1 -1
- package/dist/runtimes/codex/session.js +199 -149
- package/dist/runtimes/codex/session.js.map +1 -1
- package/dist/runtimes/grok/session.d.ts +37 -1
- package/dist/runtimes/grok/session.d.ts.map +1 -1
- package/dist/runtimes/grok/session.js +74 -0
- package/dist/runtimes/grok/session.js.map +1 -1
- package/dist/runtimes/kimi/session.d.ts.map +1 -1
- package/dist/runtimes/kimi/session.js +5 -0
- package/dist/runtimes/kimi/session.js.map +1 -1
- package/dist/runtimes/pi/auth.d.ts.map +1 -1
- package/dist/runtimes/pi/auth.js +6 -1
- package/dist/runtimes/pi/auth.js.map +1 -1
- package/dist/runtimes/pi/catalog.d.ts.map +1 -1
- package/dist/runtimes/pi/catalog.js +6 -1
- package/dist/runtimes/pi/catalog.js.map +1 -1
- package/dist/runtimes/pi/http.d.ts +34 -0
- package/dist/runtimes/pi/http.d.ts.map +1 -0
- package/dist/runtimes/pi/http.js +95 -0
- package/dist/runtimes/pi/http.js.map +1 -0
- package/dist/runtimes/pi/list-models.d.ts.map +1 -1
- package/dist/runtimes/pi/list-models.js +10 -3
- package/dist/runtimes/pi/list-models.js.map +1 -1
- package/dist/runtimes/pi/open.d.ts +32 -0
- package/dist/runtimes/pi/open.d.ts.map +1 -0
- package/dist/runtimes/pi/open.js +106 -0
- package/dist/runtimes/pi/open.js.map +1 -0
- package/dist/runtimes/pi/projection.d.ts +27 -25
- package/dist/runtimes/pi/projection.d.ts.map +1 -1
- package/dist/runtimes/pi/projection.js +85 -50
- package/dist/runtimes/pi/projection.js.map +1 -1
- package/dist/runtimes/pi/session.d.ts +1 -22
- package/dist/runtimes/pi/session.d.ts.map +1 -1
- package/dist/runtimes/pi/session.js +178 -184
- package/dist/runtimes/pi/session.js.map +1 -1
- package/dist/shared/acp/client-app.d.ts +23 -0
- package/dist/shared/acp/client-app.d.ts.map +1 -0
- package/dist/shared/acp/client-app.js +55 -0
- package/dist/shared/acp/client-app.js.map +1 -0
- package/dist/shared/acp/model.d.ts +3 -17
- package/dist/shared/acp/model.d.ts.map +1 -1
- package/dist/shared/acp/model.js +3 -14
- package/dist/shared/acp/model.js.map +1 -1
- package/dist/shared/acp/profile.d.ts +32 -7
- package/dist/shared/acp/profile.d.ts.map +1 -1
- package/dist/shared/acp/profile.js +17 -8
- package/dist/shared/acp/profile.js.map +1 -1
- package/dist/shared/acp/projection.d.ts +16 -8
- package/dist/shared/acp/projection.d.ts.map +1 -1
- package/dist/shared/acp/projection.js +51 -32
- package/dist/shared/acp/projection.js.map +1 -1
- package/dist/shared/acp/records.d.ts +46 -0
- package/dist/shared/acp/records.d.ts.map +1 -0
- package/dist/shared/acp/records.js +125 -0
- package/dist/shared/acp/records.js.map +1 -0
- package/dist/shared/acp/session.d.ts.map +1 -1
- package/dist/shared/acp/session.js +98 -224
- package/dist/shared/acp/session.js.map +1 -1
- package/dist/shared/acp/terminal.d.ts +1 -3
- package/dist/shared/acp/terminal.d.ts.map +1 -1
- package/dist/shared/acp/terminal.js +1 -21
- package/dist/shared/acp/terminal.js.map +1 -1
- package/dist/shared/acp/turns.d.ts +45 -0
- package/dist/shared/acp/turns.d.ts.map +1 -0
- package/dist/shared/acp/turns.js +160 -0
- package/dist/shared/acp/turns.js.map +1 -0
- package/dist/shared/acp/usage-wait.d.ts +6 -6
- package/dist/shared/acp/usage-wait.d.ts.map +1 -1
- package/dist/shared/acp/usage-wait.js +2 -2
- package/dist/shared/acp/usage-wait.js.map +1 -1
- package/dist/shared/failure-class.d.ts +1 -1
- package/dist/shared/failure-class.js +2 -2
- package/dist/shared/failure-class.js.map +1 -1
- package/dist/shared/seal-session.d.ts +5 -3
- package/dist/shared/seal-session.d.ts.map +1 -1
- package/dist/shared/seal-session.js +24 -16
- package/dist/shared/seal-session.js.map +1 -1
- package/dist/shared/session-kernel.d.ts +68 -18
- package/dist/shared/session-kernel.d.ts.map +1 -1
- package/dist/shared/session-kernel.js +82 -42
- package/dist/shared/session-kernel.js.map +1 -1
- package/dist/voyage.d.ts +4 -7
- package/dist/voyage.d.ts.map +1 -1
- package/dist/voyage.js +14 -19
- package/dist/voyage.js.map +1 -1
- package/package.json +4 -3
- package/dist/runtimes/codex/context-usage.d.ts +0 -10
- package/dist/runtimes/codex/context-usage.d.ts.map +0 -1
- package/dist/runtimes/codex/context-usage.js +0 -16
- package/dist/runtimes/codex/context-usage.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../../src/shared/acp/terminal.ts"],"names":[],"mappings":"AAAA,sHAAsH;AACtH,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../../src/shared/acp/terminal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { RequestRecord, ResponseBody, TurnOutcome } from "../../contracts/session.js";
|
|
2
|
+
import type { JsonRecord } from "../json.js";
|
|
3
|
+
import type { SessionKernel } from "../session-kernel.js";
|
|
4
|
+
import { type AcpSessionProfile } from "./profile.js";
|
|
5
|
+
import { type AcpProcess } from "./process.js";
|
|
6
|
+
import type { UsageUpdateGate } from "./usage-wait.js";
|
|
7
|
+
/**
|
|
8
|
+
* The turn machinery: ≤1 active turn, each `session/prompt` RPC of it, the
|
|
9
|
+
* host-held queue, cancel with a kill fallback. The RPC ANSWER is the
|
|
10
|
+
* runtime's own turn end and is recorded as an event with a turn_ended view;
|
|
11
|
+
* a rejected RPC is likewise the runtime's word (a prompt-error event). The
|
|
12
|
+
* process dying is not; that is the `exited` response the session records
|
|
13
|
+
* from its exit observer. One turn may span several prompt RPCs (grok's
|
|
14
|
+
* send-now steer): each answer is its own event; the turn_ended view rides
|
|
15
|
+
* the answer that closes the turn, carrying the LATEST request's outcome.
|
|
16
|
+
*/
|
|
17
|
+
export interface ActiveTurn {
|
|
18
|
+
/** The prompt request that opened this turn; null for a spontaneous (queue-drained) turn. */
|
|
19
|
+
readonly request: RequestRecord | null;
|
|
20
|
+
readonly outcomes: Map<number, TurnOutcome>;
|
|
21
|
+
readonly pending: Set<number>;
|
|
22
|
+
abortRequested: boolean;
|
|
23
|
+
latestRequest: number;
|
|
24
|
+
fallback: NodeJS.Timeout | null;
|
|
25
|
+
}
|
|
26
|
+
export interface AcpTurns {
|
|
27
|
+
active(): ActiveTurn | null;
|
|
28
|
+
/** Open a turn with one prompt RPC; rejected when the process is gone. */
|
|
29
|
+
begin(request: RequestRecord | null, input: string): ResponseBody;
|
|
30
|
+
/** Another prompt RPC inside the active turn (the profile's steer params); rejected when the process is gone. */
|
|
31
|
+
steer(state: ActiveTurn, input: string, extraParams: JsonRecord): Promise<ResponseBody>;
|
|
32
|
+
/** session/cancel, then a bounded wait after which the process is killed. */
|
|
33
|
+
abort(state: ActiveTurn): Promise<ResponseBody>;
|
|
34
|
+
/** Hold input for the next turn, drained when the active one closes; rejected when the process is gone. */
|
|
35
|
+
hold(input: string): Promise<ResponseBody>;
|
|
36
|
+
/** The process is gone: close the active turn (its end is the exited response) and drop held input. */
|
|
37
|
+
onExit(): void;
|
|
38
|
+
}
|
|
39
|
+
export declare function createAcpTurns(deps: {
|
|
40
|
+
readonly kernel: SessionKernel;
|
|
41
|
+
readonly runtime: AcpProcess;
|
|
42
|
+
readonly profile: AcpSessionProfile;
|
|
43
|
+
readonly usageGate: UsageUpdateGate;
|
|
44
|
+
}): AcpTurns;
|
|
45
|
+
//# sourceMappingURL=turns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turns.d.ts","sourceRoot":"","sources":["../../../src/shared/acp/turns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,aAAa,EACb,YAAY,EAEZ,WAAW,EACZ,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAa,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAW,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAMxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAU;IACzB,6FAA6F;IAC7F,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,IAAI,UAAU,GAAG,IAAI,CAAC;IAC5B,0EAA0E;IAC1E,KAAK,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC;IAClE,iHAAiH;IACjH,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACxF,6EAA6E;IAC7E,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAChD,2GAA2G;IAC3G,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3C,uGAAuG;IACvG,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE;IACnC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;CACrC,GAAG,QAAQ,CA+JX"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { AcpError, acpProcessExitedError } from "./errors.js";
|
|
2
|
+
import { promptAcp } from "./profile.js";
|
|
3
|
+
import { methods } from "./process.js";
|
|
4
|
+
import { acpErrorNative, acpFailureOutcome, defaultAcpPromptOutcome, } from "./projection.js";
|
|
5
|
+
export function createAcpTurns(deps) {
|
|
6
|
+
const { kernel, runtime, profile, usageGate } = deps;
|
|
7
|
+
const rootId = kernel.sessionId;
|
|
8
|
+
const held = [];
|
|
9
|
+
let active = null;
|
|
10
|
+
let nextRequest = 0;
|
|
11
|
+
// Running session total of the per-prompt ledgers (profile.promptTokenUsage).
|
|
12
|
+
let billed = { input: 0, output: 0 };
|
|
13
|
+
const closeTurn = (state) => {
|
|
14
|
+
if (state.fallback !== null) {
|
|
15
|
+
clearTimeout(state.fallback);
|
|
16
|
+
state.fallback = null;
|
|
17
|
+
}
|
|
18
|
+
if (active === state) {
|
|
19
|
+
active = null;
|
|
20
|
+
}
|
|
21
|
+
queueMicrotask(drainHeld);
|
|
22
|
+
};
|
|
23
|
+
const finishRequest = (state, requestNumber, frame, outcome) => {
|
|
24
|
+
state.pending.delete(requestNumber);
|
|
25
|
+
state.outcomes.set(requestNumber, outcome);
|
|
26
|
+
const closes = state.pending.size === 0;
|
|
27
|
+
const views = [];
|
|
28
|
+
if (closes) {
|
|
29
|
+
views.push({ kind: "turn_ended", outcome: state.outcomes.get(state.latestRequest) ?? outcome });
|
|
30
|
+
}
|
|
31
|
+
if (frame.context !== null) {
|
|
32
|
+
views.push(frame.context);
|
|
33
|
+
}
|
|
34
|
+
kernel.event({ type: frame.type, native: frame.native, views });
|
|
35
|
+
if (closes) {
|
|
36
|
+
closeTurn(state);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
const startVendorPrompt = (state, input, extraParams = {}) => {
|
|
40
|
+
nextRequest += 1;
|
|
41
|
+
const requestNumber = nextRequest;
|
|
42
|
+
state.latestRequest = requestNumber;
|
|
43
|
+
state.pending.add(requestNumber);
|
|
44
|
+
void (async () => {
|
|
45
|
+
try {
|
|
46
|
+
usageGate.arm();
|
|
47
|
+
const result = await promptAcp(runtime, rootId, input, extraParams);
|
|
48
|
+
// Deliberate ordering: the answer's event waits (bounded) for the
|
|
49
|
+
// usage_update kimi pushes AFTER answering, so the usage record
|
|
50
|
+
// precedes the turn end and contextUsage() at turn_ended is this
|
|
51
|
+
// turn's own value.
|
|
52
|
+
await usageGate.settleAfterPrompt(profile, state.abortRequested);
|
|
53
|
+
const context = profile.promptContextUsage?.(result) ?? null;
|
|
54
|
+
const prompted = profile.promptTokenUsage?.(result) ?? null;
|
|
55
|
+
if (prompted !== null) {
|
|
56
|
+
billed = { input: billed.input + prompted.input, output: billed.output + prompted.output };
|
|
57
|
+
}
|
|
58
|
+
finishRequest(state, requestNumber, {
|
|
59
|
+
type: methods.agent.session.prompt,
|
|
60
|
+
native: result,
|
|
61
|
+
context: context === null && prompted === null ? null : {
|
|
62
|
+
kind: "usage",
|
|
63
|
+
usage: { ...(context === null ? {} : { context }), ...(prompted === null ? {} : { tokens: billed }) },
|
|
64
|
+
},
|
|
65
|
+
}, profile.promptOutcome?.(result) ?? defaultAcpPromptOutcome(result));
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
if (error instanceof AcpError && error.kind === "process_exited") {
|
|
69
|
+
// Not the runtime's word: the exit observer records the `exited`
|
|
70
|
+
// response, which is the turn's end.
|
|
71
|
+
state.pending.delete(requestNumber);
|
|
72
|
+
closeTurn(state);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
const outcome = state.abortRequested ? { kind: "aborted" } : acpFailureOutcome(error);
|
|
76
|
+
finishRequest(state, requestNumber, {
|
|
77
|
+
type: `${methods.agent.session.prompt}/error`,
|
|
78
|
+
native: acpErrorNative(error),
|
|
79
|
+
context: null,
|
|
80
|
+
}, outcome);
|
|
81
|
+
}
|
|
82
|
+
})();
|
|
83
|
+
};
|
|
84
|
+
const gone = () => ({ kind: "rejected", reason: acpProcessExitedError(runtime.exitCode).message });
|
|
85
|
+
const begin = (request, input) => {
|
|
86
|
+
if (runtime.closed) {
|
|
87
|
+
return gone();
|
|
88
|
+
}
|
|
89
|
+
const state = {
|
|
90
|
+
request,
|
|
91
|
+
outcomes: new Map(),
|
|
92
|
+
pending: new Set(),
|
|
93
|
+
abortRequested: false,
|
|
94
|
+
latestRequest: 0,
|
|
95
|
+
fallback: null,
|
|
96
|
+
};
|
|
97
|
+
active = state;
|
|
98
|
+
startVendorPrompt(state, input);
|
|
99
|
+
return { kind: "accepted" };
|
|
100
|
+
};
|
|
101
|
+
function drainHeld() {
|
|
102
|
+
// Held input is dropped once the stream says the runtime is unreachable
|
|
103
|
+
// (an `exited` response or a `dispose` request), not by an adapter flag.
|
|
104
|
+
if (kernel.unreachable() !== null || active !== null || runtime.closed) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
const input = held.shift();
|
|
108
|
+
if (input !== undefined) {
|
|
109
|
+
begin(null, input);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return {
|
|
113
|
+
active: () => active,
|
|
114
|
+
begin,
|
|
115
|
+
async steer(state, input, extraParams) {
|
|
116
|
+
await runtime.spawned;
|
|
117
|
+
if (runtime.closed) {
|
|
118
|
+
return gone();
|
|
119
|
+
}
|
|
120
|
+
startVendorPrompt(state, input, extraParams);
|
|
121
|
+
return { kind: "accepted" };
|
|
122
|
+
},
|
|
123
|
+
async abort(state) {
|
|
124
|
+
if (!state.abortRequested) {
|
|
125
|
+
state.abortRequested = true;
|
|
126
|
+
try {
|
|
127
|
+
await runtime.connection.agent.notify(methods.agent.session.cancel, { sessionId: rootId });
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
return { kind: "rejected", reason: error instanceof Error ? error.message : String(error) };
|
|
131
|
+
}
|
|
132
|
+
// A runtime that never answers the cancelled prompt is killed; the
|
|
133
|
+
// exit then shows up as the `exited` response, the turn's end.
|
|
134
|
+
state.fallback = setTimeout(() => {
|
|
135
|
+
if (active === state) {
|
|
136
|
+
runtime.kill();
|
|
137
|
+
}
|
|
138
|
+
}, profile.abortTimeoutMs ?? 10_000);
|
|
139
|
+
state.fallback.unref();
|
|
140
|
+
}
|
|
141
|
+
return { kind: "accepted" };
|
|
142
|
+
},
|
|
143
|
+
async hold(input) {
|
|
144
|
+
await runtime.spawned;
|
|
145
|
+
if (runtime.closed) {
|
|
146
|
+
return gone();
|
|
147
|
+
}
|
|
148
|
+
held.push(input);
|
|
149
|
+
queueMicrotask(drainHeld);
|
|
150
|
+
return { kind: "accepted" };
|
|
151
|
+
},
|
|
152
|
+
onExit() {
|
|
153
|
+
if (active !== null) {
|
|
154
|
+
closeTurn(active);
|
|
155
|
+
}
|
|
156
|
+
held.splice(0);
|
|
157
|
+
},
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=turns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turns.js","sourceRoot":"","sources":["../../../src/shared/acp/turns.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,SAAS,EAA0B,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,OAAO,EAAmB,MAAM,cAAc,CAAC;AACxD,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AAqCzB,MAAM,UAAU,cAAc,CAAC,IAK9B;IACC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IACrD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;IAChC,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,MAAM,GAAsB,IAAI,CAAC;IACrC,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,8EAA8E;IAC9E,IAAI,MAAM,GAAgB,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IAElD,MAAM,SAAS,GAAG,CAAC,KAAiB,EAAQ,EAAE;QAC5C,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC5B,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC7B,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;QACxB,CAAC;QACD,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACrB,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;QACD,cAAc,CAAC,SAAS,CAAC,CAAC;IAC5B,CAAC,CAAC;IACF,MAAM,aAAa,GAAG,CACpB,KAAiB,EACjB,aAAqB,EACrB,KAA8F,EAC9F,OAAoB,EACd,EAAE;QACR,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACpC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC;QACxC,MAAM,KAAK,GAAgB,EAAE,CAAC;QAC9B,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;QAClG,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,IAAI,MAAM,EAAE,CAAC;YACX,SAAS,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;IACF,MAAM,iBAAiB,GAAG,CAAC,KAAiB,EAAE,KAAa,EAAE,cAA0B,EAAE,EAAQ,EAAE;QACjG,WAAW,IAAI,CAAC,CAAC;QACjB,MAAM,aAAa,GAAG,WAAW,CAAC;QAClC,KAAK,CAAC,aAAa,GAAG,aAAa,CAAC;QACpC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACjC,KAAK,CAAC,KAAK,IAAmB,EAAE;YAC9B,IAAI,CAAC;gBACH,SAAS,CAAC,GAAG,EAAE,CAAC;gBAChB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;gBACpE,kEAAkE;gBAClE,gEAAgE;gBAChE,iEAAiE;gBACjE,oBAAoB;gBACpB,MAAM,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;gBACjE,MAAM,OAAO,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;gBAC7D,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;gBAC5D,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;oBACtB,MAAM,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAC7F,CAAC;gBACD,aAAa,CAAC,KAAK,EAAE,aAAa,EAAE;oBAClC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM;oBAClC,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,OAAO,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;wBACtD,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,EAAE,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE;qBACtG;iBACF,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;YACzE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;oBACjE,iEAAiE;oBACjE,qCAAqC;oBACrC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;oBACpC,SAAS,CAAC,KAAK,CAAC,CAAC;oBACjB,OAAO;gBACT,CAAC;gBACD,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAkB,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBAC/F,aAAa,CAAC,KAAK,EAAE,aAAa,EAAE;oBAClC,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,QAAQ;oBAC7C,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC;oBAC7B,OAAO,EAAE,IAAI;iBACd,EAAE,OAAO,CAAC,CAAC;YACd,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,GAAiB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACjH,MAAM,KAAK,GAAG,CAAC,OAA6B,EAAE,KAAa,EAAgB,EAAE;QAC3E,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QACD,MAAM,KAAK,GAAe;YACxB,OAAO;YACP,QAAQ,EAAE,IAAI,GAAG,EAAE;YACnB,OAAO,EAAE,IAAI,GAAG,EAAE;YAClB,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,CAAC;YAChB,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,MAAM,GAAG,KAAK,CAAC;QACf,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAChC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAC9B,CAAC,CAAC;IACF,SAAS,SAAS;QAChB,wEAAwE;QACxE,yEAAyE;QACzE,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACvE,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,OAAO;QACL,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM;QACpB,KAAK;QACL,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW;YACnC,MAAM,OAAO,CAAC,OAAO,CAAC;YACtB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC;YACD,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;YAC7C,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAC9B,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,KAAK;YACf,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC1B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,IAAI,CAAC;oBACH,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC7F,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9F,CAAC;gBACD,mEAAmE;gBACnE,+DAA+D;gBAC/D,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC/B,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;wBACrB,OAAO,CAAC,IAAI,EAAE,CAAC;oBACjB,CAAC;gBACH,CAAC,EAAE,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC,CAAC;gBACrC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACzB,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAC9B,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,KAAK;YACd,MAAM,OAAO,CAAC,OAAO,CAAC;YACtB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjB,cAAc,CAAC,SAAS,CAAC,CAAC;YAC1B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAC9B,CAAC;QACD,MAAM;YACJ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,SAAS,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { ContextUsage } from "../../contracts/session.js";
|
|
2
1
|
import type { AcpSessionProfile } from "./profile.js";
|
|
3
2
|
/**
|
|
4
3
|
* Bridges the gap between an agent's `session/prompt` answer and the
|
|
@@ -9,15 +8,16 @@ import type { AcpSessionProfile } from "./profile.js";
|
|
|
9
8
|
* `void this.emitUsageUpdate()` (lines 923-945), which awaits
|
|
10
9
|
* `kosong.listModels()` and `agent.getContext()` before notifying, and returns
|
|
11
10
|
* without a push when the catalog has no `max_context_size` for the current
|
|
12
|
-
* model.
|
|
13
|
-
* `contextUsage()` at the PREVIOUS turn's value at `turn_ended`, and
|
|
14
|
-
* no guarantee an update ever comes
|
|
11
|
+
* model. Recording the answer's turn_ended event on the response alone therefore
|
|
12
|
+
* leaves `contextUsage()` at the PREVIOUS turn's value at `turn_ended`, and
|
|
13
|
+
* there is no guarantee an update ever comes; hence a bounded wait, not a
|
|
14
|
+
* barrier.
|
|
15
15
|
*/
|
|
16
16
|
export interface UsageUpdateGate {
|
|
17
17
|
/** Forget any update seen so far; call before sending the prompt. */
|
|
18
18
|
readonly arm: () => void;
|
|
19
|
-
/** Feed every
|
|
20
|
-
readonly observe: (
|
|
19
|
+
/** Feed every recorded root update; only one that carried a usage view (its seq) counts as arrival. */
|
|
20
|
+
readonly observe: (usageSeq: number | undefined) => void;
|
|
21
21
|
/**
|
|
22
22
|
* After the prompt response: resolve once a usage_update arrived since
|
|
23
23
|
* `arm()`, or after the profile's bound. Immediate when the profile does not
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-wait.d.ts","sourceRoot":"","sources":["../../../src/shared/acp/usage-wait.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"usage-wait.d.ts","sourceRoot":"","sources":["../../../src/shared/acp/usage-wait.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,eAAe;IAC9B,qEAAqE;IACrE,QAAQ,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC;IACzB,uGAAuG;IACvG,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IACzD;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,EAAE,CAC1B,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,wBAAwB,GAAG,sBAAsB,CAAC,EACnF,QAAQ,EAAE,OAAO,KACd,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB;AAED,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAEnD,wBAAgB,qBAAqB,IAAI,eAAe,CA8BvD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-wait.js","sourceRoot":"","sources":["../../../src/shared/acp/usage-wait.ts"],"names":[],"mappings":"AAgCA,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAEnD,MAAM,UAAU,qBAAqB;IACnC,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,OAAO,GAAwB,IAAI,CAAC;IACxC,OAAO;QACL,GAAG,EAAE,GAAS,EAAE;YACd,IAAI,GAAG,KAAK,CAAC;QACf,CAAC;QACD,OAAO,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"usage-wait.js","sourceRoot":"","sources":["../../../src/shared/acp/usage-wait.ts"],"names":[],"mappings":"AAgCA,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAEnD,MAAM,UAAU,qBAAqB;IACnC,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,OAAO,GAAwB,IAAI,CAAC;IACxC,OAAO;QACL,GAAG,EAAE,GAAS,EAAE;YACd,IAAI,GAAG,KAAK,CAAC;QACf,CAAC;QACD,OAAO,EAAE,CAAC,QAAQ,EAAQ,EAAE;YAC1B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,OAAO;YACT,CAAC;YACD,IAAI,GAAG,IAAI,CAAC;YACZ,OAAO,EAAE,EAAE,CAAC;QACd,CAAC;QACD,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAiB,EAAE;YAC5D,IAAI,OAAO,CAAC,sBAAsB,KAAK,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;gBAChE,OAAO;YACT,CAAC;YACD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,aAAa,EAAQ,CAAC;YAC3D,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,oBAAoB,IAAI,+BAA+B,CAAC,CAAC;YACnG,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,OAAO,GAAG,OAAO,CAAC;YAClB,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC;YAChB,CAAC;oBAAS,CAAC;gBACT,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { FailureClass } from "../contracts/session.js";
|
|
2
2
|
/**
|
|
3
3
|
* Best-effort classification of vendor error prose. The patterns are pinned
|
|
4
|
-
* by the vendor snapshot tests
|
|
4
|
+
* by the vendor snapshot tests: when a runtime changes its wording, the
|
|
5
5
|
* snapshot moves and this table gets a conscious update.
|
|
6
6
|
*/
|
|
7
7
|
export declare function classifyFailure(reason: string): FailureClass;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Best-effort classification of vendor error prose. The patterns are pinned
|
|
3
|
-
* by the vendor snapshot tests
|
|
3
|
+
* by the vendor snapshot tests: when a runtime changes its wording, the
|
|
4
4
|
* snapshot moves and this table gets a conscious update.
|
|
5
5
|
*/
|
|
6
6
|
export function classifyFailure(reason) {
|
|
@@ -10,7 +10,7 @@ export function classifyFailure(reason) {
|
|
|
10
10
|
if (/\b429\b|rate.?limit|quota|usage limit/iu.test(reason)) {
|
|
11
11
|
return "quota";
|
|
12
12
|
}
|
|
13
|
-
if (/\b400\b|invalid_request/iu.test(reason)) {
|
|
13
|
+
if (/\b400\b|invalid_request|issue with the selected model|model .* (?:does not|doesn't|may not) exist|unknown model|invalid model/iu.test(reason)) {
|
|
14
14
|
return "invalid_request";
|
|
15
15
|
}
|
|
16
16
|
if (/\b529\b|\b503\b|overloaded/iu.test(reason)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"failure-class.js","sourceRoot":"","sources":["../../src/shared/failure-class.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,IAAI,kFAAkF,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACpG,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,yCAAyC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3D,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,
|
|
1
|
+
{"version":3,"file":"failure-class.js","sourceRoot":"","sources":["../../src/shared/failure-class.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,IAAI,kFAAkF,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACpG,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,yCAAyC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3D,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,iIAAiI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACnJ,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IACD,IAAI,8BAA8B,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAChD,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,IAAI,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACrC,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { AdapterSession, Session } from "../contracts/session.js";
|
|
2
2
|
/**
|
|
3
|
-
* Derive the API face of a Session from what the adapter built
|
|
4
|
-
*
|
|
5
|
-
*
|
|
3
|
+
* Derive the API face of a Session from what the adapter built: the stream
|
|
4
|
+
* folds (model / usage / contextUsage are projections over `records()`, never
|
|
5
|
+
* adapter-held snapshots) and the steer-or-queue policy. Method-style so
|
|
6
|
+
* consumers discover the surfaces in autocomplete; one implementation instead
|
|
7
|
+
* of one per adapter.
|
|
6
8
|
*/
|
|
7
9
|
export declare function sealSession(adapterSession: AdapterSession): Session;
|
|
8
10
|
//# sourceMappingURL=seal-session.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seal-session.d.ts","sourceRoot":"","sources":["../../src/shared/seal-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,OAAO,
|
|
1
|
+
{"version":3,"file":"seal-session.d.ts","sourceRoot":"","sources":["../../src/shared/seal-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,OAAO,EAER,MAAM,yBAAyB,CAAC;AAGjC;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAsBnE"}
|
|
@@ -1,24 +1,32 @@
|
|
|
1
|
+
import { contextUsageOf, modelOf, usageOf } from "../observe/usage.js";
|
|
1
2
|
/**
|
|
2
|
-
* Derive the API face of a Session from what the adapter built
|
|
3
|
-
*
|
|
4
|
-
*
|
|
3
|
+
* Derive the API face of a Session from what the adapter built: the stream
|
|
4
|
+
* folds (model / usage / contextUsage are projections over `records()`, never
|
|
5
|
+
* adapter-held snapshots) and the steer-or-queue policy. Method-style so
|
|
6
|
+
* consumers discover the surfaces in autocomplete; one implementation instead
|
|
7
|
+
* of one per adapter.
|
|
5
8
|
*/
|
|
6
9
|
export function sealSession(adapterSession) {
|
|
7
|
-
const steerOrQueue = async (
|
|
8
|
-
|
|
9
|
-
if (
|
|
10
|
-
|
|
11
|
-
if (steered.kind === "accepted") {
|
|
12
|
-
return { landed: "steered" };
|
|
13
|
-
}
|
|
14
|
-
({ reason } = steered);
|
|
10
|
+
const steerOrQueue = async (input) => {
|
|
11
|
+
const steered = await adapterSession.steer(input);
|
|
12
|
+
if (steered.response.body.kind === "accepted") {
|
|
13
|
+
return { landed: "steered", result: steered };
|
|
15
14
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
return { landed: "
|
|
15
|
+
const reason = steered.response.body.kind === "rejected" ? steered.response.body.reason : "runtime cannot steer";
|
|
16
|
+
if (adapterSession.capabilities.queue === null) {
|
|
17
|
+
return { landed: "rejected", reason, result: steered };
|
|
19
18
|
}
|
|
20
|
-
|
|
19
|
+
const queued = await adapterSession.queue(input);
|
|
20
|
+
return queued.response.body.kind === "accepted"
|
|
21
|
+
? { landed: "queued", result: queued }
|
|
22
|
+
: { landed: "rejected", reason: queued.response.body.kind === "rejected" ? queued.response.body.reason : reason, result: queued };
|
|
23
|
+
};
|
|
24
|
+
return {
|
|
25
|
+
...adapterSession,
|
|
26
|
+
model: () => modelOf(adapterSession.records(), adapterSession.id),
|
|
27
|
+
usage: () => usageOf(adapterSession.records(), adapterSession.id),
|
|
28
|
+
contextUsage: () => contextUsageOf(adapterSession.records(), adapterSession.id),
|
|
29
|
+
steerOrQueue,
|
|
21
30
|
};
|
|
22
|
-
return { ...adapterSession, steerOrQueue };
|
|
23
31
|
}
|
|
24
32
|
//# sourceMappingURL=seal-session.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seal-session.js","sourceRoot":"","sources":["../../src/shared/seal-session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"seal-session.js","sourceRoot":"","sources":["../../src/shared/seal-session.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,cAA8B;IACxD,MAAM,YAAY,GAAG,KAAK,EAAE,KAAa,EAA+B,EAAE;QACxE,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC9C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QAChD,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC;QACjH,IAAI,cAAc,CAAC,YAAY,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YAC/C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QACzD,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjD,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU;YAC7C,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE;YACtC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACtI,CAAC,CAAC;IACF,OAAO;QACL,GAAG,cAAc;QACjB,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,EAAE,CAAC;QACjE,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,EAAE,CAAC;QACjE,YAAY,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,EAAE,CAAC;QAC/E,YAAY;KACb,CAAC;AACJ,CAAC"}
|
|
@@ -1,25 +1,75 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ControlResult, Cursor, EventBody, EventRecord, RequestBody, RequestDirection, RequestRecord, ResponseBody, ResponseRecord, SessionEdge, SessionGraph, SessionObserver, SessionRecord, Unsubscribe } from "../contracts/session.js";
|
|
2
|
+
/** Where a record sits: another session id for derived children, a sub-agent path, a runtime-native span id. */
|
|
3
|
+
export interface RecordAt {
|
|
4
|
+
readonly sessionId?: string;
|
|
5
|
+
readonly agentPath?: readonly string[];
|
|
6
|
+
readonly spanId?: string;
|
|
7
|
+
}
|
|
2
8
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
9
|
+
* The one record stream of a session, as every adapter builds it: the
|
|
10
|
+
* implementation of the contract in `contracts/records.ts` and
|
|
11
|
+
* `contracts/session.ts` (semantics: `docs/spec/record-stream.md`,
|
|
12
|
+
* `docs/spec/attribution.md`, `docs/spec/session-graph-and-cursor.md`).
|
|
13
|
+
*
|
|
14
|
+
* What is shared here and never re-implemented per adapter:
|
|
15
|
+
* - the envelope: dense monotonic `seq`, `receivedAt`, and attribution
|
|
16
|
+
* (`sessionId` / `agentPath` / `spanId`) from `RecordAt`
|
|
17
|
+
* (attribution.md, "The record envelope");
|
|
18
|
+
* - the retained log behind `records()` and the cursor: `subscribe()` with
|
|
19
|
+
* a cursor replays every retained record after `afterSeq`, then continues
|
|
20
|
+
* live (session-graph-and-cursor.md, "The resumable cursor");
|
|
21
|
+
* - synchronous, never-awaited observer fan-out that swallows observer
|
|
22
|
+
* errors: observers are a side-tap and can never touch the run;
|
|
23
|
+
* - the session graph of true sessions (`node()` / `link()` / `graph()`;
|
|
24
|
+
* session-graph-and-cursor.md, "The session graph");
|
|
25
|
+
* - the control shape: `control()` records a `toRuntime` request, lets the
|
|
26
|
+
* adapter decide, and records the accept/reject response; and the
|
|
27
|
+
* reachability rule: once the stream holds an `exited` response or a
|
|
28
|
+
* `dispose` request, control is rejected here without consulting the
|
|
29
|
+
* adapter (record-stream.md, "Reachability is read off the stream").
|
|
30
|
+
*
|
|
31
|
+
* What is deliberately NOT here: any gate on facts. Nothing in the kernel
|
|
32
|
+
* decides whether a runtime frame may enter the stream; control never
|
|
33
|
+
* prunes facts (record-stream.md, "The rules"). The single-active-turn rule
|
|
34
|
+
* is the adapter's control decision and shows up as a rejected prompt
|
|
35
|
+
* response, never as a dropped event. Adapters keep only runtime-specific
|
|
36
|
+
* pumping (frame → `event()`) and control decisions (busy, not_steerable).
|
|
7
37
|
*/
|
|
8
38
|
export interface SessionKernel {
|
|
9
39
|
readonly sessionId: string;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
40
|
+
/** Append the runtime's frame. Returns the stamped record. */
|
|
41
|
+
event(body: EventBody, at?: RecordAt): EventRecord;
|
|
42
|
+
/** Append a request; `id` defaults to a fresh UUID (runtime-issued ids for `toApp` requests keep their own). */
|
|
43
|
+
request(direction: RequestDirection, body: RequestBody, at?: RecordAt & {
|
|
44
|
+
readonly id?: string;
|
|
45
|
+
}): RequestRecord;
|
|
46
|
+
/** Append a response pointing at `requestId`. */
|
|
47
|
+
respond(requestId: string, body: ResponseBody, at?: RecordAt): ResponseRecord;
|
|
48
|
+
/**
|
|
49
|
+
* A `toRuntime` control action: record the request, decide, record the
|
|
50
|
+
* response. Exceptions from `decide` become a rejected response carrying the
|
|
51
|
+
* message. When the stream already says the runtime is unreachable (see
|
|
52
|
+
* `unreachable()`), the request is rejected without consulting `decide`.
|
|
53
|
+
*/
|
|
54
|
+
control(body: RequestBody, decide: (request: RequestRecord) => ResponseBody | Promise<ResponseBody>, at?: RecordAt): Promise<ControlResult>;
|
|
55
|
+
/**
|
|
56
|
+
* Why a control cannot reach the runtime any more, derived from the stream
|
|
57
|
+
* itself: an `exited` response has been recorded (the runtime is gone) or a
|
|
58
|
+
* `dispose` request has (the session is being released). Null while the
|
|
59
|
+
* runtime is reachable. Adapters that record control outside `control()`
|
|
60
|
+
* apply it themselves; adapter-held liveness flags are not needed.
|
|
61
|
+
*/
|
|
62
|
+
unreachable(): {
|
|
63
|
+
readonly kind: "rejected";
|
|
64
|
+
readonly reason: string;
|
|
65
|
+
} | null;
|
|
66
|
+
subscribe(observer: SessionObserver, cursor?: Cursor): Unsubscribe;
|
|
67
|
+
records(): readonly SessionRecord[];
|
|
68
|
+
graph(): SessionGraph;
|
|
69
|
+
/** Add a derived session and the edge that explains it; idempotent per (parent, child, via). */
|
|
70
|
+
link(edge: SessionEdge): void;
|
|
71
|
+
/** Add a session node whose lineage is not (yet) known: an id seen on the wire without an explaining edge. Never fabricate the edge. */
|
|
72
|
+
node(id: string): void;
|
|
23
73
|
}
|
|
24
74
|
export declare function createSessionKernel(sessionId?: string): SessionKernel;
|
|
25
75
|
//# sourceMappingURL=session-kernel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-kernel.d.ts","sourceRoot":"","sources":["../../src/shared/session-kernel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,
|
|
1
|
+
{"version":3,"file":"session-kernel.d.ts","sourceRoot":"","sources":["../../src/shared/session-kernel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,MAAM,EACN,SAAS,EACT,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,cAAc,EACd,WAAW,EACX,YAAY,EACZ,eAAe,EACf,aAAa,EACb,WAAW,EACZ,MAAM,yBAAyB,CAAC;AAEjC,gHAAgH;AAChH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,8DAA8D;IAC9D,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;IACnD,gHAAgH;IAChH,OAAO,CAAC,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG;QAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,aAAa,CAAC;IACjH,iDAAiD;IACjD,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,cAAc,CAAC;IAC9E;;;;;OAKG;IACH,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5I;;;;;;OAMG;IACH,WAAW,IAAI;QAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7E,SAAS,CAAC,QAAQ,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IACnE,OAAO,IAAI,SAAS,aAAa,EAAE,CAAC;IACpC,KAAK,IAAI,YAAY,CAAC;IACtB,gGAAgG;IAChG,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IAC9B,wIAAwI;IACxI,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAqBD,wBAAgB,mBAAmB,CAAC,SAAS,GAAE,MAAqB,GAAG,aAAa,CAgGnF"}
|