@cleocode/core 2026.9.25 → 2026.9.26

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 (208) hide show
  1. package/dist/admin/import-tasks.d.ts.map +1 -1
  2. package/dist/admin/import-tasks.js +5 -2
  3. package/dist/admin/import-tasks.js.map +1 -1
  4. package/dist/admin/import.d.ts.map +1 -1
  5. package/dist/admin/import.js +7 -2
  6. package/dist/admin/import.js.map +1 -1
  7. package/dist/build-provenance.json +2 -2
  8. package/dist/cloud/index.d.ts +1 -0
  9. package/dist/cloud/index.d.ts.map +1 -1
  10. package/dist/cloud/index.js +1 -0
  11. package/dist/cloud/index.js.map +1 -1
  12. package/dist/cloud/nexus-auth.d.ts +26 -1
  13. package/dist/cloud/nexus-auth.d.ts.map +1 -1
  14. package/dist/cloud/nexus-auth.js +61 -32
  15. package/dist/cloud/nexus-auth.js.map +1 -1
  16. package/dist/cloud/nexus-credentials.js +2 -2
  17. package/dist/cloud/nexus-credentials.js.map +1 -1
  18. package/dist/cloud/nexus-device.d.ts +809 -0
  19. package/dist/cloud/nexus-device.d.ts.map +1 -0
  20. package/dist/cloud/nexus-device.js +1680 -0
  21. package/dist/cloud/nexus-device.js.map +1 -0
  22. package/dist/cloud/nexus-enrol.d.ts +210 -0
  23. package/dist/cloud/nexus-enrol.d.ts.map +1 -0
  24. package/dist/cloud/nexus-enrol.js +1023 -0
  25. package/dist/cloud/nexus-enrol.js.map +1 -0
  26. package/dist/cloud/nexus-link.d.ts +3 -0
  27. package/dist/cloud/nexus-link.d.ts.map +1 -1
  28. package/dist/cloud/nexus-link.js +38 -4
  29. package/dist/cloud/nexus-link.js.map +1 -1
  30. package/dist/cloud/signing.d.ts +20 -0
  31. package/dist/cloud/signing.d.ts.map +1 -1
  32. package/dist/cloud/signing.js +14 -0
  33. package/dist/cloud/signing.js.map +1 -1
  34. package/dist/crypto/credentials.d.ts +61 -0
  35. package/dist/crypto/credentials.d.ts.map +1 -1
  36. package/dist/crypto/credentials.js +154 -58
  37. package/dist/crypto/credentials.js.map +1 -1
  38. package/dist/docs/export-document.js +830 -190
  39. package/dist/docs/export-document.js.map +3 -3
  40. package/dist/doctor/dependency-cycles.d.ts +41 -0
  41. package/dist/doctor/dependency-cycles.d.ts.map +1 -0
  42. package/dist/doctor/dependency-cycles.js +39 -0
  43. package/dist/doctor/dependency-cycles.js.map +1 -0
  44. package/dist/doctor/index.d.ts +2 -0
  45. package/dist/doctor/index.d.ts.map +1 -1
  46. package/dist/doctor/index.js +1 -0
  47. package/dist/doctor/index.js.map +1 -1
  48. package/dist/doctor/row-identity.d.ts +11 -0
  49. package/dist/doctor/row-identity.d.ts.map +1 -1
  50. package/dist/doctor/row-identity.js +67 -9
  51. package/dist/doctor/row-identity.js.map +1 -1
  52. package/dist/error-catalog.d.ts.map +1 -1
  53. package/dist/error-catalog.js +4 -0
  54. package/dist/error-catalog.js.map +1 -1
  55. package/dist/error-registry.d.ts.map +1 -1
  56. package/dist/error-registry.js +8 -0
  57. package/dist/error-registry.js.map +1 -1
  58. package/dist/llm/plugin-facade.js +857 -217
  59. package/dist/llm/plugin-facade.js.map +3 -3
  60. package/dist/nexus/workspace.d.ts.map +1 -1
  61. package/dist/nexus/workspace.js +54 -4
  62. package/dist/nexus/workspace.js.map +1 -1
  63. package/dist/orchestrate/lifecycle-ops.js +1 -1
  64. package/dist/orchestrate/lifecycle-ops.js.map +1 -1
  65. package/dist/orchestrate/pivot.d.ts.map +1 -1
  66. package/dist/orchestrate/pivot.js +4 -2
  67. package/dist/orchestrate/pivot.js.map +1 -1
  68. package/dist/orchestrate/query-ops.d.ts.map +1 -1
  69. package/dist/orchestrate/query-ops.js +3 -3
  70. package/dist/orchestrate/query-ops.js.map +1 -1
  71. package/dist/orchestrate/spawn-ops.js +1 -1
  72. package/dist/orchestrate/spawn-ops.js.map +1 -1
  73. package/dist/orchestration/index.js +1 -1
  74. package/dist/orchestration/index.js.map +1 -1
  75. package/dist/orchestration/lead-rollup.d.ts.map +1 -1
  76. package/dist/orchestration/lead-rollup.js +3 -3
  77. package/dist/orchestration/lead-rollup.js.map +1 -1
  78. package/dist/orchestration/parallel.js +1 -1
  79. package/dist/orchestration/parallel.js.map +1 -1
  80. package/dist/orchestration/wave-topic.d.ts +4 -2
  81. package/dist/orchestration/wave-topic.d.ts.map +1 -1
  82. package/dist/orchestration/wave-topic.js +6 -4
  83. package/dist/orchestration/wave-topic.js.map +1 -1
  84. package/dist/orchestration/waves.d.ts +2 -1
  85. package/dist/orchestration/waves.d.ts.map +1 -1
  86. package/dist/orchestration/waves.js +4 -3
  87. package/dist/orchestration/waves.js.map +1 -1
  88. package/dist/phases/index.d.ts.map +1 -1
  89. package/dist/phases/index.js +4 -2
  90. package/dist/phases/index.js.map +1 -1
  91. package/dist/selfimprove/fix-gen.js +856 -216
  92. package/dist/selfimprove/fix-gen.js.map +3 -3
  93. package/dist/session/engine-ops.d.ts.map +1 -1
  94. package/dist/session/engine-ops.js +77 -49
  95. package/dist/session/engine-ops.js.map +1 -1
  96. package/dist/sessions/focus-state-store.d.ts +69 -23
  97. package/dist/sessions/focus-state-store.d.ts.map +1 -1
  98. package/dist/sessions/focus-state-store.js +113 -27
  99. package/dist/sessions/focus-state-store.js.map +1 -1
  100. package/dist/sessions/handoff.js +1 -1
  101. package/dist/sessions/handoff.js.map +1 -1
  102. package/dist/sessions/index.d.ts.map +1 -1
  103. package/dist/sessions/index.js +24 -13
  104. package/dist/sessions/index.js.map +1 -1
  105. package/dist/sessions/terminal-identity.d.ts +165 -17
  106. package/dist/sessions/terminal-identity.d.ts.map +1 -1
  107. package/dist/sessions/terminal-identity.js +341 -32
  108. package/dist/sessions/terminal-identity.js.map +1 -1
  109. package/dist/skills/orchestrator/startup.js +2 -2
  110. package/dist/skills/orchestrator/startup.js.map +1 -1
  111. package/dist/snapshot/index.d.ts +4 -0
  112. package/dist/snapshot/index.d.ts.map +1 -1
  113. package/dist/snapshot/index.js +50 -3
  114. package/dist/snapshot/index.js.map +1 -1
  115. package/dist/store/db-helpers.d.ts +15 -2
  116. package/dist/store/db-helpers.d.ts.map +1 -1
  117. package/dist/store/db-helpers.js +84 -3
  118. package/dist/store/db-helpers.js.map +1 -1
  119. package/dist/store/dependency-cycles.d.ts +164 -0
  120. package/dist/store/dependency-cycles.d.ts.map +1 -0
  121. package/dist/store/dependency-cycles.js +360 -0
  122. package/dist/store/dependency-cycles.js.map +1 -0
  123. package/dist/store/display-id-alias.d.ts +93 -37
  124. package/dist/store/display-id-alias.d.ts.map +1 -1
  125. package/dist/store/display-id-alias.js +590 -115
  126. package/dist/store/display-id-alias.js.map +1 -1
  127. package/dist/store/dual-scope-db.d.ts.map +1 -1
  128. package/dist/store/dual-scope-db.js +34 -7
  129. package/dist/store/dual-scope-db.js.map +1 -1
  130. package/dist/store/exodus/migrate.d.ts.map +1 -1
  131. package/dist/store/exodus/migrate.js +8 -1
  132. package/dist/store/exodus/migrate.js.map +1 -1
  133. package/dist/store/global-salt.d.ts +35 -0
  134. package/dist/store/global-salt.d.ts.map +1 -1
  135. package/dist/store/global-salt.js +136 -16
  136. package/dist/store/global-salt.js.map +1 -1
  137. package/dist/store/migration-sqlite.d.ts.map +1 -1
  138. package/dist/store/migration-sqlite.js +19 -11
  139. package/dist/store/migration-sqlite.js.map +1 -1
  140. package/dist/store/portable-bundle-scan.d.ts.map +1 -1
  141. package/dist/store/portable-bundle-scan.js +6 -0
  142. package/dist/store/portable-bundle-scan.js.map +1 -1
  143. package/dist/store/row-identity-registry.d.ts.map +1 -1
  144. package/dist/store/row-identity-registry.js +11 -3
  145. package/dist/store/row-identity-registry.js.map +1 -1
  146. package/dist/store/row-identity.d.ts +91 -1
  147. package/dist/store/row-identity.d.ts.map +1 -1
  148. package/dist/store/row-identity.js +276 -7
  149. package/dist/store/row-identity.js.map +1 -1
  150. package/dist/store/safety-data-accessor.d.ts +3 -2
  151. package/dist/store/safety-data-accessor.d.ts.map +1 -1
  152. package/dist/store/safety-data-accessor.js +5 -2
  153. package/dist/store/safety-data-accessor.js.map +1 -1
  154. package/dist/store/session-store.d.ts +63 -3
  155. package/dist/store/session-store.d.ts.map +1 -1
  156. package/dist/store/session-store.js +121 -8
  157. package/dist/store/session-store.js.map +1 -1
  158. package/dist/store/split-brain-import.d.ts.map +1 -1
  159. package/dist/store/split-brain-import.js +36 -0
  160. package/dist/store/split-brain-import.js.map +1 -1
  161. package/dist/store/sqlite-data-accessor.d.ts +50 -3
  162. package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
  163. package/dist/store/sqlite-data-accessor.js +246 -13
  164. package/dist/store/sqlite-data-accessor.js.map +1 -1
  165. package/dist/store/tasks-sqlite.d.ts.map +1 -1
  166. package/dist/store/tasks-sqlite.js +14 -2
  167. package/dist/store/tasks-sqlite.js.map +1 -1
  168. package/dist/store/umbrella-data-accessor.d.ts +3 -2
  169. package/dist/store/umbrella-data-accessor.d.ts.map +1 -1
  170. package/dist/store/umbrella-data-accessor.js +5 -2
  171. package/dist/store/umbrella-data-accessor.js.map +1 -1
  172. package/dist/system/health.d.ts +2 -0
  173. package/dist/system/health.d.ts.map +1 -1
  174. package/dist/system/health.js +54 -0
  175. package/dist/system/health.js.map +1 -1
  176. package/dist/task-work/index.d.ts.map +1 -1
  177. package/dist/task-work/index.js +9 -6
  178. package/dist/task-work/index.js.map +1 -1
  179. package/dist/tasks/analyze.d.ts.map +1 -1
  180. package/dist/tasks/analyze.js +3 -2
  181. package/dist/tasks/analyze.js.map +1 -1
  182. package/dist/tasks/evidence.d.ts +19 -1
  183. package/dist/tasks/evidence.d.ts.map +1 -1
  184. package/dist/tasks/evidence.js +79 -18
  185. package/dist/tasks/evidence.js.map +1 -1
  186. package/dist/tasks/infer-add-params.js +1 -1
  187. package/dist/tasks/infer-add-params.js.map +1 -1
  188. package/dist/tasks/task-context.d.ts.map +1 -1
  189. package/dist/tasks/task-context.js +3 -1
  190. package/dist/tasks/task-context.js.map +1 -1
  191. package/dist/tasks/task-import.d.ts.map +1 -1
  192. package/dist/tasks/task-import.js +11 -3
  193. package/dist/tasks/task-import.js.map +1 -1
  194. package/dist/tasks/task-next.d.ts +5 -1
  195. package/dist/tasks/task-next.d.ts.map +1 -1
  196. package/dist/tasks/task-next.js +7 -2
  197. package/dist/tasks/task-next.js.map +1 -1
  198. package/dist/validation/engine-ops.d.ts.map +1 -1
  199. package/dist/validation/engine-ops.js +3 -2
  200. package/dist/validation/engine-ops.js.map +1 -1
  201. package/dist/workgraph/scaffold-apply.d.ts.map +1 -1
  202. package/dist/workgraph/scaffold-apply.js +14 -5
  203. package/dist/workgraph/scaffold-apply.js.map +1 -1
  204. package/migrations/drizzle-cleo-project/20260930160000_t12886-dependency-cycle-guard/migration.sql +76 -0
  205. package/migrations/drizzle-cleo-project/20260930160000_t12886-dependency-cycle-guard/revert.sql +7 -0
  206. package/package.json +13 -13
  207. package/templates/CLEO-INJECTION.md +2 -2
  208. package/templates/CLEO-REFERENCE.md +1 -1
