@adhd/agent-mcp 2.1.1 → 2.1.2

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 (51) hide show
  1. package/docs/marketing/.catalog/capabilities.md +1 -1
  2. package/docs/plan/accounting/SCOPE.md +316 -0
  3. package/docs/provider-call-audit.md +83 -1
  4. package/package.json +9 -12
  5. package/src/config.d.ts +59 -30
  6. package/src/config.d.ts.map +1 -1
  7. package/src/config.js +202 -205
  8. package/src/config.js.map +1 -1
  9. package/src/db/client.d.ts.map +1 -1
  10. package/src/db/client.js +6 -2
  11. package/src/db/client.js.map +1 -1
  12. package/src/db/migrate-runner.d.ts.map +1 -1
  13. package/src/db/migrate-runner.js.map +1 -1
  14. package/src/db/migrate.d.ts.map +1 -1
  15. package/src/db/migrate.js.map +1 -1
  16. package/src/db/schema.d.ts.map +1 -1
  17. package/src/db/schema.js.map +1 -1
  18. package/src/index.d.ts.map +1 -1
  19. package/src/index.js +20 -13
  20. package/src/index.js.map +1 -1
  21. package/src/logger.d.ts.map +1 -1
  22. package/src/logger.js +2 -2
  23. package/src/logger.js.map +1 -1
  24. package/src/scripts/agent-mcp-tail.d.ts.map +1 -1
  25. package/src/scripts/agent-mcp-tail.js +202 -122
  26. package/src/scripts/agent-mcp-tail.js.map +1 -1
  27. package/src/server.d.ts.map +1 -1
  28. package/src/server.js +7 -7
  29. package/src/server.js.map +1 -1
  30. package/src/store/agent-store.d.ts.map +1 -1
  31. package/src/store/agent-store.js.map +1 -1
  32. package/src/streaming/chat-gateway.d.ts.map +1 -1
  33. package/src/streaming/chat-gateway.js.map +1 -1
  34. package/src/streaming/event-bus.d.ts.map +1 -1
  35. package/src/streaming/event-bus.js.map +1 -1
  36. package/src/streaming/sse-server.d.ts.map +1 -1
  37. package/src/streaming/sse-server.js +2 -2
  38. package/src/streaming/sse-server.js.map +1 -1
  39. package/adhd-agent-mcp-2.1.1.tgz +0 -0
  40. package/src/__tests__/integration/harness.d.ts +0 -1027
  41. package/src/__tests__/integration/harness.d.ts.map +0 -1
  42. package/src/__tests__/integration/harness.js +0 -409
  43. package/src/__tests__/integration/harness.js.map +0 -1
  44. package/src/__tests__/integration/scripted-provider.d.ts +0 -43
  45. package/src/__tests__/integration/scripted-provider.d.ts.map +0 -1
  46. package/src/__tests__/integration/scripted-provider.js +0 -80
  47. package/src/__tests__/integration/scripted-provider.js.map +0 -1
  48. package/src/utils/load-env.d.ts +0 -2
  49. package/src/utils/load-env.d.ts.map +0 -1
  50. package/src/utils/load-env.js +0 -9
  51. package/src/utils/load-env.js.map +0 -1
