@jini-ai/agent-runtime 0.2.1 → 0.3.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 (163) 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/claude-stream.d.ts +64 -1
  19. package/dist/claude-stream.d.ts.map +1 -1
  20. package/dist/claude-stream.js +568 -441
  21. package/dist/claude-stream.js.map +1 -1
  22. package/dist/defs/aider.d.ts.map +1 -1
  23. package/dist/defs/aider.js +13 -1
  24. package/dist/defs/aider.js.map +1 -1
  25. package/dist/defs/amp.d.ts.map +1 -1
  26. package/dist/defs/amp.js +16 -1
  27. package/dist/defs/amp.js.map +1 -1
  28. package/dist/defs/amr.d.ts +2 -1
  29. package/dist/defs/amr.d.ts.map +1 -1
  30. package/dist/defs/amr.js +12 -1
  31. package/dist/defs/amr.js.map +1 -1
  32. package/dist/defs/antigravity.d.ts +41 -2
  33. package/dist/defs/antigravity.d.ts.map +1 -1
  34. package/dist/defs/antigravity.js +201 -22
  35. package/dist/defs/antigravity.js.map +1 -1
  36. package/dist/defs/claude.d.ts +2 -0
  37. package/dist/defs/claude.d.ts.map +1 -1
  38. package/dist/defs/claude.js +58 -3
  39. package/dist/defs/claude.js.map +1 -1
  40. package/dist/defs/codebuddy.d.ts.map +1 -1
  41. package/dist/defs/codebuddy.js +9 -1
  42. package/dist/defs/codebuddy.js.map +1 -1
  43. package/dist/defs/codex.d.ts +1 -0
  44. package/dist/defs/codex.d.ts.map +1 -1
  45. package/dist/defs/codex.js +34 -0
  46. package/dist/defs/codex.js.map +1 -1
  47. package/dist/defs/copilot.d.ts.map +1 -1
  48. package/dist/defs/copilot.js +15 -1
  49. package/dist/defs/copilot.js.map +1 -1
  50. package/dist/defs/cursor-agent.d.ts.map +1 -1
  51. package/dist/defs/cursor-agent.js +24 -2
  52. package/dist/defs/cursor-agent.js.map +1 -1
  53. package/dist/defs/deepseek.d.ts.map +1 -1
  54. package/dist/defs/deepseek.js +12 -0
  55. package/dist/defs/deepseek.js.map +1 -1
  56. package/dist/defs/devin.d.ts +2 -1
  57. package/dist/defs/devin.d.ts.map +1 -1
  58. package/dist/defs/devin.js +12 -7
  59. package/dist/defs/devin.js.map +1 -1
  60. package/dist/defs/grok-build.d.ts.map +1 -1
  61. package/dist/defs/grok-build.js +10 -0
  62. package/dist/defs/grok-build.js.map +1 -1
  63. package/dist/defs/hermes.d.ts +1 -0
  64. package/dist/defs/hermes.d.ts.map +1 -1
  65. package/dist/defs/hermes.js +3 -0
  66. package/dist/defs/hermes.js.map +1 -1
  67. package/dist/defs/kilo.d.ts +1 -0
  68. package/dist/defs/kilo.d.ts.map +1 -1
  69. package/dist/defs/kilo.js +3 -0
  70. package/dist/defs/kilo.js.map +1 -1
  71. package/dist/defs/kimi.d.ts +1 -0
  72. package/dist/defs/kimi.d.ts.map +1 -1
  73. package/dist/defs/kimi.js +3 -0
  74. package/dist/defs/kimi.js.map +1 -1
  75. package/dist/defs/kiro.d.ts +1 -0
  76. package/dist/defs/kiro.d.ts.map +1 -1
  77. package/dist/defs/kiro.js +3 -0
  78. package/dist/defs/kiro.js.map +1 -1
  79. package/dist/defs/pi.d.ts +1 -1
  80. package/dist/defs/pi.d.ts.map +1 -1
  81. package/dist/defs/pi.js +6 -1
  82. package/dist/defs/pi.js.map +1 -1
  83. package/dist/defs/qoder.d.ts +1 -0
  84. package/dist/defs/qoder.d.ts.map +1 -1
  85. package/dist/defs/qoder.js +15 -0
  86. package/dist/defs/qoder.js.map +1 -1
  87. package/dist/defs/qwen.d.ts.map +1 -1
  88. package/dist/defs/qwen.js +9 -0
  89. package/dist/defs/qwen.js.map +1 -1
  90. package/dist/defs/reasonix.d.ts +1 -0
  91. package/dist/defs/reasonix.d.ts.map +1 -1
  92. package/dist/defs/reasonix.js +3 -0
  93. package/dist/defs/reasonix.js.map +1 -1
  94. package/dist/defs/shared.d.ts +31 -1
  95. package/dist/defs/shared.d.ts.map +1 -1
  96. package/dist/defs/shared.js +35 -0
  97. package/dist/defs/shared.js.map +1 -1
  98. package/dist/defs/trae-cli.d.ts +1 -0
  99. package/dist/defs/trae-cli.d.ts.map +1 -1
  100. package/dist/defs/trae-cli.js +3 -0
  101. package/dist/defs/trae-cli.js.map +1 -1
  102. package/dist/defs/vibe.d.ts +1 -0
  103. package/dist/defs/vibe.d.ts.map +1 -1
  104. package/dist/defs/vibe.js +3 -0
  105. package/dist/defs/vibe.js.map +1 -1
  106. package/dist/detection.d.ts +1 -1
  107. package/dist/detection.d.ts.map +1 -1
  108. package/dist/detection.js +7 -2
  109. package/dist/detection.js.map +1 -1
  110. package/dist/index.d.ts +2 -1
  111. package/dist/index.d.ts.map +1 -1
  112. package/dist/index.js +2 -1
  113. package/dist/index.js.map +1 -1
  114. package/dist/log-file.d.ts +23 -0
  115. package/dist/log-file.d.ts.map +1 -0
  116. package/dist/log-file.js +56 -0
  117. package/dist/log-file.js.map +1 -0
  118. package/dist/model-registry.d.ts +7 -45
  119. package/dist/model-registry.d.ts.map +1 -1
  120. package/dist/model-registry.js.map +1 -1
  121. package/dist/providers/anthropic-messages.d.ts +198 -6
  122. package/dist/providers/anthropic-messages.d.ts.map +1 -1
  123. package/dist/providers/anthropic-messages.js +317 -140
  124. package/dist/providers/anthropic-messages.js.map +1 -1
  125. package/dist/providers/azure-chat.d.ts +113 -3
  126. package/dist/providers/azure-chat.d.ts.map +1 -1
  127. package/dist/providers/azure-chat.js +114 -21
  128. package/dist/providers/azure-chat.js.map +1 -1
  129. package/dist/providers/connection-guard.d.ts +121 -1
  130. package/dist/providers/connection-guard.d.ts.map +1 -1
  131. package/dist/providers/connection-guard.js +205 -3
  132. package/dist/providers/connection-guard.js.map +1 -1
  133. package/dist/providers/connection-test.d.ts +62 -0
  134. package/dist/providers/connection-test.d.ts.map +1 -0
  135. package/dist/providers/connection-test.js +404 -0
  136. package/dist/providers/connection-test.js.map +1 -0
  137. package/dist/providers/elevenlabs.d.ts.map +1 -1
  138. package/dist/providers/elevenlabs.js +3 -2
  139. package/dist/providers/elevenlabs.js.map +1 -1
  140. package/dist/providers/google-messages.d.ts +208 -7
  141. package/dist/providers/google-messages.d.ts.map +1 -1
  142. package/dist/providers/google-messages.js +331 -105
  143. package/dist/providers/google-messages.js.map +1 -1
  144. package/dist/providers/index.d.ts +1 -0
  145. package/dist/providers/index.d.ts.map +1 -1
  146. package/dist/providers/index.js +1 -0
  147. package/dist/providers/index.js.map +1 -1
  148. package/dist/providers/model-catalog.d.ts.map +1 -1
  149. package/dist/providers/model-catalog.js +21 -0
  150. package/dist/providers/model-catalog.js.map +1 -1
  151. package/dist/providers/ollama-chat.d.ts +190 -1
  152. package/dist/providers/ollama-chat.d.ts.map +1 -1
  153. package/dist/providers/ollama-chat.js +319 -110
  154. package/dist/providers/ollama-chat.js.map +1 -1
  155. package/dist/providers/openai-chat.d.ts +222 -14
  156. package/dist/providers/openai-chat.d.ts.map +1 -1
  157. package/dist/providers/openai-chat.js +377 -128
  158. package/dist/providers/openai-chat.js.map +1 -1
  159. package/dist/providers/sse-decode.d.ts +2 -2
  160. package/dist/providers/sse-decode.js +2 -2
  161. package/dist/types.d.ts +169 -87
  162. package/dist/types.d.ts.map +1 -1
  163. package/package.json +6 -4
