@microwiseai/snapshot 0.5.2 → 0.7.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.
Files changed (159) hide show
  1. package/dist/commands/current.d.ts +5 -1
  2. package/dist/commands/current.d.ts.map +1 -1
  3. package/dist/commands/current.js +89 -2
  4. package/dist/commands/current.js.map +1 -1
  5. package/dist/commands/doctor.d.ts +2 -0
  6. package/dist/commands/doctor.d.ts.map +1 -0
  7. package/dist/commands/doctor.js +83 -0
  8. package/dist/commands/doctor.js.map +1 -0
  9. package/dist/commands/install.d.ts +41 -0
  10. package/dist/commands/install.d.ts.map +1 -1
  11. package/dist/commands/install.js +396 -216
  12. package/dist/commands/install.js.map +1 -1
  13. package/dist/commands/publish.d.ts +0 -4
  14. package/dist/commands/publish.d.ts.map +1 -1
  15. package/dist/commands/publish.js +44 -58
  16. package/dist/commands/publish.js.map +1 -1
  17. package/dist/commands/setup.d.ts +5 -0
  18. package/dist/commands/setup.d.ts.map +1 -0
  19. package/dist/commands/setup.js +52 -0
  20. package/dist/commands/setup.js.map +1 -0
  21. package/dist/index.js +22 -28
  22. package/dist/index.js.map +1 -1
  23. package/dist/lib/config.js +1 -1
  24. package/dist/lib/config.js.map +1 -1
  25. package/dist/lib/core-floor.d.ts +49 -0
  26. package/dist/lib/core-floor.d.ts.map +1 -0
  27. package/dist/lib/core-floor.js +78 -0
  28. package/dist/lib/core-floor.js.map +1 -0
  29. package/dist/lib/gitlab.d.ts.map +1 -1
  30. package/dist/lib/gitlab.js +8 -6
  31. package/dist/lib/gitlab.js.map +1 -1
  32. package/dist/lib/install-verify.d.ts +101 -0
  33. package/dist/lib/install-verify.d.ts.map +1 -0
  34. package/dist/lib/install-verify.js +143 -0
  35. package/dist/lib/install-verify.js.map +1 -0
  36. package/dist/lib/ledger.d.ts +212 -0
  37. package/dist/lib/ledger.d.ts.map +1 -0
  38. package/dist/lib/ledger.js +266 -0
  39. package/dist/lib/ledger.js.map +1 -0
  40. package/dist/lib/pin-override.d.ts +53 -0
  41. package/dist/lib/pin-override.d.ts.map +1 -0
  42. package/dist/lib/pin-override.js +77 -0
  43. package/dist/lib/pin-override.js.map +1 -0
  44. package/dist/lib/prerequisites.d.ts +33 -0
  45. package/dist/lib/prerequisites.d.ts.map +1 -0
  46. package/dist/lib/prerequisites.js +123 -0
  47. package/dist/lib/prerequisites.js.map +1 -0
  48. package/dist/lib/transitive-resolver.d.ts +0 -121
  49. package/dist/lib/transitive-resolver.d.ts.map +1 -1
  50. package/dist/lib/transitive-resolver.js +0 -190
  51. package/dist/lib/transitive-resolver.js.map +1 -1
  52. package/dist/lib/version-validator.d.ts +9 -0
  53. package/dist/lib/version-validator.d.ts.map +1 -1
  54. package/dist/lib/version-validator.js +69 -0
  55. package/dist/lib/version-validator.js.map +1 -1
  56. package/package.json +9 -19
  57. package/dist/commands/clone-all.d.ts +0 -21
  58. package/dist/commands/clone-all.d.ts.map +0 -1
  59. package/dist/commands/clone-all.js +0 -57
  60. package/dist/commands/clone-all.js.map +0 -1
  61. package/dist/commands/preflight.d.ts +0 -31
  62. package/dist/commands/preflight.d.ts.map +0 -1
  63. package/dist/commands/preflight.js +0 -83
  64. package/dist/commands/preflight.js.map +0 -1
  65. package/dist/lib/distkit-closure-bridge.d.ts +0 -102
  66. package/dist/lib/distkit-closure-bridge.d.ts.map +0 -1
  67. package/dist/lib/distkit-closure-bridge.js +0 -177
  68. package/dist/lib/distkit-closure-bridge.js.map +0 -1
  69. package/dist/lib/distkit-closure-parity.d.ts +0 -110
  70. package/dist/lib/distkit-closure-parity.d.ts.map +0 -1
  71. package/dist/lib/distkit-closure-parity.js +0 -134
  72. package/dist/lib/distkit-closure-parity.js.map +0 -1
  73. package/dist/lib/distkit-routing-port.d.ts +0 -37
  74. package/dist/lib/distkit-routing-port.d.ts.map +0 -1
  75. package/dist/lib/distkit-routing-port.js +0 -72
  76. package/dist/lib/distkit-routing-port.js.map +0 -1
  77. package/dist/lib/install-timeline.d.ts +0 -81
  78. package/dist/lib/install-timeline.d.ts.map +0 -1
  79. package/dist/lib/install-timeline.js +0 -243
  80. package/dist/lib/install-timeline.js.map +0 -1
  81. package/dist/lib/preflight-adapter.d.ts +0 -52
  82. package/dist/lib/preflight-adapter.d.ts.map +0 -1
  83. package/dist/lib/preflight-adapter.js +0 -224
  84. package/dist/lib/preflight-adapter.js.map +0 -1
  85. package/node_modules/@gitdot/clone-lib/README.md +0 -117
  86. package/node_modules/@gitdot/clone-lib/dist/bin/gitdot-resolve.d.ts +0 -9
  87. package/node_modules/@gitdot/clone-lib/dist/bin/gitdot-resolve.d.ts.map +0 -1
  88. package/node_modules/@gitdot/clone-lib/dist/bin/gitdot-resolve.js +0 -154
  89. package/node_modules/@gitdot/clone-lib/dist/bin/gitdot-resolve.js.map +0 -1
  90. package/node_modules/@gitdot/clone-lib/dist/clone.d.ts +0 -21
  91. package/node_modules/@gitdot/clone-lib/dist/clone.d.ts.map +0 -1
  92. package/node_modules/@gitdot/clone-lib/dist/clone.js +0 -228
  93. package/node_modules/@gitdot/clone-lib/dist/clone.js.map +0 -1
  94. package/node_modules/@gitdot/clone-lib/dist/dotpath.d.ts +0 -10
  95. package/node_modules/@gitdot/clone-lib/dist/dotpath.d.ts.map +0 -1
  96. package/node_modules/@gitdot/clone-lib/dist/dotpath.js +0 -27
  97. package/node_modules/@gitdot/clone-lib/dist/dotpath.js.map +0 -1
  98. package/node_modules/@gitdot/clone-lib/dist/git.d.ts +0 -23
  99. package/node_modules/@gitdot/clone-lib/dist/git.d.ts.map +0 -1
  100. package/node_modules/@gitdot/clone-lib/dist/git.js +0 -134
  101. package/node_modules/@gitdot/clone-lib/dist/git.js.map +0 -1
  102. package/node_modules/@gitdot/clone-lib/dist/index.d.ts +0 -17
  103. package/node_modules/@gitdot/clone-lib/dist/index.d.ts.map +0 -1
  104. package/node_modules/@gitdot/clone-lib/dist/index.js +0 -35
  105. package/node_modules/@gitdot/clone-lib/dist/index.js.map +0 -1
  106. package/node_modules/@gitdot/clone-lib/dist/lock.d.ts +0 -24
  107. package/node_modules/@gitdot/clone-lib/dist/lock.d.ts.map +0 -1
  108. package/node_modules/@gitdot/clone-lib/dist/lock.js +0 -97
  109. package/node_modules/@gitdot/clone-lib/dist/lock.js.map +0 -1
  110. package/node_modules/@gitdot/clone-lib/dist/resolve/gitlab.d.ts +0 -15
  111. package/node_modules/@gitdot/clone-lib/dist/resolve/gitlab.d.ts.map +0 -1
  112. package/node_modules/@gitdot/clone-lib/dist/resolve/gitlab.js +0 -124
  113. package/node_modules/@gitdot/clone-lib/dist/resolve/gitlab.js.map +0 -1
  114. package/node_modules/@gitdot/clone-lib/dist/resolve/index.d.ts +0 -12
  115. package/node_modules/@gitdot/clone-lib/dist/resolve/index.d.ts.map +0 -1
  116. package/node_modules/@gitdot/clone-lib/dist/resolve/index.js +0 -31
  117. package/node_modules/@gitdot/clone-lib/dist/resolve/index.js.map +0 -1
  118. package/node_modules/@gitdot/clone-lib/dist/resolve/manifest.d.ts +0 -32
  119. package/node_modules/@gitdot/clone-lib/dist/resolve/manifest.d.ts.map +0 -1
  120. package/node_modules/@gitdot/clone-lib/dist/resolve/manifest.js +0 -159
  121. package/node_modules/@gitdot/clone-lib/dist/resolve/manifest.js.map +0 -1
  122. package/node_modules/@gitdot/clone-lib/dist/resolve/member.d.ts +0 -44
  123. package/node_modules/@gitdot/clone-lib/dist/resolve/member.d.ts.map +0 -1
  124. package/node_modules/@gitdot/clone-lib/dist/resolve/member.js +0 -163
  125. package/node_modules/@gitdot/clone-lib/dist/resolve/member.js.map +0 -1
  126. package/node_modules/@gitdot/clone-lib/dist/resolve/resolve.d.ts +0 -18
  127. package/node_modules/@gitdot/clone-lib/dist/resolve/resolve.d.ts.map +0 -1
  128. package/node_modules/@gitdot/clone-lib/dist/resolve/resolve.js +0 -155
  129. package/node_modules/@gitdot/clone-lib/dist/resolve/resolve.js.map +0 -1
  130. package/node_modules/@gitdot/clone-lib/dist/types.d.ts +0 -225
  131. package/node_modules/@gitdot/clone-lib/dist/types.d.ts.map +0 -1
  132. package/node_modules/@gitdot/clone-lib/dist/types.js +0 -9
  133. package/node_modules/@gitdot/clone-lib/dist/types.js.map +0 -1
  134. package/node_modules/@gitdot/clone-lib/package.json +0 -53
  135. package/node_modules/@microwiseai/install-preflight/dist/index.d.ts +0 -27
  136. package/node_modules/@microwiseai/install-preflight/dist/index.d.ts.map +0 -1
  137. package/node_modules/@microwiseai/install-preflight/dist/index.js +0 -26
  138. package/node_modules/@microwiseai/install-preflight/dist/index.js.map +0 -1
  139. package/node_modules/@microwiseai/install-preflight/dist/policy.d.ts +0 -42
  140. package/node_modules/@microwiseai/install-preflight/dist/policy.d.ts.map +0 -1
  141. package/node_modules/@microwiseai/install-preflight/dist/policy.js +0 -79
  142. package/node_modules/@microwiseai/install-preflight/dist/policy.js.map +0 -1
  143. package/node_modules/@microwiseai/install-preflight/dist/preflight.d.ts +0 -18
  144. package/node_modules/@microwiseai/install-preflight/dist/preflight.d.ts.map +0 -1
  145. package/node_modules/@microwiseai/install-preflight/dist/preflight.js +0 -0
  146. package/node_modules/@microwiseai/install-preflight/dist/preflight.js.map +0 -1
  147. package/node_modules/@microwiseai/install-preflight/dist/resolvers.d.ts +0 -26
  148. package/node_modules/@microwiseai/install-preflight/dist/resolvers.d.ts.map +0 -1
  149. package/node_modules/@microwiseai/install-preflight/dist/resolvers.js +0 -63
  150. package/node_modules/@microwiseai/install-preflight/dist/resolvers.js.map +0 -1
  151. package/node_modules/@microwiseai/install-preflight/dist/semver.d.ts +0 -45
  152. package/node_modules/@microwiseai/install-preflight/dist/semver.d.ts.map +0 -1
  153. package/node_modules/@microwiseai/install-preflight/dist/semver.js +0 -195
  154. package/node_modules/@microwiseai/install-preflight/dist/semver.js.map +0 -1
  155. package/node_modules/@microwiseai/install-preflight/dist/types.d.ts +0 -136
  156. package/node_modules/@microwiseai/install-preflight/dist/types.d.ts.map +0 -1
  157. package/node_modules/@microwiseai/install-preflight/dist/types.js +0 -11
  158. package/node_modules/@microwiseai/install-preflight/dist/types.js.map +0 -1
  159. package/node_modules/@microwiseai/install-preflight/package.json +0 -49
