@cleocode/core 2026.9.16 → 2026.9.17
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.
- package/dist/changesets/parser.d.ts.map +1 -1
- package/dist/changesets/parser.js +67 -0
- package/dist/changesets/parser.js.map +1 -1
- package/dist/crypto/credentials.d.ts +128 -26
- package/dist/crypto/credentials.d.ts.map +1 -1
- package/dist/crypto/credentials.js +183 -142
- package/dist/crypto/credentials.js.map +1 -1
- package/dist/docs/export-document.js +14705 -12949
- package/dist/docs/export-document.js.map +3 -3
- package/dist/doctor/index.d.ts +1 -1
- package/dist/doctor/index.d.ts.map +1 -1
- package/dist/doctor/index.js +1 -1
- package/dist/doctor/index.js.map +1 -1
- package/dist/doctor/nexus-schema-residency.d.ts +1 -1
- package/dist/doctor/nexus-schema-residency.d.ts.map +1 -1
- package/dist/doctor/nexus-schema-residency.js +1 -0
- package/dist/doctor/nexus-schema-residency.js.map +1 -1
- package/dist/doctor/project-identity.d.ts +124 -0
- package/dist/doctor/project-identity.d.ts.map +1 -0
- package/dist/doctor/project-identity.js +307 -0
- package/dist/doctor/project-identity.js.map +1 -0
- package/dist/doctor/superseded-store.d.ts +8 -0
- package/dist/doctor/superseded-store.d.ts.map +1 -1
- package/dist/doctor/superseded-store.js +48 -3
- package/dist/doctor/superseded-store.js.map +1 -1
- package/dist/init.d.ts +7 -0
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +17 -2
- package/dist/init.js.map +1 -1
- package/dist/internal.d.ts +5 -2
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +4 -2
- package/dist/internal.js.map +1 -1
- package/dist/llm/credentials-store.d.ts +10 -0
- package/dist/llm/credentials-store.d.ts.map +1 -1
- package/dist/llm/credentials-store.js +7 -1
- package/dist/llm/credentials-store.js.map +1 -1
- package/dist/llm/plugin-facade.js +13368 -1550
- package/dist/llm/plugin-facade.js.map +3 -3
- package/dist/nexus/analyze-orchestrator.d.ts +20 -3
- package/dist/nexus/analyze-orchestrator.d.ts.map +1 -1
- package/dist/nexus/analyze-orchestrator.js +159 -10
- package/dist/nexus/analyze-orchestrator.js.map +1 -1
- package/dist/nexus/assessment-store.d.ts +57 -0
- package/dist/nexus/assessment-store.d.ts.map +1 -0
- package/dist/nexus/assessment-store.js +73 -0
- package/dist/nexus/assessment-store.js.map +1 -0
- package/dist/nexus/freshness.d.ts +131 -0
- package/dist/nexus/freshness.d.ts.map +1 -0
- package/dist/nexus/freshness.js +391 -0
- package/dist/nexus/freshness.js.map +1 -0
- package/dist/nexus/graph-manifest.d.ts +88 -0
- package/dist/nexus/graph-manifest.d.ts.map +1 -0
- package/dist/nexus/graph-manifest.js +114 -0
- package/dist/nexus/graph-manifest.js.map +1 -0
- package/dist/nexus/knowledge.d.ts +21 -1
- package/dist/nexus/knowledge.d.ts.map +1 -1
- package/dist/nexus/knowledge.js +76 -37
- package/dist/nexus/knowledge.js.map +1 -1
- package/dist/nexus/path-map.d.ts +55 -0
- package/dist/nexus/path-map.d.ts.map +1 -0
- package/dist/nexus/path-map.js +87 -0
- package/dist/nexus/path-map.js.map +1 -0
- package/dist/nexus/projects-clean.d.ts +21 -28
- package/dist/nexus/projects-clean.d.ts.map +1 -1
- package/dist/nexus/projects-clean.js +168 -85
- package/dist/nexus/projects-clean.js.map +1 -1
- package/dist/nexus/query.d.ts.map +1 -1
- package/dist/nexus/query.js +3 -2
- package/dist/nexus/query.js.map +1 -1
- package/dist/nexus/registry-hygiene.d.ts +70 -0
- package/dist/nexus/registry-hygiene.d.ts.map +1 -0
- package/dist/nexus/registry-hygiene.js +113 -0
- package/dist/nexus/registry-hygiene.js.map +1 -0
- package/dist/nexus/registry.d.ts +2 -2
- package/dist/nexus/registry.d.ts.map +1 -1
- package/dist/nexus/registry.js +48 -12
- package/dist/nexus/registry.js.map +1 -1
- package/dist/paths.d.ts +26 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +99 -6
- package/dist/paths.js.map +1 -1
- package/dist/render/nexus/graph/index.d.ts.map +1 -1
- package/dist/render/nexus/graph/index.js +8 -0
- package/dist/render/nexus/graph/index.js.map +1 -1
- package/dist/scaffold/ensure-config.d.ts +12 -3
- package/dist/scaffold/ensure-config.d.ts.map +1 -1
- package/dist/scaffold/ensure-config.js +61 -38
- package/dist/scaffold/ensure-config.js.map +1 -1
- package/dist/scaffold/project-identity.d.ts +136 -0
- package/dist/scaffold/project-identity.d.ts.map +1 -0
- package/dist/scaffold/project-identity.js +225 -0
- package/dist/scaffold/project-identity.js.map +1 -0
- package/dist/selfimprove/fix-gen.js +13319 -1556
- package/dist/selfimprove/fix-gen.js.map +3 -3
- package/dist/store/agent-api-key.d.ts +114 -0
- package/dist/store/agent-api-key.d.ts.map +1 -0
- package/dist/store/agent-api-key.js +136 -0
- package/dist/store/agent-api-key.js.map +1 -0
- package/dist/store/agent-registry-accessor.d.ts +4 -2
- package/dist/store/agent-registry-accessor.d.ts.map +1 -1
- package/dist/store/agent-registry-accessor.js +39 -89
- package/dist/store/agent-registry-accessor.js.map +1 -1
- package/dist/store/api-key-kdf.d.ts +7 -0
- package/dist/store/api-key-kdf.d.ts.map +1 -1
- package/dist/store/api-key-kdf.js +7 -0
- package/dist/store/api-key-kdf.js.map +1 -1
- package/dist/store/backup-crypto.d.ts +49 -0
- package/dist/store/backup-crypto.d.ts.map +1 -1
- package/dist/store/backup-crypto.js +154 -0
- package/dist/store/backup-crypto.js.map +1 -1
- package/dist/store/credential-transfer.d.ts +303 -0
- package/dist/store/credential-transfer.d.ts.map +1 -0
- package/dist/store/credential-transfer.js +774 -0
- package/dist/store/credential-transfer.js.map +1 -0
- package/dist/store/exodus/column-transforms.d.ts +79 -4
- package/dist/store/exodus/column-transforms.d.ts.map +1 -1
- package/dist/store/exodus/column-transforms.js +121 -4
- package/dist/store/exodus/column-transforms.js.map +1 -1
- package/dist/store/exodus/index.d.ts +1 -0
- package/dist/store/exodus/index.d.ts.map +1 -1
- package/dist/store/exodus/index.js +1 -0
- package/dist/store/exodus/index.js.map +1 -1
- package/dist/store/exodus/migrate.d.ts +17 -1
- package/dist/store/exodus/migrate.d.ts.map +1 -1
- package/dist/store/exodus/migrate.js +155 -33
- package/dist/store/exodus/migrate.js.map +1 -1
- package/dist/store/exodus/on-open.d.ts +14 -0
- package/dist/store/exodus/on-open.d.ts.map +1 -1
- package/dist/store/exodus/on-open.js +115 -6
- package/dist/store/exodus/on-open.js.map +1 -1
- package/dist/store/exodus/reconcile.d.ts +103 -0
- package/dist/store/exodus/reconcile.d.ts.map +1 -0
- package/dist/store/exodus/reconcile.js +728 -0
- package/dist/store/exodus/reconcile.js.map +1 -0
- package/dist/store/exodus/recovery.d.ts.map +1 -1
- package/dist/store/exodus/recovery.js +14 -2
- package/dist/store/exodus/recovery.js.map +1 -1
- package/dist/store/exodus/runtime-targets.d.ts +39 -0
- package/dist/store/exodus/runtime-targets.d.ts.map +1 -0
- package/dist/store/exodus/runtime-targets.js +63 -0
- package/dist/store/exodus/runtime-targets.js.map +1 -0
- package/dist/store/exodus/table-name-map.d.ts.map +1 -1
- package/dist/store/exodus/table-name-map.js +5 -0
- package/dist/store/exodus/table-name-map.js.map +1 -1
- package/dist/store/exodus/table-order.d.ts +35 -0
- package/dist/store/exodus/table-order.d.ts.map +1 -0
- package/dist/store/exodus/table-order.js +62 -0
- package/dist/store/exodus/table-order.js.map +1 -0
- package/dist/store/exodus/verify-migration.d.ts +4 -1
- package/dist/store/exodus/verify-migration.d.ts.map +1 -1
- package/dist/store/exodus/verify-migration.js +142 -10
- package/dist/store/exodus/verify-migration.js.map +1 -1
- package/dist/store/global-salt.d.ts +16 -0
- package/dist/store/global-salt.d.ts.map +1 -1
- package/dist/store/global-salt.js +22 -7
- package/dist/store/global-salt.js.map +1 -1
- package/dist/store/legacy-tasks-lineage.d.ts +86 -0
- package/dist/store/legacy-tasks-lineage.d.ts.map +1 -0
- package/dist/store/legacy-tasks-lineage.js +285 -0
- package/dist/store/legacy-tasks-lineage.js.map +1 -0
- package/dist/store/migration-manager.d.ts +27 -0
- package/dist/store/migration-manager.d.ts.map +1 -1
- package/dist/store/migration-manager.js +63 -0
- package/dist/store/migration-manager.js.map +1 -1
- package/dist/store/portable-bundle-import.d.ts +117 -0
- package/dist/store/portable-bundle-import.d.ts.map +1 -0
- package/dist/store/portable-bundle-import.js +589 -0
- package/dist/store/portable-bundle-import.js.map +1 -0
- package/dist/store/portable-bundle-relocate.d.ts +66 -0
- package/dist/store/portable-bundle-relocate.d.ts.map +1 -0
- package/dist/store/portable-bundle-relocate.js +304 -0
- package/dist/store/portable-bundle-relocate.js.map +1 -0
- package/dist/store/portable-bundle-scan.d.ts +167 -0
- package/dist/store/portable-bundle-scan.d.ts.map +1 -0
- package/dist/store/portable-bundle-scan.js +569 -0
- package/dist/store/portable-bundle-scan.js.map +1 -0
- package/dist/store/portable-bundle.d.ts +146 -0
- package/dist/store/portable-bundle.d.ts.map +1 -0
- package/dist/store/portable-bundle.js +674 -0
- package/dist/store/portable-bundle.js.map +1 -0
- package/dist/store/regenerators.d.ts +3 -1
- package/dist/store/regenerators.d.ts.map +1 -1
- package/dist/store/regenerators.js +6 -2
- package/dist/store/regenerators.js.map +1 -1
- package/dist/store/schema/cleo-global/nexus.d.ts +98 -0
- package/dist/store/schema/cleo-global/nexus.d.ts.map +1 -1
- package/dist/store/schema/cleo-global/nexus.js +19 -0
- package/dist/store/schema/cleo-global/nexus.js.map +1 -1
- package/dist/store/schema/nexus-schema.d.ts +102 -0
- package/dist/store/schema/nexus-schema.d.ts.map +1 -1
- package/dist/store/schema/nexus-schema.js +24 -0
- package/dist/store/schema/nexus-schema.js.map +1 -1
- package/dist/store/split-brain-import.d.ts +176 -0
- package/dist/store/split-brain-import.d.ts.map +1 -0
- package/dist/store/split-brain-import.js +680 -0
- package/dist/store/split-brain-import.js.map +1 -0
- package/dist/store/sqlite.d.ts +29 -0
- package/dist/store/sqlite.d.ts.map +1 -1
- package/dist/store/sqlite.js +57 -5
- package/dist/store/sqlite.js.map +1 -1
- package/dist/system/health.d.ts.map +1 -1
- package/dist/system/health.js +30 -5
- package/dist/system/health.js.map +1 -1
- package/dist/upgrade.d.ts.map +1 -1
- package/dist/upgrade.js +60 -0
- package/dist/upgrade.js.map +1 -1
- package/dist/validation/doctor/checks.d.ts +14 -0
- package/dist/validation/doctor/checks.d.ts.map +1 -1
- package/dist/validation/doctor/checks.js +33 -0
- package/dist/validation/doctor/checks.js.map +1 -1
- package/migrations/drizzle-cleo-global/20260924000000_t12354-project-paths/migration.sql +40 -0
- package/migrations/drizzle-nexus/20260924000000_t12315-nexus-parse-cache/migration.sql +21 -0
- package/package.json +13 -13
- package/templates/CLEO-INJECTION.md +3 -3
- 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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"}
|