@jini-ai/agent-runtime 0.2.1 → 0.3.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 (194) hide show
  1. package/README.md +2 -2
  2. package/dist/agent-protocol/acp/session.d.ts +206 -1
  3. package/dist/agent-protocol/acp/session.d.ts.map +1 -1
  4. package/dist/agent-protocol/acp/session.js +505 -350
  5. package/dist/agent-protocol/acp/session.js.map +1 -1
  6. package/dist/agent-protocol/core/json-line-stream.d.ts +53 -0
  7. package/dist/agent-protocol/core/json-line-stream.d.ts.map +1 -1
  8. package/dist/agent-protocol/core/json-line-stream.js +307 -255
  9. package/dist/agent-protocol/core/json-line-stream.js.map +1 -1
  10. package/dist/agent-protocol/pi-rpc/events.d.ts +22 -1
  11. package/dist/agent-protocol/pi-rpc/events.d.ts.map +1 -1
  12. package/dist/agent-protocol/pi-rpc/events.js +189 -153
  13. package/dist/agent-protocol/pi-rpc/events.js.map +1 -1
  14. package/dist/agent-protocol/pi-rpc/session.d.ts +39 -0
  15. package/dist/agent-protocol/pi-rpc/session.d.ts.map +1 -1
  16. package/dist/agent-protocol/pi-rpc/session.js +143 -107
  17. package/dist/agent-protocol/pi-rpc/session.js.map +1 -1
  18. package/dist/auth.js +1 -1
  19. package/dist/capabilities.d.ts +1 -1
  20. package/dist/claude-stream.d.ts +65 -2
  21. package/dist/claude-stream.d.ts.map +1 -1
  22. package/dist/claude-stream.js +569 -442
  23. package/dist/claude-stream.js.map +1 -1
  24. package/dist/defs/aider.d.ts.map +1 -1
  25. package/dist/defs/aider.js +13 -1
  26. package/dist/defs/aider.js.map +1 -1
  27. package/dist/defs/amp.d.ts.map +1 -1
  28. package/dist/defs/amp.js +16 -1
  29. package/dist/defs/amp.js.map +1 -1
  30. package/dist/defs/amr.d.ts +2 -1
  31. package/dist/defs/amr.d.ts.map +1 -1
  32. package/dist/defs/amr.js +12 -1
  33. package/dist/defs/amr.js.map +1 -1
  34. package/dist/defs/antigravity.d.ts +25 -13
  35. package/dist/defs/antigravity.d.ts.map +1 -1
  36. package/dist/defs/antigravity.js +190 -163
  37. package/dist/defs/antigravity.js.map +1 -1
  38. package/dist/defs/claude.d.ts +7 -0
  39. package/dist/defs/claude.d.ts.map +1 -1
  40. package/dist/defs/claude.js +61 -3
  41. package/dist/defs/claude.js.map +1 -1
  42. package/dist/defs/codebuddy.d.ts.map +1 -1
  43. package/dist/defs/codebuddy.js +9 -1
  44. package/dist/defs/codebuddy.js.map +1 -1
  45. package/dist/defs/codex.d.ts +1 -0
  46. package/dist/defs/codex.d.ts.map +1 -1
  47. package/dist/defs/codex.js +34 -0
  48. package/dist/defs/codex.js.map +1 -1
  49. package/dist/defs/copilot.d.ts.map +1 -1
  50. package/dist/defs/copilot.js +15 -1
  51. package/dist/defs/copilot.js.map +1 -1
  52. package/dist/defs/cursor-agent.d.ts.map +1 -1
  53. package/dist/defs/cursor-agent.js +24 -2
  54. package/dist/defs/cursor-agent.js.map +1 -1
  55. package/dist/defs/deepseek.d.ts.map +1 -1
  56. package/dist/defs/deepseek.js +12 -0
  57. package/dist/defs/deepseek.js.map +1 -1
  58. package/dist/defs/devin.d.ts +2 -1
  59. package/dist/defs/devin.d.ts.map +1 -1
  60. package/dist/defs/devin.js +12 -7
  61. package/dist/defs/devin.js.map +1 -1
  62. package/dist/defs/grok-build.d.ts.map +1 -1
  63. package/dist/defs/grok-build.js +10 -0
  64. package/dist/defs/grok-build.js.map +1 -1
  65. package/dist/defs/hermes.d.ts +1 -0
  66. package/dist/defs/hermes.d.ts.map +1 -1
  67. package/dist/defs/hermes.js +3 -0
  68. package/dist/defs/hermes.js.map +1 -1
  69. package/dist/defs/kilo.d.ts +1 -0
  70. package/dist/defs/kilo.d.ts.map +1 -1
  71. package/dist/defs/kilo.js +3 -0
  72. package/dist/defs/kilo.js.map +1 -1
  73. package/dist/defs/kimi.d.ts +1 -0
  74. package/dist/defs/kimi.d.ts.map +1 -1
  75. package/dist/defs/kimi.js +3 -0
  76. package/dist/defs/kimi.js.map +1 -1
  77. package/dist/defs/kiro.d.ts +1 -0
  78. package/dist/defs/kiro.d.ts.map +1 -1
  79. package/dist/defs/kiro.js +3 -0
  80. package/dist/defs/kiro.js.map +1 -1
  81. package/dist/defs/opencode.d.ts +4 -0
  82. package/dist/defs/opencode.d.ts.map +1 -1
  83. package/dist/defs/opencode.js +19 -0
  84. package/dist/defs/opencode.js.map +1 -1
  85. package/dist/defs/pi.d.ts +5 -1
  86. package/dist/defs/pi.d.ts.map +1 -1
  87. package/dist/defs/pi.js +16 -4
  88. package/dist/defs/pi.js.map +1 -1
  89. package/dist/defs/qoder.d.ts +1 -0
  90. package/dist/defs/qoder.d.ts.map +1 -1
  91. package/dist/defs/qoder.js +15 -0
  92. package/dist/defs/qoder.js.map +1 -1
  93. package/dist/defs/qwen.d.ts.map +1 -1
  94. package/dist/defs/qwen.js +9 -0
  95. package/dist/defs/qwen.js.map +1 -1
  96. package/dist/defs/reasonix.d.ts +5 -0
  97. package/dist/defs/reasonix.d.ts.map +1 -1
  98. package/dist/defs/reasonix.js +19 -6
  99. package/dist/defs/reasonix.js.map +1 -1
  100. package/dist/defs/shared.d.ts +31 -1
  101. package/dist/defs/shared.d.ts.map +1 -1
  102. package/dist/defs/shared.js +35 -0
  103. package/dist/defs/shared.js.map +1 -1
  104. package/dist/defs/trae-cli.d.ts +1 -0
  105. package/dist/defs/trae-cli.d.ts.map +1 -1
  106. package/dist/defs/trae-cli.js +3 -0
  107. package/dist/defs/trae-cli.js.map +1 -1
  108. package/dist/defs/vibe.d.ts +1 -0
  109. package/dist/defs/vibe.d.ts.map +1 -1
  110. package/dist/defs/vibe.js +3 -0
  111. package/dist/defs/vibe.js.map +1 -1
  112. package/dist/detection.d.ts +1 -1
  113. package/dist/detection.d.ts.map +1 -1
  114. package/dist/detection.js +7 -2
  115. package/dist/detection.js.map +1 -1
  116. package/dist/env.js +1 -1
  117. package/dist/executables.js +1 -1
  118. package/dist/index.d.ts +2 -1
  119. package/dist/index.d.ts.map +1 -1
  120. package/dist/index.js +2 -1
  121. package/dist/index.js.map +1 -1
  122. package/dist/invocation.js +1 -1
  123. package/dist/json-event-stream.d.ts.map +1 -1
  124. package/dist/json-event-stream.js +63 -0
  125. package/dist/json-event-stream.js.map +1 -1
  126. package/dist/launch.js +1 -1
  127. package/dist/log-file.d.ts +23 -0
  128. package/dist/log-file.d.ts.map +1 -0
  129. package/dist/log-file.js +56 -0
  130. package/dist/log-file.js.map +1 -0
  131. package/dist/mcp.d.ts +1 -1
  132. package/dist/metadata.d.ts +1 -1
  133. package/dist/mmd-routes.js +1 -1
  134. package/dist/model-registry.d.ts +7 -45
  135. package/dist/model-registry.d.ts.map +1 -1
  136. package/dist/model-registry.js.map +1 -1
  137. package/dist/models.d.ts +1 -1
  138. package/dist/opencode-log.js +1 -1
  139. package/dist/paths.js +1 -1
  140. package/dist/prompt-augmenter.d.ts +1 -1
  141. package/dist/prompt-augmenter.js +1 -1
  142. package/dist/prompt-budget.d.ts +1 -1
  143. package/dist/prompt-file.js +1 -1
  144. package/dist/providers/anthropic-messages.d.ts +198 -6
  145. package/dist/providers/anthropic-messages.d.ts.map +1 -1
  146. package/dist/providers/anthropic-messages.js +318 -141
  147. package/dist/providers/anthropic-messages.js.map +1 -1
  148. package/dist/providers/azure-chat.d.ts +113 -3
  149. package/dist/providers/azure-chat.d.ts.map +1 -1
  150. package/dist/providers/azure-chat.js +114 -21
  151. package/dist/providers/azure-chat.js.map +1 -1
  152. package/dist/providers/connection-guard.d.ts +121 -1
  153. package/dist/providers/connection-guard.d.ts.map +1 -1
  154. package/dist/providers/connection-guard.js +205 -3
  155. package/dist/providers/connection-guard.js.map +1 -1
  156. package/dist/providers/connection-test.d.ts +62 -0
  157. package/dist/providers/connection-test.d.ts.map +1 -0
  158. package/dist/providers/connection-test.js +404 -0
  159. package/dist/providers/connection-test.js.map +1 -0
  160. package/dist/providers/elevenlabs.d.ts.map +1 -1
  161. package/dist/providers/elevenlabs.js +3 -2
  162. package/dist/providers/elevenlabs.js.map +1 -1
  163. package/dist/providers/google-messages.d.ts +208 -7
  164. package/dist/providers/google-messages.d.ts.map +1 -1
  165. package/dist/providers/google-messages.js +331 -105
  166. package/dist/providers/google-messages.js.map +1 -1
  167. package/dist/providers/index.d.ts +1 -0
  168. package/dist/providers/index.d.ts.map +1 -1
  169. package/dist/providers/index.js +1 -0
  170. package/dist/providers/index.js.map +1 -1
  171. package/dist/providers/model-catalog.d.ts.map +1 -1
  172. package/dist/providers/model-catalog.js +21 -0
  173. package/dist/providers/model-catalog.js.map +1 -1
  174. package/dist/providers/ollama-chat.d.ts +190 -1
  175. package/dist/providers/ollama-chat.d.ts.map +1 -1
  176. package/dist/providers/ollama-chat.js +319 -110
  177. package/dist/providers/ollama-chat.js.map +1 -1
  178. package/dist/providers/openai-chat.d.ts +222 -14
  179. package/dist/providers/openai-chat.d.ts.map +1 -1
  180. package/dist/providers/openai-chat.js +377 -128
  181. package/dist/providers/openai-chat.js.map +1 -1
  182. package/dist/providers/sse-decode.d.ts +2 -2
  183. package/dist/providers/sse-decode.js +2 -2
  184. package/dist/qoder-stream.d.ts +1 -1
  185. package/dist/qoder-stream.js +1 -1
  186. package/dist/registry.d.ts +16 -0
  187. package/dist/registry.d.ts.map +1 -1
  188. package/dist/registry.js +19 -1
  189. package/dist/registry.js.map +1 -1
  190. package/dist/resolution.js +1 -1
  191. package/dist/terminal-launch.js +1 -1
  192. package/dist/types.d.ts +181 -89
  193. package/dist/types.d.ts.map +1 -1
  194. package/package.json +6 -4
