agent-relay 1.0.7 → 1.0.9

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 (140) hide show
  1. package/README.md +176 -6
  2. package/dist/bridge/config.d.ts +41 -0
  3. package/dist/bridge/config.d.ts.map +1 -0
  4. package/dist/bridge/config.js +143 -0
  5. package/dist/bridge/config.js.map +1 -0
  6. package/dist/bridge/index.d.ts +10 -0
  7. package/dist/bridge/index.d.ts.map +1 -0
  8. package/dist/bridge/index.js +10 -0
  9. package/dist/bridge/index.js.map +1 -0
  10. package/dist/bridge/multi-project-client.d.ts +99 -0
  11. package/dist/bridge/multi-project-client.d.ts.map +1 -0
  12. package/dist/bridge/multi-project-client.js +386 -0
  13. package/dist/bridge/multi-project-client.js.map +1 -0
  14. package/dist/bridge/spawner.d.ts +46 -0
  15. package/dist/bridge/spawner.d.ts.map +1 -0
  16. package/dist/bridge/spawner.js +223 -0
  17. package/dist/bridge/spawner.js.map +1 -0
  18. package/dist/bridge/types.d.ts +55 -0
  19. package/dist/bridge/types.d.ts.map +1 -0
  20. package/dist/bridge/types.js +6 -0
  21. package/dist/bridge/types.js.map +1 -0
  22. package/dist/bridge/utils.d.ts +30 -0
  23. package/dist/bridge/utils.d.ts.map +1 -0
  24. package/dist/bridge/utils.js +54 -0
  25. package/dist/bridge/utils.js.map +1 -0
  26. package/dist/cli/index.d.ts +2 -0
  27. package/dist/cli/index.d.ts.map +1 -1
  28. package/dist/cli/index.js +906 -6
  29. package/dist/cli/index.js.map +1 -1
  30. package/dist/daemon/agent-registry.d.ts +60 -0
  31. package/dist/daemon/agent-registry.d.ts.map +1 -0
  32. package/dist/daemon/agent-registry.js +163 -0
  33. package/dist/daemon/agent-registry.js.map +1 -0
  34. package/dist/daemon/connection.d.ts +33 -1
  35. package/dist/daemon/connection.d.ts.map +1 -1
  36. package/dist/daemon/connection.js +86 -11
  37. package/dist/daemon/connection.js.map +1 -1
  38. package/dist/daemon/index.d.ts +2 -0
  39. package/dist/daemon/index.d.ts.map +1 -1
  40. package/dist/daemon/index.js +2 -0
  41. package/dist/daemon/index.js.map +1 -1
  42. package/dist/daemon/registry.d.ts +9 -0
  43. package/dist/daemon/registry.d.ts.map +1 -0
  44. package/dist/daemon/registry.js +9 -0
  45. package/dist/daemon/registry.js.map +1 -0
  46. package/dist/daemon/router.d.ts +61 -2
  47. package/dist/daemon/router.d.ts.map +1 -1
  48. package/dist/daemon/router.js +219 -4
  49. package/dist/daemon/router.js.map +1 -1
  50. package/dist/daemon/server.d.ts +9 -0
  51. package/dist/daemon/server.d.ts.map +1 -1
  52. package/dist/daemon/server.js +135 -16
  53. package/dist/daemon/server.js.map +1 -1
  54. package/dist/dashboard/metrics.d.ts +105 -0
  55. package/dist/dashboard/metrics.d.ts.map +1 -0
  56. package/dist/dashboard/metrics.js +192 -0
  57. package/dist/dashboard/metrics.js.map +1 -0
  58. package/dist/dashboard/needs-attention.d.ts +24 -0
  59. package/dist/dashboard/needs-attention.d.ts.map +1 -0
  60. package/dist/dashboard/needs-attention.js +78 -0
  61. package/dist/dashboard/needs-attention.js.map +1 -0
  62. package/dist/dashboard/public/bridge.html +1272 -0
  63. package/dist/dashboard/public/index.html +2094 -347
  64. package/dist/dashboard/public/js/app.js +184 -0
  65. package/dist/dashboard/public/js/app.js.map +7 -0
  66. package/dist/dashboard/public/metrics.html +999 -0
  67. package/dist/dashboard/server.d.ts +14 -1
  68. package/dist/dashboard/server.d.ts.map +1 -1
  69. package/dist/dashboard/server.js +689 -16
  70. package/dist/dashboard/server.js.map +1 -1
  71. package/dist/dashboard/start.js +1 -1
  72. package/dist/dashboard/start.js.map +1 -1
  73. package/dist/dashboard-v2/index.d.ts +10 -0
  74. package/dist/dashboard-v2/index.d.ts.map +1 -0
  75. package/dist/dashboard-v2/index.js +54 -0
  76. package/dist/dashboard-v2/index.js.map +1 -0
  77. package/dist/dashboard-v2/lib/api.d.ts +95 -0
  78. package/dist/dashboard-v2/lib/api.d.ts.map +1 -0
  79. package/dist/dashboard-v2/lib/api.js +270 -0
  80. package/dist/dashboard-v2/lib/api.js.map +1 -0
  81. package/dist/dashboard-v2/lib/colors.d.ts +61 -0
  82. package/dist/dashboard-v2/lib/colors.d.ts.map +1 -0
  83. package/dist/dashboard-v2/lib/colors.js +198 -0
  84. package/dist/dashboard-v2/lib/colors.js.map +1 -0
  85. package/dist/dashboard-v2/lib/hierarchy.d.ts +74 -0
  86. package/dist/dashboard-v2/lib/hierarchy.d.ts.map +1 -0
  87. package/dist/dashboard-v2/lib/hierarchy.js +196 -0
  88. package/dist/dashboard-v2/lib/hierarchy.js.map +1 -0
  89. package/dist/dashboard-v2/types/index.d.ts +154 -0
  90. package/dist/dashboard-v2/types/index.d.ts.map +1 -0
  91. package/dist/dashboard-v2/types/index.js +6 -0
  92. package/dist/dashboard-v2/types/index.js.map +1 -0
  93. package/dist/index.d.ts +1 -0
  94. package/dist/index.d.ts.map +1 -1
  95. package/dist/protocol/types.d.ts +15 -1
  96. package/dist/protocol/types.d.ts.map +1 -1
  97. package/dist/storage/adapter.d.ts +74 -1
  98. package/dist/storage/adapter.d.ts.map +1 -1
  99. package/dist/storage/adapter.js +39 -0
  100. package/dist/storage/adapter.js.map +1 -1
  101. package/dist/storage/sqlite-adapter.d.ts +92 -1
  102. package/dist/storage/sqlite-adapter.d.ts.map +1 -1
  103. package/dist/storage/sqlite-adapter.js +615 -47
  104. package/dist/storage/sqlite-adapter.js.map +1 -1
  105. package/dist/utils/agent-config.d.ts +45 -0
  106. package/dist/utils/agent-config.d.ts.map +1 -0
  107. package/dist/utils/agent-config.js +118 -0
  108. package/dist/utils/agent-config.js.map +1 -0
  109. package/dist/utils/project-namespace.d.ts.map +1 -1
  110. package/dist/utils/project-namespace.js +22 -1
  111. package/dist/utils/project-namespace.js.map +1 -1
  112. package/dist/wrapper/client.d.ts +30 -3
  113. package/dist/wrapper/client.d.ts.map +1 -1
  114. package/dist/wrapper/client.js +85 -9
  115. package/dist/wrapper/client.js.map +1 -1
  116. package/dist/wrapper/parser.d.ts +127 -4
  117. package/dist/wrapper/parser.d.ts.map +1 -1
  118. package/dist/wrapper/parser.js +622 -86
  119. package/dist/wrapper/parser.js.map +1 -1
  120. package/dist/wrapper/tmux-wrapper.d.ts +136 -10
  121. package/dist/wrapper/tmux-wrapper.d.ts.map +1 -1
  122. package/dist/wrapper/tmux-wrapper.js +599 -79
  123. package/dist/wrapper/tmux-wrapper.js.map +1 -1
  124. package/docs/AGENTS.md +132 -27
  125. package/docs/ARCHITECTURE_DECISIONS.md +175 -0
  126. package/docs/CHANGELOG.md +1 -1
  127. package/docs/COMPETITIVE_ANALYSIS.md +897 -0
  128. package/docs/DESIGN_BRIDGE_STAFFING.md +878 -0
  129. package/docs/DESIGN_V2.md +1079 -0
  130. package/docs/INTEGRATION-GUIDE.md +926 -0
  131. package/docs/MONETIZATION.md +1679 -0
  132. package/docs/PROPOSAL-trajectories.md +1582 -0
  133. package/docs/PROTOCOL.md +3 -3
  134. package/docs/SCALING_ANALYSIS.md +280 -0
  135. package/docs/TMUX_IMPLEMENTATION_NOTES.md +9 -9
  136. package/docs/TMUX_IMPROVEMENTS.md +968 -0
  137. package/docs/agent-relay-snippet.md +61 -0
  138. package/docs/competitive-analysis-mcp-agent-mail.md +389 -0
  139. package/docs/dashboard-v2-plan.md +179 -0
  140. package/package.json +10 -3
