@adhd/agent-mcp 0.0.3 → 0.0.5

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 (58) hide show
  1. package/drizzle/0000_nifty_sasquatch.sql +55 -0
  2. package/drizzle/0001_task_usage.sql +16 -0
  3. package/drizzle/meta/0000_snapshot.json +387 -0
  4. package/drizzle/meta/0001_snapshot.json +495 -0
  5. package/drizzle/meta/_journal.json +20 -0
  6. package/package.json +5 -1
  7. package/src/db/schema.d.ts +223 -0
  8. package/src/db/schema.d.ts.map +1 -1
  9. package/src/db/schema.js +31 -1
  10. package/src/db/schema.js.map +1 -1
  11. package/src/engine/orchestrator.d.ts.map +1 -1
  12. package/src/engine/orchestrator.js +4 -3
  13. package/src/engine/orchestrator.js.map +1 -1
  14. package/src/index.js +7 -0
  15. package/src/index.js.map +1 -1
  16. package/src/plugins/index.d.ts +2 -0
  17. package/src/plugins/index.d.ts.map +1 -0
  18. package/src/plugins/index.js +2 -0
  19. package/src/plugins/index.js.map +1 -0
  20. package/src/plugins/usage-plugin.d.ts +27 -0
  21. package/src/plugins/usage-plugin.d.ts.map +1 -0
  22. package/src/plugins/usage-plugin.js +125 -0
  23. package/src/plugins/usage-plugin.js.map +1 -0
  24. package/src/providers/anthropic.d.ts.map +1 -1
  25. package/src/providers/anthropic.js +5 -0
  26. package/src/providers/anthropic.js.map +1 -1
  27. package/src/providers/openai.d.ts.map +1 -1
  28. package/src/providers/openai.js +4 -0
  29. package/src/providers/openai.js.map +1 -1
  30. package/src/providers/types.d.ts +3 -2
  31. package/src/providers/types.d.ts.map +1 -1
  32. package/src/server.d.ts +3 -0
  33. package/src/server.d.ts.map +1 -1
  34. package/src/server.js +35 -5
  35. package/src/server.js.map +1 -1
  36. package/src/tools/task.d.ts +10 -2
  37. package/src/tools/task.d.ts.map +1 -1
  38. package/src/tools/task.js +18 -1
  39. package/src/tools/task.js.map +1 -1
  40. package/src/tools/usage.d.ts +54 -0
  41. package/src/tools/usage.d.ts.map +1 -0
  42. package/src/tools/usage.js +117 -0
  43. package/src/tools/usage.js.map +1 -0
  44. package/src/validation/agent.d.ts.map +1 -1
  45. package/src/validation/agent.js +11 -2
  46. package/src/validation/agent.js.map +1 -1
  47. package/src/validation/index.d.ts +1 -0
  48. package/src/validation/index.d.ts.map +1 -1
  49. package/src/validation/index.js +1 -0
  50. package/src/validation/index.js.map +1 -1
  51. package/src/validation/task.d.ts +17 -0
  52. package/src/validation/task.d.ts.map +1 -1
  53. package/src/validation/task.js +5 -0
  54. package/src/validation/task.js.map +1 -1
  55. package/src/validation/usage.d.ts +53 -0
  56. package/src/validation/usage.d.ts.map +1 -0
  57. package/src/validation/usage.js +50 -0
  58. package/src/validation/usage.js.map +1 -0
@@ -730,4 +730,227 @@ export declare const taskEventsTable: import("drizzle-orm/sqlite-core").SQLiteTa
730
730
  };
731
731
  dialect: "sqlite";
732
732
  }>;