@@ -3,7 +3,74 @@
3
3
  * JSON-RPC messages across chunk boundaries. Shared transport used by both the
4
4
  * acp/ and pi-rpc/ protocol adapters; this file has no dependencies on any
5
5
  * other agent-protocol sibling.
6
+ *
7
+ * Module layout: `createJsonLineStream` owns exactly one piece of state that
8
+ * doesn't need to be exported — the raw `buffer` a chunk gets split into
9
+ * lines from, which is plain string-splitting with no decision logic worth
10
+ * testing in isolation. Everything it delegates to (line handling, the
11
+ * multiline-JSON accumulator, and `classifyJsonCandidate`'s scan) is real
12
+ * decision logic, so it is hoisted to module level and exported, taking its
13
+ * state as an explicit first argument rather than reading it off a closure.
6
14
  */
15
+ function startPendingJson(state, line) {
16
+ state.pendingJson = line;
17
+ state.pendingJsonLineCount = 1;
18
+ }
19
+ function resetPendingJson(state) {
20
+ state.pendingJson = '';
21
+ state.pendingJsonLineCount = 0;
22
+ }
23
+ export function emitJsonLine(candidate, onMessage) {
24
+ try {
25
+ onMessage(JSON.parse(candidate), candidate);
26
+ return true;
27
+ }
28
+ catch {
29
+ return false;
30
+ }
31
+ }
32
+ // Continues an in-progress multiline candidate with the next trimmed line.
33
+ // Either resolves it (parses, or gives up and re-processes `trimmed` fresh)
34
+ // or keeps accumulating.
35
+ export function continuePendingJsonLine(state, trimmed, onMessage) {
36
+ const nextCandidate = `${state.pendingJson}\n${trimmed}`;
37
+ if (emitJsonLine(nextCandidate, onMessage)) {
38
+ resetPendingJson(state);
39
+ return;
40
+ }
41
+ state.pendingJsonLineCount += 1;
42
+ const classification = classifyJsonCandidate(nextCandidate);
43
+ if (classification === 'incomplete' &&
44
+ nextCandidate.length <= 128_000 &&
45
+ state.pendingJsonLineCount <= 256) {
46
+ state.pendingJson = nextCandidate;
47
+ return;
48
+ }
49
+ resetPendingJson(state);
50
+ handleJsonLine(state, trimmed, onMessage);
51
+ }
52
+ // ACP is line-delimited JSON-RPC, but a few bridges have emitted
53
+ // pretty-printed JSON during startup. Keep a bounded aggregate so an
54
+ // otherwise valid multiline initialize response does not get discarded
55
+ // line-by-line and leave the session stuck in spawn pending.
56
+ export function tryStartPendingJsonLine(state, trimmed) {
57
+ if ((trimmed.startsWith('{') || trimmed.startsWith('[')) &&
58
+ classifyJsonCandidate(trimmed) === 'incomplete') {
59
+ startPendingJson(state, trimmed);
60
+ }
61
+ }
62
+ export function handleJsonLine(state, line, onMessage) {
63
+ const trimmed = line.trim();
64
+ if (!trimmed)
65
+ return;
66
+ if (state.pendingJson) {
67
+ continuePendingJsonLine(state, trimmed, onMessage);
68
+ return;
69
+ }
70
+ if (emitJsonLine(trimmed, onMessage))
71
+ return;
72
+ tryStartPendingJsonLine(state, trimmed);
73
+ }
7
74
  /**
8
75
  * Creates a streaming JSON-line parser over a raw byte/string stream.
9
76
  * Buffers incoming chunks, splits on newline boundaries, and attempts
@@ -21,72 +88,21 @@
21
88
  */
22
89
  export function createJsonLineStream(onMessage) {
23
90
  let buffer = '';
24
- let pendingJson = '';
25
- let pendingJsonLineCount = 0;
26
- const emit = (candidate) => {
27
- try {
28
- onMessage(JSON.parse(candidate), candidate);
29
- return true;
30
- }
31
- catch {
32
- return false;
33
- }
34
- };
35
- const startPendingJson = (line) => {
36
- pendingJson = line;
37
- pendingJsonLineCount = 1;
38
- };
39
- const resetPendingJson = () => {
40
- pendingJson = '';
41
- pendingJsonLineCount = 0;
42
- };
43
- const handleLine = (line) => {
44
- const trimmed = line.trim();
45
- if (!trimmed)
46
- return;
47
- if (pendingJson) {
48
- const nextCandidate = `${pendingJson}\n${trimmed}`;
49
- if (emit(nextCandidate)) {
50
- resetPendingJson();
51
- return;
52
- }
53
- pendingJsonLineCount += 1;
54
- const state = classifyJsonCandidate(nextCandidate);
55
- if (state === 'incomplete' &&
56
- nextCandidate.length <= 128_000 &&
57
- pendingJsonLineCount <= 256) {
58
- pendingJson = nextCandidate;
59
- return;
60
- }
61
- resetPendingJson();
62
- handleLine(trimmed);
63
- return;
64
- }
65
- if (emit(trimmed))
66
- return;
67
- // ACP is line-delimited JSON-RPC, but a few bridges have emitted
68
- // pretty-printed JSON during startup. Keep a bounded aggregate so an
69
- // otherwise valid multiline initialize response does not get discarded
70
- // line-by-line and leave the session stuck in spawn pending.
71
- if ((trimmed.startsWith('{') || trimmed.startsWith('[')) &&
72
- classifyJsonCandidate(trimmed) === 'incomplete') {
73
- startPendingJson(trimmed);
74
- }
75
- };
91
+ const state = { pendingJson: '', pendingJsonLineCount: 0 };
76
92
  return {
77
93
  feed(chunk) {
78
94
  buffer += chunk;
79
95
  const lines = buffer.split('\n');
80
96
  buffer = lines.pop() || '';
81
97
  for (const line of lines) {
82
- handleLine(line);
98
+ handleJsonLine(state, line, onMessage);
83
99
  }
84
100
  },
85
101
  flush() {
86
102
  const trimmed = buffer.trim();
87
103
  buffer = '';
88
104
  if (trimmed) {
89
- handleLine(trimmed);
105
+ handleJsonLine(state, trimmed, onMessage);
90
106
  }
91
107
  // Any `pendingJson` still set at this point was, by construction, the
92
108
  // most recent candidate `classifyJsonCandidate` judged structurally
@@ -103,6 +119,237 @@ export function createJsonLineStream(onMessage) {
103
119
  },
104
120
  };
105
121
  }
122
+ export function afterValue(state) {
123
+ const parent = state.stack.at(-1);
124
+ if (!parent) {
125
+ state.rootComplete = true;
126
+ return;
127
+ }
128
+ parent.expect = 'commaOrEnd';
129
+ }
130
+ // Every call site below is already nested inside a check that has
131
+ // established the top-of-stack frame's kind (`current.kind === 'object'`,
132
+ // or implicitly 'array' when that check fails), so the frame this pops
133
+ // always exists and always matches the kind being closed. The origin
134
+ // file guarded against a mismatch (`!current || current.kind !== kind`)
135
+ // and returned `false` for callers to translate into `'invalid'`; that
136
+ // guard was provably dead (verified by a 2M-trial adversarial fuzz,
137
+ // including deliberately malformed bracket sequences, finding zero
138
+ // mismatches) and is removed here per this package's coverage-driven
139
+ // dead-branch discipline. See source-map.md.
140
+ function closeFrame(state) {
141
+ state.stack.pop();
142
+ afterValue(state);
143
+ }
144
+ export function parseString(value, start) {
145
+ for (let index = start + 1; index < value.length; index += 1) {
146
+ const char = value[index];
147
+ if (char === '\\') {
148
+ index += 1;
149
+ continue;
150
+ }
151
+ if (char === '"')
152
+ return index;
153
+ }
154
+ return null;
155
+ }
156
+ export function parseLiteral(value, start, literal) {
157
+ for (let offset = 0; offset < literal.length; offset += 1) {
158
+ const char = value[start + offset];
159
+ if (char === undefined)
160
+ return null;
161
+ if (char !== literal[offset])
162
+ return false;
163
+ }
164
+ return start + literal.length - 1;
165
+ }
166
+ function isDigit(char) {
167
+ return /[0-9]/.test(char ?? '');
168
+ }
169
+ function consumeDigits(value, start) {
170
+ let index = start;
171
+ while (isDigit(value[index]))
172
+ index += 1;
173
+ return index;
174
+ }
175
+ function parseOptionalSign(value, start) {
176
+ return value[start] === '-' ? start + 1 : start;
177
+ }
178
+ export function parseIntegerDigits(value, start) {
179
+ if (value[start] === '0')
180
+ return start + 1;
181
+ if (isDigit(value[start]))
182
+ return consumeDigits(value, start);
183
+ return false;
184
+ }
185
+ export function parseFractionDigits(value, start) {
186
+ if (value[start] !== '.')
187
+ return start;
188
+ const digitsStart = start + 1;
189
+ if (!isDigit(value[digitsStart]))
190
+ return false;
191
+ return consumeDigits(value, digitsStart);
192
+ }
193
+ export function parseExponentDigits(value, start) {
194
+ if (value[start] !== 'e' && value[start] !== 'E')
195
+ return start;
196
+ let digitsStart = start + 1;
197
+ if (value[digitsStart] === '+' || value[digitsStart] === '-')
198
+ digitsStart += 1;
199
+ if (!isDigit(value[digitsStart]))
200
+ return false;
201
+ return consumeDigits(value, digitsStart);
202
+ }
203
+ export function parseNumber(value, start) {
204
+ const afterSign = parseOptionalSign(value, start);
205
+ const afterInteger = parseIntegerDigits(value, afterSign);
206
+ if (afterInteger === false)
207
+ return false;
208
+ const afterFraction = parseFractionDigits(value, afterInteger);
209
+ if (afterFraction === false)
210
+ return false;
211
+ const afterExponent = parseExponentDigits(value, afterFraction);
212
+ if (afterExponent === false)
213
+ return false;
214
+ return afterExponent - 1;
215
+ }
216
+ export function parseStringValue(state, index) {
217
+ const end = parseString(state.value, index);
218
+ if (end === null)
219
+ return null;
220
+ afterValue(state);
221
+ return end;
222
+ }
223
+ export function parseNumberValue(state, index) {
224
+ const end = parseNumber(state.value, index);
225
+ if (end === false)
226
+ return false;
227
+ afterValue(state);
228
+ return end;
229
+ }
230
+ function openContainer(state, index, frame) {
231
+ state.stack.push(frame);
232
+ return index;
233
+ }
234
+ export function parseLiteralValue(state, index, literal) {
235
+ const end = parseLiteral(state.value, index, literal);
236
+ if (end === false || end === null)
237
+ return end;
238
+ afterValue(state);
239
+ return end;
240
+ }
241
+ const LITERAL_STARTS = { t: 'true', f: 'false', n: 'null' };
242
+ export function parseValue(state, index) {
243
+ const char = state.value[index];
244
+ if (char === '"')
245
+ return parseStringValue(state, index);
246
+ if (char === '{')
247
+ return openContainer(state, index, { kind: 'object', expect: 'keyOrEnd' });
248
+ if (char === '[')
249
+ return openContainer(state, index, { kind: 'array', expect: 'valueOrEnd' });
250
+ if (char !== undefined && char in LITERAL_STARTS) {
251
+ // `char in LITERAL_STARTS` just confirmed this key is present.
252
+ return parseLiteralValue(state, index, LITERAL_STARTS[char]);
253
+ }
254
+ // `parseValue` is only ever called (below, and from the step handlers)
255
+ // with an `index` already known to be within `value`'s bounds, so `char`
256
+ // is always defined here; the non-null assertion documents that instead
257
+ // of a `?? ''` fallback that could never actually be exercised.
258
+ if (char === '-' || /[0-9]/.test(char))
259
+ return parseNumberValue(state, index);
260
+ return false;
261
+ }
262
+ export function stepRootFrame(state, index) {
263
+ if (state.rootComplete)
264
+ return 'invalid';
265
+ const end = parseValue(state, index);
266
+ if (end === false)
267
+ return 'invalid';
268
+ if (end === null)
269
+ return 'incomplete';
270
+ return { nextIndex: end };
271
+ }
272
+ export function stepObjectKeyOrEnd(state, current, index, char) {
273
+ if (char === '}') {
274
+ closeFrame(state);
275
+ return { nextIndex: index };
276
+ }
277
+ if (char !== '"')
278
+ return 'invalid';
279
+ const end = parseString(state.value, index);
280
+ if (end === null)
281
+ return 'incomplete';
282
+ current.expect = 'colon';
283
+ return { nextIndex: end };
284
+ }
285
+ export function stepObjectColon(current, index, char) {
286
+ if (char !== ':')
287
+ return 'invalid';
288
+ current.expect = 'value';
289
+ return { nextIndex: index };
290
+ }
291
+ export function stepObjectCommaOrEnd(state, current, index, char) {
292
+ if (char === '}') {
293
+ closeFrame(state);
294
+ return { nextIndex: index };
295
+ }
296
+ if (char !== ',')
297
+ return 'invalid';
298
+ current.expect = 'keyOrEnd';
299
+ return { nextIndex: index };
300
+ }
301
+ export function stepObjectFrame(state, current, index, char) {
302
+ if (current.expect === 'keyOrEnd')
303
+ return stepObjectKeyOrEnd(state, current, index, char);
304
+ if (current.expect === 'colon')
305
+ return stepObjectColon(current, index, char);
306
+ if (current.expect === 'value') {
307
+ const end = parseValue(state, index);
308
+ if (end === false)
309
+ return 'invalid';
310
+ if (end === null)
311
+ return 'incomplete';
312
+ return { nextIndex: end };
313
+ }
314
+ return stepObjectCommaOrEnd(state, current, index, char);
315
+ }
316
+ export function stepArrayValueOrEnd(state, index, char) {
317
+ if (char === ']') {
318
+ closeFrame(state);
319
+ return { nextIndex: index };
320
+ }
321
+ const end = parseValue(state, index);
322
+ if (end === false)
323
+ return 'invalid';
324
+ if (end === null)
325
+ return 'incomplete';
326
+ return { nextIndex: end };
327
+ }
328
+ export function stepArrayCommaOrEnd(state, current, index, char) {
329
+ if (char === ']') {
330
+ closeFrame(state);
331
+ return { nextIndex: index };
332
+ }
333
+ if (char !== ',')
334
+ return 'invalid';
335
+ current.expect = 'valueOrEnd';
336
+ return { nextIndex: index };
337
+ }
338
+ export function stepArrayFrame(state, current, index, char) {
339
+ return current.expect === 'valueOrEnd'
340
+ ? stepArrayValueOrEnd(state, index, char)
341
+ : stepArrayCommaOrEnd(state, current, index, char);
342
+ }
343
+ // Dispatches to the step handler for whatever frame is on top of the
344
+ // stack (or the root frame when the stack is empty).
345
+ export function selectStep(state, index, char) {
346
+ const current = state.stack.at(-1);
347
+ if (!current)
348
+ return stepRootFrame(state, index);
349
+ return current.kind === 'object'
350
+ ? stepObjectFrame(state, current, index, char)
351
+ : stepArrayFrame(state, current, index, char);
352
+ }
106
353
  /**
107
354
  * Incremental JSON completeness classifier used by `createJsonLineStream` to
108
355
  * decide whether an accumulating multiline candidate can still resolve into
@@ -119,135 +366,7 @@ export function createJsonLineStream(onMessage) {
119
366
  * accumulated stdout lines from an ACP subprocess.
120
367
  */
121
368
  export function classifyJsonCandidate(value) {
122
- const stack = [];
123
- let rootComplete = false;
124
- const afterValue = () => {
125
- const parent = stack.at(-1);
126
- if (!parent) {
127
- rootComplete = true;
128
- return;
129
- }
130
- parent.expect = 'commaOrEnd';
131
- };
132
- // Every call site below is already nested inside a check that has
133
- // established the top-of-stack frame's kind (`current.kind === 'object'`,
134
- // or implicitly 'array' when that check fails), so the frame `closeFrame`
135
- // pops always exists and always matches the kind being closed. The origin
136
- // file guarded against a mismatch (`!current || current.kind !== kind`)
137
- // and returned `false` for callers to translate into `'invalid'`; that
138
- // guard was provably dead (verified by a 2M-trial adversarial fuzz,
139
- // including deliberately malformed bracket sequences, finding zero
140
- // mismatches) and is removed here per this package's coverage-driven
141
- // dead-branch discipline. See source-map.md.
142
- const closeFrame = () => {
143
- stack.pop();
144
- afterValue();
145
- };
146
- const parseString = (start) => {
147
- for (let index = start + 1; index < value.length; index += 1) {
148
- const char = value[index];
149
- if (char === '\\') {
150
- index += 1;
151
- continue;
152
- }
153
- if (char === '"')
154
- return index;
155
- }
156
- return null;
157
- };
158
- const parseLiteral = (start, literal) => {
159
- for (let offset = 0; offset < literal.length; offset += 1) {
160
- const char = value[start + offset];
161
- if (char === undefined)
162
- return null;
163
- if (char !== literal[offset])
164
- return false;
165
- }
166
- return start + literal.length - 1;
167
- };
168
- const parseNumber = (start) => {
169
- let index = start;
170
- if (value[index] === '-')
171
- index += 1;
172
- if (value[index] === '0') {
173
- index += 1;
174
- }
175
- else if (/[1-9]/.test(value[index] ?? '')) {
176
- while (/[0-9]/.test(value[index] ?? ''))
177
- index += 1;
178
- }
179
- else {
180
- return false;
181
- }
182
- if (value[index] === '.') {
183
- index += 1;
184
- if (!/[0-9]/.test(value[index] ?? ''))
185
- return false;
186
- while (/[0-9]/.test(value[index] ?? ''))
187
- index += 1;
188
- }
189
- if (value[index] === 'e' || value[index] === 'E') {
190
- index += 1;
191
- if (value[index] === '+' || value[index] === '-')
192
- index += 1;
193
- if (!/[0-9]/.test(value[index] ?? ''))
194
- return false;
195
- while (/[0-9]/.test(value[index] ?? ''))
196
- index += 1;
197
- }
198
- return index - 1;
199
- };
200
- const parseValue = (index) => {
201
- const char = value[index];
202
- if (char === '"') {
203
- const end = parseString(index);
204
- if (end === null)
205
- return null;
206
- afterValue();
207
- return end;
208
- }
209
- if (char === '{') {
210
- stack.push({ kind: 'object', expect: 'keyOrEnd' });
211
- return index;
212
- }
213
- if (char === '[') {
214
- stack.push({ kind: 'array', expect: 'valueOrEnd' });
215
- return index;
216
- }
217
- if (char === 't') {
218
- const end = parseLiteral(index, 'true');
219
- if (end === false || end === null)
220
- return end;
221
- afterValue();
222
- return end;
223
- }
224
- if (char === 'f') {
225
- const end = parseLiteral(index, 'false');
226
- if (end === false || end === null)
227
- return end;
228
- afterValue();
229
- return end;
230
- }
231
- if (char === 'n') {
232
- const end = parseLiteral(index, 'null');
233
- if (end === false || end === null)
234
- return end;
235
- afterValue();
236
- return end;
237
- }
238
- // `parseValue` is only ever called (below, and from the main loop) with
239
- // an `index` already known to be within `value`'s bounds, so `char` is
240
- // always defined here; the non-null assertion documents that instead of
241
- // a `?? ''` fallback that could never actually be exercised.
242
- if (char === '-' || /[0-9]/.test(char)) {
243
- const end = parseNumber(index);
244
- if (end === false)
245
- return false;
246
- afterValue();
247
- return end;
248
- }
249
- return false;
250
- };
369
+ const state = { value, stack: [], rootComplete: false };
251
370
  for (let index = 0; index < value.length; index += 1) {
252
371
  // The loop bound (`index < value.length`) guarantees this index always
253
372
  // yields a defined character; the non-null assertion documents that
@@ -256,78 +375,11 @@ export function classifyJsonCandidate(value) {
256
375
  const char = value[index];
257
376
  if (/\s/.test(char))
258
377
  continue;
259
- const current = stack.at(-1);
260
- if (!current) {
261
- if (rootComplete)
262
- return 'invalid';
263
- const end = parseValue(index);
264
- if (end === false)
265
- return 'invalid';
266
- if (end === null)
267
- return 'incomplete';
268
- index = end;
269
- continue;
270
- }
271
- if (current.kind === 'object') {
272
- if (current.expect === 'keyOrEnd') {
273
- if (char === '}') {
274
- closeFrame();
275
- continue;
276
- }
277
- if (char !== '"')
278
- return 'invalid';
279
- const end = parseString(index);
280
- if (end === null)
281
- return 'incomplete';
282
- current.expect = 'colon';
283
- index = end;
284
- continue;
285
- }
286
- if (current.expect === 'colon') {
287
- if (char !== ':')
288
- return 'invalid';
289
- current.expect = 'value';
290
- continue;
291
- }
292
- if (current.expect === 'value') {
293
- const end = parseValue(index);
294
- if (end === false)
295
- return 'invalid';
296
- if (end === null)
297
- return 'incomplete';
298
- index = end;
299
- continue;
300
- }
301
- if (char === '}') {
302
- closeFrame();
303
- continue;
304
- }
305
- if (char !== ',')
306
- return 'invalid';
307
- current.expect = 'keyOrEnd';
308
- continue;
309
- }
310
- if (current.expect === 'valueOrEnd') {
311
- if (char === ']') {
312
- closeFrame();
313
- continue;
314
- }
315
- const end = parseValue(index);
316
- if (end === false)
317
- return 'invalid';
318
- if (end === null)
319
- return 'incomplete';
320
- index = end;
321
- continue;
322
- }
323
- if (char === ']') {
324
- closeFrame();
325
- continue;
326
- }
327
- if (char !== ',')
328
- return 'invalid';
329
- current.expect = 'valueOrEnd';
378
+ const step = selectStep(state, index, char);
379
+ if (step === 'invalid' || step === 'incomplete')
380
+ return step;
381
+ index = step.nextIndex;
330
382
  }
331
- return rootComplete && stack.length === 0 ? 'complete' : 'incomplete';
383
+ return state.rootComplete && state.stack.length === 0 ? 'complete' : 'incomplete';
332
384
  }
333
385
  //# sourceMappingURL=json-line-stream.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"json-line-stream.js","sourceRoot":"","sources":["../../../src/agent-protocol/core/json-line-stream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"json-line-stream.js","sourceRoot":"","sources":["../../../src/agent-protocol/core/json-line-stream.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * status, text_delta, thinking, tool_use, tool_result, usage, and error.
5
5
  * No I/O — all side effects flow through the SendAgentEvent callback.
6
6
  */
7
- import type { JsonRecord, SendAgentEvent } from './internal.js';
7
+ import type { JsonRecord, SendAgentEvent, TokenUsage } from './internal.js';
8
8
  /** Timing and first-token-tracking context threaded through every mapPiRpcEvent call. */
9
9
  export type PiRpcContext = {
10
10
  runStartedAt: number;
@@ -12,6 +12,27 @@ export type PiRpcContext = {
12
12
  value: boolean;
13
13
  };
14
14
  };
15
+ export declare function handleAgentStart(_raw: JsonRecord, send: SendAgentEvent): null;
16
+ export declare function handleAgentEnd(): 'agent_end';
17
+ export declare function handleTurnStart(_raw: JsonRecord, send: SendAgentEvent): null;
18
+ /** Extracts the subset of pi's `message.usage` fields the daemon reports as token usage. */
19
+ export declare function buildTokenUsage(u: JsonRecord): TokenUsage;
20
+ export declare function emitTurnEndUsage(u: JsonRecord, send: SendAgentEvent, ctx: PiRpcContext): void;
21
+ export declare function emitTurnEndErrorIfPresent(message: JsonRecord | undefined, raw: JsonRecord, send: SendAgentEvent): void;
22
+ export declare function handleTurnEnd(raw: JsonRecord, send: SendAgentEvent, ctx: PiRpcContext): null;
23
+ export declare function handleAssistantTextDelta(ev: JsonRecord, send: SendAgentEvent, ctx: PiRpcContext): void;
24
+ export declare function handleAssistantThinkingDelta(ev: JsonRecord, send: SendAgentEvent): void;
25
+ export declare function handleAssistantThinkingStart(_ev: JsonRecord, send: SendAgentEvent): void;
26
+ export declare function handleAssistantThinkingEnd(_ev: JsonRecord, send: SendAgentEvent): void;
27
+ export declare function handleAssistantError(ev: JsonRecord, send: SendAgentEvent, _ctx: PiRpcContext, raw: JsonRecord): void;
28
+ export declare function handleMessageUpdate(raw: JsonRecord, send: SendAgentEvent, ctx: PiRpcContext): null;
29
+ export declare function handleMessageEnd(): null;
30
+ export declare function handleToolExecutionStart(raw: JsonRecord, send: SendAgentEvent): null;
31
+ export declare function handleToolExecutionEnd(raw: JsonRecord, send: SendAgentEvent): null;
32
+ export declare function handleExtensionError(raw: JsonRecord, send: SendAgentEvent): null;
33
+ export declare function handleCompactionStart(_raw: JsonRecord, send: SendAgentEvent): null;
34
+ export declare function handleAutoRetryStart(_raw: JsonRecord, send: SendAgentEvent): null;
35
+ export declare function handleAutoRetryEnd(raw: JsonRecord, send: SendAgentEvent): null;
15
36
  /**
16
37
  * Maps a single raw pi RPC JSON object to zero or more daemon SSE events,
17
38
  * dispatching each through `send`. Returns `'agent_end'` when pi signals the