@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.
- package/drizzle/0000_nifty_sasquatch.sql +55 -0
- package/drizzle/meta/0000_snapshot.json +387 -0
- package/drizzle/meta/_journal.json +13 -0
- package/package.json +51 -0
- package/src/clients/http-client.d.ts +24 -0
- package/src/clients/http-client.d.ts.map +1 -0
- package/src/clients/http-client.js +96 -0
- package/src/clients/http-client.js.map +1 -0
- package/src/clients/in-process.d.ts +27 -0
- package/src/clients/in-process.d.ts.map +1 -0
- package/src/clients/in-process.js +32 -0
- package/src/clients/in-process.js.map +1 -0
- package/src/clients/index.d.ts +7 -0
- package/src/clients/index.d.ts.map +1 -0
- package/src/clients/index.js +5 -0
- package/src/clients/index.js.map +1 -0
- package/src/clients/registry.d.ts +37 -0
- package/src/clients/registry.d.ts.map +1 -0
- package/src/clients/registry.js +125 -0
- package/src/clients/registry.js.map +1 -0
- package/src/clients/stdio-client.d.ts +16 -0
- package/src/clients/stdio-client.d.ts.map +1 -0
- package/src/clients/stdio-client.js +90 -0
- package/src/clients/stdio-client.js.map +1 -0
- package/src/clients/types.d.ts +14 -0
- package/src/clients/types.d.ts.map +1 -0
- package/src/clients/types.js +2 -0
- package/src/clients/types.js.map +1 -0
- package/src/db/client.d.ts +6 -0
- package/src/db/client.d.ts.map +1 -0
- package/src/db/client.js +19 -0
- package/src/db/client.js.map +1 -0
- package/src/db/migrate.d.ts +6 -0
- package/src/db/migrate.d.ts.map +1 -0
- package/src/db/migrate.js +12 -0
- package/src/db/migrate.js.map +1 -0
- package/src/db/schema.d.ts +733 -0
- package/src/db/schema.d.ts.map +1 -0
- package/src/db/schema.js +100 -0
- package/src/db/schema.js.map +1 -0
- package/src/engine/orchestrator.d.ts +24 -0
- package/src/engine/orchestrator.d.ts.map +1 -0
- package/src/engine/orchestrator.js +231 -0
- package/src/engine/orchestrator.js.map +1 -0
- package/src/engine/policy.d.ts +42 -0
- package/src/engine/policy.d.ts.map +1 -0
- package/src/engine/policy.js +45 -0
- package/src/engine/policy.js.map +1 -0
- package/src/engine/queue.d.ts +23 -0
- package/src/engine/queue.d.ts.map +1 -0
- package/src/engine/queue.js +45 -0
- package/src/engine/queue.js.map +1 -0
- package/src/index.d.ts +3 -0
- package/src/index.d.ts.map +1 -0
- package/src/index.js +51 -0
- package/src/index.js.map +1 -0
- package/src/logger.d.ts +11 -0
- package/src/logger.d.ts.map +1 -0
- package/src/logger.js +17 -0
- package/src/logger.js.map +1 -0
- package/src/providers/anthropic.d.ts +11 -0
- package/src/providers/anthropic.d.ts.map +1 -0
- package/src/providers/anthropic.js +133 -0
- package/src/providers/anthropic.js.map +1 -0
- package/src/providers/factory.d.ts +7 -0
- package/src/providers/factory.d.ts.map +1 -0
- package/src/providers/factory.js +21 -0
- package/src/providers/factory.js.map +1 -0
- package/src/providers/index.d.ts +6 -0
- package/src/providers/index.d.ts.map +1 -0
- package/src/providers/index.js +5 -0
- package/src/providers/index.js.map +1 -0
- package/src/providers/lmstudio.d.ts +8 -0
- package/src/providers/lmstudio.d.ts.map +1 -0
- package/src/providers/lmstudio.js +15 -0
- package/src/providers/lmstudio.js.map +1 -0
- package/src/providers/openai.d.ts +12 -0
- package/src/providers/openai.d.ts.map +1 -0
- package/src/providers/openai.js +129 -0
- package/src/providers/openai.js.map +1 -0
- package/src/providers/types.d.ts +32 -0
- package/src/providers/types.d.ts.map +1 -0
- package/src/providers/types.js +2 -0
- package/src/providers/types.js.map +1 -0
- package/src/server.d.ts +23 -0
- package/src/server.d.ts.map +1 -0
- package/src/server.js +539 -0
- package/src/server.js.map +1 -0
- package/src/store/agent-store.d.ts +12 -0
- package/src/store/agent-store.d.ts.map +1 -0
- package/src/store/agent-store.js +97 -0
- package/src/store/agent-store.js.map +1 -0
- package/src/store/index.d.ts +4 -0
- package/src/store/index.d.ts.map +1 -0
- package/src/store/index.js +4 -0
- package/src/store/index.js.map +1 -0
- package/src/store/session-store.d.ts +23 -0
- package/src/store/session-store.d.ts.map +1 -0
- package/src/store/session-store.js +152 -0
- package/src/store/session-store.js.map +1 -0
- package/src/store/task-store.d.ts +49 -0
- package/src/store/task-store.d.ts.map +1 -0
- package/src/store/task-store.js +154 -0
- package/src/store/task-store.js.map +1 -0
- package/src/tools/agent-crud.d.ts +13 -0
- package/src/tools/agent-crud.d.ts.map +1 -0
- package/src/tools/agent-crud.js +17 -0
- package/src/tools/agent-crud.js.map +1 -0
- package/src/tools/session.d.ts +21 -0
- package/src/tools/session.d.ts.map +1 -0
- package/src/tools/session.js +41 -0
- package/src/tools/session.js.map +1 -0
- package/src/tools/task.d.ts +38 -0
- package/src/tools/task.d.ts.map +1 -0
- package/src/tools/task.js +136 -0
- package/src/tools/task.js.map +1 -0
- package/src/types/agent.d.ts +2 -0
- package/src/types/agent.d.ts.map +1 -0
- package/src/types/agent.js +3 -0
- package/src/types/agent.js.map +1 -0
- package/src/types/execution.d.ts +2 -0
- package/src/types/execution.d.ts.map +1 -0
- package/src/types/execution.js +3 -0
- package/src/types/execution.js.map +1 -0
- package/src/types/index.d.ts +2 -0
- package/src/types/index.d.ts.map +1 -0
- package/src/types/index.js +2 -0
- package/src/types/index.js.map +1 -0
- package/src/types/mcp.d.ts +2 -0
- package/src/types/mcp.d.ts.map +1 -0
- package/src/types/mcp.js +3 -0
- package/src/types/mcp.js.map +1 -0
- package/src/types/message.d.ts +2 -0
- package/src/types/message.d.ts.map +1 -0
- package/src/types/message.js +3 -0
- package/src/types/message.js.map +1 -0
- package/src/types/session.d.ts +2 -0
- package/src/types/session.d.ts.map +1 -0
- package/src/types/session.js +3 -0
- package/src/types/session.js.map +1 -0
- package/src/types/task.d.ts +2 -0
- package/src/types/task.d.ts.map +1 -0
- package/src/types/task.js +3 -0
- package/src/types/task.js.map +1 -0
- package/src/utils/ids.d.ts +2 -0
- package/src/utils/ids.d.ts.map +1 -0
- package/src/utils/ids.js +5 -0
- package/src/utils/ids.js.map +1 -0
- package/src/utils/logger.d.ts +2 -0
- package/src/utils/logger.d.ts.map +1 -0
- package/src/utils/logger.js +5 -0
- package/src/utils/logger.js.map +1 -0
- package/src/utils/timestamps.d.ts +2 -0
- package/src/utils/timestamps.d.ts.map +1 -0
- package/src/utils/timestamps.js +4 -0
- package/src/utils/timestamps.js.map +1 -0
- package/src/validation/agent.d.ts +276 -0
- package/src/validation/agent.d.ts.map +1 -0
- package/src/validation/agent.js +94 -0
- package/src/validation/agent.js.map +1 -0
- package/src/validation/agents.d.ts +2 -0
- package/src/validation/agents.d.ts.map +1 -0
- package/src/validation/agents.js +3 -0
- package/src/validation/agents.js.map +1 -0
- package/src/validation/errors.d.ts +23 -0
- package/src/validation/errors.d.ts.map +1 -0
- package/src/validation/errors.js +33 -0
- package/src/validation/errors.js.map +1 -0
- package/src/validation/execution.d.ts +83 -0
- package/src/validation/execution.d.ts.map +1 -0
- package/src/validation/execution.js +23 -0
- package/src/validation/execution.js.map +1 -0
- package/src/validation/index.d.ts +8 -0
- package/src/validation/index.d.ts.map +1 -0
- package/src/validation/index.js +8 -0
- package/src/validation/index.js.map +1 -0
- package/src/validation/mcp.d.ts +43 -0
- package/src/validation/mcp.d.ts.map +1 -0
- package/src/validation/mcp.js +28 -0
- package/src/validation/mcp.js.map +1 -0
- package/src/validation/message.d.ts +46 -0
- package/src/validation/message.d.ts.map +1 -0
- package/src/validation/message.js +23 -0
- package/src/validation/message.js.map +1 -0
- package/src/validation/session.d.ts +49 -0
- package/src/validation/session.d.ts.map +1 -0
- package/src/validation/session.js +34 -0
- package/src/validation/session.js.map +1 -0
- package/src/validation/task.d.ts +94 -0
- package/src/validation/task.d.ts.map +1 -0
- package/src/validation/task.js +60 -0
- package/src/validation/task.js.map +1 -0
- package/src/validation/tasks.d.ts +2 -0
- package/src/validation/tasks.d.ts.map +1 -0
- package/src/validation/tasks.js +3 -0
- 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":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAIjC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,MAAM,OAAO,UAAU;IAEE;IADrB,YACqB,EAAgD;QAAhD,OAAE,GAAF,EAAE,CAA8C;IAClE,CAAC;IAEJ,MAAM,CAAC,KAAuB;QAC1B,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,MAAM,UAAU,GAAoB;YAChC,GAAG,KAAK;YACR,OAAO,EAAE,CAAC;YACV,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;SACjB,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE;aACnB,MAAM,EAAE;aACR,IAAI,CAAC,WAAW,CAAC;aACjB,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;aACvC,GAAG,EAAE,CAAC;QAEX,IAAI,QAAQ,EAAE,CAAC;YACX,MAAM,IAAI,SAAS,CACf,sBAAsB,EACtB,UAAU,KAAK,CAAC,IAAI,kBAAkB,CACzC,CAAC;QACN,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;YAC/B,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;YAChC,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;SACjB,CAAC,CAAC,GAAG,EAAE,CAAC;QAET,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,eAAe,CAAC,CAAC;QACxD,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,IAAI,CAAC,IAAY;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aACd,MAAM,EAAE;aACR,IAAI,CAAC,WAAW,CAAC;aACjB,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;aACjC,GAAG,EAAE,CAAC;QAEX,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,MAAM,IAAI,SAAS,CACf,iBAAiB,EACjB,UAAU,IAAI,aAAa,CAC9B,CAAC;QACN,CAAC;QAED,OAAO,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,KAAuB;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,oCAAoC;QAE5E,4EAA4E;QAC5E,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CACnC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CACjE,CAAC;QAEF,MAAM,OAAO,GAAoB;YAC7B,GAAG,QAAQ;YACX,GAAG,YAAY;YACf,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAO,oBAAoB;YAC9C,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,yBAAyB;YACxD,OAAO,EAAE,QAAQ,CAAC,OAAO,GAAG,CAAC;YAC7B,SAAS,EAAE,MAAM,EAAE;SACtB,CAAC;QAEF,IAAI,CAAC,EAAE;aACF,MAAM,CAAC,WAAW,CAAC;aACnB,GAAG,CAAC;YACD,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC7B,SAAS,EAAE,OAAO,CAAC,SAAS;SAC/B,CAAC;aACD,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;aACvC,GAAG,EAAE,CAAC;QAEX,MAAM,CAAC,IAAI,CACP,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,EACnD,eAAe,CAClB,CAAC;QACF,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,IAAY;QACf,MAAM,kBAAkB,GAAG,IAAI,CAAC,EAAE;aAC7B,MAAM,EAAE;aACR,IAAI,CAAC,aAAa,CAAC;aACnB,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;aACxC,GAAG,EAAE;aACL,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;QAEtC,IAAI,kBAAkB,EAAE,CAAC;YACrB,MAAM,IAAI,SAAS,CACf,2BAA2B,EAC3B,UAAU,IAAI,6CAA6C,CAC9D,CAAC;QACN,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;aACjB,MAAM,CAAC,WAAW,CAAC;aACnB,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;aACjC,GAAG,EAAE,CAAC;QAEX,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,SAAS,CACf,iBAAiB,EACjB,UAAU,IAAI,aAAa,CAC9B,CAAC;QACN,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,eAAe,CAAC,CAAC;IACtD,CAAC;IAED,IAAI;QACA,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC;CACJ"}
|
|
@@ -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 @@
|
|
|
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"}
|