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.
- package/README.md +18 -6
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +344 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/daemon/agent-registry.d.ts +60 -0
- package/dist/daemon/agent-registry.d.ts.map +1 -0
- package/dist/daemon/agent-registry.js +158 -0
- package/dist/daemon/agent-registry.js.map +1 -0
- package/dist/daemon/connection.d.ts +11 -1
- package/dist/daemon/connection.d.ts.map +1 -1
- package/dist/daemon/connection.js +31 -2
- package/dist/daemon/connection.js.map +1 -1
- package/dist/daemon/index.d.ts +2 -0
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +2 -0
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/registry.d.ts +9 -0
- package/dist/daemon/registry.d.ts.map +1 -0
- package/dist/daemon/registry.js +9 -0
- package/dist/daemon/registry.js.map +1 -0
- package/dist/daemon/router.d.ts +34 -2
- package/dist/daemon/router.d.ts.map +1 -1
- package/dist/daemon/router.js +111 -1
- package/dist/daemon/router.js.map +1 -1
- package/dist/daemon/server.d.ts +1 -0
- package/dist/daemon/server.d.ts.map +1 -1
- package/dist/daemon/server.js +60 -13
- package/dist/daemon/server.js.map +1 -1
- package/dist/dashboard/public/index.html +625 -16
- package/dist/dashboard/server.d.ts +1 -1
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +125 -7
- package/dist/dashboard/server.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/protocol/types.d.ts +15 -1
- package/dist/protocol/types.d.ts.map +1 -1
- package/dist/storage/adapter.d.ts +53 -0
- package/dist/storage/adapter.d.ts.map +1 -1
- package/dist/storage/adapter.js +3 -0
- package/dist/storage/adapter.js.map +1 -1
- package/dist/storage/sqlite-adapter.d.ts +58 -1
- package/dist/storage/sqlite-adapter.d.ts.map +1 -1
- package/dist/storage/sqlite-adapter.js +374 -47
- package/dist/storage/sqlite-adapter.js.map +1 -1
- package/dist/utils/project-namespace.d.ts.map +1 -1
- package/dist/utils/project-namespace.js +22 -1
- package/dist/utils/project-namespace.js.map +1 -1
- package/dist/wrapper/client.d.ts +22 -3
- package/dist/wrapper/client.d.ts.map +1 -1
- package/dist/wrapper/client.js +59 -9
- package/dist/wrapper/client.js.map +1 -1
- package/dist/wrapper/parser.d.ts +110 -4
- package/dist/wrapper/parser.d.ts.map +1 -1
- package/dist/wrapper/parser.js +296 -84
- package/dist/wrapper/parser.js.map +1 -1
- package/dist/wrapper/tmux-wrapper.d.ts +100 -9
- package/dist/wrapper/tmux-wrapper.d.ts.map +1 -1
- package/dist/wrapper/tmux-wrapper.js +441 -83
- package/dist/wrapper/tmux-wrapper.js.map +1 -1
- package/docs/AGENTS.md +27 -27
- package/docs/CHANGELOG.md +1 -1
- package/docs/DESIGN_V2.md +1079 -0
- package/docs/INTEGRATION-GUIDE.md +926 -0
- package/docs/PROPOSAL-trajectories.md +1582 -0
- package/docs/PROTOCOL.md +3 -3
- package/docs/SCALING_ANALYSIS.md +280 -0
- package/docs/TMUX_IMPLEMENTATION_NOTES.md +9 -9
- package/docs/TMUX_IMPROVEMENTS.md +968 -0
- package/docs/competitive-analysis-mcp-agent-mail.md +389 -0
- package/package.json +6 -2
package/dist/wrapper/parser.js
CHANGED
|
@@ -3,27 +3,59 @@
|
|
|
3
3
|
* Extracts relay commands from agent terminal output.
|
|
4
4
|
*
|
|
5
5
|
* Supports two formats:
|
|
6
|
-
* 1. Inline:
|
|
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
|
|
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
|
-
//
|
|
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
|
|
26
|
-
const
|
|
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
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
const before = data.substring(0,
|
|
63
|
-
const after = data.substring(
|
|
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
|
-
|
|
81
|
-
|
|
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
|
-
|
|
108
|
-
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
|
|
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 =
|
|
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
|
|
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 >=
|
|
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
|
|
189
|
+
// If we're inside a code fence, skip this block
|
|
132
190
|
if (inFence) {
|
|
133
|
-
searchStart =
|
|
191
|
+
searchStart = earliestBlockIdx + (earliestBlockIdentifier?.length ?? 0); // Skip past the block
|
|
134
192
|
continue;
|
|
135
193
|
}
|
|
136
|
-
// Check if
|
|
137
|
-
if (
|
|
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
|
|
142
|
-
const lastNewline =
|
|
143
|
-
const lineStart =
|
|
144
|
-
// Must be only whitespace before
|
|
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
|
|
204
|
+
return { index: earliestBlockIdx, identifier: earliestBlockIdentifier };
|
|
147
205
|
}
|
|
148
206
|
// Not at start of line, keep searching
|
|
149
|
-
searchStart =
|
|
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
|
-
|
|
199
|
-
if
|
|
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
|
-
|
|
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
|
-
//
|
|
211
|
-
|
|
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
|
-
|
|
264
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
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 + '
|
|
440
|
+
const remaining = this.blockBuffer.substring(endIdx + blockEndIdentifier.replace(/\\/g, '').length) || null;
|
|
346
441
|
this.inBlock = false;
|
|
347
442
|
this.blockBuffer = '';
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
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
|
-
|
|
356
|
-
|
|
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
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
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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"}
|