frontend-harness 0.1.0 → 0.2.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.
Files changed (81) hide show
  1. package/AGENTS.md +17 -5
  2. package/CLAUDE.md +17 -5
  3. package/README.md +65 -11
  4. package/dist/cli/index.js +166 -11
  5. package/dist/cli/index.js.map +1 -1
  6. package/dist/runtime/builtin-skills.js +10 -1
  7. package/dist/runtime/builtin-skills.js.map +1 -1
  8. package/dist/runtime/clean.js +6 -1
  9. package/dist/runtime/clean.js.map +1 -1
  10. package/dist/runtime/command-taxonomy.js +12 -1
  11. package/dist/runtime/command-taxonomy.js.map +1 -1
  12. package/dist/runtime/common/naming.d.ts +2 -0
  13. package/dist/runtime/common/naming.js +13 -0
  14. package/dist/runtime/common/naming.js.map +1 -0
  15. package/dist/runtime/common/parsing.d.ts +11 -0
  16. package/dist/runtime/common/parsing.js +30 -0
  17. package/dist/runtime/common/parsing.js.map +1 -0
  18. package/dist/runtime/common/text.d.ts +1 -0
  19. package/dist/runtime/common/text.js +4 -0
  20. package/dist/runtime/common/text.js.map +1 -0
  21. package/dist/runtime/context.js +3 -2
  22. package/dist/runtime/context.js.map +1 -1
  23. package/dist/runtime/graph.js +1 -1
  24. package/dist/runtime/graph.js.map +1 -1
  25. package/dist/runtime/knowledge.d.ts +136 -1
  26. package/dist/runtime/knowledge.js +658 -17
  27. package/dist/runtime/knowledge.js.map +1 -1
  28. package/dist/runtime/plan/component-resolver.d.ts +8 -0
  29. package/dist/runtime/plan/component-resolver.js +350 -0
  30. package/dist/runtime/plan/component-resolver.js.map +1 -0
  31. package/dist/runtime/plan/guidance.d.ts +3 -0
  32. package/dist/runtime/plan/guidance.js +143 -0
  33. package/dist/runtime/plan/guidance.js.map +1 -0
  34. package/dist/runtime/plan/proposal.d.ts +2 -0
  35. package/dist/runtime/plan/proposal.js +251 -0
  36. package/dist/runtime/plan/proposal.js.map +1 -0
  37. package/dist/runtime/plan/workflow.d.ts +8 -0
  38. package/dist/runtime/plan/workflow.js +234 -0
  39. package/dist/runtime/plan/workflow.js.map +1 -0
  40. package/dist/runtime/plan.d.ts +4 -3
  41. package/dist/runtime/plan.js +163 -445
  42. package/dist/runtime/plan.js.map +1 -1
  43. package/dist/runtime/policy-provenance.js +30 -17
  44. package/dist/runtime/policy-provenance.js.map +1 -1
  45. package/dist/runtime/project-discovery.js +12 -4
  46. package/dist/runtime/project-discovery.js.map +1 -1
  47. package/dist/runtime/project-paths.js +5 -2
  48. package/dist/runtime/project-paths.js.map +1 -1
  49. package/dist/runtime/protocol-init.js +7 -4
  50. package/dist/runtime/protocol-init.js.map +1 -1
  51. package/dist/runtime/repair-decision.js +15 -30
  52. package/dist/runtime/repair-decision.js.map +1 -1
  53. package/dist/runtime/repair-packet.js +8 -1
  54. package/dist/runtime/repair-packet.js.map +1 -1
  55. package/dist/runtime/scaffold/vue-template.d.ts +7 -0
  56. package/dist/runtime/scaffold/vue-template.js +187 -0
  57. package/dist/runtime/scaffold/vue-template.js.map +1 -0
  58. package/dist/runtime/scaffold.d.ts +21 -0
  59. package/dist/runtime/scaffold.js +80 -0
  60. package/dist/runtime/scaffold.js.map +1 -0
  61. package/dist/runtime/skills.js +3 -3
  62. package/dist/runtime/skills.js.map +1 -1
  63. package/dist/runtime/state.d.ts +4 -2
  64. package/dist/runtime/state.js +84 -20
  65. package/dist/runtime/state.js.map +1 -1
  66. package/dist/runtime/ui-restoration.d.ts +4 -0
  67. package/dist/runtime/ui-restoration.js +38 -0
  68. package/dist/runtime/ui-restoration.js.map +1 -0
  69. package/dist/runtime/units.js +38 -2
  70. package/dist/runtime/units.js.map +1 -1
  71. package/dist/runtime/verification-commands.js +8 -4
  72. package/dist/runtime/verification-commands.js.map +1 -1
  73. package/dist/runtime/verify.js +107 -40
  74. package/dist/runtime/verify.js.map +1 -1
  75. package/dist/schemas/types.d.ts +73 -6
  76. package/dist/schemas/validation.js +21 -0
  77. package/dist/schemas/validation.js.map +1 -1
  78. package/dist/storage/json.js +6 -1
  79. package/dist/storage/json.js.map +1 -1
  80. package/docs/DIRECTION.md +1 -1
  81. package/package.json +3 -4
