@hasna/todos 0.13.2 → 0.13.3

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 (69) hide show
  1. package/README.md +78 -14
  2. package/dist/cli/cloud-router.d.ts +57 -7
  3. package/dist/cli/cloud-router.d.ts.map +1 -1
  4. package/dist/cli/commands/query-commands.d.ts.map +1 -1
  5. package/dist/cli/doctor-integrity.d.ts +106 -0
  6. package/dist/cli/doctor-integrity.d.ts.map +1 -0
  7. package/dist/cli/helpers.d.ts +2 -2
  8. package/dist/cli/index.js +1461 -778
  9. package/dist/cli/stage-a.d.ts.map +1 -1
  10. package/dist/contracts.js +118 -30
  11. package/dist/db/database.d.ts.map +1 -1
  12. package/dist/db/findings.d.ts +1 -0
  13. package/dist/db/findings.d.ts.map +1 -1
  14. package/dist/db/integrity.d.ts +20 -0
  15. package/dist/db/integrity.d.ts.map +1 -0
  16. package/dist/index.d.ts +5 -2
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +562 -132
  19. package/dist/lib/context-packs.d.ts +1 -0
  20. package/dist/lib/context-packs.d.ts.map +1 -1
  21. package/dist/lib/dependency-graph.d.ts +1 -1
  22. package/dist/lib/doctor.d.ts +20 -0
  23. package/dist/lib/doctor.d.ts.map +1 -1
  24. package/dist/lib/integrity.d.ts +215 -0
  25. package/dist/lib/integrity.d.ts.map +1 -0
  26. package/dist/lib/native-storage-status.d.ts +2 -2
  27. package/dist/lib/native-storage-status.d.ts.map +1 -1
  28. package/dist/lib/release-compatibility.d.ts.map +1 -1
  29. package/dist/lib/task-dedupe.d.ts +15 -0
  30. package/dist/lib/task-dedupe.d.ts.map +1 -1
  31. package/dist/mcp/index.d.ts.map +1 -1
  32. package/dist/mcp/index.js +517 -85
  33. package/dist/mcp.js +7 -3
  34. package/dist/registry.d.ts +1 -1
  35. package/dist/registry.d.ts.map +1 -1
  36. package/dist/registry.js +125 -30
  37. package/dist/release-provenance.json +5 -5
  38. package/dist/sdk/types.d.ts +42 -0
  39. package/dist/sdk/types.d.ts.map +1 -1
  40. package/dist/sdk/v1.generated.d.ts +1 -0
  41. package/dist/sdk/v1.generated.d.ts.map +1 -1
  42. package/dist/server/cloud.d.ts +8 -1
  43. package/dist/server/cloud.d.ts.map +1 -1
  44. package/dist/server/index.js +521 -89
  45. package/dist/server/openapi.d.ts +12 -0
  46. package/dist/server/openapi.d.ts.map +1 -1
  47. package/dist/server/serve.d.ts.map +1 -1
  48. package/dist/server/v1.d.ts.map +1 -1
  49. package/dist/storage/config.d.ts +23 -5
  50. package/dist/storage/config.d.ts.map +1 -1
  51. package/dist/storage/factory.d.ts +9 -3
  52. package/dist/storage/factory.d.ts.map +1 -1
  53. package/dist/storage/hybrid.d.ts +7 -0
  54. package/dist/storage/hybrid.d.ts.map +1 -1
  55. package/dist/storage/index.d.ts +3 -3
  56. package/dist/storage/index.d.ts.map +1 -1
  57. package/dist/storage/interfaces.d.ts +29 -8
  58. package/dist/storage/interfaces.d.ts.map +1 -1
  59. package/dist/storage/local-sqlite.d.ts.map +1 -1
  60. package/dist/storage/postgres-adapter.d.ts.map +1 -1
  61. package/dist/storage.d.ts +3 -3
  62. package/dist/storage.d.ts.map +1 -1
  63. package/dist/storage.js +601 -250
  64. package/dist/testing.d.ts +79 -0
  65. package/dist/testing.d.ts.map +1 -0
  66. package/dist/testing.js +107 -0
  67. package/dist/types/index.d.ts +12 -1
  68. package/dist/types/index.d.ts.map +1 -1
  69. package/package.json +7 -3
