@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
@@ -1,55 +0,0 @@
1
- import type { BetterSQLite3Database } from "drizzle-orm/better-sqlite3";
2
- import type { Task, TaskEventType, TaskListInput, TaskStatus } from "../validation/index.js";
3
- export declare class TaskStore {
4
- private readonly db;
5
- /**
6
- * In-memory map of active AbortControllers keyed by task ID.
7
- * This never gets persisted — it's only relevant for the lifetime
8
- * of the server process and for actively-running tasks.
9
- */
10
- private readonly cancellationMap;
11
- constructor(db: BetterSQLite3Database<Record<string, never>>);
12
- create(input: {
13
- sessionId: string | null;
14
- prompt: string;
15
- parentTaskId?: string;
16
- recursionDepth?: number;
17
- dependsOn?: string[];
18
- onUpstreamFailure?: "fail" | "skip";
19
- inputs?: Record<string, string>;
20
- isEphemeral?: boolean;
21
- id?: string;
22
- }): Task;
23
- updateStatus(id: string, status: TaskStatus, fields?: {
24
- result?: string;
25
- error?: string;
26
- completedAt?: string;
27
- cancelledAt?: string;
28
- resumeToken?: string;
29
- }): Task;
30
- read(id: string): Task;
31
- list(input: TaskListInput): Task[];
32
- appendEvent(event: {
33
- taskId: string;
34
- type: TaskEventType;
35
- payload?: unknown;
36
- }): void;
37
- /**
38
- * Register an AbortController for a running task.
39
- * Called by tools/task.ts immediately after creating the task row.
40
- */
41
- registerCancellation(taskId: string, controller: AbortController): void;
42
- /**
43
- * Remove the AbortController from the map.
44
- * Called by the orchestrator's finally block after the task completes,
45
- * fails, or is cancelled.
46
- */
47
- unregisterCancellation(taskId: string): void;
48
- /**
49
- * Abort the in-flight task and mark it as cancelled in the DB.
50
- * If no controller is registered (e.g., task already finished),
51
- * only the DB update happens — which updateStatus will handle gracefully.
52
- */
53
- cancel(taskId: string): void;
54
- }
55
- //# sourceMappingURL=task-store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"task-store.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/store/task-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAIxE,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAM7F,qBAAa,SAAS;IASd,OAAO,CAAC,QAAQ,CAAC,EAAE;IARvB;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsC;gBAGjD,EAAE,EAAE,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAGrE,MAAM,CAAC,KAAK,EAAE;QACV,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QACrB,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QACpC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,WAAW,CAAC,EAAE,OAAO,CAAC;QAGtB,EAAE,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,IAAI;IAuCR,YAAY,CACR,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,UAAU,EAClB,MAAM,CAAC,EAAE;QACL,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;KACxB,GACF,IAAI;IAyBP,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAmCtB,IAAI,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,EAAE;IA+ClC,WAAW,CAAC,KAAK,EAAE;QACf,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,aAAa,CAAC;QACpB,OAAO,CAAC,EAAE,OAAO,CAAC;KACrB,GAAG,IAAI;IAeR;;;OAGG;IACH,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,GAAG,IAAI;IAIvE;;;;OAIG;IACH,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI5C;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAgB/B"}
@@ -1,186 +0,0 @@
1
- import { and, eq } from "drizzle-orm";
2
- import { taskEventsTable, tasksTable } from "../db/schema.js";
3
- import { logger } from "../logger.js";
4
- import { taskSchema } from "../validation/index.js";
5
- import { ToolError } from "../validation/errors.js";
6
- import { generateId } from "../utils/ids.js";
7
- import { nowIso } from "../utils/timestamps.js";
8
- export class TaskStore {
9
- db;
10
- /**
11
- * In-memory map of active AbortControllers keyed by task ID.
12
- * This never gets persisted — it's only relevant for the lifetime
13
- * of the server process and for actively-running tasks.
14
- */
15
- cancellationMap = new Map();
16
- constructor(db) {
17
- this.db = db;
18
- }
19
- create(input) {
20
- const now = nowIso();
21
- const id = input.id ?? generateId();
22
- // A task with upstream dependencies starts in "waiting" until DagEngine
23
- // dispatches it (downstream task-dependency-dag plan).
24
- const status = input.dependsOn && input.dependsOn.length > 0 ? "waiting" : "pending";
25
- this.db.insert(tasksTable).values({
26
- id,
27
- sessionId: input.sessionId ?? null,
28
- parentTaskId: input.parentTaskId ?? null,
29
- isEphemeral: input.isEphemeral ? 1 : 0,
30
- recursionDepth: input.recursionDepth ?? 0,
31
- status,
32
- prompt: input.prompt,
33
- depends_on: input.dependsOn ? JSON.stringify(input.dependsOn) : null,
34
- on_upstream_failure: input.onUpstreamFailure ?? null,
35
- inputs: input.inputs ? JSON.stringify(input.inputs) : null,
36
- createdAt: now,
37
- updatedAt: now,
38
- }).run();
39
- logger.info({
40
- taskId: id,
41
- sessionId: input.sessionId,
42
- parentTaskId: input.parentTaskId,
43
- recursionDepth: input.recursionDepth ?? 0,
44
- status,
45
- isEphemeral: input.isEphemeral ?? false,
46
- dependsOn: input.dependsOn,
47
- }, "Task created");
48
- return this.read(id);
49
- }
50
- updateStatus(id, status, fields) {
51
- const now = nowIso();
52
- this.db
53
- .update(tasksTable)
54
- .set({
55
- status,
56
- updatedAt: now,
57
- result: fields?.result ?? null,
58
- error: fields?.error ?? null,
59
- completedAt: fields?.completedAt ?? null,
60
- cancelledAt: fields?.cancelledAt ?? null,
61
- // Only touch resume_token when explicitly supplied — a plain status
62
- // transition (e.g. -> "running") must NOT wipe a token that the
63
- // HITL resume tool still needs to read back.
64
- ...(fields?.resumeToken !== undefined
65
- ? { resume_token: fields.resumeToken }
66
- : {}),
67
- })
68
- .where(eq(tasksTable.id, id))
69
- .run();
70
- return this.read(id);
71
- }
72
- read(id) {
73
- const row = this.db
74
- .select()
75
- .from(tasksTable)
76
- .where(eq(tasksTable.id, id))
77
- .get();
78
- if (!row) {
79
- throw new ToolError("TASK_NOT_FOUND", `Task '${id}' not found`);
80
- }
81
- return taskSchema.parse({
82
- id: row.id,
83
- sessionId: row.sessionId ?? undefined,
84
- isEphemeral: row.isEphemeral === 1,
85
- parentTaskId: row.parentTaskId ?? undefined,
86
- recursionDepth: row.recursionDepth,
87
- status: row.status,
88
- prompt: row.prompt,
89
- result: row.result ?? undefined,
90
- error: row.error ?? undefined,
91
- createdAt: row.createdAt,
92
- updatedAt: row.updatedAt,
93
- completedAt: row.completedAt ?? undefined,
94
- cancelledAt: row.cancelledAt ?? undefined,
95
- dependsOn: row.depends_on ? JSON.parse(row.depends_on) : null,
96
- onUpstreamFailure: row.on_upstream_failure ?? null,
97
- inputs: row.inputs ? JSON.parse(row.inputs) : null,
98
- resumeToken: row.resume_token ?? null,
99
- });
100
- }
101
- list(input) {
102
- const conditions = [];
103
- if (input.session_id) {
104
- conditions.push(eq(tasksTable.sessionId, input.session_id));
105
- }
106
- if (input.status) {
107
- conditions.push(eq(tasksTable.status, input.status));
108
- }
109
- if (input.is_ephemeral !== undefined) {
110
- conditions.push(eq(tasksTable.isEphemeral, input.is_ephemeral ? 1 : 0));
111
- }
112
- const rows = conditions.length > 0
113
- ? this.db
114
- .select()
115
- .from(tasksTable)
116
- .where(and(...conditions))
117
- .all()
118
- : this.db.select().from(tasksTable).all();
119
- return rows.map(row => taskSchema.parse({
120
- id: row.id,
121
- sessionId: row.sessionId ?? undefined,
122
- isEphemeral: row.isEphemeral === 1,
123
- parentTaskId: row.parentTaskId ?? undefined,
124
- recursionDepth: row.recursionDepth,
125
- status: row.status,
126
- prompt: row.prompt,
127
- result: row.result ?? undefined,
128
- error: row.error ?? undefined,
129
- createdAt: row.createdAt,
130
- updatedAt: row.updatedAt,
131
- completedAt: row.completedAt ?? undefined,
132
- cancelledAt: row.cancelledAt ?? undefined,
133
- dependsOn: row.depends_on ? JSON.parse(row.depends_on) : null,
134
- onUpstreamFailure: row.on_upstream_failure ?? null,
135
- inputs: row.inputs ? JSON.parse(row.inputs) : null,
136
- resumeToken: row.resume_token ?? null,
137
- }));
138
- }
139
- appendEvent(event) {
140
- const now = nowIso();
141
- this.db.insert(taskEventsTable).values({
142
- id: generateId(),
143
- taskId: event.taskId,
144
- type: event.type,
145
- payload: event.payload ? JSON.stringify(event.payload) : null,
146
- createdAt: now,
147
- }).run();
148
- }
149
- // ──────────────────────────────────────────────
150
- // Cancellation map (in-memory only)
151
- // ──────────────────────────────────────────────
152
- /**
153
- * Register an AbortController for a running task.
154
- * Called by tools/task.ts immediately after creating the task row.
155
- */
156
- registerCancellation(taskId, controller) {
157
- this.cancellationMap.set(taskId, controller);
158
- }
159
- /**
160
- * Remove the AbortController from the map.
161
- * Called by the orchestrator's finally block after the task completes,
162
- * fails, or is cancelled.
163
- */
164
- unregisterCancellation(taskId) {
165
- this.cancellationMap.delete(taskId);
166
- }
167
- /**
168
- * Abort the in-flight task and mark it as cancelled in the DB.
169
- * If no controller is registered (e.g., task already finished),
170
- * only the DB update happens — which updateStatus will handle gracefully.
171
- */
172
- cancel(taskId) {
173
- const controller = this.cancellationMap.get(taskId);
174
- if (controller) {
175
- controller.abort();
176
- }
177
- this.updateStatus(taskId, "cancelled", {
178
- cancelledAt: nowIso(),
179
- // Persist the reason so a client that connects AFTER cancellation
180
- // (SSE terminal-on-connect) reads it from the row instead of null.
181
- error: "Task was cancelled",
182
- });
183
- logger.info({ taskId }, "Task cancelled");
184
- }
185
- }
186
- //# sourceMappingURL=task-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"task-store.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/store/task-store.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- import type { AgentStore } from "../store/agent-store.js";
2
- import type { SessionStore } from "../store/session-store.js";
3
- import type { AgentCreateInput, AgentDefinition, AgentDeleteInput, AgentReadInput, AgentUpdateInput } from "../validation/index.js";
4
- export interface AgentCrudDeps {
5
- agentStore: AgentStore;
6
- sessionStore: SessionStore;
7
- }
8
- export declare function agentCreate(input: AgentCreateInput, deps: AgentCrudDeps): AgentDefinition;
9
- export declare function agentRead(input: AgentReadInput, deps: AgentCrudDeps): AgentDefinition;
10
- export declare function agentUpdate(input: AgentUpdateInput, deps: AgentCrudDeps): AgentDefinition;
11
- export declare function agentDelete(input: AgentDeleteInput, deps: AgentCrudDeps): {
12
- success: true;
13
- };
14
- export declare function agentList(_input: unknown, deps: AgentCrudDeps): AgentDefinition[];
15
- //# sourceMappingURL=agent-crud.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-crud.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/tools/agent-crud.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EACR,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EACnB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,aAAa;IAC1B,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,YAAY,CAAC;CAC9B;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,aAAa,GAAG,eAAe,CAEzF;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,GAAG,eAAe,CAErF;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,aAAa,GAAG,eAAe,CAEzF;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,aAAa,GAAG;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,CAiB3F;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,GAAG,eAAe,EAAE,CAEjF"}
@@ -1,32 +0,0 @@
1
- export function agentCreate(input, deps) {
2
- return deps.agentStore.create(input);
3
- }
4
- export function agentRead(input, deps) {
5
- return deps.agentStore.read(input.name);
6
- }
7
- export function agentUpdate(input, deps) {
8
- return deps.agentStore.update(input);
9
- }
10
- export function agentDelete(input, deps) {
11
- if (input.force) {
12
- // BUG-002 escape hatch: close any active sessions before deleting so the
13
- // AGENT_HAS_ACTIVE_SESSIONS guard doesn't block recovery from a failed
14
- // delegation that orphaned sessions. Only closes sessions; does not touch
15
- // user-persistent sessions that were explicitly kept open by the caller.
16
- const activeSessions = deps.sessionStore.list({ agentName: input.name, status: "active" });
17
- for (const session of activeSessions) {
18
- try {
19
- deps.sessionStore.close(session.id);
20
- }
21
- catch {
22
- // Already closed in a race — ignore
23
- }
24
- }
25
- }
26
- deps.agentStore.delete(input.name);
27
- return { success: true };
28
- }
29
- export function agentList(_input, deps) {
30
- return deps.agentStore.list();
31
- }
32
- //# sourceMappingURL=agent-crud.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-crud.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/tools/agent-crud.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,WAAW,CAAC,KAAuB,EAAE,IAAmB;IACpE,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAqB,EAAE,IAAmB;IAChE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAuB,EAAE,IAAmB;IACpE,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAuB,EAAE,IAAmB;IACpE,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,yEAAyE;QACzE,uEAAuE;QACvE,0EAA0E;QAC1E,yEAAyE;QACzE,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3F,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;YACnC,IAAI,CAAC;gBACD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACxC,CAAC;YAAC,MAAM,CAAC;gBACL,oCAAoC;YACxC,CAAC;QACL,CAAC;IACL,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAe,EAAE,IAAmB;IAC1D,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AAClC,CAAC"}
@@ -1,33 +0,0 @@
1
- import type { AgentStore } from "../store/agent-store.js";
2
- import type { SessionStore } from "../store/session-store.js";
3
- import type { PolicyEngine } from "../engine/policy.js";
4
- import type { PromptResolverDeps } from "../engine/prompt-resolver.js";
5
- import type { AgentToolInput, AgentToolOutput, ExecutionContext, Session, SessionCloseInput, SessionClearInput, SessionClearOutput, SessionListInput } from "../validation/index.js";
6
- export interface SessionDeps {
7
- agentStore: AgentStore;
8
- sessionStore: SessionStore;
9
- policy: PolicyEngine;
10
- /**
11
- * Optional prompt-resolver dependencies. When present, the session-start
12
- * path resolves the system-prompt via compileAgent and writes
13
- * sessions.composed_prompt_id. When absent (legacy / tests that don't
14
- * exercise the compiler path), the session is created without resolution.
15
- */
16
- promptResolver?: PromptResolverDeps;
17
- }
18
- /**
19
- * `agent` tool — instantiates a session for a named agent.
20
- *
21
- * When called from within a running task context (executionContext is
22
- * defined), the policy engine enforces the allowedAgents check and we
23
- * log an AGENT_DELEGATION event.
24
- *
25
- * When `deps.promptResolver` is provided, the agent's system-prompt is
26
- * resolved via the compiler (with a composed_prompts cache lookup) and
27
- * `sessions.composed_prompt_id` is written with the resolved row id.
28
- */
29
- export declare function agentTool(input: AgentToolInput, deps: SessionDeps, executionContext?: ExecutionContext): Promise<AgentToolOutput>;
30
- export declare function sessionList(input: SessionListInput, deps: SessionDeps): Session[];
31
- export declare function sessionClose(input: SessionCloseInput, deps: SessionDeps): Session;
32
- export declare function sessionClear(input: SessionClearInput, deps: SessionDeps): SessionClearOutput;
33
- //# sourceMappingURL=session.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/tools/session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,KAAK,EACR,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,OAAO,EACP,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EACnB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,WAAW;IACxB,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,kBAAkB,CAAC;CACvC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,SAAS,CAC3B,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,WAAW,EACjB,gBAAgB,CAAC,EAAE,gBAAgB,GACpC,OAAO,CAAC,eAAe,CAAC,CA4D1B;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,EAAE,CAEjF;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAGjF;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,WAAW,GAAG,kBAAkB,CAG5F"}
@@ -1,73 +0,0 @@
1
- import { logger } from "../logger.js";
2
- import { resolveComposedPrompt } from "../engine/prompt-resolver.js";
3
- /**
4
- * `agent` tool — instantiates a session for a named agent.
5
- *
6
- * When called from within a running task context (executionContext is
7
- * defined), the policy engine enforces the allowedAgents check and we
8
- * log an AGENT_DELEGATION event.
9
- *
10
- * When `deps.promptResolver` is provided, the agent's system-prompt is
11
- * resolved via the compiler (with a composed_prompts cache lookup) and
12
- * `sessions.composed_prompt_id` is written with the resolved row id.
13
- */
14
- export async function agentTool(input, deps, executionContext) {
15
- const agentDefinition = deps.agentStore.read(input.name); // throws AGENT_NOT_FOUND
16
- // Policy check when called from within a running task
17
- if (executionContext) {
18
- deps.policy.check({
19
- executionContext,
20
- targetTool: "agent-mcp__agent",
21
- targetAgentName: input.name,
22
- });
23
- logger.info({
24
- taskId: executionContext.taskId,
25
- targetAgent: input.name,
26
- newDepth: executionContext.recursionDepth + 1,
27
- }, "AGENT_DELEGATION");
28
- }
29
- // Resolve system-prompt via compiler when resolver deps are available.
30
- // The resolved content replaces the stored agentDefinition.systemPrompt
31
- // (compat-shim: [def:compat-shim]) and the composed_prompt_id is written
32
- // to the session row so consumers can trace the exact artifact used.
33
- let resolvedSystemPrompt;
34
- let composedPromptId;
35
- if (deps.promptResolver) {
36
- // resolveComposedPrompt returns null when the agent has no registry
37
- // composition (flat-systemPrompt compat fallback path). In that case
38
- // resolvedSystemPrompt / composedPromptId remain undefined and the
39
- // session is created from the stored agentDefinition.systemPrompt below.
40
- const resolved = resolveComposedPrompt({
41
- agentSlug: input.name,
42
- platform: agentDefinition.provider.type,
43
- context: {},
44
- }, deps.promptResolver);
45
- if (resolved !== null) {
46
- resolvedSystemPrompt = resolved.content;
47
- composedPromptId = resolved.id;
48
- }
49
- }
50
- // Build the agent definition snapshot: if we resolved a system-prompt via
51
- // the compiler, populate systemPrompt from the compiled content (compat-shim).
52
- const snapshotDefinition = resolvedSystemPrompt !== undefined
53
- ? { ...agentDefinition, systemPrompt: resolvedSystemPrompt }
54
- : agentDefinition;
55
- const session = deps.sessionStore.create({
56
- agentName: input.name,
57
- agentDefinition: snapshotDefinition,
58
- composedPromptId,
59
- });
60
- return { session_id: session.id };
61
- }
62
- export function sessionList(input, deps) {
63
- return deps.sessionStore.list(input);
64
- }
65
- export function sessionClose(input, deps) {
66
- // SessionStore.close() throws SESSION_NOT_FOUND or SESSION_CLOSED as appropriate
67
- return deps.sessionStore.close(input.session_id);
68
- }
69
- export function sessionClear(input, deps) {
70
- const cleared = deps.sessionStore.clearMessages(input.session_id);
71
- return { session_id: input.session_id, cleared };
72
- }
73
- //# sourceMappingURL=session.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/tools/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAKtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAyBrE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC3B,KAAqB,EACrB,IAAiB,EACjB,gBAAmC;IAEnC,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB;IAEnF,sDAAsD;IACtD,IAAI,gBAAgB,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YACd,gBAAgB;YAChB,UAAU,EAAE,kBAAkB;YAC9B,eAAe,EAAE,KAAK,CAAC,IAAI;SAC9B,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CACP;YACI,MAAM,EAAE,gBAAgB,CAAC,MAAM;YAC/B,WAAW,EAAE,KAAK,CAAC,IAAI;YACvB,QAAQ,EAAE,gBAAgB,CAAC,cAAc,GAAG,CAAC;SAChD,EACD,kBAAkB,CACrB,CAAC;IACN,CAAC;IAED,uEAAuE;IACvE,wEAAwE;IACxE,yEAAyE;IACzE,qEAAqE;IACrE,IAAI,oBAAwC,CAAC;IAC7C,IAAI,gBAAoC,CAAC;IAEzC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,oEAAoE;QACpE,sEAAsE;QACtE,mEAAmE;QACnE,yEAAyE;QACzE,MAAM,QAAQ,GAAG,qBAAqB,CAClC;YACI,SAAS,EAAE,KAAK,CAAC,IAAI;YACrB,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC,IAAI;YACvC,OAAO,EAAE,EAAE;SACd,EACD,IAAI,CAAC,cAAc,CACtB,CAAC;QACF,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACpB,oBAAoB,GAAG,QAAQ,CAAC,OAAO,CAAC;YACxC,gBAAgB,GAAG,QAAQ,CAAC,EAAE,CAAC;QACnC,CAAC;IACL,CAAC;IAED,0EAA0E;IAC1E,+EAA+E;IAC/E,MAAM,kBAAkB,GAAG,oBAAoB,KAAK,SAAS;QACzD,CAAC,CAAC,EAAE,GAAG,eAAe,EAAE,YAAY,EAAE,oBAAoB,EAAE;QAC5D,CAAC,CAAC,eAAe,CAAC;IAEtB,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QACrC,SAAS,EAAE,KAAK,CAAC,IAAI;QACrB,eAAe,EAAE,kBAAkB;QACnC,gBAAgB;KACnB,CAAC,CAAC;IAEH,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAuB,EAAE,IAAiB;IAClE,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAwB,EAAE,IAAiB;IACpE,iFAAiF;IACjF,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAwB,EAAE,IAAiB;IACpE,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAClE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;AACrD,CAAC"}
@@ -1,86 +0,0 @@
1
- import type { BackgroundQueue } from "../engine/queue.js";
2
- import type { DagEngine } from "../engine/dag-engine.js";
3
- import type { Orchestrator } from "../engine/orchestrator.js";
4
- import type { PolicyEngine } from "../engine/policy.js";
5
- import type { InProcessToolDescriptor, InProcessToolHandler } from "../clients/in-process.js";
6
- import type { AgentStore } from "../store/agent-store.js";
7
- import type { SessionStore } from "../store/session-store.js";
8
- import type { TaskStore } from "../store/task-store.js";
9
- import type { ExecutionContext, ResultInput, Task, TaskCancelInput, TaskListInput, TaskToolInput, TaskToolOutput, TaskUsageReport } from "../validation/index.js";
10
- import type { IHookRegistry } from "@adhd/agent-mcp-types";
11
- import { type Database } from "./usage.js";
12
- export interface TaskDeps {
13
- agentStore: AgentStore;
14
- sessionStore: SessionStore;
15
- taskStore: TaskStore;
16
- orchestrator: Orchestrator;
17
- queue: BackgroundQueue;
18
- policy: PolicyEngine;
19
- hooks: IHookRegistry;
20
- selfUrl: string | undefined;
21
- inProcessDescriptors: InProcessToolDescriptor[];
22
- inProcessHandler: InProcessToolHandler;
23
- /**
24
- * Drizzle DB handle — used to enrich `task` / `result` responses with the
25
- * task's token-usage rollup (direct + subtree). See [dod.2].
26
- */
27
- db: Database;
28
- /**
29
- * DagEngine — manages dependency cycle detection and fan-in dispatch.
30
- * Injected at server startup (index.ts) to avoid circular imports.
31
- */
32
- dagEngine: DagEngine;
33
- }
34
- /**
35
- * `task` tool — runs a prompt against a session's agent (session mode) or runs a
36
- * one-shot ephemeral task without persisting any context (agent_name mode).
37
- *
38
- * Session mode mandatory order (per plan Gap 17):
39
- * 1. Validate session exists and is active
40
- * 2. Load snapshotted AgentDefinition
41
- * 3. Create Task row
42
- * 4. Build ExecutionContext
43
- * 5. Create AbortController
44
- * 6. Register cancellation
45
- * 7. Build provider
46
- * 8. Build per-task registry
47
- * 9. Run orchestrator (background or sync)
48
- */
49
- export declare function taskTool(input: TaskToolInput, deps: TaskDeps, callerContext?: ExecutionContext): Promise<TaskToolOutput>;
50
- /**
51
- * Re-enqueue an existing task row that is already in "pending" status.
52
- *
53
- * Called by DagEngine.dispatchFn (built in index.ts) when a waiting task
54
- * transitions to pending after all its dependencies complete. The task row
55
- * already exists in the DB — this function only builds the runtime context
56
- * (executionContext, messages, provider, registry) and enqueues it.
57
- *
58
- * Also used on server startup to re-enqueue tasks orphaned by a crash between
59
- * DagEngine's DB update and queue.enqueue().
60
- */
61
- export declare function enqueueExistingTask(taskId: string, deps: TaskDeps): Promise<void>;
62
- export declare function taskList(input: TaskListInput, deps: Pick<TaskDeps, "taskStore">): Task[];
63
- export declare function taskCancel(input: TaskCancelInput, deps: Pick<TaskDeps, "taskStore">): {
64
- success: true;
65
- };
66
- /**
67
- * `task_resume` tool — resumes a suspended `awaiting_input` task by providing
68
- * the `userInput` that the orchestrator is waiting for.
69
- *
70
- * The caller must supply the `resumeToken` that was written to the DB when the
71
- * task was suspended. If the process restarted while the task was suspended the
72
- * in-memory resolver no longer exists; the task is auto-failed and
73
- * `TASK_NOT_RESUMABLE` is thrown so the caller knows not to retry.
74
- */
75
- export declare function taskResume(input: {
76
- taskId: string;
77
- resumeToken: string;
78
- userInput: string;
79
- }, deps: Pick<TaskDeps, "taskStore">): Promise<{
80
- success: true;
81
- taskId: string;
82
- }>;
83
- export declare function resultTool(input: ResultInput, deps: Pick<TaskDeps, "taskStore" | "db">): Task & {
84
- usage?: TaskUsageReport;
85
- };
86
- //# sourceMappingURL=task.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/tools/task.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAE9F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,KAAK,EACR,gBAAgB,EAChB,WAAW,EACX,IAAI,EACJ,eAAe,EACf,aAAa,EACb,aAAa,EACb,cAAc,EACd,eAAe,EAClB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAwB,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEjE,MAAM,WAAW,QAAQ;IACrB,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,YAAY,CAAC;IAC3B,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,aAAa,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,oBAAoB,EAAE,uBAAuB,EAAE,CAAC;IAChD,gBAAgB,EAAE,oBAAoB,CAAC;IACvC;;;OAGG;IACH,EAAE,EAAE,QAAQ,CAAC;IACb;;;OAGG;IACH,SAAS,EAAE,SAAS,CAAC;CACxB;AAoHD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,QAAQ,CAC1B,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,QAAQ,EACd,aAAa,CAAC,EAAE,gBAAgB,GACjC,OAAO,CAAC,cAAc,CAAC,CA6KzB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAmGvF;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAI,EAAE,CAExF;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,CAavG;AAED;;;;;;;;GAQG;AACH,wBAAsB,UAAU,CAC5B,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EACjE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,GAClC,OAAO,CAAC;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA4B5C;AAED,wBAAgB,UAAU,CACtB,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC,GACzC,IAAI,GAAG;IAAE,KAAK,CAAC,EAAE,eAAe,CAAA;CAAE,CAIpC"}