733
+ export declare const taskUsageTable: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
734
+ name: "task_usage";
735
+ schema: undefined;
736
+ columns: {
737
+ taskId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
738
+ name: "task_id";
739
+ tableName: "task_usage";
740
+ dataType: "string";
741
+ columnType: "SQLiteText";
742
+ data: string;
743
+ driverParam: string;
744
+ notNull: true;
745
+ hasDefault: false;
746
+ isPrimaryKey: true;
747
+ isAutoincrement: false;
748
+ hasRuntimeDefault: false;
749
+ enumValues: [string, ...string[]];
750
+ baseColumn: never;
751
+ identity: undefined;
752
+ generated: undefined;
753
+ }, {}, {
754
+ length: number | undefined;
755
+ }>;
756
+ rootTaskId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
757
+ name: "root_task_id";
758
+ tableName: "task_usage";
759
+ dataType: "string";
760
+ columnType: "SQLiteText";
761
+ data: string;
762
+ driverParam: string;
763
+ notNull: false;
764
+ hasDefault: false;
765
+ isPrimaryKey: false;
766
+ isAutoincrement: false;
767
+ hasRuntimeDefault: false;
768
+ enumValues: [string, ...string[]];
769
+ baseColumn: never;
770
+ identity: undefined;
771
+ generated: undefined;
772
+ }, {}, {
773
+ length: number | undefined;
774
+ }>;
775
+ agentName: import("drizzle-orm/sqlite-core").SQLiteColumn<{
776
+ name: "agent_name";
777
+ tableName: "task_usage";
778
+ dataType: "string";
779
+ columnType: "SQLiteText";
780
+ data: string;
781
+ driverParam: string;
782
+ notNull: true;
783
+ hasDefault: false;
784
+ isPrimaryKey: false;
785
+ isAutoincrement: false;
786
+ hasRuntimeDefault: false;
787
+ enumValues: [string, ...string[]];
788
+ baseColumn: never;
789
+ identity: undefined;
790
+ generated: undefined;
791
+ }, {}, {
792
+ length: number | undefined;
793
+ }>;
794
+ providerType: import("drizzle-orm/sqlite-core").SQLiteColumn<{
795
+ name: "provider_type";
796
+ tableName: "task_usage";
797
+ dataType: "string";
798
+ columnType: "SQLiteText";
799
+ data: string;
800
+ driverParam: string;
801
+ notNull: true;
802
+ hasDefault: false;
803
+ isPrimaryKey: false;
804
+ isAutoincrement: false;
805
+ hasRuntimeDefault: false;
806
+ enumValues: [string, ...string[]];
807
+ baseColumn: never;
808
+ identity: undefined;
809
+ generated: undefined;
810
+ }, {}, {
811
+ length: number | undefined;
812
+ }>;
813
+ model: import("drizzle-orm/sqlite-core").SQLiteColumn<{
814
+ name: "model";
815
+ tableName: "task_usage";
816
+ dataType: "string";
817
+ columnType: "SQLiteText";
818
+ data: string;
819
+ driverParam: string;
820
+ notNull: true;
821
+ hasDefault: false;
822
+ isPrimaryKey: false;
823
+ isAutoincrement: false;
824
+ hasRuntimeDefault: false;
825
+ enumValues: [string, ...string[]];
826
+ baseColumn: never;
827
+ identity: undefined;
828
+ generated: undefined;
829
+ }, {}, {
830
+ length: number | undefined;
831
+ }>;
832
+ inputTokens: import("drizzle-orm/sqlite-core").SQLiteColumn<{
833
+ name: "input_tokens";
834
+ tableName: "task_usage";
835
+ dataType: "number";
836
+ columnType: "SQLiteInteger";
837
+ data: number;
838
+ driverParam: number;
839
+ notNull: true;
840
+ hasDefault: true;
841
+ isPrimaryKey: false;
842
+ isAutoincrement: false;
843
+ hasRuntimeDefault: false;
844
+ enumValues: undefined;
845
+ baseColumn: never;
846
+ identity: undefined;
847
+ generated: undefined;
848
+ }, {}, {}>;
849
+ outputTokens: import("drizzle-orm/sqlite-core").SQLiteColumn<{
850
+ name: "output_tokens";
851
+ tableName: "task_usage";
852
+ dataType: "number";
853
+ columnType: "SQLiteInteger";
854
+ data: number;
855
+ driverParam: number;
856
+ notNull: true;
857
+ hasDefault: true;
858
+ isPrimaryKey: false;
859
+ isAutoincrement: false;
860
+ hasRuntimeDefault: false;
861
+ enumValues: undefined;
862
+ baseColumn: never;
863
+ identity: undefined;
864
+ generated: undefined;
865
+ }, {}, {}>;
866
+ toolCallCount: import("drizzle-orm/sqlite-core").SQLiteColumn<{
867
+ name: "tool_call_count";
868
+ tableName: "task_usage";
869
+ dataType: "number";
870
+ columnType: "SQLiteInteger";
871
+ data: number;
872
+ driverParam: number;
873
+ notNull: true;
874
+ hasDefault: true;
875
+ isPrimaryKey: false;
876
+ isAutoincrement: false;
877
+ hasRuntimeDefault: false;
878
+ enumValues: undefined;
879
+ baseColumn: never;
880
+ identity: undefined;
881
+ generated: undefined;
882
+ }, {}, {}>;
883
+ modelCalls: import("drizzle-orm/sqlite-core").SQLiteColumn<{
884
+ name: "model_calls";
885
+ tableName: "task_usage";
886
+ dataType: "number";
887
+ columnType: "SQLiteInteger";
888
+ data: number;
889
+ driverParam: number;
890
+ notNull: true;
891
+ hasDefault: true;
892
+ isPrimaryKey: false;
893
+ isAutoincrement: false;
894
+ hasRuntimeDefault: false;
895
+ enumValues: undefined;
896
+ baseColumn: never;
897
+ identity: undefined;
898
+ generated: undefined;
899
+ }, {}, {}>;
900
+ latencyMs: import("drizzle-orm/sqlite-core").SQLiteColumn<{
901
+ name: "latency_ms";
902
+ tableName: "task_usage";
903
+ dataType: "number";
904
+ columnType: "SQLiteInteger";
905
+ data: number;
906
+ driverParam: number;
907
+ notNull: true;
908
+ hasDefault: true;
909
+ isPrimaryKey: false;
910
+ isAutoincrement: false;
911
+ hasRuntimeDefault: false;
912
+ enumValues: undefined;
913
+ baseColumn: never;
914
+ identity: undefined;
915
+ generated: undefined;
916
+ }, {}, {}>;
917
+ isComplete: import("drizzle-orm/sqlite-core").SQLiteColumn<{
918
+ name: "is_complete";
919
+ tableName: "task_usage";
920
+ dataType: "number";
921
+ columnType: "SQLiteInteger";
922
+ data: number;
923
+ driverParam: number;
924
+ notNull: true;
925
+ hasDefault: true;
926
+ isPrimaryKey: false;
927
+ isAutoincrement: false;
928
+ hasRuntimeDefault: false;
929
+ enumValues: undefined;
930
+ baseColumn: never;
931
+ identity: undefined;
932
+ generated: undefined;
933
+ }, {}, {}>;
934
+ createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
935
+ name: "created_at";
936
+ tableName: "task_usage";
937
+ dataType: "string";
938
+ columnType: "SQLiteText";
939
+ data: string;
940
+ driverParam: string;
941
+ notNull: true;
942
+ hasDefault: false;
943
+ isPrimaryKey: false;
944
+ isAutoincrement: false;
945
+ hasRuntimeDefault: false;
946
+ enumValues: [string, ...string[]];
947
+ baseColumn: never;
948
+ identity: undefined;
949
+ generated: undefined;
950
+ }, {}, {
951
+ length: number | undefined;
952
+ }>;
953
+ };
954
+ dialect: "sqlite";
955
+ }>;
733
956
  //# sourceMappingURL=schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/db/schema.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMtB,CAAC;AAKH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkBxB,CAAC;AAKH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAexB,CAAC;AAKH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBrB,CAAC;AAKH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoB1B,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/db/schema.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMtB,CAAC;AAKH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkBxB,CAAC;AAKH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAexB,CAAC;AAKH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBrB,CAAC;AAKH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoB1B,CAAC;AAOH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4B1B,CAAC"}
