@cleocode/core 2026.9.16 → 2026.9.18

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 (236) hide show
  1. package/dist/changesets/parser.d.ts.map +1 -1
  2. package/dist/changesets/parser.js +67 -0
  3. package/dist/changesets/parser.js.map +1 -1
  4. package/dist/crypto/credentials.d.ts +128 -26
  5. package/dist/crypto/credentials.d.ts.map +1 -1
  6. package/dist/crypto/credentials.js +183 -142
  7. package/dist/crypto/credentials.js.map +1 -1
  8. package/dist/docs/export-document.js +14705 -12949
  9. package/dist/docs/export-document.js.map +3 -3
  10. package/dist/doctor/index.d.ts +1 -1
  11. package/dist/doctor/index.d.ts.map +1 -1
  12. package/dist/doctor/index.js +1 -1
  13. package/dist/doctor/index.js.map +1 -1
  14. package/dist/doctor/nexus-schema-residency.d.ts +1 -1
  15. package/dist/doctor/nexus-schema-residency.d.ts.map +1 -1
  16. package/dist/doctor/nexus-schema-residency.js +1 -0
  17. package/dist/doctor/nexus-schema-residency.js.map +1 -1
  18. package/dist/doctor/project-identity.d.ts +124 -0
  19. package/dist/doctor/project-identity.d.ts.map +1 -0
  20. package/dist/doctor/project-identity.js +307 -0
  21. package/dist/doctor/project-identity.js.map +1 -0
  22. package/dist/doctor/superseded-store.d.ts +8 -0
  23. package/dist/doctor/superseded-store.d.ts.map +1 -1
  24. package/dist/doctor/superseded-store.js +48 -3
  25. package/dist/doctor/superseded-store.js.map +1 -1
  26. package/dist/init.d.ts +7 -0
  27. package/dist/init.d.ts.map +1 -1
  28. package/dist/init.js +17 -2
  29. package/dist/init.js.map +1 -1
  30. package/dist/internal.d.ts +6 -3
  31. package/dist/internal.d.ts.map +1 -1
  32. package/dist/internal.js +4 -2
  33. package/dist/internal.js.map +1 -1
  34. package/dist/llm/credentials-store.d.ts +10 -0
  35. package/dist/llm/credentials-store.d.ts.map +1 -1
  36. package/dist/llm/credentials-store.js +7 -1
  37. package/dist/llm/credentials-store.js.map +1 -1
  38. package/dist/llm/plugin-facade.js +13368 -1550
  39. package/dist/llm/plugin-facade.js.map +3 -3
  40. package/dist/nexus/analyze-orchestrator.d.ts +20 -3
  41. package/dist/nexus/analyze-orchestrator.d.ts.map +1 -1
  42. package/dist/nexus/analyze-orchestrator.js +210 -16
  43. package/dist/nexus/analyze-orchestrator.js.map +1 -1
  44. package/dist/nexus/assessment-store.d.ts +86 -0
  45. package/dist/nexus/assessment-store.d.ts.map +1 -0
  46. package/dist/nexus/assessment-store.js +113 -0
  47. package/dist/nexus/assessment-store.js.map +1 -0
  48. package/dist/nexus/freshness.d.ts +131 -0
  49. package/dist/nexus/freshness.d.ts.map +1 -0
  50. package/dist/nexus/freshness.js +391 -0
  51. package/dist/nexus/freshness.js.map +1 -0
  52. package/dist/nexus/graph-manifest.d.ts +88 -0
  53. package/dist/nexus/graph-manifest.d.ts.map +1 -0
  54. package/dist/nexus/graph-manifest.js +114 -0
  55. package/dist/nexus/graph-manifest.js.map +1 -0
  56. package/dist/nexus/knowledge.d.ts +21 -1
  57. package/dist/nexus/knowledge.d.ts.map +1 -1
  58. package/dist/nexus/knowledge.js +74 -37
  59. package/dist/nexus/knowledge.js.map +1 -1
  60. package/dist/nexus/path-map.d.ts +55 -0
  61. package/dist/nexus/path-map.d.ts.map +1 -0
  62. package/dist/nexus/path-map.js +87 -0
  63. package/dist/nexus/path-map.js.map +1 -0
  64. package/dist/nexus/projects-clean.d.ts +21 -28
  65. package/dist/nexus/projects-clean.d.ts.map +1 -1
  66. package/dist/nexus/projects-clean.js +168 -85
  67. package/dist/nexus/projects-clean.js.map +1 -1
  68. package/dist/nexus/query.d.ts.map +1 -1
  69. package/dist/nexus/query.js +3 -2
  70. package/dist/nexus/query.js.map +1 -1
  71. package/dist/nexus/registry-hygiene.d.ts +70 -0
  72. package/dist/nexus/registry-hygiene.d.ts.map +1 -0
  73. package/dist/nexus/registry-hygiene.js +113 -0
  74. package/dist/nexus/registry-hygiene.js.map +1 -0
  75. package/dist/nexus/registry.d.ts +2 -2
  76. package/dist/nexus/registry.d.ts.map +1 -1
  77. package/dist/nexus/registry.js +48 -12
  78. package/dist/nexus/registry.js.map +1 -1
  79. package/dist/paths.d.ts +26 -0
  80. package/dist/paths.d.ts.map +1 -1
  81. package/dist/paths.js +99 -6
  82. package/dist/paths.js.map +1 -1
  83. package/dist/release/index.d.ts +1 -1
  84. package/dist/release/index.d.ts.map +1 -1
  85. package/dist/release/index.js.map +1 -1
  86. package/dist/release/plan.d.ts +84 -2
  87. package/dist/release/plan.d.ts.map +1 -1
  88. package/dist/release/plan.js +61 -14
  89. package/dist/release/plan.js.map +1 -1
  90. package/dist/release/pr-evidence.d.ts +81 -1
  91. package/dist/release/pr-evidence.d.ts.map +1 -1
  92. package/dist/release/pr-evidence.js +149 -9
  93. package/dist/release/pr-evidence.js.map +1 -1
  94. package/dist/render/nexus/graph/index.d.ts.map +1 -1
  95. package/dist/render/nexus/graph/index.js +8 -0
  96. package/dist/render/nexus/graph/index.js.map +1 -1
  97. package/dist/scaffold/ensure-config.d.ts +12 -3
  98. package/dist/scaffold/ensure-config.d.ts.map +1 -1
  99. package/dist/scaffold/ensure-config.js +61 -38
  100. package/dist/scaffold/ensure-config.js.map +1 -1
  101. package/dist/scaffold/project-identity.d.ts +136 -0
  102. package/dist/scaffold/project-identity.d.ts.map +1 -0
  103. package/dist/scaffold/project-identity.js +225 -0
  104. package/dist/scaffold/project-identity.js.map +1 -0
  105. package/dist/selfimprove/fix-gen.js +13319 -1556
  106. package/dist/selfimprove/fix-gen.js.map +3 -3
  107. package/dist/store/agent-api-key.d.ts +114 -0
  108. package/dist/store/agent-api-key.d.ts.map +1 -0
  109. package/dist/store/agent-api-key.js +136 -0
  110. package/dist/store/agent-api-key.js.map +1 -0
  111. package/dist/store/agent-registry-accessor.d.ts +4 -2
  112. package/dist/store/agent-registry-accessor.d.ts.map +1 -1
  113. package/dist/store/agent-registry-accessor.js +39 -89
  114. package/dist/store/agent-registry-accessor.js.map +1 -1
  115. package/dist/store/api-key-kdf.d.ts +7 -0
  116. package/dist/store/api-key-kdf.d.ts.map +1 -1
  117. package/dist/store/api-key-kdf.js +7 -0
  118. package/dist/store/api-key-kdf.js.map +1 -1
  119. package/dist/store/backup-crypto.d.ts +49 -0
  120. package/dist/store/backup-crypto.d.ts.map +1 -1
  121. package/dist/store/backup-crypto.js +154 -0
  122. package/dist/store/backup-crypto.js.map +1 -1
  123. package/dist/store/credential-transfer.d.ts +303 -0
  124. package/dist/store/credential-transfer.d.ts.map +1 -0
  125. package/dist/store/credential-transfer.js +774 -0
  126. package/dist/store/credential-transfer.js.map +1 -0
  127. package/dist/store/exodus/column-transforms.d.ts +79 -4
  128. package/dist/store/exodus/column-transforms.d.ts.map +1 -1
  129. package/dist/store/exodus/column-transforms.js +121 -4
  130. package/dist/store/exodus/column-transforms.js.map +1 -1
  131. package/dist/store/exodus/index.d.ts +1 -0
  132. package/dist/store/exodus/index.d.ts.map +1 -1
  133. package/dist/store/exodus/index.js +1 -0
  134. package/dist/store/exodus/index.js.map +1 -1
  135. package/dist/store/exodus/migrate.d.ts +17 -1
  136. package/dist/store/exodus/migrate.d.ts.map +1 -1
  137. package/dist/store/exodus/migrate.js +155 -33
  138. package/dist/store/exodus/migrate.js.map +1 -1
  139. package/dist/store/exodus/on-open.d.ts +14 -0
  140. package/dist/store/exodus/on-open.d.ts.map +1 -1
  141. package/dist/store/exodus/on-open.js +115 -6
  142. package/dist/store/exodus/on-open.js.map +1 -1
  143. package/dist/store/exodus/reconcile.d.ts +103 -0
  144. package/dist/store/exodus/reconcile.d.ts.map +1 -0
  145. package/dist/store/exodus/reconcile.js +728 -0
  146. package/dist/store/exodus/reconcile.js.map +1 -0
  147. package/dist/store/exodus/recovery.d.ts.map +1 -1
  148. package/dist/store/exodus/recovery.js +14 -2
  149. package/dist/store/exodus/recovery.js.map +1 -1
  150. package/dist/store/exodus/runtime-targets.d.ts +39 -0
  151. package/dist/store/exodus/runtime-targets.d.ts.map +1 -0
  152. package/dist/store/exodus/runtime-targets.js +63 -0
  153. package/dist/store/exodus/runtime-targets.js.map +1 -0
  154. package/dist/store/exodus/table-name-map.d.ts.map +1 -1
  155. package/dist/store/exodus/table-name-map.js +5 -0
  156. package/dist/store/exodus/table-name-map.js.map +1 -1
  157. package/dist/store/exodus/table-order.d.ts +35 -0
  158. package/dist/store/exodus/table-order.d.ts.map +1 -0
  159. package/dist/store/exodus/table-order.js +62 -0
  160. package/dist/store/exodus/table-order.js.map +1 -0
  161. package/dist/store/exodus/verify-migration.d.ts +4 -1
  162. package/dist/store/exodus/verify-migration.d.ts.map +1 -1
  163. package/dist/store/exodus/verify-migration.js +142 -10
  164. package/dist/store/exodus/verify-migration.js.map +1 -1
  165. package/dist/store/global-salt.d.ts +16 -0
  166. package/dist/store/global-salt.d.ts.map +1 -1
  167. package/dist/store/global-salt.js +22 -7
  168. package/dist/store/global-salt.js.map +1 -1
  169. package/dist/store/legacy-tasks-lineage.d.ts +86 -0
  170. package/dist/store/legacy-tasks-lineage.d.ts.map +1 -0
  171. package/dist/store/legacy-tasks-lineage.js +285 -0
  172. package/dist/store/legacy-tasks-lineage.js.map +1 -0
  173. package/dist/store/migration-manager.d.ts +27 -0
  174. package/dist/store/migration-manager.d.ts.map +1 -1
  175. package/dist/store/migration-manager.js +63 -0
  176. package/dist/store/migration-manager.js.map +1 -1
  177. package/dist/store/portable-bundle-import.d.ts +117 -0
  178. package/dist/store/portable-bundle-import.d.ts.map +1 -0
  179. package/dist/store/portable-bundle-import.js +589 -0
  180. package/dist/store/portable-bundle-import.js.map +1 -0
  181. package/dist/store/portable-bundle-relocate.d.ts +66 -0
  182. package/dist/store/portable-bundle-relocate.d.ts.map +1 -0
  183. package/dist/store/portable-bundle-relocate.js +304 -0
  184. package/dist/store/portable-bundle-relocate.js.map +1 -0
  185. package/dist/store/portable-bundle-scan.d.ts +167 -0
  186. package/dist/store/portable-bundle-scan.d.ts.map +1 -0
  187. package/dist/store/portable-bundle-scan.js +569 -0
  188. package/dist/store/portable-bundle-scan.js.map +1 -0
  189. package/dist/store/portable-bundle.d.ts +146 -0
  190. package/dist/store/portable-bundle.d.ts.map +1 -0
  191. package/dist/store/portable-bundle.js +674 -0
  192. package/dist/store/portable-bundle.js.map +1 -0
  193. package/dist/store/regenerators.d.ts +3 -1
  194. package/dist/store/regenerators.d.ts.map +1 -1
  195. package/dist/store/regenerators.js +6 -2
  196. package/dist/store/regenerators.js.map +1 -1
  197. package/dist/store/schema/cleo-global/nexus.d.ts +98 -0
  198. package/dist/store/schema/cleo-global/nexus.d.ts.map +1 -1
  199. package/dist/store/schema/cleo-global/nexus.js +19 -0
  200. package/dist/store/schema/cleo-global/nexus.js.map +1 -1
  201. package/dist/store/schema/nexus-schema.d.ts +102 -0
  202. package/dist/store/schema/nexus-schema.d.ts.map +1 -1
  203. package/dist/store/schema/nexus-schema.js +24 -0
  204. package/dist/store/schema/nexus-schema.js.map +1 -1
  205. package/dist/store/split-brain-import.d.ts +176 -0
  206. package/dist/store/split-brain-import.d.ts.map +1 -0
  207. package/dist/store/split-brain-import.js +680 -0
  208. package/dist/store/split-brain-import.js.map +1 -0
  209. package/dist/store/sqlite.d.ts +29 -0
  210. package/dist/store/sqlite.d.ts.map +1 -1
  211. package/dist/store/sqlite.js +57 -5
  212. package/dist/store/sqlite.js.map +1 -1
  213. package/dist/system/health.d.ts.map +1 -1
  214. package/dist/system/health.js +30 -5
  215. package/dist/system/health.js.map +1 -1
  216. package/dist/tasks/complete.d.ts.map +1 -1
  217. package/dist/tasks/complete.js +5 -27
  218. package/dist/tasks/complete.js.map +1 -1
  219. package/dist/tasks/evidence.js +1 -1
  220. package/dist/tasks/evidence.js.map +1 -1
  221. package/dist/tasks/verification-policy.d.ts +55 -0
  222. package/dist/tasks/verification-policy.d.ts.map +1 -0
  223. package/dist/tasks/verification-policy.js +75 -0
  224. package/dist/tasks/verification-policy.js.map +1 -0
  225. package/dist/upgrade.d.ts.map +1 -1
  226. package/dist/upgrade.js +60 -0
  227. package/dist/upgrade.js.map +1 -1
  228. package/dist/validation/doctor/checks.d.ts +14 -0
  229. package/dist/validation/doctor/checks.d.ts.map +1 -1
  230. package/dist/validation/doctor/checks.js +33 -0
  231. package/dist/validation/doctor/checks.js.map +1 -1
  232. package/migrations/drizzle-cleo-global/20260924000000_t12354-project-paths/migration.sql +40 -0
  233. package/migrations/drizzle-nexus/20260924000000_t12315-nexus-parse-cache/migration.sql +21 -0
  234. package/package.json +13 -13
  235. package/templates/CLEO-INJECTION.md +3 -3
  236. package/templates/cleo-gitignore +7 -0
