@lumenflow/core 3.8.6 → 3.9.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/branch-check.d.ts.map +1 -1
- package/dist/branch-check.js +5 -4
- package/dist/branch-check.js.map +1 -1
- package/dist/cleanup-lock.js +2 -2
- package/dist/cleanup-lock.js.map +1 -1
- package/dist/color-support.d.ts.map +1 -1
- package/dist/color-support.js +4 -3
- package/dist/color-support.js.map +1 -1
- package/dist/commands-logger.js +4 -4
- package/dist/commands-logger.js.map +1 -1
- package/dist/delegation/index.d.ts +13 -0
- package/dist/delegation/index.d.ts.map +1 -0
- package/dist/delegation/index.js +15 -0
- package/dist/delegation/index.js.map +1 -0
- package/dist/delegation-monitor.d.ts.map +1 -1
- package/dist/delegation-monitor.js +2 -0
- package/dist/delegation-monitor.js.map +1 -1
- package/dist/delegation-tree.d.ts.map +1 -1
- package/dist/delegation-tree.js +3 -0
- package/dist/delegation-tree.js.map +1 -1
- package/dist/env-accessors.d.ts +12 -0
- package/dist/env-accessors.d.ts.map +1 -0
- package/dist/env-accessors.js +37 -0
- package/dist/env-accessors.js.map +1 -0
- package/dist/git-adapter.js +3 -3
- package/dist/git-adapter.js.map +1 -1
- package/dist/index.d.ts +38 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -1
- package/dist/lane-checker.d.ts.map +1 -1
- package/dist/lane-checker.js +19 -8
- package/dist/lane-checker.js.map +1 -1
- package/dist/lane-lock.js +2 -2
- package/dist/lane-lock.js.map +1 -1
- package/dist/lifecycle/index.d.ts +21 -0
- package/dist/lifecycle/index.d.ts.map +1 -0
- package/dist/lifecycle/index.js +26 -0
- package/dist/lifecycle/index.js.map +1 -0
- package/dist/lumenflow-config-schema.d.ts +33 -2
- package/dist/lumenflow-config-schema.d.ts.map +1 -1
- package/dist/lumenflow-config-schema.js +2 -0
- package/dist/lumenflow-config-schema.js.map +1 -1
- package/dist/merge-lock.js +2 -2
- package/dist/merge-lock.js.map +1 -1
- package/dist/micro-worktree.d.ts.map +1 -1
- package/dist/micro-worktree.js +31 -6
- package/dist/micro-worktree.js.map +1 -1
- package/dist/schemas/agents-config.d.ts +2 -2
- package/dist/schemas/gates-section-config.d.ts +37 -0
- package/dist/schemas/gates-section-config.d.ts.map +1 -1
- package/dist/schemas/gates-section-config.js +23 -0
- package/dist/schemas/gates-section-config.js.map +1 -1
- package/dist/schemas/memory-arg-validators.d.ts +5 -0
- package/dist/schemas/memory-arg-validators.d.ts.map +1 -1
- package/dist/schemas/memory-schemas.d.ts +11 -0
- package/dist/schemas/memory-schemas.d.ts.map +1 -1
- package/dist/schemas/memory-schemas.js +24 -1
- package/dist/schemas/memory-schemas.js.map +1 -1
- package/dist/schemas/wu-config.d.ts +32 -0
- package/dist/schemas/wu-config.d.ts.map +1 -1
- package/dist/schemas/wu-config.js +18 -0
- package/dist/schemas/wu-config.js.map +1 -1
- package/dist/spawn-guidance-generators.d.ts +6 -0
- package/dist/spawn-guidance-generators.d.ts.map +1 -1
- package/dist/spawn-guidance-generators.js +111 -3
- package/dist/spawn-guidance-generators.js.map +1 -1
- package/dist/spawn-task-builder.d.ts.map +1 -1
- package/dist/spawn-task-builder.js +43 -3
- package/dist/spawn-task-builder.js.map +1 -1
- package/dist/startup-env-validation.d.ts +38 -0
- package/dist/startup-env-validation.d.ts.map +1 -0
- package/dist/startup-env-validation.js +107 -0
- package/dist/startup-env-validation.js.map +1 -0
- package/dist/state-doctor-core.d.ts +6 -0
- package/dist/state-doctor-core.d.ts.map +1 -1
- package/dist/state-doctor-core.js +45 -0
- package/dist/state-doctor-core.js.map +1 -1
- package/dist/template-loader.d.ts +3 -3
- package/dist/template-loader.d.ts.map +1 -1
- package/dist/template-loader.js +19 -5
- package/dist/template-loader.js.map +1 -1
- package/dist/validation/index.d.ts +1 -0
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +1 -0
- package/dist/validation/index.js.map +1 -1
- package/dist/wu-claim-helpers.d.ts.map +1 -1
- package/dist/wu-claim-helpers.js +2 -1
- package/dist/wu-claim-helpers.js.map +1 -1
- package/dist/wu-cli-constants.d.ts +2 -0
- package/dist/wu-cli-constants.d.ts.map +1 -1
- package/dist/wu-cli-constants.js +2 -0
- package/dist/wu-cli-constants.js.map +1 -1
- package/dist/wu-constants.d.ts +1 -0
- package/dist/wu-constants.d.ts.map +1 -1
- package/dist/wu-constants.js +2 -0
- package/dist/wu-constants.js.map +1 -1
- package/dist/wu-context-constants.d.ts +34 -0
- package/dist/wu-context-constants.d.ts.map +1 -1
- package/dist/wu-context-constants.js +34 -0
- package/dist/wu-context-constants.js.map +1 -1
- package/dist/wu-done-cleanup.d.ts.map +1 -1
- package/dist/wu-done-cleanup.js +36 -0
- package/dist/wu-done-cleanup.js.map +1 -1
- package/dist/wu-done-rebase.d.ts.map +1 -1
- package/dist/wu-done-rebase.js +5 -5
- package/dist/wu-done-rebase.js.map +1 -1
- package/dist/wu-event-sourcer.d.ts +18 -0
- package/dist/wu-event-sourcer.d.ts.map +1 -1
- package/dist/wu-event-sourcer.js +30 -3
- package/dist/wu-event-sourcer.js.map +1 -1
- package/dist/wu-paths-constants.d.ts +2 -2
- package/dist/wu-paths-constants.d.ts.map +1 -1
- package/dist/wu-paths-constants.js +2 -2
- package/dist/wu-paths-constants.js.map +1 -1
- package/dist/wu-preflight-validators.js +2 -2
- package/dist/wu-preflight-validators.js.map +1 -1
- package/dist/wu-spawn.d.ts +1 -1
- package/dist/wu-spawn.d.ts.map +1 -1
- package/dist/wu-spawn.js +1 -1
- package/dist/wu-spawn.js.map +1 -1
- package/dist/wu-state-store.d.ts +1 -1
- package/dist/wu-state-store.d.ts.map +1 -1
- package/dist/wu-state-store.js +1 -1
- package/dist/wu-state-store.js.map +1 -1
- package/package.json +41 -2
|
@@ -134,6 +134,115 @@ function generateRefactorGuidance() {
|
|
|
134
134
|
3. No new tests required unless behavior changes
|
|
135
135
|
4. If tests fail after refactor, the refactor introduced a bug`;
|
|
136
136
|
}
|
|
137
|
+
/** WU-2292: Generate concrete code craft guidance with examples. */
|
|
138
|
+
export function generateCodeCraftGuidance() {
|
|
139
|
+
return `## Code Craft
|
|
140
|
+
|
|
141
|
+
Use these implementation standards while you write code:
|
|
142
|
+
|
|
143
|
+
1. **Extract repeated literals to named constants**. Use your project's duplicate-string threshold (configured in \`eslint.config.mjs\`) and extract meaningful numbers.
|
|
144
|
+
\`\`\`ts
|
|
145
|
+
// Before
|
|
146
|
+
if (status === 'in_progress') notify('in_progress');
|
|
147
|
+
if (nextStatus === 'in_progress') log('in_progress');
|
|
148
|
+
if (prevStatus === 'in_progress') audit('in_progress');
|
|
149
|
+
|
|
150
|
+
// After
|
|
151
|
+
const STATUS_IN_PROGRESS = 'in_progress';
|
|
152
|
+
if (status === STATUS_IN_PROGRESS) notify(STATUS_IN_PROGRESS);
|
|
153
|
+
\`\`\`
|
|
154
|
+
|
|
155
|
+
2. **Write error messages with context**: what failed, why, and next action.
|
|
156
|
+
\`\`\`ts
|
|
157
|
+
// Before
|
|
158
|
+
die('failed');
|
|
159
|
+
|
|
160
|
+
// After
|
|
161
|
+
die('Failed to parse workspace.yaml: missing lane field. Run pnpm lane:setup to regenerate.');
|
|
162
|
+
\`\`\`
|
|
163
|
+
|
|
164
|
+
3. **Prefer existing libraries for common problems** (parsing, validation, dates, schema, paths) before custom implementations.
|
|
165
|
+
\`\`\`ts
|
|
166
|
+
// Before
|
|
167
|
+
function parseDate(input: string) { /* custom parser */ }
|
|
168
|
+
|
|
169
|
+
// After
|
|
170
|
+
import { parseISO } from 'date-fns';
|
|
171
|
+
const parsed = parseISO(input);
|
|
172
|
+
\`\`\`
|
|
173
|
+
|
|
174
|
+
4. **Use type narrowing instead of unsafe casts**.
|
|
175
|
+
\`\`\`ts
|
|
176
|
+
// Before
|
|
177
|
+
const id = (payload as { id: string }).id;
|
|
178
|
+
|
|
179
|
+
// After
|
|
180
|
+
if (payload && typeof payload === 'object' && 'id' in payload) {
|
|
181
|
+
const id = String(payload.id);
|
|
182
|
+
}
|
|
183
|
+
\`\`\`
|
|
184
|
+
|
|
185
|
+
5. **Extract duplicated logic when it appears at your project's extraction threshold**.
|
|
186
|
+
\`\`\`ts
|
|
187
|
+
// Before: same branch checks repeated in multiple files
|
|
188
|
+
if (mode === 'branch-pr') { /* ... */ }
|
|
189
|
+
|
|
190
|
+
// After
|
|
191
|
+
function isBranchPrMode(mode: string): boolean {
|
|
192
|
+
return mode === 'branch-pr';
|
|
193
|
+
}
|
|
194
|
+
\`\`\`
|
|
195
|
+
|
|
196
|
+
6. **Keep functions focused**. One function should do one clear job.
|
|
197
|
+
\`\`\`ts
|
|
198
|
+
// Before
|
|
199
|
+
function completeWuAndNotifyAndWriteAudit() { /* many responsibilities */ }
|
|
200
|
+
|
|
201
|
+
// After
|
|
202
|
+
function completeWu() { /* completion only */ }
|
|
203
|
+
function notifyCompletion() { /* notification only */ }
|
|
204
|
+
\`\`\`
|
|
205
|
+
|
|
206
|
+
7. **Inject infrastructure dependencies into application logic** instead of importing them directly.
|
|
207
|
+
\`\`\`ts
|
|
208
|
+
// Before
|
|
209
|
+
import { readFileSync } from 'node:fs';
|
|
210
|
+
function loadSpec(path: string) { return readFileSync(path, 'utf8'); }
|
|
211
|
+
|
|
212
|
+
// After
|
|
213
|
+
function loadSpec(path: string, readText: (p: string) => string) {
|
|
214
|
+
return readText(path);
|
|
215
|
+
}
|
|
216
|
+
\`\`\``;
|
|
217
|
+
}
|
|
218
|
+
/** WU-2292: Require reading and impact analysis before editing. */
|
|
219
|
+
export function generateReadBeforeWriteDiscipline() {
|
|
220
|
+
return `## Read Before Write
|
|
221
|
+
|
|
222
|
+
Understand the change before touching code:
|
|
223
|
+
|
|
224
|
+
1. Read each file you plan to edit from top to bottom.
|
|
225
|
+
2. Read adjacent files that define related types, helpers, and boundaries.
|
|
226
|
+
3. Find callers and dependents (for example with \`rg\`) before changing behavior.
|
|
227
|
+
4. Confirm acceptance criteria and code_paths still match your intended scope.
|
|
228
|
+
5. Never edit a file you have not read first.
|
|
229
|
+
6. If you cannot determine impact from reading alone, ask before proceeding.`;
|
|
230
|
+
}
|
|
231
|
+
/** WU-2292: Force a self-review pass before completion. */
|
|
232
|
+
export function generateSelfReviewDirective(id) {
|
|
233
|
+
return `## Self-Review Before Completion
|
|
234
|
+
|
|
235
|
+
Before you finish ${id}, review your own diff against gate and craft checks:
|
|
236
|
+
|
|
237
|
+
1. [GATE] Repeated strings at your project threshold are extracted to named constants.
|
|
238
|
+
2. [STANDARD] Semantic numbers use named constants (except simple loop indexes and 0/1 guards).
|
|
239
|
+
3. [STANDARD] Error messages explain what failed, why, and how to fix.
|
|
240
|
+
4. [STANDARD] No \`as\` casts without preceding type narrowing or guards.
|
|
241
|
+
5. [GATE] No \`TODO\` or \`FIXME\` markers in production changes.
|
|
242
|
+
6. [GATE] Architecture boundaries are respected (no forbidden cross-layer imports).
|
|
243
|
+
|
|
244
|
+
Fix any failed checks before running completion commands.`;
|
|
245
|
+
}
|
|
137
246
|
/** WU-1279: Generate the Mandatory Standards section based on resolved policy */
|
|
138
247
|
export function generateMandatoryStandards(policy) {
|
|
139
248
|
const lines = ['## Mandatory Standards', ''];
|
|
@@ -158,9 +267,8 @@ export function generateMandatoryStandards(policy) {
|
|
|
158
267
|
}
|
|
159
268
|
// For architecture: 'none', we don't add any architecture guidance
|
|
160
269
|
// Always include these standards
|
|
161
|
-
lines.push('- **
|
|
162
|
-
lines.push('- **
|
|
163
|
-
lines.push('- **Code Quality**: No string literals, no magic numbers, no brittle regexes when libraries exist');
|
|
270
|
+
lines.push('- **Code Craft**: See Code Craft section below for constants, DRY, SRP, DI, error handling, and type safety rules with examples');
|
|
271
|
+
lines.push('- **KISS/YAGNI**: Solve the stated problem with the minimum code. Do not add features, parameters, abstractions, or configurability beyond what acceptance criteria require');
|
|
164
272
|
lines.push('- **Worktree Discipline**: ALWAYS use `pnpm wu:claim` to create worktrees (never `git worktree add` directly). Work ONLY in the worktree, never edit main');
|
|
165
273
|
lines.push('- **Documentation**: Update tooling docs if changing tools. Keep docs in sync with code');
|
|
166
274
|
lines.push('- **Sub-agents**: Use Explore agent for codebase investigation. Activate mandatory agents as configured for your project');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawn-guidance-generators.js","sourceRoot":"","sources":["../src/spawn-guidance-generators.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"spawn-guidance-generators.js","sourceRoot":"","sources":["../src/spawn-guidance-generators.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawn-task-builder.d.ts","sourceRoot":"","sources":["../src/spawn-task-builder.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAGpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"spawn-task-builder.d.ts","sourceRoot":"","sources":["../src/spawn-task-builder.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAGpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAezD,OAAO,EACL,KAAK,KAAK,EAaX,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,KAAK,aAAa,EAQnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAMlE;;GAEG;AACH,UAAU,4BAA4B;IACpC,2CAA2C;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAyBD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,wEAAwE;IACxE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6EAA6E;IAC7E,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAMD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,KAAK,EACV,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,aAAa,EACvB,OAAO,GAAE,YAAiB,GACzB,MAAM,CA6NR;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,KAAK,EACV,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,aAAa,EACvB,OAAO,GAAE,YAAiB,GACzB,MAAM,CAyIR;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAMrE;AAED;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAC3C,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,4BAAiC,GACzC,MAAM,CAiBR"}
|
|
@@ -22,7 +22,7 @@ import { DIRECTORIES } from './wu-constants.js';
|
|
|
22
22
|
import { generateExecutionModeSection, generateThinkToolGuidance } from './wu-spawn-helpers.js';
|
|
23
23
|
import { generateClientSkillsGuidance, generateSkillsSelectionSection } from './wu-spawn-skills.js';
|
|
24
24
|
import { TRUNCATION_WARNING_BANNER } from './spawn-template-assembler.js';
|
|
25
|
-
import { generatePolicyBasedTestGuidance, generateDesignContextSection, generateMandatoryStandards, generateEnforcementSummary, } from './spawn-guidance-generators.js';
|
|
25
|
+
import { generatePolicyBasedTestGuidance, generateDesignContextSection, generateMandatoryStandards, generateEnforcementSummary, generateCodeCraftGuidance, generateReadBeforeWriteDiscipline, generateSelfReviewDirective, } from './spawn-guidance-generators.js';
|
|
26
26
|
import { generateConstraints, generateCodexConstraints } from './spawn-constraints-generator.js';
|
|
27
27
|
import { generateEffortScalingRules, generateParallelToolCallGuidance, generateIterativeSearchHeuristics, generateTokenBudgetAwareness, generateCompletionFormat, generateAgentCoordinationSection, generateQuickFixCommands, generateLaneSelectionSection, generateWorktreePathGuidance, generateBugDiscoverySection, generateLaneGuidance, generateActionSection, } from './spawn-agent-guidance.js';
|
|
28
28
|
import { formatAcceptance, generateImplementationContext, detectMandatoryAgents, generateMandatoryAgentSection, generatePreamble, generateClientBlocksSection, generateInvariantsPriorArtSection, } from './spawn-prompt-helpers.js';
|
|
@@ -80,6 +80,8 @@ export function generateTaskInvocation(doc, id, strategy, options = {}) {
|
|
|
80
80
|
const enforcementSummary = generateEnforcementSummary(policy);
|
|
81
81
|
// WU-1279: Generate mandatory standards based on resolved policy
|
|
82
82
|
const mandatoryStandards = generateMandatoryStandards(policy);
|
|
83
|
+
const codeCraftGuidance = generateCodeCraftGuidance();
|
|
84
|
+
const readBeforeWrite = generateReadBeforeWriteDiscipline();
|
|
83
85
|
const clientSkillsGuidance = generateClientSkillsGuidance(clientContext);
|
|
84
86
|
const skillsSection = generateSkillsSelectionSection(doc, config, clientContext?.name) +
|
|
85
87
|
(clientSkillsGuidance ? `\n${clientSkillsGuidance}` : '');
|
|
@@ -88,6 +90,7 @@ export function generateTaskInvocation(doc, id, strategy, options = {}) {
|
|
|
88
90
|
const laneGuidance = generateLaneGuidance(doc.lane);
|
|
89
91
|
const bugDiscoverySection = generateBugDiscoverySection(id);
|
|
90
92
|
const action = generateActionSection(doc, id, config);
|
|
93
|
+
const selfReviewDirective = generateSelfReviewDirective(id);
|
|
91
94
|
// WU-1900: Generate constraints with conditional TDD CHECKPOINT
|
|
92
95
|
const shouldIncludeTddCheckpoint = classification.domain !== 'ui' && policy.testing !== 'none';
|
|
93
96
|
const constraints = generateConstraints(id, {
|
|
@@ -168,6 +171,14 @@ ${mandatoryStandards}
|
|
|
168
171
|
|
|
169
172
|
${enforcementSummary}
|
|
170
173
|
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
${codeCraftGuidance}
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
${readBeforeWrite}
|
|
181
|
+
|
|
171
182
|
${designContextSection ? `---\n\n${designContextSection}\n\n` : ''}${clientBlocks ? `---\n\n${clientBlocks}\n\n` : ''}${worktreeGuidance ? `---\n\n${worktreeGuidance}\n\n` : ''}---
|
|
172
183
|
|
|
173
184
|
${bugDiscoverySection}
|
|
@@ -210,6 +221,10 @@ ${laneGuidance}${laneGuidance ? '\n\n---\n\n' : ''}## Action
|
|
|
210
221
|
|
|
211
222
|
${action}
|
|
212
223
|
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
${selfReviewDirective}
|
|
227
|
+
|
|
213
228
|
${constraints}`;
|
|
214
229
|
// Escape special characters for XML output
|
|
215
230
|
const escapedPrompt = taskPrompt
|
|
@@ -252,6 +267,13 @@ export function generateCodexPrompt(doc, id, strategy, options = {}) {
|
|
|
252
267
|
const implementationContext = generateImplementationContext(doc);
|
|
253
268
|
const clientContext = options.client;
|
|
254
269
|
const config = options.config || getConfig();
|
|
270
|
+
const classificationConfig = config?.methodology?.work_classification;
|
|
271
|
+
const classification = classifyWork({
|
|
272
|
+
code_paths: doc.code_paths,
|
|
273
|
+
lane: doc.lane,
|
|
274
|
+
type: doc.type,
|
|
275
|
+
description: doc.description,
|
|
276
|
+
}, classificationConfig);
|
|
255
277
|
const worktreesDirSegment = resolveWorktreesDirSegment(config);
|
|
256
278
|
const worktreePathHint = resolveWorktreePathHint(doc, id, config);
|
|
257
279
|
const mainRef = `${config.git.defaultRemote}/${config.git.mainBranch}`;
|
|
@@ -266,11 +288,17 @@ export function generateCodexPrompt(doc, id, strategy, options = {}) {
|
|
|
266
288
|
const clientBlocks = generateClientBlocksSection(clientContext);
|
|
267
289
|
// WU-1290: Resolve policy and use policy-based test guidance
|
|
268
290
|
const policy = resolvePolicy(config);
|
|
269
|
-
const testGuidance = generatePolicyBasedTestGuidance(doc.type || 'feature', policy
|
|
291
|
+
const testGuidance = generatePolicyBasedTestGuidance(doc.type || 'feature', policy, {
|
|
292
|
+
testMethodologyHint: classification.testMethodologyHint,
|
|
293
|
+
});
|
|
270
294
|
// WU-1290: Generate enforcement summary from resolved policy
|
|
271
295
|
const enforcementSummary = generateEnforcementSummary(policy);
|
|
272
296
|
// WU-1290: Generate mandatory standards based on resolved policy
|
|
273
297
|
const mandatoryStandards = generateMandatoryStandards(policy);
|
|
298
|
+
const codeCraftGuidance = generateCodeCraftGuidance();
|
|
299
|
+
const readBeforeWrite = generateReadBeforeWriteDiscipline();
|
|
300
|
+
const selfReviewDirective = generateSelfReviewDirective(id);
|
|
301
|
+
const designContextSection = generateDesignContextSection(classification);
|
|
274
302
|
const executionModeSection = generateExecutionModeSection(options);
|
|
275
303
|
const thinkToolGuidance = generateThinkToolGuidance(options);
|
|
276
304
|
const thinkingSections = [executionModeSection, thinkToolGuidance]
|
|
@@ -321,6 +349,14 @@ ${enforcementSummary}
|
|
|
321
349
|
|
|
322
350
|
---
|
|
323
351
|
|
|
352
|
+
${codeCraftGuidance}
|
|
353
|
+
|
|
354
|
+
---
|
|
355
|
+
|
|
356
|
+
${readBeforeWrite}
|
|
357
|
+
|
|
358
|
+
${designContextSection ? `---\n\n${designContextSection}\n\n` : ''}---
|
|
359
|
+
|
|
324
360
|
${skillsSection}
|
|
325
361
|
|
|
326
362
|
---
|
|
@@ -342,7 +378,11 @@ ${mandatorySection}${implementationContext ? `${implementationContext}\n\n---\n\
|
|
|
342
378
|
|
|
343
379
|
---
|
|
344
380
|
|
|
345
|
-
${laneGuidance}${laneGuidance ? '\n\n---\n\n' : ''}${
|
|
381
|
+
${laneGuidance}${laneGuidance ? '\n\n---\n\n' : ''}${selfReviewDirective}
|
|
382
|
+
|
|
383
|
+
---
|
|
384
|
+
|
|
385
|
+
${constraints}
|
|
346
386
|
`;
|
|
347
387
|
}
|
|
348
388
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawn-task-builder.js","sourceRoot":"","sources":["../src/spawn-task-builder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spawn-task-builder.js","sourceRoot":"","sources":["../src/spawn-task-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { EnvVarName } from './wu-context-constants.js';
|
|
2
|
+
export declare const STARTUP_ENV_POLICY: {
|
|
3
|
+
readonly ERROR: "error";
|
|
4
|
+
readonly WARN: "warn";
|
|
5
|
+
};
|
|
6
|
+
export type StartupEnvPolicy = (typeof STARTUP_ENV_POLICY)[keyof typeof STARTUP_ENV_POLICY];
|
|
7
|
+
interface EnvParseSuccess<T> {
|
|
8
|
+
valid: true;
|
|
9
|
+
value: T;
|
|
10
|
+
}
|
|
11
|
+
interface EnvParseFailure {
|
|
12
|
+
valid: false;
|
|
13
|
+
expected: string;
|
|
14
|
+
}
|
|
15
|
+
type EnvParseResult<T> = EnvParseSuccess<T> | EnvParseFailure;
|
|
16
|
+
export type EnvValueParser<T> = (rawValue: string) => EnvParseResult<T>;
|
|
17
|
+
export interface StartupEnvSchemaField<T> {
|
|
18
|
+
envVar: EnvVarName;
|
|
19
|
+
required?: boolean;
|
|
20
|
+
defaultValue?: T;
|
|
21
|
+
parse: EnvValueParser<T>;
|
|
22
|
+
}
|
|
23
|
+
export type StartupEnvSchema = Record<string, StartupEnvSchemaField<unknown>>;
|
|
24
|
+
export type StartupEnvValues<TSchema extends StartupEnvSchema> = {
|
|
25
|
+
[Key in keyof TSchema]: TSchema[Key] extends StartupEnvSchemaField<infer TValue> ? TValue : never;
|
|
26
|
+
};
|
|
27
|
+
export interface ValidateStartupEnvSchemaOptions<TSchema extends StartupEnvSchema> {
|
|
28
|
+
context: string;
|
|
29
|
+
env: NodeJS.ProcessEnv;
|
|
30
|
+
schema: TSchema;
|
|
31
|
+
policy?: StartupEnvPolicy;
|
|
32
|
+
onWarning?: (diagnosticMessage: string) => void;
|
|
33
|
+
}
|
|
34
|
+
export declare function validateStartupEnvSchema<TSchema extends StartupEnvSchema>(options: ValidateStartupEnvSchemaOptions<TSchema>): StartupEnvValues<TSchema>;
|
|
35
|
+
export declare function parseNonEmptyEnvValue(expectedDescription?: string): EnvValueParser<string>;
|
|
36
|
+
export declare function parseEnumEnvValue<TAllowed extends readonly string[]>(allowedValues: TAllowed): EnvValueParser<TAllowed[number]>;
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=startup-env-validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startup-env-validation.d.ts","sourceRoot":"","sources":["../src/startup-env-validation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAQ5D,eAAO,MAAM,kBAAkB;;;CAGrB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC;AAE5F,UAAU,eAAe,CAAC,CAAC;IACzB,KAAK,EAAE,IAAI,CAAC;IACZ,KAAK,EAAE,CAAC,CAAC;CACV;AAED,UAAU,eAAe;IACvB,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,KAAK,cAAc,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC;AAE9D,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC;AAExE,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,CAAC,CAAC;IACjB,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;CAC1B;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;AAE9E,MAAM,MAAM,gBAAgB,CAAC,OAAO,SAAS,gBAAgB,IAAI;KAC9D,GAAG,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,qBAAqB,CAAC,MAAM,MAAM,CAAC,GAAG,MAAM,GAAG,KAAK;CAClG,CAAC;AASF,MAAM,WAAW,+BAA+B,CAAC,OAAO,SAAS,gBAAgB;IAC/E,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,SAAS,CAAC,EAAE,CAAC,iBAAiB,EAAE,MAAM,KAAK,IAAI,CAAC;CACjD;AA+BD,wBAAgB,wBAAwB,CAAC,OAAO,SAAS,gBAAgB,EACvE,OAAO,EAAE,+BAA+B,CAAC,OAAO,CAAC,GAChD,gBAAgB,CAAC,OAAO,CAAC,CAiD3B;AAED,wBAAgB,qBAAqB,CACnC,mBAAmB,SAAsB,GACxC,cAAc,CAAC,MAAM,CAAC,CAexB;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,SAAS,SAAS,MAAM,EAAE,EAClE,aAAa,EAAE,QAAQ,GACtB,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAkBlC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
// Copyright (c) 2026 Hellmai Ltd
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
import { createError, ErrorCodes } from './error-handler.js';
|
|
4
|
+
const ISSUE_PREFIX = '- ';
|
|
5
|
+
const NEWLINE = '\n';
|
|
6
|
+
const RECEIVED_PREFIX = 'Received: ';
|
|
7
|
+
const MISSING_MESSAGE = 'Missing required value.';
|
|
8
|
+
const INVALID_MESSAGE = 'Invalid value.';
|
|
9
|
+
export const STARTUP_ENV_POLICY = {
|
|
10
|
+
ERROR: 'error',
|
|
11
|
+
WARN: 'warn',
|
|
12
|
+
};
|
|
13
|
+
function formatIssueLine(issue) {
|
|
14
|
+
const fragments = [`${ISSUE_PREFIX}${issue.envVar}: ${issue.message}`];
|
|
15
|
+
if (issue.expected) {
|
|
16
|
+
fragments.push(`Expected ${issue.expected}.`);
|
|
17
|
+
}
|
|
18
|
+
if (issue.received !== undefined) {
|
|
19
|
+
fragments.push(`${RECEIVED_PREFIX}"${issue.received}".`);
|
|
20
|
+
}
|
|
21
|
+
return fragments.join(' ');
|
|
22
|
+
}
|
|
23
|
+
function formatDiagnosticMessage(context, issues) {
|
|
24
|
+
const issueLines = issues.map(formatIssueLine).join(NEWLINE);
|
|
25
|
+
return `${context} environment validation failed.${NEWLINE}${issueLines}`;
|
|
26
|
+
}
|
|
27
|
+
function assignFallbackValue(values, fieldName, field) {
|
|
28
|
+
if (field.defaultValue !== undefined) {
|
|
29
|
+
values[fieldName] = field.defaultValue;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export function validateStartupEnvSchema(options) {
|
|
33
|
+
const policy = options.policy ?? STARTUP_ENV_POLICY.ERROR;
|
|
34
|
+
const values = {};
|
|
35
|
+
const issues = [];
|
|
36
|
+
for (const [fieldName, field] of Object.entries(options.schema)) {
|
|
37
|
+
const rawValue = options.env[field.envVar];
|
|
38
|
+
if (rawValue === undefined) {
|
|
39
|
+
if (field.required) {
|
|
40
|
+
issues.push({
|
|
41
|
+
envVar: field.envVar,
|
|
42
|
+
message: MISSING_MESSAGE,
|
|
43
|
+
expected: 'a non-empty value',
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
assignFallbackValue(values, fieldName, field);
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
const parsed = field.parse(rawValue);
|
|
50
|
+
if (parsed.valid) {
|
|
51
|
+
values[fieldName] = parsed.value;
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
issues.push({
|
|
55
|
+
envVar: field.envVar,
|
|
56
|
+
message: INVALID_MESSAGE,
|
|
57
|
+
expected: parsed.expected,
|
|
58
|
+
received: rawValue,
|
|
59
|
+
});
|
|
60
|
+
assignFallbackValue(values, fieldName, field);
|
|
61
|
+
}
|
|
62
|
+
if (issues.length === 0) {
|
|
63
|
+
return values;
|
|
64
|
+
}
|
|
65
|
+
const diagnosticMessage = formatDiagnosticMessage(options.context, issues);
|
|
66
|
+
if (policy === STARTUP_ENV_POLICY.WARN) {
|
|
67
|
+
options.onWarning?.(diagnosticMessage);
|
|
68
|
+
return values;
|
|
69
|
+
}
|
|
70
|
+
throw createError(ErrorCodes.CONFIG_ERROR, diagnosticMessage, {
|
|
71
|
+
context: options.context,
|
|
72
|
+
issues,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
export function parseNonEmptyEnvValue(expectedDescription = 'a non-empty value') {
|
|
76
|
+
return (rawValue) => {
|
|
77
|
+
const trimmedValue = rawValue.trim();
|
|
78
|
+
if (trimmedValue.length === 0) {
|
|
79
|
+
return {
|
|
80
|
+
valid: false,
|
|
81
|
+
expected: expectedDescription,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
valid: true,
|
|
86
|
+
value: trimmedValue,
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
export function parseEnumEnvValue(allowedValues) {
|
|
91
|
+
const allowedSet = new Set(allowedValues);
|
|
92
|
+
const expected = `one of: ${allowedValues.join(', ')}`;
|
|
93
|
+
return (rawValue) => {
|
|
94
|
+
const normalizedValue = rawValue.trim();
|
|
95
|
+
if (allowedSet.has(normalizedValue)) {
|
|
96
|
+
return {
|
|
97
|
+
valid: true,
|
|
98
|
+
value: normalizedValue,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
valid: false,
|
|
103
|
+
expected,
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=startup-env-validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startup-env-validation.js","sourceRoot":"","sources":["../src/startup-env-validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -106,6 +106,10 @@ export interface StateDoctorDeps {
|
|
|
106
106
|
emitEvent?: (event: EmitEventPayload) => Promise<void>;
|
|
107
107
|
/** List WU IDs referenced in backlog.md (WU-2229) */
|
|
108
108
|
listBacklogRefs?: () => Promise<string[]>;
|
|
109
|
+
/** List WU IDs in status.md "In Progress" section (WU-2285) */
|
|
110
|
+
listInProgressStatusRefs?: () => Promise<string[]>;
|
|
111
|
+
/** List WU IDs in backlog.md "In Progress" section (WU-2285) */
|
|
112
|
+
listInProgressBacklogRefs?: () => Promise<string[]>;
|
|
109
113
|
}
|
|
110
114
|
/**
|
|
111
115
|
* A detected issue in the state
|
|
@@ -127,6 +131,8 @@ export interface DiagnosisIssue {
|
|
|
127
131
|
canAutoFix: boolean;
|
|
128
132
|
/** Status mismatch details for fixing (WU-1420) */
|
|
129
133
|
statusMismatch?: StatusMismatchDetails;
|
|
134
|
+
/** Source document metadata for stale in-progress references (WU-2285) */
|
|
135
|
+
staleReferenceSource?: 'status_in_progress' | 'backlog_in_progress';
|
|
130
136
|
}
|
|
131
137
|
/**
|
|
132
138
|
* A fix error that occurred during auto-repair
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-doctor-core.d.ts","sourceRoot":"","sources":["../src/state-doctor-core.ts"],"names":[],"mappings":"AA0BA;;GAEG;AACH,eAAO,MAAM,WAAW;IACtB,2CAA2C;;IAE3C,gDAAgD;;IAEhD,+CAA+C;;IAE/C,uEAAuE;;IAEvE,2EAA2E;;CAEnE,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,cAAc;IACzB,+CAA+C;;IAE/C,sDAAsD;;IAEtD,6BAA6B;;CAErB,CAAC;
|
|
1
|
+
{"version":3,"file":"state-doctor-core.d.ts","sourceRoot":"","sources":["../src/state-doctor-core.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,6 +64,12 @@ const STATUS_MISMATCH_SUGGESTION = {
|
|
|
64
64
|
AUTO_FIX: 'Emit corrective event using: pnpm state:doctor --fix',
|
|
65
65
|
MANUAL_FIX: 'Manual reconciliation required: state transition is not representable via corrective events',
|
|
66
66
|
};
|
|
67
|
+
const STALE_IN_PROGRESS_REFERENCE_SUGGESTION = 'Regenerate backlog.md and status.md from state store using: pnpm state:doctor --fix';
|
|
68
|
+
const NON_ACTIVE_STATUSES = new Set([
|
|
69
|
+
WU_STATUS.DONE,
|
|
70
|
+
WU_STATUS.CANCELLED,
|
|
71
|
+
WU_STATUS.SUPERSEDED,
|
|
72
|
+
]);
|
|
67
73
|
/**
|
|
68
74
|
* Derive WU status from events (WU-1420)
|
|
69
75
|
*
|
|
@@ -242,6 +248,30 @@ function detectOrphanBacklogRefs(backlogRefs, wuIds) {
|
|
|
242
248
|
}
|
|
243
249
|
return issues;
|
|
244
250
|
}
|
|
251
|
+
function detectStaleInProgressRefs(refs, wuById, source) {
|
|
252
|
+
const issues = [];
|
|
253
|
+
for (const wuId of refs) {
|
|
254
|
+
const wu = wuById.get(wuId);
|
|
255
|
+
if (!wu) {
|
|
256
|
+
continue;
|
|
257
|
+
}
|
|
258
|
+
const normalizedStatus = wu.status.trim().toLowerCase();
|
|
259
|
+
if (!NON_ACTIVE_STATUSES.has(normalizedStatus)) {
|
|
260
|
+
continue;
|
|
261
|
+
}
|
|
262
|
+
const sourceLabel = source === 'status_in_progress' ? 'status.md' : 'backlog.md';
|
|
263
|
+
issues.push({
|
|
264
|
+
type: ISSUE_TYPES.STATUS_MISMATCH,
|
|
265
|
+
severity: ISSUE_SEVERITY.WARNING,
|
|
266
|
+
wuId,
|
|
267
|
+
description: `WU ${wuId} is listed in ${sourceLabel} In Progress but canonical YAML status is '${normalizedStatus}'`,
|
|
268
|
+
suggestion: STALE_IN_PROGRESS_REFERENCE_SUGGESTION,
|
|
269
|
+
canAutoFix: false,
|
|
270
|
+
staleReferenceSource: source,
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
return issues;
|
|
274
|
+
}
|
|
245
275
|
/**
|
|
246
276
|
* Calculate summary statistics from issues
|
|
247
277
|
*/
|
|
@@ -429,11 +459,24 @@ export async function diagnoseState(_baseDir, deps, options = {}) {
|
|
|
429
459
|
// Build lookup sets
|
|
430
460
|
const wuIds = new Set(wus.map((wu) => wu.id));
|
|
431
461
|
const stampIds = new Set(stamps);
|
|
462
|
+
const wuById = new Map(wus.map((wu) => [wu.id, wu]));
|
|
432
463
|
// Detect issues
|
|
433
464
|
const orphanedWUissues = detectOrphanedWUs(wus, stampIds);
|
|
434
465
|
const danglingSignalIssues = detectDanglingSignals(signals, wuIds);
|
|
435
466
|
const brokenEventIssues = detectBrokenEvents(events, wuIds);
|
|
436
467
|
const statusMismatchIssues = detectStatusMismatches(wus, events);
|
|
468
|
+
const inProgressStatusRefs = deps.listInProgressStatusRefs
|
|
469
|
+
? await deps.listInProgressStatusRefs()
|
|
470
|
+
: [];
|
|
471
|
+
const inProgressBacklogRefs = deps.listInProgressBacklogRefs
|
|
472
|
+
? await deps.listInProgressBacklogRefs()
|
|
473
|
+
: [];
|
|
474
|
+
const staleStatusRefIssues = inProgressStatusRefs.length > 0
|
|
475
|
+
? detectStaleInProgressRefs(inProgressStatusRefs, wuById, 'status_in_progress')
|
|
476
|
+
: [];
|
|
477
|
+
const staleBacklogRefIssues = inProgressBacklogRefs.length > 0
|
|
478
|
+
? detectStaleInProgressRefs(inProgressBacklogRefs, wuById, 'backlog_in_progress')
|
|
479
|
+
: [];
|
|
437
480
|
// WU-2229: Detect orphan backlog references (optional — backward compatible)
|
|
438
481
|
const backlogRefs = deps.listBacklogRefs ? await deps.listBacklogRefs() : [];
|
|
439
482
|
const orphanBacklogRefIssues = backlogRefs.length > 0 ? detectOrphanBacklogRefs(backlogRefs, wuIds) : [];
|
|
@@ -442,6 +485,8 @@ export async function diagnoseState(_baseDir, deps, options = {}) {
|
|
|
442
485
|
...danglingSignalIssues,
|
|
443
486
|
...brokenEventIssues,
|
|
444
487
|
...statusMismatchIssues,
|
|
488
|
+
...staleStatusRefIssues,
|
|
489
|
+
...staleBacklogRefIssues,
|
|
445
490
|
...orphanBacklogRefIssues,
|
|
446
491
|
];
|
|
447
492
|
const summary = calculateSummary(issues);
|