@shield-agent/kya 0.9.1 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.mcp.json +1 -1
- package/README.md +3 -3
- package/amp/settings.example.json +1 -1
- package/claude/claude_desktop_config.example.json +1 -1
- package/cline/cline_mcp_settings.example.json +1 -1
- package/copilot/mcp-config.example.json +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +3 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/hook.d.ts.map +1 -1
- package/dist/commands/hook.js +3 -1
- package/dist/commands/hook.js.map +1 -1
- package/dist/commands/wrap.d.ts.map +1 -1
- package/dist/commands/wrap.js +3 -1
- package/dist/commands/wrap.js.map +1 -1
- package/dist/mcp/protocol.d.ts.map +1 -1
- package/dist/mcp/protocol.js +5 -0
- package/dist/mcp/protocol.js.map +1 -1
- package/dist/receipt/changes.d.ts +47 -0
- package/dist/receipt/changes.d.ts.map +1 -0
- package/dist/receipt/changes.js +66 -0
- package/dist/receipt/changes.js.map +1 -0
- package/dist/receipt/dashboard.d.ts +1 -0
- package/dist/receipt/dashboard.d.ts.map +1 -1
- package/dist/receipt/dashboard.js +1 -1
- package/dist/receipt/dashboard.js.map +1 -1
- package/dist/receipt/receipt-css.d.ts +1 -1
- package/dist/receipt/receipt-css.d.ts.map +1 -1
- package/dist/receipt/receipt-css.js +57 -3
- package/dist/receipt/receipt-css.js.map +1 -1
- package/dist/receipt/render-receipt.d.ts.map +1 -1
- package/dist/receipt/render-receipt.js +151 -26
- package/dist/receipt/render-receipt.js.map +1 -1
- package/dist/trail-summary.d.ts +7 -0
- package/dist/trail-summary.d.ts.map +1 -1
- package/dist/trail-summary.js +14 -0
- package/dist/trail-summary.js.map +1 -1
- package/dist/trail.d.ts +2 -0
- package/dist/trail.d.ts.map +1 -1
- package/dist/trail.js +1 -0
- package/dist/trail.js.map +1 -1
- package/droid/README.md +1 -1
- package/droid/mcp.example.json +1 -1
- package/gemini/settings.example.json +1 -1
- package/grok/README.md +1 -1
- package/kilo/kilo.example.json +1 -1
- package/kimi/mcp.example.json +1 -1
- package/kiro/mcp.example.json +1 -1
- package/manifest.json +1 -1
- package/mastracode/mcp.example.json +1 -1
- package/mcp.json +1 -1
- package/openai/codex.config.example.toml +1 -1
- package/opencode/opencode.example.json +1 -1
- package/package.json +1 -1
- package/qwen/settings.example.json +1 -1
- package/server.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/receipt/dashboard.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/receipt/dashboard.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAmB,MAAM,aAAa,CAAC;AAgD5D,MAAM,OAAO,GAAG,SAAS,CAAC;AAC1B,2EAA2E;AAC3E,MAAM,oBAAoB,GAAG,EAAE,GAAG,OAAO,CAAC;AAC1C,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC5B,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,MAAM,KAAK,GAAG,CAAC,CAAC;AAEhB,SAAS,OAAO,CAAC,CAAa;IAC5B,OAAO,CAAC,CAAC,UAAU,KAAK,IAAI,IAAI,CAAC,CAAC,UAAU,KAAK,aAAa,CAAC;AACjE,CAAC;AAED,SAAS,eAAe,CAAC,EAAU;IACjC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;IACvB,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;AACtF,CAAC;AAED,SAAS,cAAc,CAAC,EAAU;IAChC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;IACvB,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;AACxE,CAAC;AAED,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAEpG,SAAS,SAAS,CAAC,OAAe;IAChC,OAAO,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC;AACvE,CAAC;AAED,oEAAoE;AACpE,SAAS,YAAY,CAAC,OAAe;IACnC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;AACxE,CAAC;AAED,SAAS,QAAQ,CAAC,OAAe;IAC/B,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACjD,OAAO,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AAC1C,CAAC;AAED,qFAAqF;AACrF,SAAS,QAAQ,CAAC,OAAe,EAAE,CAAS,EAAE,WAA2B;IACvE,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,IAAI,WAAW,KAAK,MAAM;QAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;;QACpD,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAChC,OAAO,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAC7F,CAAC;AAWD;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAwB;IACvD,MAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,IAAI,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC9C,IAAI,KAAK,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAC5D,SAAS,GAAG,KAAK,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,eAAe,CAAC,MAA6B;IACpD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAErE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,IAAI,IAAI,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IAClE,MAAM,WAAW,GAAG,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC;IAC9E,MAAM,GAAG,GAAG,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,eAAe,CAAC;IAExE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,wEAAwE;IACxE,MAAM,eAAe,GACnB,WAAW,KAAK,MAAM,IAAI,cAAc,CAAC,QAAQ,CAAC,KAAK,cAAc,CAAC,MAAM,CAAC,CAAC;IAChF,MAAM,KAAK,GACT,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAChF,MAAM,OAAO,GAAG,gBAAgB,CAAC;QAC/B,MAAM;QACN,MAAM;QACN,QAAQ;QACR,GAAG;QACH,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,WAAW,CAAC;QAC3D,KAAK;KACN,CAAC,CAAC;IACH,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,OAA8B,EAAE,CAAa;IACnE,MAAM,IAAI,GAA8B,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IACnF,IAAI,IAAI,GAAc,OAAO,CAAC;IAC9B,IAAI,OAAO,CAAC,CAAC,CAAC;QAAE,IAAI,GAAG,OAAO,CAAC;SAC1B,CAAC;QACJ,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAClC,IAAI,CAAC,KAAK,MAAM;YAAE,IAAI,GAAG,MAAM,CAAC;aAC3B,IAAI,CAAC,KAAK,iBAAiB;YAAE,IAAI,GAAG,QAAQ,CAAC;IACpD,CAAC;IACD,OAAO,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AAC9E,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,gBAAgB,CAAC,MAA6B;IAC5D,0EAA0E;IAC1E,4EAA4E;IAC5E,sCAAsC;IACtC,MAAM,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IAC7E,MAAM,KAAK,GAAG,IAAI,GAAG,EAA2D,CAAC;IACjF,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC9C,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE9C,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAClC,IAAI,CAAC,KAAK,OAAO;YAAE,GAAG,CAAC,KAAK,EAAE,CAAC;aAC1B,IAAI,CAAC,KAAK,MAAM;YAAE,GAAG,CAAC,IAAI,EAAE,CAAC;aAC7B,IAAI,CAAC,KAAK,iBAAiB;YAAE,GAAG,CAAC,MAAM,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,KAAK;YAAE,GAAG,CAAC,KAAK,EAAE,CAAC;QAEvB,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;YACnC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACzB,CAAC;QACD,CAAC,CAAC,KAAK,EAAE,CAAC;QACV,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAE9B,IAAI,KAAK,IAAI,CAAC,KAAK,MAAM,EAAE,CAAC;YAC1B,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC;YAChC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACpD,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;YAClC,IAAI,OAAO;gBAAE,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAoB,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;SACnD,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,OAAO,EAAE,CAAC,CAAC;SAC7E,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;SACrE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAEnB,MAAM,eAAe,GAAmB,CAAC,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC;SAC/D,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QACxB,KAAK,EAAE,YAAY,CAAC,KAA8B,CAAC;QACnD,KAAK;QACL,KAAK;KACN,CAAC,CAAC;SACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SACnE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAEnB,MAAM,eAAe,GAAmB,CAAC,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC;SAC/D,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;SACzD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SACnE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAEnB,OAAO;QACL,UAAU,EAAE,GAAG;QACf,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC;QACjC,QAAQ;QACR,eAAe;QACf,eAAe;KAChB,CAAC;AACJ,CAAC"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* default and light rides on prefers-color-scheme, with translucency done via
|
|
8
8
|
* color-mix so both schemes share one rule set.
|
|
9
9
|
*
|
|
10
|
-
* Tab switching is pure CSS: nav links point at #overview/#certify/
|
|
10
|
+
* Tab switching is pure CSS: nav links point at #overview/#changes/#certify/
|
|
11
11
|
* #activity/#system and :target shows the matching zone. The hide rules are
|
|
12
12
|
* gated behind
|
|
13
13
|
* `@supports selector(body:has(*))`, so a browser without :has() simply shows
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"receipt-css.d.ts","sourceRoot":"","sources":["../../src/receipt/receipt-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"receipt-css.d.ts","sourceRoot":"","sources":["../../src/receipt/receipt-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAmkBnC"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* default and light rides on prefers-color-scheme, with translucency done via
|
|
8
8
|
* color-mix so both schemes share one rule set.
|
|
9
9
|
*
|
|
10
|
-
* Tab switching is pure CSS: nav links point at #overview/#certify/
|
|
10
|
+
* Tab switching is pure CSS: nav links point at #overview/#changes/#certify/
|
|
11
11
|
* #activity/#system and :target shows the matching zone. The hide rules are
|
|
12
12
|
* gated behind
|
|
13
13
|
* `@supports selector(body:has(*))`, so a browser without :has() simply shows
|
|
@@ -212,13 +212,15 @@ export function receiptCss() {
|
|
|
212
212
|
.zone { scroll-margin-top: 6.4rem; }
|
|
213
213
|
.zone-empty { margin: 0.25rem 0 0.5rem; }
|
|
214
214
|
@supports selector(body:has(*)) {
|
|
215
|
-
#activity, #certify, #system { display: none; }
|
|
216
|
-
#overview:target, #activity:target, #certify:target, #system:target { display: block; }
|
|
215
|
+
#changes, #activity, #certify, #system { display: none; }
|
|
216
|
+
#overview:target, #changes:target, #activity:target, #certify:target, #system:target { display: block; }
|
|
217
|
+
body:has(#changes:target) #overview,
|
|
217
218
|
body:has(#activity:target) #overview,
|
|
218
219
|
body:has(#certify:target) #overview,
|
|
219
220
|
body:has(#system:target) #overview { display: none; }
|
|
220
221
|
body:not(:has(.zone:target)) .tab[href="#overview"],
|
|
221
222
|
body:has(#overview:target) .tab[href="#overview"],
|
|
223
|
+
body:has(#changes:target) .tab[href="#changes"],
|
|
222
224
|
body:has(#certify:target) .tab[href="#certify"],
|
|
223
225
|
body:has(#activity:target) .tab[href="#activity"],
|
|
224
226
|
body:has(#system:target) .tab[href="#system"] {
|
|
@@ -297,6 +299,26 @@ export function receiptCss() {
|
|
|
297
299
|
.db-fill.warn { background: var(--warn); }
|
|
298
300
|
.db-fill.bad { background: var(--bad); }
|
|
299
301
|
.db-num { text-align: right; color: var(--fg); }
|
|
302
|
+
/* Session rollup row as a filter toggle: db-item's hover/active contract
|
|
303
|
+
on the flex layout the Sessions panel already uses. */
|
|
304
|
+
.sess-item {
|
|
305
|
+
display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.45rem;
|
|
306
|
+
width: 100%; min-width: 0;
|
|
307
|
+
font-family: inherit; font-size: inherit; text-align: left;
|
|
308
|
+
color: inherit; background: transparent;
|
|
309
|
+
border: 1px solid transparent; border-radius: 8px;
|
|
310
|
+
padding: 0.14rem 0.3rem; cursor: pointer;
|
|
311
|
+
appearance: none; -webkit-appearance: none;
|
|
312
|
+
}
|
|
313
|
+
.sess-item:hover {
|
|
314
|
+
border-color: var(--line);
|
|
315
|
+
background: color-mix(in srgb, var(--bg) 55%, var(--card));
|
|
316
|
+
}
|
|
317
|
+
.sess-item[aria-pressed="true"] {
|
|
318
|
+
color: var(--fg);
|
|
319
|
+
border-color: color-mix(in srgb, var(--ok) 55%, var(--line));
|
|
320
|
+
background: color-mix(in srgb, var(--ok) 12%, var(--card));
|
|
321
|
+
}
|
|
300
322
|
/* Vertical mini-bar timeline (not clickable — no time filter exists). */
|
|
301
323
|
.db-tl { display: flex; align-items: stretch; gap: 2px; height: 4.6rem; }
|
|
302
324
|
.db-tl .col {
|
|
@@ -519,6 +541,38 @@ export function receiptCss() {
|
|
|
519
541
|
word-break: break-word;
|
|
520
542
|
color: var(--fg);
|
|
521
543
|
}
|
|
544
|
+
/* Changes tab: session → file groups in the same .feed card as the
|
|
545
|
+
activity feed; entries reuse the feed's .top/.verdict/.tool/.when/diff. */
|
|
546
|
+
.chg-sess-head {
|
|
547
|
+
display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.45rem;
|
|
548
|
+
padding: 0.55rem 0.9rem 0.35rem;
|
|
549
|
+
background: color-mix(in srgb, var(--bg) 55%, var(--card));
|
|
550
|
+
border-bottom: 1px solid var(--line);
|
|
551
|
+
}
|
|
552
|
+
.chg-sess-head .sid {
|
|
553
|
+
font-family: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
554
|
+
font-size: 0.78rem; font-weight: 650; word-break: break-all;
|
|
555
|
+
}
|
|
556
|
+
.chg-sess-head .cnt { color: var(--mute); font-size: 0.76rem; }
|
|
557
|
+
.chg-sess-head .rel {
|
|
558
|
+
margin-left: auto; color: var(--mute); font-size: 0.74rem; white-space: nowrap;
|
|
559
|
+
}
|
|
560
|
+
.chg-file { border-bottom: 1px solid var(--line); padding: 0.45rem 0.9rem 0.6rem; }
|
|
561
|
+
.chg-session:last-child .chg-file:last-child { border-bottom: none; }
|
|
562
|
+
.chg-file-head {
|
|
563
|
+
display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.45rem;
|
|
564
|
+
}
|
|
565
|
+
.chg-file-head .path {
|
|
566
|
+
font-family: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
567
|
+
font-size: 0.8rem; font-weight: 650; word-break: break-all;
|
|
568
|
+
}
|
|
569
|
+
.chg-file-head .cnt { color: var(--mute); font-size: 0.74rem; white-space: nowrap; }
|
|
570
|
+
.chg-file-head .pill { margin-left: auto; }
|
|
571
|
+
.chg-entry { padding: 0.4rem 0 0.2rem; min-width: 0; }
|
|
572
|
+
.chg-entry.never { background: color-mix(in srgb, var(--bad) 7%, transparent); }
|
|
573
|
+
.chg-entry.ok .verdict { color: var(--ok); }
|
|
574
|
+
.chg-entry.bad .verdict { color: var(--bad); }
|
|
575
|
+
.chg-entry.warn .verdict { color: var(--warn); }
|
|
522
576
|
.meta {
|
|
523
577
|
margin-top: 0.18rem; color: var(--mute); font-size: 0.76rem;
|
|
524
578
|
display: flex; flex-wrap: wrap; gap: 0.25rem; align-items: baseline;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"receipt-css.js","sourceRoot":"","sources":["../../src/receipt/receipt-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO
|
|
1
|
+
{"version":3,"file":"receipt-css.js","sourceRoot":"","sources":["../../src/receipt/receipt-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAikBL,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-receipt.d.ts","sourceRoot":"","sources":["../../src/receipt/render-receipt.ts"],"names":[],"mappings":"AAUA,OAAO,EAA2C,KAAK,UAAU,EAAqB,MAAM,aAAa,CAAC;AAC1G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAOL,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"render-receipt.d.ts","sourceRoot":"","sources":["../../src/receipt/render-receipt.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ import { productLabel, readTrail, readTrailSince } from "../trail.js";
|
|
|
8
8
|
import { loadCertifyCard, loadIdentity, loadOrrCard, loadSandboxes, loadShowbackCard, loadWiredHosts, } from "./enrich.js";
|
|
9
9
|
import { SHOWBACK_DISCLAIMER, } from "../showback/cost-per-task.js";
|
|
10
10
|
import { computeDashboard } from "./dashboard.js";
|
|
11
|
+
import { buildChangesModel } from "./changes.js";
|
|
11
12
|
import { receiptCss } from "./receipt-css.js";
|
|
12
13
|
function esc(s) {
|
|
13
14
|
return stripEscapes(s)
|
|
@@ -298,6 +299,7 @@ function renderFeed(events, nowMs, live) {
|
|
|
298
299
|
` data-plane="${esc(e.host?.trim() || "unknown")}"` +
|
|
299
300
|
` data-product="${esc(e.product ?? "other")}"` +
|
|
300
301
|
` data-tool="${esc(clip(e.toolId, 60))}"` +
|
|
302
|
+
` data-session="${esc(e.sessionId || "unknown")}"` +
|
|
301
303
|
(project ? ` data-project="${esc(project)}"` : "");
|
|
302
304
|
parts.push(`<article class="ev ${t}${never ? " never" : ""}" ${dataAttrs}>
|
|
303
305
|
<div class="rail" aria-hidden="true"><span class="tick"></span></div>
|
|
@@ -319,6 +321,69 @@ function renderFeed(events, nowMs, live) {
|
|
|
319
321
|
}
|
|
320
322
|
return parts.join("\n");
|
|
321
323
|
}
|
|
324
|
+
/** Worst-change pill tone, reusing the pill palette: allow ok, review amber, deny/never red. */
|
|
325
|
+
function changeWorstPill(worst) {
|
|
326
|
+
const cls = worst === "allow" ? "ok" : worst === "review" ? "orr-amber" : "orr-red";
|
|
327
|
+
return `<span class="pill ${cls}">${worst}</span>`;
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Changes tab body: session → file → chronological entries, each entry
|
|
331
|
+
* carrying the same clipped preview the feed renders. Entries are stamped
|
|
332
|
+
* with the full filter facet set (like feed articles) so the chip engine
|
|
333
|
+
* filters them; file/session groups are collapsed client-side when every
|
|
334
|
+
* entry inside is filtered out.
|
|
335
|
+
*/
|
|
336
|
+
function changesPanel(changes, nowMs) {
|
|
337
|
+
if (changes.sessions.length === 0) {
|
|
338
|
+
return `<p class="empty">No recorded changes yet — write/edit tool calls will show up here.</p>`;
|
|
339
|
+
}
|
|
340
|
+
return changes.sessions
|
|
341
|
+
.map((s) => {
|
|
342
|
+
const files = s.files
|
|
343
|
+
.map((f) => {
|
|
344
|
+
const entries = f.entries
|
|
345
|
+
.map((e) => {
|
|
346
|
+
const t = tone(e.verdict);
|
|
347
|
+
const project = e.project?.trim();
|
|
348
|
+
const dataAttrs = `data-verdict="${esc(e.verdict.toUpperCase())}"` +
|
|
349
|
+
(e.never ? ` data-never="1"` : "") +
|
|
350
|
+
` data-mode="${esc(e.mode)}"` +
|
|
351
|
+
` data-plane="${esc(e.host?.trim() || "unknown")}"` +
|
|
352
|
+
` data-product="${esc(e.product ?? "other")}"` +
|
|
353
|
+
` data-tool="${esc(clip(e.toolId, 60))}"` +
|
|
354
|
+
` data-session="${esc(s.sessionId)}"` +
|
|
355
|
+
(project ? ` data-project="${esc(project)}"` : "");
|
|
356
|
+
return ` <div class="chg-entry ${t}${e.never ? " never" : ""}" ${dataAttrs}>
|
|
357
|
+
<div class="top">
|
|
358
|
+
<span class="verdict">${esc(verdictWord(e.verdict))}</span>${modeBadge(e.mode)}
|
|
359
|
+
<code class="tool">${esc(e.toolId)}</code>
|
|
360
|
+
<time class="when" datetime="${esc(e.ts)}" title="${esc(e.ts)}">${esc(clock(e.ts))} <span class="rel">${esc(relativeTime(e.ts, nowMs))}</span></time>
|
|
361
|
+
</div>
|
|
362
|
+
<details class="diff"><summary>Change preview</summary><pre>${esc(e.preview)}</pre></details>
|
|
363
|
+
</div>`;
|
|
364
|
+
})
|
|
365
|
+
.join("\n");
|
|
366
|
+
return ` <div class="chg-file">
|
|
367
|
+
<div class="chg-file-head">
|
|
368
|
+
<code class="path" title="${esc(f.path)}">${esc(clip(f.path, 80))}</code>
|
|
369
|
+
<span class="cnt">${f.writes} write${f.writes === 1 ? "" : "s"}</span>
|
|
370
|
+
${changeWorstPill(f.worst)}
|
|
371
|
+
</div>
|
|
372
|
+
${entries}
|
|
373
|
+
</div>`;
|
|
374
|
+
})
|
|
375
|
+
.join("\n");
|
|
376
|
+
return ` <div class="chg-session">
|
|
377
|
+
<div class="chg-sess-head">
|
|
378
|
+
<code class="sid" title="${esc(s.sessionId)}">${esc(clip(s.sessionId, 24))}</code>
|
|
379
|
+
<span class="cnt">${s.fileCount} file${s.fileCount === 1 ? "" : "s"} · ${s.changeCount} change${s.changeCount === 1 ? "" : "s"}</span>
|
|
380
|
+
<span class="rel">${esc(relativeTime(s.lastTs, nowMs))}</span>
|
|
381
|
+
</div>
|
|
382
|
+
${files}
|
|
383
|
+
</div>`;
|
|
384
|
+
})
|
|
385
|
+
.join("\n");
|
|
386
|
+
}
|
|
322
387
|
function identityLine(identity) {
|
|
323
388
|
if (!identity)
|
|
324
389
|
return "";
|
|
@@ -351,16 +416,28 @@ function statChips(agg) {
|
|
|
351
416
|
projects: countRowChips(agg.projects, "Projects", "project"),
|
|
352
417
|
};
|
|
353
418
|
}
|
|
354
|
-
function sessionsPanel(agg, nowMs) {
|
|
419
|
+
function sessionsPanel(agg, nowMs, changes) {
|
|
355
420
|
if (agg.sessions.length === 0)
|
|
356
421
|
return "";
|
|
422
|
+
const filesBySession = new Map(changes.sessions.map((s) => [s.sessionId, s.fileCount]));
|
|
423
|
+
// Rows are filter toggles on the same data-fgroup/data-fvalue contract as
|
|
424
|
+
// the header chips and dashboard rows (see statChips).
|
|
357
425
|
const rows = agg.sessions
|
|
358
|
-
.map((s) =>
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
426
|
+
.map((s) => {
|
|
427
|
+
const files = filesBySession.get(s.sessionId) ?? 0;
|
|
428
|
+
const filesMeta = files > 0
|
|
429
|
+
? `<span class="cnt">${files} file${files === 1 ? "" : "s"} changed</span>`
|
|
430
|
+
: "";
|
|
431
|
+
return `<li>
|
|
432
|
+
<button type="button" class="sess-item" data-fgroup="session" data-fvalue="${esc(s.sessionId)}" aria-pressed="false" title="Filter: session ${esc(clip(s.sessionId, 24))}">
|
|
433
|
+
<span class="wdot ${s.worst}" title="worst verdict: ${s.worst}"></span>
|
|
434
|
+
<code class="sid" title="${esc(s.sessionId)}">${esc(clip(s.sessionId, 24))}</code>
|
|
435
|
+
<span class="cnt">${s.events} event${s.events === 1 ? "" : "s"}</span>
|
|
436
|
+
${filesMeta}
|
|
437
|
+
<span class="rel">${esc(relativeTime(s.lastTs, nowMs))}</span>
|
|
438
|
+
</button>
|
|
439
|
+
</li>`;
|
|
440
|
+
})
|
|
364
441
|
.join("\n");
|
|
365
442
|
return `<section class="panel" aria-label="Sessions">
|
|
366
443
|
<h2>Sessions</h2>
|
|
@@ -751,20 +828,29 @@ ${topRuns
|
|
|
751
828
|
<p class="mute small">${esc(SHOWBACK_DISCLAIMER)}</p>
|
|
752
829
|
</section>`;
|
|
753
830
|
}
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
831
|
+
/**
|
|
832
|
+
* Defensive normalization for untrusted trail fields before rendering.
|
|
833
|
+
* clip() flattens newlines (single-line contexts: code spans, headers);
|
|
834
|
+
* diffPreview keeps them via clipMultiline so <pre>/fenced diffs survive.
|
|
835
|
+
*/
|
|
836
|
+
function normalizeTrailEvents(events) {
|
|
837
|
+
return events.map((e) => ({
|
|
757
838
|
...e,
|
|
758
839
|
toolId: clip(e.toolId, 160),
|
|
759
840
|
reasonCode: clip(e.reasonCode, 80),
|
|
760
841
|
summary: e.summary ? clip(e.summary, 120) : undefined,
|
|
761
|
-
// Preserve newlines — dash clip() flattens them and breaks <pre> diffs.
|
|
762
842
|
diffPreview: e.diffPreview ? clipMultiline(e.diffPreview, DIFF_MAX_TOTAL_CHARS) : undefined,
|
|
843
|
+
targetPath: e.targetPath ? clip(e.targetPath, 80) : undefined,
|
|
763
844
|
}));
|
|
845
|
+
}
|
|
846
|
+
export function renderReceiptHtml(model) {
|
|
847
|
+
const nowMs = Date.now();
|
|
848
|
+
const events = normalizeTrailEvents(model.events);
|
|
764
849
|
const c = countVerdicts(events);
|
|
765
850
|
const agg = aggregateEvents(events);
|
|
766
851
|
const chips = statChips(agg);
|
|
767
852
|
const dashboard = computeDashboard(events);
|
|
853
|
+
const changes = buildChangesModel(events);
|
|
768
854
|
const blocked = events.filter((e) => e.neverEvent || e.reasonCode === "NEVER_EVENT");
|
|
769
855
|
const tools = model.mcpSeen && model.mcpSeen.length > 0
|
|
770
856
|
? model.mcpSeen.map((m) => m.toolId)
|
|
@@ -803,16 +889,17 @@ export function renderReceiptHtml(model) {
|
|
|
803
889
|
// this script. KNOWN is space-delimited so `indexOf(' '+g+' ')` doubles as a
|
|
804
890
|
// prototype-safe whitelist ('constructor' etc. never match).
|
|
805
891
|
// Filter state persists in the ?f= QUERY param, not the hash: the hash is
|
|
806
|
-
// owned by the pure-CSS :target tabs (#overview/#certify/#activity
|
|
807
|
-
// hash-based filter would hide the Activity zone on every
|
|
808
|
-
// every tab click would wipe the filter. Legacy #f= hashes
|
|
809
|
-
// on load (read-only); the next save writes the ?f= form
|
|
810
|
-
// legacy fragment.
|
|
892
|
+
// owned by the pure-CSS :target tabs (#overview/#changes/#certify/#activity/
|
|
893
|
+
// #system), so a hash-based filter would hide the Activity zone on every
|
|
894
|
+
// chip toggle and every tab click would wipe the filter. Legacy #f= hashes
|
|
895
|
+
// are still parsed on load (read-only); the next save writes the ?f= form
|
|
896
|
+
// and drops the legacy fragment.
|
|
811
897
|
const filterScript = `<script id="kya-filters">
|
|
812
898
|
(function(){
|
|
813
899
|
var feed = document.getElementById('feed');
|
|
814
900
|
if (!feed) return;
|
|
815
|
-
var
|
|
901
|
+
var chg = document.getElementById('changes-list');
|
|
902
|
+
var KNOWN = ' verdict never mode plane product project tool session ';
|
|
816
903
|
var state = Object.create(null);
|
|
817
904
|
var clearBtn = document.getElementById('clear-filters');
|
|
818
905
|
var chips = document.querySelectorAll('[data-fgroup]');
|
|
@@ -867,17 +954,19 @@ export function renderReceiptHtml(model) {
|
|
|
867
954
|
function active(){
|
|
868
955
|
return Object.keys(state).some(function(g){ return Object.keys(state[g]).length > 0; });
|
|
869
956
|
}
|
|
957
|
+
// AND across groups, OR within a group; an unstamped facet never matches.
|
|
958
|
+
function rowVisible(row, on){
|
|
959
|
+
if (!on) return true;
|
|
960
|
+
for (var g in state) {
|
|
961
|
+
var val = row.getAttribute('data-' + g);
|
|
962
|
+
if (val === null || !state[g][val]) return false;
|
|
963
|
+
}
|
|
964
|
+
return true;
|
|
965
|
+
}
|
|
870
966
|
function apply(){
|
|
871
967
|
var on = active();
|
|
872
968
|
feed.querySelectorAll('.ev').forEach(function(row){
|
|
873
|
-
|
|
874
|
-
if (on) {
|
|
875
|
-
for (var g in state) {
|
|
876
|
-
var val = row.getAttribute('data-' + g);
|
|
877
|
-
if (val === null || !state[g][val]) { show = false; break; }
|
|
878
|
-
}
|
|
879
|
-
}
|
|
880
|
-
row.classList.toggle('filtered-out', !show);
|
|
969
|
+
row.classList.toggle('filtered-out', !rowVisible(row, on));
|
|
881
970
|
});
|
|
882
971
|
var day = null, dayHasRows = false;
|
|
883
972
|
function flush(){ if (day) day.classList.toggle('filtered-out', on && !dayHasRows); }
|
|
@@ -887,6 +976,17 @@ export function renderReceiptHtml(model) {
|
|
|
887
976
|
else if (el.classList.contains('ev') && !el.classList.contains('filtered-out')) dayHasRows = true;
|
|
888
977
|
}
|
|
889
978
|
flush();
|
|
979
|
+
// Changes tab: entries filter individually; file/session groups collapse
|
|
980
|
+
// when no entry inside survives.
|
|
981
|
+
if (chg) {
|
|
982
|
+
chg.querySelectorAll('.chg-entry').forEach(function(row){
|
|
983
|
+
row.classList.toggle('filtered-out', !rowVisible(row, on));
|
|
984
|
+
});
|
|
985
|
+
chg.querySelectorAll('.chg-file, .chg-session').forEach(function(group){
|
|
986
|
+
var vis = group.querySelectorAll('.chg-entry:not(.filtered-out)').length > 0;
|
|
987
|
+
group.classList.toggle('filtered-out', on && !vis);
|
|
988
|
+
});
|
|
989
|
+
}
|
|
890
990
|
chips.forEach(function(chip){
|
|
891
991
|
var pressed = !!(state[chip.dataset.fgroup] && state[chip.dataset.fgroup][chip.dataset.fvalue]);
|
|
892
992
|
chip.setAttribute('aria-pressed', pressed ? 'true' : 'false');
|
|
@@ -914,7 +1014,7 @@ export function renderReceiptHtml(model) {
|
|
|
914
1014
|
const zoneBody = (parts, empty) => parts.some((p) => p.length > 0)
|
|
915
1015
|
? parts.filter(Boolean).join("\n ")
|
|
916
1016
|
: `<p class="mute small zone-empty">${empty}</p>`;
|
|
917
|
-
const overviewBody = zoneBody([dashboardPanel(dashboard), sessionsPanel(agg, nowMs), reasonsPanel(agg)], "No activity in this window yet — analytics appear once events land.");
|
|
1017
|
+
const overviewBody = zoneBody([dashboardPanel(dashboard), sessionsPanel(agg, nowMs, changes), reasonsPanel(agg)], "No activity in this window yet — analytics appear once events land.");
|
|
918
1018
|
const certifyBody = zoneBody([model.certify ? certifyDetailPanel(model.certify.requirements) : ""], "No live evaluation yet — wrap tool calls and run kya certify to build the baseline.");
|
|
919
1019
|
const systemBody = zoneBody([
|
|
920
1020
|
wiredHostsPanel(model.wiredHosts),
|
|
@@ -942,6 +1042,7 @@ export function renderReceiptHtml(model) {
|
|
|
942
1042
|
</header>
|
|
943
1043
|
<nav class="tabs" aria-label="Report sections">
|
|
944
1044
|
<a class="tab" id="tab-overview" href="#overview">Overview</a>
|
|
1045
|
+
<a class="tab" id="tab-changes" href="#changes">Changes</a>
|
|
945
1046
|
<a class="tab" id="tab-certify" href="#certify">Certify</a>
|
|
946
1047
|
<a class="tab" id="tab-activity" href="#activity">Activity</a>
|
|
947
1048
|
<a class="tab" id="tab-system" href="#system">System</a>
|
|
@@ -957,6 +1058,11 @@ export function renderReceiptHtml(model) {
|
|
|
957
1058
|
<section class="zone" id="overview" aria-labelledby="tab-overview">
|
|
958
1059
|
${overviewBody}
|
|
959
1060
|
</section>
|
|
1061
|
+
<section class="zone" id="changes" aria-labelledby="tab-changes">
|
|
1062
|
+
<section class="feed chg" id="changes-list" aria-label="Changes by session and file">
|
|
1063
|
+
${changesPanel(changes, nowMs)}
|
|
1064
|
+
</section>
|
|
1065
|
+
</section>
|
|
960
1066
|
<section class="zone" id="certify" aria-labelledby="tab-certify">
|
|
961
1067
|
${certifyBody}
|
|
962
1068
|
</section>
|
|
@@ -1087,6 +1193,25 @@ export function renderReceiptMarkdown(model) {
|
|
|
1087
1193
|
const fence = mdFence(diff);
|
|
1088
1194
|
return [head, "", fence, diff, fence, ""];
|
|
1089
1195
|
}), "");
|
|
1196
|
+
// Same normalization as the HTML path: targetPath flows into single-line
|
|
1197
|
+
// `#### ` code-span headers, so embedded newlines must be flattened first.
|
|
1198
|
+
const changes = buildChangesModel(normalizeTrailEvents(model.events));
|
|
1199
|
+
if (changes.sessions.length > 0) {
|
|
1200
|
+
lines.push("## Changes", "");
|
|
1201
|
+
for (const s of changes.sessions) {
|
|
1202
|
+
lines.push(`### \`${mdInline(s.sessionId)}\` — ${s.fileCount} file${s.fileCount === 1 ? "" : "s"}, ${s.changeCount} change${s.changeCount === 1 ? "" : "s"}, last ${relativeTime(s.lastTs, nowMs)}`, "");
|
|
1203
|
+
for (const f of s.files) {
|
|
1204
|
+
lines.push(`#### \`${mdInline(f.path)}\` — ${f.writes} write${f.writes === 1 ? "" : "s"}, worst: ${f.worst}`, "");
|
|
1205
|
+
for (const e of f.entries) {
|
|
1206
|
+
// Same fencing contract as the md feed: verbatim content, tilde
|
|
1207
|
+
// fence one longer than the longest run inside.
|
|
1208
|
+
const diff = stripEscapes(e.preview);
|
|
1209
|
+
const fence = mdFence(diff);
|
|
1210
|
+
lines.push(`- **${mdText(verdictWord(e.verdict))}** \`${mdInline(e.toolId)}\` — ${mdText(e.ts)}`, "", fence, diff, fence, "");
|
|
1211
|
+
}
|
|
1212
|
+
}
|
|
1213
|
+
}
|
|
1214
|
+
}
|
|
1090
1215
|
if (agg.sessions.length > 0) {
|
|
1091
1216
|
lines.push("## Sessions", ...agg.sessions.map((s) => `- \`${mdInline(s.sessionId)}\` — ${s.events} event${s.events === 1 ? "" : "s"}, worst: ${s.worst}, last ${relativeTime(s.lastTs, nowMs)}`), "");
|
|
1092
1217
|
}
|