agent-relay 8.8.0 → 8.8.2
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/auto/composer.d.ts.map +1 -1
- package/dist/auto/composer.js +24 -9
- package/dist/auto/composer.js.map +1 -1
- package/dist/cli/agent-relay-mcp.d.ts.map +1 -1
- package/dist/cli/agent-relay-mcp.js +171 -21
- package/dist/cli/agent-relay-mcp.js.map +1 -1
- package/dist/cli/commands/fleet.d.ts +9 -0
- package/dist/cli/commands/fleet.d.ts.map +1 -1
- package/dist/cli/commands/fleet.js +129 -10
- package/dist/cli/commands/fleet.js.map +1 -1
- package/dist/cli/commands/local-agent.d.ts.map +1 -1
- package/dist/cli/commands/local-agent.js +28 -2
- package/dist/cli/commands/local-agent.js.map +1 -1
- package/dist/cli/lib/client-factory.d.ts +2 -0
- package/dist/cli/lib/client-factory.d.ts.map +1 -1
- package/dist/cli/lib/client-factory.js.map +1 -1
- package/dist/index.cjs +264 -2
- package/package.json +7 -7
|
@@ -129,13 +129,24 @@ export function registerLocalAgentCommands(group, overrides = {}) {
|
|
|
129
129
|
agent
|
|
130
130
|
.command('spawn')
|
|
131
131
|
.description('Spawn an agent with the given provider CLI')
|
|
132
|
-
.argument('<provider>', 'CLI provider (claude, codex, gemini, …)')
|
|
132
|
+
.argument('<provider>', 'CLI provider (claude, codex, gemini, droid, …); droid is high-risk for delegation/spawn tasks')
|
|
133
133
|
.option('--name <name>', 'Agent name (defaults to the provider)')
|
|
134
134
|
.option('--channels <channels...>', 'Channels to join', ['general'])
|
|
135
135
|
.option('--task <task>', 'Initial task prompt')
|
|
136
136
|
.option('--model <model>', 'Model override')
|
|
137
|
+
.option('--spawn-mode <mode>', 'Spawn lifecycle: interactive | task-exit', 'interactive')
|
|
138
|
+
.option('--exit-after-task', 'Exit the spawned agent after it completes the injected task')
|
|
137
139
|
.action(async (provider, opts) => {
|
|
138
140
|
await run(deps, async (client) => {
|
|
141
|
+
const spawnMode = opts.spawnMode;
|
|
142
|
+
if (spawnMode &&
|
|
143
|
+
spawnMode !== 'interactive' &&
|
|
144
|
+
spawnMode !== 'task-exit' &&
|
|
145
|
+
spawnMode !== 'task_exit') {
|
|
146
|
+
deps.error(`Unknown spawn mode "${spawnMode}". Expected one of: interactive, task-exit.`);
|
|
147
|
+
deps.exit(1);
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
139
150
|
const baseName = opts.name ?? provider;
|
|
140
151
|
const resolved = resolveAutoSpawn(provider, baseName, opts.task, opts.model);
|
|
141
152
|
await spawnAgentWithClient(client, {
|
|
@@ -144,6 +155,8 @@ export function registerLocalAgentCommands(group, overrides = {}) {
|
|
|
144
155
|
channels: opts.channels ?? ['general'],
|
|
145
156
|
task: resolved.task,
|
|
146
157
|
model: resolved.model,
|
|
158
|
+
spawnMode: spawnMode === 'task-exit' ? 'task_exit' : spawnMode,
|
|
159
|
+
exitAfterTask: opts.exitAfterTask,
|
|
147
160
|
});
|
|
148
161
|
const autoNote = opts.model === 'auto' ? ' (auto-routed)' : '';
|
|
149
162
|
deps.log(`Spawned ${resolved.name} (${provider})${autoNote}.`);
|
|
@@ -152,12 +165,14 @@ export function registerLocalAgentCommands(group, overrides = {}) {
|
|
|
152
165
|
agent
|
|
153
166
|
.command('new')
|
|
154
167
|
.description('Spawn an agent and attach to it')
|
|
155
|
-
.argument('<provider>', 'CLI provider (claude, codex, gemini, …)')
|
|
168
|
+
.argument('<provider>', 'CLI provider (claude, codex, gemini, droid, …); droid is high-risk for delegation/spawn tasks')
|
|
156
169
|
.option('--name <name>', 'Agent name (defaults to the provider)')
|
|
157
170
|
.option('--mode <mode>', 'Attach mode: drive | view | passthrough', 'drive')
|
|
158
171
|
.option('--channels <channels...>', 'Channels to join', ['general'])
|
|
159
172
|
.option('--task <task>', 'Initial task prompt')
|
|
160
173
|
.option('--model <model>', 'Model override')
|
|
174
|
+
.option('--spawn-mode <mode>', 'Spawn lifecycle: interactive | task-exit', 'interactive')
|
|
175
|
+
.option('--exit-after-task', 'Exit the spawned agent after it completes the injected task')
|
|
161
176
|
.action(async (provider, options) => {
|
|
162
177
|
const mode = options.mode ?? 'drive';
|
|
163
178
|
if (mode !== 'drive' && mode !== 'view' && mode !== 'passthrough') {
|
|
@@ -165,6 +180,15 @@ export function registerLocalAgentCommands(group, overrides = {}) {
|
|
|
165
180
|
deps.exit(1);
|
|
166
181
|
return;
|
|
167
182
|
}
|
|
183
|
+
const spawnMode = options.spawnMode;
|
|
184
|
+
if (spawnMode &&
|
|
185
|
+
spawnMode !== 'interactive' &&
|
|
186
|
+
spawnMode !== 'task-exit' &&
|
|
187
|
+
spawnMode !== 'task_exit') {
|
|
188
|
+
deps.error(`Unknown spawn mode "${spawnMode}". Expected one of: interactive, task-exit.`);
|
|
189
|
+
deps.exit(1);
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
168
192
|
const baseName = options.name ?? provider;
|
|
169
193
|
const resolved = resolveAutoSpawn(provider, baseName, options.task, options.model);
|
|
170
194
|
await run(deps, async (client) => {
|
|
@@ -174,6 +198,8 @@ export function registerLocalAgentCommands(group, overrides = {}) {
|
|
|
174
198
|
channels: options.channels ?? ['general'],
|
|
175
199
|
task: resolved.task,
|
|
176
200
|
model: resolved.model,
|
|
201
|
+
spawnMode: spawnMode === 'task-exit' ? 'task_exit' : spawnMode,
|
|
202
|
+
exitAfterTask: options.exitAfterTask,
|
|
177
203
|
});
|
|
178
204
|
const autoNote = options.model === 'auto' ? ' (auto-routed)' : '';
|
|
179
205
|
deps.log(`Spawned ${resolved.name} (${provider}). Attaching (${mode})${autoNote}…`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-agent.js","sourceRoot":"","sources":["../../../src/cli/commands/local-agent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EACL,eAAe,EACf,0BAA0B,EAC1B,uBAAuB,GAExB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAErF,iFAAiF;AAEjF,uDAAuD;AACvD,MAAM,gBAAgB,GAAgD;IACpE,KAAK,EAAE,2BAA2B;IAClC,MAAM,EAAE,mBAAmB;IAC3B,IAAI,EAAE,iBAAiB;CACxB,CAAC;AAEF;;;;;;GAMG;AACH,SAAS,gBAAgB,CACvB,QAAgB,EAChB,IAAY,EACZ,IAAwB,EACxB,KAAyB;IAEzB,IAAI,KAAK,KAAK,MAAM,IAAI,QAAQ,KAAK,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QACvD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC/B,CAAC;IACD,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC3C,MAAM,cAAc,GAAG,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvD,OAAO;QACL,IAAI,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI;QAC3C,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;KACzC,CAAC;AACJ,CAAC;AAKD,0FAA0F;AAC1F,MAAM,UAAU,SAAS,CACvB,IAAY,EACZ,IAAgB,EAChB,OAAmE;IAEnE,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM;YACT,OAAO,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACnC,KAAK,aAAa;YAChB,OAAO,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1C,KAAK,OAAO,CAAC;QACb;YACE,OAAO,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAsBD,SAAS,YAAY,CAAC,YAA6C,EAAE;IACnE,MAAM,IAAI,GAAG;QACX,OAAO,EAAE,KAAK,EAAE,GAAW,EAAE,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;QACpE,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;QACxB,kBAAkB,EAAE,0BAA0B;QAC9C,kBAAkB,EAAE,eAAe;QACnC,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,MAAM,EAAE,SAAS;QACjB,GAAG,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QACjD,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QACrD,IAAI,EAAE,WAAW;QACjB,GAAG,SAAS;KACa,CAAC;IAC5B,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE,IAAY,EAAE,OAAuC,EAAE,EAAE;QACpF,MAAM,UAAU,GAAG,uBAAuB,CAAC,OAAO,EAAE;YAClD,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,sFAAsF;gBACpF,2EAA2E,CAC9E,CAAC;QACJ,CAAC;QACD,OAAO,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,GAAG,CAChB,IAA4B,EAC5B,EAAkD;IAElD,IAAI,MAAuC,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACxC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACf,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC;IACzB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,IAA4B,EAC5B,OAAuC,EACvC,EAAkD;IAElD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAgB;IACxC,OAAO,OAAO;SACX,MAAM,CAAC,oBAAoB,EAAE,kEAAkE,CAAC;SAChG,MAAM,CAAC,iBAAiB,EAAE,qEAAqE,CAAC;SAChG,MAAM,CAAC,mBAAmB,EAAE,wEAAwE,CAAC,CAAC;AAC3G,CAAC;AAED,SAAS,qBAAqB,CAAC,IAA6B;IAC1D,OAAO;QACL,SAAS,EAAE,IAAI,CAAC,SAA+B;QAC/C,MAAM,EAAE,IAAI,CAAC,MAA4B;QACzC,QAAQ,EAAE,IAAI,CAAC,QAA8B;KAC9C,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAAc,EACd,YAA6C,EAAE;IAE/C,MAAM,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,0CAA0C,CAAC,CAAC;IAE7F,KAAK;SACF,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC/B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,4CAA4C,CAAC;SACzD,QAAQ,CAAC,YAAY,EAAE,yCAAyC,CAAC;SACjE,MAAM,CAAC,eAAe,EAAE,uCAAuC,CAAC;SAChE,MAAM,CAAC,0BAA0B,EAAE,kBAAkB,EAAE,CAAC,SAAS,CAAC,CAAC;SACnE,MAAM,CAAC,eAAe,EAAE,qBAAqB,CAAC;SAC9C,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;SAC3C,MAAM,CAAC,KAAK,EAAE,QAAgB,EAAE,IAA6B,EAAE,EAAE;QAChE,MAAM,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC/B,MAAM,QAAQ,GAAI,IAAI,CAAC,IAA2B,IAAI,QAAQ,CAAC;YAC/D,MAAM,QAAQ,GAAG,gBAAgB,CAC/B,QAAQ,EACR,QAAQ,EACR,IAAI,CAAC,IAA0B,EAC/B,IAAI,CAAC,KAA2B,CACjC,CAAC;YACF,MAAM,oBAAoB,CAAC,MAAM,EAAE;gBACjC,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,GAAG,EAAE,QAAQ;gBACb,QAAQ,EAAG,IAAI,CAAC,QAAiC,IAAI,CAAC,SAAS,CAAC;gBAChE,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;aACtB,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,IAAI,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,iCAAiC,CAAC;SAC9C,QAAQ,CAAC,YAAY,EAAE,yCAAyC,CAAC;SACjE,MAAM,CAAC,eAAe,EAAE,uCAAuC,CAAC;SAChE,MAAM,CAAC,eAAe,EAAE,yCAAyC,EAAE,OAAO,CAAC;SAC3E,MAAM,CAAC,0BAA0B,EAAE,kBAAkB,EAAE,CAAC,SAAS,CAAC,CAAC;SACnE,MAAM,CAAC,eAAe,EAAE,qBAAqB,CAAC;SAC9C,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;SAC3C,MAAM,CAAC,KAAK,EAAE,QAAgB,EAAE,OAAgC,EAAE,EAAE;QACnE,MAAM,IAAI,GAAI,OAAO,CAAC,IAAe,IAAI,OAAO,CAAC;QACjD,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;YAClE,IAAI,CAAC,KAAK,CAAC,wBAAwB,IAAI,+CAA+C,CAAC,CAAC;YACxF,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACb,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,GAAI,OAAO,CAAC,IAA2B,IAAI,QAAQ,CAAC;QAClE,MAAM,QAAQ,GAAG,gBAAgB,CAC/B,QAAQ,EACR,QAAQ,EACR,OAAO,CAAC,IAA0B,EAClC,OAAO,CAAC,KAA2B,CACpC,CAAC;QACF,MAAM,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC/B,MAAM,oBAAoB,CAAC,MAAM,EAAE;gBACjC,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,GAAG,EAAE,QAAQ;gBACb,QAAQ,EAAG,OAAO,CAAC,QAAiC,IAAI,CAAC,SAAS,CAAC;gBACnE,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;aACtB,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,IAAI,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC,IAAI,KAAK,QAAQ,iBAAiB,IAAI,IAAI,QAAQ,GAAG,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;QACH,sEAAsE;QACtE,4DAA4D;QAC5D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAkB,EAAE,EAAE,CAAC,CAAC;QACtE,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,kCAAkC,CAAC;SAC/C,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;SAChC,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAC7B,MAAM,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC/B,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,yEAAyE,CAAC;SACtF,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;SAChC,QAAQ,CAAC,SAAS,EAAE,+BAA+B,CAAC;SACpD,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,KAAa,EAAE,EAAE;QAC5C,MAAM,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC/B,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,GAAG,CAAC,iBAAiB,KAAK,SAAS,IAAI,8CAA8C,CAAC,CAAC;QAC9F,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,sEAAsE,CAAC;SACnF,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;SAChC,MAAM,CAAC,eAAe,EAAE,4BAA4B,EAAE,MAAM,CAAC;SAC7D,MAAM,CAAC,oBAAoB,EAAE,kEAAkE,CAAC;SAChG,MAAM,CAAC,iBAAiB,EAAE,qEAAqE,CAAC;SAChG,MAAM,CAAC,mBAAmB,EAAE,wEAAwE,CAAC;SACrG,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAgC,EAAE,EAAE;QAC/D,MAAM,IAAI,GAAI,OAAO,CAAC,IAAe,IAAI,MAAM,CAAC;QAChD,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;YAClE,IAAI,CAAC,KAAK,CAAC,wBAAwB,IAAI,+CAA+C,CAAC,CAAC;YACxF,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACb,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE;YACzC,SAAS,EAAE,OAAO,CAAC,SAA+B;YAClD,MAAM,EAAE,OAAO,CAAC,MAA4B;YAC5C,QAAQ,EAAE,OAAO,CAAC,QAA8B;SACjD,CAAC,CAAC;QACH,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,oDAAoD,CAAC,CAAC;IAE3G,gBAAgB,CACd,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,qDAAqD,CAAC;SAClE,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,CACpC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,IAA6B,EAAE,EAAE;QAC7D,MAAM,cAAc,CAAC,IAAI,EAAE,qBAAqB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACvE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,gBAAgB,CACd,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,yDAAyD,CAAC;SACtE,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,CACpC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,IAA6B,EAAE,EAAE;QAC7D,MAAM,cAAc,CAAC,IAAI,EAAE,qBAAqB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACvE,IAAI,CAAC,GAAG,CACN,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,sBAAsB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAClG,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,gBAAgB,CACd,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,4DAA4D,CAAC;SACzE,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,CACpC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,IAA6B,EAAE,EAAE;QAC7D,MAAM,cAAc,CAAC,IAAI,EAAE,qBAAqB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACvE,IAAI,CAAC,GAAG,CACN,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,sBAAsB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CACjG,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,KAAK;SACF,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,yDAAyD,CAAC;SACtE,MAAM,CAAC,gBAAgB,EAAE,0CAA0C,CAAC;SACpE,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;QAC5C,MAAM,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC/B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACtE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC9B,CAAC;gBACD,OAAO;YACT,CAAC;YACD,MAAM,CAAC,aAAa,EAAE,CAAC;YACvB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAClC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;oBACvB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;gBAClC,CAAC,CAAC,CAAC;gBACH,kEAAkE;gBAClE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
1
|
+
{"version":3,"file":"local-agent.js","sourceRoot":"","sources":["../../../src/cli/commands/local-agent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EACL,eAAe,EACf,0BAA0B,EAC1B,uBAAuB,GAExB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAErF,iFAAiF;AAEjF,uDAAuD;AACvD,MAAM,gBAAgB,GAAgD;IACpE,KAAK,EAAE,2BAA2B;IAClC,MAAM,EAAE,mBAAmB;IAC3B,IAAI,EAAE,iBAAiB;CACxB,CAAC;AAEF;;;;;;GAMG;AACH,SAAS,gBAAgB,CACvB,QAAgB,EAChB,IAAY,EACZ,IAAwB,EACxB,KAAyB;IAEzB,IAAI,KAAK,KAAK,MAAM,IAAI,QAAQ,KAAK,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QACvD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC/B,CAAC;IACD,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC3C,MAAM,cAAc,GAAG,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvD,OAAO;QACL,IAAI,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI;QAC3C,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;KACzC,CAAC;AACJ,CAAC;AAKD,0FAA0F;AAC1F,MAAM,UAAU,SAAS,CACvB,IAAY,EACZ,IAAgB,EAChB,OAAmE;IAEnE,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM;YACT,OAAO,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACnC,KAAK,aAAa;YAChB,OAAO,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1C,KAAK,OAAO,CAAC;QACb;YACE,OAAO,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAsBD,SAAS,YAAY,CAAC,YAA6C,EAAE;IACnE,MAAM,IAAI,GAAG;QACX,OAAO,EAAE,KAAK,EAAE,GAAW,EAAE,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;QACpE,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;QACxB,kBAAkB,EAAE,0BAA0B;QAC9C,kBAAkB,EAAE,eAAe;QACnC,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,MAAM,EAAE,SAAS;QACjB,GAAG,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QACjD,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QACrD,IAAI,EAAE,WAAW;QACjB,GAAG,SAAS;KACa,CAAC;IAC5B,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE,IAAY,EAAE,OAAuC,EAAE,EAAE;QACpF,MAAM,UAAU,GAAG,uBAAuB,CAAC,OAAO,EAAE;YAClD,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,sFAAsF;gBACpF,2EAA2E,CAC9E,CAAC;QACJ,CAAC;QACD,OAAO,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,GAAG,CAChB,IAA4B,EAC5B,EAAkD;IAElD,IAAI,MAAuC,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACxC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACf,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC;IACzB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,IAA4B,EAC5B,OAAuC,EACvC,EAAkD;IAElD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAgB;IACxC,OAAO,OAAO;SACX,MAAM,CAAC,oBAAoB,EAAE,kEAAkE,CAAC;SAChG,MAAM,CAAC,iBAAiB,EAAE,qEAAqE,CAAC;SAChG,MAAM,CAAC,mBAAmB,EAAE,wEAAwE,CAAC,CAAC;AAC3G,CAAC;AAED,SAAS,qBAAqB,CAAC,IAA6B;IAC1D,OAAO;QACL,SAAS,EAAE,IAAI,CAAC,SAA+B;QAC/C,MAAM,EAAE,IAAI,CAAC,MAA4B;QACzC,QAAQ,EAAE,IAAI,CAAC,QAA8B;KAC9C,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAAc,EACd,YAA6C,EAAE;IAE/C,MAAM,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,0CAA0C,CAAC,CAAC;IAE7F,KAAK;SACF,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC/B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,4CAA4C,CAAC;SACzD,QAAQ,CACP,YAAY,EACZ,+FAA+F,CAChG;SACA,MAAM,CAAC,eAAe,EAAE,uCAAuC,CAAC;SAChE,MAAM,CAAC,0BAA0B,EAAE,kBAAkB,EAAE,CAAC,SAAS,CAAC,CAAC;SACnE,MAAM,CAAC,eAAe,EAAE,qBAAqB,CAAC;SAC9C,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;SAC3C,MAAM,CAAC,qBAAqB,EAAE,0CAA0C,EAAE,aAAa,CAAC;SACxF,MAAM,CAAC,mBAAmB,EAAE,6DAA6D,CAAC;SAC1F,MAAM,CAAC,KAAK,EAAE,QAAgB,EAAE,IAA6B,EAAE,EAAE;QAChE,MAAM,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,SAA+B,CAAC;YACvD,IACE,SAAS;gBACT,SAAS,KAAK,aAAa;gBAC3B,SAAS,KAAK,WAAW;gBACzB,SAAS,KAAK,WAAW,EACzB,CAAC;gBACD,IAAI,CAAC,KAAK,CAAC,uBAAuB,SAAS,6CAA6C,CAAC,CAAC;gBAC1F,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACb,OAAO;YACT,CAAC;YACD,MAAM,QAAQ,GAAI,IAAI,CAAC,IAA2B,IAAI,QAAQ,CAAC;YAC/D,MAAM,QAAQ,GAAG,gBAAgB,CAC/B,QAAQ,EACR,QAAQ,EACR,IAAI,CAAC,IAA0B,EAC/B,IAAI,CAAC,KAA2B,CACjC,CAAC;YACF,MAAM,oBAAoB,CAAC,MAAM,EAAE;gBACjC,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,GAAG,EAAE,QAAQ;gBACb,QAAQ,EAAG,IAAI,CAAC,QAAiC,IAAI,CAAC,SAAS,CAAC;gBAChE,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,SAAS,EACP,SAAS,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAE,SAAqD;gBAClG,aAAa,EAAE,IAAI,CAAC,aAAoC;aACzD,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,IAAI,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,iCAAiC,CAAC;SAC9C,QAAQ,CACP,YAAY,EACZ,+FAA+F,CAChG;SACA,MAAM,CAAC,eAAe,EAAE,uCAAuC,CAAC;SAChE,MAAM,CAAC,eAAe,EAAE,yCAAyC,EAAE,OAAO,CAAC;SAC3E,MAAM,CAAC,0BAA0B,EAAE,kBAAkB,EAAE,CAAC,SAAS,CAAC,CAAC;SACnE,MAAM,CAAC,eAAe,EAAE,qBAAqB,CAAC;SAC9C,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;SAC3C,MAAM,CAAC,qBAAqB,EAAE,0CAA0C,EAAE,aAAa,CAAC;SACxF,MAAM,CAAC,mBAAmB,EAAE,6DAA6D,CAAC;SAC1F,MAAM,CAAC,KAAK,EAAE,QAAgB,EAAE,OAAgC,EAAE,EAAE;QACnE,MAAM,IAAI,GAAI,OAAO,CAAC,IAAe,IAAI,OAAO,CAAC;QACjD,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;YAClE,IAAI,CAAC,KAAK,CAAC,wBAAwB,IAAI,+CAA+C,CAAC,CAAC;YACxF,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACb,OAAO;QACT,CAAC;QACD,MAAM,SAAS,GAAG,OAAO,CAAC,SAA+B,CAAC;QAC1D,IACE,SAAS;YACT,SAAS,KAAK,aAAa;YAC3B,SAAS,KAAK,WAAW;YACzB,SAAS,KAAK,WAAW,EACzB,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,uBAAuB,SAAS,6CAA6C,CAAC,CAAC;YAC1F,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACb,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,GAAI,OAAO,CAAC,IAA2B,IAAI,QAAQ,CAAC;QAClE,MAAM,QAAQ,GAAG,gBAAgB,CAC/B,QAAQ,EACR,QAAQ,EACR,OAAO,CAAC,IAA0B,EAClC,OAAO,CAAC,KAA2B,CACpC,CAAC;QACF,MAAM,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC/B,MAAM,oBAAoB,CAAC,MAAM,EAAE;gBACjC,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,GAAG,EAAE,QAAQ;gBACb,QAAQ,EAAG,OAAO,CAAC,QAAiC,IAAI,CAAC,SAAS,CAAC;gBACnE,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,SAAS,EACP,SAAS,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAE,SAAqD;gBAClG,aAAa,EAAE,OAAO,CAAC,aAAoC;aAC5D,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,IAAI,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC,IAAI,KAAK,QAAQ,iBAAiB,IAAI,IAAI,QAAQ,GAAG,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;QACH,sEAAsE;QACtE,4DAA4D;QAC5D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAkB,EAAE,EAAE,CAAC,CAAC;QACtE,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,kCAAkC,CAAC;SAC/C,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;SAChC,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAC7B,MAAM,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC/B,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,yEAAyE,CAAC;SACtF,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;SAChC,QAAQ,CAAC,SAAS,EAAE,+BAA+B,CAAC;SACpD,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,KAAa,EAAE,EAAE;QAC5C,MAAM,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC/B,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,GAAG,CAAC,iBAAiB,KAAK,SAAS,IAAI,8CAA8C,CAAC,CAAC;QAC9F,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,sEAAsE,CAAC;SACnF,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;SAChC,MAAM,CAAC,eAAe,EAAE,4BAA4B,EAAE,MAAM,CAAC;SAC7D,MAAM,CAAC,oBAAoB,EAAE,kEAAkE,CAAC;SAChG,MAAM,CAAC,iBAAiB,EAAE,qEAAqE,CAAC;SAChG,MAAM,CAAC,mBAAmB,EAAE,wEAAwE,CAAC;SACrG,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAgC,EAAE,EAAE;QAC/D,MAAM,IAAI,GAAI,OAAO,CAAC,IAAe,IAAI,MAAM,CAAC;QAChD,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;YAClE,IAAI,CAAC,KAAK,CAAC,wBAAwB,IAAI,+CAA+C,CAAC,CAAC;YACxF,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACb,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE;YACzC,SAAS,EAAE,OAAO,CAAC,SAA+B;YAClD,MAAM,EAAE,OAAO,CAAC,MAA4B;YAC5C,QAAQ,EAAE,OAAO,CAAC,QAA8B;SACjD,CAAC,CAAC;QACH,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,oDAAoD,CAAC,CAAC;IAE3G,gBAAgB,CACd,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,qDAAqD,CAAC;SAClE,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,CACpC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,IAA6B,EAAE,EAAE;QAC7D,MAAM,cAAc,CAAC,IAAI,EAAE,qBAAqB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACvE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,gBAAgB,CACd,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,yDAAyD,CAAC;SACtE,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,CACpC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,IAA6B,EAAE,EAAE;QAC7D,MAAM,cAAc,CAAC,IAAI,EAAE,qBAAqB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACvE,IAAI,CAAC,GAAG,CACN,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,sBAAsB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAClG,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,gBAAgB,CACd,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,4DAA4D,CAAC;SACzE,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,CACpC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,IAA6B,EAAE,EAAE;QAC7D,MAAM,cAAc,CAAC,IAAI,EAAE,qBAAqB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACvE,IAAI,CAAC,GAAG,CACN,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,sBAAsB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CACjG,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,KAAK;SACF,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,yDAAyD,CAAC;SACtE,MAAM,CAAC,gBAAgB,EAAE,0CAA0C,CAAC;SACpE,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;QAC5C,MAAM,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC/B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACtE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC9B,CAAC;gBACD,OAAO;YACT,CAAC;YACD,MAAM,CAAC,aAAa,EAAE,CAAC;YACvB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAClC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;oBACvB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;gBAClC,CAAC,CAAC,CAAC;gBACH,kEAAkE;gBAClE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -19,6 +19,8 @@ export interface ClientSpawnOptions {
|
|
|
19
19
|
cwd?: string;
|
|
20
20
|
shadowOf?: string;
|
|
21
21
|
shadowMode?: 'subagent' | 'process';
|
|
22
|
+
spawnMode?: 'interactive' | 'task_exit' | 'task-exit' | 'single_shot' | 'single-shot';
|
|
23
|
+
exitAfterTask?: boolean;
|
|
22
24
|
}
|
|
23
25
|
export declare function createRuntimeClient(options: CreateRuntimeClientOptions): Promise<HarnessDriverClient>;
|
|
24
26
|
export declare function spawnAgentWithClient(client: HarnessDriverClient, options: ClientSpawnOptions): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-factory.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/client-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAEvF,MAAM,WAAW,0BAA0B;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"client-factory.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/client-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAEvF,MAAM,WAAW,0BAA0B;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACpC,SAAS,CAAC,EAAE,aAAa,GAAG,WAAW,GAAG,WAAW,GAAG,aAAa,GAAG,aAAa,CAAC;IACtF,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA6B3G;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAEf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-factory.js","sourceRoot":"","sources":["../../../src/cli/lib/client-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAuB,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"client-factory.js","sourceRoot":"","sources":["../../../src/cli/lib/client-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAuB,MAAM,6BAA6B,CAAC;AA2BvF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAmC;IAC3E,MAAM,EACJ,GAAG,EACH,QAAQ,GAAG,CAAC,SAAS,CAAC,EACtB,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,EACxC,UAAU,EACV,UAAU,EACV,GAAG,GAAG,OAAO,CAAC,GAAG,EACjB,aAAa,GAAG,KAAK,GACtB,GAAG,OAAO,CAAC;IAEZ,IAAI,aAAa,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,wEAAwE;YACxE,0DAA0D;YAC1D,OAAO,MAAM,mBAAmB,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QACpD,CAAC;QAAC,MAAM,CAAC;YACP,2CAA2C;QAC7C,CAAC;IACH,CAAC;IAED,OAAO,mBAAmB,CAAC,KAAK,CAAC;QAC/B,UAAU,EAAE,UAAU,IAAI,SAAS;QACnC,UAAU;QACV,UAAU;QACV,QAAQ;QACR,GAAG;QACH,GAAG,EAAE,GAA6B;KACnC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAA2B,EAC3B,OAA2B;IAE3B,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC"}
|
package/dist/index.cjs
CHANGED
|
@@ -176,6 +176,7 @@ __export(index_exports, {
|
|
|
176
176
|
MessageReadPredicate: () => MessageReadPredicate,
|
|
177
177
|
RelayCapabilityError: () => RelayCapabilityError,
|
|
178
178
|
RelayError: () => RelayError,
|
|
179
|
+
RelayPlacementError: () => RelayPlacementError,
|
|
179
180
|
RelaycastMessagingClient: () => RelaycastMessagingClient,
|
|
180
181
|
StaticPatterns: () => StaticPatterns,
|
|
181
182
|
StatusPredicate: () => StatusPredicate,
|
|
@@ -16514,11 +16515,11 @@ var WsClient = class {
|
|
|
16514
16515
|
this.reconnectAttempt += 1;
|
|
16515
16516
|
const reconnectingEvent = { type: "reconnecting", attempt: this.reconnectAttempt };
|
|
16516
16517
|
this.emit("reconnecting", reconnectingEvent);
|
|
16517
|
-
const
|
|
16518
|
+
const delay2 = this.computeReconnectDelayMs(this.reconnectAttempt);
|
|
16518
16519
|
this.reconnectTimer = setTimeout(() => {
|
|
16519
16520
|
this.reconnectTimer = null;
|
|
16520
16521
|
this.connect();
|
|
16521
|
-
},
|
|
16522
|
+
}, delay2);
|
|
16522
16523
|
}
|
|
16523
16524
|
};
|
|
16524
16525
|
|
|
@@ -19162,18 +19163,29 @@ function toRelayNode(raw) {
|
|
|
19162
19163
|
const rawStatus = readStr(node, "status");
|
|
19163
19164
|
return {
|
|
19164
19165
|
id: readStr(node, "id", "node_id"),
|
|
19166
|
+
nodeId: readStr(node, "nodeId", "node_id"),
|
|
19165
19167
|
name: readStr(node, "name") ?? "",
|
|
19166
19168
|
status: rawStatus === "online" || rawStatus === "offline" ? rawStatus : "unknown",
|
|
19169
|
+
live: readBoolean2(node, "live"),
|
|
19167
19170
|
capabilities: Array.isArray(node.capabilities) ? node.capabilities.map(toRelayNodeCapability) : [],
|
|
19171
|
+
repoKeys: readRepoKeys(node),
|
|
19168
19172
|
maxAgents: readNumber2(node, "maxAgents", "max_agents"),
|
|
19169
19173
|
activeAgents: readNumber2(node, "activeAgents", "active_agents"),
|
|
19170
19174
|
handlersLive: readBoolean2(node, "handlersLive", "handlers_live"),
|
|
19171
19175
|
load: readNumber2(node, "load"),
|
|
19172
19176
|
lastHeartbeatAt: readStr(node, "lastHeartbeatAt", "last_heartbeat_at"),
|
|
19177
|
+
createdAt: readStr(node, "createdAt", "created_at"),
|
|
19173
19178
|
tags: readStringArray(node, "tags"),
|
|
19174
19179
|
version: readStr(node, "version")
|
|
19175
19180
|
};
|
|
19176
19181
|
}
|
|
19182
|
+
function readRepoKeys(node) {
|
|
19183
|
+
const direct = readStringArray(node, "repoKeys") ?? readStringArray(node, "repo_keys");
|
|
19184
|
+
if (direct)
|
|
19185
|
+
return direct;
|
|
19186
|
+
const repoPaths = readRecord2(node, "repoPaths", "repo_paths");
|
|
19187
|
+
return repoPaths ? Object.keys(repoPaths).filter(Boolean) : void 0;
|
|
19188
|
+
}
|
|
19177
19189
|
function toRelayNodeCapability(raw) {
|
|
19178
19190
|
const capability = raw ?? {};
|
|
19179
19191
|
return {
|
|
@@ -19252,12 +19264,61 @@ function readRecord2(record2, ...keys) {
|
|
|
19252
19264
|
}
|
|
19253
19265
|
return void 0;
|
|
19254
19266
|
}
|
|
19267
|
+
var RelayPlacementError = class extends Error {
|
|
19268
|
+
code;
|
|
19269
|
+
capability;
|
|
19270
|
+
node;
|
|
19271
|
+
repo;
|
|
19272
|
+
attempts;
|
|
19273
|
+
constructor(code, message, context) {
|
|
19274
|
+
super(message);
|
|
19275
|
+
this.name = "RelayPlacementError";
|
|
19276
|
+
this.code = code;
|
|
19277
|
+
this.capability = context.capability;
|
|
19278
|
+
this.node = context.node;
|
|
19279
|
+
this.repo = context.repo;
|
|
19280
|
+
this.attempts = context.attempts;
|
|
19281
|
+
}
|
|
19282
|
+
};
|
|
19283
|
+
function nonEmptyPlacement(value, label) {
|
|
19284
|
+
const trimmed = value.trim();
|
|
19285
|
+
if (!trimmed)
|
|
19286
|
+
throw new Error(`${label} is required.`);
|
|
19287
|
+
return trimmed;
|
|
19288
|
+
}
|
|
19289
|
+
function placementActionName(capability) {
|
|
19290
|
+
return capability.startsWith("spawn:") ? "spawn" : capability;
|
|
19291
|
+
}
|
|
19292
|
+
function placementActionInput(input, placement) {
|
|
19293
|
+
const payload = { ...input ?? {} };
|
|
19294
|
+
payload.capability = placement.capability;
|
|
19295
|
+
payload.node = placement.node;
|
|
19296
|
+
payload.target_node = placement.node;
|
|
19297
|
+
if (placement.repo)
|
|
19298
|
+
payload.repo = placement.repo;
|
|
19299
|
+
if (placement.ttlMs > 0) {
|
|
19300
|
+
payload.ttl_override_ms = placement.ttlMs;
|
|
19301
|
+
}
|
|
19302
|
+
if (placement.capability.startsWith("spawn:")) {
|
|
19303
|
+
const capabilityCli = placement.capability.slice("spawn:".length);
|
|
19304
|
+
if (typeof payload.cli === "string" && payload.cli !== capabilityCli) {
|
|
19305
|
+
throw new RelayPlacementError("capability_mismatch", `Placement rejected: input cli "${payload.cli}" does not match capability "${placement.capability}"`, { capability: placement.capability, node: placement.node, repo: placement.repo, attempts: 0 });
|
|
19306
|
+
}
|
|
19307
|
+
payload.cli = capabilityCli;
|
|
19308
|
+
}
|
|
19309
|
+
return payload;
|
|
19310
|
+
}
|
|
19311
|
+
function delay(ms) {
|
|
19312
|
+
return new Promise((resolve2) => setTimeout(resolve2, ms));
|
|
19313
|
+
}
|
|
19255
19314
|
function normalizeActionInvocationAck(raw) {
|
|
19256
19315
|
const record2 = asRecord(raw);
|
|
19257
19316
|
return {
|
|
19258
19317
|
invocationId: readStr(record2, "invocationId", "invocation_id") ?? "",
|
|
19259
19318
|
actionName: readStr(record2, "actionName", "action_name") ?? "",
|
|
19260
19319
|
...readStr(record2, "handlerAgentId", "handler_agent_id") ? { handlerAgentId: readStr(record2, "handlerAgentId", "handler_agent_id") } : {},
|
|
19320
|
+
...readStr(record2, "handlerNodeId", "handler_node_id") ? { handlerNodeId: readStr(record2, "handlerNodeId", "handler_node_id") } : {},
|
|
19321
|
+
...readStr(record2, "dispatchedNodeId", "dispatched_node_id") ? { dispatchedNodeId: readStr(record2, "dispatchedNodeId", "dispatched_node_id") } : {},
|
|
19261
19322
|
...readRecord2(record2, "input") ? { input: readRecord2(record2, "input") } : {},
|
|
19262
19323
|
...readStr(record2, "status") ? { status: readStr(record2, "status") } : {},
|
|
19263
19324
|
...readStr(record2, "createdAt", "created_at") ? { createdAt: readStr(record2, "createdAt", "created_at") } : {}
|
|
@@ -19338,11 +19399,20 @@ var RelaycastMessagingClient = class {
|
|
|
19338
19399
|
capabilities;
|
|
19339
19400
|
relaycast;
|
|
19340
19401
|
agentClient;
|
|
19402
|
+
selfNodeName;
|
|
19403
|
+
placementTtlMs;
|
|
19404
|
+
maxQueuedPlacements;
|
|
19405
|
+
placementLog;
|
|
19406
|
+
queuedPlacements = 0;
|
|
19341
19407
|
eventHandlers = /* @__PURE__ */ new Map();
|
|
19342
19408
|
eventUnsubscribe;
|
|
19343
19409
|
constructor(options) {
|
|
19344
19410
|
this.relaycast = createRelaycastClient(options);
|
|
19345
19411
|
this.agentClient = options.agentClient ?? (options.agentToken ? this.relaycast.as?.(options.agentToken, options.agentClientOptions) : void 0);
|
|
19412
|
+
this.selfNodeName = options.selfNodeName;
|
|
19413
|
+
this.placementTtlMs = options.placementTtlMs ?? 60 * 60 * 1e3;
|
|
19414
|
+
this.maxQueuedPlacements = options.maxQueuedPlacements ?? 100;
|
|
19415
|
+
this.placementLog = options.placementLog;
|
|
19346
19416
|
const durable = this.deliverySurface() !== void 0;
|
|
19347
19417
|
this.capabilities = {
|
|
19348
19418
|
serverDeliveryState: durable,
|
|
@@ -19661,6 +19731,108 @@ var RelaycastMessagingClient = class {
|
|
|
19661
19731
|
return node ?? null;
|
|
19662
19732
|
}
|
|
19663
19733
|
};
|
|
19734
|
+
placement = {
|
|
19735
|
+
spawn: async (input) => {
|
|
19736
|
+
const capability = nonEmptyPlacement(input.capability, "placement capability");
|
|
19737
|
+
const repo = input.repo?.trim() || void 0;
|
|
19738
|
+
const targetNode = this.resolvePlacementNode(input.node, input.selfNodeName);
|
|
19739
|
+
const ttlMs = Math.max(0, input.ttlMs ?? input.ttlOverrideMs ?? this.placementTtlMs);
|
|
19740
|
+
const pollIntervalMs = Math.max(25, input.pollIntervalMs ?? 1e3);
|
|
19741
|
+
const startedAt = Date.now();
|
|
19742
|
+
let queued = false;
|
|
19743
|
+
let attempts = 0;
|
|
19744
|
+
try {
|
|
19745
|
+
while (true) {
|
|
19746
|
+
attempts += 1;
|
|
19747
|
+
const decision = await this.selectPlacementNode({ capability, repo, targetNode });
|
|
19748
|
+
if (decision.node) {
|
|
19749
|
+
const actionName = input.actionName ?? placementActionName(capability);
|
|
19750
|
+
const actionInput = placementActionInput(input.input, {
|
|
19751
|
+
capability,
|
|
19752
|
+
node: decision.node.name,
|
|
19753
|
+
repo,
|
|
19754
|
+
ttlMs
|
|
19755
|
+
});
|
|
19756
|
+
const ack = await this.commands.invoke(actionName, actionInput);
|
|
19757
|
+
return {
|
|
19758
|
+
...ack,
|
|
19759
|
+
node: decision.node,
|
|
19760
|
+
placement: {
|
|
19761
|
+
capability,
|
|
19762
|
+
node: decision.node.name,
|
|
19763
|
+
...repo ? { repo } : {},
|
|
19764
|
+
attempts,
|
|
19765
|
+
queued
|
|
19766
|
+
}
|
|
19767
|
+
};
|
|
19768
|
+
}
|
|
19769
|
+
if (decision.hardFail) {
|
|
19770
|
+
this.logPlacement(input, decision.message);
|
|
19771
|
+
throw new RelayPlacementError(decision.reason, decision.message, {
|
|
19772
|
+
capability,
|
|
19773
|
+
node: targetNode,
|
|
19774
|
+
repo,
|
|
19775
|
+
attempts
|
|
19776
|
+
});
|
|
19777
|
+
}
|
|
19778
|
+
if (input.failFast || Date.now() - startedAt >= ttlMs) {
|
|
19779
|
+
const code = decision.reconcileReason === "unmapped_repo" ? "unmapped_repo" : "placement_ttl_expired";
|
|
19780
|
+
const message = code === "unmapped_repo" ? `${decision.message}; no node maps the requested repo` : `${decision.message}; placement TTL expired`;
|
|
19781
|
+
await this.reconcilePlacement(input, {
|
|
19782
|
+
action: "failed",
|
|
19783
|
+
reason: decision.reconcileReason,
|
|
19784
|
+
capability,
|
|
19785
|
+
...targetNode ? { node: targetNode } : {},
|
|
19786
|
+
...repo ? { repo } : {},
|
|
19787
|
+
attempts,
|
|
19788
|
+
message
|
|
19789
|
+
});
|
|
19790
|
+
throw new RelayPlacementError(code, message, {
|
|
19791
|
+
capability,
|
|
19792
|
+
node: targetNode,
|
|
19793
|
+
repo,
|
|
19794
|
+
attempts
|
|
19795
|
+
});
|
|
19796
|
+
}
|
|
19797
|
+
if (!queued) {
|
|
19798
|
+
if (this.queuedPlacements >= this.maxQueuedPlacements) {
|
|
19799
|
+
const message = `${decision.message}; placement queue full`;
|
|
19800
|
+
await this.reconcilePlacement(input, {
|
|
19801
|
+
action: "failed",
|
|
19802
|
+
reason: decision.reconcileReason,
|
|
19803
|
+
capability,
|
|
19804
|
+
...targetNode ? { node: targetNode } : {},
|
|
19805
|
+
...repo ? { repo } : {},
|
|
19806
|
+
attempts,
|
|
19807
|
+
message
|
|
19808
|
+
});
|
|
19809
|
+
throw new RelayPlacementError("placement_queue_full", message, {
|
|
19810
|
+
capability,
|
|
19811
|
+
node: targetNode,
|
|
19812
|
+
repo,
|
|
19813
|
+
attempts
|
|
19814
|
+
});
|
|
19815
|
+
}
|
|
19816
|
+
this.queuedPlacements += 1;
|
|
19817
|
+
queued = true;
|
|
19818
|
+
await this.reconcilePlacement(input, {
|
|
19819
|
+
action: "queued",
|
|
19820
|
+
reason: decision.reconcileReason,
|
|
19821
|
+
capability,
|
|
19822
|
+
...targetNode ? { node: targetNode } : {},
|
|
19823
|
+
...repo ? { repo } : {},
|
|
19824
|
+
attempts,
|
|
19825
|
+
message: decision.message
|
|
19826
|
+
});
|
|
19827
|
+
}
|
|
19828
|
+
await delay(Math.max(5, Math.min(pollIntervalMs, ttlMs - (Date.now() - startedAt))));
|
|
19829
|
+
}
|
|
19830
|
+
} finally {
|
|
19831
|
+
if (queued)
|
|
19832
|
+
this.queuedPlacements = Math.max(0, this.queuedPlacements - 1);
|
|
19833
|
+
}
|
|
19834
|
+
}
|
|
19835
|
+
};
|
|
19664
19836
|
triggers = {
|
|
19665
19837
|
list: async () => (await this.requireTriggers().list()).map(toRelayTrigger),
|
|
19666
19838
|
create: async (input) => toRelayTrigger(await this.requireTriggers().create(toTriggerRequest(input))),
|
|
@@ -19677,6 +19849,95 @@ var RelaycastMessagingClient = class {
|
|
|
19677
19849
|
return await this.relaycast.workspace.info();
|
|
19678
19850
|
}
|
|
19679
19851
|
};
|
|
19852
|
+
resolvePlacementNode(node, selfNodeName) {
|
|
19853
|
+
if (!node)
|
|
19854
|
+
return void 0;
|
|
19855
|
+
if (node !== "self")
|
|
19856
|
+
return nonEmptyPlacement(node, "placement node");
|
|
19857
|
+
const resolved = selfNodeName ?? this.selfNodeName;
|
|
19858
|
+
if (!resolved) {
|
|
19859
|
+
throw new Error('placement node "self" requires selfNodeName on the request or client.');
|
|
19860
|
+
}
|
|
19861
|
+
return nonEmptyPlacement(resolved, "placement self node");
|
|
19862
|
+
}
|
|
19863
|
+
async selectPlacementNode(input) {
|
|
19864
|
+
if (input.targetNode) {
|
|
19865
|
+
const node = await this.nodes.get(input.targetNode);
|
|
19866
|
+
if (!node) {
|
|
19867
|
+
return {
|
|
19868
|
+
message: `Placement queued: target node "${input.targetNode}" is not registered`,
|
|
19869
|
+
reconcileReason: "target_offline"
|
|
19870
|
+
};
|
|
19871
|
+
}
|
|
19872
|
+
if (!this.nodeHasCapability(node, input.capability)) {
|
|
19873
|
+
return {
|
|
19874
|
+
message: `Placement rejected: node "${node.name}" does not advertise capability "${input.capability}"`,
|
|
19875
|
+
hardFail: true,
|
|
19876
|
+
reason: "capability_mismatch",
|
|
19877
|
+
reconcileReason: "no_eligible_node"
|
|
19878
|
+
};
|
|
19879
|
+
}
|
|
19880
|
+
if (!node.live) {
|
|
19881
|
+
return {
|
|
19882
|
+
message: `Placement queued: target node "${node.name}" is offline`,
|
|
19883
|
+
reconcileReason: "target_offline"
|
|
19884
|
+
};
|
|
19885
|
+
}
|
|
19886
|
+
if (!this.nodeMapsRepo(node, input.repo)) {
|
|
19887
|
+
return {
|
|
19888
|
+
message: `Placement queued: node "${node.name}" does not map repo "${input.repo}"`,
|
|
19889
|
+
reconcileReason: "unmapped_repo"
|
|
19890
|
+
};
|
|
19891
|
+
}
|
|
19892
|
+
return { node };
|
|
19893
|
+
}
|
|
19894
|
+
const nodes = await this.nodes.list({ capability: input.capability });
|
|
19895
|
+
const capable = nodes.filter((node) => this.nodeHasCapability(node, input.capability));
|
|
19896
|
+
const live = capable.filter((node) => node.live);
|
|
19897
|
+
const eligible = live.filter((node) => this.nodeMapsRepo(node, input.repo));
|
|
19898
|
+
if (eligible[0])
|
|
19899
|
+
return { node: eligible[0] };
|
|
19900
|
+
if (input.repo && live.length > 0) {
|
|
19901
|
+
return {
|
|
19902
|
+
message: `Placement queued: no live node advertising "${input.capability}" maps repo "${input.repo}"`,
|
|
19903
|
+
reconcileReason: "unmapped_repo"
|
|
19904
|
+
};
|
|
19905
|
+
}
|
|
19906
|
+
return {
|
|
19907
|
+
message: `Placement queued: no live node advertises capability "${input.capability}"`,
|
|
19908
|
+
reconcileReason: "no_eligible_node"
|
|
19909
|
+
};
|
|
19910
|
+
}
|
|
19911
|
+
nodeHasCapability(node, capability) {
|
|
19912
|
+
return node.capabilities.some((item) => item.name === capability);
|
|
19913
|
+
}
|
|
19914
|
+
nodeMapsRepo(node, repo) {
|
|
19915
|
+
if (!repo)
|
|
19916
|
+
return true;
|
|
19917
|
+
return Boolean(node.repoKeys?.includes(repo));
|
|
19918
|
+
}
|
|
19919
|
+
async reconcilePlacement(input, event) {
|
|
19920
|
+
this.logPlacement(input, event.message);
|
|
19921
|
+
try {
|
|
19922
|
+
await input.onReconcile?.(event);
|
|
19923
|
+
} catch (error51) {
|
|
19924
|
+
this.placementLog?.(`[agent-relay] placement reconcile hook threw: ${error51 instanceof Error ? error51.message : String(error51)}`);
|
|
19925
|
+
}
|
|
19926
|
+
}
|
|
19927
|
+
logPlacement(input, message) {
|
|
19928
|
+
const line = `[agent-relay] ${message}`;
|
|
19929
|
+
try {
|
|
19930
|
+
input.log?.(line);
|
|
19931
|
+
} catch (error51) {
|
|
19932
|
+
this.placementLog?.(`[agent-relay] placement log hook threw: ${error51 instanceof Error ? error51.message : String(error51)}`);
|
|
19933
|
+
}
|
|
19934
|
+
if (input.log !== this.placementLog) {
|
|
19935
|
+
try {
|
|
19936
|
+
this.placementLog?.(line);
|
|
19937
|
+
} catch {
|
|
19938
|
+
}
|
|
19939
|
+
}
|
|
19940
|
+
}
|
|
19680
19941
|
requireWebhooks() {
|
|
19681
19942
|
if (!this.relaycast.webhooks) {
|
|
19682
19943
|
throw new Error("RelaycastMessagingClient.integrations.webhooks requires the relaycast webhooks API.");
|
|
@@ -22287,6 +22548,7 @@ function generateRequestId(prefix = "") {
|
|
|
22287
22548
|
MessageReadPredicate,
|
|
22288
22549
|
RelayCapabilityError,
|
|
22289
22550
|
RelayError,
|
|
22551
|
+
RelayPlacementError,
|
|
22290
22552
|
RelaycastMessagingClient,
|
|
22291
22553
|
StaticPatterns,
|
|
22292
22554
|
StatusPredicate,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-relay",
|
|
3
|
-
"version": "8.8.
|
|
3
|
+
"version": "8.8.2",
|
|
4
4
|
"description": "Real-time agent-to-agent communication system",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.cjs",
|
|
@@ -43,12 +43,12 @@
|
|
|
43
43
|
"pack:validate": "npm pack --dry-run"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@agent-relay/cloud": "8.8.
|
|
47
|
-
"@agent-relay/config": "8.8.
|
|
48
|
-
"@agent-relay/fleet": "8.8.
|
|
49
|
-
"@agent-relay/harness-driver": "8.8.
|
|
50
|
-
"@agent-relay/sdk": "8.8.
|
|
51
|
-
"@agent-relay/utils": "8.8.
|
|
46
|
+
"@agent-relay/cloud": "8.8.2",
|
|
47
|
+
"@agent-relay/config": "8.8.2",
|
|
48
|
+
"@agent-relay/fleet": "8.8.2",
|
|
49
|
+
"@agent-relay/harness-driver": "8.8.2",
|
|
50
|
+
"@agent-relay/sdk": "8.8.2",
|
|
51
|
+
"@agent-relay/utils": "8.8.2",
|
|
52
52
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
53
53
|
"@relaycast/sdk": "^4.0.0",
|
|
54
54
|
"@relayflows/cli": "^1.0.1",
|