agent-relay 1.0.22 → 1.1.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.
- package/dist/bridge/shadow-cli.d.ts +17 -0
- package/dist/bridge/shadow-cli.d.ts.map +1 -0
- package/dist/bridge/shadow-cli.js +75 -0
- package/dist/bridge/shadow-cli.js.map +1 -0
- package/dist/bridge/shadow-config.d.ts +87 -0
- package/dist/bridge/shadow-config.d.ts.map +1 -0
- package/dist/bridge/shadow-config.js +134 -0
- package/dist/bridge/shadow-config.js.map +1 -0
- package/dist/bridge/spawner.d.ts +15 -1
- package/dist/bridge/spawner.d.ts.map +1 -1
- package/dist/bridge/spawner.js +164 -4
- package/dist/bridge/spawner.js.map +1 -1
- package/dist/bridge/types.d.ts +55 -0
- package/dist/bridge/types.d.ts.map +1 -1
- package/dist/cli/index.js +796 -11
- package/dist/cli/index.js.map +1 -1
- package/dist/cloud/api/auth.d.ts +19 -0
- package/dist/cloud/api/auth.d.ts.map +1 -0
- package/dist/cloud/api/auth.js +216 -0
- package/dist/cloud/api/auth.js.map +1 -0
- package/dist/cloud/api/billing.d.ts +17 -0
- package/dist/cloud/api/billing.d.ts.map +1 -0
- package/dist/cloud/api/billing.js +353 -0
- package/dist/cloud/api/billing.js.map +1 -0
- package/dist/cloud/api/coordinators.d.ts +8 -0
- package/dist/cloud/api/coordinators.d.ts.map +1 -0
- package/dist/cloud/api/coordinators.js +347 -0
- package/dist/cloud/api/coordinators.js.map +1 -0
- package/dist/cloud/api/daemons.d.ts +12 -0
- package/dist/cloud/api/daemons.d.ts.map +1 -0
- package/dist/cloud/api/daemons.js +320 -0
- package/dist/cloud/api/daemons.js.map +1 -0
- package/dist/cloud/api/middleware/planLimits.d.ts +36 -0
- package/dist/cloud/api/middleware/planLimits.d.ts.map +1 -0
- package/dist/cloud/api/middleware/planLimits.js +164 -0
- package/dist/cloud/api/middleware/planLimits.js.map +1 -0
- package/dist/cloud/api/onboarding.d.ts +8 -0
- package/dist/cloud/api/onboarding.d.ts.map +1 -0
- package/dist/cloud/api/onboarding.js +407 -0
- package/dist/cloud/api/onboarding.js.map +1 -0
- package/dist/cloud/api/providers.d.ts +7 -0
- package/dist/cloud/api/providers.d.ts.map +1 -0
- package/dist/cloud/api/providers.js +435 -0
- package/dist/cloud/api/providers.js.map +1 -0
- package/dist/cloud/api/repos.d.ts +7 -0
- package/dist/cloud/api/repos.d.ts.map +1 -0
- package/dist/cloud/api/repos.js +314 -0
- package/dist/cloud/api/repos.js.map +1 -0
- package/dist/cloud/api/teams.d.ts +7 -0
- package/dist/cloud/api/teams.d.ts.map +1 -0
- package/dist/cloud/api/teams.js +279 -0
- package/dist/cloud/api/teams.js.map +1 -0
- package/dist/cloud/api/usage.d.ts +7 -0
- package/dist/cloud/api/usage.d.ts.map +1 -0
- package/dist/cloud/api/usage.js +98 -0
- package/dist/cloud/api/usage.js.map +1 -0
- package/dist/cloud/api/workspaces.d.ts +7 -0
- package/dist/cloud/api/workspaces.d.ts.map +1 -0
- package/dist/cloud/api/workspaces.js +510 -0
- package/dist/cloud/api/workspaces.js.map +1 -0
- package/dist/cloud/billing/index.d.ts +9 -0
- package/dist/cloud/billing/index.d.ts.map +1 -0
- package/dist/cloud/billing/index.js +9 -0
- package/dist/cloud/billing/index.js.map +1 -0
- package/dist/cloud/billing/plans.d.ts +39 -0
- package/dist/cloud/billing/plans.d.ts.map +1 -0
- package/dist/cloud/billing/plans.js +232 -0
- package/dist/cloud/billing/plans.js.map +1 -0
- package/dist/cloud/billing/service.d.ts +80 -0
- package/dist/cloud/billing/service.d.ts.map +1 -0
- package/dist/cloud/billing/service.js +388 -0
- package/dist/cloud/billing/service.js.map +1 -0
- package/dist/cloud/billing/types.d.ts +135 -0
- package/dist/cloud/billing/types.d.ts.map +1 -0
- package/dist/cloud/billing/types.js +7 -0
- package/dist/cloud/billing/types.js.map +1 -0
- package/dist/cloud/config.d.ts +59 -0
- package/dist/cloud/config.d.ts.map +1 -0
- package/dist/cloud/config.js +83 -0
- package/dist/cloud/config.js.map +1 -0
- package/dist/cloud/db/drizzle.d.ts +132 -0
- package/dist/cloud/db/drizzle.d.ts.map +1 -0
- package/dist/cloud/db/drizzle.js +613 -0
- package/dist/cloud/db/drizzle.js.map +1 -0
- package/dist/cloud/db/index.d.ts +30 -0
- package/dist/cloud/db/index.d.ts.map +1 -0
- package/dist/cloud/db/index.js +44 -0
- package/dist/cloud/db/index.js.map +1 -0
- package/dist/cloud/db/schema.d.ts +1792 -0
- package/dist/cloud/db/schema.d.ts.map +1 -0
- package/dist/cloud/db/schema.js +234 -0
- package/dist/cloud/db/schema.js.map +1 -0
- package/dist/cloud/index.d.ts +11 -0
- package/dist/cloud/index.d.ts.map +1 -0
- package/dist/cloud/index.js +37 -0
- package/dist/cloud/index.js.map +1 -0
- package/dist/cloud/provisioner/index.d.ts +51 -0
- package/dist/cloud/provisioner/index.d.ts.map +1 -0
- package/dist/cloud/provisioner/index.js +676 -0
- package/dist/cloud/provisioner/index.js.map +1 -0
- package/dist/cloud/server.d.ts +16 -0
- package/dist/cloud/server.d.ts.map +1 -0
- package/dist/cloud/server.js +190 -0
- package/dist/cloud/server.js.map +1 -0
- package/dist/cloud/services/coordinator.d.ts +62 -0
- package/dist/cloud/services/coordinator.d.ts.map +1 -0
- package/dist/cloud/services/coordinator.js +389 -0
- package/dist/cloud/services/coordinator.js.map +1 -0
- package/dist/cloud/services/planLimits.d.ts +110 -0
- package/dist/cloud/services/planLimits.d.ts.map +1 -0
- package/dist/cloud/services/planLimits.js +254 -0
- package/dist/cloud/services/planLimits.js.map +1 -0
- package/dist/cloud/vault/index.d.ts +76 -0
- package/dist/cloud/vault/index.d.ts.map +1 -0
- package/dist/cloud/vault/index.js +219 -0
- package/dist/cloud/vault/index.js.map +1 -0
- package/dist/daemon/agent-manager.d.ts +87 -0
- package/dist/daemon/agent-manager.d.ts.map +1 -0
- package/dist/daemon/agent-manager.js +412 -0
- package/dist/daemon/agent-manager.js.map +1 -0
- package/dist/daemon/agent-registry.d.ts +2 -0
- package/dist/daemon/agent-registry.d.ts.map +1 -1
- package/dist/daemon/agent-registry.js +3 -0
- package/dist/daemon/agent-registry.js.map +1 -1
- package/dist/daemon/api.d.ts +69 -0
- package/dist/daemon/api.d.ts.map +1 -0
- package/dist/daemon/api.js +425 -0
- package/dist/daemon/api.js.map +1 -0
- package/dist/daemon/cloud-sync.d.ts +101 -0
- package/dist/daemon/cloud-sync.d.ts.map +1 -0
- package/dist/daemon/cloud-sync.js +261 -0
- package/dist/daemon/cloud-sync.js.map +1 -0
- package/dist/daemon/index.d.ts +4 -0
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +6 -0
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/orchestrator.d.ts +155 -0
- package/dist/daemon/orchestrator.d.ts.map +1 -0
- package/dist/daemon/orchestrator.js +736 -0
- package/dist/daemon/orchestrator.js.map +1 -0
- package/dist/daemon/router.d.ts +24 -0
- package/dist/daemon/router.d.ts.map +1 -1
- package/dist/daemon/router.js +71 -1
- package/dist/daemon/router.js.map +1 -1
- package/dist/daemon/server.d.ts +37 -0
- package/dist/daemon/server.d.ts.map +1 -1
- package/dist/daemon/server.js +191 -16
- package/dist/daemon/server.js.map +1 -1
- package/dist/daemon/types.d.ts +127 -0
- package/dist/daemon/types.d.ts.map +1 -0
- package/dist/daemon/types.js +6 -0
- package/dist/daemon/types.js.map +1 -0
- package/dist/daemon/workspace-manager.d.ts +75 -0
- package/dist/daemon/workspace-manager.d.ts.map +1 -0
- package/dist/daemon/workspace-manager.js +289 -0
- package/dist/daemon/workspace-manager.js.map +1 -0
- package/dist/dashboard/out/404.html +1 -1
- package/dist/dashboard/out/_next/static/chunks/693-7b3301d8f6bc5014.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/713-f78477eb185f1f4d.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/766-e53e1cfe39b0b5b5.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/900-037c64bfd797fb2a.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/app/page-e3d9e1f4466b9bae.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/history/page-b6edd4dde8d08194.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/layout-2433bb48965f4333.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/metrics/page-e68825a81db67ba1.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/page-cc108bf68c8a657f.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/pricing/page-d80e03a5297f95b6.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/main-app-5d692157a8eb1fd9.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/{main-e0a1f53fe0617a63.js → main-c2f423b9c9f4591b.js} +1 -1
- package/dist/dashboard/out/_next/static/chunks/{webpack-c81f7fd28659d64f.js → webpack-a5acc2831d094776.js} +1 -1
- package/dist/dashboard/out/_next/static/css/79b80143647a07d7.css +1 -0
- package/dist/dashboard/out/_next/static/css/8cf277370ad48cfe.css +1 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo-128.png +0 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo-256.png +0 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo-32.png +0 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo-512.png +0 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo-64.png +0 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo.svg +45 -0
- package/dist/dashboard/out/alt-logos/logo.svg +38 -0
- package/dist/dashboard/out/alt-logos/monogram-logo-128.png +0 -0
- package/dist/dashboard/out/alt-logos/monogram-logo-256.png +0 -0
- package/dist/dashboard/out/alt-logos/monogram-logo-32.png +0 -0
- package/dist/dashboard/out/alt-logos/monogram-logo-512.png +0 -0
- package/dist/dashboard/out/alt-logos/monogram-logo-64.png +0 -0
- package/dist/dashboard/out/alt-logos/monogram-logo.svg +38 -0
- package/dist/dashboard/out/app.html +14 -0
- package/dist/dashboard/out/app.txt +7 -0
- package/dist/dashboard/out/history.html +1 -0
- package/dist/dashboard/out/history.txt +7 -0
- package/dist/dashboard/out/index.html +1 -1
- package/dist/dashboard/out/index.txt +2 -2
- package/dist/dashboard/out/metrics.html +1 -515
- package/dist/dashboard/out/metrics.txt +2 -2
- package/dist/dashboard/out/pricing.html +13 -0
- package/dist/dashboard/out/pricing.txt +7 -0
- package/dist/dashboard-server/metrics.d.ts.map +1 -1
- package/dist/dashboard-server/metrics.js +3 -2
- package/dist/dashboard-server/metrics.js.map +1 -1
- package/dist/dashboard-server/server.d.ts.map +1 -1
- package/dist/dashboard-server/server.js +1279 -56
- package/dist/dashboard-server/server.js.map +1 -1
- package/dist/protocol/types.d.ts +10 -1
- package/dist/protocol/types.d.ts.map +1 -1
- package/dist/resiliency/context-persistence.d.ts +140 -0
- package/dist/resiliency/context-persistence.d.ts.map +1 -0
- package/dist/resiliency/context-persistence.js +397 -0
- package/dist/resiliency/context-persistence.js.map +1 -0
- package/dist/resiliency/health-monitor.d.ts +97 -0
- package/dist/resiliency/health-monitor.d.ts.map +1 -0
- package/dist/resiliency/health-monitor.js +291 -0
- package/dist/resiliency/health-monitor.js.map +1 -0
- package/dist/resiliency/index.d.ts +63 -0
- package/dist/resiliency/index.d.ts.map +1 -0
- package/dist/resiliency/index.js +63 -0
- package/dist/resiliency/index.js.map +1 -0
- package/dist/resiliency/logger.d.ts +114 -0
- package/dist/resiliency/logger.d.ts.map +1 -0
- package/dist/resiliency/logger.js +250 -0
- package/dist/resiliency/logger.js.map +1 -0
- package/dist/resiliency/metrics.d.ts +115 -0
- package/dist/resiliency/metrics.d.ts.map +1 -0
- package/dist/resiliency/metrics.js +239 -0
- package/dist/resiliency/metrics.js.map +1 -0
- package/dist/resiliency/provider-context.d.ts +100 -0
- package/dist/resiliency/provider-context.d.ts.map +1 -0
- package/dist/resiliency/provider-context.js +360 -0
- package/dist/resiliency/provider-context.js.map +1 -0
- package/dist/resiliency/supervisor.d.ts +109 -0
- package/dist/resiliency/supervisor.d.ts.map +1 -0
- package/dist/resiliency/supervisor.js +337 -0
- package/dist/resiliency/supervisor.js.map +1 -0
- package/dist/storage/adapter.d.ts +2 -0
- package/dist/storage/adapter.d.ts.map +1 -1
- package/dist/storage/adapter.js +12 -2
- package/dist/storage/adapter.js.map +1 -1
- package/dist/storage/sqlite-adapter.d.ts.map +1 -1
- package/dist/storage/sqlite-adapter.js +18 -14
- package/dist/storage/sqlite-adapter.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/logger.d.ts +40 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +84 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/wrapper/client.d.ts +16 -1
- package/dist/wrapper/client.d.ts.map +1 -1
- package/dist/wrapper/client.js +32 -1
- package/dist/wrapper/client.js.map +1 -1
- package/dist/wrapper/parser.d.ts +3 -0
- package/dist/wrapper/parser.d.ts.map +1 -1
- package/dist/wrapper/parser.js +121 -18
- package/dist/wrapper/parser.js.map +1 -1
- package/dist/wrapper/pty-wrapper.d.ts +22 -1
- package/dist/wrapper/pty-wrapper.d.ts.map +1 -1
- package/dist/wrapper/pty-wrapper.js +139 -30
- package/dist/wrapper/pty-wrapper.js.map +1 -1
- package/dist/wrapper/tmux-wrapper.d.ts +5 -0
- package/dist/wrapper/tmux-wrapper.d.ts.map +1 -1
- package/dist/wrapper/tmux-wrapper.js +58 -18
- package/dist/wrapper/tmux-wrapper.js.map +1 -1
- package/docs/CLOUD-ARCHITECTURE.md +652 -0
- package/docs/CLOUD-ONBOARDING-DESIGN.md +1983 -0
- package/docs/TESTING_PRESENCE_FEATURES.md +327 -0
- package/docs/agent-relay-snippet.md +107 -4
- package/docs/guides/CLOUD.md +236 -0
- package/docs/guides/LOCAL.md +535 -0
- package/docs/guides/SELF-HOSTED.md +494 -0
- package/docs/proposals/shadow-as-subagent.md +765 -0
- package/docs/proposals/slack-bot-integration.md +1457 -0
- package/package.json +33 -4
- package/dist/dashboard/out/_next/static/chunks/app/layout-c9d8c5d95e48c6bf.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/metrics/page-8aa9936bc6c771ab.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/page-4498be09a5157759.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/main-app-bae2e535de00de50.js +0 -1
- package/dist/dashboard/out/_next/static/css/50ed6996e3df7bdd.css +0 -1
- /package/dist/dashboard/out/_next/static/{DXFA-jj8wb3PcY5DX2xcU → 6HHWb2ZmnJ4OSm0zUP7h4}/_buildManifest.js +0 -0
- /package/dist/dashboard/out/_next/static/{DXFA-jj8wb3PcY5DX2xcU → 6HHWb2ZmnJ4OSm0zUP7h4}/_ssgManifest.js +0 -0
- /package/dist/dashboard/out/_next/static/chunks/{117-3bef7b19f3e60751.js → 117-b2cd8d6485aacf2b.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/{648-6cf686106c891ad3.js → 648-8f3f26864ce515e5.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/app/_not-found/{page-8ff6572bc7c9bc61.js → page-0b990dbb71d72a98.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/{fd9d1056-26bd8d656b496dba.js → fd9d1056-bf46c09eb57e019c.js} +0 -0
|
@@ -25,6 +25,7 @@ export class PtyWrapper extends EventEmitter {
|
|
|
25
25
|
processedReleaseCommands = new Set();
|
|
26
26
|
messageQueue = [];
|
|
27
27
|
isInjecting = false;
|
|
28
|
+
readyForMessages = false;
|
|
28
29
|
logFilePath;
|
|
29
30
|
logStream;
|
|
30
31
|
hasAcceptedPrompt = false;
|
|
@@ -40,8 +41,8 @@ export class PtyWrapper extends EventEmitter {
|
|
|
40
41
|
quiet: true,
|
|
41
42
|
});
|
|
42
43
|
// Handle incoming messages
|
|
43
|
-
this.client.onMessage = (from, payload, messageId) => {
|
|
44
|
-
this.handleIncomingMessage(from, payload, messageId);
|
|
44
|
+
this.client.onMessage = (from, payload, messageId, meta, originalTo) => {
|
|
45
|
+
this.handleIncomingMessage(from, payload, messageId, meta, originalTo);
|
|
45
46
|
};
|
|
46
47
|
}
|
|
47
48
|
/**
|
|
@@ -65,6 +66,17 @@ export class PtyWrapper extends EventEmitter {
|
|
|
65
66
|
// Connect to relay daemon
|
|
66
67
|
try {
|
|
67
68
|
await this.client.connect();
|
|
69
|
+
// If this is a shadow agent, bind to the primary after connecting
|
|
70
|
+
if (this.config.shadowOf) {
|
|
71
|
+
const speakOn = this.config.shadowSpeakOn ?? ['EXPLICIT_ASK'];
|
|
72
|
+
const bound = this.client.bindAsShadow(this.config.shadowOf, { speakOn });
|
|
73
|
+
if (bound) {
|
|
74
|
+
console.log(`[pty:${this.config.name}] Bound as shadow of ${this.config.shadowOf} (speakOn: ${speakOn.join(', ')})`);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
console.error(`[pty:${this.config.name}] Failed to bind as shadow of ${this.config.shadowOf}`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
68
80
|
}
|
|
69
81
|
catch (err) {
|
|
70
82
|
console.error(`[pty:${this.config.name}] Relay connect failed: ${err.message}`);
|
|
@@ -108,8 +120,13 @@ export class PtyWrapper extends EventEmitter {
|
|
|
108
120
|
this.config.onExit?.(exitCode);
|
|
109
121
|
this.client.destroy();
|
|
110
122
|
});
|
|
111
|
-
// Inject initial instructions after a delay
|
|
112
|
-
setTimeout(() =>
|
|
123
|
+
// Inject initial instructions after a delay, then mark ready for messages
|
|
124
|
+
setTimeout(() => {
|
|
125
|
+
this.injectInstructions();
|
|
126
|
+
this.readyForMessages = true;
|
|
127
|
+
// Process any messages that arrived while waiting
|
|
128
|
+
this.processMessageQueue();
|
|
129
|
+
}, 2000);
|
|
113
130
|
}
|
|
114
131
|
/**
|
|
115
132
|
* Handle output from the process
|
|
@@ -123,9 +140,15 @@ export class PtyWrapper extends EventEmitter {
|
|
|
123
140
|
}
|
|
124
141
|
// Emit for external listeners
|
|
125
142
|
this.emit('output', data);
|
|
143
|
+
// Stream to daemon for dashboard log viewing (if connected)
|
|
144
|
+
if (this.config.streamLogs !== false && this.client.state === 'READY') {
|
|
145
|
+
this.client.sendLog(data);
|
|
146
|
+
}
|
|
126
147
|
// Auto-accept Claude's first-run prompt for --dangerously-skip-permissions
|
|
127
148
|
// The prompt shows: "2. Yes, I accept" - we send "2" to accept
|
|
128
149
|
this.handleAutoAcceptPrompts(data);
|
|
150
|
+
// Handle terminal escape sequences that require responses (e.g., cursor position query)
|
|
151
|
+
this.handleTerminalEscapeSequences(data);
|
|
129
152
|
// Store in line buffer for logs
|
|
130
153
|
const lines = data.split('\n');
|
|
131
154
|
for (const line of lines) {
|
|
@@ -163,6 +186,34 @@ export class PtyWrapper extends EventEmitter {
|
|
|
163
186
|
}, 100);
|
|
164
187
|
}
|
|
165
188
|
}
|
|
189
|
+
/**
|
|
190
|
+
* Handle terminal escape sequences that require responses.
|
|
191
|
+
*
|
|
192
|
+
* Some CLI tools (like Codex) query terminal capabilities and expect responses.
|
|
193
|
+
* Without proper responses, they timeout and crash.
|
|
194
|
+
*
|
|
195
|
+
* Supported sequences:
|
|
196
|
+
* - CSI 6 n (DSR - Device Status Report for cursor position)
|
|
197
|
+
* Response: CSI row ; col R (we report position 1;1)
|
|
198
|
+
*/
|
|
199
|
+
handleTerminalEscapeSequences(data) {
|
|
200
|
+
if (!this.ptyProcess || !this.running)
|
|
201
|
+
return;
|
|
202
|
+
// Check for cursor position query: ESC [ 6 n
|
|
203
|
+
// This can appear as \x1b[6n or \x1b[?6n
|
|
204
|
+
// eslint-disable-next-line no-control-regex
|
|
205
|
+
if (/\x1b\[\??6n/.test(data)) {
|
|
206
|
+
// Respond with cursor at position (1, 1)
|
|
207
|
+
// Format: ESC [ row ; col R
|
|
208
|
+
const response = '\x1b[1;1R';
|
|
209
|
+
// Small delay to ensure the query has been fully processed
|
|
210
|
+
setTimeout(() => {
|
|
211
|
+
if (this.ptyProcess && this.running) {
|
|
212
|
+
this.ptyProcess.write(response);
|
|
213
|
+
}
|
|
214
|
+
}, 10);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
166
217
|
/**
|
|
167
218
|
* Parse relay commands from output.
|
|
168
219
|
* Handles both single-line and multi-line (fenced) formats.
|
|
@@ -178,14 +229,18 @@ export class PtyWrapper extends EventEmitter {
|
|
|
178
229
|
this.parseSpawnReleaseCommands(cleanContent);
|
|
179
230
|
}
|
|
180
231
|
/**
|
|
181
|
-
* Parse fenced multi-line messages: ->relay:Target <<<\n...\n>>>
|
|
232
|
+
* Parse fenced multi-line messages: ->relay:Target [thread:xxx] <<<\n...\n>>>
|
|
182
233
|
*/
|
|
183
234
|
parseFencedMessages(content) {
|
|
184
|
-
// Pattern: ->relay:Target <<< (with content on same or following lines until >>>)
|
|
185
|
-
|
|
235
|
+
// Pattern: ->relay:Target [thread:xxx] <<< (with content on same or following lines until >>>)
|
|
236
|
+
// Thread is optional, can be [thread:id] or [thread:project:id] for cross-project
|
|
237
|
+
const escapedPrefix = this.relayPrefix.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
238
|
+
const fenceStartPattern = new RegExp(`${escapedPrefix}(\\S+)(?:\\s+\\[thread:(?:([\\w-]+):)?([\\w-]+)\\])?\\s*<<<`, 'g');
|
|
186
239
|
let match;
|
|
187
240
|
while ((match = fenceStartPattern.exec(content)) !== null) {
|
|
188
241
|
const target = match[1];
|
|
242
|
+
const threadProject = match[2]; // Optional: project part of thread
|
|
243
|
+
const threadId = match[3]; // Thread ID
|
|
189
244
|
const startIdx = match.index + match[0].length;
|
|
190
245
|
// Find the closing >>>
|
|
191
246
|
const endIdx = content.indexOf('>>>', startIdx);
|
|
@@ -208,12 +263,15 @@ export class PtyWrapper extends EventEmitter {
|
|
|
208
263
|
kind: 'message',
|
|
209
264
|
body,
|
|
210
265
|
project,
|
|
266
|
+
thread: threadId || undefined,
|
|
267
|
+
threadProject: threadProject || undefined,
|
|
211
268
|
raw: match[0],
|
|
212
269
|
});
|
|
213
270
|
}
|
|
214
271
|
}
|
|
215
272
|
/**
|
|
216
273
|
* Parse single-line messages (no fenced format)
|
|
274
|
+
* Format: ->relay:Target [thread:xxx] message body
|
|
217
275
|
*/
|
|
218
276
|
parseSingleLineMessages(content) {
|
|
219
277
|
const lines = content.split('\n');
|
|
@@ -227,14 +285,35 @@ export class PtyWrapper extends EventEmitter {
|
|
|
227
285
|
continue;
|
|
228
286
|
// Extract everything after the prefix
|
|
229
287
|
const afterPrefix = line.substring(prefixIdx + this.relayPrefix.length);
|
|
230
|
-
//
|
|
231
|
-
|
|
232
|
-
|
|
288
|
+
// Pattern: Target [thread:project:id] body or Target [thread:id] body or Target body
|
|
289
|
+
// Thread is optional, can include project prefix
|
|
290
|
+
const targetMatch = afterPrefix.match(/^(\S+)(?:\s+\[thread:(?:([\w-]+):)?([\w-]+)\])?\s+(.+)$/);
|
|
291
|
+
if (!targetMatch) {
|
|
292
|
+
// Fallback: try simpler pattern without thread
|
|
293
|
+
const simpleMatch = afterPrefix.match(/^(\S+)\s+(.+)$/);
|
|
294
|
+
if (!simpleMatch)
|
|
295
|
+
continue;
|
|
296
|
+
const [, target, body] = simpleMatch;
|
|
297
|
+
if (!body)
|
|
298
|
+
continue;
|
|
299
|
+
// Parse target for cross-project syntax
|
|
300
|
+
const colonIdx = target.indexOf(':');
|
|
301
|
+
let to = target;
|
|
302
|
+
let project;
|
|
303
|
+
if (colonIdx > 0 && colonIdx < target.length - 1) {
|
|
304
|
+
project = target.substring(0, colonIdx);
|
|
305
|
+
to = target.substring(colonIdx + 1);
|
|
306
|
+
}
|
|
307
|
+
this.sendRelayCommand({
|
|
308
|
+
to,
|
|
309
|
+
kind: 'message',
|
|
310
|
+
body,
|
|
311
|
+
project,
|
|
312
|
+
raw: line,
|
|
313
|
+
});
|
|
233
314
|
continue;
|
|
234
|
-
|
|
235
|
-
const
|
|
236
|
-
const body = afterPrefix.substring(bodyStart).trim();
|
|
237
|
-
// Skip if no body
|
|
315
|
+
}
|
|
316
|
+
const [, target, threadProject, threadId, body] = targetMatch;
|
|
238
317
|
if (!body)
|
|
239
318
|
continue;
|
|
240
319
|
// Parse target for cross-project syntax
|
|
@@ -250,6 +329,8 @@ export class PtyWrapper extends EventEmitter {
|
|
|
250
329
|
kind: 'message',
|
|
251
330
|
body,
|
|
252
331
|
project,
|
|
332
|
+
thread: threadId || undefined,
|
|
333
|
+
threadProject: threadProject || undefined,
|
|
253
334
|
raw: line,
|
|
254
335
|
});
|
|
255
336
|
}
|
|
@@ -268,9 +349,13 @@ export class PtyWrapper extends EventEmitter {
|
|
|
268
349
|
str = str.replace(/\x1B\[C/g, ' ');
|
|
269
350
|
// Remove carriage returns (causes text overwriting issues)
|
|
270
351
|
str = str.replace(/\r(?!\n)/g, '');
|
|
271
|
-
// Strip remaining ANSI escape sequences
|
|
352
|
+
// Strip remaining ANSI escape sequences (with \x1B prefix)
|
|
272
353
|
// eslint-disable-next-line no-control-regex
|
|
273
|
-
|
|
354
|
+
str = str.replace(/\x1B(?:\[[0-9;?]*[A-Za-z]|\].*?(?:\x07|\x1B\\)|[@-Z\\-_])/g, '');
|
|
355
|
+
// Strip orphaned CSI sequences that lost their escape byte
|
|
356
|
+
// These look like [?25h, [?2026l, [0m, etc. at the start of content
|
|
357
|
+
str = str.replace(/^\s*(\[\??\d*[A-Za-z])+\s*/g, '');
|
|
358
|
+
return str;
|
|
274
359
|
}
|
|
275
360
|
/**
|
|
276
361
|
* Send relay command to daemon
|
|
@@ -307,18 +392,21 @@ export class PtyWrapper extends EventEmitter {
|
|
|
307
392
|
const spawnIdx = line.indexOf(spawnPrefix);
|
|
308
393
|
if (spawnIdx !== -1 && canSpawn) {
|
|
309
394
|
const afterSpawn = line.substring(spawnIdx + spawnPrefix.length).trim();
|
|
310
|
-
// Parse: WorkerName cli "task"
|
|
395
|
+
// Parse: WorkerName cli OR WorkerName cli "task" (task is optional)
|
|
311
396
|
const parts = afterSpawn.split(/\s+/);
|
|
312
|
-
if (parts.length >=
|
|
397
|
+
if (parts.length >= 2) {
|
|
313
398
|
const name = parts[0];
|
|
314
399
|
const cli = parts[1];
|
|
315
|
-
// Task is everything after cli, potentially in quotes
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
400
|
+
// Task is everything after cli, potentially in quotes (optional)
|
|
401
|
+
let task = '';
|
|
402
|
+
if (parts.length >= 3) {
|
|
403
|
+
const taskPart = parts.slice(2).join(' ');
|
|
404
|
+
// Remove surrounding quotes if present
|
|
405
|
+
const quoteMatch = taskPart.match(/^["'](.*)["']$/);
|
|
406
|
+
task = quoteMatch ? quoteMatch[1] : taskPart;
|
|
407
|
+
}
|
|
408
|
+
if (name && cli) {
|
|
409
|
+
const spawnKey = `${name}:${cli}`;
|
|
322
410
|
if (!this.processedSpawnCommands.has(spawnKey)) {
|
|
323
411
|
this.processedSpawnCommands.add(spawnKey);
|
|
324
412
|
this.executeSpawn(name, cli, task);
|
|
@@ -407,15 +495,19 @@ export class PtyWrapper extends EventEmitter {
|
|
|
407
495
|
}
|
|
408
496
|
/**
|
|
409
497
|
* Handle incoming message from relay
|
|
498
|
+
* @param originalTo - The original 'to' field from sender. '*' indicates this was a broadcast message.
|
|
410
499
|
*/
|
|
411
|
-
handleIncomingMessage(from, payload, messageId) {
|
|
412
|
-
this.messageQueue.push({ from, body: payload.body, messageId });
|
|
500
|
+
handleIncomingMessage(from, payload, messageId, meta, originalTo) {
|
|
501
|
+
this.messageQueue.push({ from, body: payload.body, messageId, thread: payload.thread, importance: meta?.importance, data: payload.data, originalTo });
|
|
413
502
|
this.processMessageQueue();
|
|
414
503
|
}
|
|
415
504
|
/**
|
|
416
505
|
* Process queued messages
|
|
417
506
|
*/
|
|
418
507
|
async processMessageQueue() {
|
|
508
|
+
// Wait until instructions have been injected and agent is ready
|
|
509
|
+
if (!this.readyForMessages)
|
|
510
|
+
return;
|
|
419
511
|
if (this.isInjecting || this.messageQueue.length === 0)
|
|
420
512
|
return;
|
|
421
513
|
if (!this.ptyProcess || !this.running)
|
|
@@ -428,8 +520,25 @@ export class PtyWrapper extends EventEmitter {
|
|
|
428
520
|
}
|
|
429
521
|
try {
|
|
430
522
|
const shortId = msg.messageId.substring(0, 8);
|
|
431
|
-
|
|
432
|
-
const
|
|
523
|
+
// Strip ANSI escape sequences and orphaned control sequences from message body
|
|
524
|
+
const sanitizedBody = this.stripAnsi(msg.body).replace(/[\r\n]+/g, ' ').trim();
|
|
525
|
+
// Thread/importance/channel hints to match tmux-wrapper format
|
|
526
|
+
const threadHint = msg.thread ? ` [thread:${msg.thread}]` : '';
|
|
527
|
+
const importanceHint = msg.importance !== undefined && msg.importance > 75 ? ' [!!]' :
|
|
528
|
+
msg.importance !== undefined && msg.importance > 50 ? ' [!]' : '';
|
|
529
|
+
// Channel indicator: [#general] for broadcasts - tells agent to reply to * not sender
|
|
530
|
+
const channelHint = msg.originalTo === '*' ? ' [#general]' : '';
|
|
531
|
+
// Extract attachment file paths if present
|
|
532
|
+
let attachmentHint = '';
|
|
533
|
+
if (msg.data?.attachments && Array.isArray(msg.data.attachments)) {
|
|
534
|
+
const filePaths = msg.data.attachments
|
|
535
|
+
.map((att) => att.filePath)
|
|
536
|
+
.filter((p) => typeof p === 'string');
|
|
537
|
+
if (filePaths.length > 0) {
|
|
538
|
+
attachmentHint = ` [Attachments: ${filePaths.join(', ')}]`;
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
const injection = `Relay message from ${msg.from} [${shortId}]${threadHint}${importanceHint}${channelHint}${attachmentHint}: ${sanitizedBody}`;
|
|
433
542
|
// Write message to PTY, then send Enter separately after a small delay
|
|
434
543
|
// This matches how TmuxWrapper does it for better CLI compatibility
|
|
435
544
|
this.ptyProcess.write(injection);
|
|
@@ -454,7 +563,7 @@ export class PtyWrapper extends EventEmitter {
|
|
|
454
563
|
if (!this.running || !this.ptyProcess)
|
|
455
564
|
return;
|
|
456
565
|
const escapedPrefix = '\\' + this.relayPrefix;
|
|
457
|
-
const instructions = `[Agent Relay] You are "${this.config.name}" - connected for real-time messaging. SEND: ${escapedPrefix}AgentName message
|
|
566
|
+
const instructions = `[Agent Relay] You are "${this.config.name}" - connected for real-time messaging. SEND: ${escapedPrefix}AgentName message. PROTOCOL: (1) Wait for task via relay. (2) ACK receipt before starting. (3) Send "DONE: <summary>" when complete, then wait for next task.`;
|
|
458
567
|
try {
|
|
459
568
|
this.ptyProcess.write(instructions + '\r');
|
|
460
569
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty-wrapper.js","sourceRoot":"","sources":["../../src/wrapper/pty-wrapper.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pty-wrapper.js","sourceRoot":"","sources":["../../src/wrapper/pty-wrapper.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1C,6CAA6C;AAC7C,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAmC/B,MAAM,OAAO,UAAW,SAAQ,YAAY;IAClC,MAAM,CAAmB;IACzB,UAAU,CAAY;IACtB,MAAM,CAAc;IACpB,OAAO,GAAG,KAAK,CAAC;IAChB,YAAY,GAAa,EAAE,CAAC;IAC5B,SAAS,GAAG,EAAE,CAAC;IACf,WAAW,CAAS;IACpB,iBAAiB,GAAgB,IAAI,GAAG,EAAE,CAAC;IAC3C,sBAAsB,GAAgB,IAAI,GAAG,EAAE,CAAC;IAChD,wBAAwB,GAAgB,IAAI,GAAG,EAAE,CAAC;IAClD,YAAY,GAAwJ,EAAE,CAAC;IACvK,WAAW,GAAG,KAAK,CAAC;IACpB,gBAAgB,GAAG,KAAK,CAAC;IACzB,WAAW,CAAU;IACrB,SAAS,CAAkB;IAC3B,iBAAiB,GAAG,KAAK,CAAC;IAElC,YAAY,MAAwB;QAClC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,UAAU,CAAC;QAEpD,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC;YAC5B,SAAS,EAAE,MAAM,CAAC,IAAI;YACtB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,GAAG,EAAE,SAAS;YACd,gBAAgB,EAAE,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;YAC7C,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;QAEH,2BAA2B;QAC3B,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,IAAY,EAAE,OAAoB,EAAE,SAAiB,EAAE,IAAe,EAAE,UAAmB,EAAE,EAAE;YACtH,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QACzE,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QAEzB,yCAAyC;QACzC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,CAAC;gBAC7E,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;gBACxE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,MAAM,CAAC,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YACxG,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,gCAAgC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACvF,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAE5B,kEAAkE;YAClE,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC1E,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,wBAAwB,IAAI,CAAC,MAAM,CAAC,QAAQ,cAAc,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACvH,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,iCAAiC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACjG,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,2BAA2B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAClF,CAAC;QAED,qBAAqB;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAE7C,kCAAkC;QAClC,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,eAAe,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5F,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,UAAU,GAAG,EAAE,CAAC,CAAC;QAErD,wCAAwC;QACxC,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE;gBACrD,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,GAAG;gBACT,IAAI,EAAE,EAAE;gBACR,GAAG;gBACH,GAAG,EAAE;oBACH,GAAG,OAAO,CAAC,GAAG;oBACd,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG;oBAClB,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;oBAClC,IAAI,EAAE,gBAAgB;iBACvB;aACF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,UAAe,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,4BAA4B,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;YACxF,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,cAAc,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3E,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnE,MAAM,UAAU,CAAC;QACnB,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,iBAAiB;QACjB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE;YACtC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,cAAc;QACd,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;YACtC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,0EAA0E;QAC1E,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,kDAAkD;YAClD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7B,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,IAAY;QAC/B,uBAAuB;QACvB,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;QAEvB,iCAAiC;QACjC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAED,8BAA8B;QAC9B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAE1B,4DAA4D;QAC5D,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YACtE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAED,2EAA2E;QAC3E,+DAA+D;QAC/D,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAEnC,wFAAwF;QACxF,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC;QAEzC,gCAAgC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBAChB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC;YACnD,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC;QAED,2BAA2B;QAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACK,uBAAuB,CAAC,IAAY;QAC1C,IAAI,IAAI,CAAC,iBAAiB;YAAE,OAAO;QACnC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE9C,6CAA6C;QAC7C,4CAA4C;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,iDAAiD,CAAC,CAAC;YACvF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,0DAA0D;YAC1D,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBACpC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC,EAAE,GAAG,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED;;;;;;;;;OASG;IACK,6BAA6B,CAAC,IAAY;QAChD,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE9C,6CAA6C;QAC7C,yCAAyC;QACzC,4CAA4C;QAC5C,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,yCAAyC;YACzC,4BAA4B;YAC5B,MAAM,QAAQ,GAAG,WAAW,CAAC;YAE7B,2DAA2D;YAC3D,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBACpC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC,EAAE,EAAE,CAAC,CAAC;QACT,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,kBAAkB;QACxB,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEpD,8EAA8E;QAC9E,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAEvC,kCAAkC;QAClC,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC;QAE3C,+BAA+B;QAC/B,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,OAAe;QACzC,gGAAgG;QAChG,kFAAkF;QAClF,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;QAC9E,MAAM,iBAAiB,GAAG,IAAI,MAAM,CAClC,GAAG,aAAa,6DAA6D,EAC7E,GAAG,CACJ,CAAC;QAEF,IAAI,KAAK,CAAC;QACV,OAAO,CAAC,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC1D,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC;YACnE,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAM,YAAY;YAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAE/C,uBAAuB;YACvB,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAChD,IAAI,MAAM,KAAK,CAAC,CAAC;gBAAE,SAAS;YAE5B,uCAAuC;YACvC,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YACxD,IAAI,CAAC,IAAI;gBAAE,SAAS;YAEpB,wCAAwC;YACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,EAAE,GAAG,MAAM,CAAC;YAChB,IAAI,OAA2B,CAAC;YAChC,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjD,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;gBACxC,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;YACtC,CAAC;YAED,IAAI,CAAC,gBAAgB,CAAC;gBACpB,EAAE;gBACF,IAAI,EAAE,SAAS;gBACf,IAAI;gBACJ,OAAO;gBACP,MAAM,EAAE,QAAQ,IAAI,SAAS;gBAC7B,aAAa,EAAE,aAAa,IAAI,SAAS;gBACzC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;aACd,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,uBAAuB,CAAC,OAAe;QAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAElC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,8CAA8C;YAC9C,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,SAAS;YAE3D,oCAAoC;YACpC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACjD,IAAI,SAAS,KAAK,CAAC,CAAC;gBAAE,SAAS;YAE/B,sCAAsC;YACtC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAExE,qFAAqF;YACrF,iDAAiD;YACjD,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;YACjG,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,+CAA+C;gBAC/C,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;gBACxD,IAAI,CAAC,WAAW;oBAAE,SAAS;gBAE3B,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,WAAW,CAAC;gBACrC,IAAI,CAAC,IAAI;oBAAE,SAAS;gBAEpB,wCAAwC;gBACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACrC,IAAI,EAAE,GAAG,MAAM,CAAC;gBAChB,IAAI,OAA2B,CAAC;gBAChC,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACjD,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;oBACxC,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;gBACtC,CAAC;gBAED,IAAI,CAAC,gBAAgB,CAAC;oBACpB,EAAE;oBACF,IAAI,EAAE,SAAS;oBACf,IAAI;oBACJ,OAAO;oBACP,GAAG,EAAE,IAAI;iBACV,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,MAAM,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,WAAW,CAAC;YAC9D,IAAI,CAAC,IAAI;gBAAE,SAAS;YAEpB,wCAAwC;YACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,EAAE,GAAG,MAAM,CAAC;YAChB,IAAI,OAA2B,CAAC;YAChC,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjD,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;gBACxC,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;YACtC,CAAC;YAED,IAAI,CAAC,gBAAgB,CAAC;gBACpB,EAAE;gBACF,IAAI,EAAE,SAAS;gBACf,IAAI;gBACJ,OAAO;gBACP,MAAM,EAAE,QAAQ,IAAI,SAAS;gBAC7B,aAAa,EAAE,aAAa,IAAI,SAAS;gBACzC,GAAG,EAAE,IAAI;aACV,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,SAAS,CAAC,GAAW;QAC3B,uDAAuD;QACvD,4CAA4C;QAC5C,4CAA4C;QAC5C,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEhF,+CAA+C;QAC/C,4CAA4C;QAC5C,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAEnC,2DAA2D;QAC3D,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAEnC,2DAA2D;QAC3D,4CAA4C;QAC5C,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,4DAA4D,EAAE,EAAE,CAAC,CAAC;QAEpF,2DAA2D;QAC3D,oEAAoE;QACpE,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,6BAA6B,EAAE,EAAE,CAAC,CAAC;QAErD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,GAAkB;QACzC,MAAM,OAAO,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QAExC,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACxC,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YAClC,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1F,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,yBAAyB,CAAC,OAAe;QAC/C,4DAA4D;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAClE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QACtE,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU;YAAE,OAAO;QAErC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,WAAW,GAAG,eAAe,CAAC;QACpC,MAAM,aAAa,GAAG,iBAAiB,CAAC;QAExC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,0BAA0B;YAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAC3C,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,QAAQ,EAAE,CAAC;gBAChC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;gBACxE,oEAAoE;gBACpE,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBACtB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBACtB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBACrB,iEAAiE;oBACjE,IAAI,IAAI,GAAG,EAAE,CAAC;oBACd,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;wBACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBAC1C,uCAAuC;wBACvC,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;wBACpD,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;oBAC/C,CAAC;oBAED,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;wBAChB,MAAM,QAAQ,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC;wBAClC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;4BAC/C,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;4BAC1C,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;wBACrC,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,SAAS;YACX,CAAC;YAED,4BAA4B;YAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAC/C,IAAI,UAAU,KAAK,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC;gBACpC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC9E,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAE1C,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBACrD,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACxC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,GAAW,EAAE,IAAY;QAChE,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC9B,6DAA6D;YAC7D,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,oBAAoB,IAAI,CAAC,MAAM,CAAC,aAAa,YAAY,EAAE;oBACtF,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;oBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;iBAC1C,CAAC,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA0C,CAAC;gBAC7E,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,aAAa,IAAI,UAAU,CAAC,CAAC;gBACnE,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,mBAAmB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC3E,CAAC;YACH,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,4BAA4B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACnF,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC/B,wBAAwB;YACxB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAC7C,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,mBAAmB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc,CAAC,IAAY;QACvC,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC9B,kCAAkC;YAClC,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,oBAAoB,IAAI,CAAC,MAAM,CAAC,aAAa,gBAAgB,IAAI,EAAE,EAAE;oBAChG,MAAM,EAAE,QAAQ;iBACjB,CAAC,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA0C,CAAC;gBAC7E,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,cAAc,IAAI,UAAU,CAAC,CAAC;gBACpE,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,qBAAqB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC7E,CAAC;YACH,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,8BAA8B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACrF,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACjC,wBAAwB;YACxB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,qBAAqB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,qBAAqB,CAAC,IAAY,EAAE,OAAoB,EAAE,SAAiB,EAAE,IAAe,EAAE,UAAmB;QACvH,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACtJ,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,mBAAmB;QAC/B,gEAAgE;QAChE,IAAI,CAAC,IAAI,CAAC,gBAAgB;YAAE,OAAO;QACnC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC/D,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE9C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAExB,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QACtC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9C,+EAA+E;YAC/E,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/E,+DAA+D;YAC/D,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,MAAM,cAAc,GAAG,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAC/D,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAEzF,sFAAsF;YACtF,MAAM,WAAW,GAAG,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;YAEhE,2CAA2C;YAC3C,IAAI,cAAc,GAAG,EAAE,CAAC;YACxB,IAAI,GAAG,CAAC,IAAI,EAAE,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gBACjE,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW;qBACnC,GAAG,CAAC,CAAC,GAA0B,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;qBACjD,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;gBACrD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACzB,cAAc,GAAG,kBAAkB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC7D,CAAC;YACH,CAAC;YAED,MAAM,SAAS,GAAG,sBAAsB,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,UAAU,GAAG,cAAc,GAAG,WAAW,GAAG,cAAc,KAAK,aAAa,EAAE,CAAC;YAE/I,uEAAuE;YACvE,oEAAoE;YACpE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACjC,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACrB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,uBAAuB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9E,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YAEzB,8BAA8B;YAC9B,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,GAAG,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,kBAAkB;QACxB,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QAE9C,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;QAC9C,MAAM,YAAY,GAAG,0BAA0B,IAAI,CAAC,MAAM,CAAC,IAAI,gDAAgD,aAAa,+JAA+J,CAAC;QAE5R,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,cAAc;QAChB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAY;QAChB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACpC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,KAAc;QACtB,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QAErB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,iCAAiC;YACjC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YACxC,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBACpB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;gBACzB,CAAC;YACH,CAAC,EAAE,IAAI,CAAC,CAAC;QACX,CAAC;QAED,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC;QACD,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,EAAU;QACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACK,cAAc;QACpB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,MAAM,CAAC,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YACtG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC;IAC9B,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -60,6 +60,8 @@ export interface TmuxWrapperConfig {
|
|
|
60
60
|
outputStabilityTimeoutMs?: number;
|
|
61
61
|
/** Poll interval when checking pane stability before injection (ms) */
|
|
62
62
|
outputStabilityPollMs?: number;
|
|
63
|
+
/** Stream output to daemon for dashboard log viewing (default: true) */
|
|
64
|
+
streamLogs?: boolean;
|
|
63
65
|
}
|
|
64
66
|
/**
|
|
65
67
|
* Get the default relay prefix for a given CLI type.
|
|
@@ -86,6 +88,7 @@ export declare class TmuxWrapper {
|
|
|
86
88
|
private messageQueue;
|
|
87
89
|
private isInjecting;
|
|
88
90
|
private processedOutputLength;
|
|
91
|
+
private lastLoggedLength;
|
|
89
92
|
private lastDebugLog;
|
|
90
93
|
private cliType;
|
|
91
94
|
private relayPrefix;
|
|
@@ -199,6 +202,8 @@ export declare class TmuxWrapper {
|
|
|
199
202
|
private parseSpawnReleaseCommands;
|
|
200
203
|
/**
|
|
201
204
|
* Handle incoming message from relay
|
|
205
|
+
* @param originalTo - The original 'to' field from sender. '*' indicates this was a broadcast message.
|
|
206
|
+
* Agents should reply to originalTo to maintain channel routing (e.g., respond to #general, not DM).
|
|
202
207
|
*/
|
|
203
208
|
private handleIncomingMessage;
|
|
204
209
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tmux-wrapper.d.ts","sourceRoot":"","sources":["../../src/wrapper/tmux-wrapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AA0BH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,+BAA+B;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,wDAAwD;IACxD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,wDAAwD;IACxD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+DAA+D;IAC/D,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,6DAA6D;IAC7D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,yDAAyD;IACzD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;IAC5D,oEAAoE;IACpE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,gEAAgE;IAChE,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,oEAAoE;IACpE,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,uEAAuE;IACvE,qBAAqB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"tmux-wrapper.d.ts","sourceRoot":"","sources":["../../src/wrapper/tmux-wrapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -60,6 +60,7 @@ export class TmuxWrapper {
|
|
|
60
60
|
isInjecting = false;
|
|
61
61
|
// Track processed output to avoid re-parsing
|
|
62
62
|
processedOutputLength = 0;
|
|
63
|
+
lastLoggedLength = 0; // Track length for incremental log streaming
|
|
63
64
|
lastDebugLog = 0;
|
|
64
65
|
cliType;
|
|
65
66
|
relayPrefix;
|
|
@@ -88,6 +89,7 @@ export class TmuxWrapper {
|
|
|
88
89
|
activityIdleThresholdMs: 30_000, // Consider idle after 30s with no output
|
|
89
90
|
outputStabilityTimeoutMs: 2000,
|
|
90
91
|
outputStabilityPollMs: 200,
|
|
92
|
+
streamLogs: true, // Stream output to daemon for dashboard
|
|
91
93
|
...config,
|
|
92
94
|
};
|
|
93
95
|
// Detect CLI type from command for special handling
|
|
@@ -144,8 +146,8 @@ export class TmuxWrapper {
|
|
|
144
146
|
return false;
|
|
145
147
|
});
|
|
146
148
|
// Handle incoming messages from relay
|
|
147
|
-
this.client.onMessage = (from, payload, messageId, meta) => {
|
|
148
|
-
this.handleIncomingMessage(from, payload, messageId, meta);
|
|
149
|
+
this.client.onMessage = (from, payload, messageId, meta, originalTo) => {
|
|
150
|
+
this.handleIncomingMessage(from, payload, messageId, meta, originalTo);
|
|
149
151
|
};
|
|
150
152
|
this.client.onStateChange = (state) => {
|
|
151
153
|
// Only log to stderr, never stdout (user is in tmux)
|
|
@@ -449,6 +451,15 @@ export class TmuxWrapper {
|
|
|
449
451
|
this.lastOutputTime = Date.now();
|
|
450
452
|
this.markActivity();
|
|
451
453
|
this.processedOutputLength = stdout.length;
|
|
454
|
+
// Stream new output to daemon for dashboard log viewing
|
|
455
|
+
if (this.config.streamLogs && this.client.state === 'READY') {
|
|
456
|
+
// Send incremental output since last log
|
|
457
|
+
const newContent = cleanContent.substring(this.lastLoggedLength);
|
|
458
|
+
if (newContent.length > 0) {
|
|
459
|
+
this.client.sendLog(newContent);
|
|
460
|
+
this.lastLoggedLength = cleanContent.length;
|
|
461
|
+
}
|
|
462
|
+
}
|
|
452
463
|
}
|
|
453
464
|
// Send any commands found (deduplication handles repeats)
|
|
454
465
|
for (const cmd of commands) {
|
|
@@ -475,8 +486,13 @@ export class TmuxWrapper {
|
|
|
475
486
|
* Strip ANSI escape codes
|
|
476
487
|
*/
|
|
477
488
|
stripAnsi(str) {
|
|
489
|
+
// Strip ANSI escape sequences (with \x1B prefix)
|
|
478
490
|
// eslint-disable-next-line no-control-regex
|
|
479
|
-
|
|
491
|
+
let result = str.replace(/\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])/g, '');
|
|
492
|
+
// Strip orphaned CSI sequences that lost their escape byte
|
|
493
|
+
// These look like [?25h, [?2026l, [0m, etc. at the start of content
|
|
494
|
+
result = result.replace(/^\s*(\[\??\d*[A-Za-z])+\s*/g, '');
|
|
495
|
+
return result;
|
|
480
496
|
}
|
|
481
497
|
/**
|
|
482
498
|
* Join continuation lines after ->relay commands.
|
|
@@ -720,18 +736,25 @@ export class TmuxWrapper {
|
|
|
720
736
|
const lines = content.split('\n');
|
|
721
737
|
for (const line of lines) {
|
|
722
738
|
const trimmed = line.trim();
|
|
723
|
-
// Match ->relay:spawn WorkerName cli "task"
|
|
724
|
-
//
|
|
739
|
+
// Match ->relay:spawn WorkerName cli OR ->relay:spawn WorkerName cli "task"
|
|
740
|
+
// Task is now optional - agents can be spawned without immediate task injection
|
|
741
|
+
// Pattern: ->relay:spawn <name> <cli> [optional: "<task>" or '<task>']
|
|
725
742
|
// Allow trailing whitespace and optional bullet prefixes that TUIs might add
|
|
726
|
-
const spawnMatch = trimmed.match(/^(?:[•\-*]\s*)?->relay:spawn\s+(\S+)\s+(\S+)
|
|
743
|
+
const spawnMatch = trimmed.match(/^(?:[•\-*]\s*)?->relay:spawn\s+(\S+)\s+(\S+)(?:\s+["'](.+?)["'])?\s*$/);
|
|
727
744
|
if (spawnMatch && this.config.onSpawn) {
|
|
728
745
|
const [, name, cli, task] = spawnMatch;
|
|
729
|
-
const
|
|
730
|
-
|
|
746
|
+
const taskStr = task || ''; // Task is optional, default to empty string
|
|
747
|
+
const spawnKey = `${name}:${cli}`;
|
|
748
|
+
// Dedup - only process each spawn once (keyed by name:cli, not including task)
|
|
731
749
|
if (!this.processedSpawnCommands.has(spawnKey)) {
|
|
732
750
|
this.processedSpawnCommands.add(spawnKey);
|
|
733
|
-
|
|
734
|
-
|
|
751
|
+
if (taskStr) {
|
|
752
|
+
this.logStderr(`Spawn command: ${name} (${cli}) - "${taskStr.substring(0, 50)}..."`);
|
|
753
|
+
}
|
|
754
|
+
else {
|
|
755
|
+
this.logStderr(`Spawn command: ${name} (${cli}) - no task`);
|
|
756
|
+
}
|
|
757
|
+
this.config.onSpawn(name, cli, taskStr).catch(err => {
|
|
735
758
|
this.logStderr(`Spawn failed: ${err.message}`, true);
|
|
736
759
|
});
|
|
737
760
|
}
|
|
@@ -755,16 +778,19 @@ export class TmuxWrapper {
|
|
|
755
778
|
}
|
|
756
779
|
/**
|
|
757
780
|
* Handle incoming message from relay
|
|
781
|
+
* @param originalTo - The original 'to' field from sender. '*' indicates this was a broadcast message.
|
|
782
|
+
* Agents should reply to originalTo to maintain channel routing (e.g., respond to #general, not DM).
|
|
758
783
|
*/
|
|
759
|
-
handleIncomingMessage(from, payload, messageId, meta) {
|
|
784
|
+
handleIncomingMessage(from, payload, messageId, meta, originalTo) {
|
|
760
785
|
if (this.hasSeenIncoming(messageId)) {
|
|
761
786
|
this.logStderr(`← ${from}: duplicate delivery (${messageId.substring(0, 8)})`);
|
|
762
787
|
return;
|
|
763
788
|
}
|
|
764
789
|
const truncatedBody = payload.body.substring(0, Math.min(DEBUG_LOG_TRUNCATE_LENGTH, payload.body.length));
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
790
|
+
const channelInfo = originalTo === '*' ? ' [broadcast]' : '';
|
|
791
|
+
this.logStderr(`← ${from}${channelInfo}: ${truncatedBody}...`);
|
|
792
|
+
// Queue for injection - include originalTo so we can inform the agent how to route responses
|
|
793
|
+
this.messageQueue.push({ from, body: payload.body, messageId, thread: payload.thread, importance: meta?.importance, data: payload.data, originalTo });
|
|
768
794
|
// Write to inbox if enabled
|
|
769
795
|
if (this.inbox) {
|
|
770
796
|
this.inbox.addMessage(from, payload.body);
|
|
@@ -801,7 +827,8 @@ export class TmuxWrapper {
|
|
|
801
827
|
this.isInjecting = true;
|
|
802
828
|
this.logStderr(`Injecting message from ${msg.from} (cli: ${this.cliType})`);
|
|
803
829
|
try {
|
|
804
|
-
|
|
830
|
+
// Strip ANSI escape sequences and orphaned control sequences from message body
|
|
831
|
+
let sanitizedBody = this.stripAnsi(msg.body).replace(/[\r\n]+/g, ' ').trim();
|
|
805
832
|
// Gemini interprets certain keywords (While, For, If, etc.) as shell commands
|
|
806
833
|
// Wrap in backticks to prevent shell keyword interpretation
|
|
807
834
|
if (this.cliType === 'gemini') {
|
|
@@ -852,13 +879,26 @@ export class TmuxWrapper {
|
|
|
852
879
|
}
|
|
853
880
|
}
|
|
854
881
|
// Standard injection for all CLIs including Gemini
|
|
855
|
-
// Format: Relay message from Sender [abc12345] [thread:xxx] [!]: content
|
|
856
|
-
// Thread/importance hints are compact and optional to not break TUIs
|
|
882
|
+
// Format: Relay message from Sender [abc12345] [thread:xxx] [!] [#general]: content
|
|
883
|
+
// Thread/importance/channel hints are compact and optional to not break TUIs
|
|
857
884
|
const threadHint = msg.thread ? ` [thread:${msg.thread}]` : '';
|
|
858
885
|
// Importance indicator: [!!] for high (>75), [!] for medium (>50), none for low/default
|
|
859
886
|
const importanceHint = msg.importance !== undefined && msg.importance > 75 ? ' [!!]' :
|
|
860
887
|
msg.importance !== undefined && msg.importance > 50 ? ' [!]' : '';
|
|
861
|
-
|
|
888
|
+
// Channel indicator: [#general] for broadcasts - tells agent to reply to * not sender
|
|
889
|
+
// This ensures responses to #general messages go back to #general, not as DMs
|
|
890
|
+
const channelHint = msg.originalTo === '*' ? ' [#general]' : '';
|
|
891
|
+
// Extract attachment file paths if present
|
|
892
|
+
let attachmentHint = '';
|
|
893
|
+
if (msg.data?.attachments && Array.isArray(msg.data.attachments)) {
|
|
894
|
+
const filePaths = msg.data.attachments
|
|
895
|
+
.map((att) => att.filePath)
|
|
896
|
+
.filter((p) => typeof p === 'string');
|
|
897
|
+
if (filePaths.length > 0) {
|
|
898
|
+
attachmentHint = ` [Attachments: ${filePaths.join(', ')}]`;
|
|
899
|
+
}
|
|
900
|
+
}
|
|
901
|
+
const injection = `Relay message from ${msg.from} ${idTag}${threadHint}${importanceHint}${channelHint}${attachmentHint}: ${sanitizedBody}${truncationHint}`;
|
|
862
902
|
// Paste message as a bracketed paste to avoid interleaving with active output
|
|
863
903
|
await this.pasteLiteral(injection);
|
|
864
904
|
await this.sleep(30);
|