agent-relay 1.0.21 → 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 +28 -1
- package/dist/wrapper/pty-wrapper.d.ts.map +1 -1
- package/dist/wrapper/pty-wrapper.js +166 -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-49055e5d2b5e34ec.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/{gZXwjIKGDKJ0hiTH-HMeJ → 6HHWb2ZmnJ4OSm0zUP7h4}/_buildManifest.js +0 -0
- /package/dist/dashboard/out/_next/static/{gZXwjIKGDKJ0hiTH-HMeJ → 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
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type ShadowCli = 'claude' | 'codex';
|
|
2
|
+
export type ShadowMode = 'subagent' | 'process';
|
|
3
|
+
export interface ShadowCliSelection {
|
|
4
|
+
cli: ShadowCli;
|
|
5
|
+
/** Actual command to execute when spawning a process */
|
|
6
|
+
command: string;
|
|
7
|
+
mode: ShadowMode;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Select the shadow CLI and execution mode based on the primary agent's CLI.
|
|
11
|
+
* - Claude/OpenCode primaries run shadows as subagents (Task tool)
|
|
12
|
+
* - Others fall back to spawning a process using an authenticated CLI
|
|
13
|
+
*/
|
|
14
|
+
export declare function selectShadowCli(primaryCli: string, options?: {
|
|
15
|
+
preferredShadowCli?: string;
|
|
16
|
+
}): Promise<ShadowCliSelection>;
|
|
17
|
+
//# sourceMappingURL=shadow-cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadow-cli.d.ts","sourceRoot":"","sources":["../../src/bridge/shadow-cli.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;AAC3C,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;AAEhD,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,SAAS,CAAC;IACf,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,UAAU,CAAC;CAClB;AAsCD;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;IAAE,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAAE,GACxC,OAAO,CAAC,kBAAkB,CAAC,CAkC7B"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { execFile } from 'node:child_process';
|
|
2
|
+
import { promisify } from 'node:util';
|
|
3
|
+
import { commandExists } from '../utils/command-resolver.js';
|
|
4
|
+
const execFileAsync = promisify(execFile);
|
|
5
|
+
/** Normalize CLI name to a supported identifier */
|
|
6
|
+
function normalizeCli(cli) {
|
|
7
|
+
if (!cli)
|
|
8
|
+
return null;
|
|
9
|
+
const base = cli.trim().split(' ')[0]; // Strip any args
|
|
10
|
+
const [command] = base.split(':'); // Handle variants like claude:opus
|
|
11
|
+
const lower = command.toLowerCase();
|
|
12
|
+
if (lower.startsWith('claude'))
|
|
13
|
+
return 'claude';
|
|
14
|
+
if (lower === 'codex' || lower === 'opencode')
|
|
15
|
+
return 'codex';
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
async function isCommandAuthenticated(command) {
|
|
19
|
+
if (!commandExists(command))
|
|
20
|
+
return false;
|
|
21
|
+
try {
|
|
22
|
+
await execFileAsync(command, ['--version'], { timeout: 4000 });
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
async function detectAuthenticatedCommand(cli) {
|
|
30
|
+
const candidates = cli === 'claude' ? ['claude'] : ['codex', 'opencode'];
|
|
31
|
+
for (const candidate of candidates) {
|
|
32
|
+
if (await isCommandAuthenticated(candidate)) {
|
|
33
|
+
return candidate;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Select the shadow CLI and execution mode based on the primary agent's CLI.
|
|
40
|
+
* - Claude/OpenCode primaries run shadows as subagents (Task tool)
|
|
41
|
+
* - Others fall back to spawning a process using an authenticated CLI
|
|
42
|
+
*/
|
|
43
|
+
export async function selectShadowCli(primaryCli, options) {
|
|
44
|
+
const primary = normalizeCli(primaryCli);
|
|
45
|
+
const preferred = normalizeCli(options?.preferredShadowCli);
|
|
46
|
+
// Native subagent support for Claude/OpenCode primaries
|
|
47
|
+
if (primary) {
|
|
48
|
+
return {
|
|
49
|
+
cli: primary,
|
|
50
|
+
command: primary === 'claude' ? 'claude' : 'codex',
|
|
51
|
+
mode: 'subagent',
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
// Process-mode fallback for non-supporting primaries
|
|
55
|
+
const fallbackOrder = [];
|
|
56
|
+
if (preferred)
|
|
57
|
+
fallbackOrder.push(preferred);
|
|
58
|
+
fallbackOrder.push('claude', 'codex');
|
|
59
|
+
const seen = new Set();
|
|
60
|
+
for (const candidate of fallbackOrder) {
|
|
61
|
+
if (seen.has(candidate))
|
|
62
|
+
continue;
|
|
63
|
+
seen.add(candidate);
|
|
64
|
+
const authenticatedCommand = await detectAuthenticatedCommand(candidate);
|
|
65
|
+
if (authenticatedCommand) {
|
|
66
|
+
return {
|
|
67
|
+
cli: candidate,
|
|
68
|
+
command: authenticatedCommand,
|
|
69
|
+
mode: 'process',
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
throw new Error('No shadow-capable CLI authenticated. Install Claude or OpenCode (codex) and try again.');
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=shadow-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadow-cli.js","sourceRoot":"","sources":["../../src/bridge/shadow-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shadow Agent Configuration
|
|
3
|
+
* Handles loading and parsing shadow agent configuration from .agent-relay.json.
|
|
4
|
+
*
|
|
5
|
+
* Configuration can be placed in:
|
|
6
|
+
* - Project root: ./.agent-relay.json
|
|
7
|
+
* - Agent-relay dir: ./.agent-relay/config.json
|
|
8
|
+
*
|
|
9
|
+
* Shadow configuration structure:
|
|
10
|
+
* {
|
|
11
|
+
* "shadows": {
|
|
12
|
+
* "pairs": {
|
|
13
|
+
* "Lead": { "shadow": "Auditor", "shadowRole": "reviewer" }
|
|
14
|
+
* },
|
|
15
|
+
* "roles": {
|
|
16
|
+
* "reviewer": { "prompt": "Review code...", "speakOn": ["CODE_WRITTEN"] }
|
|
17
|
+
* }
|
|
18
|
+
* }
|
|
19
|
+
* }
|
|
20
|
+
*/
|
|
21
|
+
import type { SpeakOnTrigger } from '../protocol/types.js';
|
|
22
|
+
/** Shadow role definition */
|
|
23
|
+
export interface ShadowRoleConfig {
|
|
24
|
+
/** System prompt for this shadow role */
|
|
25
|
+
prompt?: string;
|
|
26
|
+
/** Triggers for when the shadow should speak */
|
|
27
|
+
speakOn: SpeakOnTrigger[];
|
|
28
|
+
}
|
|
29
|
+
/** Shadow pair definition */
|
|
30
|
+
export interface ShadowPairConfig {
|
|
31
|
+
/** Name of the shadow agent */
|
|
32
|
+
shadow: string;
|
|
33
|
+
/** Role name (references roles config) or preset (reviewer, auditor, active) */
|
|
34
|
+
shadowRole?: string;
|
|
35
|
+
/** Override speakOn triggers (takes precedence over role) */
|
|
36
|
+
speakOn?: SpeakOnTrigger[];
|
|
37
|
+
/** CLI to use for shadow (defaults to same as primary) */
|
|
38
|
+
cli?: string;
|
|
39
|
+
}
|
|
40
|
+
/** Shadow configuration section */
|
|
41
|
+
export interface ShadowConfig {
|
|
42
|
+
/** Primary -> Shadow mappings */
|
|
43
|
+
pairs: Record<string, ShadowPairConfig>;
|
|
44
|
+
/** Role definitions */
|
|
45
|
+
roles?: Record<string, ShadowRoleConfig>;
|
|
46
|
+
}
|
|
47
|
+
/** Full agent-relay configuration file structure */
|
|
48
|
+
export interface AgentRelayConfig {
|
|
49
|
+
/** Shadow agent configuration */
|
|
50
|
+
shadows?: ShadowConfig;
|
|
51
|
+
}
|
|
52
|
+
/** Resolved shadow config for a primary agent */
|
|
53
|
+
export interface ResolvedShadowConfig {
|
|
54
|
+
/** Shadow agent name */
|
|
55
|
+
shadowName: string;
|
|
56
|
+
/** Role name (for logging/display) */
|
|
57
|
+
roleName?: string;
|
|
58
|
+
/** Resolved speakOn triggers */
|
|
59
|
+
speakOn: SpeakOnTrigger[];
|
|
60
|
+
/** System prompt for the shadow */
|
|
61
|
+
prompt?: string;
|
|
62
|
+
/** CLI to use for shadow */
|
|
63
|
+
cli?: string;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Load agent-relay configuration from project root
|
|
67
|
+
* Returns null if no config found
|
|
68
|
+
*/
|
|
69
|
+
export declare function loadAgentRelayConfig(projectRoot: string): AgentRelayConfig | null;
|
|
70
|
+
/**
|
|
71
|
+
* Get shadow configuration for a primary agent
|
|
72
|
+
* Returns null if no shadow configured for this agent
|
|
73
|
+
*/
|
|
74
|
+
export declare function getShadowForAgent(projectRoot: string, primaryAgentName: string): ResolvedShadowConfig | null;
|
|
75
|
+
/**
|
|
76
|
+
* Get all configured shadow pairs
|
|
77
|
+
*/
|
|
78
|
+
export declare function getAllShadowPairs(projectRoot: string): Map<string, ResolvedShadowConfig>;
|
|
79
|
+
/**
|
|
80
|
+
* Check if shadow config exists
|
|
81
|
+
*/
|
|
82
|
+
export declare function hasShadowConfig(projectRoot: string): boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Get the config file path that would be used
|
|
85
|
+
*/
|
|
86
|
+
export declare function getConfigPath(projectRoot: string): string | null;
|
|
87
|
+
//# sourceMappingURL=shadow-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadow-config.d.ts","sourceRoot":"","sources":["../../src/bridge/shadow-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,6BAA6B;AAC7B,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B;AAED,6BAA6B;AAC7B,MAAM,WAAW,gBAAgB;IAC/B,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,0DAA0D;IAC1D,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,mCAAmC;AACnC,MAAM,WAAW,YAAY;IAC3B,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACxC,uBAAuB;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC1C;AAED,oDAAoD;AACpD,MAAM,WAAW,gBAAgB;IAC/B,iCAAiC;IACjC,OAAO,CAAC,EAAE,YAAY,CAAC;CAExB;AAED,iDAAiD;AACjD,MAAM,WAAW,oBAAoB;IACnC,wBAAwB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAmBD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAkBjF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,GACvB,oBAAoB,GAAG,IAAI,CAwC7B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAgBxF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAG5D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQhE"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shadow Agent Configuration
|
|
3
|
+
* Handles loading and parsing shadow agent configuration from .agent-relay.json.
|
|
4
|
+
*
|
|
5
|
+
* Configuration can be placed in:
|
|
6
|
+
* - Project root: ./.agent-relay.json
|
|
7
|
+
* - Agent-relay dir: ./.agent-relay/config.json
|
|
8
|
+
*
|
|
9
|
+
* Shadow configuration structure:
|
|
10
|
+
* {
|
|
11
|
+
* "shadows": {
|
|
12
|
+
* "pairs": {
|
|
13
|
+
* "Lead": { "shadow": "Auditor", "shadowRole": "reviewer" }
|
|
14
|
+
* },
|
|
15
|
+
* "roles": {
|
|
16
|
+
* "reviewer": { "prompt": "Review code...", "speakOn": ["CODE_WRITTEN"] }
|
|
17
|
+
* }
|
|
18
|
+
* }
|
|
19
|
+
* }
|
|
20
|
+
*/
|
|
21
|
+
import fs from 'node:fs';
|
|
22
|
+
import path from 'node:path';
|
|
23
|
+
/** Role presets matching CLI behavior */
|
|
24
|
+
const ROLE_PRESETS = {
|
|
25
|
+
reviewer: ['CODE_WRITTEN', 'REVIEW_REQUEST', 'EXPLICIT_ASK'],
|
|
26
|
+
auditor: ['SESSION_END', 'EXPLICIT_ASK'],
|
|
27
|
+
active: ['ALL_MESSAGES'],
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Possible locations for .agent-relay.json (in order of precedence)
|
|
31
|
+
*/
|
|
32
|
+
function getConfigPaths(projectRoot) {
|
|
33
|
+
return [
|
|
34
|
+
path.join(projectRoot, '.agent-relay', 'config.json'),
|
|
35
|
+
path.join(projectRoot, '.agent-relay.json'),
|
|
36
|
+
];
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Load agent-relay configuration from project root
|
|
40
|
+
* Returns null if no config found
|
|
41
|
+
*/
|
|
42
|
+
export function loadAgentRelayConfig(projectRoot) {
|
|
43
|
+
const configPaths = getConfigPaths(projectRoot);
|
|
44
|
+
for (const configPath of configPaths) {
|
|
45
|
+
if (fs.existsSync(configPath)) {
|
|
46
|
+
try {
|
|
47
|
+
const content = fs.readFileSync(configPath, 'utf-8');
|
|
48
|
+
const config = JSON.parse(content);
|
|
49
|
+
console.log(`[shadow-config] Loaded config from ${configPath}`);
|
|
50
|
+
return config;
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
console.error(`[shadow-config] Failed to parse ${configPath}:`, err);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Get shadow configuration for a primary agent
|
|
61
|
+
* Returns null if no shadow configured for this agent
|
|
62
|
+
*/
|
|
63
|
+
export function getShadowForAgent(projectRoot, primaryAgentName) {
|
|
64
|
+
const config = loadAgentRelayConfig(projectRoot);
|
|
65
|
+
if (!config?.shadows?.pairs) {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
const pairConfig = config.shadows.pairs[primaryAgentName];
|
|
69
|
+
if (!pairConfig) {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
// Resolve speakOn triggers
|
|
73
|
+
let speakOn = ['EXPLICIT_ASK']; // Default
|
|
74
|
+
let prompt;
|
|
75
|
+
const roleName = pairConfig.shadowRole;
|
|
76
|
+
// First, try to resolve from role preset
|
|
77
|
+
if (roleName && ROLE_PRESETS[roleName.toLowerCase()]) {
|
|
78
|
+
speakOn = ROLE_PRESETS[roleName.toLowerCase()];
|
|
79
|
+
}
|
|
80
|
+
// Then, try custom role from config
|
|
81
|
+
if (roleName && config.shadows.roles?.[roleName]) {
|
|
82
|
+
const roleConfig = config.shadows.roles[roleName];
|
|
83
|
+
speakOn = roleConfig.speakOn;
|
|
84
|
+
prompt = roleConfig.prompt;
|
|
85
|
+
}
|
|
86
|
+
// Finally, override with explicit speakOn if provided
|
|
87
|
+
if (pairConfig.speakOn && pairConfig.speakOn.length > 0) {
|
|
88
|
+
speakOn = pairConfig.speakOn;
|
|
89
|
+
}
|
|
90
|
+
return {
|
|
91
|
+
shadowName: pairConfig.shadow,
|
|
92
|
+
roleName,
|
|
93
|
+
speakOn,
|
|
94
|
+
prompt,
|
|
95
|
+
cli: pairConfig.cli,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Get all configured shadow pairs
|
|
100
|
+
*/
|
|
101
|
+
export function getAllShadowPairs(projectRoot) {
|
|
102
|
+
const config = loadAgentRelayConfig(projectRoot);
|
|
103
|
+
const result = new Map();
|
|
104
|
+
if (!config?.shadows?.pairs) {
|
|
105
|
+
return result;
|
|
106
|
+
}
|
|
107
|
+
for (const primaryName of Object.keys(config.shadows.pairs)) {
|
|
108
|
+
const resolved = getShadowForAgent(projectRoot, primaryName);
|
|
109
|
+
if (resolved) {
|
|
110
|
+
result.set(primaryName, resolved);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return result;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Check if shadow config exists
|
|
117
|
+
*/
|
|
118
|
+
export function hasShadowConfig(projectRoot) {
|
|
119
|
+
const config = loadAgentRelayConfig(projectRoot);
|
|
120
|
+
return !!(config?.shadows?.pairs && Object.keys(config.shadows.pairs).length > 0);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Get the config file path that would be used
|
|
124
|
+
*/
|
|
125
|
+
export function getConfigPath(projectRoot) {
|
|
126
|
+
const configPaths = getConfigPaths(projectRoot);
|
|
127
|
+
for (const configPath of configPaths) {
|
|
128
|
+
if (fs.existsSync(configPath)) {
|
|
129
|
+
return configPath;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=shadow-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadow-config.js","sourceRoot":"","sources":["../../src/bridge/shadow-config.ts"],"names":[],"mappings":"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"}
|
package/dist/bridge/spawner.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Handles spawning and releasing worker agents via node-pty.
|
|
4
4
|
* Workers run headlessly with output capture for logs.
|
|
5
5
|
*/
|
|
6
|
-
import type { SpawnRequest, SpawnResult, WorkerInfo } from './types.js';
|
|
6
|
+
import type { SpawnRequest, SpawnResult, WorkerInfo, SpawnWithShadowRequest, SpawnWithShadowResult } from './types.js';
|
|
7
7
|
/** Worker metadata stored in workers.json */
|
|
8
8
|
interface WorkerMeta {
|
|
9
9
|
name: string;
|
|
@@ -33,6 +33,20 @@ export declare class AgentSpawner {
|
|
|
33
33
|
* Spawn a new worker agent using node-pty
|
|
34
34
|
*/
|
|
35
35
|
spawn(request: SpawnRequest): Promise<SpawnResult>;
|
|
36
|
+
/** Role presets for shadow agents */
|
|
37
|
+
private static readonly ROLE_PRESETS;
|
|
38
|
+
/**
|
|
39
|
+
* Spawn a primary agent with its shadow agent
|
|
40
|
+
*
|
|
41
|
+
* Example usage:
|
|
42
|
+
* ```ts
|
|
43
|
+
* const result = await spawner.spawnWithShadow({
|
|
44
|
+
* primary: { name: 'Lead', command: 'claude', task: 'Implement feature X' },
|
|
45
|
+
* shadow: { name: 'Auditor', role: 'reviewer', speakOn: ['CODE_WRITTEN'] }
|
|
46
|
+
* });
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
spawnWithShadow(request: SpawnWithShadowRequest): Promise<SpawnWithShadowResult>;
|
|
36
50
|
/**
|
|
37
51
|
* Release (terminate) a worker
|
|
38
52
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawner.d.ts","sourceRoot":"","sources":["../../src/bridge/spawner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"spawner.d.ts","sourceRoot":"","sources":["../../src/bridge/spawner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,UAAU,EACV,sBAAsB,EACtB,qBAAqB,EAEtB,MAAM,YAAY,CAAC;AAEpB,6CAA6C;AAC7C,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAOD,qBAAa,YAAY;IACvB,OAAO,CAAC,aAAa,CAAwC;IAC7D,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAC,CAAS;gBAEnB,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM;IAa9E;;;OAGG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIpC;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;IAmLxD,qCAAqC;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAIlC;IAEF;;;;;;;;;;OAUG;IACG,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAiHtF;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiC7C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAOjC;;OAEG;IACH,gBAAgB,IAAI,UAAU,EAAE;IAWhC;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIhC;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAa/C;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAM9D;;OAEG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAM/C;;OAEG;YACW,wBAAwB;IAkBtC,OAAO,CAAC,iBAAiB;IAmBzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;OAEG;IACH,UAAU,IAAI,MAAM;IAIpB;;OAEG;IACH,cAAc,IAAI,MAAM;CAGzB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,EAAE,CAcrE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAG5D"}
|
package/dist/bridge/spawner.js
CHANGED
|
@@ -9,6 +9,7 @@ import { sleep } from './utils.js';
|
|
|
9
9
|
import { getProjectPaths } from '../utils/project-namespace.js';
|
|
10
10
|
import { resolveCommand } from '../utils/command-resolver.js';
|
|
11
11
|
import { PtyWrapper } from '../wrapper/pty-wrapper.js';
|
|
12
|
+
import { selectShadowCli } from './shadow-cli.js';
|
|
12
13
|
export class AgentSpawner {
|
|
13
14
|
activeWorkers = new Map();
|
|
14
15
|
agentsPath;
|
|
@@ -84,6 +85,9 @@ export class AgentSpawner {
|
|
|
84
85
|
cwd: this.projectRoot,
|
|
85
86
|
logsDir: this.logsDir,
|
|
86
87
|
dashboardPort: this.dashboardPort,
|
|
88
|
+
// Shadow agent configuration
|
|
89
|
+
shadowOf: request.shadowOf,
|
|
90
|
+
shadowSpeakOn: request.shadowSpeakOn,
|
|
87
91
|
// Only use callbacks if dashboardPort is not set (for backwards compatibility)
|
|
88
92
|
onSpawn: this.dashboardPort ? undefined : async (workerName, workerCli, workerTask) => {
|
|
89
93
|
// Handle nested spawn requests (legacy path, may fail in non-TTY)
|
|
@@ -111,6 +115,14 @@ export class AgentSpawner {
|
|
|
111
115
|
};
|
|
112
116
|
// Create and start the pty wrapper
|
|
113
117
|
const pty = new PtyWrapper(ptyConfig);
|
|
118
|
+
// Hook up output events for live log streaming
|
|
119
|
+
pty.on('output', (data) => {
|
|
120
|
+
// Broadcast to any connected WebSocket clients via global function
|
|
121
|
+
const broadcast = global.__broadcastLogOutput;
|
|
122
|
+
if (broadcast) {
|
|
123
|
+
broadcast(name, data);
|
|
124
|
+
}
|
|
125
|
+
});
|
|
114
126
|
await pty.start();
|
|
115
127
|
if (debug)
|
|
116
128
|
console.log(`[spawner:debug] PTY started, pid: ${pty.pid}`);
|
|
@@ -126,11 +138,47 @@ export class AgentSpawner {
|
|
|
126
138
|
error,
|
|
127
139
|
};
|
|
128
140
|
}
|
|
129
|
-
//
|
|
141
|
+
// Send task via relay message if provided (not via direct PTY injection)
|
|
142
|
+
// This ensures the agent is ready to receive before processing the task
|
|
130
143
|
if (task && task.trim()) {
|
|
131
144
|
if (debug)
|
|
132
|
-
console.log(`[spawner:debug]
|
|
133
|
-
|
|
145
|
+
console.log(`[spawner:debug] Will send task via relay: ${task.substring(0, 50)}...`);
|
|
146
|
+
// If we have dashboard API, send task as relay message
|
|
147
|
+
if (this.dashboardPort) {
|
|
148
|
+
// Wait a moment for the agent's relay client to be ready
|
|
149
|
+
await sleep(1000);
|
|
150
|
+
try {
|
|
151
|
+
const response = await fetch(`http://localhost:${this.dashboardPort}/api/send`, {
|
|
152
|
+
method: 'POST',
|
|
153
|
+
headers: { 'Content-Type': 'application/json' },
|
|
154
|
+
body: JSON.stringify({
|
|
155
|
+
to: name,
|
|
156
|
+
message: task,
|
|
157
|
+
from: '__spawner__',
|
|
158
|
+
}),
|
|
159
|
+
});
|
|
160
|
+
const result = await response.json();
|
|
161
|
+
if (result.success) {
|
|
162
|
+
if (debug)
|
|
163
|
+
console.log(`[spawner:debug] Task sent via relay to ${name}`);
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
console.warn(`[spawner] Failed to send task via relay: ${result.error}`);
|
|
167
|
+
// Fall back to direct injection
|
|
168
|
+
pty.write(task + '\r');
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
catch (err) {
|
|
172
|
+
console.warn(`[spawner] Relay send failed, falling back to direct injection: ${err.message}`);
|
|
173
|
+
pty.write(task + '\r');
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
// No dashboard API available - use direct injection as fallback
|
|
178
|
+
if (debug)
|
|
179
|
+
console.log(`[spawner:debug] No dashboard API, using direct injection`);
|
|
180
|
+
pty.write(task + '\r');
|
|
181
|
+
}
|
|
134
182
|
}
|
|
135
183
|
// Track the worker
|
|
136
184
|
const workerInfo = {
|
|
@@ -146,7 +194,8 @@ export class AgentSpawner {
|
|
|
146
194
|
this.activeWorkers.set(name, workerInfo);
|
|
147
195
|
this.saveWorkersMetadata();
|
|
148
196
|
const teamInfo = team ? ` [team: ${team}]` : '';
|
|
149
|
-
|
|
197
|
+
const shadowInfo = request.shadowOf ? ` [shadow of: ${request.shadowOf}]` : '';
|
|
198
|
+
console.log(`[spawner] Spawned ${name} (${cli})${teamInfo}${shadowInfo} [pid: ${pty.pid}]`);
|
|
150
199
|
return {
|
|
151
200
|
success: true,
|
|
152
201
|
name,
|
|
@@ -164,6 +213,117 @@ export class AgentSpawner {
|
|
|
164
213
|
};
|
|
165
214
|
}
|
|
166
215
|
}
|
|
216
|
+
/** Role presets for shadow agents */
|
|
217
|
+
static ROLE_PRESETS = {
|
|
218
|
+
reviewer: ['CODE_WRITTEN', 'REVIEW_REQUEST', 'EXPLICIT_ASK'],
|
|
219
|
+
auditor: ['SESSION_END', 'EXPLICIT_ASK'],
|
|
220
|
+
active: ['ALL_MESSAGES'],
|
|
221
|
+
};
|
|
222
|
+
/**
|
|
223
|
+
* Spawn a primary agent with its shadow agent
|
|
224
|
+
*
|
|
225
|
+
* Example usage:
|
|
226
|
+
* ```ts
|
|
227
|
+
* const result = await spawner.spawnWithShadow({
|
|
228
|
+
* primary: { name: 'Lead', command: 'claude', task: 'Implement feature X' },
|
|
229
|
+
* shadow: { name: 'Auditor', role: 'reviewer', speakOn: ['CODE_WRITTEN'] }
|
|
230
|
+
* });
|
|
231
|
+
* ```
|
|
232
|
+
*/
|
|
233
|
+
async spawnWithShadow(request) {
|
|
234
|
+
const { primary, shadow } = request;
|
|
235
|
+
const debug = process.env.DEBUG_SPAWN === '1';
|
|
236
|
+
// Resolve shadow speakOn triggers
|
|
237
|
+
let speakOn = ['EXPLICIT_ASK']; // Default
|
|
238
|
+
// Check for role preset
|
|
239
|
+
if (shadow.role && AgentSpawner.ROLE_PRESETS[shadow.role.toLowerCase()]) {
|
|
240
|
+
speakOn = AgentSpawner.ROLE_PRESETS[shadow.role.toLowerCase()];
|
|
241
|
+
}
|
|
242
|
+
// Override with explicit speakOn if provided
|
|
243
|
+
if (shadow.speakOn && shadow.speakOn.length > 0) {
|
|
244
|
+
speakOn = shadow.speakOn;
|
|
245
|
+
}
|
|
246
|
+
// Build shadow task prompt
|
|
247
|
+
const defaultPrompt = `You are a shadow agent monitoring "${primary.name}". You receive copies of their messages. Your role: ${shadow.role || 'observer'}. Stay passive unless your triggers activate: ${speakOn.join(', ')}.`;
|
|
248
|
+
const shadowTask = shadow.prompt || defaultPrompt;
|
|
249
|
+
// Decide how to run the shadow (subagent for Claude/OpenCode primaries, process fallback otherwise)
|
|
250
|
+
let shadowSelection = null;
|
|
251
|
+
try {
|
|
252
|
+
shadowSelection = await selectShadowCli(primary.command || 'claude', {
|
|
253
|
+
preferredShadowCli: shadow.command,
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
catch (err) {
|
|
257
|
+
console.warn(`[spawner] Shadow CLI selection failed for ${shadow.name}: ${err.message}`);
|
|
258
|
+
}
|
|
259
|
+
if (debug) {
|
|
260
|
+
const mode = shadowSelection?.mode ?? 'unknown';
|
|
261
|
+
const cli = shadowSelection?.command ?? shadow.command ?? primary.command ?? 'claude';
|
|
262
|
+
console.log(`[spawner] spawnWithShadow: primary=${primary.name}, shadow=${shadow.name}, mode=${mode}, cli=${cli}, speakOn=${speakOn.join(',')}`);
|
|
263
|
+
}
|
|
264
|
+
// Step 1: Spawn primary agent
|
|
265
|
+
const primaryResult = await this.spawn({
|
|
266
|
+
name: primary.name,
|
|
267
|
+
cli: primary.command || 'claude',
|
|
268
|
+
task: primary.task || '',
|
|
269
|
+
team: primary.team,
|
|
270
|
+
});
|
|
271
|
+
if (!primaryResult.success) {
|
|
272
|
+
return {
|
|
273
|
+
success: false,
|
|
274
|
+
primary: primaryResult,
|
|
275
|
+
error: `Failed to spawn primary agent: ${primaryResult.error}`,
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
// Step 2: Wait for primary to register before spawning shadow
|
|
279
|
+
// The spawn() method already waits, but we add a small delay for stability
|
|
280
|
+
await sleep(1000);
|
|
281
|
+
// Subagent mode: no separate process needed
|
|
282
|
+
if (shadowSelection?.mode === 'subagent') {
|
|
283
|
+
console.log(`[spawner] Shadow ${shadow.name} will run as ${shadowSelection.cli} subagent inside ${primary.name} (no separate process)`);
|
|
284
|
+
return {
|
|
285
|
+
success: true,
|
|
286
|
+
primary: primaryResult,
|
|
287
|
+
shadow: {
|
|
288
|
+
success: true,
|
|
289
|
+
name: shadow.name,
|
|
290
|
+
},
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
// No available shadow CLI - proceed without spawning a shadow process
|
|
294
|
+
if (!shadowSelection) {
|
|
295
|
+
console.warn(`[spawner] No authenticated shadow CLI available; ${primary.name} will run without a shadow`);
|
|
296
|
+
return {
|
|
297
|
+
success: true,
|
|
298
|
+
primary: primaryResult,
|
|
299
|
+
error: 'Shadow spawn skipped: no authenticated shadow CLI available',
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
// Step 3: Spawn shadow agent with shadowOf and shadowSpeakOn
|
|
303
|
+
const shadowResult = await this.spawn({
|
|
304
|
+
name: shadow.name,
|
|
305
|
+
// Use the selected/validated CLI for process-mode shadows
|
|
306
|
+
cli: shadowSelection.command || shadow.command || primary.command || 'claude',
|
|
307
|
+
task: shadowTask,
|
|
308
|
+
shadowOf: primary.name,
|
|
309
|
+
shadowSpeakOn: speakOn,
|
|
310
|
+
});
|
|
311
|
+
if (!shadowResult.success) {
|
|
312
|
+
console.warn(`[spawner] Shadow agent ${shadow.name} failed to spawn, primary ${primary.name} continues without shadow`);
|
|
313
|
+
return {
|
|
314
|
+
success: true, // Primary succeeded, overall operation is partial success
|
|
315
|
+
primary: primaryResult,
|
|
316
|
+
shadow: shadowResult,
|
|
317
|
+
error: `Shadow spawn failed: ${shadowResult.error}`,
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
console.log(`[spawner] Spawned pair: ${primary.name} with shadow ${shadow.name} (speakOn: ${speakOn.join(',')})`);
|
|
321
|
+
return {
|
|
322
|
+
success: true,
|
|
323
|
+
primary: primaryResult,
|
|
324
|
+
shadow: shadowResult,
|
|
325
|
+
};
|
|
326
|
+
}
|
|
167
327
|
/**
|
|
168
328
|
* Release (terminate) a worker
|
|
169
329
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawner.js","sourceRoot":"","sources":["../../src/bridge/spawner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spawner.js","sourceRoot":"","sources":["../../src/bridge/spawner.ts"],"names":[],"mappings":"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"}
|