@@ -0,0 +1,360 @@
1
+ /**
2
+ * Dependency-cycle guard support for `tasks_task_dependencies` (T12886).
3
+ *
4
+ * The guard itself is the pair of BEFORE triggers created by the
5
+ * `drizzle-cleo-project/20260930160000_t12886-dependency-cycle-guard`
6
+ * migration: every writer, raw SQL included, is refused with
7
+ * {@link DEPENDENCY_CYCLE_CODE}. A trigger message must be a literal, so it
8
+ * cannot say WHICH cycle. This module supplies that part:
9
+ *
10
+ * - {@link rethrowDependencyCycle} turns the trigger abort into a
11
+ * {@link CleoError} that names the cycle (`T1 → T2 → T3 → T1`) and says
12
+ * how to fix it. The write chokepoints call it.
13
+ * - {@link detectDependencyCycles} finds cycles already stored (edges written
14
+ * before the guard existed) and proposes the edges to remove, for
15
+ * `cleo doctor dep-cycles`. It never writes.
16
+ *
17
+ * An edge `{ taskId, dependsOn }` means "taskId depends on dependsOn"; a cycle
18
+ * is printed in that direction, each arrow reading "depends on".
19
+ *
20
+ * @module
21
+ * @task T12886
22
+ */
23
+ import { ExitCode } from '@cleocode/contracts';
24
+ import { CleoError } from '../errors.js';
25
+ import * as schema from './tasks-schema.js';
26
+ /** Stable error code raised by the dependency-cycle triggers. */
27
+ export const DEPENDENCY_CYCLE_CODE = 'E_TASK_DEPENDENCY_CYCLE';
28
+ /** Render a cycle as `T1 → T2 → T1`. */
29
+ export function formatDependencyCycle(cycle) {
30
+ return cycle.join(' → ');
31
+ }
32
+ function buildAdjacency(edges) {
33
+ const adjacency = new Map();
34
+ for (const { taskId, dependsOn } of edges) {
35
+ const next = adjacency.get(taskId);
36
+ if (next)
37
+ next.push(dependsOn);
38
+ else
39
+ adjacency.set(taskId, [dependsOn]);
40
+ }
41
+ for (const next of adjacency.values())
42
+ next.sort();
43
+ return adjacency;
44
+ }
45
+ /**
46
+ * Shortest dependency path from `from` to `to` (breadth-first), or `null`.
47
+ * Each task is visited once, so the walk is bounded by the number of tasks.
48
+ */
49
+ function shortestPath(adjacency, from, to) {
50
+ if (from === to)
51
+ return [from];
52
+ const previous = new Map([[from, from]]);
53
+ const queue = [from];
54
+ for (let head = 0; head < queue.length; head++) {
55
+ const id = queue[head];
56
+ for (const next of adjacency.get(id) ?? []) {
57
+ if (previous.has(next))
58
+ continue;
59
+ previous.set(next, id);
60
+ if (next === to) {
61
+ const path = [to];
62
+ let cursor = id;
63
+ while (cursor !== from) {
64
+ path.push(cursor);
65
+ cursor = previous.get(cursor);
66
+ }
67
+ path.push(from);
68
+ return path.reverse();
69
+ }
70
+ queue.push(next);
71
+ }
72
+ }
73
+ return null;
74
+ }
75
+ /**
76
+ * The cycle that `edge` would close over `existing`, or `null` when it closes none.
77
+ *
78
+ * @param existing - Edges already stored.
79
+ * @param edge - The edge being added.
80
+ * @returns The cycle in "depends on" order, starting and ending at `edge.taskId`.
81
+ *
82
+ * @example
83
+ * ```ts
84
+ * findClosedCycle([{ taskId: 'T2', dependsOn: 'T1' }], { taskId: 'T1', dependsOn: 'T2' });
85
+ * // => ['T1', 'T2', 'T1']
86
+ * ```
87
+ */
88
+ export function findClosedCycle(existing, edge) {
89
+ if (edge.taskId === edge.dependsOn)
90
+ return [edge.taskId, edge.taskId];
91
+ const path = shortestPath(buildAdjacency(existing), edge.dependsOn, edge.taskId);
92
+ return path ? [edge.taskId, ...path] : null;
93
+ }
94
+ /**
95
+ * Build the error for an edge that closes `cycle`.
96
+ *
97
+ * @param edge - The refused edge.
98
+ * @param cycle - The cycle it closes, from {@link findClosedCycle}.
99
+ * @returns A {@link CleoError} naming the cycle, with a fix hint.
100
+ */
101
+ export function dependencyCycleError(edge, cycle) {
102
+ const self = edge.taskId === edge.dependsOn;
103
+ const message = self
104
+ ? `${DEPENDENCY_CYCLE_CODE}: task ${edge.taskId} cannot depend on itself`
105
+ : `${DEPENDENCY_CYCLE_CODE}: ${edge.taskId} depends on ${edge.dependsOn} would close a dependency cycle: ${formatDependencyCycle(cycle)}`;
106
+ // The last existing edge of the cycle, the one that points back at taskId.
107
+ const closing = cycle.length >= 3 ? cycle[cycle.length - 2] : undefined;
108
+ const fix = self
109
+ ? `Drop ${edge.taskId} from its own --depends list`
110
+ : `Drop this dependency, or first remove another edge of the cycle, e.g. ` +
111
+ `cleo update ${closing} --remove-depends ${edge.taskId}`;
112
+ return new CleoError(ExitCode.CIRCULAR_REFERENCE, message, {
113
+ fix,
114
+ details: {
115
+ field: 'depends',
116
+ actual: edge.dependsOn,
117
+ taskId: edge.taskId,
118
+ cycle: [...cycle],
119
+ },
120
+ });
121
+ }
122
+ /**
123
+ * True when `err` is the dependency-cycle trigger abort. Drizzle wraps the
124
+ * SQLite error in a `DrizzleQueryError` whose own message is the failed SQL,
125
+ * so the `cause` chain is searched too.
126
+ */
127
+ export function isDependencyCycleAbort(err) {
128
+ for (let e = err, depth = 0; e instanceof Error && depth < 8; depth++) {
129
+ if (e.message.includes(DEPENDENCY_CYCLE_CODE))
130
+ return true;
131
+ e = e.cause;
132
+ }
133
+ return false;
134
+ }
135
+ /**
136
+ * Read every stored dependency edge.
137
+ *
138
+ * @param db - Drizzle handle on the project store.
139
+ * @returns All rows of `tasks_task_dependencies`.
140
+ */
141
+ export function readDependencyEdges(db) {
142
+ return db
143
+ .select({
144
+ taskId: schema.taskDependencies.taskId,
145
+ dependsOn: schema.taskDependencies.dependsOn,
146
+ })
147
+ .from(schema.taskDependencies)
148
+ .all();
149
+ }
150
+ /**
151
+ * Rethrow a write error, naming the cycle when it is the cycle-guard abort.
152
+ *
153
+ * Call it from the catch of a statement that inserted `attempted`. SQLite
154
+ * rolls back the aborted statement, so the stored edges are the state before
155
+ * it; the attempted edges are replayed over them in order to find the one
156
+ * that closes a cycle.
157
+ *
158
+ * @param db - Drizzle handle the statement ran on.
159
+ * @param err - The caught error.
160
+ * @param attempted - The edges the statement tried to insert, in order.
161
+ * @returns Never; always throws.
162
+ */
163
+ export function rethrowDependencyCycle(db, err, attempted) {
164
+ if (!isDependencyCycleAbort(err))
165
+ throw err;
166
+ const edges = readDependencyEdges(db);
167
+ for (const edge of attempted) {
168
+ const cycle = findClosedCycle(edges, edge);
169
+ if (cycle)
170
+ throw dependencyCycleError(edge, cycle);
171
+ edges.push(edge);
172
+ }
173
+ throw err;
174
+ }
175
+ function skippedEdge(edge, cycle) {
176
+ return {
177
+ edge,
178
+ cycle,
179
+ message: `skipped dependency ${edge.taskId} → ${edge.dependsOn}: it would close the dependency ` +
180
+ `cycle ${formatDependencyCycle(cycle)} (${DEPENDENCY_CYCLE_CODE})`,
181
+ };
182
+ }
183
+ /**
184
+ * Insert one edge (ignoring an exact duplicate); when the cycle guard refuses
185
+ * it, leave it out and say why instead of failing.
186
+ *
187
+ * For bulk importers that must keep a record and its other edges when one
188
+ * edge is refused (legacy JSON import). Any other error propagates.
189
+ *
190
+ * @param db - Drizzle handle on the project store.
191
+ * @param edge - The edge to insert.
192
+ * @returns `null` when written (or already present), else what was skipped.
193
+ */
194
+ export function insertDependencyEdgeOrSkipCycle(db, edge) {
195
+ try {
196
+ db.insert(schema.taskDependencies).values(edge).onConflictDoNothing().run();
197
+ return null;
198
+ }
199
+ catch (err) {
200
+ if (!isDependencyCycleAbort(err))
201
+ throw err;
202
+ const cycle = findClosedCycle(readDependencyEdges(db), edge) ?? [edge.taskId, edge.taskId];
203
+ return skippedEdge(edge, cycle);
204
+ }
205
+ }
206
+ /**
207
+ * Split planned edges into the ones that can be written and the ones that
208
+ * would close a cycle, replaying them in order over `existing`. Deterministic:
209
+ * of two edges that close a cycle together, the LATER one is dropped. Pure.
210
+ *
211
+ * @param existing - Edges already stored in the target.
212
+ * @param planned - Edges to add, in plan order.
213
+ * @returns The dropped edges with their cycles; every other planned edge is safe.
214
+ */
215
+ export function dropCycleClosingEdges(existing, planned) {
216
+ const edges = [...existing];
217
+ const seen = new Set(existing.map((e) => `${e.taskId}\u0000${e.dependsOn}`));
218
+ const dropped = [];
219
+ for (const edge of planned) {
220
+ const key = `${edge.taskId}\u0000${edge.dependsOn}`;
221
+ if (seen.has(key))
222
+ continue;
223
+ const cycle = findClosedCycle(edges, edge);
224
+ if (cycle) {
225
+ dropped.push(skippedEdge(edge, cycle));
226
+ continue;
227
+ }
228
+ edges.push(edge);
229
+ seen.add(key);
230
+ }
231
+ return dropped;
232
+ }
233
+ /**
234
+ * Find every stored dependency cycle and a repair plan. Pure: never writes.
235
+ *
236
+ * Tarjan's algorithm (iterative, so a long chain cannot overflow the stack)
237
+ * finds the strongly connected components; any component with more than one
238
+ * task, or a task that depends on itself, holds a cycle. The repair plan is
239
+ * the back edges of a depth-first traversal, whose removal leaves the graph
240
+ * acyclic.
241
+ *
242
+ * @param edges - The stored edges.
243
+ * @returns Cyclic components and the edges to remove.
244
+ *
245
+ * @example
246
+ * ```ts
247
+ * const report = detectDependencyCycles(readDependencyEdges(db));
248
+ * for (const r of report.repairPlan) console.log(r.command);
249
+ * ```
250
+ */
251
+ export function detectDependencyCycles(edges) {
252
+ const adjacency = buildAdjacency(edges);
253
+ const nodes = [...new Set(edges.flatMap((e) => [e.taskId, e.dependsOn]))].sort();
254
+ // Tarjan SCC, iterative.
255
+ const index = new Map();
256
+ const low = new Map();
257
+ const onStack = new Set();
258
+ const stack = [];
259
+ const components = [];
260
+ let counter = 0;
261
+ for (const root of nodes) {
262
+ if (index.has(root))
263
+ continue;
264
+ const frames = [{ id: root, next: 0 }];
265
+ index.set(root, counter);
266
+ low.set(root, counter++);
267
+ stack.push(root);
268
+ onStack.add(root);
269
+ while (frames.length > 0) {
270
+ const frame = frames[frames.length - 1];
271
+ const successors = adjacency.get(frame.id) ?? [];
272
+ if (frame.next < successors.length) {
273
+ const w = successors[frame.next++];
274
+ if (!index.has(w)) {
275
+ index.set(w, counter);
276
+ low.set(w, counter++);
277
+ stack.push(w);
278
+ onStack.add(w);
279
+ frames.push({ id: w, next: 0 });
280
+ }
281
+ else if (onStack.has(w)) {
282
+ low.set(frame.id, Math.min(low.get(frame.id), index.get(w)));
283
+ }
284
+ continue;
285
+ }
286
+ frames.pop();
287
+ const parent = frames[frames.length - 1];
288
+ if (parent) {
289
+ low.set(parent.id, Math.min(low.get(parent.id), low.get(frame.id)));
290
+ }
291
+ if (low.get(frame.id) === index.get(frame.id)) {
292
+ const component = [];
293
+ let w;
294
+ do {
295
+ w = stack.pop();
296
+ onStack.delete(w);
297
+ component.push(w);
298
+ } while (w !== frame.id);
299
+ components.push(component.sort());
300
+ }
301
+ }
302
+ }
303
+ const cyclic = components.filter((c) => c.length > 1 || (adjacency.get(c[0]) ?? []).includes(c[0]));
304
+ const reported = cyclic
305
+ .map((tasks) => {
306
+ const start = tasks[0];
307
+ const members = new Set(tasks);
308
+ const inside = new Map(tasks.map((t) => [t, (adjacency.get(t) ?? []).filter((n) => members.has(n))]));
309
+ // A cycle through `start`: shortest path from a successor back to it.
310
+ let cycle = [start, start];
311
+ for (const next of inside.get(start) ?? []) {
312
+ const back = shortestPath(inside, next, start);
313
+ if (back) {
314
+ cycle = [start, ...back];
315
+ break;
316
+ }
317
+ }
318
+ return { tasks, cycle };
319
+ })
320
+ .sort((a, b) => a.tasks[0].localeCompare(b.tasks[0]));
321
+ // Repair plan: back edges of one DFS over the cyclic components.
322
+ const repairPlan = [];
323
+ const state = new Map();
324
+ for (const { tasks } of reported) {
325
+ const members = new Set(tasks);
326
+ for (const root of tasks) {
327
+ if (state.has(root))
328
+ continue;
329
+ const frames = [{ id: root, next: 0 }];
330
+ const path = [root];
331
+ state.set(root, 'active');
332
+ while (frames.length > 0) {
333
+ const frame = frames[frames.length - 1];
334
+ const successors = (adjacency.get(frame.id) ?? []).filter((n) => members.has(n));
335
+ if (frame.next < successors.length) {
336
+ const w = successors[frame.next++];
337
+ const seen = state.get(w);
338
+ if (seen === undefined) {
339
+ state.set(w, 'active');
340
+ frames.push({ id: w, next: 0 });
341
+ path.push(w);
342
+ }
343
+ else if (seen === 'active') {
344
+ repairPlan.push({
345
+ edge: { taskId: frame.id, dependsOn: w },
346
+ command: `cleo update ${frame.id} --remove-depends ${w}`,
347
+ breaks: [...path.slice(path.indexOf(w)), w],
348
+ });
349
+ }
350
+ continue;
351
+ }
352
+ state.set(frame.id, 'done');
353
+ frames.pop();
354
+ path.pop();
355
+ }
356
+ }
357
+ }
358
+ return { edgeCount: edges.length, components: reported, repairPlan };
359
+ }
360
+ //# sourceMappingURL=dependency-cycles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-cycles.js","sourceRoot":"","sources":["../../src/store/dependency-cycles.ts"],"names":[],"mappings":"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"}
@@ -71,6 +71,7 @@
71
71
  */
