@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
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/changesets/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,EACL,KAAK,cAAc,EAGpB,MAAM,qBAAqB,CAAC;AA6J7B;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAkE/D;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,EAAE,CAU/D"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/changesets/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,EACL,KAAK,cAAc,EAGpB,MAAM,qBAAqB,CAAC;AA4N7B;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAsF/D;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,EAAE,CAU/D"}
@@ -103,6 +103,54 @@ function locateSchemaIssueLine(frontmatter, issuePath) {
103
103
  }
104
104
  return lastMatchLine;
105
105
  }
106
+ // ─── Reserved leading character hint (T12351) ────────────────────────────────
107
+ /**
108
+ * Characters that cannot start a YAML plain scalar, or that silently change
109
+ * its meaning: backtick and `@` are reserved, `%` is a directive, `|`/`>`
110
+ * start block scalars, `*` an alias, `&` an anchor, `!` a tag, `#` a comment.
111
+ * Flow collections (`[`, `{`) are omitted — `tasks: [T1]` is legitimate — and
112
+ * so are quotes, which are the fix.
113
+ */
114
+ const RESERVED_LEADING = new Set(['`', '@', '%', '|', '>', '*', '&', '!', '#']);
115
+ /**
116
+ * Find top-level `key: value` lines whose unquoted value starts with a
117
+ * YAML-reserved character. A bare block-scalar header (`summary: >-`) is a
118
+ * legitimate multi-line value and is not reported.
119
+ *
120
+ * @internal
121
+ * @task T12351
122
+ */
123
+ function findReservedLeadingValues(frontmatter) {
124
+ const found = [];
125
+ const lines = frontmatter.split(/\r?\n/);
126
+ for (let i = 0; i < lines.length; i++) {
127
+ const match = lines[i]?.match(/^([A-Za-z_][\w-]*):[ \t]+(\S.*?)\s*$/);
128
+ if (!match)
129
+ continue;
130
+ const key = match[1] ?? '';
131
+ const value = match[2] ?? '';
132
+ const char = value[0] ?? '';
133
+ if (!RESERVED_LEADING.has(char))
134
+ continue;
135
+ if ((char === '|' || char === '>') && /^[|>][+-]?\d*$/.test(value))
136
+ continue;
137
+ found.push({ line: i + 1, key, value, char });
138
+ }
139
+ return found;
140
+ }
141
+ /**
142
+ * Build the remediation for a reserved leading character: the exact line to
143
+ * write, with the value wrapped in double quotes and inner quotes/backslashes
144
+ * escaped.
145
+ *
146
+ * @internal
147
+ * @task T12351
148
+ */
149
+ function reservedLeadingHint(entry) {
150
+ const quoted = entry.value.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
151
+ return (`'${entry.key}' starts with the YAML-reserved character '${entry.char}' — ` +
152
+ `wrap the value in double quotes: ${entry.key}: "${quoted}"`);
153
+ }
106
154
  /**
107
155
  * Split a markdown file into its YAML frontmatter and body sections.
108
156
  *
@@ -167,11 +215,30 @@ export function parseChangesetFile(path) {
167
215
  // the surfaced line number matches the actual file line.
168
216
  const line = yamlLine !== null ? split.frontmatterStartLine + yamlLine : null;
169
217
  const snippet = yamlLine !== null ? extractSnippet(split.frontmatter, yamlLine) : undefined;
218
+ // T12351: name the fix. Prefer the reserved value on the reported line.
219
+ const reserved = findReservedLeadingValues(split.frontmatter);
220
+ const culprit = reserved.find((entry) => entry.line === yamlLine) ?? reserved[0];
170
221
  throw new ChangesetYamlInvalidError({
171
222
  file: path,
172
223
  line,
173
224
  ...(snippet !== undefined ? { snippet } : {}),
174
225
  parserMessage,
226
+ ...(culprit !== undefined ? { hint: reservedLeadingHint(culprit) } : {}),
227
+ });
228
+ }
229
+ // T12351: `&` (anchor), `!` (tag) and `#` (comment) do not fail to parse —
230
+ // they silently drop text from the value (`summary: &x fixed` reads as
231
+ // "fixed"). Any unquoted reserved leading character is rejected with the fix.
232
+ const silent = findReservedLeadingValues(split.frontmatter)[0];
233
+ if (silent !== undefined) {
234
+ const line = split.frontmatterStartLine + silent.line;
235
+ const snippet = extractSnippet(split.frontmatter, silent.line);
236
+ throw new ChangesetYamlInvalidError({
237
+ file: path,
238
+ line,
239
+ ...(snippet !== undefined ? { snippet } : {}),
240
+ parserMessage: `'${silent.key}' value starts with the YAML indicator '${silent.char}', which YAML reads as syntax, not text`,
241
+ hint: reservedLeadingHint(silent),
175
242
  });
176
243
  }
177
244
  if (frontmatterData === null || typeof frontmatterData !== 'object') {
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/changesets/parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/changesets/parser.ts"],"names":[],"mappings":"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"}
@@ -1,42 +1,142 @@
1
1
  /**
2
- * Credential encryption — AES-256-GCM with machine-bound key derivation.
2
+ * Credential encryption — AES-256-GCM with device-bound key derivation.
3
3
  *
4
- * API keys (`sk_live_*`) are encrypted at rest in SQLite using AES-256-GCM.
5
- * The encryption key is derived per-project from a machine-specific secret:
4
+ * Every key derives from the 32-byte `machine-key` in the CLEO home. That key
5
+ * NEVER leaves the device; credentials cross devices only through the
6
+ * passphrase-sealed path in `store/credential-transfer.ts`.
6
7
  *
7
- * machine-key (32 random bytes at ~/.local/share/cleo/machine-key)
8
- * + project path
9
- * = HMAC-SHA256(machine-key, project-path) → per-project AES key
8
+ * Two KDFs:
10
9
  *
11
- * This means credentials are bound to BOTH the machine AND the project.
12
- * Moving `.cleo/tasks.db` to another machine renders stored keys unreadable.
10
+ * - **Project** (T12326): `HMAC-SHA256(machine-key, "cleo:project-credential:v2\0"
11
+ * ‖ projectId)`, ciphertext version `0x02`. Keyed by project IDENTITY, so a
12
+ * moved or renamed project still decrypts. The pre-T12326 path-bound KDF
13
+ * (`HMAC-SHA256(machine-key, projectPath)`, version `0x01`) is read-only and
14
+ * migrated on first successful decrypt ({@link decryptProjectSecret}).
15
+ * - **Global** (ADR-037 §5): `HMAC-SHA256(machine-key ‖ global-salt, id)`,
16
+ * version `0x01`, for project-independent credentials.
13
17
  *
14
18
  * @see docs/specs/SIGNALDOCK-UNIFIED-AGENT-REGISTRY.md Section 3.6
15
19
  * @module crypto/credentials
16
20
  */
