@tayo-dev/rtl 1.3.1 → 1.4.1
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 +38 -97
- package/assets/claude/commands/@tayo-dev/rtl/generate.md +43 -6
- package/assets/claude/commands/@tayo-dev/rtl/help.md +2 -2
- package/assets/codex/@tayo-dev/rtl-conventions/SKILL.md +38 -6
- package/assets/codex/@tayo-dev/rtl-generate/SKILL.md +125 -13
- package/assets/codex/@tayo-dev/rtl-generate/references/assertion-markers.md +62 -0
- package/assets/codex/@tayo-dev/rtl-generate/references/auth.md +92 -0
- package/assets/codex/@tayo-dev/rtl-generate/references/conventions-schema.md +184 -0
- package/assets/codex/@tayo-dev/rtl-generate/references/entry-path-fidelity.md +68 -0
- package/assets/codex/@tayo-dev/rtl-generate/references/intent-model.md +232 -0
- package/assets/codex/@tayo-dev/rtl-generate/references/mock-store.md +18 -0
- package/assets/codex/@tayo-dev/rtl-generate/references/quality-scoring.md +189 -0
- package/assets/codex/@tayo-dev/rtl-generate/references/state-schema.md +119 -0
- package/assets/codex/@tayo-dev/rtl-generate/references/test-index.md +12 -0
- package/assets/codex/@tayo-dev/rtl-generate/references/verification-gate.md +93 -0
- package/assets/codex/@tayo-dev/rtl-help/SKILL.md +21 -7
- package/assets/codex/@tayo-dev/rtl-mocks/SKILL.md +55 -9
- package/assets/gemini/commands/@tayo-dev/rtl/generate.toml +28 -6
- package/assets/gemini/commands/@tayo-dev/rtl/help.toml +2 -2
- package/assets/opencode/commands/@tayo-dev/rtl-generate.md +32 -6
- package/assets/opencode/commands/@tayo-dev/rtl-help.md +2 -2
- package/dist/cli/commands/generate.d.ts +1 -7
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +264 -101
- 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 +0 -2
- package/dist/core/generator.d.ts.map +1 -1
- package/dist/core/generator.js +81 -8
- package/dist/core/generator.js.map +1 -1
- package/dist/core/input-loader.d.ts +2 -2
- package/dist/core/input-loader.d.ts.map +1 -1
- package/dist/core/input-loader.js +7 -16
- 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 +70 -1
- 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/core/writer.d.ts +0 -1
- package/dist/core/writer.d.ts.map +1 -1
- package/dist/core/writer.js +3 -3
- package/dist/core/writer.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +19 -15
- package/dist/index.js.map +1 -1
- package/dist/install/planner.js +1 -1
- package/dist/install/runtimes/codex.d.ts.map +1 -1
- package/dist/install/runtimes/codex.js +18 -0
- package/dist/install/runtimes/codex.js.map +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":"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"}
|
|
@@ -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/core/writer.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/core/writer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,YAAY;IAC3B,
|
|
1
|
+
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/core/writer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,OAAO,CAAA;CACrB;AAYD,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,CAqCtB"}
|
package/dist/core/writer.js
CHANGED
|
@@ -12,7 +12,7 @@ function isValidTestPath(filePath) {
|
|
|
12
12
|
base.endsWith('.spec.tsx'));
|
|
13
13
|
}
|
|
14
14
|
export async function writeTestFile(content, outputPath, options = {}) {
|
|
15
|
-
const {
|
|
15
|
+
const { createDir = true } = options;
|
|
16
16
|
const resolvedPath = resolve(outputPath);
|
|
17
17
|
if (!isValidTestPath(resolvedPath)) {
|
|
18
18
|
const ext = extname(resolvedPath);
|
|
@@ -30,8 +30,8 @@ export async function writeTestFile(content, outputPath, options = {}) {
|
|
|
30
30
|
catch {
|
|
31
31
|
// ENOENT — file does not exist, proceed
|
|
32
32
|
}
|
|
33
|
-
if (fileExists
|
|
34
|
-
throw new Error(`Output file already exists: ${resolvedPath}\
|
|
33
|
+
if (fileExists) {
|
|
34
|
+
throw new Error(`Output file already exists: ${resolvedPath}\nDelete or rename it before generating again.`);
|
|
35
35
|
}
|
|
36
36
|
await writeFile(resolvedPath, content, 'utf-8');
|
|
37
37
|
return {
|
package/dist/core/writer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/core/writer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/core/writer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAYrD,SAAS,eAAe,CAAC,QAAgB;IACvC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;IAC1C,OAAO,CACL,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAC3B,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAe,EACf,UAAkB,EAClB,UAAwB,EAAE;IAE1B,MAAM,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,OAAO,CAAA;IACpC,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IAExC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;QACjC,MAAM,IAAI,KAAK,CACb,4FAA4F,GAAG,IAAI,gBAAgB,GAAG,CACvH,CAAA;IACH,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IACjC,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACvC,CAAC;IAED,IAAI,UAAU,GAAG,KAAK,CAAA;IACtB,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,YAAY,CAAC,CAAA;QAC1B,UAAU,GAAG,IAAI,CAAA;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,wCAAwC;IAC1C,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,+BAA+B,YAAY,gDAAgD,CAC5F,CAAA;IACH,CAAC;IAED,MAAM,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IAE/C,OAAO;QACL,QAAQ,EAAE,YAAY;QACtB,OAAO,EAAE,CAAC,UAAU;QACpB,WAAW,EAAE,UAAU;KACxB,CAAA;AACH,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
* Installer-first package surface with
|
|
3
|
+
* Tayo CLI entry point
|
|
4
|
+
* Installer-first package surface with runtime-native generation entrypoints.
|
|
5
5
|
*/
|
|
6
6
|
export {};
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -1,24 +1,28 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
* Installer-first package surface with
|
|
3
|
+
* Tayo CLI entry point
|
|
4
|
+
* Installer-first package surface with runtime-native generation entrypoints.
|
|
5
5
|
*/
|
|
6
6
|
import { Command } from 'commander';
|
|
7
7
|
import pc from 'picocolors';
|
|
8
8
|
import { createGenerateCommand } from './cli/commands/generate.js';
|
|
9
9
|
import { applyInstallOptions, createInstallCommand, runInstallCommand, } from './cli/commands/install.js';
|
|
10
10
|
const program = new Command();
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
program.
|
|
11
|
+
if (process.argv[2] === '__generate') {
|
|
12
|
+
await createGenerateCommand().parseAsync(process.argv.slice(3), { from: 'user' });
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
applyInstallOptions(program);
|
|
16
|
+
program
|
|
17
|
+
.name('tayo')
|
|
18
|
+
.description(`${pc.bold('@tayo-dev/rtl')} — Install Tayo into Claude Code, OpenCode, Gemini CLI, or Codex`)
|
|
19
|
+
.version('1.4.1', '-v, --version', 'Output the current version')
|
|
20
|
+
.helpOption('-h, --help', 'Display help for command')
|
|
21
|
+
.addHelpText('after', '\nAfter install, use the runtime-native Tayo help/generate entrypoints.')
|
|
22
|
+
.action(async () => {
|
|
23
|
+
await runInstallCommand(program.optsWithGlobals());
|
|
24
|
+
});
|
|
25
|
+
program.addCommand(createInstallCommand());
|
|
26
|
+
program.parse(process.argv);
|
|
27
|
+
}
|
|
24
28
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,2BAA2B,CAAA;AAGlC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,mBAAmB,CAAC,OAAO,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,2BAA2B,CAAA;AAGlC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,YAAY,EAAE,CAAC;IACrC,MAAM,qBAAqB,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;AACnF,CAAC;KAAM,CAAC;IACN,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAE5B,OAAO;SACJ,IAAI,CAAC,MAAM,CAAC;SACZ,WAAW,CACV,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,kEAAkE,CAC9F;SACA,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,4BAA4B,CAAC;SAC/D,UAAU,CAAC,YAAY,EAAE,0BAA0B,CAAC;SACpD,WAAW,CAAC,OAAO,EAAE,yEAAyE,CAAC;SAC/F,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,iBAAiB,CAAC,OAAO,CAAC,eAAe,EAA2B,CAAC,CAAA;IAC7E,CAAC,CAAC,CAAA;IAEJ,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAA;IAC1C,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAC7B,CAAC"}
|
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,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../src/install/runtimes/codex.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAA0B,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../src/install/runtimes/codex.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAA0B,MAAM,aAAa,CAAA;AAoDtG,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,qBAAqB,EAC7B,aAAa,GAAE,MAAwB,GACtC,oBAAoB,EAAE,CAmBxB"}
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
import { join } from 'node:path';
|
|
2
2
|
import { resolveAssetSource } from '../assets.js';
|
|
3
|
+
const CODEX_GENERATE_REFERENCE_FILES = [
|
|
4
|
+
'assertion-markers.md',
|
|
5
|
+
'auth.md',
|
|
6
|
+
'conventions-schema.md',
|
|
7
|
+
'entry-path-fidelity.md',
|
|
8
|
+
'intent-model.md',
|
|
9
|
+
'mock-store.md',
|
|
10
|
+
'quality-scoring.md',
|
|
11
|
+
'state-schema.md',
|
|
12
|
+
'test-index.md',
|
|
13
|
+
'verification-gate.md',
|
|
14
|
+
];
|
|
3
15
|
const CODEX_SKILL_ASSETS = [
|
|
4
16
|
{
|
|
5
17
|
id: 'help',
|
|
@@ -15,6 +27,12 @@ const CODEX_SKILL_ASSETS = [
|
|
|
15
27
|
destinationSegments: ['skills', '@tayo-dev', 'rtl-generate', 'SKILL.md'],
|
|
16
28
|
entrypoint: '$@tayo-dev/rtl-generate',
|
|
17
29
|
},
|
|
30
|
+
...CODEX_GENERATE_REFERENCE_FILES.map((fileName) => ({
|
|
31
|
+
id: `generate-reference-${fileName.replace(/\.md$/, '')}`,
|
|
32
|
+
kind: 'skill',
|
|
33
|
+
sourceSegments: ['@tayo-dev', 'rtl-generate', 'references', fileName],
|
|
34
|
+
destinationSegments: ['skills', '@tayo-dev', 'rtl-generate', 'references', fileName],
|
|
35
|
+
})),
|
|
18
36
|
{
|
|
19
37
|
id: 'conventions',
|
|
20
38
|
kind: 'skill',
|