72
72
  import type { DatabaseSync } from 'node:sqlite';
73
73
  import { type TaskClaimGuard } from '@cleocode/contracts';
74
+ import type { Hlc as HlcWire } from '@cleocode/contracts/cloud';
74
75
  import { type QuarantineRow } from './sqlite-data-accessor.js';
75
76
  /** Physical name of the display-id alias table. */
76
77
  export declare const DISPLAY_ID_ALIAS_TABLE = "tasks_display_id_aliases";
@@ -79,41 +80,33 @@ export declare const UID_ALIAS_TABLE = "tasks_uid_aliases";
79
80
  /** Physical name of the identity quarantine (local-only). */
80
81
  export declare const QUARANTINE_TABLE = "tasks_identity_quarantine";
81
82
  /** Why a display id was displaced. */
82
- export type DisplayIdAliasReason = 'collision-remint' | 'superseded-remint' | 'split-brain-import' | 'manual';
83
+ export type DisplayIdAliasReason = 'collision-remint' | 'superseded-remint'
84
+ /** The display id a re-mint op assigned (the portable re-mint record, T12800). */
85
+ | 'remint-assigned' | 'split-brain-import' | 'manual';
83
86
  /**
84
- * A hybrid logical clock value (T12342 owns the clock; this module needs only
85
- * its total order and its physical time). Encoded as
86
- * `<physical ms, 15 digits>.<counter, 6 digits>.<node>` so that string order
87
- * is HLC order.
88
- */
89
- export interface Hlc {
90
- readonly physicalMs: number;
91
- readonly counter: number;
92
- readonly node: string;
93
- }
94
- /**
95
- * Encode an HLC value.
96
- *
97
- * @param hlc - The value.
98
- * @returns Its sortable string form.
99
- */
100
- export declare function encodeHlc(hlc: Hlc): string;
101
- /**
102
- * Parse an encoded HLC value.
103
- *
104
- * @param value - Encoded HLC.
105
- * @returns The value.
106
- * @throws Error when the value is not an encoded HLC.
107
- */
108
- export declare function parseHlc(value: string): Hlc;
109
- /**
110
- * Total order of two encoded HLC values.
87
+ * Total order of two encoded HLC values (`Hlc` wire strings).
111
88
  *
112
89
  * @param a - One value.
113
90
  * @param b - The other.
114
91
  * @returns Negative, zero or positive.
92
+ * @throws HlcError when a value is not an encoded HLC.
93
+ */
94
+ export declare function compareHlc(a: HlcWire, b: HlcWire): number;
95
+ /** The replica id a pre-HLC value carries: none issued it. */
96
+ export declare const PRE_HLC_REPLICA = "00000000-0000-0000-0000-000000000000";
97
+ /**
98
+ * The collision HLC of two rows that have no creation HLC (written before the
99
+ * change journal, T12342): the later of their two BIRTHS, at counter 0, from
100
+ * no replica ({@link PRE_HLC_REPLICA}). Every replica derives the same value
101
+ * from the rows' synced births; it only anchors the authority schedule
102
+ * ({@link remintAuthority}), never a clock (HLC never reads a uid's time).
103
+ *
104
+ * @param birthMsA - One row's birth, epoch ms.
105
+ * @param birthMsB - The other's.
106
+ * @returns An encoded HLC.
107
+ * @task T12802
115
108
  */
