loki-mode 11.17.93 → 11.17.95

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 +16 -0
  7. package/docs/v10/PROGRESS.md +6 -0
  8. package/loki-ts/dist/cockpit.js +9 -9
  9. package/loki-ts/dist/loki.js +1154 -1154
  10. package/mcp/__init__.py +1 -1
  11. package/package.json +2 -2
  12. package/packages/control-plane/dist/server.js +77 -11
  13. package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
  14. package/web-app/dist/assets/{AdminPage-6-jld-us.js → AdminPage-Bq3GIhNB.js} +1 -1
  15. package/web-app/dist/assets/{Avatar-DctzN5Cw.js → Avatar-DaiPuWqr.js} +1 -1
  16. package/web-app/dist/assets/{Badge-Cy51pGqP.js → Badge-CItgRbkz.js} +1 -1
  17. package/web-app/dist/assets/{Button-DXeBlxCZ.js → Button-OrSdD_k0.js} +1 -1
  18. package/web-app/dist/assets/{CockpitPage-CGLpA3Io.js → CockpitPage-BVBakqUM.js} +1 -1
  19. package/web-app/dist/assets/{ComparePage-BNcy4CI4.js → ComparePage-UMAcdD0g.js} +1 -1
  20. package/web-app/dist/assets/{ErrorBoundary-CisSLOb5.js → ErrorBoundary-BVib-R__.js} +1 -1
  21. package/web-app/dist/assets/{EvidenceReceiptPanel-DW5F1Kc3.js → EvidenceReceiptPanel-CUT7gsPP.js} +1 -1
  22. package/web-app/dist/assets/{GitHubIssuesPanel-BEBQEcoy.js → GitHubIssuesPanel-ClRXNMyP.js} +1 -1
  23. package/web-app/dist/assets/{GitHubPRsPanel-BXldhM2g.js → GitHubPRsPanel-DZ6X6Hxh.js} +1 -1
  24. package/web-app/dist/assets/{HomePage-b7Q-EfNe.js → HomePage-C7r6eTnG.js} +2 -2
  25. package/web-app/dist/assets/{LoginPage-Ddm3Z9qM.js → LoginPage-CoAU9hWW.js} +1 -1
  26. package/web-app/dist/assets/{MagicPage-DxtHrhVT.js → MagicPage-GPIuqNNU.js} +1 -1
  27. package/web-app/dist/assets/{MetricsPage-D7izX-Op.js → MetricsPage-oC1QHoms.js} +1 -1
  28. package/web-app/dist/assets/{NotFoundPage-Bg8mABI5.js → NotFoundPage-R1g_LL-N.js} +1 -1
  29. package/web-app/dist/assets/{ProjectPage-DteghQIt.js → ProjectPage-DD4w8s11.js} +3 -3
  30. package/web-app/dist/assets/{ProjectsPage-dIgXDX9y.js → ProjectsPage-BxcSql1s.js} +1 -1
  31. package/web-app/dist/assets/{SettingsPage-C4pshWvC.js → SettingsPage-BQkI7SIf.js} +1 -1
  32. package/web-app/dist/assets/{ShowcasePage-tFrtatqT.js → ShowcasePage-BnmpNf9H.js} +1 -1
  33. package/web-app/dist/assets/{SystemSettingsPage-CgU4w3jV.js → SystemSettingsPage-D_CeUgOU.js} +1 -1
  34. package/web-app/dist/assets/{TeamsPage--xbuySkP.js → TeamsPage-DI0twiAI.js} +1 -1
  35. package/web-app/dist/assets/{TemplatesPage-CwpBT6eY.js → TemplatesPage-CF4bJa2a.js} +1 -1
  36. package/web-app/dist/assets/{TerminalOutput-BwW0kg5J.js → TerminalOutput-CJYp2Vm2.js} +1 -1
  37. package/web-app/dist/assets/{activity-ft3NyAGh.js → activity-Dbw7uHdj.js} +1 -1
  38. package/web-app/dist/assets/{bell-DPzgv_xI.js → bell-B7Dwt2kM.js} +1 -1
  39. package/web-app/dist/assets/{bot-CBqD4b-6.js → bot-DySTe33O.js} +1 -1
  40. package/web-app/dist/assets/{check-uYlm2Xfn.js → check-ttlvc1oX.js} +1 -1
  41. package/web-app/dist/assets/{chevron-left-BeD61ukD.js → chevron-left-D58uO9_E.js} +1 -1
  42. package/web-app/dist/assets/{circle-alert-BOS1xpKZ.js → circle-alert-BukvG_5h.js} +1 -1
  43. package/web-app/dist/assets/{clock-CbTJNvnG.js → clock-BAI8rwxI.js} +1 -1
  44. package/web-app/dist/assets/{cloud-tR_5E6ZC.js → cloud-C3_FFOHi.js} +1 -1
  45. package/web-app/dist/assets/{code-xml-DPWl7Bek.js → code-xml-BiZhCUId.js} +1 -1
  46. package/web-app/dist/assets/{database-CS7Q8NAY.js → database-DxDnnkdS.js} +1 -1
  47. package/web-app/dist/assets/{dollar-sign-C5xImo1m.js → dollar-sign-BK82Umxo.js} +1 -1
  48. package/web-app/dist/assets/{file-code-corner-BmXxUw6o.js → file-code-corner-Cr5g9ekr.js} +1 -1
  49. package/web-app/dist/assets/{file-plus-CteZrUf8.js → file-plus-BNNpaLY2.js} +1 -1
  50. package/web-app/dist/assets/{globe-CAxh1Azh.js → globe-I-5yS74s.js} +1 -1
  51. package/web-app/dist/assets/{hammer-CEO2zxTL.js → hammer-CJ52XJSY.js} +1 -1
  52. package/web-app/dist/assets/{index-BQmgCOrb.js → index-8u9X9UkZ.js} +3 -3
  53. package/web-app/dist/assets/{layers-BHIa5-wK.js → layers-t3L355U4.js} +1 -1
  54. package/web-app/dist/assets/{loader-circle-IqGNb5jb.js → loader-circle-YZKhI-zo.js} +1 -1
  55. package/web-app/dist/assets/{lock-CXlZTpO0.js → lock-C-SdvJZG.js} +1 -1
  56. package/web-app/dist/assets/{package-B3fPt25Y.js → package-D-PvM4OI.js} +1 -1
  57. package/web-app/dist/assets/{plus-DPIX9QCL.js → plus-zusQn6fq.js} +1 -1
  58. package/web-app/dist/assets/{refresh-cw-CyLsHfRl.js → refresh-cw-CycJ-WmB.js} +1 -1
  59. package/web-app/dist/assets/{rotate-ccw-DoKR0t3T.js → rotate-ccw-oTTB4oPx.js} +1 -1
  60. package/web-app/dist/assets/{scroll-text-Bw6x3LPI.js → scroll-text-BsF3F1FM.js} +1 -1
  61. package/web-app/dist/assets/{server-DR9hniNe.js → server-BejLzPI4.js} +1 -1
  62. package/web-app/dist/assets/{shield-alert--KEX5oP9.js → shield-alert-DS86jyQ2.js} +1 -1
  63. package/web-app/dist/assets/{thumbs-up-B5cuiXGS.js → thumbs-up-DQ9-ANDq.js} +1 -1
  64. package/web-app/dist/assets/{trash-2-BE-c_nAt.js → trash-2-FSv2nvxY.js} +1 -1
  65. package/web-app/dist/assets/{trending-down-D2KDvnB4.js → trending-down-Bh20MLSt.js} +1 -1
  66. package/web-app/dist/assets/{trending-up-0Ns5W6KO.js → trending-up-J7yIg6ew.js} +1 -1
  67. package/web-app/dist/assets/{upload-DdHRUifc.js → upload-D0j0hS3h.js} +1 -1
  68. package/web-app/dist/assets/{usePolling-CFGqiFbP.js → usePolling-C6HzHph-.js} +1 -1
  69. package/web-app/dist/assets/{user-BqGtuSvK.js → user-fbR8rhOt.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.95
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.95 | [Autonomi](https://www.autonomi.dev/) flagship product | core skill**
package/VERSION CHANGED
@@ -1 +1 @@
1
- 11.17.93
1
+ 11.17.95
@@ -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.95"
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.95. 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.95
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,19 @@ 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.
1306
+
1307
+ ## FC-WALL-LOCATION-BLIND The Wall author was never told where its file would live, so a root-relative __dirname built phantom paths; and a stale untracked Wall file from an earlier run was credited as an exogenous pass
1308
+ - User-visible vs raw: user-visible. `loki start asklokesh/FireLater#20` on loki 11.17.93 (run e10-20261019T130749Z-f11c) sealed PARTIAL with no Wall proof. Raw: the author wrote "this file lives at the repo root" with `const root = __dirname` and joined backend/src and frontend/src; Loki installs Wall files beside the first detected test (backend/src/lib), so the detector correctly flagged backend/src/lib/backend/src. The re-ask said "locate the real code by searching", which misdiagnosed a location error. Separately the receipt listed "wall test discarded: loki_wall_websocket.test.ts" and also an exogenous pass for vitest:backend/src/lib/loki_wall_websocket.test.ts.
1309
+ - Law: an author that writes a file is told the repo-relative directory the file will run from and what __dirname resolves to there; a re-ask names the real cause; a discarded Wall file is never also credited as a check.
1310
+ - Cause (measured): wallAuthor passed no destination to buildWallBrief (the brief says the author cannot see the repository); phantomReason had no notion of the test directory. The pass came from an untracked loki_wall_websocket.test.ts (mtime 00:55, an earlier run's installed Wall file, a different body than this run's discarded copy) still in the working tree: verify's changedFiles lists untracked files, so it ran as a changed test and lint target.
1311
+ - Siblings swept: Wall author (fixed: brief names the destination, re-ask names the cause); implement bug-repro test and fix stage (an in-repo session whose cwd is the repo, so the file location is the author's own choice; nothing blind); verify changed set (fixed: a loki_wall_* path not installed by this run's Wall is dropped; the commit stage already excludes the prefix); holdout files are staged later by stageHoldout and unaffected.
1312
+ - Mechanism: buildWallBrief takes the destination from wallTargetDir (the value installCore copies to); phantomReason(miss, repoFiles, testDir, pkgRoot) names "your test is copied to X/, __dirname is that directory, not the repo root; Y exists relative to the repo root" when the phantom is testDir joined with a path real at the repo or package root; util/check_result.ts withoutStaleWall filters verify's changed list.
1313
+ - Fixture: loki-ts/tests/engine10/fc23_wall_conventions.test.ts describe "FC-WALL-LOCATION-BLIND" (brief, reason, end-to-end re-ask with the run's file shape, stale file excluded, own file kept). Red before the fix (4 of 6), green after.
@@ -2653,3 +2653,9 @@ 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.
2659
+
2660
+ ## 2026-10-19T13:43Z (CoS) v11.17.95
2661
+ - 11.17.95: FC-WALL-LOCATION-BLIND c3fbc4f4c+10226edf6 (from ff9d5c9d3+9807b3401; field run e10-20261019T130749Z-f11c FireLater#20). HIGH APPROVE round 2: 7 repro cases, 5 mutations red, 838 pass 0 fail; merged-tree gate 789 pass 0 fail.
@@ -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