@seanmars/tospec 0.10.0 → 0.12.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/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +18 -8
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/decision.js +4 -4
- package/dist/commands/decision.js.map +1 -1
- package/dist/core/archive.d.ts +3 -3
- package/dist/core/archive.js +8 -8
- package/dist/core/archive.js.map +1 -1
- package/dist/core/artifact-graph/resolver.d.ts +10 -0
- package/dist/core/artifact-graph/resolver.d.ts.map +1 -1
- package/dist/core/artifact-graph/resolver.js +28 -6
- package/dist/core/artifact-graph/resolver.js.map +1 -1
- package/dist/core/config-schema.d.ts +6 -0
- package/dist/core/config-schema.d.ts.map +1 -1
- package/dist/core/config-schema.js +36 -0
- package/dist/core/config-schema.js.map +1 -1
- package/dist/core/dashboard-data.d.ts +1 -1
- package/dist/core/dashboard-data.js +1 -1
- package/dist/core/init.d.ts.map +1 -1
- package/dist/core/init.js +2 -3
- package/dist/core/init.js.map +1 -1
- package/dist/core/migrate.d.ts.map +1 -1
- package/dist/core/migrate.js +2 -1
- package/dist/core/migrate.js.map +1 -1
- package/dist/core/parsers/change-parser.d.ts +11 -2
- package/dist/core/parsers/change-parser.d.ts.map +1 -1
- package/dist/core/parsers/change-parser.js +14 -0
- package/dist/core/parsers/change-parser.js.map +1 -1
- package/dist/core/parsers/requirement-blocks.d.ts +8 -0
- package/dist/core/parsers/requirement-blocks.d.ts.map +1 -1
- package/dist/core/parsers/requirement-blocks.js +10 -0
- package/dist/core/parsers/requirement-blocks.js.map +1 -1
- package/dist/core/shared/index.d.ts +1 -1
- package/dist/core/shared/index.d.ts.map +1 -1
- package/dist/core/shared/index.js +1 -1
- package/dist/core/shared/index.js.map +1 -1
- package/dist/core/shared/rules-generation.js +2 -2
- package/dist/core/shared/rules-generation.js.map +1 -1
- package/dist/core/shared/skill-generation.d.ts +7 -0
- package/dist/core/shared/skill-generation.d.ts.map +1 -1
- package/dist/core/shared/skill-generation.js +13 -1
- package/dist/core/shared/skill-generation.js.map +1 -1
- package/dist/core/specs-apply.d.ts +3 -2
- package/dist/core/specs-apply.d.ts.map +1 -1
- package/dist/core/specs-apply.js +127 -15
- package/dist/core/specs-apply.js.map +1 -1
- package/dist/core/templates/fragments/interview.d.ts +10 -0
- package/dist/core/templates/fragments/interview.d.ts.map +1 -0
- package/dist/core/templates/fragments/interview.js +13 -0
- package/dist/core/templates/fragments/interview.js.map +1 -0
- package/dist/core/templates/fragments/next-step.d.ts +14 -0
- package/dist/core/templates/fragments/next-step.d.ts.map +1 -0
- package/dist/core/templates/fragments/next-step.js +14 -0
- package/dist/core/templates/fragments/next-step.js.map +1 -0
- package/dist/core/templates/fragments/verify.d.ts +19 -0
- package/dist/core/templates/fragments/verify.d.ts.map +1 -0
- package/dist/core/templates/{workflows → fragments}/verify.js +25 -4
- package/dist/core/templates/fragments/verify.js.map +1 -0
- package/dist/core/templates/types.d.ts +6 -0
- package/dist/core/templates/types.d.ts.map +1 -1
- package/dist/core/templates/workflows/apply.d.ts.map +1 -1
- package/dist/core/templates/workflows/apply.js +29 -23
- package/dist/core/templates/workflows/apply.js.map +1 -1
- package/dist/core/templates/workflows/archive.d.ts.map +1 -1
- package/dist/core/templates/workflows/archive.js +6 -8
- package/dist/core/templates/workflows/archive.js.map +1 -1
- package/dist/core/templates/workflows/decision.d.ts.map +1 -1
- package/dist/core/templates/workflows/decision.js +21 -18
- package/dist/core/templates/workflows/decision.js.map +1 -1
- package/dist/core/templates/workflows/explore.d.ts +6 -3
- package/dist/core/templates/workflows/explore.d.ts.map +1 -1
- package/dist/core/templates/workflows/explore.js +29 -33
- package/dist/core/templates/workflows/explore.js.map +1 -1
- package/dist/core/templates/workflows/grill.d.ts.map +1 -1
- package/dist/core/templates/workflows/grill.js +14 -21
- package/dist/core/templates/workflows/grill.js.map +1 -1
- package/dist/core/templates/workflows/issue.js +2 -2
- package/dist/core/templates/workflows/issue.js.map +1 -1
- package/dist/core/templates/workflows/propose.js +2 -2
- package/dist/core/templates/workflows/propose.js.map +1 -1
- package/dist/core/templates/workflows/sync.js +12 -12
- package/dist/core/templates/workflows/sync.js.map +1 -1
- package/dist/core/templates/workflows/update.d.ts.map +1 -1
- package/dist/core/templates/workflows/update.js +18 -27
- package/dist/core/templates/workflows/update.js.map +1 -1
- package/dist/core/update.d.ts.map +1 -1
- package/dist/core/update.js +2 -3
- package/dist/core/update.js.map +1 -1
- package/dist/core/validation/validator.d.ts.map +1 -1
- package/dist/core/validation/validator.js +23 -2
- package/dist/core/validation/validator.js.map +1 -1
- package/dist/utils/change-utils.d.ts +9 -4
- package/dist/utils/change-utils.d.ts.map +1 -1
- package/dist/utils/change-utils.js +13 -13
- package/dist/utils/change-utils.js.map +1 -1
- package/dist/utils/timestamp.d.ts +6 -0
- package/dist/utils/timestamp.d.ts.map +1 -1
- package/dist/utils/timestamp.js +9 -0
- package/dist/utils/timestamp.js.map +1 -1
- package/package.json +2 -1
- package/schemas/decision/schema.yaml +10 -7
- package/schemas/decision/templates/decision.md +22 -22
- package/schemas/issue/schema.yaml +15 -11
- package/schemas/issue/templates/spec.md +9 -9
- package/schemas/issue/templates/task.md +11 -11
- package/schemas/issue/templates/ticket.md +1 -1
- package/schemas/sdd/schema.yaml +36 -17
- package/schemas/sdd/templates/design.md +23 -3
- package/schemas/sdd/templates/proposal.md +5 -5
- package/schemas/sdd/templates/spec.md +9 -9
- package/schemas/sdd/templates/tasks.md +9 -9
- package/schemas/sdd/templates/ticket.md +1 -1
- package/dist/core/templates/workflows/verify.d.ts +0 -9
- package/dist/core/templates/workflows/verify.d.ts.map +0 -1
- package/dist/core/templates/workflows/verify.js.map +0 -1
package/dist/core/specs-apply.js
CHANGED
|
@@ -6,8 +6,9 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { promises as fs } from 'fs';
|
|
8
8
|
import path from 'path';
|
|
9
|
-
import { extractRequirementsSection, parseDeltaSpec, normalizeRequirementName, } from './parsers/requirement-blocks.js';
|
|
9
|
+
import { extractRequirementsSection, parseDeltaSpec, normalizeRequirementName, foldRequirementName, } from './parsers/requirement-blocks.js';
|
|
10
10
|
import { findMainSpecStructureIssues } from './parsers/spec-structure.js';
|
|
11
|
+
import { buildCodeFenceMask } from './parsers/requirement-text.js';
|
|
11
12
|
import { Validator } from './validation/validator.js';
|
|
12
13
|
// -----------------------------------------------------------------------------
|
|
13
14
|
// Public API
|
|
@@ -117,6 +118,16 @@ export async function buildUpdatedSpec(update, changeName, options = {}) {
|
|
|
117
118
|
for (const { from, to } of plan.renamed) {
|
|
118
119
|
const fromNorm = normalizeRequirementName(from);
|
|
119
120
|
const toNorm = normalizeRequirementName(to);
|
|
121
|
+
// A REMOVED naming the FROM side contradicts the rename. Once a missing
|
|
122
|
+
// REMOVED target is treated as a no-op (early-sync), this conflict must be
|
|
123
|
+
// rejected explicitly instead of failing incidentally at apply time.
|
|
124
|
+
// Compared folded, so a case/whitespace variant cannot slip past into a
|
|
125
|
+
// warned no-op.
|
|
126
|
+
const removedFoldMatch = [...removedNamesSet].find((r) => foldRequirementName(r) === foldRequirementName(fromNorm));
|
|
127
|
+
if (removedFoldMatch !== undefined) {
|
|
128
|
+
throw new Error(`${specName} validation failed - requirement present in multiple sections (RENAMED and REMOVED) for header "### Requirement: ${from}"` +
|
|
129
|
+
(removedFoldMatch === fromNorm ? '' : ` (REMOVED spells it "${removedFoldMatch}")`));
|
|
130
|
+
}
|
|
120
131
|
if (modifiedNames.has(fromNorm)) {
|
|
121
132
|
throw new Error(`${specName} validation failed - when a rename exists, MODIFIED must reference the NEW header "### Requirement: ${to}"`);
|
|
122
133
|
}
|
|
@@ -151,7 +162,19 @@ export async function buildUpdatedSpec(update, changeName, options = {}) {
|
|
|
151
162
|
console.log(`Warning: ${specName} - ${plan.removed.length} REMOVED requirement(s) ignored for new spec (nothing to remove).`);
|
|
152
163
|
}
|
|
153
164
|
isNewSpec = true;
|
|
154
|
-
|
|
165
|
+
// Carry the delta's authored Purpose into the new main spec instead of
|
|
166
|
+
// overwriting it with the placeholder. Only plain prose is carried; a
|
|
167
|
+
// Purpose that could restructure the spec falls back to the placeholder.
|
|
168
|
+
const deltaPurpose = extractDeltaPurpose(changeContent);
|
|
169
|
+
if (deltaPurpose && isPurposeCarrySafe(deltaPurpose)) {
|
|
170
|
+
targetContent = buildSpecSkeleton(specName, changeName, deltaPurpose);
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
if (deltaPurpose && !options.silent) {
|
|
174
|
+
console.log(`Warning: ${specName} - delta Purpose ignored (it would leave the new spec unreadable); wrote the placeholder Purpose instead.`);
|
|
175
|
+
}
|
|
176
|
+
targetContent = buildSpecSkeleton(specName, changeName);
|
|
177
|
+
}
|
|
155
178
|
}
|
|
156
179
|
const structureIssues = findMainSpecStructureIssues(targetContent);
|
|
157
180
|
if (structureIssues.length > 0) {
|
|
@@ -168,10 +191,17 @@ export async function buildUpdatedSpec(update, changeName, options = {}) {
|
|
|
168
191
|
}
|
|
169
192
|
// Apply operations in order: RENAMED → REMOVED → MODIFIED → ADDED
|
|
170
193
|
// RENAMED
|
|
194
|
+
let renamedApplied = 0;
|
|
171
195
|
for (const r of plan.renamed) {
|
|
172
196
|
const from = normalizeRequirementName(r.from);
|
|
173
197
|
const to = normalizeRequirementName(r.to);
|
|
174
198
|
if (!nameToBlock.has(from)) {
|
|
199
|
+
// Source gone but target present means the rename was already synced to
|
|
200
|
+
// the baseline (early-sync pattern) - re-applying it is a no-op, not a
|
|
201
|
+
// failure. Only a missing source AND target is a genuine error.
|
|
202
|
+
if (nameToBlock.has(to)) {
|
|
203
|
+
continue;
|
|
204
|
+
}
|
|
175
205
|
throw new Error(`${specName} RENAMED failed for header "### Requirement: ${r.from}" - source not found`);
|
|
176
206
|
}
|
|
177
207
|
if (nameToBlock.has(to)) {
|
|
@@ -189,20 +219,34 @@ export async function buildUpdatedSpec(update, changeName, options = {}) {
|
|
|
189
219
|
};
|
|
190
220
|
nameToBlock.delete(from);
|
|
191
221
|
nameToBlock.set(to, renamedBlock);
|
|
222
|
+
renamedApplied++;
|
|
192
223
|
}
|
|
193
224
|
// REMOVED
|
|
225
|
+
let removedApplied = 0;
|
|
194
226
|
for (const name of plan.removed) {
|
|
195
227
|
const key = normalizeRequirementName(name);
|
|
196
228
|
if (!nameToBlock.has(key)) {
|
|
197
|
-
//
|
|
198
|
-
//
|
|
229
|
+
// Requirement gone from the baseline means the removal was already synced
|
|
230
|
+
// (early-sync pattern) - re-applying it is a no-op, not a failure. One
|
|
231
|
+
// signal separates that from a mistyped header: a requirement that differs
|
|
232
|
+
// only in case or interior whitespace still being present. That is a typo,
|
|
233
|
+
// and stays a hard abort. For new specs the skip was already warned above.
|
|
199
234
|
if (!isNewSpec) {
|
|
200
|
-
|
|
235
|
+
const nearMiss = [...nameToBlock.keys()].find((k) => foldRequirementName(k) === foldRequirementName(key));
|
|
236
|
+
if (nearMiss !== undefined) {
|
|
237
|
+
throw new Error(`${specName} REMOVED failed for header "### Requirement: ${name}" - not found, but "### Requirement: ${nameToBlock.get(nearMiss).name}" exists; fix the header to match it exactly`);
|
|
238
|
+
}
|
|
239
|
+
// ponytail: warning surfaced to humans only; JSON callers get no
|
|
240
|
+
// warnings[] channel yet. Add one if agent flows need the signal.
|
|
241
|
+
if (!options.silent) {
|
|
242
|
+
console.log(`Warning: ${specName} - REMOVED requirement "${name}" is not in the current spec; treating it as already removed.`);
|
|
243
|
+
}
|
|
201
244
|
}
|
|
202
|
-
// Skip removal
|
|
245
|
+
// Skip removal (nothing to remove)
|
|
203
246
|
continue;
|
|
204
247
|
}
|
|
205
248
|
nameToBlock.delete(key);
|
|
249
|
+
removedApplied++;
|
|
206
250
|
}
|
|
207
251
|
// MODIFIED
|
|
208
252
|
for (const mod of plan.modified) {
|
|
@@ -273,8 +317,8 @@ export async function buildUpdatedSpec(update, changeName, options = {}) {
|
|
|
273
317
|
counts: {
|
|
274
318
|
added: addedApplied,
|
|
275
319
|
modified: plan.modified.length,
|
|
276
|
-
removed:
|
|
277
|
-
renamed:
|
|
320
|
+
removed: removedApplied,
|
|
321
|
+
renamed: renamedApplied,
|
|
278
322
|
},
|
|
279
323
|
};
|
|
280
324
|
}
|
|
@@ -303,17 +347,85 @@ export async function writeUpdatedSpec(update, rebuilt, counts, options = {}) {
|
|
|
303
347
|
console.log(` → ${counts.renamed} renamed`);
|
|
304
348
|
}
|
|
305
349
|
/**
|
|
306
|
-
* Build a skeleton spec for new capabilities.
|
|
350
|
+
* Build a skeleton spec for new capabilities. Carries the delta's authored
|
|
351
|
+
* Purpose when one is supplied; otherwise writes the TBD placeholder.
|
|
307
352
|
*/
|
|
308
|
-
export function buildSpecSkeleton(specFolderName, changeName) {
|
|
353
|
+
export function buildSpecSkeleton(specFolderName, changeName, purpose) {
|
|
309
354
|
const titleBase = specFolderName;
|
|
310
|
-
|
|
355
|
+
const purposeBody = purpose && purpose.trim()
|
|
356
|
+
? purpose.trim()
|
|
357
|
+
: `TBD - created by archiving change ${changeName}. Update Purpose after archive.`;
|
|
358
|
+
return `# ${titleBase} Specification\n\n## Purpose\n${purposeBody}\n\n## Requirements\n`;
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* Extracts the `## Purpose` section body from a delta spec, or null when there
|
|
362
|
+
* is none. Fence-masked so a `## Purpose` inside a code example is not mistaken
|
|
363
|
+
* for the real section.
|
|
364
|
+
*/
|
|
365
|
+
function extractDeltaPurpose(content) {
|
|
366
|
+
const lines = content.replace(/\r\n?/g, '\n').split('\n');
|
|
367
|
+
const mask = buildCodeFenceMask(lines);
|
|
368
|
+
let start = -1;
|
|
369
|
+
for (let i = 0; i < lines.length; i++) {
|
|
370
|
+
if (mask[i])
|
|
371
|
+
continue;
|
|
372
|
+
if (/^##\s+Purpose\s*$/i.test(lines[i])) {
|
|
373
|
+
start = i + 1;
|
|
374
|
+
break;
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
if (start === -1)
|
|
378
|
+
return null;
|
|
379
|
+
let end = lines.length;
|
|
380
|
+
for (let i = start; i < lines.length; i++) {
|
|
381
|
+
if (mask[i])
|
|
382
|
+
continue;
|
|
383
|
+
if (/^##\s+/.test(lines[i])) {
|
|
384
|
+
end = i;
|
|
385
|
+
break;
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
return lines.slice(start, end).join('\n').trim();
|
|
389
|
+
}
|
|
390
|
+
/**
|
|
391
|
+
* A carried Purpose must not restructure the new spec. Headings, HTML comments,
|
|
392
|
+
* and code fences each have ways to corrupt or hide the rest of the spec, so a
|
|
393
|
+
* Purpose containing any of them falls back to the placeholder rather than risk
|
|
394
|
+
* it.
|
|
395
|
+
* ponytail: prose-only heuristic; a Purpose that genuinely needs a fence or
|
|
396
|
+
* heading falls back to TBD. Loosen only once those corruption classes are
|
|
397
|
+
* handled the way archive's own validator reads the spec.
|
|
398
|
+
*/
|
|
399
|
+
function isPurposeCarrySafe(body) {
|
|
400
|
+
if (!body)
|
|
401
|
+
return false;
|
|
402
|
+
if (/^#{1,6}\s/m.test(body))
|
|
403
|
+
return false; // any markdown heading
|
|
404
|
+
if (/<!--/.test(body))
|
|
405
|
+
return false; // HTML comment opener
|
|
406
|
+
if (/```|~~~/.test(body))
|
|
407
|
+
return false; // code fence
|
|
408
|
+
return true;
|
|
311
409
|
}
|
|
312
410
|
function findMissingCurrentScenarios(current, incoming) {
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
411
|
+
// Multiplicity-aware: a name present N times in current and M times in
|
|
412
|
+
// incoming means max(0, N - M) instances are missing. Set membership would
|
|
413
|
+
// treat N>M as fully covered and let archive silently drop duplicates.
|
|
414
|
+
const remainingIncoming = new Map();
|
|
415
|
+
for (const scenario of parseScenarioBlocks(incoming.raw)) {
|
|
416
|
+
remainingIncoming.set(scenario.name, (remainingIncoming.get(scenario.name) ?? 0) + 1);
|
|
417
|
+
}
|
|
418
|
+
const missing = [];
|
|
419
|
+
for (const scenario of parseScenarioBlocks(current.raw)) {
|
|
420
|
+
const remaining = remainingIncoming.get(scenario.name) ?? 0;
|
|
421
|
+
if (remaining > 0) {
|
|
422
|
+
remainingIncoming.set(scenario.name, remaining - 1);
|
|
423
|
+
}
|
|
424
|
+
else {
|
|
425
|
+
missing.push(scenario.name);
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
return missing;
|
|
317
429
|
}
|
|
318
430
|
function parseScenarioBlocks(requirementRaw) {
|
|
319
431
|
const lines = requirementRaw.replace(/\r\n?/g, '\n').split('\n');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specs-apply.js","sourceRoot":"","sources":["../../src/core/specs-apply.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"specs-apply.js","sourceRoot":"","sources":["../../src/core/specs-apply.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interview mechanics — shared by the two interrogation workflows.
|
|
3
|
+
*
|
|
4
|
+
* `tospec-explore` (converge something not yet written) and `tospec-grill`
|
|
5
|
+
* (pressure-test something already on the table) ask questions differently but
|
|
6
|
+
* obey the same mechanics. They lived as two hand-maintained copies until a
|
|
7
|
+
* one-line rule change had to be made twice; this is the single source of truth.
|
|
8
|
+
*/
|
|
9
|
+
export declare const INTERVIEW_MECHANICS = "- **Batch independent questions; sequence dependent ones.** Ask unrelated questions together in a single turn (use `AskUserQuestion` \u2014 up to 4 at once). A question whose answer depends on another still-open question isn't independent \u2014 hold it for a later turn, once the question it hangs off is settled.\n- **Every question carries a suggested answer** and the reasoning behind it, so the user can confirm instead of writing an essay.\n- **Look up what's checkable; ask what's a decision.** Factual questions (\"does X already exist\", \"what does Y currently do\") are yours to answer from the codebase \u2014 never ask the user something you can verify yourself. Decisions (behavior, scope, trade-offs) are always the user's: ask, and wait for the answer before proceeding.\n- **Probe every answer for its hidden premise.** After each answer, ask what it implies that hasn't been said yet. Don't stop at the first plausible answer; keep pulling the thread until it stops giving new information.";
|
|
10
|
+
//# sourceMappingURL=interview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interview.d.ts","sourceRoot":"","sources":["../../../../src/core/templates/fragments/interview.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAO,MAAM,mBAAmB,o/BAG4L,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interview mechanics — shared by the two interrogation workflows.
|
|
3
|
+
*
|
|
4
|
+
* `tospec-explore` (converge something not yet written) and `tospec-grill`
|
|
5
|
+
* (pressure-test something already on the table) ask questions differently but
|
|
6
|
+
* obey the same mechanics. They lived as two hand-maintained copies until a
|
|
7
|
+
* one-line rule change had to be made twice; this is the single source of truth.
|
|
8
|
+
*/
|
|
9
|
+
export const INTERVIEW_MECHANICS = `- **Batch independent questions; sequence dependent ones.** Ask unrelated questions together in a single turn (use \`AskUserQuestion\` — up to 4 at once). A question whose answer depends on another still-open question isn't independent — hold it for a later turn, once the question it hangs off is settled.
|
|
10
|
+
- **Every question carries a suggested answer** and the reasoning behind it, so the user can confirm instead of writing an essay.
|
|
11
|
+
- **Look up what's checkable; ask what's a decision.** Factual questions ("does X already exist", "what does Y currently do") are yours to answer from the codebase — never ask the user something you can verify yourself. Decisions (behavior, scope, trade-offs) are always the user's: ask, and wait for the answer before proceeding.
|
|
12
|
+
- **Probe every answer for its hidden premise.** After each answer, ask what it implies that hasn't been said yet. Don't stop at the first plausible answer; keep pulling the thread until it stops giving new information.`;
|
|
13
|
+
//# sourceMappingURL=interview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interview.js","sourceRoot":"","sources":["../../../../src/core/templates/fragments/interview.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;4NAGyL,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Next-step option labels — shared by every workflow that hands off.
|
|
3
|
+
*
|
|
4
|
+
* explore, grill, decision and update all end by putting the next action to the
|
|
5
|
+
* user, and all four word their option labels the same way: context-derived
|
|
6
|
+
* prose plus a fixed keyword. Only the source of the prose and the keyword set
|
|
7
|
+
* differ, so those are the parameters and the rule itself lives here once.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* @param from Where the label's wording comes from, e.g. "the situation you just explored".
|
|
11
|
+
* @param keywords The allowed keyword literals, e.g. "\`(propose)\`/\`(issue)\`, \`(apply)\`".
|
|
12
|
+
*/
|
|
13
|
+
export declare const nextStepLabelRule: (from: string, keywords: string) => string;
|
|
14
|
+
//# sourceMappingURL=next-step.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"next-step.d.ts","sourceRoot":"","sources":["../../../../src/core/templates/fragments/next-step.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,EAAE,UAAU,MAAM,KAAG,MACwR,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Next-step option labels — shared by every workflow that hands off.
|
|
3
|
+
*
|
|
4
|
+
* explore, grill, decision and update all end by putting the next action to the
|
|
5
|
+
* user, and all four word their option labels the same way: context-derived
|
|
6
|
+
* prose plus a fixed keyword. Only the source of the prose and the keyword set
|
|
7
|
+
* differ, so those are the parameters and the rule itself lives here once.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* @param from Where the label's wording comes from, e.g. "the situation you just explored".
|
|
11
|
+
* @param keywords The allowed keyword literals, e.g. "\`(propose)\`/\`(issue)\`, \`(apply)\`".
|
|
12
|
+
*/
|
|
13
|
+
export const nextStepLabelRule = (from, keywords) => `Write each option label from ${from} — a short, conversational phrase naming the concrete next action — then append the fixed action keyword in parentheses. The keyword is constant (${keywords}); the words before it are not — they must describe *this* action in *this* context, never a canned phrase, and never the raw \`tospec-*\` skill name.`;
|
|
14
|
+
//# sourceMappingURL=next-step.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"next-step.js","sourceRoot":"","sources":["../../../../src/core/templates/fragments/next-step.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAE,QAAgB,EAAU,EAAE,CAC1E,gCAAgC,IAAI,qJAAqJ,QAAQ,wJAAwJ,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Verify methodology — apply's automatic final step.
|
|
3
|
+
*
|
|
4
|
+
* verify is not a standalone skill/command; it runs at the end of both apply
|
|
5
|
+
* variants. The methodology is long enough that leaving it inline puts ~45
|
|
6
|
+
* lines of end-of-run review in front of an agent that is still on task 1 of N,
|
|
7
|
+
* so the skill form discloses it to a sibling `VERIFY.md` and keeps only a
|
|
8
|
+
* pointer. The command form has no sibling file, so it inlines the same text.
|
|
9
|
+
* Either way this module is the single source of truth.
|
|
10
|
+
*/
|
|
11
|
+
/** The review protocol itself — shared by the disclosed file and the command. */
|
|
12
|
+
export declare const VERIFY_METHODOLOGY = "Two-axis review of the implementation, run as **independent parallel subagents** so neither pollutes or reranks the other's findings \u2014 a change can pass one axis and fail the other, and reporting them separately is what keeps that visible.\n\n**Scope \u2014 two subagents, one pass each, and that is the whole review.** The subject under review is always the *code diff*, never another review's output. Do not spawn a third agent to grade the two axes' findings, do not re-review a report you have already written, do not audit the audit. Right-sized review beats deep review: enough eyes to catch real problems, no recursion for its own sake.\n\n**Steps**\n\n1. **Gather context**\n ```bash\n tospec status --change \"<name>\" --json\n ```\n Note `schemaName` (sdd \u2192 compare against `specs/`; issue \u2192 compare against `task.md`) and the files this change touched (from `tasks.md`/`task.md`, or `git diff` against the commit before the change started).\n\n2. **Spawn both axes in parallel** \u2014 a single message with two `Agent` tool calls, both `general-purpose`:\n\n **Standards axis prompt** \u2014 include the diff and the brief: \"Report every place the diff violates this repo's documented conventions (cite the file/rule), plus any of Fowler's code smells you spot (Mysterious Name, Duplicated Code, Feature Envy, Data Clumps, Primitive Obsession, Repeated Switches, Shotgun Surgery, Divergent Change, Speculative Generality, Message Chains, Middle Man, Refused Bequest) \u2014 name the smell, quote the hunk, and treat documented repo conventions as overriding the baseline. Distinguish hard violations from judgement calls. Skip anything tooling already enforces.\"\n\n **Spec axis prompt** \u2014 include the diff plus, for sdd, the relevant `specs/<capability>/spec.md` delta content (`tospec show \"<name>\" --json`) and `design.md`'s decisions; for issue, `task.md`'s root cause and fix plan. Brief: \"Report (a) requirements/task items that are missing or partially implemented; (b) behavior in the diff that wasn't asked for (scope creep); (c) requirements that look implemented but the implementation looks wrong, or that deviate from design.md's stated decisions. Quote the spec/task line for each finding.\"\n\n3. **Run the full test suite.** This is a hard gate alongside both axes \u2014 a change with green axes but red tests isn't verified.\n\n4. **Re-validate artifacts**\n ```bash\n tospec validate \"<name>\" --json\n ```\n If validation reports an artifact-format or structural problem, fix that artifact and re-run the command until it passes. A review is not complete while artifact validation is red.\n\n5. **Aggregate \u2014 do not merge or rerank**\n\n Present the two reports under `## Standards` and `## Spec` headings. End with one line per axis: total findings and the worst issue within that axis. Do not pick a single overall verdict across axes.\n\n This is a **mechanical collation you do yourself** \u2014 collect, label, count. It is not another review pass and not a job for a subagent: nothing reviews these two reports.\n\n**Verify output**\n\nReport the two-axis result plus test suite status. If both axes are clean and tests are green, the change is verified \u2014 tell the user it's ready for `tospec-archive`. If either axis has a blocking finding or tests are red, do **not** treat apply as done: fix the issue here (this is still apply) and re-run **only the affected axis against the fixed code** until it's clean \u2014 you are re-reviewing the changed code, not the previous report, and a passing axis is done, so don't re-run it \"to be sure\".\n\n**Verify guardrails**\n- Standards and Spec axes are independent \u2014 never let one axis's findings influence the other's report\n- Full test suite must be green; a clean review with red tests is not verified\n- Quote the specific spec/task line or hunk for every finding \u2014 no unsupported claims\n- **One review pass per axis \u2014 never review the review.** No agent audits another agent's findings, no re-reviewing a report you already wrote; a re-run after a fix targets the changed code, and a clean axis is not re-run for extra confidence";
|
|
13
|
+
/** Contents of the `VERIFY.md` shipped beside each apply skill's `SKILL.md`. */
|
|
14
|
+
export declare const VERIFY_DOC = "# Verify \u2014 apply's final step\n\nRun this once every task in the tracks file is checked off and `tospec validate` passes. It is the last step of `tospec-apply`, not a separate command the user invokes.\n\nTwo-axis review of the implementation, run as **independent parallel subagents** so neither pollutes or reranks the other's findings \u2014 a change can pass one axis and fail the other, and reporting them separately is what keeps that visible.\n\n**Scope \u2014 two subagents, one pass each, and that is the whole review.** The subject under review is always the *code diff*, never another review's output. Do not spawn a third agent to grade the two axes' findings, do not re-review a report you have already written, do not audit the audit. Right-sized review beats deep review: enough eyes to catch real problems, no recursion for its own sake.\n\n**Steps**\n\n1. **Gather context**\n ```bash\n tospec status --change \"<name>\" --json\n ```\n Note `schemaName` (sdd \u2192 compare against `specs/`; issue \u2192 compare against `task.md`) and the files this change touched (from `tasks.md`/`task.md`, or `git diff` against the commit before the change started).\n\n2. **Spawn both axes in parallel** \u2014 a single message with two `Agent` tool calls, both `general-purpose`:\n\n **Standards axis prompt** \u2014 include the diff and the brief: \"Report every place the diff violates this repo's documented conventions (cite the file/rule), plus any of Fowler's code smells you spot (Mysterious Name, Duplicated Code, Feature Envy, Data Clumps, Primitive Obsession, Repeated Switches, Shotgun Surgery, Divergent Change, Speculative Generality, Message Chains, Middle Man, Refused Bequest) \u2014 name the smell, quote the hunk, and treat documented repo conventions as overriding the baseline. Distinguish hard violations from judgement calls. Skip anything tooling already enforces.\"\n\n **Spec axis prompt** \u2014 include the diff plus, for sdd, the relevant `specs/<capability>/spec.md` delta content (`tospec show \"<name>\" --json`) and `design.md`'s decisions; for issue, `task.md`'s root cause and fix plan. Brief: \"Report (a) requirements/task items that are missing or partially implemented; (b) behavior in the diff that wasn't asked for (scope creep); (c) requirements that look implemented but the implementation looks wrong, or that deviate from design.md's stated decisions. Quote the spec/task line for each finding.\"\n\n3. **Run the full test suite.** This is a hard gate alongside both axes \u2014 a change with green axes but red tests isn't verified.\n\n4. **Re-validate artifacts**\n ```bash\n tospec validate \"<name>\" --json\n ```\n If validation reports an artifact-format or structural problem, fix that artifact and re-run the command until it passes. A review is not complete while artifact validation is red.\n\n5. **Aggregate \u2014 do not merge or rerank**\n\n Present the two reports under `## Standards` and `## Spec` headings. End with one line per axis: total findings and the worst issue within that axis. Do not pick a single overall verdict across axes.\n\n This is a **mechanical collation you do yourself** \u2014 collect, label, count. It is not another review pass and not a job for a subagent: nothing reviews these two reports.\n\n**Verify output**\n\nReport the two-axis result plus test suite status. If both axes are clean and tests are green, the change is verified \u2014 tell the user it's ready for `tospec-archive`. If either axis has a blocking finding or tests are red, do **not** treat apply as done: fix the issue here (this is still apply) and re-run **only the affected axis against the fixed code** until it's clean \u2014 you are re-reviewing the changed code, not the previous report, and a passing axis is done, so don't re-run it \"to be sure\".\n\n**Verify guardrails**\n- Standards and Spec axes are independent \u2014 never let one axis's findings influence the other's report\n- Full test suite must be green; a clean review with red tests is not verified\n- Quote the specific spec/task line or hunk for every finding \u2014 no unsupported claims\n- **One review pass per axis \u2014 never review the review.** No agent audits another agent's findings, no re-reviewing a report you already wrote; a re-run after a fix targets the changed code, and a clean axis is not re-run for extra confidence\n";
|
|
15
|
+
/** The pointer that replaces the methodology inside the apply skills. */
|
|
16
|
+
export declare const VERIFY_POINTER = "## Verify (automatic \u2014 apply's final step)\n\nOnce every task is checked off and `tospec validate` passes, **read `VERIFY.md` in this skill's directory and run it in full.** It is apply's last step, not a separate command the user has to invoke. The change stays unfinished \u2014 and must not go to `tospec-archive` \u2014 until that review comes back clean and the full test suite is green.";
|
|
17
|
+
/** The same block for the command form, which has no sibling file to point at. */
|
|
18
|
+
export declare const VERIFY_INLINE = "## Verify (automatic \u2014 apply's final step)\n\nOnce every task is checked off and `tospec validate` passes, run the two-axis review **automatically**. This is not a separate command the user has to invoke \u2014 verify is folded into apply and runs here as its last step, before the change is handed to `tospec-archive`.\n\nTwo-axis review of the implementation, run as **independent parallel subagents** so neither pollutes or reranks the other's findings \u2014 a change can pass one axis and fail the other, and reporting them separately is what keeps that visible.\n\n**Scope \u2014 two subagents, one pass each, and that is the whole review.** The subject under review is always the *code diff*, never another review's output. Do not spawn a third agent to grade the two axes' findings, do not re-review a report you have already written, do not audit the audit. Right-sized review beats deep review: enough eyes to catch real problems, no recursion for its own sake.\n\n**Steps**\n\n1. **Gather context**\n ```bash\n tospec status --change \"<name>\" --json\n ```\n Note `schemaName` (sdd \u2192 compare against `specs/`; issue \u2192 compare against `task.md`) and the files this change touched (from `tasks.md`/`task.md`, or `git diff` against the commit before the change started).\n\n2. **Spawn both axes in parallel** \u2014 a single message with two `Agent` tool calls, both `general-purpose`:\n\n **Standards axis prompt** \u2014 include the diff and the brief: \"Report every place the diff violates this repo's documented conventions (cite the file/rule), plus any of Fowler's code smells you spot (Mysterious Name, Duplicated Code, Feature Envy, Data Clumps, Primitive Obsession, Repeated Switches, Shotgun Surgery, Divergent Change, Speculative Generality, Message Chains, Middle Man, Refused Bequest) \u2014 name the smell, quote the hunk, and treat documented repo conventions as overriding the baseline. Distinguish hard violations from judgement calls. Skip anything tooling already enforces.\"\n\n **Spec axis prompt** \u2014 include the diff plus, for sdd, the relevant `specs/<capability>/spec.md` delta content (`tospec show \"<name>\" --json`) and `design.md`'s decisions; for issue, `task.md`'s root cause and fix plan. Brief: \"Report (a) requirements/task items that are missing or partially implemented; (b) behavior in the diff that wasn't asked for (scope creep); (c) requirements that look implemented but the implementation looks wrong, or that deviate from design.md's stated decisions. Quote the spec/task line for each finding.\"\n\n3. **Run the full test suite.** This is a hard gate alongside both axes \u2014 a change with green axes but red tests isn't verified.\n\n4. **Re-validate artifacts**\n ```bash\n tospec validate \"<name>\" --json\n ```\n If validation reports an artifact-format or structural problem, fix that artifact and re-run the command until it passes. A review is not complete while artifact validation is red.\n\n5. **Aggregate \u2014 do not merge or rerank**\n\n Present the two reports under `## Standards` and `## Spec` headings. End with one line per axis: total findings and the worst issue within that axis. Do not pick a single overall verdict across axes.\n\n This is a **mechanical collation you do yourself** \u2014 collect, label, count. It is not another review pass and not a job for a subagent: nothing reviews these two reports.\n\n**Verify output**\n\nReport the two-axis result plus test suite status. If both axes are clean and tests are green, the change is verified \u2014 tell the user it's ready for `tospec-archive`. If either axis has a blocking finding or tests are red, do **not** treat apply as done: fix the issue here (this is still apply) and re-run **only the affected axis against the fixed code** until it's clean \u2014 you are re-reviewing the changed code, not the previous report, and a passing axis is done, so don't re-run it \"to be sure\".\n\n**Verify guardrails**\n- Standards and Spec axes are independent \u2014 never let one axis's findings influence the other's report\n- Full test suite must be green; a clean review with red tests is not verified\n- Quote the specific spec/task line or hunk for every finding \u2014 no unsupported claims\n- **One review pass per axis \u2014 never review the review.** No agent audits another agent's findings, no re-reviewing a report you already wrote; a re-run after a fix targets the changed code, and a clean axis is not re-run for extra confidence";
|
|
19
|
+
//# sourceMappingURL=verify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../../src/core/templates/fragments/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,iFAAiF;AACjF,eAAO,MAAM,kBAAkB,ymIAwCoN,CAAC;AAEpP,gFAAgF;AAChF,eAAO,MAAM,UAAU,6zIAKtB,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,cAAc,kZAE4T,CAAC;AAExV,kFAAkF;AAClF,eAAO,MAAM,aAAa,i7IAIJ,CAAC"}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Verify methodology
|
|
2
|
+
* Verify methodology — apply's automatic final step.
|
|
3
3
|
*
|
|
4
|
-
* verify is
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* verify is not a standalone skill/command; it runs at the end of both apply
|
|
5
|
+
* variants. The methodology is long enough that leaving it inline puts ~45
|
|
6
|
+
* lines of end-of-run review in front of an agent that is still on task 1 of N,
|
|
7
|
+
* so the skill form discloses it to a sibling `VERIFY.md` and keeps only a
|
|
8
|
+
* pointer. The command form has no sibling file, so it inlines the same text.
|
|
9
|
+
* Either way this module is the single source of truth.
|
|
7
10
|
*/
|
|
11
|
+
/** The review protocol itself — shared by the disclosed file and the command. */
|
|
8
12
|
export const VERIFY_METHODOLOGY = `Two-axis review of the implementation, run as **independent parallel subagents** so neither pollutes or reranks the other's findings — a change can pass one axis and fail the other, and reporting them separately is what keeps that visible.
|
|
9
13
|
|
|
10
14
|
**Scope — two subagents, one pass each, and that is the whole review.** The subject under review is always the *code diff*, never another review's output. Do not spawn a third agent to grade the two axes' findings, do not re-review a report you have already written, do not audit the audit. Right-sized review beats deep review: enough eyes to catch real problems, no recursion for its own sake.
|
|
@@ -46,4 +50,21 @@ Report the two-axis result plus test suite status. If both axes are clean and te
|
|
|
46
50
|
- Full test suite must be green; a clean review with red tests is not verified
|
|
47
51
|
- Quote the specific spec/task line or hunk for every finding — no unsupported claims
|
|
48
52
|
- **One review pass per axis — never review the review.** No agent audits another agent's findings, no re-reviewing a report you already wrote; a re-run after a fix targets the changed code, and a clean axis is not re-run for extra confidence`;
|
|
53
|
+
/** Contents of the `VERIFY.md` shipped beside each apply skill's `SKILL.md`. */
|
|
54
|
+
export const VERIFY_DOC = `# Verify — apply's final step
|
|
55
|
+
|
|
56
|
+
Run this once every task in the tracks file is checked off and \`tospec validate\` passes. It is the last step of \`tospec-apply\`, not a separate command the user invokes.
|
|
57
|
+
|
|
58
|
+
${VERIFY_METHODOLOGY}
|
|
59
|
+
`;
|
|
60
|
+
/** The pointer that replaces the methodology inside the apply skills. */
|
|
61
|
+
export const VERIFY_POINTER = `## Verify (automatic — apply's final step)
|
|
62
|
+
|
|
63
|
+
Once every task is checked off and \`tospec validate\` passes, **read \`VERIFY.md\` in this skill's directory and run it in full.** It is apply's last step, not a separate command the user has to invoke. The change stays unfinished — and must not go to \`tospec-archive\` — until that review comes back clean and the full test suite is green.`;
|
|
64
|
+
/** The same block for the command form, which has no sibling file to point at. */
|
|
65
|
+
export const VERIFY_INLINE = `## Verify (automatic — apply's final step)
|
|
66
|
+
|
|
67
|
+
Once every task is checked off and \`tospec validate\` passes, run the two-axis review **automatically**. This is not a separate command the user has to invoke — verify is folded into apply and runs here as its last step, before the change is handed to \`tospec-archive\`.
|
|
68
|
+
|
|
69
|
+
${VERIFY_METHODOLOGY}`;
|
|
49
70
|
//# sourceMappingURL=verify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../../src/core/templates/fragments/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,iFAAiF;AACjF,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mPAwCiN,CAAC;AAEpP,gFAAgF;AAChF,MAAM,CAAC,MAAM,UAAU,GAAG;;;;EAIxB,kBAAkB;CACnB,CAAC;AAEF,yEAAyE;AACzE,MAAM,CAAC,MAAM,cAAc,GAAG;;uVAEyT,CAAC;AAExV,kFAAkF;AAClF,MAAM,CAAC,MAAM,aAAa,GAAG;;;;EAI3B,kBAAkB,EAAE,CAAC"}
|
|
@@ -11,6 +11,12 @@ export interface SkillTemplate {
|
|
|
11
11
|
allowedTools?: string[];
|
|
12
12
|
/** When true, emits `disable-model-invocation: true` so the skill only runs when explicitly invoked (e.g. via its slash command), never auto-triggered. */
|
|
13
13
|
disableModelInvocation?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Extra files written beside `SKILL.md` in the skill directory, keyed by
|
|
16
|
+
* filename. Used for progressive disclosure: reference the skill points at
|
|
17
|
+
* but shouldn't carry inline (e.g. apply's `VERIFY.md`).
|
|
18
|
+
*/
|
|
19
|
+
extraFiles?: Record<string, string>;
|
|
14
20
|
}
|
|
15
21
|
export interface CommandTemplate {
|
|
16
22
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/templates/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,2JAA2J;IAC3J,sBAAsB,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/templates/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,2JAA2J;IAC3J,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../../src/core/templates/workflows/apply.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../../src/core/templates/workflows/apply.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAsHlE,wBAAgB,2BAA2B,IAAI,aAAa,CAe3D;AAED,wBAAgB,6BAA6B,IAAI,eAAe,CAY/D;AA+BD,wBAAgB,kCAAkC,IAAI,aAAa,CAelE;AAED,wBAAgB,oCAAoC,IAAI,eAAe,CAYtE"}
|