@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.
Files changed (299) hide show
  1. package/AGENTS.md +236 -0
  2. package/CHANGELOG.md +115 -0
  3. package/LICENSE +21 -0
  4. package/README.md +201 -0
  5. package/docs/architecture-and-security.md +405 -0
  6. package/docs/marketing/.catalog/capabilities.md +143 -0
  7. package/docs/marketing/.catalog/consumer.md +111 -0
  8. package/docs/marketing/.catalog/distribution.md +223 -0
  9. package/docs/marketing/.catalog/doc-conformance.md +237 -0
  10. package/docs/marketing/.catalog/doc-ops.md +98 -0
  11. package/docs/marketing/.catalog/metrics.md +119 -0
  12. package/docs/marketing/.catalog/required-tooling.md +224 -0
  13. package/docs/marketing/.catalog/review.md +164 -0
  14. package/docs/provider-call-audit.md +254 -0
  15. package/llms.txt +133 -0
  16. package/package.json +30 -51
  17. package/src/__tests__/integration/harness.d.ts +871 -39
  18. package/src/__tests__/integration/harness.d.ts.map +1 -1
  19. package/src/__tests__/integration/harness.js +93 -87
  20. package/src/__tests__/integration/harness.js.map +1 -1
  21. package/src/__tests__/integration/scripted-provider.d.ts +1 -2
  22. package/src/__tests__/integration/scripted-provider.d.ts.map +1 -1
  23. package/src/__tests__/integration/scripted-provider.js +1 -3
  24. package/src/__tests__/integration/scripted-provider.js.map +1 -1
  25. package/src/config.d.ts +6 -69
  26. package/src/config.d.ts.map +1 -1
  27. package/src/config.js +1 -50
  28. package/src/config.js.map +1 -1
  29. package/src/db/client.d.ts +1516 -2
  30. package/src/db/client.d.ts.map +1 -1
  31. package/src/db/client.js +4 -2
  32. package/src/db/client.js.map +1 -1
  33. package/src/db/migrate-runner.d.ts +0 -28
  34. package/src/db/migrate-runner.d.ts.map +1 -1
  35. package/src/db/migrate-runner.js +0 -24
  36. package/src/db/migrate-runner.js.map +1 -1
  37. package/src/db/migrate.d.ts +0 -7
  38. package/src/db/migrate.d.ts.map +1 -1
  39. package/src/db/migrate.js +0 -7
  40. package/src/db/migrate.js.map +1 -1
  41. package/src/db/schema.d.ts +0 -1260
  42. package/src/db/schema.d.ts.map +1 -1
  43. package/src/db/schema.js +2 -179
  44. package/src/db/schema.js.map +1 -1
  45. package/src/index.d.ts +3 -42
  46. package/src/index.d.ts.map +1 -1
  47. package/src/index.js +32 -123
  48. package/src/index.js.map +1 -1
  49. package/src/logger.d.ts +0 -8
  50. package/src/logger.d.ts.map +1 -1
  51. package/src/logger.js +1 -12
  52. package/src/logger.js.map +1 -1
  53. package/src/scripts/agent-mcp-tail.d.ts +3 -0
  54. package/src/scripts/agent-mcp-tail.d.ts.map +1 -0
  55. package/src/scripts/agent-mcp-tail.js +227 -0
  56. package/src/scripts/agent-mcp-tail.js.map +1 -0
  57. package/src/server.d.ts +13 -34
  58. package/src/server.d.ts.map +1 -1
  59. package/src/server.js +234 -326
  60. package/src/server.js.map +1 -1
  61. package/src/store/agent-store.d.ts +3 -16
  62. package/src/store/agent-store.d.ts.map +1 -1
  63. package/src/store/agent-store.js +38 -41
  64. package/src/store/agent-store.js.map +1 -1
  65. package/src/streaming/chat-gateway.d.ts +17 -0
  66. package/src/streaming/chat-gateway.d.ts.map +1 -0
  67. package/src/streaming/chat-gateway.js +336 -0
  68. package/src/streaming/chat-gateway.js.map +1 -0
  69. package/src/streaming/event-bus.d.ts +4 -0
  70. package/src/streaming/event-bus.d.ts.map +1 -1
  71. package/src/streaming/event-bus.js +14 -1
  72. package/src/streaming/event-bus.js.map +1 -1
  73. package/src/streaming/sse-server.d.ts +3 -14
  74. package/src/streaming/sse-server.d.ts.map +1 -1
  75. package/src/streaming/sse-server.js +37 -37
  76. package/src/streaming/sse-server.js.map +1 -1
  77. package/src/utils/load-env.d.ts +0 -14
  78. package/src/utils/load-env.d.ts.map +1 -1
  79. package/src/utils/load-env.js +0 -18
  80. package/src/utils/load-env.js.map +1 -1
  81. package/drizzle/0000_nifty_sasquatch.sql +0 -55
  82. package/drizzle/0001_task_usage.sql +0 -16
  83. package/drizzle/0002_lumpy_silver_centurion.sql +0 -2
  84. package/drizzle/0003_nifty_shriek.sql +0 -2
  85. package/drizzle/0004_brief_shocker.sql +0 -4
  86. package/drizzle/0005_clear_lenny_balinger.sql +0 -25
  87. package/drizzle/0006_composed_prompts_cache.sql +0 -24
  88. package/drizzle/meta/0000_snapshot.json +0 -387
  89. package/drizzle/meta/0001_snapshot.json +0 -495
  90. package/drizzle/meta/0002_snapshot.json +0 -509
  91. package/drizzle/meta/0003_snapshot.json +0 -523
  92. package/drizzle/meta/0004_snapshot.json +0 -551
  93. package/drizzle/meta/0005_snapshot.json +0 -545
  94. package/drizzle/meta/0006_snapshot.json +0 -651
  95. package/drizzle/meta/_journal.json +0 -55
  96. package/src/clients/http-client.d.ts +0 -24
  97. package/src/clients/http-client.d.ts.map +0 -1
  98. package/src/clients/http-client.js +0 -98
  99. package/src/clients/http-client.js.map +0 -1
  100. package/src/clients/in-process.d.ts +0 -27
  101. package/src/clients/in-process.d.ts.map +0 -1
  102. package/src/clients/in-process.js +0 -37
  103. package/src/clients/in-process.js.map +0 -1
  104. package/src/clients/index.d.ts +0 -7
  105. package/src/clients/index.d.ts.map +0 -1
  106. package/src/clients/index.js +0 -5
  107. package/src/clients/index.js.map +0 -1
  108. package/src/clients/registry.d.ts +0 -54
  109. package/src/clients/registry.d.ts.map +0 -1
  110. package/src/clients/registry.js +0 -164
  111. package/src/clients/registry.js.map +0 -1
  112. package/src/clients/stdio-client.d.ts +0 -16
  113. package/src/clients/stdio-client.d.ts.map +0 -1
  114. package/src/clients/stdio-client.js +0 -97
  115. package/src/clients/stdio-client.js.map +0 -1
  116. package/src/clients/tool-naming.d.ts +0 -44
  117. package/src/clients/tool-naming.d.ts.map +0 -1
  118. package/src/clients/tool-naming.js +0 -65
  119. package/src/clients/tool-naming.js.map +0 -1
  120. package/src/clients/types.d.ts +0 -18
  121. package/src/clients/types.d.ts.map +0 -1
  122. package/src/clients/types.js +0 -2
  123. package/src/clients/types.js.map +0 -1
  124. package/src/engine/dag-engine.d.ts +0 -62
  125. package/src/engine/dag-engine.d.ts.map +0 -1
  126. package/src/engine/dag-engine.js +0 -158
  127. package/src/engine/dag-engine.js.map +0 -1
  128. package/src/engine/hooks.d.ts +0 -24
  129. package/src/engine/hooks.d.ts.map +0 -1
  130. package/src/engine/hooks.js +0 -50
  131. package/src/engine/hooks.js.map +0 -1
  132. package/src/engine/orchestrator.d.ts +0 -40
  133. package/src/engine/orchestrator.d.ts.map +0 -1
  134. package/src/engine/orchestrator.js +0 -507
  135. package/src/engine/orchestrator.js.map +0 -1
  136. package/src/engine/policy.d.ts +0 -66
  137. package/src/engine/policy.d.ts.map +0 -1
  138. package/src/engine/policy.js +0 -112
  139. package/src/engine/policy.js.map +0 -1
  140. package/src/engine/prompt-resolver.d.ts +0 -89
  141. package/src/engine/prompt-resolver.d.ts.map +0 -1
  142. package/src/engine/prompt-resolver.js +0 -96
  143. package/src/engine/prompt-resolver.js.map +0 -1
  144. package/src/engine/queue.d.ts +0 -29
  145. package/src/engine/queue.d.ts.map +0 -1
  146. package/src/engine/queue.js +0 -56
  147. package/src/engine/queue.js.map +0 -1
  148. package/src/plugins/index.d.ts +0 -2
  149. package/src/plugins/index.d.ts.map +0 -1
  150. package/src/plugins/index.js +0 -2
  151. package/src/plugins/index.js.map +0 -1
  152. package/src/plugins/loader.d.ts +0 -65
  153. package/src/plugins/loader.d.ts.map +0 -1
  154. package/src/plugins/loader.js +0 -222
  155. package/src/plugins/loader.js.map +0 -1
  156. package/src/plugins/usage-plugin.d.ts +0 -27
  157. package/src/plugins/usage-plugin.d.ts.map +0 -1
  158. package/src/plugins/usage-plugin.js +0 -148
  159. package/src/plugins/usage-plugin.js.map +0 -1
  160. package/src/providers/anthropic.d.ts +0 -13
  161. package/src/providers/anthropic.d.ts.map +0 -1
  162. package/src/providers/anthropic.js +0 -260
  163. package/src/providers/anthropic.js.map +0 -1
  164. package/src/providers/claudecli.d.ts +0 -153
  165. package/src/providers/claudecli.d.ts.map +0 -1
  166. package/src/providers/claudecli.js +0 -510
  167. package/src/providers/claudecli.js.map +0 -1
  168. package/src/providers/factory.d.ts +0 -10
  169. package/src/providers/factory.d.ts.map +0 -1
  170. package/src/providers/factory.js +0 -24
  171. package/src/providers/factory.js.map +0 -1
  172. package/src/providers/index.d.ts +0 -6
  173. package/src/providers/index.d.ts.map +0 -1
  174. package/src/providers/index.js +0 -5
  175. package/src/providers/index.js.map +0 -1
  176. package/src/providers/openai.d.ts +0 -14
  177. package/src/providers/openai.d.ts.map +0 -1
  178. package/src/providers/openai.js +0 -162
  179. package/src/providers/openai.js.map +0 -1
  180. package/src/providers/types.d.ts +0 -36
  181. package/src/providers/types.d.ts.map +0 -1
  182. package/src/providers/types.js +0 -2
  183. package/src/providers/types.js.map +0 -1
  184. package/src/store/composed-prompt-store.d.ts +0 -24
  185. package/src/store/composed-prompt-store.d.ts.map +0 -1
  186. package/src/store/composed-prompt-store.js +0 -75
  187. package/src/store/composed-prompt-store.js.map +0 -1
  188. package/src/store/index.d.ts +0 -5
  189. package/src/store/index.d.ts.map +0 -1
  190. package/src/store/index.js +0 -5
  191. package/src/store/index.js.map +0 -1
  192. package/src/store/session-store.d.ts +0 -45
  193. package/src/store/session-store.d.ts.map +0 -1
  194. package/src/store/session-store.js +0 -197
  195. package/src/store/session-store.js.map +0 -1
  196. package/src/store/task-store.d.ts +0 -55
  197. package/src/store/task-store.d.ts.map +0 -1
  198. package/src/store/task-store.js +0 -186
  199. package/src/store/task-store.js.map +0 -1
  200. package/src/tools/agent-crud.d.ts +0 -15
  201. package/src/tools/agent-crud.d.ts.map +0 -1
  202. package/src/tools/agent-crud.js +0 -32
  203. package/src/tools/agent-crud.js.map +0 -1
  204. package/src/tools/session.d.ts +0 -33
  205. package/src/tools/session.d.ts.map +0 -1
  206. package/src/tools/session.js +0 -73
  207. package/src/tools/session.js.map +0 -1
  208. package/src/tools/task.d.ts +0 -86
  209. package/src/tools/task.d.ts.map +0 -1
  210. package/src/tools/task.js +0 -406
  211. package/src/tools/task.js.map +0 -1
  212. package/src/tools/usage.d.ts +0 -60
  213. package/src/tools/usage.d.ts.map +0 -1
  214. package/src/tools/usage.js +0 -174
  215. package/src/tools/usage.js.map +0 -1
  216. package/src/types/agent.d.ts +0 -2
  217. package/src/types/agent.d.ts.map +0 -1
  218. package/src/types/agent.js +0 -3
  219. package/src/types/agent.js.map +0 -1
  220. package/src/types/execution.d.ts +0 -2
  221. package/src/types/execution.d.ts.map +0 -1
  222. package/src/types/execution.js +0 -3
  223. package/src/types/execution.js.map +0 -1
  224. package/src/types/index.d.ts +0 -2
  225. package/src/types/index.d.ts.map +0 -1
  226. package/src/types/index.js +0 -2
  227. package/src/types/index.js.map +0 -1
  228. package/src/types/mcp.d.ts +0 -2
  229. package/src/types/mcp.d.ts.map +0 -1
  230. package/src/types/mcp.js +0 -3
  231. package/src/types/mcp.js.map +0 -1
  232. package/src/types/message.d.ts +0 -2
  233. package/src/types/message.d.ts.map +0 -1
  234. package/src/types/message.js +0 -3
  235. package/src/types/message.js.map +0 -1
  236. package/src/types/session.d.ts +0 -2
  237. package/src/types/session.d.ts.map +0 -1
  238. package/src/types/session.js +0 -3
  239. package/src/types/session.js.map +0 -1
  240. package/src/types/task.d.ts +0 -2
  241. package/src/types/task.d.ts.map +0 -1
  242. package/src/types/task.js +0 -3
  243. package/src/types/task.js.map +0 -1
  244. package/src/utils/ids.d.ts +0 -2
  245. package/src/utils/ids.d.ts.map +0 -1
  246. package/src/utils/ids.js +0 -5
  247. package/src/utils/ids.js.map +0 -1
  248. package/src/utils/logger.d.ts +0 -2
  249. package/src/utils/logger.d.ts.map +0 -1
  250. package/src/utils/logger.js +0 -5
  251. package/src/utils/logger.js.map +0 -1
  252. package/src/utils/timestamps.d.ts +0 -2
  253. package/src/utils/timestamps.d.ts.map +0 -1
  254. package/src/utils/timestamps.js +0 -4
  255. package/src/utils/timestamps.js.map +0 -1
  256. package/src/validation/agent.d.ts +0 -400
  257. package/src/validation/agent.d.ts.map +0 -1
  258. package/src/validation/agent.js +0 -251
  259. package/src/validation/agent.js.map +0 -1
  260. package/src/validation/agents.d.ts +0 -2
  261. package/src/validation/agents.d.ts.map +0 -1
  262. package/src/validation/agents.js +0 -3
  263. package/src/validation/agents.js.map +0 -1
  264. package/src/validation/errors.d.ts +0 -32
  265. package/src/validation/errors.d.ts.map +0 -1
  266. package/src/validation/errors.js +0 -42
  267. package/src/validation/errors.js.map +0 -1
  268. package/src/validation/execution.d.ts +0 -86
  269. package/src/validation/execution.d.ts.map +0 -1
  270. package/src/validation/execution.js +0 -28
  271. package/src/validation/execution.js.map +0 -1
  272. package/src/validation/index.d.ts +0 -9
  273. package/src/validation/index.d.ts.map +0 -1
  274. package/src/validation/index.js +0 -9
  275. package/src/validation/index.js.map +0 -1
  276. package/src/validation/mcp.d.ts +0 -42
  277. package/src/validation/mcp.d.ts.map +0 -1
  278. package/src/validation/mcp.js +0 -28
  279. package/src/validation/mcp.js.map +0 -1
  280. package/src/validation/message.d.ts +0 -43
  281. package/src/validation/message.d.ts.map +0 -1
  282. package/src/validation/message.js +0 -23
  283. package/src/validation/message.js.map +0 -1
  284. package/src/validation/session.d.ts +0 -49
  285. package/src/validation/session.d.ts.map +0 -1
  286. package/src/validation/session.js +0 -34
  287. package/src/validation/session.js.map +0 -1
  288. package/src/validation/task.d.ts +0 -146
  289. package/src/validation/task.d.ts.map +0 -1
  290. package/src/validation/task.js +0 -95
  291. package/src/validation/task.js.map +0 -1
  292. package/src/validation/tasks.d.ts +0 -2
  293. package/src/validation/tasks.d.ts.map +0 -1
  294. package/src/validation/tasks.js +0 -3
  295. package/src/validation/tasks.js.map +0 -1
  296. package/src/validation/usage.d.ts +0 -89
  297. package/src/validation/usage.d.ts.map +0 -1
  298. package/src/validation/usage.js +0 -98
  299. 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":["../../../../../../packages/ai/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,CAE1D;AAED,wBAAgB,eAAe,CAC3B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAC1C,MAAM,IAAI,CAIZ"}
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); // many concurrent SSE connections
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":["../../../../../../packages/ai/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,CAAC,kCAAkC;AAEhE,MAAM,UAAU,aAAa,CAAC,KAAsB;IAChD,OAAO,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC;AAChD,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"}
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 { TaskStore } from "../store/task-store.js";
3
- /**
4
- * Start the task-streaming SSE server.
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":["../../../../../../packages/ai/agent-mcp/src/streaming/sse-server.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAOxD;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAC1B,SAAS,EAAE,SAAS,EACpB,IAAI,GAAE,MAAwB,EAC9B,IAAI,GAAE,MAAwB,GAC/B,IAAI,CAAC,MAAM,CAgHb"}
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
- // Route: GET /tasks/:id/stream :id must be a UUID
22
- const match = req.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);
23
- if (!match || req.method !== "GET") {
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 (task may not exist yet)
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; // guard against post-cleanup emissions
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":["../../../../../../packages/ai/agent-mcp/src/streaming/sse-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sse-server.js","sourceRoot":"","sources":["../../../../../entrypoint/agent-mcp/src/streaming/sse-server.ts"],"names":[],"mappings":"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"}
@@ -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":["../../../../../../packages/ai/agent-mcp/src/utils/load-env.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAsB,GAAG,IAAI,CAQlE"}
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"}
@@ -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":["../../../../../../packages/ai/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;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACxD,2EAA2E;IAC3E,0EAA0E;IAC1E,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IACjE,sDAAsD;IACtD,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,qCAAqC;IACrC,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACnE,CAAC"}
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,2 +0,0 @@
1
- ALTER TABLE `task_usage` ADD `stop_reason` text;--> statement-breakpoint
2
- ALTER TABLE `task_usage` ADD `max_tokens` integer;
@@ -1,2 +0,0 @@
1
- ALTER TABLE `task_usage` ADD `cache_read_input_tokens` integer;--> statement-breakpoint
2
- ALTER TABLE `task_usage` ADD `cache_creation_input_tokens` integer;
@@ -1,4 +0,0 @@
1
- ALTER TABLE `tasks` ADD `depends_on` text;--> statement-breakpoint
2
- ALTER TABLE `tasks` ADD `on_upstream_failure` text;--> statement-breakpoint
3
- ALTER TABLE `tasks` ADD `inputs` text;--> statement-breakpoint
4
- ALTER TABLE `tasks` ADD `resume_token` text;
@@ -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;