profclaw 0.0.1-beta.1 → 0.0.1-beta.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 (151) hide show
  1. package/README.md +1 -1
  2. package/dist/adapters/openclaw.js +1 -1
  3. package/dist/agents/executor.js +38 -6
  4. package/dist/auth/auth-service.js +8 -6
  5. package/dist/auth/device-identity.js +7 -5
  6. package/dist/auth/github-oauth.js +3 -1
  7. package/dist/auth/pairing-codes.js +6 -4
  8. package/dist/browser/service.js +5 -3
  9. package/dist/chat/execution/guardrails.js +3 -1
  10. package/dist/chat/execution/workflows/executor.js +4 -2
  11. package/dist/chat/memory.js +3 -1
  12. package/dist/chat/proactive/index.js +13 -11
  13. package/dist/chat/tools.js +8 -7
  14. package/dist/cli/commands/auth.js +22 -13
  15. package/dist/cli/commands/onboard.js +248 -59
  16. package/dist/cli/commands/setup.js +180 -104
  17. package/dist/cron/issue-poller.js +1 -1
  18. package/dist/hooks/agent-webhook.js +10 -7
  19. package/dist/hooks/prompt-submit.js +5 -6
  20. package/dist/hooks/session-end.js +10 -6
  21. package/dist/hooks/tool-use.js +9 -6
  22. package/dist/integrations/github-ticket-sync.js +8 -6
  23. package/dist/integrations/github.js +8 -6
  24. package/dist/integrations/jira.js +5 -3
  25. package/dist/mcp/server.js +12 -9
  26. package/dist/memory/experience-store.js +15 -14
  27. package/dist/notifications/slack.js +4 -2
  28. package/dist/providers/types.d.ts +2 -2
  29. package/dist/queue/failure-handler.js +15 -13
  30. package/dist/queue/index.js +6 -4
  31. package/dist/queue/memory-queue.js +23 -27
  32. package/dist/queue/task-queue.js +18 -22
  33. package/dist/routes/agents.js +3 -1
  34. package/dist/routes/auth.js +11 -9
  35. package/dist/routes/devices.js +17 -15
  36. package/dist/routes/gateway.js +3 -1
  37. package/dist/routes/hooks.js +7 -5
  38. package/dist/routes/import.js +10 -8
  39. package/dist/routes/labels.js +11 -9
  40. package/dist/routes/oobe.js +8 -6
  41. package/dist/routes/openapi.js +1 -1
  42. package/dist/routes/projects.js +27 -25
  43. package/dist/routes/settings.js +7 -5
  44. package/dist/routes/setup.js +12 -11
  45. package/dist/routes/slack.js +28 -27
  46. package/dist/routes/stats.js +6 -4
  47. package/dist/routes/summaries.js +4 -3
  48. package/dist/routes/sync.js +7 -5
  49. package/dist/routes/tasks.js +10 -8
  50. package/dist/routes/tickets.js +26 -26
  51. package/dist/routes/tokens.js +5 -3
  52. package/dist/routes/users.js +14 -12
  53. package/dist/routes/webhooks.js +5 -3
  54. package/dist/settings/index.js +3 -1
  55. package/dist/storage/index.d.ts +2 -1
  56. package/dist/storage/index.js +9 -4
  57. package/dist/storage/libsql.js +29 -21
  58. package/dist/storage/schema.d.ts +107 -46
  59. package/dist/summaries/storage.js +3 -1
  60. package/dist/tickets/index.js +10 -8
  61. package/dist/utils/circuit-breaker.js +10 -5
  62. package/dist/utils/logger.d.ts +5 -1
  63. package/dist/utils/logger.js +23 -7
  64. package/package.json +4 -3
  65. package/ui/dist/assets/{ActivityView-CkPgKhwm.js → ActivityView-DIPQSJ_d.js} +1 -1
  66. package/ui/dist/assets/{AgentList-C3SVdeEz.js → AgentList-CqyaYrcq.js} +1 -1
  67. package/ui/dist/assets/{AnalyticsDashboard-DVU--vlP.js → AnalyticsDashboard-C-mjuGHT.js} +1 -1
  68. package/ui/dist/assets/{AreaChart-B5qMEGWj.js → AreaChart-CfYWmbtr.js} +1 -1
  69. package/ui/dist/assets/{CartesianChart-B50bcUJi.js → CartesianChart-BaQ3It0c.js} +1 -1
  70. package/ui/dist/assets/{ChatView-BZFJs7w_.js → ChatView-DxxQy6pl.js} +1 -1
  71. package/ui/dist/assets/CostsDashboard-CDBBcGkg.js +1 -0
  72. package/ui/dist/assets/{EstimateSelect-CLpB4NQO.js → EstimateSelect-CDjf5qKl.js} +1 -1
  73. package/ui/dist/assets/{FloatingChatbot-CBzBY9a0.js → FloatingChatbot-CZHjvJIe.js} +1 -1
  74. package/ui/dist/assets/{InviteCodeManagement-DsbdPa6W.js → InviteCodeManagement-DTm-IPTm.js} +1 -1
  75. package/ui/dist/assets/{ProjectDetail-BEM3tFXg.js → ProjectDetail-DlYUcOss.js} +1 -1
  76. package/ui/dist/assets/{ProjectIcon-CN1FmFAk.js → ProjectIcon-BMRpnM04.js} +1 -1
  77. package/ui/dist/assets/{ProjectList-DSDaNhxQ.js → ProjectList-D85TN0i0.js} +1 -1
  78. package/ui/dist/assets/{Settings-dPVcqC_d.js → Settings-CgPqzUvj.js} +3 -3
  79. package/ui/dist/assets/{StatusIndicator-DA3NAo_b.js → StatusIndicator-yig0uZEA.js} +1 -1
  80. package/ui/dist/assets/{SummaryDetail-Bjnf9lT8.js → SummaryDetail-CwLAfHgJ.js} +1 -1
  81. package/ui/dist/assets/{SummaryList-ENwKDBKW.js → SummaryList-BvS5Idnu.js} +1 -1
  82. package/ui/dist/assets/{TaskDetail-DnwG6MzB.js → TaskDetail-zarC1fOt.js} +1 -1
  83. package/ui/dist/assets/{TaskList-D9Ug_HiV.js → TaskList-CyJq3ANE.js} +1 -1
  84. package/ui/dist/assets/{TicketBoard-CviH1571.js → TicketBoard-BlWr3-iH.js} +1 -1
  85. package/ui/dist/assets/{TicketDetail-8Jk8O-33.js → TicketDetail-DmqWKj2W.js} +1 -1
  86. package/ui/dist/assets/{TicketList-B-iV4rRA.js → TicketList-Scj4pMWa.js} +1 -1
  87. package/ui/dist/assets/{UserManagement-CPZ8s7s2.js → UserManagement-BH7uG7dw.js} +1 -1
  88. package/ui/dist/assets/{ViewSwitcher-BUyOOWDI.js → ViewSwitcher-3HzZUdWn.js} +1 -1
  89. package/ui/dist/assets/{alert-dialog-BOmnTkN-.js → alert-dialog-DWPb2IfQ.js} +1 -1
  90. package/ui/dist/assets/{archive-D5my9zOG.js → archive-CGck7gxR.js} +1 -1
  91. package/ui/dist/assets/{badge-B4ov81_m.js → badge-DEmc3Z_l.js} +1 -1
  92. package/ui/dist/assets/{brain-C53ElFLD.js → brain-CfFdLVqb.js} +1 -1
  93. package/ui/dist/assets/{bug-D0TJoCYn.js → bug-DqSGPUUE.js} +1 -1
  94. package/ui/dist/assets/{calendar-BkWIhKa1.js → calendar-BuZ4zbPW.js} +1 -1
  95. package/ui/dist/assets/{chevron-up-BRTtndUZ.js → chevron-up-DcJ4LL_N.js} +1 -1
  96. package/ui/dist/assets/{circle-x-BN89YhbS.js → circle-x-C78PNZjF.js} +1 -1
  97. package/ui/dist/assets/{constants-fc7TFI7u.js → constants-DhDjZe4P.js} +1 -1
  98. package/ui/dist/assets/{cpu-B41x1-vV.js → cpu-Ck6AoG8c.js} +1 -1
  99. package/ui/dist/assets/{database-D9Cnfmzj.js → database-CA2w8Lvt.js} +1 -1
  100. package/ui/dist/assets/{dialog-DrWB4EYD.js → dialog-BOdGWhgE.js} +1 -1
  101. package/ui/dist/assets/{ellipsis-NuUWekvu.js → ellipsis-FhHKRbfl.js} +1 -1
  102. package/ui/dist/assets/{ellipsis-vertical-BueMfuCw.js → ellipsis-vertical-CO0UqE4-.js} +1 -1
  103. package/ui/dist/assets/{file-code-HR9829Jc.js → file-code-ChnhYYj1.js} +1 -1
  104. package/ui/dist/assets/{folder-open-C_7oYEqe.js → folder-open-CHwA1-ve.js} +1 -1
  105. package/ui/dist/assets/{funnel-B5gmNXGf.js → funnel-ByEjRFNB.js} +1 -1
  106. package/ui/dist/assets/{git-branch-BRMiJmV3.js → git-branch-GTOPQgU4.js} +1 -1
  107. package/ui/dist/assets/{git-commit-horizontal-CXOUQeJI.js → git-commit-horizontal-F5M84Kut.js} +1 -1
  108. package/ui/dist/assets/{globe-CCspjvus.js → globe-CQWfr7hT.js} +1 -1
  109. package/ui/dist/assets/{hash-g3102kPC.js → hash-nKC9gtLg.js} +1 -1
  110. package/ui/dist/assets/{history-CNqcBBrV.js → history-DfFSA9xJ.js} +1 -1
  111. package/ui/dist/assets/{index-kb4AJXUB.js → index--JkIxVXb.js} +3 -3
  112. package/ui/dist/assets/index-Ca3vk7Gq.js +1 -0
  113. package/ui/dist/assets/{index-C9jNQXzL.js → index-DHGvP9mp.js} +1 -1
  114. package/ui/dist/assets/index-DeI8lKRR.js +1 -0
  115. package/ui/dist/assets/{index-DURTouJI.js → index-Z4-RtZcs.js} +1 -1
  116. package/ui/dist/assets/{index-CEZ6R2Uw.js → index-a4Fxq0Hb.js} +1 -1
  117. package/ui/dist/assets/{layers-CLXiHN6o.js → layers-DFeLExSa.js} +1 -1
  118. package/ui/dist/assets/{layout-dashboard-B07MFhBs.js → layout-dashboard-WmgjMhWF.js} +1 -1
  119. package/ui/dist/assets/{lightbulb-B2dgG5ks.js → lightbulb-Bo8hEr7B.js} +1 -1
  120. package/ui/dist/assets/{link-2-BxNmr9hL.js → link-2-YqrpQXBH.js} +1 -1
  121. package/ui/dist/assets/{markdown-renderer-CjU6hBcW.js → markdown-renderer-Croje6Xe.js} +1 -1
  122. package/ui/dist/assets/{message-square-Bf2-CVbt.js → message-square-CD0H5hot.js} +1 -1
  123. package/ui/dist/assets/{pencil-D096Ey62.js → pencil-DpFnj5dn.js} +1 -1
  124. package/ui/dist/assets/{play-DfdcSI3x.js → play-DVgea_jT.js} +1 -1
  125. package/ui/dist/assets/{popover-BV0QJDQq.js → popover-JXecfWG5.js} +1 -1
  126. package/ui/dist/assets/{progress-DjPEDJfI.js → progress-C1ghf1Fu.js} +1 -1
  127. package/ui/dist/assets/{rocket-CPsTc-5G.js → rocket-BFxPYGx9.js} +1 -1
  128. package/ui/dist/assets/{select-LsO16slr.js → select-MADP8m6Q.js} +1 -1
  129. package/ui/dist/assets/{send-BDYBZDUZ.js → send-eYnW_7n-.js} +1 -1
  130. package/ui/dist/assets/{server-B3k6noce.js → server-CPMaysH8.js} +1 -1
  131. package/ui/dist/assets/{settings-2-Cu4xTjhG.js → settings-2-scXUOuE_.js} +1 -1
  132. package/ui/dist/assets/{sheet-BScLnPKX.js → sheet-r6NSOxi-.js} +1 -1
  133. package/ui/dist/assets/{shield-check-CQqkwufI.js → shield-check-PEr7nmVw.js} +1 -1
  134. package/ui/dist/assets/{shield-off-ZFruH9KO.js → shield-off-CLtXio62.js} +1 -1
  135. package/ui/dist/assets/{skeleton-CtkIA_MU.js → skeleton-C9oEzNlU.js} +1 -1
  136. package/ui/dist/assets/{smartphone-DnoksVkc.js → smartphone-DusFfY0U.js} +1 -1
  137. package/ui/dist/assets/{square-uD9ZHMfW.js → square-e1yxB2eR.js} +1 -1
  138. package/ui/dist/assets/{switch-MQPnwGJK.js → switch-tNs0n-kz.js} +1 -1
  139. package/ui/dist/assets/{table-B8cqlywA.js → table-CXxtLicg.js} +1 -1
  140. package/ui/dist/assets/{tag-wEJQRWlV.js → tag-tAwMmQ9G.js} +1 -1
  141. package/ui/dist/assets/{textarea-D5LJCOGl.js → textarea-BjiEeIWh.js} +1 -1
  142. package/ui/dist/assets/{timer-mbGHegmr.js → timer-Vel1N3RP.js} +1 -1
  143. package/ui/dist/assets/{tooltip-Df1CunSp.js → tooltip-ZMwtfr1J.js} +1 -1
  144. package/ui/dist/assets/{trash-2-B4oAXsX-.js → trash-2-eM-CNwsZ.js} +1 -1
  145. package/ui/dist/assets/{trending-up-BGWxvlmZ.js → trending-up-BGafmjRo.js} +1 -1
  146. package/ui/dist/assets/{wand-sparkles-CZy4xvL3.js → wand-sparkles-DPvcd9Pi.js} +1 -1
  147. package/ui/dist/assets/{wrench-ByZkjO6m.js → wrench-B8s3zYVV.js} +1 -1
  148. package/ui/dist/index.html +1 -1
  149. package/ui/dist/assets/CostsDashboard-ChfH8BlG.js +0 -1
  150. package/ui/dist/assets/index-27mTPKuh.js +0 -1
  151. package/ui/dist/assets/index-BMx3fH-e.js +0 -1
