@microwiseai/snapshot 0.8.0 → 0.9.0
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-info.json +1 -0
- package/dist/commands/access.d.ts +25 -9
- package/dist/commands/access.d.ts.map +1 -1
- package/dist/commands/access.js +101 -47
- package/dist/commands/access.js.map +1 -1
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +37 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/install.d.ts +54 -0
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +480 -65
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/publish.d.ts +10 -0
- package/dist/commands/publish.d.ts.map +1 -1
- package/dist/commands/publish.js +94 -12
- package/dist/commands/publish.js.map +1 -1
- package/dist/index.js +45 -8
- package/dist/index.js.map +1 -1
- package/dist/lib/access-index.d.ts +81 -0
- package/dist/lib/access-index.d.ts.map +1 -0
- package/dist/lib/access-index.js +175 -0
- package/dist/lib/access-index.js.map +1 -0
- package/dist/lib/access-sync.d.ts +66 -17
- package/dist/lib/access-sync.d.ts.map +1 -1
- package/dist/lib/access-sync.js +391 -217
- package/dist/lib/access-sync.js.map +1 -1
- package/dist/lib/extends-access.d.ts +34 -0
- package/dist/lib/extends-access.d.ts.map +1 -0
- package/dist/lib/extends-access.js +82 -0
- package/dist/lib/extends-access.js.map +1 -0
- package/dist/lib/gitlab-publisher.d.ts +70 -0
- package/dist/lib/gitlab-publisher.d.ts.map +1 -0
- package/dist/lib/gitlab-publisher.js +165 -0
- package/dist/lib/gitlab-publisher.js.map +1 -0
- package/dist/lib/gitlab.d.ts +4 -0
- package/dist/lib/gitlab.d.ts.map +1 -1
- package/dist/lib/gitlab.js +1 -1
- package/dist/lib/gitlab.js.map +1 -1
- package/dist/lib/grant.d.ts +157 -0
- package/dist/lib/grant.d.ts.map +1 -0
- package/dist/lib/grant.js +352 -0
- package/dist/lib/grant.js.map +1 -0
- package/dist/lib/install-verify.d.ts +16 -2
- package/dist/lib/install-verify.d.ts.map +1 -1
- package/dist/lib/install-verify.js +24 -3
- package/dist/lib/install-verify.js.map +1 -1
- package/dist/lib/ledger.d.ts +13 -0
- package/dist/lib/ledger.d.ts.map +1 -1
- package/dist/lib/ledger.js.map +1 -1
- package/dist/lib/prerequisites.d.ts.map +1 -1
- package/dist/lib/prerequisites.js +4 -1
- package/dist/lib/prerequisites.js.map +1 -1
- package/dist/lib/proxy-auth-globalconfig.d.ts +55 -0
- package/dist/lib/proxy-auth-globalconfig.d.ts.map +1 -0
- package/dist/lib/proxy-auth-globalconfig.js +110 -0
- package/dist/lib/proxy-auth-globalconfig.js.map +1 -0
- package/dist/lib/semver-range.d.ts +32 -0
- package/dist/lib/semver-range.d.ts.map +1 -0
- package/dist/lib/semver-range.js +243 -0
- package/dist/lib/semver-range.js.map +1 -0
- package/dist/lib/session.d.ts +5 -0
- package/dist/lib/session.d.ts.map +1 -1
- package/dist/lib/session.js +9 -0
- package/dist/lib/session.js.map +1 -1
- package/dist/lib/skit-adapter.d.ts.map +1 -1
- package/dist/lib/skit-adapter.js +26 -3
- package/dist/lib/skit-adapter.js.map +1 -1
- package/dist/lib/timing.d.ts +7 -0
- package/dist/lib/timing.d.ts.map +1 -0
- package/dist/lib/timing.js +14 -0
- package/dist/lib/timing.js.map +1 -0
- package/dist/lib/types.d.ts +3 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/command-specs.d.ts +25 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/command-specs.d.ts.map +1 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/command-specs.js +55 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/command-specs.js.map +1 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/config.d.ts +52 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/config.d.ts.map +1 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/config.js +62 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/config.js.map +1 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/detect.d.ts +30 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/detect.d.ts.map +1 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/detect.js +39 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/detect.js.map +1 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/index.d.ts +35 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/index.d.ts.map +1 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/index.js +31 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/index.js.map +1 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/policy.d.ts +42 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/policy.d.ts.map +1 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/policy.js +36 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/policy.js.map +1 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/report.d.ts +11 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/report.d.ts.map +1 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/report.js +46 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/report.js.map +1 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/semver.d.ts +11 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/semver.d.ts.map +1 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/semver.js +81 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/semver.js.map +1 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/types.d.ts +29 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/types.d.ts.map +1 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/types.js +6 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/dist/types.js.map +1 -0
- package/node_modules/@microwiseai/snapshot-downgrade-guard/package.json +55 -0
- package/package.json +5 -2
- package/dist/lib/transitive-resolver.d.ts +0 -89
- package/dist/lib/transitive-resolver.d.ts.map +0 -1
- package/dist/lib/transitive-resolver.js +0 -447
- package/dist/lib/transitive-resolver.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"gitSha":"f9d767748eb5"}
|
|
@@ -1,17 +1,33 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Access
|
|
2
|
+
* Access commands
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* snapshot access
|
|
4
|
+
* snapshot access sync [path] - RETIRED (license-api write path)
|
|
5
|
+
* snapshot access-index <snapshot> --version … - backfill access-index.json
|
|
6
6
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
export declare const ACCESS_SYNC_RETIRED_MESSAGE: string;
|
|
8
|
+
/** Disabled: fails loudly with the contract reference. No network calls. */
|
|
9
|
+
export declare function accessSyncCommand(): Promise<void>;
|
|
10
|
+
export interface AccessIndexOptions {
|
|
11
|
+
version?: string[];
|
|
12
|
+
all?: boolean;
|
|
13
|
+
force?: boolean;
|
|
9
14
|
dryRun?: boolean;
|
|
10
|
-
|
|
15
|
+
allowPartial?: boolean;
|
|
16
|
+
/** --dry-run output directory (one file per version). */
|
|
17
|
+
out?: string;
|
|
18
|
+
verbose?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface AccessIndexOutcome {
|
|
21
|
+
version: string;
|
|
22
|
+
status: 'uploaded' | 'dry-run' | 'skipped-exists' | 'failed' | 'not-found';
|
|
23
|
+
packages?: number;
|
|
24
|
+
detail?: string;
|
|
25
|
+
file?: string;
|
|
11
26
|
}
|
|
12
27
|
/**
|
|
13
|
-
*
|
|
28
|
+
* Backfill access-index.json for already-published snapshot versions.
|
|
29
|
+
* snapshot.json is read from the registry (never a local file); only
|
|
30
|
+
* access-index.json is uploaded — the tarball is never re-published.
|
|
14
31
|
*/
|
|
15
|
-
export declare function
|
|
16
|
-
export {};
|
|
32
|
+
export declare function accessIndexCommand(snapshotArg: string, options?: AccessIndexOptions): Promise<AccessIndexOutcome[]>;
|
|
17
33
|
//# sourceMappingURL=access.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../../src/commands/access.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../../src/commands/access.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAmBH,eAAO,MAAM,2BAA2B,QAM8C,CAAC;AAEvF,4EAA4E;AAC5E,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAKvD;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,yDAAyD;IACzD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,gBAAgB,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAwF/B"}
|
package/dist/commands/access.js
CHANGED
|
@@ -1,68 +1,122 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Access
|
|
2
|
+
* Access commands
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* snapshot access
|
|
4
|
+
* snapshot access sync [path] - RETIRED (license-api write path)
|
|
5
|
+
* snapshot access-index <snapshot> --version … - backfill access-index.json
|
|
6
6
|
*/
|
|
7
|
-
import { readFile } from 'node:fs/promises';
|
|
8
|
-
import { join, resolve } from 'node:path';
|
|
9
7
|
import chalk from 'chalk';
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
throw new Error(`snapshot.json not found at: ${finalPath}`);
|
|
29
|
-
}
|
|
30
|
-
throw new Error(`Failed to read snapshot.json: ${error instanceof Error ? error.message : String(error)}`);
|
|
31
|
-
}
|
|
8
|
+
import { fetchSnapshotFromRepo, parseSnapshotSpec, snapshotNameToPackageName } from '../lib/gitlab.js';
|
|
9
|
+
import { ACCESS_INDEX_FILE, PartialClosureError, generateAccessIndex, listGenericPackageVersions, listPackageFiles, serializeAccessIndex, uploadAccessIndex, } from '../lib/access-index.js';
|
|
10
|
+
import { compareVersions, parseVersion } from '../lib/semver-range.js';
|
|
11
|
+
import { describeIndex, writeIndexFile } from './publish.js';
|
|
12
|
+
import { join, resolve } from 'node:path';
|
|
13
|
+
import { mkdir } from 'node:fs/promises';
|
|
14
|
+
export const ACCESS_SYNC_RETIRED_MESSAGE = '`snapshot access sync` is retired: license-api package_access is no longer written.\n' +
|
|
15
|
+
' Contract (global snapshot-tier-access, 2026-09-28 owner decision): "license-api package_access 에\n' +
|
|
16
|
+
' snapshot 의존 패키지를 등록하지 않음(access-sync 의 license-api 쓰기 경로 폐기)".\n' +
|
|
17
|
+
' Serving SSOT is access-index.json in each published snapshot version:\n' +
|
|
18
|
+
' - new versions: snapshot publish (uploads it automatically)\n' +
|
|
19
|
+
' - existing versions: snapshot access-index <snapshot> --version <v> (or --all)';
|
|
20
|
+
/** Disabled: fails loudly with the contract reference. No network calls. */
|
|
21
|
+
export async function accessSyncCommand() {
|
|
22
|
+
console.error();
|
|
23
|
+
console.error(chalk.red('Error:'), ACCESS_SYNC_RETIRED_MESSAGE);
|
|
24
|
+
console.error();
|
|
25
|
+
process.exitCode = 1;
|
|
32
26
|
}
|
|
33
27
|
/**
|
|
34
|
-
*
|
|
28
|
+
* Backfill access-index.json for already-published snapshot versions.
|
|
29
|
+
* snapshot.json is read from the registry (never a local file); only
|
|
30
|
+
* access-index.json is uploaded — the tarball is never re-published.
|
|
35
31
|
*/
|
|
36
|
-
export async function
|
|
37
|
-
const {
|
|
38
|
-
|
|
39
|
-
console.log(chalk.cyan('Syncing package access...'));
|
|
32
|
+
export async function accessIndexCommand(snapshotArg, options = {}) {
|
|
33
|
+
const { force = false, dryRun = false, allowPartial = false, verbose = false } = options;
|
|
34
|
+
const outcomes = [];
|
|
40
35
|
try {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
console.log(chalk.yellow('\n Warning: No "access" field in snapshot.json'));
|
|
44
|
-
console.log(chalk.dim(' Add "access": "public", "access": "authenticated", or "access": { "type": "licensed", "productId": "..." }'));
|
|
45
|
-
console.log();
|
|
46
|
-
return;
|
|
36
|
+
if (allowPartial && !dryRun) {
|
|
37
|
+
throw new Error('--allow-partial is only allowed with --dry-run (a partial access-index must not be uploaded)');
|
|
47
38
|
}
|
|
48
|
-
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
console.log(chalk.green('\n✓ Access sync completed!'));
|
|
39
|
+
const { name, version: specVersion } = parseSnapshotSpec(snapshotArg);
|
|
40
|
+
const packageName = snapshotNameToPackageName(name);
|
|
41
|
+
const published = await listGenericPackageVersions(packageName);
|
|
42
|
+
const byVersion = new Map(published.map((p) => [p.version, p]));
|
|
43
|
+
let targets;
|
|
44
|
+
if (options.all) {
|
|
45
|
+
targets = [...byVersion.keys()];
|
|
56
46
|
}
|
|
57
47
|
else {
|
|
58
|
-
|
|
48
|
+
targets = [...(options.version ?? []), ...(specVersion ? [specVersion] : [])];
|
|
49
|
+
}
|
|
50
|
+
targets = [...new Set(targets)].sort((a, b) => {
|
|
51
|
+
const pa = parseVersion(a);
|
|
52
|
+
const pb = parseVersion(b);
|
|
53
|
+
return pa && pb ? compareVersions(pa, pb) : a.localeCompare(b);
|
|
54
|
+
});
|
|
55
|
+
if (targets.length === 0) {
|
|
56
|
+
throw new Error('No version given: use --version <v> (repeatable) or --all');
|
|
57
|
+
}
|
|
58
|
+
console.log();
|
|
59
|
+
console.log(chalk.cyan(`access-index backfill: ${name} (${targets.length} version(s))${dryRun ? ' [dry-run]' : ''}`));
|
|
60
|
+
for (const version of targets) {
|
|
61
|
+
const pkg = byVersion.get(version);
|
|
62
|
+
if (!pkg) {
|
|
63
|
+
console.log(chalk.red(` ✗ ${version}: not published (${packageName})`));
|
|
64
|
+
outcomes.push({ version, status: 'not-found' });
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
try {
|
|
68
|
+
const files = await listPackageFiles(pkg);
|
|
69
|
+
if (files.includes(ACCESS_INDEX_FILE) && !force) {
|
|
70
|
+
console.log(chalk.dim(` ⊘ ${version}: ${ACCESS_INDEX_FILE} already present (use --force to re-upload)`));
|
|
71
|
+
outcomes.push({ version, status: 'skipped-exists' });
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
const snapshot = await fetchSnapshotFromRepo(`${name}@${version}`);
|
|
75
|
+
if (snapshot.name !== name || snapshot.version !== version) {
|
|
76
|
+
throw new Error(`registry snapshot.json says ${snapshot.name}@${snapshot.version}, expected ${name}@${version}`);
|
|
77
|
+
}
|
|
78
|
+
const { index, gaps } = await generateAccessIndex(snapshot, { allowPartial, verbose });
|
|
79
|
+
for (const g of gaps)
|
|
80
|
+
console.log(chalk.yellow(` gap (--allow-partial): ${g}`));
|
|
81
|
+
const body = serializeAccessIndex(index);
|
|
82
|
+
if (dryRun) {
|
|
83
|
+
let file;
|
|
84
|
+
if (options.out) {
|
|
85
|
+
await mkdir(resolve(options.out), { recursive: true });
|
|
86
|
+
file = await writeIndexFile(body, join(options.out, `${packageName}-${version}.${ACCESS_INDEX_FILE}`));
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
file = await writeIndexFile(body);
|
|
90
|
+
}
|
|
91
|
+
console.log(chalk.yellow(` [dry-run] ${version}: ${describeIndex(index)} → ${file}`));
|
|
92
|
+
outcomes.push({ version, status: 'dry-run', packages: index.packages.length, file });
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
await uploadAccessIndex(pkg, body);
|
|
96
|
+
console.log(chalk.green(` ✓ ${version}: uploaded — ${describeIndex(index)}`));
|
|
97
|
+
outcomes.push({ version, status: 'uploaded', packages: index.packages.length });
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
const detail = error instanceof PartialClosureError
|
|
102
|
+
? `partial closure: ${error.gaps.join('; ')}`
|
|
103
|
+
: error instanceof Error ? error.message : String(error);
|
|
104
|
+
console.log(chalk.red(` ✗ ${version}: ${detail}`));
|
|
105
|
+
outcomes.push({ version, status: 'failed', detail });
|
|
106
|
+
}
|
|
59
107
|
}
|
|
108
|
+
const count = (s) => outcomes.filter((o) => o.status === s).length;
|
|
60
109
|
console.log();
|
|
110
|
+
console.log(` uploaded ${count('uploaded')}, dry-run ${count('dry-run')}, skipped ${count('skipped-exists')}, ` +
|
|
111
|
+
`failed ${count('failed')}, not-found ${count('not-found')}`);
|
|
112
|
+
if (count('failed') + count('not-found') > 0)
|
|
113
|
+
process.exitCode = 1;
|
|
61
114
|
}
|
|
62
115
|
catch (error) {
|
|
63
116
|
console.error();
|
|
64
117
|
console.error(chalk.red('Error:'), error instanceof Error ? error.message : String(error));
|
|
65
118
|
process.exitCode = 1;
|
|
66
119
|
}
|
|
120
|
+
return outcomes;
|
|
67
121
|
}
|
|
68
122
|
//# sourceMappingURL=access.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access.js","sourceRoot":"","sources":["../../src/commands/access.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"access.js","sourceRoot":"","sources":["../../src/commands/access.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAuBA,wBAAsB,gBAAgB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQlE;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAahF"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { getConfigPath, getMachineDowngradeMode, setMachineDowngradeMode, asDowngradeMode, DOWNGRADE_MODES, } from '@microwiseai/snapshot-downgrade-guard';
|
|
3
|
+
/**
|
|
4
|
+
* Thin `snapshot config` command. All read/write logic lives in
|
|
5
|
+
* @microwiseai/snapshot-downgrade-guard so core stays a thin wire. Currently
|
|
6
|
+
* only `install.onDowngrade` is supported.
|
|
7
|
+
*/
|
|
8
|
+
const SUPPORTED_KEYS = ['install.onDowngrade'];
|
|
9
|
+
function unknownKey(key) {
|
|
10
|
+
console.log(chalk.red(`Unknown config key: ${key}`));
|
|
11
|
+
console.log(chalk.gray(`Supported keys: ${SUPPORTED_KEYS.join(', ')}`));
|
|
12
|
+
process.exit(1);
|
|
13
|
+
}
|
|
14
|
+
export async function configGetCommand(key) {
|
|
15
|
+
const current = getMachineDowngradeMode() ?? '(unset — default: refuse)';
|
|
16
|
+
if (!key || key === 'install.onDowngrade') {
|
|
17
|
+
if (!key)
|
|
18
|
+
console.log(chalk.gray(`Config file: ${getConfigPath()}`));
|
|
19
|
+
console.log(`install.onDowngrade = ${current}`);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
unknownKey(key);
|
|
23
|
+
}
|
|
24
|
+
export async function configSetCommand(key, value) {
|
|
25
|
+
if (key !== 'install.onDowngrade')
|
|
26
|
+
unknownKey(key);
|
|
27
|
+
const mode = asDowngradeMode(value);
|
|
28
|
+
if (!mode) {
|
|
29
|
+
console.log(chalk.red(`Invalid value for install.onDowngrade: "${value}"`));
|
|
30
|
+
console.log(chalk.gray(`Allowed values: ${DOWNGRADE_MODES.join(', ')}`));
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
setMachineDowngradeMode(mode);
|
|
34
|
+
console.log(chalk.green('✓') + ` install.onDowngrade = ${mode}`);
|
|
35
|
+
console.log(chalk.gray(`Saved to ${getConfigPath()}`));
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,aAAa,EACb,uBAAuB,EACvB,uBAAuB,EACvB,eAAe,EACf,eAAe,GAChB,MAAM,uCAAuC,CAAC;AAE/C;;;;GAIG;AAEH,MAAM,cAAc,GAAG,CAAC,qBAAqB,CAAU,CAAC;AAExD,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAY;IACjD,MAAM,OAAO,GAAG,uBAAuB,EAAE,IAAI,2BAA2B,CAAC;IACzE,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,qBAAqB,EAAE,CAAC;QAC1C,IAAI,CAAC,GAAG;YAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;IACD,UAAU,CAAC,GAAG,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAW,EAAE,KAAa;IAC/D,IAAI,GAAG,KAAK,qBAAqB;QAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IAEnD,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACpC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,2CAA2C,KAAK,GAAG,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,0BAA0B,IAAI,EAAE,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC"}
|
|
@@ -1,9 +1,44 @@
|
|
|
1
1
|
import type { Snapshot, InstallerConfig } from '../lib/types.js';
|
|
2
|
+
import { type DowngradeMode } from '@microwiseai/snapshot-downgrade-guard';
|
|
2
3
|
import { StepRecorder } from '../lib/ledger.js';
|
|
3
4
|
export interface InstallResult {
|
|
4
5
|
installed: string[];
|
|
5
6
|
failed: string[];
|
|
6
7
|
}
|
|
8
|
+
export declare class DowngradeRefusedError extends Error {
|
|
9
|
+
constructor(message: string);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Publish (or clear) the downgrade policy resolved upstream by installCommand so
|
|
13
|
+
* the exec boundary reuses it. Exported as a test seam.
|
|
14
|
+
*/
|
|
15
|
+
export declare function setActiveDowngradeMode(mode: DowngradeMode | undefined): void;
|
|
16
|
+
/**
|
|
17
|
+
* Run a command with FULLY LIVE output (spawn, async).
|
|
18
|
+
*
|
|
19
|
+
* Why spawn+async (not execSync): npm writes its progress bar to STDERR, and the
|
|
20
|
+
* previous `execSync(stdio:['inherit','inherit','pipe'])` piped stderr — which
|
|
21
|
+
* (a) hid npm's live progress (looked "frozen" for tens of seconds) and
|
|
22
|
+
* (b) blocked the event loop so no JS spinner could ever turn. Inheriting all
|
|
23
|
+
* three streams lets npm's own progress render live to the terminal while the
|
|
24
|
+
* event loop stays free. See install-speed-visibility work (B).
|
|
25
|
+
*
|
|
26
|
+
* On failure we can no longer capture the stderr text (it went straight to the
|
|
27
|
+
* terminal, so the user already SAW it) — `lastCommandError` carries the exit
|
|
28
|
+
* code instead.
|
|
29
|
+
*/
|
|
30
|
+
export declare function runCommand(command: string): Promise<boolean>;
|
|
31
|
+
/**
|
|
32
|
+
* Synchronous streaming variant — used ONLY by the converge re-pin callback,
|
|
33
|
+
* which is invoked from the pure/sync `runConverge` (lib/install-verify.ts).
|
|
34
|
+
* Keeping this sync avoids making `runConverge` async (which would ripple into
|
|
35
|
+
* its unit-test suite and break its pure-function contract). `spawnSync` with
|
|
36
|
+
* inherited stdio still streams npm's live progress to the terminal (the child
|
|
37
|
+
* writes directly to the inherited fd), so the converge phase no longer looks
|
|
38
|
+
* frozen either — it only blocks the JS event loop for its (batched, rare)
|
|
39
|
+
* duration.
|
|
40
|
+
*/
|
|
41
|
+
export declare function runCommandSync(command: string): boolean;
|
|
7
42
|
export interface InstallSnapshotOptions {
|
|
8
43
|
useProxy?: boolean;
|
|
9
44
|
autoDetect?: boolean;
|
|
@@ -20,6 +55,18 @@ export interface InstallSnapshotOptions {
|
|
|
20
55
|
* base layer cannot clobber an override with its original pin.
|
|
21
56
|
*/
|
|
22
57
|
overrides?: Record<string, string>;
|
|
58
|
+
/**
|
|
59
|
+
* grant-unify P1 — awaited before each long phase (every kit/skit install
|
|
60
|
+
* group) so an active snapshot grant can be re-issued before its TTL runs
|
|
61
|
+
* out. Unset (SNAPSHOT_GRANT_MODE=off) → no-op.
|
|
62
|
+
*/
|
|
63
|
+
beforePhase?: (phase: string) => Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* grant-unify P1 — skit session source read right before each kit install
|
|
66
|
+
* (grant mode: the CURRENT istsg_ token, so re-issues are honored). Takes
|
|
67
|
+
* precedence over `sessionId` for skit installs only. Unset → `sessionId`.
|
|
68
|
+
*/
|
|
69
|
+
skitSessionId?: () => string | undefined;
|
|
23
70
|
}
|
|
24
71
|
/**
|
|
25
72
|
* FB — the subset of pin overrides that actually apply to this install (i.e. the
|
|
@@ -60,6 +107,13 @@ export interface InstallCommandOptions {
|
|
|
60
107
|
* (repeatable). Applied to the whole install + recorded in the ledger.
|
|
61
108
|
*/
|
|
62
109
|
pin?: string[];
|
|
110
|
+
/**
|
|
111
|
+
* One-shot downgrade escape hatch (CLI `--allow-downgrade`). When true, an
|
|
112
|
+
* install that would downgrade already-installed global tooling proceeds
|
|
113
|
+
* anyway (equivalent to env SNAPSHOT_ALLOW_LOCAL=1). Highest-priority policy
|
|
114
|
+
* layer. See @microwiseai/snapshot-downgrade-guard.
|
|
115
|
+
*/
|
|
116
|
+
allowDowngrade?: boolean;
|
|
63
117
|
}
|
|
64
118
|
export declare function installCommand(name: string, options?: InstallCommandOptions): Promise<void>;
|
|
65
119
|
//# sourceMappingURL=install.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAiBjE,OAAO,EAOL,KAAK,aAAa,EACnB,MAAM,uCAAuC,CAAC;AAc/C,OAAO,EACL,YAAY,EAIb,MAAM,kBAAkB,CAAC;AAsB1B,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAwPD,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,OAAO,EAAE,MAAM;CAI5B;AAGD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI,CAE5E;AAgDD;;;;;;;;;;;;;GAaG;AAEH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAyB5D;AAED;;;;;;;;;GASG;AAEH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAgBvD;AAgSD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CAC1C;AAuDD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACvC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMxB;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,QAAQ,EAClB,KAAK,GAAE,MAAU,EACjB,gBAAgB,GAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAM,EACtD,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;CAAE,CAAC,CAmZjF;AAwDD;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA6B5F;AAED,MAAM,WAAW,qBAAqB;IACpC,sFAAsF;IACtF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yEAAyE;IACzE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,OAAO,CAAC;IACd;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAoLD,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CA23BrG"}
|