package/dist/index.js CHANGED
@@ -6,10 +6,10 @@ import { installCommand } from './commands/install.js';
6
6
  import { listCommand } from './commands/list.js';
7
7
  import { currentCommand } from './commands/current.js';
8
8
  import { publishCommand } from './commands/publish.js';
9
- import { preflightCommand } from './commands/preflight.js';
10
9
  import { licenseActivateCommand, licenseStatusCommand, licenseDeactivateCommand, licenseRefreshCommand, } from './commands/license.js';
11
10
  import { accessSyncCommand } from './commands/access.js';
12
- import { cloneAllCommand } from './commands/clone-all.js';
11
+ import { doctorCommand } from './commands/doctor.js';
12
+ import { setupCommand } from './commands/setup.js';
13
13
  import { reportImport } from '@microwiseai/import-telemetry';
14
14
  import { VENDOR_NAME, PACKAGE_NAME } from './lib/config.js';
15
15
  const require = createRequire(import.meta.url);
@@ -31,8 +31,6 @@ function shouldReportImport(argv) {
31
31
  return false;
32
32
  if (argv[0] === 'list' || argv[0] === 'help')
33
33
  return false; // disabled/help-only
34
- if (argv[0] === 'clone-all')
35
- return false; // clones source, not a package install
36
34
  return true;
37
35
  }