@@ -1,3 +1,5 @@
1
+ import type { TaskResult } from "../types/task.js";
2
+ type JsonObject = Record<string, unknown>;
1
3
  /**
2
4
  * Tasks Table
3
5
  */
@@ -361,7 +363,7 @@ export declare const tasks: import("drizzle-orm/sqlite-core").SQLiteTableWithCol
361
363
  tableName: "tasks";
362
364
  dataType: "json";
363
365
  columnType: "SQLiteTextJson";
364
- data: Record<string, any>;
366
+ data: JsonObject;
365
367
  driverParam: string;
366
368
  notNull: true;
367
369
  hasDefault: true;
@@ -373,14 +375,14 @@ export declare const tasks: import("drizzle-orm/sqlite-core").SQLiteTableWithCol
373
375
  identity: undefined;
374
376
  generated: undefined;
375
377
  }, {}, {
376
- $type: Record<string, any>;
378
+ $type: JsonObject;
377
379
  }>;
378
380
  result: import("drizzle-orm/sqlite-core").SQLiteColumn<{
379
381
  name: "result";
380
382
  tableName: "tasks";
381
383
  dataType: "json";
382
384
  columnType: "SQLiteTextJson";
383
- data: any;
385
+ data: TaskResult;
384
386
  driverParam: string;
385
387
  notNull: false;
386
388
  hasDefault: false;
@@ -392,7 +394,7 @@ export declare const tasks: import("drizzle-orm/sqlite-core").SQLiteTableWithCol
392
394
  identity: undefined;
393
395
  generated: undefined;
394
396
  }, {}, {
395
- $type: any;
397
+ $type: TaskResult;
396
398
  }>;
