@neonwatty/limner 0.1.7 → 0.1.9

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 (60) hide show
  1. package/README.md +7 -31
  2. package/dist/commands/compare-image-reference.d.ts +1 -0
  3. package/dist/commands/compare-image-reference.js +4 -0
  4. package/dist/commands/compare-image-reference.js.map +1 -1
  5. package/dist/commands/compare-output.js +1 -1
  6. package/dist/commands/compare-output.js.map +1 -1
  7. package/dist/commands/compare.d.ts +1 -0
  8. package/dist/commands/compare.js +4 -12
  9. package/dist/commands/compare.js.map +1 -1
  10. package/dist/commands/loop-cli.js +35 -2
  11. package/dist/commands/loop-cli.js.map +1 -1
  12. package/dist/commands/loop-comparison-adapters.d.ts +1 -0
  13. package/dist/commands/loop-comparison-adapters.js +7 -2
  14. package/dist/commands/loop-comparison-adapters.js.map +1 -1
  15. package/dist/commands/loop-response.d.ts +31 -0
  16. package/dist/commands/loop-response.js +84 -0
  17. package/dist/commands/loop-response.js.map +1 -0
  18. package/dist/commands/loop-task.js +24 -3
  19. package/dist/commands/loop-task.js.map +1 -1
  20. package/dist/commands/loop.d.ts +11 -0
  21. package/dist/commands/loop.js +22 -8
  22. package/dist/commands/loop.js.map +1 -1
  23. package/dist/core/agent-comparison-fingerprint.js +1 -0
  24. package/dist/core/agent-comparison-fingerprint.js.map +1 -1
  25. package/dist/core/agent-comparison-pack.d.ts +5 -1
  26. package/dist/core/agent-comparison-pack.js +17 -100
  27. package/dist/core/agent-comparison-pack.js.map +1 -1
  28. package/dist/core/agent-comparison-prompts.d.ts +1 -1
  29. package/dist/core/agent-comparison-prompts.js +4 -4
  30. package/dist/core/agent-comparison-prompts.js.map +1 -1
  31. package/dist/core/agent-comparison-report.js +2 -2
  32. package/dist/core/agent-comparison-report.js.map +1 -1
  33. package/dist/core/agent-comparison-response.d.ts +0 -18
  34. package/dist/core/agent-comparison-response.js +1 -33
  35. package/dist/core/agent-comparison-response.js.map +1 -1
  36. package/dist/core/agent-comparison-submit.d.ts +35 -0
  37. package/dist/core/agent-comparison-submit.js +113 -0
  38. package/dist/core/agent-comparison-submit.js.map +1 -0
  39. package/dist/core/agent-task-brief.d.ts +4 -1
  40. package/dist/core/agent-task-brief.js +11 -2
  41. package/dist/core/agent-task-brief.js.map +1 -1
  42. package/dist/core/comparison-artifacts.js +3 -8
  43. package/dist/core/comparison-artifacts.js.map +1 -1
  44. package/dist/core/ledger-agent-responses.d.ts +1 -0
  45. package/dist/core/ledger-agent-responses.js +3 -3
  46. package/dist/core/ledger-agent-responses.js.map +1 -1
  47. package/dist/core/ledger-db.js +2 -0
  48. package/dist/core/ledger-db.js.map +1 -1
  49. package/dist/core/ledger-markdown.js +1 -1
  50. package/dist/core/ledger-markdown.js.map +1 -1
  51. package/dist/core/ledger-queries.js +2 -1
  52. package/dist/core/ledger-queries.js.map +1 -1
  53. package/dist/core/report-writer.js +1 -1
  54. package/docs/agent-workflow.md +14 -16
  55. package/docs/archive/visual-spec-workflow.md +23 -0
  56. package/docs/goals/db-native-agent-responses/goal.md +91 -0
  57. package/docs/goals/db-native-agent-responses/state.yaml +240 -0
  58. package/package.json +1 -1
  59. package/skills/limner/SKILL.md +11 -21
  60. package/templates/target/AGENT_GUIDE.md +4 -4
package/README.md CHANGED
@@ -4,7 +4,7 @@ Limner is an agent-guided visual fidelity workbench. It helps a coding agent tur
4
4
 
5
5
  Limner is model-agnostic. It does not call a vision model and it does not make final pass/fail judgments. It prepares artifacts and schemas for agent-authored UX comparison scores, diffs, and next-iteration guidance.
6
6
 
7
- The optional visual spec workflow is agent-required. Limner can prepare the prompt pack and validate structured agent output, but it does not extract that spec on its own.
7
+ The older visual spec workflow is archived in `docs/archive/visual-spec-workflow.md`; active loops use DB-native agent comparison responses.
8
8
 
9
9
  ## Install
10
10
 
@@ -99,6 +99,7 @@ limner loop task --trajectory traj_... --executor subagent
99
99
  limner loop action start --trajectory traj_... --from-run run_... --kind polish --executor subagent --summary "Resize dashboard preview"
100
100
  limner loop action complete --trajectory traj_... --action act_... --executor subagent --summary "Adjusted preview sizing" --files "src/app/page.tsx"
