@microwiseai/snapshot 0.5.1 → 0.6.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 (77) hide show
  1. package/dist/commands/doctor.d.ts +2 -0
  2. package/dist/commands/doctor.d.ts.map +1 -0
  3. package/dist/commands/doctor.js +37 -0
  4. package/dist/commands/doctor.js.map +1 -0
  5. package/dist/commands/install.d.ts.map +1 -1
  6. package/dist/commands/install.js +34 -11
  7. package/dist/commands/install.js.map +1 -1
  8. package/dist/commands/setup.d.ts +5 -0
  9. package/dist/commands/setup.d.ts.map +1 -0
  10. package/dist/commands/setup.js +52 -0
  11. package/dist/commands/setup.js.map +1 -0
  12. package/dist/index.js +18 -14
  13. package/dist/index.js.map +1 -1
  14. package/dist/lib/config.js +1 -1
  15. package/dist/lib/config.js.map +1 -1
  16. package/dist/lib/gitlab.d.ts.map +1 -1
  17. package/dist/lib/gitlab.js +8 -6
  18. package/dist/lib/gitlab.js.map +1 -1
  19. package/dist/lib/prerequisites.d.ts +33 -0
  20. package/dist/lib/prerequisites.d.ts.map +1 -0
  21. package/dist/lib/prerequisites.js +123 -0
  22. package/dist/lib/prerequisites.js.map +1 -0
  23. package/package.json +3 -14
  24. package/dist/commands/clone-all.d.ts +0 -21
  25. package/dist/commands/clone-all.d.ts.map +0 -1
  26. package/dist/commands/clone-all.js +0 -57
  27. package/dist/commands/clone-all.js.map +0 -1
  28. package/node_modules/@gitdot/clone-lib/README.md +0 -117
  29. package/node_modules/@gitdot/clone-lib/dist/bin/gitdot-resolve.d.ts +0 -9
  30. package/node_modules/@gitdot/clone-lib/dist/bin/gitdot-resolve.d.ts.map +0 -1
  31. package/node_modules/@gitdot/clone-lib/dist/bin/gitdot-resolve.js +0 -154
  32. package/node_modules/@gitdot/clone-lib/dist/bin/gitdot-resolve.js.map +0 -1
  33. package/node_modules/@gitdot/clone-lib/dist/clone.d.ts +0 -21
  34. package/node_modules/@gitdot/clone-lib/dist/clone.d.ts.map +0 -1
  35. package/node_modules/@gitdot/clone-lib/dist/clone.js +0 -228
  36. package/node_modules/@gitdot/clone-lib/dist/clone.js.map +0 -1
  37. package/node_modules/@gitdot/clone-lib/dist/dotpath.d.ts +0 -10
  38. package/node_modules/@gitdot/clone-lib/dist/dotpath.d.ts.map +0 -1
  39. package/node_modules/@gitdot/clone-lib/dist/dotpath.js +0 -27
  40. package/node_modules/@gitdot/clone-lib/dist/dotpath.js.map +0 -1
  41. package/node_modules/@gitdot/clone-lib/dist/git.d.ts +0 -23
  42. package/node_modules/@gitdot/clone-lib/dist/git.d.ts.map +0 -1
  43. package/node_modules/@gitdot/clone-lib/dist/git.js +0 -134
  44. package/node_modules/@gitdot/clone-lib/dist/git.js.map +0 -1
  45. package/node_modules/@gitdot/clone-lib/dist/index.d.ts +0 -17
  46. package/node_modules/@gitdot/clone-lib/dist/index.d.ts.map +0 -1
  47. package/node_modules/@gitdot/clone-lib/dist/index.js +0 -35
  48. package/node_modules/@gitdot/clone-lib/dist/index.js.map +0 -1
  49. package/node_modules/@gitdot/clone-lib/dist/lock.d.ts +0 -24
  50. package/node_modules/@gitdot/clone-lib/dist/lock.d.ts.map +0 -1
  51. package/node_modules/@gitdot/clone-lib/dist/lock.js +0 -97
  52. package/node_modules/@gitdot/clone-lib/dist/lock.js.map +0 -1
  53. package/node_modules/@gitdot/clone-lib/dist/resolve/gitlab.d.ts +0 -15
  54. package/node_modules/@gitdot/clone-lib/dist/resolve/gitlab.d.ts.map +0 -1
  55. package/node_modules/@gitdot/clone-lib/dist/resolve/gitlab.js +0 -124
  56. package/node_modules/@gitdot/clone-lib/dist/resolve/gitlab.js.map +0 -1
  57. package/node_modules/@gitdot/clone-lib/dist/resolve/index.d.ts +0 -12
  58. package/node_modules/@gitdot/clone-lib/dist/resolve/index.d.ts.map +0 -1
  59. package/node_modules/@gitdot/clone-lib/dist/resolve/index.js +0 -31
  60. package/node_modules/@gitdot/clone-lib/dist/resolve/index.js.map +0 -1
  61. package/node_modules/@gitdot/clone-lib/dist/resolve/manifest.d.ts +0 -32
  62. package/node_modules/@gitdot/clone-lib/dist/resolve/manifest.d.ts.map +0 -1
  63. package/node_modules/@gitdot/clone-lib/dist/resolve/manifest.js +0 -159
  64. package/node_modules/@gitdot/clone-lib/dist/resolve/manifest.js.map +0 -1
  65. package/node_modules/@gitdot/clone-lib/dist/resolve/member.d.ts +0 -44
  66. package/node_modules/@gitdot/clone-lib/dist/resolve/member.d.ts.map +0 -1
  67. package/node_modules/@gitdot/clone-lib/dist/resolve/member.js +0 -163
  68. package/node_modules/@gitdot/clone-lib/dist/resolve/member.js.map +0 -1
  69. package/node_modules/@gitdot/clone-lib/dist/resolve/resolve.d.ts +0 -18
  70. package/node_modules/@gitdot/clone-lib/dist/resolve/resolve.d.ts.map +0 -1
  71. package/node_modules/@gitdot/clone-lib/dist/resolve/resolve.js +0 -155
  72. package/node_modules/@gitdot/clone-lib/dist/resolve/resolve.js.map +0 -1
  73. package/node_modules/@gitdot/clone-lib/dist/types.d.ts +0 -225
  74. package/node_modules/@gitdot/clone-lib/dist/types.d.ts.map +0 -1
  75. package/node_modules/@gitdot/clone-lib/dist/types.js +0 -9
  76. package/node_modules/@gitdot/clone-lib/dist/types.js.map +0 -1
  77. package/node_modules/@gitdot/clone-lib/package.json +0 -53