@@ -0,0 +1,176 @@
1
+ /**
2
+ * Split-brain import: bring the rows only one copy of a project store has
3
+ * into another copy, under new ids, without touching a single pre-existing
4
+ * row (T12329).
5
+ *
6
+ * ## The failure this repairs
7
+ *
8
+ * A project directory copied to a second path keeps its `project-info.json`
9
+ * and its `.cleo/cleo.db`. From then on, both copies write under one
10
+ * projectId. Both task allocators continue from the same counter, so the
11
+ * same `T####` names different work in each copy. Brain observations
12
+ * written in one copy never reach the other. Measured on cleocode, whose
13
+ * checkout was rsynced to `/home/keatonhoskins/cleocode` on 2026-09-14:
14
+ * T12188–T12202 exist in both stores with different titles, and 11
15
+ * observations exist only in `/home`.
16
+ *
17
+ * ## What counts as a source-only row
18
+ *
19
+ * The copies were one store until they diverged. The divergence point `T0` is
20
+ * the newest `created_at` among tasks present in BOTH stores with the SAME
21
+ * `created_at`. A source row absent from the target is imported only if it was
22
+ * written after `T0`. A source row written before `T0` was present in the
23
+ * target at divergence, so its absence there means the target deleted it (for
24
+ * example by session GC). Resurrecting it would undo the target's own history,
25
+ * so such rows are counted and reported, never imported.
26
+ *
27
+ * A task whose id exists in both stores with a different `created_at` is a
28
+ * COLLISION: the same id holds different work. Every imported task gets a newly
29
+ * minted id: `max(sequence counter, max stored id) + k`, the same lower bound
30
+ * `allocateNextTaskId` uses. The live allocator therefore continues past the
31
+ * imported ids with no counter write. Child rows follow their task (acceptance
32
+ * criteria, AC history, dependencies, relations, labels, work history, commit
33
+ * links, audit rows). Brain rows and sessions keep their ids, which are
34
+ * time+random and absent in the target by construction. A brain or session id
35
+ * that collides is reported as unresolved, not imported.
36
+ *
37
+ * ## What is deliberately not imported (reported with counts)
38
+ *
39
+ * - telemetry: usage, retrieval and token logs;
40
+ * - derived data the runtime rebuilds: the brain page graph and embeddings;
41
+ * - parent-owned child-projection AC rows on a parent that is NOT imported. A
42
+ * rebuild rewrites the parent's whole AC set, and this import never modifies
43
+ * a pre-existing row. The runtime rebuild owns it;
44
+ * - rows in any other table that reference an imported task. They are counted
45
+ * per table so coverage is never silently partial.
46
+ *
47
+ * ## Provenance
48
+ *
49
+ * Every imported entity gets a `tasks_audit_log` row: action
50
+ * `split_brain_import`, the original id, the new id, the source store path and
51
+ * label. Every imported task also carries a note naming its original id. The
52
+ * returned receipt lists the full id map.
53
+ *
54
+ * The target is written in ONE `BEGIN IMMEDIATE` transaction, or not at all
55
+ * (`dryRun`, the default in the CLI). The source is opened read-only.
56
+ *
57
+ * @task T12329
58
+ */
59
+ /** A SQLite value as node:sqlite returns it. */
60
+ type SqlValue = string | number | bigint | Uint8Array | null;
61
+ /** Options for {@link importSplitBrain}. */
62
+ export interface SplitBrainImportOptions {
63
+ /** Store that holds the extra rows. Opened read-only. */
64
+ readonly sourcePath: string;
65
+ /** Store that receives them. Opened read-only when `dryRun`. */
66
+ readonly targetPath: string;
67
+ /** Plan only; write nothing. */
68
+ readonly dryRun?: boolean;
69
+ /** Human label for the source, recorded in provenance (e.g. its checkout path). */
70
+ readonly sourceLabel?: string;
71
+ /**
72
+ * Override the detected divergence point (ISO 8601). Only rows written
73
+ * after it are candidates.
74
+ */
75
+ readonly divergedAfter?: string;
76
+ /**
77
+ * Task under which provenance rows for non-task entities are recorded
78
+ * (`tasks_audit_log.task_id` is NOT NULL). It must exist in the target.
79
+ * Required to apply an import that includes non-task rows.
80
+ */
81
+ readonly provenanceTaskId?: string;
82
+ }
83
+ /** One imported (or planned) entity. */
84
+ export interface SplitBrainMapping {
85
+ /** Table the row lives in. */
86
+ readonly table: string;
87
+ /** Id in the source store. */
88
+ readonly originalId: string;
89
+ /** Id in the target store (equal to `originalId` when kept). */
90
+ readonly newId: string;
91
+ /** Why it is imported. */
92
+ readonly reason: 'collision' | 'source-only';
93
+ }
94
+ /** Rows found in the source but not imported, with the reason. */
95
+ export interface SplitBrainSkip {
96
+ /** Table. */
97
+ readonly table: string;
98
+ /** Row count. */
99
+ readonly count: number;
100
+ /** Why these rows are not imported. */
101
+ readonly reason: string;
102
+ }
103
+ /** Receipt of {@link importSplitBrain}. */
104
+ export interface SplitBrainReport {
105
+ /** `true` when nothing was written. */
106
+ readonly dryRun: boolean;
107
+ /** Source store path. */
108
+ readonly sourcePath: string;
109
+ /** Target store path. */
110
+ readonly targetPath: string;
111
+ /** Divergence point used (ISO 8601). */
112
+ readonly divergedAfter: string;
113
+ /** Tasks identical in both stores (same id and created_at). */
114
+ readonly sharedTasks: number;
115
+ /** Imported (or, in a dry run, planned) entities with their id mapping. */
116
+ readonly mappings: readonly SplitBrainMapping[];
117
+ /** Rows written (or planned) per table, including child rows. */
118
+ readonly rowsByTable: Readonly<Record<string, number>>;
119
+ /** Rows found in the source that are not imported, with reasons. */
120
+ readonly skipped: readonly SplitBrainSkip[];
121
+ /** Rows that could not be imported safely, with reasons. */
122
+ readonly unresolved: readonly SplitBrainSkip[];
123
+ }
124
+ /**
125
+ * Parse CLEO's mixed timestamp formats to epoch ms.
126
+ *
127
+ * `datetime('now')` writes `YYYY-MM-DD HH:MM:SS` with no zone, meaning UTC.
128
+ * Comparing that text against ISO text is wrong within a day (`' '` sorts
129
+ * before `'T'`), so every comparison goes through this function.
130
+ *
131
+ * @param value - Stored timestamp.
132
+ * @returns Epoch milliseconds, or `null` when absent or unparseable.
133
+ */
134
+ export declare function parseStoreTimestamp(value: SqlValue | undefined): number | null;
135
+ /**
136
+ * Import the source-only rows of a split-brain store pair into the target.
137
+ *
138
+ * @param options - Source, target, dry-run flag and provenance label.
139
+ * @returns The receipt: divergence point, id map, per-table counts, and
140
+ * every skipped or unresolved row group with its reason.
141
+ * @throws {Error} When the stores share no task (they are not two copies of
142
+ * one store), or when the target write fails. A failed write is rolled
143
+ * back entirely.
144
+ *
145
+ * @example
146
+ * ```ts
147
+ * const plan = importSplitBrain({ sourcePath: home, targetPath: live, dryRun: true });
148
+ * ```
149
+ */
150
+ export declare function importSplitBrain(options: SplitBrainImportOptions): SplitBrainReport;
151
+ /** Per-table result of {@link verifyPreexistingRows}. */
152
+ export interface PreservedRowsCheck {
153
+ /** Table name. */
154
+ readonly table: string;
155
+ /** Rows in the snapshot taken before the import. */
156
+ readonly before: number;
157
+ /** Rows after the import. */
158
+ readonly after: number;
159
+ /** Snapshot rows with no byte-identical row after the import (must be 0). */
160
+ readonly missingOrChanged: number;
161
+ }
162
+ /**
163
+ * Prove that an import only ADDED rows: every row of every ordinary table in
164
+ * the pre-import snapshot still exists, byte-identical, in the post-import
165
+ * store.
166
+ *
167
+ * FTS virtual tables and their shadow tables are excluded. They are derived,
168
+ * and an FTS5 index legitimately rewrites its segments on insert.
169
+ *
170
+ * @param beforePath - Snapshot of the target taken before the import.
171
+ * @param afterPath - The target after the import.
172
+ * @returns One entry per table; every `missingOrChanged` must be 0.
173
+ */
174
+ export declare function verifyPreexistingRows(beforePath: string, afterPath: string): PreservedRowsCheck[];
175
+ export {};
176
+ //# sourceMappingURL=split-brain-import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"split-brain-import.d.ts","sourceRoot":"","sources":["../../src/store/split-brain-import.ts"],"names":[],"mappings":"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"}