397
399
  attempts: import("drizzle-orm/sqlite-core").SQLiteColumn<{
398
400
  name: "attempts";
@@ -615,7 +617,13 @@ export declare const summaries: import("drizzle-orm/sqlite-core").SQLiteTableWit
615
617
  tableName: "summaries";
616
618
  dataType: "json";
617
619
  columnType: "SQLiteTextJson";
618
- data: any[];
620
+ data: {
621
+ path: string;
622
+ action: "created" | "modified" | "deleted" | "renamed";
623
+ linesAdded?: number | undefined;
624
+ linesRemoved?: number | undefined;
625
+ oldPath?: string | undefined;
626
+ }[];
619
627
  driverParam: string;
620
628
  notNull: true;
621
629
  hasDefault: true;
@@ -627,14 +635,25 @@ export declare const summaries: import("drizzle-orm/sqlite-core").SQLiteTableWit
627
635
  identity: undefined;
628
636
  generated: undefined;
629
637
  }, {}, {
630
- $type: any[];
638
+ $type: {
639
+ path: string;
640
+ action: "created" | "modified" | "deleted" | "renamed";
641
+ linesAdded?: number | undefined;
642
+ linesRemoved?: number | undefined;
643
+ oldPath?: string | undefined;
644
+ }[];
631
645
  }>;
