agent-relay 1.0.6 → 1.0.8

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 (72) hide show
  1. package/README.md +18 -6
  2. package/dist/cli/index.d.ts +2 -0
  3. package/dist/cli/index.d.ts.map +1 -1
  4. package/dist/cli/index.js +344 -3
  5. package/dist/cli/index.js.map +1 -1
  6. package/dist/daemon/agent-registry.d.ts +60 -0
  7. package/dist/daemon/agent-registry.d.ts.map +1 -0
  8. package/dist/daemon/agent-registry.js +158 -0
  9. package/dist/daemon/agent-registry.js.map +1 -0
  10. package/dist/daemon/connection.d.ts +11 -1
  11. package/dist/daemon/connection.d.ts.map +1 -1
  12. package/dist/daemon/connection.js +31 -2
  13. package/dist/daemon/connection.js.map +1 -1
  14. package/dist/daemon/index.d.ts +2 -0
  15. package/dist/daemon/index.d.ts.map +1 -1
  16. package/dist/daemon/index.js +2 -0
  17. package/dist/daemon/index.js.map +1 -1
  18. package/dist/daemon/registry.d.ts +9 -0
  19. package/dist/daemon/registry.d.ts.map +1 -0
  20. package/dist/daemon/registry.js +9 -0
  21. package/dist/daemon/registry.js.map +1 -0
  22. package/dist/daemon/router.d.ts +34 -2
  23. package/dist/daemon/router.d.ts.map +1 -1
  24. package/dist/daemon/router.js +111 -1
  25. package/dist/daemon/router.js.map +1 -1
  26. package/dist/daemon/server.d.ts +1 -0
  27. package/dist/daemon/server.d.ts.map +1 -1
  28. package/dist/daemon/server.js +60 -13
  29. package/dist/daemon/server.js.map +1 -1
  30. package/dist/dashboard/public/index.html +625 -16
  31. package/dist/dashboard/server.d.ts +1 -1
  32. package/dist/dashboard/server.d.ts.map +1 -1
  33. package/dist/dashboard/server.js +125 -7
  34. package/dist/dashboard/server.js.map +1 -1
  35. package/dist/index.d.ts +1 -0
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/protocol/types.d.ts +15 -1
  38. package/dist/protocol/types.d.ts.map +1 -1
  39. package/dist/storage/adapter.d.ts +53 -0
  40. package/dist/storage/adapter.d.ts.map +1 -1
  41. package/dist/storage/adapter.js +3 -0
  42. package/dist/storage/adapter.js.map +1 -1
  43. package/dist/storage/sqlite-adapter.d.ts +58 -1
  44. package/dist/storage/sqlite-adapter.d.ts.map +1 -1
  45. package/dist/storage/sqlite-adapter.js +374 -47
  46. package/dist/storage/sqlite-adapter.js.map +1 -1
  47. package/dist/utils/project-namespace.d.ts.map +1 -1
  48. package/dist/utils/project-namespace.js +22 -1
  49. package/dist/utils/project-namespace.js.map +1 -1
  50. package/dist/wrapper/client.d.ts +22 -3
  51. package/dist/wrapper/client.d.ts.map +1 -1
  52. package/dist/wrapper/client.js +59 -9
  53. package/dist/wrapper/client.js.map +1 -1
  54. package/dist/wrapper/parser.d.ts +110 -4
  55. package/dist/wrapper/parser.d.ts.map +1 -1
  56. package/dist/wrapper/parser.js +296 -84
  57. package/dist/wrapper/parser.js.map +1 -1
  58. package/dist/wrapper/tmux-wrapper.d.ts +100 -9
  59. package/dist/wrapper/tmux-wrapper.d.ts.map +1 -1
  60. package/dist/wrapper/tmux-wrapper.js +441 -83
  61. package/dist/wrapper/tmux-wrapper.js.map +1 -1
  62. package/docs/AGENTS.md +27 -27
  63. package/docs/CHANGELOG.md +1 -1
  64. package/docs/DESIGN_V2.md +1079 -0
  65. package/docs/INTEGRATION-GUIDE.md +926 -0
  66. package/docs/PROPOSAL-trajectories.md +1582 -0
  67. package/docs/PROTOCOL.md +3 -3
  68. package/docs/SCALING_ANALYSIS.md +280 -0
  69. package/docs/TMUX_IMPLEMENTATION_NOTES.md +9 -9
  70. package/docs/TMUX_IMPROVEMENTS.md +968 -0
  71. package/docs/competitive-analysis-mcp-agent-mail.md +389 -0
  72. package/package.json +6 -2
