@botiverse/oar 0.9.1 → 0.10.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.
Files changed (131) hide show
  1. package/README.md +2 -2
  2. package/assets/brands/NOTICE.md +6 -5
  3. package/assets/brands/antigravity.svg +1 -0
  4. package/assets/brands/cursor-on-dark.svg +1 -0
  5. package/assets/brands/cursor-on-light.svg +1 -0
  6. package/assets/brands/cursor.svg +1 -0
  7. package/dist/brands.d.ts +12 -0
  8. package/dist/brands.d.ts.map +1 -1
  9. package/dist/brands.js +12 -0
  10. package/dist/brands.js.map +1 -1
  11. package/dist/contracts/input.d.ts +8 -0
  12. package/dist/contracts/input.d.ts.map +1 -0
  13. package/dist/contracts/input.js +2 -0
  14. package/dist/contracts/input.js.map +1 -0
  15. package/dist/contracts/records.d.ts +4 -0
  16. package/dist/contracts/records.d.ts.map +1 -1
  17. package/dist/contracts/records.js +0 -15
  18. package/dist/contracts/records.js.map +1 -1
  19. package/dist/contracts/session.d.ts +11 -0
  20. package/dist/contracts/session.d.ts.map +1 -1
  21. package/dist/index.d.ts +9 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +12 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/observe/conversation.d.ts +3 -1
  26. package/dist/observe/conversation.d.ts.map +1 -1
  27. package/dist/observe/conversation.js +2 -2
  28. package/dist/observe/conversation.js.map +1 -1
  29. package/dist/observe/turns.d.ts +3 -1
  30. package/dist/observe/turns.d.ts.map +1 -1
  31. package/dist/observe/turns.js +1 -1
  32. package/dist/observe/turns.js.map +1 -1
  33. package/dist/runtimes/antigravity/index.d.ts +14 -0
  34. package/dist/runtimes/antigravity/index.d.ts.map +1 -0
  35. package/dist/runtimes/antigravity/index.js +14 -0
  36. package/dist/runtimes/antigravity/index.js.map +1 -0
  37. package/dist/runtimes/antigravity/installation.d.ts +13 -0
  38. package/dist/runtimes/antigravity/installation.d.ts.map +1 -0
  39. package/dist/runtimes/antigravity/installation.js +16 -0
  40. package/dist/runtimes/antigravity/installation.js.map +1 -0
  41. package/dist/runtimes/antigravity/list-models.d.ts +12 -0
  42. package/dist/runtimes/antigravity/list-models.d.ts.map +1 -0
  43. package/dist/runtimes/antigravity/list-models.js +79 -0
  44. package/dist/runtimes/antigravity/list-models.js.map +1 -0
  45. package/dist/runtimes/antigravity/session.d.ts +17 -0
  46. package/dist/runtimes/antigravity/session.d.ts.map +1 -0
  47. package/dist/runtimes/antigravity/session.js +57 -0
  48. package/dist/runtimes/antigravity/session.js.map +1 -0
  49. package/dist/runtimes/claude/session.d.ts.map +1 -1
  50. package/dist/runtimes/claude/session.js +27 -14
  51. package/dist/runtimes/claude/session.js.map +1 -1
  52. package/dist/runtimes/codex/session.d.ts.map +1 -1
  53. package/dist/runtimes/codex/session.js +13 -9
  54. package/dist/runtimes/codex/session.js.map +1 -1
  55. package/dist/runtimes/cursor/index.d.ts +19 -0
  56. package/dist/runtimes/cursor/index.d.ts.map +1 -0
  57. package/dist/runtimes/cursor/index.js +15 -0
  58. package/dist/runtimes/cursor/index.js.map +1 -0
  59. package/dist/runtimes/cursor/installation.d.ts +9 -0
  60. package/dist/runtimes/cursor/installation.d.ts.map +1 -0
  61. package/dist/runtimes/cursor/installation.js +17 -0
  62. package/dist/runtimes/cursor/installation.js.map +1 -0
  63. package/dist/runtimes/cursor/list-models.d.ts +13 -0
  64. package/dist/runtimes/cursor/list-models.d.ts.map +1 -0
  65. package/dist/runtimes/cursor/list-models.js +92 -0
  66. package/dist/runtimes/cursor/list-models.js.map +1 -0
  67. package/dist/runtimes/cursor/session.d.ts +38 -0
  68. package/dist/runtimes/cursor/session.d.ts.map +1 -0
  69. package/dist/runtimes/cursor/session.js +74 -0
  70. package/dist/runtimes/cursor/session.js.map +1 -0
  71. package/dist/runtimes/grok/session.d.ts.map +1 -1
  72. package/dist/runtimes/grok/session.js +3 -1
  73. package/dist/runtimes/grok/session.js.map +1 -1
  74. package/dist/runtimes/pi/session.d.ts.map +1 -1
  75. package/dist/runtimes/pi/session.js +20 -10
  76. package/dist/runtimes/pi/session.js.map +1 -1
  77. package/dist/shared/acp/client-app.d.ts +2 -0
  78. package/dist/shared/acp/client-app.d.ts.map +1 -1
  79. package/dist/shared/acp/client-app.js +8 -1
  80. package/dist/shared/acp/client-app.js.map +1 -1
  81. package/dist/shared/acp/effort.d.ts +14 -0
  82. package/dist/shared/acp/effort.d.ts.map +1 -1
  83. package/dist/shared/acp/effort.js +15 -0
  84. package/dist/shared/acp/effort.js.map +1 -1
  85. package/dist/shared/acp/model.d.ts +4 -0
  86. package/dist/shared/acp/model.d.ts.map +1 -1
  87. package/dist/shared/acp/model.js +10 -1
  88. package/dist/shared/acp/model.js.map +1 -1
  89. package/dist/shared/acp/process.d.ts +2 -0
  90. package/dist/shared/acp/process.d.ts.map +1 -1
  91. package/dist/shared/acp/process.js +7 -2
  92. package/dist/shared/acp/process.js.map +1 -1
  93. package/dist/shared/acp/profile.d.ts +25 -3
  94. package/dist/shared/acp/profile.d.ts.map +1 -1
  95. package/dist/shared/acp/profile.js +15 -9
  96. package/dist/shared/acp/profile.js.map +1 -1
  97. package/dist/shared/acp/records.d.ts +3 -1
  98. package/dist/shared/acp/records.d.ts.map +1 -1
  99. package/dist/shared/acp/records.js +14 -6
  100. package/dist/shared/acp/records.js.map +1 -1
  101. package/dist/shared/acp/session.d.ts.map +1 -1
  102. package/dist/shared/acp/session.js +13 -7
  103. package/dist/shared/acp/session.js.map +1 -1
  104. package/dist/shared/acp/turns.d.ts +11 -8
  105. package/dist/shared/acp/turns.d.ts.map +1 -1
  106. package/dist/shared/acp/turns.js +34 -15
  107. package/dist/shared/acp/turns.js.map +1 -1
  108. package/dist/shared/acp/vendor-updates.d.ts +7 -0
  109. package/dist/shared/acp/vendor-updates.d.ts.map +1 -0
  110. package/dist/shared/acp/vendor-updates.js +46 -0
  111. package/dist/shared/acp/vendor-updates.js.map +1 -0
  112. package/dist/shared/executable/index.d.ts +1 -1
  113. package/dist/shared/executable/index.d.ts.map +1 -1
  114. package/dist/shared/executable/index.js.map +1 -1
  115. package/dist/shared/executable/version.d.ts +4 -2
  116. package/dist/shared/executable/version.d.ts.map +1 -1
  117. package/dist/shared/executable/version.js +7 -4
  118. package/dist/shared/executable/version.js.map +1 -1
  119. package/dist/shared/input-images.d.ts +23 -0
  120. package/dist/shared/input-images.d.ts.map +1 -0
  121. package/dist/shared/input-images.js +60 -0
  122. package/dist/shared/input-images.js.map +1 -0
  123. package/dist/shared/installation.d.ts +3 -0
  124. package/dist/shared/installation.d.ts.map +1 -1
  125. package/dist/shared/installation.js +4 -4
  126. package/dist/shared/installation.js.map +1 -1
  127. package/dist/testing/scripted-runtime.d.ts +3 -1
  128. package/dist/testing/scripted-runtime.d.ts.map +1 -1
  129. package/dist/testing/scripted-runtime.js +7 -6
  130. package/dist/testing/scripted-runtime.js.map +1 -1
  131. package/package.json +1 -1
