@adhd/agent-mcp 2.0.1 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) 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/adhd-agent-mcp-2.1.1.tgz +0 -0
  6. package/docs/architecture-and-security.md +405 -0
  7. package/docs/marketing/.catalog/capabilities.md +143 -0
  8. package/docs/marketing/.catalog/consumer.md +111 -0
  9. package/docs/marketing/.catalog/distribution.md +223 -0
  10. package/docs/marketing/.catalog/doc-conformance.md +237 -0
  11. package/docs/marketing/.catalog/doc-ops.md +98 -0
  12. package/docs/marketing/.catalog/metrics.md +119 -0
  13. package/docs/marketing/.catalog/required-tooling.md +224 -0
  14. package/docs/marketing/.catalog/review.md +164 -0
  15. package/docs/provider-call-audit.md +254 -0
  16. package/drizzle/0007_smart_callisto.sql +40 -0
  17. package/drizzle/0008_cache_and_peak_context_usage.sql +19 -0
  18. package/drizzle/0009_restore_sessions_agent_fk.sql +29 -0
  19. package/drizzle/meta/0007_snapshot.json +658 -0
  20. package/drizzle/meta/_journal.json +22 -1
  21. package/llms.txt +133 -0
  22. package/package.json +30 -51
  23. package/src/__tests__/integration/harness.d.ts +871 -39
  24. package/src/__tests__/integration/harness.d.ts.map +1 -1
  25. package/src/__tests__/integration/harness.js +93 -87
  26. package/src/__tests__/integration/harness.js.map +1 -1
  27. package/src/__tests__/integration/scripted-provider.d.ts +1 -2
  28. package/src/__tests__/integration/scripted-provider.d.ts.map +1 -1
  29. package/src/__tests__/integration/scripted-provider.js +1 -3
  30. package/src/__tests__/integration/scripted-provider.js.map +1 -1
  31. package/src/config.d.ts +6 -69
  32. package/src/config.d.ts.map +1 -1
  33. package/src/config.js +1 -50
  34. package/src/config.js.map +1 -1
  35. package/src/db/client.d.ts +1516 -2
  36. package/src/db/client.d.ts.map +1 -1
  37. package/src/db/client.js +4 -2
  38. package/src/db/client.js.map +1 -1
  39. package/src/db/migrate-runner.d.ts +0 -28
  40. package/src/db/migrate-runner.d.ts.map +1 -1
  41. package/src/db/migrate-runner.js +0 -24
  42. package/src/db/migrate-runner.js.map +1 -1
  43. package/src/db/migrate.d.ts +0 -7
  44. package/src/db/migrate.d.ts.map +1 -1
  45. package/src/db/migrate.js +0 -7
  46. package/src/db/migrate.js.map +1 -1
  47. package/src/db/schema.d.ts +0 -1260
  48. package/src/db/schema.d.ts.map +1 -1
  49. package/src/db/schema.js +2 -179
  50. package/src/db/schema.js.map +1 -1
  51. package/src/index.d.ts +3 -42
  52. package/src/index.d.ts.map +1 -1
  53. package/src/index.js +32 -123
  54. package/src/index.js.map +1 -1
  55. package/src/logger.d.ts +0 -8
  56. package/src/logger.d.ts.map +1 -1
  57. package/src/logger.js +1 -12
  58. package/src/logger.js.map +1 -1
  59. package/src/scripts/agent-mcp-tail.d.ts +3 -0
  60. package/src/scripts/agent-mcp-tail.d.ts.map +1 -0
  61. package/src/scripts/agent-mcp-tail.js +227 -0
  62. package/src/scripts/agent-mcp-tail.js.map +1 -0
  63. package/src/server.d.ts +13 -34
  64. package/src/server.d.ts.map +1 -1
  65. package/src/server.js +234 -326
  66. package/src/server.js.map +1 -1
  67. package/src/store/agent-store.d.ts +3 -16
  68. package/src/store/agent-store.d.ts.map +1 -1
  69. package/src/store/agent-store.js +38 -41
  70. package/src/store/agent-store.js.map +1 -1
  71. package/src/streaming/chat-gateway.d.ts +17 -0
  72. package/src/streaming/chat-gateway.d.ts.map +1 -0
  73. package/src/streaming/chat-gateway.js +336 -0
  74. package/src/streaming/chat-gateway.js.map +1 -0
  75. package/src/streaming/event-bus.d.ts +4 -0
  76. package/src/streaming/event-bus.d.ts.map +1 -1
  77. package/src/streaming/event-bus.js +14 -1
  78. package/src/streaming/event-bus.js.map +1 -1
  79. package/src/streaming/sse-server.d.ts +3 -14
  80. package/src/streaming/sse-server.d.ts.map +1 -1
  81. package/src/streaming/sse-server.js +37 -37
  82. package/src/streaming/sse-server.js.map +1 -1
  83. package/src/utils/load-env.d.ts +0 -14
  84. package/src/utils/load-env.d.ts.map +1 -1
  85. package/src/utils/load-env.js +0 -18
  86. package/src/utils/load-env.js.map +1 -1
  87. package/src/clients/http-client.d.ts +0 -24
  88. package/src/clients/http-client.d.ts.map +0 -1
  89. package/src/clients/http-client.js +0 -98
  90. package/src/clients/http-client.js.map +0 -1
  91. package/src/clients/in-process.d.ts +0 -27
  92. package/src/clients/in-process.d.ts.map +0 -1
  93. package/src/clients/in-process.js +0 -37
  94. package/src/clients/in-process.js.map +0 -1
  95. package/src/clients/index.d.ts +0 -7
  96. package/src/clients/index.d.ts.map +0 -1
  97. package/src/clients/index.js +0 -5
  98. package/src/clients/index.js.map +0 -1
  99. package/src/clients/registry.d.ts +0 -54
  100. package/src/clients/registry.d.ts.map +0 -1
  101. package/src/clients/registry.js +0 -164
  102. package/src/clients/registry.js.map +0 -1
  103. package/src/clients/stdio-client.d.ts +0 -16
  104. package/src/clients/stdio-client.d.ts.map +0 -1
  105. package/src/clients/stdio-client.js +0 -97
  106. package/src/clients/stdio-client.js.map +0 -1
  107. package/src/clients/tool-naming.d.ts +0 -44
  108. package/src/clients/tool-naming.d.ts.map +0 -1
  109. package/src/clients/tool-naming.js +0 -65
  110. package/src/clients/tool-naming.js.map +0 -1
  111. package/src/clients/types.d.ts +0 -18
  112. package/src/clients/types.d.ts.map +0 -1
  113. package/src/clients/types.js +0 -2
  114. package/src/clients/types.js.map +0 -1
  115. package/src/engine/dag-engine.d.ts +0 -62
  116. package/src/engine/dag-engine.d.ts.map +0 -1
  117. package/src/engine/dag-engine.js +0 -158
  118. package/src/engine/dag-engine.js.map +0 -1
  119. package/src/engine/hooks.d.ts +0 -24
  120. package/src/engine/hooks.d.ts.map +0 -1
  121. package/src/engine/hooks.js +0 -50
  122. package/src/engine/hooks.js.map +0 -1
  123. package/src/engine/orchestrator.d.ts +0 -40
  124. package/src/engine/orchestrator.d.ts.map +0 -1
  125. package/src/engine/orchestrator.js +0 -507
  126. package/src/engine/orchestrator.js.map +0 -1
  127. package/src/engine/policy.d.ts +0 -66
  128. package/src/engine/policy.d.ts.map +0 -1
  129. package/src/engine/policy.js +0 -112
  130. package/src/engine/policy.js.map +0 -1
  131. package/src/engine/prompt-resolver.d.ts +0 -89
  132. package/src/engine/prompt-resolver.d.ts.map +0 -1
  133. package/src/engine/prompt-resolver.js +0 -96
  134. package/src/engine/prompt-resolver.js.map +0 -1
  135. package/src/engine/queue.d.ts +0 -29
  136. package/src/engine/queue.d.ts.map +0 -1
  137. package/src/engine/queue.js +0 -56
  138. package/src/engine/queue.js.map +0 -1
  139. package/src/plugins/index.d.ts +0 -2
  140. package/src/plugins/index.d.ts.map +0 -1
  141. package/src/plugins/index.js +0 -2
  142. package/src/plugins/index.js.map +0 -1
  143. package/src/plugins/loader.d.ts +0 -65
  144. package/src/plugins/loader.d.ts.map +0 -1
  145. package/src/plugins/loader.js +0 -222
  146. package/src/plugins/loader.js.map +0 -1
  147. package/src/plugins/usage-plugin.d.ts +0 -27
  148. package/src/plugins/usage-plugin.d.ts.map +0 -1
  149. package/src/plugins/usage-plugin.js +0 -148
  150. package/src/plugins/usage-plugin.js.map +0 -1
  151. package/src/providers/anthropic.d.ts +0 -13
  152. package/src/providers/anthropic.d.ts.map +0 -1
  153. package/src/providers/anthropic.js +0 -260
  154. package/src/providers/anthropic.js.map +0 -1
  155. package/src/providers/claudecli.d.ts +0 -153
  156. package/src/providers/claudecli.d.ts.map +0 -1
  157. package/src/providers/claudecli.js +0 -510
  158. package/src/providers/claudecli.js.map +0 -1
  159. package/src/providers/factory.d.ts +0 -10
  160. package/src/providers/factory.d.ts.map +0 -1
  161. package/src/providers/factory.js +0 -24
  162. package/src/providers/factory.js.map +0 -1
  163. package/src/providers/index.d.ts +0 -6
  164. package/src/providers/index.d.ts.map +0 -1
  165. package/src/providers/index.js +0 -5
  166. package/src/providers/index.js.map +0 -1
  167. package/src/providers/openai.d.ts +0 -14
  168. package/src/providers/openai.d.ts.map +0 -1
  169. package/src/providers/openai.js +0 -162
  170. package/src/providers/openai.js.map +0 -1
  171. package/src/providers/types.d.ts +0 -36
  172. package/src/providers/types.d.ts.map +0 -1
  173. package/src/providers/types.js +0 -2
  174. package/src/providers/types.js.map +0 -1
  175. package/src/store/composed-prompt-store.d.ts +0 -24
  176. package/src/store/composed-prompt-store.d.ts.map +0 -1
  177. package/src/store/composed-prompt-store.js +0 -75
  178. package/src/store/composed-prompt-store.js.map +0 -1
  179. package/src/store/index.d.ts +0 -5
  180. package/src/store/index.d.ts.map +0 -1
  181. package/src/store/index.js +0 -5
  182. package/src/store/index.js.map +0 -1
  183. package/src/store/session-store.d.ts +0 -45
  184. package/src/store/session-store.d.ts.map +0 -1
  185. package/src/store/session-store.js +0 -197
  186. package/src/store/session-store.js.map +0 -1
  187. package/src/store/task-store.d.ts +0 -55
  188. package/src/store/task-store.d.ts.map +0 -1
  189. package/src/store/task-store.js +0 -186
  190. package/src/store/task-store.js.map +0 -1
  191. package/src/tools/agent-crud.d.ts +0 -15
  192. package/src/tools/agent-crud.d.ts.map +0 -1
  193. package/src/tools/agent-crud.js +0 -32
  194. package/src/tools/agent-crud.js.map +0 -1
  195. package/src/tools/session.d.ts +0 -33
  196. package/src/tools/session.d.ts.map +0 -1
  197. package/src/tools/session.js +0 -73
  198. package/src/tools/session.js.map +0 -1
  199. package/src/tools/task.d.ts +0 -86
  200. package/src/tools/task.d.ts.map +0 -1
  201. package/src/tools/task.js +0 -406
  202. package/src/tools/task.js.map +0 -1
  203. package/src/tools/usage.d.ts +0 -60
  204. package/src/tools/usage.d.ts.map +0 -1
  205. package/src/tools/usage.js +0 -174
  206. package/src/tools/usage.js.map +0 -1
  207. package/src/types/agent.d.ts +0 -2
  208. package/src/types/agent.d.ts.map +0 -1
  209. package/src/types/agent.js +0 -3
  210. package/src/types/agent.js.map +0 -1
  211. package/src/types/execution.d.ts +0 -2
  212. package/src/types/execution.d.ts.map +0 -1
  213. package/src/types/execution.js +0 -3
  214. package/src/types/execution.js.map +0 -1
  215. package/src/types/index.d.ts +0 -2
  216. package/src/types/index.d.ts.map +0 -1
  217. package/src/types/index.js +0 -2
  218. package/src/types/index.js.map +0 -1
  219. package/src/types/mcp.d.ts +0 -2
  220. package/src/types/mcp.d.ts.map +0 -1
  221. package/src/types/mcp.js +0 -3
  222. package/src/types/mcp.js.map +0 -1
  223. package/src/types/message.d.ts +0 -2
  224. package/src/types/message.d.ts.map +0 -1
  225. package/src/types/message.js +0 -3
  226. package/src/types/message.js.map +0 -1
  227. package/src/types/session.d.ts +0 -2
  228. package/src/types/session.d.ts.map +0 -1
  229. package/src/types/session.js +0 -3
  230. package/src/types/session.js.map +0 -1
  231. package/src/types/task.d.ts +0 -2
  232. package/src/types/task.d.ts.map +0 -1
  233. package/src/types/task.js +0 -3
  234. package/src/types/task.js.map +0 -1
  235. package/src/utils/ids.d.ts +0 -2
  236. package/src/utils/ids.d.ts.map +0 -1
  237. package/src/utils/ids.js +0 -5
  238. package/src/utils/ids.js.map +0 -1
  239. package/src/utils/logger.d.ts +0 -2
  240. package/src/utils/logger.d.ts.map +0 -1
  241. package/src/utils/logger.js +0 -5
  242. package/src/utils/logger.js.map +0 -1
  243. package/src/utils/timestamps.d.ts +0 -2
  244. package/src/utils/timestamps.d.ts.map +0 -1
  245. package/src/utils/timestamps.js +0 -4
  246. package/src/utils/timestamps.js.map +0 -1
  247. package/src/validation/agent.d.ts +0 -400
  248. package/src/validation/agent.d.ts.map +0 -1
  249. package/src/validation/agent.js +0 -251
  250. package/src/validation/agent.js.map +0 -1
  251. package/src/validation/agents.d.ts +0 -2
  252. package/src/validation/agents.d.ts.map +0 -1
  253. package/src/validation/agents.js +0 -3
  254. package/src/validation/agents.js.map +0 -1
  255. package/src/validation/errors.d.ts +0 -32
  256. package/src/validation/errors.d.ts.map +0 -1
  257. package/src/validation/errors.js +0 -42
  258. package/src/validation/errors.js.map +0 -1
  259. package/src/validation/execution.d.ts +0 -86
  260. package/src/validation/execution.d.ts.map +0 -1
  261. package/src/validation/execution.js +0 -28
  262. package/src/validation/execution.js.map +0 -1
  263. package/src/validation/index.d.ts +0 -9
  264. package/src/validation/index.d.ts.map +0 -1
  265. package/src/validation/index.js +0 -9
  266. package/src/validation/index.js.map +0 -1
  267. package/src/validation/mcp.d.ts +0 -42
  268. package/src/validation/mcp.d.ts.map +0 -1
  269. package/src/validation/mcp.js +0 -28
  270. package/src/validation/mcp.js.map +0 -1
  271. package/src/validation/message.d.ts +0 -43
  272. package/src/validation/message.d.ts.map +0 -1
  273. package/src/validation/message.js +0 -23
  274. package/src/validation/message.js.map +0 -1
  275. package/src/validation/session.d.ts +0 -49
  276. package/src/validation/session.d.ts.map +0 -1
  277. package/src/validation/session.js +0 -34
  278. package/src/validation/session.js.map +0 -1
  279. package/src/validation/task.d.ts +0 -146
  280. package/src/validation/task.d.ts.map +0 -1
  281. package/src/validation/task.js +0 -95
  282. package/src/validation/task.js.map +0 -1
  283. package/src/validation/tasks.d.ts +0 -2
  284. package/src/validation/tasks.d.ts.map +0 -1
  285. package/src/validation/tasks.js +0 -3
  286. package/src/validation/tasks.js.map +0 -1
  287. package/src/validation/usage.d.ts +0 -89
  288. package/src/validation/usage.d.ts.map +0 -1
  289. package/src/validation/usage.js +0 -98
  290. package/src/validation/usage.js.map +0 -1
