@hasna/todos 0.11.43 → 0.11.45

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 (146) hide show
  1. package/README.md +573 -11
  2. package/dist/cli/commands/agent-reliability-commands.d.ts +3 -0
  3. package/dist/cli/commands/agent-reliability-commands.d.ts.map +1 -0
  4. package/dist/cli/commands/audit-ledger-commands.d.ts +3 -0
  5. package/dist/cli/commands/audit-ledger-commands.d.ts.map +1 -0
  6. package/dist/cli/commands/capacity-commands.d.ts +3 -0
  7. package/dist/cli/commands/capacity-commands.d.ts.map +1 -0
  8. package/dist/cli/commands/config-serve-commands.d.ts.map +1 -1
  9. package/dist/cli/commands/environment-snapshots.d.ts +3 -0
  10. package/dist/cli/commands/environment-snapshots.d.ts.map +1 -0
  11. package/dist/cli/commands/knowledge-commands.d.ts +3 -0
  12. package/dist/cli/commands/knowledge-commands.d.ts.map +1 -0
  13. package/dist/cli/commands/local-snapshot-commands.d.ts +3 -0
  14. package/dist/cli/commands/local-snapshot-commands.d.ts.map +1 -0
  15. package/dist/cli/commands/machines.d.ts.map +1 -1
  16. package/dist/cli/commands/mcp-hooks-commands.d.ts.map +1 -1
  17. package/dist/cli/commands/onboarding-commands.d.ts +3 -0
  18. package/dist/cli/commands/onboarding-commands.d.ts.map +1 -0
  19. package/dist/cli/commands/project-commands.d.ts.map +1 -1
  20. package/dist/cli/commands/query-commands.d.ts.map +1 -1
  21. package/dist/cli/commands/release-compatibility-commands.d.ts +3 -0
  22. package/dist/cli/commands/release-compatibility-commands.d.ts.map +1 -0
  23. package/dist/cli/commands/retrospective-commands.d.ts +3 -0
  24. package/dist/cli/commands/retrospective-commands.d.ts.map +1 -0
  25. package/dist/cli/commands/review-queue-commands.d.ts +3 -0
  26. package/dist/cli/commands/review-queue-commands.d.ts.map +1 -0
  27. package/dist/cli/commands/risk-commands.d.ts +3 -0
  28. package/dist/cli/commands/risk-commands.d.ts.map +1 -0
  29. package/dist/cli/commands/roadmap-commands.d.ts +3 -0
  30. package/dist/cli/commands/roadmap-commands.d.ts.map +1 -0
  31. package/dist/cli/commands/sdk-fixture-commands.d.ts +3 -0
  32. package/dist/cli/commands/sdk-fixture-commands.d.ts.map +1 -0
  33. package/dist/cli/commands/task-commands.d.ts.map +1 -1
  34. package/dist/cli/index.js +26227 -9412
  35. package/dist/cli-mcp-parity.d.ts +1 -1
  36. package/dist/cli-mcp-parity.d.ts.map +1 -1
  37. package/dist/contracts.d.ts +19 -0
  38. package/dist/contracts.d.ts.map +1 -1
  39. package/dist/contracts.js +10174 -679
  40. package/dist/db/agent-metrics.d.ts +101 -0
  41. package/dist/db/agent-metrics.d.ts.map +1 -1
  42. package/dist/db/boards.d.ts +56 -0
  43. package/dist/db/boards.d.ts.map +1 -0
  44. package/dist/db/calendar.d.ts +52 -0
  45. package/dist/db/calendar.d.ts.map +1 -0
  46. package/dist/db/comments.d.ts.map +1 -1
  47. package/dist/db/handoffs.d.ts +25 -0
  48. package/dist/db/handoffs.d.ts.map +1 -1
  49. package/dist/db/machines.d.ts +19 -6
  50. package/dist/db/machines.d.ts.map +1 -1
  51. package/dist/db/migrations.d.ts.map +1 -1
  52. package/dist/db/project-knowledge.d.ts +88 -0
  53. package/dist/db/project-knowledge.d.ts.map +1 -0
  54. package/dist/db/project-risks.d.ts +139 -0
  55. package/dist/db/project-risks.d.ts.map +1 -0
  56. package/dist/db/retrospectives.d.ts +98 -0
  57. package/dist/db/retrospectives.d.ts.map +1 -0
  58. package/dist/db/schema.d.ts.map +1 -1
  59. package/dist/db/task-crud.d.ts.map +1 -1
  60. package/dist/db/task-relations.d.ts +69 -9
  61. package/dist/db/task-relations.d.ts.map +1 -1
  62. package/dist/db/tasks.d.ts +6 -2
  63. package/dist/db/tasks.d.ts.map +1 -1
  64. package/dist/index.d.ts +62 -11
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +19485 -8856
  67. package/dist/json-contracts.d.ts.map +1 -1
  68. package/dist/lib/agent-replay-simulator.d.ts +66 -0
  69. package/dist/lib/agent-replay-simulator.d.ts.map +1 -0
  70. package/dist/lib/audit-ledger.d.ts +59 -0
  71. package/dist/lib/audit-ledger.d.ts.map +1 -0
  72. package/dist/lib/branch-work-plans.d.ts +46 -0
  73. package/dist/lib/branch-work-plans.d.ts.map +1 -0
  74. package/dist/lib/capacity-forecasts.d.ts +70 -0
  75. package/dist/lib/capacity-forecasts.d.ts.map +1 -0
  76. package/dist/lib/config.d.ts +179 -0
  77. package/dist/lib/config.d.ts.map +1 -1
  78. package/dist/lib/context-packs.d.ts +26 -3
  79. package/dist/lib/context-packs.d.ts.map +1 -1
  80. package/dist/lib/environment-snapshots.d.ts +111 -0
  81. package/dist/lib/environment-snapshots.d.ts.map +1 -0
  82. package/dist/lib/event-hooks.d.ts +1 -1
  83. package/dist/lib/event-hooks.d.ts.map +1 -1
  84. package/dist/lib/external-issue-importers.d.ts +60 -0
  85. package/dist/lib/external-issue-importers.d.ts.map +1 -0
  86. package/dist/lib/extract.d.ts +57 -0
  87. package/dist/lib/extract.d.ts.map +1 -1
  88. package/dist/lib/local-bridge.d.ts +3 -1
  89. package/dist/lib/local-bridge.d.ts.map +1 -1
  90. package/dist/lib/local-extensions.d.ts +75 -0
  91. package/dist/lib/local-extensions.d.ts.map +1 -0
  92. package/dist/lib/local-notifications.d.ts +55 -0
  93. package/dist/lib/local-notifications.d.ts.map +1 -0
  94. package/dist/lib/local-snapshots.d.ts +66 -0
  95. package/dist/lib/local-snapshots.d.ts.map +1 -0
  96. package/dist/lib/mention-resolver.d.ts +43 -0
  97. package/dist/lib/mention-resolver.d.ts.map +1 -0
  98. package/dist/lib/natural-language-intake.d.ts +56 -0
  99. package/dist/lib/natural-language-intake.d.ts.map +1 -0
  100. package/dist/lib/onboarding-fixtures.d.ts +31 -0
  101. package/dist/lib/onboarding-fixtures.d.ts.map +1 -0
  102. package/dist/lib/public-release-gate.d.ts +7 -0
  103. package/dist/lib/public-release-gate.d.ts.map +1 -1
  104. package/dist/lib/redaction.d.ts +9 -0
  105. package/dist/lib/redaction.d.ts.map +1 -1
  106. package/dist/lib/release-compatibility.d.ts +59 -0
  107. package/dist/lib/release-compatibility.d.ts.map +1 -0
  108. package/dist/lib/release-notes.d.ts +81 -0
  109. package/dist/lib/release-notes.d.ts.map +1 -0
  110. package/dist/lib/retention-cleanup.d.ts +63 -0
  111. package/dist/lib/retention-cleanup.d.ts.map +1 -0
  112. package/dist/lib/review-queues.d.ts +98 -0
  113. package/dist/lib/review-queues.d.ts.map +1 -0
  114. package/dist/lib/roadmaps.d.ts +133 -0
  115. package/dist/lib/roadmaps.d.ts.map +1 -0
  116. package/dist/lib/sdk-integration-fixtures.d.ts +65 -0
  117. package/dist/lib/sdk-integration-fixtures.d.ts.map +1 -0
  118. package/dist/lib/terminal-notifications.d.ts +53 -0
  119. package/dist/lib/terminal-notifications.d.ts.map +1 -0
  120. package/dist/lib/todos-md.d.ts.map +1 -1
  121. package/dist/lib/workflow-prompts.d.ts +38 -0
  122. package/dist/lib/workflow-prompts.d.ts.map +1 -0
  123. package/dist/mcp/index.d.ts.map +1 -1
  124. package/dist/mcp/index.js +20925 -9542
  125. package/dist/mcp/token-utils.d.ts.map +1 -1
  126. package/dist/mcp/tools/code-tools.d.ts.map +1 -1
  127. package/dist/mcp/tools/environment-snapshots.d.ts +8 -0
  128. package/dist/mcp/tools/environment-snapshots.d.ts.map +1 -0
  129. package/dist/mcp/tools/machines.d.ts.map +1 -1
  130. package/dist/mcp/tools/task-adv-tools.d.ts.map +1 -1
  131. package/dist/mcp/tools/task-auto-tools.d.ts.map +1 -1
  132. package/dist/mcp/tools/task-crud.d.ts.map +1 -1
  133. package/dist/mcp/tools/task-meta-tools.d.ts.map +1 -1
  134. package/dist/mcp/tools/task-project-tools.d.ts.map +1 -1
  135. package/dist/mcp/tools/task-rel-tools.d.ts.map +1 -1
  136. package/dist/mcp/tools/task-resources.d.ts.map +1 -1
  137. package/dist/mcp/tools/workflow-prompts.d.ts +3 -0
  138. package/dist/mcp/tools/workflow-prompts.d.ts.map +1 -0
  139. package/dist/mcp.js +97 -2
  140. package/dist/registry.js +14462 -5998
  141. package/dist/release-provenance.json +3 -3
  142. package/dist/server/index.js +493 -123
  143. package/dist/storage.js +2353 -139
  144. package/dist/types/index.d.ts +214 -0
  145. package/dist/types/index.d.ts.map +1 -1
  146. package/package.json +1 -1
