frontend-harness 0.7.9 → 0.8.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.
Files changed (98) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +20 -10
  3. package/dist/cli/index.js +388 -66
  4. package/dist/cli/index.js.map +1 -1
  5. package/dist/runtime/builtin-skills.js +1 -1
  6. package/dist/runtime/clean.js +25 -3
  7. package/dist/runtime/clean.js.map +1 -1
  8. package/dist/runtime/command-taxonomy.js +6 -1
  9. package/dist/runtime/command-taxonomy.js.map +1 -1
  10. package/dist/runtime/context.d.ts +33 -2
  11. package/dist/runtime/context.js +112 -13
  12. package/dist/runtime/context.js.map +1 -1
  13. package/dist/runtime/evidence.d.ts +27 -0
  14. package/dist/runtime/evidence.js +302 -19
  15. package/dist/runtime/evidence.js.map +1 -1
  16. package/dist/runtime/graph.js +11 -4
  17. package/dist/runtime/graph.js.map +1 -1
  18. package/dist/runtime/ingest.d.ts +38 -0
  19. package/dist/runtime/ingest.js +157 -0
  20. package/dist/runtime/ingest.js.map +1 -0
  21. package/dist/runtime/knowledge/constants.d.ts +9 -0
  22. package/dist/runtime/knowledge/constants.js +25 -0
  23. package/dist/runtime/knowledge/constants.js.map +1 -0
  24. package/dist/runtime/knowledge/core.d.ts +25 -0
  25. package/dist/runtime/knowledge/core.js +1569 -0
  26. package/dist/runtime/knowledge/core.js.map +1 -0
  27. package/dist/runtime/knowledge/types.d.ts +241 -0
  28. package/dist/runtime/knowledge/types.js +2 -0
  29. package/dist/runtime/knowledge/types.js.map +1 -0
  30. package/dist/runtime/knowledge.d.ts +2 -188
  31. package/dist/runtime/knowledge.js +1 -1126
  32. package/dist/runtime/knowledge.js.map +1 -1
  33. package/dist/runtime/plan/component-resolver.js +17 -6
  34. package/dist/runtime/plan/component-resolver.js.map +1 -1
  35. package/dist/runtime/plan/guidance.d.ts +1 -1
  36. package/dist/runtime/plan/guidance.js +88 -25
  37. package/dist/runtime/plan/guidance.js.map +1 -1
  38. package/dist/runtime/plan/proposal.js +9 -0
  39. package/dist/runtime/plan/proposal.js.map +1 -1
  40. package/dist/runtime/plan/workflow.d.ts +1 -0
  41. package/dist/runtime/plan/workflow.js +32 -1
  42. package/dist/runtime/plan/workflow.js.map +1 -1
  43. package/dist/runtime/plan.d.ts +13 -0
  44. package/dist/runtime/plan.js +137 -82
  45. package/dist/runtime/plan.js.map +1 -1
  46. package/dist/runtime/policy-provenance.d.ts +17 -1
  47. package/dist/runtime/policy-provenance.js +84 -16
  48. package/dist/runtime/policy-provenance.js.map +1 -1
  49. package/dist/runtime/project-discovery.js +32 -17
  50. package/dist/runtime/project-discovery.js.map +1 -1
  51. package/dist/runtime/project-paths.js +7 -1
  52. package/dist/runtime/project-paths.js.map +1 -1
  53. package/dist/runtime/protocol-init.js +117 -26
  54. package/dist/runtime/protocol-init.js.map +1 -1
  55. package/dist/runtime/repair-decision.js +76 -16
  56. package/dist/runtime/repair-decision.js.map +1 -1
  57. package/dist/runtime/repair-packet.js +141 -20
  58. package/dist/runtime/repair-packet.js.map +1 -1
  59. package/dist/runtime/scaffold/vue-template.js +1 -1
  60. package/dist/runtime/scaffold/vue-template.js.map +1 -1
  61. package/dist/runtime/scaffold.js +44 -8
  62. package/dist/runtime/scaffold.js.map +1 -1
  63. package/dist/runtime/skills.d.ts +9 -0
  64. package/dist/runtime/skills.js +133 -18
  65. package/dist/runtime/skills.js.map +1 -1
  66. package/dist/runtime/state-explain.js +39 -7
  67. package/dist/runtime/state-explain.js.map +1 -1
  68. package/dist/runtime/state.js +85 -10
  69. package/dist/runtime/state.js.map +1 -1
  70. package/dist/runtime/task-context.d.ts +122 -0
  71. package/dist/runtime/task-context.js +1322 -0
  72. package/dist/runtime/task-context.js.map +1 -0
  73. package/dist/runtime/task-signals.d.ts +1 -0
  74. package/dist/runtime/task-signals.js +1 -1
  75. package/dist/runtime/task-signals.js.map +1 -1
  76. package/dist/runtime/ui-restoration.d.ts +3 -3
  77. package/dist/runtime/ui-restoration.js +3 -3
  78. package/dist/runtime/ui-restoration.js.map +1 -1
  79. package/dist/runtime/ui-source.d.ts +6 -0
  80. package/dist/runtime/ui-source.js +66 -0
  81. package/dist/runtime/ui-source.js.map +1 -0
  82. package/dist/runtime/units.js +11 -4
  83. package/dist/runtime/units.js.map +1 -1
  84. package/dist/runtime/verification-commands.js +95 -21
  85. package/dist/runtime/verification-commands.js.map +1 -1
  86. package/dist/runtime/verify.js +129 -43
  87. package/dist/runtime/verify.js.map +1 -1
  88. package/dist/runtime/visual-compare.js +104 -12
  89. package/dist/runtime/visual-compare.js.map +1 -1
  90. package/dist/schemas/types.d.ts +75 -2
  91. package/dist/schemas/validation.js +257 -6
  92. package/dist/schemas/validation.js.map +1 -1
  93. package/dist/storage/json.d.ts +9 -1
  94. package/dist/storage/json.js +106 -8
  95. package/dist/storage/json.js.map +1 -1
  96. package/docs/DIRECTION.md +13 -11
  97. package/docs/RELEASE.md +5 -1
  98. package/package.json +1 -1
