@adhd/agent-mcp 0.0.8 → 1.0.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 (99) hide show
  1. package/drizzle/0000_nifty_sasquatch.sql +55 -0
  2. package/drizzle/0001_task_usage.sql +16 -0
  3. package/drizzle/0002_lumpy_silver_centurion.sql +2 -0
  4. package/drizzle/0003_nifty_shriek.sql +2 -0
  5. package/drizzle/0004_brief_shocker.sql +4 -0
  6. package/drizzle/0005_clear_lenny_balinger.sql +25 -0
  7. package/drizzle/meta/0000_snapshot.json +387 -0
  8. package/drizzle/meta/0001_snapshot.json +495 -0
  9. package/drizzle/meta/0002_snapshot.json +509 -0
  10. package/drizzle/meta/0003_snapshot.json +523 -0
  11. package/drizzle/meta/0004_snapshot.json +551 -0
  12. package/drizzle/meta/0005_snapshot.json +545 -0
  13. package/drizzle/meta/_journal.json +48 -0
  14. package/package.json +4 -2
  15. package/src/__tests__/integration/harness.d.ts +195 -0
  16. package/src/__tests__/integration/harness.d.ts.map +1 -0
  17. package/src/__tests__/integration/harness.js +396 -0
  18. package/src/__tests__/integration/harness.js.map +1 -0
  19. package/src/__tests__/integration/scripted-provider.d.ts +44 -0
  20. package/src/__tests__/integration/scripted-provider.d.ts.map +1 -0
  21. package/src/__tests__/integration/scripted-provider.js +82 -0
  22. package/src/__tests__/integration/scripted-provider.js.map +1 -0
  23. package/src/clients/registry.d.ts +17 -0
  24. package/src/clients/registry.d.ts.map +1 -1
  25. package/src/clients/registry.js +45 -6
  26. package/src/clients/registry.js.map +1 -1
  27. package/src/clients/tool-naming.d.ts +20 -0
  28. package/src/clients/tool-naming.d.ts.map +1 -0
  29. package/src/clients/tool-naming.js +22 -0
  30. package/src/clients/tool-naming.js.map +1 -0
  31. package/src/db/client.d.ts +1 -0
  32. package/src/db/client.d.ts.map +1 -1
  33. package/src/db/client.js +1 -1
  34. package/src/db/client.js.map +1 -1
  35. package/src/db/migrate-runner.d.ts +38 -0
  36. package/src/db/migrate-runner.d.ts.map +1 -0
  37. package/src/db/migrate-runner.js +41 -0
  38. package/src/db/migrate-runner.js.map +1 -0
  39. package/src/db/migrate.d.ts +3 -0
  40. package/src/db/migrate.d.ts.map +1 -1
  41. package/src/db/migrate.js +6 -5
  42. package/src/db/migrate.js.map +1 -1
  43. package/src/db/schema.d.ts +96 -3
  44. package/src/db/schema.d.ts.map +1 -1
  45. package/src/db/schema.js +16 -6
  46. package/src/db/schema.js.map +1 -1
  47. package/src/engine/dag-engine.d.ts +62 -0
  48. package/src/engine/dag-engine.d.ts.map +1 -0
  49. package/src/engine/dag-engine.js +158 -0
  50. package/src/engine/dag-engine.js.map +1 -0
  51. package/src/engine/orchestrator.d.ts +14 -0
  52. package/src/engine/orchestrator.d.ts.map +1 -1
  53. package/src/engine/orchestrator.js +202 -57
  54. package/src/engine/orchestrator.js.map +1 -1
  55. package/src/engine/queue.d.ts +6 -0
  56. package/src/engine/queue.d.ts.map +1 -1
  57. package/src/engine/queue.js +8 -0
  58. package/src/engine/queue.js.map +1 -1
  59. package/src/index.js +75 -0
  60. package/src/index.js.map +1 -1
  61. package/src/providers/anthropic.d.ts.map +1 -1
  62. package/src/providers/anthropic.js +22 -3
  63. package/src/providers/anthropic.js.map +1 -1
  64. package/src/server.d.ts +18 -0
  65. package/src/server.d.ts.map +1 -1
  66. package/src/server.js +25 -2
  67. package/src/server.js.map +1 -1
  68. package/src/store/task-store.d.ts +7 -1
  69. package/src/store/task-store.d.ts.map +1 -1
  70. package/src/store/task-store.js +37 -5
  71. package/src/store/task-store.js.map +1 -1
  72. package/src/streaming/event-bus.d.ts +28 -0
  73. package/src/streaming/event-bus.d.ts.map +1 -0
  74. package/src/streaming/event-bus.js +12 -0
  75. package/src/streaming/event-bus.js.map +1 -0
  76. package/src/streaming/sse-server.d.ts +4 -0
  77. package/src/streaming/sse-server.d.ts.map +1 -0
  78. package/src/streaming/sse-server.js +95 -0
  79. package/src/streaming/sse-server.js.map +1 -0
  80. package/src/tools/task.d.ts +35 -0
  81. package/src/tools/task.d.ts.map +1 -1
  82. package/src/tools/task.js +200 -36
  83. package/src/tools/task.js.map +1 -1
  84. package/src/validation/agent.d.ts +3 -0
  85. package/src/validation/agent.d.ts.map +1 -1
  86. package/src/validation/agent.js +7 -0
  87. package/src/validation/agent.js.map +1 -1
  88. package/src/validation/errors.d.ts +1 -0
  89. package/src/validation/errors.d.ts.map +1 -1
  90. package/src/validation/errors.js +1 -0
  91. package/src/validation/errors.js.map +1 -1
  92. package/src/validation/execution.d.ts +2 -0
  93. package/src/validation/execution.d.ts.map +1 -1
  94. package/src/validation/execution.js +5 -0
  95. package/src/validation/execution.js.map +1 -1
  96. package/src/validation/task.d.ts +31 -1
  97. package/src/validation/task.d.ts.map +1 -1
  98. package/src/validation/task.js +24 -1
  99. package/src/validation/task.js.map +1 -1