632
646
  decisions: import("drizzle-orm/sqlite-core").SQLiteColumn<{
633
647
  name: "decisions";
634
648
  tableName: "summaries";
635
649
  dataType: "json";
636
650
  columnType: "SQLiteTextJson";
637
- data: any[];
651
+ data: {
652
+ description: string;
653
+ reason?: string | undefined;
654
+ alternatives?: string[] | undefined;
655
+ confidence?: number | undefined;
656
+ }[];
638
657
  driverParam: string;
639
658
  notNull: true;
640
659
  hasDefault: true;
@@ -646,14 +665,24 @@ export declare const summaries: import("drizzle-orm/sqlite-core").SQLiteTableWit
646
665
  identity: undefined;
647
666
  generated: undefined;
648
667
  }, {}, {
649
- $type: any[];
668
+ $type: {
669
+ description: string;
670
+ reason?: string | undefined;
671
+ alternatives?: string[] | undefined;
672
+ confidence?: number | undefined;
673
+ }[];
650
674
  }>;
651
675
  blockers: import("drizzle-orm/sqlite-core").SQLiteColumn<{
652
676
  name: "blockers";
653
677
  tableName: "summaries";
654
678
  dataType: "json";
655
679
  columnType: "SQLiteTextJson";
656
- data: any[];
680
+ data: {
681
+ description: string;
682
+ severity: "info" | "warning" | "error" | "critical";
683
+ resolved: boolean;
684
+ resolution?: string | undefined;
685
+ }[];
657
686
  driverParam: string;
658
687
  notNull: true;
659
688
  hasDefault: true;
@@ -665,14 +694,25 @@ export declare const summaries: import("drizzle-orm/sqlite-core").SQLiteTableWit
665
694
  identity: undefined;
666
695
  generated: undefined;
667
696
  }, {}, {
668
- $type: any[];
697
+ $type: {
698
+ description: string;
699
+ severity: "info" | "warning" | "error" | "critical";
700
+ resolved: boolean;
701
+ resolution?: string | undefined;
702
+ }[];
669
703
  }>;
670
704
  artifacts: import("drizzle-orm/sqlite-core").SQLiteColumn<{
671
705
  name: "artifacts";
672
706
  tableName: "summaries";
673
707
  dataType: "json";
674
708
  columnType: "SQLiteTextJson";
675
- data: any[];
709
+ data: {
710
+ type: "branch" | "commit" | "pull_request" | "file" | "comment" | "other" | "deployment";
711
+ title?: string | undefined;
712
+ metadata?: Record<string, unknown> | undefined;
713
+ url?: string | undefined;
714
+ identifier?: string | undefined;
715
+ }[];
676
716
  driverParam: string;
677
717
  notNull: true;
678
718
  hasDefault: true;
@@ -684,14 +724,24 @@ export declare const summaries: import("drizzle-orm/sqlite-core").SQLiteTableWit
684
724
  identity: undefined;
685
725
  generated: undefined;
686
726
  }, {}, {
687
- $type: any[];
727
+ $type: {
728
+ type: "branch" | "commit" | "pull_request" | "file" | "comment" | "other" | "deployment";
729
+ title?: string | undefined;
730
+ metadata?: Record<string, unknown> | undefined;
731
+ url?: string | undefined;
732
+ identifier?: string | undefined;
733
+ }[];
688
734
  }>;
689
735
  tokensUsed: import("drizzle-orm/sqlite-core").SQLiteColumn<{
690
736
  name: "tokens_used";
691
737
  tableName: "summaries";
692
738
  dataType: "json";
693
739
  columnType: "SQLiteTextJson";
694
- data: any;
740
+ data: {
741
+ input: number;
742
+ output: number;
743
+ total: number;
744
+ };
695
745
  driverParam: string;
696
746
  notNull: false;
697
747
  hasDefault: false;
@@ -703,14 +753,21 @@ export declare const summaries: import("drizzle-orm/sqlite-core").SQLiteTableWit
703
753
  identity: undefined;
704
754
  generated: undefined;
705
755
  }, {}, {
706
- $type: any;
756
+ $type: {
757
+ input: number;
758
+ output: number;
759
+ total: number;
760
+ };
707
761
  }>;
708
762
  cost: import("drizzle-orm/sqlite-core").SQLiteColumn<{
709
763
  name: "cost";
710
764
  tableName: "summaries";
711
765
  dataType: "json";
712
766
  columnType: "SQLiteTextJson";
713
- data: any;
767
+ data: {
768
+ amount: number;
769
+ currency: string;
770
+ };
714
771
  driverParam: string;
715
772
  notNull: false;
716
773
  hasDefault: false;
@@ -722,7 +779,10 @@ export declare const summaries: import("drizzle-orm/sqlite-core").SQLiteTableWit
722
779
  identity: undefined;
723
780
  generated: undefined;
724
781
  }, {}, {
725
- $type: any;
782
+ $type: {
783
+ amount: number;
784
+ currency: string;
785
+ };
726
786
  }>;
