@adhd/agent-mcp 0.0.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 (196) hide show
  1. package/drizzle/0000_nifty_sasquatch.sql +55 -0
  2. package/drizzle/meta/0000_snapshot.json +387 -0
  3. package/drizzle/meta/_journal.json +13 -0
  4. package/package.json +51 -0
  5. package/src/clients/http-client.d.ts +24 -0
  6. package/src/clients/http-client.d.ts.map +1 -0
  7. package/src/clients/http-client.js +96 -0
  8. package/src/clients/http-client.js.map +1 -0
  9. package/src/clients/in-process.d.ts +27 -0
  10. package/src/clients/in-process.d.ts.map +1 -0
  11. package/src/clients/in-process.js +32 -0
  12. package/src/clients/in-process.js.map +1 -0
  13. package/src/clients/index.d.ts +7 -0
  14. package/src/clients/index.d.ts.map +1 -0
  15. package/src/clients/index.js +5 -0
  16. package/src/clients/index.js.map +1 -0
  17. package/src/clients/registry.d.ts +37 -0
  18. package/src/clients/registry.d.ts.map +1 -0
  19. package/src/clients/registry.js +125 -0
  20. package/src/clients/registry.js.map +1 -0
  21. package/src/clients/stdio-client.d.ts +16 -0
  22. package/src/clients/stdio-client.d.ts.map +1 -0
  23. package/src/clients/stdio-client.js +90 -0
  24. package/src/clients/stdio-client.js.map +1 -0
  25. package/src/clients/types.d.ts +14 -0
  26. package/src/clients/types.d.ts.map +1 -0
  27. package/src/clients/types.js +2 -0
  28. package/src/clients/types.js.map +1 -0
  29. package/src/db/client.d.ts +6 -0
  30. package/src/db/client.d.ts.map +1 -0
  31. package/src/db/client.js +19 -0
  32. package/src/db/client.js.map +1 -0
  33. package/src/db/migrate.d.ts +6 -0
  34. package/src/db/migrate.d.ts.map +1 -0
  35. package/src/db/migrate.js +12 -0
  36. package/src/db/migrate.js.map +1 -0
  37. package/src/db/schema.d.ts +733 -0
  38. package/src/db/schema.d.ts.map +1 -0
  39. package/src/db/schema.js +100 -0
  40. package/src/db/schema.js.map +1 -0
  41. package/src/engine/orchestrator.d.ts +24 -0
  42. package/src/engine/orchestrator.d.ts.map +1 -0
  43. package/src/engine/orchestrator.js +231 -0
  44. package/src/engine/orchestrator.js.map +1 -0
  45. package/src/engine/policy.d.ts +42 -0
  46. package/src/engine/policy.d.ts.map +1 -0
  47. package/src/engine/policy.js +45 -0
  48. package/src/engine/policy.js.map +1 -0
  49. package/src/engine/queue.d.ts +23 -0
  50. package/src/engine/queue.d.ts.map +1 -0
  51. package/src/engine/queue.js +45 -0
  52. package/src/engine/queue.js.map +1 -0
  53. package/src/index.d.ts +3 -0
  54. package/src/index.d.ts.map +1 -0
  55. package/src/index.js +51 -0
  56. package/src/index.js.map +1 -0
  57. package/src/logger.d.ts +11 -0
  58. package/src/logger.d.ts.map +1 -0
  59. package/src/logger.js +17 -0
  60. package/src/logger.js.map +1 -0
  61. package/src/providers/anthropic.d.ts +11 -0
  62. package/src/providers/anthropic.d.ts.map +1 -0
  63. package/src/providers/anthropic.js +133 -0
  64. package/src/providers/anthropic.js.map +1 -0
  65. package/src/providers/factory.d.ts +7 -0
  66. package/src/providers/factory.d.ts.map +1 -0
  67. package/src/providers/factory.js +21 -0
  68. package/src/providers/factory.js.map +1 -0
  69. package/src/providers/index.d.ts +6 -0
  70. package/src/providers/index.d.ts.map +1 -0
  71. package/src/providers/index.js +5 -0
  72. package/src/providers/index.js.map +1 -0
  73. package/src/providers/lmstudio.d.ts +8 -0
  74. package/src/providers/lmstudio.d.ts.map +1 -0
  75. package/src/providers/lmstudio.js +15 -0
  76. package/src/providers/lmstudio.js.map +1 -0
  77. package/src/providers/openai.d.ts +12 -0
  78. package/src/providers/openai.d.ts.map +1 -0
  79. package/src/providers/openai.js +129 -0
  80. package/src/providers/openai.js.map +1 -0
  81. package/src/providers/types.d.ts +32 -0
  82. package/src/providers/types.d.ts.map +1 -0
  83. package/src/providers/types.js +2 -0
  84. package/src/providers/types.js.map +1 -0
  85. package/src/server.d.ts +23 -0
  86. package/src/server.d.ts.map +1 -0
  87. package/src/server.js +539 -0
  88. package/src/server.js.map +1 -0
  89. package/src/store/agent-store.d.ts +12 -0
  90. package/src/store/agent-store.d.ts.map +1 -0
  91. package/src/store/agent-store.js +97 -0
  92. package/src/store/agent-store.js.map +1 -0
  93. package/src/store/index.d.ts +4 -0
  94. package/src/store/index.d.ts.map +1 -0
  95. package/src/store/index.js +4 -0
  96. package/src/store/index.js.map +1 -0
  97. package/src/store/session-store.d.ts +23 -0
  98. package/src/store/session-store.d.ts.map +1 -0
  99. package/src/store/session-store.js +152 -0
  100. package/src/store/session-store.js.map +1 -0
  101. package/src/store/task-store.d.ts +49 -0
  102. package/src/store/task-store.d.ts.map +1 -0
  103. package/src/store/task-store.js +154 -0
  104. package/src/store/task-store.js.map +1 -0
  105. package/src/tools/agent-crud.d.ts +13 -0
  106. package/src/tools/agent-crud.d.ts.map +1 -0
  107. package/src/tools/agent-crud.js +17 -0
  108. package/src/tools/agent-crud.js.map +1 -0
  109. package/src/tools/session.d.ts +21 -0
  110. package/src/tools/session.d.ts.map +1 -0
  111. package/src/tools/session.js +41 -0
  112. package/src/tools/session.js.map +1 -0
  113. package/src/tools/task.d.ts +38 -0
  114. package/src/tools/task.d.ts.map +1 -0
  115. package/src/tools/task.js +136 -0
  116. package/src/tools/task.js.map +1 -0
  117. package/src/types/agent.d.ts +2 -0
  118. package/src/types/agent.d.ts.map +1 -0
  119. package/src/types/agent.js +3 -0
  120. package/src/types/agent.js.map +1 -0
  121. package/src/types/execution.d.ts +2 -0
  122. package/src/types/execution.d.ts.map +1 -0
  123. package/src/types/execution.js +3 -0
  124. package/src/types/execution.js.map +1 -0
  125. package/src/types/index.d.ts +2 -0
  126. package/src/types/index.d.ts.map +1 -0
  127. package/src/types/index.js +2 -0
  128. package/src/types/index.js.map +1 -0
  129. package/src/types/mcp.d.ts +2 -0
  130. package/src/types/mcp.d.ts.map +1 -0
  131. package/src/types/mcp.js +3 -0
  132. package/src/types/mcp.js.map +1 -0
  133. package/src/types/message.d.ts +2 -0
  134. package/src/types/message.d.ts.map +1 -0
  135. package/src/types/message.js +3 -0
  136. package/src/types/message.js.map +1 -0
  137. package/src/types/session.d.ts +2 -0
  138. package/src/types/session.d.ts.map +1 -0
  139. package/src/types/session.js +3 -0
  140. package/src/types/session.js.map +1 -0
  141. package/src/types/task.d.ts +2 -0
  142. package/src/types/task.d.ts.map +1 -0
  143. package/src/types/task.js +3 -0
  144. package/src/types/task.js.map +1 -0
  145. package/src/utils/ids.d.ts +2 -0
  146. package/src/utils/ids.d.ts.map +1 -0
  147. package/src/utils/ids.js +5 -0
  148. package/src/utils/ids.js.map +1 -0
  149. package/src/utils/logger.d.ts +2 -0
  150. package/src/utils/logger.d.ts.map +1 -0
  151. package/src/utils/logger.js +5 -0
  152. package/src/utils/logger.js.map +1 -0
  153. package/src/utils/timestamps.d.ts +2 -0
  154. package/src/utils/timestamps.d.ts.map +1 -0
  155. package/src/utils/timestamps.js +4 -0
  156. package/src/utils/timestamps.js.map +1 -0
  157. package/src/validation/agent.d.ts +276 -0
  158. package/src/validation/agent.d.ts.map +1 -0
  159. package/src/validation/agent.js +94 -0
  160. package/src/validation/agent.js.map +1 -0
  161. package/src/validation/agents.d.ts +2 -0
  162. package/src/validation/agents.d.ts.map +1 -0
  163. package/src/validation/agents.js +3 -0
  164. package/src/validation/agents.js.map +1 -0
  165. package/src/validation/errors.d.ts +23 -0
  166. package/src/validation/errors.d.ts.map +1 -0
  167. package/src/validation/errors.js +33 -0
  168. package/src/validation/errors.js.map +1 -0
  169. package/src/validation/execution.d.ts +83 -0
  170. package/src/validation/execution.d.ts.map +1 -0
  171. package/src/validation/execution.js +23 -0
  172. package/src/validation/execution.js.map +1 -0
  173. package/src/validation/index.d.ts +8 -0
  174. package/src/validation/index.d.ts.map +1 -0
  175. package/src/validation/index.js +8 -0
  176. package/src/validation/index.js.map +1 -0
  177. package/src/validation/mcp.d.ts +43 -0
  178. package/src/validation/mcp.d.ts.map +1 -0
  179. package/src/validation/mcp.js +28 -0
  180. package/src/validation/mcp.js.map +1 -0
  181. package/src/validation/message.d.ts +46 -0
  182. package/src/validation/message.d.ts.map +1 -0
  183. package/src/validation/message.js +23 -0
  184. package/src/validation/message.js.map +1 -0
  185. package/src/validation/session.d.ts +49 -0
  186. package/src/validation/session.d.ts.map +1 -0
  187. package/src/validation/session.js +34 -0
  188. package/src/validation/session.js.map +1 -0
  189. package/src/validation/task.d.ts +94 -0
  190. package/src/validation/task.d.ts.map +1 -0
  191. package/src/validation/task.js +60 -0
  192. package/src/validation/task.js.map +1 -0
  193. package/src/validation/tasks.d.ts +2 -0
  194. package/src/validation/tasks.d.ts.map +1 -0
  195. package/src/validation/tasks.js +3 -0
  196. package/src/validation/tasks.js.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-store.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/store/agent-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { AgentStore } from "./agent-store.js";