package/src/db/schema.js CHANGED
@@ -1,4 +1,4 @@
1
- import { integer, sqliteTable, text } from "drizzle-orm/sqlite-core";
1
+ import { index, integer, sqliteTable, text } from "drizzle-orm/sqlite-core";
2
2
  // ──────────────────────────────────────────────
3
3
  // agents
4
4
  // ──────────────────────────────────────────────
@@ -97,4 +97,34 @@ export const taskEventsTable = sqliteTable("task_events", {
97
97
  payload: text("payload"), // JSON
98
98
  createdAt: text("created_at").notNull(),
99
99
  });
100
+ // ──────────────────────────────────────────────
101
+ // task_usage
102
+ // ──────────────────────────────────────────────
103
+ // No FK on task_id → tasks.id: ephemeral tasks never write a tasks row,
104
+ // and cleanup scenarios make the constraint unreliable.
105
+ export const taskUsageTable = sqliteTable("task_usage", {
106
+ taskId: text("task_id").primaryKey(),
107
+ // null = this task IS the root of its delegation tree.
108
+ // non-null = task_id of the topmost ancestor.
109
+ rootTaskId: text("root_task_id"),
110
+ agentName: text("agent_name").notNull(),
111
+ // "openai" | "anthropic" | "lmstudio" | "claudecli" — kept as plain
112
+ // text rather than an enum so new providers don't require a migration.
113
+ providerType: text("provider_type").notNull(),
114
+ model: text("model").notNull(),
115
+ // Accumulated across all post:model_response events for this task.
116
+ inputTokens: integer("input_tokens").notNull().default(0),
117
+ outputTokens: integer("output_tokens").notNull().default(0),
118
+ toolCallCount: integer("tool_call_count").notNull().default(0),
119
+ modelCalls: integer("model_calls").notNull().default(0),
120
+ // Wall-clock ms from task start to terminal event; 0 until terminal.
121
+ latencyMs: integer("latency_ms").notNull().default(0),
122
+ // 0 = in-progress or crashed before terminal; 1 = terminal event fired.
123
+ isComplete: integer("is_complete").notNull().default(0),
124
+ createdAt: text("created_at").notNull(),
125
+ }, (table) => [
126
+ // Critical for O(1) subtree aggregation:
127
+ // WHERE task_id = ? OR root_task_id = ?
128
+ index("idx_task_usage_root_task_id").on(table.rootTaskId),
129
+ ]);
100
130
  //# sourceMappingURL=schema.js.map