727
787
  taskType: import("drizzle-orm/sqlite-core").SQLiteColumn<{
728
788
  name: "task_type";
@@ -915,7 +975,7 @@ export declare const summaries: import("drizzle-orm/sqlite-core").SQLiteTableWit
915
975
  tableName: "summaries";
916
976
  dataType: "json";
917
977
  columnType: "SQLiteTextJson";
918
- data: Record<string, any>;
978
+ data: JsonObject;
919
979
  driverParam: string;
920
980
  notNull: false;
921
981
  hasDefault: false;
@@ -927,7 +987,7 @@ export declare const summaries: import("drizzle-orm/sqlite-core").SQLiteTableWit
927
987
  identity: undefined;
928
988
  generated: undefined;
929
989
  }, {}, {
930
- $type: Record<string, any>;
990
+ $type: JsonObject;
931
991
  }>;
932
992
  };
933
993
  dialect: "sqlite";
@@ -1185,7 +1245,7 @@ export declare const settings: import("drizzle-orm/sqlite-core").SQLiteTableWith
1185
1245
  tableName: "settings";
1186
1246
  dataType: "json";
1187
1247
  columnType: "SQLiteTextJson";
1188
- data: any;
1248
+ data: unknown;
1189
1249
  driverParam: string;
1190
1250
  notNull: true;
1191
1251
  hasDefault: false;
@@ -1197,7 +1257,7 @@ export declare const settings: import("drizzle-orm/sqlite-core").SQLiteTableWith
1197
1257
  identity: undefined;
1198
1258
  generated: undefined;
1199
1259
  }, {}, {
1200
- $type: any;
1260
+ $type: unknown;
1201
1261
  }>;
1202
1262
  category: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1203
1263
  name: "category";
@@ -1674,7 +1734,7 @@ export declare const taskEvents: import("drizzle-orm/sqlite-core").SQLiteTableWi
1674
1734
  tableName: "task_events";
1675
1735
  dataType: "json";
1676
1736
  columnType: "SQLiteTextJson";
1677
- data: Record<string, any>;
1737
+ data: JsonObject;
1678
1738
  driverParam: string;
1679
1739
  notNull: false;
1680
1740
  hasDefault: false;
@@ -1686,7 +1746,7 @@ export declare const taskEvents: import("drizzle-orm/sqlite-core").SQLiteTableWi
1686
1746
  identity: undefined;
1687
1747
  generated: undefined;
1688
1748
  }, {}, {
1689
- $type: Record<string, any>;
1749
+ $type: JsonObject;
1690
1750
  }>;
1691
1751
  timestamp: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1692
1752
  name: "timestamp";
@@ -2071,7 +2131,7 @@ export declare const taskArchives: import("drizzle-orm/sqlite-core").SQLiteTable
2071
2131
  tableName: "task_archives";
2072
2132
  dataType: "json";
2073
2133
  columnType: "SQLiteTextJson";
2074
- data: any;
2134
+ data: TaskResult;
2075
2135
  driverParam: string;
2076
2136
  notNull: false;
2077
2137
  hasDefault: false;
@@ -2083,14 +2143,14 @@ export declare const taskArchives: import("drizzle-orm/sqlite-core").SQLiteTable
2083
2143
  identity: undefined;
2084
2144
  generated: undefined;
2085
2145
  }, {}, {
2086
- $type: any;
2146
+ $type: TaskResult;
2087
2147
  }>;
2088
2148
  metadata: import("drizzle-orm/sqlite-core").SQLiteColumn<{
2089
2149
  name: "metadata";
2090
2150
  tableName: "task_archives";
2091
2151
  dataType: "json";
2092
2152
  columnType: "SQLiteTextJson";
2093
- data: Record<string, any>;
2153
+ data: JsonObject;
2094
2154
  driverParam: string;
2095
2155
  notNull: false;
2096
2156
  hasDefault: false;
@@ -2102,7 +2162,7 @@ export declare const taskArchives: import("drizzle-orm/sqlite-core").SQLiteTable
2102
2162
  identity: undefined;
2103
2163
  generated: undefined;
2104
2164
  }, {}, {
2105
- $type: Record<string, any>;
2165
+ $type: JsonObject;
2106
2166
  }>;
2107
2167
  durationMs: import("drizzle-orm/sqlite-core").SQLiteColumn<{
2108
2168
  name: "duration_ms";
@@ -5753,7 +5813,7 @@ export declare const oauthAccounts: import("drizzle-orm/sqlite-core").SQLiteTabl
5753
5813
  tableName: "oauth_accounts";
5754
5814
  dataType: "json";
5755
5815
  columnType: "SQLiteTextJson";
5756
- data: Record<string, any>;
5816
+ data: JsonObject;
5757
5817
  driverParam: string;
5758
5818
  notNull: false;
5759
5819
  hasDefault: false;
@@ -5765,7 +5825,7 @@ export declare const oauthAccounts: import("drizzle-orm/sqlite-core").SQLiteTabl
5765
5825
  identity: undefined;
5766
5826
  generated: undefined;
5767
5827
  }, {}, {
5768
- $type: Record<string, any>;
5828
+ $type: JsonObject;
5769
5829
  }>;
5770
5830
  createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
5771
5831
  name: "created_at";
@@ -6262,7 +6322,7 @@ export declare const userPreferences: import("drizzle-orm/sqlite-core").SQLiteTa
6262
6322
  tableName: "user_preferences";
6263
6323
  dataType: "json";
6264
6324
  columnType: "SQLiteTextJson";
6265
- data: Record<string, any>;
6325
+ data: JsonObject;
6266
6326
  driverParam: string;
6267
6327
  notNull: false;
6268
6328
  hasDefault: true;
@@ -6274,7 +6334,7 @@ export declare const userPreferences: import("drizzle-orm/sqlite-core").SQLiteTa
6274
6334
  identity: undefined;
6275
6335
  generated: undefined;
6276
6336
  }, {}, {
6277
- $type: Record<string, any>;
6337
+ $type: JsonObject;
6278
6338
  }>;
6279
6339
  updatedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
6280
6340
  name: "updated_at";