2
+ export { SessionStore } from "./session-store.js";
3
+ export { TaskStore } from "./task-store.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/store/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { AgentStore } from "./agent-store.js";
2
+ export { SessionStore } from "./session-store.js";
3
+ export { TaskStore } from "./task-store.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/store/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { BetterSQLite3Database } from "drizzle-orm/better-sqlite3";
2
+ import type { AgentDefinition, Message, Session, SessionListInput } from "../validation/index.js";
3
+ export declare class SessionStore {
4
+ private readonly db;
5
+ constructor(db: BetterSQLite3Database<Record<string, never>>);
6
+ create(input: {
7
+ agentName: string;
8
+ agentDefinition: AgentDefinition;
9
+ }): Session;
10
+ read(id: string): Session;
11
+ /**
12
+ * Returns the snapshotted AgentDefinition stored at session creation time.
13
+ * This is intentionally separate from `read()` which returns the public
14
+ * Session shape — `agentData` is storage-only and never exposed directly.
15
+ */
16
+ getAgentDefinition(sessionId: string): AgentDefinition;
17
+ list(input: SessionListInput): Session[];
18
+ close(id: string): Session;
19
+ clearMessages(sessionId: string): number;
20
+ appendMessage(sessionId: string, message: Message): void;
21
+ getMessages(sessionId: string): Message[];
22
+ }
23
+ //# sourceMappingURL=session-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/store/session-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAIxE,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAMlG,qBAAa,YAAY;IAEjB,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAGrE,MAAM,CAAC,KAAK,EAAE;QACV,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,eAAe,CAAC;KACpC,GAAG,OAAO;IAsBX,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAyBzB;;;;OAIG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe;IAiBtD,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,EAAE;IAiCxC,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAyB1B,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAmBxC,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAgBxD,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,EAAE;CAmB5C"}
@@ -0,0 +1,152 @@
1
+ import { and, eq } from "drizzle-orm";
2
+ import { messagesTable, sessionsTable } from "../db/schema.js";
3
+ import { logger } from "../logger.js";
4
+ import { agentDefinitionSchema, sessionSchema } 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 SessionStore {
9
+ db;
10
+ constructor(db) {
11
+ this.db = db;
12
+ }
13
+ create(input) {
14
+ const now = nowIso();
15
+ const id = generateId();
16
+ this.db.insert(sessionsTable).values({
17
+ id,
18
+ agentName: input.agentName,
19
+ agentVersion: input.agentDefinition.version,
20
+ agentData: JSON.stringify(input.agentDefinition),
21
+ status: "active",
22
+ createdAt: now,
23
+ updatedAt: now,
24
+ }).run();
25
+ logger.info({ sessionId: id, agentName: input.agentName }, "Session created");
26
+ return this.read(id);
27
+ }
28
+ read(id) {
29
+ const row = this.db
30
+ .select()
31
+ .from(sessionsTable)
32
+ .where(eq(sessionsTable.id, id))
33
+ .get();
34
+ if (!row) {
35
+ throw new ToolError("SESSION_NOT_FOUND", `Session '${id}' not found`);
36
+ }
37
+ return sessionSchema.parse({
38
+ id: row.id,
39
+ agentName: row.agentName,
40
+ agentVersion: row.agentVersion,
41
+ status: row.status,
42
+ createdAt: row.createdAt,
43
+ updatedAt: row.updatedAt,
44
+ closedAt: row.closedAt ?? undefined,
45
+ });
46
+ }
47
+ /**
48
+ * Returns the snapshotted AgentDefinition stored at session creation time.
49
+ * This is intentionally separate from `read()` which returns the public
50
+ * Session shape — `agentData` is storage-only and never exposed directly.
51
+ */
52
+ getAgentDefinition(sessionId) {
53
+ const row = this.db
54
+ .select()
55
+ .from(sessionsTable)
56
+ .where(eq(sessionsTable.id, sessionId))
57
+ .get();
58
+ if (!row) {
59
+ throw new ToolError("SESSION_NOT_FOUND", `Session '${sessionId}' not found`);
60
+ }
61
+ return agentDefinitionSchema.parse(JSON.parse(row.agentData));
62
+ }
63
+ list(input) {
64
+ const conditions = [];
65
+ if (input.agentName) {
66
+ conditions.push(eq(sessionsTable.agentName, input.agentName));
67
+ }
68
+ if (input.status) {
69
+ conditions.push(eq(sessionsTable.status, input.status));
70
+ }
71
+ const rows = conditions.length > 0
72
+ ? this.db
73
+ .select()
74
+ .from(sessionsTable)
75
+ .where(and(...conditions))
76
+ .all()
77
+ : this.db.select().from(sessionsTable).all();
78
+ return rows.map(row => sessionSchema.parse({
79
+ id: row.id,
80
+ agentName: row.agentName,
81
+ agentVersion: row.agentVersion,
82
+ status: row.status,
83
+ createdAt: row.createdAt,
84
+ updatedAt: row.updatedAt,
85
+ closedAt: row.closedAt ?? undefined,
86
+ }));
87
+ }
88
+ close(id) {
89
+ const session = this.read(id); // throws SESSION_NOT_FOUND if missing
90
+ if (session.status === "closed") {
91
+ throw new ToolError("SESSION_CLOSED", `Session '${id}' is already closed`);
92
+ }
93
+ const now = nowIso();
94
+ this.db
95
+ .update(sessionsTable)
96
+ .set({
97
+ status: "closed",
98
+ closedAt: now,
99
+ updatedAt: now,
100
+ })
101
+ .where(eq(sessionsTable.id, id))
102
+ .run();
103
+ logger.info({ sessionId: id }, "Session closed");
104
+ return this.read(id);
105
+ }
106
+ clearMessages(sessionId) {
107
+ const session = this.read(sessionId); // throws SESSION_NOT_FOUND if missing
108
+ if (session.status === "closed") {
109
+ throw new ToolError("SESSION_CLOSED", `Session '${sessionId}' is closed; cannot clear context`);
110
+ }
111
+ const result = this.db
112
+ .delete(messagesTable)
113
+ .where(eq(messagesTable.sessionId, sessionId))
114
+ .run();
115
+ logger.info({ sessionId, cleared: result.changes }, "Session context cleared");
116
+ return result.changes;
117
+ }
118
+ appendMessage(sessionId, message) {
119
+ this.db.insert(messagesTable).values({
120
+ id: message.id,
121
+ sessionId,
122
+ role: message.role,
123
+ content: message.content ?? null,
124
+ toolCalls: message.toolCalls
125
+ ? JSON.stringify(message.toolCalls)
126
+ : null,
127
+ toolResults: message.toolResults
128
+ ? JSON.stringify(message.toolResults)
129
+ : null,
130
+ createdAt: message.createdAt,
131
+ }).run();
132
+ }
133
+ getMessages(sessionId) {
134
+ const rows = this.db
135
+ .select()
136
+ .from(messagesTable)
137
+ .where(eq(messagesTable.sessionId, sessionId))
138
+ .all();
139
+ return rows.map(row => ({
140
+ id: row.id,
141
+ sessionId: row.sessionId,
142
+ role: row.role,
143
+ content: row.content ?? undefined,
144
+ toolCalls: row.toolCalls ? JSON.parse(row.toolCalls) : undefined,
145
+ toolResults: row.toolResults
146
+ ? JSON.parse(row.toolResults)
147
+ : undefined,
148
+ createdAt: row.createdAt,
149
+ }));
150
+ }
151
+ }
152
+ //# sourceMappingURL=session-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/store/session-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
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;
14
+ prompt: string;
15
+ parentTaskId?: string;
16
+ recursionDepth?: number;
17
+ }): Task;
18
+ updateStatus(id: string, status: TaskStatus, fields?: {
19
+ result?: string;
20
+ error?: string;
21
+ completedAt?: string;
22
+ cancelledAt?: string;
23
+ }): Task;
24
+ read(id: string): Task;
25
+ list(input: TaskListInput): Task[];
26
+ appendEvent(event: {
27
+ taskId: string;
28
+ type: TaskEventType;
29
+ payload?: unknown;
30
+ }): void;
31
+ /**
32
+ * Register an AbortController for a running task.
33
+ * Called by tools/task.ts immediately after creating the task row.
34
+ */
35
+ registerCancellation(taskId: string, controller: AbortController): void;
36
+ /**
37
+ * Remove the AbortController from the map.
38
+ * Called by the orchestrator's finally block after the task completes,
39
+ * fails, or is cancelled.
40
+ */
41
+ unregisterCancellation(taskId: string): void;
42
+ /**
43
+ * Abort the in-flight task and mark it as cancelled in the DB.
44
+ * If no controller is registered (e.g., task already finished),
45
+ * only the DB update happens — which updateStatus will handle gracefully.
46
+ */
47
+ cancel(taskId: string): void;
48
+ }
49
+ //# sourceMappingURL=task-store.d.ts.map
@@ -0,0 +1 @@
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,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,cAAc,CAAC,EAAE,MAAM,CAAC;KAC3B,GAAG,IAAI;IA4BR,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;KACxB,GACF,IAAI;IAmBP,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IA8BtB,IAAI,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,EAAE;IAsClC,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;CAa/B"}
@@ -0,0 +1,154 @@
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 = generateId();
22
+ this.db.insert(tasksTable).values({
23
+ id,
24
+ sessionId: input.sessionId,
25
+ parentTaskId: input.parentTaskId ?? null,
26
+ recursionDepth: input.recursionDepth ?? 0,
27
+ status: "pending",
28
+ prompt: input.prompt,
29
+ createdAt: now,
30
+ updatedAt: now,
31
+ }).run();
32
+ logger.info({
33
+ taskId: id,
34
+ sessionId: input.sessionId,
35
+ parentTaskId: input.parentTaskId,
36
+ recursionDepth: input.recursionDepth ?? 0,
37
+ }, "Task created");
38
+ return this.read(id);
39
+ }
40
+ updateStatus(id, status, fields) {
41
+ const now = nowIso();
42
+ this.db
43
+ .update(tasksTable)
44
+ .set({
45
+ status,
46
+ updatedAt: now,
47
+ result: fields?.result ?? null,
48
+ error: fields?.error ?? null,
49
+ completedAt: fields?.completedAt ?? null,
50
+ cancelledAt: fields?.cancelledAt ?? null,
51
+ })
52
+ .where(eq(tasksTable.id, id))
53
+ .run();
54
+ return this.read(id);
55
+ }
56
+ read(id) {
57
+ const row = this.db
58
+ .select()
59
+ .from(tasksTable)
60
+ .where(eq(tasksTable.id, id))
61
+ .get();
62
+ if (!row) {
63
+ throw new ToolError("TASK_NOT_FOUND", `Task '${id}' not found`);
64
+ }
65
+ return taskSchema.parse({
66
+ id: row.id,
67
+ sessionId: row.sessionId,
68
+ parentTaskId: row.parentTaskId ?? undefined,
69
+ recursionDepth: row.recursionDepth,
70
+ status: row.status,
71
+ prompt: row.prompt,
72
+ result: row.result ?? undefined,
73
+ error: row.error ?? undefined,
74
+ createdAt: row.createdAt,
75
+ updatedAt: row.updatedAt,
76
+ completedAt: row.completedAt ?? undefined,
77
+ cancelledAt: row.cancelledAt ?? undefined,
78
+ });
79
+ }
80
+ list(input) {
81
+ const conditions = [];
82
+ if (input.session_id) {
83
+ conditions.push(eq(tasksTable.sessionId, input.session_id));
84
+ }
85
+ if (input.status) {
86
+ conditions.push(eq(tasksTable.status, input.status));
87
+ }
88
+ const rows = conditions.length > 0
89
+ ? this.db
90
+ .select()
91
+ .from(tasksTable)
92
+ .where(and(...conditions))
93
+ .all()
94
+ : this.db.select().from(tasksTable).all();
95
+ return rows.map(row => taskSchema.parse({
96
+ id: row.id,
97
+ sessionId: row.sessionId,
98
+ parentTaskId: row.parentTaskId ?? undefined,
99
+ recursionDepth: row.recursionDepth,
100
+ status: row.status,
101
+ prompt: row.prompt,
102
+ result: row.result ?? undefined,
103
+ error: row.error ?? undefined,
104
+ createdAt: row.createdAt,
105
+ updatedAt: row.updatedAt,
106
+ completedAt: row.completedAt ?? undefined,
107
+ cancelledAt: row.cancelledAt ?? undefined,
108
+ }));
109
+ }
110
+ appendEvent(event) {
111
+ const now = nowIso();
112
+ this.db.insert(taskEventsTable).values({
113
+ id: generateId(),
114
+ taskId: event.taskId,
115
+ type: event.type,
116
+ payload: event.payload ? JSON.stringify(event.payload) : null,
117
+ createdAt: now,
118
+ }).run();
119
+ }
120
+ // ──────────────────────────────────────────────
121
+ // Cancellation map (in-memory only)
122
+ // ──────────────────────────────────────────────
123
+ /**
124
+ * Register an AbortController for a running task.
125
+ * Called by tools/task.ts immediately after creating the task row.
126
+ */
127
+ registerCancellation(taskId, controller) {
128
+ this.cancellationMap.set(taskId, controller);
129
+ }
130
+ /**
131
+ * Remove the AbortController from the map.
132
+ * Called by the orchestrator's finally block after the task completes,
133
+ * fails, or is cancelled.
134
+ */
135
+ unregisterCancellation(taskId) {
136
+ this.cancellationMap.delete(taskId);
137
+ }
138
+ /**
139
+ * Abort the in-flight task and mark it as cancelled in the DB.
140
+ * If no controller is registered (e.g., task already finished),
141
+ * only the DB update happens — which updateStatus will handle gracefully.
142
+ */
143
+ cancel(taskId) {
144
+ const controller = this.cancellationMap.get(taskId);
145
+ if (controller) {
146
+ controller.abort();
147
+ }
148
+ this.updateStatus(taskId, "cancelled", {
149
+ cancelledAt: nowIso(),
150
+ });
151
+ logger.info({ taskId }, "Task cancelled");
152
+ }
153
+ }
154
+ //# sourceMappingURL=task-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-store.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/store/task-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { AgentStore } from "../store/agent-store.js";
2
+ import type { AgentCreateInput, AgentDefinition, AgentDeleteInput, AgentReadInput, AgentUpdateInput } from "../validation/index.js";
3
+ export interface AgentCrudDeps {
4
+ agentStore: AgentStore;
5
+ }
6
+ export declare function agentCreate(input: AgentCreateInput, deps: AgentCrudDeps): AgentDefinition;
7
+ export declare function agentRead(input: AgentReadInput, deps: AgentCrudDeps): AgentDefinition;
8
+ export declare function agentUpdate(input: AgentUpdateInput, deps: AgentCrudDeps): AgentDefinition;
9
+ export declare function agentDelete(input: AgentDeleteInput, deps: AgentCrudDeps): {
10
+ success: true;
11
+ };
12
+ export declare function agentList(_input: unknown, deps: AgentCrudDeps): AgentDefinition[];
13
+ //# sourceMappingURL=agent-crud.d.ts.map
@@ -0,0 +1 @@
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,EACR,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EACnB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,aAAa;IAC1B,UAAU,EAAE,UAAU,CAAC;CAC1B;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,CAG3F;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,GAAG,eAAe,EAAE,CAEjF"}
@@ -0,0 +1,17 @@
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
+ deps.agentStore.delete(input.name);
12
+ return { success: true };
13
+ }
14
+ export function agentList(_input, deps) {
15
+ return deps.agentStore.list();
16
+ }
17
+ //# sourceMappingURL=agent-crud.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-crud.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/tools/agent-crud.ts"],"names":[],"mappings":"AAaA,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,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"}
@@ -0,0 +1,21 @@
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 { AgentToolInput, AgentToolOutput, ExecutionContext, Session, SessionCloseInput, SessionClearInput, SessionClearOutput, SessionListInput } from "../validation/index.js";
5
+ export interface SessionDeps {
6
+ agentStore: AgentStore;
7
+ sessionStore: SessionStore;
8
+ policy: PolicyEngine;
9
+ }
10
+ /**
11
+ * `agent` tool — instantiates a session for a named agent.
12
+ *
13
+ * When called from within a running task context (executionContext is
14
+ * defined), the policy engine enforces the allowedAgents check and we
15
+ * log an AGENT_DELEGATION event.
16
+ */
17
+ export declare function agentTool(input: AgentToolInput, deps: SessionDeps, executionContext?: ExecutionContext): Promise<AgentToolOutput>;
18
+ export declare function sessionList(input: SessionListInput, deps: SessionDeps): Session[];
19
+ export declare function sessionClose(input: SessionCloseInput, deps: SessionDeps): Session;
20
+ export declare function sessionClear(input: SessionClearInput, deps: SessionDeps): SessionClearOutput;
21
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
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,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;CACxB;AAED;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC3B,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,WAAW,EACjB,gBAAgB,CAAC,EAAE,gBAAgB,GACpC,OAAO,CAAC,eAAe,CAAC,CA2B1B;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"}
@@ -0,0 +1,41 @@
1
+ import { logger } from "../logger.js";
2
+ /**
3
+ * `agent` tool — instantiates a session for a named agent.
4
+ *
5
+ * When called from within a running task context (executionContext is
6
+ * defined), the policy engine enforces the allowedAgents check and we
7
+ * log an AGENT_DELEGATION event.
8
+ */
9
+ export async function agentTool(input, deps, executionContext) {
10
+ const agentDefinition = deps.agentStore.read(input.name); // throws AGENT_NOT_FOUND
11
+ // Policy check when called from within a running task
12
+ if (executionContext) {
13
+ deps.policy.check({
14
+ executionContext,
15
+ targetTool: "agent-mcp__agent",
16
+ targetAgentName: input.name,
17
+ });
18
+ logger.info({
19
+ taskId: executionContext.taskId,
20
+ targetAgent: input.name,
21
+ newDepth: executionContext.recursionDepth + 1,
22
+ }, "AGENT_DELEGATION");
23
+ }
24
+ const session = deps.sessionStore.create({
25
+ agentName: input.name,
26
+ agentDefinition,
27
+ });
28
+ return { session_id: session.id };
29
+ }
30
+ export function sessionList(input, deps) {
31
+ return deps.sessionStore.list(input);
32
+ }
33
+ export function sessionClose(input, deps) {
34
+ // SessionStore.close() throws SESSION_NOT_FOUND or SESSION_CLOSED as appropriate
35
+ return deps.sessionStore.close(input.session_id);
36
+ }
37
+ export function sessionClear(input, deps) {
38
+ const cleared = deps.sessionStore.clearMessages(input.session_id);
39
+ return { session_id: input.session_id, cleared };
40
+ }
41
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
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;AAqBtC;;;;;;GAMG;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,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QACrC,SAAS,EAAE,KAAK,CAAC,IAAI;QACrB,eAAe;KAClB,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"}
@@ -0,0 +1,38 @@
1
+ import type { BackgroundQueue } from "../engine/queue.js";
2
+ import type { Orchestrator } from "../engine/orchestrator.js";
3
+ import type { PolicyEngine } from "../engine/policy.js";
4
+ import type { InProcessToolDescriptor, InProcessToolHandler } from "../clients/in-process.js";
5
+ import type { SessionStore } from "../store/session-store.js";
6
+ import type { TaskStore } from "../store/task-store.js";
7
+ import type { ExecutionContext, ResultInput, Task, TaskCancelInput, TaskListInput, TaskToolInput, TaskToolOutput } from "../validation/index.js";
8
+ export interface TaskDeps {
9
+ sessionStore: SessionStore;
10
+ taskStore: TaskStore;
11
+ orchestrator: Orchestrator;
12
+ queue: BackgroundQueue;
13
+ policy: PolicyEngine;
14
+ selfUrl: string | undefined;
15
+ inProcessDescriptors: InProcessToolDescriptor[];
16
+ inProcessHandler: InProcessToolHandler;
17
+ }
18
+ /**
19
+ * `task` tool — runs a prompt against a session's agent.
20
+ *
21
+ * Mandatory order (per plan Gap 17):
22
+ * 1. Validate session exists and is active
23
+ * 2. Load snapshotted AgentDefinition
24
+ * 3. Create Task row
25
+ * 4. Build ExecutionContext
26
+ * 5. Create AbortController
27
+ * 6. Register cancellation
28
+ * 7. Build provider
29
+ * 8. Build per-task registry
30
+ * 9. Run orchestrator (background or sync)
31
+ */
32
+ export declare function taskTool(input: TaskToolInput, deps: TaskDeps, callerContext?: ExecutionContext): Promise<TaskToolOutput>;
33
+ export declare function taskList(input: TaskListInput, deps: Pick<TaskDeps, "taskStore">): Task[];
34
+ export declare function taskCancel(input: TaskCancelInput, deps: Pick<TaskDeps, "taskStore">): {
35
+ success: true;
36
+ };
37
+ export declare function resultTool(input: ResultInput, deps: Pick<TaskDeps, "taskStore">): Task;
38
+ //# sourceMappingURL=task.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/tools/task.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAE9F,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,EACjB,MAAM,wBAAwB,CAAC;AAKhC,MAAM,WAAW,QAAQ;IACrB,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,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,oBAAoB,EAAE,uBAAuB,EAAE,CAAC;IAChD,gBAAgB,EAAE,oBAAoB,CAAC;CAC1C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,QAAQ,CAC1B,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,QAAQ,EACd,aAAa,CAAC,EAAE,gBAAgB,GACjC,OAAO,CAAC,cAAc,CAAC,CAuHzB;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,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAI,CAEtF"}