@@ -2,6 +2,7 @@ import { ndJsonStream, } from "@agentclientprotocol/sdk";
2
2
  import { Readable, Writable } from "node:stream";
3
3
  import { spawnLineProcess } from "../executable/index.js";
4
4
  import { AcpError, acpProcessExitedError, acpRequestTimeoutError } from "./errors.js";
5
+ import { vendorSessionUpdateCarrier } from "./vendor-updates.js";
5
6
  export { client as createAcpClient, methods } from "@agentclientprotocol/sdk";
6
7
  function deadline(method, timeoutMs, controller) {
7
8
  const { promise, reject } = Promise.withResolvers();
@@ -52,14 +53,18 @@ export async function withAcpDeadline(process, method, timeoutMs, send) {
52
53
  }
53
54
  /** Spawn a stdio ACP agent and let the official SDK own the wire protocol. */
54
55
  export function startAcpProcess(command, args, app, options = {}) {
55
- const child = spawnLineProcess(command, args, options);
56
+ const { vendorSessionUpdates = [], ...spawnOptions } = options;
57
+ const child = spawnLineProcess(command, args, spawnOptions);
56
58
  // Node and TypeScript model the same WHATWG byte streams with incompatible
57
59
  // generic constraints.
58
60
  // oxlint-disable-next-line typescript/consistent-type-assertions, typescript/no-unsafe-type-assertion -- Native WHATWG stream expected by the SDK.
59
61
  const output = Writable.toWeb(child.stdin);
60
62
  // oxlint-disable-next-line typescript/consistent-type-assertions, typescript/no-unsafe-type-assertion -- Native WHATWG stream expected by the SDK.
61
63
  const input = Readable.toWeb(child.stdout);
62
- const connection = app.connect(ndJsonStream(output, input));
64
+ const stream = ndJsonStream(output, input);
65
+ const connection = app.connect(vendorSessionUpdates.length === 0
66
+ ? stream
67
+ : { readable: stream.readable.pipeThrough(vendorSessionUpdateCarrier(vendorSessionUpdates)), writable: stream.writable });
63
68
  let ended = false;
64
69
  let exitCode = null;
65
70
  child.onExit((code) => {
@@ -1 +1 @@
1
- {"version":3,"file":"process.js","sourceRoot":"","sources":["../../../src/shared/acp/process.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"process.js","sourceRoot":"","sources":["../../../src/shared/acp/process.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,9 @@ export { createUsageUpdateGate } from "./usage-wait.js";
6
6
  export interface AcpSessionProfile {
7
7
  readonly args: readonly string[] | ((options: SessionOptions) => readonly string[]);
8
8
  /** What this runtime's ACP surface lets the adapter carry (docs/spec attribution tier included). */
9
- readonly capabilities: SessionCapabilities;
9
+ readonly capabilities: Omit<SessionCapabilities, "images"> & {
10
+ readonly images?: boolean;
11
+ };
10
12
  readonly requestTimeoutMs?: number;
11
13
  readonly abortTimeoutMs?: number;
12
14
  /** Compatibility for agents that put a fully quoted shell line in `command`. */
@@ -18,7 +20,27 @@ export interface AcpSessionProfile {
18
20
  * frame oar never sees, so list everything the runtime is known to emit.
19
21
  */
20
22
  readonly extensionNotifications?: readonly string[];
23
+ /**
24
+ * Vendor request methods (runtime→app) oar records, then answers `-32601`, so the agent takes
25
+ * its fallback (cursor-agent 2026.09.28 `cursor/ask_question` → `session/request_permission`).
26
+ */
27
+ readonly extensionRequests?: readonly string[];
28
+ /**
29
+ * Vendor `session/update` kinds the SDK would drop (cursor-agent 2026.09.28 `subagent_spawned`);
30
+ * listed ones are recorded in wire order and their `subagentSessionId` links the child session.
31
+ */
32
+ readonly vendorSessionUpdates?: readonly string[];
21
33
  readonly initializeMeta?: (options: SessionOptions) => JsonRecord | undefined;
34
+ /**
35
+ * `clientCapabilities._meta` on initialize (cursor-agent 2026.09.28 `parameterizedModelPicker`,
36
+ * without which it folds effort into the model id and advertises no `thought_level` option).
37
+ */
38
+ readonly clientCapabilitiesMeta?: (options: SessionOptions) => JsonRecord | undefined;
39
+ /**
40
+ * Switch models with `session/set_config_option` on `model`, for agents whose `set_model` answers
41
+ * `{}` and pushes nothing (cursor-agent 2026.09.28): only that answer reports the effort menu.
42
+ */
43
+ readonly modelViaConfigOption?: boolean;
22
44
  readonly sessionMeta?: (options: SessionOptions) => JsonRecord | undefined;
23
45
  readonly selectAuthMethod?: (initialized: JsonRecord) => string | undefined;
24
46
  readonly validateOptions?: (options: SessionOptions) => void;
@@ -62,7 +84,7 @@ export interface OpenedAcpSession {
62
84
  readonly openMethod: "session/new" | "session/resume" | "session/load";
63
85
  /** The agent advertised `session/close`. */
64
86
  readonly supportsClose: boolean;
65
- /** The `session/set_model` response, when a model was requested; grok reports the applied model in its `_meta`. */
87
+ /** The model switch response, when a model was requested; grok reports the applied model in its `_meta`, cursor in its `configOptions`. */
66
88
  readonly setModelResponse?: JsonRecord;
67
89
  }
68
90
  /** Observer for the handshake: every runtime answer, in order, so the adapter can record them as events. */
@@ -71,7 +93,7 @@ export type AcpOpenObserver = (step: {
71
93
  readonly response: JsonRecord;
72
94
  }) => void;
73
95
  export declare function hasAcpCapability(value: unknown): boolean;
74
- export declare function promptAcp(process: AcpProcess, sessionId: string, input: string, extraParams?: JsonRecord): Promise<JsonRecord>;
96
+ export declare function promptAcp(process: AcpProcess, sessionId: string, prompt: readonly JsonRecord[], extraParams?: JsonRecord): Promise<JsonRecord>;
75
97
  export declare function closeAcpSession(process: AcpProcess, sessionId: string): Promise<void>;
76
98
  export declare function openAcpSession(process: AcpProcess, profile: AcpSessionProfile, options: SessionOptions, observe?: AcpOpenObserver): Promise<OpenedAcpSession>;
77
99
  //# sourceMappingURL=profile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../../src/shared/acp/profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../../src/shared/acp/profile.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /* oxlint-disable typescript/promise-function-async -- Deadline callbacks deliberately return the SDK's native promises. */
2
2
  import { methods, PROTOCOL_VERSION, } from "@agentclientprotocol/sdk";
3
3
  import { asRecord } from "../json.js";
4
- import { applyAcpEffort } from "./effort.js";
4
+ import { applyAcpEffort, applyAcpModel } from "./effort.js";
5
5
  import { withAcpDeadline } from "./process.js";
6
6
  export { createUsageUpdateGate } from "./usage-wait.js";
7
7
  export function hasAcpCapability(value) {
@@ -14,11 +14,11 @@ function responseRecord(method, value) {
14
14
  }
15
15
  return response;
16
16
  }
17
- export async function promptAcp(process, sessionId, input, extraParams = {}) {
17
+ export async function promptAcp(process, sessionId, prompt, extraParams = {}) {
18
18
  const method = methods.agent.session.prompt;
19
19
  const response = await withAcpDeadline(process, method, null, (requestOptions) => process.connection.agent.request(method, {
20
20
  sessionId,
21
- prompt: [{ type: "text", text: input }],
21
+ prompt,
22
22
  ...extraParams,
23
23
  }, requestOptions));
24
24
  // The SDK's built-in session router yields once before OAR's update handler.
@@ -33,12 +33,14 @@ export async function closeAcpSession(process, sessionId) {
33
33
  }
34
34
  async function initialize(process, profile, options, observe) {
35
35
  const meta = profile.initializeMeta?.(options);
36
+ const capabilitiesMeta = profile.clientCapabilitiesMeta?.(options);
36
37
  const method = methods.agent.initialize;
37
38
  const initialized = await withAcpDeadline(process, method, profile.requestTimeoutMs ?? 15_000, (requestOptions) => process.connection.agent.request(method, {
38
39
  protocolVersion: PROTOCOL_VERSION,
39
40
  clientCapabilities: {
40
41
  fs: { readTextFile: false, writeTextFile: false },
41
42
  terminal: true,
43
+ ...(capabilitiesMeta === undefined ? {} : { _meta: capabilitiesMeta }),
42
44
  },
43
45
  clientInfo: { name: "oar", version: "0.0.0" },
44
46
  ...(meta === undefined ? {} : { _meta: meta }),
@@ -91,13 +93,17 @@ export async function openAcpSession(process, profile, options, observe = () =>
91
93
  const initialized = await initialize(process, profile, options, observe);
92
94
  const opened = await createOrResume(process, profile, initialized, options, profile.sessionMeta?.(options));
93
95
  observe({ method: opened.openMethod, response: opened.response });
94
- let setModelResponse = undefined;
95
- if (options.model !== undefined) {
96
- setModelResponse = asRecord(await withAcpDeadline(process, "session/set_model", profile.requestTimeoutMs ?? 15_000, (requestOptions) => process.connection.agent.request("session/set_model", { sessionId: opened.sessionId, modelId: options.model }, requestOptions))) ?? undefined;
97
- observe({ method: "session/set_model", response: setModelResponse ?? {} });
98
- }
96
+ const setModelResponse = options.model === undefined
97
+ ? undefined
98
+ : await applyAcpModel(process, opened.sessionId, options.model, {
99
+ viaConfigOption: profile.modelViaConfigOption === true,
100
+ timeoutMs: profile.requestTimeoutMs ?? 15_000,
101
+ observe,
102
+ });
103
+ // A model switch re-derives the effort menu, so effort reads its answer when it lists one.
104
+ const configAnswer = Array.isArray(setModelResponse?.configOptions) ? setModelResponse : opened.response;
99
105
  if (options.effort !== undefined) {
100
- await applyAcpEffort(process, opened, options.effort, {
106
+ await applyAcpEffort(process, { ...opened, response: configAnswer }, options.effort, {
101
107
  timeoutMs: profile.requestTimeoutMs ?? 15_000,
102
108
  observe,
103
109
  });
@@ -1 +1 @@
1
- {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../../src/shared/acp/profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../../src/shared/acp/profile.ts"],"names":[],"mappings":"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"}
@@ -35,7 +35,9 @@ export interface AcpRecorder {
35
35
  * "subagent_spawned" | "subagent_progress", parent_session_id,
36
36
  * child_session_id, subagent_type, …}}`: snake_case, nested under `update`;
37
37
  * its `subagent_finished` carries only `child_session_id`, the parent being
38
- * the envelope's `sessionId`. A flat camelCase `{parentSessionId,
38
+ * the envelope's `sessionId`. cursor-agent 2026.09.28 names the child
39
+ * `subagentSessionId` in a parent `session/update` (`subagent_spawned`,
40
+ * `subagent_state_update`). A flat camelCase `{parentSessionId,
39
41
  * childSessionId | sessionId}` is the fixture spelling.
40
42
  */
41
43
  export declare function acpLineageOf(params: JsonRecord): {
@@ -1 +1 @@
1
- {"version":3,"file":"records.d.ts","sourceRoot":"","sources":["../../../src/shared/acp/records.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAW,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,IAAI,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAClC,MAAM,CAAC,YAAY,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAChD,oGAAoG;IACpG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IACpD,+KAA+K;IAC/K,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,IAAI,CAAC;IACjD,2EAA2E;IAC3E,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7D,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CAC5C;AAYD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAgB3G;AASD,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,eAAe,GAAG,WAAW,CAgFzE"}
1
+ {"version":3,"file":"records.d.ts","sourceRoot":"","sources":["../../../src/shared/acp/records.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAW,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGvD;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,IAAI,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAClC,MAAM,CAAC,YAAY,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAChD,oGAAoG;IACpG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IACpD,+KAA+K;IAC/K,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,IAAI,CAAC;IACjD,2EAA2E;IAC3E,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7D,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CAC5C;AAYD;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAgB3G;AASD,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,eAAe,GAAG,WAAW,CAqFzE"}
@@ -2,6 +2,7 @@ import { asRecord } from "../json.js";
2
2
  import { acpReportedEffort, acpReportedModel } from "./model.js";
3
3
  import { methods } from "./process.js";
4
4
  import { createAcpProjectionState, projectAcpUpdate } from "./projection.js";
5
+ import { carriedVendorUpdate } from "./vendor-updates.js";
5
6
  function stringField(record, names) {
6
7
  for (const name of names) {
7
8
  const value = record[name];
@@ -18,7 +19,9 @@ function stringField(record, names) {
18
19
  * "subagent_spawned" | "subagent_progress", parent_session_id,
19
20
  * child_session_id, subagent_type, …}}`: snake_case, nested under `update`;
20
21
  * its `subagent_finished` carries only `child_session_id`, the parent being
21
- * the envelope's `sessionId`. A flat camelCase `{parentSessionId,
22
+ * the envelope's `sessionId`. cursor-agent 2026.09.28 names the child
23
+ * `subagentSessionId` in a parent `session/update` (`subagent_spawned`,
24
+ * `subagent_state_update`). A flat camelCase `{parentSessionId,
22
25
  * childSessionId | sessionId}` is the fixture spelling.
23
26
  */
24
27
  export function acpLineageOf(params) {
@@ -31,14 +34,14 @@ export function acpLineageOf(params) {
31
34
  }
32
35
  // Nested: an explicit child, the parent explicit or the envelope's own id.
33
36
  const update = asRecord(params.update);
34
- const nestedChild = update === null ? null : stringField(update, ["childSessionId", "child_session_id"]);
37
+ const nestedChild = update === null ? null : stringField(update, ["childSessionId", "child_session_id", "subagentSessionId"]);
35
38
  const nestedParent = update === null ? null : (stringField(update, ["parentSessionId", "parent_session_id"]) ?? envelope);
36
39
  if (nestedParent !== null && nestedChild !== null && nestedParent !== nestedChild) {
37
40
  return { parent: nestedParent, child: nestedChild };
38
41
  }
39
42
  return null;
40
43
  }
41
- function linkFromExtension(kernel, params) {
44
+ function linkLineage(kernel, params) {
42
45
  const lineage = acpLineageOf(params);
43
46
  if (lineage !== null) {
44
47
  kernel.link({ ...lineage, via: "tool_call" });
@@ -71,9 +74,13 @@ export function createAcpRecorder(usageGate) {
71
74
  append(kernel);
72
75
  }
73
76
  },
74
- update(notification) {
77
+ update(received) {
75
78
  write((kernel) => {
76
- const update = asRecord(notification.update);
79
+ // A vendor kind carried past the SDK's parse is recorded as the
80
+ // runtime sent it (vendor-updates.ts).
81
+ const carried = carriedVendorUpdate(received);
82
+ const notification = carried === null ? received : { ...received, update: carried };
83
+ const update = carried ?? asRecord(notification.update);
77
84
  const { sessionId } = notification;
78
85
  const foreign = sessionId !== kernel.sessionId;
79
86
  if (foreign) {
@@ -85,6 +92,7 @@ export function createAcpRecorder(usageGate) {
85
92
  if (!foreign) {
86
93
  usageGate.observe(events.some((event) => event.kind === "usage") ? record.seq : undefined);
87
94
  }
95
+ linkLineage(kernel, notification);
88
96
  });
89
97
  },
90
98
  extension(method, params) {
@@ -101,7 +109,7 @@ export function createAcpRecorder(usageGate) {
101
109
  kernel.node(sessionId);
102
110
  }
103
111
  kernel.frame({ type: method, native: params, events: [] }, foreign ? { sessionId } : undefined);
104
- linkFromExtension(kernel, params);
112
+ linkLineage(kernel, params);
105
113
  });
106
114
  },
107
115
  step(method, response) {
@@ -1 +1 @@
1
- {"version":3,"file":"records.js","sourceRoot":"","sources":["../../../src/shared/acp/records.ts"],"names":[],"mappings":"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"}
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,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
+ {"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,CAiInE"}
@@ -5,7 +5,7 @@ import { closeAcpSession, createUsageUpdateGate, openAcpSession, } from "./profi
5
5
  import { startAcpProcess } from "./process.js";
6
6
  import { createAcpRecorder } from "./records.js";
7
7
  import { createAcpTerminalHost } from "./terminal.js";
8
- import { createAcpTurns } from "./turns.js";
8
+ import { acpTakesImages, createAcpTurns } from "./turns.js";
9
9
  /*
10
10
  * ACP mapping onto the record stream (shared by grok and kimi; profiles carry the vendor bits):
11
11
  * - every `session/update` is ONE event record, native verbatim, for WHATEVER
@@ -46,8 +46,13 @@ export function acpSession(profile) {
46
46
  recorder.answered(id, reply);
47
47
  },
48
48
  extensionNotifications: profile.extensionNotifications ?? [],
49
+ extensionRequests: profile.extensionRequests ?? [],
50
+ });
51
+ const runtime = startAcpProcess(installation.command, args, client, {
52
+ cwd: options.cwd,
53
+ env: environment,
54
+ ...(profile.vendorSessionUpdates === undefined ? {} : { vendorSessionUpdates: profile.vendorSessionUpdates }),
49
55
  });
50
- const runtime = startAcpProcess(installation.command, args, client, { cwd: options.cwd, env: environment });
51
56
  const opened = await openAcpSession(runtime, profile, options, (step) => {
52
57
  recorder.step(step.method, step.response);
53
58
  }).catch(async (error) => {
@@ -59,7 +64,8 @@ export function acpSession(profile) {
59
64
  const kernel = createSessionKernel(opened.sessionId);
60
65
  recorder.bind(kernel);
61
66
  let disposeRequest = null;
62
- const turns = createAcpTurns({ kernel, runtime, profile, usageGate });
67
+ const capabilities = { ...profile.capabilities, images: profile.capabilities.images ?? acpTakesImages(opened.initialized) };
68
+ const turns = createAcpTurns({ kernel, runtime, profile, usageGate, capabilities });
63
69
  // oxlint-disable-next-line promise/prefer-await-to-then, promise/always-return -- Exit observation outlives session creation.
64
70
  void runtime.exited.then((code) => {
65
71
  void terminalHost.dispose();
@@ -83,8 +89,8 @@ export function acpSession(profile) {
83
89
  };
84
90
  return sealSession({
85
91
  id: kernel.sessionId,
86
- capabilities: profile.capabilities,
87
- prompt: (input, inputOptions) => control({ kind: "prompt", input, ...inputOptions }, (request) => (turns.active() === null ? turns.begin(request, input) : { kind: "rejected", code: "busy", reason: "busy" })),
92
+ capabilities,
93
+ prompt: (input, inputOptions) => control({ kind: "prompt", input, ...inputOptions }, (request) => (turns.active() === null ? turns.begin(request, input, inputOptions?.images) : { kind: "rejected", code: "busy", reason: "busy" })),
88
94
  steer: (input, inputOptions) => control({ kind: "steer", input, ...inputOptions }, () => {
89
95
  const steerParams = profile.steerParams;
90
96
  if (steerParams === undefined) {
@@ -93,9 +99,9 @@ export function acpSession(profile) {
93
99
  const state = turns.active();
94
100
  return state === null
95
101
  ? { kind: "rejected", code: "no_active_turn", reason: "not_steerable: no active turn" }
96
- : turns.steer(state, input, steerParams(input));
102
+ : turns.steer(state, input, inputOptions?.images, steerParams(input));
97
103
  }),
98
- queue: (input, inputOptions) => control({ kind: "queue", input, ...inputOptions }, () => turns.hold(input)),
104
+ queue: (input, inputOptions) => control({ kind: "queue", input, ...inputOptions }, () => turns.hold(input, inputOptions?.images)),
99
105
  abort: () => control({ kind: "abort" }, () => {
100
106
  const state = turns.active();
101
107
  return state === null ? { kind: "rejected", code: "no_active_turn", reason: "no active turn" } : turns.abort(state);
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/shared/acp/session.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,cAAc,GAEf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAI5C;;;;;;;;;;GAUG;AAEH,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,yEAAyE;QACzE,+CAA+C;QAC/C,MAAM,SAAS,GAAG,qBAAqB,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,kBAAkB,CAAC,YAAY,EAAE;YAC9C,MAAM,EAAE,CAAC,YAAY,EAAE,EAAE;gBACvB,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAChC,CAAC;YACD,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;gBAC5B,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACrC,CAAC;YACD,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;gBAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YACzC,CAAC;YACD,QAAQ,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;gBACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC/B,CAAC;YACD,sBAAsB,EAAE,OAAO,CAAC,sBAAsB,IAAI,EAAE;SAC7D,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,EAAE,CAAC,IAAI,EAAE,EAAE;YACtE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;YAChC,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,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACrD,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEtB,IAAI,cAAc,GAAyB,IAAI,CAAC;QAChD,MAAM,KAAK,GAAG,cAAc,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QACtE,8HAA8H;QAC9H,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YAChC,KAAK,YAAY,CAAC,OAAO,EAAE,CAAC;YAC5B,uEAAuE;YACvE,sEAAsE;YACtE,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACnE,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,qEAAqE;QACrE,uEAAuE;QACvE,wEAAwE;QACxE,qEAAqE;QACrE,wEAAwE;QACxE,sEAAsE;QACtE,0BAA0B;QAC1B,MAAM,OAAO,GAAG,KAAK,EACnB,IAAiB,EACjB,MAAwE,EAChD,EAAE;YAC1B,IAAI,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC;gBACpD,MAAM,OAAO,CAAC,MAAM,CAAC;YACvB,CAAC;YACD,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACtC,CAAC,CAAC;QAEF,OAAO,WAAW,CAAC;YACjB,EAAE,EAAE,MAAM,CAAC,SAAS;YACpB,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,MAAM,EAAE,CAAC,KAAK,EAAE,YAA2B,EAA0B,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,YAAY,EAAE,EAAE,CAAC,OAAO,EAAgB,EAAE,CACpJ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAC/G,KAAK,EAAE,CAAC,KAAK,EAAE,YAA2B,EAA0B,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,YAAY,EAAE,EAAE,GAAyC,EAAE;gBACnK,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;gBACxC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;oBAC9B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,0DAA0D,EAAE,CAAC;gBACvH,CAAC;gBACD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC7B,OAAO,KAAK,KAAK,IAAI;oBACnB,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,+BAA+B,EAAE;oBACvF,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;YACpD,CAAC,CAAC;YACF,KAAK,EAAE,CAAC,KAAK,EAAE,YAA2B,EAA0B,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,YAAY,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClJ,KAAK,EAAE,GAA2B,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,GAAyC,EAAE;gBACzG,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC7B,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACtH,CAAC,CAAC;YACF,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;YACnE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE;YAC/B,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE;YAC3B,OAAO,EAAE,KAAK,IAAI,EAAE;gBAClB,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;oBAC5B,OAAO,CAAC,yDAAyD;gBACnE,CAAC;gBACD,sEAAsE;gBACtE,6DAA6D;gBAC7D,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC;gBAC3C,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;gBAClE,IAAI,IAAI,EAAE,CAAC;oBACT,iFAAiF;oBACjF,kEAAkE;oBAClE,kEAAkE;oBAClE,iEAAiE;oBACjE,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;oBACxD,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;oBAC7B,OAAO;gBACT,CAAC;gBACD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC7B,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;oBACtC,MAAM,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC3B,CAAC;gBACD,IAAI,MAAM,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;oBAC5C,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,5 +1,5 @@
1
- import type { RequestRecord, ResponseBody, TurnOutcome } from "../../contracts/session.js";
2
- import type { JsonRecord } from "../json.js";
1
+ import type { InputImage, RequestRecord, ResponseBody, SessionCapabilities, TurnOutcome } from "../../contracts/session.js";
2
+ import { type JsonRecord } from "../json.js";
3
3
  import type { SessionKernel } from "../session-kernel.js";
4
4
  import { type AcpSessionProfile } from "./profile.js";
5
5
  import { type AcpProcess } from "./process.js";
@@ -23,16 +23,18 @@ export interface ActiveTurn {
23
23
  latestRequest: number;
24
24
  fallback: NodeJS.Timeout | null;
25
25
  }
26
+ /** The agent advertised image prompts in `initialize` (`agentCapabilities.promptCapabilities.image`). */
27
+ export declare function acpTakesImages(initialized: JsonRecord): boolean;
26
28
  export interface AcpTurns {
27
29
  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>;
30
+ /** Open a turn with one prompt RPC; rejected when the process is gone or its images can't go (`inputImagesRefusal`). */
31
+ begin(request: RequestRecord | null, input: string, images?: readonly InputImage[]): ResponseBody;
32
+ /** Another prompt RPC inside the active turn (the profile's steer params); rejected like `begin`. */
33
+ steer(state: ActiveTurn, input: string, images: readonly InputImage[] | undefined, extraParams: JsonRecord): Promise<ResponseBody>;
32
34
  /** session/cancel, then a bounded wait after which the process is killed. */
33
35
  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
+ /** Hold input for the next turn, drained when the active one closes; rejected like `begin`. */
37
+ hold(input: string, images?: readonly InputImage[]): Promise<ResponseBody>;
36
38
  /** The process is gone: close the active turn (its end is the exited response) and drop held input. */
37
39
  onExit(): void;
38
40
  }
@@ -41,5 +43,6 @@ export declare function createAcpTurns(deps: {
41
43
  readonly runtime: AcpProcess;
42
44
  readonly profile: AcpSessionProfile;
43
45
  readonly usageGate: UsageUpdateGate;
46
+ readonly capabilities: Pick<SessionCapabilities, "images">;
44
47
  }): AcpTurns;
45
48
  //# sourceMappingURL=turns.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"turns.d.ts","sourceRoot":"","sources":["../../../src/shared/acp/turns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EAEV,aAAa,EACb,YAAY,EACZ,mBAAmB,EAEnB,WAAW,EACZ,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AACvD,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,yGAAyG;AACzG,wBAAgB,cAAc,CAAC,WAAW,EAAE,UAAU,GAAG,OAAO,CAE/D;AAUD,MAAM,WAAW,QAAQ;IACvB,MAAM,IAAI,UAAU,GAAG,IAAI,CAAC;IAC5B,wHAAwH;IACxH,KAAK,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,UAAU,EAAE,GAAG,YAAY,CAAC;IAClG,qGAAqG;IACrG,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,EAAE,WAAW,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACnI,6EAA6E;IAC7E,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAChD,+FAA+F;IAC/F,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,UAAU,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3E,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;IACpC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;CAC5D,GAAG,QAAQ,CAqKX"}
@@ -1,9 +1,23 @@
1
+ import { pathToFileURL } from "node:url";
2
+ import { withInputImages } from "../input-images.js";
3
+ import { asRecord } from "../json.js";
1
4
  import { AcpError, acpProcessExitedError } from "./errors.js";
2
5
  import { promptAcp } from "./profile.js";
3
6
  import { methods } from "./process.js";
4
7
  import { acpErrorNative, acpFailureOutcome, defaultAcpPromptOutcome, } from "./projection.js";
8
+ /** The agent advertised image prompts in `initialize` (`agentCapabilities.promptCapabilities.image`). */
9
+ export function acpTakesImages(initialized) {
10
+ return asRecord(asRecord(initialized.agentCapabilities)?.promptCapabilities)?.image === true;
11
+ }
12
+ /** One input as ACP ContentBlocks: the images (each naming its file as `uri`), then the text. */
13
+ function acpPrompt(input, images) {
14
+ return [
15
+ ...images.map((image) => ({ type: "image", mimeType: image.mediaType, data: image.data, uri: pathToFileURL(image.path).href })),
16
+ { type: "text", text: input },
17
+ ];
18
+ }
5
19
  export function createAcpTurns(deps) {
6
- const { kernel, runtime, profile, usageGate } = deps;
20
+ const { kernel, runtime, profile, usageGate, capabilities } = deps;
7
21
  const rootId = kernel.sessionId;
8
22
  const held = [];
9
23
  let active = null;
@@ -36,7 +50,7 @@ export function createAcpTurns(deps) {
36
50
  closeTurn(state);
37
51
  }
38
52
  };
39
- const startVendorPrompt = (state, input, extraParams = {}) => {
53
+ const startVendorPrompt = (state, prompt, extraParams = {}) => {
40
54
  nextRequest += 1;
41
55
  const requestNumber = nextRequest;
42
56
  state.latestRequest = requestNumber;
@@ -44,7 +58,7 @@ export function createAcpTurns(deps) {
44
58
  void (async () => {
45
59
  try {
46
60
  usageGate.arm();
47
- const result = await promptAcp(runtime, rootId, input, extraParams);
61
+ const result = await promptAcp(runtime, rootId, prompt, extraParams);
48
62
  // Deliberate ordering: the answer's event waits (bounded) for the
49
63
  // usage_update kimi pushes AFTER answering, so the usage record
50
64
  // precedes the turn end and contextUsage() at turn_ended is this
@@ -82,7 +96,7 @@ export function createAcpTurns(deps) {
82
96
  })();
83
97
  };
84
98
  const gone = () => ({ kind: "rejected", code: "runtime_exited", reason: acpProcessExitedError(runtime.exitCode).message });
85
- const begin = (request, input) => {
99
+ const open = (request, prompt) => {
86
100
  if (runtime.closed) {
87
101
  return gone();
88
102
  }
@@ -95,30 +109,33 @@ export function createAcpTurns(deps) {
95
109
  fallback: null,
96
110
  };
97
111
  active = state;
98
- startVendorPrompt(state, input);
112
+ startVendorPrompt(state, prompt);
99
113
  return { kind: "accepted" };
100
114
  };
115
+ const begin = (request, input, images) => withInputImages(capabilities, images, (loaded) => open(request, acpPrompt(input, loaded)));
101
116
  function drainHeld() {
102
117
  // Held input is dropped once the stream says the runtime is unreachable
103
118
  // (an `exited` response or a `dispose` request), not by an adapter flag.
104
119
  if (kernel.unreachable() !== null || active !== null || runtime.closed) {
105
120
  return;
106
121
  }
107
- const input = held.shift();
108
- if (input !== undefined) {
109
- begin(null, input);
122
+ const prompt = held.shift();
123
+ if (prompt !== undefined) {
124
+ open(null, prompt);
110
125
  }
111
126
  }
112
127
  return {
113
128
  active: () => active,
114
129
  begin,
115
- async steer(state, input, extraParams) {
130
+ async steer(state, input, images, extraParams) {
116
131
  await runtime.spawned;
117
132
  if (runtime.closed) {
118
133
  return gone();
119
134
  }
120
- startVendorPrompt(state, input, extraParams);
121
- return { kind: "accepted" };
135
+ return withInputImages(capabilities, images, (loaded) => {
136
+ startVendorPrompt(state, acpPrompt(input, loaded), extraParams);
137
+ return { kind: "accepted" };
138
+ });
122
139
  },
123
140
  async abort(state) {
124
141
  if (!state.abortRequested) {
@@ -140,14 +157,16 @@ export function createAcpTurns(deps) {
140
157
  }
141
158
  return { kind: "accepted" };
142
159
  },
143
- async hold(input) {
160
+ async hold(input, images) {
144
161
  await runtime.spawned;
145
162
  if (runtime.closed) {
146
163
  return gone();
147
164
  }
148
- held.push(input);
149
- queueMicrotask(drainHeld);
150
- return { kind: "accepted" };
165
+ return withInputImages(capabilities, images, (loaded) => {
166
+ held.push(acpPrompt(input, loaded));
167
+ queueMicrotask(drainHeld);
168
+ return { kind: "accepted" };
169
+ });
151
170
  },
152
171
  onExit() {
153
172
  if (active !== null) {