@@ -7327,7 +7387,7 @@ export declare const scheduledJobs: import("drizzle-orm/sqlite-core").SQLiteTabl
7327
7387
  columnType: "SQLiteTextJson";
7328
7388
  data: {
7329
7389
  type: "webhook" | "ticket" | "file" | "github";
7330
- config: Record<string, any>;
7390
+ config: JsonObject;
7331
7391
  } | null;
7332
7392
  driverParam: string;
7333
7393
  notNull: false;
@@ -7342,7 +7402,7 @@ export declare const scheduledJobs: import("drizzle-orm/sqlite-core").SQLiteTabl
7342
7402
  }, {}, {
7343
7403
  $type: {
7344
7404
  type: "webhook" | "ticket" | "file" | "github";
7345
- config: Record<string, any>;
7405
+ config: JsonObject;
7346
7406
  } | null;
7347
7407
  }>;
7348
7408
  jobType: import("drizzle-orm/sqlite-core").SQLiteColumn<{
@@ -7369,7 +7429,7 @@ export declare const scheduledJobs: import("drizzle-orm/sqlite-core").SQLiteTabl
7369
7429
  tableName: "scheduled_jobs";
7370
7430
  dataType: "json";
7371
7431
  columnType: "SQLiteTextJson";
7372
- data: Record<string, any>;
7432
+ data: JsonObject;
7373
7433
  driverParam: string;
7374
7434
  notNull: true;
7375
7435
  hasDefault: false;
@@ -7381,7 +7441,7 @@ export declare const scheduledJobs: import("drizzle-orm/sqlite-core").SQLiteTabl
7381
7441
  identity: undefined;
7382
7442
  generated: undefined;
7383
7443
  }, {}, {
7384
- $type: Record<string, any>;
7444
+ $type: JsonObject;
7385
7445
  }>;
7386
7446
  templateId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
7387
7447
  name: "template_id";
@@ -8334,7 +8394,7 @@ export declare const deadLetterTasks: import("drizzle-orm/sqlite-core").SQLiteTa
8334
8394
  tableName: "dead_letter_tasks";
8335
8395
  dataType: "json";
8336
8396
  columnType: "SQLiteTextJson";
8337
- data: Record<string, any>;
8397
+ data: JsonObject;
8338
8398
  driverParam: string;
8339
8399
  notNull: true;
8340
8400
  hasDefault: true;
@@ -8346,7 +8406,7 @@ export declare const deadLetterTasks: import("drizzle-orm/sqlite-core").SQLiteTa
8346
8406
  identity: undefined;
8347
8407
  generated: undefined;
8348
8408
  }, {}, {
8349
- $type: Record<string, any>;
8409
+ $type: JsonObject;
8350
8410
  }>;
8351
8411
  createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
8352
8412
  name: "created_at";
@@ -8579,7 +8639,7 @@ export declare const jobRunHistory: import("drizzle-orm/sqlite-core").SQLiteTabl
8579
8639
  tableName: "job_run_history";
8580
8640
  dataType: "json";
8581
8641
  columnType: "SQLiteTextJson";
8582
- data: Record<string, any>;
8642
+ data: JsonObject;
8583
8643
  driverParam: string;
8584
8644
  notNull: false;
8585
8645
  hasDefault: false;
@@ -8591,7 +8651,7 @@ export declare const jobRunHistory: import("drizzle-orm/sqlite-core").SQLiteTabl
8591
8651
  identity: undefined;
8592
8652
  generated: undefined;
8593
8653
  }, {}, {
8594
- $type: Record<string, any>;
8654
+ $type: JsonObject;
8595
8655
  }>;
8596
8656
  };
8597
8657
  dialect: "sqlite";
@@ -8760,7 +8820,7 @@ export declare const jobTemplates: import("drizzle-orm/sqlite-core").SQLiteTable
8760
8820
  tableName: "job_templates";
8761
8821
  dataType: "json";
8762
8822
  columnType: "SQLiteTextJson";
8763
- data: Record<string, any>;
8823
+ data: JsonObject;
8764
8824
  driverParam: string;
8765
8825
  notNull: true;
8766
8826
  hasDefault: false;
@@ -8772,7 +8832,7 @@ export declare const jobTemplates: import("drizzle-orm/sqlite-core").SQLiteTable
8772
8832
  identity: undefined;
8773
8833
  generated: undefined;
8774
8834
  }, {}, {
8775
- $type: Record<string, any>;
8835
+ $type: JsonObject;
8776
8836
  }>;
8777
8837
  suggestedCron: import("drizzle-orm/sqlite-core").SQLiteColumn<{
8778
8838
  name: "suggested_cron";
@@ -9159,7 +9219,7 @@ export declare const agentSessions: import("drizzle-orm/sqlite-core").SQLiteTabl
9159
9219
  tableName: "agent_sessions";
9160
9220
  dataType: "json";
9161
9221
  columnType: "SQLiteTextJson";
9162
- data: Record<string, any>;
9222
+ data: JsonObject;
9163
9223
  driverParam: string;
9164
9224
  notNull: false;
9165
9225
  hasDefault: false;
@@ -9171,7 +9231,7 @@ export declare const agentSessions: import("drizzle-orm/sqlite-core").SQLiteTabl
9171
9231
  identity: undefined;
9172
9232
  generated: undefined;
9173
9233
  }, {}, {
9174
- $type: Record<string, any>;
9234
+ $type: JsonObject;
9175
9235
  }>;
