loki-mode 11.36.1 → 11.36.2

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 (76) 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/COMPONENTS.md +2 -2
  6. package/docs/INSTALLATION.md +1 -1
  7. package/docs/ISSUE-TO-PR-GOLDEN-PATH-PLAN.md +2 -2
  8. package/docs/dev/project-structure.md +0 -1
  9. package/loki-ts/dist/loki.js +2 -2
  10. package/mcp/__init__.py +1 -1
  11. package/package.json +2 -2
  12. package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
  13. package/references/agent-types.md +1047 -0
  14. package/skills/agents.md +1 -1
  15. package/skills/production.md +602 -1
  16. package/skills/providers.md +256 -1
  17. package/web-app/dist/assets/{AdminPage-OGRI8GJ1.js → AdminPage-VMdXCL6Z.js} +1 -1
  18. package/web-app/dist/assets/{Avatar-B4kgGEEY.js → Avatar-u2uOGouZ.js} +1 -1
  19. package/web-app/dist/assets/{Badge-UvLXJbXI.js → Badge-Djyiy-OK.js} +1 -1
  20. package/web-app/dist/assets/{Button-DkxmzU1J.js → Button-DtzBRjJb.js} +1 -1
  21. package/web-app/dist/assets/{CockpitPage-AIefsZZs.js → CockpitPage-B5Q3cIfS.js} +1 -1
  22. package/web-app/dist/assets/{ComparePage-XKK5RTYx.js → ComparePage-D26OOxGe.js} +1 -1
  23. package/web-app/dist/assets/{ErrorBoundary-Cld0XPkX.js → ErrorBoundary-gQ0ajPif.js} +1 -1
  24. package/web-app/dist/assets/{EvidenceReceiptPanel-B1ZKXAlg.js → EvidenceReceiptPanel-BoWDPbo6.js} +1 -1
  25. package/web-app/dist/assets/{GitHubIssuesPanel-DGC6L1Ih.js → GitHubIssuesPanel-C4gdFuJu.js} +1 -1
  26. package/web-app/dist/assets/{GitHubPRsPanel-lbPP0Z43.js → GitHubPRsPanel-Gb37Pfw2.js} +1 -1
  27. package/web-app/dist/assets/{HomePage-CW2Nsj85.js → HomePage-C2XTx12e.js} +2 -2
  28. package/web-app/dist/assets/{LoginPage-yV9qQlkH.js → LoginPage-Bpmi4ohR.js} +1 -1
  29. package/web-app/dist/assets/{MagicPage-3346zl8B.js → MagicPage-B5nvAWDT.js} +1 -1
  30. package/web-app/dist/assets/{MetricsPage-D9pi9kXk.js → MetricsPage-TcUUhxGR.js} +1 -1
  31. package/web-app/dist/assets/{NotFoundPage-Bl-XZD6S.js → NotFoundPage-feaH_MlW.js} +1 -1
  32. package/web-app/dist/assets/{ProjectPage-C9G9E_Ve.js → ProjectPage-DctsQGNj.js} +3 -3
  33. package/web-app/dist/assets/{ProjectsPage-C4dgmaM2.js → ProjectsPage-DQQ-t6go.js} +1 -1
  34. package/web-app/dist/assets/{SettingsPage-CScylN9G.js → SettingsPage-BSgKRreC.js} +1 -1
  35. package/web-app/dist/assets/{ShowcasePage-BXEaCTMh.js → ShowcasePage-DfPu21Jh.js} +1 -1
  36. package/web-app/dist/assets/{SystemSettingsPage-CVl67fBp.js → SystemSettingsPage-h9_O9kOO.js} +1 -1
  37. package/web-app/dist/assets/{TeamsPage-BShm2h-2.js → TeamsPage-C7DTUuMO.js} +1 -1
  38. package/web-app/dist/assets/{TemplatesPage-D0IilZ2I.js → TemplatesPage-Bi37a0cj.js} +1 -1
  39. package/web-app/dist/assets/{TerminalOutput-IKcgQ8IX.js → TerminalOutput-DQzYlXby.js} +1 -1
  40. package/web-app/dist/assets/{activity-D9qnTcGx.js → activity-DLAeEmKf.js} +1 -1
  41. package/web-app/dist/assets/{bell-C8bn8D2J.js → bell-DgRtSLvd.js} +1 -1
  42. package/web-app/dist/assets/{bot-CK3haRKE.js → bot-C2m7OeqV.js} +1 -1
  43. package/web-app/dist/assets/{check-DUtDtj1Z.js → check-BrBcDclF.js} +1 -1
  44. package/web-app/dist/assets/{chevron-left-XsVY4XT6.js → chevron-left-C9VzYegT.js} +1 -1
  45. package/web-app/dist/assets/{circle-alert-CBvKBNmF.js → circle-alert-BCmS5TEl.js} +1 -1
  46. package/web-app/dist/assets/{clock-wML6OqQW.js → clock-BNvzvy9h.js} +1 -1
  47. package/web-app/dist/assets/{cloud-ClAKegQW.js → cloud-B9RC-OzI.js} +1 -1
  48. package/web-app/dist/assets/{code-xml-Dza-Qnf0.js → code-xml-Dq5h9Y4x.js} +1 -1
  49. package/web-app/dist/assets/{database-B1CRTmPY.js → database-BZM5e6dN.js} +1 -1
  50. package/web-app/dist/assets/{dollar-sign-Bq0j3EM_.js → dollar-sign-CG2hFMYV.js} +1 -1
  51. package/web-app/dist/assets/{file-code-corner-B1QoPjWe.js → file-code-corner-CbkPzEr1.js} +1 -1
  52. package/web-app/dist/assets/{file-plus-dFfqipAG.js → file-plus-DLIPXn2k.js} +1 -1
  53. package/web-app/dist/assets/{globe-DzVwj6bB.js → globe-7kPrJ_Vy.js} +1 -1
  54. package/web-app/dist/assets/{hammer-DPKM5K1n.js → hammer-ZsTmZCz4.js} +1 -1
  55. package/web-app/dist/assets/{index-DJxkZ_eZ.js → index-BJfP9ylx.js} +3 -3
  56. package/web-app/dist/assets/{layers-jKdIDNmu.js → layers-DT-7ulEf.js} +1 -1
  57. package/web-app/dist/assets/{loader-circle-CW6QyaLh.js → loader-circle-B4HgIJl7.js} +1 -1
  58. package/web-app/dist/assets/{lock-jBwTuvKk.js → lock-CcK3qv3U.js} +1 -1
  59. package/web-app/dist/assets/{package-ClJdz6qT.js → package-D7j5jIRE.js} +1 -1
  60. package/web-app/dist/assets/{plus-Bnt_04O9.js → plus-D61O8i_1.js} +1 -1
  61. package/web-app/dist/assets/{refresh-cw-ApE87JOG.js → refresh-cw-BwKxbGei.js} +1 -1
  62. package/web-app/dist/assets/{rotate-ccw-BBKphCgx.js → rotate-ccw-BFsHb_Do.js} +1 -1
  63. package/web-app/dist/assets/{scroll-text-D8o5YVAE.js → scroll-text-BHIKikTn.js} +1 -1
  64. package/web-app/dist/assets/{server-CwosekNi.js → server-DbucCXky.js} +1 -1
  65. package/web-app/dist/assets/{shield-alert-BiJgxPh9.js → shield-alert-CfPhky3w.js} +1 -1
  66. package/web-app/dist/assets/{thumbs-up-BPyk6qnA.js → thumbs-up-CyQoJXN3.js} +1 -1
  67. package/web-app/dist/assets/{trash-2-DuVPF3Eb.js → trash-2-DTmFWzg7.js} +1 -1
  68. package/web-app/dist/assets/{trending-down-C5CGsT7p.js → trending-down-CS5Oqc6g.js} +1 -1
  69. package/web-app/dist/assets/{trending-up-BxfM36zU.js → trending-up-CmBBN4R9.js} +1 -1
  70. package/web-app/dist/assets/{upload-DB_aFAXe.js → upload-DGePZkS3.js} +1 -1
  71. package/web-app/dist/assets/{usePolling-CpL-iwnF.js → usePolling-DEPQP4xT.js} +1 -1
  72. package/web-app/dist/assets/{user-jmoUKAK3.js → user-Bogh2WEE.js} +1 -1
  73. package/web-app/dist/index.html +1 -1
  74. package/references/agents.md +0 -1043
  75. package/references/multi-provider.md +0 -445
  76. package/references/production-patterns.md +0 -574
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.36.1
6
+ # Loki Mode v11.36.2
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
 
