@tayo-dev/rtl 1.3.1 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +41 -41
- package/assets/claude/commands/@tayo-dev/rtl/generate.md +2 -2
- package/assets/claude/commands/@tayo-dev/rtl/help.md +1 -1
- package/assets/codex/@tayo-dev/rtl-conventions/SKILL.md +2 -2
- package/assets/codex/@tayo-dev/rtl-generate/SKILL.md +1 -1
- package/assets/codex/@tayo-dev/rtl-help/SKILL.md +1 -1
- package/assets/gemini/commands/@tayo-dev/rtl/generate.toml +2 -2
- package/assets/gemini/commands/@tayo-dev/rtl/help.toml +1 -1
- package/assets/opencode/commands/@tayo-dev/rtl-generate.md +2 -2
- package/assets/opencode/commands/@tayo-dev/rtl-help.md +1 -1
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +244 -35
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/commands/install.js +6 -6
- package/dist/core/baseline-normalizer.d.ts.map +1 -1
- package/dist/core/baseline-normalizer.js +42 -0
- package/dist/core/baseline-normalizer.js.map +1 -1
- package/dist/core/generator.d.ts.map +1 -1
- package/dist/core/generator.js +80 -7
- package/dist/core/generator.js.map +1 -1
- package/dist/core/input-loader.d.ts.map +1 -1
- package/dist/core/input-loader.js +1 -0
- package/dist/core/input-loader.js.map +1 -1
- package/dist/core/js-parser.d.ts +2 -1
- package/dist/core/js-parser.d.ts.map +1 -1
- package/dist/core/js-parser.js +69 -0
- package/dist/core/js-parser.js.map +1 -1
- package/dist/core/orchestrator.d.ts +1 -1
- package/dist/core/orchestrator.js +4 -4
- package/dist/core/parser.js +2 -2
- package/dist/core/recording-intelligence.d.ts +1 -1
- package/dist/core/recording-intelligence.d.ts.map +1 -1
- package/dist/core/recording-intelligence.js +298 -4
- package/dist/core/recording-intelligence.js.map +1 -1
- package/dist/core/resolver.d.ts +2 -1
- package/dist/core/resolver.d.ts.map +1 -1
- package/dist/core/resolver.js +334 -4
- package/dist/core/resolver.js.map +1 -1
- package/dist/core/scanner.d.ts +3 -3
- package/dist/core/scanner.js +9 -9
- package/dist/core/scorer.d.ts +6 -2
- package/dist/core/scorer.d.ts.map +1 -1
- package/dist/core/scorer.js +75 -7
- package/dist/core/scorer.js.map +1 -1
- package/dist/core/suite-planner.d.ts.map +1 -1
- package/dist/core/suite-planner.js +186 -17
- package/dist/core/suite-planner.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +4 -4
- package/dist/install/planner.js +1 -1
- package/dist/install/types.d.ts +1 -1
- package/dist/learner/index.d.ts +2 -2
- package/dist/learner/index.js +3 -3
- package/dist/learner/storage.d.ts +1 -1
- package/dist/learner/storage.js +2 -2
- package/dist/templates/test-template.d.ts +4 -0
- package/dist/templates/test-template.d.ts.map +1 -1
- package/dist/templates/test-template.js +10 -1
- package/dist/templates/test-template.js.map +1 -1
- package/dist/types/recording.d.ts +118 -0
- package/dist/types/recording.d.ts.map +1 -1
- package/dist/types/recording.js.map +1 -1
- package/dist/types/score.d.ts +15 -0
- package/dist/types/score.d.ts.map +1 -1
- package/package.json +5 -5
package/dist/core/scorer.js
CHANGED
|
@@ -8,10 +8,10 @@ const QUERY_WEIGHTS = {
|
|
|
8
8
|
};
|
|
9
9
|
const STRONG_ASSERTION_REGEX = /\.toHaveValue\(|\.toBeChecked\(|\.toHaveTextContent\(|\.toBeVisible\(/g;
|
|
10
10
|
const WEAK_ASSERTION_REGEX = /\.toBeInTheDocument\(/g;
|
|
11
|
-
const QUERY_CHECKPOINT_REGEX = /
|
|
11
|
+
const QUERY_CHECKPOINT_REGEX = /tayo-query-checkpoint:/g;
|
|
12
12
|
const ROLE_QUERY_REGEX = /\b(?:getByRole|findByRole)\s*\(/g;
|
|
13
13
|
const TEST_ID_QUERY_REGEX = /\b(?:getByTestId|findByTestId)\s*\(/g;
|
|
14
|
-
const BOUNDARY_WARNING_REGEX = /
|
|
14
|
+
const BOUNDARY_WARNING_REGEX = /tayo-boundary-warning:/g;
|
|
15
15
|
const TEST_BLOCK_REGEX = /\b(?:it|test)\s*\(/g;
|
|
16
16
|
function clampScore(score) {
|
|
17
17
|
return Math.min(100, Math.max(0, Math.round(score)));
|
|
@@ -19,6 +19,12 @@ function clampScore(score) {
|
|
|
19
19
|
function countMatches(input, pattern) {
|
|
20
20
|
return input.match(pattern)?.length ?? 0;
|
|
21
21
|
}
|
|
22
|
+
function normalizeCount(value) {
|
|
23
|
+
if (typeof value !== 'number' || !Number.isFinite(value)) {
|
|
24
|
+
return 0;
|
|
25
|
+
}
|
|
26
|
+
return Math.max(0, Math.round(value));
|
|
27
|
+
}
|
|
22
28
|
export function calculateQueryScore(queryResults) {
|
|
23
29
|
if (queryResults.length === 0) {
|
|
24
30
|
return 100;
|
|
@@ -54,7 +60,7 @@ export function calculateStructureScore(code) {
|
|
|
54
60
|
if (code.includes('render(<App />)')) {
|
|
55
61
|
score -= 25;
|
|
56
62
|
}
|
|
57
|
-
if (code.includes('
|
|
63
|
+
if (code.includes('tayo-boundary-warning:')) {
|
|
58
64
|
score -= 20;
|
|
59
65
|
}
|
|
60
66
|
return clampScore(score);
|
|
@@ -83,7 +89,7 @@ function compareReasons(left, right) {
|
|
|
83
89
|
}
|
|
84
90
|
return left.code.localeCompare(right.code);
|
|
85
91
|
}
|
|
86
|
-
function collectReasons(dimensions, signals, boundaryMessages) {
|
|
92
|
+
function collectReasons(dimensions, signals, boundaryMessages, markerQualityGate) {
|
|
87
93
|
const reasons = [];
|
|
88
94
|
if (signals.queryCheckpointCount > 0) {
|
|
89
95
|
reasons.push(createReason('query-checkpoints', 'queryQuality', 'negative', Math.min(40, signals.queryCheckpointCount * 3), `${signals.queryCheckpointCount} unresolved query checkpoint(s) remain, so query quality is still draft-grade.`));
|
|
@@ -117,6 +123,15 @@ function collectReasons(dimensions, signals, boundaryMessages) {
|
|
|
117
123
|
reasons.push(createReason(`boundary-issue-${index + 1}`, 'boundaryIsolation', 'negative', 10 - index, message));
|
|
118
124
|
}
|
|
119
125
|
}
|
|
126
|
+
if (markerQualityGate.failing) {
|
|
127
|
+
reasons.push(createReason('marker-quality-gate-fail', 'assertionSpecificity', 'negative', 45, `QUAL-02 failed: ${markerQualityGate.message}`));
|
|
128
|
+
}
|
|
129
|
+
else if (markerQualityGate.reason === 'markers-converted') {
|
|
130
|
+
reasons.push(createReason('marker-quality-gate-pass', 'assertionSpecificity', 'positive', 8, `QUAL-02 passed: ${markerQualityGate.message}`));
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
reasons.push(createReason('marker-quality-gate-pass-no-markers', 'assertionSpecificity', 'positive', 4, `QUAL-02 passed: ${markerQualityGate.message}`));
|
|
134
|
+
}
|
|
120
135
|
return reasons.sort(compareReasons);
|
|
121
136
|
}
|
|
122
137
|
function deriveBlockers(reasons, limit = 2) {
|
|
@@ -145,7 +160,58 @@ export function calculateAggregateScore(dimensions) {
|
|
|
145
160
|
}
|
|
146
161
|
return { total, grade: 'F' };
|
|
147
162
|
}
|
|
148
|
-
|
|
163
|
+
function resolveMarkerCoverage(markerCoverage) {
|
|
164
|
+
return {
|
|
165
|
+
detected: normalizeCount(markerCoverage?.detected),
|
|
166
|
+
emitted: normalizeCount(markerCoverage?.emitted),
|
|
167
|
+
unresolved: normalizeCount(markerCoverage?.unresolved),
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
function deriveMarkerQualityGate(markerCoverage) {
|
|
171
|
+
if (markerCoverage.detected === 0) {
|
|
172
|
+
return {
|
|
173
|
+
status: 'pass',
|
|
174
|
+
reason: 'no-markers-detected',
|
|
175
|
+
failing: false,
|
|
176
|
+
message: 'No semantic markers were detected in this run.',
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
if (markerCoverage.emitted === 0) {
|
|
180
|
+
return {
|
|
181
|
+
status: 'fail',
|
|
182
|
+
reason: 'zero-marker-conversion',
|
|
183
|
+
failing: true,
|
|
184
|
+
message: 'Semantic markers were detected, but no marker-derived assertions were emitted.',
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
return {
|
|
188
|
+
status: 'pass',
|
|
189
|
+
reason: 'markers-converted',
|
|
190
|
+
failing: false,
|
|
191
|
+
message: 'Marker-derived assertions were emitted for this run.',
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
function resolveScoreGeneratedTestOptions(input) {
|
|
195
|
+
if (Array.isArray(input)) {
|
|
196
|
+
return {
|
|
197
|
+
queryResults: input,
|
|
198
|
+
markerCoverage: resolveMarkerCoverage(),
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
if (input && typeof input === 'object') {
|
|
202
|
+
return {
|
|
203
|
+
queryResults: input.queryResults ?? [],
|
|
204
|
+
markerCoverage: resolveMarkerCoverage(input.markerCoverage),
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
return {
|
|
208
|
+
queryResults: [],
|
|
209
|
+
markerCoverage: resolveMarkerCoverage(),
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
export function scoreGeneratedTest(code, input = []) {
|
|
213
|
+
const { queryResults, markerCoverage } = resolveScoreGeneratedTestOptions(input);
|
|
214
|
+
const markerQualityGate = deriveMarkerQualityGate(markerCoverage);
|
|
149
215
|
const boundaryIssues = analyzeBoundaryIsolation(code);
|
|
150
216
|
const boundaryIsolation = calculateBoundaryIsolationScore(code);
|
|
151
217
|
const signals = collectSignals(code, queryResults, boundaryIssues.length);
|
|
@@ -156,7 +222,7 @@ export function scoreGeneratedTest(code, queryResults = []) {
|
|
|
156
222
|
testStructure: calculateStructureScore(code),
|
|
157
223
|
boundaryIsolation,
|
|
158
224
|
};
|
|
159
|
-
const reasons = collectReasons(dimensions, signals, boundaryIssues.map((issue) => issue.message));
|
|
225
|
+
const reasons = collectReasons(dimensions, signals, boundaryIssues.map((issue) => issue.message), markerQualityGate);
|
|
160
226
|
const blockers = deriveBlockers(reasons);
|
|
161
227
|
const aggregate = calculateAggregateScore(dimensions);
|
|
162
228
|
return {
|
|
@@ -165,7 +231,9 @@ export function scoreGeneratedTest(code, queryResults = []) {
|
|
|
165
231
|
signals,
|
|
166
232
|
reasons,
|
|
167
233
|
blockers,
|
|
168
|
-
requiresReview: aggregate.total < 80,
|
|
234
|
+
requiresReview: aggregate.total < 80 || markerQualityGate.failing,
|
|
235
|
+
markerCoverage,
|
|
236
|
+
markerQualityGate,
|
|
169
237
|
};
|
|
170
238
|
}
|
|
171
239
|
//# sourceMappingURL=scorer.js.map
|
package/dist/core/scorer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scorer.js","sourceRoot":"","sources":["../../src/core/scorer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,+BAA+B,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"scorer.js","sourceRoot":"","sources":["../../src/core/scorer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,+BAA+B,EAAE,MAAM,4BAA4B,CAAA;AAWtG,MAAM,aAAa,GAA2B;IAC5C,SAAS,EAAE,GAAG;IACd,cAAc,EAAE,GAAG;IACnB,SAAS,EAAE,GAAG;IACd,oBAAoB,EAAE,GAAG;IACzB,WAAW,EAAE,GAAG;CACjB,CAAA;AAED,MAAM,sBAAsB,GAAG,wEAAwE,CAAA;AACvG,MAAM,oBAAoB,GAAG,wBAAwB,CAAA;AACrD,MAAM,sBAAsB,GAAG,yBAAyB,CAAA;AACxD,MAAM,gBAAgB,GAAG,kCAAkC,CAAA;AAC3D,MAAM,mBAAmB,GAAG,sCAAsC,CAAA;AAClE,MAAM,sBAAsB,GAAG,yBAAyB,CAAA;AACxD,MAAM,gBAAgB,GAAG,qBAAqB,CAAA;AAE9C,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACtD,CAAC;AAED,SAAS,YAAY,CAAC,KAAa,EAAE,OAAe;IAClD,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC,CAAA;AAC1C,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,OAAO,CAAC,CAAA;IACV,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;AACvC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,YAA2B;IAC7D,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE;QAC3D,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAA;IACzD,CAAC,EAAE,CAAC,CAAC,CAAA;IAEL,OAAO,UAAU,CAAC,CAAC,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAA;AAC9D,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,MAAM,gBAAgB,GAAG,YAAY,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAA;IACnE,MAAM,cAAc,GAAG,YAAY,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAA;IAC/D,MAAM,eAAe,GAAG,gBAAgB,GAAG,cAAc,CAAA;IAEzD,IAAI,eAAe,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,aAAa,GAAG,gBAAgB,GAAG,cAAc,GAAG,GAAG,CAAA;IAC7D,OAAO,UAAU,CAAC,CAAC,aAAa,GAAG,eAAe,CAAC,GAAG,GAAG,CAAC,CAAA;AAC5D,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC,CAAA;IACjE,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;IAEpD,IAAI,KAAK,GAAG,EAAE,CAAA;IAEd,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtB,KAAK,IAAI,EAAE,CAAA;IACb,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAA;IAC3C,CAAC;IAED,IAAI,OAAO,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;QACxC,KAAK,IAAI,EAAE,CAAA;IACb,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACrC,KAAK,IAAI,EAAE,CAAA;IACb,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;QAC5C,KAAK,IAAI,EAAE,CAAA;IACb,CAAC;IAED,OAAO,UAAU,CAAC,KAAK,CAAC,CAAA;AAC1B,CAAC;AAED,SAAS,cAAc,CACrB,IAAY,EACZ,YAA2B,EAC3B,kBAA0B;IAE1B,OAAO;QACL,oBAAoB,EAAE,YAAY,CAAC,IAAI,EAAE,sBAAsB,CAAC;QAChE,cAAc,EACZ,YAAY,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,MAAM;YAC/E,YAAY,CAAC,IAAI,EAAE,gBAAgB,CAAC;QACtC,gBAAgB,EACd,YAAY,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,MAAM;YACjF,YAAY,CAAC,IAAI,EAAE,mBAAmB,CAAC;QACzC,oBAAoB,EAAE,YAAY,CAAC,IAAI,EAAE,sBAAsB,CAAC;QAChE,kBAAkB,EAAE,YAAY,CAAC,IAAI,EAAE,oBAAoB,CAAC;QAC5D,oBAAoB,EAAE,YAAY,CAAC,IAAI,EAAE,sBAAsB,CAAC;QAChE,kBAAkB;QAClB,uBAAuB,EAAE,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QACzD,kBAAkB,EAAE,YAAY,CAAC,IAAI,EAAE,gBAAgB,CAAC,GAAG,CAAC;KAC7D,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CACnB,IAAY,EACZ,SAAgC,EAChC,MAA+B,EAC/B,MAAc,EACd,OAAe;IAEf,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;AACrD,CAAC;AAED,SAAS,cAAc,CAAC,IAAiB,EAAE,KAAkB;IAC3D,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IACnC,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAC5C,CAAC;AAED,SAAS,cAAc,CACrB,UAA2B,EAC3B,OAAqB,EACrB,gBAA0B,EAC1B,iBAAyC;IAEzC,MAAM,OAAO,GAAkB,EAAE,CAAA;IAEjC,IAAI,OAAO,CAAC,oBAAoB,GAAG,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,IAAI,CACV,YAAY,CACV,mBAAmB,EACnB,cAAc,EACd,UAAU,EACV,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,oBAAoB,GAAG,CAAC,CAAC,EAC9C,GAAG,OAAO,CAAC,oBAAoB,gFAAgF,CAChH,CACF,CAAA;IACH,CAAC;IAED,IAAI,OAAO,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,IAAI,CACV,YAAY,CACV,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,gBAAgB,GAAG,CAAC,CAAC,EAC1C,GAAG,OAAO,CAAC,gBAAgB,qDAAqD,CACjF,CACF,CAAA;IACH,CAAC;IAED,IAAI,OAAO,CAAC,cAAc,GAAG,CAAC,IAAI,UAAU,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;QAChE,OAAO,CAAC,IAAI,CACV,YAAY,CACV,cAAc,EACd,cAAc,EACd,UAAU,EACV,CAAC,EACD,sCAAsC,OAAO,CAAC,cAAc,kBAAkB,CAC/E,CACF,CAAA;IACH,CAAC;IAED,IAAI,OAAO,CAAC,oBAAoB,KAAK,CAAC,IAAI,OAAO,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC;QACzE,OAAO,CAAC,IAAI,CACV,YAAY,CACV,sBAAsB,EACtB,sBAAsB,EACtB,UAAU,EACV,EAAE,EACF,2FAA2F,CAC5F,CACF,CAAA;IACH,CAAC;IAED,IAAI,OAAO,CAAC,oBAAoB,KAAK,CAAC,IAAI,OAAO,CAAC,kBAAkB,KAAK,CAAC,EAAE,CAAC;QAC3E,OAAO,CAAC,IAAI,CACV,YAAY,CACV,eAAe,EACf,sBAAsB,EACtB,UAAU,EACV,EAAE,EACF,wDAAwD,CACzD,CACF,CAAA;IACH,CAAC;IAED,IAAI,OAAO,CAAC,oBAAoB,GAAG,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,IAAI,CACV,YAAY,CACV,mBAAmB,EACnB,sBAAsB,EACtB,UAAU,EACV,CAAC,EACD,+BAA+B,OAAO,CAAC,oBAAoB,gBAAgB,CAC5E,CACF,CAAA;IACH,CAAC;IAED,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CACV,YAAY,CACV,2BAA2B,EAC3B,eAAe,EACf,UAAU,EACV,EAAE,EACF,6EAA6E,CAC9E,CACF,CAAA;IACH,CAAC;IAED,IAAI,OAAO,CAAC,oBAAoB,GAAG,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,IAAI,CACV,YAAY,CACV,mBAAmB,EACnB,eAAe,EACf,UAAU,EACV,EAAE,EACF,kGAAkG,CACnG,CACF,CAAA;IACH,CAAC;IAED,IAAI,OAAO,CAAC,kBAAkB,IAAI,UAAU,CAAC,aAAa,IAAI,EAAE,EAAE,CAAC;QACjE,OAAO,CAAC,IAAI,CACV,YAAY,CACV,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,CAAC,EACD,4EAA4E,CAC7E,CACF,CAAA;IACH,CAAC;IAED,IAAI,OAAO,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC;QACnC,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YACtE,OAAO,CAAC,IAAI,CACV,YAAY,CACV,kBAAkB,KAAK,GAAG,CAAC,EAAE,EAC7B,mBAAmB,EACnB,UAAU,EACV,EAAE,GAAG,KAAK,EACV,OAAO,CACR,CACF,CAAA;QACH,CAAC;IACH,CAAC;IAED,IAAI,iBAAiB,CAAC,OAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,CACV,YAAY,CACV,0BAA0B,EAC1B,sBAAsB,EACtB,UAAU,EACV,EAAE,EACF,mBAAmB,iBAAiB,CAAC,OAAO,EAAE,CAC/C,CACF,CAAA;IACH,CAAC;SAAM,IAAI,iBAAiB,CAAC,MAAM,KAAK,mBAAmB,EAAE,CAAC;QAC5D,OAAO,CAAC,IAAI,CACV,YAAY,CACV,0BAA0B,EAC1B,sBAAsB,EACtB,UAAU,EACV,CAAC,EACD,mBAAmB,iBAAiB,CAAC,OAAO,EAAE,CAC/C,CACF,CAAA;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CACV,YAAY,CACV,qCAAqC,EACrC,sBAAsB,EACtB,UAAU,EACV,CAAC,EACD,mBAAmB,iBAAiB,CAAC,OAAO,EAAE,CAC/C,CACF,CAAA;IACH,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;AACrC,CAAC;AAED,SAAS,cAAc,CAAC,OAAsB,EAAE,KAAK,GAAG,CAAC;IACvD,OAAO,OAAO;SACX,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC;SAChD,IAAI,CAAC,cAAc,CAAC;SACpB,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;SACf,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;AACpC,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,UAA2B;IAE3B,MAAM,KAAK,GAAG,UAAU,CACtB,UAAU,CAAC,YAAY,GAAG,GAAG;QAC3B,UAAU,CAAC,oBAAoB,GAAG,IAAI;QACtC,UAAU,CAAC,aAAa,GAAG,GAAG;QAC9B,UAAU,CAAC,iBAAiB,GAAG,IAAI,CACtC,CAAA;IAED,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QAChB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;IAC9B,CAAC;IAED,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QAChB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;IAC9B,CAAC;IAED,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QAChB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;IAC9B,CAAC;IAED,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QAChB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;IAC9B,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;AAC9B,CAAC;AAOD,SAAS,qBAAqB,CAC5B,cAA8C;IAE9C,OAAO;QACL,QAAQ,EAAE,cAAc,CAAC,cAAc,EAAE,QAAQ,CAAC;QAClD,OAAO,EAAE,cAAc,CAAC,cAAc,EAAE,OAAO,CAAC;QAChD,UAAU,EAAE,cAAc,CAAC,cAAc,EAAE,UAAU,CAAC;KACvD,CAAA;AACH,CAAC;AAED,SAAS,uBAAuB,CAC9B,cAAoC;IAEpC,IAAI,cAAc,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO;YACL,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,qBAAqB;YAC7B,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,gDAAgD;SAC1D,CAAA;IACH,CAAC;IAED,IAAI,cAAc,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO;YACL,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,wBAAwB;YAChC,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,gFAAgF;SAC1F,CAAA;IACH,CAAC;IAED,OAAO;QACL,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,mBAAmB;QAC3B,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,sDAAsD;KAChE,CAAA;AACH,CAAC;AAED,SAAS,gCAAgC,CACvC,KAA4D;IAK5D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO;YACL,YAAY,EAAE,KAAK;YACnB,cAAc,EAAE,qBAAqB,EAAE;SACxC,CAAA;IACH,CAAC;IAED,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,OAAO;YACL,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,EAAE;YACtC,cAAc,EAAE,qBAAqB,CAAC,KAAK,CAAC,cAAc,CAAC;SAC5D,CAAA;IACH,CAAC;IAED,OAAO;QACL,YAAY,EAAE,EAAE;QAChB,cAAc,EAAE,qBAAqB,EAAE;KACxC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,QAAmD,EAAE;IAErD,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,gCAAgC,CAAC,KAAK,CAAC,CAAA;IAChF,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,cAAc,CAAC,CAAA;IACjE,MAAM,cAAc,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAA;IACrD,MAAM,iBAAiB,GAAG,+BAA+B,CAAC,IAAI,CAAC,CAAA;IAC/D,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;IACzE,MAAM,sBAAsB,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAA;IAE7E,MAAM,UAAU,GAAoB;QAClC,YAAY,EAAE,UAAU,CAAC,mBAAmB,CAAC,YAAY,CAAC,GAAG,sBAAsB,CAAC;QACpF,oBAAoB,EAAE,uBAAuB,CAAC,IAAI,CAAC;QACnD,aAAa,EAAE,uBAAuB,CAAC,IAAI,CAAC;QAC5C,iBAAiB;KAClB,CAAA;IACD,MAAM,OAAO,GAAG,cAAc,CAC5B,UAAU,EACV,OAAO,EACP,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAC5C,iBAAiB,CAClB,CAAA;IACD,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IACxC,MAAM,SAAS,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAA;IAErD,OAAO;QACL,GAAG,SAAS;QACZ,UAAU;QACV,OAAO;QACP,OAAO;QACP,QAAQ;QACR,cAAc,EAAE,SAAS,CAAC,KAAK,GAAG,EAAE,IAAI,iBAAiB,CAAC,OAAO;QACjE,cAAc;QACd,iBAAiB;KAClB,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suite-planner.d.ts","sourceRoot":"","sources":["../../src/core/suite-planner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"suite-planner.d.ts","sourceRoot":"","sources":["../../src/core/suite-planner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAE1D,OAAO,KAAK,EACV,iBAAiB,EACjB,OAAO,EACP,YAAY,EAEZ,cAAc,EACd,uBAAuB,EACvB,mBAAmB,EAMpB,MAAM,uBAAuB,CAAA;AAE9B,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAA;AACnE,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAA;AAE1D,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,kBAAkB,CAAA;IACxB,UAAU,EAAE,kBAAkB,CAAA;IAC9B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,SAAS,EAAE,cAAc,EAAE,CAAA;IAC3B,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,WAAW,EAAE,uBAAuB,CAAA;IACpC,cAAc,EAAE,wBAAwB,CAAA;IACxC,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AA6UD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,SAAS,EAAE,mBAAmB,CAAA;IAC9B,YAAY,EAAE,YAAY,GAAG,IAAI,CAAA;CAClC,GAAG,wBAAwB,CAgD3B;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE;IAClC,SAAS,EAAE,mBAAmB,CAAA;IAC9B,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,YAAY,EAAE,YAAY,GAAG,IAAI,CAAA;IACjC,aAAa,EAAE,MAAM,CAAA;CACtB,GAAG,WAAW,CAmGd"}
|
|
@@ -1,3 +1,42 @@
|
|
|
1
|
+
import { resolveSemanticMarkerAssertion } from './resolver.js';
|
|
2
|
+
function getStepKey(step, index) {
|
|
3
|
+
return step.id ?? `${index}:${step.action}:${step.target ?? ''}:${step.originalType}`;
|
|
4
|
+
}
|
|
5
|
+
function sharesAnyStep(left, right) {
|
|
6
|
+
const leftKeys = new Set(left.map((step, index) => getStepKey(step, index)));
|
|
7
|
+
return right.some((step, index) => leftKeys.has(getStepKey(step, index)));
|
|
8
|
+
}
|
|
9
|
+
function enrichSemanticMarkerContext(step, stepsById) {
|
|
10
|
+
const anchorStepId = step.semanticMarkerLink?.anchorStepId ??
|
|
11
|
+
step.unresolvedSemanticMarker?.anchor?.anchorStepId ??
|
|
12
|
+
step.semanticMarkerCandidate?.anchor?.anchorStepId;
|
|
13
|
+
if (!anchorStepId) {
|
|
14
|
+
return step;
|
|
15
|
+
}
|
|
16
|
+
const anchorStep = stepsById.get(anchorStepId);
|
|
17
|
+
if (!anchorStep) {
|
|
18
|
+
return step;
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
...step,
|
|
22
|
+
metadata: {
|
|
23
|
+
...step.metadata,
|
|
24
|
+
semanticMarkerAnchorStep: {
|
|
25
|
+
id: anchorStep.id,
|
|
26
|
+
action: anchorStep.action,
|
|
27
|
+
target: anchorStep.target,
|
|
28
|
+
originalType: anchorStep.originalType,
|
|
29
|
+
source: anchorStep.source,
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function enrichGroupSteps(groups, stepsById) {
|
|
35
|
+
return groups.map((group) => ({
|
|
36
|
+
...group,
|
|
37
|
+
steps: group.steps.map((step) => enrichSemanticMarkerContext(step, stepsById)),
|
|
38
|
+
}));
|
|
39
|
+
}
|
|
1
40
|
function buildFallbackGroups(analyzedRecording, fallbackTitle) {
|
|
2
41
|
if (analyzedRecording.intentGroups.length > 0) {
|
|
3
42
|
return analyzedRecording.intentGroups;
|
|
@@ -9,6 +48,116 @@ function buildFallbackGroups(analyzedRecording, fallbackTitle) {
|
|
|
9
48
|
},
|
|
10
49
|
];
|
|
11
50
|
}
|
|
51
|
+
function getSemanticMarkerCandidate(step) {
|
|
52
|
+
const metadataCandidate = step.metadata?.semanticMarkerCandidate;
|
|
53
|
+
if (metadataCandidate &&
|
|
54
|
+
typeof metadataCandidate === 'object' &&
|
|
55
|
+
'stepId' in metadataCandidate &&
|
|
56
|
+
typeof metadataCandidate.stepId === 'string') {
|
|
57
|
+
return metadataCandidate;
|
|
58
|
+
}
|
|
59
|
+
return step.semanticMarkerCandidate;
|
|
60
|
+
}
|
|
61
|
+
function getSemanticMarkerLink(step) {
|
|
62
|
+
const metadataLink = step.metadata?.semanticMarkerLink;
|
|
63
|
+
if (metadataLink &&
|
|
64
|
+
typeof metadataLink === 'object' &&
|
|
65
|
+
'markerStepId' in metadataLink &&
|
|
66
|
+
typeof metadataLink.markerStepId === 'string') {
|
|
67
|
+
return metadataLink;
|
|
68
|
+
}
|
|
69
|
+
return step.semanticMarkerLink;
|
|
70
|
+
}
|
|
71
|
+
function getUnresolvedSemanticMarker(step) {
|
|
72
|
+
const metadataMarker = step.metadata?.unresolvedSemanticMarker;
|
|
73
|
+
if (metadataMarker &&
|
|
74
|
+
typeof metadataMarker === 'object' &&
|
|
75
|
+
'stepId' in metadataMarker &&
|
|
76
|
+
typeof metadataMarker.stepId === 'string') {
|
|
77
|
+
return metadataMarker;
|
|
78
|
+
}
|
|
79
|
+
return step.unresolvedSemanticMarker;
|
|
80
|
+
}
|
|
81
|
+
function isManagedSemanticMarkerStep(step) {
|
|
82
|
+
return Boolean(getSemanticMarkerCandidate(step) ||
|
|
83
|
+
getSemanticMarkerLink(step) ||
|
|
84
|
+
getUnresolvedSemanticMarker(step));
|
|
85
|
+
}
|
|
86
|
+
function filterManagedSemanticMarkerSteps(steps) {
|
|
87
|
+
return steps.filter((step) => !isManagedSemanticMarkerStep(step));
|
|
88
|
+
}
|
|
89
|
+
function getHelperPlacement(params) {
|
|
90
|
+
const { anchorStepId, helperRefs, helperStepsByName } = params;
|
|
91
|
+
for (const helperRef of helperRefs) {
|
|
92
|
+
if (helperStepsByName.get(helperRef)?.has(anchorStepId)) {
|
|
93
|
+
return {
|
|
94
|
+
kind: 'after-helper',
|
|
95
|
+
helperName: helperRef,
|
|
96
|
+
stepId: anchorStepId,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
function collectScenarioMarkerState(params) {
|
|
103
|
+
const { group, helperRefs, helperStepsByName } = params;
|
|
104
|
+
const strongestMarkerAssertionsByAnchor = new Map();
|
|
105
|
+
const unresolvedMarkerAssertions = [];
|
|
106
|
+
for (const [sourceOrder, step] of group.steps.entries()) {
|
|
107
|
+
if (!isManagedSemanticMarkerStep(step)) {
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
const resolution = resolveSemanticMarkerAssertion(step);
|
|
111
|
+
if (resolution.status === 'unresolved') {
|
|
112
|
+
unresolvedMarkerAssertions.push(resolution);
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
const placement = getHelperPlacement({
|
|
116
|
+
anchorStepId: resolution.anchorStepId,
|
|
117
|
+
helperRefs,
|
|
118
|
+
helperStepsByName,
|
|
119
|
+
}) ?? {
|
|
120
|
+
kind: 'after-step',
|
|
121
|
+
stepId: resolution.anchorStepId,
|
|
122
|
+
};
|
|
123
|
+
const markerAssertion = {
|
|
124
|
+
markerStepId: resolution.markerStepId,
|
|
125
|
+
anchorStepId: resolution.anchorStepId,
|
|
126
|
+
placement,
|
|
127
|
+
assertion: resolution.assertion,
|
|
128
|
+
};
|
|
129
|
+
const proofRank = getSemanticMarkerProofRank(resolution.assertion.proofKind);
|
|
130
|
+
const existing = strongestMarkerAssertionsByAnchor.get(resolution.anchorStepId);
|
|
131
|
+
if (!existing ||
|
|
132
|
+
proofRank < existing.proofRank ||
|
|
133
|
+
(proofRank === existing.proofRank && sourceOrder < existing.sourceOrder)) {
|
|
134
|
+
strongestMarkerAssertionsByAnchor.set(resolution.anchorStepId, {
|
|
135
|
+
markerAssertion,
|
|
136
|
+
proofRank,
|
|
137
|
+
sourceOrder,
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return {
|
|
142
|
+
markerAssertions: [...strongestMarkerAssertionsByAnchor.values()]
|
|
143
|
+
.sort((left, right) => left.sourceOrder - right.sourceOrder)
|
|
144
|
+
.map((entry) => entry.markerAssertion),
|
|
145
|
+
unresolvedMarkerAssertions,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
function getSemanticMarkerProofRank(proofKind) {
|
|
149
|
+
switch (proofKind) {
|
|
150
|
+
case 'role-name':
|
|
151
|
+
return 0;
|
|
152
|
+
case 'visible-text':
|
|
153
|
+
case 'visible-value':
|
|
154
|
+
return 1;
|
|
155
|
+
case 'label-text':
|
|
156
|
+
return 2;
|
|
157
|
+
case 'placeholder-text':
|
|
158
|
+
return 3;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
12
161
|
function sanitizeIdentifierPart(value) {
|
|
13
162
|
return value
|
|
14
163
|
.replace(/[^a-zA-Z0-9]+/g, ' ')
|
|
@@ -105,7 +254,7 @@ export function assessRenderBoundary(params) {
|
|
|
105
254
|
kind: 'module',
|
|
106
255
|
confidence: 'medium',
|
|
107
256
|
resolvedTarget: null,
|
|
108
|
-
reason: 'This flow spans multiple user-visible steps and repo evidence shows data/mutation setup around it, so
|
|
257
|
+
reason: 'This flow spans multiple user-visible steps and repo evidence shows data/mutation setup around it, so Tayo should prefer a container/module boundary rather than a leaf component test.',
|
|
109
258
|
signals,
|
|
110
259
|
};
|
|
111
260
|
}
|
|
@@ -114,7 +263,7 @@ export function assessRenderBoundary(params) {
|
|
|
114
263
|
kind: 'unknown',
|
|
115
264
|
confidence: 'low',
|
|
116
265
|
resolvedTarget: null,
|
|
117
|
-
reason: 'This flow behaves like a stateful wizard, but
|
|
266
|
+
reason: 'This flow behaves like a stateful wizard, but Tayo cannot resolve the owning render target from repo context yet.',
|
|
118
267
|
signals,
|
|
119
268
|
};
|
|
120
269
|
}
|
|
@@ -131,44 +280,64 @@ export function planJsSuite(params) {
|
|
|
131
280
|
const renderBoundary = assessRenderBoundary({ recording, mockAnalysis });
|
|
132
281
|
const stateSafety = assessStateSafety({ recording, analyzedRecording, mockAnalysis });
|
|
133
282
|
const warnings = [];
|
|
283
|
+
const stepsById = new Map(analyzedRecording.steps
|
|
284
|
+
.filter((step) => Boolean(step.id))
|
|
285
|
+
.map((step) => [step.id, step]));
|
|
134
286
|
if (renderBoundary.kind === 'module') {
|
|
135
287
|
warnings.push('Prefer a repo-local module/container render boundary for this flow instead of targeting a leaf form component directly.');
|
|
136
288
|
}
|
|
137
289
|
if (renderBoundary.kind !== 'component' && !renderBoundary.resolvedTarget) {
|
|
138
|
-
warnings.push('
|
|
290
|
+
warnings.push('Tayo could not resolve the exact render target from repo context; generated output should be treated as a boundary draft.');
|
|
139
291
|
}
|
|
140
292
|
const repeatedTarget = findRepeatedMockTarget(mockAnalysis);
|
|
141
293
|
if (repeatedTarget) {
|
|
142
294
|
warnings.push(`Reuse shared mocks for repeated targets such as "${repeatedTarget}" instead of re-mocking internal query hooks inline.`);
|
|
143
295
|
}
|
|
144
|
-
const baseGroups = renderBoundary.kind === 'module'
|
|
296
|
+
const baseGroups = enrichGroupSteps(renderBoundary.kind === 'module'
|
|
145
297
|
? [
|
|
146
298
|
{
|
|
147
299
|
name: fallbackTitle || 'complete recorded flow',
|
|
148
300
|
steps: analyzedRecording.steps,
|
|
149
301
|
},
|
|
150
302
|
]
|
|
151
|
-
: buildFallbackGroups(analyzedRecording, fallbackTitle);
|
|
152
|
-
const
|
|
303
|
+
: buildFallbackGroups(analyzedRecording, fallbackTitle), stepsById);
|
|
304
|
+
const helperGroups = enrichGroupSteps(analyzedRecording.intentGroups, stepsById);
|
|
305
|
+
const helpers = helperGroups.map((group, index) => ({
|
|
153
306
|
name: toHelperName(group.name, index),
|
|
154
307
|
sourceGroup: group.name,
|
|
155
308
|
purpose: `Navigate the UI through "${group.name}" without hiding assertions.`,
|
|
156
|
-
steps: group.steps,
|
|
309
|
+
steps: filterManagedSemanticMarkerSteps(group.steps),
|
|
157
310
|
assertionPolicy: 'sync-only',
|
|
158
311
|
}));
|
|
159
|
-
const
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
312
|
+
const helperStepsByName = new Map(helpers.map((helper) => [
|
|
313
|
+
helper.name,
|
|
314
|
+
new Set(helper.steps
|
|
315
|
+
.filter((step) => Boolean(step.id))
|
|
316
|
+
.map((step) => step.id)),
|
|
317
|
+
]));
|
|
318
|
+
const scenarios = baseGroups.map((group, index) => {
|
|
319
|
+
const helperRefs = stateSafety.status === 'safe-multi-it'
|
|
164
320
|
? helpers
|
|
165
|
-
.filter((helper) =>
|
|
321
|
+
.filter((helper) => sharesAnyStep(group.steps, helper.steps))
|
|
166
322
|
.map((helper) => helper.name)
|
|
167
|
-
: []
|
|
168
|
-
|
|
169
|
-
|
|
323
|
+
: [];
|
|
324
|
+
const markerState = collectScenarioMarkerState({
|
|
325
|
+
group,
|
|
326
|
+
helperRefs,
|
|
327
|
+
helperStepsByName,
|
|
328
|
+
});
|
|
329
|
+
return {
|
|
330
|
+
name: group.name,
|
|
331
|
+
goal: inferScenarioGoal(group.name),
|
|
332
|
+
steps: filterManagedSemanticMarkerSteps(group.steps),
|
|
333
|
+
helperRefs,
|
|
334
|
+
requiresFreshRender: true,
|
|
335
|
+
markerAssertions: markerState.markerAssertions,
|
|
336
|
+
unresolvedMarkerAssertions: markerState.unresolvedMarkerAssertions,
|
|
337
|
+
};
|
|
338
|
+
});
|
|
170
339
|
if (stateSafety.status !== 'safe-multi-it' && baseGroups.length > 1) {
|
|
171
|
-
warnings.push('Keep this flow in a single end-to-end scenario until
|
|
340
|
+
warnings.push('Keep this flow in a single end-to-end scenario until Tayo can prove that downstream state can be recreated safely per test.');
|
|
172
341
|
}
|
|
173
342
|
return {
|
|
174
343
|
itGroups: baseGroups,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suite-planner.js","sourceRoot":"","sources":["../../src/core/suite-planner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"suite-planner.js","sourceRoot":"","sources":["../../src/core/suite-planner.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Tayo CLI entry point
|
|
4
4
|
* Installer-first package surface with generator access preserved under `generate`.
|
|
5
5
|
*/
|
|
6
6
|
import { Command } from 'commander';
|
|
@@ -10,11 +10,11 @@ import { applyInstallOptions, createInstallCommand, runInstallCommand, } from '.
|
|
|
10
10
|
const program = new Command();
|
|
11
11
|
applyInstallOptions(program);
|
|
12
12
|
program
|
|
13
|
-
.name('
|
|
14
|
-
.description(`${pc.bold('@tayo-dev/rtl')} — Install
|
|
13
|
+
.name('tayo')
|
|
14
|
+
.description(`${pc.bold('@tayo-dev/rtl')} — Install Tayo into Claude Code, OpenCode, Gemini CLI, or Codex`)
|
|
15
15
|
.version('1.3.0-alpha.0', '-v, --version', 'Output the current version')
|
|
16
16
|
.helpOption('-h, --help', 'Display help for command')
|
|
17
|
-
.addHelpText('after', `\nExisting capability:\n ${pc.bold('
|
|
17
|
+
.addHelpText('after', `\nExisting capability:\n ${pc.bold('tayo generate <file>')} Generate RTL tests from Recorder exports`)
|
|
18
18
|
.action(async () => {
|
|
19
19
|
await runInstallCommand(program.optsWithGlobals());
|
|
20
20
|
});
|
package/dist/install/planner.js
CHANGED
|
@@ -18,7 +18,7 @@ function buildRuntimeOperations(target) {
|
|
|
18
18
|
export function buildInstallPlan(selection, context = {}) {
|
|
19
19
|
return {
|
|
20
20
|
packageName: '@tayo-dev/rtl',
|
|
21
|
-
commandName: '
|
|
21
|
+
commandName: 'tayo',
|
|
22
22
|
stage: 'ready-to-write',
|
|
23
23
|
source: selection.source,
|
|
24
24
|
mode: selection.mode,
|
package/dist/install/types.d.ts
CHANGED
|
@@ -93,7 +93,7 @@ export interface InstallAssetConflict {
|
|
|
93
93
|
}
|
|
94
94
|
export interface InstallPlan {
|
|
95
95
|
packageName: '@tayo-dev/rtl';
|
|
96
|
-
commandName: '
|
|
96
|
+
commandName: 'tayo';
|
|
97
97
|
stage: 'prewrite-preview' | 'ready-to-write';
|
|
98
98
|
source: InstallSelectionSource;
|
|
99
99
|
mode: 'interactive' | 'non-interactive';
|
package/dist/learner/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Convention Learning Module
|
|
3
3
|
*
|
|
4
|
-
* Analyzes existing test patterns to derive
|
|
5
|
-
* Implements CNV-01:
|
|
4
|
+
* Analyzes existing test patterns to derive Tayo's conventions.
|
|
5
|
+
* Implements CNV-01: Tayo derives conventions from observation.
|
|
6
6
|
* Implements CNV-02: Conventions persist across runs via SQLite storage.
|
|
7
7
|
* Implements CNV-03: Faster subsequent runs via caching.
|
|
8
8
|
*/
|
package/dist/learner/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Convention Learning Module
|
|
3
3
|
*
|
|
4
|
-
* Analyzes existing test patterns to derive
|
|
5
|
-
* Implements CNV-01:
|
|
4
|
+
* Analyzes existing test patterns to derive Tayo's conventions.
|
|
5
|
+
* Implements CNV-01: Tayo derives conventions from observation.
|
|
6
6
|
* Implements CNV-02: Conventions persist across runs via SQLite storage.
|
|
7
7
|
* Implements CNV-03: Faster subsequent runs via caching.
|
|
8
8
|
*/
|
|
@@ -149,7 +149,7 @@ function mergeConventions(a, b) {
|
|
|
149
149
|
*/
|
|
150
150
|
export function getConventions(projectRoot) {
|
|
151
151
|
try {
|
|
152
|
-
const taroDir = path.join(projectRoot, '.
|
|
152
|
+
const taroDir = path.join(projectRoot, '.tayo');
|
|
153
153
|
const dbPath = path.join(taroDir, 'conventions.db');
|
|
154
154
|
// Check if database exists
|
|
155
155
|
if (!fs.existsSync(dbPath)) {
|
|
@@ -61,7 +61,7 @@ export declare class ConventionStore {
|
|
|
61
61
|
}
|
|
62
62
|
/**
|
|
63
63
|
* Create a ConventionStore instance
|
|
64
|
-
* @param projectRoot - Root directory of the project (will create .
|
|
64
|
+
* @param projectRoot - Root directory of the project (will create .tayo/ subdirectory)
|
|
65
65
|
* @returns Initialized ConventionStore
|
|
66
66
|
*/
|
|
67
67
|
export declare function createStore(projectRoot: string): ConventionStore;
|
package/dist/learner/storage.js
CHANGED
|
@@ -188,11 +188,11 @@ export class ConventionStore {
|
|
|
188
188
|
}
|
|
189
189
|
/**
|
|
190
190
|
* Create a ConventionStore instance
|
|
191
|
-
* @param projectRoot - Root directory of the project (will create .
|
|
191
|
+
* @param projectRoot - Root directory of the project (will create .tayo/ subdirectory)
|
|
192
192
|
* @returns Initialized ConventionStore
|
|
193
193
|
*/
|
|
194
194
|
export function createStore(projectRoot) {
|
|
195
|
-
const taroDir = path.join(projectRoot, '.
|
|
195
|
+
const taroDir = path.join(projectRoot, '.tayo');
|
|
196
196
|
const dbPath = path.join(taroDir, 'conventions.db');
|
|
197
197
|
const store = new ConventionStore(dbPath);
|
|
198
198
|
store.init();
|
|
@@ -23,6 +23,10 @@ export interface StepTemplateOptions {
|
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
25
|
export declare function stepTemplate(opts: StepTemplateOptions): string;
|
|
26
|
+
export declare function markerAssertionTemplate(opts: {
|
|
27
|
+
queryExpression: string;
|
|
28
|
+
matcher?: string;
|
|
29
|
+
}): string;
|
|
26
30
|
export declare function describeBlock(name: string, bodyLines: string[], hasUserEvents: boolean): string;
|
|
27
31
|
export interface ItBlockTemplate {
|
|
28
32
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-template.d.ts","sourceRoot":"","sources":["../../src/templates/test-template.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAA;IACxC,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,wBAAgB,WAAW,CACzB,aAAa,EAAE,OAAO,EACtB,WAAW,GAAE,KAAK,GAAG,KAAa,EAClC,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CAiCR;AAcD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,gBAAgB,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE;QACX,MAAM,EAAE,MAAM,CAAA;QACd,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;CACF;
|
|
1
|
+
{"version":3,"file":"test-template.d.ts","sourceRoot":"","sources":["../../src/templates/test-template.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAA;IACxC,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,wBAAgB,WAAW,CACzB,aAAa,EAAE,OAAO,EACtB,WAAW,GAAE,KAAK,GAAG,KAAa,EAClC,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CAiCR;AAcD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,gBAAgB,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE;QACX,MAAM,EAAE,MAAM,CAAA;QACd,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;CACF;AAcD,wBAAgB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CA0C9D;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,GAAG,MAAM,CAET;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EAAE,EACnB,aAAa,EAAE,OAAO,GACrB,MAAM,CAYR;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,aAAa,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,CAO9D;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,eAAe,EAAE,EAC3B,OAAO,GAAE;IACP,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAA;CAC3B,GACL,MAAM,CAmBR"}
|
|
@@ -46,12 +46,18 @@ function indentLines(text, spaces) {
|
|
|
46
46
|
function sanitizeCommentText(value) {
|
|
47
47
|
return value.replace(/\s+/g, ' ').trim();
|
|
48
48
|
}
|
|
49
|
+
function normalizeAssertionMatcher(matcher) {
|
|
50
|
+
if (matcher.startsWith('.')) {
|
|
51
|
+
return /\)\s*$/u.test(matcher) ? matcher : `${matcher}()`;
|
|
52
|
+
}
|
|
53
|
+
return /\)\s*$/u.test(matcher) ? `.${matcher}` : `.${matcher}()`;
|
|
54
|
+
}
|
|
49
55
|
export function stepTemplate(opts) {
|
|
50
56
|
const { action, query, value = '' } = opts;
|
|
51
57
|
const escapedValue = escapeSingleQuote(value);
|
|
52
58
|
if (opts.checkpoint) {
|
|
53
59
|
return [
|
|
54
|
-
`//
|
|
60
|
+
`// tayo-query-checkpoint: ${action} step requires manual RTL query recovery`,
|
|
55
61
|
`// selector: ${sanitizeCommentText(opts.checkpoint.selector)}`,
|
|
56
62
|
`// reason: ${sanitizeCommentText(opts.checkpoint.reason)}`,
|
|
57
63
|
'// TODO: replace this checkpoint with a trustworthy RTL query before keeping the generated test',
|
|
@@ -80,6 +86,9 @@ export function stepTemplate(opts) {
|
|
|
80
86
|
return `// TODO: unsupported step — original selector: ${query}`;
|
|
81
87
|
}
|
|
82
88
|
}
|
|
89
|
+
export function markerAssertionTemplate(opts) {
|
|
90
|
+
return `expect(await ${opts.queryExpression})${normalizeAssertionMatcher(opts.matcher ?? 'toBeVisible')}`;
|
|
91
|
+
}
|
|
83
92
|
export function describeBlock(name, bodyLines, hasUserEvents) {
|
|
84
93
|
const body = bodyLines.join('\n');
|
|
85
94
|
const indented = indentLines(body, 4);
|