101
101
  limner loop action skip --trajectory traj_... --from-run run_... --summary "Comparison smoke only; no edit intended"
102
+ limner loop response submit --trajectory traj_... --from-run run_... --file ./response.json
102
103
  limner loop status --trajectory traj_... --feedback "Prompt should mention button contrast."
103
104
  limner loop next --trajectory traj_...
104
105
  limner loop close --trajectory traj_...
@@ -110,14 +111,14 @@ Loop modes:
110
111
  - `mockup-implementation`: approved mockup to real implementation.
111
112
  - `image-implementation`: source image directly to real implementation.
112
113
 
113
- Every meaningful loop interaction writes a ledger event. Validated, missing, invalid, and stale agent responses are also stored in local SQLite with the full JSON body, response hash, validation status, and freshness (`missing`, `cached`, `stale`, `invalid`, or future `fresh`). `agentFeedback` is an optional 255-character field for short process-improvement notes; longer comments belong in notes or project artifacts.
114
+ Every meaningful loop interaction writes a ledger event. Agent responses are submitted into local SQLite with the full JSON body, response hash, validation status, and freshness (`missing`, `fresh`, `stale`, or `invalid`). `agentFeedback` is an optional 255-character field for short process-improvement notes; longer comments belong in notes or project artifacts.
114
115
 
115
116
  ### Action Logging
116
117
 
117
- After an agent writes `agent-response.json` and `loop compare` validates it, use `limner loop task --trajectory traj_... --executor subagent` to print the next edit brief. The intended loop is:
118
+ After `loop compare` creates a comparison prompt, have the agent submit structured JSON with `limner loop response submit --trajectory traj_... --from-run run_... --file ./response.json`. Once the response validates, use `limner loop task --trajectory traj_... --executor subagent` to print the next edit brief. The intended loop is:
118
119
 
119
120
  ```text
120
- loop compare -> loop task --executor subagent -> loop action start -> edit -> loop action complete -> loop compare
121
+ loop compare -> loop response submit -> loop task --executor subagent -> loop action start -> edit -> loop action complete -> loop compare
121
122
  ```
122
123
 
123
124
  The task brief names likely files, selectors, prioritized diffs, next steps, action logging commands, and the compare command to rerun. Record `loop action start` before edits and `loop action complete` after edits; keep `--summary` under 255 characters. Use `loop action skip` for comparison-only smoke runs where no edit is intended. Limner records executor intent and action claims; it cannot prove an external orchestrator actually used a subagent. Use `--format json` when another tool needs machine-readable handoff data.
@@ -148,8 +149,6 @@ Use this while recreating the ideal image as a standalone HTML/CSS mockup. This
148
149
 
149
150
  ```bash
150
151
  limner compare image-reference --target replay-boundaries
151
- limner compare image-reference --target replay-boundaries --spec
152
- limner compare image-reference --target replay-boundaries --spec --spec-instructions ./visual-spec-policy.md
153
152
  ```
154
153
 
155
154
  Outputs:
@@ -160,34 +159,11 @@ Outputs:
160
159
  - `captures/image-reference/agent-comparison/agent-response.schema.json`
161
160
  - `reports/image-reference.md`
162
161
 
163
- After an agent writes `captures/image-reference/agent-comparison/agent-response.json`, rerun the same command and Limner validates and emits:
162
+ In a loop trajectory, submit the agent's structured response with `limner loop response submit --trajectory <trajectory-id> --from-run <run-id> --file ./response.json`. Limner validates and emits:
164
163
 
165
164
  - `captures/image-reference/image-comparison.json`
166
165
  - `captures/image-reference/comparison-summary.json`
167
166
 
168
- With `--spec`, Limner also writes an agent handoff pack under `captures/image-reference/spec/`:
169
-
170
- - `agent-prompt.md`
171
- - `agent-prompt.codex.md`
172
- - `agent-prompt.claude.md`
173
- - `reference-dom-facts.json`
174
- - `agent-response.schema.json`
175
- - `agent-response.example.json`
176
- - expected agent output path: `agent-response.json`
177
-
178
- Limner also creates `contract/visual-spec-instructions.md` if it does not exist. Edit that file to customize the generated Codex and Claude prompts for a target, or pass `--spec-instructions <path>` to use a shared prompt policy file.
179
-
180
- After an agent writes a valid `agent-response.json`, rerun the same command and Limner will validate it and split out:
181
-
182
- - `captures/image-reference/ideal-visual-spec.json`
183
- - `captures/image-reference/reference-visual-spec.json`
184
- - `captures/image-reference/visual-spec-diff.json`
185
-
186
- The prompt pack is tuned for two common flows:
187
-
188
- - `agent-prompt.codex.md`: for Codex reading local files and writing `agent-response.json` directly in the repo.
189
- - `agent-prompt.claude.md`: for Claude with attached images and strict structured output, then copying the JSON into `agent-response.json`.
190
-
191
167
  Agents should inspect the ideal image and reference screenshot separately. The side-by-side image is comparison context, not the source image to parse.
192
168
 
