@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,101 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent Runtime Environment — Configuration.
|
|
3
|
-
*
|
|
4
|
-
* Loads defaults, merges env var overrides, produces a frozen RuntimeConfig.
|
|
5
|
-
* Environment variables use the CORE_RUNTIME_ prefix (DASH_RUNTIME_ also supported).
|
|
6
|
-
*/
|
|
7
|
-
import { join } from "node:path";
|
|
8
|
-
import { resolveEnv } from "../../instance.js";
|
|
9
|
-
import { BRAIN_DIR } from "../../lib/paths.js";
|
|
10
|
-
// ---------------------------------------------------------------------------
|
|
11
|
-
// Defaults
|
|
12
|
-
// ---------------------------------------------------------------------------
|
|
13
|
-
const DEFAULTS = {
|
|
14
|
-
maxConcurrentAgents: 5,
|
|
15
|
-
defaultTimeoutMs: 10 * 60 * 1000, // 10 minutes
|
|
16
|
-
defaultMaxRetries: 2,
|
|
17
|
-
defaultBackoffMs: 2_000,
|
|
18
|
-
defaultBackoffMultiplier: 2,
|
|
19
|
-
defaultMaxBackoffMs: 30_000,
|
|
20
|
-
maxTotalMemoryMB: 2048, // 2 GB aggregate cap
|
|
21
|
-
defaultMemoryLimitMB: 512,
|
|
22
|
-
defaultCpuWeight: 50,
|
|
23
|
-
monitorIntervalMs: 10_000, // 10 seconds
|
|
24
|
-
persistDir: join(BRAIN_DIR, "agents", "runtime"),
|
|
25
|
-
};
|
|
26
|
-
// ---------------------------------------------------------------------------
|
|
27
|
-
// Env var resolver
|
|
28
|
-
// ---------------------------------------------------------------------------
|
|
29
|
-
function envInt(suffix) {
|
|
30
|
-
const v = resolveEnv(suffix);
|
|
31
|
-
if (v == null)
|
|
32
|
-
return undefined;
|
|
33
|
-
const n = parseInt(v, 10);
|
|
34
|
-
return Number.isFinite(n) ? n : undefined;
|
|
35
|
-
}
|
|
36
|
-
function envStr(suffix) {
|
|
37
|
-
return resolveEnv(suffix) || undefined;
|
|
38
|
-
}
|
|
39
|
-
// ---------------------------------------------------------------------------
|
|
40
|
-
// Public API
|
|
41
|
-
// ---------------------------------------------------------------------------
|
|
42
|
-
/** Build RuntimeConfig from defaults + env var overrides. */
|
|
43
|
-
export function loadRuntimeConfig(overrides) {
|
|
44
|
-
const config = {
|
|
45
|
-
maxConcurrentAgents: overrides?.maxConcurrentAgents ??
|
|
46
|
-
envInt("RUNTIME_MAX_AGENTS") ??
|
|
47
|
-
DEFAULTS.maxConcurrentAgents,
|
|
48
|
-
defaultTimeoutMs: overrides?.defaultTimeoutMs ??
|
|
49
|
-
envInt("RUNTIME_TIMEOUT_MS") ??
|
|
50
|
-
DEFAULTS.defaultTimeoutMs,
|
|
51
|
-
defaultMaxRetries: overrides?.defaultMaxRetries ??
|
|
52
|
-
envInt("RUNTIME_MAX_RETRIES") ??
|
|
53
|
-
DEFAULTS.defaultMaxRetries,
|
|
54
|
-
defaultBackoffMs: overrides?.defaultBackoffMs ??
|
|
55
|
-
envInt("RUNTIME_BACKOFF_MS") ??
|
|
56
|
-
DEFAULTS.defaultBackoffMs,
|
|
57
|
-
defaultBackoffMultiplier: overrides?.defaultBackoffMultiplier ??
|
|
58
|
-
envInt("RUNTIME_BACKOFF_MULT") ??
|
|
59
|
-
DEFAULTS.defaultBackoffMultiplier,
|
|
60
|
-
defaultMaxBackoffMs: overrides?.defaultMaxBackoffMs ??
|
|
61
|
-
envInt("RUNTIME_MAX_BACKOFF_MS") ??
|
|
62
|
-
DEFAULTS.defaultMaxBackoffMs,
|
|
63
|
-
maxTotalMemoryMB: overrides?.maxTotalMemoryMB ??
|
|
64
|
-
envInt("RUNTIME_MAX_MEMORY_MB") ??
|
|
65
|
-
DEFAULTS.maxTotalMemoryMB,
|
|
66
|
-
defaultMemoryLimitMB: overrides?.defaultMemoryLimitMB ??
|
|
67
|
-
envInt("RUNTIME_DEFAULT_MEM_MB") ??
|
|
68
|
-
DEFAULTS.defaultMemoryLimitMB,
|
|
69
|
-
defaultCpuWeight: overrides?.defaultCpuWeight ??
|
|
70
|
-
envInt("RUNTIME_DEFAULT_CPU") ??
|
|
71
|
-
DEFAULTS.defaultCpuWeight,
|
|
72
|
-
monitorIntervalMs: overrides?.monitorIntervalMs ??
|
|
73
|
-
envInt("RUNTIME_MONITOR_MS") ??
|
|
74
|
-
DEFAULTS.monitorIntervalMs,
|
|
75
|
-
persistDir: overrides?.persistDir ??
|
|
76
|
-
envStr("RUNTIME_PERSIST_DIR") ??
|
|
77
|
-
DEFAULTS.persistDir,
|
|
78
|
-
};
|
|
79
|
-
return Object.freeze(config);
|
|
80
|
-
}
|
|
81
|
-
/** Build per-instance config by merging runtime defaults with request overrides. */
|
|
82
|
-
export function resolveInstanceConfig(runtimeConfig, overrides) {
|
|
83
|
-
return {
|
|
84
|
-
timeoutMs: overrides?.timeoutMs ?? runtimeConfig.defaultTimeoutMs,
|
|
85
|
-
maxRetries: overrides?.maxRetries ?? runtimeConfig.defaultMaxRetries,
|
|
86
|
-
backoffMs: overrides?.backoffMs ?? runtimeConfig.defaultBackoffMs,
|
|
87
|
-
backoffMultiplier: overrides?.backoffMultiplier ?? runtimeConfig.defaultBackoffMultiplier,
|
|
88
|
-
maxBackoffMs: overrides?.maxBackoffMs ?? runtimeConfig.defaultMaxBackoffMs,
|
|
89
|
-
env: overrides?.env ?? {},
|
|
90
|
-
isolation: overrides?.isolation ?? "shared",
|
|
91
|
-
priority: overrides?.priority ?? 50,
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
/** Build resource allocation from runtime defaults with request overrides. */
|
|
95
|
-
export function resolveResources(runtimeConfig, overrides) {
|
|
96
|
-
return {
|
|
97
|
-
memoryLimitMB: overrides?.memoryLimitMB ?? runtimeConfig.defaultMemoryLimitMB,
|
|
98
|
-
cpuWeight: overrides?.cpuWeight ?? runtimeConfig.defaultCpuWeight,
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
//# sourceMappingURL=config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/agents/runtime/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent Runtime Environment — Claude CLI agent driver.
|
|
3
|
-
*
|
|
4
|
-
* Implements the AgentDriver interface using the existing Core agent
|
|
5
|
-
* spawn machinery. This bridges the new runtime layer with the proven
|
|
6
|
-
* process spawning in src/agents/spawn.ts.
|
|
7
|
-
*/
|
|
8
|
-
import { spawn } from "node:child_process";
|
|
9
|
-
import { writeFileSync } from "node:fs";
|
|
10
|
-
import { join } from "node:path";
|
|
11
|
-
import { LOGS_DIR } from "../store.js";
|
|
12
|
-
import { createLogger } from "../../utils/logger.js";
|
|
13
|
-
const log = createLogger("agent-driver");
|
|
14
|
-
// ---------------------------------------------------------------------------
|
|
15
|
-
// Process tracking
|
|
16
|
-
// ---------------------------------------------------------------------------
|
|
17
|
-
/** Map of instance ID → child process (only for current session). */
|
|
18
|
-
const processes = new Map();
|
|
19
|
-
/** Map of instance ID → timeout timer. */
|
|
20
|
-
const timers = new Map();
|
|
21
|
-
/** Exit handlers registered per instance. */
|
|
22
|
-
const exitHandlers = new Map();
|
|
23
|
-
// ---------------------------------------------------------------------------
|
|
24
|
-
// Claude CLI Driver
|
|
25
|
-
// ---------------------------------------------------------------------------
|
|
26
|
-
export class ClaudeCliDriver {
|
|
27
|
-
name = "claude-cli";
|
|
28
|
-
/** Register a callback for when a process exits. */
|
|
29
|
-
onExit(instanceId, handler) {
|
|
30
|
-
exitHandlers.set(instanceId, handler);
|
|
31
|
-
}
|
|
32
|
-
async spawn(instance) {
|
|
33
|
-
const stdoutPath = join(LOGS_DIR, `${instance.taskId}.stdout.log`);
|
|
34
|
-
const stderrPath = join(LOGS_DIR, `${instance.taskId}.stderr.log`);
|
|
35
|
-
const promptPath = join(LOGS_DIR, `${instance.taskId}.prompt.txt`);
|
|
36
|
-
// Resolve prompt: if resuming with checkpoint, prepend context
|
|
37
|
-
const prompt = instance.checkpointData
|
|
38
|
-
? `[Resuming from previous session]\n\nPrevious context:\n${instance.checkpointData}\n\nContinue the task.`
|
|
39
|
-
: this.resolvePrompt(instance);
|
|
40
|
-
writeFileSync(promptPath, prompt, "utf-8");
|
|
41
|
-
// Clean env to allow nested Claude Code sessions
|
|
42
|
-
const cleanEnv = { ...process.env, ...instance.config.env };
|
|
43
|
-
delete cleanEnv.CLAUDECODE;
|
|
44
|
-
const taskCwd = instance.cwd || process.cwd();
|
|
45
|
-
const wrapperScript = `
|
|
46
|
-
const fs = require("fs");
|
|
47
|
-
const { spawnSync } = require("child_process");
|
|
48
|
-
const prompt = fs.readFileSync(${JSON.stringify(promptPath)}, "utf-8");
|
|
49
|
-
const r = spawnSync("claude", [
|
|
50
|
-
"--print", "--output-format", "text", "--dangerously-skip-permissions", prompt
|
|
51
|
-
], {
|
|
52
|
-
cwd: ${JSON.stringify(taskCwd)},
|
|
53
|
-
encoding: "utf-8",
|
|
54
|
-
maxBuffer: 50 * 1024 * 1024,
|
|
55
|
-
timeout: ${instance.config.timeoutMs},
|
|
56
|
-
windowsHide: true
|
|
57
|
-
});
|
|
58
|
-
fs.writeFileSync(${JSON.stringify(stdoutPath)}, r.stdout || "", "utf-8");
|
|
59
|
-
fs.writeFileSync(${JSON.stringify(stderrPath)}, r.stderr || "", "utf-8");
|
|
60
|
-
process.exit(r.status || 0);
|
|
61
|
-
`;
|
|
62
|
-
const child = spawn(process.execPath, ["--eval", wrapperScript], {
|
|
63
|
-
cwd: taskCwd,
|
|
64
|
-
detached: true,
|
|
65
|
-
stdio: "ignore",
|
|
66
|
-
env: cleanEnv,
|
|
67
|
-
windowsHide: true,
|
|
68
|
-
});
|
|
69
|
-
child.unref();
|
|
70
|
-
processes.set(instance.id, child);
|
|
71
|
-
log.info("Agent process spawned", { instanceId: instance.id, taskId: instance.taskId, pid: child.pid, label: instance.metadata.label });
|
|
72
|
-
// Wire exit handler — classify exit reason for diagnostics
|
|
73
|
-
child.on("exit", (code, signal) => {
|
|
74
|
-
const reason = signal
|
|
75
|
-
? `signal:${signal}` // killed externally or by timeout
|
|
76
|
-
: code === null
|
|
77
|
-
? "exit:null (likely timeout or OOM)"
|
|
78
|
-
: code === 0
|
|
79
|
-
? "clean exit"
|
|
80
|
-
: `exit code ${code}`;
|
|
81
|
-
log.info("Agent process exited", { instanceId: instance.id, taskId: instance.taskId, exitCode: code, signal, reason });
|
|
82
|
-
// Log stderr content for failed exits to aid debugging
|
|
83
|
-
if (code !== 0) {
|
|
84
|
-
import("node:fs/promises").then(({ readFile }) => readFile(stderrPath, "utf-8").then((stderr) => {
|
|
85
|
-
if (stderr.trim()) {
|
|
86
|
-
log.warn("Agent stderr output", { instanceId: instance.id, stderr: stderr.slice(-1000) });
|
|
87
|
-
}
|
|
88
|
-
})).catch(() => { });
|
|
89
|
-
}
|
|
90
|
-
processes.delete(instance.id);
|
|
91
|
-
clearTimer(instance.id);
|
|
92
|
-
const handler = exitHandlers.get(instance.id);
|
|
93
|
-
if (handler) {
|
|
94
|
-
exitHandlers.delete(instance.id);
|
|
95
|
-
// Small delay for file flush
|
|
96
|
-
setTimeout(() => handler(code), 300);
|
|
97
|
-
}
|
|
98
|
-
});
|
|
99
|
-
// Wire error handler
|
|
100
|
-
child.on("error", (err) => {
|
|
101
|
-
log.error("Agent process error", { instanceId: instance.id, taskId: instance.taskId, error: err.message });
|
|
102
|
-
processes.delete(instance.id);
|
|
103
|
-
clearTimer(instance.id);
|
|
104
|
-
const handler = exitHandlers.get(instance.id);
|
|
105
|
-
if (handler) {
|
|
106
|
-
exitHandlers.delete(instance.id);
|
|
107
|
-
handler(-1);
|
|
108
|
-
}
|
|
109
|
-
});
|
|
110
|
-
// Set timeout
|
|
111
|
-
if (instance.config.timeoutMs > 0) {
|
|
112
|
-
const timer = setTimeout(() => {
|
|
113
|
-
if (processes.has(instance.id)) {
|
|
114
|
-
this.terminate(instance).catch(() => { });
|
|
115
|
-
}
|
|
116
|
-
}, instance.config.timeoutMs);
|
|
117
|
-
timers.set(instance.id, timer);
|
|
118
|
-
}
|
|
119
|
-
return child.pid;
|
|
120
|
-
}
|
|
121
|
-
async pause(instance) {
|
|
122
|
-
log.info("Pausing agent process", { instanceId: instance.id, taskId: instance.taskId });
|
|
123
|
-
// Claude CLI processes can't be truly paused. We kill the process
|
|
124
|
-
// and save partial output as checkpoint data for resumption.
|
|
125
|
-
const child = processes.get(instance.id);
|
|
126
|
-
if (!child)
|
|
127
|
-
return undefined;
|
|
128
|
-
// Read any output so far as checkpoint
|
|
129
|
-
let checkpoint;
|
|
130
|
-
try {
|
|
131
|
-
const { readFile } = await import("node:fs/promises");
|
|
132
|
-
const stdout = await readFile(join(LOGS_DIR, `${instance.taskId}.stdout.log`), "utf-8");
|
|
133
|
-
if (stdout.trim()) {
|
|
134
|
-
checkpoint = stdout.trim().slice(0, 2000);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
catch {
|
|
138
|
-
// No output yet
|
|
139
|
-
}
|
|
140
|
-
// Kill the process
|
|
141
|
-
await this.terminate(instance);
|
|
142
|
-
return checkpoint;
|
|
143
|
-
}
|
|
144
|
-
async resume(instance, checkpoint) {
|
|
145
|
-
// Store checkpoint data on the instance for spawn to use
|
|
146
|
-
if (checkpoint) {
|
|
147
|
-
instance.checkpointData = checkpoint;
|
|
148
|
-
}
|
|
149
|
-
return this.spawn(instance);
|
|
150
|
-
}
|
|
151
|
-
async terminate(instance) {
|
|
152
|
-
log.info("Terminating agent process", { instanceId: instance.id, taskId: instance.taskId, pid: instance.pid });
|
|
153
|
-
const child = processes.get(instance.id);
|
|
154
|
-
clearTimer(instance.id);
|
|
155
|
-
exitHandlers.delete(instance.id);
|
|
156
|
-
if (!child)
|
|
157
|
-
return;
|
|
158
|
-
processes.delete(instance.id);
|
|
159
|
-
try {
|
|
160
|
-
if (process.platform === "win32" && child.pid) {
|
|
161
|
-
spawn("taskkill", ["/pid", String(child.pid), "/T", "/F"], { shell: true });
|
|
162
|
-
}
|
|
163
|
-
else {
|
|
164
|
-
child.kill("SIGTERM");
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
catch {
|
|
168
|
-
log.debug("Process already exited during terminate", { instanceId: instance.id });
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
isAlive(instance) {
|
|
172
|
-
// Check our tracked processes first
|
|
173
|
-
if (processes.has(instance.id))
|
|
174
|
-
return true;
|
|
175
|
-
// Fall back to PID check for recovered processes
|
|
176
|
-
if (instance.pid) {
|
|
177
|
-
try {
|
|
178
|
-
process.kill(instance.pid, 0);
|
|
179
|
-
return true;
|
|
180
|
-
}
|
|
181
|
-
catch {
|
|
182
|
-
return false;
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
return false;
|
|
186
|
-
}
|
|
187
|
-
// -----------------------------------------------------------------------
|
|
188
|
-
// Helpers
|
|
189
|
-
// -----------------------------------------------------------------------
|
|
190
|
-
resolvePrompt(instance) {
|
|
191
|
-
// The prompt is stored on the linked AgentTask.
|
|
192
|
-
// The runtime manager will set this before calling spawn.
|
|
193
|
-
return instance._prompt ?? "";
|
|
194
|
-
}
|
|
195
|
-
/** Get the process for an instance (for monitoring). */
|
|
196
|
-
getProcess(instanceId) {
|
|
197
|
-
return processes.get(instanceId);
|
|
198
|
-
}
|
|
199
|
-
/** Get all tracked instance IDs. */
|
|
200
|
-
getActiveIds() {
|
|
201
|
-
return Array.from(processes.keys());
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
// ---------------------------------------------------------------------------
|
|
205
|
-
// Helpers
|
|
206
|
-
// ---------------------------------------------------------------------------
|
|
207
|
-
function clearTimer(instanceId) {
|
|
208
|
-
const timer = timers.get(instanceId);
|
|
209
|
-
if (timer) {
|
|
210
|
-
clearTimeout(timer);
|
|
211
|
-
timers.delete(instanceId);
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
//# sourceMappingURL=driver.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"driver.js","sourceRoot":"","sources":["../../../src/agents/runtime/driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent Runtime Environment — Error types and codes.
|
|
3
|
-
*/
|
|
4
|
-
/** Runtime-specific error with structured code and recoverability flag. */
|
|
5
|
-
export class RuntimeError extends Error {
|
|
6
|
-
code;
|
|
7
|
-
recoverable;
|
|
8
|
-
context;
|
|
9
|
-
constructor(code, message, recoverable = false, context) {
|
|
10
|
-
super(message);
|
|
11
|
-
this.code = code;
|
|
12
|
-
this.recoverable = recoverable;
|
|
13
|
-
this.context = context;
|
|
14
|
-
this.name = "RuntimeError";
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
/** All known error codes. */
|
|
18
|
-
export const ErrorCodes = {
|
|
19
|
-
// Resource limits
|
|
20
|
-
RESOURCE_EXHAUSTED: "RESOURCE_EXHAUSTED",
|
|
21
|
-
MAX_AGENTS_REACHED: "MAX_AGENTS_REACHED",
|
|
22
|
-
MEMORY_LIMIT_EXCEEDED: "MEMORY_LIMIT_EXCEEDED",
|
|
23
|
-
// Lifecycle
|
|
24
|
-
INVALID_TRANSITION: "INVALID_TRANSITION",
|
|
25
|
-
AGENT_NOT_FOUND: "AGENT_NOT_FOUND",
|
|
26
|
-
ALREADY_TERMINATED: "ALREADY_TERMINATED",
|
|
27
|
-
// Spawning
|
|
28
|
-
SPAWN_FAILED: "SPAWN_FAILED",
|
|
29
|
-
RESUME_FAILED: "RESUME_FAILED",
|
|
30
|
-
PAUSE_NOT_SUPPORTED: "PAUSE_NOT_SUPPORTED",
|
|
31
|
-
// Execution
|
|
32
|
-
TIMEOUT: "TIMEOUT",
|
|
33
|
-
DRIVER_ERROR: "DRIVER_ERROR",
|
|
34
|
-
MAX_RETRIES_EXCEEDED: "MAX_RETRIES_EXCEEDED",
|
|
35
|
-
// System
|
|
36
|
-
SHUTDOWN_IN_PROGRESS: "SHUTDOWN_IN_PROGRESS",
|
|
37
|
-
REGISTRY_CORRUPT: "REGISTRY_CORRUPT",
|
|
38
|
-
BUS_DELIVERY_FAILED: "BUS_DELIVERY_FAILED",
|
|
39
|
-
};
|
|
40
|
-
//# sourceMappingURL=errors.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/agents/runtime/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,2EAA2E;AAC3E,MAAM,OAAO,YAAa,SAAQ,KAAK;IAEnB;IAEA;IACA;IAJlB,YACkB,IAAY,EAC5B,OAAe,EACC,cAAuB,KAAK,EAC5B,OAAiC;QAEjD,KAAK,CAAC,OAAO,CAAC,CAAC;QALC,SAAI,GAAJ,IAAI,CAAQ;QAEZ,gBAAW,GAAX,WAAW,CAAiB;QAC5B,YAAO,GAAP,OAAO,CAA0B;QAGjD,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,6BAA6B;AAC7B,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,kBAAkB;IAClB,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IACxC,qBAAqB,EAAE,uBAAuB;IAE9C,YAAY;IACZ,kBAAkB,EAAE,oBAAoB;IACxC,eAAe,EAAE,iBAAiB;IAClC,kBAAkB,EAAE,oBAAoB;IAExC,WAAW;IACX,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;IAC9B,mBAAmB,EAAE,qBAAqB;IAE1C,YAAY;IACZ,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,cAAc;IAC5B,oBAAoB,EAAE,sBAAsB;IAE5C,SAAS;IACT,oBAAoB,EAAE,sBAAsB;IAC5C,gBAAgB,EAAE,kBAAkB;IACpC,mBAAmB,EAAE,qBAAqB;CAClC,CAAC"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent Runtime Environment — Public API.
|
|
3
|
-
*
|
|
4
|
-
* Re-exports the core runtime components and provides a convenience
|
|
5
|
-
* factory for creating a fully configured RuntimeManager.
|
|
6
|
-
*/
|
|
7
|
-
export { VALID_TRANSITIONS, TERMINAL_STATES } from "./types.js";
|
|
8
|
-
// Errors
|
|
9
|
-
export { RuntimeError, ErrorCodes } from "./errors.js";
|
|
10
|
-
// Configuration
|
|
11
|
-
export { loadRuntimeConfig, resolveInstanceConfig, resolveResources } from "./config.js";
|
|
12
|
-
// Lifecycle state machine
|
|
13
|
-
export { isValidTransition, assertTransition, isTerminal, transition, shouldRetry, prepareRetry, reachableStates, isActive, } from "./lifecycle.js";
|
|
14
|
-
// Resources
|
|
15
|
-
export { ResourcePool } from "./resources.js";
|
|
16
|
-
// Event bus
|
|
17
|
-
export { RuntimeBus } from "./bus.js";
|
|
18
|
-
// Registry
|
|
19
|
-
export { AgentRegistry } from "./registry.js";
|
|
20
|
-
// Driver
|
|
21
|
-
export { ClaudeCliDriver } from "./driver.js";
|
|
22
|
-
// Manager
|
|
23
|
-
export { RuntimeManager } from "./manager.js";
|
|
24
|
-
// ---------------------------------------------------------------------------
|
|
25
|
-
// Factory
|
|
26
|
-
// ---------------------------------------------------------------------------
|
|
27
|
-
import { RuntimeManager } from "./manager.js";
|
|
28
|
-
import { ClaudeCliDriver } from "./driver.js";
|
|
29
|
-
/** Module-level singleton. */
|
|
30
|
-
let _manager = null;
|
|
31
|
-
/**
|
|
32
|
-
* Create and initialize a RuntimeManager with the default Claude CLI driver.
|
|
33
|
-
* Returns the same instance on subsequent calls (singleton).
|
|
34
|
-
*/
|
|
35
|
-
export async function createRuntime(configOverrides) {
|
|
36
|
-
if (_manager)
|
|
37
|
-
return _manager;
|
|
38
|
-
const driver = new ClaudeCliDriver();
|
|
39
|
-
_manager = new RuntimeManager(driver, configOverrides);
|
|
40
|
-
await _manager.init();
|
|
41
|
-
return _manager;
|
|
42
|
-
}
|
|
43
|
-
/** Get the current runtime manager (or null if not initialized). */
|
|
44
|
-
export function getRuntime() {
|
|
45
|
-
return _manager;
|
|
46
|
-
}
|
|
47
|
-
/** Shut down and clear the singleton runtime. */
|
|
48
|
-
export async function shutdownRuntime(reason) {
|
|
49
|
-
if (_manager) {
|
|
50
|
-
await _manager.shutdown(reason);
|
|
51
|
-
_manager = null;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agents/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAmBH,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEhE,SAAS;AACT,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGvD,gBAAgB;AAChB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEzF,0BAA0B;AAC1B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,WAAW,EACX,YAAY,EACZ,eAAe,EACf,QAAQ,GACT,MAAM,gBAAgB,CAAC;AAExB,YAAY;AACZ,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,YAAY;AACZ,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,WAAW;AACX,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,SAAS;AACT,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,UAAU;AACV,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,8BAA8B;AAC9B,IAAI,QAAQ,GAA0B,IAAI,CAAC;AAE3C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,eAAwC;IAExC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACvD,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEtB,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,UAAU;IACxB,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,iDAAiD;AACjD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAe;IACnD,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAChC,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent Runtime Environment — Lifecycle state machine.
|
|
3
|
-
*
|
|
4
|
-
* Enforces valid state transitions with guards and hooks.
|
|
5
|
-
* Every transition is validated, timestamped, and emits a LifecycleEvent.
|
|
6
|
-
*/
|
|
7
|
-
import { VALID_TRANSITIONS, TERMINAL_STATES } from "./types.js";
|
|
8
|
-
import { RuntimeError, ErrorCodes } from "./errors.js";
|
|
9
|
-
// ---------------------------------------------------------------------------
|
|
10
|
-
// Transition validation
|
|
11
|
-
// ---------------------------------------------------------------------------
|
|
12
|
-
/** Check if a transition from → to is valid per the state machine. */
|
|
13
|
-
export function isValidTransition(from, to) {
|
|
14
|
-
return VALID_TRANSITIONS[from]?.includes(to) ?? false;
|
|
15
|
-
}
|
|
16
|
-
/** Assert a transition is valid; throw RuntimeError if not. */
|
|
17
|
-
export function assertTransition(from, to) {
|
|
18
|
-
if (!isValidTransition(from, to)) {
|
|
19
|
-
throw new RuntimeError(ErrorCodes.INVALID_TRANSITION, `Invalid state transition: ${from} → ${to}`, false, { from, to, validTargets: VALID_TRANSITIONS[from] });
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
/** Check if an agent is in a terminal state. */
|
|
23
|
-
export function isTerminal(state) {
|
|
24
|
-
return TERMINAL_STATES.has(state);
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Apply a state transition to an agent instance.
|
|
28
|
-
*
|
|
29
|
-
* - Validates the transition
|
|
30
|
-
* - Updates state + timestamps
|
|
31
|
-
* - Returns the LifecycleEvent for emission
|
|
32
|
-
*
|
|
33
|
-
* Mutates the instance in place (consistent with existing Core patterns).
|
|
34
|
-
*/
|
|
35
|
-
export function transition(instance, newState, reason, error) {
|
|
36
|
-
assertTransition(instance.state, newState);
|
|
37
|
-
const event = {
|
|
38
|
-
agentId: instance.id,
|
|
39
|
-
previousState: instance.state,
|
|
40
|
-
newState,
|
|
41
|
-
timestamp: new Date().toISOString(),
|
|
42
|
-
reason,
|
|
43
|
-
};
|
|
44
|
-
instance.state = newState;
|
|
45
|
-
instance.updatedAt = event.timestamp;
|
|
46
|
-
// Set state-specific timestamps
|
|
47
|
-
if (newState === "paused") {
|
|
48
|
-
instance.pausedAt = event.timestamp;
|
|
49
|
-
}
|
|
50
|
-
else if (isTerminal(newState)) {
|
|
51
|
-
instance.terminatedAt = event.timestamp;
|
|
52
|
-
}
|
|
53
|
-
// Attach error if transitioning to failed
|
|
54
|
-
if (newState === "failed" && error) {
|
|
55
|
-
instance.error = error;
|
|
56
|
-
}
|
|
57
|
-
return event;
|
|
58
|
-
}
|
|
59
|
-
// ---------------------------------------------------------------------------
|
|
60
|
-
// Retry logic
|
|
61
|
-
// ---------------------------------------------------------------------------
|
|
62
|
-
/**
|
|
63
|
-
* Determine if an agent should be retried after failure.
|
|
64
|
-
* Returns the delay in ms before retry, or null if no retry should occur.
|
|
65
|
-
*
|
|
66
|
-
* Uses exponential backoff with jitter to prevent thundering-herd when
|
|
67
|
-
* multiple agents fail simultaneously.
|
|
68
|
-
*/
|
|
69
|
-
export function shouldRetry(instance) {
|
|
70
|
-
const { maxRetries, backoffMs, backoffMultiplier, maxBackoffMs } = instance.config;
|
|
71
|
-
if (instance.retryCount >= maxRetries)
|
|
72
|
-
return null;
|
|
73
|
-
if (instance.error && !instance.error.recoverable)
|
|
74
|
-
return null;
|
|
75
|
-
const baseDelay = backoffMs * Math.pow(backoffMultiplier, instance.retryCount);
|
|
76
|
-
// Add ±25% jitter to prevent synchronized retries
|
|
77
|
-
const jitter = baseDelay * 0.25 * (2 * Math.random() - 1);
|
|
78
|
-
const delay = Math.min(Math.max(0, baseDelay + jitter), maxBackoffMs);
|
|
79
|
-
return Math.round(delay);
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Prepare an instance for retry: increment counter, clear error, reset to initializing.
|
|
83
|
-
* Returns the LifecycleEvent for the transition back to initializing.
|
|
84
|
-
*
|
|
85
|
-
* The caller should transition through failed first, then call this to reset.
|
|
86
|
-
* This does a direct state override since failed → initializing isn't in the
|
|
87
|
-
* standard FSM — retries are a runtime-level concern.
|
|
88
|
-
*/
|
|
89
|
-
export function prepareRetry(instance) {
|
|
90
|
-
const event = {
|
|
91
|
-
agentId: instance.id,
|
|
92
|
-
previousState: instance.state,
|
|
93
|
-
newState: "initializing",
|
|
94
|
-
timestamp: new Date().toISOString(),
|
|
95
|
-
reason: `Retry attempt ${instance.retryCount + 1}/${instance.config.maxRetries}`,
|
|
96
|
-
};
|
|
97
|
-
instance.retryCount += 1;
|
|
98
|
-
instance.state = "initializing";
|
|
99
|
-
instance.error = undefined;
|
|
100
|
-
instance.pid = undefined;
|
|
101
|
-
instance.updatedAt = event.timestamp;
|
|
102
|
-
instance.terminatedAt = undefined;
|
|
103
|
-
return event;
|
|
104
|
-
}
|
|
105
|
-
// ---------------------------------------------------------------------------
|
|
106
|
-
// Convenience queries
|
|
107
|
-
// ---------------------------------------------------------------------------
|
|
108
|
-
/** Returns all states reachable from the given state. */
|
|
109
|
-
export function reachableStates(from) {
|
|
110
|
-
return VALID_TRANSITIONS[from] ?? [];
|
|
111
|
-
}
|
|
112
|
-
/** Check if an agent is currently active (not terminal). */
|
|
113
|
-
export function isActive(state) {
|
|
114
|
-
return !isTerminal(state);
|
|
115
|
-
}
|
|
116
|
-
//# sourceMappingURL=lifecycle.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/agents/runtime/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEvD,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E,sEAAsE;AACtE,MAAM,UAAU,iBAAiB,CAAC,IAAgB,EAAE,EAAc;IAChE,OAAO,iBAAiB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC;AACxD,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,gBAAgB,CAAC,IAAgB,EAAE,EAAc;IAC/D,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,YAAY,CACpB,UAAU,CAAC,kBAAkB,EAC7B,6BAA6B,IAAI,MAAM,EAAE,EAAE,EAC3C,KAAK,EACL,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAE,CACpD,CAAC;IACJ,CAAC;AACH,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,UAAU,CAAC,KAAiB;IAC1C,OAAO,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC;AAQD;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CACxB,QAAuB,EACvB,QAAoB,EACpB,MAAe,EACf,KAAkB;IAElB,gBAAgB,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAE3C,MAAM,KAAK,GAAmB;QAC5B,OAAO,EAAE,QAAQ,CAAC,EAAE;QACpB,aAAa,EAAE,QAAQ,CAAC,KAAK;QAC7B,QAAQ;QACR,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,MAAM;KACP,CAAC;IAEF,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC;IAC1B,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAErC,gCAAgC;IAChC,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC;IACtC,CAAC;SAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChC,QAAQ,CAAC,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC;IAC1C,CAAC;IAED,0CAA0C;IAC1C,IAAI,QAAQ,KAAK,QAAQ,IAAI,KAAK,EAAE,CAAC;QACnC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,QAAuB;IACjD,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,YAAY,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC;IAEnF,IAAI,QAAQ,CAAC,UAAU,IAAI,UAAU;QAAE,OAAO,IAAI,CAAC;IACnD,IAAI,QAAQ,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAE/D,MAAM,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC/E,kDAAkD;IAClD,MAAM,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC;IAEtE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,QAAuB;IAClD,MAAM,KAAK,GAAmB;QAC5B,OAAO,EAAE,QAAQ,CAAC,EAAE;QACpB,aAAa,EAAE,QAAQ,CAAC,KAAK;QAC7B,QAAQ,EAAE,cAAc;QACxB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,MAAM,EAAE,iBAAiB,QAAQ,CAAC,UAAU,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE;KACjF,CAAC;IAEF,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC;IACzB,QAAQ,CAAC,KAAK,GAAG,cAAc,CAAC;IAChC,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC;IAC3B,QAAQ,CAAC,GAAG,GAAG,SAAS,CAAC;IACzB,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IACrC,QAAQ,CAAC,YAAY,GAAG,SAAS,CAAC;IAElC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,yDAAyD;AACzD,MAAM,UAAU,eAAe,CAAC,IAAgB;IAC9C,OAAO,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACvC,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,QAAQ,CAAC,KAAiB;IACxC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC"}
|