@cleocode/core 2026.10.2 → 2026.10.4
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/build-provenance.json +2 -2
- package/dist/cloud/http.d.ts +2 -0
- package/dist/cloud/http.d.ts.map +1 -1
- package/dist/cloud/http.js +3 -0
- package/dist/cloud/http.js.map +1 -1
- package/dist/cloud/manifest-check.d.ts.map +1 -1
- package/dist/cloud/manifest-check.js +13 -0
- package/dist/cloud/manifest-check.js.map +1 -1
- package/dist/cloud/nexus-enrol.d.ts +9 -0
- package/dist/cloud/nexus-enrol.d.ts.map +1 -1
- package/dist/cloud/nexus-enrol.js +45 -2
- package/dist/cloud/nexus-enrol.js.map +1 -1
- package/dist/cloud/nexus-first-run.d.ts +142 -0
- package/dist/cloud/nexus-first-run.d.ts.map +1 -0
- package/dist/cloud/nexus-first-run.js +352 -0
- package/dist/cloud/nexus-first-run.js.map +1 -0
- package/dist/cloud/nexus-project-names.d.ts +173 -0
- package/dist/cloud/nexus-project-names.d.ts.map +1 -0
- package/dist/cloud/nexus-project-names.js +314 -0
- package/dist/cloud/nexus-project-names.js.map +1 -0
- package/dist/cloud/nexus-vault-keys.d.ts +35 -3
- package/dist/cloud/nexus-vault-keys.d.ts.map +1 -1
- package/dist/cloud/nexus-vault-keys.js +212 -22
- package/dist/cloud/nexus-vault-keys.js.map +1 -1
- package/dist/cloud/nexus-vault.d.ts.map +1 -1
- package/dist/cloud/nexus-vault.js +14 -2
- package/dist/cloud/nexus-vault.js.map +1 -1
- package/dist/dispatch/contracts/derive-output-contract.d.ts +1 -1
- package/dist/dispatch/contracts/derive-output-contract.d.ts.map +1 -1
- package/dist/dispatch/contracts/derive-output-contract.js +2 -1
- package/dist/dispatch/contracts/derive-output-contract.js.map +1 -1
- package/dist/dispatch/contracts/output-contracts.d.ts +2 -1
- package/dist/dispatch/contracts/output-contracts.d.ts.map +1 -1
- package/dist/dispatch/contracts/output-contracts.js +1 -1
- package/dist/dispatch/contracts/output-contracts.js.map +1 -1
- package/dist/dispatch/mvi-projection.d.ts +1 -1
- package/dist/dispatch/mvi-projection.d.ts.map +1 -1
- package/dist/dispatch/mvi-projection.js +1 -1
- package/dist/dispatch/mvi-projection.js.map +1 -1
- package/dist/docs/export-document.js +24462 -24572
- package/dist/docs/export-document.js.map +3 -3
- package/dist/doctor/db-substrate.d.ts +6 -9
- package/dist/doctor/db-substrate.d.ts.map +1 -1
- package/dist/doctor/db-substrate.js +10 -14
- package/dist/doctor/db-substrate.js.map +1 -1
- package/dist/doctor/migrations.d.ts +18 -0
- package/dist/doctor/migrations.d.ts.map +1 -1
- package/dist/doctor/migrations.js +54 -2
- package/dist/doctor/migrations.js.map +1 -1
- package/dist/error-catalog.js +1 -1
- package/dist/error-catalog.js.map +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +21 -5
- package/dist/init.js.map +1 -1
- package/dist/llm/conversation.d.ts.map +1 -1
- package/dist/llm/conversation.js +15 -4
- package/dist/llm/conversation.js.map +1 -1
- package/dist/llm/plugin-facade.js +277 -376
- package/dist/llm/plugin-facade.js.map +3 -3
- package/dist/llm/transports/bedrock.d.ts +1 -0
- package/dist/llm/transports/bedrock.d.ts.map +1 -1
- package/dist/llm/transports/bedrock.js +30 -12
- package/dist/llm/transports/bedrock.js.map +1 -1
- package/dist/memory/decision-contradiction.d.ts.map +1 -1
- package/dist/memory/decision-contradiction.js +10 -5
- package/dist/memory/decision-contradiction.js.map +1 -1
- package/dist/memory/dialectic-evaluator.d.ts.map +1 -1
- package/dist/memory/dialectic-evaluator.js +4 -1
- package/dist/memory/dialectic-evaluator.js.map +1 -1
- package/dist/memory/transcript-extractor.d.ts.map +1 -1
- package/dist/memory/transcript-extractor.js +3 -2
- package/dist/memory/transcript-extractor.js.map +1 -1
- package/dist/metrics/token-service.d.ts +16 -0
- package/dist/metrics/token-service.d.ts.map +1 -1
- package/dist/metrics/token-service.js +18 -0
- package/dist/metrics/token-service.js.map +1 -1
- package/dist/nexus/api-contracts.d.ts.map +1 -1
- package/dist/nexus/api-contracts.js +27 -11
- package/dist/nexus/api-contracts.js.map +1 -1
- package/dist/nexus/api-extractors/http-extractor.d.ts +2 -2
- package/dist/nexus/api-extractors/http-extractor.d.ts.map +1 -1
- package/dist/nexus/api-extractors/http-extractor.js +3 -3
- package/dist/nexus/api-extractors/http-extractor.js.map +1 -1
- package/dist/nexus/clusters.js +1 -1
- package/dist/nexus/clusters.js.map +1 -1
- package/dist/nexus/diff.d.ts +1 -1
- package/dist/nexus/diff.d.ts.map +1 -1
- package/dist/nexus/diff.js +3 -2
- package/dist/nexus/diff.js.map +1 -1
- package/dist/nexus/flows.js +1 -1
- package/dist/nexus/flows.js.map +1 -1
- package/dist/nexus/identity.d.ts +8 -0
- package/dist/nexus/identity.d.ts.map +1 -1
- package/dist/nexus/identity.js +17 -1
- package/dist/nexus/identity.js.map +1 -1
- package/dist/nexus/index.d.ts +1 -1
- package/dist/nexus/index.d.ts.map +1 -1
- package/dist/nexus/index.js +2 -2
- package/dist/nexus/index.js.map +1 -1
- package/dist/nexus/nexus-bridge.d.ts.map +1 -1
- package/dist/nexus/nexus-bridge.js +5 -5
- package/dist/nexus/nexus-bridge.js.map +1 -1
- package/dist/nexus/registry.d.ts +22 -0
- package/dist/nexus/registry.d.ts.map +1 -1
- package/dist/nexus/registry.js +76 -1
- package/dist/nexus/registry.js.map +1 -1
- package/dist/paths.js +1 -1
- package/dist/paths.js.map +1 -1
- package/dist/project-scope.js +1 -1
- package/dist/project-scope.js.map +1 -1
- package/dist/project-tombstone.js +1 -1
- package/dist/project-tombstone.js.map +1 -1
- package/dist/release/open.d.ts +3 -6
- package/dist/release/open.d.ts.map +1 -1
- package/dist/release/open.js +59 -23
- package/dist/release/open.js.map +1 -1
- package/dist/release/preflight-skip.d.ts +69 -10
- package/dist/release/preflight-skip.d.ts.map +1 -1
- package/dist/release/preflight-skip.js +195 -47
- package/dist/release/preflight-skip.js.map +1 -1
- package/dist/render/colors.js +1 -19
- package/dist/render/colors.js.map +1 -1
- package/dist/render/tasks/colors.js +1 -1
- package/dist/render/tasks/colors.js.map +1 -1
- package/dist/resources/governor.d.ts +12 -0
- package/dist/resources/governor.d.ts.map +1 -1
- package/dist/resources/governor.js +5 -1
- package/dist/resources/governor.js.map +1 -1
- package/dist/resources/heavy-command-hook-delivery.d.ts +144 -0
- package/dist/resources/heavy-command-hook-delivery.d.ts.map +1 -0
- package/dist/resources/heavy-command-hook-delivery.js +204 -0
- package/dist/resources/heavy-command-hook-delivery.js.map +1 -0
- package/dist/resources/heavy-command.d.ts +69 -0
- package/dist/resources/heavy-command.d.ts.map +1 -1
- package/dist/resources/heavy-command.js +479 -7
- package/dist/resources/heavy-command.js.map +1 -1
- package/dist/resources/run-class.d.ts.map +1 -1
- package/dist/resources/run-class.js +1 -0
- package/dist/resources/run-class.js.map +1 -1
- package/dist/routing/build-command-groups.d.ts +1 -1
- package/dist/routing/build-command-groups.d.ts.map +1 -1
- package/dist/routing/build-command-groups.js +4 -1
- package/dist/routing/build-command-groups.js.map +1 -1
- package/dist/scaffold/ensure-skills.d.ts.map +1 -1
- package/dist/scaffold/ensure-skills.js +58 -2
- package/dist/scaffold/ensure-skills.js.map +1 -1
- package/dist/selfimprove/fix-gen.js +277 -376
- package/dist/selfimprove/fix-gen.js.map +3 -3
- package/dist/sessions/briefing.d.ts.map +1 -1
- package/dist/sessions/briefing.js +11 -0
- package/dist/sessions/briefing.js.map +1 -1
- package/dist/store/dual-scope-db.d.ts.map +1 -1
- package/dist/store/dual-scope-db.js +6 -1
- package/dist/store/dual-scope-db.js.map +1 -1
- package/dist/store/portable-bundle-scan.d.ts +22 -0
- package/dist/store/portable-bundle-scan.d.ts.map +1 -1
- package/dist/store/portable-bundle-scan.js +97 -25
- package/dist/store/portable-bundle-scan.js.map +1 -1
- package/dist/store/portable-bundle.d.ts +7 -0
- package/dist/store/portable-bundle.d.ts.map +1 -1
- package/dist/store/portable-bundle.js +10 -1
- package/dist/store/portable-bundle.js.map +1 -1
- package/dist/store/table-classification.d.ts +27 -0
- package/dist/store/table-classification.d.ts.map +1 -1
- package/dist/store/table-classification.js +32 -0
- package/dist/store/table-classification.js.map +1 -1
- package/dist/store/vault-manifest.d.ts +5 -1
- package/dist/store/vault-manifest.d.ts.map +1 -1
- package/dist/store/vault-manifest.js +9 -2
- package/dist/store/vault-manifest.js.map +1 -1
- package/dist/system/health.d.ts +13 -0
- package/dist/system/health.d.ts.map +1 -1
- package/dist/system/health.js +96 -1
- package/dist/system/health.js.map +1 -1
- package/dist/tasks/affected-packages.d.ts +20 -7
- package/dist/tasks/affected-packages.d.ts.map +1 -1
- package/dist/tasks/affected-packages.js +39 -13
- package/dist/tasks/affected-packages.js.map +1 -1
- package/dist/tasks/affected-template.d.ts +93 -0
- package/dist/tasks/affected-template.d.ts.map +1 -0
- package/dist/tasks/affected-template.js +198 -0
- package/dist/tasks/affected-template.js.map +1 -0
- package/dist/tasks/command-line.d.ts +4 -1
- package/dist/tasks/command-line.d.ts.map +1 -1
- package/dist/tasks/command-line.js +7 -2
- package/dist/tasks/command-line.js.map +1 -1
- package/dist/tasks/done-plan.d.ts.map +1 -1
- package/dist/tasks/done-plan.js +12 -2
- package/dist/tasks/done-plan.js.map +1 -1
- package/dist/tasks/duplicate-detector.d.ts.map +1 -1
- package/dist/tasks/duplicate-detector.js +11 -5
- package/dist/tasks/duplicate-detector.js.map +1 -1
- package/dist/tasks/evidence.d.ts.map +1 -1
- package/dist/tasks/evidence.js +185 -11
- package/dist/tasks/evidence.js.map +1 -1
- package/dist/tasks/heavy-tool-env.d.ts +385 -18
- package/dist/tasks/heavy-tool-env.d.ts.map +1 -1
- package/dist/tasks/heavy-tool-env.js +719 -40
- package/dist/tasks/heavy-tool-env.js.map +1 -1
- package/dist/tasks/index.d.ts +2 -2
- package/dist/tasks/index.d.ts.map +1 -1
- package/dist/tasks/index.js +1 -1
- package/dist/tasks/index.js.map +1 -1
- package/dist/tasks/tool-cache-env.d.ts +20 -13
- package/dist/tasks/tool-cache-env.d.ts.map +1 -1
- package/dist/tasks/tool-cache-env.js +27 -48
- package/dist/tasks/tool-cache-env.js.map +1 -1
- package/dist/tasks/tool-cache.d.ts +8 -0
- package/dist/tasks/tool-cache.d.ts.map +1 -1
- package/dist/tasks/tool-cache.js +19 -6
- package/dist/tasks/tool-cache.js.map +1 -1
- package/dist/tasks/tool-semaphore.d.ts +66 -23
- package/dist/tasks/tool-semaphore.d.ts.map +1 -1
- package/dist/tasks/tool-semaphore.js +96 -34
- package/dist/tasks/tool-semaphore.js.map +1 -1
- package/dist/upgrade.d.ts.map +1 -1
- package/dist/upgrade.js +37 -4
- package/dist/upgrade.js.map +1 -1
- package/dist/validation/doctor/checks.d.ts +17 -0
- package/dist/validation/doctor/checks.d.ts.map +1 -1
- package/dist/validation/doctor/checks.js +83 -0
- package/dist/validation/doctor/checks.js.map +1 -1
- package/package.json +13 -13
- package/schemas/project-context.schema.json +5 -1
|
@@ -13,6 +13,9 @@
|
|
|
13
13
|
* 2. No escrow and no account keys: this is the account's first vault use.
|
|
14
14
|
* The client mints MK and escrows it (`PUT`, insert-only). A concurrent
|
|
15
15
|
* first device loses the insert with 409 and reads the winner's key.
|
|
16
|
+
* Since T13100 `cleo login nexus` runs steps 1 to 4 right after enrolment
|
|
17
|
+
* ({@link provisionNexusAccount}); `cleo cloud push` still does them for a
|
|
18
|
+
* device that logged in before that.
|
|
16
19
|
* 3. The device certifies itself under MK (a self-grant, `PUT
|
|
17
20
|
* /v1/devices/:id/key`), so other devices can verify its snapshots.
|
|
18
21
|
* 4. Signer trust comes from `certifiedSigners` over `GET /v1/devices/trust`,
|
|
@@ -33,6 +36,7 @@
|
|
|
33
36
|
* No function here logs a key, and no error carries one.
|
|
34
37
|
*
|
|
35
38
|
* @task T12336
|
|
39
|
+
* @task T13100
|
|
36
40
|
* @epic T12322
|
|
37
41
|
*/
|
|
38
42
|
import { nexusProjectKeysSchema, nexusUserKeysSchema } from '@cleocode/contracts';
|
|
@@ -43,6 +47,7 @@ import { Http, NexusError } from './http.js';
|
|
|
43
47
|
import { certifiedSigners, createDeviceGrant, homeStreamKey, masterKeyVerifier, newProjectKey, unwrapProjectKey, wrapProjectKey, } from './keys.js';
|
|
44
48
|
import { NexusAccountError, resolveNexusApiUrl } from './nexus-auth.js';
|
|
45
49
|
import { assertNexusCloudDeviceMode, NEXUS_CLOUD_TIMEOUT_MS, nexusCredentialWarnings, } from './nexus-cloud.js';
|
|
50
|
+
import { redactNexusDeviceSecrets } from './nexus-device.js';
|
|
46
51
|
import { ensureNexusDeviceCredential, nexusApiErrorToAccountError } from './nexus-enrol.js';
|
|
47
52
|
import { NexusVaultState } from './nexus-vault-state.js';
|
|
48
53
|
/** Timeout of a snapshot blob upload or download. */
|
|
@@ -64,7 +69,10 @@ export async function connectNexusVault(opts = {}) {
|
|
|
64
69
|
assertNexusCloudDeviceMode();
|
|
65
70
|
const apiUrl = resolveNexusApiUrl(opts.apiUrl);
|
|
66
71
|
const handle = await ensureNexusDeviceCredential({ ...opts, apiUrl });
|
|
67
|
-
|
|
72
|
+
return vaultConnectionOf(handle.device, apiUrl, opts, handle.warnings);
|
|
73
|
+
}
|
|
74
|
+
/** A vault connection acting as `device` (its current credential and keys). */
|
|
75
|
+
function vaultConnectionOf(device, apiUrl, opts, credentialWarnings) {
|
|
68
76
|
const bearer = device.currentBearer();
|
|
69
77
|
if (bearer === null) {
|
|
70
78
|
throw new NexusAccountError('E_NEXUS_NOT_SIGNED_IN', `not signed in to Cleo Nexus at ${apiUrl}`, 'run `cleo login nexus`');
|
|
@@ -93,7 +101,7 @@ export async function connectNexusVault(opts = {}) {
|
|
|
93
101
|
http,
|
|
94
102
|
blobFetch: (input, init) => base(input, { ...init, signal: AbortSignal.timeout(blobTimeoutMs) }),
|
|
95
103
|
state: opts.vaultState ?? new NexusVaultState(),
|
|
96
|
-
warnings: nexusCredentialWarnings(
|
|
104
|
+
warnings: nexusCredentialWarnings(credentialWarnings),
|
|
97
105
|
raw,
|
|
98
106
|
async call(method, path, schema, body) {
|
|
99
107
|
try {
|
|
@@ -121,10 +129,36 @@ const isConflict = (err, reason) => err instanceof NexusError &&
|
|
|
121
129
|
function keyUnavailable(message, fix) {
|
|
122
130
|
return new NexusAccountError('E_NEXUS_VAULT_KEY_UNAVAILABLE', message, fix);
|
|
123
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* The server answered 404 because it has no such route, not because the resource is missing: its
|
|
134
|
+
* fallback handler says `E_NOT_FOUND` "route not found" (cleo-nexus app.notFound), while a missing
|
|
135
|
+
* escrow is "key escrow not found" (T13049).
|
|
136
|
+
*/
|
|
137
|
+
function isRouteMissing(err) {
|
|
138
|
+
return (err instanceof NexusError &&
|
|
139
|
+
err.status === 404 &&
|
|
140
|
+
err.code === 'E_NOT_FOUND' &&
|
|
141
|
+
err.serverMessage === 'route not found');
|
|
142
|
+
}
|
|
143
|
+
/** A Cleo Nexus server older than account key escrow (cleo-nexus T082) cannot hold a vault (T13049). */
|
|
144
|
+
function vaultUnsupported() {
|
|
145
|
+
return new NexusAccountError('E_NEXUS_VAULT_UNSUPPORTED', 'this Cleo Nexus server does not support the cloud vault yet: it has no account key escrow', 'upgrade the Cleo Nexus server (account key escrow, cleo-nexus T082), or point CLEO at one that has it; nothing was written');
|
|
146
|
+
}
|
|
124
147
|
async function openEscrow(conn) {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
148
|
+
let grant;
|
|
149
|
+
try {
|
|
150
|
+
grant = await conn.raw('GET', '/v1/account/keys/escrow', KeyEscrowGrant);
|
|
151
|
+
}
|
|
152
|
+
catch (err) {
|
|
153
|
+
if (isRouteMissing(err))
|
|
154
|
+
throw vaultUnsupported();
|
|
155
|
+
// A supporting server with nothing escrowed yet: the account has no vault key. Only the
|
|
156
|
+
// server's own E_NOT_FOUND counts; a 404 page from something else (a proxy, a wrong
|
|
157
|
+
// --api-url) is a failed request, never an empty vault.
|
|
158
|
+
if (err instanceof NexusError && err.status === 404 && err.code === 'E_NOT_FOUND')
|
|
159
|
+
return null;
|
|
160
|
+
throw nexusApiErrorToAccountError(err);
|
|
161
|
+
}
|
|
128
162
|
if (grant.deviceId !== conn.deviceId) {
|
|
129
163
|
throw keyUnavailable('the server released the account key to another device id');
|
|
130
164
|
}
|
|
@@ -140,6 +174,10 @@ async function openEscrow(conn) {
|
|
|
140
174
|
}
|
|
141
175
|
return { mk, kv: grant.keyVersion };
|
|
142
176
|
}
|
|
177
|
+
/**
|
|
178
|
+
* Mint the account master key and escrow it (insert-only). `adopted` is `true` when another
|
|
179
|
+
* device escrowed first (409): its key is read and used, and this device never mints again.
|
|
180
|
+
*/
|
|
143
181
|
async function mintEscrow(conn) {
|
|
144
182
|
const existing = await conn.find('/v1/account/keys', nexusUserKeysSchema);
|
|
145
183
|
if (existing !== null) {
|
|
@@ -152,24 +190,29 @@ async function mintEscrow(conn) {
|
|
|
152
190
|
keyVersion: 1,
|
|
153
191
|
masterKeyVerifier: masterKeyVerifier(mk),
|
|
154
192
|
});
|
|
155
|
-
return { mk, kv: 1 };
|
|
193
|
+
return { mk, kv: 1, adopted: false };
|
|
156
194
|
}
|
|
157
195
|
catch (err) {
|
|
196
|
+
// Backstop: unreachable while GET and PUT escrow ship together (cleo-nexus #24), since
|
|
197
|
+
// openEscrow already refused; kept for a server that exposes one without the other.
|
|
198
|
+
if (isRouteMissing(err))
|
|
199
|
+
throw vaultUnsupported();
|
|
158
200
|
if (!isConflict(err))
|
|
159
201
|
throw nexusApiErrorToAccountError(err);
|
|
160
202
|
// Another device escrowed first: use its key.
|
|
161
203
|
const won = await openEscrow(conn);
|
|
162
204
|
if (won === null)
|
|
163
205
|
throw keyUnavailable('the account key was escrowed concurrently but is not readable');
|
|
164
|
-
return won;
|
|
206
|
+
return { ...won, adopted: true };
|
|
165
207
|
}
|
|
166
208
|
}
|
|
209
|
+
/** Certify this device under MK unless it already is; `wrote` says whether this call did. */
|
|
167
210
|
async function ensureCertified(conn, mk, kv) {
|
|
168
211
|
const trust = await conn.call('GET', '/v1/devices/trust', DeviceTrustSchema);
|
|
169
212
|
const mine = conn.keys.signing.publicKey.toString('base64');
|
|
170
213
|
const certified = trust.certificates.some((c) => c.deviceId === conn.deviceId && c.keyVersion === kv && c.signingPublicKey === mine && c.live);
|
|
171
214
|
if (certified)
|
|
172
|
-
return trust;
|
|
215
|
+
return { trust, wrote: false };
|
|
173
216
|
const grant = createDeviceGrant({
|
|
174
217
|
masterKey: mk,
|
|
175
218
|
userId: conn.userId,
|
|
@@ -182,7 +225,7 @@ async function ensureCertified(conn, mk, kv) {
|
|
|
182
225
|
signer: { deviceId: conn.deviceId, signing: conn.keys.signing },
|
|
183
226
|
});
|
|
184
227
|
await conn.call('PUT', `/v1/devices/${encodeURIComponent(conn.deviceId)}/key`, z.looseObject({}), grant);
|
|
185
|
-
return conn.call('GET', '/v1/devices/trust', DeviceTrustSchema);
|
|
228
|
+
return { trust: await conn.call('GET', '/v1/devices/trust', DeviceTrustSchema), wrote: true };
|
|
186
229
|
}
|
|
187
230
|
/**
|
|
188
231
|
* Get the account master key for this device, minting and escrowing it on
|
|
@@ -193,19 +236,50 @@ async function ensureCertified(conn, mk, kv) {
|
|
|
193
236
|
* `E_NEXUS_VAULT_EMPTY`.
|
|
194
237
|
* @returns The key, its version and the trusted signers.
|
|
195
238
|
* @throws {NexusAccountError} `E_NEXUS_VAULT_KEY_UNAVAILABLE` when the key
|
|
196
|
-
* cannot be obtained or verified;
|
|
239
|
+
* cannot be obtained or verified; `E_NEXUS_VAULT_UNSUPPORTED` when the server
|
|
240
|
+
* has no key escrow route; a mapped API error otherwise.
|
|
197
241
|
*/
|
|
198
242
|
export async function unlockNexusAccountKey(conn, opts = {}) {
|
|
243
|
+
return (await unlockAccount(conn, opts.readOnly === true, { step: 'escrow-read' })).key;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* {@link unlockNexusAccountKey}, reporting how the key was obtained. `progress.step` names the
|
|
247
|
+
* step running, so a caller that catches a failure can say where it happened.
|
|
248
|
+
*/
|
|
249
|
+
async function unlockAccount(conn, readOnly, progress) {
|
|
250
|
+
progress.step = 'escrow-read';
|
|
199
251
|
const escrowed = await openEscrow(conn);
|
|
200
|
-
if (escrowed === null &&
|
|
252
|
+
if (escrowed === null && readOnly) {
|
|
201
253
|
// Nothing was ever pushed from any device: a read has nothing to read, and
|
|
202
254
|
// must not mint the account key as a side effect.
|
|
203
255
|
throw new NexusAccountError('E_NEXUS_VAULT_EMPTY', 'the cloud vault is empty: no device has pushed a snapshot to this account yet', 'run `cleo cloud push` on a device that has the data');
|
|
204
256
|
}
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
257
|
+
let unlocked;
|
|
258
|
+
let escrow;
|
|
259
|
+
if (escrowed !== null) {
|
|
260
|
+
unlocked = escrowed;
|
|
261
|
+
escrow = 'fetched';
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
// The account's first device. Since T13100 `cleo login nexus` does this right after
|
|
265
|
+
// enrolment; a push still gets here for a device that logged in before that.
|
|
266
|
+
progress.step = 'escrow-mint';
|
|
267
|
+
const minted = await mintEscrow(conn);
|
|
268
|
+
unlocked = minted;
|
|
269
|
+
escrow = minted.adopted ? 'adopted' : 'minted';
|
|
270
|
+
}
|
|
271
|
+
progress.step = 'certify';
|
|
272
|
+
let trust;
|
|
273
|
+
let certificate = null;
|
|
274
|
+
if (readOnly) {
|
|
275
|
+
trust = await conn.call('GET', '/v1/devices/trust', DeviceTrustSchema);
|
|
276
|
+
}
|
|
277
|
+
else {
|
|
278
|
+
const certified = await ensureCertified(conn, unlocked.mk, unlocked.kv);
|
|
279
|
+
trust = certified.trust;
|
|
280
|
+
certificate = certified.wrote ? 'new' : 'existing';
|
|
281
|
+
}
|
|
282
|
+
progress.step = 'trust';
|
|
209
283
|
// Read, evaluate and persist the trust state under one lock, so two
|
|
210
284
|
// concurrent commands cannot interleave and lose a narrowed pin.
|
|
211
285
|
const evaluation = conn.state.updateTrust(conn.apiUrl, conn.userId, (current) => {
|
|
@@ -217,7 +291,107 @@ export async function unlockNexusAccountKey(conn, opts = {}) {
|
|
|
217
291
|
? 'the account key was rotated and this device does not hold the new one'
|
|
218
292
|
: 'the server declared an account key version no rotation explains');
|
|
219
293
|
}
|
|
220
|
-
return {
|
|
294
|
+
return {
|
|
295
|
+
key: { masterKey: unlocked.mk, keyVersion: unlocked.kv, signers: evaluation.signers },
|
|
296
|
+
escrow,
|
|
297
|
+
certificate,
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
/** What each setup step does, for a failure message. */
|
|
301
|
+
const SETUP_STEP_LABELS = {
|
|
302
|
+
connect: 'opening the vault connection with the device credential',
|
|
303
|
+
'escrow-read': 'reading the escrowed account key',
|
|
304
|
+
'escrow-mint': 'creating and escrowing the account key',
|
|
305
|
+
certify: 'certifying this device under the account key',
|
|
306
|
+
trust: 'recording the device trust state',
|
|
307
|
+
};
|
|
308
|
+
/** The remedy of a failed setup step whose error carried none. */
|
|
309
|
+
const SETUP_RETRY_FIX = 'run `cleo login nexus` again; `cleo cloud push` also finishes the setup on this device';
|
|
310
|
+
/**
|
|
311
|
+
* Make the account ready for encrypted backups on this device (onboarding A,
|
|
312
|
+
* T13100): read the escrowed account master key, or mint and escrow it when
|
|
313
|
+
* the account has none (a 409 means another device won: its key is read,
|
|
314
|
+
* never re-minted), then certify this device under it and record the signer
|
|
315
|
+
* trust state in {@link NexusVaultState}. It is {@link unlockNexusAccountKey}
|
|
316
|
+
* with a report, so a later `cleo cloud push` finds everything in place and
|
|
317
|
+
* mints nothing; it is idempotent.
|
|
318
|
+
*
|
|
319
|
+
* It never throws: a server without key escrow answers `unsupported`, any
|
|
320
|
+
* other failure answers `failed` with the step and the remedy. No key is in
|
|
321
|
+
* the result, and a failure message is redacted of the device credential.
|
|
322
|
+
*
|
|
323
|
+
* @param opts - API URL, stores, the device to act as, and test overrides.
|
|
324
|
+
* @returns What the setup did.
|
|
325
|
+
*/
|
|
326
|
+
export async function provisionNexusAccount(opts = {}) {
|
|
327
|
+
const progress = { step: 'connect' };
|
|
328
|
+
// The bearer in use, so a failure message that quotes it (fetch quotes a malformed header
|
|
329
|
+
// value) is redacted even when it does not have the credential's shape.
|
|
330
|
+
let bearer = opts.device?.currentBearer() ?? null;
|
|
331
|
+
try {
|
|
332
|
+
const conn = opts.device !== undefined
|
|
333
|
+
? vaultConnectionOf(opts.device, resolveNexusApiUrl(opts.apiUrl), opts, [])
|
|
334
|
+
: await connectNexusVault(opts);
|
|
335
|
+
bearer = conn.device.currentBearer();
|
|
336
|
+
const unlocked = await unlockAccount(conn, false, progress);
|
|
337
|
+
const how = unlocked.escrow === 'minted'
|
|
338
|
+
? 'the account key was created and escrowed on Cleo Nexus'
|
|
339
|
+
: 'this device received the account key from Cleo Nexus escrow';
|
|
340
|
+
return {
|
|
341
|
+
status: 'ready',
|
|
342
|
+
escrow: unlocked.escrow,
|
|
343
|
+
certificate: unlocked.certificate ?? 'existing',
|
|
344
|
+
keyVersion: unlocked.key.keyVersion,
|
|
345
|
+
summary: `Your account is ready for encrypted backups: ${how}, and this device is certified to use it.`,
|
|
346
|
+
};
|
|
347
|
+
}
|
|
348
|
+
catch (err) {
|
|
349
|
+
if (err instanceof NexusAccountError && err.code === 'E_NEXUS_VAULT_UNSUPPORTED') {
|
|
350
|
+
const fix = err.fix ?? 'upgrade the Cleo Nexus server';
|
|
351
|
+
return {
|
|
352
|
+
status: 'unsupported',
|
|
353
|
+
code: err.code,
|
|
354
|
+
fix,
|
|
355
|
+
summary: `signed in, but encrypted backups are not available: ${err.message}. Fix: ${fix}`,
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
const code = err instanceof NexusAccountError ? err.code : 'E_NEXUS_REQUEST_FAILED';
|
|
359
|
+
const raw = err instanceof Error ? err.message : String(err);
|
|
360
|
+
const message = redactNexusDeviceSecrets(bearer !== null && bearer !== '' ? raw.split(bearer).join('[redacted]') : raw);
|
|
361
|
+
const fix = (err instanceof NexusAccountError ? err.fix : undefined) ?? SETUP_RETRY_FIX;
|
|
362
|
+
const step = progress.step;
|
|
363
|
+
return {
|
|
364
|
+
status: 'failed',
|
|
365
|
+
step,
|
|
366
|
+
code,
|
|
367
|
+
message,
|
|
368
|
+
fix,
|
|
369
|
+
summary: `signed in, but encrypted backups are not set up: step ${step} (${SETUP_STEP_LABELS[step]}) failed with ${code}: ${message}. Fix: ${fix}`,
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Why Cleo Nexus refused this device's first key for a project (403), as an
|
|
375
|
+
* account error with a remedy, or `null` for any other failure. A device may
|
|
376
|
+
* create only version 1, of a keyless project its own user registered
|
|
377
|
+
* (cleo-nexus #33); this function is reached only when this account holds no
|
|
378
|
+
* key for the project (T13098).
|
|
379
|
+
*/
|
|
380
|
+
function refusedFirstKey(err, projectId) {
|
|
381
|
+
if (!(err instanceof NexusError) || err.status !== 403)
|
|
382
|
+
return null;
|
|
383
|
+
switch (err.details?.['reason']) {
|
|
384
|
+
case 'not-registrant':
|
|
385
|
+
return keyUnavailable(`project ${projectId} has no key yet, and only a device of the account that registered it may create the first one`, 'run the first `cleo cloud push` from a device of the account that first ran `cleo project link` for this project');
|
|
386
|
+
case 'session-required':
|
|
387
|
+
return keyUnavailable(`project ${projectId} already has a key, but it has not been shared with this account`, 'ask the project owner to share the project key with this account');
|
|
388
|
+
case 'project-role':
|
|
389
|
+
// Checked before the server knows whether the project has a key, so an owner may already
|
|
390
|
+
// have created one and not shared it with this account.
|
|
391
|
+
return keyUnavailable(`this account holds no key for project ${projectId}, and only a project owner can create one`, 'ask a project owner to share the project key with this account, or, if the project has no key yet, to run the first `cleo cloud push`');
|
|
392
|
+
default:
|
|
393
|
+
return null;
|
|
394
|
+
}
|
|
221
395
|
}
|
|
222
396
|
/**
|
|
223
397
|
* The data key of a project stream: unwrap the newest wrapped key, or mint
|
|
@@ -251,16 +425,32 @@ export async function nexusProjectDataKey(conn, mk, projectId, mint) {
|
|
|
251
425
|
await conn.raw('PUT', `${path}/${encodeURIComponent(conn.userId)}`, z.looseObject({}), {
|
|
252
426
|
wrappedProjectKey: wrapProjectKey(mk, pdk, projectId, 1),
|
|
253
427
|
keyVersion: 1,
|
|
428
|
+
// Cleo Nexus accepts a new key version, the first one included, only as a rotation naming
|
|
429
|
+
// the current highest version (cleo-nexus T12856). The two fields stay out of the shared
|
|
430
|
+
// contract until cleo-nexus adds them there too (T064), as the server does.
|
|
431
|
+
rotate: true,
|
|
432
|
+
expectedMax: 0,
|
|
254
433
|
});
|
|
255
434
|
return pdk;
|
|
256
435
|
}
|
|
257
436
|
catch (err) {
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
if (
|
|
262
|
-
|
|
263
|
-
|
|
437
|
+
const refused = refusedFirstKey(err, projectId);
|
|
438
|
+
if (refused)
|
|
439
|
+
throw refused;
|
|
440
|
+
if (isConflict(err, 'rotation-stale') || isConflict(err, 'keys-exist')) {
|
|
441
|
+
// Another device created version 1 first: use its key (T13098).
|
|
442
|
+
const won = await read();
|
|
443
|
+
if (won === null) {
|
|
444
|
+
throw keyUnavailable(`the project key of ${projectId} was created by another account and has not been shared with this one`, 'ask the project owner to share the project with this account');
|
|
445
|
+
}
|
|
446
|
+
return won;
|
|
447
|
+
}
|
|
448
|
+
if (isConflict(err)) {
|
|
449
|
+
const e = err;
|
|
450
|
+
const reason = typeof e.details?.['reason'] === 'string' ? ` (${e.details['reason']})` : '';
|
|
451
|
+
throw keyUnavailable(`Cleo Nexus refused to store the project key of ${projectId}${reason}: ${e.serverMessage}`);
|
|
452
|
+
}
|
|
453
|
+
throw nexusApiErrorToAccountError(err);
|
|
264
454
|
}
|
|
265
455
|
}
|
|
266
456
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nexus-vault-keys.js","sourceRoot":"","sources":["../../src/cloud/nexus-vault-keys.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nexus-vault-keys.js","sourceRoot":"","sources":["../../src/cloud/nexus-vault-keys.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nexus-vault.d.ts","sourceRoot":"","sources":["../../src/cloud/nexus-vault.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AAMH,OAAO,KAAK,EACV,uBAAuB,EACvB,eAAe,EACf,kBAAkB,EAElB,eAAe,EAEf,sBAAsB,EAEtB,iBAAiB,EAGlB,MAAM,qBAAqB,CAAC;AA+D7B,OAAO,EAGL,KAAK,iBAAiB,EAIvB,MAAM,uBAAuB,CAAC;AAI/B,gGAAgG;AAChG,eAAO,MAAM,6BAA6B,MAAM,CAAC;AAMjD;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;CA6B1B,CAAC;AAkCX,4CAA4C;AAC5C,MAAM,WAAW,wBAAyB,SAAQ,iBAAiB;IACjE,0FAA0F;IAC1F,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB;
|
|
1
|
+
{"version":3,"file":"nexus-vault.d.ts","sourceRoot":"","sources":["../../src/cloud/nexus-vault.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AAMH,OAAO,KAAK,EACV,uBAAuB,EACvB,eAAe,EACf,kBAAkB,EAElB,eAAe,EAEf,sBAAsB,EAEtB,iBAAiB,EAGlB,MAAM,qBAAqB,CAAC;AA+D7B,OAAO,EAGL,KAAK,iBAAiB,EAIvB,MAAM,uBAAuB,CAAC;AAI/B,gGAAgG;AAChG,eAAO,MAAM,6BAA6B,MAAM,CAAC;AAMjD;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;CA6B1B,CAAC;AAkCX,4CAA4C;AAC5C,MAAM,WAAW,wBAAyB,SAAQ,iBAAiB;IACjE,0FAA0F;IAC1F,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB;AA6kCD,4CAA4C;AAC5C,MAAM,WAAW,wBAAyB,SAAQ,wBAAwB;IACxE,uHAAuH;IACvH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gEAAgE;IAChE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4FAA4F;IAC5F,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8FAA8F;IAC9F,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CACrD;AAyDD,4FAA4F;AAC5F,eAAO,MAAM,+BAA+B,KAAK,CAAC;AAitBlD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,IAAI,GAAE,wBAAwB,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GACxE,OAAO,CAAC,eAAe,CAAC,CAE1B;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAE7F;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,GAAE,wBAA6B,GAClC,OAAO,CAAC,sBAAsB,CAAC,CAEjC;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,wBAA6B,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAEhG;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,GAAE,wBAA6B,GAClC,OAAO,CAAC,uBAAuB,CAAC,CAElC"}
|
|
@@ -544,10 +544,21 @@ function compareWithSynced(local, snapshot, git, changes) {
|
|
|
544
544
|
return rows;
|
|
545
545
|
return rows.map((r) => (r.table === VAULT_FILES_KEY ? { ...r, match: changes.length === 0 } : r));
|
|
546
546
|
}
|
|
547
|
+
/**
|
|
548
|
+
* This device's local-only change journal, emptied in every vault snapshot
|
|
549
|
+
* (T13042): capture, undo and quarantined images hold values the snapshot
|
|
550
|
+
* strips, and a restore takes these tables from the live store anyway.
|
|
551
|
+
*/
|
|
552
|
+
const VAULT_CLEARED_JOURNAL_TABLES = [
|
|
553
|
+
'_sync_capture',
|
|
554
|
+
'_sync_undo',
|
|
555
|
+
'_sync_frame',
|
|
556
|
+
'_sync_quarantine',
|
|
557
|
+
];
|
|
547
558
|
/**
|
|
548
559
|
* Export the store the way the vault snapshots it: no secrets, no `strip`
|
|
549
|
-
* columns (T13007),
|
|
550
|
-
* the config home (T12968).
|
|
560
|
+
* columns (T13007), no local change journal (T13042), and for the global
|
|
561
|
+
* store without machine-local state or the config home (T12968).
|
|
551
562
|
*/
|
|
552
563
|
async function exportVaultBundle(t, outputPath, label, tracked) {
|
|
553
564
|
await exportPortableBundle({
|
|
@@ -558,6 +569,7 @@ async function exportVaultBundle(t, outputPath, label, tracked) {
|
|
|
558
569
|
: {}),
|
|
559
570
|
...(t.scope === 'project' && tracked.size > 0 ? { gitTrackedFiles: tracked } : {}),
|
|
560
571
|
stripColumns: vaultStripColumns(tableScopeOf(t)),
|
|
572
|
+
clearTables: VAULT_CLEARED_JOURNAL_TABLES,
|
|
561
573
|
outputPath,
|
|
562
574
|
label,
|
|
563
575
|
});
|