@@ -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,33 @@
1
+ export interface Prerequisite {
2
+ name: string;
3
+ description: string;
4
+ requiredBy: string[];
5
+ check: () => boolean;
6
+ install?: Record<string, string>;
7
+ guide?: string;
8
+ autoInstall: boolean;
9
+ }
10
+ export interface CheckResult {
11
+ name: string;
12
+ description: string;
13
+ requiredBy: string[];
14
+ installed: boolean;
15
+ guide?: string;
16
+ installCommand?: string;
17
+ }
18
+ /**
19
+ * Minimal snapshot prerequisites
20
+ */
21
+ export declare const MINIMAL_PREREQUISITES: Prerequisite[];
22
+ /**
23
+ * Check all prerequisites and return results
24
+ */
25
+ export declare function checkPrerequisites(prerequisites?: Prerequisite[]): CheckResult[];
26
+ /**
27
+ * Install a single prerequisite
28
+ */
29
+ export declare function installPrerequisite(result: CheckResult): {
30
+ success: boolean;
31
+ error?: string;
32
+ };
33
+ //# sourceMappingURL=prerequisites.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prerequisites.d.ts","sourceRoot":"","sources":["../../src/lib/prerequisites.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAqCD;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,YAAY,EAgD/C,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,GAAE,YAAY,EAA0B,GAAG,WAAW,EAAE,CAWvG;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAU7F"}
@@ -0,0 +1,123 @@
1
+ import { execSync } from 'child_process';
2
+ import { platform } from 'os';
3
+ import { isLoggedIn } from './config.js';
4
+ /**
5
+ * Get OS-specific platform key
6
+ */
7
+ function getPlatformKey() {
8
+ const os = platform();
9
+ if (os === 'darwin')
10
+ return 'macos-brew';
11
+ if (os === 'linux') {
12
+ // Detect apt vs yum
13
+ try {
14
+ execSync('which apt-get', { stdio: 'ignore' });
15
+ return 'linux-apt';
16
+ }
17
+ catch {
18
+ try {
19
+ execSync('which yum', { stdio: 'ignore' });
20
+ return 'linux-yum';
21
+ }
22
+ catch {
23
+ return 'linux-unknown';
24
+ }
25
+ }
26
+ }
27
+ return 'unknown';
28
+ }
29
+ /**
30
+ * Check if a command exists
31
+ */
32
+ function hasCommand(cmd) {
33
+ try {
34
+ execSync(`which ${cmd} 2>/dev/null`, { stdio: 'ignore' });
35
+ return true;
36
+ }
37
+ catch {
38
+ return false;
39
+ }
40
+ }
41
+ /**
42
+ * Minimal snapshot prerequisites
43
+ */
44
+ export const MINIMAL_PREREQUISITES = [
45
+ {
46
+ name: 'tmux',
47
+ description: 'Terminal multiplexer (session management)',
48
+ requiredBy: ['@ist/sesh'],
49
+ check: () => hasCommand('tmux'),
50
+ install: {
51
+ 'linux-apt': 'sudo apt-get update -qq && sudo apt-get install -y tmux',
52
+ 'linux-yum': 'sudo yum install -y tmux',
53
+ 'macos-brew': 'brew install tmux',
54
+ },
55
+ autoInstall: true,
56
+ },
57
+ {
58
+ name: 'IST CLI Auth',
59
+ description: 'Authentication CLI for IST services (ist auth login)',
60
+ requiredBy: ['snapshot install (authenticated)'],
61
+ check: () => hasCommand('ist'),
62
+ install: {
63
+ 'linux-apt': 'npm install -g @microwiseai/cli-auth',
64
+ 'linux-yum': 'npm install -g @microwiseai/cli-auth',
65
+ 'macos-brew': 'npm install -g @microwiseai/cli-auth',
66
+ },
67
+ autoInstall: true,
68
+ },
69
+ {
70
+ name: 'Claude Code',
71
+ description: 'AI CLI for session creation',
72
+ requiredBy: ['@ist/sesh'],
73
+ check: () => hasCommand('claude'),
74
+ install: {
75
+ 'linux-apt': 'npm install -g @anthropic-ai/claude-code',
76
+ 'linux-yum': 'npm install -g @anthropic-ai/claude-code',
77
+ 'macos-brew': 'npm install -g @anthropic-ai/claude-code',
78
+ },
79
+ autoInstall: true,
80
+ },
81
+ {
82
+ name: 'IST Credentials',
83
+ description: 'Authentication for session isolation',
84
+ requiredBy: ['snapshot install (authenticated)'],
85
+ // SSOT: ~/.ist/credentials.json `.token` (IST JWT) via cli-auth v2, with
86
+ // local expiry pre-check. NOT the legacy extensionless ~/.ist/credentials
87
+ // file (that path predates the credential-schema convergence).
88
+ check: () => isLoggedIn(),
89
+ autoInstall: false,
90
+ guide: 'Run "ist auth login" to authenticate.',
91
+ },
92
+ ];
93
+ /**
94
+ * Check all prerequisites and return results
95
+ */
96
+ export function checkPrerequisites(prerequisites = MINIMAL_PREREQUISITES) {
97
+ const platformKey = getPlatformKey();
98
+ return prerequisites.map(prereq => ({
99
+ name: prereq.name,
100
+ description: prereq.description,
101
+ requiredBy: prereq.requiredBy,
102
+ installed: prereq.check(),
103
+ guide: prereq.guide,
104
+ installCommand: prereq.install?.[platformKey] || prereq.install?.['linux-apt'],
105
+ }));
106
+ }
107
+ /**
108
+ * Install a single prerequisite
109
+ */
110
+ export function installPrerequisite(result) {
111
+ if (result.installed)
112
+ return { success: true };
113
+ if (!result.installCommand)
114
+ return { success: false, error: 'No install command available. ' + (result.guide || '') };
115
+ try {
116
+ execSync(result.installCommand, { stdio: 'inherit' });
117
+ return { success: true };
118
+ }
119
+ catch (err) {
120
+ return { success: false, error: err.message };
121
+ }
122
+ }
123
+ //# sourceMappingURL=prerequisites.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prerequisites.js","sourceRoot":"","sources":["../../src/lib/prerequisites.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@microwiseai/snapshot",
3
- "version": "0.5.1",
3
+ "version": "0.6.0",
4
4
  "description": "CLI for installing IST Snapshot packages",