193
169
  ### Reference To Implementation
@@ -208,7 +184,7 @@ Outputs:
208
184
  - `captures/reference-implementation/agent-comparison/agent-response.schema.json`
209
185
  - `reports/reference-implementation.md`
210
186
 
211
- After an agent writes `captures/reference-implementation/agent-comparison/agent-response.json`, rerun the same command and Limner validates and emits:
187
+ In a loop trajectory, submit the agent's structured response with `limner loop response submit --trajectory <trajectory-id> --from-run <run-id> --file ./response.json`. Limner validates and emits:
212
188
 
213
189
  - `captures/reference-implementation/image-comparison.json`
214
190
  - `captures/reference-implementation/structure-comparison.json`
@@ -8,6 +8,7 @@ export declare function compareImageReference(options: {
8
8
  spec?: boolean;
9
9
  specInstructions?: string;
10
10
  agentComparison?: boolean;
11
+ trajectoryId?: string;
11
12
  }): Promise<{
12
13
  sideBySidePath: string;
13
14
  reportPath: string;
@@ -41,6 +41,7 @@ export async function compareImageReference(options) {
41
41
  expectedImagePath: target.sourceImagePath,
42
42
  actualImagePath: referencePath,
43
43
  },
44
+ responseSubmitCommand: responseSubmitCommand(options.trajectoryId, logger.runId),
44
45
  });
45
46
  }
46
47
  if (options.spec) {
@@ -117,4 +118,7 @@ export async function compareImageReference(options) {
117
118
  throw error;
118
119
  }
119
120
  }
121
+ function responseSubmitCommand(trajectoryId, runId) {
122
+ return trajectoryId ? `limner loop response submit --trajectory ${trajectoryId} --from-run ${runId} --file <response.json>` : undefined;
123
+ }
120
124
  //# sourceMappingURL=compare-image-reference.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compare-image-reference.js","sourceRoot":"","sources":["../../src/commands/compare-image-reference.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compare-image-reference.js","sourceRoot":"","sources":["../../src/commands/compare-image-reference.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,wBAAwB,EAAkC,MAAM,kCAAkC,CAAC;AAC5G,OAAO,EAAE,wBAAwB,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAG5D,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAS3C;IAoBC,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACpF,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACzH,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;IACpE,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAC7D,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IACjE,IAAI,SAA6F,CAAC;IAClG,IAAI,SAcS,CAAC;IACd,IAAI,eAAsD,CAAC;IAE3D,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAChD,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC5D,IAAI,CAAC;YACH,MAAM,WAAW,CAAC;gBAChB,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,UAAU,EAAE,aAAa;gBACzB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;aAC3B,CAAC,CAAC;YACH,MAAM,qBAAqB,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,eAAe,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,CAAC;YACxH,IAAI,OAAO,CAAC,eAAe,KAAK,KAAK,EAAE,CAAC;gBACtC,eAAe,GAAG,MAAM,wBAAwB,CAAC;oBAC/C,aAAa,EAAE,OAAO,CAAC,aAAa;oBACpC,UAAU;oBACV,IAAI,EAAE,iBAAiB;oBACvB,OAAO,EAAE,iBAAiB;oBAC1B,WAAW,EAAE;wBACX,iBAAiB,EAAE,MAAM,CAAC,eAAe;wBACzC,eAAe,EAAE,aAAa;qBAC/B;oBACD,qBAAqB,EAAE,qBAAqB,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC;iBACjF,CAAC,CAAC;YACL,CAAC;YACD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,QAAQ,GAAG,MAAM,2BAA2B,CAAC;oBACjD,MAAM;oBACN,UAAU;oBACV,YAAY,EAAE,MAAM,CAAC,GAAG;oBACxB,aAAa;oBACb,cAAc;oBACd,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS;iBACvH,CAAC,CAAC;gBACH,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;gBAC/B,SAAS,GAAG,QAAQ,CAAC;YACvB,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,yBAAyB,CAAC;YACjD,MAAM;YACN,SAAS,EAAE,MAAM,CAAC,eAAe;YACjC,aAAa;YACb,cAAc;YACd,SAAS;YACT,cAAc,EAAE,SAAS,EAAE,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;YACxF,SAAS;YACT,eAAe;SAChB,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QACnD,MAAM,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QACtD,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;YAC5D,MAAM,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;YACjE,MAAM,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;YAClE,MAAM,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YACxD,MAAM,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;YAC7D,MAAM,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,EAAE,yBAAyB,CAAC,CAAC;YAC7E,MAAM,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,EAAE,yBAAyB,CAAC,CAAC;YAC7E,IAAI,eAAe,CAAC,mBAAmB;gBAAE,MAAM,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,CAAC;YACxH,IAAI,eAAe,CAAC,WAAW;gBAAE,MAAM,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;QAC5G,CAAC;QACD,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;YAC9D,MAAM,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;YAClE,MAAM,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC5C,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO;YACL,cAAc;YACd,UAAU;YACV,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,SAAS,EAAE;gBACT,GAAG,QAAQ,CAAC,aAAa,EAAE,sBAAsB,CAAC;gBAClD,GAAG,QAAQ,CAAC,GAAG,aAAa,eAAe,EAAE,uBAAuB,CAAC;gBACrE,GAAG,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;gBAC3C,GAAG,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC;gBACjC,GAAG,wBAAwB,CAAC,eAAe,CAAC;aAC7C;YACD,SAAS;YACT,SAAS;YACT,eAAe;SAChB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClI,MAAM,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAChC,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,YAAgC,EAAE,KAAa;IAC5E,OAAO,YAAY,CAAC,CAAC,CAAC,4CAA4C,YAAY,eAAe,KAAK,yBAAyB,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1I,CAAC"}