@@ -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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"}
@@ -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;AAE9D,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;CA2VzE"}
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;AAE9D,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;CA4VzE"}
@@ -15,7 +15,7 @@ export class Orchestrator {
15
15
  try {
16
16
  // Mark task as running
17
17
  taskStore.updateStatus(taskId, "running");
18
- await hooks.emit("task:start", { executionContext, messages: currentMessages });
18
+ await hooks.emit("task:start", { executionContext, messages: currentMessages, rootTaskId: executionContext.rootTaskId });
19
19
  let finalContent = "";
20
20
  // Tool-use loop — break on "completed" stop reason, throw on cancellation/policy
21
21
  let looping = true;
@@ -92,6 +92,7 @@ export class Orchestrator {
92
92
  executionContext,
93
93
  stopReason: providerResponse.stopReason,
94
94
  toolCallCount: assistantMessage.toolCalls?.length ?? 0,
95
+ tokenUsage: providerResponse.usage,
95
96
  });
96
97
  await hooks.emit("message:appended", { executionContext, message: assistantMessage });
97
98
  // Emit MODEL_RESPONSE event
@@ -253,7 +254,7 @@ export class Orchestrator {
253
254
  // already cancelled — ignore
254
255
  }
255
256
  taskStore.appendEvent({ taskId, type: "TASK_CANCELLED" });
256
- void hooks.emit("task:cancelled", { executionContext });
257
+ await hooks.emit("task:cancelled", { executionContext });
257
258
  }
258
259
  else {
259
260
  const errorMessage = error instanceof Error ? error.message : String(error);
@@ -266,7 +267,7 @@ export class Orchestrator {
266
267
  payload: { error: errorMessage },
267
268
  });
268
269
  logger.error({ taskId, agentName: executionContext.agentName, error }, "TASK_FAILED");
269
- void hooks.emit("task:failed", { executionContext, error: errorMessage });
270
+ await hooks.emit("task:failed", { executionContext, error: errorMessage });
270
271
  }
271
272
  throw error;