5
5
  "type": "module",
6
6
  "main": "./dist/lib.js",
@@ -31,8 +31,7 @@
31
31
  "files": [
32
32
  "dist",
33
33
  "node_modules/@microwiseai",
34
- "node_modules/@ist",
35
- "node_modules/@gitdot"
34
+ "node_modules/@ist"
36
35
  ],
37
36
  "keywords": [
38
37
  "snapshot",
@@ -43,7 +42,6 @@
43
42
  "author": "IST Team",
44
43
  "license": "MIT",
45
44
  "dependencies": {
46
- "@gitdot/clone-lib": "^0.2.0",
47
45
  "@microwiseai/import-telemetry": "^0.1.0",
48
46
  "@microwiseai/license": "^0.1.4",
49
47
  "@microwiseai/skit": "^0.1.19",
@@ -66,7 +64,6 @@
66
64
  "node": ">=18.0.0"
67
65
  },
68
66
  "bundleDependencies": [
69
- "@gitdot/clone-lib",
70
67
  "@microwiseai/import-telemetry",
71
68
  "@microwiseai/license",
72
69
  "@microwiseai/skit",
@@ -74,14 +71,6 @@
74
71
  "@microwiseai/snapshot-parallel"
75
72
  ],
76
73
  "glpkg": {
77
- "groups": {
78
- "microwiseai": [
79
- "@gitdot/clone-lib"
80
- ]
81
- }
82
- },
83
- "repository": {
84
- "type": "git",
85
- "url": "git+https://gitlab.com/microwiseai/snapshot.git"
74
+ "group": "microwiseai"
86
75
  }
87
76
  }