@@ -0,0 +1,38 @@
1
+ import { lines } from "./common/text.js";
2
+ export const UI_RESTORATION_CONSTRAINTS = [
3
+ "Treat imported MCP/Stitch/Figma/HTML output as source material, not project-ready code.",
4
+ "Normalize generated UI into project components, naming, state, routing, and styling conventions.",
5
+ "Split substantial restored screens into page orchestration, typed data fixtures, view configuration, calculations, and focused presentational components.",
6
+ "Represent mock/domain data with named object fields instead of long positional factory arguments.",
7
+ "Derive progress, summary values, badges, disabled states, and totals from source data or explicit workflow state instead of duplicating static literals.",
8
+ "Preserve PRD terminology in visible labels and record stable domain wording in project knowledge when PRD input is provided.",
9
+ "Implement expected interactions for the affected workflow, or mark unsupported interactions as explicit assumptions in the handoff evidence.",
10
+ "Use reusable design tokens for colors, spacing, layout metrics, and status semantics instead of one-off page-only constants.",
11
+ "Keep design input, PRD summary, component boundary notes, and visual verification evidence as durable project artifacts when a design source is provided.",
12
+ "Replace visible placeholder labels for icons or visual primitives with real project icons, components, or CSS shapes.",
13
+ "Cross-check visible state consistency across selected steps, progress labels, percentages, bars, badges, disabled states, and summary counts.",
14
+ "Keep generated build output such as dist/ out of lint and typecheck scopes."
15
+ ];
16
+ export const UI_RESTORATION_VERIFICATION_FOCUS = [
17
+ "typecheck",
18
+ "component behavior",
19
+ "affected interaction smoke",
20
+ "responsive rendering",
21
+ "visual regressions when UI source is provided"
22
+ ];
23
+ export const UI_RESTORATION_GUIDANCE = [
24
+ "Keep page files thin; move types, data fixtures, view configuration, calculations, and repeated sections into feature modules or focused components.",
25
+ "Use named object fixtures for domain rows; avoid long positional factory arguments in generated examples.",
26
+ "Derive summary values, progress text, percentages, bars, badges, and disabled states from the same source state.",
27
+ "Preserve PRD terminology in visible labels and capture stable domain wording in project knowledge when PRD input is available.",
28
+ "Implement or explicitly defer expected interactions for the affected workflow, such as filtering, selection, editing, navigation, dialogs, or bulk actions when applicable.",
29
+ "Use reusable design tokens for colors, spacing, status colors, and layout metrics instead of page-only literals.",
30
+ "Keep design input, PRD summary, component boundary notes, and visual verification screenshots or notes as project artifacts when a design source exists.",
31
+ "Replace visible placeholder labels for icons or visual primitives with real project icons, components, or CSS shapes.",
32
+ "Verify visible state consistency across selected steps, progress labels, percentages, bars, badges, disabled states, and summary counts.",
33
+ "Keep generated build output such as dist/ out of lint and typecheck scopes."
34
+ ];
35
+ export function renderUiRestorationChecklist() {
36
+ return lines("# UI Restoration Checklist", "", "Use this checklist when converting design files, screenshots, exported HTML, or generated UI into project code.", "", "## Required Artifacts", "", "- Save or reference the design input used for implementation.", "- Keep a concise PRD summary with domain terminology and acceptance rules when product requirements are available.", "- Record the component boundary plan before implementation.", "- Keep visual verification evidence such as screenshots, browser notes, or viewport checks.", "", "## Source Structure", "", "- Keep route/page entry files as orchestration only.", "- Put feature code under the project-standard feature/module location.", "- Split substantial screens into types, data fixtures, view configuration, calculations, and focused components when the screen has repeated sections, workflows, editable data, dialogs, or dense state.", "- Use named object fixtures for mock/domain rows instead of long positional factory arguments.", "", "## State And Interactions", "", "- Derive summary values, progress labels, percentages, progress bars, badges, disabled states, and totals from the same source state.", "- Preserve PRD wording in visible labels.", "- Implement expected interactions for the affected workflow, or document deferred interactions explicitly.", "", "## Styling", "", "- Reuse project design tokens for colors, spacing, status colors, and layout sizing.", "- Keep generated build output such as `dist/` out of lint and typecheck scopes.");
37
+ }
38
+ //# sourceMappingURL=ui-restoration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-restoration.js","sourceRoot":"","sources":["../../src/runtime/ui-restoration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,yFAAyF;IACzF,kGAAkG;IAClG,2JAA2J;IAC3J,mGAAmG;IACnG,0JAA0J;IAC1J,8HAA8H;IAC9H,8IAA8I;IAC9I,8HAA8H;IAC9H,2JAA2J;IAC3J,uHAAuH;IACvH,+IAA+I;IAC/I,6EAA6E;CACrE,CAAC;AAEX,MAAM,CAAC,MAAM,iCAAiC,GAAG;IAC/C,WAAW;IACX,oBAAoB;IACpB,4BAA4B;IAC5B,sBAAsB;IACtB,+CAA+C;CACvC,CAAC;AAEX,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,sJAAsJ;IACtJ,2GAA2G;IAC3G,kHAAkH;IAClH,gIAAgI;IAChI,6KAA6K;IAC7K,kHAAkH;IAClH,0JAA0J;IAC1J,uHAAuH;IACvH,0IAA0I;IAC1I,6EAA6E;CACrE,CAAC;AAEX,MAAM,UAAU,4BAA4B;IAC1C,OAAO,KAAK,CACV,4BAA4B,EAC5B,EAAE,EACF,iHAAiH,EACjH,EAAE,EACF,uBAAuB,EACvB,EAAE,EACF,+DAA+D,EAC/D,oHAAoH,EACpH,6DAA6D,EAC7D,6FAA6F,EAC7F,EAAE,EACF,qBAAqB,EACrB,EAAE,EACF,sDAAsD,EACtD,wEAAwE,EACxE,2MAA2M,EAC3M,gGAAgG,EAChG,EAAE,EACF,2BAA2B,EAC3B,EAAE,EACF,uIAAuI,EACvI,2CAA2C,EAC3C,4GAA4G,EAC5G,EAAE,EACF,YAAY,EACZ,EAAE,EACF,sFAAsF,EACtF,iFAAiF,CAClF,CAAC;AACJ,CAAC"}
@@ -7,7 +7,9 @@ const policyVerificationNames = [
7
7
  "regression test",
8
8
  "integration test or API mock",
9
9
  "affected regression test",
10
- "knowledge review"
10
+ "knowledge review",
11
+ "documentation review",
12
+ "review findings"
11
13
  ];
