@adhd/agent-mcp 2.0.1 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +236 -0
- package/CHANGELOG.md +115 -0
- package/LICENSE +21 -0
- package/README.md +201 -0
- package/docs/architecture-and-security.md +405 -0
- package/docs/marketing/.catalog/capabilities.md +143 -0
- package/docs/marketing/.catalog/consumer.md +111 -0
- package/docs/marketing/.catalog/distribution.md +223 -0
- package/docs/marketing/.catalog/doc-conformance.md +237 -0
- package/docs/marketing/.catalog/doc-ops.md +98 -0
- package/docs/marketing/.catalog/metrics.md +119 -0
- package/docs/marketing/.catalog/required-tooling.md +224 -0
- package/docs/marketing/.catalog/review.md +164 -0
- package/docs/provider-call-audit.md +254 -0
- package/llms.txt +133 -0
- package/package.json +30 -51
- package/src/__tests__/integration/harness.d.ts +871 -39
- package/src/__tests__/integration/harness.d.ts.map +1 -1
- package/src/__tests__/integration/harness.js +93 -87
- package/src/__tests__/integration/harness.js.map +1 -1
- package/src/__tests__/integration/scripted-provider.d.ts +1 -2
- package/src/__tests__/integration/scripted-provider.d.ts.map +1 -1
- package/src/__tests__/integration/scripted-provider.js +1 -3
- package/src/__tests__/integration/scripted-provider.js.map +1 -1
- package/src/config.d.ts +6 -69
- package/src/config.d.ts.map +1 -1
- package/src/config.js +1 -50
- package/src/config.js.map +1 -1
- package/src/db/client.d.ts +1516 -2
- package/src/db/client.d.ts.map +1 -1
- package/src/db/client.js +4 -2
- package/src/db/client.js.map +1 -1
- package/src/db/migrate-runner.d.ts +0 -28
- package/src/db/migrate-runner.d.ts.map +1 -1
- package/src/db/migrate-runner.js +0 -24
- package/src/db/migrate-runner.js.map +1 -1
- package/src/db/migrate.d.ts +0 -7
- package/src/db/migrate.d.ts.map +1 -1
- package/src/db/migrate.js +0 -7
- package/src/db/migrate.js.map +1 -1
- package/src/db/schema.d.ts +0 -1260
- package/src/db/schema.d.ts.map +1 -1
- package/src/db/schema.js +2 -179
- package/src/db/schema.js.map +1 -1
- package/src/index.d.ts +3 -42
- package/src/index.d.ts.map +1 -1
- package/src/index.js +32 -123
- package/src/index.js.map +1 -1
- package/src/logger.d.ts +0 -8
- package/src/logger.d.ts.map +1 -1
- package/src/logger.js +1 -12
- package/src/logger.js.map +1 -1
- package/src/scripts/agent-mcp-tail.d.ts +3 -0
- package/src/scripts/agent-mcp-tail.d.ts.map +1 -0
- package/src/scripts/agent-mcp-tail.js +227 -0
- package/src/scripts/agent-mcp-tail.js.map +1 -0
- package/src/server.d.ts +13 -34
- package/src/server.d.ts.map +1 -1
- package/src/server.js +234 -326
- package/src/server.js.map +1 -1
- package/src/store/agent-store.d.ts +3 -16
- package/src/store/agent-store.d.ts.map +1 -1
- package/src/store/agent-store.js +38 -41
- package/src/store/agent-store.js.map +1 -1
- package/src/streaming/chat-gateway.d.ts +17 -0
- package/src/streaming/chat-gateway.d.ts.map +1 -0
- package/src/streaming/chat-gateway.js +336 -0
- package/src/streaming/chat-gateway.js.map +1 -0
- package/src/streaming/event-bus.d.ts +4 -0
- package/src/streaming/event-bus.d.ts.map +1 -1
- package/src/streaming/event-bus.js +14 -1
- package/src/streaming/event-bus.js.map +1 -1
- package/src/streaming/sse-server.d.ts +3 -14
- package/src/streaming/sse-server.d.ts.map +1 -1
- package/src/streaming/sse-server.js +37 -37
- package/src/streaming/sse-server.js.map +1 -1
- package/src/utils/load-env.d.ts +0 -14
- package/src/utils/load-env.d.ts.map +1 -1
- package/src/utils/load-env.js +0 -18
- package/src/utils/load-env.js.map +1 -1
- package/drizzle/0000_nifty_sasquatch.sql +0 -55
- package/drizzle/0001_task_usage.sql +0 -16
- package/drizzle/0002_lumpy_silver_centurion.sql +0 -2
- package/drizzle/0003_nifty_shriek.sql +0 -2
- package/drizzle/0004_brief_shocker.sql +0 -4
- package/drizzle/0005_clear_lenny_balinger.sql +0 -25
- package/drizzle/0006_composed_prompts_cache.sql +0 -24
- package/drizzle/meta/0000_snapshot.json +0 -387
- package/drizzle/meta/0001_snapshot.json +0 -495
- package/drizzle/meta/0002_snapshot.json +0 -509
- package/drizzle/meta/0003_snapshot.json +0 -523
- package/drizzle/meta/0004_snapshot.json +0 -551
- package/drizzle/meta/0005_snapshot.json +0 -545
- package/drizzle/meta/0006_snapshot.json +0 -651
- package/drizzle/meta/_journal.json +0 -55
- package/src/clients/http-client.d.ts +0 -24
- package/src/clients/http-client.d.ts.map +0 -1
- package/src/clients/http-client.js +0 -98
- package/src/clients/http-client.js.map +0 -1
- package/src/clients/in-process.d.ts +0 -27
- package/src/clients/in-process.d.ts.map +0 -1
- package/src/clients/in-process.js +0 -37
- package/src/clients/in-process.js.map +0 -1
- package/src/clients/index.d.ts +0 -7
- package/src/clients/index.d.ts.map +0 -1
- package/src/clients/index.js +0 -5
- package/src/clients/index.js.map +0 -1
- package/src/clients/registry.d.ts +0 -54
- package/src/clients/registry.d.ts.map +0 -1
- package/src/clients/registry.js +0 -164
- package/src/clients/registry.js.map +0 -1
- package/src/clients/stdio-client.d.ts +0 -16
- package/src/clients/stdio-client.d.ts.map +0 -1
- package/src/clients/stdio-client.js +0 -97
- package/src/clients/stdio-client.js.map +0 -1
- package/src/clients/tool-naming.d.ts +0 -44
- package/src/clients/tool-naming.d.ts.map +0 -1
- package/src/clients/tool-naming.js +0 -65
- package/src/clients/tool-naming.js.map +0 -1
- package/src/clients/types.d.ts +0 -18
- package/src/clients/types.d.ts.map +0 -1
- package/src/clients/types.js +0 -2
- package/src/clients/types.js.map +0 -1
- package/src/engine/dag-engine.d.ts +0 -62
- package/src/engine/dag-engine.d.ts.map +0 -1
- package/src/engine/dag-engine.js +0 -158
- package/src/engine/dag-engine.js.map +0 -1
- package/src/engine/hooks.d.ts +0 -24
- package/src/engine/hooks.d.ts.map +0 -1
- package/src/engine/hooks.js +0 -50
- package/src/engine/hooks.js.map +0 -1
- package/src/engine/orchestrator.d.ts +0 -40
- package/src/engine/orchestrator.d.ts.map +0 -1
- package/src/engine/orchestrator.js +0 -507
- package/src/engine/orchestrator.js.map +0 -1
- package/src/engine/policy.d.ts +0 -66
- package/src/engine/policy.d.ts.map +0 -1
- package/src/engine/policy.js +0 -112
- package/src/engine/policy.js.map +0 -1
- package/src/engine/prompt-resolver.d.ts +0 -89
- package/src/engine/prompt-resolver.d.ts.map +0 -1
- package/src/engine/prompt-resolver.js +0 -96
- package/src/engine/prompt-resolver.js.map +0 -1
- package/src/engine/queue.d.ts +0 -29
- package/src/engine/queue.d.ts.map +0 -1
- package/src/engine/queue.js +0 -56
- package/src/engine/queue.js.map +0 -1
- package/src/plugins/index.d.ts +0 -2
- package/src/plugins/index.d.ts.map +0 -1
- package/src/plugins/index.js +0 -2
- package/src/plugins/index.js.map +0 -1
- package/src/plugins/loader.d.ts +0 -65
- package/src/plugins/loader.d.ts.map +0 -1
- package/src/plugins/loader.js +0 -222
- package/src/plugins/loader.js.map +0 -1
- package/src/plugins/usage-plugin.d.ts +0 -27
- package/src/plugins/usage-plugin.d.ts.map +0 -1
- package/src/plugins/usage-plugin.js +0 -148
- package/src/plugins/usage-plugin.js.map +0 -1
- package/src/providers/anthropic.d.ts +0 -13
- package/src/providers/anthropic.d.ts.map +0 -1
- package/src/providers/anthropic.js +0 -260
- package/src/providers/anthropic.js.map +0 -1
- package/src/providers/claudecli.d.ts +0 -153
- package/src/providers/claudecli.d.ts.map +0 -1
- package/src/providers/claudecli.js +0 -510
- package/src/providers/claudecli.js.map +0 -1
- package/src/providers/factory.d.ts +0 -10
- package/src/providers/factory.d.ts.map +0 -1
- package/src/providers/factory.js +0 -24
- package/src/providers/factory.js.map +0 -1
- package/src/providers/index.d.ts +0 -6
- package/src/providers/index.d.ts.map +0 -1
- package/src/providers/index.js +0 -5
- package/src/providers/index.js.map +0 -1
- package/src/providers/openai.d.ts +0 -14
- package/src/providers/openai.d.ts.map +0 -1
- package/src/providers/openai.js +0 -162
- package/src/providers/openai.js.map +0 -1
- package/src/providers/types.d.ts +0 -36
- package/src/providers/types.d.ts.map +0 -1
- package/src/providers/types.js +0 -2
- package/src/providers/types.js.map +0 -1
- package/src/store/composed-prompt-store.d.ts +0 -24
- package/src/store/composed-prompt-store.d.ts.map +0 -1
- package/src/store/composed-prompt-store.js +0 -75
- package/src/store/composed-prompt-store.js.map +0 -1
- package/src/store/index.d.ts +0 -5
- package/src/store/index.d.ts.map +0 -1
- package/src/store/index.js +0 -5
- package/src/store/index.js.map +0 -1
- package/src/store/session-store.d.ts +0 -45
- package/src/store/session-store.d.ts.map +0 -1
- package/src/store/session-store.js +0 -197
- package/src/store/session-store.js.map +0 -1
- package/src/store/task-store.d.ts +0 -55
- package/src/store/task-store.d.ts.map +0 -1
- package/src/store/task-store.js +0 -186
- package/src/store/task-store.js.map +0 -1
- package/src/tools/agent-crud.d.ts +0 -15
- package/src/tools/agent-crud.d.ts.map +0 -1
- package/src/tools/agent-crud.js +0 -32
- package/src/tools/agent-crud.js.map +0 -1
- package/src/tools/session.d.ts +0 -33
- package/src/tools/session.d.ts.map +0 -1
- package/src/tools/session.js +0 -73
- package/src/tools/session.js.map +0 -1
- package/src/tools/task.d.ts +0 -86
- package/src/tools/task.d.ts.map +0 -1
- package/src/tools/task.js +0 -406
- package/src/tools/task.js.map +0 -1
- package/src/tools/usage.d.ts +0 -60
- package/src/tools/usage.d.ts.map +0 -1
- package/src/tools/usage.js +0 -174
- package/src/tools/usage.js.map +0 -1
- package/src/types/agent.d.ts +0 -2
- package/src/types/agent.d.ts.map +0 -1
- package/src/types/agent.js +0 -3
- package/src/types/agent.js.map +0 -1
- package/src/types/execution.d.ts +0 -2
- package/src/types/execution.d.ts.map +0 -1
- package/src/types/execution.js +0 -3
- package/src/types/execution.js.map +0 -1
- package/src/types/index.d.ts +0 -2
- package/src/types/index.d.ts.map +0 -1
- package/src/types/index.js +0 -2
- package/src/types/index.js.map +0 -1
- package/src/types/mcp.d.ts +0 -2
- package/src/types/mcp.d.ts.map +0 -1
- package/src/types/mcp.js +0 -3
- package/src/types/mcp.js.map +0 -1
- package/src/types/message.d.ts +0 -2
- package/src/types/message.d.ts.map +0 -1
- package/src/types/message.js +0 -3
- package/src/types/message.js.map +0 -1
- package/src/types/session.d.ts +0 -2
- package/src/types/session.d.ts.map +0 -1
- package/src/types/session.js +0 -3
- package/src/types/session.js.map +0 -1
- package/src/types/task.d.ts +0 -2
- package/src/types/task.d.ts.map +0 -1
- package/src/types/task.js +0 -3
- package/src/types/task.js.map +0 -1
- package/src/utils/ids.d.ts +0 -2
- package/src/utils/ids.d.ts.map +0 -1
- package/src/utils/ids.js +0 -5
- package/src/utils/ids.js.map +0 -1
- package/src/utils/logger.d.ts +0 -2
- package/src/utils/logger.d.ts.map +0 -1
- package/src/utils/logger.js +0 -5
- package/src/utils/logger.js.map +0 -1
- package/src/utils/timestamps.d.ts +0 -2
- package/src/utils/timestamps.d.ts.map +0 -1
- package/src/utils/timestamps.js +0 -4
- package/src/utils/timestamps.js.map +0 -1
- package/src/validation/agent.d.ts +0 -400
- package/src/validation/agent.d.ts.map +0 -1
- package/src/validation/agent.js +0 -251
- package/src/validation/agent.js.map +0 -1
- package/src/validation/agents.d.ts +0 -2
- package/src/validation/agents.d.ts.map +0 -1
- package/src/validation/agents.js +0 -3
- package/src/validation/agents.js.map +0 -1
- package/src/validation/errors.d.ts +0 -32
- package/src/validation/errors.d.ts.map +0 -1
- package/src/validation/errors.js +0 -42
- package/src/validation/errors.js.map +0 -1
- package/src/validation/execution.d.ts +0 -86
- package/src/validation/execution.d.ts.map +0 -1
- package/src/validation/execution.js +0 -28
- package/src/validation/execution.js.map +0 -1
- package/src/validation/index.d.ts +0 -9
- package/src/validation/index.d.ts.map +0 -1
- package/src/validation/index.js +0 -9
- package/src/validation/index.js.map +0 -1
- package/src/validation/mcp.d.ts +0 -42
- package/src/validation/mcp.d.ts.map +0 -1
- package/src/validation/mcp.js +0 -28
- package/src/validation/mcp.js.map +0 -1
- package/src/validation/message.d.ts +0 -43
- package/src/validation/message.d.ts.map +0 -1
- package/src/validation/message.js +0 -23
- package/src/validation/message.js.map +0 -1
- package/src/validation/session.d.ts +0 -49
- package/src/validation/session.d.ts.map +0 -1
- package/src/validation/session.js +0 -34
- package/src/validation/session.js.map +0 -1
- package/src/validation/task.d.ts +0 -146
- package/src/validation/task.d.ts.map +0 -1
- package/src/validation/task.js +0 -95
- package/src/validation/task.js.map +0 -1
- package/src/validation/tasks.d.ts +0 -2
- package/src/validation/tasks.d.ts.map +0 -1
- package/src/validation/tasks.js +0 -3
- package/src/validation/tasks.js.map +0 -1
- package/src/validation/usage.d.ts +0 -89
- package/src/validation/usage.d.ts.map +0 -1
- package/src/validation/usage.js +0 -98
- package/src/validation/usage.js.map +0 -1
|
@@ -25,4 +25,8 @@ export type TaskStreamEvent = {
|
|
|
25
25
|
};
|
|
26
26
|
export declare function emitTaskEvent(event: TaskStreamEvent): void;
|
|
27
27
|
export declare function subscribeToTask(taskId: string, handler: (event: TaskStreamEvent) => void): () => void;
|
|
28
|
+
export declare function subscribeToAllTasks(handler: (event: TaskStreamEvent) => void): () => void;
|
|
29
|
+
export declare function subscribeToTaskDone(handler: (event: TaskStreamEvent & {
|
|
30
|
+
type: "done";
|
|
31
|
+
}) => void): () => void;
|
|
28
32
|
//# sourceMappingURL=event-bus.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../../../../../entrypoint/agent-mcp/src/streaming/event-bus.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,eAAe,GACrB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAS,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,WAAW,CAAC;IAAK,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC/F;IAAE,IAAI,EAAE,aAAa,CAAC;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAC/E;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAU,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAK7F,wBAAgB,aAAa,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAG1D;AAED,wBAAgB,eAAe,CAC3B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAC1C,MAAM,IAAI,CAIZ;AAED,wBAAgB,mBAAmB,CAC/B,OAAO,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAC1C,MAAM,IAAI,CAGZ;AAED,wBAAgB,mBAAmB,CAC/B,OAAO,EAAE,CAAC,KAAK,EAAE,eAAe,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,KAAK,IAAI,GAC7D,MAAM,IAAI,CAMZ"}
|
|
@@ -1,12 +1,25 @@
|
|
|
1
1
|
import { EventEmitter } from "node:events";
|
|
2
2
|
const emitter = new EventEmitter();
|
|
3
|
-
emitter.setMaxListeners(500);
|
|
3
|
+
emitter.setMaxListeners(500);
|
|
4
4
|
export function emitTaskEvent(event) {
|
|
5
5
|
emitter.emit(`task:${event.taskId}`, event);
|
|
6
|
+
emitter.emit("task-event", event);
|
|
6
7
|
}
|
|
7
8
|
export function subscribeToTask(taskId, handler) {
|
|
8
9
|
const key = `task:${taskId}`;
|
|
9
10
|
emitter.on(key, handler);
|
|
10
11
|
return () => emitter.off(key, handler);
|
|
11
12
|
}
|
|
13
|
+
export function subscribeToAllTasks(handler) {
|
|
14
|
+
emitter.on("task-event", handler);
|
|
15
|
+
return () => emitter.off("task-event", handler);
|
|
16
|
+
}
|
|
17
|
+
export function subscribeToTaskDone(handler) {
|
|
18
|
+
const wrapped = (event) => {
|
|
19
|
+
if (event.type === "done")
|
|
20
|
+
handler(event);
|
|
21
|
+
};
|
|
22
|
+
emitter.on("task-event", wrapped);
|
|
23
|
+
return () => emitter.off("task-event", wrapped);
|
|
24
|
+
}
|
|
12
25
|
//# sourceMappingURL=event-bus.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-bus.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../../../../entrypoint/agent-mcp/src/streaming/event-bus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAS3C,MAAM,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;AACnC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;AAE7B,MAAM,UAAU,aAAa,CAAC,KAAsB;IAChD,OAAO,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,eAAe,CAC3B,MAAc,EACd,OAAyC;IAEzC,MAAM,GAAG,GAAG,QAAQ,MAAM,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACzB,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAC/B,OAAyC;IAEzC,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAC/B,OAA4D;IAE5D,MAAM,OAAO,GAAG,CAAC,KAAsB,EAAE,EAAE;QACvC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,CAAC,KAA2C,CAAC,CAAC;IACpF,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -1,16 +1,5 @@
|
|
|
1
1
|
import http from "node:http";
|
|
2
|
-
import type
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
*
|
|
6
|
-
* @param port port to bind (default config.sse.port, else 3001). Pass `0` for an
|
|
7
|
-
* ephemeral port (used by tests).
|
|
8
|
-
* @param host host to bind (default config.sse.host, else 127.0.0.1).
|
|
9
|
-
*
|
|
10
|
-
* A bind failure (e.g. `EADDRINUSE` when the port is already taken) is handled
|
|
11
|
-
* gracefully: it is logged and SSE streaming is left unavailable, but the
|
|
12
|
-
* process does NOT crash — the stdio MCP transport, which never needed the
|
|
13
|
-
* port, keeps serving. (BUG-001)
|
|
14
|
-
*/
|
|
15
|
-
export declare function startSseServer(taskStore: TaskStore, port?: number, host?: string): http.Server;
|
|
2
|
+
import { type GatewayDepsRef } from "./chat-gateway.js";
|
|
3
|
+
import type { TaskStore } from "@adhd/agent-store-runtime";
|
|
4
|
+
export declare function startSseServer(taskStore: TaskStore, port?: number, host?: string, gatewayDepsRef?: GatewayDepsRef): http.Server;
|
|
16
5
|
//# sourceMappingURL=sse-server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sse-server.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"sse-server.d.ts","sourceRoot":"","sources":["../../../../../entrypoint/agent-mcp/src/streaming/sse-server.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAA0C,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAChG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAO3D,wBAAgB,cAAc,CAC1B,SAAS,EAAE,SAAS,EACpB,IAAI,GAAE,MAAwB,EAC9B,IAAI,GAAE,MAAwB,EAC9B,cAAc,CAAC,EAAE,cAAc,GAChC,IAAI,CAAC,MAAM,CA8Hb"}
|
|
@@ -1,31 +1,50 @@
|
|
|
1
1
|
import http from "node:http";
|
|
2
2
|
import { subscribeToTask } from "./event-bus.js";
|
|
3
|
+
import { handleGetModels, handleChatCompletions } from "./chat-gateway.js";
|
|
3
4
|
import { logger } from "../logger.js";
|
|
4
5
|
import { config } from "../config.js";
|
|
5
6
|
const KEEPALIVE_INTERVAL_MS = 15_000;
|
|
6
7
|
const TERMINAL_STATUSES = ["completed", "failed", "cancelled"];
|
|
7
|
-
|
|
8
|
-
* Start the task-streaming SSE server.
|
|
9
|
-
*
|
|
10
|
-
* @param port port to bind (default config.sse.port, else 3001). Pass `0` for an
|
|
11
|
-
* ephemeral port (used by tests).
|
|
12
|
-
* @param host host to bind (default config.sse.host, else 127.0.0.1).
|
|
13
|
-
*
|
|
14
|
-
* A bind failure (e.g. `EADDRINUSE` when the port is already taken) is handled
|
|
15
|
-
* gracefully: it is logged and SSE streaming is left unavailable, but the
|
|
16
|
-
* process does NOT crash — the stdio MCP transport, which never needed the
|
|
17
|
-
* port, keeps serving. (BUG-001)
|
|
18
|
-
*/
|
|
19
|
-
export function startSseServer(taskStore, port = config.sse.port, host = config.sse.host) {
|
|
8
|
+
export function startSseServer(taskStore, port = config.sse.port, host = config.sse.host, gatewayDepsRef) {
|
|
20
9
|
const server = http.createServer((req, res) => {
|
|
21
|
-
|
|
22
|
-
const
|
|
23
|
-
if (
|
|
10
|
+
const url = req.url ?? "";
|
|
11
|
+
const method = req.method ?? "GET";
|
|
12
|
+
if (url === "/v1/models" && method === "GET") {
|
|
13
|
+
if (!gatewayDepsRef?.value) {
|
|
14
|
+
res.writeHead(503, { "Content-Type": "application/json" });
|
|
15
|
+
res.end(JSON.stringify({ error: { message: "Gateway not yet initialized", type: "server_error" } }));
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
handleGetModels(res, gatewayDepsRef.value);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
if (url === "/v1/chat/completions" && method === "POST") {
|
|
22
|
+
if (!gatewayDepsRef?.value) {
|
|
23
|
+
res.writeHead(503, { "Content-Type": "application/json" });
|
|
24
|
+
res.end(JSON.stringify({ error: { message: "Gateway not yet initialized", type: "server_error" } }));
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
handleChatCompletions(req, res, gatewayDepsRef.value).catch((err) => {
|
|
28
|
+
logger.error({ err }, "chat-gateway: unhandled error in handleChatCompletions");
|
|
29
|
+
if (!res.headersSent) {
|
|
30
|
+
res.writeHead(500, { "Content-Type": "application/json" });
|
|
31
|
+
res.end(JSON.stringify({ error: { message: "Internal server error", type: "server_error" } }));
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const match = url.match(/^\/tasks\/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\/stream$/i);
|
|
37
|
+
if (!match || method !== "GET") {
|
|
24
38
|
res.writeHead(404);
|
|
25
39
|
res.end("Not found");
|
|
26
40
|
return;
|
|
27
41
|
}
|
|
28
42
|
const taskId = match[1];
|
|
43
|
+
if (!taskId) {
|
|
44
|
+
res.writeHead(404);
|
|
45
|
+
res.end("Not found");
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
29
48
|
res.writeHead(200, {
|
|
30
49
|
"Content-Type": "text/event-stream",
|
|
31
50
|
"Cache-Control": "no-cache",
|
|
@@ -33,26 +52,17 @@ export function startSseServer(taskStore, port = config.sse.port, host = config.
|
|
|
33
52
|
"X-Accel-Buffering": "no",
|
|
34
53
|
});
|
|
35
54
|
res.flushHeaders?.();
|
|
36
|
-
// Keep-alive ping
|
|
37
55
|
const pingTimer = setInterval(() => {
|
|
38
56
|
res.write(": ping\n\n");
|
|
39
57
|
}, KEEPALIVE_INTERVAL_MS);
|
|
40
|
-
// Terminal-on-connect short-circuit: if the task is already in a terminal
|
|
41
|
-
// state when the client connects, emit status_change + done and close
|
|
42
|
-
// immediately — prevents clients from hanging forever waiting for events
|
|
43
|
-
// that already fired before they connected.
|
|
44
58
|
let existingTask = null;
|
|
45
59
|
try {
|
|
46
60
|
existingTask = taskStore.read(taskId);
|
|
47
61
|
}
|
|
48
62
|
catch {
|
|
49
|
-
// TASK_NOT_FOUND — let the client wait
|
|
63
|
+
// TASK_NOT_FOUND — let the client wait
|
|
50
64
|
}
|
|
51
65
|
if (existingTask && TERMINAL_STATUSES.includes(existingTask.status)) {
|
|
52
|
-
// Write directly to THIS response. The connection has not subscribed
|
|
53
|
-
// yet, so emitting on the shared bus would miss this client entirely
|
|
54
|
-
// and would also spuriously close any OTHER client still subscribed to
|
|
55
|
-
// the same task (their handler would see a second done and clean up).
|
|
56
66
|
const statusEvent = {
|
|
57
67
|
type: "status_change",
|
|
58
68
|
taskId,
|
|
@@ -70,10 +80,6 @@ export function startSseServer(taskStore, port = config.sse.port, host = config.
|
|
|
70
80
|
res.end();
|
|
71
81
|
return;
|
|
72
82
|
}
|
|
73
|
-
// `cleaned` flag prevents double-call: done handler calls cleanup() which
|
|
74
|
-
// calls res.end(); req.on("close") fires because res.end() closes the
|
|
75
|
-
// connection and would call cleanup() again — the second res.end() throws
|
|
76
|
-
// ERR_HTTP_HEADERS_SENT.
|
|
77
83
|
let cleaned = false;
|
|
78
84
|
function cleanup() {
|
|
79
85
|
if (cleaned)
|
|
@@ -83,10 +89,9 @@ export function startSseServer(taskStore, port = config.sse.port, host = config.
|
|
|
83
89
|
unsubscribe();
|
|
84
90
|
res.end();
|
|
85
91
|
}
|
|
86
|
-
// Subscribe to task events
|
|
87
92
|
const unsubscribe = subscribeToTask(taskId, (event) => {
|
|
88
93
|
if (cleaned)
|
|
89
|
-
return;
|
|
94
|
+
return;
|
|
90
95
|
const data = JSON.stringify(event);
|
|
91
96
|
res.write(`event: ${event.type}\ndata: ${data}\n\n`);
|
|
92
97
|
if (event.type === "done") {
|
|
@@ -95,9 +100,6 @@ export function startSseServer(taskStore, port = config.sse.port, host = config.
|
|
|
95
100
|
});
|
|
96
101
|
req.on("close", cleanup);
|
|
97
102
|
});
|
|
98
|
-
// Handle bind/runtime errors so an unhandled 'error' event can't crash the
|
|
99
|
-
// whole MCP process (BUG-001). EADDRINUSE (port already taken) is the common
|
|
100
|
-
// case — degrade to "SSE unavailable" rather than taking down the server.
|
|
101
103
|
server.on("error", (err) => {
|
|
102
104
|
if (err.code === "EADDRINUSE") {
|
|
103
105
|
logger.warn({ host, port, err: err.message }, "SSE server could not bind (port already in use) — task SSE streaming is DISABLED; the MCP server continues normally. Set SSE_PORT to a free port to enable streaming.");
|
|
@@ -107,8 +109,6 @@ export function startSseServer(taskStore, port = config.sse.port, host = config.
|
|
|
107
109
|
}
|
|
108
110
|
});
|
|
109
111
|
server.listen(port, host, () => {
|
|
110
|
-
// Use the pino logger (stderr) — never console.log, which writes to
|
|
111
|
-
// stdout and corrupts the MCP JSON-RPC transport on the shared process.
|
|
112
112
|
const addr = server.address();
|
|
113
113
|
const boundPort = addr && typeof addr === "object" ? addr.port : port;
|
|
114
114
|
logger.info({ host, port: boundPort }, "SSE server listening");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sse-server.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"sse-server.js","sourceRoot":"","sources":["../../../../../entrypoint/agent-mcp/src/streaming/sse-server.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAwB,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAuB,MAAM,mBAAmB,CAAC;AAEhG,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,qBAAqB,GAAG,MAAM,CAAC;AACrC,MAAM,iBAAiB,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAU,CAAC;AAExE,MAAM,UAAU,cAAc,CAC1B,SAAoB,EACpB,OAAe,MAAM,CAAC,GAAG,CAAC,IAAI,EAC9B,OAAe,MAAM,CAAC,GAAG,CAAC,IAAI,EAC9B,cAA+B;IAE/B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC1C,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC;QAEnC,IAAI,GAAG,KAAK,YAAY,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YAC3C,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC;gBACzB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,6BAA6B,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC;gBACrG,OAAO;YACX,CAAC;YACD,eAAe,CAAC,GAAG,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;YAC3C,OAAO;QACX,CAAC;QAED,IAAI,GAAG,KAAK,sBAAsB,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtD,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC;gBACzB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,6BAA6B,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC;gBACrG,OAAO;YACX,CAAC;YACD,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;gBACzE,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,wDAAwD,CAAC,CAAC;gBAChF,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;oBACnB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;oBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC;gBACnG,CAAC;YACL,CAAC,CAAC,CAAC;YACH,OAAO;QACX,CAAC;QAED,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CACnB,oFAAoF,CACvF,CAAC;QACF,IAAI,CAAC,KAAK,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YAC7B,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACrB,OAAO;QACX,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACrB,OAAO;QACX,CAAC;QAED,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;YACf,cAAc,EAAE,mBAAmB;YACnC,eAAe,EAAE,UAAU;YAC3B,YAAY,EAAE,YAAY;YAC1B,mBAAmB,EAAE,IAAI;SAC5B,CAAC,CAAC;QACH,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC;QAErB,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;YAC/B,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC5B,CAAC,EAAE,qBAAqB,CAAC,CAAC;QAE1B,IAAI,YAAY,GAAyC,IAAI,CAAC;QAC9D,IAAI,CAAC;YACD,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACL,uCAAuC;QAC3C,CAAC;QAED,IAAI,YAAY,IAAI,iBAAiB,CAAC,QAAQ,CAAC,YAAY,CAAC,MAA0C,CAAC,EAAE,CAAC;YACtG,MAAM,WAAW,GAAoB;gBACjC,IAAI,EAAE,eAAe;gBACrB,MAAM;gBACN,MAAM,EAAE,YAAY,CAAC,MAAM;aAC9B,CAAC;YACF,MAAM,SAAS,GAAoB;gBAC/B,IAAI,EAAE,MAAM;gBACZ,MAAM;gBACN,MAAM,EAAE,YAAY,CAAC,MAAM,IAAI,IAAI;gBACnC,KAAK,EAAE,YAAY,CAAC,KAAK,IAAI,IAAI;aACpC,CAAC;YACF,GAAG,CAAC,KAAK,CAAC,UAAU,WAAW,CAAC,IAAI,WAAW,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAClF,GAAG,CAAC,KAAK,CAAC,UAAU,SAAS,CAAC,IAAI,WAAW,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC9E,aAAa,CAAC,SAAS,CAAC,CAAC;YACzB,GAAG,CAAC,GAAG,EAAE,CAAC;YACV,OAAO;QACX,CAAC;QAED,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,SAAS,OAAO;YACZ,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,aAAa,CAAC,SAAS,CAAC,CAAC;YACzB,WAAW,EAAE,CAAC;YACd,GAAG,CAAC,GAAG,EAAE,CAAC;QACd,CAAC;QAED,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,KAAsB,EAAE,EAAE;YACnE,IAAI,OAAO;gBAAE,OAAO;YACpB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACnC,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,IAAI,WAAW,IAAI,MAAM,CAAC,CAAC;YACrD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACxB,OAAO,EAAE,CAAC;YACd,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAA0B,EAAE,EAAE;QAC9C,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CACP,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,EAChC,uKAAuK,CAC1K,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,KAAK,CACR,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,EAChD,4CAA4C,CAC/C,CAAC;QACN,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;QAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACtE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,sBAAsB,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAClB,CAAC"}
|
package/src/utils/load-env.d.ts
CHANGED
|
@@ -1,16 +1,2 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Load the `.env` hierarchy into `process.env` with most-specific wins:
|
|
3
|
-
*
|
|
4
|
-
* 1. `<cwd>/.env` (highest precedence)
|
|
5
|
-
* 2. `<cwd>/.adhd/.env`
|
|
6
|
-
* 3. `~/.adhd/.env` (lowest precedence)
|
|
7
|
-
*
|
|
8
|
-
* Each file is loaded only if it exists — missing files are silently skipped
|
|
9
|
-
* by dotenv. Already-set vars from a more-specific file are not overridden by
|
|
10
|
-
* a less-specific one (load least-specific first; use `override:true` for each
|
|
11
|
-
* successive, more-specific load).
|
|
12
|
-
*
|
|
13
|
-
* Call this once before taking a `process.env` snapshot (i.e. from `config.ts`).
|
|
14
|
-
*/
|
|
15
1
|
export declare function loadEnvHierarchy(cwd?: string): void;
|
|
16
2
|
//# sourceMappingURL=load-env.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-env.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"load-env.d.ts","sourceRoot":"","sources":["../../../../../entrypoint/agent-mcp/src/utils/load-env.ts"],"names":[],"mappings":"AAIA,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAsB,GAAG,IAAI,CAIlE"}
|
package/src/utils/load-env.js
CHANGED
|
@@ -1,27 +1,9 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import os from "node:os";
|
|
3
3
|
import { config as dotenvConfig } from "dotenv";
|
|
4
|
-
/**
|
|
5
|
-
* Load the `.env` hierarchy into `process.env` with most-specific wins:
|
|
6
|
-
*
|
|
7
|
-
* 1. `<cwd>/.env` (highest precedence)
|
|
8
|
-
* 2. `<cwd>/.adhd/.env`
|
|
9
|
-
* 3. `~/.adhd/.env` (lowest precedence)
|
|
10
|
-
*
|
|
11
|
-
* Each file is loaded only if it exists — missing files are silently skipped
|
|
12
|
-
* by dotenv. Already-set vars from a more-specific file are not overridden by
|
|
13
|
-
* a less-specific one (load least-specific first; use `override:true` for each
|
|
14
|
-
* successive, more-specific load).
|
|
15
|
-
*
|
|
16
|
-
* Call this once before taking a `process.env` snapshot (i.e. from `config.ts`).
|
|
17
|
-
*/
|
|
18
4
|
export function loadEnvHierarchy(cwd = process.cwd()) {
|
|
19
|
-
// 3. ~/.adhd/.env — lowest precedence, load first without override flag so
|
|
20
|
-
// POSIX vars already in process.env (PATH, HOME, …) are not disturbed.
|
|
21
5
|
dotenvConfig({ path: path.join(os.homedir(), ".adhd", ".env") });
|
|
22
|
-
// 2. <cwd>/.adhd/.env — project-specific beats global
|
|
23
6
|
dotenvConfig({ path: path.join(cwd, ".adhd", ".env"), override: true });
|
|
24
|
-
// 1. <cwd>/.env — highest precedence
|
|
25
7
|
dotenvConfig({ path: path.join(cwd, ".env"), override: true });
|
|
26
8
|
}
|
|
27
9
|
//# sourceMappingURL=load-env.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-env.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"load-env.js","sourceRoot":"","sources":["../../../../../entrypoint/agent-mcp/src/utils/load-env.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEhD,MAAM,UAAU,gBAAgB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACxD,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IACjE,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACnE,CAAC"}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
CREATE TABLE `agents` (
|
|
2
|
-
`name` text PRIMARY KEY NOT NULL,
|
|
3
|
-
`version` integer DEFAULT 1 NOT NULL,
|
|
4
|
-
`data` text NOT NULL,
|
|
5
|
-
`created_at` text NOT NULL,
|
|
6
|
-
`updated_at` text NOT NULL
|
|
7
|
-
);
|
|
8
|
-
--> statement-breakpoint
|
|
9
|
-
CREATE TABLE `messages` (
|
|
10
|
-
`id` text PRIMARY KEY NOT NULL,
|
|
11
|
-
`session_id` text NOT NULL,
|
|
12
|
-
`role` text NOT NULL,
|
|
13
|
-
`content` text,
|
|
14
|
-
`tool_calls` text,
|
|
15
|
-
`tool_results` text,
|
|
16
|
-
`created_at` text NOT NULL,
|
|
17
|
-
FOREIGN KEY (`session_id`) REFERENCES `sessions`(`id`) ON UPDATE no action ON DELETE cascade
|
|
18
|
-
);
|
|
19
|
-
--> statement-breakpoint
|
|
20
|
-
CREATE TABLE `sessions` (
|
|
21
|
-
`id` text PRIMARY KEY NOT NULL,
|
|
22
|
-
`agent_name` text NOT NULL,
|
|
23
|
-
`agent_version` integer NOT NULL,
|
|
24
|
-
`agent_data` text NOT NULL,
|
|
25
|
-
`status` text DEFAULT 'active' NOT NULL,
|
|
26
|
-
`created_at` text NOT NULL,
|
|
27
|
-
`updated_at` text NOT NULL,
|
|
28
|
-
`closed_at` text,
|
|
29
|
-
FOREIGN KEY (`agent_name`) REFERENCES `agents`(`name`) ON UPDATE no action ON DELETE cascade
|
|
30
|
-
);
|
|
31
|
-
--> statement-breakpoint
|
|
32
|
-
CREATE TABLE `task_events` (
|
|
33
|
-
`id` text PRIMARY KEY NOT NULL,
|
|
34
|
-
`task_id` text NOT NULL,
|
|
35
|
-
`type` text NOT NULL,
|
|
36
|
-
`payload` text,
|
|
37
|
-
`created_at` text NOT NULL,
|
|
38
|
-
FOREIGN KEY (`task_id`) REFERENCES `tasks`(`id`) ON UPDATE no action ON DELETE cascade
|
|
39
|
-
);
|
|
40
|
-
--> statement-breakpoint
|
|
41
|
-
CREATE TABLE `tasks` (
|
|
42
|
-
`id` text PRIMARY KEY NOT NULL,
|
|
43
|
-
`session_id` text NOT NULL,
|
|
44
|
-
`parent_task_id` text,
|
|
45
|
-
`recursion_depth` integer DEFAULT 0 NOT NULL,
|
|
46
|
-
`status` text DEFAULT 'pending' NOT NULL,
|
|
47
|
-
`prompt` text NOT NULL,
|
|
48
|
-
`result` text,
|
|
49
|
-
`error` text,
|
|
50
|
-
`created_at` text NOT NULL,
|
|
51
|
-
`updated_at` text NOT NULL,
|
|
52
|
-
`completed_at` text,
|
|
53
|
-
`cancelled_at` text,
|
|
54
|
-
FOREIGN KEY (`session_id`) REFERENCES `sessions`(`id`) ON UPDATE no action ON DELETE cascade
|
|
55
|
-
);
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
CREATE TABLE `task_usage` (
|
|
2
|
-
`task_id` text PRIMARY KEY NOT NULL,
|
|
3
|
-
`root_task_id` text,
|
|
4
|
-
`agent_name` text NOT NULL,
|
|
5
|
-
`provider_type` text NOT NULL,
|
|
6
|
-
`model` text NOT NULL,
|
|
7
|
-
`input_tokens` integer DEFAULT 0 NOT NULL,
|
|
8
|
-
`output_tokens` integer DEFAULT 0 NOT NULL,
|
|
9
|
-
`tool_call_count` integer DEFAULT 0 NOT NULL,
|
|
10
|
-
`model_calls` integer DEFAULT 0 NOT NULL,
|
|
11
|
-
`latency_ms` integer DEFAULT 0 NOT NULL,
|
|
12
|
-
`is_complete` integer DEFAULT 0 NOT NULL,
|
|
13
|
-
`created_at` text NOT NULL
|
|
14
|
-
);
|
|
15
|
-
--> statement-breakpoint
|
|
16
|
-
CREATE INDEX `idx_task_usage_root_task_id` ON `task_usage` (`root_task_id`);
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
PRAGMA foreign_keys=OFF;--> statement-breakpoint
|
|
2
|
-
CREATE TABLE `__new_tasks` (
|
|
3
|
-
`id` text PRIMARY KEY NOT NULL,
|
|
4
|
-
`session_id` text,
|
|
5
|
-
`parent_task_id` text,
|
|
6
|
-
`is_ephemeral` integer DEFAULT 0 NOT NULL,
|
|
7
|
-
`recursion_depth` integer DEFAULT 0 NOT NULL,
|
|
8
|
-
`status` text DEFAULT 'pending' NOT NULL,
|
|
9
|
-
`prompt` text NOT NULL,
|
|
10
|
-
`result` text,
|
|
11
|
-
`error` text,
|
|
12
|
-
`created_at` text NOT NULL,
|
|
13
|
-
`updated_at` text NOT NULL,
|
|
14
|
-
`completed_at` text,
|
|
15
|
-
`cancelled_at` text,
|
|
16
|
-
`depends_on` text,
|
|
17
|
-
`on_upstream_failure` text,
|
|
18
|
-
`inputs` text,
|
|
19
|
-
`resume_token` text
|
|
20
|
-
);
|
|
21
|
-
--> statement-breakpoint
|
|
22
|
-
INSERT INTO `__new_tasks`("id", "session_id", "parent_task_id", "is_ephemeral", "recursion_depth", "status", "prompt", "result", "error", "created_at", "updated_at", "completed_at", "cancelled_at", "depends_on", "on_upstream_failure", "inputs", "resume_token") SELECT "id", "session_id", "parent_task_id", 0, "recursion_depth", "status", "prompt", "result", "error", "created_at", "updated_at", "completed_at", "cancelled_at", "depends_on", "on_upstream_failure", "inputs", "resume_token" FROM `tasks`;--> statement-breakpoint
|
|
23
|
-
DROP TABLE `tasks`;--> statement-breakpoint
|
|
24
|
-
ALTER TABLE `__new_tasks` RENAME TO `tasks`;--> statement-breakpoint
|
|
25
|
-
PRAGMA foreign_keys=ON;
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
-- runtime-sink-schema: composed_prompts cache + experiment_assignments + sessions.composed_prompt_id
|
|
2
|
-
-- Migration is additive (new tables + nullable column) — backward-compatible with existing rows.
|
|
3
|
-
|
|
4
|
-
CREATE TABLE `composed_prompts` (
|
|
5
|
-
`id` text PRIMARY KEY NOT NULL,
|
|
6
|
-
`agent_slug` text NOT NULL,
|
|
7
|
-
`context_hash` text NOT NULL,
|
|
8
|
-
`content` text NOT NULL,
|
|
9
|
-
`component_versions` text NOT NULL,
|
|
10
|
-
`created_at` text NOT NULL
|
|
11
|
-
);
|
|
12
|
-
--> statement-breakpoint
|
|
13
|
-
CREATE UNIQUE INDEX `idx_composed_prompts_agent_ctx` ON `composed_prompts` (`agent_slug`,`context_hash`);
|
|
14
|
-
--> statement-breakpoint
|
|
15
|
-
CREATE TABLE `experiment_assignments` (
|
|
16
|
-
`id` text PRIMARY KEY NOT NULL,
|
|
17
|
-
`session_id` text NOT NULL,
|
|
18
|
-
`experiment_slug` text NOT NULL,
|
|
19
|
-
`variant` text NOT NULL,
|
|
20
|
-
`created_at` text NOT NULL,
|
|
21
|
-
FOREIGN KEY (`session_id`) REFERENCES `sessions`(`id`) ON UPDATE no action ON DELETE cascade
|
|
22
|
-
);
|
|
23
|
-
--> statement-breakpoint
|
|
24
|
-
ALTER TABLE `sessions` ADD COLUMN `composed_prompt_id` text;
|