@@ -1,21 +0,0 @@
1
- /**
2
- * `snapshot clone-all` — clone the full SOURCE closure a snapshot declares.
3
- *
4
- * Thin adapter over the published, typed @gitdot/clone-lib@0.2.0: it loads
5
- * snapshot.json (the install set + registry scope→group), resolves it to a
6
- * resolved-lock (S2), writes snapshot.lock.json, and clones the closure. All
7
- * real logic — name→projectId resolution, coordinate/visibility/commitSha
8
- * pinning, closure cloning, structured reporting — lives in the library.
9
- *
10
- * The GitLab token is the caller's own (getGitlabToken → glpkg token /
11
- * GITLAB_TOKEN), decoupled from the install proxy: cloning is plain git, judged
12
- * by repo visibility + caller access.
13
- */
14
- export interface CloneAllOptions {
15
- manifest?: string;
16
- mode?: string;
17
- dest?: string;
18
- json?: boolean;
19
- }
20
- export declare function cloneAllCommand(options?: CloneAllOptions): Promise<void>;
21
- //# sourceMappingURL=clone-all.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clone-all.d.ts","sourceRoot":"","sources":["../../src/commands/clone-all.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,eAAe,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6DlF"}
@@ -1,57 +0,0 @@
1
- import chalk from 'chalk';
2
- import { readFileSync, mkdirSync } from 'fs';
3
- import { join } from 'path';
4
- import { resolveFromManifest, cloneFromLock, writeLock, createGitLabApi } from '@gitdot/clone-lib';
5
- import { getGitlabToken } from '../lib/config.js';
6
- export async function cloneAllCommand(options = {}) {
7
- const manifestPath = options.manifest || 'snapshot.json';
8
- const mode = options.mode === 'pinned' ? 'pinned' : 'head';
9
- const dest = options.dest || process.cwd();
10
- const token = getGitlabToken();
11
- if (!token) {
12
- console.error(chalk.red('Error: no GitLab token. Set GITLAB_TOKEN or configure glpkg (glpkg config save <token>).'));
13
- process.exit(1);
14
- }
15
- let manifest;
16
- try {
17
- manifest = JSON.parse(readFileSync(manifestPath, 'utf8'));
18
- }
19
- catch (err) {
20
- console.error(chalk.red(`Error: could not read manifest "${manifestPath}": ${err.message}`));
21
- process.exit(1);
22
- return;
23
- }
24
- const registry = manifest.registry || {};
25
- const subset = manifest.name;
26
- const api = createGitLabApi({ token, host: 'gitlab.com' });
27
- const { lock, warnings } = await resolveFromManifest(manifest, {
28
- api,
29
- scopes: Object.keys(registry),
30
- subset,
31
- });
32
- mkdirSync(dest, { recursive: true });
33
- const lockPath = join(dest, 'snapshot.lock.json');
34
- writeLock(lockPath, lock);
35
- const report = await cloneFromLock(lockPath, { mode, dest });
36
- if (options.json) {
37
- // --json is the primary contract: emit the structured report verbatim.
38
- console.log(JSON.stringify({ report, lock: lockPath, warnings }, null, 2));
39
- }
40
- else {
41
- console.log(chalk.blue.bold('snapshot clone-all'));
42
- console.log(chalk.gray(`manifest: ${manifestPath} | mode: ${mode} | dest: ${dest}`));
43
- console.log(chalk.gray(`lock: ${lockPath}`));
44
- console.log(`cloned ${chalk.green(report.cloned.length)} | ` +
45
- `skipped ${report.skipped.length} | ` +
46
- `no-access ${report['skipped-no-access'].length} | ` +
47
- `not-found ${report['not-found'].length} | ` +
48
- `failed ${chalk.red(report.failed.length)}`);
49
- console.log(chalk.gray(`closureSize ${report.closureSize} | credentialsNeeded ${report.credentialsNeeded}`));
50
- for (const w of warnings)
51
- console.log(chalk.yellow(`⚠ ${w}`));
52
- }
53
- if (report.failed.length > 0 || report['not-found'].length > 0) {
54
- process.exitCode = 1;
55
- }
56
- }
57
- //# sourceMappingURL=clone-all.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clone-all.js","sourceRoot":"","sources":["../../src/commands/clone-all.ts"],"names":[],"mappings":"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"}
@@ -1,117 +0,0 @@
1
- # @gitdot/clone-lib
2
-
3
- Shared **resolved-lock** library per `glpkg-workspace/RESOLVED-LOCK-SPEC.md`:
4
- resolve a distribution's install closure into a resolved-lock (S2), then clone
5
- that closure (S3). One schema, two resolvers, one cloner. **Dependency-free.**
6
-
7
- > Prototype status: this lives in `gitdot-bridge-pilot/clone-lib-proto/` in a
8
- > **publishable shape** (name, `exports`, `files`). Real placement under
9
- > `projects/gitdot` and glpkg publish are **separate gates** — not done here.
10
-
11
- ## What it does
12
-
13
- ```
14
- package-lock.json ─(B1 resolveLock)─┐
15
- ├─► resolved-lock (S2) ─(cloneFromLock, S3)─► cloned closure + CloneReport
16
- snapshot.json ─(B2 resolveFromManifest)─┘
17
- ```
18
-
19
- - **B1 `resolveLock`** — from an installed project's `package-lock.json` (the flat
20
- closure is already in its `packages` map). projectId comes from each `resolved`
21
- tarball URL.
22
- - **B2 `resolveFromManifest`** — from a `snapshot.json`-like manifest (`install`
23
- set + `registry` scope→group). projectId comes from the GitLab npm **packument**.
24
- - Both emit the **same** resolved-lock schema; only `source.derivedFrom` differs
25
- (`package-lock.json` vs `manifest`).
26
- - **`cloneFromLock`** — clones the closure the lock declares (`pinned`/`head`),
27
- proxy-independent auth, structured report.
28
-
29
- ## Shared member core (B1/B2 common)
30
-
31
- `resolve/member.js` → `resolveMember({ npmName, version, projectId, api, ... })`
32
- is the **single** place that turns "npm name + version + projectId" into a fully
33
- resolved member: repository-field read (path-1, `manifest-repository`), else
34
- projectId→GitLab-API coordinate (path-2, `gitlab-api`), plus visibility and
35
- tag→sha commit pin. B1 and B2 differ **only** in how they discover the package
36
- set + projectId; everything downstream is this one function — the GAP-1/GAP-2
37
- logic is never duplicated.
38
-
39
- ## API
40
-
41
- ```js
42
- const { resolveLock, resolveFromManifest, cloneFromLock, loadLock, writeLock } = require('@gitdot/clone-lib');
43
-
44
- // B1
45
- const { lock } = await resolveLock({ packageLockPath, subset, scopes, api });
46
-
47
- // B2
48
- const { lock } = await resolveFromManifest(snapshotJson, { scopes, api, subset });
49
-
50
- // persist (deterministic 2-space + newline) / read (filename-agnostic)
51
- writeLock('snapshot.lock.json', lock);
52
- const same = loadLock('snapshot.lock.json');
53
-
54
- // clone the closure
55
- const report = await cloneFromLock('snapshot.lock.json', { mode: 'pinned', dest });
56
- ```
57
-
58
- `api` is a GitLab client — `createGitLabApi({ token, host })` (real, Node https)
59
- or any object with `getProject` / `getTags` / `getPackument` (inject a fake in tests).
60
-
61
- ### Package entry points (`exports`)
62
-
63
- | specifier | module |
64
- |---|---|
65
- | `@gitdot/clone-lib` | full surface (resolve + clone + lock I/O) |
66
- | `@gitdot/clone-lib/resolve` | just the resolvers + `createGitLabApi` |
67
-
68
- ## Sidecar schema (S2)
69
-
70
- `skit.lock.json`, `snapshot.lock.json`, `glpkg.lock.json` are **instances of one
71
- schema** — same shape, different `source` block. `loadLock(path)` reads any of
72
- them **filename-agnostically** (the filename is a label, not a schema selector)
73
- and validates `kind`/`lockVersion`/`members[]`; `writeLock(path, lock)` is the
74
- deterministic writer used by the emitters.
75
-
76
- ## Clone semantics (S3)
77
-
78
- - **`pinned`** — clone + `checkout` exact `commitSha`; absent/unreachable sha ⇒
79
- `failed` (never a silent HEAD fallback).
80
- - **`head`** — clone + stay on default-branch HEAD; records the actual HEAD sha.
81
- - Flat closure iteration; clone-path `<dest>/workspace/<dotToTreePath(id)>`;
82
- duplicate `cloneUrl` cloned once.
83
- - Proxy-independent auth: public → no creds; private+access → cloned;
84
- **private+no-access → `skipped-no-access` (expected, not an error)**;
85
- `credentialsNeeded` pre-flight counts private members.
86
- - Deterministic + idempotent (already at target sha ⇒ `skipped`); every member
87
- lands in exactly one bucket.
88
-
89
- ## CLI (`--json` first, no TUI)
90
-
91
- ```bash
92
- gitdot-resolve resolve --package-lock core/package-lock.json --subset snap --token <t> --out snapshot.lock.json
93
- gitdot-resolve clone --lock snapshot.lock.json --mode pinned --dest . --json
94
- ```
95
-
96
- ## Layout
97
-
98
- ```
99
- src/index.js package hub (public surface)
100
- src/lock.js sidecar schema: loadLock / writeLock / validateLock
101
- src/clone.js cloneFromLock (S3)
102
- src/dotpath.js dotToTreePath (pure id→path)
103
- src/git.js real git runner (only shell-out) + error classifier
104
- resolve/member.js SHARED member core (B1+B2)
105
- resolve/resolve.js B1 resolveLock (package-lock)
106
- resolve/manifest.js B2 resolveFromManifest (snapshot.json)
107
- resolve/gitlab.js read-only GitLab client (getProject/getTags/getPackument)
108
- bin/gitdot-resolve.js CLI (resolve|clone)
109
- test/ unit tests (fake git + fake API, DI) + real-git integration
110
- ```
111
-
112
- ## Run
113
-
114
- ```bash
115
- node --test # full suite
116
- node examples/demo.js # pinned + head sample reports
117
- ```
@@ -1,9 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * gitdot-resolve — thin CLI mirror of the library. Two verbs:
4
- * resolve (S4) — build a resolved-lock from an installed package-lock.json
5
- * clone (S3) — clone the closure a resolved-lock declares
6
- * --json is the primary (and only) output contract — no TUI, no decoration.
7
- */
8
- export {};
9
- //# sourceMappingURL=gitdot-resolve.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gitdot-resolve.d.ts","sourceRoot":"","sources":["../../src/bin/gitdot-resolve.ts"],"names":[],"mappings":";AACA;;;;;GAKG"}
@@ -1,154 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";
3
- /**
4
- * gitdot-resolve — thin CLI mirror of the library. Two verbs:
5
- * resolve (S4) — build a resolved-lock from an installed package-lock.json
6
- * clone (S3) — clone the closure a resolved-lock declares
7
- * --json is the primary (and only) output contract — no TUI, no decoration.
8
- */
9
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- var desc = Object.getOwnPropertyDescriptor(m, k);
12
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
- desc = { enumerable: true, get: function() { return m[k]; } };
14
- }
15
- Object.defineProperty(o, k2, desc);
16
- }) : (function(o, m, k, k2) {
17
- if (k2 === undefined) k2 = k;
18
- o[k2] = m[k];
19
- }));
20
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
- Object.defineProperty(o, "default", { enumerable: true, value: v });
22
- }) : function(o, v) {
23
- o["default"] = v;
24
- });
25
- var __importStar = (this && this.__importStar) || (function () {
26
- var ownKeys = function(o) {
27
- ownKeys = Object.getOwnPropertyNames || function (o) {
28
- var ar = [];
29
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
- return ar;
31
- };
32
- return ownKeys(o);
33
- };
34
- return function (mod) {
35
- if (mod && mod.__esModule) return mod;
36
- var result = {};
37
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
- __setModuleDefault(result, mod);
39
- return result;
40
- };
41
- })();
42
- Object.defineProperty(exports, "__esModule", { value: true });
43
- const fs = __importStar(require("fs"));
44
- const clone_1 = require("../clone");
45
- const index_1 = require("../resolve/index");
46
- function parseArgs(argv) {
47
- const args = { mode: 'pinned', dest: process.cwd(), json: false };
48
- for (let i = 0; i < argv.length; i++) {
49
- switch (argv[i]) {
50
- case '--lock':
51
- args.lock = argv[++i];
52
- break;
53
- case '--mode':
54
- args.mode = argv[++i];
55
- break;
56
- case '--dest':
57
- args.dest = argv[++i];
58
- break;
59
- case '--only':
60
- args.only = argv[++i].split(',');
61
- break;
62
- case '--installer':
63
- args.installer = argv[++i].split(',');
64
- break;
65
- case '--json':
66
- args.json = true;
67
- break;
68
- default: break;
69
- }
70
- }
71
- return args;
72
- }
73
- function parseResolveArgs(argv) {
74
- const args = {};
75
- for (let i = 0; i < argv.length; i++) {
76
- switch (argv[i]) {
77
- case '--package-lock':
78
- args.packageLock = argv[++i];
79
- break;
80
- case '--node-modules':
81
- args.nodeModules = argv[++i];
82
- break;
83
- case '--subset':
84
- args.subset = argv[++i];
85
- break;
86
- case '--scopes':
87
- args.scopes = argv[++i].split(',');
88
- break;
89
- case '--token':
90
- args.token = argv[++i];
91
- break;
92
- case '--host':
93
- args.host = argv[++i];
94
- break;
95
- case '--out':
96
- args.out = argv[++i];
97
- break;
98
- default: break;
99
- }
100
- }
101
- return args;
102
- }
103
- async function runResolve(rest) {
104
- const a = parseResolveArgs(rest);
105
- if (!a.packageLock || !a.subset) {
106
- process.stderr.write('usage: gitdot-resolve resolve --package-lock <file> --subset <name> [--node-modules <dir>] [--scopes @ist,@microwiseai] [--token <t>] [--host gitlab.com] [--out <file>]\n');
107
- process.exit(2);
108
- }
109
- const api = (0, index_1.createGitLabApi)({ token: a.token || process.env.GLPKG_TOKEN, host: a.host || 'gitlab.com' });
110
- const { lock, warnings } = await (0, index_1.resolveLock)({
111
- packageLockPath: a.packageLock,
112
- nodeModulesDir: a.nodeModules,
113
- subset: a.subset,
114
- scopes: a.scopes,
115
- api,
116
- warn: (m) => process.stderr.write(`WARN: ${m}\n`),
117
- });
118
- const out = JSON.stringify(lock, null, 2) + '\n';
119
- if (a.out)
120
- fs.writeFileSync(a.out, out);
121
- else
122
- process.stdout.write(out);
123
- process.stderr.write(`resolved ${lock.members.length} members, ${lock.edges.length} edges, ${warnings.length} warnings\n`);
124
- process.exit(0);
125
- }
126
- async function main() {
127
- const [verb, ...rest] = process.argv.slice(2);
128
- if (verb === 'resolve')
129
- return runResolve(rest);
130
- if (verb !== 'clone') {
131
- process.stderr.write('usage: gitdot-resolve <resolve|clone> ...\n');
132
- process.exit(2);
133
- }
134
- const args = parseArgs(rest);
135
- if (!args.lock) {
136
- process.stderr.write('error: --lock <file> is required\n');
137
- process.exit(2);
138
- }
139
- const report = await (0, clone_1.cloneFromLock)(args.lock, {
140
- mode: args.mode,
141
- dest: args.dest,
142
- only: args.only,
143
- installer: args.installer,
144
- });
145
- // --json is the primary contract; even without --json we emit JSON (no TUI).
146
- process.stdout.write(JSON.stringify(report, null, 2) + '\n');
147
- const hardFailures = report.failed.length + report['not-found'].length;
148
- process.exit(hardFailures > 0 ? 1 : 0);
149
- }
150
- main().catch((e) => {
151
- process.stderr.write(`error: ${e.message}\n`);
152
- process.exit(1);
153
- });
154
- //# sourceMappingURL=gitdot-resolve.js.map