9176
9236
  stopReason: import("drizzle-orm/sqlite-core").SQLiteColumn<{
9177
9237
  name: "stop_reason";
@@ -9303,7 +9363,7 @@ export declare const agentSessions: import("drizzle-orm/sqlite-core").SQLiteTabl
9303
9363
  tableName: "agent_sessions";
9304
9364
  dataType: "json";
9305
9365
  columnType: "SQLiteTextJson";
9306
- data: Record<string, any>;
9366
+ data: JsonObject;
9307
9367
  driverParam: string;
9308
9368
  notNull: false;
9309
9369
  hasDefault: true;
@@ -9315,7 +9375,7 @@ export declare const agentSessions: import("drizzle-orm/sqlite-core").SQLiteTabl
9315
9375
  identity: undefined;
9316
9376
  generated: undefined;
9317
9377
  }, {}, {
9318
- $type: Record<string, any>;
9378
+ $type: JsonObject;
9319
9379
  }>;
9320
9380
  };
9321
9381
  dialect: "sqlite";
@@ -9584,7 +9644,7 @@ export declare const sessionMessages: import("drizzle-orm/sqlite-core").SQLiteTa
9584
9644
  tableName: "session_messages";
9585
9645
  dataType: "json";
9586
9646
  columnType: "SQLiteTextJson";
9587
- data: Record<string, any>;
9647
+ data: JsonObject;
9588
9648
  driverParam: string;
9589
9649
  notNull: true;
9590
9650
  hasDefault: false;
@@ -9596,7 +9656,7 @@ export declare const sessionMessages: import("drizzle-orm/sqlite-core").SQLiteTa
9596
9656
  identity: undefined;
9597
9657
  generated: undefined;
9598
9658
  }, {}, {
9599
- $type: Record<string, any>;
9659
+ $type: JsonObject;
9600
9660
  }>;
9601
9661
  priority: import("drizzle-orm/sqlite-core").SQLiteColumn<{
9602
9662
  name: "priority";
@@ -10182,4 +10242,5 @@ export declare const costHistory: import("drizzle-orm/sqlite-core").SQLiteTableW
10182
10242
  };
10183
10243
  dialect: "sqlite";
10184
10244
  }>;
10245
+ export {};
10185
10246
  //# sourceMappingURL=schema.d.ts.map
@@ -4,6 +4,8 @@
4
4
  * Re-routes summary operations to the persistent storage module.
5
5
  */
6
6
  import { getStorage } from '../storage/index.js';
7
+ import { createContextualLogger } from '../utils/logger.js';
8
+ const log = createContextualLogger('Summaries');
7
9
  import { getEmbeddingService } from '../ai/embedding-service.js';
8
10
  import { logger } from '../utils/logger.js';
9
11
  import { randomUUID } from 'crypto';