package/src/db/schema.js CHANGED
@@ -55,15 +55,19 @@ export const messagesTable = sqliteTable("messages", {
55
55
  // ──────────────────────────────────────────────
56
56
  export const tasksTable = sqliteTable("tasks", {
57
57
  id: text("id").primaryKey(),
58
- sessionId: text("session_id")
59
- .notNull()
60
- .references(() => sessionsTable.id, {
61
- onDelete: "cascade"
62
- }),
58
+ // Nullable: ephemeral tasks (agent_name one-shot mode) have no session row.
59
+ // No FK reference: the session may not exist (ephemeral) or may have been
60
+ // deleted; we never want a cascade-delete triggered by session cleanup to
61
+ // destroy task history.
62
+ sessionId: text("session_id"),
63
63
  parentTaskId: text("parent_task_id"),
64
+ // SQLite boolean: 0 = session-backed task, 1 = ephemeral one-shot task.
65
+ // Ephemeral tasks persist a tasks row + task_events + task_usage but
66
+ // have no sessions row and no messages rows.
67
+ isEphemeral: integer("is_ephemeral").notNull().default(0),
64
68
  recursionDepth: integer("recursion_depth").notNull().default(0),
65
69
  status: text("status", {
66
- enum: ["pending", "running", "completed", "failed", "cancelled"]
70
+ enum: ["pending", "running", "completed", "failed", "cancelled", "waiting", "awaiting_input"]
67
71
  }).notNull().default("pending"),
68
72
  prompt: text("prompt").notNull(),
69
73
  result: text("result"),
@@ -72,6 +76,12 @@ export const tasksTable = sqliteTable("tasks", {
72
76
  updatedAt: text("updated_at").notNull(),
73
77
  completedAt: text("completed_at"),
74
78
  cancelledAt: text("cancelled_at"),
79
+ // Dependency DAG fields (consumed by task-dependency-dag plan)
80
+ depends_on: text("depends_on"), // nullable JSON array of upstream task IDs
81
+ on_upstream_failure: text("on_upstream_failure"), // nullable: 'fail'|'skip' (default: 'fail')
82
+ inputs: text("inputs"), // nullable JSON blob: upstream taskId→result map
83
+ // HITL suspension field (consumed by hitl-interrupts plan)
84
+ resume_token: text("resume_token"), // nullable UUID written before await
75
85
  });
76
86
  // ──────────────────────────────────────────────
77
87
  // task_events
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/db/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/db/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import type { BetterSQLite3Database } from "drizzle-orm/better-sqlite3";
2
+ import type { TaskStore } from "../store/task-store.js";
3
+ import type { BackgroundQueue } from "./queue.js";
4
+ /**
5
+ * DagEngine manages task dependency resolution.
6
+ *
7
+ * Two public methods:
8
+ * - `validateNoCycle()` — synchronous BFS cycle check; called BEFORE row insert.
9
+ * - `dispatchReady()` — post-terminal fan-in dispatch; called in the queue runFn
10
+ * `finally` block so it fires on every terminal event (completed/failed/cancelled).
11
+ *
12
+ * The `dispatchFn` is injected at server startup (built in src/index.ts) to avoid
13
+ * circular imports: DagEngine must NOT import from tools/task.ts.
14
+ */
15
+ export declare class DagEngine {
16
+ private readonly db;
17
+ private readonly queue;
18
+ private readonly taskStore;
19
+ /**
20
+ * Injected at server startup to avoid circular imports with tools/task.ts.
21
+ * Signature: (taskId: string) => Promise<void>
22
+ * Built in index.ts by closing over the TaskDeps.
23
+ */
24
+ private readonly dispatchFn;
25
+ constructor(db: BetterSQLite3Database<Record<string, never>>, queue: BackgroundQueue, taskStore: TaskStore,
26
+ /**
27
+ * Injected at server startup to avoid circular imports with tools/task.ts.
28
+ * Signature: (taskId: string) => Promise<void>
29
+ * Built in index.ts by closing over the TaskDeps.
30
+ */
31
+ dispatchFn: (taskId: string) => Promise<void>);
32
+ /**
33
+ * BFS cycle detection. Call BEFORE inserting the new task row.
34
+ *
35
+ * Walks the existing dependency graph upward from each member of `dependsOn`.
36
+ * If `newTaskId` appears as an ancestor, adding it would create a cycle.
37
+ *
38
+ * Throws ToolError("VALIDATION_ERROR") if a cycle is detected.
39
+ * Does NOT write any rows — purely a read operation.
40
+ *
41
+ * Invariant: [inv:cycle-check-synchronous]
42
+ */
43
+ validateNoCycle(newTaskId: string, dependsOn: string[]): void;
44
+ /**
45
+ * Called after a task reaches a terminal state (completed/failed/cancelled).
46
+ *
47
+ * Scans all `waiting` tasks for those that include `completedTaskId` in their
48
+ * `depends_on`. For each:
49
+ * - If all deps are in a terminal state, evaluate `on_upstream_failure`:
50
+ * - "fail" (default): mark the downstream as failed immediately.
51
+ * - "skip": dispatch anyway; only include completed upstreams in `inputs`.
52
+ *
53
+ * Uses optimistic locking (`AND status='waiting'` on the UPDATE) to prevent
54
+ * double-enqueue when two concurrent terminal events race for the same fan-in
55
+ * task.
56
+ *
57
+ * Invariants: [inv:waiting-no-queue], [inv:dispatch-on-completion],
58
+ * [inv:inputs-populated-at-dispatch]
59
+ */
60
+ dispatchReady(completedTaskId: string): Promise<void>;
61
+ }
62
+ //# sourceMappingURL=dag-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dag-engine.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/engine/dag-engine.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAIxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAIlD;;;;;;;;;;GAUG;AACH,qBAAa,SAAS;IAEd,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU;gBARV,EAAE,EAAE,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAChD,KAAK,EAAE,eAAe,EACtB,SAAS,EAAE,SAAS;IACrC;;;;OAIG;IACc,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC;IAGlE;;;;;;;;;;OAUG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAgC7D;;;;;;;;;;;;;;;OAeG;IACG,aAAa,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAkG9D"}
@@ -0,0 +1,158 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dag-engine.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/engine/dag-engine.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,12 @@ import type { McpClientRegistry } from "../clients/registry.js";
5
5
  import type { PolicyEngine } from "./policy.js";
6
6
  import type { TaskStore } from "../store/task-store.js";
7
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;
8
14
  export interface OrchestratorRunInput {
9
15
  executionContext: ExecutionContext;
10
16
  messages: Message[];
@@ -16,6 +22,14 @@ export interface OrchestratorRunInput {
16
22
  signal: AbortSignal;
17
23
  taskId: string;
18
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;
19
33
  }
20
34
  export interface OrchestratorRunResult {
21
35
  result: string;
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/engine/orchestrator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAK3D,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;AAG9D,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;CACzB;AAQD,MAAM,WAAW,qBAAqB;IAClC,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,YAAY;IACf,GAAG,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;CA+YzE"}
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/engine/orchestrator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAM3D,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;AAQD,MAAM,WAAW,qBAAqB;IAClC,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,YAAY;IACf,GAAG,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAufzE"}