loki-mode 11.17.93 → 11.17.94

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 (70) hide show
  1. package/SKILL.md +2 -2
  2. package/VERSION +1 -1
  3. package/dashboard/__init__.py +1 -1
  4. package/docs/CLI-REFERENCE.md +1 -1
  5. package/docs/INSTALLATION.md +1 -1
  6. package/docs/v10/FAILURE-CLASSES.md +8 -0
  7. package/docs/v10/PROGRESS.md +3 -0
  8. package/loki-ts/dist/cockpit.js +9 -9
  9. package/loki-ts/dist/loki.js +1118 -1118
  10. package/mcp/__init__.py +1 -1
  11. package/package.json +2 -2
  12. package/packages/control-plane/dist/server.js +53 -2
  13. package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
  14. package/web-app/dist/assets/{AdminPage-6-jld-us.js → AdminPage-CKkHeHNu.js} +1 -1
  15. package/web-app/dist/assets/{Avatar-DctzN5Cw.js → Avatar-D4laJHq0.js} +1 -1
  16. package/web-app/dist/assets/{Badge-Cy51pGqP.js → Badge-DTa3VFCZ.js} +1 -1
  17. package/web-app/dist/assets/{Button-DXeBlxCZ.js → Button-ByY6PkUN.js} +1 -1
  18. package/web-app/dist/assets/{CockpitPage-CGLpA3Io.js → CockpitPage-CGxLCaoM.js} +1 -1
  19. package/web-app/dist/assets/{ComparePage-BNcy4CI4.js → ComparePage-CC9hwBkF.js} +1 -1
  20. package/web-app/dist/assets/{ErrorBoundary-CisSLOb5.js → ErrorBoundary-CgNCfI5d.js} +1 -1
  21. package/web-app/dist/assets/{EvidenceReceiptPanel-DW5F1Kc3.js → EvidenceReceiptPanel-Dnge0bQf.js} +1 -1
  22. package/web-app/dist/assets/{GitHubIssuesPanel-BEBQEcoy.js → GitHubIssuesPanel-JFXkXpXR.js} +1 -1
  23. package/web-app/dist/assets/{GitHubPRsPanel-BXldhM2g.js → GitHubPRsPanel-CaXT6zfW.js} +1 -1
  24. package/web-app/dist/assets/{HomePage-b7Q-EfNe.js → HomePage-GJHTRsKl.js} +2 -2
  25. package/web-app/dist/assets/{LoginPage-Ddm3Z9qM.js → LoginPage-DSGkL2ih.js} +1 -1
  26. package/web-app/dist/assets/{MagicPage-DxtHrhVT.js → MagicPage-BTMcl01e.js} +1 -1
  27. package/web-app/dist/assets/{MetricsPage-D7izX-Op.js → MetricsPage-_2z0nsZH.js} +1 -1
  28. package/web-app/dist/assets/{NotFoundPage-Bg8mABI5.js → NotFoundPage-CrfXRbr1.js} +1 -1
  29. package/web-app/dist/assets/{ProjectPage-DteghQIt.js → ProjectPage-AkdbRXa0.js} +3 -3
  30. package/web-app/dist/assets/{ProjectsPage-dIgXDX9y.js → ProjectsPage-YCSy6aWh.js} +1 -1
  31. package/web-app/dist/assets/{SettingsPage-C4pshWvC.js → SettingsPage-BksX0rnc.js} +1 -1
  32. package/web-app/dist/assets/{ShowcasePage-tFrtatqT.js → ShowcasePage-DBBKxdnD.js} +1 -1
  33. package/web-app/dist/assets/{SystemSettingsPage-CgU4w3jV.js → SystemSettingsPage-5KraRDrV.js} +1 -1
  34. package/web-app/dist/assets/{TeamsPage--xbuySkP.js → TeamsPage-YchWsgZs.js} +1 -1
  35. package/web-app/dist/assets/{TemplatesPage-CwpBT6eY.js → TemplatesPage-DH0W2fec.js} +1 -1
  36. package/web-app/dist/assets/{TerminalOutput-BwW0kg5J.js → TerminalOutput-BTP_da-9.js} +1 -1
  37. package/web-app/dist/assets/{activity-ft3NyAGh.js → activity-B-jSjpJl.js} +1 -1
  38. package/web-app/dist/assets/{bell-DPzgv_xI.js → bell-DvQLZDJG.js} +1 -1
  39. package/web-app/dist/assets/{bot-CBqD4b-6.js → bot-Dm9AqJNk.js} +1 -1
  40. package/web-app/dist/assets/{check-uYlm2Xfn.js → check-B7kxyFcR.js} +1 -1
  41. package/web-app/dist/assets/{chevron-left-BeD61ukD.js → chevron-left-CQK9SMFp.js} +1 -1
  42. package/web-app/dist/assets/{circle-alert-BOS1xpKZ.js → circle-alert-D-z8uDOW.js} +1 -1
  43. package/web-app/dist/assets/{clock-CbTJNvnG.js → clock-zrPCEIJa.js} +1 -1
  44. package/web-app/dist/assets/{cloud-tR_5E6ZC.js → cloud-kQUjddY3.js} +1 -1
  45. package/web-app/dist/assets/{code-xml-DPWl7Bek.js → code-xml-CRgHNDpD.js} +1 -1
  46. package/web-app/dist/assets/{database-CS7Q8NAY.js → database-fnQ49IUr.js} +1 -1
  47. package/web-app/dist/assets/{dollar-sign-C5xImo1m.js → dollar-sign-CYV8Ys6z.js} +1 -1
  48. package/web-app/dist/assets/{file-code-corner-BmXxUw6o.js → file-code-corner-HYLvgEta.js} +1 -1
  49. package/web-app/dist/assets/{file-plus-CteZrUf8.js → file-plus-FZWhBUmY.js} +1 -1
  50. package/web-app/dist/assets/{globe-CAxh1Azh.js → globe-sV0qK-i0.js} +1 -1
  51. package/web-app/dist/assets/{hammer-CEO2zxTL.js → hammer-C5G65QrR.js} +1 -1
  52. package/web-app/dist/assets/{index-BQmgCOrb.js → index-DDzvplZb.js} +3 -3
  53. package/web-app/dist/assets/{layers-BHIa5-wK.js → layers-CQU5tIim.js} +1 -1
  54. package/web-app/dist/assets/{loader-circle-IqGNb5jb.js → loader-circle-CKqyieA7.js} +1 -1
  55. package/web-app/dist/assets/{lock-CXlZTpO0.js → lock-BimlppZM.js} +1 -1
  56. package/web-app/dist/assets/{package-B3fPt25Y.js → package-CveEG3AE.js} +1 -1
  57. package/web-app/dist/assets/{plus-DPIX9QCL.js → plus-t2PcBYFw.js} +1 -1
  58. package/web-app/dist/assets/{refresh-cw-CyLsHfRl.js → refresh-cw-BPvVXqqQ.js} +1 -1
  59. package/web-app/dist/assets/{rotate-ccw-DoKR0t3T.js → rotate-ccw-C2_eJJXO.js} +1 -1
  60. package/web-app/dist/assets/{scroll-text-Bw6x3LPI.js → scroll-text-D4O6ax2d.js} +1 -1
  61. package/web-app/dist/assets/{server-DR9hniNe.js → server-CdCeUxSK.js} +1 -1
  62. package/web-app/dist/assets/{shield-alert--KEX5oP9.js → shield-alert-BY62H9ki.js} +1 -1
  63. package/web-app/dist/assets/{thumbs-up-B5cuiXGS.js → thumbs-up-CcPm5Au3.js} +1 -1
  64. package/web-app/dist/assets/{trash-2-BE-c_nAt.js → trash-2-XIfIBIjj.js} +1 -1
  65. package/web-app/dist/assets/{trending-down-D2KDvnB4.js → trending-down-DwQoazez.js} +1 -1
  66. package/web-app/dist/assets/{trending-up-0Ns5W6KO.js → trending-up-B5D5kZjV.js} +1 -1
  67. package/web-app/dist/assets/{upload-DdHRUifc.js → upload-C3jQQ2zU.js} +1 -1
  68. package/web-app/dist/assets/{usePolling-CFGqiFbP.js → usePolling-CY1DGIeS.js} +1 -1
  69. package/web-app/dist/assets/{user-BqGtuSvK.js → user-B2R02_L3.js} +1 -1
  70. package/web-app/dist/index.html +1 -1
package/SKILL.md CHANGED
@@ -3,7 +3,7 @@ name: loki-mode
3
3
  description: An autonomous software factory that knows what it is supposed to deliver, and proves it did. Use when the user says Loki Mode or asks to build, fix or verify software autonomously.
4
4
  ---
5
5
 
6
- # Loki Mode v11.17.93
6
+ # Loki Mode v11.17.94
7
7
 
8
8
  **Current entry points (Loki 10 engine):** `loki "<task>"`, `loki owner/repo#N` and `loki quick "<task>"` run the Loki 10 engine and end with a signed receipt (`loki verify`). `loki backlog owner/repo --all` runs many issues in parallel. Guide: `docs/v10/GUIDE.md`. The skill instructions below, and `loki start`, describe the previous bash loop. PRD-file starts (`loki start ./prd.md`) and the opencode provider still run on it until FC38-SWEEP ports them; the legacy-engine command and the LOKI_ENGINE switch remain removed. Prefer `loki owner/repo#N` for issues.