@@ -496,4 +496,4 @@ See `CHANGELOG.md` entries [7.5.7], [7.5.8], [7.5.13] for the per-fix list and r
496
496
 
497
497
  ---
498
498
 
499
- **v11.36.1 | [Autonomi](https://www.autonomi.dev/) flagship product | core skill**
499
+ **v11.36.2 | [Autonomi](https://www.autonomi.dev/) flagship product | core skill**
package/VERSION CHANGED
@@ -1 +1 @@
1
- 11.36.1
1
+ 11.36.2
@@ -7,6 +7,6 @@ Modules:
7
7
  control: Session control helpers (status, atomic writes, origin check)
8
8
  """
9
9
 
10
- __version__ = "11.36.1"
10
+ __version__ = "11.36.2"
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.36.1. Do not edit by hand.
3
+ Generated from `loki-ts/src/cli/registry.ts` by `scripts/generate-stale-zero.sh` for v11.36.2. 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 |
@@ -366,12 +366,12 @@ Detailed reference documentation backing the slim skill modules.
366
366
  **Key files:**
367
367
  - `core-workflow.md`, `sdlc-phases.md`, `task-queue.md`, `deployment.md`.
368
368
  - `legacy-healing-patterns.md`, `quality-control.md`, `confidence-routing.md`.
369
- - `memory-system.md`, `mcp-integration.md`, `multi-provider.md`.
369
+ - `memory-system.md`, `mcp-integration.md`.
370
370
  - `openai-patterns.md`, `lab-research-patterns.md`, `advanced-patterns.md`,
371
371
  `tool-orchestration.md`, `agent-types.md`, `competitive-analysis.md`,
372
372
  `cursor-learnings.md`, `prompt-repetition.md`, `business-ops.md`,
373
373
  `invariant-checks.md`, `magic-modules-patterns.md`,
374
- `magic-rarv-integration.md`, `production-patterns.md`.
374
+ `magic-rarv-integration.md`.
375
375
 
376
376
  **Dependencies:**
377
377
  - Linked from `skills/` and `CLAUDE.md`.
@@ -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.36.1
5
+ **Version:** v11.36.2
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
 
@@ -5,8 +5,8 @@ Lane: LOKI-GOLDEN-PATH-68. Status: plan for the first user-visible slice.
5
5
  ## 0. Two scope facts stated up front
6
6
 
7
7
  **Which file was read as AGENTS.md.** There is no `AGENTS.md` at the repo root.
8
- The two candidates are `skills/agents.md` (263 lines) and `references/agents.md`
9
- (1043 lines). `skills/agents.md` was read in full; it is the agent-dispatch and
8
+ The two candidates are `skills/agents.md` (263 lines) and the former 1043-line
9
+ `agents.md` reference twin (since merged into `references/agent-types.md`). `skills/agents.md` was read in full; it is the agent-dispatch and
10
10
  structured-prompting module, and its "Project AGENTS.md" section (L184-192)
11
11
  defines the AAIF priority order this repo follows. It contains no numbered
12
12
  feature list.
@@ -42,7 +42,6 @@ references/ # Detailed documentation (21 files)
42
42
  legacy-healing-patterns.md # Amazon AGI Lab: friction, adapters, archaeology
43
43
  openai-patterns.md # OpenAI Agents SDK: guardrails, tripwires, handoffs
44
44
  lab-research-patterns.md # DeepMind + Anthropic: Constitutional AI, debate
45
- production-patterns.md # HN 2025: What actually works in production
46
45
  advanced-patterns.md # 2025 research patterns (MAR, Iter-VF, GoalAct)
47
46
  tool-orchestration.md # ToolOrchestra-inspired efficiency & rewards
48
47
  memory-system.md # Episodic/semantic memory architecture
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- var ib0=Object.create;var{getPrototypeOf:ob0,defineProperty:AK,getOwnPropertyNames:yi,getOwnPropertyDescriptor:nb0}=Object,vi=Object.prototype.hasOwnProperty;function hi(Z){return this[Z]}var sb0,rb0,tb0=(Z,$,J)=>{var X=Z!=null&&typeof Z==="object";if(X){var Y=$?sb0??=new WeakMap:rb0??=new WeakMap,Q=Y.get(Z);if(Q)return Q}J=Z!=null?ib0(ob0(Z)):{};let z=$||!Z||!Z.__esModule?AK(J,"default",{value:Z,enumerable:!0}):J;for(let W of yi(Z))if(!vi.call(z,W))AK(z,W,{get:hi.bind(Z,W),enumerable:!0});if(X)Y.set(Z,z);return z},eb0=(Z)=>{var $=(bi??=new WeakMap).get(Z),J;if($)return $;if($=AK({},"__esModule",{value:!0}),Z&&typeof Z==="object"||typeof Z==="function"){for(var X of yi(Z))if(!vi.call($,X))AK($,X,{get:hi.bind(Z,X),enumerable:!(J=nb0(Z,X))||J.enumerable})}return bi.set(Z,$),$},bi,gN=(Z,$)=>()=>($||Z(($={exports:{}}).exports,$),$.exports);var Zy0=(Z)=>Z;function $y0(Z,$){this[Z]=Zy0.bind(null,$)}var A0=(Z,$)=>{for(var J in $)AK(Z,J,{get:$[J],enumerable:!0,configurable:!0,set:$y0.bind($,J)})};var S=(Z,$)=>()=>(Z&&($=Z(Z=0)),$);var s9=import.meta.require;var gi={};A0(gi,{lokiDir:()=>P0,homeLokiDir:()=>B2,findRepoRootForVersion:()=>LK,REPO_ROOT:()=>F0});import{resolve as jZ,dirname as lR}from"path";import{fileURLToPath as Jy0}from"url";import{existsSync as mN}from"fs";import{homedir as Xy0}from"os";function Yy0(){let Z=fi;for(let $=0;$<6;$++){if(mN(jZ(Z,"VERSION"))&&mN(jZ(Z,"autonomy/run.sh")))return Z;let J=lR(Z);if(J===Z)break;Z=J}return jZ(fi,"..","..","..")}function LK(Z){let $=Z;for(let J=0;J<6;J++){if(mN(jZ($,"VERSION"))&&mN(jZ($,"autonomy/run.sh")))return $;let X=lR($);if(X===$)break;$=X}return jZ(Z,"..","..","..")}function P0(){return process.env.LOKI_DIR??jZ(process.cwd(),".loki")}function B2(){return jZ(Xy0(),".loki")}var fi,F0;var n0=S(()=>{fi=lR(Jy0(import.meta.url));F0=Yy0()});import{readFileSync as Qy0}from"fs";import{resolve as zy0,dirname as Wy0}from"path";import{fileURLToPath as Ky0}from"url";function q6(){if(w1!==null)return w1;let Z="11.36.1";if(typeof Z==="string"&&Z.length>0)return w1=Z,w1;try{let $=Wy0(Ky0(import.meta.url)),J=LK($);w1=Qy0(zy0(J,"VERSION"),"utf-8").trim()}catch{w1="unknown"}return w1}var w1=null;var FZ=S(()=>{n0()});import{mkdirSync as iR,readFileSync as uN,realpathSync as Vy0,statSync as Gy0,writeFileSync as oR}from"fs";import{dirname as XY,join as aR,resolve as mi}from"path";function Ny0(){return mi(B2(),"cache","update-check.json")}function CZ(Z){let $=/^(\d+)\.(\d+)\.(\d+)$/.exec(Z.trim());if(!$)return null;return[Number($[1]),Number($[2]),Number($[3])]}function jK(Z,$){let J=CZ(Z),X=CZ($);if(!J||!X)return!1;let[Y,Q,z]=J,[W,K,V]=X;if(Y!==W)return Y>W;if(Q!==K)return Q>K;return z>V}function ui(){let Z=(process.env.LOKI_NO_UPDATE_CHECK??"").trim().toLowerCase();if(Z==="1"||Z==="true"||Z==="yes")return!0;if(process.env.CI)return!0;if(!process.stdout.isTTY)return!0;return!1}function pi(Z){try{let $=uN(Z,"utf-8"),J=JSON.parse($);if(typeof J.checkedAt==="number"&&typeof J.latest==="string"&&CZ(J.latest)!==null)return{checkedAt:J.checkedAt,latest:J.latest}}catch{}return null}function My0(Z){try{let $=JSON.parse(uN(Z,"utf-8")).failedAt;if(typeof $==="number")return $}catch{}return null}function Oy0(Z,$){let J=pi(Z);try{iR(XY(Z),{recursive:!0}),oR(Z,JSON.stringify({...J??{},failedAt:$}),"utf-8")}catch{}}function Ay0(Z,$){try{iR(XY(Z),{recursive:!0}),oR(Z,JSON.stringify($),"utf-8")}catch{}}async function Ly0(){try{let Z=await fetch(Hy0,{signal:AbortSignal.timeout(Uy0),headers:{accept:"application/json"}});if(!Z.ok)return null;let $=await Z.json();if(typeof $.version==="string"&&CZ($.version)!==null)return $.version}catch{}return null}async function jy0(Z=Date.now(),$=Ly0,J=Ny0()){let X=pi(J);if(X&&Z-X.checkedAt<qy0)return X.latest;let Y=My0(J);if(Y!==null&&Z-Y>=0&&Z-Y<By0)return null;let Q=await $();if(Q===null)return Oy0(J,Z),null;return Ay0(J,{checkedAt:Z,latest:Q}),Q}function Fy0(Z,$=process.env){if(CZ(Z)===null)return null;let X=$.PATH;if(!X)return null;let Y=new Set;for(let Q of X.split(":")){if(!Q)continue;let z=aR(Q,"loki"),W;try{Gy0(z),W=Vy0(z)}catch{continue}if(Y.has(W))continue;Y.add(W);try{let K=aR(XY(XY(W)),"package.json"),V=JSON.parse(uN(K,"utf8")).version;if(typeof V!=="string")continue;if(jK(V,Z))return{path:z,version:V}}catch{continue}}return null}function Cy0(){return mi(B2(),"cache","last-seen-version.json")}function Iy0(Z,$={}){try{if(ui())return!1;if(CZ(Z)===null)return!1;let J=$.seenFile??Cy0(),X=null;try{let Q=JSON.parse(uN(J,"utf-8")).version;if(typeof Q==="string"&&CZ(Q)!==null)X=Q}catch{}if(X!==null&&!jK(Z,X))return!1;try{iR(XY(J),{recursive:!0}),oR(J,JSON.stringify({version:Z}),"utf-8")}catch{return!1}if(X===null)return!1;return($.write??((Q)=>process.stderr.write(Q)))(`Loki Mode upgraded ${X} -> ${Z}. What is new: https://github.com/asklokesh/loki-mode/releases/tag/v${Z}
2
+ var ib0=Object.create;var{getPrototypeOf:ob0,defineProperty:AK,getOwnPropertyNames:yi,getOwnPropertyDescriptor:nb0}=Object,vi=Object.prototype.hasOwnProperty;function hi(Z){return this[Z]}var sb0,rb0,tb0=(Z,$,J)=>{var X=Z!=null&&typeof Z==="object";if(X){var Y=$?sb0??=new WeakMap:rb0??=new WeakMap,Q=Y.get(Z);if(Q)return Q}J=Z!=null?ib0(ob0(Z)):{};let z=$||!Z||!Z.__esModule?AK(J,"default",{value:Z,enumerable:!0}):J;for(let W of yi(Z))if(!vi.call(z,W))AK(z,W,{get:hi.bind(Z,W),enumerable:!0});if(X)Y.set(Z,z);return z},eb0=(Z)=>{var $=(bi??=new WeakMap).get(Z),J;if($)return $;if($=AK({},"__esModule",{value:!0}),Z&&typeof Z==="object"||typeof Z==="function"){for(var X of yi(Z))if(!vi.call($,X))AK($,X,{get:hi.bind(Z,X),enumerable:!(J=nb0(Z,X))||J.enumerable})}return bi.set(Z,$),$},bi,gN=(Z,$)=>()=>($||Z(($={exports:{}}).exports,$),$.exports);var Zy0=(Z)=>Z;function $y0(Z,$){this[Z]=Zy0.bind(null,$)}var A0=(Z,$)=>{for(var J in $)AK(Z,J,{get:$[J],enumerable:!0,configurable:!0,set:$y0.bind($,J)})};var S=(Z,$)=>()=>(Z&&($=Z(Z=0)),$);var s9=import.meta.require;var gi={};A0(gi,{lokiDir:()=>P0,homeLokiDir:()=>B2,findRepoRootForVersion:()=>LK,REPO_ROOT:()=>F0});import{resolve as jZ,dirname as lR}from"path";import{fileURLToPath as Jy0}from"url";import{existsSync as mN}from"fs";import{homedir as Xy0}from"os";function Yy0(){let Z=fi;for(let $=0;$<6;$++){if(mN(jZ(Z,"VERSION"))&&mN(jZ(Z,"autonomy/run.sh")))return Z;let J=lR(Z);if(J===Z)break;Z=J}return jZ(fi,"..","..","..")}function LK(Z){let $=Z;for(let J=0;J<6;J++){if(mN(jZ($,"VERSION"))&&mN(jZ($,"autonomy/run.sh")))return $;let X=lR($);if(X===$)break;$=X}return jZ(Z,"..","..","..")}function P0(){return process.env.LOKI_DIR??jZ(process.cwd(),".loki")}function B2(){return jZ(Xy0(),".loki")}var fi,F0;var n0=S(()=>{fi=lR(Jy0(import.meta.url));F0=Yy0()});import{readFileSync as Qy0}from"fs";import{resolve as zy0,dirname as Wy0}from"path";import{fileURLToPath as Ky0}from"url";function q6(){if(w1!==null)return w1;let Z="11.36.2";if(typeof Z==="string"&&Z.length>0)return w1=Z,w1;try{let $=Wy0(Ky0(import.meta.url)),J=LK($);w1=Qy0(zy0(J,"VERSION"),"utf-8").trim()}catch{w1="unknown"}return w1}var w1=null;var FZ=S(()=>{n0()});import{mkdirSync as iR,readFileSync as uN,realpathSync as Vy0,statSync as Gy0,writeFileSync as oR}from"fs";import{dirname as XY,join as aR,resolve as mi}from"path";function Ny0(){return mi(B2(),"cache","update-check.json")}function CZ(Z){let $=/^(\d+)\.(\d+)\.(\d+)$/.exec(Z.trim());if(!$)return null;return[Number($[1]),Number($[2]),Number($[3])]}function jK(Z,$){let J=CZ(Z),X=CZ($);if(!J||!X)return!1;let[Y,Q,z]=J,[W,K,V]=X;if(Y!==W)return Y>W;if(Q!==K)return Q>K;return z>V}function ui(){let Z=(process.env.LOKI_NO_UPDATE_CHECK??"").trim().toLowerCase();if(Z==="1"||Z==="true"||Z==="yes")return!0;if(process.env.CI)return!0;if(!process.stdout.isTTY)return!0;return!1}function pi(Z){try{let $=uN(Z,"utf-8"),J=JSON.parse($);if(typeof J.checkedAt==="number"&&typeof J.latest==="string"&&CZ(J.latest)!==null)return{checkedAt:J.checkedAt,latest:J.latest}}catch{}return null}function My0(Z){try{let $=JSON.parse(uN(Z,"utf-8")).failedAt;if(typeof $==="number")return $}catch{}return null}function Oy0(Z,$){let J=pi(Z);try{iR(XY(Z),{recursive:!0}),oR(Z,JSON.stringify({...J??{},failedAt:$}),"utf-8")}catch{}}function Ay0(Z,$){try{iR(XY(Z),{recursive:!0}),oR(Z,JSON.stringify($),"utf-8")}catch{}}async function Ly0(){try{let Z=await fetch(Hy0,{signal:AbortSignal.timeout(Uy0),headers:{accept:"application/json"}});if(!Z.ok)return null;let $=await Z.json();if(typeof $.version==="string"&&CZ($.version)!==null)return $.version}catch{}return null}async function jy0(Z=Date.now(),$=Ly0,J=Ny0()){let X=pi(J);if(X&&Z-X.checkedAt<qy0)return X.latest;let Y=My0(J);if(Y!==null&&Z-Y>=0&&Z-Y<By0)return null;let Q=await $();if(Q===null)return Oy0(J,Z),null;return Ay0(J,{checkedAt:Z,latest:Q}),Q}function Fy0(Z,$=process.env){if(CZ(Z)===null)return null;let X=$.PATH;if(!X)return null;let Y=new Set;for(let Q of X.split(":")){if(!Q)continue;let z=aR(Q,"loki"),W;try{Gy0(z),W=Vy0(z)}catch{continue}if(Y.has(W))continue;Y.add(W);try{let K=aR(XY(XY(W)),"package.json"),V=JSON.parse(uN(K,"utf8")).version;if(typeof V!=="string")continue;if(jK(V,Z))return{path:z,version:V}}catch{continue}}return null}function Cy0(){return mi(B2(),"cache","last-seen-version.json")}function Iy0(Z,$={}){try{if(ui())return!1;if(CZ(Z)===null)return!1;let J=$.seenFile??Cy0(),X=null;try{let Q=JSON.parse(uN(J,"utf-8")).version;if(typeof Q==="string"&&CZ(Q)!==null)X=Q}catch{}if(X!==null&&!jK(Z,X))return!1;try{iR(XY(J),{recursive:!0}),oR(J,JSON.stringify({version:Z}),"utf-8")}catch{return!1}if(X===null)return!1;return($.write??((Q)=>process.stderr.write(Q)))(`Loki Mode upgraded ${X} -> ${Z}. What is new: https://github.com/asklokesh/loki-mode/releases/tag/v${Z}
3
3
  `),!0}catch{return!1}}function Ty0(Z){let $=Z.replace(/\\/g,"/");if($.includes("/Cellar/"))return"brew upgrade loki-mode";if(/\/pnpm\//.test($)||$.includes("/.pnpm/"))return"pnpm add -g loki-mode (or npm i -g loki-mode)";if($.includes("/yarn/global/")||$.includes("/.yarn/"))return"yarn global add loki-mode (or npm i -g loki-mode)";if($.includes("/.bun/"))return"bun install -g loki-mode (or npm i -g loki-mode)";if($.includes("/lib/node_modules/"))return"npm i -g loki-mode (or bun install -g loki-mode)";if($.includes("/homebrew/"))return"brew upgrade loki-mode";return"bun install -g loki-mode (or npm i -g loki-mode)"}async function ci(Z,$={}){try{if(ui())return;if(CZ(Z)===null)return;let J=$.write??((Q)=>process.stderr.write(Q));Iy0(Z,{write:J,...$.cacheFile?{seenFile:aR(XY($.cacheFile),"last-seen-version.json")}:{}});let X=Fy0(Z,$.env??process.env);if(X!==null){J(`Loki Mode ${X.version} is installed but not the one running (you are running ${Z}).
4
4
  Another loki earlier on PATH is winning. Newer copy: ${X.path}
5
5
  Run \`which -a loki\` to see the order, then remove or re-point the earlier entry.
@@ -3238,4 +3238,4 @@ Unknown commands exit 2 with a suggestion; run 'loki help' for the full list.
3238
3238
  `);{let{suggestCommand:X}=await Promise.resolve().then(() => (t4(),Fo)),Y=$===void 0?void 0:X($);if(Y)process.stderr.write(`Did you mean 'loki ${Y}'?
3239
3239
  `)}return process.stderr.write(mb0),2}}aF0();var ub0=()=>globalThis[Symbol.for("loki.ownsStopSignals")]===!0;process.on("SIGINT",()=>{if(!ub0())process.exit(130)});process.on("SIGTERM",()=>{if(!ub0())process.exit(143)});var Wq9=await zq9(Bun.argv.slice(2));process.exit(Wq9);
3240
3240
 
3241
- //# debugId=36C0B9674246337343BD4F3840753CEE
3241
+ //# debugId=85DE4715C2DD02B8B0E3F30581D2A803
package/mcp/__init__.py CHANGED
@@ -75,4 +75,4 @@ try:
75
75
  except ImportError:
76
76
  __all__ = ['mcp']
77
77
 
78
- __version__ = '11.36.1'
78
+ __version__ = '11.36.2'
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "loki-mode",
3
3
  "mcpName": "io.github.asklokesh/loki-mode",
4
- "version": "11.36.1",
4
+ "version": "11.36.2",
5
5
  "description": "An autonomous software factory that knows what it is supposed to deliver, and proves it did.",
6
6
  "keywords": [
7
7
  "agent",
@@ -160,5 +160,5 @@
160
160
  "dependencies": {
161
161
  "@resvg/resvg-wasm": "^2.6.2"
162
162
  },
163
- "gitHead": "91c7e73af2c921f549c83dd3aac4e1f60f7b611b"
163
+ "gitHead": "d2c119725ba7454394b4d6f2cfdfd764af7f9d9f"
164
164
  }
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
3
3
  "name": "loki-mode",
4
4
  "displayName": "Loki Mode",
5
- "version": "11.36.1",
5
+ "version": "11.36.2",
6
6
  "description": "Autonomous spec-to-product build system with a built-in trust layer (RARV-C closure loop, 8 quality gates, completion council). Ships Loki's spec-hardening, drift-detection, and deterministic PR verification commands plus the Loki MCP server.",
7
7
  "author": {
8
8
  "name": "Autonomi",