@@ -1,158 +0,0 @@
1
- import { and, eq, inArray } from "drizzle-orm";
2
- import { tasksTable } from "../db/schema.js";
3
- import { logger } from "../logger.js";
4
- import { ToolError } from "../validation/errors.js";
5
- import { nowIso } from "../utils/timestamps.js";
6
- /**
7
- * DagEngine manages task dependency resolution.
8
- *
9
- * Two public methods:
10
- * - `validateNoCycle()` — synchronous BFS cycle check; called BEFORE row insert.
11
- * - `dispatchReady()` — post-terminal fan-in dispatch; called in the queue runFn
12
- * `finally` block so it fires on every terminal event (completed/failed/cancelled).
13
- *
14
- * The `dispatchFn` is injected at server startup (built in src/index.ts) to avoid
15
- * circular imports: DagEngine must NOT import from tools/task.ts.
16
- */
17
- export class DagEngine {
18
- db;
19
- queue;
20
- taskStore;
21
- dispatchFn;
22
- constructor(db, queue, taskStore,
23
- /**
24
- * Injected at server startup to avoid circular imports with tools/task.ts.
25
- * Signature: (taskId: string) => Promise<void>
26
- * Built in index.ts by closing over the TaskDeps.
27
- */
28
- dispatchFn) {
29
- this.db = db;
30
- this.queue = queue;
31
- this.taskStore = taskStore;
32
- this.dispatchFn = dispatchFn;
33
- }
34
- /**
35
- * BFS cycle detection. Call BEFORE inserting the new task row.
36
- *
37
- * Walks the existing dependency graph upward from each member of `dependsOn`.
38
- * If `newTaskId` appears as an ancestor, adding it would create a cycle.
39
- *
40
- * Throws ToolError("VALIDATION_ERROR") if a cycle is detected.
41
- * Does NOT write any rows — purely a read operation.
42
- *
43
- * Invariant: [inv:cycle-check-synchronous]
44
- */
45
- validateNoCycle(newTaskId, dependsOn) {
46
- const visited = new Set();
47
- const queue = [...dependsOn];
48
- while (queue.length > 0) {
49
- const id = queue.shift();
50
- if (id === newTaskId) {
51
- throw new ToolError("VALIDATION_ERROR", `Dependency cycle detected: task ${newTaskId} would depend on itself via its dependency chain`);
52
- }
53
- if (!visited.has(id)) {
54
- visited.add(id);
55
- const row = this.db
56
- .select({ dependsOn: tasksTable.depends_on })
57
- .from(tasksTable)
58
- .where(eq(tasksTable.id, id))
59
- .get();
60
- const upstreamDeps = row?.dependsOn
61
- ? JSON.parse(row.dependsOn)
62
- : [];
63
- queue.push(...upstreamDeps);
64
- }
65
- }
66
- }
67
- /**
68
- * Called after a task reaches a terminal state (completed/failed/cancelled).
69
- *
70
- * Scans all `waiting` tasks for those that include `completedTaskId` in their
71
- * `depends_on`. For each:
72
- * - If all deps are in a terminal state, evaluate `on_upstream_failure`:
73
- * - "fail" (default): mark the downstream as failed immediately.
74
- * - "skip": dispatch anyway; only include completed upstreams in `inputs`.
75
- *
76
- * Uses optimistic locking (`AND status='waiting'` on the UPDATE) to prevent
77
- * double-enqueue when two concurrent terminal events race for the same fan-in
78
- * task.
79
- *
80
- * Invariants: [inv:waiting-no-queue], [inv:dispatch-on-completion],
81
- * [inv:inputs-populated-at-dispatch]
82
- */
83
- async dispatchReady(completedTaskId) {
84
- // Fetch all waiting tasks in a single query
85
- const waitingTasks = this.db
86
- .select()
87
- .from(tasksTable)
88
- .where(eq(tasksTable.status, "waiting"))
89
- .all();
90
- for (const task of waitingTasks) {
91
- const deps = task.depends_on
92
- ? JSON.parse(task.depends_on)
93
- : [];
94
- // Skip if this task doesn't depend on the just-completed task
95
- if (!deps.includes(completedTaskId))
96
- continue;
97
- // Nothing to dispatch if there are no deps (should not happen for
98
- // waiting tasks, but guard defensively)
99
- if (deps.length === 0)
100
- continue;
101
- // Check all deps for terminal status
102
- const depRows = this.db
103
- .select({
104
- id: tasksTable.id,
105
- status: tasksTable.status,
106
- result: tasksTable.result,
107
- })
108
- .from(tasksTable)
109
- .where(inArray(tasksTable.id, deps))
110
- .all();
111
- const terminalStatuses = new Set(["completed", "failed", "cancelled"]);
112
- const allTerminal = depRows.every(r => terminalStatuses.has(r.status));
113
- if (!allTerminal)
114
- continue;
115
- const policy = (task.on_upstream_failure ?? "fail");
116
- const failedDep = depRows.find(r => r.status === "failed" || r.status === "cancelled");
117
- if (failedDep && policy === "fail") {
118
- // Mark downstream as failed — no enqueue
119
- logger.info({ taskId: task.id, failedDepId: failedDep.id, status: failedDep.status }, "Propagating upstream failure to waiting task");
120
- this.taskStore.updateStatus(task.id, "failed", {
121
- error: `Upstream task ${failedDep.id} ${failedDep.status}`,
122
- });
123
- // Recursively dispatch tasks that depend on this now-failed task
124
- await this.dispatchReady(task.id);
125
- continue;
126
- }
127
- // policy === "skip" or all deps completed:
128
- // Build inputs from completed upstream results only.
129
- // Skip-case: omit failed/cancelled upstreams (no result to inject).
130
- const inputs = {};
131
- for (const dep of depRows) {
132
- if (dep.status === "completed" && dep.result != null) {
133
- inputs[dep.id] = dep.result;
134
- }
135
- }
136
- // Optimistic lock: transition waiting → pending atomically.
137
- // If another concurrent dispatchReady call already transitioned this
138
- // row, changes === 0 and we skip enqueue to avoid double-dispatch.
139
- const updated = this.db
140
- .update(tasksTable)
141
- .set({
142
- status: "pending",
143
- inputs: JSON.stringify(inputs),
144
- updatedAt: nowIso(),
145
- })
146
- .where(and(eq(tasksTable.id, task.id), eq(tasksTable.status, "waiting")))
147
- .run();
148
- if (updated.changes === 0) {
149
- // Lost the race — another worker already transitioned this task
150
- logger.debug({ taskId: task.id }, "DagEngine: lost optimistic lock, skipping enqueue");
151
- continue;
152
- }
153
- logger.info({ taskId: task.id, deps, inputs: Object.keys(inputs) }, "DagEngine: dispatching ready task");
154
- await this.dispatchFn(task.id);
155
- }
156
- }
157
- }
158
- //# sourceMappingURL=dag-engine.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dag-engine.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/engine/dag-engine.ts"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- import type { HookEvent, HookEventMap, HookHandler, IHookRegistry, EnforcementEvent, EnforcementHandler } from "@adhd/agent-mcp-types";
2
- /**
3
- * Concrete implementation of IHookRegistry used by the agent-mcp server.
4
- *
5
- * NOTE: A copy of this class also lives in @adhd/agent-mcp-types so plugin
6
- * authors can instantiate it in their own tests without taking a runtime
7
- * dependency on the full server package. Keep the two in sync until DEBT-009
8
- * is resolved (extraction to @adhd/agent-mcp-hooks).
9
- *
10
- * Observational handlers registered via register() have their throws swallowed
11
- * and logged — a buggy plugin never kills a task.
12
- *
13
- * Enforcement handlers registered via registerEnforcement() propagate throws
14
- * so the orchestrator can fail the task with BUDGET_EXCEEDED.
15
- */
16
- export declare class HookRegistry implements IHookRegistry {
17
- private readonly handlers;
18
- private readonly enforcementHandlers;
19
- register<E extends HookEvent>(event: E, handler: HookHandler<E>): void;
20
- emit<E extends HookEvent>(event: E, payload: HookEventMap[E]): Promise<void>;
21
- registerEnforcement<E extends EnforcementEvent>(event: E, handler: EnforcementHandler<E>): void;
22
- enforce<E extends EnforcementEvent>(event: E, payload: HookEventMap[E]): Promise<void>;
23
- }
24
- //# sourceMappingURL=hooks.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/engine/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,SAAS,EACT,YAAY,EACZ,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EACrB,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;;;;;;GAaG;AACH,qBAAa,YAAa,YAAW,aAAa;IAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6D;IACtF,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAuE;IAE3G,QAAQ,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI;IAMhE,IAAI,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAYlF,mBAAmB,CAAC,CAAC,SAAS,gBAAgB,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI;IAMzF,OAAO,CAAC,CAAC,SAAS,gBAAgB,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAO/F"}
@@ -1,50 +0,0 @@
1
- /**
2
- * Concrete implementation of IHookRegistry used by the agent-mcp server.
3
- *
4
- * NOTE: A copy of this class also lives in @adhd/agent-mcp-types so plugin
5
- * authors can instantiate it in their own tests without taking a runtime
6
- * dependency on the full server package. Keep the two in sync until DEBT-009
7
- * is resolved (extraction to @adhd/agent-mcp-hooks).
8
- *
9
- * Observational handlers registered via register() have their throws swallowed
10
- * and logged — a buggy plugin never kills a task.
11
- *
12
- * Enforcement handlers registered via registerEnforcement() propagate throws
13
- * so the orchestrator can fail the task with BUDGET_EXCEEDED.
14
- */
15
- export class HookRegistry {
16
- handlers = new Map();
17
- enforcementHandlers = new Map();
18
- register(event, handler) {
19
- const list = this.handlers.get(event) ?? [];
20
- list.push(handler);
21
- this.handlers.set(event, list);
22
- }
23
- async emit(event, payload) {
24
- const list = this.handlers.get(event);
25
- if (!list?.length)
26
- return;
27
- for (const handler of list) {
28
- try {
29
- await handler(payload);
30
- }
31
- catch (err) {
32
- console.warn("[HookRegistry] hook handler error (swallowed)", { event, err });
33
- }
34
- }
35
- }
36
- registerEnforcement(event, handler) {
37
- const list = this.enforcementHandlers.get(event) ?? [];
38
- list.push(handler);
39
- this.enforcementHandlers.set(event, list);
40
- }
41
- async enforce(event, payload) {
42
- const list = this.enforcementHandlers.get(event);
43
- if (!list?.length)
44
- return;
45
- for (const handler of list) {
46
- await handler(payload);
47
- }
48
- }
49
- }
50
- //# sourceMappingURL=hooks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/engine/hooks.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,YAAY;IACJ,QAAQ,GAAc,IAAI,GAAG,EAAuC,CAAC;IACrE,mBAAmB,GAAG,IAAI,GAAG,EAA4D,CAAC;IAE3G,QAAQ,CAAsB,KAAQ,EAAE,OAAuB;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,OAAiC,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,IAAI,CAAsB,KAAQ,EAAE,OAAwB;QAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,EAAE,MAAM;YAAE,OAAO;QAC1B,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC;gBACD,MAAO,OAA0B,CAAC,OAAO,CAAC,CAAC;YAC/C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,+CAA+C,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAClF,CAAC;QACL,CAAC;IACL,CAAC;IAED,mBAAmB,CAA6B,KAAQ,EAAE,OAA8B;QACpF,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,OAA+C,CAAC,CAAC;QAC3D,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,OAAO,CAA6B,KAAQ,EAAE,OAAwB;QACxE,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,EAAE,MAAM;YAAE,OAAO;QAC1B,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;YACzB,MAAO,OAAiC,CAAC,OAAO,CAAC,CAAC;QACtD,CAAC;IACL,CAAC;CACJ"}
@@ -1,40 +0,0 @@
1
- import type { LLMProvider } from "../providers/types.js";
2
- import type { ExecutionContext, Message } from "../validation/index.js";
3
- import type { IHookRegistry } from "@adhd/agent-mcp-types";
4
- import type { McpClientRegistry } from "../clients/registry.js";
5
- import type { PolicyEngine } from "./policy.js";
6
- import type { TaskStore } from "../store/task-store.js";
7
- import type { SessionStore } from "../store/session-store.js";
8
- /**
9
- * Resolve a suspended HITL task with the provided user input.
10
- * Returns `true` if the resolver was found and called; `false` if the
11
- * process restarted and the in-memory resolver no longer exists.
12
- */
13
- export declare function resolveHitl(taskId: string, userInput: string): boolean;
14
- export interface OrchestratorRunInput {
15
- executionContext: ExecutionContext;
16
- messages: Message[];
17
- registry: McpClientRegistry;
18
- provider: LLMProvider;
19
- policy: PolicyEngine;
20
- taskStore: TaskStore;
21
- sessionStore: SessionStore;
22
- signal: AbortSignal;
23
- taskId: string;
24
- hooks?: IHookRegistry;
25
- /**
26
- * Set to `true` for ephemeral (one-shot) tasks (agent_name mode).
27
- * Ephemeral tasks DO persist a tasks row + task_events + task_usage, but
28
- * have no sessions row and no messages rows. When `true`,
29
- * `request_human_input` is forbidden because HITL cannot be resumed across
30
- * a process restart without a durable session context.
31
- */
32
- isEphemeral?: boolean;
33
- }
34
- export interface OrchestratorRunResult {
35
- result: string;
36
- }
37
- export declare class Orchestrator {
38
- run(input: OrchestratorRunInput): Promise<OrchestratorRunResult>;
39
- }
40
- //# sourceMappingURL=orchestrator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/engine/orchestrator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAqB,MAAM,uBAAuB,CAAC;AAM9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AA4C9D;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAMtE;AAID,MAAM,WAAW,oBAAoB;IACjC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,QAAQ,EAAE,WAAW,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAmBD,MAAM,WAAW,qBAAqB;IAClC,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,YAAY;IACf,GAAG,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAmiBzE"}