17
21
  /**
18
- * Encrypt a plaintext string using AES-256-GCM with a per-project key.
22
+ * Absolute path to the machine key file: `<cleoHome>/machine-key`.
19
23
  *
20
- * Output format: base64(version + iv + ciphertext + authTag)
21
- * - version: 1 byte (0x01 = AES-256-GCM)
22
- * - iv: 12 bytes
23
- * - ciphertext: variable length
24
- * - authTag: 16 bytes
24
+ * Resolved through {@link getCleoHome} — the same root as `global-salt` and
25
+ * the agent registry's key reader — so `CLEO_HOME` relocates all of them
26
+ * together. (Before T12326 this function re-derived the XDG path itself and
27
+ * ignored `CLEO_HOME`, so a relocated home read the salt from one directory
28
+ * and the key from another.) On every platform the default resolves to the
29
+ * same file as before.
25
30
  *
26
- * @param plaintext - The string to encrypt (e.g. an API key).
27
- * @param projectPath - Absolute path to the project directory (used for key derivation).
28
- * @returns Base64-encoded ciphertext.
31
+ * The machine key is DEVICE-LOCAL by design: it is never exported in any
32
+ * backup bundle. Credentials move between devices through
33
+ * `store/credential-transfer.ts` instead.
34
+ *
35
+ * @param cleoHome - CLEO home to resolve against (defaults to the ambient home).
36
+ * @returns Absolute path to the machine key.
37
+ * @task T12326
29
38
  */