@@ -58,6 +58,7 @@ export interface AgentContextPack {
58
58
  project: Pick<Project, "id" | "name" | "path" | "description"> | null;
59
59
  plan: (Pick<Plan, "id" | "name" | "description" | "status" | "agent_id"> & {
60
60
  tasks: AgentContextPackRelatedTask[];
61
+ total_tasks: number;
61
62
  omitted_tasks: number;
62
63
  }) | null;
63
64
  acceptance_criteria: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"context-packs.d.ts","sourceRoot":"","sources":["../../src/lib/context-packs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAM3C,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAInE,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAQ,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAI1E,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,UAAU,GAAG,cAAc,GAAG,kBAAkB,CAAC;AAC/F,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAChF,MAAM,MAAM,uBAAuB,GAC/B,SAAS,GACT,MAAM,GACN,qBAAqB,GACrB,cAAc,GACd,UAAU,GACV,gBAAgB,GAChB,cAAc,GACd,MAAM,CAAC;AAEX,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,2BAA2B;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,CAAC,CAAC;IAClB,OAAO,EAAE,uBAAuB,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,oBAAoB,CAAC;IAC3B,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC,GAAG,IAAI,CAAC;IACtE,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,aAAa,GAAG,QAAQ,GAAG,UAAU,CAAC,GAAG;QAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;IACnJ,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,YAAY,EAAE;QACZ,QAAQ,EAAE,2BAA2B,EAAE,CAAC;QACxC,UAAU,EAAE,2BAA2B,EAAE,CAAC;QAC1C,gBAAgB,EAAE,MAAM,CAAC;QACzB,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,QAAQ,EAAE;QACR,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,MAAM,GAAG,cAAc,GAAG,YAAY,CAAC,GAAG;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC5G,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,YAAY,CAAC,GAAG;QAAE,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACtH,YAAY,EAAE;QACZ,OAAO,EAAE,KAAK,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;YAAC,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;YAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,CAAC,CAAC;QACrH,QAAQ,EAAE,KAAK,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;YAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,CAAC,CAAC;QACjG,aAAa,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;YAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACvI,qBAAqB,EAAE,MAAM,CAAC;KAC/B,CAAC;IACF,IAAI,EAAE;QACJ,KAAK,EAAE,KAAK,CAAC;YACX,EAAE,EAAE,MAAM,CAAC;YACX,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;YACrB,MAAM,EAAE,MAAM,CAAC;YACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;YACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;YACxB,UAAU,EAAE,MAAM,CAAC;YACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;YAC5B,MAAM,EAAE,KAAK,CAAC;gBAAE,UAAU,EAAE,MAAM,CAAC;gBAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;gBAAC,UAAU,EAAE,MAAM,CAAA;aAAE,CAAC,CAAC;YAClF,QAAQ,EAAE,KAAK,CAAC;gBAAE,OAAO,EAAE,MAAM,CAAC;gBAAC,MAAM,EAAE,MAAM,CAAC;gBAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;gBAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;aAAE,CAAC,CAAC;YAClH,KAAK,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,MAAM,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;aAAE,CAAC,CAAC;YACpE,SAAS,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;gBAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;gBAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;aAAE,CAAC,CAAC;SACrH,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,aAAa,EAAE;QACb,MAAM,EAAE,uBAAuB,CAAC;QAChC,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,cAAc,EAAE;QACd,UAAU,EAAE,aAAa,CAAC;QAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,yBAAyB,EAAE,MAAM,CAAC;QAClC,gBAAgB,EAAE,MAAM,CAAC;QACzB,OAAO,EAAE,OAAO,CAAC;QACjB,iBAAiB,EAAE,uBAAuB,EAAE,CAAC;QAC7C,iBAAiB,EAAE,uBAAuB,EAAE,CAAC;QAC7C,gBAAgB,EAAE,uBAAuB,EAAE,CAAC;QAC5C,SAAS,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,uBAAuB,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,sBAAsB,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACtH,CAAC;IACF,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,2BAA2B,EAAE,eAAe,GAAG,YAAY,GAAG,oBAAoB,GAAG,WAAW,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,oBAAoB,GAAG,mBAAmB,CAAC,CAAC,CAAC;IAClO,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAiTD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,2BAA2B,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,gBAAgB,CAiK1G;AAMD,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CA0D7E;AAED,wBAAgB,qCAAqC,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CA6BpF;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,sBAAsB,EAAE,OAAO,UAAQ,GAAG,MAAM,CAKtH"}
1
+ {"version":3,"file":"context-packs.d.ts","sourceRoot":"","sources":["../../src/lib/context-packs.ts"],"names":[],"mappings":"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"}
@@ -51,7 +51,7 @@ export interface TaskDependencyEdges {
51
51
  task_id: string;
52
52
  /**
53
53
  * The root task's short id when the caller already holds the row (local
54
- * store); `null` from a self-hosted authority, where surfacing it would cost
54
+ * store); `null` from a hosted /v1 authority, where surfacing it would cost
55
55
  * an extra round trip and consumers key on `task_id` anyway.
56
56
  */
57
57
  short_id: string | null;
@@ -1,4 +1,5 @@
1
1
  import type { Database } from "bun:sqlite";
2
+ import type { IntegrityReport } from "./integrity.js";
2
3
  export type DoctorSeverity = "info" | "warn" | "error";
3
4
  export interface DoctorCheck {
4
5
  severity: DoctorSeverity;
@@ -6,6 +7,12 @@ export interface DoctorCheck {
6
7
  message: string;
7
8
  count?: number;
8
9
  repairable?: boolean;
10
+ /**
11
+ * True for checks projected from the referential-integrity report, so a renderer
12
+ * can show them in the per-condition breakdown instead of the generic list. Never
13
+ * repairable — doctor reports orphans, it does not decide their fate.
14
+ */
15
+ integrity?: boolean;
9
16
  }
10
17
  export interface DoctorRepair {
11
18
  type: string;
@@ -23,8 +30,19 @@ export interface DoctorSummary {
23
30
  infos: number;
24
31
  repairable: number;
25
32
  applied: number;
33
+ /** Referential conditions measured with matching rows. Report-only, never repaired. */
34
+ integrity_findings: number;
35
+ /** Rows affected across all integrity findings. */
36
+ integrity_rows: number;
37
+ /** Conditions doctor could not measure — never folded into "all clear". */
38
+ integrity_unverified: number;
26
39
  }
27
40
  export interface DoctorResult {
41
+ /**
42
+ * True only when there is no error-severity check AND the referential-integrity
43
+ * report is both complete and empty. `ok` is derived from the same checks and
44
+ * counts that get printed — never asserted independently of them.
45
+ */
28
46
  ok: boolean;
29
47
  dry_run: boolean;
30
48
  database_path: string;
@@ -35,6 +53,8 @@ export interface DoctorResult {
35
53
  backup?: DoctorBackup;
36
54
  checks: DoctorCheck[];
37
55
  repairs: DoctorRepair[];
56
+ /** Per-condition referential-integrity breakdown (orphans, dangling references). */
57
+ integrity: IntegrityReport;
38
58
  summary: DoctorSummary;
39
59
  }
40
60
  export interface RunTodosDoctorOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/lib/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQ3C,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEvD,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,cAAc,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,OAAO,EAAE,aAAa,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,CAAC,EAAE,QAAQ,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAiOD,wBAAgB,cAAc,CAAC,OAAO,GAAE,qBAA0B,GAAG,YAAY,CAuMhF"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/lib/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAO3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEvD,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,cAAc,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,uFAAuF;IACvF,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mDAAmD;IACnD,cAAc,EAAE,MAAM,CAAC;IACvB,2EAA2E;IAC3E,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,oFAAoF;IACpF,SAAS,EAAE,eAAe,CAAC;IAC3B,OAAO,EAAE,aAAa,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,CAAC,EAAE,QAAQ,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAkQD,wBAAgB,cAAc,CAAC,OAAO,GAAE,qBAA0B,GAAG,YAAY,CAmNhF"}
@@ -0,0 +1,215 @@
1
+ /**
2
+ * Referential-integrity conditions for the Todos dataset, and the honest verdict
3
+ * computed from them.
4
+ *
5
+ * WHY THIS MODULE EXISTS: `todos doctor` used to hardcode `ok: true` on the remote
6
+ * path and never set a non-zero exit code on either path, so a dataset carrying
7
+ * five figures of orphaned rows reported three green check marks and exited 0. The
8
+ * conditions below are the ones that silently hide work from operators:
9
+ *
10
+ * - a task with no `project_id` is invisible to every project-scoped read;
11
+ * - a task with no `task_list_id` is invisible to every list-scoped read (an
12
+ * operator reading the list concludes there is no work);
13
+ * - a task list with no `project_id` is unreachable through its project;
14
+ * - a reference to an id that no longer exists (a DANGLING reference) is worse
15
+ * than a null: nothing can ever resolve it, and no UI shows it as missing.
16
+ *
17
+ * DESIGN CONSTRAINTS baked into this file:
18
+ *
19
+ * 1. ONE condition list, THREE evaluators. SQLite is relational (`tasks`,
20
+ * `task_lists`, `projects` with real foreign keys); Postgres is a single JSONB
21
+ * record table (`todos_sync_records`) with NO foreign keys at all, so orphan
22
+ * classes SQLite forbids structurally are possible in a self-hosted deployment.
23
+ * A condition added to {@link INTEGRITY_CONDITIONS} is therefore rendered for
24
+ * both engines (and for a client-side row scan) from the SAME declaration —
25
+ * a check implemented for one engine only would report healthy on the other.
26
+ * 2. THE VERDICT IS DERIVED FROM THE REPORTED COUNTS. {@link summarizeIntegrity}
27
+ * is a pure function of the very condition rows that get printed. A verdict
28
+ * computed from a different dataset than the displayed counts is the original
29
+ * bug wearing a different hat.
30
+ * 3. AN UNVERIFIED CONDITION IS NEVER A CLEAN CONDITION. When a count cannot be
31
+ * obtained (an authority that predates the aggregate route, a scan that could
32
+ * not complete), the condition carries `count: null` and the report is
33
+ * incomplete — it is never silently folded into "all clear".
34
+ * 4. REPORT ONLY. Nothing here repairs data. Deciding what to do with existing
35
+ * orphans is an owner decision, not a diagnostic's.
36
+ */
37
+ import { type TaskStatus } from "../types/index.js";
38
+ /** Machine-readable contract id for the integrity report block. */
39
+ export declare const TODOS_INTEGRITY_SCHEMA_VERSION = "todos.integrity.v1";
40
+ export declare const OPEN_TASK_STATUSES: readonly TaskStatus[];
41
+ /** Entity a condition scans. */
42
+ export type IntegrityEntity = "task" | "task_list";
43
+ /** Entity a condition's field points at. */
44
+ export type IntegrityTarget = "project" | "task_list";
45
+ /**
46
+ * `missing` — the reference is NULL or empty, so the row is unrouted.
47
+ * `dangling` — the reference is set but names a row that does not exist.
48
+ */
49
+ export type IntegrityReferenceKind = "missing" | "dangling";
50
+ export type IntegritySeverity = "warn" | "error";
51
+ /** Where a condition's count came from. `unverified` means it was not measured. */
52
+ export type IntegritySource = "sqlite" | "postgres" | "remote-authority" | "remote-scan" | "remote-rows"
53
+ /** More than one measured source in a single report (the remote derivation path). */
54
+ | "remote-derived" | "unverified";
55
+ export interface IntegrityConditionSpec {
56
+ /** Stable machine id — the key automated consumers key off. */
57
+ readonly id: string;
58
+ readonly entity: IntegrityEntity;
59
+ readonly field: "project_id" | "task_list_id";
60
+ readonly target: IntegrityTarget;
61
+ readonly kind: IntegrityReferenceKind;
62
+ /**
63
+ * Severity when the condition is non-empty. A `dangling` reference is always an
64
+ * error (nothing can resolve it); a `missing` reference escalates from warn to
65
+ * error once it hides OPEN work, which is the operator-visible harm.
66
+ */
67
+ readonly base_severity: IntegritySeverity;
68
+ readonly escalate_when_open: boolean;
69
+ /** One-line operator explanation of what the rows do to reads. */
70
+ readonly impact: string;
71
+ }
72
+ /**
73
+ * Every referential condition doctor knows how to count. Order is the display
74
+ * order: task-level rows first (they hide work), then list-level rows.
75
+ */
76
+ export declare const INTEGRITY_CONDITIONS: readonly IntegrityConditionSpec[];
77
+ /** Look a condition spec up by id (throws on an unknown id — ids are a contract). */
78
+ export declare function integrityCondition(id: string): IntegrityConditionSpec;
79
+ /** A measured (or explicitly unmeasured) condition. */
80
+ export interface IntegrityCondition {
81
+ id: string;
82
+ entity: IntegrityEntity;
83
+ field: string;
84
+ kind: IntegrityReferenceKind;
85
+ /** Matching rows, or `null` when the condition could not be measured. */
86
+ count: number | null;
87
+ /** Matching rows that are still open, `null` for entities without a status. */
88
+ open_count: number | null;
89
+ /** Effective severity for a non-empty condition; `null` when empty/unverified. */
90
+ severity: IntegritySeverity | null;
91
+ verified: boolean;
92
+ source: IntegritySource;
93
+ /** Why the count is missing (only set when `verified` is false). */
94
+ unverified_reason?: string;
95
+ message: string;
96
+ impact: string;
97
+ }
98
+ export interface IntegritySummary {
99
+ /** True only when every condition was measured and every count is zero. */
100
+ ok: boolean;
101
+ /** Conditions measured with count > 0. */
102
+ findings: number;
103
+ /** Rows affected across all findings. */
104
+ rows: number;
105
+ errors: number;
106
+ warnings: number;
107
+ /** Conditions that could not be measured — never counted as clean. */
108
+ unverified: number;
109
+ /** True when every condition was measured. */
110
+ complete: boolean;
111
+ }
112
+ export interface IntegrityReport {
113
+ schema_version: string;
114
+ generated_at: string;
115
+ /** Dominant source of the counts, for the operator reading the report. */
116
+ source: IntegritySource;
117
+ conditions: IntegrityCondition[];
118
+ summary: IntegritySummary;
119
+ }
120
+ /** Raw measurement for one condition. */
121
+ export interface IntegrityMeasurement {
122
+ count: number;
123
+ open_count: number | null;
124
+ }
125
+ /**
126
+ * Severity of a NON-EMPTY condition. Kept as a pure function of the measurement so
127
+ * the printed number and the verdict cannot diverge.
128
+ */
129
+ export declare function resolveIntegritySeverity(spec: IntegrityConditionSpec, measurement: IntegrityMeasurement): IntegritySeverity;
130
+ /** Human line for a condition, always carrying the number it is derived from. */
131
+ export declare function formatIntegrityMessage(spec: IntegrityConditionSpec, measurement: IntegrityMeasurement): string;
132
+ /** Wrap a measurement as a reportable condition. */
133
+ export declare function measuredCondition(spec: IntegrityConditionSpec, measurement: IntegrityMeasurement, source: IntegritySource): IntegrityCondition;
134
+ /**
135
+ * A condition doctor could NOT measure. It is deliberately not a zero: an
136
+ * unmeasured condition keeps the report incomplete so the verdict can never claim
137
+ * health it did not establish.
138
+ */
139
+ export declare function unverifiedCondition(spec: IntegrityConditionSpec, reason: string): IntegrityCondition;
140
+ /**
141
+ * The verdict. Pure function of the condition rows that get displayed:
142
+ * - any measured count > 0 is a finding;
143
+ * - any unmeasured condition makes the report incomplete;
144
+ * - `ok` requires BOTH completeness and zero findings.
145
+ */
146
+ export declare function summarizeIntegrity(conditions: readonly IntegrityCondition[]): IntegritySummary;
147
+ /** Assemble a full report (summary always derived from `conditions`). */
148
+ export declare function buildIntegrityReport(conditions: IntegrityCondition[], generatedAt: string): IntegrityReport;
149
+ /**
150
+ * Normalize a report that came from ANOTHER process (an authority's
151
+ * `GET /v1/integrity`) against this build's condition list, and RECOMPUTE the
152
+ * summary from the returned counts.
153
+ *
154
+ * Two ways a remote report could otherwise reintroduce the original bug:
155
+ * - the authority sends `summary.ok: true` next to non-zero counts, and the
156
+ * client believes the flag instead of the rows;
157
+ * - the authority is older/newer and simply omits a condition, which would
158
+ * silently shrink the checked set to whatever it happened to send.
159
+ * Both are closed here: unknown conditions are dropped, missing ones become
160
+ * UNVERIFIED, and the verdict is recomputed locally.
161
+ */
162
+ export declare function adoptRemoteIntegrityReport(raw: {
163
+ generated_at?: unknown;
164
+ source?: unknown;
165
+ conditions?: unknown;
166
+ }, fallbackGeneratedAt: string): IntegrityReport;
167
+ /**
168
+ * One statement per condition returning BOTH the total and the open subtotal, so
169
+ * the severity escalation and the displayed number come from a single read of the
170
+ * table (no second query that could see a different dataset).
171
+ */
172
+ export declare function buildSqliteIntegritySql(spec: IntegrityConditionSpec): string;
173
+ export interface PostgresIntegrityQuery {
174
+ sql: string;
175
+ params: unknown[];
176
+ }
177
+ /**
178
+ * Postgres equivalent of {@link buildSqliteIntegritySql} against the JSONB record
179
+ * table. Tombstones (`deleted_at IS NOT NULL`) are excluded on BOTH sides of the
180
+ * existence check, otherwise a deleted project would make every task that points
181
+ * at it look dangling (and a deleted task would be reported as a live orphan).
182
+ * `$N` scalar params only — the production driver is Bun.SQL, which cannot bind a
183
+ * JS array.
184
+ */
185
+ export declare function buildPostgresIntegritySql(spec: IntegrityConditionSpec, options: {
186
+ table: string;
187
+ service: string;
188
+ }): PostgresIntegrityQuery;
189
+ /** The only task fields a condition needs; anything else is ignored. */
190
+ export interface IntegrityTaskRow {
191
+ project_id?: string | null;
192
+ task_list_id?: string | null;
193
+ status?: string | null;
194
+ }
195
+ /** The only task-list fields a condition needs. */
196
+ export interface IntegrityTaskListRow {
197
+ project_id?: string | null;
198
+ }
199
+ export interface IntegrityRowSets {
200
+ tasks?: Iterable<IntegrityTaskRow>;
201
+ taskLists?: Iterable<IntegrityTaskListRow>;
202
+ /** Ids of REGISTERED projects — the dangling-reference denominator. */
203
+ projectIds?: ReadonlySet<string>;
204
+ /** Ids of REGISTERED task lists. */
205
+ taskListIds?: ReadonlySet<string>;
206
+ }
207
+ /**
208
+ * Evaluate one condition over already-materialized rows, using the SAME semantics
209
+ * as the two SQL renderers: `missing` is null-or-empty, `dangling` is "set, but no
210
+ * row with exactly that id exists". Returns `null` when the caller did not supply
211
+ * the rows (or the registered-id set) the condition needs — an unmeasurable
212
+ * condition must not come back as a zero.
213
+ */
214
+ export declare function measureIntegrityRows(spec: IntegrityConditionSpec, sets: IntegrityRowSets): IntegrityMeasurement | null;
215
+ //# sourceMappingURL=integrity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrity.d.ts","sourceRoot":"","sources":["../../src/lib/integrity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEnE,mEAAmE;AACnE,eAAO,MAAM,8BAA8B,uBAAuB,CAAC;AAQnE,eAAO,MAAM,kBAAkB,EAAE,SAAS,UAAU,EACkC,CAAC;AAEvF,gCAAgC;AAChC,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,WAAW,CAAC;AACnD,4CAA4C;AAC5C,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,WAAW,CAAC;AACtD;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAAG,UAAU,CAAC;AAC5D,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,OAAO,CAAC;AAEjD,mFAAmF;AACnF,MAAM,MAAM,eAAe,GACvB,QAAQ,GACR,UAAU,GACV,kBAAkB,GAClB,aAAa,GACb,aAAa;AACf,qFAAqF;GACnF,gBAAgB,GAChB,YAAY,CAAC;AAEjB,MAAM,WAAW,sBAAsB;IACrC,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,cAAc,CAAC;IAC9C,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC;;;;OAIG;IACH,QAAQ,CAAC,aAAa,EAAE,iBAAiB,CAAC;IAC1C,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,kEAAkE;IAClE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAAS,sBAAsB,EA6DxD,CAAC;AAEX,qFAAqF;AACrF,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,sBAAsB,CAIrE;AAED,uDAAuD;AACvD,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,sBAAsB,CAAC;IAC7B,yEAAyE;IACzE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,+EAA+E;IAC/E,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,kFAAkF;IAClF,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACnC,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,eAAe,CAAC;IACxB,oEAAoE;IACpE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,2EAA2E;IAC3E,EAAE,EAAE,OAAO,CAAC;IACZ,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,EAAE,kBAAkB,EAAE,CAAC;IACjC,OAAO,EAAE,gBAAgB,CAAC;CAC3B;AAED,yCAAyC;AACzC,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,sBAAsB,EAC5B,WAAW,EAAE,oBAAoB,GAChC,iBAAiB,CAInB;AAYD,iFAAiF;AACjF,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,sBAAsB,EAC5B,WAAW,EAAE,oBAAoB,GAChC,MAAM,CASR;AAED,oDAAoD;AACpD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,sBAAsB,EAC5B,WAAW,EAAE,oBAAoB,EACjC,MAAM,EAAE,eAAe,GACtB,kBAAkB,CAcpB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,sBAAsB,EAC5B,MAAM,EAAE,MAAM,GACb,kBAAkB,CAepB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,SAAS,kBAAkB,EAAE,GAAG,gBAAgB,CAa9F;AAED,yEAAyE;AACzE,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,kBAAkB,EAAE,EAChC,WAAW,EAAE,MAAM,GAClB,eAAe,CAajB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,0BAA0B,CACxC,GAAG,EAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,EACvE,mBAAmB,EAAE,MAAM,GAC1B,eAAe,CAsCjB;AAcD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,sBAAsB,GAAG,MAAM,CAY5E;AAUD,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,EAAE,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,sBAAsB,EAC5B,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC1C,sBAAsB,CAkBxB;AAID,wEAAwE;AACxE,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,mDAAmD;AACnD,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IAC3C,uEAAuE;IACvE,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,oCAAoC;IACpC,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACnC;AASD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,sBAAsB,EAC5B,IAAI,EAAE,gBAAgB,GACrB,oBAAoB,GAAG,IAAI,CAuB7B"}
@@ -1,5 +1,5 @@
1
1
  import { TODOS_STORAGE_ENV } from "../storage/index.js";
2
- import type { CanonicalTodosRdsConfig, TodosStorageEnv, TodosStorageMode } from "../storage/index.js";
2
+ import type { CanonicalTodosRdsConfig, TodosStorageBackend, TodosStorageEnv } from "../storage/index.js";
3
3
  export interface NativeStorageEnvStatus {
4
4
  name: string;
5
5
  active_name: string;
@@ -8,7 +8,7 @@ export interface NativeStorageEnvStatus {
8
8
  export interface NativeStorageStatus {
9
9
  ok: boolean;
10
10
  service: "todos";
11
- mode: TodosStorageMode;
11
+ mode: TodosStorageBackend;
12
12
  local_default: boolean;
13
13
  remote_enabled: boolean;
14
14
  database: {
@@ -1 +1 @@
1
- {"version":3,"file":"native-storage-status.d.ts","sourceRoot":"","sources":["../../src/lib/native-storage-status.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EAOlB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,uBAAuB,EAAsB,eAAe,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE1H,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,gBAAgB,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE;QACR,UAAU,EAAE,OAAO,CAAC;QACpB,QAAQ,EAAE,UAAU,GAAG,IAAI,CAAC;QAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;QACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB,CAAC;IACF,cAAc,EAAE;QACd,UAAU,EAAE,OAAO,CAAC;QACpB,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;QACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,mBAAmB,EAAE,OAAO,CAAC;QAC7B,gBAAgB,EAAE,OAAO,CAAC;KAC3B,CAAC;IACF,IAAI,EAAE;QACJ,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,GAAG,EAAE,MAAM,CAAC,MAAM,OAAO,iBAAiB,EAAE,sBAAsB,CAAC,CAAC;IACpE,SAAS,EAAE,uBAAuB,CAAC;IACnC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,IAAI,CAAC;IACd,UAAU,EAAE,IAAI,CAAC;IACjB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,EAAE;QACR,QAAQ,EAAE,OAAO,CAAC;QAClB,UAAU,EAAE,OAAO,CAAC;QACpB,UAAU,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;IACF,cAAc,EAAE;QACd,QAAQ,EAAE,OAAO,CAAC;QAClB,UAAU,EAAE,OAAO,CAAC;QACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB,CAAC;IACF,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,4BAA4B;IAC3C,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAgB,sBAAsB,CAAC,GAAG,GAAE,eAA6B,GAAG,mBAAmB,CA2D9F;AAED,wBAAgB,wBAAwB,CACtC,GAAG,GAAE,eAA6B,EAClC,OAAO,GAAE,4BAAiC,GACzC,qBAAqB,CA4BvB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAU1E"}
1
+ {"version":3,"file":"native-storage-status.d.ts","sourceRoot":"","sources":["../../src/lib/native-storage-status.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EAQlB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,uBAAuB,EAAE,mBAAmB,EAAsB,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE7H,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE;QACR,UAAU,EAAE,OAAO,CAAC;QACpB,QAAQ,EAAE,UAAU,GAAG,IAAI,CAAC;QAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;QACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB,CAAC;IACF,cAAc,EAAE;QACd,UAAU,EAAE,OAAO,CAAC;QACpB,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;QACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,mBAAmB,EAAE,OAAO,CAAC;QAC7B,gBAAgB,EAAE,OAAO,CAAC;KAC3B,CAAC;IACF,IAAI,EAAE;QACJ,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,GAAG,EAAE,MAAM,CAAC,MAAM,OAAO,iBAAiB,EAAE,sBAAsB,CAAC,CAAC;IACpE,SAAS,EAAE,uBAAuB,CAAC;IACnC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,IAAI,CAAC;IACd,UAAU,EAAE,IAAI,CAAC;IACjB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,EAAE;QACR,QAAQ,EAAE,OAAO,CAAC;QAClB,UAAU,EAAE,OAAO,CAAC;QACpB,UAAU,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;IACF,cAAc,EAAE;QACd,QAAQ,EAAE,OAAO,CAAC;QAClB,UAAU,EAAE,OAAO,CAAC;QACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB,CAAC;IACF,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,4BAA4B;IAC3C,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAgB,sBAAsB,CAAC,GAAG,GAAE,eAA6B,GAAG,mBAAmB,CA2D9F;AAED,wBAAgB,wBAAwB,CACtC,GAAG,GAAE,eAA6B,EAClC,OAAO,GAAE,4BAAiC,GACzC,qBAAqB,CA4BvB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAU1E"}
@@ -1 +1 @@
1
- {"version":3,"file":"release-compatibility.d.ts","sourceRoot":"","sources":["../../src/lib/release-compatibility.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,0CAA0C,IAAI,CAAC;AAE5D,MAAM,MAAM,0BAA0B,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEzE,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,0BAA0B,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,0BAA0B;IACzC,cAAc,EAAE,CAAC,CAAC;IAClB,UAAU,EAAE,IAAI,CAAC;IACjB,UAAU,EAAE,IAAI,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC;IACF,UAAU,EAAE;QACV,aAAa,EAAE,MAAM,CAAC;QACtB,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;KAC3C,CAAC;IACF,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IACF,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IACF,YAAY,EAAE;QACZ,OAAO,EAAE,cAAc,CAAC;QACxB,OAAO,EAAE,KAAK,CAAC;QACf,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IACF,SAAS,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,MAAM,EAAE,yBAAyB,EAAE,CAAC;IACpC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,EAAE,EAAE,OAAO,CAAC;CACb;AAED,MAAM,WAAW,uCAAuC;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAiMD,wBAAgB,gCAAgC,CAC9C,OAAO,GAAE,uCAA4C,GACpD,0BAA0B,CAoF5B;AAED,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,0BAA0B,GAAG,MAAM,CAwB7F"}
1
+ {"version":3,"file":"release-compatibility.d.ts","sourceRoot":"","sources":["../../src/lib/release-compatibility.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,0CAA0C,IAAI,CAAC;AAE5D,MAAM,MAAM,0BAA0B,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEzE,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,0BAA0B,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,0BAA0B;IACzC,cAAc,EAAE,CAAC,CAAC;IAClB,UAAU,EAAE,IAAI,CAAC;IACjB,UAAU,EAAE,IAAI,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC;IACF,UAAU,EAAE;QACV,aAAa,EAAE,MAAM,CAAC;QACtB,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;KAC3C,CAAC;IACF,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IACF,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IACF,YAAY,EAAE;QACZ,OAAO,EAAE,cAAc,CAAC;QACxB,OAAO,EAAE,KAAK,CAAC;QACf,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IACF,SAAS,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,MAAM,EAAE,yBAAyB,EAAE,CAAC;IACpC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,EAAE,EAAE,OAAO,CAAC;CACb;AAED,MAAM,WAAW,uCAAuC;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAiMD,wBAAgB,gCAAgC,CAC9C,OAAO,GAAE,uCAA4C,GACpD,0BAA0B,CAwF5B;AAED,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,0BAA0B,GAAG,MAAM,CAwB7F"}
@@ -5,6 +5,16 @@ export interface FindDuplicateTasksOptions {
5
5
  limit?: number;
6
6
  include_archived?: boolean;
7
7
  }
8
+ export interface TaskDuplicateProbe {
9
+ title: string;
10
+ description?: string | null;
11
+ metadata?: Record<string, unknown>;
12
+ }
13
+ export interface TaskDuplicateMatch {
14
+ task: Task;
15
+ score: number;
16
+ reasons: string[];
17
+ }
8
18
  export interface DuplicateTaskCandidate {
9
19
  primary_task: Task;
10
20
  duplicate_task: Task;
@@ -41,6 +51,11 @@ export interface TaskMergeResult {
41
51
  moved: TaskMergeMovedCounts;
42
52
  }
43
53
  export declare function findDuplicateTasks(options?: FindDuplicateTasksOptions, db?: Database): DuplicateTaskCandidate[];
54
+ /**
55
+ * Score a prospective task against local tasks without inserting a temporary
56
+ * row. Producer previews use this to report likely duplicates before apply.
57
+ */
58
+ export declare function findDuplicateTasksForInput(input: TaskDuplicateProbe, options?: FindDuplicateTasksOptions, db?: Database): TaskDuplicateMatch[];
44
59
  export declare function mergeDuplicateTask(input: MergeDuplicateTaskInput, db?: Database): TaskMergeResult;
45
60
  export declare const findDuplicateCandidates: typeof findDuplicateTasks;
46
61
  //# sourceMappingURL=task-dedupe.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"task-dedupe.d.ts","sourceRoot":"","sources":["../../src/lib/task-dedupe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAM9C,MAAM,WAAW,yBAAyB;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,IAAI,CAAC;IACnB,cAAc,EAAE,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,IAAI,CAAC;IACnB,kBAAkB,EAAE,IAAI,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,oBAAoB,CAAC;CAC7B;AAqND,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,yBAA8B,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,sBAAsB,EAAE,CAqBnH;AAqJD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,eAAe,CAiGjG;AAGD,eAAO,MAAM,uBAAuB,2BAAqB,CAAC"}
1
+ {"version":3,"file":"task-dedupe.d.ts","sourceRoot":"","sources":["../../src/lib/task-dedupe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAM9C,MAAM,WAAW,yBAAyB;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,IAAI,CAAC;IACnB,cAAc,EAAE,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,IAAI,CAAC;IACnB,kBAAkB,EAAE,IAAI,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,oBAAoB,CAAC;CAC7B;AA2ND,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,yBAA8B,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,sBAAsB,EAAE,CAqBnH;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,kBAAkB,EACzB,OAAO,GAAE,yBAA8B,EACvC,EAAE,CAAC,EAAE,QAAQ,GACZ,kBAAkB,EAAE,CActB;AAqJD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,eAAe,CAiGjG;AAGD,eAAO,MAAM,uBAAuB,2BAAqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA4GpE,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAO9E;AA0HD,wBAAgB,WAAW,cAsD1B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA6GpE,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAO9E;AAmID,wBAAgB,WAAW,cAsD1B"}