@cleocode/core 2026.9.25 → 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/admin/import-tasks.d.ts.map +1 -1
- package/dist/admin/import-tasks.js +5 -2
- package/dist/admin/import-tasks.js.map +1 -1
- package/dist/admin/import.d.ts.map +1 -1
- package/dist/admin/import.js +7 -2
- package/dist/admin/import.js.map +1 -1
- package/dist/build-provenance.json +2 -2
- package/dist/cloud/index.d.ts +1 -0
- package/dist/cloud/index.d.ts.map +1 -1
- package/dist/cloud/index.js +1 -0
- package/dist/cloud/index.js.map +1 -1
- 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 +41 -4
- package/dist/cloud/nexus-auth.d.ts.map +1 -1
- package/dist/cloud/nexus-auth.js +151 -38
- 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-credentials.js +2 -2
- package/dist/cloud/nexus-credentials.js.map +1 -1
- package/dist/cloud/nexus-device.d.ts +834 -0
- package/dist/cloud/nexus-device.d.ts.map +1 -0
- package/dist/cloud/nexus-device.js +1727 -0
- package/dist/cloud/nexus-device.js.map +1 -0
- package/dist/cloud/nexus-enrol.d.ts +241 -0
- package/dist/cloud/nexus-enrol.d.ts.map +1 -0
- package/dist/cloud/nexus-enrol.js +1163 -0
- package/dist/cloud/nexus-enrol.js.map +1 -0
- package/dist/cloud/nexus-link.d.ts +10 -0
- package/dist/cloud/nexus-link.d.ts.map +1 -1
- package/dist/cloud/nexus-link.js +172 -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/cloud/signing.d.ts +20 -0
- package/dist/cloud/signing.d.ts.map +1 -1
- package/dist/cloud/signing.js +14 -0
- package/dist/cloud/signing.js.map +1 -1
- package/dist/crypto/credentials.d.ts +61 -0
- package/dist/crypto/credentials.d.ts.map +1 -1
- package/dist/crypto/credentials.js +154 -58
- package/dist/crypto/credentials.js.map +1 -1
- package/dist/docs/export-document.js +1072 -227
- package/dist/docs/export-document.js.map +3 -3
- package/dist/doctor/dependency-cycles.d.ts +41 -0
- package/dist/doctor/dependency-cycles.d.ts.map +1 -0
- package/dist/doctor/dependency-cycles.js +39 -0
- package/dist/doctor/dependency-cycles.js.map +1 -0
- package/dist/doctor/index.d.ts +2 -0
- package/dist/doctor/index.d.ts.map +1 -1
- package/dist/doctor/index.js +1 -0
- package/dist/doctor/index.js.map +1 -1
- package/dist/doctor/row-identity.d.ts +11 -0
- package/dist/doctor/row-identity.d.ts.map +1 -1
- package/dist/doctor/row-identity.js +67 -9
- package/dist/doctor/row-identity.js.map +1 -1
- package/dist/error-catalog.d.ts.map +1 -1
- package/dist/error-catalog.js +4 -0
- package/dist/error-catalog.js.map +1 -1
- package/dist/error-registry.d.ts.map +1 -1
- package/dist/error-registry.js +8 -0
- package/dist/error-registry.js.map +1 -1
- package/dist/llm/plugin-facade.js +1200 -355
- package/dist/llm/plugin-facade.js.map +3 -3
- package/dist/nexus/workspace.d.ts.map +1 -1
- package/dist/nexus/workspace.js +54 -4
- package/dist/nexus/workspace.js.map +1 -1
- package/dist/orchestrate/lifecycle-ops.js +1 -1
- package/dist/orchestrate/lifecycle-ops.js.map +1 -1
- package/dist/orchestrate/pivot.d.ts.map +1 -1
- package/dist/orchestrate/pivot.js +4 -2
- package/dist/orchestrate/pivot.js.map +1 -1
- package/dist/orchestrate/query-ops.d.ts.map +1 -1
- package/dist/orchestrate/query-ops.js +3 -3
- package/dist/orchestrate/query-ops.js.map +1 -1
- package/dist/orchestrate/spawn-ops.js +1 -1
- package/dist/orchestrate/spawn-ops.js.map +1 -1
- package/dist/orchestration/index.js +1 -1
- package/dist/orchestration/index.js.map +1 -1
- package/dist/orchestration/lead-rollup.d.ts.map +1 -1
- package/dist/orchestration/lead-rollup.js +3 -3
- package/dist/orchestration/lead-rollup.js.map +1 -1
- package/dist/orchestration/parallel.js +1 -1
- package/dist/orchestration/parallel.js.map +1 -1
- package/dist/orchestration/wave-topic.d.ts +4 -2
- package/dist/orchestration/wave-topic.d.ts.map +1 -1
- package/dist/orchestration/wave-topic.js +6 -4
- package/dist/orchestration/wave-topic.js.map +1 -1
- package/dist/orchestration/waves.d.ts +2 -1
- package/dist/orchestration/waves.d.ts.map +1 -1
- package/dist/orchestration/waves.js +4 -3
- package/dist/orchestration/waves.js.map +1 -1
- package/dist/phases/index.d.ts.map +1 -1
- package/dist/phases/index.js +4 -2
- package/dist/phases/index.js.map +1 -1
- package/dist/selfimprove/fix-gen.js +1203 -358
- package/dist/selfimprove/fix-gen.js.map +3 -3
- package/dist/session/engine-ops.d.ts.map +1 -1
- package/dist/session/engine-ops.js +77 -49
- package/dist/session/engine-ops.js.map +1 -1
- package/dist/sessions/focus-state-store.d.ts +69 -23
- package/dist/sessions/focus-state-store.d.ts.map +1 -1
- package/dist/sessions/focus-state-store.js +113 -27
- package/dist/sessions/focus-state-store.js.map +1 -1
- package/dist/sessions/handoff.js +1 -1
- package/dist/sessions/handoff.js.map +1 -1
- package/dist/sessions/index.d.ts.map +1 -1
- package/dist/sessions/index.js +24 -13
- package/dist/sessions/index.js.map +1 -1
- package/dist/sessions/terminal-identity.d.ts +165 -17
- package/dist/sessions/terminal-identity.d.ts.map +1 -1
- package/dist/sessions/terminal-identity.js +341 -32
- package/dist/sessions/terminal-identity.js.map +1 -1
- 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/skills/orchestrator/startup.js +2 -2
- package/dist/skills/orchestrator/startup.js.map +1 -1
- package/dist/snapshot/index.d.ts +4 -0
- package/dist/snapshot/index.d.ts.map +1 -1
- package/dist/snapshot/index.js +50 -3
- package/dist/snapshot/index.js.map +1 -1
- package/dist/store/db-helpers.d.ts +15 -2
- package/dist/store/db-helpers.d.ts.map +1 -1
- package/dist/store/db-helpers.js +84 -3
- package/dist/store/db-helpers.js.map +1 -1
- package/dist/store/dependency-cycles.d.ts +164 -0
- package/dist/store/dependency-cycles.d.ts.map +1 -0
- package/dist/store/dependency-cycles.js +360 -0
- package/dist/store/dependency-cycles.js.map +1 -0
- package/dist/store/display-id-alias.d.ts +93 -37
- package/dist/store/display-id-alias.d.ts.map +1 -1
- package/dist/store/display-id-alias.js +590 -115
- package/dist/store/display-id-alias.js.map +1 -1
- package/dist/store/dual-scope-db.d.ts.map +1 -1
- package/dist/store/dual-scope-db.js +34 -7
- package/dist/store/dual-scope-db.js.map +1 -1
- package/dist/store/exodus/migrate.d.ts.map +1 -1
- package/dist/store/exodus/migrate.js +8 -1
- package/dist/store/exodus/migrate.js.map +1 -1
- package/dist/store/global-salt.d.ts +35 -0
- package/dist/store/global-salt.d.ts.map +1 -1
- package/dist/store/global-salt.js +136 -16
- package/dist/store/global-salt.js.map +1 -1
- package/dist/store/migration-sqlite.d.ts.map +1 -1
- package/dist/store/migration-sqlite.js +19 -11
- package/dist/store/migration-sqlite.js.map +1 -1
- package/dist/store/portable-bundle-scan.d.ts.map +1 -1
- package/dist/store/portable-bundle-scan.js +6 -0
- package/dist/store/portable-bundle-scan.js.map +1 -1
- package/dist/store/row-identity-registry.d.ts.map +1 -1
- package/dist/store/row-identity-registry.js +11 -3
- package/dist/store/row-identity-registry.js.map +1 -1
- package/dist/store/row-identity.d.ts +91 -1
- package/dist/store/row-identity.d.ts.map +1 -1
- package/dist/store/row-identity.js +276 -7
- package/dist/store/row-identity.js.map +1 -1
- package/dist/store/safety-data-accessor.d.ts +3 -2
- package/dist/store/safety-data-accessor.d.ts.map +1 -1
- package/dist/store/safety-data-accessor.js +5 -2
- package/dist/store/safety-data-accessor.js.map +1 -1
- package/dist/store/session-store.d.ts +63 -3
- package/dist/store/session-store.d.ts.map +1 -1
- package/dist/store/session-store.js +121 -8
- package/dist/store/session-store.js.map +1 -1
- package/dist/store/split-brain-import.d.ts.map +1 -1
- package/dist/store/split-brain-import.js +36 -0
- package/dist/store/split-brain-import.js.map +1 -1
- package/dist/store/sqlite-data-accessor.d.ts +50 -3
- package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
- package/dist/store/sqlite-data-accessor.js +246 -13
- package/dist/store/sqlite-data-accessor.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/dist/store/tasks-sqlite.d.ts.map +1 -1
- package/dist/store/tasks-sqlite.js +14 -2
- package/dist/store/tasks-sqlite.js.map +1 -1
- package/dist/store/umbrella-data-accessor.d.ts +3 -2
- package/dist/store/umbrella-data-accessor.d.ts.map +1 -1
- package/dist/store/umbrella-data-accessor.js +5 -2
- package/dist/store/umbrella-data-accessor.js.map +1 -1
- package/dist/system/health.d.ts +2 -0
- package/dist/system/health.d.ts.map +1 -1
- package/dist/system/health.js +54 -0
- package/dist/system/health.js.map +1 -1
- package/dist/task-work/index.d.ts.map +1 -1
- package/dist/task-work/index.js +9 -6
- package/dist/task-work/index.js.map +1 -1
- package/dist/tasks/analyze.d.ts.map +1 -1
- package/dist/tasks/analyze.js +3 -2
- package/dist/tasks/analyze.js.map +1 -1
- package/dist/tasks/evidence.d.ts +19 -1
- package/dist/tasks/evidence.d.ts.map +1 -1
- package/dist/tasks/evidence.js +79 -18
- package/dist/tasks/evidence.js.map +1 -1
- package/dist/tasks/infer-add-params.js +1 -1
- package/dist/tasks/infer-add-params.js.map +1 -1
- package/dist/tasks/task-context.d.ts.map +1 -1
- package/dist/tasks/task-context.js +3 -1
- package/dist/tasks/task-context.js.map +1 -1
- package/dist/tasks/task-import.d.ts.map +1 -1
- package/dist/tasks/task-import.js +11 -3
- package/dist/tasks/task-import.js.map +1 -1
- package/dist/tasks/task-next.d.ts +5 -1
- package/dist/tasks/task-next.d.ts.map +1 -1
- package/dist/tasks/task-next.js +7 -2
- package/dist/tasks/task-next.js.map +1 -1
- package/dist/validation/engine-ops.d.ts.map +1 -1
- package/dist/validation/engine-ops.js +3 -2
- package/dist/validation/engine-ops.js.map +1 -1
- package/dist/workgraph/scaffold-apply.d.ts.map +1 -1
- package/dist/workgraph/scaffold-apply.js +14 -5
- package/dist/workgraph/scaffold-apply.js.map +1 -1
- package/migrations/drizzle-cleo-project/20260930160000_t12886-dependency-cycle-guard/migration.sql +76 -0
- package/migrations/drizzle-cleo-project/20260930160000_t12886-dependency-cycle-guard/revert.sql +7 -0
- package/package.json +13 -13
- package/templates/CLEO-INJECTION.md +2 -2
- package/templates/CLEO-REFERENCE.md +1 -1
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `cleo cloud whoami|devices|projects`: read-only Cleo Nexus reads with the
|
|
3
|
+
* device credential (cleo-nexus device contract v2.15, §4.2 E2, E5, E13, E14,
|
|
4
|
+
* E15; CLI mapping §4.4).
|
|
5
|
+
*
|
|
6
|
+
* - Every request is a `GET`. Nothing here writes to the server or to a
|
|
7
|
+
* project store. The one side effect is the one every device-credential
|
|
8
|
+
* command has: {@link ensureNexusDeviceCredential} retries unsettled
|
|
9
|
+
* logouts and upgrades a 9.24 session once (§3.4, §3.5).
|
|
10
|
+
* - Lists follow `nextCursor` (§4.0.3) with the largest page the server takes,
|
|
11
|
+
* up to a page budget, and report the server's `truncated` flags.
|
|
12
|
+
* - Failures are mapped by {@link nexusApiErrorToAccountError}, whose table
|
|
13
|
+
* lives in `@cleocode/contracts` (§4.0.4).
|
|
14
|
+
*
|
|
15
|
+
* No function here logs, and no result or error carries a token.
|
|
16
|
+
*
|
|
17
|
+
* @task T12871
|
|
18
|
+
* @epic T12323
|
|
19
|
+
*/
|
|
20
|
+
import { NEXUS_CLOUD_MAX_PAGES, NEXUS_PAGE_LIMIT_MAX, nexusCloudDevicePageSchema, nexusCloudProjectDetailSchema, nexusCloudProjectPageSchema, nexusCloudReplicaPageSchema, nexusCloudWhoamiSchema, } from '@cleocode/contracts';
|
|
21
|
+
import { readDeclaredProjectIdentity } from '@cleocode/paths';
|
|
22
|
+
import { resolveOrCwd } from '../paths.js';
|
|
23
|
+
import { Http, NexusError } from './http.js';
|
|
24
|
+
import { NexusAccountError, resolveNexusApiUrl } from './nexus-auth.js';
|
|
25
|
+
import { isNexusDeviceEnabled, NexusDeviceStore } from './nexus-device.js';
|
|
26
|
+
import { ensureNexusDeviceCredential, nexusApiErrorToAccountError, } from './nexus-enrol.js';
|
|
27
|
+
import { nexusLinkPath, readNexusProjectLink } from './nexus-link.js';
|
|
28
|
+
/** Timeout of one `cleo cloud` request. */
|
|
29
|
+
export const NEXUS_CLOUD_TIMEOUT_MS = 15_000;
|
|
30
|
+
/** Warning code for a non-fatal problem met while getting the device credential. */
|
|
31
|
+
export const W_NEXUS_CREDENTIAL = 'W_NEXUS_CREDENTIAL';
|
|
32
|
+
/** Warning code: a list stopped at its page budget while the server had more. */
|
|
33
|
+
export const W_NEXUS_PAGE_LIMIT = 'W_NEXUS_PAGE_LIMIT';
|
|
34
|
+
/** Warning code: a server ceiling cut a list (§4.0.3 `truncated`). */
|
|
35
|
+
export const W_NEXUS_TRUNCATED = 'W_NEXUS_TRUNCATED';
|
|
36
|
+
/**
|
|
37
|
+
* Refuse with `E_NEXUS_DEVICE_REQUIRED` when device credentials are off
|
|
38
|
+
* (`CLEO_NEXUS_DEVICE=0`): the cloud reads never fall back to a 9.24 session.
|
|
39
|
+
*
|
|
40
|
+
* @throws {NexusAccountError} `E_NEXUS_DEVICE_REQUIRED`.
|
|
41
|
+
*/
|
|
42
|
+
export function assertNexusCloudDeviceMode() {
|
|
43
|
+
if (isNexusDeviceEnabled())
|
|
44
|
+
return;
|
|
45
|
+
throw new NexusAccountError('E_NEXUS_DEVICE_REQUIRED', '`cleo cloud` reads use the device credential, which CLEO_NEXUS_DEVICE=0 turns off', 'unset CLEO_NEXUS_DEVICE and run `cleo login nexus`');
|
|
46
|
+
}
|
|
47
|
+
/** Wrap credential warnings (plain strings) as envelope warnings. */
|
|
48
|
+
export function nexusCredentialWarnings(warnings) {
|
|
49
|
+
return warnings.map((message) => ({ code: W_NEXUS_CREDENTIAL, message }));
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Open a read-only connection with this machine's device credential.
|
|
53
|
+
*
|
|
54
|
+
* @param opts - API URL, account, stores and test overrides.
|
|
55
|
+
* @returns The connection.
|
|
56
|
+
* @throws {NexusAccountError} `E_NEXUS_DEVICE_REQUIRED`, `E_NEXUS_NOT_SIGNED_IN`,
|
|
57
|
+
* `E_NEXUS_ACCOUNT_AMBIGUOUS`, or an upgrade failure.
|
|
58
|
+
*/
|
|
59
|
+
export async function connectNexusCloud(opts = {}) {
|
|
60
|
+
assertNexusCloudDeviceMode();
|
|
61
|
+
const apiUrl = resolveNexusApiUrl(opts.apiUrl);
|
|
62
|
+
const handle = await ensureNexusDeviceCredential({ ...opts, apiUrl });
|
|
63
|
+
const bearer = handle.device.currentBearer();
|
|
64
|
+
if (bearer === null) {
|
|
65
|
+
throw new NexusAccountError('E_NEXUS_NOT_SIGNED_IN', `not signed in to Cleo Nexus at ${apiUrl}`, 'run `cleo login nexus`');
|
|
66
|
+
}
|
|
67
|
+
const base = opts.fetch ?? ((input, init) => globalThis.fetch(input, init));
|
|
68
|
+
const timeoutMs = opts.timeoutMs ?? NEXUS_CLOUD_TIMEOUT_MS;
|
|
69
|
+
const timed = (input, init) => base(input, { ...init, signal: AbortSignal.timeout(timeoutMs) });
|
|
70
|
+
const http = new Http({ baseUrl: apiUrl, token: bearer, fetch: timed, maxAttempts: 1 });
|
|
71
|
+
return {
|
|
72
|
+
apiUrl,
|
|
73
|
+
device: handle.device,
|
|
74
|
+
warnings: nexusCredentialWarnings(handle.warnings),
|
|
75
|
+
async get(path, schema) {
|
|
76
|
+
try {
|
|
77
|
+
return await http.request('GET', path, schema);
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
throw nexusApiErrorToAccountError(err);
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
async find(path, schema) {
|
|
84
|
+
try {
|
|
85
|
+
return await http.request('GET', path, schema);
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
if (err instanceof NexusError && err.status === 404 && err.code === 'E_NOT_FOUND') {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
throw nexusApiErrorToAccountError(err);
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/** A path with its query string; `undefined` values are left out. */
|
|
97
|
+
export function nexusQueryPath(path, query) {
|
|
98
|
+
const params = new URLSearchParams();
|
|
99
|
+
for (const [k, v] of Object.entries(query))
|
|
100
|
+
if (v !== undefined)
|
|
101
|
+
params.set(k, String(v));
|
|
102
|
+
const qs = params.toString();
|
|
103
|
+
return qs === '' ? path : `${path}?${qs}`;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Follow `nextCursor` until the server has no more or the budget is spent.
|
|
107
|
+
*
|
|
108
|
+
* @param fetchPage - Fetch the page after `cursor` (`null` for the first).
|
|
109
|
+
* @param maxPages - Page budget (at least 1).
|
|
110
|
+
* @returns Every page fetched and the paging facts.
|
|
111
|
+
*/
|
|
112
|
+
export async function followNexusPages(fetchPage, maxPages) {
|
|
113
|
+
const pages = [];
|
|
114
|
+
let cursor = null;
|
|
115
|
+
const budget = Math.max(1, Math.floor(maxPages));
|
|
116
|
+
do {
|
|
117
|
+
const page = await fetchPage(cursor);
|
|
118
|
+
pages.push(page);
|
|
119
|
+
cursor = page.nextCursor;
|
|
120
|
+
} while (cursor !== null && pages.length < budget);
|
|
121
|
+
return {
|
|
122
|
+
pages,
|
|
123
|
+
paging: {
|
|
124
|
+
pages: pages.length,
|
|
125
|
+
truncated: pages.some((p) => p.truncated),
|
|
126
|
+
pageLimitReached: cursor !== null,
|
|
127
|
+
},
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
/** The warnings a list's paging facts call for. */
|
|
131
|
+
export function nexusPagingWarnings(what, paging) {
|
|
132
|
+
const out = [];
|
|
133
|
+
if (paging.truncated) {
|
|
134
|
+
out.push({
|
|
135
|
+
code: W_NEXUS_TRUNCATED,
|
|
136
|
+
message: `the server cut the ${what} at its hard ceiling; counts in the rows are exact, the list is not`,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
if (paging.pageLimitReached) {
|
|
140
|
+
out.push({
|
|
141
|
+
code: W_NEXUS_PAGE_LIMIT,
|
|
142
|
+
message: `stopped after ${paging.pages} page(s) of ${what}; the server has more`,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
return out;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* The current CLEO project, or `null` outside one (or without a project id).
|
|
149
|
+
*
|
|
150
|
+
* @param apiUrl - API origin whose link entry to read.
|
|
151
|
+
* @param projectRoot - Explicit project root; defaults to the current one.
|
|
152
|
+
* @returns The project, its id and link entry, or `null`.
|
|
153
|
+
*/
|
|
154
|
+
export function currentNexusCloudProject(apiUrl, projectRoot) {
|
|
155
|
+
let root;
|
|
156
|
+
try {
|
|
157
|
+
root = resolveOrCwd(projectRoot);
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
return null;
|
|
161
|
+
}
|
|
162
|
+
const identity = readDeclaredProjectIdentity(root);
|
|
163
|
+
if (!identity)
|
|
164
|
+
return null;
|
|
165
|
+
return {
|
|
166
|
+
root,
|
|
167
|
+
projectId: identity.projectId,
|
|
168
|
+
link: readNexusProjectLink(root, apiUrl),
|
|
169
|
+
linkPath: nexusLinkPath(root),
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* `cleo cloud whoami`: E2 `GET /v1/whoami`.
|
|
174
|
+
*
|
|
175
|
+
* @param opts - API URL, account, stores and test overrides.
|
|
176
|
+
* @returns Who is calling: user, organizations, credential and device.
|
|
177
|
+
*/
|
|
178
|
+
export async function nexusCloudWhoami(opts = {}) {
|
|
179
|
+
const conn = await connectNexusCloud(opts);
|
|
180
|
+
const whoami = await conn.get('/v1/whoami', nexusCloudWhoamiSchema);
|
|
181
|
+
return { apiUrl: conn.apiUrl, ...whoami, warnings: conn.warnings };
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* `cleo cloud devices`: E5 `GET /v1/devices`, every page.
|
|
185
|
+
*
|
|
186
|
+
* @param opts - State filter, paging and test overrides.
|
|
187
|
+
* @returns Every device, newest first, with paging facts.
|
|
188
|
+
*/
|
|
189
|
+
export async function listNexusCloudDevices(opts = {}) {
|
|
190
|
+
const conn = await connectNexusCloud(opts);
|
|
191
|
+
const limit = opts.pageLimit ?? NEXUS_PAGE_LIMIT_MAX;
|
|
192
|
+
const { pages, paging } = await followNexusPages((cursor) => conn.get(nexusQueryPath('/v1/devices', { limit, cursor: cursor ?? undefined, state: opts.state }), nexusCloudDevicePageSchema), opts.maxPages ?? NEXUS_CLOUD_MAX_PAGES);
|
|
193
|
+
const devices = pages.flatMap((p) => p.devices);
|
|
194
|
+
return {
|
|
195
|
+
apiUrl: conn.apiUrl,
|
|
196
|
+
state: opts.state ?? null,
|
|
197
|
+
devices,
|
|
198
|
+
count: devices.length,
|
|
199
|
+
paging,
|
|
200
|
+
warnings: [...conn.warnings, ...nexusPagingWarnings('device list', paging)],
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* `cleo cloud projects`: E13 `GET /v1/projects`, every page.
|
|
205
|
+
*
|
|
206
|
+
* @param opts - Organization filter, paging and test overrides.
|
|
207
|
+
* @returns Every visible project, newest first, with paging facts.
|
|
208
|
+
*/
|
|
209
|
+
export async function listNexusCloudProjects(opts = {}) {
|
|
210
|
+
const conn = await connectNexusCloud(opts);
|
|
211
|
+
const limit = opts.pageLimit ?? NEXUS_PAGE_LIMIT_MAX;
|
|
212
|
+
const { pages, paging } = await followNexusPages((cursor) => conn.get(nexusQueryPath('/v1/projects', {
|
|
213
|
+
limit,
|
|
214
|
+
cursor: cursor ?? undefined,
|
|
215
|
+
organizationId: opts.organizationId,
|
|
216
|
+
}), nexusCloudProjectPageSchema), opts.maxPages ?? NEXUS_CLOUD_MAX_PAGES);
|
|
217
|
+
const projects = pages.flatMap((p) => p.projects);
|
|
218
|
+
const full = { ...paging, projectsTruncated: pages.some((p) => p.projectsTruncated) };
|
|
219
|
+
return {
|
|
220
|
+
apiUrl: conn.apiUrl,
|
|
221
|
+
organizationId: opts.organizationId ?? null,
|
|
222
|
+
projects,
|
|
223
|
+
count: projects.length,
|
|
224
|
+
paging: full,
|
|
225
|
+
warnings: [...conn.warnings, ...nexusPagingWarnings('project list', paging)],
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Every replica of a project from E15, following its cursors.
|
|
230
|
+
*
|
|
231
|
+
* @param conn - Connection.
|
|
232
|
+
* @param projectId - Project id.
|
|
233
|
+
* @param opts - Paging overrides.
|
|
234
|
+
* @returns The replicas, oldest attachment first, and the paging facts.
|
|
235
|
+
*/
|
|
236
|
+
export async function listNexusCloudReplicas(conn, projectId, opts = {}) {
|
|
237
|
+
const limit = opts.pageLimit ?? NEXUS_PAGE_LIMIT_MAX;
|
|
238
|
+
const { pages, paging } = await followNexusPages((cursor) => conn.get(nexusQueryPath(`/v1/projects/${encodeURIComponent(projectId)}/replicas`, {
|
|
239
|
+
limit,
|
|
240
|
+
cursor: cursor ?? undefined,
|
|
241
|
+
}), nexusCloudReplicaPageSchema), opts.maxPages ?? NEXUS_CLOUD_MAX_PAGES);
|
|
242
|
+
return { replicas: pages.flatMap((p) => p.replicas), paging };
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* `cleo cloud projects show [<id>]`: E14 `GET /v1/projects/:projectId`. When
|
|
246
|
+
* E14 cut its replica list at 50, the full list is read from E15.
|
|
247
|
+
*
|
|
248
|
+
* @param opts - Project id (default: the current project), paging and test overrides.
|
|
249
|
+
* @returns The project detail.
|
|
250
|
+
* @throws {NexusAccountError} `E_NEXUS_NOT_A_PROJECT` with no id outside a
|
|
251
|
+
* project; `E_NEXUS_REQUEST_FAILED` for an unknown or invisible project.
|
|
252
|
+
*/
|
|
253
|
+
export async function showNexusCloudProject(opts = {}) {
|
|
254
|
+
const apiUrl = resolveNexusApiUrl(opts.apiUrl);
|
|
255
|
+
let projectId = opts.projectId;
|
|
256
|
+
const currentProject = projectId === undefined;
|
|
257
|
+
if (projectId === undefined) {
|
|
258
|
+
const project = currentNexusCloudProject(apiUrl, opts.projectRoot);
|
|
259
|
+
if (project === null) {
|
|
260
|
+
throw new NexusAccountError('E_NEXUS_NOT_A_PROJECT', 'no project id given and not inside a CLEO project', 'pass a project id (`cleo cloud projects show <id>`) or run it inside a CLEO project');
|
|
261
|
+
}
|
|
262
|
+
projectId = project.link?.remoteProjectId ?? project.projectId;
|
|
263
|
+
}
|
|
264
|
+
const conn = await connectNexusCloud({ ...opts, apiUrl });
|
|
265
|
+
const detail = await conn.get(`/v1/projects/${encodeURIComponent(projectId)}`, nexusCloudProjectDetailSchema);
|
|
266
|
+
let replicaPaging = {
|
|
267
|
+
pages: 0,
|
|
268
|
+
truncated: detail.truncated,
|
|
269
|
+
pageLimitReached: false,
|
|
270
|
+
};
|
|
271
|
+
let replicas = detail.replicas;
|
|
272
|
+
if (detail.truncated) {
|
|
273
|
+
const all = await listNexusCloudReplicas(conn, projectId, opts);
|
|
274
|
+
replicas = all.replicas;
|
|
275
|
+
replicaPaging = all.paging;
|
|
276
|
+
}
|
|
277
|
+
return {
|
|
278
|
+
...detail,
|
|
279
|
+
replicas,
|
|
280
|
+
apiUrl: conn.apiUrl,
|
|
281
|
+
projectId,
|
|
282
|
+
currentProject,
|
|
283
|
+
replicaPaging,
|
|
284
|
+
warnings: [...conn.warnings, ...nexusPagingWarnings('replica list', replicaPaging)],
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* The device credential store's location, for reports (never its contents).
|
|
289
|
+
*
|
|
290
|
+
* @param store - The store in use, if injected.
|
|
291
|
+
* @returns Absolute path of `nexus-device.json`.
|
|
292
|
+
*/
|
|
293
|
+
export function nexusCloudCredentialsPath(store) {
|
|
294
|
+
return (store ?? new NexusDeviceStore()).location;
|
|
295
|
+
}
|
|
296
|
+
//# sourceMappingURL=nexus-cloud.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nexus-cloud.js","sourceRoot":"","sources":["../../src/cloud/nexus-cloud.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@ import { closeSync, constants as fsConstants, lstatSync, mkdirSync, openSync, re
|
|
|
24
24
|
import { basename, dirname, join } from 'node:path';
|
|
25
25
|
import { inspect } from 'node:util';
|
|
26
26
|
import { nexusAccountOrganizationSchema, nexusAccountUserSchema, } from '@cleocode/contracts';
|
|
27
|
-
import {
|
|
27
|
+
import { resolveNexusCredentialsPath } from '@cleocode/paths';
|
|
28
28
|
import { z } from 'zod';
|
|
29
29
|
import { withLock } from '../store/file-utils.js';
|
|
30
30
|
/** File name of the store, directly under the CLEO home. */
|
|
@@ -138,7 +138,7 @@ export function nexusOriginKey(apiUrl) {
|
|
|
138
138
|
* @returns `<cleoHome>/nexus-credentials.json`.
|
|
139
139
|
*/
|
|
140
140
|
export function nexusCredentialsPath() {
|
|
141
|
-
return
|
|
141
|
+
return resolveNexusCredentialsPath();
|
|
142
142
|
}
|
|
143
143
|
/**
|
|
144
144
|
* File-backed {@link NexusTokenStore}: `<cleoHome>/nexus-credentials.json`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nexus-credentials.js","sourceRoot":"","sources":["../../src/cloud/nexus-credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EACL,SAAS,EACT,SAAS,IAAI,WAAW,EACxB,SAAS,EACT,SAAS,EACT,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,SAAS,GACV,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAGL,8BAA8B,EAC9B,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"nexus-credentials.js","sourceRoot":"","sources":["../../src/cloud/nexus-credentials.ts"],"names":[],"mappings":"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"}
|