30
- export declare function encrypt(plaintext: string, projectPath: string): Promise<string>;
39
+ export declare function getMachineKeyPath(cleoHome?: string): string;
31
40
  /**
32
- * Decrypt a base64-encoded ciphertext using AES-256-GCM with a per-project key.
41
+ * Options shared by every credential encrypt/decrypt call.
33
42
  *
34
- * @param ciphertext - Base64-encoded string from `encrypt()`.
35
- * @param projectPath - Absolute path to the project directory (must match the one used for encryption).
36
- * @returns The original plaintext string.
37
- * @throws If decryption fails (wrong key, corrupted data, or machine key mismatch).
43
+ * @task T12326
44
+ */
45
+ export interface CredentialKeyOptions {
46
+ /**
47
+ * CLEO home whose `machine-key` (and `global-salt`, for the global KDF) keys
48
+ * the operation. Defaults to the ambient home. A backup import passes the
49
+ * home it is restoring INTO, which need not be the process's own; an explicit
50
+ * home also reads the salt fresh instead of from the process memo.
51
+ */
52
+ readonly cleoHome?: string;
53
+ }
54
+ /**
55
+ * Ciphertext version written by the pre-T12326 project KDF,
56
+ * `HMAC-SHA256(machine-key, projectPath)`. Read-only: decrypted during
57
+ * migration, never written.
58
+ */
59
+ export declare const PROJECT_CIPHERTEXT_VERSION_LEGACY_PATH = 1;
60
+ /**
61
+ * Ciphertext version written by the project-identity KDF,
62
+ * `HMAC-SHA256(machine-key, "cleo:project-credential:v2\0" ‖ projectId)`.
63
+ */
64
+ export declare const PROJECT_CIPHERTEXT_VERSION_PROJECT_ID = 2;
65
+ /**
66
+ * Which KDF decrypted a project credential.
67
+ *
68
+ * @task T12326
69
+ */
70
+ export type ProjectCredentialKdf = 'project-id' | 'legacy-path';
71
+ /**
72
+ * Key context for {@link decryptProjectSecret}.
73
+ *
74
+ * @task T12326
75
+ */
76
+ export interface ProjectSecretContext extends CredentialKeyOptions {
77
+ /**
78
+ * Stable project identity — the `projectId` of `.cleo/project-info.json`
79
+ * (or its tracked successor). Travels with the project directory, so a
80
+ * moved or renamed checkout derives the same key.
81
+ */
82
+ readonly projectId: string;
83
+ /**
84
+ * Candidate project paths for ciphertexts still under the legacy path KDF
85
+ * (typically the current root plus the path the registry last recorded).
86
+ * Tried in order; unused for project-id ciphertexts.
87
+ */
88
+ readonly legacyProjectPaths?: readonly string[];
89
+ }
90
+ /**
91
+ * Result of {@link decryptProjectSecret}.
92
+ *
93
+ * @task T12326
94
+ */
95
+ export interface ProjectSecretReadResult {
96
+ /** The decrypted secret. */
97
+ readonly plaintext: string;
98
+ /** Which KDF opened it. */
99
+ readonly kdf: ProjectCredentialKdf;
100
+ /**
101
+ * When the ciphertext was legacy (path-bound): the same secret re-encrypted
102
+ * under the project-id KDF. The caller persists it in place of the old
103
+ * ciphertext. `null` when the ciphertext was already current.
104
+ */
105
+ readonly rewrapped: string | null;
106
+ }
107
+ /**
108
+ * Encrypt a project-scoped secret under the project-identity KDF.
109
+ *
110
+ * The key is `HMAC-SHA256(machine-key, "cleo:project-credential:v2\0" ‖
111
+ * projectId)`: bound to this device (machine-key) and to the project's
112
+ * identity, but NOT to where the project directory lives. Moving or renaming
113
+ * the checkout keeps the key; a different device does not (see
114
+ * `store/credential-transfer.ts` for the portable path).
115
+ *
116
+ * @param plaintext - The secret (e.g. an agent API key).
117
+ * @param projectId - Stable project identity.
118
+ * @param options - Key options (which CLEO home's machine-key).
119
+ * @returns Base64 ciphertext, version byte {@link PROJECT_CIPHERTEXT_VERSION_PROJECT_ID}.
120
+ * @task T12326
121
+ */
122
+ export declare function encryptProjectSecret(plaintext: string, projectId: string, options?: CredentialKeyOptions): Promise<string>;
123
+ /**
124
+ * Decrypt a project-scoped secret, migrating legacy ciphertexts on the way.
125
+ *
126
+ * - Version `0x02` ciphertexts open with the project-identity key.
127
+ * - Version `0x01` (legacy, path-bound) ciphertexts are tried against each of
128
+ * `legacyProjectPaths`; the first that authenticates wins and the secret is
129
+ * re-encrypted under the project-identity KDF and returned as `rewrapped`
130
+ * for the caller to persist. The legacy ciphertext is never needed again.
131
+ *
132
+ * @param ciphertext - Base64 ciphertext from either KDF.
133
+ * @param context - Project identity plus legacy path candidates.
134
+ * @returns The plaintext, which KDF opened it, and any re-wrapped ciphertext.
135
+ * @throws {Error} If no key authenticates. The message names the paths tried
136
+ * so the caller can report which credential to re-enter.
137
+ * @task T12326
38
138
  */