272
273
  }
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/engine/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/engine/orchestrator.ts"],"names":[],"mappings":"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"}
package/src/index.js CHANGED
@@ -8,6 +8,7 @@ import { BackgroundQueue } from "./engine/queue.js";
8
8
  import { Orchestrator } from "./engine/orchestrator.js";
9
9
  import { HookRegistry } from "./engine/hooks.js";
10
10
  import { PolicyEngine } from "./engine/policy.js";
11
+ import { UsagePlugin } from "./plugins/index.js";
11
12
  import { startServer } from "./server.js";
12
13
  async function main() {
13
14
  // Run DB migrations synchronously before advertising tools
@@ -20,6 +21,11 @@ async function main() {
20
21
  const agentStore = new AgentStore(dbAny, hooks);
21
22
  const sessionStore = new SessionStore(dbAny, hooks);
22
23
  const taskStore = new TaskStore(dbAny);
24
+ // Observational usage tracking: accumulates per-task token usage into
25
+ // task_usage on every post:model_response and finalises on terminal events.
26
+ // Must never throw — handlers are internally guarded.
27
+ const usagePlugin = new UsagePlugin(dbAny);
28
+ await usagePlugin.install(hooks);
23
29
  // Instantiate engine components
24
30
  const queue = new BackgroundQueue();
25
31
  const orchestrator = new Orchestrator();
@@ -39,6 +45,7 @@ async function main() {
39
45
  orchestrator,
40
46
  policy,
41
47
  hooks,
48
+ db: dbAny,
42
49
  });
43
50
  const shutdown = async (signal) => {
44
51
  logger.info({ signal }, "Server shutdown");
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/ai/agent-mcp/src/index.ts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AAEvB,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,KAAK,UAAU,IAAI;IACf,2DAA2D;IAC3D,aAAa,EAAE,CAAC;IAEhB,6BAA6B;IAC7B,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;IAEjC,qBAAqB;IACrB,8DAA8D;IAC9D,MAAM,KAAK,GAAG,EAAS,CAAC;IACxB,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;IAEvC,gCAAgC;IAChC,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;IACpC,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;IACxC,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC;QAC5B,cAAc,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC;QAC7D,kBAAkB,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;QACvE,mBAAmB,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;YAC9C,EAAE,KAAK,CAAC,GAAG,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aAClB,MAAM,CAAC,OAAO,CAAC;KACvB,CAAC,CAAC;IAEH,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,WAAW,CAAC;QAChC,UAAU;QACV,YAAY;QACZ,SAAS;QACT,KAAK;QACL,YAAY;QACZ,MAAM;QACN,KAAK;KACR,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAc,EAAE,EAAE;QACtC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC;QAC3C,MAAM,KAAK,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;IACf,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,qBAAqB,CAAC,CAAC;IAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/ai/agent-mcp/src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { UsagePlugin } from "./usage-plugin.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { UsagePlugin } from "./usage-plugin.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { BetterSQLite3Database } from "drizzle-orm/better-sqlite3";
2
+ import type { IHookRegistry, Plugin } from "@adhd/agent-mcp-types";
3
+ /**
4
+ * Observational plugin that records per-task token usage into `task_usage`.
5
+ *
6
+ * Write strategy (see [inv:incremental-write]):
7
+ * - task:start → remember startedAt + identity in memory; no DB write.
8
+ * - post:model_response → UPSERT: INSERT the row on first call (is_complete=0),
9
+ * then accumulate input/output tokens + tool/model
10
+ * counts on every subsequent call. Durable across crash.
11
+ * - task:completed/failed/cancelled → final UPDATE: latency_ms, root_task_id,
12
+ * is_complete=1; drop the in-memory entry.
13
+ *
14
+ * INVARIANT [inv:plugin-no-throw]: every handler is wrapped in try/catch and logs
15
+ * errors silently. An observational plugin must never crash the host process.
16
+ */
17
+ export declare class UsagePlugin implements Plugin {
18
+ private readonly db;
19
+ readonly name = "usage";
20
+ private readonly accumulators;
21
+ constructor(db: BetterSQLite3Database<any>);
22
+ install(hooks: IHookRegistry): void;
23
+ private onTaskStart;
24
+ private onModelResponse;
25
+ private onTerminal;
26
+ }
27
+ //# sourceMappingURL=usage-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage-plugin.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/plugins/usage-plugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAKxE,OAAO,KAAK,EACR,aAAa,EACb,MAAM,EAMT,MAAM,uBAAuB,CAAC;AAqB/B;;;;;;;;;;;;;GAaG;AACH,qBAAa,WAAY,YAAW,MAAM;IAQlC,OAAO,CAAC,QAAQ,CAAC,EAAE;IAPvB,QAAQ,CAAC,IAAI,WAAW;IAExB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkC;gBAK1C,EAAE,EAAE,qBAAqB,CAAC,GAAG,CAAC;IAGnD,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAQnC,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,eAAe;IAiDvB,OAAO,CAAC,UAAU;CA6BrB"}
@@ -0,0 +1,125 @@
1
+ import { eq, sql } from "drizzle-orm";
2
+ import { taskUsageTable } from "../db/schema.js";
3
+ import { logger } from "../logger.js";
4
+ import { nowIso } from "../utils/timestamps.js";
5
+ /**
6
+ * Observational plugin that records per-task token usage into `task_usage`.
7
+ *
8
+ * Write strategy (see [inv:incremental-write]):
9
+ * - task:start → remember startedAt + identity in memory; no DB write.
10
+ * - post:model_response → UPSERT: INSERT the row on first call (is_complete=0),
11
+ * then accumulate input/output tokens + tool/model
12
+ * counts on every subsequent call. Durable across crash.
13
+ * - task:completed/failed/cancelled → final UPDATE: latency_ms, root_task_id,
14
+ * is_complete=1; drop the in-memory entry.
15
+ *
16
+ * INVARIANT [inv:plugin-no-throw]: every handler is wrapped in try/catch and logs
17
+ * errors silently. An observational plugin must never crash the host process.
18
+ */
19
+ export class UsagePlugin {
20
+ db;
21
+ name = "usage";
22
+ accumulators = new Map();
23
+ constructor(
24
+ // Drizzle better-sqlite3 instance — identical to what the stores receive.
25
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
26
+ db) {
27
+ this.db = db;
28
+ }
29
+ install(hooks) {
30
+ hooks.register("task:start", payload => this.onTaskStart(payload));
31
+ hooks.register("post:model_response", payload => this.onModelResponse(payload));
32
+ hooks.register("task:completed", payload => this.onTerminal(payload));
33
+ hooks.register("task:failed", payload => this.onTerminal(payload));
34
+ hooks.register("task:cancelled", payload => this.onTerminal(payload));
35
+ }
36
+ onTaskStart(payload) {
37
+ try {
38
+ const { executionContext } = payload;
39
+ const provider = executionContext.agentDefinition.provider;
40
+ this.accumulators.set(executionContext.taskId, {
41
+ startedAt: Date.now(),
42
+ // rootTaskId is resolved at task-creation time and forwarded in the
43
+ // task:start payload — never walk the tasks DB (ephemeral tasks have
44
+ // no tasks row). See [inv:root-task-resolution].
45
+ rootTaskId: payload.rootTaskId ?? null,
46
+ agentName: executionContext.agentName,
47
+ providerType: provider.type,
48
+ model: ("model" in provider && provider.model) || "default",
49
+ });
50
+ }
51
+ catch (err) {
52
+ logger.error({ err }, "UsagePlugin: task:start handler failed");
53
+ }
54
+ }
55
+ onModelResponse(payload) {
56
+ try {
57
+ const { executionContext, tokenUsage, toolCallCount } = payload;
58
+ const taskId = executionContext.taskId;
59
+ const acc = this.accumulators.get(taskId);
60
+ // Tokens are undefined for claudecli — record zeros so the row still
61
+ // exists. See [inv:claudecli-undefined].
62
+ const inputTokens = tokenUsage?.inputTokens ?? 0;
63
+ const outputTokens = tokenUsage?.outputTokens ?? 0;
64
+ const toolCalls = toolCallCount ?? 0;
65
+ const provider = executionContext.agentDefinition.provider;
66
+ // UPSERT (see [inv:incremental-write]): insert on the first model
67
+ // response, accumulate on every subsequent one. Durable across crash.
68
+ this.db
69
+ .insert(taskUsageTable)
70
+ .values({
71
+ taskId,
72
+ rootTaskId: acc?.rootTaskId ?? null,
73
+ agentName: acc?.agentName ?? executionContext.agentName,
74
+ providerType: acc?.providerType ?? provider.type,
75
+ model: acc?.model ??
76
+ (("model" in provider && provider.model) || "default"),
77
+ inputTokens,
78
+ outputTokens,
79
+ toolCallCount: toolCalls,
80
+ modelCalls: 1,
81
+ latencyMs: 0,
82
+ isComplete: 0,
83
+ createdAt: nowIso(),
84
+ })
85
+ .onConflictDoUpdate({
86
+ target: taskUsageTable.taskId,
87
+ set: {
88
+ inputTokens: sql `${taskUsageTable.inputTokens} + ${inputTokens}`,
89
+ outputTokens: sql `${taskUsageTable.outputTokens} + ${outputTokens}`,
90
+ toolCallCount: sql `${taskUsageTable.toolCallCount} + ${toolCalls}`,
91
+ modelCalls: sql `${taskUsageTable.modelCalls} + 1`,
92
+ },
93
+ })
94
+ .run();
95
+ }
96
+ catch (err) {
97
+ logger.error({ err }, "UsagePlugin: post:model_response handler failed");
98
+ }
99
+ }
100
+ onTerminal(payload) {
101
+ try {
102
+ const taskId = payload.executionContext.taskId;
103
+ const acc = this.accumulators.get(taskId);
104
+ // If no post:model_response ever fired there is no row to finalise —
105
+ // the task consumed zero tokens (cancelled before first model call).
106
+ // The UPDATE simply affects zero rows, which is correct.
107
+ const latencyMs = acc ? Date.now() - acc.startedAt : 0;
108
+ const rootTaskId = acc?.rootTaskId ?? payload.executionContext.rootTaskId ?? null;
109
+ this.db
110
+ .update(taskUsageTable)
111
+ .set({
112
+ latencyMs,
113
+ rootTaskId,
114
+ isComplete: 1,
115
+ })
116
+ .where(eq(taskUsageTable.taskId, taskId))
117
+ .run();
118
+ this.accumulators.delete(taskId);
119
+ }
120
+ catch (err) {
121
+ logger.error({ err }, "UsagePlugin: terminal handler failed");
122
+ }
123
+ }
124
+ }
125
+ //# sourceMappingURL=usage-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage-plugin.js","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/plugins/usage-plugin.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/providers/anthropic.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAqB,MAAM,wBAAwB,CAAC;AAEhF,OAAO,KAAK,EACR,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EAEvB,MAAM,YAAY,CAAC;AA6MpB,qBAAa,iBAAkB,YAAW,WAAW;IACjD,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiD;gBAE5D,MAAM,EAAE,OAAO,CAAC,cAAc,EAAE;QAAE,IAAI,EAAE,WAAW,CAAA;KAAE,CAAC;IA4B5D,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAgF1E"}
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../../../../packages/ai/agent-mcp/src/providers/anthropic.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAqB,MAAM,wBAAwB,CAAC;AAEhF,OAAO,KAAK,EACR,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EAEvB,MAAM,YAAY,CAAC;AA6MpB,qBAAa,iBAAkB,YAAW,WAAW;IACjD,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiD;gBAE5D,MAAM,EAAE,OAAO,CAAC,cAAc,EAAE;QAAE,IAAI,EAAE,WAAW,CAAA;KAAE,CAAC;IA4B5D,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAqF1E"}
@@ -239,9 +239,14 @@ export class AnthropicProvider {
239
239
  toolCalls: toolCalls.length > 0 ? toolCalls : undefined,
240
240
  createdAt: nowIso(),
241
241
  };
242
+ const sdkUsage = response.usage;
242
243
  return {
243
244
  message,
244
245
  stopReason: toolCalls.length > 0 ? "tool_calls" : "completed",
246
+ usage: {
247
+ inputTokens: sdkUsage.input_tokens,
248
+ outputTokens: sdkUsage.output_tokens,
249
+ },
245
250
  };
246
251
  };
247
252
  if (retryConfig) {