@sun-asterisk/sungen 3.1.2-beta.106 → 3.1.2-beta.108
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/capabilities/discover.d.ts.map +1 -1
- package/dist/capabilities/discover.js +15 -5
- package/dist/capabilities/discover.js.map +1 -1
- package/dist/cli/commands/capability.d.ts.map +1 -1
- package/dist/cli/commands/capability.js +17 -3
- package/dist/cli/commands/capability.js.map +1 -1
- package/package.json +2 -2
- package/src/capabilities/discover.ts +15 -4
- package/src/cli/commands/capability.ts +13 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/capabilities/discover.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/capabilities/discover.ts"],"names":[],"mappings":"AAwDA,wBAAgB,+BAA+B,IAAI,IAAI,CAKtD"}
|
|
@@ -79,11 +79,21 @@ function loadExternalDriver(name) {
|
|
|
79
79
|
catch {
|
|
80
80
|
continue;
|
|
81
81
|
} // not installed at this anchor → try next
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
register
|
|
86
|
-
|
|
82
|
+
try {
|
|
83
|
+
const mod = req(resolved);
|
|
84
|
+
const register = mod?.sungenDriver?.register ?? mod?.register;
|
|
85
|
+
if (typeof register === 'function')
|
|
86
|
+
register(registry_1.capabilityRegistry);
|
|
87
|
+
}
|
|
88
|
+
catch (e) {
|
|
89
|
+
// A present-but-BROKEN driver (e.g. a stale/incompatible leftover whose own core dep doesn't
|
|
90
|
+
// resolve) must never crash the whole CLI — `sungen --version`, `capability remove`, etc. must
|
|
91
|
+
// still work. Warn + skip so the user can recover.
|
|
92
|
+
console.warn(`⚠ sungen: capability driver "${name}" is installed but failed to load — skipping.\n` +
|
|
93
|
+
` ${e?.message || e}\n` +
|
|
94
|
+
` Fix: reinstall it (\`sungen capability add ${name.replace(/^@sungen\/driver-/, '')}\`) or remove it.`);
|
|
95
|
+
}
|
|
96
|
+
return; // found at this anchor (loaded or warned) — don't fall through to other anchors
|
|
87
97
|
}
|
|
88
98
|
// not installed at any anchor — capabilities are opt-in, so skip silently
|
|
89
99
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/capabilities/discover.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/capabilities/discover.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDA,0EAKC;AA7DD;;;;;;;;;;;;;;GAcG;AACH,mCAAuC;AACvC,2CAA6B;AAC7B,yCAAgD;AAChD,yCAAmE;AAEnE;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,oBAAoB,CAAC,CAAC;AAE1F,SAAS,kBAAkB,CAAC,IAAY;IACtC,uFAAuF;IACvF,kGAAkG;IAClG,mGAAmG;IACnG,8EAA8E;IAC9E,KAAK,MAAM,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC;QAC5E,IAAI,GAAgB,CAAC;QACrB,IAAI,CAAC;YAAC,GAAG,GAAG,IAAA,sBAAa,EAAC,MAAM,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,SAAS;QAAC,CAAC;QACxD,IAAI,QAAgB,CAAC;QACrB,IAAI,CAAC;YAAC,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,SAAS;QAAC,CAAC,CAAC,0CAA0C;QACpG,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC1B,MAAM,QAAQ,GAAyD,GAAG,EAAE,YAAY,EAAE,QAAQ,IAAI,GAAG,EAAE,QAAQ,CAAC;YACpH,IAAI,OAAO,QAAQ,KAAK,UAAU;gBAAE,QAAQ,CAAC,6BAAkB,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,6FAA6F;YAC7F,+FAA+F;YAC/F,mDAAmD;YACnD,OAAO,CAAC,IAAI,CACV,gCAAgC,IAAI,iDAAiD;gBACrF,KAAM,CAAW,EAAE,OAAO,IAAI,CAAC,IAAI;gBACnC,gDAAgD,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,mBAAmB,CACzG,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,gFAAgF;IAC1F,CAAC;IACD,0EAA0E;AAC5E,CAAC;AAED,SAAgB,+BAA+B;IAC7C,IAAI,6BAAkB,CAAC,WAAW,EAAE;QAAE,OAAO;IAC7C,KAAK,MAAM,IAAI,IAAI,gBAAgB;QAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,4CAA4C;IAC3G,KAAK,MAAM,MAAM,IAAI,wBAAa;QAAE,MAAM,CAAC,QAAQ,CAAC,6BAAkB,CAAC,CAAC,CAAC,4BAA4B;IACrG,IAAA,iCAAsB,EAAC,6BAAkB,CAAC,CAAC,CAAC,iDAAiD;AAC/F,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capability.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/capability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"capability.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/capability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0CpC,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwJhE"}
|
|
@@ -41,6 +41,15 @@ const path = __importStar(require("path"));
|
|
|
41
41
|
const capability_1 = require("../../harness/capability");
|
|
42
42
|
const capability_plan_1 = require("../../harness/capability-plan");
|
|
43
43
|
const adapters_1 = require("../../generators/test-generator/adapters");
|
|
44
|
+
/** The running CLI's (core) version — opt-in drivers install in lockstep with it (not `@latest`). */
|
|
45
|
+
function coreVersion() {
|
|
46
|
+
try {
|
|
47
|
+
return require('../../../package.json').version || 'latest';
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return 'latest';
|
|
51
|
+
}
|
|
52
|
+
}
|
|
44
53
|
/**
|
|
45
54
|
* Verify a capability driver (db/api/…) installed into the PROJECT exposes the capability SPI entry
|
|
46
55
|
* (`sungenDriver.register`). Resolved from the project's node_modules so it works with a globally
|
|
@@ -164,10 +173,15 @@ function registerCapabilityCommand(program) {
|
|
|
164
173
|
const adapterName = meta.adapter || meta.id;
|
|
165
174
|
const bundled = adapters_1.adapterRegistry.hasAdapter(adapterName); // e.g. `web` is bundled in Phase 2a
|
|
166
175
|
if (!bundled && !o.skipInstall) {
|
|
167
|
-
|
|
168
|
-
|
|
176
|
+
// Pin the driver to the RUNNING core's exact version (lockstep). Without this, plain
|
|
177
|
+
// `npm install @sungen/driver-x` resolves the package's `latest` dist-tag — which on a
|
|
178
|
+
// beta channel can lag (e.g. a prerelease first-published-as-latest), pulling a driver
|
|
179
|
+
// whose core dep resolves to the wrong @sun-asterisk/sungen and fails to load.
|
|
180
|
+
const spec = `${meta.package}@${coreVersion()}`;
|
|
181
|
+
console.log(`📦 Installing ${spec} (dev dependency)...`);
|
|
182
|
+
const r = (0, child_process_1.spawnSync)('npm', ['install', '-D', spec], { stdio: 'inherit', shell: true });
|
|
169
183
|
if (r.status !== 0)
|
|
170
|
-
throw new Error(`npm install -D ${
|
|
184
|
+
throw new Error(`npm install -D ${spec} failed.`);
|
|
171
185
|
}
|
|
172
186
|
else if (bundled) {
|
|
173
187
|
console.log(`✓ ${driver} is built-in (no install needed).`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capability.js","sourceRoot":"","sources":["../../../src/cli/commands/capability.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"capability.js","sourceRoot":"","sources":["../../../src/cli/commands/capability.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sun-asterisk/sungen",
|
|
3
|
-
"version": "3.1.2-beta.
|
|
3
|
+
"version": "3.1.2-beta.108",
|
|
4
4
|
"description": "Deterministic E2E Test Compiler - Gherkin + Selectors → Playwright tests",
|
|
5
5
|
"main": "src/index.ts",
|
|
6
6
|
"types": "src/index.ts",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"node": ">=18.0.0"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@sungen/driver-ui": "3.1.2-beta.
|
|
36
|
+
"@sungen/driver-ui": "3.1.2-beta.108",
|
|
37
37
|
"@anthropic-ai/sdk": "^0.71.0",
|
|
38
38
|
"@babel/parser": "^7.28.5",
|
|
39
39
|
"@babel/traverse": "^7.28.5",
|
|
@@ -35,10 +35,21 @@ function loadExternalDriver(name: string): void {
|
|
|
35
35
|
try { req = createRequire(anchor); } catch { continue; }
|
|
36
36
|
let resolved: string;
|
|
37
37
|
try { resolved = req.resolve(name); } catch { continue; } // not installed at this anchor → try next
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
try {
|
|
39
|
+
const mod = req(resolved);
|
|
40
|
+
const register: ((r: typeof capabilityRegistry) => void) | undefined = mod?.sungenDriver?.register ?? mod?.register;
|
|
41
|
+
if (typeof register === 'function') register(capabilityRegistry);
|
|
42
|
+
} catch (e) {
|
|
43
|
+
// A present-but-BROKEN driver (e.g. a stale/incompatible leftover whose own core dep doesn't
|
|
44
|
+
// resolve) must never crash the whole CLI — `sungen --version`, `capability remove`, etc. must
|
|
45
|
+
// still work. Warn + skip so the user can recover.
|
|
46
|
+
console.warn(
|
|
47
|
+
`⚠ sungen: capability driver "${name}" is installed but failed to load — skipping.\n` +
|
|
48
|
+
` ${(e as Error)?.message || e}\n` +
|
|
49
|
+
` Fix: reinstall it (\`sungen capability add ${name.replace(/^@sungen\/driver-/, '')}\`) or remove it.`,
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
return; // found at this anchor (loaded or warned) — don't fall through to other anchors
|
|
42
53
|
}
|
|
43
54
|
// not installed at any anchor — capabilities are opt-in, so skip silently
|
|
44
55
|
}
|
|
@@ -9,6 +9,11 @@ import {
|
|
|
9
9
|
import { buildPlan, MANUAL_REASONS } from '../../harness/capability-plan';
|
|
10
10
|
import { adapterRegistry } from '../../generators/test-generator/adapters';
|
|
11
11
|
|
|
12
|
+
/** The running CLI's (core) version — opt-in drivers install in lockstep with it (not `@latest`). */
|
|
13
|
+
function coreVersion(): string {
|
|
14
|
+
try { return require('../../../package.json').version || 'latest'; } catch { return 'latest'; }
|
|
15
|
+
}
|
|
16
|
+
|
|
12
17
|
/**
|
|
13
18
|
* Verify a capability driver (db/api/…) installed into the PROJECT exposes the capability SPI entry
|
|
14
19
|
* (`sungenDriver.register`). Resolved from the project's node_modules so it works with a globally
|
|
@@ -130,9 +135,14 @@ export function registerCapabilityCommand(program: Command): void {
|
|
|
130
135
|
const bundled = adapterRegistry.hasAdapter(adapterName); // e.g. `web` is bundled in Phase 2a
|
|
131
136
|
|
|
132
137
|
if (!bundled && !o.skipInstall) {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
138
|
+
// Pin the driver to the RUNNING core's exact version (lockstep). Without this, plain
|
|
139
|
+
// `npm install @sungen/driver-x` resolves the package's `latest` dist-tag — which on a
|
|
140
|
+
// beta channel can lag (e.g. a prerelease first-published-as-latest), pulling a driver
|
|
141
|
+
// whose core dep resolves to the wrong @sun-asterisk/sungen and fails to load.
|
|
142
|
+
const spec = `${meta.package}@${coreVersion()}`;
|
|
143
|
+
console.log(`📦 Installing ${spec} (dev dependency)...`);
|
|
144
|
+
const r = spawnSync('npm', ['install', '-D', spec], { stdio: 'inherit', shell: true });
|
|
145
|
+
if (r.status !== 0) throw new Error(`npm install -D ${spec} failed.`);
|
|
136
146
|
} else if (bundled) {
|
|
137
147
|
console.log(`✓ ${driver} is built-in (no install needed).`);
|
|
138
148
|
}
|