@botiverse/oar 0.0.11 → 0.1.1

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 (159) hide show
  1. package/README.md +2 -2
  2. package/dist/contracts/model-catalog.d.ts +1 -1
  3. package/dist/contracts/model-catalog.js +1 -1
  4. package/dist/contracts/provider-auth.d.ts +2 -2
  5. package/dist/contracts/provider-auth.js +2 -2
  6. package/dist/contracts/records.d.ts +214 -0
  7. package/dist/contracts/records.d.ts.map +1 -0
  8. package/dist/contracts/records.js +8 -0
  9. package/dist/contracts/records.js.map +1 -0
  10. package/dist/contracts/session.d.ts +93 -144
  11. package/dist/contracts/session.d.ts.map +1 -1
  12. package/dist/index.d.ts +6 -3
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +3 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/observe/agent-status.d.ts +32 -18
  17. package/dist/observe/agent-status.d.ts.map +1 -1
  18. package/dist/observe/agent-status.js +66 -14
  19. package/dist/observe/agent-status.js.map +1 -1
  20. package/dist/observe/aggregate-events.d.ts +7 -6
  21. package/dist/observe/aggregate-events.d.ts.map +1 -1
  22. package/dist/observe/aggregate-events.js +38 -28
  23. package/dist/observe/aggregate-events.js.map +1 -1
  24. package/dist/observe/index.d.ts +4 -1
  25. package/dist/observe/index.d.ts.map +1 -1
  26. package/dist/observe/index.js +3 -1
  27. package/dist/observe/index.js.map +1 -1
  28. package/dist/observe/observe-agent.d.ts +4 -4
  29. package/dist/observe/observe-agent.d.ts.map +1 -1
  30. package/dist/observe/observe-agent.js +3 -3
  31. package/dist/observe/observe-agent.js.map +1 -1
  32. package/dist/observe/stall-observer.d.ts +7 -6
  33. package/dist/observe/stall-observer.d.ts.map +1 -1
  34. package/dist/observe/stall-observer.js +6 -5
  35. package/dist/observe/stall-observer.js.map +1 -1
  36. package/dist/observe/tool-activity.d.ts +2 -2
  37. package/dist/observe/tool-activity.d.ts.map +1 -1
  38. package/dist/observe/tool-activity.js +1 -1
  39. package/dist/observe/tool-activity.js.map +1 -1
  40. package/dist/observe/turns.d.ts +37 -0
  41. package/dist/observe/turns.d.ts.map +1 -0
  42. package/dist/observe/turns.js +70 -0
  43. package/dist/observe/turns.js.map +1 -0
  44. package/dist/observe/usage.d.ts +15 -0
  45. package/dist/observe/usage.d.ts.map +1 -0
  46. package/dist/observe/usage.js +94 -0
  47. package/dist/observe/usage.js.map +1 -0
  48. package/dist/runtimes/claude/account-usage.js +1 -1
  49. package/dist/runtimes/claude/context-usage.d.ts +1 -1
  50. package/dist/runtimes/claude/context-usage.js +1 -1
  51. package/dist/runtimes/claude/projection.d.ts +40 -27
  52. package/dist/runtimes/claude/projection.d.ts.map +1 -1
  53. package/dist/runtimes/claude/projection.js +110 -23
  54. package/dist/runtimes/claude/projection.js.map +1 -1
  55. package/dist/runtimes/claude/session.d.ts.map +1 -1
  56. package/dist/runtimes/claude/session.js +120 -87
  57. package/dist/runtimes/claude/session.js.map +1 -1
  58. package/dist/runtimes/codex/app-server-client.d.ts +38 -3
  59. package/dist/runtimes/codex/app-server-client.d.ts.map +1 -1
  60. package/dist/runtimes/codex/app-server-client.js +62 -15
  61. package/dist/runtimes/codex/app-server-client.js.map +1 -1
  62. package/dist/runtimes/codex/projection.d.ts +12 -12
  63. package/dist/runtimes/codex/projection.d.ts.map +1 -1
  64. package/dist/runtimes/codex/projection.js +111 -40
  65. package/dist/runtimes/codex/projection.js.map +1 -1
  66. package/dist/runtimes/codex/rpc-control.d.ts +31 -0
  67. package/dist/runtimes/codex/rpc-control.d.ts.map +1 -0
  68. package/dist/runtimes/codex/rpc-control.js +51 -0
  69. package/dist/runtimes/codex/rpc-control.js.map +1 -0
  70. package/dist/runtimes/codex/session.d.ts.map +1 -1
  71. package/dist/runtimes/codex/session.js +199 -149
  72. package/dist/runtimes/codex/session.js.map +1 -1
  73. package/dist/runtimes/grok/session.d.ts +37 -1
  74. package/dist/runtimes/grok/session.d.ts.map +1 -1
  75. package/dist/runtimes/grok/session.js +74 -0
  76. package/dist/runtimes/grok/session.js.map +1 -1
  77. package/dist/runtimes/kimi/session.d.ts.map +1 -1
  78. package/dist/runtimes/kimi/session.js +5 -0
  79. package/dist/runtimes/kimi/session.js.map +1 -1
  80. package/dist/runtimes/pi/auth.d.ts.map +1 -1
  81. package/dist/runtimes/pi/auth.js +6 -1
  82. package/dist/runtimes/pi/auth.js.map +1 -1
  83. package/dist/runtimes/pi/catalog.d.ts.map +1 -1
  84. package/dist/runtimes/pi/catalog.js +6 -1
  85. package/dist/runtimes/pi/catalog.js.map +1 -1
  86. package/dist/runtimes/pi/http.d.ts +34 -0
  87. package/dist/runtimes/pi/http.d.ts.map +1 -0
  88. package/dist/runtimes/pi/http.js +95 -0
  89. package/dist/runtimes/pi/http.js.map +1 -0
  90. package/dist/runtimes/pi/list-models.d.ts.map +1 -1
  91. package/dist/runtimes/pi/list-models.js +10 -3
  92. package/dist/runtimes/pi/list-models.js.map +1 -1
  93. package/dist/runtimes/pi/open.d.ts +32 -0
  94. package/dist/runtimes/pi/open.d.ts.map +1 -0
  95. package/dist/runtimes/pi/open.js +106 -0
  96. package/dist/runtimes/pi/open.js.map +1 -0
  97. package/dist/runtimes/pi/projection.d.ts +27 -25
  98. package/dist/runtimes/pi/projection.d.ts.map +1 -1
  99. package/dist/runtimes/pi/projection.js +86 -50
  100. package/dist/runtimes/pi/projection.js.map +1 -1
  101. package/dist/runtimes/pi/session.d.ts +1 -22
  102. package/dist/runtimes/pi/session.d.ts.map +1 -1
  103. package/dist/runtimes/pi/session.js +179 -184
  104. package/dist/runtimes/pi/session.js.map +1 -1
  105. package/dist/shared/acp/client-app.d.ts +23 -0
  106. package/dist/shared/acp/client-app.d.ts.map +1 -0
  107. package/dist/shared/acp/client-app.js +55 -0
  108. package/dist/shared/acp/client-app.js.map +1 -0
  109. package/dist/shared/acp/model.d.ts +3 -17
  110. package/dist/shared/acp/model.d.ts.map +1 -1
  111. package/dist/shared/acp/model.js +3 -14
  112. package/dist/shared/acp/model.js.map +1 -1
  113. package/dist/shared/acp/profile.d.ts +32 -7
  114. package/dist/shared/acp/profile.d.ts.map +1 -1
  115. package/dist/shared/acp/profile.js +17 -8
  116. package/dist/shared/acp/profile.js.map +1 -1
  117. package/dist/shared/acp/projection.d.ts +16 -8
  118. package/dist/shared/acp/projection.d.ts.map +1 -1
  119. package/dist/shared/acp/projection.js +59 -32
  120. package/dist/shared/acp/projection.js.map +1 -1
  121. package/dist/shared/acp/records.d.ts +46 -0
  122. package/dist/shared/acp/records.d.ts.map +1 -0
  123. package/dist/shared/acp/records.js +125 -0
  124. package/dist/shared/acp/records.js.map +1 -0
  125. package/dist/shared/acp/session.d.ts.map +1 -1
  126. package/dist/shared/acp/session.js +98 -224
  127. package/dist/shared/acp/session.js.map +1 -1
  128. package/dist/shared/acp/terminal.d.ts +1 -3
  129. package/dist/shared/acp/terminal.d.ts.map +1 -1
  130. package/dist/shared/acp/terminal.js +1 -21
  131. package/dist/shared/acp/terminal.js.map +1 -1
  132. package/dist/shared/acp/turns.d.ts +45 -0
  133. package/dist/shared/acp/turns.d.ts.map +1 -0
  134. package/dist/shared/acp/turns.js +160 -0
  135. package/dist/shared/acp/turns.js.map +1 -0
  136. package/dist/shared/acp/usage-wait.d.ts +6 -6
  137. package/dist/shared/acp/usage-wait.d.ts.map +1 -1
  138. package/dist/shared/acp/usage-wait.js +2 -2
  139. package/dist/shared/acp/usage-wait.js.map +1 -1
  140. package/dist/shared/failure-class.d.ts +1 -1
  141. package/dist/shared/failure-class.js +2 -2
  142. package/dist/shared/failure-class.js.map +1 -1
  143. package/dist/shared/seal-session.d.ts +5 -3
  144. package/dist/shared/seal-session.d.ts.map +1 -1
  145. package/dist/shared/seal-session.js +24 -16
  146. package/dist/shared/seal-session.js.map +1 -1
  147. package/dist/shared/session-kernel.d.ts +68 -18
  148. package/dist/shared/session-kernel.d.ts.map +1 -1
  149. package/dist/shared/session-kernel.js +82 -42
  150. package/dist/shared/session-kernel.js.map +1 -1
  151. package/dist/voyage.d.ts +4 -7
  152. package/dist/voyage.d.ts.map +1 -1
  153. package/dist/voyage.js +14 -19
  154. package/dist/voyage.js.map +1 -1
  155. package/package.json +4 -3
  156. package/dist/runtimes/codex/context-usage.d.ts +0 -10
  157. package/dist/runtimes/codex/context-usage.d.ts.map +0 -1
  158. package/dist/runtimes/codex/context-usage.js +0 -16
  159. package/dist/runtimes/codex/context-usage.js.map +0 -1