@@ -0,0 +1,111 @@
1
+ import type { Database } from "bun:sqlite";
2
+ export interface EnvironmentSnapshotFile {
3
+ path: string;
4
+ sha256: string;
5
+ size_bytes: number;
6
+ }
7
+ export interface EnvironmentSnapshotManifest extends EnvironmentSnapshotFile {
8
+ redacted: Record<string, unknown>;
9
+ }
10
+ export interface EnvironmentSnapshot {
11
+ schema_version: 1;
12
+ id: string;
13
+ captured_at: string;
14
+ root: string;
15
+ machine: {
16
+ hostname: string;
17
+ platform: string;
18
+ arch: string;
19
+ };
20
+ target: {
21
+ task_id: string | null;
22
+ run_id: string | null;
23
+ agent_id: string | null;
24
+ };
25
+ runtime: {
26
+ bun: string | null;
27
+ node: string;
28
+ executable: string;
29
+ };
30
+ package_manager: {
31
+ manager: "bun" | "npm" | "unknown";
32
+ user_agent: string | null;
33
+ manifests: EnvironmentSnapshotManifest[];
34
+ lockfiles: EnvironmentSnapshotFile[];
35
+ };
36
+ git: {
37
+ present: boolean;
38
+ branch: string | null;
39
+ commit: string | null;
40
+ is_dirty: boolean;
41
+ status_porcelain: string[];
42
+ status_summary: {
43
+ added: number;
44
+ modified: number;
45
+ deleted: number;
46
+ renamed: number;
47
+ untracked: number;
48
+ };
49
+ };
50
+ config_hashes: EnvironmentSnapshotFile[];
51
+ command_env: {
52
+ command: string | null;
53
+ env_keys: string[];
54
+ env: Record<string, string> | null;
55
+ redacted_keys: string[];
56
+ };
57
+ warnings: string[];
58
+ }
59
+ export interface CaptureEnvironmentSnapshotInput {
60
+ root?: string;
61
+ task_id?: string;
62
+ run_id?: string;
63
+ agent_id?: string;
64
+ command?: string;
65
+ env?: NodeJS.ProcessEnv;
66
+ include_env_values?: boolean;
67
+ now?: string | Date;
68
+ }
69
+ export interface RecordEnvironmentSnapshotInput extends CaptureEnvironmentSnapshotInput {
70
+ output_path?: string;
71
+ store_content?: boolean;
72
+ }
73
+ export interface RecordedEnvironmentSnapshot {
74
+ snapshot: EnvironmentSnapshot;
75
+ output_path: string;
76
+ task_verification_id: string | null;
77
+ run_artifact_id: string | null;
78
+ }
79
+ export interface EnvironmentSnapshotComparison {
80
+ schema_version: 1;
81
+ left_id: string;
82
+ right_id: string;
83
+ same_root: boolean;
84
+ same_machine: boolean;
85
+ same_runtime: boolean;
86
+ same_git_commit: boolean;
87
+ dirty_state_changed: boolean;
88
+ changed_config_hashes: Array<{
89
+ path: string;
90
+ left_sha256: string | null;
91
+ right_sha256: string | null;
92
+ }>;
93
+ changed_lockfiles: Array<{
94
+ path: string;
95
+ left_sha256: string | null;
96
+ right_sha256: string | null;
97
+ }>;
98
+ changed_manifests: Array<{
99
+ path: string;
100
+ left_sha256: string | null;
101
+ right_sha256: string | null;
102
+ }>;
103
+ warnings: string[];
104
+ }
105
+ export declare function captureEnvironmentSnapshot(input?: CaptureEnvironmentSnapshotInput): EnvironmentSnapshot;
106
+ export declare function writeEnvironmentSnapshot(snapshot: EnvironmentSnapshot, outputPath?: string): string;
107
+ export declare function readEnvironmentSnapshot(path: string): EnvironmentSnapshot;
108
+ export declare function recordEnvironmentSnapshot(input?: RecordEnvironmentSnapshotInput, db?: Database): RecordedEnvironmentSnapshot;
109
+ export declare function compareEnvironmentSnapshots(left: EnvironmentSnapshot, right: EnvironmentSnapshot): EnvironmentSnapshotComparison;
110
+ export declare function compareEnvironmentSnapshotFiles(leftPath: string, rightPath: string): EnvironmentSnapshotComparison;
111
+ //# sourceMappingURL=environment-snapshots.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment-snapshots.d.ts","sourceRoot":"","sources":["../../src/lib/environment-snapshots.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { type LocalEventHookConfig, type LocalEventHookTarget } from "./config.js";
2
- export declare const LOCAL_EVENT_TYPES: readonly ["task.assigned", "task.blocked", "task.started", "task.completed", "task.failed", "task.unblocked", "task.status_changed", "plan.updated", "run.started", "run.completed", "run.failed", "run.cancelled", "approval.decided", "import.finished", "export.finished"];
2
+ export declare const LOCAL_EVENT_TYPES: readonly ["task.assigned", "task.blocked", "task.started", "task.completed", "task.due", "task.due_soon", "task.failed", "task.sla_breached", "task.stale", "task.unblocked", "task.status_changed", "calendar.reminder", "plan.updated", "run.started", "run.completed", "run.failed", "run.cancelled", "approval.decided", "import.finished", "export.finished"];
3
3
  export type LocalEventType = typeof LOCAL_EVENT_TYPES[number] | string;