39
- export declare function decrypt(ciphertext: string, projectPath: string): Promise<string>;
139
+ export declare function decryptProjectSecret(ciphertext: string, context: ProjectSecretContext): Promise<ProjectSecretReadResult>;
40
140
  /**
41
141
  * Encrypt a plaintext string using AES-256-GCM with a global, machine-bound key.
42
142
  *
@@ -53,12 +153,13 @@ export declare function decrypt(ciphertext: string, projectPath: string): Promis
53
153
  *
54
154
  * @param plaintext - The string to encrypt (e.g. an LLM API key).
55
155
  * @param id - The stable identity used for key derivation (e.g. an agentId).
156
+ * @param options - Key options (which CLEO home's machine-key + salt).
56
157
  * @returns Base64-encoded ciphertext.
57
158
  *
58
159
  * @see decryptGlobal — the inverse operation.
59
160
  * @task T11710
60
161
  */
61
- export declare function encryptGlobal(plaintext: string, id: string): Promise<string>;
162
+ export declare function encryptGlobal(plaintext: string, id: string, options?: CredentialKeyOptions): Promise<string>;
62
163
  /**
63
164
  * Decrypt a base64-encoded ciphertext produced by {@link encryptGlobal} using
64
165
  * the global, machine-bound key derived from `id`.
@@ -66,6 +167,7 @@ export declare function encryptGlobal(plaintext: string, id: string): Promise<st
66
167
  * @param ciphertext - Base64-encoded string from {@link encryptGlobal}.
67
168
  * @param id - The identity used at encryption time. A mismatched `id` derives a
68
169
  * different key and fails the GCM auth tag (throws).
170
+ * @param options - Key options (which CLEO home's machine-key + salt).
69
171
  * @returns The original plaintext string.
70
172
  * @throws If decryption fails (wrong id, corrupted data, or machine-key/
71
173
  * global-salt mismatch).
@@ -73,5 +175,5 @@ export declare function encryptGlobal(plaintext: string, id: string): Promise<st
73
175
  * @see encryptGlobal — the inverse operation.
74
176
  * @task T11710
75
177
  */
76
- export declare function decryptGlobal(ciphertext: string, id: string): Promise<string>;
178
+ export declare function decryptGlobal(ciphertext: string, id: string, options?: CredentialKeyOptions): Promise<string>;
77
179
  //# sourceMappingURL=credentials.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/crypto/credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AA4JH;;;;;;;;;;;;GAYG;AACH,wBAAsB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAYrF;AAED;;;;;;;GAOG;AACH,wBAAsB,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkCtF;AAyCD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAYlF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiCnF"}
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/crypto/credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAqBH;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,GAAE,MAAsB,GAAG,MAAM,CAE1E;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAuID;;;;GAIG;AACH,eAAO,MAAM,sCAAsC,IAAO,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,qCAAqC,IAAO,CAAC;AAK1D;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,aAAa,CAAC;AAEhE;;;;GAIG;AACH,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IAChE;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACjD;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,4BAA4B;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,2BAA2B;IAC3B,QAAQ,CAAC,GAAG,EAAE,oBAAoB,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AA2BD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,uBAAuB,CAAC,CAyClC;AAyCD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,EACV,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,MAAM,CAAC,CAiBjB"}