@@ -0,0 +1,125 @@
1
+ import { asRecord } from "../json.js";
2
+ import { acpReportedModel } from "./model.js";
3
+ import { methods } from "./process.js";
4
+ import { createAcpProjectionState, projectAcpUpdate } from "./projection.js";
5
+ function stringField(record, names) {
6
+ for (const name of names) {
7
+ const value = record[name];
8
+ if (typeof value === "string" && value.length > 0) {
9
+ return value;
10
+ }
11
+ }
12
+ return null;
13
+ }
14
+ /**
15
+ * The parent/child session pair a vendor notification names, in either
16
+ * spelling and at either depth. grok 1.0.25 (live, 2026-09-11) spells it
17
+ * `_x.ai/session_notification {sessionId: <parent>, update: {sessionUpdate:
18
+ * "subagent_spawned" | "subagent_progress", parent_session_id,
19
+ * child_session_id, subagent_type, …}}`: snake_case, nested under `update`;
20
+ * its `subagent_finished` carries only `child_session_id`, the parent being
21
+ * the envelope's `sessionId`. A flat camelCase `{parentSessionId,
22
+ * childSessionId | sessionId}` is the fixture spelling.
23
+ */
24
+ export function acpLineageOf(params) {
25
+ const envelope = stringField(params, ["sessionId"]);
26
+ // Flat: an explicit parent, the child explicit or the envelope's own id.
27
+ const flatParent = stringField(params, ["parentSessionId", "parent_session_id"]);
28
+ const flatChild = stringField(params, ["childSessionId", "child_session_id"]) ?? envelope;
29
+ if (flatParent !== null && flatChild !== null && flatParent !== flatChild) {
30
+ return { parent: flatParent, child: flatChild };
31
+ }
32
+ // Nested: an explicit child, the parent explicit or the envelope's own id.
33
+ const update = asRecord(params.update);
34
+ const nestedChild = update === null ? null : stringField(update, ["childSessionId", "child_session_id"]);
35
+ const nestedParent = update === null ? null : (stringField(update, ["parentSessionId", "parent_session_id"]) ?? envelope);
36
+ if (nestedParent !== null && nestedChild !== null && nestedParent !== nestedChild) {
37
+ return { parent: nestedParent, child: nestedChild };
38
+ }
39
+ return null;
40
+ }
41
+ function linkFromExtension(kernel, params) {
42
+ const lineage = acpLineageOf(params);
43
+ if (lineage !== null) {
44
+ kernel.link({ ...lineage, via: "tool_call" });
45
+ }
46
+ }
47
+ export function createAcpRecorder(usageGate) {
48
+ const projections = new Map();
49
+ const projectionFor = (sessionId) => {
50
+ let state = projections.get(sessionId);
51
+ if (state === undefined) {
52
+ state = createAcpProjectionState();
53
+ projections.set(sessionId, state);
54
+ }
55
+ return state;
56
+ };
57
+ let bound = null;
58
+ const queued = [];
59
+ const write = (append) => {
60
+ if (bound === null) {
61
+ queued.push(append);
62
+ }
63
+ else {
64
+ append(bound);
65
+ }
66
+ };
67
+ return {
68
+ bind(kernel) {
69
+ bound = kernel;
70
+ for (const append of queued.splice(0)) {
71
+ append(kernel);
72
+ }
73
+ },
74
+ update(notification) {
75
+ write((kernel) => {
76
+ const update = asRecord(notification.update);
77
+ const { sessionId } = notification;
78
+ const foreign = sessionId !== kernel.sessionId;
79
+ if (foreign) {
80
+ kernel.node(sessionId);
81
+ }
82
+ const views = update === null ? [] : projectAcpUpdate(projectionFor(sessionId), update);
83
+ const type = typeof update?.sessionUpdate === "string" ? update.sessionUpdate : methods.client.session.update;
84
+ const record = kernel.event({ type, native: notification, views }, foreign ? { sessionId } : undefined);
85
+ if (!foreign) {
86
+ usageGate.observe(views.some((view) => view.kind === "usage") ? record.seq : undefined);
87
+ }
88
+ });
89
+ },
90
+ extension(method, params) {
91
+ write((kernel) => {
92
+ // The envelope says whose frame this is: a child session pushes its
93
+ // own `response_completed` / `turn_completed` on grok's vendor method
94
+ // with ITS id in `sessionId` (live-grok-c/subagent.voyage.jsonl seqs
95
+ // 78, 119, 120), so it is recorded under the child like a foreign
96
+ // `session/update`. A frame that merely NAMES a child (the parent's
97
+ // `subagent_*` lifecycle) keeps the parent's envelope.
98
+ const sessionId = stringField(params, ["sessionId"]);
99
+ const foreign = sessionId !== null && sessionId !== kernel.sessionId;
100
+ if (foreign) {
101
+ kernel.node(sessionId);
102
+ }
103
+ kernel.event({ type: method, native: params, views: [] }, foreign ? { sessionId } : undefined);
104
+ linkFromExtension(kernel, params);
105
+ });
106
+ },
107
+ step(method, response) {
108
+ write((kernel) => {
109
+ const model = acpReportedModel(response);
110
+ kernel.event({ type: method, native: response, views: model === null ? [] : [{ kind: "model", model }] });
111
+ });
112
+ },
113
+ requested(id, method, params) {
114
+ write((kernel) => {
115
+ kernel.request("toApp", { kind: "native", type: method, native: params }, { id });
116
+ });
117
+ },
118
+ answered(id, reply) {
119
+ write((kernel) => {
120
+ kernel.respond(id, { kind: "answered", native: reply ?? null });
121
+ });
122
+ },
123
+ };
124
+ }
125
+ //# sourceMappingURL=records.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"records.js","sourceRoot":"","sources":["../../../src/shared/acp/records.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/shared/acp/session.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAyC,YAAY,EAAkC,MAAM,4BAA4B,CAAC;AAKtI,OAAO,EAOL,KAAK,iBAAiB,EACvB,MAAM,cAAc,CAAC;AAStB,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAWtD,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,YAAY,CAwQnE"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/shared/acp/session.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAQV,YAAY,EACb,MAAM,4BAA4B,CAAC;AAIpC,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,cAAc,CAAC;AAMtB,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AActD,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,YAAY,CA2HnE"}
@@ -1,11 +1,22 @@
1
- import { asRecord } from "../json.js";
2
1
  import { sealSession } from "../seal-session.js";