@@ -33,6 +33,15 @@ export const FIRE_AND_FORGET_METHODS = new Set([
33
33
  * @param writable - The child process stdin stream.
34
34
  * @param raw - The parsed `extension_ui_request` RPC object from pi's stdout.
35
35
  */
36
+ // select: pick the first option if available, else cancel.
37
+ export function firstDialogOptionResult(opts) {
38
+ if (!Array.isArray(opts) || opts.length === 0)
39
+ return { cancelled: true };
40
+ const first = opts[0];
41
+ return typeof first === 'string'
42
+ ? { value: first }
43
+ : { value: getRecord(first)?.label ?? getRecord(first)?.value ?? '' };
44
+ }
36
45
  export function replyExtensionUi(writable, raw) {
37
46
  if (raw?.id == null)
38
47
  return;
@@ -41,25 +50,9 @@ export function replyExtensionUi(writable, raw) {
41
50
  return;
42
51
  // Dialog methods: auto-resolve to keep pi unblocked.
43
52
  // confirm → true, select/input/editor → empty-ish default
44
- let result;
45
- if (raw.method === 'confirm') {
46
- result = { confirmed: true };
47
- }
48
- else {
49
- // select: pick first option if available, else cancel
50
- const params = getRecord(raw.params);
51
- const opts = params?.options ?? raw.options;
52
- if (Array.isArray(opts) && opts.length > 0) {
53
- const first = opts[0];
54
- result =
55
- typeof first === 'string'
56
- ? { value: first }
57
- : { value: getRecord(first)?.label ?? getRecord(first)?.value ?? '' };
58
- }
59
- else {
60
- result = { cancelled: true };
61
- }
62
- }
53
+ const result = raw.method === 'confirm'
54
+ ? { confirmed: true }
55
+ : firstDialogOptionResult(getRecord(raw.params)?.options ?? raw.options);
63
56
  writable.write(`${JSON.stringify({ type: 'extension_ui_response', id: raw.id, ...result })}\n`);
64
57
  }
65
58
  /**
@@ -128,6 +121,109 @@ export function resolveSessionPathChangedSince(cwd, before) {
128
121
  // never actually be exercised.
129
122
  return changed.length === 1 ? changed[0].path : null;
130
123
  }
124
+ export function piImageMimeType(ext) {
125
+ if (ext === '.png')
126
+ return 'image/png';
127
+ if (ext === '.gif')
128
+ return 'image/gif';
129
+ if (ext === '.webp')
130
+ return 'image/webp';
131
+ return 'image/jpeg'; // .jpg, .jpeg, and unknown
132
+ }
133
+ // Re-verify the resolved path stays inside the upload root. Without this, a
134
+ // path that passed server.ts's safeImages prefix check (under UPLOAD_DIR)
135
+ // could be a symlink pointing to a file outside UPLOAD_DIR, and we'd
136
+ // read/base64-forward it to pi.
137
+ // Exported for direct testing: the `+ path.sep` is load-bearing and easy to
138
+ // drop in a later edit, so it is pinned by its own unit test rather than only
139
+ // exercised through `tryReadImagePayload`.
140
+ export function isPathUnderRoot(realPath, resolvedRoot) {
141
+ return realPath === resolvedRoot || realPath.startsWith(resolvedRoot + path.sep);
142
+ }
143
+ /**
144
+ * Validates and reads one candidate image path for pi's `images` prompt
145
+ * field: resolves symlinks, re-verifies the resolved path is a regular file
146
+ * under `uploadRoot`, checks the extension allowlist, and enforces the
147
+ * remaining total-byte budget. Returns `null` for any rejection or read
148
+ * failure rather than throwing, so one bad image never fails the whole run.
149
+ */
150
+ export function tryReadImagePayload(imgPath, uploadRoot, totalBytesSoFar) {
151
+ if (typeof imgPath !== 'string' || !imgPath.length)
152
+ return null;
153
+ try {
154
+ // Resolve symlinks and verify it's a regular file.
155
+ const realPath = fs.realpathSync(imgPath);
156
+ const stat = fs.statSync(realPath);
157
+ if (!stat.isFile())
158
+ return null;
159
+ if (uploadRoot) {
160
+ const resolvedRoot = fs.realpathSync(uploadRoot);
161
+ if (!isPathUnderRoot(realPath, resolvedRoot))
162
+ return null;
163
+ }
164
+ const ext = path.extname(realPath).toLowerCase();
165
+ if (!ALLOWED_IMAGE_EXTENSIONS.has(ext))
166
+ return null;
167
+ // Enforce total byte budget.
168
+ if (totalBytesSoFar + stat.size > MAX_TOTAL_IMAGE_BYTES)
169
+ return null;
170
+ const buf = fs.readFileSync(realPath);
171
+ return {
172
+ payload: { type: 'image', data: buf.toString('base64'), mimeType: piImageMimeType(ext) },
173
+ size: stat.size,
174
+ };
175
+ }
176
+ catch (_err) {
177
+ // Skip unreadable images rather than failing the entire run.
178
+ return null;
179
+ }
180
+ }
181
+ /**
182
+ * Builds pi's base64-encoded `images` prompt payload from `imagePaths`,
183
+ * subject to `MAX_IMAGE_COUNT` and `MAX_TOTAL_IMAGE_BYTES` budgets to
184
+ * prevent large synchronous base64 reads from blocking the event loop. The
185
+ * daemon's safeImages guard already validated that each path exists under
186
+ * UPLOAD_DIR; see {@link tryReadImagePayload} for the per-path re-checks.
187
+ */
188
+ export function buildPiImagePayloads(imagePaths, uploadRoot) {
189
+ const images = [];
190
+ if (!Array.isArray(imagePaths) || imagePaths.length === 0)
191
+ return images;
192
+ let totalBytes = 0;
193
+ for (const imgPath of imagePaths) {
194
+ if (images.length >= MAX_IMAGE_COUNT)
195
+ break;
196
+ const read = tryReadImagePayload(imgPath, uploadRoot, totalBytes);
197
+ if (!read)
198
+ continue;
199
+ images.push(read.payload);
200
+ totalBytes += read.size;
201
+ }
202
+ return images;
203
+ }
204
+ /**
205
+ * Routes one `response`-type frame from pi's RPC stdout: a rejected parent
206
+ * session fails the run immediately (a resumed turn must not continue
207
+ * without its prior context); an accepted parent session triggers the
208
+ * (previously withheld) prompt send; a rejected prompt fails the run;
209
+ * anything else (an accepted prompt, an unrelated response id) is a no-op.
210
+ * Exported as a free function — it only reads its explicit params and never
211
+ * touches `attachPiRpcSession`'s other session state — so it is directly
212
+ * testable without spinning up a session.
213
+ */
214
+ export function handlePiResponseMessage({ raw, parentSessionRpcId, promptRpcId, fail, sendPromptCommand, }) {
215
+ if (raw.id === parentSessionRpcId) {
216
+ if (raw.success === false) {
217
+ fail(`parent session rejected: ${String(raw.error ?? 'unknown')}`, 'PI_PARENT_SESSION_FAILED');
218
+ return;
219
+ }
220
+ sendPromptCommand();
221
+ return;
222
+ }
223
+ if (raw.id === promptRpcId && raw.success === false) {
224
+ fail(`prompt rejected: ${String(raw.error ?? 'unknown')}`);
225
+ }
226
+ }
131
227
  /**
132
228
  * Attaches the daemon's run lifecycle to an already-spawned `pi --mode rpc` child process.
133
229
  *
@@ -210,59 +306,8 @@ export function attachPiRpcSession({ child, prompt, cwd, model, send, imagePaths
210
306
  // new session, enabling conversational continuity across edit rounds.
211
307
  // Build the images array for pi's prompt command. pi's RPC protocol
212
308
  // accepts `images` as an array of {type, data, mimeType} objects where
213
- // `data` is base64-encoded file contents. The daemon's safeImages guard
214
- // already validated that each path exists under UPLOAD_DIR.
215
- //
216
- // Security: realpath resolves symlinks so we re-check that the resolved
217
- // path is still a regular file (no /proc/self/mem or symlink escape).
218
- // We also enforce a count and total-byte budget to prevent large
219
- // synchronous base64 reads from blocking the event loop.
220
- const images = [];
221
- if (Array.isArray(imagePaths) && imagePaths.length > 0) {
222
- let totalBytes = 0;
223
- for (const imgPath of imagePaths) {
224
- if (images.length >= MAX_IMAGE_COUNT)
225
- break;
226
- if (typeof imgPath !== 'string' || !imgPath.length)
227
- continue;
228
- try {
229
- // Resolve symlinks and verify it's a regular file.
230
- const realPath = fs.realpathSync(imgPath);
231
- const stat = fs.statSync(realPath);
232
- if (!stat.isFile())
233
- continue;
234
- // Re-verify the resolved path stays inside the upload root.
235
- // Without this, a path that passed server.ts's safeImages prefix
236
- // check (under UPLOAD_DIR) could be a symlink pointing to a file
237
- // outside UPLOAD_DIR, and we'd read/base64-forward it to pi.
238
- if (uploadRoot) {
239
- const resolvedRoot = fs.realpathSync(uploadRoot);
240
- if (realPath !== resolvedRoot && !realPath.startsWith(resolvedRoot + path.sep))
241
- continue;
242
- }
243
- const ext = path.extname(realPath).toLowerCase();
244
- if (!ALLOWED_IMAGE_EXTENSIONS.has(ext))
245
- continue;
246
- // Enforce total byte budget.
247
- if (totalBytes + stat.size > MAX_TOTAL_IMAGE_BYTES)
248
- continue;
249
- const buf = fs.readFileSync(realPath);
250
- const mimeType = ext === '.png' ? 'image/png' :
251
- ext === '.gif' ? 'image/gif' :
252
- ext === '.webp' ? 'image/webp' :
253
- 'image/jpeg'; // .jpg, .jpeg, and unknown
254
- images.push({
255
- type: 'image',
256
- data: buf.toString('base64'),
257
- mimeType,
258
- });
259
- totalBytes += stat.size;
260
- }
261
- catch (_err) {
262
- // Skip unreadable images rather than failing the entire run.
263
- }
264
- }
265
- }
309
+ // `data` is base64-encoded file contents.
310
+ const images = buildPiImagePayloads(imagePaths, uploadRoot);
266
311
  const sendPromptCommand = () => {
267
312
  promptRpcId = sendCommand(stdin, 'prompt', {
268
313
  message: prompt,
@@ -281,6 +326,30 @@ export function attachPiRpcSession({ child, prompt, cwd, model, send, imagePaths
281
326
  else {
282
327
  sendPromptCommand();
283
328
  }
329
+ const handlePiAgentEnd = () => {
330
+ finished = true;
331
+ // Capture only the session file changed by this run. If another pi
332
+ // process wrote to the shared session directory concurrently, the
333
+ // resolver returns null instead of risking cross-conversation resume.
334
+ capturedSessionPath = resolveSessionPathChangedSince(cwd, sessionFilesBeforePrompt);
335
+ // pi's RPC process stays alive after agent_end (designed for
336
+ // multi-prompt sessions). The daemon's /api/chat is single-shot,
337
+ // so close stdin and let the process exit naturally, or kill it
338
+ // after a grace period.
339
+ try {
340
+ stdin.end();
341
+ }
342
+ catch (err) {
343
+ fail(`stdin close: ${errorMessage(err)}`);
344
+ }
345
+ // Grace period before SIGTERM. Configurable via PI_GRACEFUL_SHUTDOWN_MS
346
+ // for resource-constrained machines where the event loop drains slowly.
347
+ const shutdownMs = Number(process.env.PI_GRACEFUL_SHUTDOWN_MS) || 5000;
348
+ setTimeout(() => {
349
+ if (!child.killed)
350
+ child.kill('SIGTERM');
351
+ }, shutdownMs);
352
+ };
284
353
  // ---- Inbound: parse stdout events ----
285
354
  const parser = createJsonLineStream((raw) => {
286
355
  if (!isRecord(raw))
@@ -296,47 +365,14 @@ export function attachPiRpcSession({ child, prompt, cwd, model, send, imagePaths
296
365
  replyExtensionUi(stdin, raw);
297
366
  return;
298
367
  }
299
- // RPC responses (prompt accepted, set_model ack, etc.) — not
300
- // agent events. Log the prompt acceptance, ignore the rest.
301
368
  if (raw.type === 'response') {
302
- if (raw.id === parentSessionRpcId) {
303
- if (raw.success === false) {
304
- fail(`parent session rejected: ${String(raw.error ?? 'unknown')}`, 'PI_PARENT_SESSION_FAILED');
305
- return;
306
- }
307
- sendPromptCommand();
308
- return;
309
- }
310
- if (raw.id === promptRpcId && raw.success === false) {
311
- fail(`prompt rejected: ${String(raw.error ?? 'unknown')}`);
312
- }
369
+ handlePiResponseMessage({ raw, parentSessionRpcId, promptRpcId, fail, sendPromptCommand });
313
370
  return;
314
371
  }
315
372
  // Agent events: delegate to the pure mapper.
316
373
  const result = mapPiRpcEvent(raw, send, { runStartedAt, sentFirstToken });
317
374
  if (result === 'agent_end') {
318
- finished = true;
319
- // Capture only the session file changed by this run. If another pi
320
- // process wrote to the shared session directory concurrently, the
321
- // resolver returns null instead of risking cross-conversation resume.
322
- capturedSessionPath = resolveSessionPathChangedSince(cwd, sessionFilesBeforePrompt);
323
- // pi's RPC process stays alive after agent_end (designed for
324
- // multi-prompt sessions). The daemon's /api/chat is single-shot,
325
- // so close stdin and let the process exit naturally, or kill it
326
- // after a grace period.
327
- try {
328
- stdin.end();
329
- }
330
- catch (err) {
331
- fail(`stdin close: ${errorMessage(err)}`);
332
- }
333
- // Grace period before SIGTERM. Configurable via PI_GRACEFUL_SHUTDOWN_MS
334
- // for resource-constrained machines where the event loop drains slowly.
335
- const shutdownMs = Number(process.env.PI_GRACEFUL_SHUTDOWN_MS) || 5000;
336
- setTimeout(() => {
337
- if (!child.killed)
338
- child.kill('SIGTERM');
339
- }, shutdownMs);
375
+ handlePiAgentEnd();
340
376
  }
341
377
  });
342
378
  stdout.on('data', (chunk) => {
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/agent-protocol/pi-rpc/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/agent-protocol/pi-rpc/session.ts"],"names":[],"mappings":"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"}
package/dist/auth.js CHANGED
@@ -5,7 +5,7 @@
5
5
  * agent CLI is authenticated, and text-based classification of a CLI's raw
6
6
  * error output into auth/rate-limit/upstream failure classes.
7
7
  *
8
- * Ported from OD's `apps/daemon/src/runtimes/auth/auth.ts` with one
8
+ * Ported from OD's `apps/daemon/src/runtimes/auth.ts` with one
9
9
  * de-branding change: the five guidance-text functions
10
10
  * (`cursorAuthGuidance`, `deepseekAuthGuidance`, `antigravityAuthGuidance`,
11
11
  * `antigravityQuotaGuidance`, `reasonixAuthGuidance`, `claudeAuthGuidance`)
@@ -2,7 +2,7 @@
2
2
  * @module capabilities
3
3
  *
4
4
  * Per-agent `--help`-probed capability flags, cached by agent id. Ported
5
- * verbatim from OD's `apps/daemon/src/runtimes/core/capabilities.ts`.
5
+ * verbatim from OD's `apps/daemon/src/runtimes/capabilities.ts`.
6
6
  */
7
7
  import type { RuntimeCapabilityMap } from './types.js';
8
8
  export declare const agentCapabilities: Map<string, RuntimeCapabilityMap>;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @module claude-stream
3
3
  *
4
- * Ported verbatim from OD's `apps/daemon/src/runtimes/stream/claude-stream.ts`
4
+ * Ported verbatim from OD's `apps/daemon/src/runtimes/claude-stream.ts`
5
5
  * (only the `role-marker-guard` import path changed — it now resolves
6
6
  * within this package instead of two directories up). See `source-map.md`.
7
7
  *
@@ -25,6 +25,20 @@
25
25
  * Callers give us `onEvent({ type, ...payload })`. We track per-content-block
26
26
  * state to accumulate partial tool_use input JSON and emit a single
27
27
  * `tool_use` event when that block stops.
28
+ *
29
+ * Module layout: functions above `createClaudeStreamHandler` are hoisted,
30
+ * exported, unit-testable pure (or near-pure, dependency-injected) decision
31
+ * logic — they take their inputs explicitly rather than reading them off a
32
+ * closure. `createClaudeStreamHandler` itself, and everything declared
33
+ * inside it, is the genuinely stateful part: per-message id/epoch
34
+ * bookkeeping, the block-accumulation map, and the artifact-echo
35
+ * dedup state machine all mutate several interdependent fields together
36
+ * (see the inline comments on `anonymousMessageEpoch` and
37
+ * `stripDuplicateArtifactText` for the specific invariants), so pulling
38
+ * those out into standalone functions would mean designing an explicit
39
+ * reducer over the whole stream state rather than extracting a helper —
40
+ * a larger, riskier change than this pass makes. They stay as closures,
41
+ * exercised only through `feed`/`flush` in the test suite.
28
42
  */
29
43
  import { type RoleMarkerWarningEvent } from './role-marker-guard.js';
30
44
  /**
@@ -80,7 +94,56 @@ export type ClaudeStreamEvent = {
80
94
  type: 'raw';
81
95
  line: string;
82
96
  } | RoleMarkerWarningEvent;
83
- type EventSink = (event: ClaudeStreamEvent) => void;
97
+ export type EventSink = (event: ClaudeStreamEvent) => void;
98
+ export type BlockState = {
99
+ type?: unknown;
100
+ name?: unknown;
101
+ id?: unknown;
102
+ input: string;
103
+ inputValue?: unknown;
104
+ };
105
+ export type RuntimeTask = {
106
+ id: string;
107
+ content: string;
108
+ status: 'pending' | 'in_progress' | 'completed' | 'stopped';
109
+ activeForm?: string;
110
+ };
111
+ export type RuntimeTaskIdCounter = {
112
+ next: number;
113
+ };
114
+ export interface TaskRegistry {
115
+ tasks: Map<string, RuntimeTask>;
116
+ counter: RuntimeTaskIdCounter;
117
+ seenToolUseIds: Set<string>;
118
+ }
119
+ export interface ArtifactEchoContext {
120
+ suppressHtmlArtifactsAfterFileWrite: boolean;
121
+ wroteHtmlFileThisTurn: boolean;
122
+ recentWriteContents: readonly string[];
123
+ }
124
+ export declare function toolInputPath(input: Record<string, unknown>): string;
125
+ export declare function normalizeTaskStatus(value: unknown): RuntimeTask['status'];
126
+ export declare function runtimeTaskIdFromCreate(input: Record<string, unknown>, counter: RuntimeTaskIdCounter): string;
127
+ export declare function applyTaskCreate(input: Record<string, unknown>, tasks: Map<string, RuntimeTask>, counter: RuntimeTaskIdCounter): boolean;
128
+ export declare function applyTaskUpdate(input: Record<string, unknown>, tasks: Map<string, RuntimeTask>): boolean;
129
+ export declare function emitCanonicalTaskSnapshot(toolUseId: unknown, name: unknown, input: unknown, registry: TaskRegistry, onEvent: EventSink): boolean;
130
+ export declare function isFileWriteToolUse(name: unknown, input: unknown): boolean;
131
+ export declare function fileWriteContent(input: unknown): string | null;
132
+ export declare function isHtmlWriteToolInput(input: unknown): boolean;
133
+ export declare function artifactOpenCandidateLength(text: string, openTag: string): number;
134
+ export declare function isRedundantWrittenArtifact(candidate: string, ctx: ArtifactEchoContext): boolean;
135
+ export declare function assistantText(content: unknown[]): string;
136
+ export declare function isUnstreamedTextBlock(block: Record<string, unknown>, alreadyStreamed: boolean): block is Record<string, unknown> & {
137
+ text: string;
138
+ };
139
+ export declare function isUnstreamedThinkingBlock(block: Record<string, unknown>, alreadyStreamed: boolean): block is Record<string, unknown> & {
140
+ thinking: string;
141
+ };
142
+ export declare function handleSystemMessage(obj: Record<string, unknown>, onEvent: EventSink): void;
143
+ export declare function stringifyToolResult(content: unknown): string;
144
+ export declare function handleUserMessage(obj: Record<string, unknown>, onEvent: EventSink): void;
145
+ export declare function applyInputJsonDelta(state: BlockState | undefined, partialJson: string, onEvent: EventSink): void;
146
+ export declare function emitAssistantErrorIfPresent(obj: Record<string, unknown>, content: unknown[], onEvent: EventSink): void;
84
147
  interface ClaudeStreamHandlerOptions {
85
148
  suppressHtmlArtifactsAfterFileWrite?: boolean;
86
149
  }
@@ -1 +1 @@
1
- {"version":3,"file":"claude-stream.d.ts","sourceRoot":"","sources":["../src/claude-stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAA+C,KAAK,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAElH;;;;;;;;;GASG;AACH,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACxF;IAAE,IAAI,EAAE,YAAY,GAAG,gBAAgB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,GAC1B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,EAAE,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAChE;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACrE;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAC9E;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACnG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC7B,sBAAsB,CAAC;AAE3B,KAAK,SAAS,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;AAmBpD,UAAU,0BAA0B;IAClC,mCAAmC,CAAC,EAAE,OAAO,CAAC;CAC/C;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,SAAS,EAClB,OAAO,GAAE,0BAA+B;kBA0VnB,MAAM;;EA0R5B"}
1
+ {"version":3,"file":"claude-stream.d.ts","sourceRoot":"","sources":["../src/claude-stream.ts"],"names":[],"mappings":"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"}