@nathapp/nax 0.60.1 → 0.60.2
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/nax.js +12 -6
- package/package.json +1 -1
package/dist/nax.js
CHANGED
|
@@ -22705,7 +22705,7 @@ ${opts.specContent}
|
|
|
22705
22705
|
|
|
22706
22706
|
The spec above is the authoritative source for acceptance criteria.
|
|
22707
22707
|
- Each story's \`acceptanceCriteria\` array MUST contain only criteria that are explicitly stated or directly implied by the spec.
|
|
22708
|
-
- If a debater proposed criteria beyond the spec (edge cases, error handling, implementation details), place those in a separate \`suggestedCriteria\` array on the same story object.
|
|
22708
|
+
- If a debater proposed criteria beyond the spec (edge cases, error handling, implementation details), place those in a separate \`suggestedCriteria\` array on the same story object. Each element of \`suggestedCriteria\` MUST be a plain string \u2014 never an object or structured value.
|
|
22709
22709
|
- Never silently merge debater-invented criteria into \`acceptanceCriteria\`. The distinction matters: \`acceptanceCriteria\` drives automated testing; \`suggestedCriteria\` is logged for human review.
|
|
22710
22710
|
- Preserve the spec's AC wording. You may refine for clarity but must not change semantics.` : "";
|
|
22711
22711
|
const planSynthesisSuffix = `IMPORTANT: Your response must be a single valid JSON object in PRD format (with project, feature, branchName, userStories array, etc.). Do NOT wrap it in markdown fences. Output raw JSON only.${specAnchor}`;
|
|
@@ -36572,7 +36572,7 @@ var package_default;
|
|
|
36572
36572
|
var init_package = __esm(() => {
|
|
36573
36573
|
package_default = {
|
|
36574
36574
|
name: "@nathapp/nax",
|
|
36575
|
-
version: "0.60.
|
|
36575
|
+
version: "0.60.2",
|
|
36576
36576
|
description: "AI Coding Agent Orchestrator \u2014 loops until done",
|
|
36577
36577
|
type: "module",
|
|
36578
36578
|
bin: {
|
|
@@ -36652,8 +36652,8 @@ var init_version = __esm(() => {
|
|
|
36652
36652
|
NAX_VERSION = package_default.version;
|
|
36653
36653
|
NAX_COMMIT = (() => {
|
|
36654
36654
|
try {
|
|
36655
|
-
if (/^[0-9a-f]{6,10}$/.test("
|
|
36656
|
-
return "
|
|
36655
|
+
if (/^[0-9a-f]{6,10}$/.test("db851936"))
|
|
36656
|
+
return "db851936";
|
|
36657
36657
|
} catch {}
|
|
36658
36658
|
try {
|
|
36659
36659
|
const result = Bun.spawnSync(["git", "rev-parse", "--short", "HEAD"], {
|
|
@@ -72854,12 +72854,18 @@ function validateStory(raw, index, allIds) {
|
|
|
72854
72854
|
throw new Error(`[schema] story[${index}].suggestedCriteria must be an array when present`);
|
|
72855
72855
|
}
|
|
72856
72856
|
if (s.suggestedCriteria.length > 0) {
|
|
72857
|
+
const coerced = [];
|
|
72857
72858
|
for (let i = 0;i < s.suggestedCriteria.length; i++) {
|
|
72858
|
-
|
|
72859
|
+
const item = s.suggestedCriteria[i];
|
|
72860
|
+
if (typeof item === "string") {
|
|
72861
|
+
coerced.push(item);
|
|
72862
|
+
} else if (item !== null && typeof item === "object" && typeof item.criterion === "string") {
|
|
72863
|
+
coerced.push(item.criterion);
|
|
72864
|
+
} else {
|
|
72859
72865
|
throw new Error(`[schema] story[${index}].suggestedCriteria[${i}] must be a string`);
|
|
72860
72866
|
}
|
|
72861
72867
|
}
|
|
72862
|
-
suggestedCriteria =
|
|
72868
|
+
suggestedCriteria = coerced;
|
|
72863
72869
|
}
|
|
72864
72870
|
}
|
|
72865
72871
|
const routing = typeof s.routing === "object" && s.routing !== null ? s.routing : {};
|