3
2
  import { createSessionKernel } from "../session-kernel.js";
4
- import { AcpError, acpProcessExitedError } from "./errors.js";
5
- import { closeAcpSession, createAcpModelReadback, createUsageUpdateGate, hasAcpCapability, openAcpSession, promptAcp, } from "./profile.js";
6
- import { methods, startAcpProcess } from "./process.js";
7
- import { acpFailureOutcome, acpRuntimeExitedOutcome, createAcpProjectionState, defaultAcpPromptOutcome, finishAcpTools, projectAcpUpdate, } from "./projection.js";
8
- import { createAcpClientApp, createAcpTerminalHost } from "./terminal.js";
3
+ import { createAcpClientApp } from "./client-app.js";
4
+ import { closeAcpSession, createUsageUpdateGate, openAcpSession, } from "./profile.js";
5
+ import { startAcpProcess } from "./process.js";
6
+ import { createAcpRecorder } from "./records.js";
7
+ import { createAcpTerminalHost } from "./terminal.js";
8
+ import { createAcpTurns } from "./turns.js";
9
+ /*
10
+ * ACP mapping onto the record stream (shared by grok and kimi; profiles carry the vendor bits):
11
+ * - every `session/update` is ONE event record, native verbatim, for WHATEVER
12
+ * session id it names: a foreign id is a derived child session (records.ts).
13
+ * - vendor extension notifications the profile lists are recorded verbatim.
14
+ * - runtime→app requests (permission, terminal) are toApp request records;
15
+ * oar's automatic answer is the matching `answered` response (client-app.ts).
16
+ * - prompt / steer / queue / abort / dispose are toRuntime requests answered
17
+ * accepted-or-rejected; the turn's end is the runtime's own prompt answer
18
+ * (turns.ts) or the process exit oar observed (`exited` response).
19
+ */
9
20
  export function acpSession(profile) {
10
21
  return async (installation, options) => {
11
22
  if (installation.via !== "executable") {
@@ -17,241 +28,104 @@ export function acpSession(profile) {
17
28
  const terminalHost = createAcpTerminalHost(options.cwd, environment, {
18
29
  shellCommand: profile.terminalShellCommand === true,
19
30
  });
20
- // Watched from the first frame: kimi pushes its model config_option_update
21
- // before session/set_model is answered, i.e. before the session is open.
22
- const model = createAcpModelReadback();
23
- let receiveUpdate = (notification) => {
24
- model.observe(asRecord(notification.update));
25
- };
26
- const client = createAcpClientApp(terminalHost, (notification) => {
27
- receiveUpdate(notification);
31
+ // The recorder queues everything until the handshake reveals the session
32
+ // id and the kernel can be bound (records.ts).
33
+ const usageGate = createUsageUpdateGate();
34
+ const recorder = createAcpRecorder(usageGate);
35
+ const client = createAcpClientApp(terminalHost, {
36
+ update: (notification) => {
37
+ recorder.update(notification);
38
+ },
39
+ extension: (method, params) => {
40
+ recorder.extension(method, params);
41
+ },
42
+ requested: (id, method, params) => {
43
+ recorder.requested(id, method, params);
44
+ },
45
+ answered: (id, reply) => {
46
+ recorder.answered(id, reply);
47
+ },
48
+ extensionNotifications: profile.extensionNotifications ?? [],
28
49
  });
29
50
  const runtime = startAcpProcess(installation.command, args, client, { cwd: options.cwd, env: environment });
30
- const opened = await openAcpSession(runtime, profile, options).catch(async (error) => {
51
+ const opened = await openAcpSession(runtime, profile, options, (step) => {
52
+ recorder.step(step.method, step.response);
53
+ }).catch(async (error) => {
31
54
  runtime.kill();
32
55
  await runtime.exited;
33
56
  await terminalHost.dispose();
34
57
  throw error;
35
58
  });
36
- model.opened(opened);
37
- const capabilities = asRecord(opened.initialized.agentCapabilities);
38
- const sessionCapabilities = asRecord(capabilities?.sessionCapabilities);
39
- const supportsClose = hasAcpCapability(sessionCapabilities?.close);
40
59
  const kernel = createSessionKernel(opened.sessionId);
41
- const held = [];
42
- let active = null;
43
- let contextUsage = null;
44
- const usageGate = createUsageUpdateGate();
45
- let nextRequest = 0;
46
- let disposed = false;
47
- let dead = false;
48
- const settle = (state, outcome) => {
49
- if (state.kernelTurn.settled()) {
50
- return;
51
- }
52
- for (const body of finishAcpTools(state.projection)) {
53
- state.kernelTurn.emit(body);
54
- }
55
- state.kernelTurn.settle(outcome);
56
- if (active === state) {
57
- active = null;
58
- }
59
- queueMicrotask(drainHeld);
60
- };
61
- const failHeld = () => {
62
- while (held.length > 0) {
63
- held.shift();
64
- kernel.begin()?.settle({
65
- kind: "failed",
66
- reason: "ACP process exited before queued input could run",
67
- failure: "runtime_exited",
68
- });
69
- }
70
- };
71
- receiveUpdate = (notification) => {
72
- if (notification.sessionId !== opened.sessionId) {
73
- return;
74
- }
75
- const update = asRecord(notification.update);
76
- if (update === null) {
77
- return;
78
- }
79
- model.observe(update);
80
- const state = active;
81
- const projected = projectAcpUpdate(state?.projection ?? createAcpProjectionState(), update);
82
- contextUsage = projected.contextUsage ?? contextUsage;
83
- usageGate.observe(projected.contextUsage);
84
- if (state !== null && !state.kernelTurn.settled()) {
85
- for (const body of projected.bodies) {
86
- state.kernelTurn.emit(body);
87
- }
88
- }
89
- };
90
- const finishRequest = (state, requestNumber, outcome) => {
91
- if (state.kernelTurn.settled()) {
92
- return;
93
- }
94
- state.pending.delete(requestNumber);
95
- state.outcomes.set(requestNumber, outcome);
96
- if (state.pending.size === 0) {
97
- settle(state, state.outcomes.get(state.latestRequest) ?? outcome);
98
- }
99
- };
100
- const startVendorPrompt = (state, input, extraParams = {}) => {
101
- nextRequest += 1;
102
- const requestNumber = nextRequest;
103
- state.latestRequest = requestNumber;
104
- state.pending.add(requestNumber);
105
- void (async () => {
106
- try {
107
- usageGate.arm();
108
- const result = await promptAcp(runtime, opened.sessionId, input, extraParams);
109
- await usageGate.settleAfterPrompt(profile, state.abortRequested);
110
- contextUsage = profile.promptContextUsage?.(result) ?? contextUsage;
111
- finishRequest(state, requestNumber, profile.promptOutcome?.(result) ?? defaultAcpPromptOutcome(result));
112
- }
113
- catch (error) {
114
- const outcome = state.abortRequested
115
- && !(error instanceof AcpError && error.kind === "process_exited")
116
- ? { kind: "aborted" }
117
- : acpFailureOutcome(error);
118
- finishRequest(state, requestNumber, outcome);
119
- }
120
- })();
121
- };
122
- const makeTurn = (state) => {
123
- const steerParams = profile.steerParams;
124
- return {
125
- id: state.kernelTurn.id,
126
- outcome: state.kernelTurn.outcome,
127
- abort: async () => {
128
- if (state.kernelTurn.settled()) {
129
- return;
130
- }
131
- if (!state.abortRequested) {
132
- state.abortRequested = true;
133
- try {
134
- await runtime.connection.agent.notify(methods.agent.session.cancel, { sessionId: opened.sessionId });
135
- }
136
- catch (error) {
137
- settle(state, acpFailureOutcome(error));
138
- }
139
- }
140
- const timeoutMs = profile.abortTimeoutMs ?? 10_000;
141
- const fallback = setTimeout(() => {
142
- if (!state.kernelTurn.settled()) {
143
- dead = true;
144
- settle(state, { kind: "aborted" });
145
- runtime.kill();
146
- }
147
- }, timeoutMs);
148
- fallback.unref();
149
- await state.kernelTurn.outcome;
150
- clearTimeout(fallback);
151
- },
152
- ...(steerParams === undefined ? {} : {
153
- steer: async (input) => {
154
- await runtime.spawned;
155
- if (state.kernelTurn.settled() || active !== state) {
156
- return {
157
- kind: "not_steerable",
158
- reason: "turn already ended",
159
- };
160
- }
161
- if (runtime.closed) {
162
- throw acpProcessExitedError(runtime.exitCode);
163
- }
164
- startVendorPrompt(state, input, steerParams(input));
165
- return { kind: "accepted" };
166
- },
167
- }),
168
- };
169
- };
170
- const beginInput = (input) => {
171
- const kernelTurn = kernel.begin();
172
- if (kernelTurn === null) {
173
- return null;
174
- }
175
- const state = {
176
- kernelTurn,
177
- outcomes: new Map(),
178
- pending: new Set(),
179
- projection: createAcpProjectionState(),
180
- abortRequested: false,
181
- latestRequest: 0,
182
- };
183
- active = state;
184
- if (dead || runtime.closed) {
185
- settle(state, acpRuntimeExitedOutcome(null));
186
- }
187
- else {
188
- startVendorPrompt(state, input);
189
- }
190
- return makeTurn(state);
191
- };
192
- function drainHeld() {
193
- if (disposed || active !== null) {
194
- return;
195
- }
196
- if (dead || runtime.closed) {
197
- failHeld();
198
- return;
199
- }
200
- const input = held.shift();
201
- if (input !== undefined) {
202
- beginInput(input);
203
- }
204
- }
205
- const onRuntimeExit = (code) => {
60
+ recorder.bind(kernel);
61
+ let disposeRequest = null;
62
+ const turns = createAcpTurns({ kernel, runtime, profile, usageGate });
63
+ // oxlint-disable-next-line promise/prefer-await-to-then, promise/always-return -- Exit observation outlives session creation.
64
+ void runtime.exited.then((code) => {
206
65
  void terminalHost.dispose();
207
- if (disposed) {
208
- return;
209
- }
210
- dead = true;
211
- if (active !== null) {
212
- settle(active, acpRuntimeExitedOutcome(code));
66
+ // An outcome only oar observes: answers our dispose when we caused the
67
+ // exit, stands alone (requestId "") when the runtime died on its own.
68
+ kernel.respond(disposeRequest?.id ?? "", { kind: "exited", code });
69
+ turns.onExit();
70
+ });
71
+ // Reachability (exited, disposed) is the kernel's gate, read off the
72
+ // stream; the adapter decides only the runtime-specific answers (busy,
73
+ // not_steerable). `runtime.closed` flips synchronously on the process's
74
+ // exit, one microtask before the observer above records the `exited`
75
+ // response: a control landing in that window would otherwise be decided
76
+ // here (rejected "ACP process exited") instead of by the gate, so the
77
+ // exit is let land first.
78
+ const control = async (body, decide) => {
79
+ if (runtime.closed && kernel.unreachable() === null) {
80
+ await runtime.exited;
213
81
  }
214
- failHeld();
82
+ return kernel.control(body, decide);
215
83
  };
216
- // oxlint-disable-next-line promise/prefer-await-to-then, promise/always-return -- Exit observation outlives session creation.
217
- void runtime.exited.then(onRuntimeExit);
218
84
  return sealSession({
219
85
  id: kernel.sessionId,
220
- prompt(input) {
221
- const next = beginInput(input);
222
- return next === null ? { kind: "busy" } : { kind: "turn", turn: next };
223
- },
224
- subscribe: (observer) => kernel.subscribe(observer),
225
- contextUsage: () => contextUsage,
226
- model: model.current,
227
- queue: {
228
- durable: false,
229
- add: async (input) => {
230
- await runtime.spawned;
231
- if (disposed || dead || runtime.closed) {
232
- throw acpProcessExitedError(runtime.exitCode);
233
- }
234
- held.push(input);
235
- queueMicrotask(drainHeld);
236
- },
237
- },
86
+ capabilities: profile.capabilities,
87
+ prompt: (input, promptOptions) => control({ kind: "prompt", input, ...(promptOptions?.lineage === undefined ? {} : { lineage: promptOptions.lineage }) }, (request) => (turns.active() === null ? turns.begin(request, input) : { kind: "rejected", reason: "busy" })),
88
+ steer: (input) => control({ kind: "steer", input }, () => {
89
+ const steerParams = profile.steerParams;
90
+ if (steerParams === undefined) {
91
+ return { kind: "rejected", reason: "not_steerable: runtime cannot inject into an active turn" };
92
+ }
93
+ const state = turns.active();
94
+ return state === null
95
+ ? { kind: "rejected", reason: "not_steerable: no active turn" }
96
+ : turns.steer(state, input, steerParams(input));
97
+ }),
98
+ queue: (input) => control({ kind: "queue", input }, () => turns.hold(input)),
99
+ abort: () => control({ kind: "abort" }, () => {
100
+ const state = turns.active();
101
+ return state === null ? { kind: "rejected", reason: "no active turn" } : turns.abort(state);
102
+ }),
103
+ subscribe: (observer, cursor) => kernel.subscribe(observer, cursor),
104
+ records: () => kernel.records(),
105
+ graph: () => kernel.graph(),
238
106
  dispose: async () => {
239
- if (disposed) {
107
+ if (disposeRequest !== null) {
108
+ return; // already released: the stream holds our dispose request
109
+ }
110
+ // Read BEFORE this dispose is recorded: only an observed exit can say
111
+ // so here, and it is the stream's word, not an adapter flag.
112
+ const gone = kernel.unreachable() !== null;
113
+ disposeRequest = kernel.request("toRuntime", { kind: "dispose" });
114
+ if (gone) {
115
+ // The exit is already recorded (an unrequested `exited` response, requestId "");
116
+ // nothing is left to release, so the dispose is answered here, as
117
+ // the claude and codex adapters do (kimi 0.42.0 kill-runtime run,
118
+ // 2026-09-11: the dispose request stood unanswered before this).
119
+ kernel.respond(disposeRequest.id, { kind: "accepted" });
120
+ await terminalHost.dispose();
240
121
  return;
241
122
  }
242
- disposed = true;
243
- held.splice(0);
244
- if (active !== null && !active.kernelTurn.settled()) {
245
- try {
246
- await runtime.connection.agent.notify(methods.agent.session.cancel, { sessionId: opened.sessionId });
247
- }
248
- catch {
249
- // Local settlement below is authoritative during disposal.
250
- }
251
- settle(active, { kind: "aborted" });
123
+ const state = turns.active();
124
+ if (state !== null && !runtime.closed) {
125
+ await turns.abort(state);
252
126
  }
253
- if (supportsClose && !runtime.closed) {
254
- await closeAcpSession(runtime, opened.sessionId).catch(() => { });
127
+ if (opened.supportsClose && !runtime.closed) {
128
+ await closeAcpSession(runtime, kernel.sessionId).catch(() => { });
255
129
  }
256
130
  runtime.kill();
257
131
  await runtime.exited;
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/shared/acp/session.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAmB,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAmB,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,SAAS,GAEV,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,OAAO,EAAE,eAAe,EAA4B,MAAM,cAAc,CAAC;AAClF,OAAO,EACL,iBAAiB,EAAE,uBAAuB,EAAE,wBAAwB,EACpE,uBAAuB,EAAE,cAAc,EAAE,gBAAgB,GAE1D,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAa1E,MAAM,UAAU,UAAU,CAAC,OAA0B;IACnD,OAAO,KAAK,EAAE,YAAmC,EAAE,OAAuB,EAAoB,EAAE;QAC9F,IAAI,YAAY,CAAC,GAAG,KAAK,YAAY,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,OAAO,OAAO,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;QACvF,MAAM,WAAW,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QACvD,MAAM,YAAY,GAAG,qBAAqB,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE;YACnE,YAAY,EAAE,OAAO,CAAC,oBAAoB,KAAK,IAAI;SACpD,CAAC,CAAC;QACH,2EAA2E;QAC3E,yEAAyE;QACzE,MAAM,KAAK,GAAG,sBAAsB,EAAE,CAAC;QACvC,IAAI,aAAa,GAAG,CAAC,YAAiC,EAAQ,EAAE;YAC9D,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC;QACF,MAAM,MAAM,GAAG,kBAAkB,CAAC,YAAY,EAAE,CAAC,YAAY,EAAE,EAAE;YAC/D,aAAa,CAAC,YAAY,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,eAAe,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;QAC5G,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;YAC5F,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,OAAO,CAAC,MAAM,CAAC;YACrB,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;YAC7B,MAAM,KAAK,CAAC;QACd,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACrB,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QACpE,MAAM,mBAAmB,GAAG,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;QACxE,MAAM,aAAa,GAAG,gBAAgB,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,IAAI,MAAM,GAAsB,IAAI,CAAC;QACrC,IAAI,YAAY,GAAwB,IAAI,CAAC;QAC7C,MAAM,SAAS,GAAG,qBAAqB,EAAE,CAAC;QAC1C,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,MAAM,MAAM,GAAG,CAAC,KAAiB,EAAE,OAAoB,EAAQ,EAAE;YAC/D,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC/B,OAAO;YACT,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;gBACpD,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC;YACD,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACjC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,MAAM,GAAG,IAAI,CAAC;YAChB,CAAC;YACD,cAAc,CAAC,SAAS,CAAC,CAAC;QAC5B,CAAC,CAAC;QACF,MAAM,QAAQ,GAAG,GAAS,EAAE;YAC1B,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC;oBACrB,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,kDAAkD;oBAC1D,OAAO,EAAE,gBAAgB;iBAC1B,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC;QACF,aAAa,GAAG,CAAC,YAAY,EAAQ,EAAE;YACrC,IAAI,YAAY,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;gBAChD,OAAO;YACT,CAAC;YACD,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,OAAO;YACT,CAAC;YACD,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACtB,MAAM,KAAK,GAAG,MAAM,CAAC;YACrB,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,EAAE,UAAU,IAAI,wBAAwB,EAAE,EAAE,MAAM,CAAC,CAAC;YAC5F,YAAY,GAAG,SAAS,CAAC,YAAY,IAAI,YAAY,CAAC;YACtD,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YAC1C,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;gBAClD,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;oBACpC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QACF,MAAM,aAAa,GAAG,CACpB,KAAiB,EACjB,aAAqB,EACrB,OAAoB,EACd,EAAE;YACR,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC/B,OAAO;YACT,CAAC;YACD,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YACpC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC7B,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,CAAC;YACpE,CAAC;QACH,CAAC,CAAC;QACF,MAAM,iBAAiB,GAAG,CACxB,KAAiB,EACjB,KAAa,EACb,cAA0B,EAAE,EACtB,EAAE;YACR,WAAW,IAAI,CAAC,CAAC;YACjB,MAAM,aAAa,GAAG,WAAW,CAAC;YAClC,KAAK,CAAC,aAAa,GAAG,aAAa,CAAC;YACpC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACjC,KAAK,CAAC,KAAK,IAAmB,EAAE;gBAC9B,IAAI,CAAC;oBACH,SAAS,CAAC,GAAG,EAAE,CAAC;oBAChB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;oBAC9E,MAAM,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;oBACjE,YAAY,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC;oBACpE,aAAa,CACX,KAAK,EACL,aAAa,EACb,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,IAAI,uBAAuB,CAAC,MAAM,CAAC,CACnE,CAAC;gBACJ,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc;2BAC/B,CAAC,CAAC,KAAK,YAAY,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,CAAC;wBAClE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAkB,EAAE;wBAC9B,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;oBAC7B,aAAa,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;QACP,CAAC,CAAC;QACF,MAAM,QAAQ,GAAG,CAAC,KAAiB,EAAQ,EAAE;YAC3C,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;YACxC,OAAO;gBACL,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE;gBACvB,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,OAAO;gBACjC,KAAK,EAAE,KAAK,IAAI,EAAE;oBAChB,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;wBAC/B,OAAO;oBACT,CAAC;oBACD,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;wBAC1B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;wBAC5B,IAAI,CAAC;4BACH,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CACnC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAC5B,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAChC,CAAC;wBACJ,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,MAAM,CAAC,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;wBAC1C,CAAC;oBACH,CAAC;oBACD,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC;oBACnD,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE;wBAC/B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;4BAChC,IAAI,GAAG,IAAI,CAAC;4BACZ,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;4BACnC,OAAO,CAAC,IAAI,EAAE,CAAC;wBACjB,CAAC;oBACH,CAAC,EAAE,SAAS,CAAC,CAAC;oBACd,QAAQ,CAAC,KAAK,EAAE,CAAC;oBACjB,MAAM,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;oBAC/B,YAAY,CAAC,QAAQ,CAAC,CAAC;gBACzB,CAAC;gBACD,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACnC,KAAK,EAAE,KAAK,EAAE,KAAa,EAAwB,EAAE;wBACnD,MAAM,OAAO,CAAC,OAAO,CAAC;wBACtB,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;4BACnD,OAAO;gCACL,IAAI,EAAE,eAAwB;gCAC9B,MAAM,EAAE,oBAAoB;6BAC7B,CAAC;wBACJ,CAAC;wBACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;4BACnB,MAAM,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;wBAChD,CAAC;wBACD,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;wBACpD,OAAO,EAAE,IAAI,EAAE,UAAmB,EAAE,CAAC;oBACvC,CAAC;iBACF,CAAC;aACH,CAAC;QACJ,CAAC,CAAC;QACF,MAAM,UAAU,GAAG,CAAC,KAAa,EAAe,EAAE;YAChD,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;YAClC,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBACxB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,KAAK,GAAe;gBACxB,UAAU;gBACV,QAAQ,EAAE,IAAI,GAAG,EAAE;gBACnB,OAAO,EAAE,IAAI,GAAG,EAAE;gBAClB,UAAU,EAAE,wBAAwB,EAAE;gBACtC,cAAc,EAAE,KAAK;gBACrB,aAAa,EAAE,CAAC;aACjB,CAAC;YACF,MAAM,GAAG,KAAK,CAAC;YACf,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC3B,MAAM,CAAC,KAAK,EAAE,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAClC,CAAC;YACD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC,CAAC;QACF,SAAS,SAAS;YAChB,IAAI,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBAChC,OAAO;YACT,CAAC;YACD,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC3B,QAAQ,EAAE,CAAC;gBACX,OAAO;YACT,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,UAAU,CAAC,KAAK,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;QACD,MAAM,aAAa,GAAG,CAAC,IAAmB,EAAQ,EAAE;YAClD,KAAK,YAAY,CAAC,OAAO,EAAE,CAAC;YAC5B,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO;YACT,CAAC;YACD,IAAI,GAAG,IAAI,CAAC;YACZ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;YAChD,CAAC;YACD,QAAQ,EAAE,CAAC;QACb,CAAC,CAAC;QACF,8HAA8H;QAC9H,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACxC,OAAO,WAAW,CAAC;YACjB,EAAE,EAAE,MAAM,CAAC,SAAS;YACpB,MAAM,CAAC,KAAK;gBACV,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;gBAC/B,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACzE,CAAC;YACD,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;YACnD,YAAY,EAAE,GAAG,EAAE,CAAC,YAAY;YAChC,KAAK,EAAE,KAAK,CAAC,OAAO;YACpB,KAAK,EAAE;gBACL,OAAO,EAAE,KAAK;gBACd,GAAG,EAAE,KAAK,EAAE,KAAK,EAAiB,EAAE;oBAClC,MAAM,OAAO,CAAC,OAAO,CAAC;oBACtB,IAAI,QAAQ,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;wBACvC,MAAM,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBAChD,CAAC;oBACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACjB,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC5B,CAAC;aACF;YACD,OAAO,EAAE,KAAK,IAAI,EAAE;gBAClB,IAAI,QAAQ,EAAE,CAAC;oBACb,OAAO;gBACT,CAAC;gBACD,QAAQ,GAAG,IAAI,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACf,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;oBACpD,IAAI,CAAC;wBACH,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;oBACvG,CAAC;oBAAC,MAAM,CAAC;wBACP,2DAA2D;oBAC7D,CAAC;oBACD,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;gBACtC,CAAC;gBACD,IAAI,aAAa,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;oBACrC,MAAM,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBACnE,CAAC;gBACD,OAAO,CAAC,IAAI,EAAE,CAAC;gBACf,MAAM,OAAO,CAAC,MAAM,CAAC;gBACrB,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;YAC/B,CAAC;SACF,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/shared/acp/session.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type ClientApp, type CreateTerminalRequest, type CreateTerminalResponse, type KillTerminalRequest, type KillTerminalResponse, type ReleaseTerminalRequest, type ReleaseTerminalResponse, type SessionNotification, type TerminalOutputRequest, type TerminalOutputResponse, type WaitForTerminalExitRequest, type WaitForTerminalExitResponse } from "@agentclientprotocol/sdk";
1
+ import { type CreateTerminalRequest, type CreateTerminalResponse, type KillTerminalRequest, type KillTerminalResponse, type ReleaseTerminalRequest, type ReleaseTerminalResponse, type TerminalOutputRequest, type TerminalOutputResponse, type WaitForTerminalExitRequest, type WaitForTerminalExitResponse } from "@agentclientprotocol/sdk";
2
2
  export interface AcpTerminalHost {
3
3
  create(params: CreateTerminalRequest): Promise<CreateTerminalResponse>;
4
4
  output(params: TerminalOutputRequest): TerminalOutputResponse;
@@ -10,8 +10,6 @@ export interface AcpTerminalHost {
10
10
  export interface AcpTerminalHostOptions {
11
11
  readonly shellCommand?: boolean;
12
12
  }
13
- /** Compose OAR's typed ACP client handlers directly on the official SDK app. */
14
- export declare function createAcpClientApp(terminal: AcpTerminalHost, update: (notification: SessionNotification) => void): ClientApp;
15
13
  /** Host implementation of ACP v1's typed terminal reverse-RPC surface. */
16
14
  export declare function createAcpTerminalHost(cwd: string, environment: NodeJS.ProcessEnv, options?: AcpTerminalHostOptions): AcpTerminalHost;
17
15
  //# sourceMappingURL=terminal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../../src/shared/acp/terminal.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAG5B,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EACjC,MAAM,0BAA0B,CAAC;AA2BlC,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACvE,MAAM,CAAC,MAAM,EAAE,qBAAqB,GAAG,sBAAsB,CAAC;IAC9D,WAAW,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;IACtF,IAAI,CAAC,MAAM,EAAE,mBAAmB,GAAG,oBAAoB,CAAC;IACxD,OAAO,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAC1E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CACjC;AAUD,gFAAgF;AAChF,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,eAAe,EACzB,MAAM,EAAE,CAAC,YAAY,EAAE,mBAAmB,KAAK,IAAI,GAClD,SAAS,CAWX;AA+DD,0EAA0E;AAC1E,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,CAAC,UAAU,EAC9B,OAAO,GAAE,sBAA2B,GACnC,eAAe,CAwHjB"}
1
+ {"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../../src/shared/acp/terminal.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EACjC,MAAM,0BAA0B,CAAC;AA2BlC,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACvE,MAAM,CAAC,MAAM,EAAE,qBAAqB,GAAG,sBAAsB,CAAC;IAC9D,WAAW,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;IACtF,IAAI,CAAC,MAAM,EAAE,mBAAmB,GAAG,oBAAoB,CAAC;IACxD,OAAO,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAC1E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CACjC;AA+DD,0EAA0E;AAC1E,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,CAAC,UAAU,EAC9B,OAAO,GAAE,sBAA2B,GACnC,eAAe,CAwHjB"}
@@ -1,31 +1,11 @@
1
1
  /* oxlint-disable typescript/promise-function-async -- SDK handlers deliberately return terminal promises directly. */
2
- import { client as createClient, methods, RequestError, } from "@agentclientprotocol/sdk";
2
+ import { RequestError, } from "@agentclientprotocol/sdk";
3
3
  import { randomUUID } from "node:crypto";
4
4
  import path from "node:path";
5
5
  import { StringDecoder } from "node:string_decoder";
6
6
  import spawn from "cross-spawn";
7
7
  const DEFAULT_OUTPUT_LIMIT = 4 * 1024 * 1024;
8
8
  const MAX_OUTPUT_LIMIT = 16 * 1024 * 1024;
9
- function allowPermission(request) {
10
- const selected = request.options.find((option) => option.kind === "allow_always")
11
- ?? request.options.find((option) => option.kind === "allow_once");
12
- return selected === undefined
13
- ? { outcome: { outcome: "cancelled" } }
14
- : { outcome: { outcome: "selected", optionId: selected.optionId } };
15
- }
16
- /** Compose OAR's typed ACP client handlers directly on the official SDK app. */
17
- export function createAcpClientApp(terminal, update) {
18
- return createClient({ name: "oar" })
19
- .onRequest(methods.client.session.requestPermission, ({ params }) => allowPermission(params))
20
- .onRequest(methods.client.terminal.create, ({ params }) => terminal.create(params))
21
- .onRequest(methods.client.terminal.output, ({ params }) => terminal.output(params))
22
- .onRequest(methods.client.terminal.waitForExit, ({ params }) => terminal.waitForExit(params))
23
- .onRequest(methods.client.terminal.kill, ({ params }) => terminal.kill(params))
24
- .onRequest(methods.client.terminal.release, ({ params }) => terminal.release(params))
25
- .onNotification(methods.client.session.update, ({ params }) => {
26
- update(params);
27
- });
28
- }
29
9
  function invalid(message) {
30
10
  throw RequestError.invalidParams(undefined, message);
31
11
  }