@@ -96,6 +98,6 @@ export async function deleteSummary(id) {
96
98
  */
97
99
  export async function clearAllSummaries() {
98
100
  // Not implemented in production storage for safety
99
- console.warn('[Storage] clearAllSummaries called but not implemented for persistent storage');
101
+ log.warn('clearAllSummaries called but not implemented for persistent storage');
100
102
  }
101
103
  //# sourceMappingURL=storage.js.map
@@ -80,7 +80,7 @@ export async function createTicket(input) {
80
80
  estimate: parsed.estimate,
81
81
  estimateUnit: parsed.estimateUnit,
82
82
  };
83
- await db.insert(tickets).values({
83
+ const ticketRow = {
84
84
  id: ticket.id,
85
85
  sequence: ticket.sequence,
86
86
  projectId: ticket.projectId,
@@ -99,11 +99,12 @@ export async function createTicket(input) {
99
99
  aiAgent: ticket.aiAgent,
100
100
  aiSessionId: ticket.aiSessionId,
101
101
  aiTaskId: ticket.aiTaskId,
102
- startDate: ticket.startDate,
103
- dueDate: ticket.dueDate,
102
+ startDate: ticket.startDate ? new Date(ticket.startDate) : undefined,
103
+ dueDate: ticket.dueDate ? new Date(ticket.dueDate) : undefined,
104
104
  estimate: ticket.estimate,
105
105
  estimateUnit: ticket.estimateUnit,
106
- });
106
+ };
107
+ await db.insert(tickets).values(ticketRow);
107
108
  // Record creation in history
108
109
  await recordHistory(id, "created", undefined, "created", {
109
110
  type: parsed.createdBy || "human",
@@ -1132,7 +1133,7 @@ export async function createTicketFromSync(ticket, link) {
1132
1133
  id,
1133
1134
  sequence,
1134
1135
  };
1135
- await db.insert(tickets).values({
1136
+ const ticketRow = {
1136
1137
  id: newTicket.id,
1137
1138
  sequence: newTicket.sequence,
1138
1139
  title: newTicket.title,
@@ -1150,11 +1151,12 @@ export async function createTicketFromSync(ticket, link) {
1150
1151
  aiAgent: newTicket.aiAgent,
1151
1152
  aiSessionId: newTicket.aiSessionId,
1152
1153
  aiTaskId: newTicket.aiTaskId,
1153
- startDate: newTicket.startDate,
1154
- dueDate: newTicket.dueDate,
1154
+ startDate: newTicket.startDate ? new Date(newTicket.startDate) : undefined,
1155
+ dueDate: newTicket.dueDate ? new Date(newTicket.dueDate) : undefined,
1155
1156
  estimate: newTicket.estimate,
1156
1157
  estimateUnit: newTicket.estimateUnit,
1157
- });
1158
+ };
1159
+ await db.insert(tickets).values(ticketRow);
1158
1160
  // Create external link
1159
1161
  await createExternalLink(id, link);
1160
1162
  // Record creation in history
@@ -6,6 +6,8 @@
6
6
  * until the service has time to recover.
7
7
  */
8
8
  import { AppError, ErrorCategory, ErrorSeverity } from '../types/errors.js';
9
+ import { createContextualLogger } from './logger.js';
10
+ const log = createContextualLogger('CircuitBreaker');
9
11
  /**
10
12
  * Circuit breaker states
11
13
  */
@@ -129,9 +131,12 @@ export class CircuitBreaker {
129
131
  this.transitionTo(CircuitState.OPEN);
130
132
  }
131
133
  }
132
- console.error(`[CircuitBreaker:${this.config.name}] Failure recorded. ` +
133
- `Count: ${this.failures.length}/${this.config.failureThreshold} ` +
134
- `State: ${this.state}`, error);
134
+ log.error('Failure recorded', error instanceof Error ? error : new Error(String(error)), {
135
+ name: this.config.name,
136
+ failureCount: this.failures.length,
137
+ threshold: this.config.failureThreshold,
138
+ state: this.state,
139
+ });
135
140
  }
136
141
  /**
137
142
  * Transition to a new state
@@ -161,7 +166,7 @@ export class CircuitBreaker {
161
166
  }
162
167
  }, this.config.resetTimeout);
163
168
  }
164
- console.log(`[CircuitBreaker:${this.config.name}] State changed: ${oldState} → ${newState}`);
169
+ log.info('State changed', { name: this.config.name, from: oldState, to: newState });
165
170
  }
166
171
  /**
167
172
  * Get current statistics
@@ -189,7 +194,7 @@ export class CircuitBreaker {
189
194
  this.successCount = 0;
190
195
  this.failures = [];
191
196
  this.stateChangedAt = new Date();
192
- console.log(`[CircuitBreaker:${this.config.name}] Manually reset`);
197
+ log.info('Manually reset', { name: this.config.name });
193
198
  }
194
199
  /**
195
200
  * Manually open the circuit breaker
@@ -46,6 +46,8 @@ export interface LoggerConfig {
46
46
  pretty: boolean;
47
47
  /** Include timestamps */
48
48
  includeTimestamp: boolean;
49
+ /** Output stream for log entries */
50
+ stream: 'stdout' | 'stderr';
49
51
  /** Additional context to include in all logs */
50
52
  defaultContext?: LogContext;
51
53
  }
@@ -95,6 +97,8 @@ export declare class Logger {
95
97
  * Get current configuration
96
98
  */
97
99
  getConfig(): LoggerConfig;
100
+ private writeLine;
101
+ private formatValue;
98
102
  }
99
103
  /**
100
104
  * Default logger instance
@@ -129,7 +133,7 @@ export declare function getCorrelationMetadata(): Record<string, unknown> | unde
129
133
  /**
130
134
  * Create a logger that automatically includes correlation context
131
135
  */
132
- export declare function createContextualLogger(name?: string): Logger;
136
+ export declare function createContextualLogger(name?: string, config?: Partial<LoggerConfig>): Logger;
133
137
  /**
134
138
  * Performance timing utility
135
139
  */
@@ -36,6 +36,7 @@ export class Logger {
36
36
  level: process.env.LOG_LEVEL || LogLevel.INFO,
37
37
  pretty: process.env.NODE_ENV !== 'production',
38
38
  includeTimestamp: true,
39
+ stream: 'stdout',
39
40
  ...config,
40
41
  };
41
42
  }
@@ -139,19 +140,19 @@ export class Logger {
139
140
  if (entry.context?.correlationId) {
140
141
  output += ` ${color}[${entry.context.correlationId}]${reset}`;
141
142
  }
142
- console.log(output);
143
+ this.writeLine(output);
143
144
  // Print context
144
145
  if (entry.context && Object.keys(entry.context).length > 0) {
145
146
  const { correlationId: _correlationId, ...otherContext } = entry.context;
146
147
  if (Object.keys(otherContext).length > 0) {
147
- console.log(' Context:', otherContext);
148
+ this.writeLine(` Context: ${this.formatValue(otherContext)}`);
148
149
  }
149
150
  }
150
151
  // Print error details
151
152
  if (entry.error) {
152
- console.log(` ${color}Error:${reset}`, entry.error.message);
153
+ this.writeLine(` ${color}Error:${reset} ${entry.error.message}`);
153
154
  if (entry.error.stack) {
154
- console.log(' Stack:', entry.error.stack);
155
+ this.writeLine(` Stack: ${entry.error.stack}`);
155
156
  }
156
157
  }
157
158
  }
@@ -159,7 +160,7 @@ export class Logger {
159
160
  * JSON print for production
160
161
  */
161
162
  jsonPrint(entry) {
162
- console.log(JSON.stringify(entry));
163
+ this.writeLine(JSON.stringify(entry));
163
164
  }
164
165
  /**
165
166
  * Update logger configuration
@@ -173,6 +174,21 @@ export class Logger {
173
174
  getConfig() {
174
175
  return { ...this.config };
175
176
  }
177
+ writeLine(message) {
178
+ const stream = this.config.stream === 'stderr' ? process.stderr : process.stdout;
179
+ stream.write(`${message}\n`);
180
+ }
181
+ formatValue(value) {
182
+ if (typeof value === 'string') {
183
+ return value;
184
+ }
185
+ try {
186
+ return JSON.stringify(value);
187
+ }
188
+ catch {
189
+ return String(value);
190
+ }
191
+ }
176
192
  }
177
193
  /**
178
194
  * Default logger instance
@@ -211,9 +227,9 @@ export function getCorrelationMetadata() {
211
227
  /**
212
228
  * Create a logger that automatically includes correlation context
213
229
  */
214
- export function createContextualLogger(name) {
230
+ export function createContextualLogger(name, config) {
215
231
  const baseContext = name ? { component: name } : {};
216
- const contextualLogger = new Logger({ defaultContext: baseContext });
232
+ const contextualLogger = new Logger({ ...config, defaultContext: baseContext });
217
233
  const mergeContext = (context) => {
218
234
  const correlationId = getCorrelationId();
219
235
  const metadata = getCorrelationMetadata();