@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
package/dist/agents/memory.js
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Writes agent task outcomes to episodic LTM (experiences.jsonl).
|
|
3
|
-
* Memory entries are the durable control surface — notifications are ephemeral,
|
|
4
|
-
* but these persist and are retrievable by future turns via Brain.retrieve().
|
|
5
|
-
*/
|
|
6
|
-
import { join } from "node:path";
|
|
7
|
-
import { FileSystemLongTermMemory } from "../memory/file-backed.js";
|
|
8
|
-
import { createLogger } from "../utils/logger.js";
|
|
9
|
-
import { getEncryptionKey } from "../lib/key-store.js";
|
|
10
|
-
import { appendBrainLine, ensureBrainJsonl } from "../lib/brain-io.js";
|
|
11
|
-
import { BRAIN_DIR } from "../lib/paths.js";
|
|
12
|
-
const log = createLogger("agent-memory");
|
|
13
|
-
const MEMORY_DIR = join(BRAIN_DIR, "memory");
|
|
14
|
-
const SCARS_FILE = join(MEMORY_DIR, "scars.jsonl");
|
|
15
|
-
const SCARS_SCHEMA = JSON.stringify({
|
|
16
|
-
_schema: "scar",
|
|
17
|
-
_version: "1.0",
|
|
18
|
-
_description: "Self-repairs proven by code + tests + validation. Append-only.",
|
|
19
|
-
});
|
|
20
|
-
function generateScarId() {
|
|
21
|
-
return `scar_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 9)}`;
|
|
22
|
-
}
|
|
23
|
-
/** Append a scar record to brain/memory/scars.jsonl. */
|
|
24
|
-
export async function recordScar(record) {
|
|
25
|
-
const full = { id: generateScarId(), ...record };
|
|
26
|
-
await ensureBrainJsonl(SCARS_FILE, SCARS_SCHEMA);
|
|
27
|
-
await appendBrainLine(SCARS_FILE, JSON.stringify(full));
|
|
28
|
-
log.info("Scar recorded", { id: full.id, anchor: full.anchor, agentId: full.agentId });
|
|
29
|
-
return full;
|
|
30
|
-
}
|
|
31
|
-
/** Lazy LTM factory — picks up encryption key at call time, not import time. */
|
|
32
|
-
function getLtm() {
|
|
33
|
-
return new FileSystemLongTermMemory(MEMORY_DIR, getEncryptionKey() ?? undefined);
|
|
34
|
-
}
|
|
35
|
-
/** Write an episodic memory entry for an agent task outcome. */
|
|
36
|
-
export async function rememberTaskOutcome(task, output) {
|
|
37
|
-
const outputSnippet = output?.trim().slice(0, 500) || "";
|
|
38
|
-
const lines = [
|
|
39
|
-
`Agent task "${task.label}" ${task.status}.`,
|
|
40
|
-
task.origin === "ai" ? "Triggered by AI." : "Triggered by user.",
|
|
41
|
-
task.exitCode != null ? `Exit code: ${task.exitCode}.` : "",
|
|
42
|
-
task.error ? `Error: ${task.error}` : "",
|
|
43
|
-
outputSnippet ? `Result: ${outputSnippet}` : "",
|
|
44
|
-
].filter(Boolean);
|
|
45
|
-
await getLtm().add({
|
|
46
|
-
type: "episodic",
|
|
47
|
-
content: lines.join(" "),
|
|
48
|
-
meta: {
|
|
49
|
-
source: "agent",
|
|
50
|
-
taskId: task.id,
|
|
51
|
-
status: task.status,
|
|
52
|
-
label: task.label,
|
|
53
|
-
origin: task.origin,
|
|
54
|
-
...(task.exitCode != null ? { exitCode: task.exitCode } : {}),
|
|
55
|
-
...(task.boardTaskId ? { boardTaskId: task.boardTaskId } : {}),
|
|
56
|
-
},
|
|
57
|
-
});
|
|
58
|
-
log.info("Task outcome recorded", { taskId: task.id, label: task.label, status: task.status });
|
|
59
|
-
}
|
|
60
|
-
/** Write an episodic memory entry when a board/queue task reaches a terminal state. */
|
|
61
|
-
export async function rememberTaskCompletion(task, fromState) {
|
|
62
|
-
const verb = task.state === "done" ? "completed" : "cancelled";
|
|
63
|
-
const desc = task.description?.slice(0, 300) || "";
|
|
64
|
-
// Build resolution trail from exchanges (agent comments, chat notes, etc.)
|
|
65
|
-
const resolutionNotes = task.exchanges
|
|
66
|
-
.map((ex) => `[${ex.author}] ${ex.body}`)
|
|
67
|
-
.join(" → ");
|
|
68
|
-
const trail = resolutionNotes ? resolutionNotes.slice(0, 600) : "";
|
|
69
|
-
const lines = [
|
|
70
|
-
`Task ${task.identifier} ${verb}: "${task.title}".`,
|
|
71
|
-
task.project ? `Project: ${task.project}.` : "",
|
|
72
|
-
`Transitioned from ${fromState}.`,
|
|
73
|
-
desc ? `Details: ${desc}` : "",
|
|
74
|
-
trail ? `Resolution trail: ${trail}` : "",
|
|
75
|
-
].filter(Boolean);
|
|
76
|
-
await getLtm().add({
|
|
77
|
-
type: "episodic",
|
|
78
|
-
content: lines.join(" "),
|
|
79
|
-
meta: {
|
|
80
|
-
source: "task-bridge",
|
|
81
|
-
taskId: task.id,
|
|
82
|
-
identifier: task.identifier,
|
|
83
|
-
project: task.project || "",
|
|
84
|
-
state: task.state,
|
|
85
|
-
fromState,
|
|
86
|
-
exchangeCount: task.exchanges.length,
|
|
87
|
-
...(task.agentTaskId ? { agentTaskId: task.agentTaskId } : {}),
|
|
88
|
-
...(task.origin ? { origin: task.origin } : {}),
|
|
89
|
-
},
|
|
90
|
-
});
|
|
91
|
-
log.info("Task completion recorded", { taskId: task.id, identifier: task.identifier, state: task.state });
|
|
92
|
-
}
|
|
93
|
-
//# sourceMappingURL=memory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/agents/memory.ts"],"names":[],"mappings":"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"}
|
package/dist/agents/monitor.js
DELETED
|
@@ -1,235 +0,0 @@
|
|
|
1
|
-
import { listTasks, updateTask, readTaskOutput } from "./store.js";
|
|
2
|
-
import { spawnAgent, updateBoardTaskState } from "./spawn.js";
|
|
3
|
-
import { pushNotification } from "../goals/notifications.js";
|
|
4
|
-
import { logActivity } from "../activity/log.js";
|
|
5
|
-
import { rememberTaskOutcome } from "./memory.js";
|
|
6
|
-
import { pruneRecoveryTracking, attemptRecovery } from "./recover.js";
|
|
7
|
-
import { createLogger } from "../utils/logger.js";
|
|
8
|
-
import { getRuntime } from "./runtime/index.js";
|
|
9
|
-
const log = createLogger("agent-monitor");
|
|
10
|
-
const POLL_INTERVAL_MS = 15_000;
|
|
11
|
-
let pollTimer = null;
|
|
12
|
-
/**
|
|
13
|
-
* Set of task IDs we're monitoring (recovered PIDs that we didn't spawn).
|
|
14
|
-
* For PIDs we spawned, the exit handler in spawn.ts handles completion.
|
|
15
|
-
* This set tracks recovered PIDs that need poll-based monitoring.
|
|
16
|
-
*
|
|
17
|
-
* Only contains tasks NOT managed by the RuntimeManager — pool-spawned
|
|
18
|
-
* tasks are handled by the RuntimeManager's own monitor cycle.
|
|
19
|
-
*/
|
|
20
|
-
const monitoredPids = new Map();
|
|
21
|
-
/** Check if a process is alive by sending signal 0. */
|
|
22
|
-
function isPidAlive(pid) {
|
|
23
|
-
try {
|
|
24
|
-
process.kill(pid, 0);
|
|
25
|
-
return true;
|
|
26
|
-
}
|
|
27
|
-
catch {
|
|
28
|
-
return false;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Check if a task is managed by the RuntimeManager.
|
|
33
|
-
* Tasks spawned via the agent pool have a corresponding runtime instance
|
|
34
|
-
* and should NOT be double-recovered by the monitor.
|
|
35
|
-
*/
|
|
36
|
-
function isRuntimeManaged(taskId) {
|
|
37
|
-
const runtime = getRuntime();
|
|
38
|
-
return runtime?.getByTaskId(taskId) != null;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Called once at startup. Scans all task files and recovers state:
|
|
42
|
-
* - running + PID alive → register for monitoring (only if not runtime-managed)
|
|
43
|
-
* - running + PID dead → read log, mark completed/failed (only if not runtime-managed)
|
|
44
|
-
* - pending → re-spawn (only if not runtime-managed)
|
|
45
|
-
*
|
|
46
|
-
* IMPORTANT: Call this AFTER createRuntime() so the runtime registry is
|
|
47
|
-
* available for dedup checks. Tasks managed by the RuntimeManager are
|
|
48
|
-
* skipped — its own recoverAgents() handles them.
|
|
49
|
-
*/
|
|
50
|
-
export async function recoverTasks() {
|
|
51
|
-
log.info("Recovering tasks from previous session");
|
|
52
|
-
const tasks = await listTasks();
|
|
53
|
-
let recovered = 0;
|
|
54
|
-
let requeued = 0;
|
|
55
|
-
let skippedRuntime = 0;
|
|
56
|
-
// Separate tasks by recovery action for parallel processing
|
|
57
|
-
const aliveTasks = [];
|
|
58
|
-
const deadTasks = [];
|
|
59
|
-
const pendingTasks = [];
|
|
60
|
-
for (const task of tasks) {
|
|
61
|
-
// Skip tasks managed by the RuntimeManager — prevents double-recovery
|
|
62
|
-
// that causes duplicate retries + recovery agent fan-out (DASH-82)
|
|
63
|
-
if (isRuntimeManaged(task.id)) {
|
|
64
|
-
skippedRuntime++;
|
|
65
|
-
continue;
|
|
66
|
-
}
|
|
67
|
-
if (task.status === "running" && task.pid) {
|
|
68
|
-
if (isPidAlive(task.pid)) {
|
|
69
|
-
aliveTasks.push(task);
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
deadTasks.push(task);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
else if (task.status === "pending") {
|
|
76
|
-
pendingTasks.push(task);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
if (skippedRuntime > 0) {
|
|
80
|
-
log.info(`Skipped ${skippedRuntime} runtime-managed task(s) — RuntimeManager handles recovery`);
|
|
81
|
-
}
|
|
82
|
-
// Register alive processes (no I/O needed)
|
|
83
|
-
for (const task of aliveTasks) {
|
|
84
|
-
monitoredPids.set(task.id, task.pid);
|
|
85
|
-
recovered++;
|
|
86
|
-
logActivity({
|
|
87
|
-
source: "agent",
|
|
88
|
-
summary: `Recovered running agent: ${task.label}`,
|
|
89
|
-
detail: `PID ${task.pid} still alive`,
|
|
90
|
-
actionLabel: task.origin === "ai" ? "AUTONOMOUS" : "PROMPTED",
|
|
91
|
-
reason: "monitor recovered running process",
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
// Recover dead tasks in parallel (each reads task output from disk)
|
|
95
|
-
if (deadTasks.length > 0) {
|
|
96
|
-
await Promise.all(deadTasks.map(async (task) => {
|
|
97
|
-
const output = await readTaskOutput(task.id);
|
|
98
|
-
const hasOutput = output.trim().length > 0;
|
|
99
|
-
const finalStatus = hasOutput ? "completed" : "failed";
|
|
100
|
-
await updateTask(task.id, {
|
|
101
|
-
status: finalStatus,
|
|
102
|
-
finishedAt: new Date().toISOString(),
|
|
103
|
-
resultSummary: hasOutput ? output.slice(0, 500) : undefined,
|
|
104
|
-
error: hasOutput ? undefined : "Process died while server was down (no output)",
|
|
105
|
-
});
|
|
106
|
-
// Update board task state on recovery
|
|
107
|
-
if (task.boardTaskId) {
|
|
108
|
-
if (finalStatus === "completed") {
|
|
109
|
-
updateBoardTaskState(task.boardTaskId, { state: "done" });
|
|
110
|
-
}
|
|
111
|
-
else {
|
|
112
|
-
updateBoardTaskState(task.boardTaskId, { state: "todo", assignee: null });
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
rememberTaskOutcome({ ...task, status: finalStatus, error: hasOutput ? undefined : "Process died while server was down" }, output).catch(() => { });
|
|
116
|
-
logActivity({
|
|
117
|
-
source: "agent",
|
|
118
|
-
summary: `Recovered ${finalStatus} agent: ${task.label}`,
|
|
119
|
-
detail: `PID ${task.pid} was dead on recovery`,
|
|
120
|
-
actionLabel: task.origin === "ai" ? "AUTONOMOUS" : "PROMPTED",
|
|
121
|
-
reason: "monitor detected process exit",
|
|
122
|
-
});
|
|
123
|
-
const outputSnippet = hasOutput
|
|
124
|
-
? `\nOutput:\n${output.trim().slice(0, 1000)}`
|
|
125
|
-
: "";
|
|
126
|
-
pushNotification({
|
|
127
|
-
timestamp: new Date().toISOString(),
|
|
128
|
-
source: "agent",
|
|
129
|
-
message: `Agent task "${task.label}" ${finalStatus} (recovered after restart).${outputSnippet}`,
|
|
130
|
-
});
|
|
131
|
-
}));
|
|
132
|
-
}
|
|
133
|
-
// Re-queue pending tasks with staggered delays
|
|
134
|
-
for (const task of pendingTasks) {
|
|
135
|
-
requeued++;
|
|
136
|
-
const delayMs = requeued * 2000;
|
|
137
|
-
logActivity({
|
|
138
|
-
source: "agent",
|
|
139
|
-
summary: `Re-queuing pending agent (${delayMs}ms delay): ${task.label}`,
|
|
140
|
-
actionLabel: task.origin === "ai" ? "AUTONOMOUS" : "PROMPTED",
|
|
141
|
-
reason: "monitor re-queuing pending task",
|
|
142
|
-
});
|
|
143
|
-
setTimeout(() => {
|
|
144
|
-
spawnAgent(task).catch((err) => {
|
|
145
|
-
logActivity({
|
|
146
|
-
source: "agent",
|
|
147
|
-
summary: `Failed to re-spawn agent: ${task.label}`,
|
|
148
|
-
detail: err.message,
|
|
149
|
-
actionLabel: task.origin === "ai" ? "AUTONOMOUS" : "PROMPTED",
|
|
150
|
-
reason: "monitor re-spawn failed",
|
|
151
|
-
});
|
|
152
|
-
});
|
|
153
|
-
}, delayMs);
|
|
154
|
-
}
|
|
155
|
-
if (recovered > 0 || requeued > 0 || deadTasks.length > 0 || skippedRuntime > 0) {
|
|
156
|
-
log.info("Task recovery complete", { recovered, resolved: deadTasks.length, requeued, skippedRuntime });
|
|
157
|
-
logActivity({
|
|
158
|
-
source: "agent",
|
|
159
|
-
summary: `Agent recovery: ${recovered} running, ${deadTasks.length} resolved, ${requeued} re-queued${skippedRuntime > 0 ? `, ${skippedRuntime} runtime-managed` : ""}`,
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
/** Start the 15s poll loop for monitoring recovered PIDs. */
|
|
164
|
-
export function startAgentMonitor() {
|
|
165
|
-
if (pollTimer)
|
|
166
|
-
return;
|
|
167
|
-
pollTimer = setInterval(async () => {
|
|
168
|
-
// Periodically prune the recovery tracking set to prevent memory growth
|
|
169
|
-
pruneRecoveryTracking();
|
|
170
|
-
for (const [taskId, pid] of monitoredPids) {
|
|
171
|
-
if (!isPidAlive(pid)) {
|
|
172
|
-
log.info(`Monitored PID exited`, { taskId, pid });
|
|
173
|
-
monitoredPids.delete(taskId);
|
|
174
|
-
const output = await readTaskOutput(taskId);
|
|
175
|
-
const hasOutput = output.trim().length > 0;
|
|
176
|
-
const finalStatus = hasOutput ? "completed" : "failed";
|
|
177
|
-
const updated = await updateTask(taskId, {
|
|
178
|
-
status: finalStatus,
|
|
179
|
-
finishedAt: new Date().toISOString(),
|
|
180
|
-
resultSummary: hasOutput ? output.slice(0, 500) : undefined,
|
|
181
|
-
error: hasOutput ? undefined : "Process exited with no output",
|
|
182
|
-
});
|
|
183
|
-
const label = updated?.label ?? taskId;
|
|
184
|
-
// Update board task state from monitor
|
|
185
|
-
const boardTaskId = updated?.boardTaskId;
|
|
186
|
-
if (boardTaskId) {
|
|
187
|
-
if (finalStatus === "completed") {
|
|
188
|
-
updateBoardTaskState(boardTaskId, { state: "done" });
|
|
189
|
-
}
|
|
190
|
-
else {
|
|
191
|
-
updateBoardTaskState(boardTaskId, { state: "todo", assignee: null });
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
if (updated) {
|
|
195
|
-
rememberTaskOutcome(updated, output).catch(() => { });
|
|
196
|
-
}
|
|
197
|
-
logActivity({
|
|
198
|
-
source: "agent",
|
|
199
|
-
summary: `Agent ${finalStatus}: ${label}`,
|
|
200
|
-
detail: `Detected via monitor poll (PID ${pid})`,
|
|
201
|
-
actionLabel: updated?.origin === "ai" ? "AUTONOMOUS" : "PROMPTED",
|
|
202
|
-
reason: "monitor detected process exit",
|
|
203
|
-
});
|
|
204
|
-
const outputSnippet = hasOutput
|
|
205
|
-
? `\nOutput:\n${output.trim().slice(0, 1000)}`
|
|
206
|
-
: "";
|
|
207
|
-
pushNotification({
|
|
208
|
-
timestamp: new Date().toISOString(),
|
|
209
|
-
source: "agent",
|
|
210
|
-
message: `Agent task "${label}" ${finalStatus}.${outputSnippet}`,
|
|
211
|
-
});
|
|
212
|
-
// Attempt recovery for failed monitored tasks — but ONLY for tasks
|
|
213
|
-
// not managed by the RuntimeManager. Runtime-managed tasks should never
|
|
214
|
-
// be in monitoredPids (filtered in recoverTasks), but guard here too
|
|
215
|
-
// to prevent double-retry fan-out (DASH-82).
|
|
216
|
-
if (finalStatus === "failed" && updated && updated.origin === "ai") {
|
|
217
|
-
if (isRuntimeManaged(taskId)) {
|
|
218
|
-
log.info(`Skipping recovery for runtime-managed task: ${label}`, { taskId });
|
|
219
|
-
}
|
|
220
|
-
else {
|
|
221
|
-
attemptRecovery({ ...updated, status: "failed", error: "Process exited with no output" }, output).catch(() => { });
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
}, POLL_INTERVAL_MS);
|
|
227
|
-
}
|
|
228
|
-
/** Stop the poll loop. */
|
|
229
|
-
export function stopAgentMonitor() {
|
|
230
|
-
if (pollTimer) {
|
|
231
|
-
clearInterval(pollTimer);
|
|
232
|
-
pollTimer = null;
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
//# sourceMappingURL=monitor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../src/agents/monitor.ts"],"names":[],"mappings":"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"}
|