@elizaos/plugin-agent-orchestrator 2.0.0-beta.1 → 2.0.3-beta.3
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/CHANGELOG.md +6 -8
- package/README.md +102 -30
- package/dist/cjs/index.node.cjs +17539 -17068
- package/dist/cjs/index.node.js.map +71 -61
- package/dist/node/index.node.js +17545 -17070
- package/dist/node/index.node.js.map +71 -61
- package/dist/node/src/actions/common.d.ts +62 -4
- package/dist/node/src/actions/common.d.ts.map +1 -1
- package/dist/node/src/actions/elizaos-capability.d.ts +3 -0
- package/dist/node/src/actions/elizaos-capability.d.ts.map +1 -0
- package/dist/node/src/actions/sandbox-stub.d.ts +9 -5
- package/dist/node/src/actions/sandbox-stub.d.ts.map +1 -1
- package/dist/node/src/actions/tasks.d.ts +22 -2
- package/dist/node/src/actions/tasks.d.ts.map +1 -1
- package/dist/node/src/api/agent-routes.d.ts +1 -1
- package/dist/node/src/api/agent-routes.d.ts.map +1 -1
- package/dist/node/src/api/bridge-routes.d.ts +57 -19
- package/dist/node/src/api/bridge-routes.d.ts.map +1 -1
- package/dist/node/src/api/credential-prompt.d.ts +38 -0
- package/dist/node/src/api/credential-prompt.d.ts.map +1 -0
- package/dist/node/src/api/orchestrator-routes.d.ts +25 -0
- package/dist/node/src/api/orchestrator-routes.d.ts.map +1 -0
- package/dist/node/src/api/parent-context-routes.d.ts.map +1 -1
- package/dist/node/src/api/route-utils.d.ts +23 -7
- package/dist/node/src/api/route-utils.d.ts.map +1 -1
- package/dist/node/src/api/routes.d.ts +1 -2
- package/dist/node/src/api/routes.d.ts.map +1 -1
- package/dist/node/src/evaluators/sub-agent-completion.d.ts +3 -0
- package/dist/node/src/evaluators/sub-agent-completion.d.ts.map +1 -0
- package/dist/node/src/index.d.ts +33 -8
- package/dist/node/src/index.d.ts.map +1 -1
- package/dist/node/src/providers/action-examples.d.ts.map +1 -1
- package/dist/node/src/providers/active-sub-agents.d.ts.map +1 -1
- package/dist/node/src/providers/active-workspace-context.d.ts +2 -2
- package/dist/node/src/providers/active-workspace-context.d.ts.map +1 -1
- package/dist/node/src/providers/available-agents.d.ts.map +1 -1
- package/dist/node/src/providers/coding-session-changes.d.ts +17 -0
- package/dist/node/src/providers/coding-session-changes.d.ts.map +1 -0
- package/dist/node/src/register-routes.d.ts +21 -1
- package/dist/node/src/register-routes.d.ts.map +1 -1
- package/dist/node/src/services/acceptance-criteria.d.ts +84 -0
- package/dist/node/src/services/acceptance-criteria.d.ts.map +1 -0
- package/dist/node/src/services/acp-native-transport.d.ts +111 -0
- package/dist/node/src/services/acp-native-transport.d.ts.map +1 -0
- package/dist/node/src/services/acp-service.d.ts +169 -4
- package/dist/node/src/services/acp-service.d.ts.map +1 -1
- package/dist/node/src/services/active-session-forward.d.ts +31 -0
- package/dist/node/src/services/active-session-forward.d.ts.map +1 -0
- package/dist/node/src/services/agent-name-assignment.d.ts +50 -0
- package/dist/node/src/services/agent-name-assignment.d.ts.map +1 -0
- package/dist/node/src/services/ansi-utils.d.ts +1 -1
- package/dist/node/src/services/app-deploy-guidance.d.ts +52 -0
- package/dist/node/src/services/app-deploy-guidance.d.ts.map +1 -0
- package/dist/node/src/services/audit.d.ts +18 -0
- package/dist/node/src/services/audit.d.ts.map +1 -0
- package/dist/node/src/services/coding-account-selection.d.ts +79 -0
- package/dist/node/src/services/coding-account-selection.d.ts.map +1 -0
- package/dist/node/src/services/completion-envelope.d.ts +63 -0
- package/dist/node/src/services/completion-envelope.d.ts.map +1 -0
- package/dist/node/src/services/completion-evidence.d.ts +144 -0
- package/dist/node/src/services/completion-evidence.d.ts.map +1 -0
- package/dist/node/src/services/config-env.d.ts +11 -7
- package/dist/node/src/services/config-env.d.ts.map +1 -1
- package/dist/node/src/services/goal-contract.d.ts +25 -0
- package/dist/node/src/services/goal-contract.d.ts.map +1 -0
- package/dist/node/src/services/goal-llm-verifier.d.ts +157 -0
- package/dist/node/src/services/goal-llm-verifier.d.ts.map +1 -0
- package/dist/node/src/services/goal-prompt.d.ts +82 -0
- package/dist/node/src/services/goal-prompt.d.ts.map +1 -0
- package/dist/node/src/services/independent-verifier.d.ts +58 -0
- package/dist/node/src/services/independent-verifier.d.ts.map +1 -0
- package/dist/node/src/services/interruption-decider.d.ts +43 -0
- package/dist/node/src/services/interruption-decider.d.ts.map +1 -0
- package/dist/node/src/services/opencode-config.d.ts +21 -0
- package/dist/node/src/services/opencode-config.d.ts.map +1 -0
- package/dist/node/src/services/orchestrator-device-support-matrix.d.ts +46 -0
- package/dist/node/src/services/orchestrator-device-support-matrix.d.ts.map +1 -0
- package/dist/node/src/services/orchestrator-task-mapper.d.ts +192 -0
- package/dist/node/src/services/orchestrator-task-mapper.d.ts.map +1 -0
- package/dist/node/src/services/orchestrator-task-service.d.ts +370 -0
- package/dist/node/src/services/orchestrator-task-service.d.ts.map +1 -0
- package/dist/node/src/services/orchestrator-task-store.d.ts +156 -0
- package/dist/node/src/services/orchestrator-task-store.d.ts.map +1 -0
- package/dist/node/src/services/orchestrator-task-types.d.ts +334 -0
- package/dist/node/src/services/orchestrator-task-types.d.ts.map +1 -0
- package/dist/node/src/services/parent-agent-broker.d.ts +5 -3
- package/dist/node/src/services/parent-agent-broker.d.ts.map +1 -1
- package/dist/node/src/services/parent-agent-dispatch.d.ts +62 -0
- package/dist/node/src/services/parent-agent-dispatch.d.ts.map +1 -0
- package/dist/node/src/services/screenshot-delivery.d.ts +38 -0
- package/dist/node/src/services/screenshot-delivery.d.ts.map +1 -0
- package/dist/node/src/services/session-event-queue.d.ts +1 -8
- package/dist/node/src/services/session-event-queue.d.ts.map +1 -1
- package/dist/node/src/services/session-store.d.ts +2 -1
- package/dist/node/src/services/session-store.d.ts.map +1 -1
- package/dist/node/src/services/skill-lifeops-context-broker.d.ts +1 -1
- package/dist/node/src/services/skill-lifeops-context-broker.d.ts.map +1 -1
- package/dist/node/src/services/skill-manifest.d.ts +1 -1
- package/dist/node/src/services/skill-recommender.d.ts +2 -0
- package/dist/node/src/services/skill-recommender.d.ts.map +1 -1
- package/dist/node/src/services/smithers-task-executor.d.ts +73 -0
- package/dist/node/src/services/smithers-task-executor.d.ts.map +1 -0
- package/dist/node/src/services/smithers-task-integration.d.ts +52 -0
- package/dist/node/src/services/smithers-task-integration.d.ts.map +1 -0
- package/dist/node/src/services/smithers-task-runner.d.ts +27 -0
- package/dist/node/src/services/smithers-task-runner.d.ts.map +1 -0
- package/dist/node/src/services/smithers-task-types.d.ts +96 -0
- package/dist/node/src/services/smithers-task-types.d.ts.map +1 -0
- package/dist/node/src/services/spawn-trajectory.d.ts +2 -2
- package/dist/node/src/services/spawn-trajectory.d.ts.map +1 -1
- package/dist/node/src/services/spend-allowance.d.ts +143 -0
- package/dist/node/src/services/spend-allowance.d.ts.map +1 -0
- package/dist/node/src/services/ssrf-guard.d.ts +66 -0
- package/dist/node/src/services/ssrf-guard.d.ts.map +1 -0
- package/dist/node/src/services/sub-agent-identity.d.ts +27 -0
- package/dist/node/src/services/sub-agent-identity.d.ts.map +1 -0
- package/dist/node/src/services/sub-agent-inbox.d.ts +26 -0
- package/dist/node/src/services/sub-agent-inbox.d.ts.map +1 -0
- package/dist/node/src/services/sub-agent-router.d.ts +142 -2
- package/dist/node/src/services/sub-agent-router.d.ts.map +1 -1
- package/dist/node/src/services/task-agent-frameworks.d.ts +21 -8
- package/dist/node/src/services/task-agent-frameworks.d.ts.map +1 -1
- package/dist/node/src/services/task-agent-routing.d.ts +33 -0
- package/dist/node/src/services/task-agent-routing.d.ts.map +1 -0
- package/dist/node/src/services/task-supervisor-service.d.ts +65 -0
- package/dist/node/src/services/task-supervisor-service.d.ts.map +1 -0
- package/dist/node/src/services/task-watchdog-service.d.ts +50 -0
- package/dist/node/src/services/task-watchdog-service.d.ts.map +1 -0
- package/dist/node/src/services/terminal-capabilities.d.ts +48 -0
- package/dist/node/src/services/terminal-capabilities.d.ts.map +1 -0
- package/dist/node/src/services/trajectory-context.d.ts +4 -8
- package/dist/node/src/services/trajectory-context.d.ts.map +1 -1
- package/dist/node/src/services/trajectory-feedback.d.ts +1 -1
- package/dist/node/src/services/types.d.ts +38 -2
- package/dist/node/src/services/types.d.ts.map +1 -1
- package/dist/node/src/services/view-deploy-guidance.d.ts +14 -0
- package/dist/node/src/services/view-deploy-guidance.d.ts.map +1 -0
- package/dist/node/src/services/workdir-validation.d.ts +10 -0
- package/dist/node/src/services/workdir-validation.d.ts.map +1 -0
- package/dist/node/src/services/workspace-diff.d.ts +50 -0
- package/dist/node/src/services/workspace-diff.d.ts.map +1 -0
- package/dist/node/src/services/workspace-git-ops.d.ts +2 -2
- package/dist/node/src/services/workspace-git-ops.d.ts.map +1 -1
- package/dist/node/src/services/workspace-github.d.ts +7 -7
- package/dist/node/src/services/workspace-github.d.ts.map +1 -1
- package/dist/node/src/services/workspace-lifecycle.d.ts +2 -15
- package/dist/node/src/services/workspace-lifecycle.d.ts.map +1 -1
- package/dist/node/src/services/workspace-service.d.ts +6 -2
- package/dist/node/src/services/workspace-service.d.ts.map +1 -1
- package/dist/node/src/setup-routes.d.ts.map +1 -1
- package/docs/SUBAGENT_FLOW_AND_PARITY.md +138 -0
- package/docs/default-eliza-skills-and-agent-bridge-plan.md +9 -15
- package/docs/economics-goal-runbook.md +140 -0
- package/docs/multi-account-orchestration.md +76 -0
- package/docs/orchestrator-buildout-followups.md +124 -0
- package/docs/orchestrator-dashboard-task-widget-secrets-assessment.md +174 -0
- package/docs/orchestrator-dashboard-task-widget-secrets-design.md +301 -0
- package/docs/research/orchestrator-view-research-report.md +273 -0
- package/docs/sub-agent-routing.md +53 -23
- package/package.json +111 -25
- package/PROJECT.md +0 -119
- package/dist/browser/index.browser.js +0 -21051
- package/dist/browser/index.browser.js.map +0 -29
- package/dist/browser/index.d.ts +0 -2
- package/dist/node/index.browser.d.ts +0 -3
- package/dist/node/index.browser.d.ts.map +0 -1
- package/dist/node/src/actions/cancel-task.d.ts +0 -3
- package/dist/node/src/actions/cancel-task.d.ts.map +0 -1
- package/dist/node/src/actions/coding-task-handlers.d.ts +0 -69
- package/dist/node/src/actions/coding-task-handlers.d.ts.map +0 -1
- package/dist/node/src/actions/coding-task-helpers.d.ts +0 -35
- package/dist/node/src/actions/coding-task-helpers.d.ts.map +0 -1
- package/dist/node/src/actions/create-task.d.ts +0 -8
- package/dist/node/src/actions/create-task.d.ts.map +0 -1
- package/dist/node/src/actions/eval-metadata.d.ts +0 -11
- package/dist/node/src/actions/eval-metadata.d.ts.map +0 -1
- package/dist/node/src/actions/finalize-workspace.d.ts +0 -11
- package/dist/node/src/actions/finalize-workspace.d.ts.map +0 -1
- package/dist/node/src/actions/list-agents.d.ts +0 -4
- package/dist/node/src/actions/list-agents.d.ts.map +0 -1
- package/dist/node/src/actions/manage-issues.d.ts +0 -11
- package/dist/node/src/actions/manage-issues.d.ts.map +0 -1
- package/dist/node/src/actions/provision-workspace.d.ts +0 -11
- package/dist/node/src/actions/provision-workspace.d.ts.map +0 -1
- package/dist/node/src/actions/send-to-agent.d.ts +0 -4
- package/dist/node/src/actions/send-to-agent.d.ts.map +0 -1
- package/dist/node/src/actions/spawn-agent.d.ts +0 -8
- package/dist/node/src/actions/spawn-agent.d.ts.map +0 -1
- package/dist/node/src/actions/stop-agent.d.ts +0 -4
- package/dist/node/src/actions/stop-agent.d.ts.map +0 -1
- package/dist/node/src/actions/task-control.d.ts +0 -3
- package/dist/node/src/actions/task-control.d.ts.map +0 -1
- package/dist/node/src/actions/task-history.d.ts +0 -3
- package/dist/node/src/actions/task-history.d.ts.map +0 -1
- package/dist/node/src/actions/task-share.d.ts +0 -3
- package/dist/node/src/actions/task-share.d.ts.map +0 -1
- package/dist/node/src/actions/task-thread-target.d.ts +0 -11
- package/dist/node/src/actions/task-thread-target.d.ts.map +0 -1
- package/dist/node/src/api/coordinator-routes.d.ts +0 -22
- package/dist/node/src/api/coordinator-routes.d.ts.map +0 -1
- package/dist/node/src/api/hook-routes.d.ts +0 -18
- package/dist/node/src/api/hook-routes.d.ts.map +0 -1
- package/dist/node/src/routes/coding-agents-fallback-routes.d.ts +0 -19
- package/dist/node/src/routes/coding-agents-fallback-routes.d.ts.map +0 -1
- package/dist/node/src/services/acpx-subprocess.d.ts +0 -3
- package/dist/node/src/services/acpx-subprocess.d.ts.map +0 -1
- package/dist/node/src/services/agent-credentials.d.ts +0 -23
- package/dist/node/src/services/agent-credentials.d.ts.map +0 -1
- package/dist/node/src/services/agent-metrics.d.ts +0 -30
- package/dist/node/src/services/agent-metrics.d.ts.map +0 -1
- package/dist/node/src/services/agent-selection.d.ts +0 -53
- package/dist/node/src/services/agent-selection.d.ts.map +0 -1
- package/dist/node/src/services/claude-code-skill-installer.d.ts +0 -33
- package/dist/node/src/services/claude-code-skill-installer.d.ts.map +0 -1
- package/dist/node/src/services/coordinator-event-normalizer.d.ts +0 -50
- package/dist/node/src/services/coordinator-event-normalizer.d.ts.map +0 -1
- package/dist/node/src/services/custom-validator-runner.d.ts +0 -66
- package/dist/node/src/services/custom-validator-runner.d.ts.map +0 -1
- package/dist/node/src/services/debug-capture.d.ts +0 -38
- package/dist/node/src/services/debug-capture.d.ts.map +0 -1
- package/dist/node/src/services/pty-auto-response.d.ts +0 -30
- package/dist/node/src/services/pty-auto-response.d.ts.map +0 -1
- package/dist/node/src/services/pty-init.d.ts +0 -55
- package/dist/node/src/services/pty-init.d.ts.map +0 -1
- package/dist/node/src/services/pty-service.d.ts +0 -218
- package/dist/node/src/services/pty-service.d.ts.map +0 -1
- package/dist/node/src/services/pty-session-io.d.ts +0 -49
- package/dist/node/src/services/pty-session-io.d.ts.map +0 -1
- package/dist/node/src/services/pty-spawn.d.ts +0 -104
- package/dist/node/src/services/pty-spawn.d.ts.map +0 -1
- package/dist/node/src/services/pty-types.d.ts +0 -94
- package/dist/node/src/services/pty-types.d.ts.map +0 -1
- package/dist/node/src/services/skill-callback-bridge.d.ts +0 -78
- package/dist/node/src/services/skill-callback-bridge.d.ts.map +0 -1
- package/dist/node/src/services/skill-essentials.d.ts +0 -16
- package/dist/node/src/services/skill-essentials.d.ts.map +0 -1
- package/dist/node/src/services/stall-classifier.d.ts +0 -69
- package/dist/node/src/services/stall-classifier.d.ts.map +0 -1
- package/dist/node/src/services/structured-proof-bridge.d.ts +0 -99
- package/dist/node/src/services/structured-proof-bridge.d.ts.map +0 -1
- package/dist/node/src/services/swarm-coordinator-prompts.d.ts +0 -93
- package/dist/node/src/services/swarm-coordinator-prompts.d.ts.map +0 -1
- package/dist/node/src/services/swarm-coordinator.d.ts +0 -473
- package/dist/node/src/services/swarm-coordinator.d.ts.map +0 -1
- package/dist/node/src/services/swarm-decision-loop.d.ts +0 -69
- package/dist/node/src/services/swarm-decision-loop.d.ts.map +0 -1
- package/dist/node/src/services/swarm-event-triage.d.ts +0 -49
- package/dist/node/src/services/swarm-event-triage.d.ts.map +0 -1
- package/dist/node/src/services/swarm-history.d.ts +0 -27
- package/dist/node/src/services/swarm-history.d.ts.map +0 -1
- package/dist/node/src/services/swarm-idle-watchdog.d.ts +0 -22
- package/dist/node/src/services/swarm-idle-watchdog.d.ts.map +0 -1
- package/dist/node/src/services/task-acceptance.d.ts +0 -8
- package/dist/node/src/services/task-acceptance.d.ts.map +0 -1
- package/dist/node/src/services/task-agent-auth.d.ts +0 -69
- package/dist/node/src/services/task-agent-auth.d.ts.map +0 -1
- package/dist/node/src/services/task-kind.d.ts +0 -3
- package/dist/node/src/services/task-kind.d.ts.map +0 -1
- package/dist/node/src/services/task-registry.d.ts +0 -550
- package/dist/node/src/services/task-registry.d.ts.map +0 -1
- package/dist/node/src/services/task-share.d.ts +0 -18
- package/dist/node/src/services/task-share.d.ts.map +0 -1
- package/dist/node/src/services/task-validation.d.ts +0 -69
- package/dist/node/src/services/task-validation.d.ts.map +0 -1
- package/dist/node/src/services/task-verifier-runner.d.ts +0 -5
- package/dist/node/src/services/task-verifier-runner.d.ts.map +0 -1
- package/dist/node/vitest.config.d.ts +0 -3
- package/dist/node/vitest.config.d.ts.map +0 -1
|
@@ -1,4 +1,22 @@
|
|
|
1
1
|
import type { IAgentRuntime } from "@elizaos/core";
|
|
2
|
+
import { Service } from "@elizaos/core";
|
|
3
|
+
interface DeadUrl {
|
|
4
|
+
url: string;
|
|
5
|
+
status: string;
|
|
6
|
+
/** Set when this URL was discovered as a sub-resource of another page. */
|
|
7
|
+
via?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface RouteUrlMapping {
|
|
10
|
+
urlPrefix: string;
|
|
11
|
+
localPath: string;
|
|
12
|
+
requireFresh?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface RouteUrlVerification {
|
|
15
|
+
workdir: string;
|
|
16
|
+
sessionStartedAtMs: number;
|
|
17
|
+
mappings: RouteUrlMapping[];
|
|
18
|
+
}
|
|
19
|
+
export declare function redactLoopbackUrls(text: string): string;
|
|
2
20
|
/**
|
|
3
21
|
* SubAgentRouter takes terminal-significant ACPX session events
|
|
4
22
|
* (`task_complete`, `error`, `blocked`) and posts them as synthetic inbound
|
|
@@ -16,23 +34,145 @@ import type { IAgentRuntime } from "@elizaos/core";
|
|
|
16
34
|
* The provider is the channel for live status; this router is the channel for
|
|
17
35
|
* boundary events that warrant a decision.
|
|
18
36
|
*/
|
|
19
|
-
export declare class SubAgentRouter {
|
|
37
|
+
export declare class SubAgentRouter extends Service {
|
|
20
38
|
static serviceType: string;
|
|
21
39
|
static dependencies: string[];
|
|
22
40
|
capabilityDescription: string;
|
|
23
|
-
|
|
41
|
+
protected runtime: IAgentRuntime;
|
|
24
42
|
private acp;
|
|
25
43
|
private unsubscribe;
|
|
26
44
|
private readonly delivered;
|
|
27
45
|
private readonly roundTripCounts;
|
|
46
|
+
private readonly parentAgentBuffers;
|
|
47
|
+
private readonly parentAgentDispatchCounts;
|
|
28
48
|
private readonly capExceededSessions;
|
|
49
|
+
private readonly verifyRetryHandedOffSessions;
|
|
50
|
+
private readonly stateLostRespawnCounts;
|
|
51
|
+
private readonly stateLostCapNotified;
|
|
52
|
+
private readonly completionFirstPostedSession;
|
|
53
|
+
private tryClaimCompletion;
|
|
54
|
+
private readonly spawnCountsForOrigin;
|
|
55
|
+
private readonly bestResultForOrigin;
|
|
56
|
+
/** Spawns already issued for this root origin (for the per-origin cap). */
|
|
57
|
+
spawnCountForOrigin(originKey: string): number;
|
|
58
|
+
/** Record a spawn against a root origin (FIFO-bounded). */
|
|
59
|
+
noteSpawnForOrigin(originKey: string): void;
|
|
60
|
+
/** Best already-completed result for an origin, relayed instead of re-spawning. */
|
|
61
|
+
bestResultFor(originKey: string): {
|
|
62
|
+
text: string;
|
|
63
|
+
deliverable?: string;
|
|
64
|
+
} | undefined;
|
|
65
|
+
/** Keep the LONGEST non-empty result for an origin (full 479001600 wins over truncated 479). */
|
|
66
|
+
recordOriginResult(originKey: string, result: {
|
|
67
|
+
text: string;
|
|
68
|
+
deliverable?: string;
|
|
69
|
+
}): void;
|
|
29
70
|
private started;
|
|
30
71
|
private roundTripCap;
|
|
72
|
+
private stateLostRespawnCap;
|
|
73
|
+
private bindRetryTimer;
|
|
74
|
+
private stopped;
|
|
31
75
|
constructor(runtime: IAgentRuntime);
|
|
32
76
|
static start(runtime: IAgentRuntime): Promise<SubAgentRouter>;
|
|
33
77
|
start(): Promise<void>;
|
|
78
|
+
private tryBindSources;
|
|
34
79
|
stop(): Promise<void>;
|
|
35
80
|
private handleEvent;
|
|
81
|
+
private buildReplyCallback;
|
|
82
|
+
/**
|
|
83
|
+
* Recover a session that reported `session_state_lost` by deterministically
|
|
84
|
+
* spawning a fresh sub-agent inside the router — carrying the byte-identical
|
|
85
|
+
* origin metadata and the original task — instead of re-injecting the error
|
|
86
|
+
* and relying on the parent planner to spawn the replacement (which leaked a
|
|
87
|
+
* "the sub-agent crashed, let me try again" message to the user). Returns
|
|
88
|
+
* true when a replacement was spawned (the caller suppresses the dead
|
|
89
|
+
* session's events and posts nothing — the child's own task_complete is the
|
|
90
|
+
* only user-facing message). Returns false when the original task is
|
|
91
|
+
* unavailable or no spawn service is registered, in which case the caller
|
|
92
|
+
* falls through to an honest failure post.
|
|
93
|
+
*
|
|
94
|
+
* Lineage capping lives in handleEvent (stateLostRespawnCounts +
|
|
95
|
+
* stateLostRespawnCap), parallel to the verify-retry budget, so a flapping
|
|
96
|
+
* session can't respawn unbounded.
|
|
97
|
+
*/
|
|
98
|
+
private respawnStateLost;
|
|
99
|
+
/**
|
|
100
|
+
* Re-dispatch a sub-agent when its claimed URLs verify as unreachable —
|
|
101
|
+
* an incomplete build (missing or empty files). Returns true if a retry
|
|
102
|
+
* was spawned (the caller suppresses the parent post and lets the
|
|
103
|
+
* retry's own task_complete report the outcome). Returns false when
|
|
104
|
+
* retries are disabled, the budget is exhausted, the original task is
|
|
105
|
+
* unavailable, or no spawn service is registered — in which case the
|
|
106
|
+
* caller posts the honest "build incomplete" report instead.
|
|
107
|
+
*
|
|
108
|
+
* Bounded by ELIZA_BUILD_VERIFY_MAX_RETRIES (default 2; 0 disables).
|
|
109
|
+
* The retry count rides on the spawned session's metadata so a whole
|
|
110
|
+
* lineage of retries shares one budget. Mirrors the APP-create
|
|
111
|
+
* verification-retry pattern.
|
|
112
|
+
*/
|
|
113
|
+
private retryIncompleteBuild;
|
|
114
|
+
private hasNewerContinuation;
|
|
115
|
+
/**
|
|
116
|
+
* Accumulate streamed child text and, when a complete
|
|
117
|
+
* `USE_SKILL parent-agent <json>` directive appears, bridge it to the broker
|
|
118
|
+
* and stream the reply back into the session. Synchronous up to the point a
|
|
119
|
+
* complete directive is found (the buffer is trimmed before any await), so
|
|
120
|
+
* out-of-order `message` chunks cannot re-dispatch or corrupt the buffer.
|
|
121
|
+
*/
|
|
122
|
+
private maybeDispatchParentAgent;
|
|
36
123
|
private log;
|
|
37
124
|
}
|
|
125
|
+
export declare function extractShortToolDeliverable(data: unknown): string | undefined;
|
|
126
|
+
/**
|
|
127
|
+
* GET-check every http(s) URL a sub-agent claimed in its completion text —
|
|
128
|
+
* and, for any that return HTML, follow the page's own declared
|
|
129
|
+
* sub-resources (`<link href>` / `<script src>`) and check those too.
|
|
130
|
+
* The sub-agent's claim ("the app is live at X") is treated as a
|
|
131
|
+
* hypothesis, not a fact — the parent agent should see ground truth.
|
|
132
|
+
*
|
|
133
|
+
* Why follow sub-resources: a weak coding model routinely writes the
|
|
134
|
+
* entry `index.html` but drops the `style.css` / `app.js` it references.
|
|
135
|
+
* The index URL then returns 200 while the app is visibly broken — only
|
|
136
|
+
* probing the mentioned URL would pass it as "live". Following the page's
|
|
137
|
+
* declared dependencies catches the partial build.
|
|
138
|
+
*
|
|
139
|
+
* Conservative by design:
|
|
140
|
+
* - only runs on `task_complete` text (not errors/blocked)
|
|
141
|
+
* - caps at the first 5 distinct mentioned URLs + their sub-resources
|
|
142
|
+
* - 4s per-request timeout, failures (DNS, timeout, refused) count as
|
|
143
|
+
* unverified rather than throwing
|
|
144
|
+
* - one short settle-retry before declaring a URL dead, covering a
|
|
145
|
+
* transient network blip on the checker side
|
|
146
|
+
* - never strips the original text — it only appends an annotation, so a
|
|
147
|
+
* transient network blip on the checker side degrades to "couldn't
|
|
148
|
+
* verify" rather than hiding a real success
|
|
149
|
+
*
|
|
150
|
+
* Callers should pass text that has already been through
|
|
151
|
+
* {@link normalizeUrlsInText} so Unicode-dash-corrupted URLs are probed in
|
|
152
|
+
* their intended form.
|
|
153
|
+
*/
|
|
154
|
+
export declare function annotateUnverifiedUrls(text: string, log?: (message: string) => void, referenceText?: string, ignoredUrls?: ReadonlySet<string>, runtime?: IAgentRuntime, routeVerification?: RouteUrlVerification): Promise<{
|
|
155
|
+
text: string;
|
|
156
|
+
dead: DeadUrl[];
|
|
157
|
+
verifiedUrls: string[];
|
|
158
|
+
}>;
|
|
159
|
+
/**
|
|
160
|
+
* Extract the sub-resource URLs an HTML document declares via common
|
|
161
|
+
* resource-bearing attributes, resolved absolute against the page URL.
|
|
162
|
+
* Mechanical extraction from a structured document — not intent
|
|
163
|
+
* classification. Skips in-page anchors and data:/mailto: refs, and caps
|
|
164
|
+
* the result so a pathological page can't fan out unbounded probes.
|
|
165
|
+
*/
|
|
166
|
+
export declare function extractSubResources(html: string, pageUrl: string): string[];
|
|
167
|
+
/**
|
|
168
|
+
* Normalize http(s) URLs embedded in free text: replace Unicode look-alike
|
|
169
|
+
* dashes (non-breaking hyphen, en/em dash, …) with an ASCII hyphen. Weak
|
|
170
|
+
* coding models emit these inside URLs, which makes the link 404 even
|
|
171
|
+
* though the target exists under the ASCII-hyphen name — broken for both
|
|
172
|
+
* the verification probe and the user clicking it. Only dash characters
|
|
173
|
+
* inside a URL are touched; surrounding prose (where an em dash is
|
|
174
|
+
* legitimate punctuation) is left untouched.
|
|
175
|
+
*/
|
|
176
|
+
export declare function normalizeUrlsInText(text: string): string;
|
|
177
|
+
export {};
|
|
38
178
|
//# sourceMappingURL=sub-agent-router.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sub-agent-router.d.ts","sourceRoot":"","sources":["../../../../src/services/sub-agent-router.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sub-agent-router.d.ts","sourceRoot":"","sources":["../../../../src/services/sub-agent-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,10 +8,24 @@
|
|
|
8
8
|
* @module services/task-agent-frameworks
|
|
9
9
|
*/
|
|
10
10
|
import { type IAgentRuntime } from "@elizaos/core";
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
type AgentMetricsSummary = {
|
|
12
|
+
spawned: number;
|
|
13
|
+
completed: number;
|
|
14
|
+
stallCount: number;
|
|
15
|
+
avgCompletionMs: number;
|
|
16
|
+
};
|
|
17
|
+
type TaskAgentPreflightResult = {
|
|
18
|
+
adapter?: string;
|
|
19
|
+
agentType?: string;
|
|
20
|
+
installed?: boolean;
|
|
21
|
+
installCommand?: string;
|
|
22
|
+
docsUrl?: string;
|
|
23
|
+
auth?: {
|
|
24
|
+
status?: unknown;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
export type SupportedTaskAgentAdapter = "elizaos" | "pi-agent" | "claude" | "codex" | "opencode";
|
|
28
|
+
export type TaskAgentFrameworkId = SupportedTaskAgentAdapter;
|
|
15
29
|
export interface TaskAgentModelPrefs {
|
|
16
30
|
powerful?: string;
|
|
17
31
|
fast?: string;
|
|
@@ -42,8 +56,8 @@ export interface TaskAgentFrameworkState {
|
|
|
42
56
|
preferred: PreferredTaskAgent;
|
|
43
57
|
}
|
|
44
58
|
export interface TaskAgentFrameworkProbe {
|
|
45
|
-
checkAvailableAgents?: (types?:
|
|
46
|
-
getAgentMetrics?: () => Record<string,
|
|
59
|
+
checkAvailableAgents?: (types?: string[]) => Promise<TaskAgentPreflightResult[]>;
|
|
60
|
+
getAgentMetrics?: () => Record<string, AgentMetricsSummary>;
|
|
47
61
|
}
|
|
48
62
|
export type TaskAgentTaskKind = "coding" | "research" | "planning" | "ops" | "mixed";
|
|
49
63
|
export interface TaskAgentTaskProfileInput {
|
|
@@ -71,7 +85,7 @@ export interface TaskAgentTaskProfile {
|
|
|
71
85
|
};
|
|
72
86
|
}
|
|
73
87
|
declare const FRAMEWORK_LABELS: Record<TaskAgentFrameworkId, string>;
|
|
74
|
-
export declare const TASK_AGENT_DEFAULT_MODEL_PREFS: Record<SupportedTaskAgentAdapter
|
|
88
|
+
export declare const TASK_AGENT_DEFAULT_MODEL_PREFS: Record<SupportedTaskAgentAdapter, TaskAgentModelPrefs>;
|
|
75
89
|
export declare function readTaskAgentModelPrefs(value: unknown): TaskAgentModelPrefs | undefined;
|
|
76
90
|
export declare function mergeTaskAgentModelPrefs(...prefs: Array<TaskAgentModelPrefs | undefined>): TaskAgentModelPrefs | undefined;
|
|
77
91
|
export declare function getTaskAgentModelPrefs(runtime: IAgentRuntime | undefined, agentType: string | undefined, spawnPrefs?: TaskAgentModelPrefs): TaskAgentModelPrefs | undefined;
|
|
@@ -82,7 +96,6 @@ export declare function isUsageExhaustedTaskAgentError(text: string): boolean;
|
|
|
82
96
|
export declare function markTaskAgentFrameworkUnavailable(id: SupportedTaskAgentAdapter, reason: string, cooldownMs?: number): void;
|
|
83
97
|
export declare function markTaskAgentFrameworkHealthy(id: SupportedTaskAgentAdapter): void;
|
|
84
98
|
export declare function formatTaskAgentFrameworkLine(framework: TaskAgentFrameworkAvailability): string;
|
|
85
|
-
export declare function looksLikeTaskAgentRequest(text: string): boolean;
|
|
86
99
|
export declare function formatTaskAgentStatus(status: string): string;
|
|
87
100
|
export declare function truncateTaskAgentText(text: string, max?: number): string;
|
|
88
101
|
export declare function rewriteTaskAgentText(text: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-agent-frameworks.d.ts","sourceRoot":"","sources":["../../../../src/services/task-agent-frameworks.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EAEL,KAAK,aAAa,EAGnB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"task-agent-frameworks.d.ts","sourceRoot":"","sources":["../../../../src/services/task-agent-frameworks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { IAgentRuntime } from "@elizaos/core";
|
|
2
|
+
export declare function normalizeTaskAgentAdapter(value: string | undefined): string | undefined;
|
|
3
|
+
export interface WorkdirRoute {
|
|
4
|
+
id: string;
|
|
5
|
+
workdir: string;
|
|
6
|
+
matchAll?: string[];
|
|
7
|
+
matchAny?: string[];
|
|
8
|
+
excludeAny?: string[];
|
|
9
|
+
instructions?: string;
|
|
10
|
+
urlMappings?: WorkdirRouteUrlMapping[];
|
|
11
|
+
}
|
|
12
|
+
export interface WorkdirRouteUrlMapping {
|
|
13
|
+
urlPrefix: string;
|
|
14
|
+
localPath: string;
|
|
15
|
+
requireFresh?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface ResolvedWorkdirRoute {
|
|
18
|
+
id: string;
|
|
19
|
+
workdir: string;
|
|
20
|
+
instructions?: string;
|
|
21
|
+
urlMappings?: WorkdirRouteUrlMapping[];
|
|
22
|
+
}
|
|
23
|
+
export declare function resolvePinnedAdapter(runtime: IAgentRuntime | undefined): string | undefined;
|
|
24
|
+
export declare function resolveSpawnWorkdir(runtime: IAgentRuntime | undefined, task: string, userRequest: string, explicitWorkdir: string | undefined, opts?: {
|
|
25
|
+
lockWorkdir?: boolean;
|
|
26
|
+
}): {
|
|
27
|
+
workdir: string;
|
|
28
|
+
route?: ResolvedWorkdirRoute;
|
|
29
|
+
isolate?: boolean;
|
|
30
|
+
};
|
|
31
|
+
export declare function resolveWorkdirByConvention(runtime: IAgentRuntime | undefined, task: string, userRequest: string): string | undefined;
|
|
32
|
+
export declare function resolveWorkdirRoute(runtime: IAgentRuntime | undefined, task: string, userRequest: string): ResolvedWorkdirRoute | undefined;
|
|
33
|
+
//# sourceMappingURL=task-agent-routing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-agent-routing.d.ts","sourceRoot":"","sources":["../../../../src/services/task-agent-routing.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAYnD,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,MAAM,GAAG,SAAS,CA4BpB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,sBAAsB,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,sBAAsB,EAAE,CAAC;CACxC;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,aAAa,GAAG,SAAS,GACjC,MAAM,GAAG,SAAS,CAqBpB;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,aAAa,GAAG,SAAS,EAClC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACnC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,oBAAoB,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAiCtE;AAkCD,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,aAAa,GAAG,SAAS,EAClC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,SAAS,CAyDpB;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,aAAa,GAAG,SAAS,EAClC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAClB,oBAAoB,GAAG,SAAS,CAgClC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TaskSupervisorService — the multi-task "juggler" (#8900, EPIC #8885).
|
|
3
|
+
*
|
|
4
|
+
* The orchestrator stores N tasks but nothing proactively tells the user how
|
|
5
|
+
* they're all doing — on Telegram (no side tabs) the user has to keep asking.
|
|
6
|
+
* This service ticks on an interval, scans the in-flight tasks per originating
|
|
7
|
+
* room, and posts a compact status digest back to that room — but only when the
|
|
8
|
+
* digest CHANGED since the last post, so a steady state never spams the chat.
|
|
9
|
+
*
|
|
10
|
+
* The tick logic is a pure function (`runSupervisorTick`) over injected views so
|
|
11
|
+
* it unit-tests without timers, services, or a runtime.
|
|
12
|
+
*/
|
|
13
|
+
import type { Content, IAgentRuntime, UUID } from "@elizaos/core";
|
|
14
|
+
import { Service } from "@elizaos/core";
|
|
15
|
+
import type { OrchestratorTaskStatus } from "./orchestrator-task-types.js";
|
|
16
|
+
export declare const TASK_SUPERVISOR_SERVICE_TYPE = "ORCHESTRATOR_TASK_SUPERVISOR";
|
|
17
|
+
export declare function statusEmoji(status: OrchestratorTaskStatus): string;
|
|
18
|
+
/** A task reduced to just what a digest line needs. */
|
|
19
|
+
export interface SupervisorTaskView {
|
|
20
|
+
id: string;
|
|
21
|
+
label: string;
|
|
22
|
+
status: OrchestratorTaskStatus;
|
|
23
|
+
/** Active (non-terminal) sub-agent sessions for this task. */
|
|
24
|
+
activeSessions: number;
|
|
25
|
+
/** Latest session label (often "agentType · account"), if any. */
|
|
26
|
+
sessionLabel?: string | null;
|
|
27
|
+
/** The originating chat target; null tasks (no chat origin) are skipped. */
|
|
28
|
+
origin: {
|
|
29
|
+
roomId: string;
|
|
30
|
+
source: string;
|
|
31
|
+
} | null;
|
|
32
|
+
}
|
|
33
|
+
/** Compose the digest body for one room's set of live tasks. Deterministic. */
|
|
34
|
+
export declare function composeRoomDigest(views: SupervisorTaskView[]): string;
|
|
35
|
+
export interface SupervisorTickResult {
|
|
36
|
+
/** Room ids a fresh digest was posted to this tick. */
|
|
37
|
+
posted: string[];
|
|
38
|
+
/** Room ids whose digest was unchanged (deduped, not posted). */
|
|
39
|
+
skipped: string[];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* One supervisor tick: group live tasks by origin room, and post each room's
|
|
43
|
+
* digest only when it changed since `seen` last recorded it. Pure except for the
|
|
44
|
+
* injected `send`; mutates `seen` to remember what was posted (and prunes rooms
|
|
45
|
+
* that no longer have live tasks so a later re-activation re-posts).
|
|
46
|
+
*/
|
|
47
|
+
export declare function runSupervisorTick(views: SupervisorTaskView[], send: (target: {
|
|
48
|
+
source: string;
|
|
49
|
+
roomId: UUID;
|
|
50
|
+
}, content: Content) => Promise<unknown>, seen: Map<string, string>): Promise<SupervisorTickResult>;
|
|
51
|
+
export declare class TaskSupervisorService extends Service {
|
|
52
|
+
static serviceType: string;
|
|
53
|
+
capabilityDescription: string;
|
|
54
|
+
private timer;
|
|
55
|
+
/** roomId → last-posted digest, for change-driven dedup. */
|
|
56
|
+
private readonly seen;
|
|
57
|
+
static start(runtime: IAgentRuntime): Promise<TaskSupervisorService>;
|
|
58
|
+
private enabled;
|
|
59
|
+
private intervalMs;
|
|
60
|
+
private startTimer;
|
|
61
|
+
/** Build views from the task service and run one dedup-aware tick. */
|
|
62
|
+
runOnce(): Promise<SupervisorTickResult>;
|
|
63
|
+
stop(): Promise<void>;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=task-supervisor-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-supervisor-service.d.ts","sourceRoot":"","sources":["../../../../src/services/task-supervisor-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAU,OAAO,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAE3E,eAAO,MAAM,4BAA4B,iCAAiC,CAAC;AAsB3E,wBAAgB,WAAW,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAElE;AAED,uDAAuD;AACvD,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,sBAAsB,CAAC;IAC/B,8DAA8D;IAC9D,cAAc,EAAE,MAAM,CAAC;IACvB,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,4EAA4E;IAC5E,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACnD;AAED,+EAA+E;AAC/E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAerE;AAED,MAAM,WAAW,oBAAoB;IACnC,uDAAuD;IACvD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,iEAAiE;IACjE,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,kBAAkB,EAAE,EAC3B,IAAI,EAAE,CACJ,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,IAAI,CAAA;CAAE,EACxC,OAAO,EAAE,OAAO,KACb,OAAO,CAAC,OAAO,CAAC,EACrB,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACxB,OAAO,CAAC,oBAAoB,CAAC,CA4C/B;AA2BD,qBAAa,qBAAsB,SAAQ,OAAO;IAChD,MAAM,CAAC,WAAW,SAAgC;IAClD,qBAAqB,SACwF;IAE7G,OAAO,CAAC,KAAK,CAA6C;IAC1D,4DAA4D;IAC5D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA6B;WAErC,KAAK,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAM1E,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,UAAU;IAQlB,sEAAsE;IAChE,OAAO,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAiCxC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAO5B"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TaskWatchdogService — stalled-sub-agent detection + auto-grill (#8901, EPIC #8885).
|
|
3
|
+
*
|
|
4
|
+
* No monitor today notices a sub-agent that has gone silent (no tool call / no
|
|
5
|
+
* snapshot update). This service ticks on an interval, finds active sessions
|
|
6
|
+
* whose last activity is older than a threshold, and prods each ONCE with a
|
|
7
|
+
* status-check prompt ("are you still working? what's blocking you?"). The
|
|
8
|
+
* stalled set is exposed so the ACTIVE_SUB_AGENTS provider can surface it.
|
|
9
|
+
*
|
|
10
|
+
* The detection is a pure function (`detectStalledSessions`) so it unit-tests
|
|
11
|
+
* without timers or a runtime.
|
|
12
|
+
*/
|
|
13
|
+
import type { IAgentRuntime } from "@elizaos/core";
|
|
14
|
+
import { Service } from "@elizaos/core";
|
|
15
|
+
export declare const TASK_WATCHDOG_SERVICE_TYPE = "ORCHESTRATOR_TASK_WATCHDOG";
|
|
16
|
+
/** The prompt sent to a stalled sub-agent to prod it back to life. */
|
|
17
|
+
export declare const STALL_GRILL_PROMPT = "Status check: you've gone quiet. Are you still working? Report your current status, what you've completed, and exactly what (if anything) is blocking you. If you're done, summarize the result.";
|
|
18
|
+
/** Minimal session shape the detector needs. */
|
|
19
|
+
export interface WatchdogSessionView {
|
|
20
|
+
id: string;
|
|
21
|
+
status: string;
|
|
22
|
+
/** Epoch ms of last activity (tool call / snapshot / event). */
|
|
23
|
+
lastActivityMs: number;
|
|
24
|
+
}
|
|
25
|
+
export interface StalledSession {
|
|
26
|
+
id: string;
|
|
27
|
+
idleMs: number;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Pure: which active (non-terminal) sessions have been idle longer than
|
|
31
|
+
* `stallMs` as of `nowMs`. Terminal sessions are never "stalled" — they're done.
|
|
32
|
+
*/
|
|
33
|
+
export declare function detectStalledSessions(sessions: WatchdogSessionView[], nowMs: number, stallMs: number): StalledSession[];
|
|
34
|
+
export declare class TaskWatchdogService extends Service {
|
|
35
|
+
static serviceType: string;
|
|
36
|
+
capabilityDescription: string;
|
|
37
|
+
private timer;
|
|
38
|
+
/** Session ids already prodded this stall, so we grill once (not every tick). */
|
|
39
|
+
private readonly prodded;
|
|
40
|
+
static start(runtime: IAgentRuntime): Promise<TaskWatchdogService>;
|
|
41
|
+
private enabled;
|
|
42
|
+
private stallMs;
|
|
43
|
+
private intervalMs;
|
|
44
|
+
private startTimer;
|
|
45
|
+
/** Session ids currently considered stalled (for the ACTIVE_SUB_AGENTS provider). */
|
|
46
|
+
getStalledSessionIds(): string[];
|
|
47
|
+
runOnce(nowMs?: number): Promise<StalledSession[]>;
|
|
48
|
+
stop(): Promise<void>;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=task-watchdog-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-watchdog-service.d.ts","sourceRoot":"","sources":["../../../../src/services/task-watchdog-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAU,OAAO,EAAE,MAAM,eAAe,CAAC;AAGhD,eAAO,MAAM,0BAA0B,+BAA+B,CAAC;AAEvE,sEAAsE;AACtE,eAAO,MAAM,kBAAkB,qMACqK,CAAC;AAMrM,gDAAgD;AAChD,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,mBAAmB,EAAE,EAC/B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,cAAc,EAAE,CAQlB;AASD,qBAAa,mBAAoB,SAAQ,OAAO;IAC9C,MAAM,CAAC,WAAW,SAA8B;IAChD,qBAAqB,SACoE;IAEzF,OAAO,CAAC,KAAK,CAA6C;IAC1D,iFAAiF;IACjF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;WAEhC,KAAK,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAMxE,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,UAAU;IAOlB,qFAAqF;IACrF,oBAAoB,IAAI,MAAM,EAAE;IAI1B,OAAO,CAAC,KAAK,SAAa,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IA2CtD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAO5B"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export declare const ORCHESTRATOR_TOOL_NAMES: readonly ["sh", "git", "rg", "bun", "acpx", "codex", "claude", "opencode"];
|
|
2
|
+
export type OrchestratorToolName = (typeof ORCHESTRATOR_TOOL_NAMES)[number];
|
|
3
|
+
export interface OrchestratorToolCapability {
|
|
4
|
+
name: OrchestratorToolName;
|
|
5
|
+
path?: string;
|
|
6
|
+
available: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface ResolvedOrchestratorShell {
|
|
9
|
+
command: string;
|
|
10
|
+
args: string[];
|
|
11
|
+
available: boolean;
|
|
12
|
+
source: "env:CODING_TOOLS_SHELL" | "env:SHELL" | "candidate" | "fallback";
|
|
13
|
+
warning?: string;
|
|
14
|
+
}
|
|
15
|
+
export type OrchestratorUnsupportedReason = "store_build" | "vanilla_mobile" | "not_local_yolo" | "missing_shell";
|
|
16
|
+
export interface OrchestratorTerminalSupport {
|
|
17
|
+
supported: boolean;
|
|
18
|
+
reason?: OrchestratorUnsupportedReason;
|
|
19
|
+
message?: string;
|
|
20
|
+
}
|
|
21
|
+
/** Pure, injectable snapshot of the environment fields the support gate reads. */
|
|
22
|
+
export interface TerminalSupportEnv {
|
|
23
|
+
platform?: string;
|
|
24
|
+
buildVariant?: string;
|
|
25
|
+
runtimeMode?: string;
|
|
26
|
+
androidRoot?: string;
|
|
27
|
+
androidData?: string;
|
|
28
|
+
aospBuild?: string;
|
|
29
|
+
}
|
|
30
|
+
export declare function isAndroidRuntime(): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Pure device-support classifier. Same precedence as
|
|
33
|
+
* detectOrchestratorTerminalSupport (store > ios > android-mode > android-shell)
|
|
34
|
+
* but with no process.env / fs reads — callers inject the env snapshot and, for
|
|
35
|
+
* Android, whether an executable shell is present. Used by the static device
|
|
36
|
+
* support matrix (#9146) and by detectOrchestratorTerminalSupport itself.
|
|
37
|
+
*/
|
|
38
|
+
export declare function classifyTerminalSupport(env: TerminalSupportEnv, opts?: {
|
|
39
|
+
androidShellAvailable?: boolean;
|
|
40
|
+
}): OrchestratorTerminalSupport;
|
|
41
|
+
export declare function isAospTerminalRuntime(): boolean;
|
|
42
|
+
export declare function resolveExecutable(nameOrPath: string): string | undefined;
|
|
43
|
+
export declare function resolveOrchestratorShell(): ResolvedOrchestratorShell;
|
|
44
|
+
export declare function detectOrchestratorCapabilities(): OrchestratorToolCapability[];
|
|
45
|
+
export declare function formatOrchestratorCapabilities(capabilities?: OrchestratorToolCapability[]): string;
|
|
46
|
+
export declare function missingToolMessage(tool: OrchestratorToolName): string;
|
|
47
|
+
export declare function detectOrchestratorTerminalSupport(): OrchestratorTerminalSupport;
|
|
48
|
+
//# sourceMappingURL=terminal-capabilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-capabilities.d.ts","sourceRoot":"","sources":["../../../../src/services/terminal-capabilities.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,uBAAuB,4EAS1B,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,wBAAwB,GAAG,WAAW,GAAG,WAAW,GAAG,UAAU,CAAC;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,6BAA6B,GACrC,aAAa,GACb,gBAAgB,GAChB,gBAAgB,GAChB,eAAe,CAAC;AAEpB,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,6BAA6B,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAID,kFAAkF;AAClF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAwCD,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AAOD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,kBAAkB,EACvB,IAAI,GAAE;IAAE,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC7C,2BAA2B,CAoC7B;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAwBD,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAWxE;AAUD,wBAAgB,wBAAwB,IAAI,yBAAyB,CA0CpE;AAED,wBAAgB,8BAA8B,IAAI,0BAA0B,EAAE,CAa7E;AAED,wBAAgB,8BAA8B,CAC5C,YAAY,+BAAmC,GAC9C,MAAM,CAQR;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAUrE;AAED,wBAAgB,iCAAiC,IAAI,2BAA2B,CAoB/E"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Sets a lightweight context object on the runtime before `useModel()` calls
|
|
5
5
|
* so the trajectory logger can identify orchestrator-specific LLM invocations
|
|
6
|
-
* (
|
|
6
|
+
* (skill recommendations, launch-failure summaries, etc.) and tag
|
|
7
7
|
* them with meaningful metadata instead of the generic "action" / "runtime.useModel".
|
|
8
8
|
*
|
|
9
9
|
* The eliza trajectory-persistence layer reads `runtime.__orchestratorTrajectoryCtx`
|
|
@@ -20,18 +20,14 @@ type RuntimeLike = object;
|
|
|
20
20
|
/**
|
|
21
21
|
* Orchestrator decision types that map to specific LLM call sites.
|
|
22
22
|
*/
|
|
23
|
-
export type OrchestratorDecisionType = "
|
|
23
|
+
export type OrchestratorDecisionType = "skill-context-generation" | "launch-failure-message";
|
|
24
24
|
export interface OrchestratorTrajectoryContext {
|
|
25
25
|
/** Source identifier — always "orchestrator" */
|
|
26
26
|
source: "orchestrator";
|
|
27
27
|
/** Which decision type triggered this LLM call */
|
|
28
28
|
decisionType: OrchestratorDecisionType;
|
|
29
|
-
/**
|
|
29
|
+
/** ACP session ID of the agent being evaluated */
|
|
30
30
|
sessionId?: string;
|
|
31
|
-
/** Durable task thread identifier */
|
|
32
|
-
threadId?: string;
|
|
33
|
-
/** Acceptance verifier job identifier */
|
|
34
|
-
verifierJobId?: string;
|
|
35
31
|
/** Human-readable task label */
|
|
36
32
|
taskLabel?: string;
|
|
37
33
|
/** Repository URL or identifier (for trajectory feedback filtering) */
|
|
@@ -63,7 +59,7 @@ export declare function readTrajectoryContext(runtime: unknown): OrchestratorTra
|
|
|
63
59
|
* ```ts
|
|
64
60
|
* const result = await withTrajectoryContext(
|
|
65
61
|
* ctx.runtime,
|
|
66
|
-
* { source: "orchestrator", decisionType: "
|
|
62
|
+
* { source: "orchestrator", decisionType: "skill-context-generation", sessionId },
|
|
67
63
|
* () => ctx.runtime.useModel(ModelType.TEXT_SMALL, { prompt }),
|
|
68
64
|
* );
|
|
69
65
|
* ```
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trajectory-context.d.ts","sourceRoot":"","sources":["../../../../src/services/trajectory-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;GAIG;AACH,KAAK,WAAW,GAAG,MAAM,CAAC;AAE1B;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAChC,
|
|
1
|
+
{"version":3,"file":"trajectory-context.d.ts","sourceRoot":"","sources":["../../../../src/services/trajectory-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;GAIG;AACH,KAAK,WAAW,GAAG,MAAM,CAAC;AAE1B;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAChC,0BAA0B,GAC1B,wBAAwB,CAAC;AAE7B,MAAM,WAAW,6BAA6B;IAC5C,gDAAgD;IAChD,MAAM,EAAE,cAAc,CAAC;IACvB,kDAAkD;IAClD,YAAY,EAAE,wBAAwB,CAAC;IACvC,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAID;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,6BAA6B,GACjC,IAAI,CAEN;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAEjE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,GACf,6BAA6B,GAAG,SAAS,CAQ3C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,qBAAqB,CAAC,CAAC,EAC3C,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,6BAA6B,EAClC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAOZ"}
|
|
@@ -44,7 +44,7 @@ export interface TrajectoryFeedbackOptions {
|
|
|
44
44
|
export declare function queryPastExperience(runtime: IAgentRuntime, options?: TrajectoryFeedbackOptions): Promise<PastExperience[]>;
|
|
45
45
|
/**
|
|
46
46
|
* Format past experience entries as a markdown section suitable for
|
|
47
|
-
* injection into agent
|
|
47
|
+
* injection into ACP agent context.
|
|
48
48
|
*
|
|
49
49
|
* Returns empty string if no relevant experience is found.
|
|
50
50
|
*/
|
|
@@ -1,13 +1,27 @@
|
|
|
1
|
-
export type AgentType = "
|
|
1
|
+
export type AgentType = "elizaos" | "pi-agent" | "opencode" | "claude" | "codex" | string;
|
|
2
2
|
export type ApprovalPreset = "readonly" | "standard" | "permissive" | "autonomous";
|
|
3
3
|
export type SessionStatus = "running" | "ready" | "busy" | "blocked" | "authenticating" | "completed" | "stopped" | "errored" | "cancelled" | "tool_running" | string;
|
|
4
|
-
export type SessionEventName = "ready" | "blocked" | "login_required" | "task_complete" | "tool_running" | "stopped" | "error" | "message" | "reconnected" | string;
|
|
4
|
+
export type SessionEventName = "ready" | "blocked" | "login_required" | "task_complete" | "tool_running" | "stopped" | "error" | "message" | "reasoning" | "plan" | "reconnected" | string;
|
|
5
|
+
/**
|
|
6
|
+
* Set of session statuses that mean "this session is finished and will
|
|
7
|
+
* not emit further activity". Exported here so providers, the progress
|
|
8
|
+
* hook, and the orchestrator service share a single source of truth.
|
|
9
|
+
* Adding a new terminal status only requires updating this set.
|
|
10
|
+
*/
|
|
11
|
+
export declare const TERMINAL_SESSION_STATUSES: ReadonlySet<string>;
|
|
5
12
|
export type SessionEventCallback = (sessionId: string, event: SessionEventName, data: unknown) => void;
|
|
6
13
|
export type AcpEventCallback = (event: AcpJsonRpcMessage, sessionId?: string) => void;
|
|
7
14
|
export interface SpawnOptions {
|
|
8
15
|
name?: string;
|
|
9
16
|
agentType?: AgentType;
|
|
10
17
|
workdir?: string;
|
|
18
|
+
/**
|
|
19
|
+
* When true, spawnSession places this session in a per-session subdir of
|
|
20
|
+
* `workdir` (a SHARED scratch root) so concurrent tasks can't collide.
|
|
21
|
+
* Set by the orchestrator only when the workdir resolved to a configured
|
|
22
|
+
* workspace root — never for cwd self-checkout or a route/explicit dir.
|
|
23
|
+
*/
|
|
24
|
+
isolateWorkdir?: boolean;
|
|
11
25
|
initialTask?: string;
|
|
12
26
|
env?: Record<string, string>;
|
|
13
27
|
metadata?: Record<string, unknown>;
|
|
@@ -148,5 +162,27 @@ export interface AcpToolCall {
|
|
|
148
162
|
title?: string;
|
|
149
163
|
status?: "pending" | "running" | "completed" | "failed" | "cancelled" | string;
|
|
150
164
|
output?: string;
|
|
165
|
+
/**
|
|
166
|
+
* ACP `kind` (when present) — typically `read`, `edit`, `execute`,
|
|
167
|
+
* `search`, `fetch`, etc. Lets downstream consumers format the
|
|
168
|
+
* Claude-Code-style display (e.g. `Bash(git status)` for kind=execute).
|
|
169
|
+
*/
|
|
170
|
+
kind?: string;
|
|
171
|
+
/**
|
|
172
|
+
* ACP `rawInput` — the actual tool arguments object as the agent
|
|
173
|
+
* emitted it. For Read/Edit/Write the most useful field is usually
|
|
174
|
+
* `file_path`. For Bash/Terminal it's `command`. For Grep it's
|
|
175
|
+
* `pattern` / `path`. Forwarded as-is so consumers can pick what they
|
|
176
|
+
* surface.
|
|
177
|
+
*/
|
|
178
|
+
rawInput?: Record<string, unknown>;
|
|
179
|
+
/**
|
|
180
|
+
* ACP `locations` array — file path + line hints attached to the call.
|
|
181
|
+
* For Read/Edit this typically holds the target file.
|
|
182
|
+
*/
|
|
183
|
+
locations?: Array<{
|
|
184
|
+
path?: string;
|
|
185
|
+
line?: number;
|
|
186
|
+
}>;
|
|
151
187
|
}
|
|
152
188
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/services/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GACjB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/services/types.ts"],"names":[],"mappings":"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"}
|