@@ -3,13 +3,13 @@
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
  import type { PayloadKind } from '../protocol/types.js';
@@ -18,19 +18,47 @@ export interface ParsedCommand {
18
18
  kind: PayloadKind;
19
19
  body: string;
20
20
  data?: Record<string, unknown>;
21
+ /** Optional thread ID for grouping related messages */
22
+ thread?: string;
23
+ /** Optional project for cross-project messaging (e.g., ->relay:project:agent) */
24
+ project?: string;
21
25
  raw: string;
26
+ meta?: ParsedMessageMetadata;
22
27
  }
23
28
  export interface ParserOptions {
24
29
  maxBlockBytes?: number;
25
30
  enableInline?: boolean;
26
31
  enableBlock?: boolean;
32
+ /** Relay prefix pattern (default: '->relay:') */
33
+ prefix?: string;
34
+ /** Thinking prefix pattern (default: '->thinking:') */
35
+ thinkingPrefix?: string;
27
36
  }
28
37
  export declare class OutputParser {
29
38
  private options;
30
39
  private inCodeFence;
31
40
  private inBlock;
32
41
  private blockBuffer;
42
+ private blockType;
43
+ private lastParsedMetadata;
44
+ private inThinkingBlock;
45
+ private inFencedInline;
46
+ private fencedInlineBuffer;
47
+ private fencedInlineTarget;
48
+ private fencedInlineThread;
49
+ private fencedInlineProject;
50
+ private fencedInlineRaw;
51
+ private fencedInlineKind;
52
+ private inlineRelayPattern;
53
+ private inlineThinkingPattern;
54
+ private fencedRelayPattern;
55
+ private fencedThinkingPattern;
56
+ private escapePattern;
33
57
  constructor(options?: ParserOptions);
58
+ /**
59
+ * Get the configured relay prefix
60
+ */
61
+ get prefix(): string;
34
62
  /**
35
63
  * Push data into the parser and extract commands.
36
64
  * Returns array of parsed commands and cleaned output.
@@ -43,8 +71,8 @@ export declare class OutputParser {
43
71
  output: string;
44
72
  };
45
73
  /**
46
- * Find [[RELAY]] that's at the start of a line and not inside a code fence.
47
- * Returns the index, or -1 if not found.
74
+ * Find [[RELAY_METADATA]] or [[RELAY]] that's at the start of a line and not inside a code fence.
75
+ * Returns the index and identifier, or -1 and null if not found.
48
76
  */
49
77
  private findBlockStart;
50
78
  /**
@@ -75,6 +103,11 @@ export declare class OutputParser {
75
103
  * Returns the command (if valid) and any remaining content after [[/RELAY]].
76
104
  */
77
105
  private finishBlock;
106
+ /**
107
+ * Parse while inside a fenced inline block (->relay:Target <<< ... >>>).
108
+ * Accumulates lines until >>> is seen on its own line.
109
+ */
110
+ private parseFencedInlineMode;
78
111
  /**
79
112
  * Flush any remaining buffer (call on stream end).
80
113
  */
@@ -91,4 +124,94 @@ export declare class OutputParser {
91
124
  * Format a relay command for injection into agent input.
92
125
  */
93
126
  export declare function formatIncomingMessage(from: string, body: string, kind?: PayloadKind): string;
127
+ /**
128
+ * Parsed message metadata block from agent output.
129
+ */
130
+ export interface ParsedMessageMetadata {
131
+ subject?: string;
132
+ importance?: number;
133
+ replyTo?: string;
134
+ ackRequired?: boolean;
135
+ }
136
+ /**
137
+ * Result of attempting to parse a RELAY_METADATA block.
138
+ */
139
+ export interface MetadataParseResult {
140
+ found: boolean;
141
+ valid: boolean;
142
+ metadata: ParsedMessageMetadata | null;
143
+ rawContent: string | null;
144
+ }
145
+ /**
146
+ * Parse [[RELAY_METADATA]]...[[/RELAY_METADATA]] blocks from agent output.
147
+ * Agents can output metadata to enhance messages.
148
+ *
149
+ * Format:
150
+ * [[RELAY_METADATA]]
151
+ * {
152
+ * "subject": "Task update",
153
+ * "importance": 80,
154
+ * "replyTo": "msg-abc123",
155
+ * "ackRequired": true
156
+ * }
157
+ * [[/RELAY_METADATA]]
158
+ */
159
+ export declare function parseRelayMetadataFromOutput(output: string): MetadataParseResult;
160
+ /**
161
+ * Parsed summary block from agent output.
162
+ */
163
+ export interface ParsedSummary {
164
+ currentTask?: string;
165
+ completedTasks?: string[];
166
+ decisions?: string[];
167
+ context?: string;
168
+ files?: string[];
169
+ }
170
+ /**
171
+ * Result of attempting to parse a SUMMARY block.
172
+ */
173
+ export interface SummaryParseResult {
174
+ found: boolean;
175
+ valid: boolean;
176
+ summary: ParsedSummary | null;
177
+ rawContent: string | null;
178
+ }
179
+ /**
180
+ * Parse [[SUMMARY]]...[[/SUMMARY]] blocks from agent output.
181
+ * Agents can output summaries to keep a running context of their work.
182
+ *
183
+ * Format:
184
+ * [[SUMMARY]]
185
+ * {
186
+ * "currentTask": "Working on auth module",
187
+ * "context": "Completed login flow, now implementing logout",
188
+ * "files": ["src/auth.ts", "src/session.ts"]
189
+ * }
190
+ * [[/SUMMARY]]
191
+ */
192
+ export declare function parseSummaryFromOutput(output: string): ParsedSummary | null;
193
+ /**
194
+ * Parse SUMMARY block with full details for deduplication.
195
+ * Returns raw content to allow caller to dedupe before logging errors.
196
+ */
197
+ export declare function parseSummaryWithDetails(output: string): SummaryParseResult;
198
+ /**
199
+ * Session end marker from agent output.
200
+ */
201
+ export interface SessionEndMarker {
202
+ summary?: string;
203
+ completedTasks?: string[];
204
+ }
205
+ /**
206
+ * Parse [[SESSION_END]]...[[/SESSION_END]] blocks from agent output.
207
+ * Agents output this to explicitly mark their session as complete.
208
+ *
209
+ * Format:
210
+ * [[SESSION_END]]
211
+ * {"summary": "Completed auth module implementation", "completedTasks": ["login", "logout"]}
212
+ * [[/SESSION_END]]
213
+ *
214
+ * Or simply: [[SESSION_END]][[/SESSION_END]] for a clean close without summary.
215
+ */
216
+ export declare function parseSessionEndFromOutput(output: string): SessionEndMarker | null;
94
217
  //# sourceMappingURL=parser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/wrapper/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AA2BD,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAM;gBAEb,OAAO,GAAE,aAAkB;IAIvC;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAyDlE;;;OAGG;IACH,OAAO,CAAC,cAAc;IA2DtB;;;;;;;;;OASG;IACH,OAAO,CAAC,gBAAgB;IAyGxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAiCxB;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IA0DnB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAiCnB;;OAEG;IACH,KAAK,IAAI;QAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAQtD;;OAEG;IACH,KAAK,IAAI,IAAI;CAKd;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,WAAuB,GAAG,MAAM,CAGvG"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/wrapper/parser.ts"],"names":[],"mappings":"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"}