@@ -3,27 +3,59 @@
3
3
  * Extracts relay commands from agent terminal output.
4
4
  *
5
5
  * Supports two formats:
6
- * 1. Inline: @relay:<target> <message> (single line, start of line only)
6
+ * 1. Inline: ->relay:<target> <message> (single line, start of line only)
7
7
  * 2. Block: [[RELAY]]{ json }[[/RELAY]] (multi-line, structured)
8
8
  *
9
9
  * Rules:
10
10
  * - Inline only matches at start of line (after whitespace)
11
11
  * - Ignores content inside code fences
12
- * - Escape with \@relay: to output literal
12
+ * - Escape with \->relay: to output literal
13
13
  * - Block format is preferred for structured data
14
14
  */
15
15
  const DEFAULT_OPTIONS = {
16
16
  maxBlockBytes: 1024 * 1024, // 1 MiB
17
17
  enableInline: true,
18
18
  enableBlock: true,
19
+ prefix: '->relay:',
20
+ thinkingPrefix: '->thinking:',
19
21
  };
20
- // Patterns
21
- // Allow common input prefixes: >, $, %, #, →, ➜, bullets (●•◦‣⁃-*⏺◆◇○□■), and their variations
22
- const INLINE_RELAY = /^(?:\s*(?:[>$%#→➜›»●•◦‣⁃\-*⏺◆◇○□■]\s*)*)?@relay:(\S+)\s+(.+)$/;
23
- const INLINE_THINKING = /^(?:\s*(?:[>$%#→➜›»●•◦‣⁃\-*⏺◆◇○□■]\s*)*)?@thinking:(\S+)\s+(.+)$/;
22
+ // Static patterns (not prefix-dependent)
24
23
  const BLOCK_END = /\[\[\/RELAY\]\]/;
25
- const CODE_FENCE = /^```/;
26
- const ESCAPE_PREFIX = /^(\s*)\\@(relay|thinking):/;
24
+ const BLOCK_METADATA_START = '[[RELAY_METADATA]]';
25
+ const BLOCK_METADATA_END = /\[\[\/RELAY_METADATA\]\]/;
26
+ const CODE_FENCE = /^```/; // Continuation helpers
27
+ const BULLET_OR_NUMBERED_LIST = /^[ \t]*([\-*•◦‣⏺◆◇○□■]|[0-9]+[.)])\s+/;
28
+ const PROMPTISH_LINE = /^[\s]*[>$%#➜›»][\s]*$/;
29
+ const RELAY_INJECTION_PREFIX = /^\s*Relay message from /;
30
+ const MAX_INLINE_CONTINUATION_LINES = 30;
31
+ /**
32
+ * Escape special regex characters in a string
33
+ */
34
+ function escapeRegex(str) {
35
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
36
+ }
37
+ /**
38
+ * Build inline pattern for a given prefix
39
+ * Allow common input prefixes: >, $, %, #, →, ➜, bullets (●•◦‣⁃-*⏺◆◇○□■), box chars (│┃┆┇┊┋╎╏), and their variations
40
+ *
41
+ * Supports optional thread syntax: ->relay:Target [thread:id] message
42
+ * Thread IDs can contain alphanumeric chars, hyphens, underscores
43
+ */
44
+ function buildInlinePattern(prefix) {
45
+ const escaped = escapeRegex(prefix);
46
+ // Group 1: target, Group 2: optional thread ID (without brackets), Group 3: message body
47
+ // Includes box drawing characters (│┃┆┇┊┋╎╏) and sparkle (✦) for Gemini CLI output
48
+ return new RegExp(`^(?:\\s*(?:[>$%#→➜›»●•◦‣⁃\\-*⏺◆◇○□■│┃┆┇┊┋╎╏✦]\\s*)*)?${escaped}(\\S+)(?:\\s+\\[thread:([\\w-]+)\\])?\\s+(.+)$`);
49
+ }
50
+ /**
51
+ * Build escape pattern for a given prefix (e.g., \->relay: or \->)
52
+ */
53
+ function buildEscapePattern(prefix, thinkingPrefix) {
54
+ // Extract the first character(s) that would be escaped
55
+ const prefixEscaped = escapeRegex(prefix);
56
+ const thinkingEscaped = escapeRegex(thinkingPrefix);
57
+ return new RegExp(`^(\\s*)\\\\(${prefixEscaped}|${thinkingEscaped})`);
58
+ }
27
59
  // ANSI escape sequence pattern for stripping
28
60
  // eslint-disable-next-line no-control-regex
29
61
  const ANSI_PATTERN = /\x1b\[[0-9;?]*[a-zA-Z]|\x1b\].*?(?:\x07|\x1b\\)|\r/g;
@@ -38,8 +70,24 @@ export class OutputParser {
38
70
  inCodeFence = false;
39
71
  inBlock = false;
40
72
  blockBuffer = '';
73
+ blockType = null;
74
+ lastParsedMetadata = null;
75
+ // Dynamic patterns based on prefix configuration
76
+ inlineRelayPattern;
77
+ inlineThinkingPattern;
78
+ escapePattern;
41
79
  constructor(options = {}) {
42
80
  this.options = { ...DEFAULT_OPTIONS, ...options };
81
+ // Build patterns based on configured prefixes
82
+ this.inlineRelayPattern = buildInlinePattern(this.options.prefix);
83
+ this.inlineThinkingPattern = buildInlinePattern(this.options.thinkingPrefix);
84
+ this.escapePattern = buildEscapePattern(this.options.prefix, this.options.thinkingPrefix);
85
+ }
86
+ /**
87
+ * Get the configured relay prefix
88
+ */
89
+ get prefix() {
90
+ return this.options.prefix;
43
91
  }
44
92
  /**
45
93
  * Push data into the parser and extract commands.
@@ -52,15 +100,15 @@ export class OutputParser {
52
100
  const commands = [];
53
101
  let output = '';
54
102
  // If we're inside a block, accumulate until we see the end
55
- if (this.inBlock) {
56
- return this.parseInBlockMode(data, commands);
103
+ if (this.inBlock && this.blockType) {
104
+ return this.parseInBlockMode(data, commands, this.blockType);
57
105
  }
58
- // Find [[RELAY]] that's at the start of a line (or start of input)
59
- // and NOT inside a code fence
60
- const blockStartIdx = this.findBlockStart(data);
61
- if (this.options.enableBlock && blockStartIdx !== -1) {
62
- const before = data.substring(0, blockStartIdx);
63
- const after = data.substring(blockStartIdx + '[[RELAY]]'.length);
106
+ // Find [[RELAY_METADATA]] or [[RELAY]] that's at the start of a line
107
+ const blockStart = this.findBlockStart(data);
108
+ if (this.options.enableBlock && blockStart.index !== -1 && blockStart.identifier) {
109
+ const blockStartIdentifier = blockStart.identifier;
110
+ const before = data.substring(0, blockStart.index);
111
+ const after = data.substring(blockStart.index + blockStartIdentifier.length);
64
112
  // Output everything before the block start
65
113
  if (before) {
66
114
  const beforeResult = this.parsePassThrough(before, commands);
@@ -68,17 +116,20 @@ export class OutputParser {
68
116
  }
69
117
  // Enter block mode
70
118
  this.inBlock = true;
119
+ this.blockType = blockStartIdentifier === BLOCK_METADATA_START ? 'RELAY_METADATA' : 'RELAY';
71
120
  this.blockBuffer = after;
72
121
  // Check size limit before processing
73
122
  if (this.blockBuffer.length > this.options.maxBlockBytes) {
74
123
  console.error('[parser] Block too large, discarding');
75
124
  this.inBlock = false;
76
125
  this.blockBuffer = '';
126
+ this.blockType = null;
77
127
  return { commands, output };
78
128
  }
79
129
  // Check if block ends in same chunk
80
- if (BLOCK_END.test(this.blockBuffer)) {
81
- const blockResult = this.finishBlock();
130
+ const blockEndPattern = this.blockType === 'RELAY_METADATA' ? BLOCK_METADATA_END : BLOCK_END;
131
+ if (blockEndPattern.test(this.blockBuffer)) {
132
+ const blockResult = this.finishBlock(this.blockType);
82
133
  if (blockResult.command) {
83
134
  commands.push(blockResult.command);
84
135
  }
@@ -96,59 +147,66 @@ export class OutputParser {
96
147
  return { commands, output };
97
148
  }
98
149
  /**
99
- * Find [[RELAY]] that's at the start of a line and not inside a code fence.
100
- * Returns the index, or -1 if not found.
150
+ * Find [[RELAY_METADATA]] or [[RELAY]] that's at the start of a line and not inside a code fence.
151
+ * Returns the index and identifier, or -1 and null if not found.
101
152
  */
102
153
  findBlockStart(data) {
103
154
  // Track code fence state through the data
104
155
  let inFence = this.inCodeFence;
105
156
  let searchStart = 0;
157
+ // Prioritize RELAY_METADATA over RELAY
158
+ const blockIdentifiers = [BLOCK_METADATA_START, '[[RELAY]]'];
106
159
  while (searchStart < data.length) {
107
- // Look for next [[RELAY]] or code fence
108
- const relayIdx = data.indexOf('[[RELAY]]', searchStart);
109
- const fenceIdx = data.indexOf('```', searchStart);
110
- // No more [[RELAY]] found
111
- if (relayIdx === -1) {
160
+ let earliestBlockIdx = -1;
161
+ let earliestBlockIdentifier = null;
162
+ for (const identifier of blockIdentifiers) {
163
+ const currentBlockIdx = data.indexOf(identifier, searchStart);
164
+ if (currentBlockIdx !== -1 && (earliestBlockIdx === -1 || currentBlockIdx < earliestBlockIdx)) {
165
+ earliestBlockIdx = currentBlockIdx;
166
+ earliestBlockIdentifier = identifier;
167
+ }
168
+ }
169
+ // No more blocks found
170
+ if (earliestBlockIdx === -1) {
112
171
  // Still update code fence state for remaining data
172
+ let fenceIdx = data.indexOf('```', searchStart);
113
173
  while (fenceIdx !== -1) {
114
- const nextFence = data.indexOf('```', searchStart);
115
- if (nextFence === -1)
116
- break;
117
174
  inFence = !inFence;
118
- searchStart = nextFence + 3;
175
+ searchStart = fenceIdx + 3;
176
+ fenceIdx = data.indexOf('```', searchStart);
119
177
  }
120
- return -1;
178
+ return { index: -1, identifier: null };
121
179
  }
122
- // Process any code fences before this [[RELAY]]
180
+ // Process any code fences before this block
123
181
  let tempIdx = searchStart;
124
182
  while (true) {
125
183
  const nextFence = data.indexOf('```', tempIdx);
126
- if (nextFence === -1 || nextFence >= relayIdx)
184
+ if (nextFence === -1 || nextFence >= earliestBlockIdx)
127
185
  break;
128
186
  inFence = !inFence;
129
187
  tempIdx = nextFence + 3;
130
188
  }
131
- // If we're inside a code fence, skip this [[RELAY]]
189
+ // If we're inside a code fence, skip this block
132
190
  if (inFence) {
133
- searchStart = relayIdx + 9; // Skip past [[RELAY]]
191
+ searchStart = earliestBlockIdx + (earliestBlockIdentifier?.length ?? 0); // Skip past the block
134
192
  continue;
135
193
  }
136
- // Check if [[RELAY]] is at start of a line
137
- if (relayIdx === 0) {
138
- return 0; // At very start
194
+ // Check if block is at start of a line
195
+ if (earliestBlockIdx === 0) {
196
+ return { index: 0, identifier: earliestBlockIdentifier }; // At very start
139
197
  }
140
198
  // Look backwards for the start of line
141
- const beforeRelay = data.substring(0, relayIdx);
142
- const lastNewline = beforeRelay.lastIndexOf('\n');
143
- const lineStart = beforeRelay.substring(lastNewline + 1);
144
- // Must be only whitespace before [[RELAY]] on this line
199
+ const beforeBlock = data.substring(0, earliestBlockIdx);
200
+ const lastNewline = beforeBlock.lastIndexOf('\n');
201
+ const lineStart = beforeBlock.substring(lastNewline + 1);
202
+ // Must be only whitespace before block on this line
145
203
  if (/^\s*$/.test(lineStart)) {
146
- return relayIdx;
204
+ return { index: earliestBlockIdx, identifier: earliestBlockIdentifier };
147
205
  }
148
206
  // Not at start of line, keep searching
149
- searchStart = relayIdx + 9;
207
+ searchStart = earliestBlockIdx + (earliestBlockIdentifier?.length ?? 0);
150
208
  }
151
- return -1;
209
+ return { index: -1, identifier: null };
152
210
  }
153
211
  /**
154
212
  * Parse data in pass-through mode - TRUE pass-through for terminal rendering.
@@ -164,6 +222,42 @@ export class OutputParser {
164
222
  // Simple approach: split data, check each line (complete or not), rebuild output
165
223
  const lines = data.split('\n');
166
224
  const hasTrailingNewline = data.endsWith('\n');
225
+ const isInlineStart = (line) => {
226
+ return this.inlineRelayPattern.test(line) || this.inlineThinkingPattern.test(line);
227
+ };
228
+ const isBlockMarker = (line) => {
229
+ return CODE_FENCE.test(line) || line.includes('[[RELAY]]') || BLOCK_END.test(line);
230
+ };
231
+ const shouldStopContinuation = (line) => {
232
+ const trimmed = line.trim();
233
+ if (trimmed === '')
234
+ return true; // Blank line ends the message
235
+ if (isInlineStart(line))
236
+ return true;
237
+ if (isBlockMarker(line))
238
+ return true;
239
+ if (PROMPTISH_LINE.test(trimmed))
240
+ return true;
241
+ if (RELAY_INJECTION_PREFIX.test(line))
242
+ return true; // Avoid swallowing injected inbound messages
243
+ return false;
244
+ };
245
+ const isContinuationLine = (original, stripped, prevStripped, continuationCount) => {
246
+ if (shouldStopContinuation(stripped))
247
+ return false;
248
+ if (/^[ \t]/.test(original))
249
+ return true; // Indented lines from TUI wrapping
250
+ if (BULLET_OR_NUMBERED_LIST.test(stripped))
251
+ return true; // Bullet/numbered lists after ->relay:
252
+ const prevTrimmed = prevStripped.trimEnd();
253
+ const prevSuggestsContinuation = prevTrimmed !== '' && /[:;,\-–—…]$/.test(prevTrimmed);
254
+ if (prevSuggestsContinuation)
255
+ return true;
256
+ // If we've already continued once, allow subsequent lines until a stop condition
257
+ if (continuationCount > 0)
258
+ return true;
259
+ return false;
260
+ };
167
261
  const outputLines = [];
168
262
  let strippedCount = 0;
169
263
  for (let i = 0; i < lines.length; i++) {
@@ -187,6 +281,7 @@ export class OutputParser {
187
281
  let body = result.command.body;
188
282
  const rawLines = [result.command.raw];
189
283
  let consumed = 0;
284
+ let continuationLines = 0;
190
285
  while (i + 1 < lines.length) {
191
286
  const nextIsLast = i + 1 === lines.length - 1;
192
287
  const nextLine = lines[i + 1];
@@ -195,26 +290,21 @@ export class OutputParser {
195
290
  break;
196
291
  }
197
292
  const nextStripped = stripAnsi(nextLine);
198
- // Stop at empty lines - they end the continuation
199
- if (nextStripped.trim() === '') {
293
+ const prevStripped = stripAnsi(rawLines[rawLines.length - 1] ?? '');
294
+ // Stop if this line clearly marks a new block, prompt, or inline command
295
+ if (shouldStopContinuation(nextStripped)) {
200
296
  break;
201
297
  }
202
- // Stop if the next line starts another inline command, code fence, or block marker
203
- if (INLINE_RELAY.test(nextStripped) ||
204
- INLINE_THINKING.test(nextStripped) ||
205
- CODE_FENCE.test(nextStripped) ||
206
- nextStripped.includes('[[RELAY]]') ||
207
- BLOCK_END.test(nextStripped)) {
298
+ if (continuationLines >= MAX_INLINE_CONTINUATION_LINES) {
208
299
  break;
209
300
  }
210
- // Only consume as continuation if the line is INDENTED (starts with whitespace)
211
- // This handles TUI wrapping where continuation lines are indented
212
- // Non-indented lines are regular output, not continuation
213
- if (!/^[ \t]/.test(nextLine)) {
301
+ // Consume as continuation if it looks like it belongs to the ->relay message
302
+ if (!isContinuationLine(nextLine, nextStripped, prevStripped, continuationLines)) {
214
303
  break;
215
304
  }
216
305
  consumed++;
217
306
  i++; // Skip the consumed continuation line
307
+ continuationLines++;
218
308
  body += '\n' + nextLine;
219
309
  rawLines.push(nextLine);
220
310
  }
@@ -250,18 +340,20 @@ export class OutputParser {
250
340
  /**
251
341
  * Parse while inside a [[RELAY]] block - buffer until we see [[/RELAY]].
252
342
  */
253
- parseInBlockMode(data, commands) {
343
+ parseInBlockMode(data, commands, blockType) {
254
344
  this.blockBuffer += data;
255
345
  // Check size limit
256
346
  if (this.blockBuffer.length > this.options.maxBlockBytes) {
257
347
  console.error('[parser] Block too large, discarding');
258
348
  this.inBlock = false;
259
349
  this.blockBuffer = '';
350
+ this.blockType = null;
260
351
  return { commands, output: '' };
261
352
  }
262
353
  // Check for block end
263
- if (BLOCK_END.test(this.blockBuffer)) {
264
- const result = this.finishBlock();
354
+ const blockEndPattern = blockType === 'RELAY_METADATA' ? BLOCK_METADATA_END : BLOCK_END;
355
+ if (blockEndPattern.test(this.blockBuffer)) {
356
+ const result = this.finishBlock(blockType);
265
357
  if (result.command) {
266
358
  commands.push(result.command);
267
359
  }
@@ -297,35 +389,37 @@ export class OutputParser {
297
389
  return { command: null, output: line };
298
390
  }
299
391
  // Check for escaped inline (on stripped text)
300
- const escapeMatch = stripped.match(ESCAPE_PREFIX);
392
+ const escapeMatch = stripped.match(this.escapePattern);
301
393
  if (escapeMatch) {
302
- // Output with escape removed
303
- const unescaped = line.replace(/\\@/, '@');
394
+ // Output with escape removed (remove the backslash before the prefix)
395
+ const unescaped = line.replace(/\\/, '');
304
396
  return { command: null, output: unescaped };
305
397
  }
306
398
  // Check for inline relay (on stripped text)
307
399
  if (this.options.enableInline) {
308
- const relayMatch = stripped.match(INLINE_RELAY);
400
+ const relayMatch = stripped.match(this.inlineRelayPattern);
309
401
  if (relayMatch) {
310
- const [raw, target, body] = relayMatch;
402
+ const [raw, target, threadId, body] = relayMatch;
311
403
  return {
312
404
  command: {
313
405
  to: target,
314
406
  kind: 'message',
315
407
  body,
408
+ thread: threadId || undefined, // undefined if no thread specified
316
409
  raw,
317
410
  },
318
411
  output: null, // Don't output relay commands
319
412
  };
320
413
  }
321
- const thinkingMatch = stripped.match(INLINE_THINKING);
414
+ const thinkingMatch = stripped.match(this.inlineThinkingPattern);
322
415
  if (thinkingMatch) {
323
- const [raw, target, body] = thinkingMatch;
416
+ const [raw, target, threadId, body] = thinkingMatch;
324
417
  return {
325
418
  command: {
326
419
  to: target,
327
420
  kind: 'thinking',
328
421
  body,
422
+ thread: threadId || undefined,
329
423
  raw,
330
424
  },
331
425
  output: null,
@@ -339,33 +433,56 @@ export class OutputParser {
339
433
  * Finish processing a block and extract command.
340
434
  * Returns the command (if valid) and any remaining content after [[/RELAY]].
341
435
  */
342
- finishBlock() {
343
- const endIdx = this.blockBuffer.indexOf('[[/RELAY]]');
436
+ finishBlock(blockType) {
437
+ const blockEndIdentifier = blockType === 'RELAY_METADATA' ? BLOCK_METADATA_END.source : BLOCK_END.source;
438
+ const endIdx = this.blockBuffer.indexOf(blockEndIdentifier.replace(/\\/g, '')); // Remove regex escapes for indexOf
344
439
  const jsonStr = this.blockBuffer.substring(0, endIdx).trim();
345
- const remaining = this.blockBuffer.substring(endIdx + '[[/RELAY]]'.length) || null;
440
+ const remaining = this.blockBuffer.substring(endIdx + blockEndIdentifier.replace(/\\/g, '').length) || null;
346
441
  this.inBlock = false;
347
442
  this.blockBuffer = '';
348
- try {
349
- const parsed = JSON.parse(jsonStr);
350
- // Validate required fields
351
- if (!parsed.to || !parsed.type) {
352
- console.error('[parser] Block missing required fields (to, type)');
353
- return { command: null, remaining };
443
+ this.blockType = null;
444
+ if (blockType === 'RELAY_METADATA') {
445
+ try {
446
+ const metadata = JSON.parse(jsonStr);
447
+ this.lastParsedMetadata = metadata;
448
+ return { command: null, remaining, metadata };
449
+ }
450
+ catch (err) {
451
+ console.error('[parser] Invalid JSON in RELAY_METADATA block:', err);
452
+ this.lastParsedMetadata = null;
453
+ return { command: null, remaining, metadata: null };
354
454
  }
355
- return {
356
- command: {
455
+ }
456
+ else { // blockType === 'RELAY'
457
+ try {
458
+ const parsed = JSON.parse(jsonStr);
459
+ // Validate required fields
460
+ if (!parsed.to || !parsed.type) {
461
+ console.error('[parser] Block missing required fields (to, type)');
462
+ this.lastParsedMetadata = null; // Clear metadata even if RELAY block is invalid
463
+ return { command: null, remaining, metadata: null };
464
+ }
465
+ const command = {
357
466
  to: parsed.to,
358
467
  kind: parsed.type,
359
468
  body: parsed.body ?? parsed.text ?? '',
360
469
  data: parsed.data,
470
+ thread: parsed.thread || undefined,
361
471
  raw: jsonStr,
362
- },
363
- remaining,
364
- };
365
- }
366
- catch (err) {
367
- console.error('[parser] Invalid JSON in block:', err);
368
- return { command: null, remaining };
472
+ meta: this.lastParsedMetadata || undefined, // Attach last parsed metadata
473
+ };
474
+ this.lastParsedMetadata = null; // Clear after use
475
+ return {
476
+ command,
477
+ remaining,
478
+ metadata: null,
479
+ };
480
+ }
481
+ catch (err) {
482
+ console.error('[parser] Invalid JSON in RELAY block:', err);
483
+ this.lastParsedMetadata = null;
484
+ return { command: null, remaining, metadata: null };
485
+ }
369
486
  }
370
487
  }
371
488
  /**
@@ -375,6 +492,8 @@ export class OutputParser {
375
492
  const result = this.parse('\n');
376
493
  this.inBlock = false;
377
494
  this.blockBuffer = '';
495
+ this.blockType = null;
496
+ this.lastParsedMetadata = null;
378
497
  this.inCodeFence = false;
379
498
  return result;
380
499
  }
@@ -384,6 +503,8 @@ export class OutputParser {
384
503
  reset() {
385
504
  this.inBlock = false;
386
505
  this.blockBuffer = '';
506
+ this.blockType = null;
507
+ this.lastParsedMetadata = null;
387
508
  this.inCodeFence = false;
388
509
  }
389
510
  }
@@ -394,4 +515,95 @@ export function formatIncomingMessage(from, body, kind = 'message') {
394
515
  const prefix = kind === 'thinking' ? '[THINKING]' : '[MSG]';
395
516
  return `\n${prefix} from ${from}: ${body}\n`;
396
517
  }
518
+ /**
519
+ * Parse [[RELAY_METADATA]]...[[/RELAY_METADATA]] blocks from agent output.
520
+ * Agents can output metadata to enhance messages.
521
+ *
522
+ * Format:
523
+ * [[RELAY_METADATA]]
524
+ * {
525
+ * "subject": "Task update",
526
+ * "importance": 80,
527
+ * "replyTo": "msg-abc123",
528
+ * "ackRequired": true
529
+ * }
530
+ * [[/RELAY_METADATA]]
531
+ */
532
+ export function parseRelayMetadataFromOutput(output) {
533
+ const match = output.match(/\[\[RELAY_METADATA\]\]([\s\S]*?)\[\[\/RELAY_METADATA\]\]/);
534
+ if (!match) {
535
+ return { found: false, valid: false, metadata: null, rawContent: null };
536
+ }
537
+ const rawContent = match[1].trim();
538
+ try {
539
+ const metadata = JSON.parse(rawContent);
540
+ return { found: true, valid: true, metadata, rawContent };
541
+ }
542
+ catch {
543
+ return { found: true, valid: false, metadata: null, rawContent };
544
+ }
545
+ }
546
+ /**
547
+ * Parse [[SUMMARY]]...[[/SUMMARY]] blocks from agent output.
548
+ * Agents can output summaries to keep a running context of their work.
549
+ *
550
+ * Format:
551
+ * [[SUMMARY]]
552
+ * {
553
+ * "currentTask": "Working on auth module",
554
+ * "context": "Completed login flow, now implementing logout",
555
+ * "files": ["src/auth.ts", "src/session.ts"]
556
+ * }
557
+ * [[/SUMMARY]]
558
+ */
559
+ export function parseSummaryFromOutput(output) {
560
+ const result = parseSummaryWithDetails(output);
561
+ return result.summary;
562
+ }
563
+ /**
564
+ * Parse SUMMARY block with full details for deduplication.
565
+ * Returns raw content to allow caller to dedupe before logging errors.
566
+ */
567
+ export function parseSummaryWithDetails(output) {
568
+ const match = output.match(/\[\[SUMMARY\]\]([\s\S]*?)\[\[\/SUMMARY\]\]/);
569
+ if (!match) {
570
+ return { found: false, valid: false, summary: null, rawContent: null };
571
+ }
572
+ const rawContent = match[1].trim();
573
+ try {
574
+ const summary = JSON.parse(rawContent);
575
+ return { found: true, valid: true, summary, rawContent };
576
+ }
577
+ catch {
578
+ return { found: true, valid: false, summary: null, rawContent };
579
+ }
580
+ }
581
+ /**
582
+ * Parse [[SESSION_END]]...[[/SESSION_END]] blocks from agent output.
583
+ * Agents output this to explicitly mark their session as complete.
584
+ *
585
+ * Format:
586
+ * [[SESSION_END]]
587
+ * {"summary": "Completed auth module implementation", "completedTasks": ["login", "logout"]}
588
+ * [[/SESSION_END]]
589
+ *
590
+ * Or simply: [[SESSION_END]][[/SESSION_END]] for a clean close without summary.
591
+ */
592
+ export function parseSessionEndFromOutput(output) {
593
+ const match = output.match(/\[\[SESSION_END\]\]([\s\S]*?)\[\[\/SESSION_END\]\]/);
594
+ if (!match) {
595
+ return null;
596
+ }
597
+ const content = match[1].trim();
598
+ if (!content) {
599
+ return {}; // Empty marker = session ended without summary
600
+ }
601
+ try {
602
+ return JSON.parse(content);
603
+ }
604
+ catch {
605
+ // If not valid JSON, treat the content as a plain summary string
606
+ return { summary: content };
607
+ }
608
+ }
397
609
  //# sourceMappingURL=parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/wrapper/parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/wrapper/parser.ts"],"names":[],"mappings":"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"}