@@ -1,1027 +0,0 @@
1
- /**
2
- * Integration test harness.
3
- *
4
- * Builds a fully-wired real system against a fresh temp sqlite database.
5
- * Runs the same drizzle migrations used by the production server.
6
- * Constructs real stores/queue/PolicyEngine/orchestrator/DagEngine with
7
- * the same dispatchFn wiring as index.ts.
8
- *
9
- * The only scripted/stubbed components are:
10
- * - LLMProvider (ScriptedProvider from scripted-provider.ts)
11
- * - External MCP tool clients (in-process stubs at the registry boundary)
12
- */
13
- import http from "node:http";
14
- import Database from "better-sqlite3";
15
- import { drizzle } from "drizzle-orm/better-sqlite3";
16
- import { SessionStore, TaskStore } from "@adhd/agent-store-runtime";
17
- import { BackgroundQueue, DagEngine, Orchestrator, HookRegistry, PolicyEngine, taskTool, taskCancel, taskResume, type TaskDeps, type LLMProvider } from "@adhd/agent-engine-orchestrator";
18
- import { AgentStore } from "../../store/agent-store.js";
19
- import type { AgentCreateInput } from "@adhd/agent-engine-orchestrator";
20
- /** Combined drizzle schema for harness-level direct table access */
21
- declare const combinedSchema: {
22
- sessionsTable: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
23
- name: "sessions";
24
- schema: undefined;
25
- columns: {
26
- id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
27
- name: "id";
28
- tableName: "sessions";
29
- dataType: "string";
30
- columnType: "SQLiteText";
31
- data: string;
32
- driverParam: string;
33
- notNull: true;
34
- hasDefault: false;
35
- isPrimaryKey: true;
36
- isAutoincrement: false;
37
- hasRuntimeDefault: false;
38
- enumValues: [string, ...string[]];
39
- baseColumn: never;
40
- identity: undefined;
41
- generated: undefined;
42
- }, {}, {
43
- length: number | undefined;
44
- }>;
45
- agentName: import("drizzle-orm/sqlite-core").SQLiteColumn<{
46
- name: "agent_name";
47
- tableName: "sessions";
48
- dataType: "string";
49
- columnType: "SQLiteText";
50
- data: string;
51
- driverParam: string;
52
- notNull: true;
53
- hasDefault: false;
54
- isPrimaryKey: false;
55
- isAutoincrement: false;
56
- hasRuntimeDefault: false;
57
- enumValues: [string, ...string[]];
58
- baseColumn: never;
59
- identity: undefined;
60
- generated: undefined;
61
- }, {}, {
62
- length: number | undefined;
63
- }>;
64
- agentVersion: import("drizzle-orm/sqlite-core").SQLiteColumn<{
65
- name: "agent_version";
66
- tableName: "sessions";
67
- dataType: "number";
68
- columnType: "SQLiteInteger";
69
- data: number;
70
- driverParam: number;
71
- notNull: true;
72
- hasDefault: false;
73
- isPrimaryKey: false;
74
- isAutoincrement: false;
75
- hasRuntimeDefault: false;
76
- enumValues: undefined;
77
- baseColumn: never;
78
- identity: undefined;
79
- generated: undefined;
80
- }, {}, {}>;
81
- agentData: import("drizzle-orm/sqlite-core").SQLiteColumn<{
82
- name: "agent_data";
83
- tableName: "sessions";
84
- dataType: "string";
85
- columnType: "SQLiteText";
86
- data: string;
87
- driverParam: string;
88
- notNull: true;
89
- hasDefault: false;
90
- isPrimaryKey: false;
91
- isAutoincrement: false;
92
- hasRuntimeDefault: false;
93
- enumValues: [string, ...string[]];
94
- baseColumn: never;
95
- identity: undefined;
96
- generated: undefined;
97
- }, {}, {
98
- length: number | undefined;
99
- }>;
100
- status: import("drizzle-orm/sqlite-core").SQLiteColumn<{
101
- name: "status";
102
- tableName: "sessions";
103
- dataType: "string";
104
- columnType: "SQLiteText";
105
- data: "active" | "closed";
106
- driverParam: string;
107
- notNull: true;
108
- hasDefault: true;
109
- isPrimaryKey: false;
110
- isAutoincrement: false;
111
- hasRuntimeDefault: false;
112
- enumValues: ["active", "closed"];
113
- baseColumn: never;
114
- identity: undefined;
115
- generated: undefined;
116
- }, {}, {
117
- length: number | undefined;
118
- }>;
119
- createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
120
- name: "created_at";
121
- tableName: "sessions";
122
- dataType: "string";
123
- columnType: "SQLiteText";
124
- data: string;
125
- driverParam: string;
126
- notNull: true;
127
- hasDefault: false;
128
- isPrimaryKey: false;
129
- isAutoincrement: false;
130
- hasRuntimeDefault: false;
131
- enumValues: [string, ...string[]];
132
- baseColumn: never;
133
- identity: undefined;
134
- generated: undefined;
135
- }, {}, {
136
- length: number | undefined;
137
- }>;
138
- updatedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
139
- name: "updated_at";
140
- tableName: "sessions";
141
- dataType: "string";
142
- columnType: "SQLiteText";
143
- data: string;
144
- driverParam: string;
145
- notNull: true;
146
- hasDefault: false;
147
- isPrimaryKey: false;
148
- isAutoincrement: false;
149
- hasRuntimeDefault: false;
150
- enumValues: [string, ...string[]];
151
- baseColumn: never;
152
- identity: undefined;
153
- generated: undefined;
154
- }, {}, {
155
- length: number | undefined;
156
- }>;
157
- closedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
158
- name: "closed_at";
159
- tableName: "sessions";
160
- dataType: "string";
161
- columnType: "SQLiteText";
162
- data: string;
163
- driverParam: string;
164
- notNull: false;
165
- hasDefault: false;
166
- isPrimaryKey: false;
167
- isAutoincrement: false;
168
- hasRuntimeDefault: false;
169
- enumValues: [string, ...string[]];
170
- baseColumn: never;
171
- identity: undefined;
172
- generated: undefined;
173
- }, {}, {
174
- length: number | undefined;
175
- }>;
176
- composedPromptId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
177
- name: "composed_prompt_id";
178
- tableName: "sessions";
179
- dataType: "string";
180
- columnType: "SQLiteText";
181
- data: string;
182
- driverParam: string;
183
- notNull: false;
184
- hasDefault: false;
185
- isPrimaryKey: false;
186
- isAutoincrement: false;
187
- hasRuntimeDefault: false;
188
- enumValues: [string, ...string[]];
189
- baseColumn: never;
190
- identity: undefined;
191
- generated: undefined;
192
- }, {}, {
193
- length: number | undefined;
194
- }>;
195
- };
196
- dialect: "sqlite";
197
- }>;
198
- messagesTable: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
199
- name: "messages";
200
- schema: undefined;
201
- columns: {
202
- id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
203
- name: "id";
204
- tableName: "messages";
205
- dataType: "string";
206
- columnType: "SQLiteText";
207
- data: string;
208
- driverParam: string;
209
- notNull: true;
210
- hasDefault: false;
211
- isPrimaryKey: true;
212
- isAutoincrement: false;
213
- hasRuntimeDefault: false;
214
- enumValues: [string, ...string[]];
215
- baseColumn: never;
216
- identity: undefined;
217
- generated: undefined;
218
- }, {}, {
219
- length: number | undefined;
220
- }>;
221
- sessionId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
222
- name: "session_id";
223
- tableName: "messages";
224
- dataType: "string";
225
- columnType: "SQLiteText";
226
- data: string;
227
- driverParam: string;
228
- notNull: true;
229
- hasDefault: false;
230
- isPrimaryKey: false;
231
- isAutoincrement: false;
232
- hasRuntimeDefault: false;
233
- enumValues: [string, ...string[]];
234
- baseColumn: never;
235
- identity: undefined;
236
- generated: undefined;
237
- }, {}, {
238
- length: number | undefined;
239
- }>;
240
- role: import("drizzle-orm/sqlite-core").SQLiteColumn<{
241
- name: "role";
242
- tableName: "messages";
243
- dataType: "string";
244
- columnType: "SQLiteText";
245
- data: "system" | "user" | "assistant" | "tool";
246
- driverParam: string;
247
- notNull: true;
248
- hasDefault: false;
249
- isPrimaryKey: false;
250
- isAutoincrement: false;
251
- hasRuntimeDefault: false;
252
- enumValues: ["system", "user", "assistant", "tool"];
253
- baseColumn: never;
254
- identity: undefined;
255
- generated: undefined;
256
- }, {}, {
257
- length: number | undefined;
258
- }>;
259
- content: import("drizzle-orm/sqlite-core").SQLiteColumn<{
260
- name: "content";
261
- tableName: "messages";
262
- dataType: "string";
263
- columnType: "SQLiteText";
264
- data: string;
265
- driverParam: string;
266
- notNull: false;
267
- hasDefault: false;
268
- isPrimaryKey: false;
269
- isAutoincrement: false;
270
- hasRuntimeDefault: false;
271
- enumValues: [string, ...string[]];
272
- baseColumn: never;
273
- identity: undefined;
274
- generated: undefined;
275
- }, {}, {
276
- length: number | undefined;
277
- }>;
278
- toolCalls: import("drizzle-orm/sqlite-core").SQLiteColumn<{
279
- name: "tool_calls";
280
- tableName: "messages";
281
- dataType: "string";
282
- columnType: "SQLiteText";
283
- data: string;
284
- driverParam: string;
285
- notNull: false;
286
- hasDefault: false;
287
- isPrimaryKey: false;
288
- isAutoincrement: false;
289
- hasRuntimeDefault: false;
290
- enumValues: [string, ...string[]];
291
- baseColumn: never;
292
- identity: undefined;
293
- generated: undefined;
294
- }, {}, {
295
- length: number | undefined;
296
- }>;
297
- toolResults: import("drizzle-orm/sqlite-core").SQLiteColumn<{
298
- name: "tool_results";
299
- tableName: "messages";
300
- dataType: "string";
301
- columnType: "SQLiteText";
302
- data: string;
303
- driverParam: string;
304
- notNull: false;
305
- hasDefault: false;
306
- isPrimaryKey: false;
307
- isAutoincrement: false;
308
- hasRuntimeDefault: false;
309
- enumValues: [string, ...string[]];
310
- baseColumn: never;
311
- identity: undefined;
312
- generated: undefined;
313
- }, {}, {
314
- length: number | undefined;
315
- }>;
316
- createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
317
- name: "created_at";
318
- tableName: "messages";
319
- dataType: "string";
320
- columnType: "SQLiteText";
321
- data: string;
322
- driverParam: string;
323
- notNull: true;
324
- hasDefault: false;
325
- isPrimaryKey: false;
326
- isAutoincrement: false;
327
- hasRuntimeDefault: false;
328
- enumValues: [string, ...string[]];
329
- baseColumn: never;
330
- identity: undefined;
331
- generated: undefined;
332
- }, {}, {
333
- length: number | undefined;
334
- }>;
335
- };
336
- dialect: "sqlite";
337
- }>;
338
- tasksTable: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
339
- name: "tasks";
340
- schema: undefined;
341
- columns: {
342
- id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
343
- name: "id";
344
- tableName: "tasks";
345
- dataType: "string";
346
- columnType: "SQLiteText";
347
- data: string;
348
- driverParam: string;
349
- notNull: true;
350
- hasDefault: false;
351
- isPrimaryKey: true;
352
- isAutoincrement: false;
353
- hasRuntimeDefault: false;
354
- enumValues: [string, ...string[]];
355
- baseColumn: never;
356
- identity: undefined;
357
- generated: undefined;
358
- }, {}, {
359
- length: number | undefined;
360
- }>;
361
- sessionId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
362
- name: "session_id";
363
- tableName: "tasks";
364
- dataType: "string";
365
- columnType: "SQLiteText";
366
- data: string;
367
- driverParam: string;
368
- notNull: false;
369
- hasDefault: false;
370
- isPrimaryKey: false;
371
- isAutoincrement: false;
372
- hasRuntimeDefault: false;
373
- enumValues: [string, ...string[]];
374
- baseColumn: never;
375
- identity: undefined;
376
- generated: undefined;
377
- }, {}, {
378
- length: number | undefined;
379
- }>;
380
- parentTaskId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
381
- name: "parent_task_id";
382
- tableName: "tasks";
383
- dataType: "string";
384
- columnType: "SQLiteText";
385
- data: string;
386
- driverParam: string;
387
- notNull: false;
388
- hasDefault: false;
389
- isPrimaryKey: false;
390
- isAutoincrement: false;
391
- hasRuntimeDefault: false;
392
- enumValues: [string, ...string[]];
393
- baseColumn: never;
394
- identity: undefined;
395
- generated: undefined;
396
- }, {}, {
397
- length: number | undefined;
398
- }>;
399
- isEphemeral: import("drizzle-orm/sqlite-core").SQLiteColumn<{
400
- name: "is_ephemeral";
401
- tableName: "tasks";
402
- dataType: "number";
403
- columnType: "SQLiteInteger";
404
- data: number;
405
- driverParam: number;
406
- notNull: true;
407
- hasDefault: true;
408
- isPrimaryKey: false;
409
- isAutoincrement: false;
410
- hasRuntimeDefault: false;
411
- enumValues: undefined;
412
- baseColumn: never;
413
- identity: undefined;
414
- generated: undefined;
415
- }, {}, {}>;
416
- recursionDepth: import("drizzle-orm/sqlite-core").SQLiteColumn<{
417
- name: "recursion_depth";
418
- tableName: "tasks";
419
- dataType: "number";
420
- columnType: "SQLiteInteger";
421
- data: number;
422
- driverParam: number;
423
- notNull: true;
424
- hasDefault: true;
425
- isPrimaryKey: false;
426
- isAutoincrement: false;
427
- hasRuntimeDefault: false;
428
- enumValues: undefined;
429
- baseColumn: never;
430
- identity: undefined;
431
- generated: undefined;
432
- }, {}, {}>;
433
- status: import("drizzle-orm/sqlite-core").SQLiteColumn<{
434
- name: "status";
435
- tableName: "tasks";
436
- dataType: "string";
437
- columnType: "SQLiteText";
438
- data: "pending" | "running" | "completed" | "failed" | "cancelled" | "waiting" | "awaiting_input";
439
- driverParam: string;
440
- notNull: true;
441
- hasDefault: true;
442
- isPrimaryKey: false;
443
- isAutoincrement: false;
444
- hasRuntimeDefault: false;
445
- enumValues: ["pending", "running", "completed", "failed", "cancelled", "waiting", "awaiting_input"];
446
- baseColumn: never;
447
- identity: undefined;
448
- generated: undefined;
449
- }, {}, {
450
- length: number | undefined;
451
- }>;
452
- prompt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
453
- name: "prompt";
454
- tableName: "tasks";
455
- dataType: "string";
456
- columnType: "SQLiteText";
457
- data: string;
458
- driverParam: string;
459
- notNull: true;
460
- hasDefault: false;
461
- isPrimaryKey: false;
462
- isAutoincrement: false;
463
- hasRuntimeDefault: false;
464
- enumValues: [string, ...string[]];
465
- baseColumn: never;
466
- identity: undefined;
467
- generated: undefined;
468
- }, {}, {
469
- length: number | undefined;
470
- }>;
471
- result: import("drizzle-orm/sqlite-core").SQLiteColumn<{
472
- name: "result";
473
- tableName: "tasks";
474
- dataType: "string";
475
- columnType: "SQLiteText";
476
- data: string;
477
- driverParam: string;
478
- notNull: false;
479
- hasDefault: false;
480
- isPrimaryKey: false;
481
- isAutoincrement: false;
482
- hasRuntimeDefault: false;
483
- enumValues: [string, ...string[]];
484
- baseColumn: never;
485
- identity: undefined;
486
- generated: undefined;
487
- }, {}, {
488
- length: number | undefined;
489
- }>;
490
- error: import("drizzle-orm/sqlite-core").SQLiteColumn<{
491
- name: "error";
492
- tableName: "tasks";
493
- dataType: "string";
494
- columnType: "SQLiteText";
495
- data: string;
496
- driverParam: string;
497
- notNull: false;
498
- hasDefault: false;
499
- isPrimaryKey: false;
500
- isAutoincrement: false;
501
- hasRuntimeDefault: false;
502
- enumValues: [string, ...string[]];
503
- baseColumn: never;
504
- identity: undefined;
505
- generated: undefined;
506
- }, {}, {
507
- length: number | undefined;
508
- }>;
509
- createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
510
- name: "created_at";
511
- tableName: "tasks";
512
- dataType: "string";
513
- columnType: "SQLiteText";
514
- data: string;
515
- driverParam: string;
516
- notNull: true;
517
- hasDefault: false;
518
- isPrimaryKey: false;
519
- isAutoincrement: false;
520
- hasRuntimeDefault: false;
521
- enumValues: [string, ...string[]];
522
- baseColumn: never;
523
- identity: undefined;
524
- generated: undefined;
525
- }, {}, {
526
- length: number | undefined;
527
- }>;
528
- updatedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
529
- name: "updated_at";
530
- tableName: "tasks";
531
- dataType: "string";
532
- columnType: "SQLiteText";
533
- data: string;
534
- driverParam: string;
535
- notNull: true;
536
- hasDefault: false;
537
- isPrimaryKey: false;
538
- isAutoincrement: false;
539
- hasRuntimeDefault: false;
540
- enumValues: [string, ...string[]];
541
- baseColumn: never;
542
- identity: undefined;
543
- generated: undefined;
544
- }, {}, {
545
- length: number | undefined;
546
- }>;
547
- completedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
548
- name: "completed_at";
549
- tableName: "tasks";
550
- dataType: "string";
551
- columnType: "SQLiteText";
552
- data: string;
553
- driverParam: string;
554
- notNull: false;
555
- hasDefault: false;
556
- isPrimaryKey: false;
557
- isAutoincrement: false;
558
- hasRuntimeDefault: false;
559
- enumValues: [string, ...string[]];
560
- baseColumn: never;
561
- identity: undefined;
562
- generated: undefined;
563
- }, {}, {
564
- length: number | undefined;
565
- }>;
566
- cancelledAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
567
- name: "cancelled_at";
568
- tableName: "tasks";
569
- dataType: "string";
570
- columnType: "SQLiteText";
571
- data: string;
572
- driverParam: string;
573
- notNull: false;
574
- hasDefault: false;
575
- isPrimaryKey: false;
576
- isAutoincrement: false;
577
- hasRuntimeDefault: false;
578
- enumValues: [string, ...string[]];
579
- baseColumn: never;
580
- identity: undefined;
581
- generated: undefined;
582
- }, {}, {
583
- length: number | undefined;
584
- }>;
585
- depends_on: import("drizzle-orm/sqlite-core").SQLiteColumn<{
586
- name: "depends_on";
587
- tableName: "tasks";
588
- dataType: "string";
589
- columnType: "SQLiteText";
590
- data: string;
591
- driverParam: string;
592
- notNull: false;
593
- hasDefault: false;
594
- isPrimaryKey: false;
595
- isAutoincrement: false;
596
- hasRuntimeDefault: false;
597
- enumValues: [string, ...string[]];
598
- baseColumn: never;
599
- identity: undefined;
600
- generated: undefined;
601
- }, {}, {
602
- length: number | undefined;
603
- }>;
604
- on_upstream_failure: import("drizzle-orm/sqlite-core").SQLiteColumn<{
605
- name: "on_upstream_failure";
606
- tableName: "tasks";
607
- dataType: "string";
608
- columnType: "SQLiteText";
609
- data: string;
610
- driverParam: string;
611
- notNull: false;
612
- hasDefault: false;
613
- isPrimaryKey: false;
614
- isAutoincrement: false;
615
- hasRuntimeDefault: false;
616
- enumValues: [string, ...string[]];
617
- baseColumn: never;
618
- identity: undefined;
619
- generated: undefined;
620
- }, {}, {
621
- length: number | undefined;
622
- }>;
623
- inputs: import("drizzle-orm/sqlite-core").SQLiteColumn<{
624
- name: "inputs";
625
- tableName: "tasks";
626
- dataType: "string";
627
- columnType: "SQLiteText";
628
- data: string;
629
- driverParam: string;
630
- notNull: false;
631
- hasDefault: false;
632
- isPrimaryKey: false;
633
- isAutoincrement: false;
634
- hasRuntimeDefault: false;
635
- enumValues: [string, ...string[]];
636
- baseColumn: never;
637
- identity: undefined;
638
- generated: undefined;
639
- }, {}, {
640
- length: number | undefined;
641
- }>;
642
- resume_token: import("drizzle-orm/sqlite-core").SQLiteColumn<{
643
- name: "resume_token";
644
- tableName: "tasks";
645
- dataType: "string";
646
- columnType: "SQLiteText";
647
- data: string;
648
- driverParam: string;
649
- notNull: false;
650
- hasDefault: false;
651
- isPrimaryKey: false;
652
- isAutoincrement: false;
653
- hasRuntimeDefault: false;
654
- enumValues: [string, ...string[]];
655
- baseColumn: never;
656
- identity: undefined;
657
- generated: undefined;
658
- }, {}, {
659
- length: number | undefined;
660
- }>;
661
- };
662
- dialect: "sqlite";
663
- }>;
664
- taskEventsTable: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
665
- name: "task_events";
666
- schema: undefined;
667
- columns: {
668
- id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
669
- name: "id";
670
- tableName: "task_events";
671
- dataType: "string";
672
- columnType: "SQLiteText";
673
- data: string;
674
- driverParam: string;
675
- notNull: true;
676
- hasDefault: false;
677
- isPrimaryKey: true;
678
- isAutoincrement: false;
679
- hasRuntimeDefault: false;
680
- enumValues: [string, ...string[]];
681
- baseColumn: never;
682
- identity: undefined;
683
- generated: undefined;
684
- }, {}, {
685
- length: number | undefined;
686
- }>;
687
- taskId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
688
- name: "task_id";
689
- tableName: "task_events";
690
- dataType: "string";
691
- columnType: "SQLiteText";
692
- data: string;
693
- driverParam: string;
694
- notNull: true;
695
- hasDefault: false;
696
- isPrimaryKey: false;
697
- isAutoincrement: false;
698
- hasRuntimeDefault: false;
699
- enumValues: [string, ...string[]];
700
- baseColumn: never;
701
- identity: undefined;
702
- generated: undefined;
703
- }, {}, {
704
- length: number | undefined;
705
- }>;
706
- type: import("drizzle-orm/sqlite-core").SQLiteColumn<{
707
- name: "type";
708
- tableName: "task_events";
709
- dataType: "string";
710
- columnType: "SQLiteText";
711
- data: "MODEL_REQUEST" | "MODEL_RESPONSE" | "TOOL_CALL" | "TOOL_RESULT" | "TASK_COMPLETED" | "TASK_FAILED" | "TASK_CANCELLED";
712
- driverParam: string;
713
- notNull: true;
714
- hasDefault: false;
715
- isPrimaryKey: false;
716
- isAutoincrement: false;
717
- hasRuntimeDefault: false;
718
- enumValues: ["MODEL_REQUEST", "MODEL_RESPONSE", "TOOL_CALL", "TOOL_RESULT", "TASK_COMPLETED", "TASK_FAILED", "TASK_CANCELLED"];
719
- baseColumn: never;
720
- identity: undefined;
721
- generated: undefined;
722
- }, {}, {
723
- length: number | undefined;
724
- }>;
725
- payload: import("drizzle-orm/sqlite-core").SQLiteColumn<{
726
- name: "payload";
727
- tableName: "task_events";
728
- dataType: "string";
729
- columnType: "SQLiteText";
730
- data: string;
731
- driverParam: string;
732
- notNull: false;
733
- hasDefault: false;
734
- isPrimaryKey: false;
735
- isAutoincrement: false;
736
- hasRuntimeDefault: false;
737
- enumValues: [string, ...string[]];
738
- baseColumn: never;
739
- identity: undefined;
740
- generated: undefined;
741
- }, {}, {
742
- length: number | undefined;
743
- }>;
744
- createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
745
- name: "created_at";
746
- tableName: "task_events";
747
- dataType: "string";
748
- columnType: "SQLiteText";
749
- data: string;
750
- driverParam: string;
751
- notNull: true;
752
- hasDefault: false;
753
- isPrimaryKey: false;
754
- isAutoincrement: false;
755
- hasRuntimeDefault: false;
756
- enumValues: [string, ...string[]];
757
- baseColumn: never;
758
- identity: undefined;
759
- generated: undefined;
760
- }, {}, {
761
- length: number | undefined;
762
- }>;
763
- };
764
- dialect: "sqlite";
765
- }>;
766
- agentsTable: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
767
- name: "agents";
768
- schema: undefined;
769
- columns: {
770
- name: import("drizzle-orm/sqlite-core").SQLiteColumn<{
771
- name: "name";
772
- tableName: "agents";
773
- dataType: "string";
774
- columnType: "SQLiteText";
775
- data: string;
776
- driverParam: string;
777
- notNull: true;
778
- hasDefault: false;
779
- isPrimaryKey: true;
780
- isAutoincrement: false;
781
- hasRuntimeDefault: false;
782
- enumValues: [string, ...string[]];
783
- baseColumn: never;
784
- identity: undefined;
785
- generated: undefined;
786
- }, {}, {
787
- length: number | undefined;
788
- }>;
789
- version: import("drizzle-orm/sqlite-core").SQLiteColumn<{
790
- name: "version";
791
- tableName: "agents";
792
- dataType: "number";
793
- columnType: "SQLiteInteger";
794
- data: number;
795
- driverParam: number;
796
- notNull: true;
797
- hasDefault: true;
798
- isPrimaryKey: false;
799
- isAutoincrement: false;
800
- hasRuntimeDefault: false;
801
- enumValues: undefined;
802
- baseColumn: never;
803
- identity: undefined;
804
- generated: undefined;
805
- }, {}, {}>;
806
- data: import("drizzle-orm/sqlite-core").SQLiteColumn<{
807
- name: "data";
808
- tableName: "agents";
809
- dataType: "string";
810
- columnType: "SQLiteText";
811
- data: string;
812
- driverParam: string;
813
- notNull: true;
814
- hasDefault: false;
815
- isPrimaryKey: false;
816
- isAutoincrement: false;
817
- hasRuntimeDefault: false;
818
- enumValues: [string, ...string[]];
819
- baseColumn: never;
820
- identity: undefined;
821
- generated: undefined;
822
- }, {}, {
823
- length: number | undefined;
824
- }>;
825
- createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
826
- name: "created_at";
827
- tableName: "agents";
828
- dataType: "string";
829
- columnType: "SQLiteText";
830
- data: string;
831
- driverParam: string;
832
- notNull: true;
833
- hasDefault: false;
834
- isPrimaryKey: false;
835
- isAutoincrement: false;
836
- hasRuntimeDefault: false;
837
- enumValues: [string, ...string[]];
838
- baseColumn: never;
839
- identity: undefined;
840
- generated: undefined;
841
- }, {}, {
842
- length: number | undefined;
843
- }>;
844
- updatedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
845
- name: "updated_at";
846
- tableName: "agents";
847
- dataType: "string";
848
- columnType: "SQLiteText";
849
- data: string;
850
- driverParam: string;
851
- notNull: true;
852
- hasDefault: false;
853
- isPrimaryKey: false;
854
- isAutoincrement: false;
855
- hasRuntimeDefault: false;
856
- enumValues: [string, ...string[]];
857
- baseColumn: never;
858
- identity: undefined;
859
- generated: undefined;
860
- }, {}, {
861
- length: number | undefined;
862
- }>;
863
- };
864
- dialect: "sqlite";
865
- }>;
866
- };
867
- export type TestDb = ReturnType<typeof drizzle<typeof combinedSchema>>;
868
- export interface Harness {
869
- db: TestDb;
870
- rawSqlite: InstanceType<typeof Database>;
871
- agentStore: AgentStore;
872
- sessionStore: SessionStore;
873
- taskStore: TaskStore;
874
- queue: BackgroundQueue;
875
- orchestrator: Orchestrator;
876
- policy: PolicyEngine;
877
- dagEngine: DagEngine;
878
- taskDeps: TaskDeps;
879
- hooks: HookRegistry;
880
- /** Tear down: close DB, stop SSE server if started */
881
- teardown: () => Promise<void>;
882
- /** The file path of the temp DB (for restart tests) */
883
- dbPath: string;
884
- /** SSE server (if started) */
885
- sseServer?: http.Server;
886
- /** Ephemeral port the SSE server is bound to (if started) */
887
- ssePort?: number;
888
- }
889
- export interface HarnessOptions {
890
- /** Start an SSE server on an ephemeral port */
891
- withSse?: boolean;
892
- /** Override server-max-tool-loops */
893
- serverMaxToolLoops?: number;
894
- /** Use an explicit DB path (for restart tests) */
895
- dbPath?: string;
896
- /**
897
- * Skip the automatic orphan-scan re-enqueue on build.
898
- * Prefer `defaultProvider` over this flag: that keeps the real scan
899
- * exercised while avoiding the external-provider race.
900
- */
901
- skipOrphanScan?: boolean;
902
- /**
903
- * Inject a scripted LLMProvider into the harness orchestrator so every
904
- * task dispatched through taskDeps (including the startup orphan scan)
905
- * uses it instead of the real provider built from agentDefinition.provider.
906
- */
907
- defaultProvider?: LLMProvider;
908
- }
909
- /**
910
- * Build a fully-wired harness. Call teardown() when done.
911
- */
912
- export declare function buildHarness(opts?: HarnessOptions): Promise<Harness>;
913
- /**
914
- * Rebuild a harness against the SAME DB file (for restart/persistence tests).
915
- */
916
- export declare function rebuildHarness(dbPath: string, opts?: Omit<HarnessOptions, "dbPath">): Promise<Harness>;
917
- /**
918
- * Wait for the queue to drain (all enqueued tasks finished).
919
- */
920
- export declare function drainQueue(queue: BackgroundQueue, timeoutMs?: number): Promise<void>;
921
- /**
922
- * Create a minimal test agent + open a session. Returns { agentName, sessionId }.
923
- */
924
- export declare function createSessionAndAgent(harness: Harness, provider: LLMProvider, agentOverrides?: Partial<AgentCreateInput>): Promise<{
925
- agentName: string;
926
- sessionId: string;
927
- }>;
928
- /**
929
- * Run a task synchronously via the real taskTool, injecting the given provider
930
- * into the orchestrator for this task only.
931
- */
932
- export declare function runTaskViaToolWithProvider(harness: Harness, sessionId: string, prompt: string, provider: LLMProvider, extraInput?: Record<string, unknown>): Promise<{
933
- task_id: string;
934
- status: "pending" | "running" | "completed" | "failed" | "cancelled" | "waiting" | "awaiting_input";
935
- result?: string | undefined;
936
- stream_url?: string | undefined;
937
- usage?: {
938
- direct: {
939
- inputTokens: number;
940
- outputTokens: number;
941
- modelCalls: number;
942
- toolCallCount: number;
943
- latencyMs: number;
944
- uncachedInputTokens: number;
945
- cacheReadTokens: number;
946
- cacheCreationTokens: number;
947
- reasoningTokens: number;
948
- peakContextTokens: number;
949
- stopReason?: string | undefined;
950
- };
951
- subtree: {
952
- inputTokens: number;
953
- outputTokens: number;
954
- modelCalls: number;
955
- toolCallCount: number;
956
- latencyMs: number;
957
- uncachedInputTokens: number;
958
- cacheReadTokens: number;
959
- cacheCreationTokens: number;
960
- reasoningTokens: number;
961
- peakContextTokens: number;
962
- stopReason?: string | undefined;
963
- };
964
- taskCount: number;
965
- } | undefined;
966
- }>;
967
- /**
968
- * Background version — enqueues and returns immediately; use drainQueue to wait.
969
- */
970
- export declare function enqueueTaskWithProvider(harness: Harness, sessionId: string, prompt: string, provider: LLMProvider, extraInput?: Record<string, unknown>): Promise<{
971
- task_id: string;
972
- status: "pending" | "running" | "completed" | "failed" | "cancelled" | "waiting" | "awaiting_input";
973
- result?: string | undefined;
974
- stream_url?: string | undefined;
975
- usage?: {
976
- direct: {
977
- inputTokens: number;
978
- outputTokens: number;
979
- modelCalls: number;
980
- toolCallCount: number;
981
- latencyMs: number;
982
- uncachedInputTokens: number;
983
- cacheReadTokens: number;
984
- cacheCreationTokens: number;
985
- reasoningTokens: number;
986
- peakContextTokens: number;
987
- stopReason?: string | undefined;
988
- };
989
- subtree: {
990
- inputTokens: number;
991
- outputTokens: number;
992
- modelCalls: number;
993
- toolCallCount: number;
994
- latencyMs: number;
995
- uncachedInputTokens: number;
996
- cacheReadTokens: number;
997
- cacheCreationTokens: number;
998
- reasoningTokens: number;
999
- peakContextTokens: number;
1000
- stopReason?: string | undefined;
1001
- };
1002
- taskCount: number;
1003
- } | undefined;
1004
- }>;
1005
- /**
1006
- * A binary latch. One side waits; the other releases.
1007
- */
1008
- export declare class Latch {
1009
- private _resolve;
1010
- private _reject;
1011
- readonly promise: Promise<void>;
1012
- constructor();
1013
- release(): void;
1014
- fail(err: Error): void;
1015
- wait(timeoutMs?: number): Promise<void>;
1016
- }
1017
- export interface SseFrame {
1018
- type: string;
1019
- data: Record<string, unknown>;
1020
- }
1021
- /**
1022
- * Connect to the real SSE server and collect frames until "done" or timeout.
1023
- */
1024
- export declare function collectSseFrames(port: number, taskId: string, timeoutMs?: number, onConnected?: () => void): Promise<SseFrame[]>;
1025
- export { taskTool, taskCancel, taskResume };
1026
- export type { TaskDeps };
1027
- //# sourceMappingURL=harness.d.ts.map