9
9
 
@@ -483,4 +483,4 @@ See `CHANGELOG.md` entries [7.5.7], [7.5.8], [7.5.13] for the per-fix list and r
483
483
 
484
484
  ---
485
485
 
486
- **v11.17.93 | [Autonomi](https://www.autonomi.dev/) flagship product | core skill**
486
+ **v11.17.94 | [Autonomi](https://www.autonomi.dev/) flagship product | core skill**
package/VERSION CHANGED
@@ -1 +1 @@
1
- 11.17.93
1
+ 11.17.94
@@ -7,6 +7,6 @@ Modules:
7
7
  control: Session control helpers (status, atomic writes, origin check)
8
8
  """
9
9
 
10
- __version__ = "11.17.93"
10
+ __version__ = "11.17.94"
11
11
 
12
12
  __all__ = ["__version__"]
@@ -1,6 +1,6 @@
1
1
  # CLI reference
2
2
 
3
- Generated from `loki-ts/src/cli/registry.ts` by `scripts/generate-stale-zero.sh` for v11.17.93. Do not edit by hand.
3
+ Generated from `loki-ts/src/cli/registry.ts` by `scripts/generate-stale-zero.sh` for v11.17.94. Do not edit by hand.
4
4
  Hidden and legacy-only commands are omitted; see `docs/v10/CLI-MODERN.md` for the full inventory.
5
5
 
6
6
  | Command | Description |
@@ -2,7 +2,7 @@
2
2
 
3
3
  Loki Mode, by [Autonomi](https://www.autonomi.dev/), turns a spec or an issue into a verified pull request with a receipt you can check. This page covers installing it, a first run, and the options around it.
4
4
 
5
- **Version:** v11.17.93
5
+ **Version:** v11.17.94
6
6
 
7
7
  **Engine note:** `loki start` is the primary command. `loki start`, `loki "<task>"`, `loki owner/repo#N` and `loki quick` all run the Loki 10 engine, whatever the flag order or input form (PRD file, issue ref, task or one-word brief). The previous loop runs only on `--engine legacy`, `LOKI_ENGINE=legacy`, or for one call when a flag Loki 10 cannot honor is present. See the [user guide](v10/GUIDE.md) and the [5-minute quickstart](QUICKSTART.md).
8
8
 
@@ -1295,3 +1295,11 @@ L0 review rule (ENGINE-LAWS.md L0): a fix that adds an `if` or a regex about the
1295
1295
  - Mechanism: one `REVIEWER_ITEM` credit rule inside `deepGaps`: credited when seal's cross-review returned a verdict (level not "not_run") or a deep council check executed. No review configured or a not_run review keeps it NOT PROVEN. The default path still has no reviewer, so default medium runs stay PARTIAL by design until a reviewer is configured; running a default same-vendor reviewer on every medium run is a separate cost decision.
1296
1296
  - Fixture: loki-ts/tests/util/check_result.test.ts "medium reviewer" (tier alone, not_run review, verdict review, council pass and not_run, high council not credited by a cross-review, low unaffected). Red with the credit removed, green after.
1297
1297
  - Sibling note (medium default review): the credit above was inert on a default run because the cross-review itself was opt-in (loki.yaml `review:`, LOKI_REVIEW_PROVIDER or LOKI_XVENDOR_DEFAULT). `crossReview` in engine10/stages/xreview.ts now defaults to the run's own provider and CLI (same vendor) when the risk record says medium and nothing is configured; a configured reviewer or council agent keeps precedence, and LOKI_REVIEW_PROVIDER=off or none opts out (one reviewer then stays NOT PROVEN). The receipt `review` block carries `same_vendor: true, defaulted: true`. A BLOCK still caps the verdict at PARTIAL through `minVerdict` (never upgrades). Low and high tiers do not default. Fixture: loki-ts/tests/engine10/xreview.test.ts describe "medium default review" (red with the default removed). Slow-reviewer follow-up: seal (limit 60s) used to kill the stage, and the receipt, when a default review ran long; seal now gets `extraLimitS` (the review box, LOKI_E10_REVIEW_BOX_S, default 300s, plus 30s) only when a review is planned, the stage abort signal reaches the reviewer child, a review past its box is not_run, and the receipt review block carries `level`. Fixtures: seal.test.ts "slow reviewer keeps receipt" and "seal passes reviewRan through".
1298
+
1299
+ ## FC-OUTCOME-FLOOD A per-item NOT PROVEN list (pre-red tests) had no cap, so one run printed about 300 "pre red:" entries and filled the terminal, PR body and receipt.md
1300
+ - User-visible vs raw: user-visible. Run e10-20261019T130749Z-f11c on asklokesh/FireLater#20 (11.17.93): every already-failing frontend test appeared twice on the NOT PROVEN line, once by short name and once by full path name, next to "baseline: 1 pre-existing failing check(s) (not blocking), 0 introduced".
1301
+ - Law broken: a disclosure must stay readable; an informational count is one line, the detail lives in the machine record.
1302
+ - Cause (measured): seal.ts adds one `pre red: <id>` per verify.pre_red id (verify records both name forms); output.ts, reviewer_body (via pr.ts), renderReceiptMd and the handoff each printed every receipt not_proven line unbounded.
1303
+ - Siblings swept (every per-item list in seal's notProven): pre red, not run, flaky test (also the separate flaky clause in formatSummary), skipped on base (excused), changed untested after limit, reverted test edit, wall test discarded, Wall test not executed, weakened test. Single-fact lines (baseline, verdicts) are not lists and stay.
1304
+ - Mechanism: one display-only `collapseNotProven` in util/term_width.ts, applied at the four surfaces. Pre-red names are deduplicated (a short name is the tail of its " > " full path twin) and collapse to "pre red: N tests already failing on base (listed in receipt.json)" past 3; other lists collapse to "<prefix>N entries (listed in receipt.json)" past 8. Idempotent. receipt.json not_proven and the receipt digest are unchanged.
1305
+ - Fixture: loki-ts/tests/engine10/output.test.ts "collapseNotProven" (150 short plus full-name entries), route_receipt_golden.test.ts "FC-OUTCOME-FLOOD receipt.md", tests/util/run_summary.test.ts handoff case. Red before the helper existed, green after.
@@ -2653,3 +2653,6 @@ v11.17.21 published (Release success on 462fbc40a; npm latest 11.17.21, next 11.
2653
2653
 
2654
2654
  ## 2026-10-19T12:36Z (CoS) v11.17.93
2655
2655
  - 11.17.93: FC-WALL-PHANTOM-PATH walk-up sibling, 4d7b7abf4 + 1de873678 (cherry-picks of 09fef8ead, 3e2b7b492). HIGH opus review round 1 BLOCK (FP-A..D2 reproduced), round 2 APPROVE: gate 210/0 + tests/util 461/0, tsc 0 non-control-plane, 3 mutations red. Field case run e10-20261019T121849Z-848d reports plugins/ralph-loop.
2656
+
2657
+ ## 2026-10-19T13:25Z (CoS) v11.17.94
2658
+ - 11.17.94: FC-OUTCOME-FLOOD 6e48cea46 (from 29cf26410; field run e10-20261019T130749Z-f11c FireLater#20 printed ~300 pre-red entries). TL APPROVE: digest input untouched, dedupe mutation 5 red, gate 872 pass 0 fail, tsc clean.
@@ -1,19 +1,19 @@
1
1
  // @bun
2
- var WJ=Object.defineProperty;var FJ=(J)=>J;function BJ(J,Q){this[J]=FJ.bind(null,Q)}var HJ=(J,Q)=>{for(var Z in Q)WJ(J,Z,{get:Q[Z],enumerable:!0,configurable:!0,set:BJ.bind(Q,Z)})};var IJ=(J,Q)=>()=>(J&&(Q=J(J=0)),Q);var F=import.meta.require;var qJ={};HJ(qJ,{initWasm:()=>dJ,Resvg:()=>gJ});function N(J){if(x===T.length)T.push(T.length+1);let Q=x;return x=T[Q],T[Q]=J,Q}function C(J){return T[J]}function _J(J){if(J<132)return;T[J]=x,x=J}function W(J){let Q=C(J);return _J(J),Q}function b(){if(O===null||O.byteLength===0)O=new Uint8Array(D.memory.buffer);return O}function g(J,Q,Z){if(Z===void 0){let K=y.encode(J),L=Q(K.length,1)>>>0;return b().subarray(L,L+K.length).set(K),h=K.length,L}let $=J.length,G=Q($,1)>>>0,X=b(),q=0;for(;q<$;q++){let K=J.charCodeAt(q);if(K>127)break;X[G+q]=K}if(q!==$){if(q!==0)J=J.slice(q);G=Z(G,$,$=q+J.length*3,1)>>>0;let K=b().subarray(G+q,G+$),L=xJ(J,K);q+=L.written,G=Z(G,$,q,1)>>>0}return h=q,G}function c(J){return J===void 0||J===null}function U(){if(_===null||_.byteLength===0)_=new Int32Array(D.memory.buffer);return _}function w(J,Q){return J=J>>>0,DJ.decode(b().subarray(J,J+Q))}function hJ(J,Q){if(!(J instanceof Q))throw Error(`expected instance of ${Q.name}`);return J.ptr}function fJ(J,Q){try{return J.apply(this,Q)}catch(Z){D.__wbindgen_exn_store(N(Z))}}async function yJ(J,Q){if(typeof Response==="function"&&J instanceof Response){if(typeof WebAssembly.instantiateStreaming==="function")try{return await WebAssembly.instantiateStreaming(J,Q)}catch($){if(J.headers.get("Content-Type")!="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",$);else throw $}let Z=await J.arrayBuffer();return await WebAssembly.instantiate(Z,Q)}else{let Z=await WebAssembly.instantiate(J,Q);if(Z instanceof WebAssembly.Instance)return{instance:Z,module:J};else return Z}}function wJ(){let J={};return J.wbg={},J.wbg.__wbg_new_28c511d9baebfa89=function(Q,Z){let $=Error(w(Q,Z));return N($)},J.wbg.__wbindgen_memory=function(){let Q=D.memory;return N(Q)},J.wbg.__wbg_buffer_12d079cc21e14bdb=function(Q){let Z=C(Q).buffer;return N(Z)},J.wbg.__wbg_newwithbyteoffsetandlength_aa4a17c33a06e5cb=function(Q,Z,$){let G=new Uint8Array(C(Q),Z>>>0,$>>>0);return N(G)},J.wbg.__wbindgen_object_drop_ref=function(Q){W(Q)},J.wbg.__wbg_new_63b92bc8671ed464=function(Q){let Z=new Uint8Array(C(Q));return N(Z)},J.wbg.__wbg_values_839f3396d5aac002=function(Q){let Z=C(Q).values();return N(Z)},J.wbg.__wbg_next_196c84450b364254=function(){return fJ(function(Q){let Z=C(Q).next();return N(Z)},arguments)},J.wbg.__wbg_done_298b57d23c0fc80c=function(Q){return C(Q).done},J.wbg.__wbg_value_d93c65011f51a456=function(Q){let Z=C(Q).value;return N(Z)},J.wbg.__wbg_instanceof_Uint8Array_2b3bbecd033d19f6=function(Q){let Z;try{Z=C(Q)instanceof Uint8Array}catch(G){Z=!1}return Z},J.wbg.__wbindgen_string_get=function(Q,Z){let $=C(Z),G=typeof $==="string"?$:void 0;var X=c(G)?0:g(G,D.__wbindgen_malloc,D.__wbindgen_realloc),q=h;U()[Q/4+1]=q,U()[Q/4+0]=X},J.wbg.__wbg_new_16b304a2cfa7ff4a=function(){return N([])},J.wbg.__wbindgen_string_new=function(Q,Z){let $=w(Q,Z);return N($)},J.wbg.__wbg_push_a5b05aedc7234f9f=function(Q,Z){return C(Q).push(C(Z))},J.wbg.__wbg_length_c20a40f15020d68a=function(Q){return C(Q).length},J.wbg.__wbg_set_a47bac70306a19a7=function(Q,Z,$){C(Q).set(C(Z),$>>>0)},J.wbg.__wbindgen_throw=function(Q,Z){throw Error(w(Q,Z))},J}function lJ(J,Q){}function mJ(J,Q){return D=J.exports,KJ.__wbindgen_wasm_module=Q,_=null,O=null,D}async function KJ(J){if(D!==void 0)return D;if(typeof J>"u")J=new URL("index_bg.wasm",void 0);let Q=wJ();if(typeof J==="string"||typeof Request==="function"&&J instanceof Request||typeof URL==="function"&&J instanceof URL)J=fetch(J);lJ(Q);let{instance:Z,module:$}=await yJ(await J,Q);return mJ(Z,$)}function cJ(J){return Object.prototype.hasOwnProperty.call(J,"fontBuffers")}var D,T,x,h=0,O=null,y,xJ,_=null,DJ,GJ,d=class J{static __wrap(Q){Q=Q>>>0;let Z=Object.create(J.prototype);return Z.__wbg_ptr=Q,GJ.register(Z,Z.__wbg_ptr,Z),Z}__destroy_into_raw(){let Q=this.__wbg_ptr;return this.__wbg_ptr=0,GJ.unregister(this),Q}free(){let Q=this.__destroy_into_raw();D.__wbg_bbox_free(Q)}get x(){return D.__wbg_get_bbox_x(this.__wbg_ptr)}set x(Q){D.__wbg_set_bbox_x(this.__wbg_ptr,Q)}get y(){return D.__wbg_get_bbox_y(this.__wbg_ptr)}set y(Q){D.__wbg_set_bbox_y(this.__wbg_ptr,Q)}get width(){return D.__wbg_get_bbox_width(this.__wbg_ptr)}set width(Q){D.__wbg_set_bbox_width(this.__wbg_ptr,Q)}get height(){return D.__wbg_get_bbox_height(this.__wbg_ptr)}set height(Q){D.__wbg_set_bbox_height(this.__wbg_ptr,Q)}},XJ,uJ=class J{static __wrap(Q){Q=Q>>>0;let Z=Object.create(J.prototype);return Z.__wbg_ptr=Q,XJ.register(Z,Z.__wbg_ptr,Z),Z}__destroy_into_raw(){let Q=this.__wbg_ptr;return this.__wbg_ptr=0,XJ.unregister(this),Q}free(){let Q=this.__destroy_into_raw();D.__wbg_renderedimage_free(Q)}get width(){return D.renderedimage_width(this.__wbg_ptr)>>>0}get height(){return D.renderedimage_height(this.__wbg_ptr)>>>0}asPng(){try{let G=D.__wbindgen_add_to_stack_pointer(-16);D.renderedimage_asPng(G,this.__wbg_ptr);var Q=U()[G/4+0],Z=U()[G/4+1],$=U()[G/4+2];if($)throw W(Z);return W(Q)}finally{D.__wbindgen_add_to_stack_pointer(16)}}get pixels(){let Q=D.renderedimage_pixels(this.__wbg_ptr);return W(Q)}},vJ,bJ=class{__destroy_into_raw(){let J=this.__wbg_ptr;return this.__wbg_ptr=0,vJ.unregister(this),J}free(){let J=this.__destroy_into_raw();D.__wbg_resvg_free(J)}constructor(J,Q,Z){try{let L=D.__wbindgen_add_to_stack_pointer(-16);var $=c(Q)?0:g(Q,D.__wbindgen_malloc,D.__wbindgen_realloc),G=h;D.resvg_new(L,N(J),$,G,c(Z)?0:N(Z));var X=U()[L/4+0],q=U()[L/4+1],K=U()[L/4+2];if(K)throw W(q);return this.__wbg_ptr=X>>>0,this}finally{D.__wbindgen_add_to_stack_pointer(16)}}get width(){return D.resvg_width(this.__wbg_ptr)}get height(){return D.resvg_height(this.__wbg_ptr)}render(){try{let $=D.__wbindgen_add_to_stack_pointer(-16);D.resvg_render($,this.__wbg_ptr);var J=U()[$/4+0],Q=U()[$/4+1],Z=U()[$/4+2];if(Z)throw W(Q);return uJ.__wrap(J)}finally{D.__wbindgen_add_to_stack_pointer(16)}}toString(){let J,Q;try{let G=D.__wbindgen_add_to_stack_pointer(-16);D.resvg_toString(G,this.__wbg_ptr);var Z=U()[G/4+0],$=U()[G/4+1];return J=Z,Q=$,w(Z,$)}finally{D.__wbindgen_add_to_stack_pointer(16),D.__wbindgen_free(J,Q,1)}}innerBBox(){let J=D.resvg_innerBBox(this.__wbg_ptr);return J===0?void 0:d.__wrap(J)}getBBox(){let J=D.resvg_getBBox(this.__wbg_ptr);return J===0?void 0:d.__wrap(J)}cropByBBox(J){hJ(J,d),D.resvg_cropByBBox(this.__wbg_ptr,J.__wbg_ptr)}imagesToResolve(){try{let $=D.__wbindgen_add_to_stack_pointer(-16);D.resvg_imagesToResolve($,this.__wbg_ptr);var J=U()[$/4+0],Q=U()[$/4+1],Z=U()[$/4+2];if(Z)throw W(Q);return W(J)}finally{D.__wbindgen_add_to_stack_pointer(16)}}resolveImage(J,Q){try{let G=D.__wbindgen_add_to_stack_pointer(-16),X=g(J,D.__wbindgen_malloc,D.__wbindgen_realloc),q=h;D.resvg_resolveImage(G,this.__wbg_ptr,X,q,N(Q));var Z=U()[G/4+0],$=U()[G/4+1];if($)throw W(Z)}finally{D.__wbindgen_add_to_stack_pointer(16)}}},pJ,i=!1,dJ=async(J)=>{if(i)throw Error("Already initialized. The `initWasm()` function can be used only once.");await pJ(await J),i=!0},gJ;var VJ=IJ(()=>{T=Array(128).fill(void 0);T.push(void 0,null,!0,!1);x=T.length;y=typeof TextEncoder<"u"?new TextEncoder("utf-8"):{encode:()=>{throw Error("TextEncoder not available")}},xJ=typeof y.encodeInto==="function"?function(J,Q){return y.encodeInto(J,Q)}:function(J,Q){let Z=y.encode(J);return Q.set(Z),{read:J.length,written:Z.length}};DJ=typeof TextDecoder<"u"?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};if(typeof TextDecoder<"u")DJ.decode();GJ=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((J)=>D.__wbg_bbox_free(J>>>0)),XJ=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((J)=>D.__wbg_renderedimage_free(J>>>0)),vJ=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((J)=>D.__wbg_resvg_free(J>>>0));pJ=KJ,gJ=class extends bJ{constructor(J,Q){if(!i)throw Error("Wasm has not been initialized. Call `initWasm()` function.");let Z=Q?.font;if(!!Z&&cJ(Z)){let $={...Q,font:{...Z,fontBuffers:void 0}};super(J,JSON.stringify($),Z.fontBuffers)}else super(J,JSON.stringify(Q))}}});function A(J){return String(J??"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function RJ(J,Q,Z){let $=Z/512;return`<g transform="translate(${J},${Q}) scale(${$})">
2
+ var BJ=Object.defineProperty;var HJ=(J)=>J;function FJ(J,Q){this[J]=HJ.bind(null,Q)}var IJ=(J,Q)=>{for(var Z in Q)BJ(J,Z,{get:Q[Z],enumerable:!0,configurable:!0,set:FJ.bind(Q,Z)})};var SJ=(J,Q)=>()=>(J&&(Q=J(J=0)),Q);var H=import.meta.require;var VJ={};IJ(VJ,{initWasm:()=>dJ,Resvg:()=>pJ});function C(J){if(_===P.length)P.push(P.length+1);let Q=_;return _=P[Q],P[Q]=J,Q}function A(J){return P[J]}function xJ(J){if(J<132)return;P[J]=_,_=J}function B(J){let Q=A(J);return xJ(J),Q}function b(){if(O===null||O.byteLength===0)O=new Uint8Array(X.memory.buffer);return O}function p(J,Q,Z){if(Z===void 0){let q=y.encode(J),D=Q(q.length,1)>>>0;return b().subarray(D,D+q.length).set(q),h=q.length,D}let $=J.length,G=Q($,1)>>>0,K=b(),V=0;for(;V<$;V++){let q=J.charCodeAt(V);if(q>127)break;K[G+V]=q}if(V!==$){if(V!==0)J=J.slice(V);G=Z(G,$,$=V+J.length*3,1)>>>0;let q=b().subarray(G+V,G+$),D=_J(J,q);V+=D.written,G=Z(G,$,V,1)>>>0}return h=V,G}function c(J){return J===void 0||J===null}function Y(){if(x===null||x.byteLength===0)x=new Int32Array(X.memory.buffer);return x}function w(J,Q){return J=J>>>0,XJ.decode(b().subarray(J,J+Q))}function hJ(J,Q){if(!(J instanceof Q))throw Error(`expected instance of ${Q.name}`);return J.ptr}function fJ(J,Q){try{return J.apply(this,Q)}catch(Z){X.__wbindgen_exn_store(C(Z))}}async function yJ(J,Q){if(typeof Response==="function"&&J instanceof Response){if(typeof WebAssembly.instantiateStreaming==="function")try{return await WebAssembly.instantiateStreaming(J,Q)}catch($){if(J.headers.get("Content-Type")!="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",$);else throw $}let Z=await J.arrayBuffer();return await WebAssembly.instantiate(Z,Q)}else{let Z=await WebAssembly.instantiate(J,Q);if(Z instanceof WebAssembly.Instance)return{instance:Z,module:J};else return Z}}function wJ(){let J={};return J.wbg={},J.wbg.__wbg_new_28c511d9baebfa89=function(Q,Z){let $=Error(w(Q,Z));return C($)},J.wbg.__wbindgen_memory=function(){let Q=X.memory;return C(Q)},J.wbg.__wbg_buffer_12d079cc21e14bdb=function(Q){let Z=A(Q).buffer;return C(Z)},J.wbg.__wbg_newwithbyteoffsetandlength_aa4a17c33a06e5cb=function(Q,Z,$){let G=new Uint8Array(A(Q),Z>>>0,$>>>0);return C(G)},J.wbg.__wbindgen_object_drop_ref=function(Q){B(Q)},J.wbg.__wbg_new_63b92bc8671ed464=function(Q){let Z=new Uint8Array(A(Q));return C(Z)},J.wbg.__wbg_values_839f3396d5aac002=function(Q){let Z=A(Q).values();return C(Z)},J.wbg.__wbg_next_196c84450b364254=function(){return fJ(function(Q){let Z=A(Q).next();return C(Z)},arguments)},J.wbg.__wbg_done_298b57d23c0fc80c=function(Q){return A(Q).done},J.wbg.__wbg_value_d93c65011f51a456=function(Q){let Z=A(Q).value;return C(Z)},J.wbg.__wbg_instanceof_Uint8Array_2b3bbecd033d19f6=function(Q){let Z;try{Z=A(Q)instanceof Uint8Array}catch(G){Z=!1}return Z},J.wbg.__wbindgen_string_get=function(Q,Z){let $=A(Z),G=typeof $==="string"?$:void 0;var K=c(G)?0:p(G,X.__wbindgen_malloc,X.__wbindgen_realloc),V=h;Y()[Q/4+1]=V,Y()[Q/4+0]=K},J.wbg.__wbg_new_16b304a2cfa7ff4a=function(){return C([])},J.wbg.__wbindgen_string_new=function(Q,Z){let $=w(Q,Z);return C($)},J.wbg.__wbg_push_a5b05aedc7234f9f=function(Q,Z){return A(Q).push(A(Z))},J.wbg.__wbg_length_c20a40f15020d68a=function(Q){return A(Q).length},J.wbg.__wbg_set_a47bac70306a19a7=function(Q,Z,$){A(Q).set(A(Z),$>>>0)},J.wbg.__wbindgen_throw=function(Q,Z){throw Error(w(Q,Z))},J}function mJ(J,Q){}function lJ(J,Q){return X=J.exports,qJ.__wbindgen_wasm_module=Q,x=null,O=null,X}async function qJ(J){if(X!==void 0)return X;if(typeof J>"u")J=new URL("index_bg.wasm",void 0);let Q=wJ();if(typeof J==="string"||typeof Request==="function"&&J instanceof Request||typeof URL==="function"&&J instanceof URL)J=fetch(J);mJ(Q);let{instance:Z,module:$}=await yJ(await J,Q);return lJ(Z,$)}function cJ(J){return Object.prototype.hasOwnProperty.call(J,"fontBuffers")}var X,P,_,h=0,O=null,y,_J,x=null,XJ,GJ,d=class J{static __wrap(Q){Q=Q>>>0;let Z=Object.create(J.prototype);return Z.__wbg_ptr=Q,GJ.register(Z,Z.__wbg_ptr,Z),Z}__destroy_into_raw(){let Q=this.__wbg_ptr;return this.__wbg_ptr=0,GJ.unregister(this),Q}free(){let Q=this.__destroy_into_raw();X.__wbg_bbox_free(Q)}get x(){return X.__wbg_get_bbox_x(this.__wbg_ptr)}set x(Q){X.__wbg_set_bbox_x(this.__wbg_ptr,Q)}get y(){return X.__wbg_get_bbox_y(this.__wbg_ptr)}set y(Q){X.__wbg_set_bbox_y(this.__wbg_ptr,Q)}get width(){return X.__wbg_get_bbox_width(this.__wbg_ptr)}set width(Q){X.__wbg_set_bbox_width(this.__wbg_ptr,Q)}get height(){return X.__wbg_get_bbox_height(this.__wbg_ptr)}set height(Q){X.__wbg_set_bbox_height(this.__wbg_ptr,Q)}},KJ,uJ=class J{static __wrap(Q){Q=Q>>>0;let Z=Object.create(J.prototype);return Z.__wbg_ptr=Q,KJ.register(Z,Z.__wbg_ptr,Z),Z}__destroy_into_raw(){let Q=this.__wbg_ptr;return this.__wbg_ptr=0,KJ.unregister(this),Q}free(){let Q=this.__destroy_into_raw();X.__wbg_renderedimage_free(Q)}get width(){return X.renderedimage_width(this.__wbg_ptr)>>>0}get height(){return X.renderedimage_height(this.__wbg_ptr)>>>0}asPng(){try{let G=X.__wbindgen_add_to_stack_pointer(-16);X.renderedimage_asPng(G,this.__wbg_ptr);var Q=Y()[G/4+0],Z=Y()[G/4+1],$=Y()[G/4+2];if($)throw B(Z);return B(Q)}finally{X.__wbindgen_add_to_stack_pointer(16)}}get pixels(){let Q=X.renderedimage_pixels(this.__wbg_ptr);return B(Q)}},vJ,bJ=class{__destroy_into_raw(){let J=this.__wbg_ptr;return this.__wbg_ptr=0,vJ.unregister(this),J}free(){let J=this.__destroy_into_raw();X.__wbg_resvg_free(J)}constructor(J,Q,Z){try{let D=X.__wbindgen_add_to_stack_pointer(-16);var $=c(Q)?0:p(Q,X.__wbindgen_malloc,X.__wbindgen_realloc),G=h;X.resvg_new(D,C(J),$,G,c(Z)?0:C(Z));var K=Y()[D/4+0],V=Y()[D/4+1],q=Y()[D/4+2];if(q)throw B(V);return this.__wbg_ptr=K>>>0,this}finally{X.__wbindgen_add_to_stack_pointer(16)}}get width(){return X.resvg_width(this.__wbg_ptr)}get height(){return X.resvg_height(this.__wbg_ptr)}render(){try{let $=X.__wbindgen_add_to_stack_pointer(-16);X.resvg_render($,this.__wbg_ptr);var J=Y()[$/4+0],Q=Y()[$/4+1],Z=Y()[$/4+2];if(Z)throw B(Q);return uJ.__wrap(J)}finally{X.__wbindgen_add_to_stack_pointer(16)}}toString(){let J,Q;try{let G=X.__wbindgen_add_to_stack_pointer(-16);X.resvg_toString(G,this.__wbg_ptr);var Z=Y()[G/4+0],$=Y()[G/4+1];return J=Z,Q=$,w(Z,$)}finally{X.__wbindgen_add_to_stack_pointer(16),X.__wbindgen_free(J,Q,1)}}innerBBox(){let J=X.resvg_innerBBox(this.__wbg_ptr);return J===0?void 0:d.__wrap(J)}getBBox(){let J=X.resvg_getBBox(this.__wbg_ptr);return J===0?void 0:d.__wrap(J)}cropByBBox(J){hJ(J,d),X.resvg_cropByBBox(this.__wbg_ptr,J.__wbg_ptr)}imagesToResolve(){try{let $=X.__wbindgen_add_to_stack_pointer(-16);X.resvg_imagesToResolve($,this.__wbg_ptr);var J=Y()[$/4+0],Q=Y()[$/4+1],Z=Y()[$/4+2];if(Z)throw B(Q);return B(J)}finally{X.__wbindgen_add_to_stack_pointer(16)}}resolveImage(J,Q){try{let G=X.__wbindgen_add_to_stack_pointer(-16),K=p(J,X.__wbindgen_malloc,X.__wbindgen_realloc),V=h;X.resvg_resolveImage(G,this.__wbg_ptr,K,V,C(Q));var Z=Y()[G/4+0],$=Y()[G/4+1];if($)throw B(Z)}finally{X.__wbindgen_add_to_stack_pointer(16)}}},gJ,i=!1,dJ=async(J)=>{if(i)throw Error("Already initialized. The `initWasm()` function can be used only once.");await gJ(await J),i=!0},pJ;var UJ=SJ(()=>{P=Array(128).fill(void 0);P.push(void 0,null,!0,!1);_=P.length;y=typeof TextEncoder<"u"?new TextEncoder("utf-8"):{encode:()=>{throw Error("TextEncoder not available")}},_J=typeof y.encodeInto==="function"?function(J,Q){return y.encodeInto(J,Q)}:function(J,Q){let Z=y.encode(J);return Q.set(Z),{read:J.length,written:Z.length}};XJ=typeof TextDecoder<"u"?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};if(typeof TextDecoder<"u")XJ.decode();GJ=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((J)=>X.__wbg_bbox_free(J>>>0)),KJ=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((J)=>X.__wbg_renderedimage_free(J>>>0)),vJ=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((J)=>X.__wbg_resvg_free(J>>>0));gJ=qJ,pJ=class extends bJ{constructor(J,Q){if(!i)throw Error("Wasm has not been initialized. Call `initWasm()` function.");let Z=Q?.font;if(!!Z&&cJ(Z)){let $={...Q,font:{...Z,fontBuffers:void 0}};super(J,JSON.stringify($),Z.fontBuffers)}else super(J,JSON.stringify(Q))}}});function L(J){return String(J??"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function EJ(J,Q,Z){let $=Z/512;return`<g transform="translate(${J},${Q}) scale(${$})">
3
3
  <rect x="0" y="0" width="512" height="512" rx="118" fill="#553de9"/>
4
4
  <path d="M152 405 L242 120" stroke="#FFFEFB" stroke-width="28" stroke-linecap="round" fill="none"/>
5
5
  <path d="M360 405 L270 120" stroke="#FFFEFB" stroke-width="28" stroke-linecap="round" fill="none"/>
6
6
  <path d="M242 120 Q256 86 270 120" stroke="#FFFEFB" stroke-width="28" stroke-linecap="round" fill="none"/>
7
7
  <circle cx="256" cy="295" r="20" fill="#1FC5A8"/>
8
- </g>`}function SJ(J){switch(J){case"verified":return"#1f8a52";case"failed":return"#b23a3a";case"working":case"pending":return"#9a6a12";default:return"#6b6675"}}function kJ(J){switch(J){case"pass":return"#1f8a52";case"fail":return"#b23a3a";case"pending":return"#9a6a12";default:return"#6b6675"}}function MJ(J){switch(J){case"approve":return"#1f8a52";case"reject":return"#b23a3a";case"concern":return"#9a6a12";default:return"#6b6675"}}function v(J,Q,Z,$,G="#201515"){return`<text x="${J}" y="${Q}" font-family="'Inter','Helvetica Neue',Arial,sans-serif" font-size="12" fill="#6b6675" letter-spacing="0.5">${A(Z.toUpperCase())}</text>
9
- <text x="${J}" y="${Q+24}" font-family="'JetBrains Mono','SF Mono',ui-monospace,monospace" font-size="20" font-weight="600" fill="${G}">${A($)}</text>`}var jJ=["Reason","Act","Reflect","Verify"];function OJ(J){let Q=(J||"").toLowerCase();if(/verif|complet|done|ship|deploy/.test(Q))return 3;if(/reflect|review|council|critique|assess/.test(Q))return 2;if(/reason|plan|design|architect|spec|analy/.test(Q))return 0;return 1}function $J(J){let $={run:J?.run||"cockpit",iteration:typeof J?.iteration==="number"?J.iteration:0,phase:J?.phase||"idle",tier:J?.tier||"",provider:J?.provider||"",verdict:J?.verdict||"unknown",budgetUsd:typeof J?.budgetUsd==="number"?J.budgetUsd:0,budgetLimitUsd:J?.budgetLimitUsd,freshness:J?.freshness,gates:Array.isArray(J?.gates)?J.gates:[],council:Array.isArray(J?.council)?J.council:[],fleet:Array.isArray(J?.fleet)?J.fleet:[]},G=$.budgetLimitUsd&&$.budgetLimitUsd>0?`$${$.budgetUsd.toFixed(2)} / $${$.budgetLimitUsd.toFixed(2)}`:`$${$.budgetUsd.toFixed(2)}`,X="";X+=RJ(32,32,44),X+=`<text x="92" y="54" font-family="'Fraunces','Georgia',serif" font-size="24" font-weight="600" fill="#201515">Autonomi</text>`,X+=`<text x="92" y="74" font-family="'Inter','Helvetica Neue',Arial,sans-serif" font-size="13" fill="#6b6675">Loki Cockpit</text>`;let q=$.freshness?`updated ${$.freshness}`:"live";X+=`<text x="868" y="54" text-anchor="end" font-family="'JetBrains Mono','SF Mono',ui-monospace,monospace" font-size="12" fill="#6b6675">${A(q)}</text>`,X+=`<text x="868" y="74" text-anchor="end" font-family="'JetBrains Mono','SF Mono',ui-monospace,monospace" font-size="13" fill="${SJ($.verdict)}" font-weight="600">${A($.verdict.toUpperCase())}</text>`;let K=96,L=168;X+=`<rect x="32" y="${K}" width="836" height="${L}" rx="16" fill="#ffffff" stroke="#e2e0e8"/>`,X+=`<text x="56" y="${K+34}" font-family="'Fraunces','Georgia',serif" font-size="20" font-weight="600" fill="#201515">${A($.run)}</text>`,X+=`<text x="56" y="${K+54}" font-family="'Inter','Helvetica Neue',Arial,sans-serif" font-size="13" fill="#6b6675">phase ${A($.phase)}</text>`;let z=K+96,E=(V)=>56+V*168;X+=v(E(0),z,"iteration",String($.iteration)),X+=v(E(1),z,"tier",$.tier),X+=v(E(2),z,"provider",$.provider),X+=v(E(3),z,"budget",G);let n=K+L+40;X+=`<text x="32" y="${n}" font-family="'Inter','Helvetica Neue',Arial,sans-serif" font-size="13" font-weight="600" fill="#6b6675" letter-spacing="0.5">RARV LOOP</text>`;let s=OJ($.phase),R=n+14,o=200;jJ.forEach((V,Y)=>{let P=32+Y*(o+12),j=Y<s,H=Y===s;X+=`<rect x="${P}" y="${R}" width="${o}" height="40" rx="10" fill="${H?"#553de9":"#ffffff"}" fill-opacity="${H?"0.10":"1"}" stroke="${H?"#553de9":j?"#1f8a52":"#6b6675"}" stroke-width="${H?2:1}"/>`;let ZJ=j?"check":H?"dot":"wait";if(ZJ==="check")X+=`<path d="M${P+16} ${R+20} l6 6 l10 -12" stroke="#1f8a52" stroke-width="2.5" fill="none" stroke-linecap="round" stroke-linejoin="round"/>`;else if(ZJ==="dot")X+=`<circle cx="${P+22}" cy="${R+20}" r="5" fill="#553de9"/>`;else X+=`<circle cx="${P+22}" cy="${R+20}" r="5" fill="none" stroke="#6b6675" stroke-width="1.5"/>`;X+=`<text x="${P+40}" y="${R+25}" font-family="'Inter','Helvetica Neue',Arial,sans-serif" font-size="14" font-weight="${H?600:500}" fill="${H?"#553de9":j?"#201515":"#6b6675"}">${V}</text>`});let a=R+40+40;X+=`<text x="32" y="${a}" font-family="'Inter','Helvetica Neue',Arial,sans-serif" font-size="13" font-weight="600" fill="#6b6675" letter-spacing="0.5">QUALITY GATES</text>`;let r=$.gates.length?$.gates:[{name:"no gates yet",status:"pending"}],S=30,k=a+12;X+=`<rect x="32" y="${k}" width="836" height="${r.slice(0,8).length*S+8}" rx="12" fill="#ffffff" stroke="#e2e0e8"/>`,k+=8;for(let V of r.slice(0,8)){let Y=kJ(V.status),P=k+S/2;if(X+=`<circle cx="50" cy="${P}" r="4" fill="${Y}"/>`,X+=`<text x="66" y="${P+4}" font-family="'JetBrains Mono','SF Mono',ui-monospace,monospace" font-size="12" fill="#201515">${A(V.name)}</text>`,V.runner)X+=`<text x="242" y="${P+4}" font-family="'Inter','Helvetica Neue',Arial,sans-serif" font-size="11" fill="#6b6675">${A(V.runner)}</text>`;if(V.evidence){let j=V.evidence.length>52?`${V.evidence.slice(0,49)}...`:V.evidence;X+=`<text x="332" y="${P+4}" font-family="'Inter','Helvetica Neue',Arial,sans-serif" font-size="11" fill="#6b6675">${A(j)}</text>`}X+=`<text x="852" y="${P+4}" text-anchor="end" font-family="'JetBrains Mono','SF Mono',ui-monospace,monospace" font-size="11" font-weight="700" fill="${Y}">${A(V.status.toUpperCase())}</text>`,k+=S}let t=k+40;X+=`<text x="32" y="${t}" font-family="'Inter','Helvetica Neue',Arial,sans-serif" font-size="13" font-weight="600" fill="#6b6675" letter-spacing="0.5">COMPLETION COUNCIL</text>`;let e=$.council.length?$.council:[{reviewer:"pending",vote:"pending"}],M=t+12;X+=`<rect x="32" y="${M}" width="836" height="${e.slice(0,6).length*S+8}" rx="12" fill="#ffffff" stroke="#e2e0e8"/>`,M+=8;for(let V of e.slice(0,6)){let Y=MJ(V.vote),P=M+S/2;if(X+=`<circle cx="50" cy="${P}" r="4" fill="${Y}"/>`,X+=`<text x="66" y="${P+4}" font-family="'Inter','Helvetica Neue',Arial,sans-serif" font-size="12.5" font-weight="500" fill="#201515">${A(V.reviewer)}</text>`,V.tier)X+=`<text x="292" y="${P+4}" font-family="'JetBrains Mono','SF Mono',ui-monospace,monospace" font-size="11" fill="#6b6675">${A(V.tier)}</text>`;X+=`<text x="852" y="${P+4}" text-anchor="end" font-family="'JetBrains Mono','SF Mono',ui-monospace,monospace" font-size="11" font-weight="700" fill="${Y}">${A(V.vote.toUpperCase())}</text>`,M+=S}let JJ=M+46,QJ=$.fleet.filter((V)=>V.running).length,TJ=QJ>0?`FLEET (${QJ} active / ${$.fleet.length})`:`FLEET (${$.fleet.length}, none active)`;X+=`<text x="32" y="${JJ}" font-family="'Inter','Helvetica Neue',Arial,sans-serif" font-size="13" font-weight="600" fill="#6b6675" letter-spacing="0.5">${TJ}</text>`;let B=JJ+20,m=$.fleet.slice(0,4);for(let V of m){let Y=V.running?"#1f8a52":"#6b6675";X+=`<circle cx="38" cy="${B-4}" r="5" fill="${Y}"/>`,X+=`<text x="52" y="${B}" font-family="'JetBrains Mono','SF Mono',ui-monospace,monospace" font-size="13" fill="#201515">${A(V.name)}</text>`;let P=`iter ${V.iteration??0} ${A(V.phase||V.status||"")}`;X+=`<text x="868" y="${B}" text-anchor="end" font-family="'JetBrains Mono','SF Mono',ui-monospace,monospace" font-size="12" fill="#6b6675">${P}</text>`,B+=26}if($.fleet.length>m.length)X+=`<text x="52" y="${B}" font-family="'Inter','Helvetica Neue',Arial,sans-serif" font-size="12" fill="#6b6675">+ ${$.fleet.length-m.length} more</text>`,B+=26;let p=Math.round(B+32);return`<svg xmlns="http://www.w3.org/2000/svg" width="900" height="${p}" viewBox="0 0 900 ${p}">
10
- <rect x="0" y="0" width="900" height="${p}" fill="#f1f2f6"/>
11
- ${X}
12
- </svg>`}var f,u;function LJ(){if(f!==void 0)return f;try{let J=globalThis.require??F;J.resolve("@resvg/resvg-js"),f=J("@resvg/resvg-js")}catch{f=null}return f}async function PJ(){if(u!==void 0)return u;try{let J=await Promise.resolve().then(() => (VJ(),qJ)),Q=globalThis.require??F,{readFileSync:Z,existsSync:$}=await import("fs"),{resolve:G,dirname:X}=await import("path"),{fileURLToPath:q}=await import("url"),K=null;try{let L=X(q(import.meta.url));for(let z of["../data/resvg.wasm","../../data/resvg.wasm"]){let E=G(L,z);if($(E)){K=Z(E);break}}}catch{}if(!K){let L=Q.resolve("@resvg/resvg-wasm/index_bg.wasm");K=Z(L)}await J.initWasm(K),u={Resvg:J.Resvg}}catch{u=null}return u}async function UJ(){if(LJ()?.Resvg)return!0;return(await PJ())?.Resvg!=null}var I;async function iJ(){if(I!==void 0)return I;try{let{readFileSync:J,existsSync:Q}=await import("fs"),Z=["/System/Library/Fonts/Supplemental/Arial.ttf","/System/Library/Fonts/Helvetica.ttc","/Library/Fonts/Arial.ttf","/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf","/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf","/usr/share/fonts/dejavu/DejaVuSans.ttf","/usr/share/fonts/TTF/DejaVuSans.ttf","C:\\Windows\\Fonts\\arial.ttf","C:\\Windows\\Fonts\\segoeui.ttf"];for(let $ of Z)if(Q($))return I=new Uint8Array(J($)),I;I=null}catch{I=null}return I}async function AJ(J,Q=900){let Z=LJ();if(Z?.Resvg)try{let G=new Z.Resvg(J,{fitTo:{mode:"width",value:Q}});return{png:Uint8Array.from(G.render().asPng()),available:!0}}catch{}let $=await PJ();if($?.Resvg)try{let G=await iJ(),X={fitTo:{mode:"width",value:Q}};if(G)X.font={fontBuffers:[G],defaultFontFamily:"Arial",loadSystemFonts:!1};else X.font={loadSystemFonts:!0};let q=new $.Resvg(J,X);return{png:Uint8Array.from(q.render().asPng()),available:!0}}catch(G){return{png:null,available:!1,reason:`raster failed: ${G.message}`}}return{png:null,available:!1,reason:"rasterizer unavailable (no resvg native or wasm)"}}function CJ(J){return Buffer.from(J).toString("base64")}function nJ(J,Q){let Z=CJ(J),$=Q&&Q>0?`${Q}`:"auto";return`\x1B]1337;File=${`inline=1;size=${J.length};width=${$};height=auto;preserveAspectRatio=1`}:${Z}\x07`}function sJ(J,Q=4096,Z){let $=CJ(J);if($.length===0)return"\x1B_Ga=T,f=100,m=0;\x1B\\";let G=[];for(let K=0;K<$.length;K+=Q)G.push($.slice(K,K+Q));let X=Z&&Z>0?`,c=${Z}`:"",q="";for(let K=0;K<G.length;K++){let z=K===G.length-1?0:1,E=K===0?`a=T,f=100${X},m=${z}`:`m=${z}`;q+=`\x1B_G${E};${G[K]}\x1B\\`}return q}function NJ(J,Q,Z){return J==="kitty"?sJ(Q,4096,Z):nJ(Q,Z)}var oJ=new Set(["iterm.app","wezterm","ghostty"]);function l(J=process.env){let Q=(J.LOKI_COCKPIT_PROTOCOL||"").trim().toLowerCase();if(Q==="iterm2"||Q==="kitty"||Q==="none")return Q;let Z=(J.KITTY_WINDOW_ID||"").trim(),$=(J.TERM||"").trim().toLowerCase();if(Z.length>0||$==="xterm-kitty")return"kitty";let G=(J.TERM_PROGRAM||"").trim().toLowerCase();if(oJ.has(G))return"iterm2";return"none"}async function YJ(J,Q={}){let Z=$J(J);if(Q.forceText)return{kind:"fallback",protocol:"none",reason:"--no-image (text/browser fallback)",svg:Z};let $;if(Q.protocol&&Q.protocol!=="auto")$=Q.protocol;else $=l(Q.env);if($==="none")return{kind:"fallback",protocol:$,reason:"no inline-image terminal detected",svg:Z};let G=await AJ(Z);if(!G.available||!G.png)return{kind:"fallback",protocol:$,reason:G.reason||"rasterization unavailable",svg:Z};let X=NJ($,G.png,Q.cols);return{kind:"image",protocol:$,data:X,svg:Z}}var zJ=(J)=>typeof J==="number"&&Number.isFinite(J)&&J>=40;function EJ(J=process.stdout,Q=process.env){let Z=J?.columns;if(zJ(Z))return Math.floor(Z);let $=Number(Q.COLUMNS);if(zJ($))return Math.floor($);return 80}async function aJ(){let J=[];for await(let Q of process.stdin)J.push(Q);return Buffer.concat(J).toString("utf-8")}function rJ(J){let Q="auto",Z=!1,$;for(let G=0;G<J.length;G++){let X=J[G];if(X==="--protocol"){let q=(J[++G]||"auto").toLowerCase();Q=q==="iterm2"||q==="kitty"||q==="none"?q:"auto"}else if(X==="--no-image")Z=!0;else if(X==="--svg-out")$=J[++G]}return{protocol:Q,noImage:Z,svgOut:$}}async function tJ(){let J=l(),Q=await UJ(),Z=J!=="none"&&Q?"image":"text+dashboard";return process.stdout.write(`protocol=${J}
8
+ </g>`}function kJ(J){switch(J){case"verified":return"#1f8a52";case"failed":return"#b23a3a";case"working":case"pending":return"#9a6a12";default:return"#6b6675"}}function MJ(J){switch(J){case"pass":return"#1f8a52";case"fail":return"#b23a3a";case"pending":return"#9a6a12";default:return"#6b6675"}}function RJ(J){switch(J){case"approve":return"#1f8a52";case"reject":return"#b23a3a";case"concern":return"#9a6a12";default:return"#6b6675"}}function v(J,Q,Z,$,G="#201515"){return`<text x="${J}" y="${Q}" font-family="'Inter','Helvetica Neue',Arial,sans-serif" font-size="12" fill="#6b6675" letter-spacing="0.5">${L(Z.toUpperCase())}</text>
9
+ <text x="${J}" y="${Q+24}" font-family="'JetBrains Mono','SF Mono',ui-monospace,monospace" font-size="20" font-weight="600" fill="${G}">${L($)}</text>`}var jJ=["Reason","Act","Reflect","Verify"];function OJ(J){let Q=(J||"").toLowerCase();if(/verif|complet|done|ship|deploy/.test(Q))return 3;if(/reflect|review|council|critique|assess/.test(Q))return 2;if(/reason|plan|design|architect|spec|analy/.test(Q))return 0;return 1}function $J(J){let $={run:J?.run||"cockpit",iteration:typeof J?.iteration==="number"?J.iteration:0,phase:J?.phase||"idle",tier:J?.tier||"",provider:J?.provider||"",verdict:J?.verdict||"unknown",budgetUsd:typeof J?.budgetUsd==="number"?J.budgetUsd:0,budgetLimitUsd:J?.budgetLimitUsd,freshness:J?.freshness,gates:Array.isArray(J?.gates)?J.gates:[],council:Array.isArray(J?.council)?J.council:[],fleet:Array.isArray(J?.fleet)?J.fleet:[]},G=$.budgetLimitUsd&&$.budgetLimitUsd>0?`$${$.budgetUsd.toFixed(2)} / $${$.budgetLimitUsd.toFixed(2)}`:`$${$.budgetUsd.toFixed(2)}`,K="";K+=EJ(32,32,44),K+=`<text x="92" y="54" font-family="'Fraunces','Georgia',serif" font-size="24" font-weight="600" fill="#201515">Autonomi</text>`,K+=`<text x="92" y="74" font-family="'Inter','Helvetica Neue',Arial,sans-serif" font-size="13" fill="#6b6675">Loki Cockpit</text>`;let V=$.freshness?`updated ${$.freshness}`:"live";K+=`<text x="868" y="54" text-anchor="end" font-family="'JetBrains Mono','SF Mono',ui-monospace,monospace" font-size="12" fill="#6b6675">${L(V)}</text>`,K+=`<text x="868" y="74" text-anchor="end" font-family="'JetBrains Mono','SF Mono',ui-monospace,monospace" font-size="13" fill="${kJ($.verdict)}" font-weight="600">${L($.verdict.toUpperCase())}</text>`;let q=96,D=168;K+=`<rect x="32" y="${q}" width="836" height="${D}" rx="16" fill="#ffffff" stroke="#e2e0e8"/>`,K+=`<text x="56" y="${q+34}" font-family="'Fraunces','Georgia',serif" font-size="20" font-weight="600" fill="#201515">${L($.run)}</text>`,K+=`<text x="56" y="${q+54}" font-family="'Inter','Helvetica Neue',Arial,sans-serif" font-size="13" fill="#6b6675">phase ${L($.phase)}</text>`;let T=q+96,W=(U)=>56+U*168;K+=v(W(0),T,"iteration",String($.iteration)),K+=v(W(1),T,"tier",$.tier),K+=v(W(2),T,"provider",$.provider),K+=v(W(3),T,"budget",G);let n=q+D+40;K+=`<text x="32" y="${n}" font-family="'Inter','Helvetica Neue',Arial,sans-serif" font-size="13" font-weight="600" fill="#6b6675" letter-spacing="0.5">RARV LOOP</text>`;let o=OJ($.phase),E=n+14,s=200;jJ.forEach((U,z)=>{let N=32+z*(s+12),j=z<o,I=z===o;K+=`<rect x="${N}" y="${E}" width="${s}" height="40" rx="10" fill="${I?"#553de9":"#ffffff"}" fill-opacity="${I?"0.10":"1"}" stroke="${I?"#553de9":j?"#1f8a52":"#6b6675"}" stroke-width="${I?2:1}"/>`;let ZJ=j?"check":I?"dot":"wait";if(ZJ==="check")K+=`<path d="M${N+16} ${E+20} l6 6 l10 -12" stroke="#1f8a52" stroke-width="2.5" fill="none" stroke-linecap="round" stroke-linejoin="round"/>`;else if(ZJ==="dot")K+=`<circle cx="${N+22}" cy="${E+20}" r="5" fill="#553de9"/>`;else K+=`<circle cx="${N+22}" cy="${E+20}" r="5" fill="none" stroke="#6b6675" stroke-width="1.5"/>`;K+=`<text x="${N+40}" y="${E+25}" font-family="'Inter','Helvetica Neue',Arial,sans-serif" font-size="14" font-weight="${I?600:500}" fill="${I?"#553de9":j?"#201515":"#6b6675"}">${U}</text>`});let a=E+40+40;K+=`<text x="32" y="${a}" font-family="'Inter','Helvetica Neue',Arial,sans-serif" font-size="13" font-weight="600" fill="#6b6675" letter-spacing="0.5">QUALITY GATES</text>`;let r=$.gates.length?$.gates:[{name:"no gates yet",status:"pending"}],k=30,M=a+12;K+=`<rect x="32" y="${M}" width="836" height="${r.slice(0,8).length*k+8}" rx="12" fill="#ffffff" stroke="#e2e0e8"/>`,M+=8;for(let U of r.slice(0,8)){let z=MJ(U.status),N=M+k/2;if(K+=`<circle cx="50" cy="${N}" r="4" fill="${z}"/>`,K+=`<text x="66" y="${N+4}" font-family="'JetBrains Mono','SF Mono',ui-monospace,monospace" font-size="12" fill="#201515">${L(U.name)}</text>`,U.runner)K+=`<text x="242" y="${N+4}" font-family="'Inter','Helvetica Neue',Arial,sans-serif" font-size="11" fill="#6b6675">${L(U.runner)}</text>`;if(U.evidence){let j=U.evidence.length>52?`${U.evidence.slice(0,49)}...`:U.evidence;K+=`<text x="332" y="${N+4}" font-family="'Inter','Helvetica Neue',Arial,sans-serif" font-size="11" fill="#6b6675">${L(j)}</text>`}K+=`<text x="852" y="${N+4}" text-anchor="end" font-family="'JetBrains Mono','SF Mono',ui-monospace,monospace" font-size="11" font-weight="700" fill="${z}">${L(U.status.toUpperCase())}</text>`,M+=k}let t=M+40;K+=`<text x="32" y="${t}" font-family="'Inter','Helvetica Neue',Arial,sans-serif" font-size="13" font-weight="600" fill="#6b6675" letter-spacing="0.5">COMPLETION COUNCIL</text>`;let e=$.council.length?$.council:[{reviewer:"pending",vote:"pending"}],R=t+12;K+=`<rect x="32" y="${R}" width="836" height="${e.slice(0,6).length*k+8}" rx="12" fill="#ffffff" stroke="#e2e0e8"/>`,R+=8;for(let U of e.slice(0,6)){let z=RJ(U.vote),N=R+k/2;if(K+=`<circle cx="50" cy="${N}" r="4" fill="${z}"/>`,K+=`<text x="66" y="${N+4}" font-family="'Inter','Helvetica Neue',Arial,sans-serif" font-size="12.5" font-weight="500" fill="#201515">${L(U.reviewer)}</text>`,U.tier)K+=`<text x="292" y="${N+4}" font-family="'JetBrains Mono','SF Mono',ui-monospace,monospace" font-size="11" fill="#6b6675">${L(U.tier)}</text>`;K+=`<text x="852" y="${N+4}" text-anchor="end" font-family="'JetBrains Mono','SF Mono',ui-monospace,monospace" font-size="11" font-weight="700" fill="${z}">${L(U.vote.toUpperCase())}</text>`,R+=k}let JJ=R+46,QJ=$.fleet.filter((U)=>U.running).length,PJ=QJ>0?`FLEET (${QJ} active / ${$.fleet.length})`:`FLEET (${$.fleet.length}, none active)`;K+=`<text x="32" y="${JJ}" font-family="'Inter','Helvetica Neue',Arial,sans-serif" font-size="13" font-weight="600" fill="#6b6675" letter-spacing="0.5">${PJ}</text>`;let F=JJ+20,l=$.fleet.slice(0,4);for(let U of l){let z=U.running?"#1f8a52":"#6b6675";K+=`<circle cx="38" cy="${F-4}" r="5" fill="${z}"/>`,K+=`<text x="52" y="${F}" font-family="'JetBrains Mono','SF Mono',ui-monospace,monospace" font-size="13" fill="#201515">${L(U.name)}</text>`;let N=`iter ${U.iteration??0} ${L(U.phase||U.status||"")}`;K+=`<text x="868" y="${F}" text-anchor="end" font-family="'JetBrains Mono','SF Mono',ui-monospace,monospace" font-size="12" fill="#6b6675">${N}</text>`,F+=26}if($.fleet.length>l.length)K+=`<text x="52" y="${F}" font-family="'Inter','Helvetica Neue',Arial,sans-serif" font-size="12" fill="#6b6675">+ ${$.fleet.length-l.length} more</text>`,F+=26;let g=Math.round(F+32);return`<svg xmlns="http://www.w3.org/2000/svg" width="900" height="${g}" viewBox="0 0 900 ${g}">
10
+ <rect x="0" y="0" width="900" height="${g}" fill="#f1f2f6"/>
11
+ ${K}
12
+ </svg>`}var f,u;function DJ(){if(f!==void 0)return f;try{let J=globalThis.require??H;J.resolve("@resvg/resvg-js"),f=J("@resvg/resvg-js")}catch{f=null}return f}async function NJ(){if(u!==void 0)return u;try{let J=await Promise.resolve().then(() => (UJ(),VJ)),Q=globalThis.require??H,{readFileSync:Z,existsSync:$}=await import("fs"),{resolve:G,dirname:K}=await import("path"),{fileURLToPath:V}=await import("url"),q=null;try{let D=K(V(import.meta.url));for(let T of["../data/resvg.wasm","../../data/resvg.wasm"]){let W=G(D,T);if($(W)){q=Z(W);break}}}catch{}if(!q){let D=Q.resolve("@resvg/resvg-wasm/index_bg.wasm");q=Z(D)}await J.initWasm(q),u={Resvg:J.Resvg}}catch{u=null}return u}async function YJ(){if(DJ()?.Resvg)return!0;return(await NJ())?.Resvg!=null}var S;async function iJ(){if(S!==void 0)return S;try{let{readFileSync:J,existsSync:Q}=await import("fs"),Z=["/System/Library/Fonts/Supplemental/Arial.ttf","/System/Library/Fonts/Helvetica.ttc","/Library/Fonts/Arial.ttf","/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf","/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf","/usr/share/fonts/dejavu/DejaVuSans.ttf","/usr/share/fonts/TTF/DejaVuSans.ttf","C:\\Windows\\Fonts\\arial.ttf","C:\\Windows\\Fonts\\segoeui.ttf"];for(let $ of Z)if(Q($))return S=new Uint8Array(J($)),S;S=null}catch{S=null}return S}async function LJ(J,Q=900){let Z=DJ();if(Z?.Resvg)try{let G=new Z.Resvg(J,{fitTo:{mode:"width",value:Q}});return{png:Uint8Array.from(G.render().asPng()),available:!0}}catch{}let $=await NJ();if($?.Resvg)try{let G=await iJ(),K={fitTo:{mode:"width",value:Q}};if(G)K.font={fontBuffers:[G],defaultFontFamily:"Arial",loadSystemFonts:!1};else K.font={loadSystemFonts:!0};let V=new $.Resvg(J,K);return{png:Uint8Array.from(V.render().asPng()),available:!0}}catch(G){return{png:null,available:!1,reason:`raster failed: ${G.message}`}}return{png:null,available:!1,reason:"rasterizer unavailable (no resvg native or wasm)"}}function AJ(J){return Buffer.from(J).toString("base64")}function nJ(J,Q){let Z=AJ(J),$=Q&&Q>0?`${Q}`:"auto";return`\x1B]1337;File=${`inline=1;size=${J.length};width=${$};height=auto;preserveAspectRatio=1`}:${Z}\x07`}function oJ(J,Q=4096,Z){let $=AJ(J);if($.length===0)return"\x1B_Ga=T,f=100,m=0;\x1B\\";let G=[];for(let q=0;q<$.length;q+=Q)G.push($.slice(q,q+Q));let K=Z&&Z>0?`,c=${Z}`:"",V="";for(let q=0;q<G.length;q++){let T=q===G.length-1?0:1,W=q===0?`a=T,f=100${K},m=${T}`:`m=${T}`;V+=`\x1B_G${W};${G[q]}\x1B\\`}return V}function CJ(J,Q,Z){return J==="kitty"?oJ(Q,4096,Z):nJ(Q,Z)}var sJ=new Set(["iterm.app","wezterm","ghostty"]);function m(J=process.env){let Q=(J.LOKI_COCKPIT_PROTOCOL||"").trim().toLowerCase();if(Q==="iterm2"||Q==="kitty"||Q==="none")return Q;let Z=(J.KITTY_WINDOW_ID||"").trim(),$=(J.TERM||"").trim().toLowerCase();if(Z.length>0||$==="xterm-kitty")return"kitty";let G=(J.TERM_PROGRAM||"").trim().toLowerCase();if(sJ.has(G))return"iterm2";return"none"}async function zJ(J,Q={}){let Z=$J(J);if(Q.forceText)return{kind:"fallback",protocol:"none",reason:"--no-image (text/browser fallback)",svg:Z};let $;if(Q.protocol&&Q.protocol!=="auto")$=Q.protocol;else $=m(Q.env);if($==="none")return{kind:"fallback",protocol:$,reason:"no inline-image terminal detected",svg:Z};let G=await LJ(Z);if(!G.available||!G.png)return{kind:"fallback",protocol:$,reason:G.reason||"rasterization unavailable",svg:Z};let K=CJ($,G.png,Q.cols);return{kind:"image",protocol:$,data:K,svg:Z}}var TJ=(J)=>typeof J==="number"&&Number.isFinite(J)&&J>=40;function WJ(J=process.stdout,Q=process.env){let Z=J?.columns;if(TJ(Z))return Math.floor(Z);let $=Number(Q.COLUMNS);if(TJ($))return Math.floor($);return 80}async function aJ(){let J=[];for await(let Q of process.stdin)J.push(Q);return Buffer.concat(J).toString("utf-8")}function rJ(J){let Q="auto",Z=!1,$;for(let G=0;G<J.length;G++){let K=J[G];if(K==="--protocol"){let V=(J[++G]||"auto").toLowerCase();Q=V==="iterm2"||V==="kitty"||V==="none"?V:"auto"}else if(K==="--no-image")Z=!0;else if(K==="--svg-out")$=J[++G]}return{protocol:Q,noImage:Z,svgOut:$}}async function tJ(){let J=m(),Q=await YJ(),Z=J!=="none"&&Q?"image":"text+dashboard";return process.stdout.write(`protocol=${J}
13
13
  `),process.stdout.write(`resvg=${Q?"yes":"no"}
14
14
  `),process.stdout.write(`path=${Z}
15
- `),0}async function eJ(J=process.argv.slice(2)){if(J.includes("--probe"))return await tJ();let{protocol:Q,noImage:Z,svgOut:$}=rJ(J),G;try{let K=await aJ();G=JSON.parse(K)}catch(K){return process.stderr.write(`FALLBACK could not parse cockpit state: ${K.message}
16
- `),3}let X=EJ()-2,q=await YJ(G,{protocol:Q,forceText:Z,cols:X});if($)try{let{writeFileSync:K}=await import("fs");K($,q.svg)}catch{}if(q.kind==="image"&&q.data)return process.stdout.write(q.data),0;return process.stderr.write(`FALLBACK ${q.reason||"image unavailable"}
15
+ `),0}async function eJ(J=process.argv.slice(2)){if(J.includes("--probe"))return await tJ();let{protocol:Q,noImage:Z,svgOut:$}=rJ(J),G;try{let q=await aJ();G=JSON.parse(q)}catch(q){return process.stderr.write(`FALLBACK could not parse cockpit state: ${q.message}
16
+ `),3}let K=WJ()-2,V=await zJ(G,{protocol:Q,forceText:Z,cols:K});if($)try{let{writeFileSync:q}=await import("fs");q($,V.svg)}catch{}if(V.kind==="image"&&V.data)return process.stdout.write(V.data),0;return process.stderr.write(`FALLBACK ${V.reason||"image unavailable"}
17
17
  `),3}if(import.meta.main)eJ().then((J)=>process.exit(J));export{eJ as main};
18
18
 
19
- //# debugId=DC6384A5E20B0D85C10FC2AD2CD64E13
19
+ //# debugId=70625FF4EA7AB3FE465CBC2695CA8629