@neonwatty/limner 0.1.7 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -31
- package/dist/commands/compare-image-reference.d.ts +1 -0
- package/dist/commands/compare-image-reference.js +4 -0
- package/dist/commands/compare-image-reference.js.map +1 -1
- package/dist/commands/compare-output.js +1 -1
- package/dist/commands/compare-output.js.map +1 -1
- package/dist/commands/compare.d.ts +1 -0
- package/dist/commands/compare.js +4 -12
- package/dist/commands/compare.js.map +1 -1
- package/dist/commands/loop-cli.js +26 -1
- package/dist/commands/loop-cli.js.map +1 -1
- package/dist/commands/loop-comparison-adapters.d.ts +1 -0
- package/dist/commands/loop-comparison-adapters.js +7 -2
- package/dist/commands/loop-comparison-adapters.js.map +1 -1
- package/dist/commands/loop-response.d.ts +31 -0
- package/dist/commands/loop-response.js +84 -0
- package/dist/commands/loop-response.js.map +1 -0
- package/dist/commands/loop-task.js +5 -2
- package/dist/commands/loop-task.js.map +1 -1
- package/dist/commands/loop.d.ts +1 -0
- package/dist/commands/loop.js +3 -0
- package/dist/commands/loop.js.map +1 -1
- package/dist/core/agent-comparison-pack.d.ts +5 -1
- package/dist/core/agent-comparison-pack.js +17 -100
- package/dist/core/agent-comparison-pack.js.map +1 -1
- package/dist/core/agent-comparison-prompts.d.ts +1 -1
- package/dist/core/agent-comparison-prompts.js +4 -4
- package/dist/core/agent-comparison-prompts.js.map +1 -1
- package/dist/core/agent-comparison-report.js +2 -2
- package/dist/core/agent-comparison-report.js.map +1 -1
- package/dist/core/agent-comparison-response.d.ts +0 -18
- package/dist/core/agent-comparison-response.js +1 -33
- package/dist/core/agent-comparison-response.js.map +1 -1
- package/dist/core/agent-comparison-submit.d.ts +35 -0
- package/dist/core/agent-comparison-submit.js +113 -0
- package/dist/core/agent-comparison-submit.js.map +1 -0
- package/dist/core/comparison-artifacts.js +3 -8
- package/dist/core/comparison-artifacts.js.map +1 -1
- package/dist/core/ledger-agent-responses.d.ts +1 -0
- package/dist/core/ledger-agent-responses.js +3 -3
- package/dist/core/ledger-agent-responses.js.map +1 -1
- package/dist/core/ledger-db.js +2 -0
- package/dist/core/ledger-db.js.map +1 -1
- package/dist/core/ledger-markdown.js +1 -1
- package/dist/core/ledger-markdown.js.map +1 -1
- package/dist/core/ledger-queries.js +2 -1
- package/dist/core/ledger-queries.js.map +1 -1
- package/dist/core/report-writer.js +1 -1
- package/docs/agent-workflow.md +11 -13
- package/docs/archive/visual-spec-workflow.md +23 -0
- package/docs/goals/db-native-agent-responses/goal.md +91 -0
- package/docs/goals/db-native-agent-responses/state.yaml +240 -0
- package/package.json +1 -1
- package/skills/limner/SKILL.md +9 -19
- package/templates/target/AGENT_GUIDE.md +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger-agent-responses.js","sourceRoot":"","sources":["../../src/core/ledger-agent-responses.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"ledger-agent-responses.js","sourceRoot":"","sources":["../../src/core/ledger-agent-responses.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAoBjD,MAAM,UAAU,mBAAmB,CAAC,EAAkB,EAAE,KAA+B,EAAE,GAAW;IAClG,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAC1C,EAAE,CAAC,OAAO,CAAC;;;;;;GAMV,CAAC,CAAC,GAAG,CACJ,UAAU,EACV,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,WAAW,IAAI,IAAI,EACzB,KAAK,CAAC,KAAK,IAAI,IAAI,EACnB,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,OAAO,IAAI,IAAI,EACrB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,YAAY,IAAI,IAAI,EAC1B,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,gBAAgB,EACtB,KAAK,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC,EACpF,KAAK,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,iBAAiB,CAAC,EACtF,KAAK,CAAC,YAAY,IAAI,IAAI,EAC1B,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAC9D,KAAK,CAAC,MAAM,IAAI,IAAI,EACpB,GAAG,CACJ,CAAC;IACF,OAAO,EAAE,UAAU,EAAE,CAAC;AACxB,CAAC"}
|
package/dist/core/ledger-db.js
CHANGED
|
@@ -112,6 +112,7 @@ function migrate(db) {
|
|
|
112
112
|
freshness text not null,
|
|
113
113
|
validation_status text not null,
|
|
114
114
|
input_fingerprint_json text,
|
|
115
|
+
comparison_context_json text,
|
|
115
116
|
response_json text,
|
|
116
117
|
score_json text,
|
|
117
118
|
top_fix text,
|
|
@@ -124,6 +125,7 @@ function migrate(db) {
|
|
|
124
125
|
`);
|
|
125
126
|
ensureColumn(db, 'artifacts', 'role', "text not null default 'artifact'");
|
|
126
127
|
ensureColumn(db, 'artifacts', 'exists_on_disk', 'integer');
|
|
128
|
+
ensureColumn(db, 'agent_responses', 'comparison_context_json', 'text');
|
|
127
129
|
}
|
|
128
130
|
function ensureColumn(db, tableName, columnName, definition) {
|
|
129
131
|
const columns = db.prepare(`pragma table_info(${tableName})`).all();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger-db.js","sourceRoot":"","sources":["../../src/core/ledger-db.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,aAAa,GAAG,CAAC,CAAC;AAQxB,MAAM,UAAU,kBAAkB,CAAC,KAA0B;IAC3D,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5C,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,OAAO,CAAC,EAAkB;IACjC,EAAE,CAAC,IAAI,CAAC
|
|
1
|
+
{"version":3,"file":"ledger-db.js","sourceRoot":"","sources":["../../src/core/ledger-db.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,aAAa,GAAG,CAAC,CAAC;AAQxB,MAAM,UAAU,kBAAkB,CAAC,KAA0B;IAC3D,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5C,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,OAAO,CAAC,EAAkB;IACjC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA8GsB,aAAa;;GAE1C,CAAC,CAAC;IACH,YAAY,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,kCAAkC,CAAC,CAAC;IAC1E,YAAY,CAAC,EAAE,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;IAC3D,YAAY,CAAC,EAAE,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,YAAY,CAAC,EAAkB,EAAE,SAAiB,EAAE,UAAkB,EAAE,UAAkB;IACjG,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,qBAAqB,SAAS,GAAG,CAAC,CAAC,GAAG,EAAwB,CAAC;IAC1F,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;QAC1D,EAAE,CAAC,IAAI,CAAC,eAAe,SAAS,eAAe,UAAU,IAAI,UAAU,EAAE,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC"}
|
|
@@ -46,7 +46,7 @@ function formatAgentResponses(responses) {
|
|
|
46
46
|
...(response.responseHash ? [` - hash: ${response.responseHash}`] : []),
|
|
47
47
|
...formatScore(response.scoreJson),
|
|
48
48
|
...(response.topFix ? [` - top fix: ${response.topFix}`] : []),
|
|
49
|
-
` - response: ${response.responsePath}`,
|
|
49
|
+
` - response store: ${response.responsePath}`,
|
|
50
50
|
]);
|
|
51
51
|
}
|
|
52
52
|
function formatScore(raw) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger-markdown.js","sourceRoot":"","sources":["../../src/core/ledger-markdown.ts"],"names":[],"mappings":"AAmCA,MAAM,UAAU,oBAAoB,CAAC,QAA4B;IAC/D,MAAM,uBAAuB,GAAG,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;IAC5J,MAAM,sBAAsB,GAAG,QAAQ,CAAC,gBAAgB,EAAE,eAAe,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;IAC1J,MAAM,KAAK,GAAG;QACZ,qBAAqB;QACrB,EAAE;QACF,eAAe,QAAQ,CAAC,UAAU,CAAC,YAAY,EAAE;QACjD,SAAS,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE;QACtC,SAAS,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE;QACnC,WAAW,QAAQ,CAAC,UAAU,CAAC,MAAM,IAAI,SAAS,EAAE;QACpD,WAAW,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE;QACvC,eAAe,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE;QAC3C,WAAW,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;QACnC,cAAc,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE;QACzC,EAAE;QACF,aAAa;QACb,EAAE;QACF,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QACvC,oBAAoB;QACpB,EAAE;QACF,GAAG,oBAAoB,CAAC,QAAQ,CAAC,cAAc,IAAI,EAAE,CAAC;QACtD,mBAAmB;QACnB,EAAE;QACF,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;QACjC,8BAA8B;QAC9B,EAAE;QACF,GAAG,eAAe,CAAC,uBAAuB,CAAC;QAC3C,6BAA6B;QAC7B,EAAE;QACF,GAAG,eAAe,CAAC,sBAAsB,CAAC;QAC1C,qBAAqB;QACrB,EAAE;QACF,GAAG,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC;QACtC,EAAE;KACH,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,oBAAoB,CAAC,SAA4D;IACxF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACvD,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;QACrC,KAAK,QAAQ,CAAC,UAAU,EAAE;QAC1B,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,eAAe,QAAQ,CAAC,gBAAgB,EAAE;QAC1C,kBAAkB,QAAQ,CAAC,SAAS,EAAE;QACtC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,aAAa,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,GAAG,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC;QAClC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,
|
|
1
|
+
{"version":3,"file":"ledger-markdown.js","sourceRoot":"","sources":["../../src/core/ledger-markdown.ts"],"names":[],"mappings":"AAmCA,MAAM,UAAU,oBAAoB,CAAC,QAA4B;IAC/D,MAAM,uBAAuB,GAAG,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;IAC5J,MAAM,sBAAsB,GAAG,QAAQ,CAAC,gBAAgB,EAAE,eAAe,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;IAC1J,MAAM,KAAK,GAAG;QACZ,qBAAqB;QACrB,EAAE;QACF,eAAe,QAAQ,CAAC,UAAU,CAAC,YAAY,EAAE;QACjD,SAAS,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE;QACtC,SAAS,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE;QACnC,WAAW,QAAQ,CAAC,UAAU,CAAC,MAAM,IAAI,SAAS,EAAE;QACpD,WAAW,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE;QACvC,eAAe,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE;QAC3C,WAAW,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;QACnC,cAAc,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE;QACzC,EAAE;QACF,aAAa;QACb,EAAE;QACF,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QACvC,oBAAoB;QACpB,EAAE;QACF,GAAG,oBAAoB,CAAC,QAAQ,CAAC,cAAc,IAAI,EAAE,CAAC;QACtD,mBAAmB;QACnB,EAAE;QACF,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;QACjC,8BAA8B;QAC9B,EAAE;QACF,GAAG,eAAe,CAAC,uBAAuB,CAAC;QAC3C,6BAA6B;QAC7B,EAAE;QACF,GAAG,eAAe,CAAC,sBAAsB,CAAC;QAC1C,qBAAqB;QACrB,EAAE;QACF,GAAG,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC;QACtC,EAAE;KACH,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,oBAAoB,CAAC,SAA4D;IACxF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACvD,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;QACrC,KAAK,QAAQ,CAAC,UAAU,EAAE;QAC1B,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,eAAe,QAAQ,CAAC,gBAAgB,EAAE;QAC1C,kBAAkB,QAAQ,CAAC,SAAS,EAAE;QACtC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,aAAa,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,GAAG,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC;QAClC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,uBAAuB,QAAQ,CAAC,YAAY,EAAE;KAC/C,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,GAAuB;IAC1C,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA2D,CAAC;QACzF,OAAO;YACL,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,oBAAoB,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS;YAC/F,OAAO,MAAM,CAAC,gBAAgB,KAAK,QAAQ,CAAC,CAAC,CAAC,wBAAwB,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,SAAS;SAC5G,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,KAAoB;IACvC,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACrG,OAAO;QACL,KAAK,KAAK,CAAC,SAAS,IAAI,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,YAAY,IAAI,SAAS,GAAG;QAC3F,cAAc,KAAK,CAAC,KAAK,IAAI,SAAS,EAAE;QACxC,gBAAgB,KAAK,CAAC,OAAO,IAAI,SAAS,EAAE;QAC5C,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,iBAAiB,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,GAAG,OAAO;QACV,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,UAAU,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;KACzH,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,MAAuB;IAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;IACrF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACrD,OAAO,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,YAAY,CAAC,KAAoB;IACxC,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC;IAChF,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC;IAClF,OAAO;QACL,KAAK,QAAQ,EAAE;QACf,eAAe,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,cAAc,IAAI,KAAK,CAAC,YAAY,IAAI,SAAS,EAAE;QAClG,GAAG,YAAY,CAAC,UAAU,EAAE,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC;QAC1E,GAAG,YAAY,CAAC,UAAU,EAAE,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC5D,GAAG,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC;QACxE,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5E,GAAG,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;KACxD,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAuB;IACjD,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;QAC1C,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAiC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAa,EAAE,KAAyB;IAC5D,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACjD,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAe;IACxC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACpE,CAAC;AAED,SAAS,aAAa,CAAC,GAAuB;IAC5C,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;QAC1D,MAAM,KAAK,GAAG;YACZ,OAAO,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;YACvC,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YACrF,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;YAC3F,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC;SACxB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,GAAuB;IACxC,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,CAAC;QACtC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAChF,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5F,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,gBAAgB,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;YACpH,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,SAAwB;IAC/C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACvD,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QAChC,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,KAAK,IAAI,IAAI,QAAQ,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9I,OAAO,KAAK,QAAQ,CAAC,IAAI,KAAK,MAAM,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,KAAa,EAAE,GAAW;IAC3C,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,OAAO,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACnE,CAAC;AAED,SAAS,cAAc,CAAC,KAAa,EAAE,GAAW;IAChD,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAClH,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3E,CAAC"}
|
|
@@ -38,7 +38,8 @@ export function exportTrajectoryRows(db, trajectory) {
|
|
|
38
38
|
notes: db.prepare('select note_id as noteId, body from notes where trajectory_id = ? order by rowid').all(trajectoryId),
|
|
39
39
|
agentResponses: db.prepare(`select response_id as responseId, iteration_id as iterationId, run_id as runId, mode, profile,
|
|
40
40
|
response_path as responsePath, response_hash as responseHash, freshness, validation_status as validationStatus,
|
|
41
|
-
input_fingerprint_json as inputFingerprintJson,
|
|
41
|
+
input_fingerprint_json as inputFingerprintJson, comparison_context_json as comparisonContextJson,
|
|
42
|
+
response_json as responseJson, score_json as scoreJson,
|
|
42
43
|
top_fix as topFix, created_at as createdAt from agent_responses where trajectory_id = ? order by rowid`).all(trajectoryId),
|
|
43
44
|
artifacts,
|
|
44
45
|
currentArtifacts: getCurrentArtifacts(artifacts),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger-queries.js","sourceRoot":"","sources":["../../src/core/ledger-queries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAK7D,MAAM,UAAU,iBAAiB,CAAC,EAAkB,EAAE,KAA6B;IACjF,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI;QAC5B,CAAC,eAAe,EAAE,KAAK,CAAC,YAAY,CAAC;QACrC,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;QACxB,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC;QACpB,CAAC,cAAc,EAAE,KAAK,CAAC,WAAW,CAAC;QACnC,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;KAC/D,EAAE,CAAC;QACX,IAAI,KAAK,EAAE,CAAC;YACV,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,MAAM,CAAC,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/E,OAAO,EAAE,CAAC,OAAO,CAAC,UAAU,iBAAiB,sBAAsB,KAAK,gCAAgC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAwB,CAAC;AAClJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAkB,EAAE,YAAoB;IACpE,OAAO,EAAE,CAAC,OAAO,CAAC,UAAU,iBAAiB,4CAA4C,CAAC,CAAC,GAAG,CAAC,YAAY,CAAkC,CAAC;AAChJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAkB,EAAE,YAAoB;IACpE,OAAO,EAAE,CAAC,OAAO,CAAC,gHAAgH,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AACxJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,EAAkB,EAAE,UAA6B;IACpF,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC;IAC7C,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC;8FAC+D,CAAC,CAAC,GAAG,CAAC,YAAY,CAAwB,CAAC;IACvI,OAAO;QACL,UAAU;QACV,UAAU,EAAE,aAAa,CAAC,EAAE,EAAE,YAAY,CAAC;QAC3C,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC;;gEAEyC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;QAC/E,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,uHAAuH,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;QAC3J,mBAAmB,EAAE,EAAE,CAAC,OAAO,CAAC,wIAAwI,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;QAC3L,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,kFAAkF,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;QACvH,cAAc,EAAE,EAAE,CAAC,OAAO,CAAC
|
|
1
|
+
{"version":3,"file":"ledger-queries.js","sourceRoot":"","sources":["../../src/core/ledger-queries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAK7D,MAAM,UAAU,iBAAiB,CAAC,EAAkB,EAAE,KAA6B;IACjF,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI;QAC5B,CAAC,eAAe,EAAE,KAAK,CAAC,YAAY,CAAC;QACrC,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;QACxB,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC;QACpB,CAAC,cAAc,EAAE,KAAK,CAAC,WAAW,CAAC;QACnC,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;KAC/D,EAAE,CAAC;QACX,IAAI,KAAK,EAAE,CAAC;YACV,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,MAAM,CAAC,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/E,OAAO,EAAE,CAAC,OAAO,CAAC,UAAU,iBAAiB,sBAAsB,KAAK,gCAAgC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAwB,CAAC;AAClJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAkB,EAAE,YAAoB;IACpE,OAAO,EAAE,CAAC,OAAO,CAAC,UAAU,iBAAiB,4CAA4C,CAAC,CAAC,GAAG,CAAC,YAAY,CAAkC,CAAC;AAChJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAkB,EAAE,YAAoB;IACpE,OAAO,EAAE,CAAC,OAAO,CAAC,gHAAgH,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AACxJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,EAAkB,EAAE,UAA6B;IACpF,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC;IAC7C,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC;8FAC+D,CAAC,CAAC,GAAG,CAAC,YAAY,CAAwB,CAAC;IACvI,OAAO;QACL,UAAU;QACV,UAAU,EAAE,aAAa,CAAC,EAAE,EAAE,YAAY,CAAC;QAC3C,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC;;gEAEyC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;QAC/E,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,uHAAuH,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;QAC3J,mBAAmB,EAAE,EAAE,CAAC,OAAO,CAAC,wIAAwI,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;QAC3L,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,kFAAkF,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;QACvH,cAAc,EAAE,EAAE,CAAC,OAAO,CAAC;;;;6GAI8E,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;QAC5H,SAAS;QACT,gBAAgB,EAAE,mBAAmB,CAAC,SAAS,CAAC;KACjD,CAAC;AACJ,CAAC;AAED,MAAM,iBAAiB,GAAG;;;;;;;;;CASzB,CAAC"}
|
|
@@ -127,7 +127,7 @@ function formatAgentSpecStatus(agentSpec) {
|
|
|
127
127
|
## Visual Spec Status
|
|
128
128
|
|
|
129
129
|
- Agent-required spec pack generated.
|
|
130
|
-
- Next step: have an agent inspect the ideal image and reference artifacts, then write
|
|
130
|
+
- Next step: have an agent inspect the ideal image and reference artifacts, then write structured JSON to the response path named by the spec prompt.
|
|
131
131
|
- Rerun \`limner compare image-reference --target <target> --spec\` after the response file exists.`;
|
|
132
132
|
}
|
|
133
133
|
if (agentSpec.status === 'invalid') {
|
package/docs/agent-workflow.md
CHANGED
|
@@ -12,13 +12,13 @@ Use `limner loop` when a screen will need Ralph Loop-style iteration. Limner sto
|
|
|
12
12
|
|
|
13
13
|
1. Start a trajectory with `limner loop start --mode <mode> --target <name> --name <human-name> --max-iterations <count>`.
|
|
14
14
|
2. Run `limner loop compare --trajectory <trajectory-id>`.
|
|
15
|
-
3. Read the generated agent comparison prompt
|
|
16
|
-
4.
|
|
15
|
+
3. Read the generated agent comparison prompt.
|
|
16
|
+
4. Submit the agent response with `limner loop response submit --trajectory <trajectory-id> --from-run <run-id> --file ./response.json`.
|
|
17
17
|
5. Use `limner loop status --trajectory <trajectory-id>` to inspect current state.
|
|
18
18
|
6. Use `limner loop next --trajectory <trajectory-id>` to begin the next scoped fix.
|
|
19
19
|
7. Use `limner loop close --trajectory <trajectory-id>` when the trajectory is done.
|
|
20
20
|
|
|
21
|
-
Every meaningful loop interaction writes a ledger event. Agent responses are
|
|
21
|
+
Every meaningful loop interaction writes a ledger event. Agent responses are submitted to the local SQLite DB with the full JSON body, hash, validation status, and freshness. Use `--feedback "<short note>"` on loop status for a 255-character `agentFeedback` note about improving the current process.
|
|
22
22
|
|
|
23
23
|
Use `limner ledger export <trajectory-id> --format markdown` when an agent needs a compact case file for a trajectory.
|
|
24
24
|
|
|
@@ -27,7 +27,7 @@ Use `limner ledger export <trajectory-id> --format markdown` when an agent needs
|
|
|
27
27
|
After validation, the expected edit loop is:
|
|
28
28
|
|
|
29
29
|
```text
|
|
30
|
-
loop compare -> loop task --executor subagent -> loop action start -> edit -> loop action complete -> loop compare
|
|
30
|
+
loop compare -> loop response submit -> loop task --executor subagent -> loop action start -> edit -> loop action complete -> loop compare
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
Prefer `limner loop task --trajectory <trajectory-id> --executor subagent` so the task brief records subagent intent. Before editing, record the source comparison run with `limner loop action start --trajectory <trajectory-id> --from-run <run-id> --kind polish --executor subagent --summary "<short edit intent>"`. After editing, record `limner loop action complete --trajectory <trajectory-id> --action <action-id> --executor subagent --summary "<what changed>" --files "<paths>"`, then rerun `limner loop compare --trajectory <trajectory-id>`.
|
|
@@ -36,7 +36,7 @@ Use `limner loop action skip --trajectory <trajectory-id> --from-run <run-id> --
|
|
|
36
36
|
|
|
37
37
|
## Agent Handoff After Validation
|
|
38
38
|
|
|
39
|
-
After
|
|
39
|
+
After `limner loop response submit` reports `Status: validated`, use:
|
|
40
40
|
|
|
41
41
|
```bash
|
|
42
42
|
limner loop task --trajectory <trajectory-id> --executor subagent
|
|
@@ -60,21 +60,19 @@ Ledger exports remain append-only for audit history, but the top artifact sectio
|
|
|
60
60
|
4. Rebuild `reference/index.html` and `reference/styles.css` as a faithful HTML facsimile.
|
|
61
61
|
5. Run `limner compare image-reference --target <name>`.
|
|
62
62
|
6. Read `captures/image-reference/agent-comparison/agent-prompt.codex.md`.
|
|
63
|
-
7.
|
|
64
|
-
8.
|
|
65
|
-
9.
|
|
66
|
-
10. Edit `contract/visual-spec-instructions.md` for target-specific prompt guidance, or pass `--spec-instructions <path>` for a shared prompt policy.
|
|
67
|
-
11. Iterate on one scoped mockup fix at a time until the reference is approved.
|
|
63
|
+
7. Submit the response with `limner loop response submit --trajectory <trajectory-id> --from-run <run-id> --file ./response.json`.
|
|
64
|
+
8. Use the validated `image-comparison.json` and `comparison-summary.json`.
|
|
65
|
+
9. Iterate on one scoped mockup fix at a time until the reference is approved.
|
|
68
66
|
|
|
69
67
|
## Phase 2: Reference To Implementation
|
|
70
68
|
|
|
71
69
|
1. Add implementation selectors to `contract/regions.json` using `appSelector`.
|
|
72
70
|
2. Run `limner compare reference-implementation --target <name> --url <implementation-url>`.
|
|
73
71
|
3. Read `captures/reference-implementation/agent-comparison/agent-prompt.codex.md`.
|
|
74
|
-
4.
|
|
75
|
-
5.
|
|
72
|
+
4. Submit the response with `limner loop response submit --trajectory <trajectory-id> --from-run <run-id> --file ./response.json`.
|
|
73
|
+
5. Use the validated `image-comparison.json`, `structure-comparison.json`, and `comparison-summary.json`.
|
|
76
74
|
6. Fix the implementation and rerun until it matches the approved reference.
|
|
77
75
|
|
|
78
76
|
## Agent Rule
|
|
79
77
|
|
|
80
|
-
Do not treat side-by-side generation as success. It is evidence. The agent must
|
|
78
|
+
Do not treat side-by-side generation as success. It is evidence. The agent must submit the structured comparison response and use its next-iteration guidance for one scoped fix.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Archived Visual Spec Workflow
|
|
2
|
+
|
|
3
|
+
Limner previously exposed an optional `compare image-reference --spec` workflow for source image to mockup work.
|
|
4
|
+
|
|
5
|
+
The workflow asked an external agent to produce a structured visual-spec bundle:
|
|
6
|
+
|
|
7
|
+
- `idealSpec`: design intent inferred from the source image
|
|
8
|
+
- `referenceSpec`: design intent expressed by the rendered HTML mockup
|
|
9
|
+
- `diff`: semantic mismatches and next fixes between those two specs
|
|
10
|
+
|
|
11
|
+
When validated, Limner split the bundle into:
|
|
12
|
+
|
|
13
|
+
- `captures/image-reference/ideal-visual-spec.json`
|
|
14
|
+
- `captures/image-reference/reference-visual-spec.json`
|
|
15
|
+
- `captures/image-reference/visual-spec-diff.json`
|
|
16
|
+
|
|
17
|
+
This lane is archived because the DB-native agent comparison loop now covers the active iteration need more directly:
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
loop compare -> loop response submit -> loop task -> loop action -> loop compare
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
The archived visual-spec code may still be useful as a historical reference for structured design-intent extraction, but active agent workflows should use DB-native comparison responses in the local SQLite ledger.
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# DB-Native Agent Responses
|
|
2
|
+
|
|
3
|
+
## Objective
|
|
4
|
+
|
|
5
|
+
Make Limner treat SQLite as the canonical store and submission path for agent comparison responses, so agents no longer rely on a magic `agent-response.json` file as package state.
|
|
6
|
+
|
|
7
|
+
## Original Request
|
|
8
|
+
|
|
9
|
+
Plan this out using GoalBuddy prep and do the work so Limner stores agent comparison responses in SQLite instead of using `agent-response.json`.
|
|
10
|
+
|
|
11
|
+
## Intake Summary
|
|
12
|
+
|
|
13
|
+
- Input shape: `existing_plan`
|
|
14
|
+
- Audience: Limner users and agents dogfooding visual comparison loops across multiple projects
|
|
15
|
+
- Authority: `approved`
|
|
16
|
+
- Proof type: `test`
|
|
17
|
+
- Completion proof: `npm run check` passes, docs/skills describe the DB-native workflow, and a fresh Seatify loop can submit/read an agent response through SQLite without depending on target-scoped `agent-response.json`.
|
|
18
|
+
- Goal oracle: A local Limner workflow where `loop compare` produces a response submission path, `loop response submit` stores the full JSON in SQLite, ledger/export surfaces that row, and no docs/skills instruct agents to write canonical `agent-response.json`.
|
|
19
|
+
- Likely misfire: Only copying response JSON into SQLite after reading the old file, while leaving the file as the real source of truth.
|
|
20
|
+
- Blind spots considered: migration from existing local ledgers, direct compare command compatibility, stale response detection without file mtimes, generated artifact naming, agent discoverability, and preserving model-agnostic CLI behavior.
|
|
21
|
+
- Existing plan facts: Keep responses local only; SQLite should store the full raw JSON; `agent_responses` belongs beside ledger events rather than inside the ledger event log; agent-readable skills/docs must explain the CLI commands; previous `agent-response.json` freshness semantics showed cached reuse and should become explicit DB submission state instead.
|
|
22
|
+
|
|
23
|
+
## Goal Oracle
|
|
24
|
+
|
|
25
|
+
The oracle for this goal is:
|
|
26
|
+
|
|
27
|
+
`npm run check` passes and a fresh loop can validate a DB-submitted agent comparison response without treating captures/**/agent-response.json as canonical state.`
|
|
28
|
+
|
|
29
|
+
The PM must keep comparing task receipts to this oracle. Planning, discovery, a passing tiny slice, or a clean-looking board is not enough. The goal finishes only when a final Judge/PM audit maps receipts and verification back to this oracle and records `full_outcome_complete: true`.
|
|
30
|
+
|
|
31
|
+
## Goal Kind
|
|
32
|
+
|
|
33
|
+
`existing_plan`
|
|
34
|
+
|
|
35
|
+
## Current Tranche
|
|
36
|
+
|
|
37
|
+
Complete the DB-native response submission and storage tranche: validate the current code path, implement the CLI/storage/prompt/doc changes, verify with tests and `npm run check`, then prepare the branch for PR/release follow-up if green.
|
|
38
|
+
|
|
39
|
+
## Non-Negotiable Constraints
|
|
40
|
+
|
|
41
|
+
- Keep Limner model-agnostic: accept JSON via CLI file or stdin rather than integrating a provider.
|
|
42
|
+
- Keep logs and ledgers local; do not add remote telemetry.
|
|
43
|
+
- Do not commit generated `.limner/`, `dist/`, `node_modules/`, or smoke artifacts.
|
|
44
|
+
- Preserve supported comparison modes: `image-mockup`, `mockup-implementation`, and `image-implementation`.
|
|
45
|
+
- Store the full agent response JSON in SQLite.
|
|
46
|
+
- Do not leave `agent-response.json` as the canonical handoff/state file in docs, skills, or loop behavior.
|
|
47
|
+
- Run `npm run check` before claiming implementation completion or opening a PR.
|
|
48
|
+
|
|
49
|
+
## Stop Rule
|
|
50
|
+
|
|
51
|
+
Stop only when a final audit proves the full original outcome is complete.
|
|
52
|
+
|
|
53
|
+
Do not stop after planning, discovery, or Judge selection if a safe Worker task can be activated.
|
|
54
|
+
|
|
55
|
+
Do not stop after a single verified Worker package when the broader owner outcome still has safe local follow-up work. Advance the board to the next highest-leverage safe Worker package and continue unless a phase, risk, rejected-verification, ambiguity, or final-completion review is due.
|
|
56
|
+
|
|
57
|
+
## Slice Sizing
|
|
58
|
+
|
|
59
|
+
Safe means bounded, explicit, verified, and reversible. It does not mean tiny.
|
|
60
|
+
|
|
61
|
+
A good task is the largest safe useful slice.
|
|
62
|
+
|
|
63
|
+
The Worker should complete the full coherent DB-native response submission slice, including tests and documentation, unless code inspection finds that the slice must be split.
|
|
64
|
+
|
|
65
|
+
## Canonical Board
|
|
66
|
+
|
|
67
|
+
Machine truth lives at:
|
|
68
|
+
|
|
69
|
+
`docs/goals/db-native-agent-responses/state.yaml`
|
|
70
|
+
|
|
71
|
+
If this charter and `state.yaml` disagree, `state.yaml` wins for task status, active task, receipts, verification freshness, and completion truth.
|
|
72
|
+
|
|
73
|
+
## Run Command
|
|
74
|
+
|
|
75
|
+
```text
|
|
76
|
+
/goal Follow docs/goals/db-native-agent-responses/goal.md.
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## PM Loop
|
|
80
|
+
|
|
81
|
+
On every `/goal` continuation:
|
|
82
|
+
|
|
83
|
+
1. Read this charter.
|
|
84
|
+
2. Read `state.yaml`.
|
|
85
|
+
3. Run the bundled GoalBuddy update checker when available and mention a newer version without blocking.
|
|
86
|
+
4. Re-check the likely misfire: do not preserve `agent-response.json` as the canonical response channel.
|
|
87
|
+
5. Work only on the active board task.
|
|
88
|
+
6. Assign Scout, Judge, Worker, or PM according to the task.
|
|
89
|
+
7. Write a compact task receipt.
|
|
90
|
+
8. Update the board.
|
|
91
|
+
9. Continue to the next safe local work package unless final audit proves the goal complete.
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
|
|
3
|
+
goal:
|
|
4
|
+
title: "DB-Native Agent Responses"
|
|
5
|
+
slug: "db-native-agent-responses"
|
|
6
|
+
kind: existing_plan
|
|
7
|
+
tranche: "Implement SQLite-native agent response submission/storage and remove agent-response.json as canonical loop state."
|
|
8
|
+
status: done
|
|
9
|
+
oracle:
|
|
10
|
+
signal: "A fresh Limner loop can submit and validate an agent comparison response through SQLite, docs/skills describe that workflow, and npm run check passes."
|
|
11
|
+
cadence: "after Worker implementation and at final audit"
|
|
12
|
+
final_proof: "Receipt-backed npm run check result plus evidence that docs/skills and CLI behavior no longer make agent-response.json the canonical response state."
|
|
13
|
+
intake:
|
|
14
|
+
original_request: "Plan this out using GoalBuddy prep and make Limner stop using agent-response.json as canonical state."
|
|
15
|
+
interpreted_outcome: "Limner should make SQLite the source of truth and CLI submission channel for agent comparison responses."
|
|
16
|
+
input_shape: existing_plan
|
|
17
|
+
audience: "Limner users and agents running visual polish loops across multiple projects"
|
|
18
|
+
authority: approved
|
|
19
|
+
proof_type: test
|
|
20
|
+
completion_proof: "npm run check passes and a fresh loop validates a DB-submitted agent response without relying on target-scoped agent-response.json."
|
|
21
|
+
likely_misfire: "SQLite stores a copy of the file, but the file remains the true handoff/state mechanism."
|
|
22
|
+
blind_spots_considered:
|
|
23
|
+
- "Existing ledger migration from 0.1.7 rows that used response_path."
|
|
24
|
+
- "Direct compare commands may still need prompt/schema artifacts without a loop trajectory."
|
|
25
|
+
- "Freshness must become DB submission state rather than file existence timing."
|
|
26
|
+
- "Agents need docs/skills that reveal the submission CLI without reading code."
|
|
27
|
+
- "Seatify smoke artifacts should not be committed."
|
|
28
|
+
existing_plan_facts:
|
|
29
|
+
- "SQLite already has an agent_responses table with response_json."
|
|
30
|
+
- "Current 0.1.7 still reads captures/**/agent-response.json before storing rows."
|
|
31
|
+
- "The new workflow should accept response JSON through CLI file or stdin."
|
|
32
|
+
- "The full raw JSON must remain stored locally in SQLite."
|
|
33
|
+
- "Loop ledger exports should keep surfacing response evidence and action history."
|
|
34
|
+
|
|
35
|
+
rules:
|
|
36
|
+
pm_owns_state: true
|
|
37
|
+
one_active_task: true
|
|
38
|
+
max_write_workers: 1
|
|
39
|
+
no_implementation_without_worker_or_pm_task: true
|
|
40
|
+
no_completion_without_judge_or_pm_audit: true
|
|
41
|
+
planning_is_not_completion: true
|
|
42
|
+
queued_required_worker_blocks_completion: true
|
|
43
|
+
continuous_until_full_outcome: true
|
|
44
|
+
missing_input_or_credentials_do_not_stop_goal: true
|
|
45
|
+
preserve_and_validate_existing_plan: true
|
|
46
|
+
intake_misfire_must_be_audited: true
|
|
47
|
+
goal_pressure_requires_oracle: true
|
|
48
|
+
no_completion_on_weak_proof: true
|
|
49
|
+
slice_policy:
|
|
50
|
+
max_consecutive_tiny_tasks: 2
|
|
51
|
+
prefer_vertical_slices: true
|
|
52
|
+
judge_picks_largest_safe_slice: true
|
|
53
|
+
worker_completes_whole_slice: true
|
|
54
|
+
|
|
55
|
+
agents:
|
|
56
|
+
scout: installed
|
|
57
|
+
worker: installed
|
|
58
|
+
judge: installed
|
|
59
|
+
|
|
60
|
+
visual_board:
|
|
61
|
+
selected: local
|
|
62
|
+
local:
|
|
63
|
+
status: starting
|
|
64
|
+
url: "http://goalbuddy.localhost:41737/db-native-agent-responses/"
|
|
65
|
+
command: "npx goalbuddy board docs/goals/db-native-agent-responses"
|
|
66
|
+
|
|
67
|
+
active_task: null
|
|
68
|
+
|
|
69
|
+
tasks:
|
|
70
|
+
- id: T001
|
|
71
|
+
type: judge
|
|
72
|
+
assignee: Judge
|
|
73
|
+
status: done
|
|
74
|
+
reasoning_hint: high
|
|
75
|
+
objective: "Validate the DB-native response plan against the current Limner code and choose the largest safe Worker implementation slice."
|
|
76
|
+
inputs:
|
|
77
|
+
- "docs/goals/db-native-agent-responses/goal.md"
|
|
78
|
+
- "Current Limner source, tests, README, docs, and skills"
|
|
79
|
+
- "Existing plan facts in goal.intake.existing_plan_facts"
|
|
80
|
+
constraints:
|
|
81
|
+
- "Read-only."
|
|
82
|
+
- "Do not implement."
|
|
83
|
+
- "Preserve the user's correction that agent-response.json must not remain canonical."
|
|
84
|
+
expected_output:
|
|
85
|
+
- "Decision"
|
|
86
|
+
- "Exact Worker objective"
|
|
87
|
+
- "allowed_files"
|
|
88
|
+
- "verify"
|
|
89
|
+
- "stop_if"
|
|
90
|
+
- "Any split tasks if the first slice is too large or risky"
|
|
91
|
+
receipt:
|
|
92
|
+
result: done
|
|
93
|
+
decision: approved
|
|
94
|
+
full_outcome_complete: false
|
|
95
|
+
summary: "Current code stores response_json in SQLite but still reads captures/**/agent-response.json as canonical input. Approve one vertical Worker slice: DB pending context on loop compare, loop response submit for file/stdin, validation from stored context, summary artifacts, ledger export, docs/skills updates."
|
|
96
|
+
evidence:
|
|
97
|
+
- "src/core/agent-comparison-pack.ts reads responsePath and readAgentResponse()."
|
|
98
|
+
- "src/commands/loop.ts records responseJson after compare, not as the submission channel."
|
|
99
|
+
- "src/core/agent-comparison-prompts.ts tells agents to write JSON to responsePath."
|
|
100
|
+
- "README.md and docs/agent-workflow.md instruct agent-response.json handoff."
|
|
101
|
+
worker:
|
|
102
|
+
objective: "Implement SQLite-native agent response submission and remove agent-response.json as canonical loop state."
|
|
103
|
+
allowed_files:
|
|
104
|
+
- "src/core/agent-comparison*.ts"
|
|
105
|
+
- "src/core/comparison-artifacts.ts"
|
|
106
|
+
- "src/core/current-artifacts*.ts"
|
|
107
|
+
- "src/core/ledger*.ts"
|
|
108
|
+
- "src/core/report-writer.ts"
|
|
109
|
+
- "src/commands/compare*.ts"
|
|
110
|
+
- "src/commands/loop*.ts"
|
|
111
|
+
- "src/commands/ledger*.ts"
|
|
112
|
+
- "src/schemas/*.ts"
|
|
113
|
+
- "src/index.ts"
|
|
114
|
+
- "README.md"
|
|
115
|
+
- "docs/agent-workflow.md"
|
|
116
|
+
- "skills/limner/SKILL.md"
|
|
117
|
+
- "templates/target/AGENT_GUIDE.md"
|
|
118
|
+
verify:
|
|
119
|
+
- "npm test -- agent-comparison-pack loop-agent-responses loop-task ledger"
|
|
120
|
+
- "npm run check"
|
|
121
|
+
stop_if:
|
|
122
|
+
- "The migration requires destructive changes to existing ledgers."
|
|
123
|
+
- "Direct compare commands cannot remain useful without an explicit user decision."
|
|
124
|
+
- "The implementation would require remote telemetry or model-provider coupling."
|
|
125
|
+
- id: T002
|
|
126
|
+
type: worker
|
|
127
|
+
assignee: Worker
|
|
128
|
+
status: done
|
|
129
|
+
reasoning_hint: high
|
|
130
|
+
objective: "Implement the DB-native agent response submission/storage workflow selected by T001."
|
|
131
|
+
allowed_files:
|
|
132
|
+
- "src/core/agent-comparison*.ts"
|
|
133
|
+
- "src/core/comparison-artifacts.ts"
|
|
134
|
+
- "src/core/current-artifacts*.ts"
|
|
135
|
+
- "src/core/ledger*.ts"
|
|
136
|
+
- "src/core/report-writer.ts"
|
|
137
|
+
- "src/commands/compare*.ts"
|
|
138
|
+
- "src/commands/loop*.ts"
|
|
139
|
+
- "src/commands/ledger*.ts"
|
|
140
|
+
- "src/schemas/*.ts"
|
|
141
|
+
- "src/index.ts"
|
|
142
|
+
- "README.md"
|
|
143
|
+
- "docs/agent-workflow.md"
|
|
144
|
+
- "skills/limner/SKILL.md"
|
|
145
|
+
- "templates/target/AGENT_GUIDE.md"
|
|
146
|
+
verify:
|
|
147
|
+
- "npm test -- agent-comparison-pack loop-agent-responses loop-task ledger"
|
|
148
|
+
- "npm run check"
|
|
149
|
+
stop_if:
|
|
150
|
+
- "Need files outside allowed_files."
|
|
151
|
+
- "Current code shape contradicts the selected implementation approach."
|
|
152
|
+
- "A migration risk appears that requires an explicit Judge decision."
|
|
153
|
+
- "Verification fails twice with different root causes."
|
|
154
|
+
receipt:
|
|
155
|
+
result: done
|
|
156
|
+
changed_files:
|
|
157
|
+
- "src/core/agent-comparison*.ts"
|
|
158
|
+
- "src/core/ledger*.ts"
|
|
159
|
+
- "src/commands/loop*.ts"
|
|
160
|
+
- "src/commands/compare*.ts"
|
|
161
|
+
- "README.md"
|
|
162
|
+
- "docs/agent-workflow.md"
|
|
163
|
+
- "skills/limner/SKILL.md"
|
|
164
|
+
- "templates/target/AGENT_GUIDE.md"
|
|
165
|
+
commands:
|
|
166
|
+
- cmd: "npm test -- loop-agent-responses"
|
|
167
|
+
status: pass
|
|
168
|
+
- cmd: "npm test -- agent-comparison-pack comparison-artifacts loop-agent-responses loop-task ledger current-artifacts ledger-store"
|
|
169
|
+
status: pass
|
|
170
|
+
- cmd: "npm run typecheck"
|
|
171
|
+
status: pass
|
|
172
|
+
- cmd: "npm test"
|
|
173
|
+
status: pass
|
|
174
|
+
- cmd: "npm run check"
|
|
175
|
+
status: pass
|
|
176
|
+
summary: "Loop comparison prompts now submit responses through SQLite via loop response submit; stored comparison context validates submissions and writes summary artifacts without canonical agent-response.json."
|
|
177
|
+
- id: T003
|
|
178
|
+
type: worker
|
|
179
|
+
assignee: Worker
|
|
180
|
+
status: done
|
|
181
|
+
reasoning_hint: medium
|
|
182
|
+
objective: "Run a fresh local smoke workflow, preferably Seatify if available, and record evidence without committing generated artifacts."
|
|
183
|
+
allowed_files:
|
|
184
|
+
- "No repo file writes; smoke may write only external workspace/ledger artifacts."
|
|
185
|
+
- "/Users/neonwatty/Desktop/seatify-ux-limner-artifacts/2026-06-04/limner-workspaces/A-public-homepage/targets/homepage-desktop/captures/image-reference"
|
|
186
|
+
verify:
|
|
187
|
+
- "Run a fresh loop compare and loop response submit using the source CLI."
|
|
188
|
+
- "Confirm ledger export includes a fresh validated agent response row."
|
|
189
|
+
stop_if:
|
|
190
|
+
- "Seatify workspace is unavailable."
|
|
191
|
+
- "Smoke workflow needs credentials or external publishing."
|
|
192
|
+
- "Generated artifacts would need to be committed."
|
|
193
|
+
receipt:
|
|
194
|
+
result: done
|
|
195
|
+
changed_files:
|
|
196
|
+
- "/Users/neonwatty/Desktop/seatify-ux-limner-artifacts/2026-06-04/limner-workspaces/A-public-homepage/targets/homepage-desktop/captures/image-reference"
|
|
197
|
+
commands:
|
|
198
|
+
- cmd: "LIMNER_LEDGER_HOME=/tmp/limner-db-native-smoke.kZldTK npm run dev -- --workspace /Users/neonwatty/Desktop/seatify-ux-limner-artifacts/2026-06-04/limner-workspaces/A-public-homepage loop start --mode image-mockup --target homepage-desktop --name db-native-seatify-smoke --max-iterations 2"
|
|
199
|
+
status: pass
|
|
200
|
+
- cmd: "LIMNER_LEDGER_HOME=/tmp/limner-db-native-smoke.kZldTK npm run dev -- --workspace /Users/neonwatty/Desktop/seatify-ux-limner-artifacts/2026-06-04/limner-workspaces/A-public-homepage loop compare --trajectory traj_2da3a56dc1909a61"
|
|
201
|
+
status: pass
|
|
202
|
+
- cmd: "test ! -e targets/homepage-desktop/captures/image-reference/agent-comparison/agent-response.json"
|
|
203
|
+
status: pass
|
|
204
|
+
- cmd: "LIMNER_LEDGER_HOME=/tmp/limner-db-native-smoke.kZldTK npm run dev -- --workspace /Users/neonwatty/Desktop/seatify-ux-limner-artifacts/2026-06-04/limner-workspaces/A-public-homepage loop response submit --trajectory traj_2da3a56dc1909a61 --from-run 2026-06-14T125413357Z-db02fl --file targets/homepage-desktop/captures/image-reference/agent-comparison/agent-response.example.json"
|
|
205
|
+
status: pass
|
|
206
|
+
- cmd: "LIMNER_LEDGER_HOME=/tmp/limner-db-native-smoke.kZldTK npm run dev -- --workspace /Users/neonwatty/Desktop/seatify-ux-limner-artifacts/2026-06-04/limner-workspaces/A-public-homepage loop task --trajectory traj_2da3a56dc1909a61 --executor subagent"
|
|
207
|
+
status: pass
|
|
208
|
+
summary: "Fresh Seatify homepage loop validated DB-native response submission: pending missing row, fresh validated row, comparison summary, task brief, and skipped no-op action were all recorded."
|
|
209
|
+
- id: T999
|
|
210
|
+
type: judge
|
|
211
|
+
assignee: Judge
|
|
212
|
+
status: done
|
|
213
|
+
reasoning_hint: high
|
|
214
|
+
objective: "Audit whether DB-native agent responses satisfy the original user outcome for this tranche."
|
|
215
|
+
inputs:
|
|
216
|
+
- "All done task receipts"
|
|
217
|
+
- "Last verification"
|
|
218
|
+
- "Current dirty diff"
|
|
219
|
+
constraints:
|
|
220
|
+
- "Do not implement."
|
|
221
|
+
- "Reject completion if agent-response.json remains canonical in loop behavior, docs, or skills."
|
|
222
|
+
- "Reject completion if npm run check has not passed after implementation."
|
|
223
|
+
- "Reject completion if required Worker work is still queued or active."
|
|
224
|
+
expected_output:
|
|
225
|
+
- "complete | not_complete"
|
|
226
|
+
- "full_outcome_complete: true | false"
|
|
227
|
+
- "missing evidence"
|
|
228
|
+
- "next task if not complete"
|
|
229
|
+
receipt:
|
|
230
|
+
result: done
|
|
231
|
+
decision: complete
|
|
232
|
+
full_outcome_complete: true
|
|
233
|
+
summary: "Oracle satisfied: npm run check passed; Seatify smoke validated loop response submit; docs/skill/target guide teach SQLite submission; current loop comparison code no longer uses agent-response.json as canonical state."
|
|
234
|
+
|
|
235
|
+
checks:
|
|
236
|
+
dirty_fingerprint: "main...origin/main clean before GoalBuddy control files"
|
|
237
|
+
last_verification:
|
|
238
|
+
result: unknown
|
|
239
|
+
task: null
|
|
240
|
+
commands: []
|
package/package.json
CHANGED
package/skills/limner/SKILL.md
CHANGED
|
@@ -17,8 +17,8 @@ Use `limner loop` for Ralph Loop-style polishing across one or more trajectories
|
|
|
17
17
|
|
|
18
18
|
1. Start with `limner loop start --mode <mode> --target <name> --name <human-name> --max-iterations <count>`.
|
|
19
19
|
2. Compare with `limner loop compare --trajectory <trajectory-id>`.
|
|
20
|
-
3. Read the generated comparison prompt
|
|
21
|
-
4.
|
|
20
|
+
3. Read the generated comparison prompt.
|
|
21
|
+
4. Submit the agent response with `limner loop response submit --trajectory <trajectory-id> --from-run <run-id> --file ./response.json`.
|
|
22
22
|
5. After validation, prefer `limner loop task --trajectory <trajectory-id> --executor subagent`.
|
|
23
23
|
6. Record `limner loop action start --trajectory <trajectory-id> --from-run <run-id> --kind polish --executor subagent --summary "<short edit intent>"` before edits.
|
|
24
24
|
7. Make one scoped edit from the task brief.
|
|
@@ -28,13 +28,13 @@ Use `limner loop` for Ralph Loop-style polishing across one or more trajectories
|
|
|
28
28
|
11. Move to the next scoped fix with `limner loop next --trajectory <trajectory-id>`.
|
|
29
29
|
12. Close with `limner loop close --trajectory <trajectory-id>`.
|
|
30
30
|
|
|
31
|
-
The intended edit loop is `loop compare -> loop task --executor subagent -> loop action start -> edit -> loop action complete -> loop compare`. Every meaningful loop interaction writes a ledger event. Agent responses are
|
|
31
|
+
The intended edit loop is `loop compare -> loop response submit -> loop task --executor subagent -> loop action start -> edit -> loop action complete -> loop compare`. Every meaningful loop interaction writes a ledger event. Agent responses are submitted to local SQLite with the full JSON body, hash, validation status, and freshness. Keep every action `--summary` under 255 characters. Use `--feedback "<short note>"` for a 255-character `agentFeedback` note about improving the current process. Use `limner ledger export <trajectory-id> --format markdown` to hand a compact trajectory history to another agent.
|
|
32
32
|
|
|
33
33
|
Use `limner loop task --trajectory <trajectory-id> --executor subagent --format json` when another tool needs machine-readable task data.
|
|
34
34
|
|
|
35
35
|
Limner records executor intent and action claims; it cannot prove an external orchestrator actually used a subagent.
|
|
36
36
|
|
|
37
|
-
Agents can discover the current command surface with `limner --help`, `limner loop --help`, `limner loop task --help`, and `limner ledger --help`.
|
|
37
|
+
Agents can discover the current command surface with `limner --help`, `limner loop --help`, `limner loop response --help`, `limner loop task --help`, and `limner ledger --help`.
|
|
38
38
|
|
|
39
39
|
## Image To Reference
|
|
40
40
|
|
|
@@ -44,32 +44,22 @@ Agents can discover the current command surface with `limner --help`, `limner lo
|
|
|
44
44
|
4. Edit `reference/index.html` and `reference/styles.css`.
|
|
45
45
|
5. Run `limner compare image-reference --target <name>`.
|
|
46
46
|
6. Read `captures/image-reference/agent-comparison/agent-prompt.codex.md`.
|
|
47
|
-
7.
|
|
48
|
-
8.
|
|
47
|
+
7. Submit JSON with `limner loop response submit --trajectory <trajectory-id> --from-run <run-id> --file ./response.json`.
|
|
48
|
+
8. Use the validated `image-comparison.json` and `comparison-summary.json`.
|
|
49
49
|
9. Use the validated next-iteration guidance for one scoped mockup fix.
|
|
50
50
|
|
|
51
|
-
Optional structured spec layer:
|
|
52
|
-
|
|
53
|
-
- Run `limner compare image-reference --target <name> --spec`.
|
|
54
|
-
- Edit `contract/visual-spec-instructions.md` to customize the agent prompt for this target, or pass `--spec-instructions <path>` for a shared policy file.
|
|
55
|
-
- Use `captures/image-reference/spec/agent-prompt.codex.md` for Codex or `captures/image-reference/spec/agent-prompt.claude.md` for Claude.
|
|
56
|
-
- Use the generated `captures/image-reference/spec/agent-response.schema.json` for strict structured output when the agent supports it.
|
|
57
|
-
- The agent should inspect the ideal image and reference screenshot separately. The side-by-side is comparison context, not the image to parse.
|
|
58
|
-
- Have the agent write `captures/image-reference/spec/agent-response.json`.
|
|
59
|
-
- Rerun the same command so Limner can validate the response and emit the spec and diff JSON artifacts.
|
|
60
|
-
|
|
61
51
|
## Reference To Implementation
|
|
62
52
|
|
|
63
53
|
1. Confirm the reference HTML is approved.
|
|
64
54
|
2. Ensure every important region has both `referenceSelector` and an implementation selector in `appSelector`.
|
|
65
55
|
3. Run `limner compare reference-implementation --target <name> --url <implementation-url>`.
|
|
66
56
|
4. Read `captures/reference-implementation/agent-comparison/agent-prompt.codex.md`.
|
|
67
|
-
5.
|
|
68
|
-
6.
|
|
57
|
+
5. Submit JSON with `limner loop response submit --trajectory <trajectory-id> --from-run <run-id> --file ./response.json`.
|
|
58
|
+
6. Use the validated image, structure, and summary comparison artifacts.
|
|
69
59
|
7. Use the validated next-iteration guidance for one scoped implementation fix.
|
|
70
60
|
|
|
71
61
|
## Constraints
|
|
72
62
|
|
|
73
|
-
- Limner does not call an AI vision model itself. Agent comparison
|
|
63
|
+
- Limner does not call an AI vision model itself. Agent comparison requires an external agent.
|
|
74
64
|
- Limner does not make final pass/fail judgments.
|
|
75
65
|
- Limner logs only local JSONL events under `.limner/runs/`.
|