116
- export declare function compareHlc(a: string, b: string): number;
109
+ export declare function collisionHlcFromBirths(birthMsA: number, birthMsB: number): HlcWire;
117
110
  /**
118
111
  * Of two rows that carry the same display id, the one that must be re-minted:
119
112
  * the greater uid. Every replica picks the same one for the same pair, and for
@@ -265,7 +258,12 @@ export interface RemintReceipt extends RemintOp {
265
258
  /** Held rows placed because the re-mint freed their id. */
266
259
  readonly released: readonly HeldRowKey[];
267
260
  }
268
- /** The applied re-mint record of a row (meta key → JSON). */
261
+ /**
262
+ * The winning re-mint of a row: the op with the greatest HLC. It is DERIVED
263
+ * from the row's `remint-assigned` display aliases, which are portable (they
264
+ * sync with the row), so a replica that lost local state, or never had it,
265
+ * reaches the same answer (T12800).
266
+ */
269
267
  interface RemintRecord {
270
268
  readonly newId: string;
271
269
  readonly hlc: string;
@@ -335,20 +333,56 @@ export declare function applyRemintOp(db: DatabaseSync, op: RemintOp): ApplyRemi
335
333
  export type WireValue = string | number | null;
336
334
  /** A reference on the wire: the referenced row's uid and birth fingerprint. */
337
335
  export interface WireRef {
338
- readonly uid: string;
339
- /** `null` for a natural target (its uid is a pure function; no fingerprint). */
336
+ /**
337
+ * The referenced row's uid; `null` when the SENDER could not find the row
338
+ * its local key names and knows no uid for it.
339
+ */
340
+ readonly uid: string | null;
341
+ /**
342
+ * The referenced row's birth fingerprint. A minted target is only ever
343
+ * matched on uid AND fingerprint, so a reference without one never matches
344
+ * a row (T12798 review). `null` for a natural target (its uid is a pure
345
+ * function; no fingerprint).
346
+ */
340
347
  readonly birthFp: string | null;
348
+ /**
349
+ * The sender had the reference but no longer has the row it names (deleted
350
+ * there). The receiver uses the row when it still has it (uid and
351
+ * fingerprint), else applies the table's `gone` rule instead of waiting
352
+ * for a row that will never arrive.
353
+ */
354
+ readonly gone?: true;
341
355
  }
356
+ /**
357
+ * Version of the wire row format. v2 (T12798) carries no local key of
358
+ * another row in `values`; a row without it (or older) came from a build
359
+ * whose values hold raw local keys, and is held (`unsupported-wire`) rather
360
+ * than applied or silently stripped.
361
+ */
362
+ export declare const WIRE_VERSION = 2;
342
363
  /** An incoming row (the merge engine, T12344, builds these from the outbox). */
343
364
  export interface WireRow {
365
+ /** {@link WIRE_VERSION} of the sender (absent: a v1 sender). */
366
+ readonly version?: number;
344
367
  readonly table: string;
345
368
  readonly uid: string;
346
369
  /** Birth fingerprint (minted tables); `null` for natural rows. */
347
370
  readonly birthFp: string | null;
348
- /** Column values. Reference columns are replaced by resolving {@link refs}. */
371
+ /**
372
+ * Column values, WITHOUT any local key of another row: reference columns,
373
+ * stored reference uids and the key columns they come from, and JSON arrays
374
+ * of ids travel as {@link refs} / {@link jsonRefs} and are resolved on the
375
+ * receiver (T12798).
376
+ */
349
377
  readonly values: Readonly<Record<string, WireValue>>;
350
- /** Reference column → the referenced row's identity, or `null` for NULL. */
378
+ /**
379
+ * Reference column → the referenced row's identity, or `null` for NULL.
380
+ * Also carries each stored reference uid column (`ac_uid`): its resolution
381
+ * sets both that column and the key column it comes from (`ac_id`).
382
+ */
351
383
  readonly refs?: Readonly<Record<string, WireRef | null>>;
384
+ /** JSON array of ids column → the identities of its elements, in order. */
385
+ readonly jsonRefs?: Readonly<Record<string, readonly WireRef[]>>;
352
386
  }
353
387
  /** Why a row is held. */
354
388
  export type HoldReason = QuarantineRow['reason'];
@@ -415,6 +449,21 @@ export type WireRefResolution = {
415
449
  * @returns Where it points.
416
450
  */
417
451
  export declare function resolveWireRef(db: DatabaseSync, table: string, ref: WireRef): WireRefResolution;
452
+ /** The project policy a received row is validated against (T12801). */
453
+ export interface ReceivePolicy {
454
+ /** The resolved `hierarchy.maxDepth` (config, `CLEO_HIERARCHY_MAX_DEPTH`, or the profile). */
455
+ readonly maxDepth: number;
456
+ }
457
+ /**
458
+ * Resolve the receive policy of a project from its configuration, exactly as
459
+ * a local task write does (`resolveHierarchyPolicy(loadConfig())`, so
460
+ * `hierarchy.maxDepth` and `CLEO_HIERARCHY_MAX_DEPTH` apply). The merge engine
461
+ * resolves it once per merge and passes it to {@link receiveRow}.
462
+ *
463
+ * @param cwd - Project root.
464
+ * @returns The policy.
465
+ */
466
+ export declare function loadReceivePolicy(cwd?: string): Promise<ReceivePolicy>;
418
467
  /**
419
468
  * Receive one row: place it, or hold it (module docs). The first receive
420
469
  * marks the store's identity values as shared, so the open pass never
@@ -422,10 +471,13 @@ export declare function resolveWireRef(db: DatabaseSync, table: string, ref: Wir
422
471
  *
423
472
  * @param db - Connection on the project `cleo.db`, inside the merge transaction.
424
473
  * @param wire - The incoming row.
474
+ * @param policy - The project's resolved receive policy ({@link loadReceivePolicy}).
475
+ * It stays in force on this connection, also for held rows released later;
476
+ * without one, the default hierarchy profile applies.
425
477
  * @returns What happened; a `held` result carries the collision for the caller
426
478
  * (the merge engine) to hand to its authority.
427
479
  */
428
- export declare function receiveRow(db: DatabaseSync, wire: WireRow): ReceiveResult;
480
+ export declare function receiveRow(db: DatabaseSync, wire: WireRow, policy?: ReceivePolicy): ReceiveResult;
429
481
  /**
430
482
  * Re-try the held rows now (after an op this module did not apply).
431
483
  *
@@ -495,13 +547,17 @@ export interface RekeyReceipt {
495
547
  * @param db - Connection on the project `cleo.db`.
496
548
  * @param table - Minted table of the row.
497
549
  * @param uid - The colliding uid.
498
- * @param loserBirthFp - The loser's birth fingerprint.
550
+ * @param collision - The loser's and the winner's birth fingerprints (the
551
+ * winner must be the smaller; T12801).
499
552
  * @param options - The authority and the HLC of the re-key.
500
553
  * @returns The receipt to publish, with its cascade and natural uids.
501
554
  * @throws CleoError when this replica has no row (uid, loserBirthFp), or the
502
555
  * fingerprint is not the loser's.
503
556
  */
504
- export declare function rekeyRowUid(db: DatabaseSync, table: string, uid: string, loserBirthFp: string, options?: Displacement): RekeyReceipt;
557
+ export declare function rekeyRowUid(db: DatabaseSync, table: string, uid: string, collision: {
558
+ readonly loserBirthFp: string;
559
+ readonly winnerBirthFp: string;
560
+ }, options?: Displacement): RekeyReceipt;
505
561
  /** Outcome of {@link applyRekey} for one row of the receipt. */
506
562
  export type RekeyApplyStatus = 'applied' | 'applied-held' | 'already-applied' | 'alias-only';
507
563
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"display-id-alias.d.ts","sourceRoot":"","sources":["../../src/store/display-id-alias.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"display-id-alias.d.ts","sourceRoot":"","sources":["../../src/store/display-id-alias.ts"],"names":[],"mappings":"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"}