@sun-asterisk/sungen 3.2.24-beta.2 → 3.2.24-beta.3
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/cli/commands/audit.d.ts.map +1 -1
- package/dist/cli/commands/audit.js +2 -13
- package/dist/cli/commands/audit.js.map +1 -1
- package/dist/cli/commands/capability.d.ts.map +1 -1
- package/dist/cli/commands/capability.js +11 -12
- package/dist/cli/commands/capability.js.map +1 -1
- package/dist/cli/commands/challenge.d.ts.map +1 -1
- package/dist/cli/commands/challenge.js +2 -10
- package/dist/cli/commands/challenge.js.map +1 -1
- package/dist/cli/commands/depth-lint.d.ts.map +1 -1
- package/dist/cli/commands/depth-lint.js +2 -12
- package/dist/cli/commands/depth-lint.js.map +1 -1
- package/dist/cli/commands/gate.d.ts.map +1 -1
- package/dist/cli/commands/gate.js +2 -47
- package/dist/cli/commands/gate.js.map +1 -1
- package/dist/cli/commands/journey.d.ts.map +1 -1
- package/dist/cli/commands/journey.js +2 -12
- package/dist/cli/commands/journey.js.map +1 -1
- package/dist/cli/commands/manifest.d.ts.map +1 -1
- package/dist/cli/commands/manifest.js +2 -10
- package/dist/cli/commands/manifest.js.map +1 -1
- package/dist/cli/commands/next.d.ts +14 -0
- package/dist/cli/commands/next.d.ts.map +1 -0
- package/dist/cli/commands/next.js +130 -0
- package/dist/cli/commands/next.js.map +1 -0
- package/dist/cli/index.js +34 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/resolve-unit.d.ts +22 -0
- package/dist/cli/resolve-unit.d.ts.map +1 -0
- package/dist/cli/resolve-unit.js +101 -0
- package/dist/cli/resolve-unit.js.map +1 -0
- package/dist/harness/audit.d.ts.map +1 -1
- package/dist/harness/audit.js +9 -1
- package/dist/harness/audit.js.map +1 -1
- package/dist/harness/capability-plan.d.ts +12 -1
- package/dist/harness/capability-plan.d.ts.map +1 -1
- package/dist/harness/capability-plan.js +16 -2
- package/dist/harness/capability-plan.js.map +1 -1
- package/dist/harness/capability.d.ts +12 -0
- package/dist/harness/capability.d.ts.map +1 -1
- package/dist/harness/capability.js +16 -0
- package/dist/harness/capability.js.map +1 -1
- package/dist/harness/catalog/drivers.yaml +5 -0
- package/dist/harness/next-step.d.ts +40 -0
- package/dist/harness/next-step.d.ts.map +1 -0
- package/dist/harness/next-step.js +242 -0
- package/dist/harness/next-step.js.map +1 -0
- package/dist/orchestrator/templates/ai-src/commands/create-test.md +14 -6
- package/dist/orchestrator/templates/ai-src/commands/run-test.md +6 -0
- package/package.json +3 -3
- package/src/cli/commands/audit.ts +2 -11
- package/src/cli/commands/capability.ts +11 -10
- package/src/cli/commands/challenge.ts +2 -8
- package/src/cli/commands/depth-lint.ts +2 -10
- package/src/cli/commands/gate.ts +2 -10
- package/src/cli/commands/journey.ts +2 -10
- package/src/cli/commands/manifest.ts +2 -8
- package/src/cli/commands/next.ts +96 -0
- package/src/cli/index.ts +31 -0
- package/src/cli/resolve-unit.ts +72 -0
- package/src/harness/audit.ts +9 -1
- package/src/harness/capability-plan.ts +23 -3
- package/src/harness/capability.ts +22 -0
- package/src/harness/catalog/drivers.yaml +5 -0
- package/src/harness/next-step.ts +237 -0
- package/src/orchestrator/templates/ai-src/commands/create-test.md +14 -6
- package/src/orchestrator/templates/ai-src/commands/run-test.md +6 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capability-plan.js","sourceRoot":"","sources":["../../src/harness/capability-plan.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"capability-plan.js","sourceRoot":"","sources":["../../src/harness/capability-plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,7 +36,19 @@ export interface DriverMeta {
|
|
|
36
36
|
bundled?: boolean;
|
|
37
37
|
capabilities: string[];
|
|
38
38
|
unblocks?: string[];
|
|
39
|
+
/**
|
|
40
|
+
* Unit kinds this driver can actually serve. Absent = all kinds.
|
|
41
|
+
*
|
|
42
|
+
* A driver that only resolves its config from one unit shape must say so, or the capability
|
|
43
|
+
* planner recommends it for a unit it can never serve — which is what happened with the mock
|
|
44
|
+
* driver on a flow: install, dead end, manual rollback (#597).
|
|
45
|
+
*/
|
|
46
|
+
units?: Array<'screen' | 'flow' | 'api'>;
|
|
39
47
|
}
|
|
48
|
+
/** The unit kind of a catalog unit id: `flows/<f>` → flow, `api/<a>` → api, else screen. */
|
|
49
|
+
export declare function unitKindOf(catalogUnitId: string): 'screen' | 'flow' | 'api';
|
|
50
|
+
/** Can this driver serve that unit kind? Unknown driver → assume yes (nothing to gate on). */
|
|
51
|
+
export declare function driverServesUnit(driverId: string, kind: 'screen' | 'flow' | 'api'): boolean;
|
|
40
52
|
export declare function capabilitiesPath(cwd: string): string;
|
|
41
53
|
export declare function readCapabilities(cwd: string): CapabilityProfile;
|
|
42
54
|
export declare function writeCapabilities(cwd: string, profile: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capability.d.ts","sourceRoot":"","sources":["../../src/harness/capability.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,mBAAmB,GAAG,QAAQ,CAAC;CACxC;AAED,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;AAE9C;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,GAAG,CAAC,WAAW,CAAC,CAU9E;AAED,MAAM,WAAW,kBAAkB;IAAG,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;CAAE;AAE7E;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,kBAAkB,EAAE,CAWtI;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,GAAG,YAAY,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"capability.d.ts","sourceRoot":"","sources":["../../src/harness/capability.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,mBAAmB,GAAG,QAAQ,CAAC;CACxC;AAED,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;AAE9C;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,GAAG,CAAC,WAAW,CAAC,CAU9E;AAED,MAAM,WAAW,kBAAkB;IAAG,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;CAAE;AAE7E;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,kBAAkB,EAAE,CAWtI;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,GAAG,YAAY,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC;CAC1C;AAED,4FAA4F;AAC5F,wBAAgB,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,CAK3E;AAED,8FAA8F;AAC9F,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CAG3F;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAc/D;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,MAAM,CAajI;AAGD,wBAAgB,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAQ9D;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAE7D"}
|
|
@@ -35,6 +35,8 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.verificationScope = verificationScope;
|
|
37
37
|
exports.verificationScopeFindings = verificationScopeFindings;
|
|
38
|
+
exports.unitKindOf = unitKindOf;
|
|
39
|
+
exports.driverServesUnit = driverServesUnit;
|
|
38
40
|
exports.capabilitiesPath = capabilitiesPath;
|
|
39
41
|
exports.readCapabilities = readCapabilities;
|
|
40
42
|
exports.writeCapabilities = writeCapabilities;
|
|
@@ -89,6 +91,20 @@ function verificationScopeFindings(featureText, viewpointText, profile) {
|
|
|
89
91
|
}
|
|
90
92
|
return out;
|
|
91
93
|
}
|
|
94
|
+
/** The unit kind of a catalog unit id: `flows/<f>` → flow, `api/<a>` → api, else screen. */
|
|
95
|
+
function unitKindOf(catalogUnitId) {
|
|
96
|
+
const seg = catalogUnitId.split('/')[0];
|
|
97
|
+
if (seg === 'api')
|
|
98
|
+
return 'api';
|
|
99
|
+
if (seg === 'flows')
|
|
100
|
+
return 'flow';
|
|
101
|
+
return 'screen';
|
|
102
|
+
}
|
|
103
|
+
/** Can this driver serve that unit kind? Unknown driver → assume yes (nothing to gate on). */
|
|
104
|
+
function driverServesUnit(driverId, kind) {
|
|
105
|
+
const units = driverMeta(driverId)?.units;
|
|
106
|
+
return !units || units.includes(kind);
|
|
107
|
+
}
|
|
92
108
|
function capabilitiesPath(cwd) {
|
|
93
109
|
return path.join(cwd, 'qa', 'capabilities.yaml');
|
|
94
110
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capability.js","sourceRoot":"","sources":["../../src/harness/capability.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,8CAUC;AASD,8DAWC;
|
|
1
|
+
{"version":3,"file":"capability.js","sourceRoot":"","sources":["../../src/harness/capability.ts"],"names":[],"mappings":"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"}
|
|
@@ -61,6 +61,11 @@ drivers:
|
|
|
61
61
|
status: shipped
|
|
62
62
|
capabilities: ["@mock", "@network"]
|
|
63
63
|
unblocks: [M3]
|
|
64
|
+
# `units:` is the unit KINDS this driver can actually serve. Absent → all kinds.
|
|
65
|
+
# The mock driver resolves its catalog from qa/screens/<unit>/mock/mocks.yaml only
|
|
66
|
+
# (mockCatalogPath is hardcoded to that shape), so it cannot serve a flow. Recommending
|
|
67
|
+
# it for one sent an operator through an install, a dead end and a manual rollback (#597).
|
|
68
|
+
units: [screen]
|
|
64
69
|
mail-file:
|
|
65
70
|
kind: capability
|
|
66
71
|
package: "@sungen/driver-mail-file"
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export interface NextStep {
|
|
2
|
+
/** The command to run, as the operator would type it. */
|
|
3
|
+
command: string;
|
|
4
|
+
/** Why it is next — stated so an agent can weigh it, not just obey it. */
|
|
5
|
+
because: string;
|
|
6
|
+
/** `blocked` steps are not runnable yet; they name what to resolve first. */
|
|
7
|
+
kind: 'do' | 'blocked' | 'optional';
|
|
8
|
+
}
|
|
9
|
+
export interface UnitState {
|
|
10
|
+
unit: string;
|
|
11
|
+
kind: 'screen' | 'flow' | 'api';
|
|
12
|
+
hasSpec: boolean;
|
|
13
|
+
hasViewpoint: boolean;
|
|
14
|
+
hasContract: boolean;
|
|
15
|
+
hasFlowInventory: boolean;
|
|
16
|
+
scenarioCount: number;
|
|
17
|
+
hasSelectors: boolean;
|
|
18
|
+
selectorsArePlaceholder: boolean;
|
|
19
|
+
compiled: boolean;
|
|
20
|
+
hasResults: boolean;
|
|
21
|
+
hasDeliverable: boolean;
|
|
22
|
+
audit?: {
|
|
23
|
+
overall: number;
|
|
24
|
+
gateStatus: string;
|
|
25
|
+
findings: string[];
|
|
26
|
+
viewpointBaselineStatus?: string;
|
|
27
|
+
};
|
|
28
|
+
steps: NextStep[];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Everything the resolver needs, read from disk. `unitId` is the catalog id
|
|
32
|
+
* (`<screen>` · `flows/<f>` · `api/<a>`); `unitDir` is its directory.
|
|
33
|
+
*/
|
|
34
|
+
export declare function readUnitState(projectRoot: string, unitDir: string, unit: string, kind: UnitState['kind']): UnitState;
|
|
35
|
+
/**
|
|
36
|
+
* The ordered answer. Earliest unmet precondition first, so the list reads as a path rather than
|
|
37
|
+
* a menu — and a `blocked` step names what to resolve instead of pretending it can run.
|
|
38
|
+
*/
|
|
39
|
+
export declare function deriveSteps(s: UnitState): NextStep[];
|
|
40
|
+
//# sourceMappingURL=next-step.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"next-step.d.ts","sourceRoot":"","sources":["../../src/harness/next-step.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,QAAQ;IACvB,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,6EAA6E;IAC7E,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,UAAU,CAAC;CACrC;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,uBAAuB,EAAE,OAAO,CAAC;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,uBAAuB,CAAC,EAAE,MAAM,CAAC;KAClC,CAAC;IACF,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAqBD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,GAC1E,SAAS,CA8DX;AAUD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,SAAS,GAAG,QAAQ,EAAE,CAmFpD"}
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.readUnitState = readUnitState;
|
|
37
|
+
exports.deriveSteps = deriveSteps;
|
|
38
|
+
/**
|
|
39
|
+
* "What now?" — one deterministic resolver over the project's own state.
|
|
40
|
+
*
|
|
41
|
+
* The next step used to be hardcoded per command, and only two of twenty-nine printed one at
|
|
42
|
+
* all. So a run that ended anywhere else ended in silence: `sungen capability add mock`
|
|
43
|
+
* finished with a blank line, the operator's agent had nothing telling it what remained, and the
|
|
44
|
+
* whole session stopped mid-workflow (#597).
|
|
45
|
+
*
|
|
46
|
+
* Hardcoding it in the other twenty-seven would repeat the mistake in bulk. What decides the
|
|
47
|
+
* next step is not which command just ran — it is what the project now HOLDS: the artifacts on
|
|
48
|
+
* disk, the audit report in `.sungen/reports/`, the accepted viewpoint baseline, the compiled
|
|
49
|
+
* spec, the run results. So this reads that state and derives the answer, and every command ends
|
|
50
|
+
* by pointing here. One place to be right, one place to test.
|
|
51
|
+
*
|
|
52
|
+
* Deterministic and read-only: same project state → same answer, no network, no writes.
|
|
53
|
+
*/
|
|
54
|
+
const fs = __importStar(require("fs"));
|
|
55
|
+
const path = __importStar(require("path"));
|
|
56
|
+
const unit_paths_1 = require("./unit-paths");
|
|
57
|
+
const read_text_1 = require("./read-text");
|
|
58
|
+
const exists = (p) => fs.existsSync(p);
|
|
59
|
+
function readJson(p) {
|
|
60
|
+
try {
|
|
61
|
+
return JSON.parse((0, read_text_1.readTextFile)(p));
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
return null; // absent or unreadable — treated as "not run"
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
function countScenarios(unitDir, unit) {
|
|
68
|
+
let n = 0;
|
|
69
|
+
for (const f of (0, unit_paths_1.featureFilesFor)(unitDir, unit)) {
|
|
70
|
+
const text = (0, read_text_1.readTextFile)(f) ?? '';
|
|
71
|
+
n += (text.match(/^\s*Scenario(?: Outline)?:/gm) ?? []).length;
|
|
72
|
+
}
|
|
73
|
+
return n;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Everything the resolver needs, read from disk. `unitId` is the catalog id
|
|
77
|
+
* (`<screen>` · `flows/<f>` · `api/<a>`); `unitDir` is its directory.
|
|
78
|
+
*/
|
|
79
|
+
function readUnitState(projectRoot, unitDir, unit, kind) {
|
|
80
|
+
const req = path.join(unitDir, 'requirements');
|
|
81
|
+
const slug = (0, unit_paths_1.reportSlug)(unit);
|
|
82
|
+
const audit = readJson(path.join(projectRoot, '.sungen', 'reports', `${slug}-audit.json`));
|
|
83
|
+
const selectorsDir = path.join(unitDir, 'selectors');
|
|
84
|
+
let selectorFiles = [];
|
|
85
|
+
try {
|
|
86
|
+
selectorFiles = fs.readdirSync(selectorsDir).filter((f) => f.endsWith('.yaml'));
|
|
87
|
+
}
|
|
88
|
+
catch { /* api units carry no selectors */ }
|
|
89
|
+
const selectorText = selectorFiles.map((f) => (0, read_text_1.readTextFile)(path.join(selectorsDir, f)) ?? '').join('\n');
|
|
90
|
+
const contractPath = path.join(req, 'flow-contract.yaml');
|
|
91
|
+
const contractText = (0, read_text_1.readTextFile)(contractPath) ?? '';
|
|
92
|
+
const specDirs = [
|
|
93
|
+
path.join(projectRoot, 'specs', 'generated', 'flows', unit),
|
|
94
|
+
path.join(projectRoot, 'specs', 'generated', unit),
|
|
95
|
+
];
|
|
96
|
+
const compiled = specDirs.some((d) => {
|
|
97
|
+
try {
|
|
98
|
+
return fs.readdirSync(d).some((f) => f.endsWith('.spec.ts'));
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
const hasResults = specDirs.some((d) => {
|
|
105
|
+
try {
|
|
106
|
+
return fs.readdirSync(d).some((f) => f.endsWith('-test-result.json'));
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
let hasDeliverable = false;
|
|
113
|
+
try {
|
|
114
|
+
hasDeliverable = fs.readdirSync(path.join(projectRoot, 'qa', 'deliverables'))
|
|
115
|
+
.some((f) => f.startsWith(`${slug}-`));
|
|
116
|
+
}
|
|
117
|
+
catch { /* nothing exported yet */ }
|
|
118
|
+
const score = (audit?.score ?? {});
|
|
119
|
+
const baseline = (audit?.viewpointBaseline ?? {});
|
|
120
|
+
const state = {
|
|
121
|
+
unit, kind,
|
|
122
|
+
hasSpec: exists(path.join(req, 'spec.md')),
|
|
123
|
+
hasViewpoint: exists(path.join(req, 'test-viewpoint.md')),
|
|
124
|
+
hasContract: exists(contractPath),
|
|
125
|
+
// A contract WITHOUT `flows:` can only be scored per phase, which is a materially weaker
|
|
126
|
+
// claim — so it is part of the state, not a detail.
|
|
127
|
+
hasFlowInventory: /^\s*flows:\s*$/m.test(contractText),
|
|
128
|
+
scenarioCount: countScenarios(unitDir, unit),
|
|
129
|
+
hasSelectors: selectorFiles.length > 0,
|
|
130
|
+
// A scaffolded selector file exists but resolves nothing; treating it as "done" is what
|
|
131
|
+
// makes a run look further along than it is.
|
|
132
|
+
selectorsArePlaceholder: selectorFiles.length > 0
|
|
133
|
+
&& (/TODO|PLACEHOLDER|REPLACE ME/i.test(selectorText) || selectorText.trim().length < 40),
|
|
134
|
+
compiled, hasResults, hasDeliverable,
|
|
135
|
+
audit: audit
|
|
136
|
+
? {
|
|
137
|
+
overall: typeof score.overall === 'number' ? score.overall : 0,
|
|
138
|
+
gateStatus: String(audit.gateStatus ?? 'UNKNOWN'),
|
|
139
|
+
findings: Array.isArray(audit.findings) ? audit.findings : [],
|
|
140
|
+
viewpointBaselineStatus: baseline.status,
|
|
141
|
+
}
|
|
142
|
+
: undefined,
|
|
143
|
+
steps: [],
|
|
144
|
+
};
|
|
145
|
+
state.steps = deriveSteps(state);
|
|
146
|
+
return state;
|
|
147
|
+
}
|
|
148
|
+
/** The finding codes worth naming in a next step — each maps to a specific repair. */
|
|
149
|
+
const REPAIRABLE = [
|
|
150
|
+
'FLOW-CONTRACT-MISSING', 'FLOW-INVENTORY-MISSING', 'FLOW-UNCOVERED', 'FLOW-UNDECLARED',
|
|
151
|
+
'FLOW-PHASE-MISFILED', 'FLOW-GUARANTEE-MISSING', 'FLOW-OUTCOME-UNPROVEN', 'CONTINUITY-ONE-SIDED',
|
|
152
|
+
'SPEC-RESTATED-UNVERIFIED', 'VIEWPOINT-GESTURE-SUBSTITUTED', 'SPEC-UNCOVERED', 'TRIGGER-UNCOVERED',
|
|
153
|
+
'VIEWPOINT-ITEM-MISSING', 'MANUAL-CODE-MISSING', 'MANUAL-AUTOMATABLE', 'DEPTH-DEFERRED',
|
|
154
|
+
];
|
|
155
|
+
/**
|
|
156
|
+
* The ordered answer. Earliest unmet precondition first, so the list reads as a path rather than
|
|
157
|
+
* a menu — and a `blocked` step names what to resolve instead of pretending it can run.
|
|
158
|
+
*/
|
|
159
|
+
function deriveSteps(s) {
|
|
160
|
+
const out = [];
|
|
161
|
+
const design = s.kind === 'api' ? `/sungen:create-test ${s.unit}` : `/sungen:create-test ${s.unit}`;
|
|
162
|
+
if (!s.hasSpec && !s.hasViewpoint) {
|
|
163
|
+
out.push({
|
|
164
|
+
kind: 'blocked',
|
|
165
|
+
command: `write qa/${s.kind === 'screen' ? 'screens' : s.kind === 'flow' ? 'flows' : 'api'}/${s.unit}/requirements/spec.md`,
|
|
166
|
+
because: 'the unit has neither a spec nor a test-viewpoint, so there is nothing to generate FROM — generation without a source invents behaviour',
|
|
167
|
+
});
|
|
168
|
+
return out;
|
|
169
|
+
}
|
|
170
|
+
if (s.kind === 'flow' && !s.hasContract) {
|
|
171
|
+
out.push({
|
|
172
|
+
kind: 'blocked',
|
|
173
|
+
command: `author requirements/flow-contract.yaml, then ${design}`,
|
|
174
|
+
because: 'a flow with no contract is scored as a generic screen against page-type themes a journey cannot have (FLOW-CONTRACT-MISSING)',
|
|
175
|
+
});
|
|
176
|
+
return out;
|
|
177
|
+
}
|
|
178
|
+
if (s.scenarioCount === 0) {
|
|
179
|
+
out.push({ kind: 'do', command: design, because: 'no scenarios exist yet' });
|
|
180
|
+
return out;
|
|
181
|
+
}
|
|
182
|
+
if (s.kind === 'flow' && !s.hasFlowInventory) {
|
|
183
|
+
out.push({
|
|
184
|
+
kind: 'do',
|
|
185
|
+
command: `add \`flows:\` to requirements/flow-contract.yaml, then sungen audit --screen ${s.unit}`,
|
|
186
|
+
because: 'without the inventory, coverage is measured per PHASE — and a phase counts as covered as soon as one scenario carries it, so the number cannot tell you a flow is missing',
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
if (!s.audit) {
|
|
190
|
+
out.push({ kind: 'do', command: `sungen audit --screen ${s.unit}`, because: 'the suite has never been measured' });
|
|
191
|
+
return out;
|
|
192
|
+
}
|
|
193
|
+
if (s.audit.viewpointBaselineStatus === 'changed') {
|
|
194
|
+
out.push({
|
|
195
|
+
kind: 'do',
|
|
196
|
+
command: `sungen audit --screen ${s.unit} --accept-viewpoint`,
|
|
197
|
+
because: 'test-viewpoint.md changed since the accepted baseline, so the ledger and traceability axes are not evidence until you confirm the new declaration',
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
const repair = s.audit.findings
|
|
201
|
+
.map((f) => f.split(':')[0].trim())
|
|
202
|
+
.filter((code) => REPAIRABLE.includes(code));
|
|
203
|
+
if (repair.length > 0) {
|
|
204
|
+
out.push({
|
|
205
|
+
kind: 'do',
|
|
206
|
+
command: `repair, then sungen audit --screen ${s.unit}`,
|
|
207
|
+
because: `${repair.length} finding(s) name a specific repair: ${[...new Set(repair)].slice(0, 4).join(', ')}`,
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
if (s.audit.gateStatus === 'FAIL') {
|
|
211
|
+
out.push({
|
|
212
|
+
kind: 'blocked',
|
|
213
|
+
command: `repair the gate, then sungen audit --screen ${s.unit}`,
|
|
214
|
+
because: `the viewpoint gate is FAIL at ${s.audit.overall}/10 — running tests against a design that fails its own gate measures the wrong thing`,
|
|
215
|
+
});
|
|
216
|
+
return out;
|
|
217
|
+
}
|
|
218
|
+
if (s.kind !== 'api' && (!s.hasSelectors || s.selectorsArePlaceholder)) {
|
|
219
|
+
out.push({
|
|
220
|
+
kind: 'do',
|
|
221
|
+
command: `/sungen:run-test ${s.unit}`,
|
|
222
|
+
because: s.hasSelectors
|
|
223
|
+
? 'the selector file is still a placeholder, so nothing resolves against a live page'
|
|
224
|
+
: 'no selectors exist yet — run-test generates them from the live page, compiles and auto-fixes',
|
|
225
|
+
});
|
|
226
|
+
return out;
|
|
227
|
+
}
|
|
228
|
+
if (!s.compiled) {
|
|
229
|
+
out.push({ kind: 'do', command: `sungen generate --${s.kind === 'flow' ? 'flow' : 'screen'} ${s.unit}`, because: 'the suite has not been compiled to a spec yet' });
|
|
230
|
+
return out;
|
|
231
|
+
}
|
|
232
|
+
if (!s.hasResults) {
|
|
233
|
+
out.push({ kind: 'do', command: `/sungen:run-test ${s.unit}`, because: 'the compiled spec has never been run, so every case is Pending' });
|
|
234
|
+
return out;
|
|
235
|
+
}
|
|
236
|
+
if (!s.hasDeliverable) {
|
|
237
|
+
out.push({ kind: 'do', command: `/sungen:delivery ${s.unit}`, because: 'results exist but have not been exported to the Test Case & Coverage Matrix' });
|
|
238
|
+
}
|
|
239
|
+
out.push({ kind: 'optional', command: `/sungen:create-test ${s.unit}`, because: 'extend coverage — the next tier, or the flows the inventory still lists as pending' });
|
|
240
|
+
return out;
|
|
241
|
+
}
|
|
242
|
+
//# sourceMappingURL=next-step.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"next-step.js","sourceRoot":"","sources":["../../src/harness/next-step.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,12 +9,20 @@ codex-trigger: "Run when the user asks to CREATE, generate, write, or author tes
|
|
|
9
9
|
---
|
|
10
10
|
## ⛔ HARD RULE — the run's LAST action is the next-step hand-back
|
|
11
11
|
|
|
12
|
-
A
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
A run is NOT finished when its files are written or its output prints. The final action of EVERY
|
|
13
|
+
run — success, partial, or aborted — is the next-step hand-back.
|
|
14
|
+
|
|
15
|
+
**Ask `sungen next <unit>` rather than deciding from memory.** It derives the answer from what the
|
|
16
|
+
project actually holds (artifacts on disk, the audit report, the accepted viewpoint baseline, the
|
|
17
|
+
compiled spec, the run results), so the hand-back stays correct even when the run ended somewhere
|
|
18
|
+
unexpected — a failed install, a driver that turned out not to support this unit kind, an aborted
|
|
19
|
+
repair loop. Every `sungen` command also prints `Next: sungen next …` as its own last line.
|
|
20
|
+
|
|
21
|
+
This matters most exactly where it used to break. A run that ended on a command with no footer of
|
|
22
|
+
its own — `sungen capability add`, a dead-end install — left the session with nothing to follow and
|
|
23
|
+
it stopped mid-workflow. If a step turns out to be impossible, that is still a hand-back: say what
|
|
24
|
+
blocked it, run `sungen next <unit>`, and offer what remains. Ending with a prose summary and no
|
|
25
|
+
choices is a broken run.
|
|
18
26
|
|
|
19
27
|
---
|
|
20
28
|
{{#cap parallel-subagents}}
|
|
@@ -27,6 +27,12 @@ inside the run, not reasons to stop and hand the work back.
|
|
|
27
27
|
install command as the hand-back.
|
|
28
28
|
- Ending this run follows the same law as create-test: the LAST action is the next-step
|
|
29
29
|
hand-back (the AskUserQuestion in "After showing results"), no matter how the run went.
|
|
30
|
+
**Ask `sungen next <unit>` rather than deciding from memory** — it derives the answer from what
|
|
31
|
+
the project now holds, so the hand-back stays correct even when the run ended somewhere
|
|
32
|
+
unexpected (a failed install, a driver that does not support this unit kind, an aborted repair
|
|
33
|
+
loop). Every `sungen` command also prints `Next: sungen next …` as its own last line. A step
|
|
34
|
+
that turns out to be impossible is still a hand-back: say what blocked it, run
|
|
35
|
+
`sungen next <unit>`, and offer what remains.
|
|
30
36
|
|
|
31
37
|
---
|
|
32
38
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sun-asterisk/sungen",
|
|
3
|
-
"version": "3.2.24-beta.
|
|
3
|
+
"version": "3.2.24-beta.3",
|
|
4
4
|
"description": "Deterministic E2E Test Compiler - Gherkin + Selectors → Playwright tests",
|
|
5
5
|
"main": "src/index.ts",
|
|
6
6
|
"types": "src/index.ts",
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
"@babel/types": "^7.28.5",
|
|
40
40
|
"@cucumber/gherkin": "^37.0.0",
|
|
41
41
|
"@cucumber/messages": "^31.0.0",
|
|
42
|
-
"@sungen/driver-data-factory": "3.2.24-beta.
|
|
43
|
-
"@sungen/driver-ui": "3.2.24-beta.
|
|
42
|
+
"@sungen/driver-data-factory": "3.2.24-beta.3",
|
|
43
|
+
"@sungen/driver-ui": "3.2.24-beta.3",
|
|
44
44
|
"chalk": "^5.6.2",
|
|
45
45
|
"commander": "^14.0.2",
|
|
46
46
|
"dotenv": "^17.2.3",
|
|
@@ -4,17 +4,8 @@ import * as fs from 'fs';
|
|
|
4
4
|
import { runAudit, AuditReport, catalogIdFromScreenDir } from '../../harness/audit';
|
|
5
5
|
import { reportSlug } from '../../harness/unit-paths';
|
|
6
6
|
import { acceptViewpointBaseline } from '../../harness/viewpoint-baseline';
|
|
7
|
+
import { findUnitDir } from '../resolve-unit';
|
|
7
8
|
|
|
8
|
-
function findScreenDir(name: string): string | null {
|
|
9
|
-
// `name` may be a bare screen/flow/area, or an api unit id (`api/<area>`, `api/flows/<flow>`).
|
|
10
|
-
const candidates = [
|
|
11
|
-
path.join(process.cwd(), 'qa', 'screens', name),
|
|
12
|
-
path.join(process.cwd(), 'qa', 'flows', name),
|
|
13
|
-
path.join(process.cwd(), 'qa', 'api', name), // qa/api/<area> or qa/api/flows/<flow>
|
|
14
|
-
];
|
|
15
|
-
for (const c of candidates) if (fs.existsSync(c)) return c;
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
18
9
|
|
|
19
10
|
function bar(ratio: number, width = 20): string {
|
|
20
11
|
const n = Math.round(ratio * width);
|
|
@@ -143,7 +134,7 @@ export function registerAuditCommand(program: Command): void {
|
|
|
143
134
|
try {
|
|
144
135
|
const name = options.screen || options.api || options.area;
|
|
145
136
|
if (!name) throw new Error('Provide --screen <name> (or --api <area>)');
|
|
146
|
-
const dir =
|
|
137
|
+
const dir = findUnitDir(name);
|
|
147
138
|
if (!dir) throw new Error(`Not found: qa/screens/${name}, qa/flows/${name}, or qa/api/${name}`);
|
|
148
139
|
|
|
149
140
|
const report = runAudit(dir, name);
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
import { buildPlan, MANUAL_REASONS } from '../../harness/capability-plan';
|
|
10
10
|
import { adapterRegistry } from '../../generators/test-generator/adapters';
|
|
11
11
|
import { emitMobileRuntime, installMobileDriver } from '../../orchestrator/mobile-runtime-scaffolder';
|
|
12
|
+
import { findUnitDir, resolveUnit } from '../resolve-unit';
|
|
12
13
|
|
|
13
14
|
/** The running CLI's (core) version — opt-in drivers install in lockstep with it (not `@latest`). */
|
|
14
15
|
function coreVersion(): string {
|
|
@@ -97,13 +98,6 @@ function verifyCapabilityDriver(pkg: string, cwd: string): void {
|
|
|
97
98
|
}
|
|
98
99
|
}
|
|
99
100
|
|
|
100
|
-
function findScreenDir(name: string): string | null {
|
|
101
|
-
const s = path.join(process.cwd(), 'qa', 'screens', name);
|
|
102
|
-
if (fs.existsSync(s)) return s;
|
|
103
|
-
const f = path.join(process.cwd(), 'qa', 'flows', name);
|
|
104
|
-
if (fs.existsSync(f)) return f;
|
|
105
|
-
return null;
|
|
106
|
-
}
|
|
107
101
|
|
|
108
102
|
export function registerCapabilityCommand(program: Command): void {
|
|
109
103
|
const cap = program
|
|
@@ -143,9 +137,10 @@ export function registerCapabilityCommand(program: Command): void {
|
|
|
143
137
|
.option('--json', 'Output the raw plan JSON')
|
|
144
138
|
.action((o: { screen: string; json?: boolean }) => {
|
|
145
139
|
try {
|
|
146
|
-
const
|
|
147
|
-
if (!
|
|
148
|
-
|
|
140
|
+
const resolved = resolveUnit(o.screen);
|
|
141
|
+
if (!resolved) throw new Error(`Screen/flow not found: qa/screens/${o.screen} or qa/flows/${o.screen}`);
|
|
142
|
+
// The catalog unit id carries the unit KIND, which gates which drivers can serve it.
|
|
143
|
+
const plan = buildPlan(resolved.dir, o.screen, resolved.unitId);
|
|
149
144
|
|
|
150
145
|
const outDir = path.join(process.cwd(), '.sungen', 'reports');
|
|
151
146
|
fs.mkdirSync(outDir, { recursive: true });
|
|
@@ -170,6 +165,12 @@ export function registerCapabilityCommand(program: Command): void {
|
|
|
170
165
|
L(` • ${r.count} @manual:${r.reason} → enable \`${r.driver}\` (${r.pkg}) → would unblock ${r.count}`);
|
|
171
166
|
}
|
|
172
167
|
}
|
|
168
|
+
if (plan.unavailable.length) {
|
|
169
|
+
L(' Cannot help here (driver does not support this unit kind — do NOT install):');
|
|
170
|
+
for (const r of plan.unavailable) {
|
|
171
|
+
L(` • ${r.count} @manual:${r.reason} → \`${r.driver}\` has no ${r.unitKind} support; automate the behaviour on the owning SCREEN unit instead`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
173
174
|
if (plan.keep.length) {
|
|
174
175
|
L(` Keep manual (judgment floor — do NOT automate): ${plan.keep.map((k) => `${k.code}×${k.count} (${MANUAL_REASONS[k.code].label})`).join(', ')}`);
|
|
175
176
|
}
|
|
@@ -2,14 +2,8 @@ import { Command } from 'commander';
|
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
import * as fs from 'fs';
|
|
4
4
|
import { buildChallenge, renderChallengeMarkdown } from '../../harness/challenge';
|
|
5
|
+
import { findUnitDir } from '../resolve-unit';
|
|
5
6
|
|
|
6
|
-
function findScreenDir(name: string): string | null {
|
|
7
|
-
const screen = path.join(process.cwd(), 'qa', 'screens', name);
|
|
8
|
-
if (fs.existsSync(screen)) return screen;
|
|
9
|
-
const flow = path.join(process.cwd(), 'qa', 'flows', name);
|
|
10
|
-
if (fs.existsSync(flow)) return flow;
|
|
11
|
-
return null;
|
|
12
|
-
}
|
|
13
7
|
|
|
14
8
|
export function registerChallengeCommand(program: Command): void {
|
|
15
9
|
program
|
|
@@ -19,7 +13,7 @@ export function registerChallengeCommand(program: Command): void {
|
|
|
19
13
|
.option('--json', 'Output the raw JSON report')
|
|
20
14
|
.action((o) => {
|
|
21
15
|
try {
|
|
22
|
-
const dir =
|
|
16
|
+
const dir = findUnitDir(o.screen);
|
|
23
17
|
if (!dir) throw new Error(`Screen/flow not found: qa/screens/${o.screen} or qa/flows/${o.screen}`);
|
|
24
18
|
const report = buildChallenge(dir, o.screen);
|
|
25
19
|
|