12
14
  export function checkExecutionUnits(projectRoot) {
13
15
  const artifactPath = relativeHarnessPath("execution-units", "latest.json");
@@ -57,6 +59,7 @@ export function checkExecutionUnits(projectRoot) {
57
59
  }
58
60
  validateUnit(unit, index, ids, knownVerificationNames, errors);
59
61
  }
62
+ validateDependencyCycles(units, errors);
60
63
  return {
61
64
  status: errors.length > 0 ? "failed" : "passed",
62
65
  artifactPath,
@@ -66,6 +69,39 @@ export function checkExecutionUnits(projectRoot) {
66
69
  warnings
67
70
  };
68
71
  }
72
+ function validateDependencyCycles(units, errors) {
73
+ const graph = new Map();
74
+ for (const unit of units) {
75
+ if (!isRecord(unit) || typeof unit["id"] !== "string" || !Array.isArray(unit["dependsOn"])) {
76
+ continue;
77
+ }
78
+ graph.set(unit["id"], unit["dependsOn"].filter((dependency) => typeof dependency === "string"));
79
+ }
80
+ const visiting = new Set();
81
+ const visited = new Set();
82
+ function visit(id, pathStack) {
83
+ if (visited.has(id)) {
84
+ return;
85
+ }
86
+ if (visiting.has(id)) {
87
+ const cycleStart = pathStack.indexOf(id);
88
+ const cycle = [...pathStack.slice(Math.max(0, cycleStart)), id];
89
+ errors.push(`Execution unit dependency cycle detected: ${cycle.join(" -> ")}.`);
90
+ return;
91
+ }
92
+ visiting.add(id);
93
+ for (const dependency of graph.get(id) ?? []) {
94
+ if (graph.has(dependency)) {
95
+ visit(dependency, [...pathStack, dependency]);
96
+ }
97
+ }
98
+ visiting.delete(id);
99
+ visited.add(id);
100
+ }
101
+ for (const id of graph.keys()) {
102
+ visit(id, [id]);
103
+ }
104
+ }
69
105
  function readArtifact(fullPath, errors) {
70
106
  try {
71
107
  return JSON.parse(fs.readFileSync(fullPath, "utf8"));
@@ -173,7 +209,7 @@ function isProjectRelativeSourcePath(file) {
173
209
  return false;
174
210
  }
175
211
  const firstSegment = normalized.split("/")[0];
176
- return firstSegment !== ".frontend-harness" && firstSegment !== ".omx";
212
+ return firstSegment !== ".frontend-harness";
177
213
  }
178
214
  function isRecord(value) {
179
215
  return typeof value === "object" && value !== null;
@@ -1 +1 @@
1
- {"version":3,"file":"units.js","sourceRoot":"","sources":["../../src/runtime/units.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"units.js","sourceRoot":"","sources":["../../src/runtime/units.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import fs from "node:fs";
2
2
  import path from "node:path";
3
3
  import { harnessPath } from "../storage/paths.js";
4
4
  import { readJson } from "../storage/json.js";
5
+ import { isRecord } from "./common/parsing.js";
5
6
  export const defaultVerificationCommandNames = ["typecheck", "test", "build"];
6
7
  export function discoverVerificationCommands(projectRoot, overrides = {}) {
7
8
  const config = readJson(harnessPath(projectRoot, "config.json")) ?? {};
@@ -77,13 +78,16 @@ function readPackageScripts(projectRoot) {
77
78
  if (!fs.existsSync(packageJsonPath)) {
78
79
  return {};
79
80
  }
80
- const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf8"));
81
+ let packageJson;
82
+ try {
83
+ packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf8"));
84
+ }
85
+ catch {
86
+ return {};
87
+ }
81
88
  return packageJson.scripts ?? {};
82
89
  }
83
90
  function isValidCommandName(value) {
84
91
  return /^[a-zA-Z0-9][a-zA-Z0-9:_-]{0,79}$/.test(value);
85
92
  }
86
- function isRecord(value) {
87
- return typeof value === "object" && value !== null;
88
- }
89
93
  //# sourceMappingURL=verification-commands.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"verification-commands.js","sourceRoot":"","sources":["../../src/runtime/verification-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verification-commands.js","sourceRoot":"","sources":["../../src/runtime/verification-commands.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ import { ensureDir, readJson, writeJson, writeText } from "../storage/json.js";
7
7
  import { updateVerificationState } from "./state.js";
8
8
  import { discoverVerificationCommands } from "./verification-commands.js";
9
9
  import { createRepairPacket } from "./repair-packet.js";
10
+ const MAX_NODE_E_SCRIPT_LENGTH = 200;
10
11
  export function runVerification(projectRoot, options) {
11
12
  const commands = resolveCommands(projectRoot, options);
12
13
  const startedFromFailed = readPreviousStatus(projectRoot) === "failed";
@@ -75,7 +76,8 @@ function runCommand(projectRoot, name, source, command) {
75
76
  "## stdout",
76
77
  result.stdout ?? "",
77
78
  "## stderr",
78
- result.stderr ?? ""
79
+ result.stderr ?? "",
80
+ result.error ? `\n## spawn error\n${result.error.message}` : ""
79
81
  ].join("\n");
80
82
  writeText(logPath, output);
81
83
  const commandLaunchError = result.error
@@ -103,53 +105,72 @@ function runCommand(projectRoot, name, source, command) {
103
105
  };
104
106
  }
105
107
  function spawnVerificationCommand(projectRoot, command) {
106
- const packageScript = resolvePackageScript(projectRoot, command);
107
- if (packageScript) {
108
- return spawnVerificationCommand(projectRoot, packageScript);
109
- }
110
- if (process.platform === "win32") {
111
- const nodeCommand = parseUnquotedWindowsNodeCommand(command);
112
- if (nodeCommand) {
113
- return spawnSync(nodeCommand.executable, nodeCommand.args, {
108
+ const npmScript = parseNpmRunCommand(command);
109
+ if (npmScript) {
110
+ const packageScript = readPackageScript(projectRoot, npmScript);
111
+ const parsedPackageScript = packageScript ? parseCommand(packageScript) : null;
112
+ if (parsedPackageScript && path.isAbsolute(parsedPackageScript.executable)) {
113
+ return spawnSync(parsedPackageScript.executable, parsedPackageScript.args, {
114
114
  cwd: projectRoot,
115
- shell: false,
116
115
  encoding: "utf8"
117
116
  });
118
117
  }
118
+ const npmCommand = resolveNpmCommand();
119
+ return spawnSync(npmCommand.executable, [...npmCommand.args, "run", npmScript], {
120
+ cwd: projectRoot,
121
+ encoding: "utf8"
122
+ });
119
123
  }
120
- return spawnSync(command, {
124
+ const parsedCommand = parseCommand(command);
125
+ if (!parsedCommand) {
126
+ return {
127
+ status: null,
128
+ signal: null,
129
+ output: [null, "", "Verification command contains unsupported shell syntax."],
130
+ pid: 0,
131
+ stdout: "",
132
+ stderr: "Verification command contains unsupported shell syntax.",
133
+ error: new Error("Verification command contains unsupported shell syntax.")
134
+ };
135
+ }
136
+ return spawnSync(parsedCommand.executable, parsedCommand.args, {
121
137
  cwd: projectRoot,
122
- shell: true,
123
138
  encoding: "utf8"
124
139
  });
125
140
  }
126
- function resolvePackageScript(projectRoot, command) {
127
- if (process.platform !== "win32") {
128
- return null;
129
- }
141
+ function readPackageScript(projectRoot, scriptName) {
142
+ const packageJson = readJson(path.join(projectRoot, "package.json"));
143
+ const script = packageJson?.scripts?.[scriptName];
144
+ return typeof script === "string" ? script : null;
145
+ }
146
+ function parseNpmRunCommand(command) {
130
147
  const match = /^npm run ([^\s]+)$/.exec(command.trim());
131
- if (!match) {
132
- return null;
148
+ return match?.[1] ?? null;
149
+ }
150
+ function resolveNpmCommand() {
151
+ const candidates = [
152
+ process.env["npm_execpath"],
153
+ path.join(path.dirname(process.execPath), "node_modules", "npm", "bin", "npm-cli.js")
154
+ ].filter((candidate) => Boolean(candidate));
155
+ const npmCli = candidates.find((candidate) => fs.existsSync(candidate));
156
+ if (npmCli) {
157
+ return { executable: process.execPath, args: [npmCli] };
133
158
  }
134
- const packageJsonPath = path.join(projectRoot, "package.json");
135
- if (!fs.existsSync(packageJsonPath)) {
159
+ return {
160
+ executable: process.platform === "win32" ? "npm.cmd" : "npm",
161
+ args: []
162
+ };
163
+ }
164
+ function parseCommand(command) {
165
+ const trimmed = command.trim();
166
+ if (!trimmed) {
136
167
  return null;
137
168
  }
138
- try {
139
- const parsed = JSON.parse(fs.readFileSync(packageJsonPath, "utf8"));
140
- const scriptName = match[1];
141
- if (scriptName === undefined) {
142
- return null;
143
- }
144
- const script = parsed.scripts?.[scriptName];
145
- if (typeof script !== "string" || !parseUnquotedWindowsNodeCommand(script)) {
146
- return null;
147
- }
148
- return script;
149
- }
150
- catch {
151
- return null;
169
+ const windowsNodeCommand = parseUnquotedWindowsNodeCommand(trimmed);
170
+ if (windowsNodeCommand) {
171
+ return windowsNodeCommand;
152
172
  }
173
+ return parseShellLikeCommand(trimmed);
153
174
  }
154
175
  function parseUnquotedWindowsNodeCommand(command) {
155
176
  const marker = "\\node.exe";
@@ -167,20 +188,66 @@ function parseUnquotedWindowsNodeCommand(command) {
167
188
  return null;
168
189
  }
169
190
  const script = parseQuotedArgument(remainder.slice(3).trim());
191
+ if (script !== null && script.length > MAX_NODE_E_SCRIPT_LENGTH) {
192
+ return null;
193
+ }
170
194
  return script === null ? null : { executable, args: ["-e", script] };
171
195
  }
172
196
  function parseQuotedArgument(value) {
173
- if (value.length < 2) {
197
+ const parsed = parseShellLikeCommand(value);
198
+ if (!parsed || parsed.args.length > 0) {
174
199
  return null;
175
200
  }
176
- const quote = value[0];
177
- if (quote !== "\"" && quote !== "'") {
178
- return null;
201
+ return parsed.executable;
202
+ }
203
+ function parseShellLikeCommand(command) {
204
+ const args = [];
205
+ let current = "";
206
+ let quote = null;
207
+ let escaped = false;
208
+ for (const char of command) {
209
+ if (escaped) {
210
+ current += char;
211
+ escaped = false;
212
+ continue;
213
+ }
214
+ if (char === "\\" && quote !== "'") {
215
+ escaped = true;
216
+ continue;
217
+ }
218
+ if (quote) {
219
+ if (char === quote) {
220
+ quote = null;
221
+ }
222
+ else {
223
+ current += char;
224
+ }
225
+ continue;
226
+ }
227
+ if (char === "\"" || char === "'") {
228
+ quote = char;
229
+ continue;
230
+ }
231
+ if (/\s/.test(char)) {
232
+ if (current) {
233
+ args.push(current);
234
+ current = "";
235
+ }
236
+ continue;
237
+ }
238
+ if (";&|<>`$(){}".includes(char)) {
239
+ return null;
240
+ }
241
+ current += char;
179
242
  }
180
- if (value.at(-1) !== quote) {
243
+ if (escaped || quote) {
181
244
  return null;
182
245
  }
183
- return value.slice(1, -1);
246
+ if (current) {
247
+ args.push(current);
248
+ }
249
+ const executable = args.shift();
250
+ return executable ? { executable, args } : null;
184
251
  }
185
252
  function readPreviousStatus(projectRoot) {
186
253
  const previous = readJson(harnessPath(projectRoot, "verification", "latest.json"));
@@ -1 +1 @@
1
- {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/runtime/verify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/runtime/verify.ts"],"names":[],"mappings":"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"}
@@ -8,20 +8,21 @@ export interface TaskUnderstanding {
8
8
  inputs?: {
9
9
  prd?: string;
10
10
  ui?: string;
11
- agentDecision?: string;
11
+ agentProposal?: string;
12
12
  };
13
13
  reasoningMode?: "deterministic" | "agent_assisted";
14
14
  policyProvenance?: PolicyProvenance;
15
- agentDecision?: {
15
+ agentProposal?: {
16
16
  summary?: string | null;
17
17
  artifactPath?: string | null;
18
18
  contractVersion?: 1 | null;
19
19
  intentSuggestion?: string | null;
20
20
  constraintHints?: string[];
21
21
  componentHints?: AgentDecisionComponentHint[];
22
+ planningEvidence?: AgentPlanningEvidence;
22
23
  };
23
24
  }
24
- export type FrontendWorkflowKind = "ui_implementation" | "prd_knowledge" | "api_integration" | "frontend_test" | "bug_fix" | "requirement_change";
25
+ export type FrontendWorkflowKind = "ui_implementation" | "prd_knowledge" | "api_integration" | "frontend_test" | "bug_fix" | "frontend_review" | "requirement_change" | "documentation" | "maintenance";
25
26
  export interface FrontendWorkflowPolicy {
26
27
  kind: FrontendWorkflowKind;
27
28
  summary: string;
@@ -53,16 +54,41 @@ export interface AgentPlanningDecision {
53
54
  intentSuggestion?: string;
54
55
  constraintHints?: string[];
55
56
  componentHints?: AgentDecisionComponentHint[];
57
+ planningEvidence?: AgentPlanningEvidence;
58
+ }
59
+ export interface AgentWorkflowCandidate {
60
+ kind: FrontendWorkflowKind;
61
+ confidence: number;
62
+ reasons: string[];
63
+ }
64
+ export interface AgentTargetCandidate {
65
+ path: string;
66
+ role: string;
67
+ confidence: number;
68
+ }
69
+ export interface AgentVerificationCandidate {
70
+ kind: string;
71
+ reason: string;
72
+ }
73
+ export interface AgentAmbiguity {
74
+ question: string;
75
+ severity: "low" | "medium" | "high";
76
+ }
77
+ export interface AgentPlanningEvidence {
78
+ workflowCandidates?: AgentWorkflowCandidate[];
79
+ targetCandidates?: AgentTargetCandidate[];
80
+ verificationCandidates?: AgentVerificationCandidate[];
81
+ ambiguities?: AgentAmbiguity[];
56
82
  }
57
83
  export interface AgentPlanningDecisionEnvelope {
58
84
  contractVersion: 1;
59
- decision: AgentPlanningDecision;
85
+ proposal: AgentPlanningDecision;
60
86
  }
61
- export interface AgentDecisionCheckResult {
87
+ export interface AgentProposalCheckResult {
62
88
  status: "passed" | "failed";
63
89
  artifactPath: string;
64
90
  contractVersion: 1 | null;
65
- decision: AgentPlanningDecision | null;
91
+ proposal: AgentPlanningDecision | null;
66
92
  errors: string[];
67
93
  }
68
94
  export interface PlanningDecisionSummary {
@@ -71,6 +97,38 @@ export interface PlanningDecisionSummary {
71
97
  intentSuggestion: string | null;
72
98
  constraintHints: string[];
73
99
  componentHints: AgentDecisionComponentHint[];
100
+ planningEvidence?: AgentPlanningEvidence;
101
+ }
102
+ export interface PlanDecisionTraceItem {
103
+ source: "system" | "agent" | "merged";
104
+ reason: string;
105
+ }
106
+ export interface PlanComponentHintTrace {
107
+ used: boolean;
108
+ strategy: "none" | "expand" | "merge" | "ignore";
109
+ confidence: number;
110
+ acceptedHints: number;
111
+ rejectedHints: number;
112
+ policy: {
113
+ expandMinWeight: number;
114
+ mergeMinConfidence: number;
115
+ };
116
+ constraints: Array<{
117
+ type: string;
118
+ outcome: "accepted" | "rejected" | "preserved";
119
+ reason?: string;
120
+ confidence?: number;
121
+ }>;
122
+ }
123
+ export interface PlanMeta {
124
+ decisionTrace: {
125
+ workflow: PlanDecisionTraceItem;
126
+ targets: PlanDecisionTraceItem;
127
+ components: PlanDecisionTraceItem;
128
+ componentHints: PlanComponentHintTrace;
129
+ agentEvidence?: PlanDecisionTraceItem;
130
+ };
131
+ warnings: string[];
74
132
  }
75
133
  export interface ComponentItem {
76
134
  name: string;
@@ -154,6 +212,15 @@ export interface HarnessState {
154
212
  components: ComponentItem[];
155
213
  units: ExecutionUnit[];
156
214
  changedFiles: string[];
215
+ changeBaseline: {
216
+ source: "git";
217
+ entries: Array<{
218
+ path: string;
219
+ status: string;
220
+ signature: string;
221
+ }>;
222
+ capturedAt: string;
223
+ } | null;
157
224
  verification: {
158
225
  status: VerificationStatus;
159
226
  latestResultPath: string | null;
@@ -1,3 +1,5 @@
1
+ const harnessStatuses = new Set(["idle", "awaiting_agent_edit", "failed", "passed", "blocked"]);
2
+ const verificationStatuses = new Set(["not_run", "not_configured", "passed", "failed", "error"]);
1
3
  export function isHarnessState(value) {
2
4
  if (!isRecord(value)) {
3
5
  return false;
@@ -5,16 +7,35 @@ export function isHarnessState(value) {
5
7
  const verification = value["verification"];
6
8
  return value["version"] === 1
7
9
  && typeof value["status"] === "string"
10
+ && harnessStatuses.has(value["status"])
8
11
  && Array.isArray(value["components"])
9
12
  && Array.isArray(value["units"])
10
13
  && Array.isArray(value["changedFiles"])
14
+ && isValidChangeBaseline(value["changeBaseline"])
11
15
  && isRecord(verification)
12
16
  && typeof verification["status"] === "string"
17
+ && verificationStatuses.has(verification["status"])
13
18
  && Array.isArray(value["errors"])
14
19
  && typeof value["retryCount"] === "number"
15
20
  && Array.isArray(value["blockers"])
16
21
  && typeof value["updatedAt"] === "string";
17
22
  }
23
+ function isValidChangeBaseline(value) {
24
+ if (value === null) {
25
+ return true;
26
+ }
27
+ return isRecord(value)
28
+ && value["source"] === "git"
29
+ && Array.isArray(value["entries"])
30
+ && value["entries"].every(isValidChangeBaselineEntry)
31
+ && typeof value["capturedAt"] === "string";
32
+ }
33
+ function isValidChangeBaselineEntry(value) {
34
+ return isRecord(value)
35
+ && typeof value["path"] === "string"
36
+ && typeof value["status"] === "string"
37
+ && typeof value["signature"] === "string";
38
+ }
18
39
  function isRecord(value) {
19
40
  return typeof value === "object" && value !== null;
20
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/schemas/validation.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;IAC3C,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;WACxB,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,QAAQ;WACnC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;WAClC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;WAC7B,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;WACpC,QAAQ,CAAC,YAAY,CAAC;WACtB,OAAO,YAAY,CAAC,QAAQ,CAAC,KAAK,QAAQ;WAC1C,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;WAC9B,OAAO,KAAK,CAAC,YAAY,CAAC,KAAK,QAAQ;WACvC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;WAChC,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC;AAC9C,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/schemas/validation.ts"],"names":[],"mappings":"AAEA,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,qBAAqB,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AAChG,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAEjG,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;IAC3C,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;WACxB,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,QAAQ;WACnC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;WACpC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;WAClC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;WAC7B,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;WACpC,qBAAqB,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;WAC9C,QAAQ,CAAC,YAAY,CAAC;WACtB,OAAO,YAAY,CAAC,QAAQ,CAAC,KAAK,QAAQ;WAC1C,oBAAoB,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;WAChD,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;WAC9B,OAAO,KAAK,CAAC,YAAY,CAAC,KAAK,QAAQ;WACvC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;WAChC,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC;AAC9C,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,QAAQ,CAAC,KAAK,CAAC;WACjB,KAAK,CAAC,QAAQ,CAAC,KAAK,KAAK;WACzB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;WAC/B,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,0BAA0B,CAAC;WAClD,OAAO,KAAK,CAAC,YAAY,CAAC,KAAK,QAAQ,CAAC;AAC/C,CAAC;AAED,SAAS,0BAA0B,CAAC,KAAc;IAChD,OAAO,QAAQ,CAAC,KAAK,CAAC;WACjB,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,QAAQ;WACjC,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,QAAQ;WACnC,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC;AAC9C,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC"}
@@ -15,7 +15,12 @@ export function readJson(filePath) {
15
15
  if (!fs.existsSync(filePath)) {
16
16
  return null;
17
17
  }
18
- return JSON.parse(fs.readFileSync(filePath, "utf8"));
18
+ try {
19
+ return JSON.parse(fs.readFileSync(filePath, "utf8"));
20
+ }
21
+ catch {
22
+ return null;
23
+ }
19
24
  }
20
25
  export function writeText(filePath, value) {
21
26
  ensureDir(path.dirname(filePath));
@@ -1 +1 @@
1
- {"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/storage/json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,QAAgB,EAAE,KAAc;IACxD,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,KAAc;IACjE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AACtG,CAAC;AAED,MAAM,UAAU,QAAQ,CAAI,QAAgB;IAC1C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAM,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,QAAgB,EAAE,KAAa;IACvD,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/storage/json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,QAAgB,EAAE,KAAc;IACxD,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,KAAc;IACjE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AACtG,CAAC;AAED,MAAM,UAAU,QAAQ,CAAI,QAAgB;IAC1C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAM,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,QAAgB,EAAE,KAAa;IACvD,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5C,CAAC"}