38
36
  if (shouldReportImport(process.argv.slice(2))) {
@@ -55,6 +53,8 @@ program
55
53
  .option('--replace', 'Converge to this version: remove previous-version packages no longer in this snapshot (shared packages are kept)')
56
54
  .option('-d, --dry-run', 'With --replace, show what would be removed without changing anything')
57
55
  .option('-y, --yes', 'With --replace, skip the removal confirmation prompt')
56
+ .option('--no-converge', 'Raw/fast install: skip post-install convergence — only verify, and fail-loud on any divergence (convergence is ON by default)')
57
+ .option('--pin <spec...>', 'Override a package version without re-publishing, e.g. --pin @ist/sesh@0.4.0 (repeatable)')
58
58
  .action(async (name, options) => {
59
59
  await installCommand(name, options);
60
60
  });
@@ -71,18 +71,9 @@ program
71
71
  program
72
72
  .command('current')
73
73
  .description('Show currently installed snapshot')
74
- .action(async () => {
75
- await currentCommand();
76
- });
77
- program
78
- .command('clone-all')
79
- .description('Clone the full source closure a snapshot declares (via @gitdot/clone-lib)')
80
- .option('--manifest <path>', 'Path to snapshot.json (install set + registry scope→group)', 'snapshot.json')
81
- .option('--mode <mode>', 'Clone mode: head (default-branch HEAD) | pinned (exact commitSha)', 'head')
82
- .option('--dest <dir>', 'Destination workspace root', process.cwd())
83
- .option('--json', 'Emit the structured clone report as JSON')
74
+ .option('--json', 'Output the current snapshot + install ledger as JSON (provenance, AC3.1)')
84
75
  .action(async (options) => {
85
- await cloneAllCommand(options);
76
+ await currentCommand(options);
86
77
  });
87
78
  program
88
79
  .command('publish')
@@ -91,21 +82,9 @@ program
91
82
  .option('-d, --dry-run', 'Show what would be published without publishing')
92
83
  .option('-v, --verbose', 'Show detailed output')
93
84
  .option('--skip-access-sync', 'Skip syncing access levels to license-api')
94
- .option('--skip-preflight', 'Emergency-only: skip the anonymous end-user preflight gate')
95
- .option('--no-transitive', 'Preflight: check only directly-declared pins (skip transitive discovery)')
96
85
  .action(async (options) => {
97
86
  await publishCommand(options);
98
87
  });
99
- program
100
- .command('preflight [target]')
101
- .description('Verify a snapshot installs for an anonymous end-user (401/404/range) + semver/dist-tag policy, before publishing. Target: snapshot.json path or @scope/name (default ./snapshot.json)')
102
- .option('--no-transitive', 'Check only directly-declared pins (skip transitive-closure discovery)')
103
- .option('--tag <tag>', 'dist-tag this publish targets (default: latest)')
104
- .option('--json', 'Emit the structured preflight report as JSON')
105
- .option('-v, --verbose', 'Show detailed progress')
106
- .action(async (target, options) => {
107
- await preflightCommand(target, options);
108
- });
109
88
  // Access management commands
110
89
  const accessCmd = program
111
90
  .command('access')
@@ -147,6 +126,20 @@ licenseCmd
147
126
  .action(async () => {
148
127
  await licenseRefreshCommand();
149
128
  });
129
+ program
130
+ .command('doctor')
131
+ .description('Check if all prerequisites are satisfied')
132
+ .action(async () => {
133
+ await doctorCommand();
134
+ });
135
+ program
136
+ .command('setup')
137
+ .description('Install missing prerequisites')
138
+ .option('--auto', 'Non-interactive mode (for CI)')
139
+ .option('-d, --dry-run', 'Show what would be installed without installing')
140
+ .action(async (options) => {
141
+ await setupCommand(options);
142
+ });
150
143
  // Show help if no command
151
144
  if (process.argv.length === 2) {
152
145
  console.log(chalk.blue.bold(`
@@ -160,7 +153,8 @@ if (process.argv.length === 2) {
160
153
  console.log(chalk.cyan(' snapshot install @scope/name') + chalk.gray(' # Install a snapshot'));
161
154
  console.log(chalk.cyan(' snapshot current') + chalk.gray(' # Show installed snapshot'));
162
155
  console.log('');
163
- console.log(chalk.gray('First time? Public snapshots need nothing. For licensed ones:'));
156
+ console.log(chalk.gray('First time? Log in or activate a license:'));
157
+ console.log(chalk.cyan(' npm i -g @microwiseai/cli-auth && ist auth login'));
164
158
  console.log(chalk.cyan(' snapshot license activate <KEY>'));
165
159
  console.log('');
166
160
  program.help();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -43,7 +43,7 @@ export function getGitlabToken() {
43
43
  if (process.env.GITLAB_TOKEN) {
44
44
  return process.env.GITLAB_TOKEN;
45
45
  }
46
- // 2. glpkg token — SINGLE SOURCE OF TRUTH (infra-kit migration; formerly infra2-kit).
46
+ // 2. glpkg token — SINGLE SOURCE OF TRUTH (infra2-kit migration).
47
47
  // Legacy gitlab-config is RETIRED: no fallback. Absence => null =>
48
48
  // caller fails loud (buildAuthHeaders), surfacing the real problem
49
49
  // instead of silently using a stale/revoked gitlab-config token.
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * AC1.4 — core-floor assertion (beta-pipeline-robustness §4 S1, R-A).
3
+ *
4
+ * A single global npm tree can carry MULTIPLE copies of `@ist/adapters-core`
5
+ * (top-level + nested under other packages). The adapter registry only behaves
6
+ * as one singleton (S2) when every copy is at or above the floor version; an old
7
+ * nested copy (< floor) re-fragments the registry and re-breaks codex/adapters.
8
+ *
9
+ * This scans the raw `npm ls -g --json` dependency tree — INCLUDING nested
10
+ * `.dependencies` — for every copy of `pkg` whose version is below `minVersion`,
11
+ * and returns them as `offenders` (with the tree path to each). Pure & side-
12
+ * effect free; the ledger integrator wires it into install.ts for fail-loud /
13
+ * warning at P4.
14
+ */
15
+ /** Default package that must meet a version floor across the whole tree. */
16
+ export declare const DEFAULT_CORE_FLOOR_PKG = "@ist/adapters-core";
17
+ /** Default floor version (inclusive): copies strictly below this are offenders. */
18
+ export declare const DEFAULT_CORE_FLOOR_MIN_VERSION = "0.4.2";
19
+ export interface CoreFloorOffender {
20
+ /** Tree path to the offending copy, e.g. "(root) > @ist/smon-cli > @ist/adapters-core". */
21
+ path: string;
22
+ /** The offending (below-floor) version found at that path. */
23
+ version: string;
24
+ }
25
+ export interface CoreFloorResult {
26
+ /** True iff no copy of `pkg` is below `minVersion` (or `pkg` is absent). */
27
+ ok: boolean;
28
+ /** Every below-floor copy found, in traversal order. */
29
+ offenders: CoreFloorOffender[];
30
+ }
31
+ export interface CoreFloorOptions {
32
+ /** Package whose every copy must meet the floor. Defaults to @ist/adapters-core. */
33
+ pkg?: string;
34
+ /** Inclusive floor: copies strictly below this version are offenders. Defaults to 0.4.2. */
35
+ minVersion?: string;
36
+ }
37
+ /**
38
+ * Assert that no copy of `pkg` in the raw npm-ls tree sits below `minVersion`.
39
+ *
40
+ * @param dependencyTreeRaw parsed `npm ls -g --json` output (any shape tolerated)
41
+ * @param options.pkg target package (default @ist/adapters-core)
42
+ * @param options.minVersion floor version (default 0.4.2)
43
+ * @returns {ok, offenders[]}. `pkg` absent → ok:true, offenders:[]. Copies whose
44
+ * version is not an exact semver are skipped (can't be compared).
45
+ */
46
+ export declare function coreFloorAssert(dependencyTreeRaw: unknown, options?: CoreFloorOptions): CoreFloorResult;
47
+ /** Format offenders into a fail-loud, multi-line report (for the integrator). */
48
+ export declare function formatCoreFloorOffenders(offenders: CoreFloorOffender[], pkg?: string, minVersion?: string): string;
49
+ //# sourceMappingURL=core-floor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-floor.d.ts","sourceRoot":"","sources":["../../src/lib/core-floor.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AAEH,4EAA4E;AAC5E,eAAO,MAAM,sBAAsB,uBAAuB,CAAC;AAC3D,mFAAmF;AACnF,eAAO,MAAM,8BAA8B,UAAU,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IAChC,2FAA2F;IAC3F,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,4EAA4E;IAC5E,EAAE,EAAE,OAAO,CAAC;IACZ,wDAAwD;IACxD,SAAS,EAAE,iBAAiB,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,oFAAoF;IACpF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4FAA4F;IAC5F,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AASD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,iBAAiB,EAAE,OAAO,EAC1B,OAAO,GAAE,gBAAqB,GAC7B,eAAe,CA4CjB;AAED,iFAAiF;AACjF,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,iBAAiB,EAAE,EAC9B,GAAG,GAAE,MAA+B,EACpC,UAAU,GAAE,MAAuC,GAClD,MAAM,CASR"}
@@ -0,0 +1,78 @@
1
+ import { isExactSemver, ltSemver } from './version-validator.js';
2
+ /**
3
+ * AC1.4 — core-floor assertion (beta-pipeline-robustness §4 S1, R-A).
4
+ *
5
+ * A single global npm tree can carry MULTIPLE copies of `@ist/adapters-core`
6
+ * (top-level + nested under other packages). The adapter registry only behaves
7
+ * as one singleton (S2) when every copy is at or above the floor version; an old
8
+ * nested copy (< floor) re-fragments the registry and re-breaks codex/adapters.
9
+ *
10
+ * This scans the raw `npm ls -g --json` dependency tree — INCLUDING nested
11
+ * `.dependencies` — for every copy of `pkg` whose version is below `minVersion`,
12
+ * and returns them as `offenders` (with the tree path to each). Pure & side-
13
+ * effect free; the ledger integrator wires it into install.ts for fail-loud /
14
+ * warning at P4.
15
+ */
16
+ /** Default package that must meet a version floor across the whole tree. */
17
+ export const DEFAULT_CORE_FLOOR_PKG = '@ist/adapters-core';
18
+ /** Default floor version (inclusive): copies strictly below this are offenders. */
19
+ export const DEFAULT_CORE_FLOOR_MIN_VERSION = '0.4.2';
20
+ /**
21
+ * Assert that no copy of `pkg` in the raw npm-ls tree sits below `minVersion`.
22
+ *
23
+ * @param dependencyTreeRaw parsed `npm ls -g --json` output (any shape tolerated)
24
+ * @param options.pkg target package (default @ist/adapters-core)
25
+ * @param options.minVersion floor version (default 0.4.2)
26
+ * @returns {ok, offenders[]}. `pkg` absent → ok:true, offenders:[]. Copies whose
27
+ * version is not an exact semver are skipped (can't be compared).
28
+ */
29
+ export function coreFloorAssert(dependencyTreeRaw, options = {}) {
30
+ const pkg = options.pkg ?? DEFAULT_CORE_FLOOR_PKG;
31
+ const minVersion = options.minVersion ?? DEFAULT_CORE_FLOOR_MIN_VERSION;
32
+ const offenders = [];
33
+ if (!dependencyTreeRaw || typeof dependencyTreeRaw !== 'object') {
34
+ return { ok: true, offenders };
35
+ }
36
+ const root = dependencyTreeRaw;
37
+ const rootName = typeof root.name === 'string' ? root.name : '(root)';
38
+ const visit = (name, node, pathSoFar) => {
39
+ const here = [...pathSoFar, name];
40
+ if (name === pkg && isExactSemver(node.version)) {
41
+ const version = node.version;
42
+ if (ltSemver(version, minVersion)) {
43
+ offenders.push({ path: here.join(' > '), version });
44
+ }
45
+ }
46
+ const deps = node.dependencies;
47
+ if (deps && typeof deps === 'object') {
48
+ for (const [childName, childNode] of Object.entries(deps)) {
49
+ if (childNode && typeof childNode === 'object') {
50
+ visit(childName, childNode, here);
51
+ }
52
+ }
53
+ }
54
+ };
55
+ // The root object holds the tree under `.dependencies`; start traversal there
56
+ // (the root node itself is the global prefix, never `pkg`).
57
+ const rootDeps = root.dependencies;
58
+ if (rootDeps && typeof rootDeps === 'object') {
59
+ for (const [childName, childNode] of Object.entries(rootDeps)) {
60
+ if (childNode && typeof childNode === 'object') {
61
+ visit(childName, childNode, [rootName]);
62
+ }
63
+ }
64
+ }
65
+ return { ok: offenders.length === 0, offenders };
66
+ }
67
+ /** Format offenders into a fail-loud, multi-line report (for the integrator). */
68
+ export function formatCoreFloorOffenders(offenders, pkg = DEFAULT_CORE_FLOOR_PKG, minVersion = DEFAULT_CORE_FLOOR_MIN_VERSION) {
69
+ const lines = [
70
+ `core-floor check failed: ${offenders.length} copy/copies of ${pkg} are below the ${minVersion} floor.`,
71
+ `Old nested copies re-fragment the adapter registry (S2) — the tree must converge to >= ${minVersion}.`,
72
+ ];
73
+ for (const o of offenders) {
74
+ lines.push(` ✗ ${o.version} at ${o.path}`);
75
+ }
76
+ return lines.join('\n');
77
+ }
78
+ //# sourceMappingURL=core-floor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-floor.js","sourceRoot":"","sources":["../../src/lib/core-floor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"gitlab.d.ts","sourceRoot":"","sources":["../../src/lib/gitlab.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAK3C;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAWlF;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG9D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAcjE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAO/D;AA8GD;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAE9G;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAsCvH;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAMxF"}
1
+ {"version":3,"file":"gitlab.d.ts","sourceRoot":"","sources":["../../src/lib/gitlab.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAK3C;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAWlF;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG9D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAcjE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAO/D;AA+GD;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAE9G;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAuCvH;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAMxF"}
@@ -129,18 +129,19 @@ async function fetchSnapshotFromProxy(snapshotSpec, authToken) {
129
129
  if (!response.ok) {
130
130
  if (response.status === 401) {
131
131
  if (resolvedToken) {
132
- throw new Error('Access token expired or invalid for this package.\n' +
132
+ throw new Error('Session expired or invalid. Please re-authenticate:\n' +
133
+ ' Login: npm i -g @microwiseai/cli-auth && ist auth login\n' +
133
134
  ' Refresh: snapshot license refresh');
134
135
  }
135
136
  else {
136
- throw new Error('Access denied for this package (licensed or private).\n' +
137
- ' Provide a license or auth token to continue:\n' +
137
+ throw new Error('Authentication required. Please log in or activate a license:\n' +
138
+ ' Login: npm i -g @microwiseai/cli-auth && ist auth login\n' +
138
139
  ' License: snapshot license activate <KEY>');
139
140
  }
140
141
  }
141
142
  if (response.status === 403) {
142
- throw new Error('Access denied for this package.\n' +
143
- ' Check your license or auth token:\n' +
143
+ throw new Error('Access denied. Please check your authentication:\n' +
144
+ ' Login: npm i -g @microwiseai/cli-auth && ist auth login\n' +
144
145
  ' License: snapshot license status');
145
146
  }
146
147
  if (response.status === 404) {
@@ -175,7 +176,8 @@ export async function fetchSnapshotFromRepo(snapshotSpec, authToken) {
175
176
  export async function listSnapshotPackages(authToken) {
176
177
  const resolvedToken = authToken || getLicenseKey() || getProxyAuthToken();
177
178
  if (!resolvedToken) {
178
- throw new Error('Access denied: a license or auth token is required to list snapshots.\n' +
179
+ throw new Error('Authentication required. Please log in or activate a license:\n' +
180
+ ' Login: npm i -g @microwiseai/cli-auth && ist auth login\n' +
179
181
  ' License: snapshot license activate <KEY>');
180
182
  }
181
183
  // Try registry-proxy list endpoint (if available)
@@ -1 +1 @@
1
- {"version":3,"file":"gitlab.js","sourceRoot":"","sources":["../../src/lib/gitlab.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gitlab.js","sourceRoot":"","sources":["../../src/lib/gitlab.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * S1 — Post-install verification & convergence (SSOT enforcement).
3
+ *
4
+ * The manifest (snapshot.json) is the single source of truth: it pins every npm
5
+ * package to one exact version. But `npm install -g` is non-deterministic — a
6
+ * later batch/step can silently re-dedupe an earlier explicit pin to a different
7
+ * version on disk (see architecture/beta-pipeline-robustness-2026-08-30 §1 E2/E4).
8
+ *
9
+ * This module answers ONE question fail-loud: after install finishes, does the
10
+ * disk actually match the manifest pins? If not, we report `expected X, got Y`
11
+ * and the caller exits non-zero (no more "green on broken").
12
+ */
13
+ export interface VersionMismatch {
14
+ /** Package name, e.g. "@ist/sesh". */
15
+ name: string;
16
+ /** The exact version the manifest pinned. */
17
+ expected: string;
18
+ /** The actual version found on disk, or null if the package is missing. */
19
+ got: string | null;
20
+ }
21
+ export interface VerificationResult {
22
+ /** True iff every package in the map matches its pin on disk. */
23
+ ok: boolean;
24
+ /** Every package whose disk version != pin (or is missing). */
25
+ mismatches: VersionMismatch[];
26
+ /** Count of packages whose disk version == pin. */
27
+ verifiedCount: number;
28
+ /** Total packages checked. */
29
+ total: number;
30
+ }
31
+ /** A function that returns the on-disk version of a global npm package, or null. */
32
+ export type VersionReader = (name: string) => string | null;
33
+ /** Test seam: reset the cached global npm root (used by unit tests). */
34
+ export declare function _resetGlobalRootCache(): void;
35
+ /**
36
+ * Read the ACTUAL on-disk version of a globally-installed npm package by reading
37
+ * its installed package.json directly from the global root. This reflects what
38
+ * `require()`/the runtime will actually load — unlike `npm ls` which reports the
39
+ * resolution tree. One `npm root -g` call is amortized across all packages
40
+ * (cached), so this is O(1) process spawns regardless of package count.
41
+ *
42
+ * Returns the version string, or null if the package is not installed on disk.
43
+ */
44
+ export declare function readInstalledNpmVersion(name: string): string | null;
45
+ /**
46
+ * Verify that every package in `installMap` (name → exact pin) is present on
47
+ * disk at exactly that version.
48
+ *
49
+ * Pure & side-effect free (aside from the injected reader): pass a custom
50
+ * `readVersion` for unit tests; defaults to reading the real global npm tree.
51
+ */
52
+ export declare function verifyInstallMap(installMap: Record<string, string>, opts?: {
53
+ readVersion?: VersionReader;
54
+ }): VerificationResult;
55
+ /**
56
+ * S1 — convergence. Dependency-injected & pure (no console, no direct npm) so it
57
+ * is fully unit-testable and the integrator (install.ts) owns logging/exit.
58
+ *
59
+ * Given the manifest npm install-map and any FB pin overrides:
60
+ * 1. compute the effective map (pins with overrides applied),
61
+ * 2. verify it against the disk,
62
+ * 3. while unverified and within `maxRounds`, call `install(name, expected)`
63
+ * for each mismatched package (exact, isolated re-pin) then re-verify.
64
+ *
65
+ * Returns the FINAL VerificationResult (ok=true iff the disk converged). The
66
+ * integrator decides how to react (exit non-zero, log, fold into the ledger).
67
+ *
68
+ * @param installMap manifest npm pins (name → exact version)
69
+ * @param overrides FB pin overrides (name → version); {} for none
70
+ * @param deps.install re-pin one package to an exact version (side-effecting)
71
+ * @param deps.readVersion disk reader (defaults to readInstalledNpmVersion)
72
+ * @param deps.maxRounds max convergence rounds (default 3)
73
+ */
74
+ export declare function runConverge(installMap: Record<string, string>, overrides: Record<string, string>, deps: {
75
+ install: (name: string, version: string) => void;
76
+ readVersion?: VersionReader;
77
+ maxRounds?: number;
78
+ }): VerificationResult;
79
+ /**
80
+ * Minimal read-only view of the install ledger. The ledger SCHEMA is owned by
81
+ * lib/ledger.ts (S3); this is a structural subset used only to read `expected`
82
+ * pins for offline verification (e.g. `snapshot doctor`) without importing the
83
+ * ledger module — so verify stays dependency-light and merge-clean.
84
+ */
85
+ export interface LedgerLike {
86
+ packages?: Array<{
87
+ name?: unknown;
88
+ expected?: unknown;
89
+ }>;
90
+ }
91
+ /**
92
+ * Extract a `name → expected pin` map from a parsed ledger, defensively (unknown
93
+ * shapes / missing fields are skipped rather than throwing). Returns {} when the
94
+ * ledger has no usable expected pins.
95
+ */
96
+ export declare function expectedMapFromLedger(ledger: LedgerLike | null | undefined): Record<string, string>;
97
+ /**
98
+ * Format mismatches into a fail-loud, multi-line `expected X, got Y` report.
99
+ */
100
+ export declare function formatVerificationFailure(mismatches: VersionMismatch[]): string;
101
+ //# sourceMappingURL=install-verify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-verify.d.ts","sourceRoot":"","sources":["../../src/lib/install-verify.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,eAAe;IAC9B,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,iEAAiE;IACjE,EAAE,EAAE,OAAO,CAAC;IACZ,+DAA+D;IAC/D,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,mDAAmD;IACnD,aAAa,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,oFAAoF;AACpF,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;AAmB5D,wEAAwE;AACxE,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAYnE;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,aAAa,CAAA;CAAO,GACzC,kBAAkB,CAsBpB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACjC,IAAI,EAAE;IACJ,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GACA,kBAAkB,CAapB;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC1D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUnG;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,MAAM,CAU/E"}
@@ -0,0 +1,143 @@
1
+ import { execSync } from 'child_process';
2
+ import { existsSync, readFileSync } from 'fs';
3
+ import { join } from 'path';
4
+ import { applyPinOverrides } from './pin-override.js';
5
+ let cachedGlobalRoot;
6
+ /**
7
+ * Resolve the global npm `node_modules` root once (`npm root -g`) and cache it.
8
+ * Returns null if npm is unavailable.
9
+ */
10
+ function getGlobalNpmRoot() {
11
+ if (cachedGlobalRoot !== undefined)
12
+ return cachedGlobalRoot;
13
+ try {
14
+ const root = execSync('npm root -g', { encoding: 'utf-8', stdio: ['ignore', 'pipe', 'ignore'] }).trim();
15
+ cachedGlobalRoot = root || null;
16
+ }
17
+ catch {
18
+ cachedGlobalRoot = null;
19
+ }
20
+ return cachedGlobalRoot;
21
+ }
22
+ /** Test seam: reset the cached global npm root (used by unit tests). */
23
+ export function _resetGlobalRootCache() {
24
+ cachedGlobalRoot = undefined;
25
+ }
26
+ /**
27
+ * Read the ACTUAL on-disk version of a globally-installed npm package by reading
28
+ * its installed package.json directly from the global root. This reflects what
29
+ * `require()`/the runtime will actually load — unlike `npm ls` which reports the
30
+ * resolution tree. One `npm root -g` call is amortized across all packages
31
+ * (cached), so this is O(1) process spawns regardless of package count.
32
+ *
33
+ * Returns the version string, or null if the package is not installed on disk.
34
+ */
35
+ export function readInstalledNpmVersion(name) {
36
+ const root = getGlobalNpmRoot();
37
+ if (!root)
38
+ return null;
39
+ // Scoped names ("@ist/sesh") join correctly into "<root>/@ist/sesh".
40
+ const pkgJsonPath = join(root, name, 'package.json');
41
+ if (!existsSync(pkgJsonPath))
42
+ return null;
43
+ try {
44
+ const pkg = JSON.parse(readFileSync(pkgJsonPath, 'utf-8'));
45
+ return typeof pkg.version === 'string' ? pkg.version : null;
46
+ }
47
+ catch {
48
+ return null;
49
+ }
50
+ }
51
+ /**
52
+ * Verify that every package in `installMap` (name → exact pin) is present on
53
+ * disk at exactly that version.
54
+ *
55
+ * Pure & side-effect free (aside from the injected reader): pass a custom
56
+ * `readVersion` for unit tests; defaults to reading the real global npm tree.
57
+ */
58
+ export function verifyInstallMap(installMap, opts = {}) {
59
+ const readVersion = opts.readVersion ?? readInstalledNpmVersion;
60
+ const mismatches = [];
61
+ let verifiedCount = 0;
62
+ const names = Object.keys(installMap).sort((a, b) => a.localeCompare(b));
63
+ for (const name of names) {
64
+ const expected = installMap[name];
65
+ const got = readVersion(name);
66
+ if (got === expected) {
67
+ verifiedCount++;
68
+ }
69
+ else {
70
+ mismatches.push({ name, expected, got });
71
+ }
72
+ }
73
+ return {
74
+ ok: mismatches.length === 0,
75
+ mismatches,
76
+ verifiedCount,
77
+ total: names.length,
78
+ };
79
+ }
80
+ /**
81
+ * S1 — convergence. Dependency-injected & pure (no console, no direct npm) so it
82
+ * is fully unit-testable and the integrator (install.ts) owns logging/exit.
83
+ *
84
+ * Given the manifest npm install-map and any FB pin overrides:
85
+ * 1. compute the effective map (pins with overrides applied),
86
+ * 2. verify it against the disk,
87
+ * 3. while unverified and within `maxRounds`, call `install(name, expected)`
88
+ * for each mismatched package (exact, isolated re-pin) then re-verify.
89
+ *
90
+ * Returns the FINAL VerificationResult (ok=true iff the disk converged). The
91
+ * integrator decides how to react (exit non-zero, log, fold into the ledger).
92
+ *
93
+ * @param installMap manifest npm pins (name → exact version)
94
+ * @param overrides FB pin overrides (name → version); {} for none
95
+ * @param deps.install re-pin one package to an exact version (side-effecting)
96
+ * @param deps.readVersion disk reader (defaults to readInstalledNpmVersion)
97
+ * @param deps.maxRounds max convergence rounds (default 3)
98
+ */
99
+ export function runConverge(installMap, overrides, deps) {
100
+ const effectiveMap = applyPinOverrides(installMap, overrides);
101
+ const readVersion = deps.readVersion ?? readInstalledNpmVersion;
102
+ const maxRounds = deps.maxRounds ?? 3;
103
+ let verification = verifyInstallMap(effectiveMap, { readVersion });
104
+ for (let round = 1; round <= maxRounds && !verification.ok; round++) {
105
+ for (const m of verification.mismatches) {
106
+ deps.install(m.name, m.expected);
107
+ }
108
+ verification = verifyInstallMap(effectiveMap, { readVersion });
109
+ }
110
+ return verification;
111
+ }
112
+ /**
113
+ * Extract a `name → expected pin` map from a parsed ledger, defensively (unknown
114
+ * shapes / missing fields are skipped rather than throwing). Returns {} when the
115
+ * ledger has no usable expected pins.
116
+ */
117
+ export function expectedMapFromLedger(ledger) {
118
+ const map = {};
119
+ const pkgs = ledger?.packages;
120
+ if (!Array.isArray(pkgs))
121
+ return map;
122
+ for (const p of pkgs) {
123
+ if (p && typeof p.name === 'string' && typeof p.expected === 'string') {
124
+ map[p.name] = p.expected;
125
+ }
126
+ }
127
+ return map;
128
+ }
129
+ /**
130
+ * Format mismatches into a fail-loud, multi-line `expected X, got Y` report.
131
+ */
132
+ export function formatVerificationFailure(mismatches) {
133
+ const lines = [
134
+ `Install verification failed: ${mismatches.length} package(s) do not match the manifest pin.`,
135
+ `The disk state diverged from the snapshot (SSOT). Re-run with --converge to auto-repair.`,
136
+ ];
137
+ for (const m of mismatches) {
138
+ const got = m.got === null ? '(not installed)' : m.got;
139
+ lines.push(` ✗ ${m.name}: expected ${m.expected}, got ${got}`);
140
+ }
141
+ return lines.join('\n');
142
+ }
143
+ //# sourceMappingURL=install-verify.js.map