@@ -1,10 +1,14 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import fs from "node:fs";
3
- import path from "node:path";
4
3
  import zlib from "node:zlib";
5
- import { writeJson } from "../storage/json.js";
4
+ import { isRegularFileWithoutSymlink, writeBuffer, writeJson } from "../storage/json.js";
6
5
  import { resolveProjectOrHarnessRelativePath } from "./project-paths.js";
7
6
  const PNG_SIGNATURE = Buffer.from([137, 80, 78, 71, 13, 10, 26, 10]);
7
+ const MAX_PNG_FILE_BYTES = 32 * 1024 * 1024;
8
+ const MAX_PNG_DIMENSION = 8192;
9
+ const MAX_PNG_PIXELS = 16_000_000;
10
+ const VISUAL_HASH_CHUNK_BYTES = 64 * 1024;
11
+ const MAX_DIFF_PIXELS = 16_000_000;
8
12
  const VISUAL_COMPARE_LIMITATIONS = [
9
13
  "Pixel-level PNG comparison intended for deterministic harness evidence, not perceptual production visual regression.",
10
14
  "Stabilize browser rendering, viewport, fonts, data, animation, and dynamic regions before using scores as a release signal.",
@@ -19,8 +23,8 @@ export function compareVisualArtifacts(projectRoot, input) {
19
23
  if (threshold < 0 || threshold > 100 || !Number.isFinite(threshold)) {
20
24
  throw new Error("visual compare --threshold must be a number between 0 and 100");
21
25
  }
22
- const designImage = decodePng(fs.readFileSync(design.fullPath), design.relativePath);
23
- const actualImage = decodePng(fs.readFileSync(actual.fullPath), actual.relativePath);
26
+ const designImage = readPng(design.fullPath, design.relativePath);
27
+ const actualImage = readPng(actual.fullPath, actual.relativePath);
24
28
  const comparedWidth = Math.min(designImage.width, actualImage.width);
25
29
  const comparedHeight = Math.min(designImage.height, actualImage.height);
26
30
  const diffWidth = Math.max(designImage.width, actualImage.width);
@@ -28,6 +32,7 @@ export function compareVisualArtifacts(projectRoot, input) {
28
32
  if (comparedWidth <= 0 || comparedHeight <= 0) {
29
33
  throw new Error("visual compare images must have non-empty overlapping dimensions");
30
34
  }
35
+ assertImageSize(diffWidth, diffHeight, MAX_DIFF_PIXELS, "visual compare diff image");
31
36
  const diffImage = new Uint8Array(diffWidth * diffHeight * 4);
32
37
  let changedPixels = 0;
33
38
  let totalDelta = 0;
@@ -52,8 +57,7 @@ export function compareVisualArtifacts(projectRoot, input) {
52
57
  diffImage[diffOffset + 3] = Math.max(32, pixelDelta);
53
58
  }
54
59
  }
55
- fs.mkdirSync(path.dirname(diff.fullPath), { recursive: true });
56
- fs.writeFileSync(diff.fullPath, encodePngRgba(diffWidth, diffHeight, diffImage));
60
+ writeBuffer(diff.fullPath, encodePngRgba(diffWidth, diffHeight, diffImage));
57
61
  const comparedPixels = diffWidth * diffHeight;
58
62
  const meanAbsoluteError = totalDelta / (comparedPixels * 4);
59
63
  const score = roundScore(Math.max(0, 100 * (1 - meanAbsoluteError / 255)));
@@ -81,7 +85,13 @@ export function compareVisualArtifacts(projectRoot, input) {
81
85
  diff: sha256File(diff.fullPath)
82
86
  },
83
87
  comparisonTool: "frontend-harness visual compare",
84
- comparisonCommand: `frontend-harness visual compare --design ${design.relativePath} --actual ${actual.relativePath} --diff ${diff.relativePath}`,
88
+ comparisonCommand: visualComparisonCommand({
89
+ design: design.relativePath,
90
+ actual: actual.relativePath,
91
+ diff: diff.relativePath,
92
+ report: report?.relativePath ?? null,
93
+ threshold
94
+ }),
85
95
  limitations: VISUAL_COMPARE_LIMITATIONS
86
96
  };
87
97
  if (report) {
@@ -89,6 +99,26 @@ export function compareVisualArtifacts(projectRoot, input) {
89
99
  }
90
100
  return result;
91
101
  }
102
+ function visualComparisonCommand(input) {
103
+ const args = [
104
+ "frontend-harness",
105
+ "visual",
106
+ "compare",
107
+ "--design",
108
+ input.design,
109
+ "--actual",
110
+ input.actual,
111
+ "--diff",
112
+ input.diff,
113
+ "--threshold",
114
+ String(input.threshold),
115
+ ...(input.report ? ["--report", input.report] : [])
116
+ ];
117
+ return args.map(shellQuoteArg).join(" ");
118
+ }
119
+ function shellQuoteArg(value) {
120
+ return /^[A-Za-z0-9_./:@%+=,-]+$/.test(value) ? value : `'${value.replace(/'/g, `'"'"'`)}'`;
121
+ }
92
122
  function channelDeltas(left, leftOffset, right, rightOffset) {
93
123
  if (leftOffset < 0 || rightOffset < 0) {
94
124
  return [255, 255, 255, 255];
@@ -105,7 +135,7 @@ function resolveRequiredFile(projectRoot, value, label) {
105
135
  throw new Error(`${label} requires a project-relative path`);
106
136
  }
107
137
  const resolved = resolveProjectOrHarnessRelativePath(projectRoot, value, label);
108
- if (!fs.existsSync(resolved.fullPath) || !fs.statSync(resolved.fullPath).isFile()) {
138
+ if (!isRegularFileWithoutSymlink(resolved.fullPath)) {
109
139
  throw new Error(`${label} does not exist: ${resolved.relativePath}`);
110
140
  }
111
141
  return resolved;
@@ -114,7 +144,22 @@ function resolveOutputPath(projectRoot, value, label) {
114
144
  if (!value) {
115
145
  throw new Error(`${label} requires a project-relative path`);
116
146
  }
117
- return resolveProjectOrHarnessRelativePath(projectRoot, value, label);
147
+ const resolved = resolveProjectOrHarnessRelativePath(projectRoot, value, label);
148
+ if (!isVisualOutputPath(resolved.relativePath)) {
149
+ throw new Error(`${label} must be written under .frontend-harness/visual/ or .frontend-harness/evidence/: ${resolved.relativePath}`);
150
+ }
151
+ return resolved;
152
+ }
153
+ function isVisualOutputPath(relativePath) {
154
+ return relativePath.startsWith(".frontend-harness/visual/")
155
+ || relativePath.startsWith(".frontend-harness/evidence/");
156
+ }
157
+ function readPng(fullPath, relativePath) {
158
+ const stat = fs.statSync(fullPath, { throwIfNoEntry: false });
159
+ if (!stat || stat.size > MAX_PNG_FILE_BYTES) {
160
+ throw new Error(`Unsupported PNG for ${relativePath}: file exceeds ${MAX_PNG_FILE_BYTES} bytes`);
161
+ }
162
+ return decodePng(fs.readFileSync(fullPath), relativePath);
118
163
  }
119
164
  function decodePng(buffer, label) {
120
165
  if (buffer.length < 8 || !buffer.subarray(0, 8).equals(PNG_SIGNATURE)) {
@@ -127,31 +172,53 @@ function decodePng(buffer, label) {
127
172
  let bitDepth = -1;
128
173
  let interlace = -1;
129
174
  const idat = [];
175
+ let seenIhdr = false;
176
+ let seenIend = false;
130
177
  while (offset < buffer.length) {
178
+ if (offset + 12 > buffer.length) {
179
+ throw new Error(`Unsupported PNG for ${label}: truncated PNG chunk`);
180
+ }
131
181
  const length = buffer.readUInt32BE(offset);
182
+ const chunkEnd = offset + 12 + length;
183
+ if (chunkEnd > buffer.length) {
184
+ throw new Error(`Unsupported PNG for ${label}: PNG chunk length exceeds file size`);
185
+ }
132
186
  const type = buffer.subarray(offset + 4, offset + 8).toString("ascii");
133
187
  const data = buffer.subarray(offset + 8, offset + 8 + length);
134
- offset += 12 + length;
188
+ offset = chunkEnd;
135
189
  if (type === "IHDR") {
190
+ if (length !== 13) {
191
+ throw new Error(`Unsupported PNG for ${label}: invalid IHDR length`);
192
+ }
136
193
  width = data.readUInt32BE(0);
137
194
  height = data.readUInt32BE(4);
138
195
  bitDepth = byteAt(data, 8);
139
196
  colorType = byteAt(data, 9);
140
197
  interlace = byteAt(data, 12);
198
+ seenIhdr = true;
141
199
  }
142
200
  else if (type === "IDAT") {
143
201
  idat.push(data);
144
202
  }
145
203
  else if (type === "IEND") {
204
+ seenIend = true;
146
205
  break;
147
206
  }
148
207
  }
208
+ if (!seenIhdr || !seenIend || idat.length === 0) {
209
+ throw new Error(`Unsupported PNG for ${label}: missing required PNG chunks`);
210
+ }
149
211
  if (bitDepth !== 8 || ![2, 6].includes(colorType) || interlace !== 0) {
150
212
  throw new Error(`Unsupported PNG for ${label}: only 8-bit non-interlaced RGB/RGBA PNGs are supported`);
151
213
  }
214
+ assertImageSize(width, height, MAX_PNG_PIXELS, label);
152
215
  const channels = colorType === 6 ? 4 : 3;
153
- const raw = zlib.inflateSync(Buffer.concat(idat));
154
216
  const rowBytes = width * channels;
217
+ const expectedRawBytes = (rowBytes + 1) * height;
218
+ const raw = zlib.inflateSync(Buffer.concat(idat), { maxOutputLength: expectedRawBytes });
219
+ if (raw.length !== expectedRawBytes) {
220
+ throw new Error(`Unsupported PNG for ${label}: decoded data length does not match image dimensions`);
221
+ }
155
222
  const rgba = new Uint8Array(width * height * 4);
156
223
  let rawOffset = 0;
157
224
  let previous = new Uint8Array(rowBytes);
@@ -174,6 +241,14 @@ function decodePng(buffer, label) {
174
241
  }
175
242
  return { width, height, rgba };
176
243
  }
244
+ function assertImageSize(width, height, maxPixels, label) {
245
+ if (width <= 0 || height <= 0 || width > MAX_PNG_DIMENSION || height > MAX_PNG_DIMENSION) {
246
+ throw new Error(`Unsupported PNG for ${label}: image dimensions exceed supported bounds`);
247
+ }
248
+ if (width * height > maxPixels) {
249
+ throw new Error(`Unsupported PNG for ${label}: image has too many pixels`);
250
+ }
251
+ }
177
252
  function unfilterRow(row, previous, bytesPerPixel, filter) {
178
253
  for (let index = 0; index < row.length; index += 1) {
179
254
  const current = byteAt(row, index);
@@ -263,7 +338,24 @@ function crc32(buffer) {
263
338
  return (crc ^ 0xffffffff) >>> 0;
264
339
  }
265
340
  function sha256File(filePath) {
266
- return createHash("sha256").update(fs.readFileSync(filePath)).digest("hex");
341
+ const hash = createHash("sha256");
342
+ const buffer = Buffer.alloc(VISUAL_HASH_CHUNK_BYTES);
343
+ const fd = fs.openSync(filePath, "r");
344
+ try {
345
+ let position = 0;
346
+ while (true) {
347
+ const bytesRead = fs.readSync(fd, buffer, 0, buffer.length, position);
348
+ if (bytesRead === 0) {
349
+ break;
350
+ }
351
+ hash.update(buffer.subarray(0, bytesRead));
352
+ position += bytesRead;
353
+ }
354
+ }
355
+ finally {
356
+ fs.closeSync(fd);
357
+ }
358
+ return hash.digest("hex");
267
359
  }
268
360
  function roundScore(value) {
269
361
  return Number(value.toFixed(2));
@@ -1 +1 @@
1
- {"version":3,"file":"visual-compare.js","sourceRoot":"","sources":["../../src/runtime/visual-compare.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"visual-compare.js","sourceRoot":"","sources":["../../src/runtime/visual-compare.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  export type HarnessStatus = "idle" | "awaiting_agent_edit" | "passed" | "failed" | "blocked";
2
2
  export type VerificationStatus = "not_run" | "not_configured" | "passed" | "failed" | "error";
3
3
  export type UiSourceKind = "design_url" | "visual_artifact" | "generated_markup" | "design_artifact";
4
- export type UiSourceProvider = "pixso" | "figma" | "mastergo" | "lanhu" | "local";
4
+ export type UiSourceProvider = "pixso" | "figma" | "mastergo" | "lanhu" | "stitch" | "local";
5
5
  export interface UiSourceReference {
6
6
  kind: UiSourceKind;
7
7
  value: string;
@@ -15,6 +15,7 @@ export interface TaskUnderstanding {
15
15
  workflowPlan?: WorkflowPlan;
16
16
  inputs?: {
17
17
  prd?: string;
18
+ apiSource?: string;
18
19
  uiSource?: UiSourceReference;
19
20
  agentProposal?: string;
20
21
  };
@@ -28,12 +29,14 @@ export interface TaskUnderstanding {
28
29
  constraintHints?: string[];
29
30
  componentHints?: AgentDecisionComponentHint[];
30
31
  planningEvidence?: AgentPlanningEvidence;
32
+ limits?: AgentProposalFieldLimits;
31
33
  };
32
34
  }
33
35
  export type FrontendWorkflowKind = "ui_implementation" | "prd_knowledge" | "api_integration" | "frontend_test" | "bug_fix" | "frontend_review" | "requirement_change" | "documentation" | "maintenance";
34
36
  export type WorkflowStageKind = FrontendWorkflowKind | "design_restoration";
35
37
  export interface FrontendWorkflowPolicy {
36
38
  kind: FrontendWorkflowKind;
39
+ loopMode: "full" | "lightweight";
37
40
  summary: string;
38
41
  requiredKnowledgeActions: string[];
39
42
  implementationConstraints: string[];
@@ -58,6 +61,11 @@ export interface PolicyProvenance {
58
61
  knowledgeReferences: string[];
59
62
  knowledgeSha256: Record<string, string>;
60
63
  selectionReason: string;
64
+ limits?: PolicyProvenanceLimits;
65
+ }
66
+ export interface PolicyProvenanceLimits {
67
+ skillRoutes: ProposalFieldLimit;
68
+ knowledgeReferences: ProposalFieldLimit;
61
69
  }
62
70
  export interface SkillRouteCandidate {
63
71
  name: string;
@@ -110,8 +118,28 @@ export interface AgentProposalCheckResult {
110
118
  artifactPath: string;
111
119
  contractVersion: 1 | null;
112
120
  proposal: AgentPlanningDecision | null;
121
+ limits: AgentProposalFieldLimits;
113
122
  errors: string[];
114
123
  }
124
+ export interface AgentProposalFieldLimits {
125
+ constraintHints: ProposalFieldLimit;
126
+ componentHints: ProposalFieldLimit;
127
+ workflowCandidates: ProposalFieldLimit;
128
+ targetCandidates: ProposalFieldLimit;
129
+ verificationCandidates: ProposalFieldLimit;
130
+ ambiguities: ProposalFieldLimit;
131
+ }
132
+ export interface ProposalFieldLimit {
133
+ selected: number;
134
+ total: number;
135
+ omitted: number;
136
+ max: number;
137
+ }
138
+ export interface SelectedTotalLimit {
139
+ selected: number;
140
+ total: number;
141
+ omitted: number;
142
+ }
115
143
  export interface PlanningDecisionSummary {
116
144
  artifactPath: string | null;
117
145
  contractVersion: 1 | null;
@@ -119,6 +147,7 @@ export interface PlanningDecisionSummary {
119
147
  constraintHints: string[];
120
148
  componentHints: AgentDecisionComponentHint[];
121
149
  planningEvidence?: AgentPlanningEvidence;
150
+ limits?: AgentProposalFieldLimits;
122
151
  }
123
152
  export interface PlanDecisionTraceItem {
124
153
  source: "system" | "agent" | "merged";
@@ -183,6 +212,9 @@ export interface StateNextResult {
183
212
  stateStatus: HarnessStatus;
184
213
  verificationStatus: VerificationStatus;
185
214
  changedFiles: string[];
215
+ limits?: {
216
+ changedFiles: SelectedTotalLimit;
217
+ };
186
218
  guidance: string[];
187
219
  artifacts: string[];
188
220
  checks: string[];
@@ -210,6 +242,13 @@ export interface StateExplainResult {
210
242
  verificationSha256: string | null;
211
243
  };
212
244
  recommendedCommands: string[];
245
+ limits: {
246
+ markdown: {
247
+ rationale: SelectedTotalLimit;
248
+ requiredArtifacts: SelectedTotalLimit;
249
+ recommendedCommands: SelectedTotalLimit;
250
+ };
251
+ };
213
252
  stopCondition: string;
214
253
  }
215
254
  export interface ComponentGraphNode {
@@ -270,6 +309,18 @@ export interface VerificationResult {
270
309
  failedCommands: string[];
271
310
  logs: string[];
272
311
  nextAgentInstruction: string;
312
+ limits?: {
313
+ failedCommands: {
314
+ selected: number;
315
+ total: number;
316
+ omitted: number;
317
+ };
318
+ logs: {
319
+ selected: number;
320
+ total: number;
321
+ omitted: number;
322
+ };
323
+ };
273
324
  };
274
325
  }
275
326
  export interface RepairPacketArtifact {
@@ -285,6 +336,23 @@ export interface RepairPacketArtifact {
285
336
  repairPacketMarkdown: string;
286
337
  };
287
338
  changedFiles: string[];
339
+ limits: {
340
+ changedFiles: number;
341
+ totalChangedFiles: number;
342
+ omittedChangedFiles: number;
343
+ failedCommands: number;
344
+ totalFailedCommands: number;
345
+ omittedFailedCommands: number;
346
+ logExcerptChars: number;
347
+ retryGuidanceFailedCommands: number;
348
+ totalRetryGuidanceFailedCommands: number;
349
+ omittedRetryGuidanceFailedCommands: number;
350
+ retryGuidanceLogs: number;
351
+ totalRetryGuidanceLogs: number;
352
+ omittedRetryGuidanceLogs: number;
353
+ retryGuidanceInstructionChars: number;
354
+ retryGuidanceInstructionTruncated: boolean;
355
+ };
288
356
  failedCommands: Array<{
289
357
  name: string;
290
358
  command: string | null;
@@ -298,7 +366,12 @@ export interface RepairPacketArtifact {
298
366
  excerptEndByte: number | null;
299
367
  excerptTruncated: boolean;
300
368
  }>;
301
- retryGuidance: VerificationResult["retryGuidance"];
369
+ retryGuidance: null | {
370
+ summary: string;
371
+ failedCommands: string[];
372
+ logs: string[];
373
+ nextAgentInstruction: string;
374
+ };
302
375
  instructions: string[];
303
376
  }
304
377
  export interface RepairDecision {