4
4
  export interface LocalEventHookInput {
5
5
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"event-hooks.d.ts","sourceRoot":"","sources":["../../src/lib/event-hooks.ts"],"names":[],"mappings":"AAMA,OAAO,EAGL,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EAC1B,MAAM,aAAa,CAAC;AAErB,eAAO,MAAM,iBAAiB,+QAgBpB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,OAAO,iBAAiB,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAEvE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACpD;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE;QACN,OAAO,EAAE,cAAc,CAAC;QACxB,UAAU,EAAE,IAAI,CAAC;KAClB,CAAC;IACF,SAAS,EAAE;QACT,SAAS,EAAE,QAAQ,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,cAAc,CAAC;IAC3B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAmLD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,oBAAoB,CAYrF;AAED,wBAAgB,mBAAmB,IAAI,oBAAoB,EAAE,CAE5D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI,CAE3E;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQ1D;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO,CAAC,4BAA4B,EAAE,CAAC,CAKrH;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,2BAA2B,GAAG,IAAI,CAEjF;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,2BAA2B,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,4BAA4B,EAAE,CAAC,CAIjJ"}
1
+ {"version":3,"file":"event-hooks.d.ts","sourceRoot":"","sources":["../../src/lib/event-hooks.ts"],"names":[],"mappings":"AAMA,OAAO,EAGL,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EAC1B,MAAM,aAAa,CAAC;AAErB,eAAO,MAAM,iBAAiB,oWAqBpB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,OAAO,iBAAiB,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAEvE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACpD;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE;QACN,OAAO,EAAE,cAAc,CAAC;QACxB,UAAU,EAAE,IAAI,CAAC;KAClB,CAAC;IACF,SAAS,EAAE;QACT,SAAS,EAAE,QAAQ,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,cAAc,CAAC;IAC3B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAmLD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,oBAAoB,CAYrF;AAED,wBAAgB,mBAAmB,IAAI,oBAAoB,EAAE,CAE5D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI,CAE3E;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQ1D;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO,CAAC,4BAA4B,EAAE,CAAC,CAKrH;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,2BAA2B,GAAG,IAAI,CAEjF;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,2BAA2B,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,4BAA4B,EAAE,CAAC,CAIjJ"}
@@ -0,0 +1,60 @@
1
+ import type { Database } from "bun:sqlite";
2
+ import { type InboxItem } from "../db/inbox.js";
3
+ import type { Task, TaskPriority } from "../types/index.js";
4
+ import { type DuplicateTaskCandidate } from "./task-dedupe.js";
5
+ export declare const EXTERNAL_ISSUE_IMPORT_SCHEMA_VERSION = 1;
6
+ export type ExternalIssueProvider = "github" | "linear" | "jira" | "url";
7
+ export interface ExternalIssueRecord {
8
+ provider: ExternalIssueProvider;
9
+ external_id: string;
10
+ key: string | null;
11
+ title: string;
12
+ body: string | null;
13
+ url: string | null;
14
+ state: string | null;
15
+ labels: string[];
16
+ assignee: string | null;
17
+ priority: TaskPriority | null;
18
+ metadata: Record<string, unknown>;
19
+ }
20
+ export interface ExternalIssueImportInput {
21
+ provider?: ExternalIssueProvider;
22
+ text?: string;
23
+ json?: unknown;
24
+ source_url?: string;
25
+ source_name?: string;
26
+ project_id?: string;
27
+ task_list_id?: string;
28
+ agent_id?: string;
29
+ default_priority?: TaskPriority;
30
+ apply?: boolean;
31
+ allow_network?: boolean;
32
+ create_inbox?: boolean;
33
+ dedupe?: boolean;
34
+ }
35
+ export interface ExternalIssueExistingMatch {
36
+ issue: ExternalIssueRecord;
37
+ task: Task;
38
+ reason: string;
39
+ }
40
+ export interface ExternalIssueImportResult {
41
+ schema_version: 1;
42
+ local_only: true;
43
+ network_used: boolean;
44
+ dry_run: boolean;
45
+ imported_at: string;
46
+ source: {
47
+ provider: ExternalIssueProvider | null;
48
+ source_url: string | null;
49
+ source_name: string | null;
50
+ };
51
+ issues: ExternalIssueRecord[];
52
+ created_tasks: Task[];
53
+ inbox_items: InboxItem[];
54
+ existing_matches: ExternalIssueExistingMatch[];
55
+ duplicate_candidates: DuplicateTaskCandidate[];
56
+ warnings: string[];
57
+ commands: string[];
58
+ }
59
+ export declare function importExternalIssues(input: ExternalIssueImportInput, db?: Database): ExternalIssueImportResult;
60
+ //# sourceMappingURL=external-issue-importers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-issue-importers.d.ts","sourceRoot":"","sources":["../../src/lib/external-issue-importers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGjE,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAsB,KAAK,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAGnF,eAAO,MAAM,oCAAoC,IAAI,CAAC;AAEtD,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;AAEzE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,qBAAqB,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,YAAY,CAAC;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,cAAc,EAAE,CAAC,CAAC;IAClB,UAAU,EAAE,IAAI,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE;QACN,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAAC;QACvC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,CAAC;IACF,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,aAAa,EAAE,IAAI,EAAE,CAAC;IACtB,WAAW,EAAE,SAAS,EAAE,CAAC;IACzB,gBAAgB,EAAE,0BAA0B,EAAE,CAAC;IAC/C,oBAAoB,EAAE,sBAAsB,EAAE,CAAC;IAC/C,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAoYD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,wBAAwB,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,yBAAyB,CAsG9G"}
@@ -9,6 +9,34 @@ export interface ExtractedComment {
9
9
  line: number;
10
10
  /** Full line content from the source file */
11
11
  raw: string;
12
+ /** Stable fingerprint used to dedupe across line moves */
13
+ fingerprint: string;
14
+ /** Nearest enclosing or preceding symbol, when recognized locally */
15
+ symbol?: string;
16
+ symbol_kind?: SourceSymbolKind;
17
+ }
18
+ export type SourceSymbolKind = "function" | "class" | "interface" | "type" | "variable" | "method";
19
+ export interface SourceSymbol {
20
+ name: string;
21
+ kind: SourceSymbolKind;
22
+ file: string;
23
+ line: number;
24
+ raw: string;
25
+ }
26
+ export interface SourceIndexFile {
27
+ file: string;
28
+ checksum: string;
29
+ symbols: SourceSymbol[];
30
+ comments: ExtractedComment[];
31
+ }
32
+ export interface CodebaseIndex {
33
+ root: string;
34
+ generated_at: string;
35
+ files: SourceIndexFile[];
36
+ total_comments: number;
37
+ total_symbols: number;
38
+ respects_gitignore: boolean;
39
+ excludes: string[];
12
40
  }
