@cleocode/core 2026.9.26 → 2026.10.1
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/nexus-attach.d.ts +94 -0
- package/dist/cloud/nexus-attach.d.ts.map +1 -0
- package/dist/cloud/nexus-attach.js +192 -0
- package/dist/cloud/nexus-attach.js.map +1 -0
- package/dist/cloud/nexus-auth.d.ts +15 -3
- package/dist/cloud/nexus-auth.d.ts.map +1 -1
- package/dist/cloud/nexus-auth.js +90 -6
- package/dist/cloud/nexus-auth.js.map +1 -1
- package/dist/cloud/nexus-cloud-status.d.ts +132 -0
- package/dist/cloud/nexus-cloud-status.d.ts.map +1 -0
- package/dist/cloud/nexus-cloud-status.js +440 -0
- package/dist/cloud/nexus-cloud-status.js.map +1 -0
- package/dist/cloud/nexus-cloud.d.ts +179 -0
- package/dist/cloud/nexus-cloud.d.ts.map +1 -0
- package/dist/cloud/nexus-cloud.js +296 -0
- package/dist/cloud/nexus-cloud.js.map +1 -0
- package/dist/cloud/nexus-device.d.ts +31 -6
- package/dist/cloud/nexus-device.d.ts.map +1 -1
- package/dist/cloud/nexus-device.js +54 -7
- package/dist/cloud/nexus-device.js.map +1 -1
- package/dist/cloud/nexus-enrol.d.ts +35 -4
- package/dist/cloud/nexus-enrol.d.ts.map +1 -1
- package/dist/cloud/nexus-enrol.js +187 -47
- package/dist/cloud/nexus-enrol.js.map +1 -1
- package/dist/cloud/nexus-link.d.ts +8 -1
- package/dist/cloud/nexus-link.d.ts.map +1 -1
- package/dist/cloud/nexus-link.js +138 -11
- package/dist/cloud/nexus-link.js.map +1 -1
- package/dist/cloud/nexus-logout.d.ts +114 -0
- package/dist/cloud/nexus-logout.d.ts.map +1 -0
- package/dist/cloud/nexus-logout.js +429 -0
- package/dist/cloud/nexus-logout.js.map +1 -0
- package/dist/docs/export-document.js +242 -37
- package/dist/docs/export-document.js.map +3 -3
- package/dist/llm/plugin-facade.js +343 -138
- package/dist/llm/plugin-facade.js.map +3 -3
- package/dist/selfimprove/fix-gen.js +347 -142
- package/dist/selfimprove/fix-gen.js.map +3 -3
- package/dist/setup/sections/nexus-account.d.ts +8 -6
- package/dist/setup/sections/nexus-account.d.ts.map +1 -1
- package/dist/setup/sections/nexus-account.js +53 -9
- package/dist/setup/sections/nexus-account.js.map +1 -1
- package/dist/store/sync/replica.d.ts +34 -3
- package/dist/store/sync/replica.d.ts.map +1 -1
- package/dist/store/sync/replica.js +39 -2
- package/dist/store/sync/replica.js.map +1 -1
- package/dist/store/sync/schema.d.ts +6 -3
- package/dist/store/sync/schema.d.ts.map +1 -1
- package/dist/store/sync/schema.js +6 -3
- package/dist/store/sync/schema.js.map +1 -1
- package/package.json +13 -13
package/dist/cloud/nexus-link.js
CHANGED
|
@@ -42,6 +42,7 @@ import { getCleoDirAbsolute, resolveOrCwd } from '../paths.js';
|
|
|
42
42
|
import { getProjectDisplayName } from '../project-info.js';
|
|
43
43
|
import { withLock } from '../store/file-utils.js';
|
|
44
44
|
import { Http, NexusError } from './http.js';
|
|
45
|
+
import { attachProjectReplica } from './nexus-attach.js';
|
|
45
46
|
import { NexusAccountError, requireNexusSession, resolveNexusApiUrl, } from './nexus-auth.js';
|
|
46
47
|
import { FileNexusTokenStore } from './nexus-credentials.js';
|
|
47
48
|
import { isNexusDeviceEnabled } from './nexus-device.js';
|
|
@@ -51,7 +52,7 @@ import { registerProject } from './projects.js';
|
|
|
51
52
|
export const NEXUS_LINK_FILE = 'nexus-link.json';
|
|
52
53
|
/** Longest label the server accepts (`RegisterProjectRequest.label`). */
|
|
53
54
|
export const NEXUS_LABEL_MAX = 120;
|
|
54
|
-
const linkSchema = z.
|
|
55
|
+
const linkSchema = z.looseObject({
|
|
55
56
|
apiUrl: z.string(),
|
|
56
57
|
localProjectId: z.string(),
|
|
57
58
|
remoteProjectId: z.string(),
|
|
@@ -59,11 +60,65 @@ const linkSchema = z.object({
|
|
|
59
60
|
label: z.string().nullable(),
|
|
60
61
|
streamId: z.string(),
|
|
61
62
|
linkedAt: z.string(),
|
|
63
|
+
replicaId: z.string().nullish(),
|
|
64
|
+
nexusDeviceId: z.string().nullish(),
|
|
65
|
+
attachedAt: z.string().nullish(),
|
|
62
66
|
});
|
|
63
|
-
|
|
67
|
+
/**
|
|
68
|
+
* The file envelope. Entries are kept as raw records and parsed one by one
|
|
69
|
+
* ({@link mergeLinkEntry}), so an entry this version cannot read (written by
|
|
70
|
+
* a newer CLI) is carried through unchanged instead of dropping the file.
|
|
71
|
+
*/
|
|
72
|
+
const linkFileSchema = z.looseObject({
|
|
64
73
|
version: z.literal(1),
|
|
65
|
-
links: z.record(z.string(),
|
|
74
|
+
links: z.record(z.string(), z.record(z.string(), z.json())),
|
|
66
75
|
});
|
|
76
|
+
/** One parsed entry as the contract type, or `null` when this version cannot read it. */
|
|
77
|
+
function toLink(raw) {
|
|
78
|
+
if (raw === undefined)
|
|
79
|
+
return null;
|
|
80
|
+
const parsed = linkSchema.safeParse(raw);
|
|
81
|
+
if (!parsed.success)
|
|
82
|
+
return null;
|
|
83
|
+
const e = parsed.data;
|
|
84
|
+
return {
|
|
85
|
+
apiUrl: e.apiUrl,
|
|
86
|
+
localProjectId: e.localProjectId,
|
|
87
|
+
remoteProjectId: e.remoteProjectId,
|
|
88
|
+
organizationId: e.organizationId,
|
|
89
|
+
label: e.label,
|
|
90
|
+
streamId: e.streamId,
|
|
91
|
+
linkedAt: e.linkedAt,
|
|
92
|
+
...(e.replicaId ? { replicaId: e.replicaId } : {}),
|
|
93
|
+
...(e.nexusDeviceId ? { nexusDeviceId: e.nexusDeviceId } : {}),
|
|
94
|
+
...(e.attachedAt ? { attachedAt: e.attachedAt } : {}),
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* The entry to store for this link: the new values over the old entry, so a
|
|
99
|
+
* relink that attached nothing keeps the cached replica fields, and fields a
|
|
100
|
+
* newer CLI wrote survive.
|
|
101
|
+
*/
|
|
102
|
+
function mergeLinkEntry(old, link, clearReplica) {
|
|
103
|
+
const fresh = {
|
|
104
|
+
apiUrl: link.apiUrl,
|
|
105
|
+
localProjectId: link.localProjectId,
|
|
106
|
+
remoteProjectId: link.remoteProjectId,
|
|
107
|
+
organizationId: link.organizationId,
|
|
108
|
+
label: link.label,
|
|
109
|
+
streamId: link.streamId,
|
|
110
|
+
linkedAt: link.linkedAt,
|
|
111
|
+
...(link.replicaId ? { replicaId: link.replicaId } : {}),
|
|
112
|
+
...(link.nexusDeviceId ? { nexusDeviceId: link.nexusDeviceId } : {}),
|
|
113
|
+
...(link.attachedAt ? { attachedAt: link.attachedAt } : {}),
|
|
114
|
+
};
|
|
115
|
+
// A device-mode attach that failed must not leave the old replica and
|
|
116
|
+
// device ids looking current (review N1): they are cleared.
|
|
117
|
+
const cleared = clearReplica
|
|
118
|
+
? { replicaId: null, nexusDeviceId: null, attachedAt: null }
|
|
119
|
+
: {};
|
|
120
|
+
return { ...(old ?? {}), ...cleared, ...fresh };
|
|
121
|
+
}
|
|
67
122
|
/**
|
|
68
123
|
* Path separators and their look-alikes: `/`, `\`, fullwidth / \, division
|
|
69
124
|
* slash ∕, set minus ∖, fraction slash ⁄, big solidi ⧸ ⧹, small reverse
|
|
@@ -143,7 +198,7 @@ function readLinkFile(path) {
|
|
|
143
198
|
* @returns The binding, or `null`.
|
|
144
199
|
*/
|
|
145
200
|
export function readNexusProjectLink(projectRoot, apiUrl) {
|
|
146
|
-
return readLinkFile(nexusLinkPath(projectRoot)).links[new URL(apiUrl).origin]
|
|
201
|
+
return toLink(readLinkFile(nexusLinkPath(projectRoot)).links[new URL(apiUrl).origin]);
|
|
147
202
|
}
|
|
148
203
|
/** Map an API failure to a Nexus error; a 401 means the session expired. */
|
|
149
204
|
function toLinkError(err) {
|
|
@@ -188,15 +243,18 @@ export async function linkProjectToNexus(opts = {}) {
|
|
|
188
243
|
const apiUrl = resolveNexusApiUrl(opts.apiUrl);
|
|
189
244
|
const store = opts.store ?? new FileNexusTokenStore();
|
|
190
245
|
const deviceMode = isNexusDeviceEnabled();
|
|
191
|
-
// With
|
|
246
|
+
// With device credentials (the default) the device credential is used, upgrading a 9.24
|
|
192
247
|
// session first (contract §3.4); otherwise the 9.24 session, as before.
|
|
193
|
-
const
|
|
194
|
-
?
|
|
248
|
+
const handle = deviceMode
|
|
249
|
+
? await ensureNexusDeviceCredential({
|
|
195
250
|
apiUrl,
|
|
196
251
|
store,
|
|
197
252
|
...(opts.fetch ? { fetch: opts.fetch } : {}),
|
|
198
253
|
...(opts.deviceStore ? { deviceStore: opts.deviceStore } : {}),
|
|
199
|
-
})
|
|
254
|
+
})
|
|
255
|
+
: null;
|
|
256
|
+
const bearer = handle
|
|
257
|
+
? handle.device.currentBearer()
|
|
200
258
|
: (await requireNexusSession(apiUrl, store)).bearer();
|
|
201
259
|
if (bearer === null) {
|
|
202
260
|
throw new NexusAccountError('E_NEXUS_NOT_SIGNED_IN', `not signed in to Cleo Nexus at ${apiUrl}`, 'run `cleo login nexus`');
|
|
@@ -226,6 +284,46 @@ export async function linkProjectToNexus(opts = {}) {
|
|
|
226
284
|
catch (err) {
|
|
227
285
|
throw deviceMode ? nexusApiErrorToAccountError(err) : toLinkError(err);
|
|
228
286
|
}
|
|
287
|
+
// Steps 3 to 5 of §3.6: attach this store's replica to the device and
|
|
288
|
+
// report presence. A 9.24 session cannot attach (the route needs a device).
|
|
289
|
+
// An attach failure never fails the link: the project is registered, the
|
|
290
|
+
// binding below is still written, and the warning names the remedy.
|
|
291
|
+
const warnings = handle ? [...handle.warnings] : [];
|
|
292
|
+
let replica = null;
|
|
293
|
+
let attachError = null;
|
|
294
|
+
if (handle === null && opts.rebind === true) {
|
|
295
|
+
warnings.push('--rebind needs device credentials (CLEO_NEXUS_DEVICE turns them off), so nothing was attached or rebound');
|
|
296
|
+
}
|
|
297
|
+
if (handle) {
|
|
298
|
+
try {
|
|
299
|
+
const attached = await attachProjectReplica({
|
|
300
|
+
apiUrl,
|
|
301
|
+
bearer,
|
|
302
|
+
deviceId: handle.device.deviceId,
|
|
303
|
+
projectId: registered.project.projectId,
|
|
304
|
+
projectRoot,
|
|
305
|
+
cliVersion: opts.cliVersion ?? (await installedCleoVersion()),
|
|
306
|
+
...(opts.rebind === true ? { rebind: true } : {}),
|
|
307
|
+
...(opts.replicaBinder ? { binder: opts.replicaBinder } : {}),
|
|
308
|
+
...(opts.fetch ? { fetch: opts.fetch } : {}),
|
|
309
|
+
});
|
|
310
|
+
replica = attached.replica;
|
|
311
|
+
warnings.push(...attached.warnings);
|
|
312
|
+
}
|
|
313
|
+
catch (err) {
|
|
314
|
+
const mapped = nexusApiErrorToAccountError(err);
|
|
315
|
+
const code = mapped instanceof NexusAccountError ? mapped.code : 'E_NEXUS_REQUEST_FAILED';
|
|
316
|
+
const fix = mapped instanceof NexusAccountError && mapped.fix
|
|
317
|
+
? mapped.fix
|
|
318
|
+
: 're-run `cleo project link`';
|
|
319
|
+
attachError = {
|
|
320
|
+
code,
|
|
321
|
+
message: mapped.message,
|
|
322
|
+
fix: mapped instanceof NexusAccountError && mapped.fix ? mapped.fix : null,
|
|
323
|
+
};
|
|
324
|
+
warnings.push(`the project is linked, but this machine's copy was not attached to it (${code}: ${mapped.message}); ${fix}`);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
229
327
|
const linkPath = nexusLinkPath(projectRoot);
|
|
230
328
|
const link = {
|
|
231
329
|
apiUrl,
|
|
@@ -235,6 +333,13 @@ export async function linkProjectToNexus(opts = {}) {
|
|
|
235
333
|
label: registered.project.label,
|
|
236
334
|
streamId: registered.streamId,
|
|
237
335
|
linkedAt: new Date().toISOString(),
|
|
336
|
+
...(replica
|
|
337
|
+
? {
|
|
338
|
+
replicaId: replica.replicaId,
|
|
339
|
+
nexusDeviceId: replica.deviceId,
|
|
340
|
+
attachedAt: new Date().toISOString(),
|
|
341
|
+
}
|
|
342
|
+
: {}),
|
|
238
343
|
};
|
|
239
344
|
// Locked read-modify-write: concurrent links (other origins, other shells)
|
|
240
345
|
// never drop each other's entries. withLock needs a parseable file to read,
|
|
@@ -248,13 +353,35 @@ export async function linkProjectToNexus(opts = {}) {
|
|
|
248
353
|
}
|
|
249
354
|
await withLock(linkPath, (current) => {
|
|
250
355
|
const parsed = linkFileSchema.safeParse(current);
|
|
251
|
-
|
|
252
|
-
|
|
356
|
+
if (!parsed.success) {
|
|
357
|
+
// Never overwrite a file this version cannot read (a newer format):
|
|
358
|
+
// that would drop every other origin's binding.
|
|
359
|
+
throw new NexusAccountError('E_NEXUS_LINK_FILE_UNSUPPORTED', `${linkPath} is not a version 1 link file this CLEO can update`, 'upgrade CLEO, or move the file aside and run `cleo project link` again');
|
|
360
|
+
}
|
|
361
|
+
const links = parsed.data.links;
|
|
362
|
+
return {
|
|
363
|
+
...parsed.data,
|
|
364
|
+
version: 1,
|
|
365
|
+
links: {
|
|
366
|
+
...links,
|
|
367
|
+
[apiUrl]: mergeLinkEntry(links[apiUrl], link, handle !== null && replica === null),
|
|
368
|
+
},
|
|
369
|
+
};
|
|
253
370
|
});
|
|
371
|
+
// The envelope reports what is stored, cached replica fields included.
|
|
372
|
+
const stored = readNexusProjectLink(projectRoot, apiUrl) ?? link;
|
|
254
373
|
return {
|
|
255
|
-
link,
|
|
374
|
+
link: stored,
|
|
256
375
|
alreadyLinked: !registered.created,
|
|
257
376
|
linkPath,
|
|
377
|
+
replica,
|
|
378
|
+
attachError,
|
|
379
|
+
warnings,
|
|
258
380
|
};
|
|
259
381
|
}
|
|
382
|
+
/** The installed CLEO version, for presence. */
|
|
383
|
+
async function installedCleoVersion() {
|
|
384
|
+
const { getCleoVersion } = await import('../scaffold/ensure-config.js');
|
|
385
|
+
return getCleoVersion();
|
|
386
|
+
}
|
|
260
387
|
//# sourceMappingURL=nexus-link.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nexus-link.js","sourceRoot":"","sources":["../../src/cloud/nexus-link.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nexus-link.js","sourceRoot":"","sources":["../../src/cloud/nexus-link.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cleo Nexus device logout: `cleo logout nexus [--revoke]` with device
|
|
3
|
+
* credentials (cleo-nexus device contract §3.5, review M3, T12844).
|
|
4
|
+
*
|
|
5
|
+
* A logout never reports success while a credential may still be live:
|
|
6
|
+
*
|
|
7
|
+
* 1. Under the lock, the live credentials move into `pendingSignOut`
|
|
8
|
+
* (`--revoke`: `pendingRevoke`), newest first: `pending`, then `current`
|
|
9
|
+
* ({@link applyBeginSignOut}, {@link applyBeginRevoke}). From then on they
|
|
10
|
+
* are used for nothing but that request. The lock is released.
|
|
11
|
+
* 2. E9 (`POST /v1/devices/self/sign-out`) or E10 (`DELETE /v1/devices/self`)
|
|
12
|
+
* is sent with each credential in turn, newest first, with one attempt and
|
|
13
|
+
* a {@link NEXUS_REVOKE_TIMEOUT_MS} timeout.
|
|
14
|
+
* 3. Done means proved: 200, or a 401 whose reason proves the device state
|
|
15
|
+
* (`device-signed-out`, `device-revoked`, or `credential-revoked` with
|
|
16
|
+
* `revokedReason` `signed-out` / `revoked`). A revoke needs proof of a
|
|
17
|
+
* revoke; a signed-out device is not a revoked one. Any other 401 means
|
|
18
|
+
* that credential is dead, so the next one is tried. A network error,
|
|
19
|
+
* timeout, 429, 5xx or a route the server does not have yet stops the run:
|
|
20
|
+
* the slot is kept and every remaining request is left for the next run
|
|
21
|
+
* without another call.
|
|
22
|
+
* 4. The lock is re-taken and the slot is changed only if it still holds the
|
|
23
|
+
* credential that was answered (compare-and-swap):
|
|
24
|
+
* - a sign-out (confirmed, or every credential dead) clears
|
|
25
|
+
* `pendingSignOut` and keeps the device keys for the next login;
|
|
26
|
+
* - a revoke that ended (confirmed, found the device signed out, or every
|
|
27
|
+
* credential dead) forgets the device locally ({@link applyForgetDevice}),
|
|
28
|
+
* so no later login re-activates the id the user asked to burn. The
|
|
29
|
+
* entry is deleted, or kept stripped while `retired` requests of other
|
|
30
|
+
* devices remain; the store keeps the file while other entries remain.
|
|
31
|
+
* Only a confirmed request is reported `confirmed`; the others name the
|
|
32
|
+
* web remedy.
|
|
33
|
+
*
|
|
34
|
+
* Unsettled slots, and the `retired` requests of replaced devices, are
|
|
35
|
+
* retried by every later logout and, best effort with a shorter timeout, by
|
|
36
|
+
* `cleo login nexus` and `cleo project link` ({@link retryNexusDeviceEnds}).
|
|
37
|
+
* Retired requests are sent before the entry's own request.
|
|
38
|
+
*
|
|
39
|
+
* No function here logs, and no result or error carries a token.
|
|
40
|
+
*
|
|
41
|
+
* @task T12870
|
|
42
|
+
* @epic T12323
|
|
43
|
+
*/
|
|
44
|
+
import type { NexusDeviceLogoutResult, NexusDeviceLogoutRow } from '@cleocode/contracts';
|
|
45
|
+
import { type FetchLike } from './http.js';
|
|
46
|
+
import { type NexusTokenStore } from './nexus-credentials.js';
|
|
47
|
+
import { NexusDeviceStore } from './nexus-device.js';
|
|
48
|
+
/**
|
|
49
|
+
* Timeout of each E9/E10 call when a login or a link only retries on the way
|
|
50
|
+
* ({@link retryNexusDeviceEnds}); an explicit logout uses {@link NEXUS_REVOKE_TIMEOUT_MS}.
|
|
51
|
+
*/
|
|
52
|
+
export declare const NEXUS_END_RETRY_TIMEOUT_MS = 2000;
|
|
53
|
+
/** Options for {@link logoutNexusDevice} and {@link settleNexusDeviceEnds}. */
|
|
54
|
+
export interface NexusDeviceLogoutOptions {
|
|
55
|
+
/** API URL; defaults to `$CLEO_NEXUS_API_URL`, then production. */
|
|
56
|
+
apiUrl?: string;
|
|
57
|
+
/** `fetch` override. */
|
|
58
|
+
fetch?: FetchLike;
|
|
59
|
+
/** The device store; defaults to `<cleoHome>/nexus-device.json`. */
|
|
60
|
+
deviceStore?: NexusDeviceStore;
|
|
61
|
+
/** The 9.24 session store (`nexus-credentials.json`). */
|
|
62
|
+
store?: NexusTokenStore;
|
|
63
|
+
/** Clock, for a slot's `requestedAt`. */
|
|
64
|
+
now?: () => Date;
|
|
65
|
+
/** Timeout of each E9 or E10 call; default {@link NEXUS_REVOKE_TIMEOUT_MS}. */
|
|
66
|
+
timeoutMs?: number;
|
|
67
|
+
}
|
|
68
|
+
/** Options for {@link logoutNexusDevice}. */
|
|
69
|
+
export interface NexusDeviceLogoutRunOptions extends NexusDeviceLogoutOptions {
|
|
70
|
+
/** `--revoke`: hard-revoke the device (E10) instead of signing it out (E9). */
|
|
71
|
+
revoke?: boolean;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Retry every unsettled sign-out and revoke on the origin (contract §3.5,
|
|
75
|
+
* L2): each entry's `pendingSignOut` or `pendingRevoke`, and the `retired`
|
|
76
|
+
* requests of devices it replaced. Never throws for a server that cannot be
|
|
77
|
+
* reached; the rows and warnings say what is still open.
|
|
78
|
+
*
|
|
79
|
+
* @param opts - API URL, stores and test overrides.
|
|
80
|
+
* @returns One row per request tried, and the warnings.
|
|
81
|
+
*/
|
|
82
|
+
export declare function settleNexusDeviceEnds(opts?: NexusDeviceLogoutOptions & {
|
|
83
|
+
warnUnreadable?: boolean;
|
|
84
|
+
}): Promise<{
|
|
85
|
+
devices: NexusDeviceLogoutRow[];
|
|
86
|
+
warnings: string[];
|
|
87
|
+
}>;
|
|
88
|
+
/**
|
|
89
|
+
* Best-effort {@link settleNexusDeviceEnds} for flows that only retry on the
|
|
90
|
+
* way (login, commands that need a credential): a store or network failure
|
|
91
|
+
* becomes a warning and never fails the caller.
|
|
92
|
+
*
|
|
93
|
+
* @param opts - API URL, stores and test overrides.
|
|
94
|
+
* @param warnings - Receives the warnings.
|
|
95
|
+
*/
|
|
96
|
+
export declare function retryNexusDeviceEnds(opts: NexusDeviceLogoutOptions, warnings: string[]): Promise<void>;
|
|
97
|
+
/**
|
|
98
|
+
* `cleo logout nexus [--revoke]` with device credentials (contract §3.5, M3).
|
|
99
|
+
*
|
|
100
|
+
* Every readable entry on the origin is moved to `pendingSignOut` (or
|
|
101
|
+
* `pendingRevoke`), then every unsettled request on the origin is sent,
|
|
102
|
+
* including ones left by earlier runs. A leftover 9.24 session for the origin
|
|
103
|
+
* is signed out too. The device keys stay after a sign-out, so a later login
|
|
104
|
+
* reuses the device id; a confirmed revoke removes the entry.
|
|
105
|
+
*
|
|
106
|
+
* @param opts - API URL, `revoke`, stores and test overrides.
|
|
107
|
+
* @returns The per-device outcomes. A row that is not `confirmed` is also
|
|
108
|
+
* named in `warnings`; the result never claims a sign-out the server did
|
|
109
|
+
* not confirm.
|
|
110
|
+
* A device file that cannot be read or locked is reported as a warning, and
|
|
111
|
+
* the 9.24 session is still signed out.
|
|
112
|
+
*/
|
|
113
|
+
export declare function logoutNexusDevice(opts?: NexusDeviceLogoutRunOptions): Promise<NexusDeviceLogoutResult>;
|
|
114
|
+
//# sourceMappingURL=nexus-logout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nexus-logout.d.ts","sourceRoot":"","sources":["../../src/cloud/nexus-logout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,KAAK,EAEV,uBAAuB,EACvB,oBAAoB,EAErB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,WAAW,CAAC;AAE7D,OAAO,EAAuB,KAAK,eAAe,EAAkB,MAAM,wBAAwB,CAAC;AACnG,OAAO,EASL,gBAAgB,EAEjB,MAAM,mBAAmB,CAAC;AAE3B;;;GAGG;AACH,eAAO,MAAM,0BAA0B,OAAQ,CAAC;AAEhD,+EAA+E;AAC/E,MAAM,WAAW,wBAAwB;IACvC,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wBAAwB;IACxB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,oEAAoE;IACpE,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,yDAAyD;IACzD,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,yCAAyC;IACzC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,6CAA6C;AAC7C,MAAM,WAAW,2BAA4B,SAAQ,wBAAwB;IAC3E,+EAA+E;IAC/E,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAyRD;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,GAAE,wBAAwB,GAAG;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAO,GACjE,OAAO,CAAC;IAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAiDlE;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,wBAAwB,EAC9B,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,IAAI,CAAC,CAaf;AAqCD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,GAAE,2BAAgC,GACrC,OAAO,CAAC,uBAAuB,CAAC,CAqClC"}
|