@@ -5,7 +5,7 @@ export function printAgentComparison(agentComparison) {
5
5
  console.log(`Codex comparison prompt: ${agentComparison.codexPromptPath}`);
6
6
  console.log(`Claude comparison prompt: ${agentComparison.claudePromptPath}`);
7
7
  console.log(`Agent comparison schema: ${agentComparison.schemaPath}`);
8
- console.log(`Agent comparison response target: ${agentComparison.responsePath}`);
8
+ console.log('Agent comparison response store: local SQLite ledger');
9
9
  console.log(`Agent response freshness: ${agentComparison.freshness}`);
10
10
  if (agentComparison.status === 'validated') {
11
11
  console.log(`Image comparison: ${agentComparison.imageComparisonPath}`);
@@ -1 +1 @@
1
- {"version":3,"file":"compare-output.js","sourceRoot":"","sources":["../../src/commands/compare-output.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,oBAAoB,CAAC,eAA2C;IAC9E,IAAI,CAAC,eAAe;QAAE,OAAO;IAC7B,OAAO,CAAC,GAAG,CAAC,4BAA4B,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,4BAA4B,eAAe,CAAC,eAAe,EAAE,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,CAAC,6BAA6B,eAAe,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,4BAA4B,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,qCAAqC,eAAe,CAAC,YAAY,EAAE,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,CAAC,6BAA6B,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;IACtE,IAAI,eAAe,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,qBAAqB,eAAe,CAAC,mBAAmB,EAAE,CAAC,CAAC;QACxE,IAAI,eAAe,CAAC,uBAAuB;YAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB,eAAe,CAAC,uBAAuB,EAAE,CAAC,CAAC;QAC7H,OAAO,CAAC,GAAG,CAAC,uBAAuB,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC;IACpE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,4BAA4B,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;IACpE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"compare-output.js","sourceRoot":"","sources":["../../src/commands/compare-output.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,oBAAoB,CAAC,eAA2C;IAC9E,IAAI,CAAC,eAAe;QAAE,OAAO;IAC7B,OAAO,CAAC,GAAG,CAAC,4BAA4B,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,4BAA4B,eAAe,CAAC,eAAe,EAAE,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,CAAC,6BAA6B,eAAe,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,4BAA4B,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,6BAA6B,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;IACtE,IAAI,eAAe,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,qBAAqB,eAAe,CAAC,mBAAmB,EAAE,CAAC,CAAC;QACxE,IAAI,eAAe,CAAC,uBAAuB;YAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB,eAAe,CAAC,uBAAuB,EAAE,CAAC,CAAC;QAC7H,OAAO,CAAC,GAAG,CAAC,uBAAuB,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC;IACpE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,4BAA4B,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;IACpE,CAAC;AACH,CAAC"}
@@ -10,6 +10,7 @@ export declare function compareReferenceImplementation(options: {
10
10
  storageState?: string;
11
11
  fullPage?: boolean;
12
12
  agentComparison?: boolean;
13
+ trajectoryId?: string;
13
14
  }): Promise<{
14
15
  sideBySidePath: string;
15
16
  reportPath: string;
@@ -61,6 +61,7 @@ export async function compareReferenceImplementation(options) {
61
61
  captureDir,
62
62
  mode: 'reference-implementation',
63
63
  profile: 'mockup-to-implementation',
64
+ responseSubmitCommand: responseSubmitCommand(options.trajectoryId, logger.runId),
64
65
  imageInputs: {
65
66
  expectedImagePath: referencePath,
66
67
  actualImagePath: implementationPath,
@@ -112,6 +113,9 @@ export async function compareReferenceImplementation(options) {
112
113
  throw error;
113
114
  }
114
115
  }
116
+ function responseSubmitCommand(trajectoryId, runId) {
117
+ return trajectoryId ? `limner loop response submit --trajectory ${trajectoryId} --from-run ${runId} --file <response.json>` : undefined;
118
+ }
115
119
  export function registerCompareCommand(program) {
116
120
  const compare = program.command('compare').description('Compare Limner artifacts');
117
121
  compare
@@ -120,8 +124,6 @@ export function registerCompareCommand(program) {
120
124
  .requiredOption('-t, --target <name>', 'target name')
121
125
  .option('--headed', 'show browser while capturing')
122
126
  .option('--full-page', 'capture the full scrollable page')
123
- .option('--spec', 'prepare or validate an agent-authored visual spec pack')
124
- .option('--spec-instructions <path>', 'custom visual spec instructions markdown file')
125
127
  .option('--no-agent-comparison', 'skip the default agent comparison prompt pack')
126
128
  .option('--viewport-only', 'capture only the viewport (default)')
127
129
  .action(async (options, command) => {
@@ -131,8 +133,6 @@ export function registerCompareCommand(program) {
131
133
  target: options.target,
132
134
  headed: options.headed,
133
135
  fullPage: options.fullPage,
134
- spec: options.spec,
135
- specInstructions: options.specInstructions,
136
136
  agentComparison: options.agentComparison,
137
137
  });
138
138
  console.log(`Side-by-side: ${result.sideBySidePath}`);
@@ -146,14 +146,6 @@ export function registerCompareCommand(program) {
146
146
  console.log(`Custom instructions: ${result.agentSpec.instructionsPath}`);
147
147
  console.log(`Agent response target: ${result.agentSpec.responsePath}`);
148
148
  }
149
- if (result.specPaths) {
150
- console.log(`Ideal visual spec: ${result.specPaths.idealSpecPath}`);
151
- console.log(`Reference visual spec: ${result.specPaths.referenceSpecPath}`);
152
- console.log(`Visual spec diff: ${result.specPaths.diffPath}`);
153
- }
154
- else if (options.spec) {
155
- console.log('Visual spec status: awaiting validated agent response');
156
- }
157
149
  console.log(`Report: ${result.reportPath}`);
158
150
  });
159
151
  compare
@@ -1 +1 @@
1
- {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../src/commands/compare.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../src/commands/compare.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { advanceLoop, closeLoop, compareLoop, getLoopStatus, getLoopTask, recordLoopAction, startLoop } from './loop.js';
1
+ import { readFileSync } from 'node:fs';
2
+ import { advanceLoop, closeLoop, compareLoop, getLoopStatus, getLoopTask, recordLoopAction, startLoop, submitLoopResponse } from './loop.js';
2
3
  export function registerLoopCommand(program) {
3
4
  const loop = program.command('loop').description('Manage Limner comparison loops');
4
5
  loop
@@ -30,9 +31,17 @@ export function registerLoopCommand(program) {
30
31
  .option('--trajectory <id>', 'trajectory id')
31
32
  .option('-t, --target <name>', 'target name')
32
33
  .option('--mode <mode>', 'loop mode')
34
+ .option('--format <format>', 'output format', 'markdown')
33
35
  .option('--feedback <text>', 'short agent feedback, max 255 characters')
34
36
  .action((options) => {
35
- console.log(getLoopStatus({ trajectoryId: options.trajectory, target: options.target, mode: options.mode, feedback: options.feedback }).lines.join('\n'));
37
+ const result = getLoopStatus({ trajectoryId: options.trajectory, target: options.target, mode: options.mode, feedback: options.feedback });
38
+ if (options.format === 'json') {
39
+ console.log(JSON.stringify(result.status, null, 2));
40
+ return;
41
+ }
42
+ if (options.format && options.format !== 'markdown')
43
+ throw new Error(`Unsupported loop status format: ${options.format}`);
44
+ console.log(result.lines.join('\n'));
36
45
  });
37
46
  loop.command('next').option('--trajectory <id>', 'trajectory id').action((options) => {
38
47
  console.log(`Active iteration: ${advanceLoop({ trajectoryId: options.trajectory }).iterationId}`);
@@ -89,8 +98,32 @@ export function registerLoopCommand(program) {
89
98
  });
90
99
  process.stdout.write(result.output);
91
100
  });
101
+ registerLoopResponseCommand(loop);
92
102
  registerLoopActionCommand(loop);
93
103
  }
104
+ function registerLoopResponseCommand(loop) {
105
+ const response = loop.command('response').description('Submit agent comparison responses to the local SQLite ledger');
106
+ addActionSelector(response.command('submit')
107
+ .requiredOption('--from-run <run-id>', 'comparison run id')
108
+ .option('--file <path>', 'agent response JSON file')
109
+ .option('--stdin', 'read agent response JSON from stdin'))
110
+ .action(async (options) => {
111
+ const result = await submitLoopResponse({
112
+ trajectoryId: options.trajectory,
113
+ target: options.target,
114
+ mode: options.mode,
115
+ fromRun: options.fromRun,
116
+ filePath: options.file,
117
+ responseJson: options.stdin ? readFileSync(0, 'utf8') : undefined,
118
+ });
119
+ console.log(`Agent response: ${result.responseId}`);
120
+ console.log(`Status: ${result.status}`);
121
+ if (result.summaryPath)
122
+ console.log(`Comparison summary: ${result.summaryPath}`);
123
+ if (result.validationErrors?.length)
124
+ console.log(result.validationErrors.join('\n'));
125
+ });
126
+ }
94
127
  function registerLoopActionCommand(loop) {
95
128
  const action = loop.command('action').description('Record loop action ledger events');
96
129
  addActionSelector(action.command('start')
@@ -1 +1 @@
1
- {"version":3,"file":"loop-cli.js","sourceRoot":"","sources":["../../src/commands/loop-cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loop-cli.js","sourceRoot":"","sources":["../../src/commands/loop-cli.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ export type LoopCompareInput = {
5
5
  workspaceRoot: string;
6
6
  target: string;
7
7
  mode: LedgerMode;
8
+ trajectoryId?: string;
8
9
  url?: string;
9
10
  storageState?: string;
10
11
  headed?: boolean;
@@ -10,7 +10,7 @@ import { resolveTargetWithSource, resolveWorkspace } from '../core/workspace.js'
10
10
  import { compareImageReference, compareReferenceImplementation } from './compare.js';
11
11
  export async function runLoopComparison(input) {
12
12
  if (input.mode === 'image-mockup') {
13
- return compareImageReference({ workspaceRoot: input.workspaceRoot, target: input.target, headed: input.headed, fullPage: input.fullPage });
13
+ return compareImageReference({ workspaceRoot: input.workspaceRoot, target: input.target, headed: input.headed, fullPage: input.fullPage, trajectoryId: input.trajectoryId });
14
14
  }
15
15
  if (input.mode === 'mockup-implementation') {
16
16
  if (!input.url)
@@ -22,6 +22,7 @@ export async function runLoopComparison(input) {
22
22
  headed: input.headed,
23
23
  storageState: input.storageState,
24
24
  fullPage: input.fullPage,
25
+ trajectoryId: input.trajectoryId,
25
26
  });
26
27
  }
27
28
  return compareImageImplementation(input);
@@ -55,6 +56,7 @@ async function compareImageImplementation(input) {
55
56
  captureDir,
56
57
  mode: 'image-implementation',
57
58
  profile: 'ideal-to-implementation',
59
+ responseSubmitCommand: responseSubmitCommand(input.trajectoryId, logger.runId),
58
60
  imageInputs: {
59
61
  expectedImagePath: target.sourceImagePath,
60
62
  actualImagePath: implementationPath,
@@ -66,7 +68,7 @@ async function compareImageImplementation(input) {
66
68
  `Source image: ${target.sourceImagePath}`,
67
69
  `Implementation: ${implementationPath}`,
68
70
  `Side-by-side: ${sideBySidePath}`,
69
- `Agent comparison: ${agentComparison.responsePath}`,
71
+ 'Agent comparison response store: local SQLite ledger',
70
72
  '',
71
73
  ].join('\n'));
72
74
  await logger.artifact(implementationPath, 'screenshot');
@@ -96,4 +98,7 @@ async function compareImageImplementation(input) {
96
98
  throw error;
97
99
  }
98
100
  }
101
+ function responseSubmitCommand(trajectoryId, runId) {
102
+ return trajectoryId ? `limner loop response submit --trajectory ${trajectoryId} --from-run ${runId} --file <response.json>` : undefined;
103
+ }
99
104
  //# sourceMappingURL=loop-comparison-adapters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loop-comparison-adapters.js","sourceRoot":"","sources":["../../src/commands/loop-comparison-adapters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loop-comparison-adapters.js","sourceRoot":"","sources":["../../src/commands/loop-comparison-adapters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { LedgerMode } from '../schemas/ledger.js';
2
+ type LedgerEnv = Partial<Pick<NodeJS.ProcessEnv, 'LIMNER_LEDGER_HOME'>>;
3
+ type TrajectorySelector = {
4
+ ledgerEnv?: LedgerEnv;
5
+ trajectoryId?: string;
6
+ target?: string;
7
+ mode?: LedgerMode;
8
+ };
9
+ export type SubmitLoopResponseInput = TrajectorySelector & {
10
+ fromRun: string;
11
+ filePath?: string;
12
+ responseJson?: string;
13
+ };
14
+ export declare function submitLoopResponse(input: SubmitLoopResponseInput): Promise<{
15
+ status: "validated" | "invalid";
16
+ freshness: import("../core/agent-comparison-response.js").AgentResponseFreshness;
17
+ responseJson: string;
18
+ responseHash: string;
19
+ validationErrors?: string[];
20
+ imageComparisonPath?: string;
21
+ structureComparisonPath?: string;
22
+ summaryPath?: string;
23
+ score?: {
24
+ imageOverall: number;
25
+ structureOverall?: number;
26
+ };
27
+ topFix?: string;
28
+ scoreHighlights?: string[];
29
+ responseId: string;
30
+ }>;
31
+ export {};
@@ -0,0 +1,84 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { artifact } from '../core/comparison-artifacts.js';
3
+ import { openLedgerDatabase } from '../core/ledger-db.js';
4
+ import { resolveLedgerPaths } from '../core/ledger-paths.js';
5
+ import { createLedgerStore } from '../core/ledger-store.js';
6
+ import { submitAgentComparisonResponse } from '../core/agent-comparison-submit.js';
7
+ export async function submitLoopResponse(input) {
8
+ const responseJson = await getResponseJson(input);
9
+ return withStoreAsync(input.ledgerEnv, async (store, db) => {
10
+ const trajectory = store.resolveTrajectory(selector(input));
11
+ const context = findComparisonContext(db, trajectory.trajectoryId, input.fromRun);
12
+ const result = await submitAgentComparisonResponse(context, responseJson);
13
+ const response = store.recordAgentResponse({
14
+ trajectoryId: trajectory.trajectoryId,
15
+ iterationId: trajectory.activeIterationId ?? undefined,
16
+ runId: input.fromRun,
17
+ mode: trajectory.mode,
18
+ profile: context.profile,
19
+ responsePath: responseStorePath(trajectory.trajectoryId, input.fromRun),
20
+ responseHash: result.responseHash,
21
+ freshness: result.freshness,
22
+ validationStatus: result.status,
23
+ inputFingerprint: context.inputFingerprint,
24
+ comparisonContext: context,
25
+ responseJson: result.responseJson,
26
+ score: result.score,
27
+ topFix: result.topFix,
28
+ });
29
+ store.appendEvent({
30
+ trajectoryId: trajectory.trajectoryId,
31
+ iterationId: trajectory.activeIterationId ?? undefined,
32
+ eventType: result.status === 'validated' ? 'loop.response.validated' : 'loop.response.invalid',
33
+ actor: 'agent',
34
+ command: 'loop response submit',
35
+ runId: input.fromRun,
36
+ resultStatus: result.status,
37
+ artifactRefs: responseArtifacts(result),
38
+ notes: result.validationErrors?.join('\n'),
39
+ });
40
+ return { responseId: response.responseId, ...result };
41
+ });
42
+ }
43
+ async function getResponseJson(input) {
44
+ if (input.responseJson !== undefined)
45
+ return input.responseJson;
46
+ if (input.filePath)
47
+ return readFile(input.filePath, 'utf8');
48
+ throw new Error('loop response submit requires --file or --stdin.');
49
+ }
50
+ function findComparisonContext(db, trajectoryId, runId) {
51
+ const row = db.prepare(`
52
+ select comparison_context_json as comparisonContextJson
53
+ from agent_responses
54
+ where trajectory_id = ? and run_id = ? and comparison_context_json is not null
55
+ order by rowid asc
56
+ limit 1
57
+ `).get(trajectoryId, runId);
58
+ if (!row?.comparisonContextJson)
59
+ throw new Error(`No comparison context found for run ${runId}. Run limner loop compare first.`);
60
+ return JSON.parse(row.comparisonContextJson);
61
+ }
62
+ function responseArtifacts(result) {
63
+ return [
64
+ ...artifact(result.imageComparisonPath, 'image-comparison'),
65
+ ...artifact(result.structureComparisonPath, 'structure-comparison'),
66
+ ...artifact(result.summaryPath, 'comparison-summary'),
67
+ ];
68
+ }
69
+ function responseStorePath(trajectoryId, runId) {
70
+ return `sqlite://limner/agent_responses/${trajectoryId}/${runId}`;
71
+ }
72
+ function selector(input) {
73
+ return { trajectoryId: input.trajectoryId, target: input.target, mode: input.mode };
74
+ }
75
+ async function withStoreAsync(env, callback) {
76
+ const db = openLedgerDatabase({ databasePath: resolveLedgerPaths(env).databasePath });
77
+ try {
78
+ return await callback(createLedgerStore(db), db);
79
+ }
80
+ finally {
81
+ db.close();
82
+ }
83
+ }
84
+ //# sourceMappingURL=loop-response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop-response.js","sourceRoot":"","sources":["../../src/commands/loop-response.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAuB,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAA+B,MAAM,yBAAyB,CAAC;AACzF,OAAO,EAAE,6BAA6B,EAA+B,MAAM,oCAAoC,CAAC;AAYhH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAA8B;IACrE,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC;IAClD,OAAO,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;QACzD,MAAM,UAAU,GAAG,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,qBAAqB,CAAC,EAAE,EAAE,UAAU,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAClF,MAAM,MAAM,GAAG,MAAM,6BAA6B,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC1E,MAAM,QAAQ,GAAG,KAAK,CAAC,mBAAmB,CAAC;YACzC,YAAY,EAAE,UAAU,CAAC,YAAY;YACrC,WAAW,EAAE,UAAU,CAAC,iBAAiB,IAAI,SAAS;YACtD,KAAK,EAAE,KAAK,CAAC,OAAO;YACpB,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,YAAY,EAAE,iBAAiB,CAAC,UAAU,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;YACvE,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,gBAAgB,EAAE,MAAM,CAAC,MAAM;YAC/B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,iBAAiB,EAAE,OAAO;YAC1B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAC;QACH,KAAK,CAAC,WAAW,CAAC;YAChB,YAAY,EAAE,UAAU,CAAC,YAAY;YACrC,WAAW,EAAE,UAAU,CAAC,iBAAiB,IAAI,SAAS;YACtD,SAAS,EAAE,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,uBAAuB;YAC9F,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,sBAAsB;YAC/B,KAAK,EAAE,KAAK,CAAC,OAAO;YACpB,YAAY,EAAE,MAAM,CAAC,MAAM;YAC3B,YAAY,EAAE,iBAAiB,CAAC,MAAM,CAAC;YACvC,KAAK,EAAE,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC;SAC3C,CAAC,CAAC;QACH,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,GAAG,MAAM,EAAE,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,KAA8B;IAC3D,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,YAAY,CAAC;IAChE,IAAI,KAAK,CAAC,QAAQ;QAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC5D,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,qBAAqB,CAAC,EAAkB,EAAE,YAAoB,EAAE,KAAa;IACpF,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;GAMtB,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAmD,CAAC;IAC9E,IAAI,CAAC,GAAG,EAAE,qBAAqB;QAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,KAAK,kCAAkC,CAAC,CAAC;IACjI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAA2B,CAAC;AACzE,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAgG;IACzH,OAAO;QACL,GAAG,QAAQ,CAAC,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,CAAC;QAC3D,GAAG,QAAQ,CAAC,MAAM,CAAC,uBAAuB,EAAE,sBAAsB,CAAC;QACnE,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,oBAAoB,CAAC;KACtD,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,YAAoB,EAAE,KAAa;IAC5D,OAAO,mCAAmC,YAAY,IAAI,KAAK,EAAE,CAAC;AACpE,CAAC;AAED,SAAS,QAAQ,CAAC,KAAyB;IACzC,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;AACtF,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,GAA0B,EAC1B,QAAyF;IAEzF,MAAM,EAAE,GAAG,kBAAkB,CAAC,EAAE,YAAY,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;IACtF,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC"}
@@ -20,6 +20,8 @@ export async function getLoopTask(input) {
20
20
  mode: trajectory.mode,
21
21
  workspaceRoot: input.workspaceRoot ?? process.cwd(),
22
22
  comparisonSummaryPath: latestComparison.summaryPath,
23
+ comparisonSummaryJson: latestComparison.summaryJson,
24
+ comparisonSource: latestComparison.source,
23
25
  sourceRunId: latestComparison.runId,
24
26
  desiredExecutor,
25
27
  rerunCommand: buildLoopCompareRerunCommand(trajectory, latestComparison.inputsSummary),
@@ -54,8 +56,21 @@ function taskOutputFormat(format) {
54
56
  throw new Error(`Unsupported loop task format: ${format}`);
55
57
  }
56
58
  function latestValidatedComparison(exported) {
59
+ for (const response of [...exported.agentResponses].reverse()) {
60
+ if (response.validationStatus !== 'validated' || !response.responseJson)
61
+ continue;
62
+ if (!response.runId)
63
+ return { ok: false, reason: 'missing-run-id' };
64
+ return {
65
+ ok: true,
66
+ source: response.responsePath,
67
+ summaryJson: response.responseJson,
68
+ inputsSummary: findCompareInputs(exported, response.runId),
69
+ runId: response.runId,
70
+ };
71
+ }
57
72
  for (const event of [...exported.events].reverse()) {
58
- if (event.eventType !== 'loop.compare.validated' || event.resultStatus !== 'validated')
73
+ if (!isValidatedComparisonEvent(event) || event.resultStatus !== 'validated')
59
74
  continue;
60
75
  if (!event.runId)
61
76
  return { ok: false, reason: 'missing-run-id' };
@@ -66,14 +81,17 @@ function latestValidatedComparison(exported) {
66
81
  return { ok: false, reason: 'summary-marked-missing', runId: event.runId, summaryPath: summary.path };
67
82
  if (!existsSync(summary.path))
68
83
  return { ok: false, reason: 'summary-missing-on-disk', runId: event.runId, summaryPath: summary.path };
69
- return { ok: true, summaryPath: summary.path, inputsSummary: event.inputsSummary, runId: event.runId };
84
+ return { ok: true, source: summary.path, summaryPath: summary.path, inputsSummary: event.inputsSummary, runId: event.runId };
70
85
  }
71
86
  return { ok: false, reason: 'none' };
72
87
  }
88
+ function findCompareInputs(exported, runId) {
89
+ return [...exported.events].reverse().find((event) => event.runId === runId && event.inputsSummary)?.inputsSummary ?? null;
90
+ }
73
91
  function latestComparisonError(result) {
74
92
  switch (result.reason) {
75
93
  case 'none':
76
- return 'No validated comparison summary found. Write agent-response.json, then run limner loop compare first.';
94
+ return 'No validated comparison summary found. Run limner loop compare, submit an agent response with limner loop response submit, then try again.';
77
95
  case 'missing-run-id':
78
96
  return 'Latest validated comparison is missing a run id, so loop task cannot create a sourceRunId.';
79
97
  case 'missing-summary-artifact':
@@ -92,4 +110,7 @@ function parseArtifactRefs(raw) {
92
110
  ? parsed.filter((value) => typeof value === 'object' && value !== null && 'path' in value && 'kind' in value && typeof value.path === 'string' && typeof value.kind === 'string')
93
111
  : [];
94
112
  }
113
+ function isValidatedComparisonEvent(event) {
114
+ return event.eventType === 'loop.compare.validated' || event.eventType === 'loop.response.validated';
115
+ }
95
116
  //# sourceMappingURL=loop-task.js.map