13
41
  export interface ExtractOptions {
14
42
  /** Directory or file to scan */
@@ -29,6 +57,12 @@ export interface ExtractOptions {
29
57
  dry_run?: boolean;
30
58
  /** File extensions to scan (default: common code extensions) */
31
59
  extensions?: string[];
60
+ /** Extra glob-ish path patterns to exclude */
61
+ exclude?: string[];
62
+ /** Respect .gitignore files from the scanned root (default true) */
63
+ respect_gitignore?: boolean;
64
+ /** Include a local codebase index in the result */
65
+ include_index?: boolean;
32
66
  }
33
67
  export interface ExtractResult {
34
68
  /** All comments found */
@@ -37,6 +71,27 @@ export interface ExtractResult {
37
71
  tasks: Task[];
38
72
  /** Number of duplicates skipped */
39
73
  skipped: number;
74
+ /** Local codebase index, when requested */
75
+ index?: CodebaseIndex;
76
+ }
77
+ export interface WatchSourceTodosOptions extends ExtractOptions {
78
+ /** Poll interval for repeated local scans */
79
+ interval_ms?: number;
80
+ /** Run a single scan and return */
81
+ once?: boolean;
82
+ /** Maximum scans before returning. Defaults to 1 when once=true, otherwise Infinity. */
83
+ max_runs?: number;
84
+ }
85
+ export interface SourceTodoWatchRun {
86
+ run: number;
87
+ scanned_at: string;
88
+ changed_files: string[];
89
+ result: ExtractResult;
90
+ }
91
+ export interface SourceTodoWatchResult {
92
+ root: string;
93
+ interval_ms: number;
94
+ runs: SourceTodoWatchRun[];
40
95
  }
41
96
  /** Priority mapping from comment tag */
42
97
  export declare function tagToPriority(tag: ExtractTag): TaskPriority;
@@ -44,8 +99,10 @@ export declare function tagToPriority(tag: ExtractTag): TaskPriority;
44
99
  * Extract TODO-style comments from a single file's contents.
45
100
  */
46
101
  export declare function extractFromSource(source: string, filePath: string, tags?: ExtractTag[]): ExtractedComment[];
102
+ export declare function buildCodebaseIndex(options: ExtractOptions): CodebaseIndex;
47
103
  /**
48
104
  * Scan a directory or file for TODO-style comments and optionally create tasks.
49
105
  */
50
106
  export declare function extractTodos(options: ExtractOptions, db?: Database): ExtractResult;
107
+ export declare function watchSourceTodos(options: WatchSourceTodosOptions, onRun?: (run: SourceTodoWatchRun) => void | Promise<void>): Promise<SourceTodoWatchResult>;
51
108
  //# sourceMappingURL=extract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/lib/extract.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,eAAO,MAAM,YAAY,0DAA2D,CAAC;AACrF,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,UAAU,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC7B,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;IACxB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,+BAA+B;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,yBAAyB;IACzB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,uCAAuC;IACvC,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;CACjB;AAqBD,wCAAwC;AACxC,wBAAgB,aAAa,CAAC,GAAG,EAAE,UAAU,GAAG,YAAY,CAa3D;AAiBD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,UAAU,EAAsB,GACrC,gBAAgB,EAAE,CA0BpB;AA+BD;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,aAAa,CAuFlF"}
1
+ {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/lib/extract.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { Database } from "bun:sqlite";
2
2
  import { type ExportedArtifactContent } from "./artifact-store.js";
3
- import type { Project, Plan, Task, TaskComment, TaskDependency, TaskList } from "../types/index.js";
3
+ import type { LocalCalendarItem, Project, Plan, Task, TaskBoard, TaskComment, TaskDependency, TaskList } from "../types/index.js";
4
4
  import type { TaskCommit, TaskGitRef, TaskVerification } from "../db/task-commits.js";
5
5
  import type { TaskFile } from "../db/task-files.js";
6
6
  import type { TaskRun, TaskRunArtifact, TaskRunCommand, TaskRunEvent } from "../db/task-runs.js";
@@ -32,6 +32,8 @@ export interface TodosLocalBridgeData {
32
32
  task_git_refs: TaskGitRef[];
33
33
  task_verifications: TaskVerification[];
34
34
  saved_views: SavedSearchView[];
35
+ task_boards: TaskBoard[];
36
+ local_calendar_items: LocalCalendarItem[];
35
37
  }
36
38
  export interface TodosLocalBridgeBundle {
37
39
  schemaVersion: typeof TODOS_LOCAL_BRIDGE_SCHEMA_VERSION;
@@ -1 +1 @@
1
- {"version":3,"file":"local-bridge.d.ts","sourceRoot":"","sources":["../../src/lib/local-bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-bridge.d.ts","sourceRoot":"","sources":["../../src/lib/local-bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ import { type LocalExtensionManifest, type LocalExtensionRecord } from "./config.js";
2
+ import { type RunnerSandboxCheck } from "./runner-sandbox.js";
3
+ export interface ExtensionSourceInspection {
4
+ source: string;
5
+ source_type: "manifest" | "directory" | "bundle";
6
+ manifest_path: string;
7
+ manifest: LocalExtensionManifest;
8
+ checksum: string;
9
+ validation: ExtensionValidationResult;
10
+ bundle: boolean;
11
+ }
12
+ export interface ExtensionValidationResult {
13
+ ok: boolean;
14
+ errors: string[];
15
+ warnings: string[];
16
+ compatible: boolean;
17
+ todos_version: string;
18
+ compatibility_range: string | null;
19
+ permission_declarations: string[];
20
+ cli_mcp_checks: ExtensionCompatibilityCheck[];
21
+ sandbox_checks: ExtensionSandboxCheck[];
22
+ }
23
+ export interface ExtensionCompatibilityCheck {
24
+ surface: "cli" | "mcp" | "hook" | "permissions";
25
+ name: string;
26
+ ok: boolean;
27
+ errors: string[];
28
+ warnings: string[];
29
+ }
30
+ export interface ExtensionSandboxCheck {
31
+ command_name: string;
32
+ command: string;
33
+ allowed: boolean;
34
+ requires_approval: boolean;
35
+ reasons: string[];
36
+ audit_evidence: RunnerSandboxCheck["audit_evidence"];
37
+ }
38
+ export interface ExtensionCompatibilityReport {
39
+ source: string | null;
40
+ manifest: LocalExtensionManifest;
41
+ validation: ExtensionValidationResult;
42
+ ok: boolean;
43
+ summary: {
44
+ commands: number;
45
+ mcp_tools: number;
46
+ hooks: number;
47
+ permissions: number;
48
+ sandbox_checks: number;
49
+ failed_sandbox_checks: number;
50
+ };
51
+ errors: string[];
52
+ warnings: string[];
53
+ }
54
+ export interface InstallLocalExtensionInput {
55
+ source: string;
56
+ trust?: boolean;
57
+ checksum?: string;
58
+ signature?: string;
59
+ public_key?: string;
60
+ }
61
+ export interface VerifyExtensionSignatureInput {
62
+ checksum: string;
63
+ signature?: string;
64
+ public_key?: string;
65
+ }
66
+ export declare function verifyExtensionSignature(input: VerifyExtensionSignatureInput): boolean;
67
+ export declare function inspectExtensionSource(source: string): ExtensionSourceInspection;
68
+ export declare function validateExtensionManifest(manifest: LocalExtensionManifest): ExtensionValidationResult;
69
+ export declare function testExtensionCompatibility(sourceOrManifest: string | LocalExtensionManifest): ExtensionCompatibilityReport;
70
+ export declare function installLocalExtension(input: InstallLocalExtensionInput): LocalExtensionRecord;
71
+ export declare function listLocalExtensions(): LocalExtensionRecord[];
72
+ export declare function getLocalExtension(name: string): LocalExtensionRecord | null;
73
+ export declare function removeLocalExtension(name: string): boolean;
74
+ export declare function renderExtensionSummary(record: LocalExtensionRecord): string;
75
+ //# sourceMappingURL=local-extensions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-extensions.d.ts","sourceRoot":"","sources":["../../src/lib/local-extensions.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EAC1B,MAAM,aAAa,CAAC;AAIrB,OAAO,EAAsB,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAElF,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;IACjD,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,sBAAsB,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,yBAAyB,CAAC;IACtC,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAClC,cAAc,EAAE,2BAA2B,EAAE,CAAC;IAC9C,cAAc,EAAE,qBAAqB,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,aAAa,CAAC;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,sBAAsB,CAAC;IACjC,UAAU,EAAE,yBAAyB,CAAC;IACtC,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,qBAAqB,EAAE,MAAM,CAAC;KAC/B,CAAC;IACF,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAkND,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,6BAA6B,GAAG,OAAO,CAMtF;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,yBAAyB,CAuBhF;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,sBAAsB,GAAG,yBAAyB,CA0CrG;AAED,wBAAgB,0BAA0B,CAAC,gBAAgB,EAAE,MAAM,GAAG,sBAAsB,GAAG,4BAA4B,CAuB1H;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,GAAG,oBAAoB,CA0C7F;AAED,wBAAgB,mBAAmB,IAAI,oBAAoB,EAAE,CAE5D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI,CAE3E;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQ1D;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAE3E"}
@@ -0,0 +1,55 @@
1
+ import type { Database } from "bun:sqlite";
2
+ import { type LocalEventHookDispatchResult, type LocalEventType } from "./event-hooks.js";
3
+ import { type TerminalNotificationEvaluation } from "./terminal-notifications.js";
4
+ export declare const LOCAL_NOTIFICATION_SCHEMA_VERSION = 1;
5
+ export type LocalNotificationKind = "task_due" | "task_due_soon" | "task_sla" | "task_stale" | "run_completed" | "run_failed" | "calendar_reminder";
6
+ export type LocalNotificationSeverity = "info" | "warning" | "critical";
7
+ export interface LocalNotificationQuietHours {
8
+ start: string;
9
+ end: string;
10
+ timezone?: "utc" | "local";
11
+ }
12
+ export interface CheckLocalNotificationsInput {
13
+ project_id?: string;
14
+ agent_id?: string;
15
+ now?: string;
16
+ due_within_minutes?: number;
17
+ stale_minutes?: number;
18
+ run_since?: string;
19
+ include_runs?: boolean;
20
+ include_calendar?: boolean;
21
+ emit_hooks?: boolean;
22
+ evaluate_terminal?: boolean;
23
+ quiet_hours?: LocalNotificationQuietHours;
24
+ limit?: number;
25
+ }
26
+ export interface LocalNotificationAlert {
27
+ id: string;
28
+ kind: LocalNotificationKind;
29
+ event_type: LocalEventType;
30
+ severity: LocalNotificationSeverity;
31
+ title: string;
32
+ message: string;
33
+ task_id: string | null;
34
+ run_id: string | null;
35
+ project_id: string | null;
36
+ agent_id: string | null;
37
+ due_at: string | null;
38
+ triggered_at: string;
39
+ quieted: boolean;
40
+ payload: Record<string, unknown>;
41
+ }
42
+ export interface CheckLocalNotificationsResult {
43
+ schema_version: 1;
44
+ local_only: true;
45
+ checked_at: string;
46
+ quiet_hours: LocalNotificationQuietHours | null;
47
+ quiet_active: boolean;
48
+ alerts: LocalNotificationAlert[];
49
+ hook_results: LocalEventHookDispatchResult[];
50
+ terminal_evaluations: TerminalNotificationEvaluation[];
51
+ counts: Record<LocalNotificationKind, number>;
52
+ warnings: string[];
53
+ }
54
+ export declare function checkLocalNotifications(input?: CheckLocalNotificationsInput, db?: Database): Promise<CheckLocalNotificationsResult>;
55
+ //# sourceMappingURL=local-notifications.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-notifications.d.ts","sourceRoot":"","sources":["../../src/lib/local-notifications.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAK3C,OAAO,EAEL,KAAK,4BAA4B,EACjC,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEL,KAAK,8BAA8B,EACpC,MAAM,6BAA6B,CAAC;AAGrC,eAAO,MAAM,iCAAiC,IAAI,CAAC;AAEnD,MAAM,MAAM,qBAAqB,GAC7B,UAAU,GACV,eAAe,GACf,UAAU,GACV,YAAY,GACZ,eAAe,GACf,YAAY,GACZ,mBAAmB,CAAC;AAExB,MAAM,MAAM,yBAAyB,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;AAQxE,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,4BAA4B;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,WAAW,CAAC,EAAE,2BAA2B,CAAC;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,qBAAqB,CAAC;IAC5B,UAAU,EAAE,cAAc,CAAC;IAC3B,QAAQ,EAAE,yBAAyB,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,6BAA6B;IAC5C,cAAc,EAAE,CAAC,CAAC;IAClB,UAAU,EAAE,IAAI,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,2BAA2B,GAAG,IAAI,CAAC;IAChD,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,sBAAsB,EAAE,CAAC;IACjC,YAAY,EAAE,4BAA4B,EAAE,CAAC;IAC7C,oBAAoB,EAAE,8BAA8B,EAAE,CAAC;IACvD,MAAM,EAAE,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAC9C,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AA6ID,wBAAsB,uBAAuB,CAAC,KAAK,GAAE,4BAAiC,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAkF7I"}
@@ -0,0 +1,66 @@
1
+ import type { Database } from "bun:sqlite";
2
+ export declare const TODOS_LOCAL_SNAPSHOT_SCHEMA_VERSION = 1;
3
+ export type LocalSnapshotType = "projects" | "tasks" | "plans" | "runs" | "dependencies" | "events" | "evidence";
4
+ export interface LocalSnapshotCatalogEntry {
5
+ type: LocalSnapshotType;
6
+ uri: string;
7
+ title: string;
8
+ description: string;
9
+ json_contract: "local_snapshot";
10
+ }
11
+ export interface LocalSnapshotOptions {
12
+ type: LocalSnapshotType;
13
+ project_id?: string;
14
+ generatedAt?: string;
15
+ limit?: number;
16
+ since?: string;
17
+ }
18
+ export interface LocalSnapshot {
19
+ schema_version: typeof TODOS_LOCAL_SNAPSHOT_SCHEMA_VERSION;
20
+ kind: "hasna.todos.local-snapshot";
21
+ type: LocalSnapshotType;
22
+ local_only: true;
23
+ no_network: true;
24
+ redacted: true;
25
+ generated_at: string;
26
+ package: {
27
+ packageName: "@hasna/todos";
28
+ repository: "hasna/todos";
29
+ version: string;
30
+ };
31
+ filters: {
32
+ project_id: string | null;
33
+ since: string | null;
34
+ limit: number;
35
+ };
36
+ cursor: string;
37
+ fingerprint: string;
38
+ count: number;
39
+ items: unknown[];
40
+ resources: {
41
+ self: string;
42
+ poll_tool: "poll_local_snapshots";
43
+ markdown_tool: "get_local_snapshot";
44
+ };
45
+ }
46
+ export interface LocalSnapshotPollResult {
47
+ schema_version: 1;
48
+ local_only: true;
49
+ no_network: true;
50
+ generated_at: string;
51
+ since: string | null;
52
+ cursor: string;
53
+ changed: boolean;
54
+ snapshots: LocalSnapshot[];
55
+ }
56
+ export declare function listLocalSnapshotResources(): LocalSnapshotCatalogEntry[];
57
+ export declare function getLocalSnapshot(options: LocalSnapshotOptions, db?: Database): LocalSnapshot;
58
+ export declare function pollLocalSnapshots(options?: {
59
+ types?: LocalSnapshotType[];
60
+ project_id?: string;
61
+ since?: string;
62
+ generatedAt?: string;
63
+ limit?: number;
64
+ }, db?: Database): LocalSnapshotPollResult;
65
+ export declare function renderLocalSnapshotMarkdown(snapshot: LocalSnapshot): string;
66
+ //# sourceMappingURL=local-snapshots.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-snapshots.d.ts","sourceRoot":"","sources":["../../src/lib/local-snapshots.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAM3C,eAAO,MAAM,mCAAmC,IAAI,CAAC;AAErD,MAAM,MAAM,iBAAiB,GACzB,UAAU,GACV,OAAO,GACP,OAAO,GACP,MAAM,GACN,cAAc,GACd,QAAQ,GACR,UAAU,CAAC;AAEf,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,iBAAiB,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,gBAAgB,CAAC;CACjC;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,iBAAiB,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,OAAO,mCAAmC,CAAC;IAC3D,IAAI,EAAE,4BAA4B,CAAC;IACnC,IAAI,EAAE,iBAAiB,CAAC;IACxB,UAAU,EAAE,IAAI,CAAC;IACjB,UAAU,EAAE,IAAI,CAAC;IACjB,QAAQ,EAAE,IAAI,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE;QACP,WAAW,EAAE,cAAc,CAAC;QAC5B,UAAU,EAAE,aAAa,CAAC;QAC1B,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,sBAAsB,CAAC;QAClC,aAAa,EAAE,oBAAoB,CAAC;KACrC,CAAC;CACH;AAED,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,CAAC,CAAC;IAClB,UAAU,EAAE,IAAI,CAAC;IACjB,UAAU,EAAE,IAAI,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,aAAa,EAAE,CAAC;CAC5B;AA6OD,wBAAgB,0BAA0B,IAAI,yBAAyB,EAAE,CAExE;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,oBAAoB,EAC7B,EAAE,CAAC,EAAE,QAAQ,GACZ,aAAa,CAsCf;AAED,wBAAgB,kBAAkB,CAChC,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CACX,EACN,EAAE,CAAC,EAAE,QAAQ,GACZ,uBAAuB,CAsBzB;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAqB3E"}
@@ -0,0 +1,43 @@
1
+ import type { Database } from "bun:sqlite";
2
+ export type MentionReferenceKind = "file" | "symbol" | "commit" | "branch" | "pull_request" | "plan" | "run" | "agent" | "task" | "unknown";
3
+ export interface MentionResolverInput {
4
+ mentions: string[];
5
+ workspace?: string;
6
+ include_symbol_context?: boolean;
7
+ max_symbol_matches?: number;
8
+ now?: string;
9
+ }
10
+ export interface MentionBacklink {
11
+ kind: MentionReferenceKind;
12
+ key: string;
13
+ label: string;
14
+ target: string;
15
+ }
16
+ export interface MentionResolution {
17
+ input: string;
18
+ kind: MentionReferenceKind;
19
+ target: string;
20
+ resolved: boolean;
21
+ canonical: string | null;
22
+ title: string | null;
23
+ path: string | null;
24
+ line: number | null;
25
+ column: number | null;
26
+ symbol: string | null;
27
+ id: string | null;
28
+ sha: string | null;
29
+ backlinks: MentionBacklink[];
30
+ warnings: string[];
31
+ }
32
+ export interface MentionResolutionReport {
33
+ schema_version: 1;
34
+ local_only: true;
35
+ no_network: true;
36
+ generated_at: string;
37
+ workspace: string;
38
+ references: MentionResolution[];
39
+ backlinks: MentionBacklink[];
40
+ warnings: string[];
41
+ }
42
+ export declare function resolveMentions(input: MentionResolverInput, db?: Database): MentionResolutionReport;
43
+ //# sourceMappingURL=mention-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mention-resolver.d.ts","sourceRoot":"","sources":["../../src/lib/mention-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAS3C,MAAM,MAAM,oBAAoB,GAC5B,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,cAAc,GACd,MAAM,GACN,KAAK,GACL,OAAO,GACP,MAAM,GACN,SAAS,CAAC;AAEd,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,oBAAoB,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,oBAAoB,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,CAAC,CAAC;IAClB,UAAU,EAAE,IAAI,CAAC;IACjB,UAAU,EAAE,IAAI,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAiZD,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,uBAAuB,CAkCnG"}