@runcore-sh/runcore 0.4.0 → 0.5.1
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/dictionary.json +2 -2
- package/dist/activity/log.js +2 -2
- package/dist/activity/log.js.map +1 -1
- package/dist/agents/governed-spawn.d.ts.map +1 -1
- package/dist/cli.js +101 -11
- package/dist/cli.js.map +1 -1
- package/dist/extensions/cache.d.ts +57 -0
- package/dist/extensions/cache.d.ts.map +1 -0
- package/dist/extensions/cache.js +173 -0
- package/dist/extensions/cache.js.map +1 -0
- package/dist/extensions/client.d.ts +55 -0
- package/dist/extensions/client.d.ts.map +1 -0
- package/dist/extensions/client.js +120 -0
- package/dist/extensions/client.js.map +1 -0
- package/dist/extensions/index.d.ts +13 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/extensions/index.js +12 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/extensions/loader.d.ts +50 -0
- package/dist/extensions/loader.d.ts.map +1 -0
- package/dist/extensions/loader.js +166 -0
- package/dist/extensions/loader.js.map +1 -0
- package/dist/extensions/manifest.d.ts +38 -0
- package/dist/extensions/manifest.d.ts.map +1 -0
- package/dist/extensions/manifest.js +17 -0
- package/dist/extensions/manifest.js.map +1 -0
- package/dist/extensions/stubs.d.ts +27 -0
- package/dist/extensions/stubs.d.ts.map +1 -0
- package/dist/extensions/stubs.js +45 -0
- package/dist/extensions/stubs.js.map +1 -0
- package/dist/lib/audit.js +2 -2
- package/dist/lib/audit.js.map +1 -1
- package/dist/lib/brain-migrate.d.ts +21 -0
- package/dist/lib/brain-migrate.d.ts.map +1 -0
- package/dist/lib/brain-migrate.js +137 -0
- package/dist/lib/brain-migrate.js.map +1 -0
- package/dist/lib/paths.d.ts +27 -0
- package/dist/lib/paths.d.ts.map +1 -1
- package/dist/lib/paths.js +65 -0
- package/dist/lib/paths.js.map +1 -1
- package/dist/llm/call-log.d.ts +40 -0
- package/dist/llm/call-log.d.ts.map +1 -0
- package/dist/llm/call-log.js +35 -0
- package/dist/llm/call-log.js.map +1 -0
- package/dist/llm/complete.d.ts +6 -0
- package/dist/llm/complete.d.ts.map +1 -1
- package/dist/llm/complete.js +27 -0
- package/dist/llm/complete.js.map +1 -1
- package/dist/mcp-server.js +118 -2
- package/dist/mcp-server.js.map +1 -1
- package/dist/memory/file-backed.d.ts +4 -0
- package/dist/memory/file-backed.d.ts.map +1 -1
- package/dist/memory/file-backed.js +4 -0
- package/dist/memory/file-backed.js.map +1 -1
- package/dist/memory/vector-index.d.ts +4 -12
- package/dist/memory/vector-index.d.ts.map +1 -1
- package/dist/memory/vector-index.js +11 -93
- package/dist/memory/vector-index.js.map +1 -1
- package/dist/search/brain-docs.d.ts +17 -7
- package/dist/search/brain-docs.d.ts.map +1 -1
- package/dist/search/brain-docs.js +170 -52
- package/dist/search/brain-docs.js.map +1 -1
- package/dist/search/brain-rag.d.ts +45 -0
- package/dist/search/brain-rag.d.ts.map +1 -0
- package/dist/search/brain-rag.js +275 -0
- package/dist/search/brain-rag.js.map +1 -0
- package/dist/search/chunker.d.ts +24 -0
- package/dist/search/chunker.d.ts.map +1 -0
- package/dist/search/chunker.js +95 -0
- package/dist/search/chunker.js.map +1 -0
- package/dist/search/embedder.d.ts +16 -0
- package/dist/search/embedder.d.ts.map +1 -0
- package/dist/search/embedder.js +108 -0
- package/dist/search/embedder.js.map +1 -0
- package/dist/search/file-watcher.d.ts +11 -0
- package/dist/search/file-watcher.d.ts.map +1 -0
- package/dist/search/file-watcher.js +86 -0
- package/dist/search/file-watcher.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +814 -472
- package/dist/server.js.map +1 -1
- package/dist/sessions/store.d.ts +9 -0
- package/dist/sessions/store.d.ts.map +1 -1
- package/dist/sessions/store.js.map +1 -1
- package/dist/settings.d.ts +26 -0
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +78 -2
- package/dist/settings.js.map +1 -1
- package/dist/tracing/init.d.ts +1 -1
- package/dist/tracing/init.d.ts.map +1 -1
- package/dist/utils/logger.js +2 -2
- package/dist/utils/logger.js.map +1 -1
- package/module-tiers.json +164 -0
- package/package.json +9 -13
- package/public/avatar/cache/1184385ec5522b57.mp4 +0 -0
- package/public/avatar/cache/1f15f6a1ebd7e439.mp4 +0 -0
- package/public/avatar/cache/2c7e47ff0bdeb8d1.mp4 +0 -0
- package/public/avatar/cache/5f308566f7abb8f2.mp4 +0 -0
- package/public/avatar/cache/62f9cfba848d724e.mp4 +0 -0
- package/public/avatar/cache/6d64e657e6bf2aab.mp4 +0 -0
- package/public/avatar/cache/763ad0349e0b6f26.mp4 +0 -0
- package/public/avatar/cache/81a516cfd461b2b9.mp4 +0 -0
- package/public/avatar/cache/9366de15fd6910ca.mp4 +0 -0
- package/public/avatar/cache/ade41a846b283895.mp4 +0 -0
- package/public/avatar/cache/b6066e5c65383eec.mp4 +0 -0
- package/public/avatar/cache/edadb75d37891fc7.mp4 +0 -0
- package/public/avatar/cache/f0ae159640621dd9.mp4 +0 -0
- package/public/avatar/cache/fc2e5419adf29d96.mp4 +0 -0
- package/public/index.html +379 -59
- package/dist/agents/autonomous.js +0 -749
- package/dist/agents/autonomous.js.map +0 -1
- package/dist/agents/commit.js +0 -113
- package/dist/agents/commit.js.map +0 -1
- package/dist/agents/continue.js +0 -158
- package/dist/agents/continue.js.map +0 -1
- package/dist/agents/cooldown.js +0 -397
- package/dist/agents/cooldown.js.map +0 -1
- package/dist/agents/dedup-guard.js +0 -131
- package/dist/agents/dedup-guard.js.map +0 -1
- package/dist/agents/feed.js +0 -176
- package/dist/agents/feed.js.map +0 -1
- package/dist/agents/governance.js +0 -292
- package/dist/agents/governance.js.map +0 -1
- package/dist/agents/governed-spawn.js +0 -192
- package/dist/agents/governed-spawn.js.map +0 -1
- package/dist/agents/heartbeat.js +0 -324
- package/dist/agents/heartbeat.js.map +0 -1
- package/dist/agents/instance-manager.js +0 -850
- package/dist/agents/instance-manager.js.map +0 -1
- package/dist/agents/issue-reporter.js +0 -123
- package/dist/agents/issue-reporter.js.map +0 -1
- package/dist/agents/issues.js +0 -141
- package/dist/agents/issues.js.map +0 -1
- package/dist/agents/locks.js +0 -234
- package/dist/agents/locks.js.map +0 -1
- package/dist/agents/memory.js +0 -93
- package/dist/agents/memory.js.map +0 -1
- package/dist/agents/monitor.js +0 -235
- package/dist/agents/monitor.js.map +0 -1
- package/dist/agents/orchestration.js +0 -715
- package/dist/agents/orchestration.js.map +0 -1
- package/dist/agents/recover.js +0 -166
- package/dist/agents/recover.js.map +0 -1
- package/dist/agents/reflection.js +0 -199
- package/dist/agents/reflection.js.map +0 -1
- package/dist/agents/runtime/bus.js +0 -174
- package/dist/agents/runtime/bus.js.map +0 -1
- package/dist/agents/runtime/config.js +0 -101
- package/dist/agents/runtime/config.js.map +0 -1
- package/dist/agents/runtime/driver.js +0 -214
- package/dist/agents/runtime/driver.js.map +0 -1
- package/dist/agents/runtime/errors.js +0 -40
- package/dist/agents/runtime/errors.js.map +0 -1
- package/dist/agents/runtime/index.js +0 -54
- package/dist/agents/runtime/index.js.map +0 -1
- package/dist/agents/runtime/lifecycle.js +0 -116
- package/dist/agents/runtime/lifecycle.js.map +0 -1
- package/dist/agents/runtime/manager.js +0 -948
- package/dist/agents/runtime/manager.js.map +0 -1
- package/dist/agents/runtime/registry.js +0 -195
- package/dist/agents/runtime/registry.js.map +0 -1
- package/dist/agents/runtime/resources.js +0 -146
- package/dist/agents/runtime/resources.js.map +0 -1
- package/dist/agents/runtime/types.js +0 -24
- package/dist/agents/runtime/types.js.map +0 -1
- package/dist/agents/spawn-policy.js +0 -202
- package/dist/agents/spawn-policy.js.map +0 -1
- package/dist/agents/spawn.js +0 -970
- package/dist/agents/spawn.js.map +0 -1
- package/dist/agents/triage.js +0 -81
- package/dist/agents/triage.js.map +0 -1
- package/dist/agents/workflow.js +0 -543
- package/dist/agents/workflow.js.map +0 -1
- package/dist/avatar/client.js +0 -172
- package/dist/avatar/client.js.map +0 -1
- package/dist/avatar/sidecar.js +0 -125
- package/dist/avatar/sidecar.js.map +0 -1
- package/dist/browser/sessions.js +0 -122
- package/dist/browser/sessions.js.map +0 -1
- package/dist/capabilities/definitions/browser.js +0 -242
- package/dist/capabilities/definitions/browser.js.map +0 -1
- package/dist/channels/whatsapp.js +0 -200
- package/dist/channels/whatsapp.js.map +0 -1
- package/dist/credentials/store.js +0 -189
- package/dist/credentials/store.js.map +0 -1
- package/dist/files/deep-index.js +0 -337
- package/dist/files/deep-index.js.map +0 -1
- package/dist/files/extract.js +0 -33
- package/dist/files/extract.js.map +0 -1
- package/dist/files/gdrive.js +0 -246
- package/dist/files/gdrive.js.map +0 -1
- package/dist/github/client.js +0 -408
- package/dist/github/client.js.map +0 -1
- package/dist/github/commit-analysis.js +0 -276
- package/dist/github/commit-analysis.js.map +0 -1
- package/dist/github/contributor-stats.js +0 -119
- package/dist/github/contributor-stats.js.map +0 -1
- package/dist/github/issue-sla.js +0 -220
- package/dist/github/issue-sla.js.map +0 -1
- package/dist/github/issue-triage.js +0 -286
- package/dist/github/issue-triage.js.map +0 -1
- package/dist/github/pr-readiness.js +0 -197
- package/dist/github/pr-readiness.js.map +0 -1
- package/dist/github/pr-review.js +0 -410
- package/dist/github/pr-review.js.map +0 -1
- package/dist/github/release-notes.js +0 -227
- package/dist/github/release-notes.js.map +0 -1
- package/dist/github/repo-health.js +0 -303
- package/dist/github/repo-health.js.map +0 -1
- package/dist/github/retry.js +0 -117
- package/dist/github/retry.js.map +0 -1
- package/dist/github/types.js +0 -8
- package/dist/github/types.js.map +0 -1
- package/dist/github/webhooks.js +0 -153
- package/dist/github/webhooks.js.map +0 -1
- package/dist/google/auth.js +0 -325
- package/dist/google/auth.js.map +0 -1
- package/dist/google/calendar-timer.js +0 -91
- package/dist/google/calendar-timer.js.map +0 -1
- package/dist/google/calendar.js +0 -270
- package/dist/google/calendar.js.map +0 -1
- package/dist/google/docs.js +0 -309
- package/dist/google/docs.js.map +0 -1
- package/dist/google/gmail-send.js +0 -219
- package/dist/google/gmail-send.js.map +0 -1
- package/dist/google/gmail-timer.js +0 -223
- package/dist/google/gmail-timer.js.map +0 -1
- package/dist/google/gmail.js +0 -470
- package/dist/google/gmail.js.map +0 -1
- package/dist/google/plugin.js +0 -169
- package/dist/google/plugin.js.map +0 -1
- package/dist/google/tasks-timer.js +0 -107
- package/dist/google/tasks-timer.js.map +0 -1
- package/dist/google/tasks.js +0 -331
- package/dist/google/tasks.js.map +0 -1
- package/dist/google/temporal.js +0 -176
- package/dist/google/temporal.js.map +0 -1
- package/dist/integrations/gate.js +0 -100
- package/dist/integrations/gate.js.map +0 -1
- package/dist/integrations/github.js +0 -331
- package/dist/integrations/github.js.map +0 -1
- package/dist/integrations/google-tasks.js +0 -432
- package/dist/integrations/google-tasks.js.map +0 -1
- package/dist/mdns.js +0 -110
- package/dist/mdns.js.map +0 -1
- package/dist/notifications/channel.js +0 -83
- package/dist/notifications/channel.js.map +0 -1
- package/dist/notifications/channels/adapter.js +0 -55
- package/dist/notifications/channels/adapter.js.map +0 -1
- package/dist/notifications/channels/index.js +0 -6
- package/dist/notifications/channels/index.js.map +0 -1
- package/dist/notifications/channels/log.js +0 -29
- package/dist/notifications/channels/log.js.map +0 -1
- package/dist/notifications/email.js +0 -72
- package/dist/notifications/email.js.map +0 -1
- package/dist/notifications/engine.js +0 -198
- package/dist/notifications/engine.js.map +0 -1
- package/dist/notifications/index.js +0 -24
- package/dist/notifications/index.js.map +0 -1
- package/dist/notifications/phone.js +0 -48
- package/dist/notifications/phone.js.map +0 -1
- package/dist/notifications/sms.js +0 -65
- package/dist/notifications/sms.js.map +0 -1
- package/dist/notifications/types.js +0 -14
- package/dist/notifications/types.js.map +0 -1
- package/dist/notifications/webhook.js +0 -65
- package/dist/notifications/webhook.js.map +0 -1
- package/dist/resend/inbox.js +0 -199
- package/dist/resend/inbox.js.map +0 -1
- package/dist/resend/webhooks.js +0 -244
- package/dist/resend/webhooks.js.map +0 -1
- package/dist/search/browse.js +0 -225
- package/dist/search/browse.js.map +0 -1
- package/dist/search/perplexity.js +0 -41
- package/dist/search/perplexity.js.map +0 -1
- package/dist/slack/channels.js +0 -277
- package/dist/slack/channels.js.map +0 -1
- package/dist/slack/client.js +0 -468
- package/dist/slack/client.js.map +0 -1
- package/dist/slack/retry.js +0 -100
- package/dist/slack/retry.js.map +0 -1
- package/dist/slack/types.js +0 -52
- package/dist/slack/types.js.map +0 -1
- package/dist/slack/webhooks.js +0 -285
- package/dist/slack/webhooks.js.map +0 -1
- package/dist/stt/client.js +0 -66
- package/dist/stt/client.js.map +0 -1
- package/dist/stt/sidecar.js +0 -115
- package/dist/stt/sidecar.js.map +0 -1
- package/dist/tracing/bridge.js +0 -70
- package/dist/tracing/bridge.js.map +0 -1
- package/dist/tracing/correlation.js +0 -49
- package/dist/tracing/correlation.js.map +0 -1
- package/dist/tracing/index.js +0 -18
- package/dist/tracing/index.js.map +0 -1
- package/dist/tracing/init.js +0 -81
- package/dist/tracing/init.js.map +0 -1
- package/dist/tracing/instrument.js +0 -145
- package/dist/tracing/instrument.js.map +0 -1
- package/dist/tracing/middleware.js +0 -69
- package/dist/tracing/middleware.js.map +0 -1
- package/dist/tracing/tracer.js +0 -327
- package/dist/tracing/tracer.js.map +0 -1
- package/dist/tts/client.js +0 -48
- package/dist/tts/client.js.map +0 -1
- package/dist/tts/sidecar.js +0 -148
- package/dist/tts/sidecar.js.map +0 -1
- package/dist/twilio/call.js +0 -79
- package/dist/twilio/call.js.map +0 -1
- package/dist/vault/matcher.js +0 -197
- package/dist/vault/matcher.js.map +0 -1
- package/dist/vault/personal.js +0 -163
- package/dist/vault/personal.js.map +0 -1
- package/dist/vault/policy.js +0 -159
- package/dist/vault/policy.js.map +0 -1
- package/dist/vault/store.js +0 -122
- package/dist/vault/store.js.map +0 -1
- package/dist/vault/transfer.js +0 -188
- package/dist/vault/transfer.js.map +0 -1
- package/dist/volumes/index.js +0 -2
- package/dist/volumes/index.js.map +0 -1
- package/dist/volumes/manager.js +0 -462
- package/dist/volumes/manager.js.map +0 -1
- package/dist/volumes/types.js +0 -8
- package/dist/volumes/types.js.map +0 -1
- package/dist/webhooks/config.js +0 -214
- package/dist/webhooks/config.js.map +0 -1
- package/dist/webhooks/event-log.js +0 -132
- package/dist/webhooks/event-log.js.map +0 -1
- package/dist/webhooks/handler.js +0 -103
- package/dist/webhooks/handler.js.map +0 -1
- package/dist/webhooks/handlers.js +0 -231
- package/dist/webhooks/handlers.js.map +0 -1
- package/dist/webhooks/index.js +0 -33
- package/dist/webhooks/index.js.map +0 -1
- package/dist/webhooks/mount.js +0 -400
- package/dist/webhooks/mount.js.map +0 -1
- package/dist/webhooks/registry.js +0 -143
- package/dist/webhooks/registry.js.map +0 -1
- package/dist/webhooks/relay.js +0 -53
- package/dist/webhooks/relay.js.map +0 -1
- package/dist/webhooks/retry.js +0 -270
- package/dist/webhooks/retry.js.map +0 -1
- package/dist/webhooks/router.js +0 -290
- package/dist/webhooks/router.js.map +0 -1
- package/dist/webhooks/twilio.js +0 -129
- package/dist/webhooks/twilio.js.map +0 -1
- package/dist/webhooks/types.js +0 -8
- package/dist/webhooks/types.js.map +0 -1
- package/dist/webhooks/verify.js +0 -154
- package/dist/webhooks/verify.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"orchestration.js","sourceRoot":"","sources":["../../src/agents/orchestration.ts"],"names":[],"mappings":"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"}
|
package/dist/agents/recover.js
DELETED
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent failure recovery — when an agent fails, spawn a recovery agent
|
|
3
|
-
* that diagnoses the failure and attempts to fix the issue.
|
|
4
|
-
*
|
|
5
|
-
* Recovery agents get the original prompt + error output and try to:
|
|
6
|
-
* 1. Identify the root cause from the error output
|
|
7
|
-
* 2. Fix the underlying issue (missing imports, type errors, etc.)
|
|
8
|
-
* 3. Complete the original task if possible
|
|
9
|
-
*
|
|
10
|
-
* Guards against retry loops:
|
|
11
|
-
* - Max 1 recovery attempt per task (tracked by ID)
|
|
12
|
-
* - Recovery agents (label starts with "Fix:") are never themselves recovered
|
|
13
|
-
* - Global circuit breaker: if too many recoveries fail in a window, stop trying
|
|
14
|
-
*/
|
|
15
|
-
import { submitTask } from "./index.js";
|
|
16
|
-
import { logActivity } from "../activity/log.js";
|
|
17
|
-
import { createLogger } from "../utils/logger.js";
|
|
18
|
-
const log = createLogger("agent-recover");
|
|
19
|
-
/** Track which tasks already had a recovery attempt (prevent retry loops). */
|
|
20
|
-
const recoveryAttempted = new Set();
|
|
21
|
-
/** Max chars of error output to include in recovery prompt. */
|
|
22
|
-
const MAX_ERROR_CONTEXT = 3000;
|
|
23
|
-
/** Max timeout for recovery agents — prevents wasting resources on simple fixes. */
|
|
24
|
-
const RECOVERY_MAX_TIMEOUT_MS = 15 * 60 * 1000; // 15 min
|
|
25
|
-
// ─── Recovery circuit breaker ─────────────────────────────────────────────
|
|
26
|
-
// If too many recovery agents fail within a short window, stop spawning
|
|
27
|
-
// new recovery agents entirely until the cooldown expires.
|
|
28
|
-
const RECOVERY_FAILURE_WINDOW_MS = 10 * 60 * 1000; // 10 minutes
|
|
29
|
-
const RECOVERY_FAILURE_THRESHOLD = 3; // 3 failed recoveries → stop
|
|
30
|
-
const RECOVERY_COOLDOWN_MS = 15 * 60 * 1000; // 15 min cooldown
|
|
31
|
-
const recentRecoveryFailures = [];
|
|
32
|
-
let recoveryCooldownUntil = 0;
|
|
33
|
-
/** Record that a recovery agent itself failed (called externally from spawn.ts). */
|
|
34
|
-
export function recordRecoveryFailure() {
|
|
35
|
-
const now = Date.now();
|
|
36
|
-
recentRecoveryFailures.push(now);
|
|
37
|
-
// Prune old entries outside the window
|
|
38
|
-
while (recentRecoveryFailures.length > 0 && recentRecoveryFailures[0] < now - RECOVERY_FAILURE_WINDOW_MS) {
|
|
39
|
-
recentRecoveryFailures.shift();
|
|
40
|
-
}
|
|
41
|
-
if (recentRecoveryFailures.length >= RECOVERY_FAILURE_THRESHOLD) {
|
|
42
|
-
recoveryCooldownUntil = now + RECOVERY_COOLDOWN_MS;
|
|
43
|
-
log.warn("Recovery circuit breaker tripped", { failures: recentRecoveryFailures.length, cooldownMs: RECOVERY_COOLDOWN_MS });
|
|
44
|
-
logActivity({
|
|
45
|
-
source: "agent",
|
|
46
|
-
summary: `Recovery circuit breaker tripped: ${recentRecoveryFailures.length} recovery failures in ${RECOVERY_FAILURE_WINDOW_MS / 60000}min — pausing recoveries for ${RECOVERY_COOLDOWN_MS / 60000}min`,
|
|
47
|
-
actionLabel: "AUTONOMOUS",
|
|
48
|
-
reason: "recovery circuit breaker",
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
/** Check if recovery spawning is currently allowed. */
|
|
53
|
-
function isRecoveryAllowed() {
|
|
54
|
-
if (Date.now() < recoveryCooldownUntil)
|
|
55
|
-
return false;
|
|
56
|
-
return true;
|
|
57
|
-
}
|
|
58
|
-
/** Check if a task is itself a recovery agent (prevent recovery-of-recovery chains). */
|
|
59
|
-
function isRecoveryTask(task) {
|
|
60
|
-
return task.label.startsWith("Fix: ");
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Attempt to recover from a failed agent by spawning a recovery agent.
|
|
64
|
-
* Returns true if a recovery agent was spawned, false if skipped.
|
|
65
|
-
*/
|
|
66
|
-
export async function attemptRecovery(failedTask, output) {
|
|
67
|
-
log.info(`Attempting recovery for: ${failedTask.label}`, { taskId: failedTask.id, exitCode: failedTask.exitCode });
|
|
68
|
-
// Don't retry if we already tried recovery for this task
|
|
69
|
-
if (recoveryAttempted.has(failedTask.id)) {
|
|
70
|
-
logActivity({ source: "agent", summary: `Recovery skipped (already attempted): ${failedTask.label}`, actionLabel: "AUTONOMOUS", reason: "auto-recovery from agent failure" });
|
|
71
|
-
return false;
|
|
72
|
-
}
|
|
73
|
-
// Don't recover user-triggered tasks — only AI-triggered ones
|
|
74
|
-
// (User tasks are intentional; AI tasks are part of backlog automation)
|
|
75
|
-
if (failedTask.origin === "user") {
|
|
76
|
-
return false;
|
|
77
|
-
}
|
|
78
|
-
// Don't recover recovery agents — prevents recursive Fix: Fix: Fix: chains
|
|
79
|
-
if (isRecoveryTask(failedTask)) {
|
|
80
|
-
logActivity({ source: "agent", summary: `Recovery skipped (is already a recovery agent): ${failedTask.label}`, actionLabel: "AUTONOMOUS", reason: "prevent recovery chain" });
|
|
81
|
-
recordRecoveryFailure();
|
|
82
|
-
return false;
|
|
83
|
-
}
|
|
84
|
-
// Check global recovery circuit breaker
|
|
85
|
-
if (!isRecoveryAllowed()) {
|
|
86
|
-
logActivity({ source: "agent", summary: `Recovery skipped (circuit breaker open): ${failedTask.label}`, actionLabel: "AUTONOMOUS", reason: "recovery circuit breaker" });
|
|
87
|
-
return false;
|
|
88
|
-
}
|
|
89
|
-
recoveryAttempted.add(failedTask.id);
|
|
90
|
-
// Extract the most useful part of the error output (tail)
|
|
91
|
-
const errorTail = output.length > MAX_ERROR_CONTEXT
|
|
92
|
-
? "...(truncated)\n" + output.slice(-MAX_ERROR_CONTEXT)
|
|
93
|
-
: output;
|
|
94
|
-
const recoveryPrompt = [
|
|
95
|
-
`A previous agent task failed. Your job is to diagnose the failure and fix the issue.`,
|
|
96
|
-
``,
|
|
97
|
-
`## Original task`,
|
|
98
|
-
`Label: ${failedTask.label}`,
|
|
99
|
-
`Exit code: ${failedTask.exitCode ?? "unknown"}`,
|
|
100
|
-
``,
|
|
101
|
-
`## Original prompt`,
|
|
102
|
-
failedTask.prompt,
|
|
103
|
-
``,
|
|
104
|
-
`## Error output from the failed agent`,
|
|
105
|
-
`\`\`\``,
|
|
106
|
-
errorTail,
|
|
107
|
-
`\`\`\``,
|
|
108
|
-
``,
|
|
109
|
-
`## Your instructions`,
|
|
110
|
-
`1. Read the error output carefully and identify the root cause.`,
|
|
111
|
-
`2. Common causes: missing imports, type errors, file not found, build failures, missing dependencies.`,
|
|
112
|
-
`3. Fix the root cause in the codebase. Make the minimum change needed.`,
|
|
113
|
-
`4. If the original task was partially completed, finish the remaining work.`,
|
|
114
|
-
`5. Run \`npm run build\` to verify your fix compiles.`,
|
|
115
|
-
`6. If the failure is due to an external issue you can't fix (missing API key, network error, etc.), ` +
|
|
116
|
-
`just create a brief note at brain/knowledge/notes/ explaining what went wrong and what's needed.`,
|
|
117
|
-
].join("\n");
|
|
118
|
-
try {
|
|
119
|
-
const task = await submitTask({
|
|
120
|
-
label: `Fix: ${failedTask.label}`,
|
|
121
|
-
prompt: recoveryPrompt,
|
|
122
|
-
origin: "ai",
|
|
123
|
-
sessionId: failedTask.sessionId,
|
|
124
|
-
timeoutMs: Math.min(failedTask.timeoutMs ?? RECOVERY_MAX_TIMEOUT_MS, RECOVERY_MAX_TIMEOUT_MS),
|
|
125
|
-
// DASH-143: Forward boardTaskId so recovery agent failures contribute
|
|
126
|
-
// to the original board task's cooldown escalation.
|
|
127
|
-
boardTaskId: failedTask.boardTaskId,
|
|
128
|
-
});
|
|
129
|
-
logActivity({
|
|
130
|
-
source: "agent",
|
|
131
|
-
summary: `Recovery agent spawned for: ${failedTask.label}`,
|
|
132
|
-
detail: `Recovery task ${task.id}`,
|
|
133
|
-
actionLabel: "AUTONOMOUS",
|
|
134
|
-
reason: "auto-recovery from agent failure",
|
|
135
|
-
});
|
|
136
|
-
return true;
|
|
137
|
-
}
|
|
138
|
-
catch (err) {
|
|
139
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
140
|
-
logActivity({ source: "agent", summary: `Recovery spawn failed: ${msg}`, actionLabel: "AUTONOMOUS", reason: "auto-recovery spawn failed" });
|
|
141
|
-
return false;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
/** Clear recovery tracking (e.g., on session reset). */
|
|
145
|
-
export function clearRecoveryTracking() {
|
|
146
|
-
recoveryAttempted.clear();
|
|
147
|
-
recentRecoveryFailures.length = 0;
|
|
148
|
-
recoveryCooldownUntil = 0;
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Prune the recoveryAttempted set to prevent unbounded memory growth.
|
|
152
|
-
* Called periodically (e.g., from monitor). Keeps only the most recent entries.
|
|
153
|
-
*/
|
|
154
|
-
export function pruneRecoveryTracking(maxSize = 200) {
|
|
155
|
-
if (recoveryAttempted.size <= maxSize)
|
|
156
|
-
return;
|
|
157
|
-
// Sets iterate in insertion order — delete oldest entries
|
|
158
|
-
const excess = recoveryAttempted.size - maxSize;
|
|
159
|
-
let i = 0;
|
|
160
|
-
for (const id of recoveryAttempted) {
|
|
161
|
-
if (i++ >= excess)
|
|
162
|
-
break;
|
|
163
|
-
recoveryAttempted.delete(id);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
//# sourceMappingURL=recover.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"recover.js","sourceRoot":"","sources":["../../src/agents/recover.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Session-level reflection engine.
|
|
3
|
-
* Consolidates per-agent reflections into a session summary,
|
|
4
|
-
* writes to decisions.jsonl, and triggers loop lifecycle when appropriate.
|
|
5
|
-
*/
|
|
6
|
-
import { join } from "node:path";
|
|
7
|
-
import { randomBytes } from "node:crypto";
|
|
8
|
-
import { completeChat } from "../llm/complete.js";
|
|
9
|
-
import { resolveAgentProvider, resolveAgentModelAsync } from "../settings.js";
|
|
10
|
-
import { listTasks } from "./store.js";
|
|
11
|
-
import { loadLoops } from "../openloop/store.js";
|
|
12
|
-
import { logActivity } from "../activity/log.js";
|
|
13
|
-
import { createLogger } from "../utils/logger.js";
|
|
14
|
-
import { getInstanceName } from "../instance.js";
|
|
15
|
-
import { appendBrainLine } from "../lib/brain-io.js";
|
|
16
|
-
import { BRAIN_DIR } from "../lib/paths.js";
|
|
17
|
-
const log = createLogger("session-reflection");
|
|
18
|
-
const DECISIONS_FILE = join(BRAIN_DIR, "memory", "decisions.jsonl");
|
|
19
|
-
let reflectionCache = null;
|
|
20
|
-
const CACHE_TTL_MS = 30 * 60 * 1000; // 30 min — stale cache is worse than an LLM call
|
|
21
|
-
/**
|
|
22
|
-
* Build a fingerprint from the structural content of a reflection input.
|
|
23
|
-
* If two consecutive rounds have the same fingerprint, the cached strategy
|
|
24
|
-
* can be reused without an LLM call.
|
|
25
|
-
*/
|
|
26
|
-
function buildFingerprint(results, loopCount) {
|
|
27
|
-
const sorted = [...results].sort((a, b) => a.label.localeCompare(b.label));
|
|
28
|
-
const pattern = sorted.map((r) => `${r.label}:${r.status}`).join("|");
|
|
29
|
-
return `${pattern}#loops=${loopCount}`;
|
|
30
|
-
}
|
|
31
|
-
// ─── LLM prompt ─────────────────────────────────────────────────────────────
|
|
32
|
-
function getReflectionSystemPrompt() {
|
|
33
|
-
return `You are ${getInstanceName()}'s session-level reflection engine. You synthesize learnings from a batch of autonomous agent tasks.
|
|
34
|
-
|
|
35
|
-
Given:
|
|
36
|
-
- Batch results (labels + statuses)
|
|
37
|
-
- Per-agent reflections (JSON from completed tasks)
|
|
38
|
-
- Per-agent output summaries
|
|
39
|
-
- Active open loop anchors and dissonances
|
|
40
|
-
|
|
41
|
-
Produce a JSON object (no markdown fences, no extra text):
|
|
42
|
-
{
|
|
43
|
-
"context": "1-2 sentence summary of this session round",
|
|
44
|
-
"successes": ["what went well — be specific"],
|
|
45
|
-
"failures": ["what failed — be specific"],
|
|
46
|
-
"rootCauses": ["underlying reasons for failures, not symptoms"],
|
|
47
|
-
"loopImpact": [{"loopId": "ol_xxx", "action": "close|merge|flag", "reason": "...", "mergeWith": "ol_yyy (optional)"}],
|
|
48
|
-
"strategyAdjustments": ["concrete changes for next round"],
|
|
49
|
-
"confidenceDelta": 0.0
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
Rules:
|
|
53
|
-
- confidenceDelta: positive if session improved things, negative if it made things worse. Range -1.0 to 1.0.
|
|
54
|
-
- loopImpact: only include loops where the session results clearly affect them. "close" means the tension is resolved. "merge" means two loops should be combined. "flag" means it needs human attention.
|
|
55
|
-
- strategyAdjustments: be concrete. "try X instead of Y" not "improve performance".
|
|
56
|
-
- If nothing meaningful happened, return minimal arrays. Don't invent insights.`;
|
|
57
|
-
}
|
|
58
|
-
// ─── Core ───────────────────────────────────────────────────────────────────
|
|
59
|
-
function generateReflectionId() {
|
|
60
|
-
return "sr_" + randomBytes(4).toString("hex");
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Run session-level reflection after a batch completes.
|
|
64
|
-
* Returns the reflection (for feeding strategy adjustments into the next round),
|
|
65
|
-
* or null if reflection fails or is not useful.
|
|
66
|
-
*/
|
|
67
|
-
export async function reflectOnSession(input) {
|
|
68
|
-
const { sessionId, round, results, isFinal } = input;
|
|
69
|
-
try {
|
|
70
|
-
// Step 1: Load per-agent reflections and summaries for this session.
|
|
71
|
-
// Optimization: use `since` to skip reading old task files from disk.
|
|
72
|
-
// Session tasks are always recent (created within the current autonomous run),
|
|
73
|
-
// so a 2-hour lookback is generous.
|
|
74
|
-
const recentCutoff = Date.now() - 2 * 60 * 60 * 1000;
|
|
75
|
-
const recentTasks = await listTasks({ since: recentCutoff });
|
|
76
|
-
const sessionTasks = recentTasks.filter((t) => t.sessionId === sessionId);
|
|
77
|
-
const agentData = sessionTasks.map((t) => ({
|
|
78
|
-
label: t.label,
|
|
79
|
-
status: t.status,
|
|
80
|
-
reflection: t.reflection ?? null,
|
|
81
|
-
outputSummary: t.resultSummary?.slice(0, 500) ?? "",
|
|
82
|
-
}));
|
|
83
|
-
// Step 2: Load active open loops for context
|
|
84
|
-
const loops = await loadLoops();
|
|
85
|
-
const activeLoops = loops
|
|
86
|
-
.filter((l) => l.state === "active" || l.state === "resonant" || l.state === "dormant")
|
|
87
|
-
.map((l) => ({
|
|
88
|
-
id: l.id,
|
|
89
|
-
anchor: l.anchor,
|
|
90
|
-
dissonance: l.dissonance,
|
|
91
|
-
state: l.state,
|
|
92
|
-
}));
|
|
93
|
-
// Strategy cache check: if the same task pattern + loop count, reuse previous reflection
|
|
94
|
-
const fingerprint = buildFingerprint(results, activeLoops.length);
|
|
95
|
-
if (reflectionCache &&
|
|
96
|
-
reflectionCache.fingerprint === fingerprint &&
|
|
97
|
-
Date.now() - reflectionCache.timestamp < CACHE_TTL_MS &&
|
|
98
|
-
!isFinal // always run LLM for final reflections
|
|
99
|
-
) {
|
|
100
|
-
log.info(`Strategy cache hit for session ${sessionId} round ${round} — reusing previous reflection`);
|
|
101
|
-
const cached = {
|
|
102
|
-
...reflectionCache.reflection,
|
|
103
|
-
id: generateReflectionId(),
|
|
104
|
-
date: new Date().toISOString(),
|
|
105
|
-
sessionId,
|
|
106
|
-
round,
|
|
107
|
-
};
|
|
108
|
-
await appendBrainLine(DECISIONS_FILE, JSON.stringify(cached));
|
|
109
|
-
logActivity({
|
|
110
|
-
source: "agent",
|
|
111
|
-
summary: `Session reflection (round ${round}, cached): ${cached.context}`,
|
|
112
|
-
actionLabel: "REFLECTIVE",
|
|
113
|
-
reason: "strategy cache hit",
|
|
114
|
-
});
|
|
115
|
-
return cached;
|
|
116
|
-
}
|
|
117
|
-
// Step 3: Build the LLM prompt
|
|
118
|
-
const userContent = JSON.stringify({
|
|
119
|
-
sessionId,
|
|
120
|
-
round,
|
|
121
|
-
isFinal,
|
|
122
|
-
batchResults: results,
|
|
123
|
-
agentReflections: agentData,
|
|
124
|
-
activeOpenLoops: activeLoops.slice(0, 20), // cap to avoid token bloat
|
|
125
|
-
}, null, 2);
|
|
126
|
-
// Step 4: Call LLM
|
|
127
|
-
const provider = resolveAgentProvider();
|
|
128
|
-
const model = await resolveAgentModelAsync();
|
|
129
|
-
const response = await completeChat({
|
|
130
|
-
messages: [
|
|
131
|
-
{ role: "system", content: getReflectionSystemPrompt() },
|
|
132
|
-
{ role: "user", content: userContent },
|
|
133
|
-
],
|
|
134
|
-
model,
|
|
135
|
-
provider,
|
|
136
|
-
});
|
|
137
|
-
// Step 5: Parse JSON response
|
|
138
|
-
let jsonStr = response.trim();
|
|
139
|
-
const fenceMatch = jsonStr.match(/```(?:json)?\s*([\s\S]*?)```/);
|
|
140
|
-
if (fenceMatch)
|
|
141
|
-
jsonStr = fenceMatch[1].trim();
|
|
142
|
-
const objMatch = jsonStr.match(/\{[\s\S]*\}/);
|
|
143
|
-
if (!objMatch) {
|
|
144
|
-
log.warn(`No JSON in reflection response: ${response.slice(0, 200)}`);
|
|
145
|
-
return null;
|
|
146
|
-
}
|
|
147
|
-
const parsed = JSON.parse(objMatch[0]);
|
|
148
|
-
// Step 6: Build the SessionReflection record
|
|
149
|
-
const reflection = {
|
|
150
|
-
id: generateReflectionId(),
|
|
151
|
-
date: new Date().toISOString(),
|
|
152
|
-
sessionId,
|
|
153
|
-
round,
|
|
154
|
-
context: parsed.context ?? "",
|
|
155
|
-
successes: parsed.successes ?? [],
|
|
156
|
-
failures: parsed.failures ?? [],
|
|
157
|
-
rootCauses: parsed.rootCauses ?? [],
|
|
158
|
-
loopImpact: parsed.loopImpact ?? [],
|
|
159
|
-
strategyAdjustments: parsed.strategyAdjustments ?? [],
|
|
160
|
-
confidenceDelta: parsed.confidenceDelta ?? 0,
|
|
161
|
-
status: "active",
|
|
162
|
-
};
|
|
163
|
-
// Update strategy cache for potential reuse in next round
|
|
164
|
-
reflectionCache = { fingerprint, reflection, timestamp: Date.now() };
|
|
165
|
-
// Step 7: Append to decisions.jsonl (encrypted via brain-io)
|
|
166
|
-
await appendBrainLine(DECISIONS_FILE, JSON.stringify(reflection));
|
|
167
|
-
// Step 8: Log activity
|
|
168
|
-
logActivity({
|
|
169
|
-
source: "agent",
|
|
170
|
-
summary: `Session reflection (round ${round}${isFinal ? ", final" : ""}): ${reflection.context}`,
|
|
171
|
-
detail: JSON.stringify({
|
|
172
|
-
id: reflection.id,
|
|
173
|
-
successes: reflection.successes.length,
|
|
174
|
-
failures: reflection.failures.length,
|
|
175
|
-
adjustments: reflection.strategyAdjustments.length,
|
|
176
|
-
loopImpacts: reflection.loopImpact.length,
|
|
177
|
-
}),
|
|
178
|
-
actionLabel: "REFLECTIVE",
|
|
179
|
-
reason: "session-level reflection consolidation",
|
|
180
|
-
});
|
|
181
|
-
log.info(`Reflected on session ${sessionId} round ${round}: ${reflection.successes.length} successes, ${reflection.failures.length} failures, ${reflection.strategyAdjustments.length} adjustments`);
|
|
182
|
-
// Step 9: If final round, trigger loop lifecycle with reflection actions
|
|
183
|
-
if (isFinal && reflection.loopImpact.length > 0) {
|
|
184
|
-
try {
|
|
185
|
-
const { runLoopLifecycle } = await import("../openloop/lifecycle.js");
|
|
186
|
-
await runLoopLifecycle(reflection.loopImpact);
|
|
187
|
-
}
|
|
188
|
-
catch (err) {
|
|
189
|
-
log.warn(`Loop lifecycle trigger failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
return reflection;
|
|
193
|
-
}
|
|
194
|
-
catch (err) {
|
|
195
|
-
log.warn(`Session reflection failed for ${sessionId} round ${round}: ${err instanceof Error ? err.message : String(err)}`);
|
|
196
|
-
return null;
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
//# sourceMappingURL=reflection.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reflection.js","sourceRoot":"","sources":["../../src/agents/reflection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent Runtime Environment — Inter-agent event bus.
|
|
3
|
-
*
|
|
4
|
-
* EventEmitter-based pub/sub with typed events, message routing,
|
|
5
|
-
* and request/response correlation patterns.
|
|
6
|
-
*/
|
|
7
|
-
import { EventEmitter } from "node:events";
|
|
8
|
-
import { randomBytes } from "node:crypto";
|
|
9
|
-
export class RuntimeBus {
|
|
10
|
-
emitter = new EventEmitter();
|
|
11
|
-
/** Pending request/response callbacks keyed by correlationId. */
|
|
12
|
-
pendingRequests = new Map();
|
|
13
|
-
/** Per-agent message subscriptions. */
|
|
14
|
-
agentSubscriptions = new Map();
|
|
15
|
-
constructor() {
|
|
16
|
-
// Prevent memory leak warnings for many agent listeners
|
|
17
|
-
this.emitter.setMaxListeners(200);
|
|
18
|
-
}
|
|
19
|
-
// -------------------------------------------------------------------------
|
|
20
|
-
// Typed pub/sub for runtime events
|
|
21
|
-
// -------------------------------------------------------------------------
|
|
22
|
-
on(event, handler) {
|
|
23
|
-
this.emitter.on(event, handler);
|
|
24
|
-
}
|
|
25
|
-
off(event, handler) {
|
|
26
|
-
this.emitter.off(event, handler);
|
|
27
|
-
}
|
|
28
|
-
once(event, handler) {
|
|
29
|
-
this.emitter.once(event, handler);
|
|
30
|
-
}
|
|
31
|
-
emit(event, data) {
|
|
32
|
-
this.emitter.emit(event, data);
|
|
33
|
-
}
|
|
34
|
-
// -------------------------------------------------------------------------
|
|
35
|
-
// Inter-agent messaging
|
|
36
|
-
// -------------------------------------------------------------------------
|
|
37
|
-
/** Send a message to a specific agent or broadcast to all. */
|
|
38
|
-
send(message) {
|
|
39
|
-
const full = {
|
|
40
|
-
...message,
|
|
41
|
-
id: generateMessageId(),
|
|
42
|
-
timestamp: new Date().toISOString(),
|
|
43
|
-
};
|
|
44
|
-
// Check if this is a response to a pending request
|
|
45
|
-
if (full.correlationId && this.pendingRequests.has(full.correlationId)) {
|
|
46
|
-
const pending = this.pendingRequests.get(full.correlationId);
|
|
47
|
-
this.pendingRequests.delete(full.correlationId);
|
|
48
|
-
clearTimeout(pending.timer);
|
|
49
|
-
pending.resolve(full);
|
|
50
|
-
}
|
|
51
|
-
// Emit on the bus for listeners
|
|
52
|
-
this.emit("agent:message", full);
|
|
53
|
-
return full;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Send a request and wait for a correlated response.
|
|
57
|
-
* Times out after timeoutMs (default 30s).
|
|
58
|
-
*/
|
|
59
|
-
request(message, timeoutMs = 30_000) {
|
|
60
|
-
const correlationId = generateMessageId();
|
|
61
|
-
return new Promise((resolve, reject) => {
|
|
62
|
-
const timer = setTimeout(() => {
|
|
63
|
-
this.pendingRequests.delete(correlationId);
|
|
64
|
-
reject(new Error(`Request to ${message.to} timed out after ${timeoutMs}ms`));
|
|
65
|
-
}, timeoutMs);
|
|
66
|
-
this.pendingRequests.set(correlationId, { resolve, reject, timer });
|
|
67
|
-
// Emit the outbound request directly instead of using send() to avoid
|
|
68
|
-
// send()'s correlationId check resolving the pending request immediately
|
|
69
|
-
const outbound = {
|
|
70
|
-
...message,
|
|
71
|
-
correlationId,
|
|
72
|
-
id: generateMessageId(),
|
|
73
|
-
timestamp: new Date().toISOString(),
|
|
74
|
-
};
|
|
75
|
-
this.emit("agent:message", outbound);
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Subscribe an agent to receive messages. When a message is sent to
|
|
80
|
-
* this agent's ID (or broadcast to "*"), the handler is called.
|
|
81
|
-
*/
|
|
82
|
-
subscribe(agentId, handler) {
|
|
83
|
-
if (!this.agentSubscriptions.has(agentId)) {
|
|
84
|
-
this.agentSubscriptions.set(agentId, new Set());
|
|
85
|
-
}
|
|
86
|
-
const wrappedHandler = (msg) => {
|
|
87
|
-
if (msg.to === agentId || msg.to === "*") {
|
|
88
|
-
// Skip expired messages
|
|
89
|
-
if (msg.ttlMs) {
|
|
90
|
-
const age = Date.now() - new Date(msg.timestamp).getTime();
|
|
91
|
-
if (age > msg.ttlMs)
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
handler(msg);
|
|
95
|
-
}
|
|
96
|
-
};
|
|
97
|
-
// Store a key for the handler so we can clean up
|
|
98
|
-
const handlerKey = `msg:${agentId}`;
|
|
99
|
-
this.emitter.on(handlerKey, wrappedHandler);
|
|
100
|
-
this.agentSubscriptions.get(agentId).add(handlerKey);
|
|
101
|
-
// Also listen to the global agent:message topic for routing
|
|
102
|
-
const globalHandler = (msg) => {
|
|
103
|
-
if (msg.to === agentId || msg.to === "*") {
|
|
104
|
-
if (msg.ttlMs) {
|
|
105
|
-
const age = Date.now() - new Date(msg.timestamp).getTime();
|
|
106
|
-
if (age > msg.ttlMs)
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
handler(msg);
|
|
110
|
-
}
|
|
111
|
-
};
|
|
112
|
-
this.emitter.on("agent:message", globalHandler);
|
|
113
|
-
// Store cleanup ref
|
|
114
|
-
this.agentSubscriptions.get(agentId).add(`cleanup:${agentId}:${Date.now()}`);
|
|
115
|
-
// Store actual handler ref for cleanup
|
|
116
|
-
this._globalHandlers.set(agentId, globalHandler);
|
|
117
|
-
}
|
|
118
|
-
// Store global handlers for cleanup
|
|
119
|
-
_globalHandlers = new Map();
|
|
120
|
-
/** Unsubscribe an agent from all messages. */
|
|
121
|
-
unsubscribe(agentId) {
|
|
122
|
-
const handler = this._globalHandlers.get(agentId);
|
|
123
|
-
if (handler) {
|
|
124
|
-
this.emitter.off("agent:message", handler);
|
|
125
|
-
this._globalHandlers.delete(agentId);
|
|
126
|
-
}
|
|
127
|
-
this.agentSubscriptions.delete(agentId);
|
|
128
|
-
}
|
|
129
|
-
// -------------------------------------------------------------------------
|
|
130
|
-
// Lifecycle event helpers
|
|
131
|
-
// -------------------------------------------------------------------------
|
|
132
|
-
emitLifecycle(event) {
|
|
133
|
-
this.emit("agent:lifecycle", event);
|
|
134
|
-
}
|
|
135
|
-
emitError(agentId, error) {
|
|
136
|
-
this.emit("agent:error", { agentId, error });
|
|
137
|
-
}
|
|
138
|
-
emitSpawned(agentId, pid) {
|
|
139
|
-
this.emit("agent:spawned", { agentId, pid });
|
|
140
|
-
}
|
|
141
|
-
emitCompleted(agentId, exitCode) {
|
|
142
|
-
this.emit("agent:completed", { agentId, exitCode });
|
|
143
|
-
}
|
|
144
|
-
emitFailed(agentId, error) {
|
|
145
|
-
this.emit("agent:failed", { agentId, error });
|
|
146
|
-
}
|
|
147
|
-
emitResourceWarning(usage) {
|
|
148
|
-
this.emit("runtime:resource-warning", { usage });
|
|
149
|
-
}
|
|
150
|
-
emitShutdown(reason) {
|
|
151
|
-
this.emit("runtime:shutdown", { reason });
|
|
152
|
-
}
|
|
153
|
-
// -------------------------------------------------------------------------
|
|
154
|
-
// Cleanup
|
|
155
|
-
// -------------------------------------------------------------------------
|
|
156
|
-
/** Clear all listeners and pending requests. For shutdown. */
|
|
157
|
-
destroy() {
|
|
158
|
-
for (const [, pending] of this.pendingRequests) {
|
|
159
|
-
clearTimeout(pending.timer);
|
|
160
|
-
pending.reject(new Error("Bus destroyed"));
|
|
161
|
-
}
|
|
162
|
-
this.pendingRequests.clear();
|
|
163
|
-
this._globalHandlers.clear();
|
|
164
|
-
this.agentSubscriptions.clear();
|
|
165
|
-
this.emitter.removeAllListeners();
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
// ---------------------------------------------------------------------------
|
|
169
|
-
// Helpers
|
|
170
|
-
// ---------------------------------------------------------------------------
|
|
171
|
-
function generateMessageId() {
|
|
172
|
-
return `msg_${Date.now()}_${randomBytes(4).toString("hex")}`;
|
|
173
|
-
}
|
|
174
|
-
//# sourceMappingURL=bus.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bus.js","sourceRoot":"","sources":["../../../src/agents/runtime/bus.ts"],"names":[],"mappings":"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"}
|