loki-mode 11.3.0 → 11.3.1

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 (215) hide show
  1. package/README.md +68 -650
  2. package/SKILL.md +4 -4
  3. package/VERSION +1 -1
  4. package/autonomy/completion-council.sh +2 -2
  5. package/autonomy/context-tracker.py +4 -4
  6. package/autonomy/council-v2.sh +1 -1
  7. package/autonomy/grill.sh +1 -1
  8. package/autonomy/lib/done-recognition.sh +1 -1
  9. package/autonomy/lib/prd-enrich.sh +1 -1
  10. package/autonomy/lib/voter-agents.sh +1 -1
  11. package/autonomy/loki +99 -75
  12. package/autonomy/run.sh +30 -18
  13. package/autonomy/sandbox.sh +1 -1
  14. package/autonomy/tui.sh +6 -5
  15. package/autonomy/verify.sh +1 -1
  16. package/bin/loki +166 -59
  17. package/completions/_loki +2 -0
  18. package/completions/loki.bash +2 -2
  19. package/dashboard/__init__.py +1 -1
  20. package/dashboard/server.py +25 -31
  21. package/docs/ARCHITECTURE.md +337 -0
  22. package/docs/BRANDING.md +124 -0
  23. package/docs/CLI-REFERENCE.md +7 -1
  24. package/docs/COMPONENTS.md +447 -0
  25. package/docs/DEPLOYMENT.md +9 -9
  26. package/docs/DOCKER.md +469 -0
  27. package/docs/INSTALLATION.md +67 -1045
  28. package/docs/KNOWN-ISSUES.md +11 -35
  29. package/docs/TESTING.md +161 -0
  30. package/docs/air-gapped.md +1 -2
  31. package/docs/alternative-installations.md +14 -24
  32. package/docs/architecture/DECISIONS.md +333 -0
  33. package/docs/audit-logging.md +7 -7
  34. package/docs/authentication.md +3 -3
  35. package/docs/authorization.md +1 -1
  36. package/docs/certification/04-production-deployment/lab.md +6 -6
  37. package/docs/certification/04-production-deployment/lesson.md +4 -4
  38. package/docs/certification/README.md +1 -1
  39. package/docs/control-plane-container.md +2 -2
  40. package/docs/dev/real-run.md +34 -0
  41. package/docs/dev/release-checklist.md +2 -2
  42. package/docs/exit-codes.md +3 -3
  43. package/docs/git-workflow.md +3 -3
  44. package/docs/metrics.md +37 -55
  45. package/docs/network-security.md +1 -1
  46. package/docs/siem-integration.md +5 -5
  47. package/docs/v10/CLI-MODERN.md +4 -3
  48. package/docs/v10/DECISIONS.md +44 -0
  49. package/docs/v10/DEPS.md +22 -22
  50. package/docs/v10/ENGINE.md +1 -1
  51. package/docs/v10/FAILURE-CLASSES.md +118 -1
  52. package/docs/v10/FOUNDER-QUEUE.md +1 -0
  53. package/docs/v10/GUARDS.md +13 -0
  54. package/docs/v10/LEGACY-REMOVAL.md +4 -6
  55. package/docs/v10/METRICS.md +2 -2
  56. package/docs/v10/MODERNIZE.md +1 -1
  57. package/docs/v10/OPERATING-MODEL.md +2 -1
  58. package/docs/v10/PROGRESS.md +29 -0
  59. package/docs/v11/COST-HALF.md +352 -0
  60. package/docs/v11/MARKET-SLICES.md +315 -0
  61. package/docs/v11/REGISTRIES.md +730 -0
  62. package/loki-ts/data/model-pricing.json +52 -24
  63. package/loki-ts/dist/loki.js +1036 -957
  64. package/mcp/__init__.py +1 -1
  65. package/package.json +1 -1
  66. package/packages/control-plane/dist/server.js +2467 -736
  67. package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
  68. package/src/protocols/mcp-client.js +6 -2
  69. package/src/protocols/mcp-server.js +13 -3
  70. package/tools/audit-docs.py +1 -1
  71. package/web-app/dist/assets/{AdminPage-D_e45uTw.js → AdminPage-CMkHNJbF.js} +1 -1
  72. package/web-app/dist/assets/{Avatar-T3nIpoaf.js → Avatar-BJyjV7Zi.js} +1 -1
  73. package/web-app/dist/assets/{Badge-BKqb59pP.js → Badge-D572l0uq.js} +1 -1
  74. package/web-app/dist/assets/{Button-DjVlkh8_.js → Button-T4BnOZgl.js} +1 -1
  75. package/web-app/dist/assets/{CockpitPage-DXJgLGmh.js → CockpitPage-Cj_GFsNn.js} +1 -1
  76. package/web-app/dist/assets/{ComparePage-BRP_eVc_.js → ComparePage-A8m4ZXak.js} +1 -1
  77. package/web-app/dist/assets/{ErrorBoundary-CLjpGLjC.js → ErrorBoundary-hugCg5yg.js} +1 -1
  78. package/web-app/dist/assets/{EvidenceReceiptPanel-DX-vb4Xy.js → EvidenceReceiptPanel-CuJKDC2G.js} +1 -1
  79. package/web-app/dist/assets/{GitHubIssuesPanel-214HVHtX.js → GitHubIssuesPanel-BYGKjarC.js} +1 -1
  80. package/web-app/dist/assets/{GitHubPRsPanel-BEiZKc4t.js → GitHubPRsPanel-c7sFIJlf.js} +1 -1
  81. package/web-app/dist/assets/{HomePage-VvMHS5ga.js → HomePage-A1MIkG2P.js} +2 -2
  82. package/web-app/dist/assets/{LoginPage-5WD-v7n3.js → LoginPage-8KQMRhtR.js} +1 -1
  83. package/web-app/dist/assets/{MagicPage-DUQT_Jye.js → MagicPage-C05QW2Lx.js} +1 -1
  84. package/web-app/dist/assets/{MetricsPage-lga-z79v.js → MetricsPage-Oukv5hme.js} +1 -1
  85. package/web-app/dist/assets/{NotFoundPage-CGhBX3G1.js → NotFoundPage-DKIwsawz.js} +1 -1
  86. package/web-app/dist/assets/{ProjectPage-CdzF2GzZ.js → ProjectPage-DwFRPLCG.js} +3 -3
  87. package/web-app/dist/assets/{ProjectsPage-DRG64N8s.js → ProjectsPage-CgY4YYDX.js} +1 -1
  88. package/web-app/dist/assets/{SettingsPage-5fzW9Frb.js → SettingsPage-BpfcSjUA.js} +1 -1
  89. package/web-app/dist/assets/{ShowcasePage-DrTdxO4y.js → ShowcasePage-BqBakC4K.js} +1 -1
  90. package/web-app/dist/assets/{SystemSettingsPage-C9Mqs6Rd.js → SystemSettingsPage-CZLu5VB0.js} +1 -1
  91. package/web-app/dist/assets/{TeamsPage-CUGPdSWo.js → TeamsPage-D55S1jKz.js} +1 -1
  92. package/web-app/dist/assets/{TemplatesPage-CNraDY0F.js → TemplatesPage-D3SydvxN.js} +1 -1
  93. package/web-app/dist/assets/{TerminalOutput-BIu_6Pea.js → TerminalOutput-hNg8G1-e.js} +1 -1
  94. package/web-app/dist/assets/{activity-Bk-kgqaf.js → activity-D2C0VagO.js} +1 -1
  95. package/web-app/dist/assets/{bell-BXmUdmo8.js → bell-CMvYi36w.js} +1 -1
  96. package/web-app/dist/assets/{bot-CiuzXxUR.js → bot-BvtQ6lmo.js} +1 -1
  97. package/web-app/dist/assets/{check-BEzjXppd.js → check-B13xkXed.js} +1 -1
  98. package/web-app/dist/assets/{chevron-left-AYWCXHf8.js → chevron-left-emu6r49E.js} +1 -1
  99. package/web-app/dist/assets/{circle-alert-BNg2uSRq.js → circle-alert-CExlwjuy.js} +1 -1
  100. package/web-app/dist/assets/{clock-DTj0kkGT.js → clock-D7Uas3oL.js} +1 -1
  101. package/web-app/dist/assets/{cloud-x4nTDBLT.js → cloud-CkB4S86C.js} +1 -1
  102. package/web-app/dist/assets/{code-xml-BVh_MLrk.js → code-xml-SL9IIWIn.js} +1 -1
  103. package/web-app/dist/assets/{database-DdfBaowG.js → database-BQFkd7t1.js} +1 -1
  104. package/web-app/dist/assets/{dollar-sign-XuYFmAOY.js → dollar-sign-qHmnNYsU.js} +1 -1
  105. package/web-app/dist/assets/{file-code-corner-D4cRnmeL.js → file-code-corner-C2YUDP0K.js} +1 -1
  106. package/web-app/dist/assets/{file-plus-CyoVlHc_.js → file-plus-C_ooIkDe.js} +1 -1
  107. package/web-app/dist/assets/{globe-Y6IK2RPW.js → globe-CQ-GL485.js} +1 -1
  108. package/web-app/dist/assets/{hammer-BKzr9VZI.js → hammer-U05L_D7V.js} +1 -1
  109. package/web-app/dist/assets/{index-B20cSx5G.js → index-CooHd7I-.js} +3 -3
  110. package/web-app/dist/assets/{layers-DebNOhGS.js → layers-Buo17rjW.js} +1 -1
  111. package/web-app/dist/assets/{loader-circle-DyGbrEgd.js → loader-circle-15vK3oV1.js} +1 -1
  112. package/web-app/dist/assets/{lock-BKPpyt20.js → lock-BeXLebuJ.js} +1 -1
  113. package/web-app/dist/assets/{package-egF5Wi4y.js → package-MVh_6-6R.js} +1 -1
  114. package/web-app/dist/assets/{plus-OiEgKIc-.js → plus-Dh_nd9vS.js} +1 -1
  115. package/web-app/dist/assets/{refresh-cw-CzKvrONq.js → refresh-cw-C9cBJEAT.js} +1 -1
  116. package/web-app/dist/assets/{rotate-ccw-Bu2mII0p.js → rotate-ccw-D3PAtzST.js} +1 -1
  117. package/web-app/dist/assets/{scroll-text-CSkiyax8.js → scroll-text-DZCoXQjo.js} +1 -1
  118. package/web-app/dist/assets/{server-DlPthJFw.js → server-OCOLI5J_.js} +1 -1
  119. package/web-app/dist/assets/{shield-alert-CbpHWQQX.js → shield-alert-oVhmf1_h.js} +1 -1
  120. package/web-app/dist/assets/{thumbs-up-DgGpZe-Q.js → thumbs-up-B-kbX4vN.js} +1 -1
  121. package/web-app/dist/assets/{trash-2-BV3GlCB-.js → trash-2-EL6moveW.js} +1 -1
  122. package/web-app/dist/assets/{trending-down-Y4TJtXhD.js → trending-down-Cl3kjpsx.js} +1 -1
  123. package/web-app/dist/assets/{trending-up-DsDNoHZY.js → trending-up-DST7I6M2.js} +1 -1
  124. package/web-app/dist/assets/{upload-gkThrc_I.js → upload-CUOT780G.js} +1 -1
  125. package/web-app/dist/assets/{usePolling-jpNSeNAe.js → usePolling-Djmt90eb.js} +1 -1
  126. package/web-app/dist/assets/{user-3Zez1WOK.js → user-BRBohA6J.js} +1 -1
  127. package/web-app/dist/index.html +1 -1
  128. package/docs/ARCHITECTURE-OVERVIEW.md +0 -209
  129. package/docs/AUTONOMI-ECOSYSTEM.md +0 -107
  130. package/docs/COCKPIT-SPEC.md +0 -72
  131. package/docs/COCKPIT-UX-MANDATE.md +0 -53
  132. package/docs/COMPETITIVE-ANALYSIS.md +0 -303
  133. package/docs/COMPETITIVE-NEXT-10.md +0 -316
  134. package/docs/COMPETITIVE-RALPH-ZEROSHOT-2026-07-08.md +0 -81
  135. package/docs/DASHBOARD-9.12-EVIDENCE.md +0 -97
  136. package/docs/DASHBOARD-ARCHITECTURE.md +0 -425
  137. package/docs/DASHBOARD_V2_CHECKLIST.md +0 -243
  138. package/docs/DEMOS.md +0 -63
  139. package/docs/ENTERPRISE-IDENTITY-ROADMAP.md +0 -206
  140. package/docs/EVIDENCE-RECEIPT-BUILD-APPLICABILITY.md +0 -79
  141. package/docs/FEAT-PRDREUSE-DOCKER-PLAN.md +0 -144
  142. package/docs/GATE-FAILURE-TRIAGE.md +0 -254
  143. package/docs/HANDOFF-2026-08-03.md +0 -439
  144. package/docs/LOOP-CANDIDATE-PROPOSAL-v1.md +0 -167
  145. package/docs/LOOP-HARNESS-AUDIT.md +0 -684
  146. package/docs/MERGE-DEDUP-MAP.md +0 -420
  147. package/docs/MERGE-ROUTE-MAP.md +0 -139
  148. package/docs/MODEL-REGISTRY-PLAN.md +0 -155
  149. package/docs/OUTCOME-FRONTIER.md +0 -536
  150. package/docs/P2-SPEC-ROBUSTNESS-PLAN.md +0 -192
  151. package/docs/PLANS-INDEX.md +0 -32
  152. package/docs/PRD-REUSE-DONE-RECOGNITION-PLAN.md +0 -536
  153. package/docs/PROMPT-ABLATION-RESULT.md +0 -97
  154. package/docs/R4-TRUST-TRAJECTORY-DESIGN.md +0 -127
  155. package/docs/R5-AUTO-WIKI-DESIGN.md +0 -137
  156. package/docs/R6-ROLLBACK-CHECKPOINT-PLAN.md +0 -107
  157. package/docs/R7-ZERO-CONFIG-FIRST-RUN-PLAN.md +0 -137
  158. package/docs/R8-SHAREABLE-TEAM-ASSETS-PLAN.md +0 -129
  159. package/docs/R9-OPEN-CORE-HOOKS-PLAN.md +0 -113
  160. package/docs/RARV-C-100X-PLAN.md +0 -286
  161. package/docs/RARV-C-LOOP-EFFICIENCY-PLAN.md +0 -470
  162. package/docs/SHAREABLE-PROOF-PLAN.md +0 -194
  163. package/docs/SONNET5-DEFAULT-PLAN.md +0 -157
  164. package/docs/SPEED-AND-FIRST-PASS-PLAN.md +0 -281
  165. package/docs/STALE-STATE-AUDIT.md +0 -174
  166. package/docs/SYNERGY-TASKS.md +0 -143
  167. package/docs/TASKLIST-ACCURACY-PLAN.md +0 -355
  168. package/docs/TOP-100-BACKLOG.md +0 -159
  169. package/docs/V8-ACCEPTANCE-TRIAGE-2026-07-24.md +0 -114
  170. package/docs/V8-COMPLEXITY-AUDIT-2026-07-24.md +0 -45
  171. package/docs/V8-MAJOR-RELEASE-PLAN.md +0 -137
  172. package/docs/V8-OVERNIGHT-PLAN-2026-07-25.md +0 -82
  173. package/docs/V8-SDK-RESEARCH-RAW.md +0 -129
  174. package/docs/WELCOME-OPENER-PLAN.md +0 -106
  175. package/docs/adoption-baseline-2026-07-31.md +0 -84
  176. package/docs/architecture/bmad-integration-epic.md +0 -271
  177. package/docs/architecture/bmad-integration-review.md +0 -86
  178. package/docs/architecture/bmad-integration-validation.md +0 -249
  179. package/docs/architecture/bmad-loki-voice-agent-council-analysis.md +0 -61
  180. package/docs/auto-claude-comparison.md +0 -250
  181. package/docs/bug-fixes/agent-01-cli-fixes.md +0 -101
  182. package/docs/bug-fixes/agent-02-purplelab-fixes.md +0 -88
  183. package/docs/bug-fixes/agent-03-dashboard-fixes.md +0 -119
  184. package/docs/bug-fixes/agent-04-memory-fixes.md +0 -105
  185. package/docs/bug-fixes/agent-05-provider-fixes.md +0 -86
  186. package/docs/bug-fixes/agent-06-integration-fixes.md +0 -101
  187. package/docs/bug-fixes/agent-07-dash-run-fixes.md +0 -101
  188. package/docs/bug-fixes/agent-08-docker-fixes.md +0 -164
  189. package/docs/bug-fixes/agent-09-e2e-build-fixes.md +0 -69
  190. package/docs/bug-fixes/agent-10-e2e-fullstack-fixes.md +0 -102
  191. package/docs/bug-fixes/agent-11-e2e-session-fixes.md +0 -70
  192. package/docs/bug-fixes/agent-12-scenario-fixes.md +0 -120
  193. package/docs/bug-fixes/agent-13-enterprise-fixes.md +0 -143
  194. package/docs/bug-fixes/agent-14-uat-newuser-fixes.md +0 -88
  195. package/docs/bug-fixes/agent-15-uat-poweruser-fixes.md +0 -132
  196. package/docs/bug-fixes/agent-19-code-review.md +0 -316
  197. package/docs/bug-fixes/agent-20-architecture-review.md +0 -331
  198. package/docs/competitive/bolt-new-analysis.md +0 -579
  199. package/docs/competitive/emergence-others-analysis.md +0 -605
  200. package/docs/competitive/replit-lovable-analysis.md +0 -622
  201. package/docs/dashboard-guide.md +0 -487
  202. package/docs/enterprise/migration.md +0 -265
  203. package/docs/history/one-run-audit.md +0 -304
  204. package/docs/plans/FORGE-AUTONOMOUS-QUEUE.md +0 -312
  205. package/docs/plans/ULTRAPLAN-FORGE-BAAS.md +0 -612
  206. package/docs/plans/UT2-6-LSP-DIAGNOSTIC-BROADCAST.md +0 -394
  207. package/docs/prd-purple-lab-ide.md +0 -152
  208. package/docs/prd-purple-lab-platform-v2.md +0 -223
  209. package/docs/prd-purple-lab-platform.md +0 -319
  210. package/docs/retrospectives/v7.5.15-fleet-postmortem.md +0 -325
  211. package/docs/retrospectives/v7.5.15-honesty-audit.md +0 -136
  212. package/docs/retrospectives/v7.5.15-llm-failure-modes.md +0 -49
  213. package/docs/show-hn-post.md +0 -46
  214. package/docs/test-scenarios/enterprise-scenarios.md +0 -732
  215. package/docs/thick2thin.md +0 -173
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.3.0
6
+ # Loki Mode v11.3.1
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 legacy engine, which still ships and is being removed (`loki start owner/repo#N` still routes to it; prefer `loki owner/repo#N`).
9
9
 
@@ -15,7 +15,7 @@ description: An autonomous software factory that knows what it is supposed to de
15
15
 
16
16
  **Provider-agnostic (stable since v5.0.0):** runs on Claude/Codex/Cline/Aider with abstract model tiers and degraded mode for non-Claude providers; no vendor lock-in. Gemini deprecated v7.5.18. See `skills/providers.md`. **Legacy track (v8.0.0):** the Anthropic Agent SDK route (see below), spec-mode expansion for OpenAPI/GraphQL/Postman contracts, the runtime-boot and secret-leak evidence axes, and `loki steer` / `loki why` for mid-run control. Earlier tracks: LSP grounding as a first-class agent tool (v7.7.x) and Phase 1 RARV-C closure (real provider judges, gate-failure flock, synthetic PRD e2e, status `--json`).
17
17
 
18
- **Runtime migration:** Bash-to-Bun migration. `bin/loki` is the router: the commands in its Bun-route `case` (read-only ones such as `version`, `status`, `stats`, `doctor`, `provider`, `memory`, plus stateful ones such as `rollback`, `trust`, `proof`/`receipt`, `control`, `answer`) run through `loki-ts/src/cli.ts` on Bun; the rest, and some flag forms (for example `doctor --airgap`, `trust detail`), run on Bash (`autonomy/loki`). `start` is Bash by default and goes to Bun only for the SDK loop (`LOKI_SDK_LOOP=1`) or Loki 10 engine inputs (issue refs, multi-word tasks). Read `bin/loki` and `cli.ts` for the exact set rather than trusting a list here. Rollback: `LOKI_LEGACY_BASH=1`. See `UPGRADING.md` and `docs/architecture/ADR-001-runtime-migration.md`.
18
+ **Runtime migration:** Bash-to-Bun migration. `bin/loki` is the router: the commands in its Bun-route `case` (read-only ones such as `version`, `status`, `stats`, `doctor`, `provider`, `memory`, plus stateful ones such as `rollback`, `trust`, `proof`/`receipt`, `control`, `answer`) run through `loki-ts/src/cli.ts` on Bun; the rest, and some flag forms (for example `doctor --airgap`, `trust detail`), run on Bash (`autonomy/loki`). `start` is Bash by default and goes to Bun only for the SDK loop (`LOKI_SDK_LOOP=1`) or Loki 10 engine inputs (issue refs, multi-word tasks). Read `bin/loki` and `cli.ts` for the exact set rather than trusting a list here. Rollback: `LOKI_LEGACY_BASH=1`. See `docs/architecture/ADR-001-runtime-migration.md`.
19
19
 
20
20
  **Anthropic Agent SDK route (v8.0.0, opt-in, default-off):** a claude-binary-free path where the RARV loop runs on `@anthropic-ai/claude-agent-sdk` `query()` and judges run on the raw `@anthropic-ai/sdk`. One operator switch `LOKI_SDK_MODE` (`off` default / `judges` / `full`), mirrored byte-for-byte in bash (`autonomy/lib/sdk-mode.sh`) and TypeScript (`loki-ts/src/runner/sdk_mode.ts`). Unset = byte-identical to the claude-CLI route. See `references/sdk-mode.md`.
21
21
 
@@ -200,7 +200,7 @@ This protocol governs **skill module** loading -- task-scoped instruction files
200
200
  <!-- generated:commands -->
201
201
  Commands (generated from `loki-ts/src/cli/registry.ts`; full reference in `docs/CLI-REFERENCE.md`):
202
202
 
203
- `version`, `status`, `doctor`, `provider`, `memory`, `rollback`, `proof`, `wiki`, `control`, `kpis`, `report`, `trust`, `crash`, `contract`, `start`, `slack`, `answer`, `engine10`, `help`, `quick`, `quickstart`, `init`, `template`, `verify`, `keys`, `review`, `dashboard`, `config`, `mcp`, `acp`, `stop`, `pause`, `resume`, `why`, `next`, `logs`, `ship`, `deploy`, `import`, `github`, `issue`, `ci`, `modernize`, `share`, `assets`, `export`, `notify`, `tour`, `welcome`, `onboard`, `setup-skill`, `self-update`, `remote`, `cockpit`, `code`, `context`, `secrets`, `api`, `sandbox`, `docker`, `web`, `preview`, `telemetry`, `syslog`, `explain`, `docs`, `test`, `bench`, `voice`, `own`, `secure`, `compliance`, `enterprise`, `projects`, `audit`, `cost`, `metrics`, `sentrux`, `magic`
203
+ `version`, `status`, `doctor`, `provider`, `memory`, `rollback`, `proof`, `wiki`, `control`, `kpis`, `report`, `trust`, `crash`, `contract`, `start`, `slack`, `queue`, `answer`, `engine10`, `help`, `quick`, `quickstart`, `init`, `template`, `verify`, `keys`, `review`, `dashboard`, `config`, `mcp`, `acp`, `stop`, `pause`, `resume`, `why`, `next`, `logs`, `ship`, `deploy`, `import`, `github`, `issue`, `ci`, `modernize`, `share`, `assets`, `export`, `notify`, `tour`, `welcome`, `onboard`, `setup-skill`, `self-update`, `remote`, `cockpit`, `code`, `context`, `secrets`, `api`, `sandbox`, `docker`, `web`, `preview`, `telemetry`, `syslog`, `explain`, `docs`, `test`, `bench`, `voice`, `own`, `secure`, `compliance`, `enterprise`, `projects`, `audit`, `cost`, `metrics`, `sentrux`, `magic`
204
204
  <!-- /generated -->
205
205
 
206
206
  ---
@@ -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.3.0 | [Autonomi](https://www.autonomi.dev/) flagship product | core skill**
486
+ **v11.3.1 | [Autonomi](https://www.autonomi.dev/) flagship product | core skill**
package/VERSION CHANGED
@@ -1 +1 @@
1
- 11.3.0
1
+ 11.3.1
@@ -3233,7 +3233,7 @@ ISSUES: CRITICAL:description (optional, one per line per issue)"
3233
3233
  else _cv_wrap=""; fi
3234
3234
  _cv_out="$($_cv_wrap "$_cv_loki" internal sdk-text \
3235
3235
  --prompt-file "$_cv_pf" \
3236
- --model "${LOKI_SDK_COUNCIL_MODEL:-claude-haiku-4-5}" --effort medium \
3236
+ --model "${LOKI_SDK_COUNCIL_MODEL:-haiku}" --effort medium \
3237
3237
  --timeout-ms "$(( _cv_to_s * 1000 ))" 2>/dev/null)" || _cv_rc=$?
3238
3238
  rm -f "$_cv_pf" 2>/dev/null || true
3239
3239
  if [ "$_cv_rc" -eq 0 ] && [ -n "$_cv_out" ]; then
@@ -3458,7 +3458,7 @@ REASON: your reasoning"
3458
3458
  else _dv_wrap=""; fi
3459
3459
  _dv_out="$($_dv_wrap "$_dv_loki" internal sdk-text \
3460
3460
  --prompt-file "$_dv_pf" \
3461
- --model "${LOKI_SDK_COUNCIL_MODEL:-claude-haiku-4-5}" --effort medium \
3461
+ --model "${LOKI_SDK_COUNCIL_MODEL:-haiku}" --effort medium \
3462
3462
  --timeout-ms "$(( _dv_to_s * 1000 ))" 2>/dev/null)" || _dv_rc=$?
3463
3463
  rm -f "$_dv_pf" 2>/dev/null || true
3464
3464
  if [ "$_dv_rc" -eq 0 ] && [ -n "$_dv_out" ]; then
@@ -38,10 +38,10 @@ from pathlib import Path
38
38
  # of this provider-keyed fallback.
39
39
  PRICING_BY_PROVIDER = {
40
40
  "claude": {
41
- "input": 3.0,
42
- "output": 15.0,
43
- "cache_read": 0.30,
44
- "cache_creation": 3.75,
41
+ "input": 2.0,
42
+ "output": 10.0,
43
+ "cache_read": 0.10,
44
+ "cache_creation": 2.5,
45
45
  },
46
46
  "codex": {
47
47
  "input": 2.0,
@@ -386,7 +386,7 @@ Respond ONLY with a valid JSON object. No markdown fencing."
386
386
  else _c2_wrap=""; fi
387
387
  _c2_sdk_out="$($_c2_wrap "$_c2_sdk_loki" internal sdk-judge \
388
388
  --prompt-file "$_c2_sdk_pf" --schema-file "$_c2_sdk_schema" \
389
- --model "${LOKI_SDK_JUDGE_MODEL:-claude-haiku-4-5}" --effort low \
389
+ --model "${LOKI_SDK_JUDGE_MODEL:-haiku}" --effort low \
390
390
  --timeout-ms "$(( _c2_to_s * 1000 ))" 2>/dev/null)" || _c2_sdk_rc=$?
391
391
  rm -f "$_c2_sdk_pf" 2>/dev/null || true
392
392
  if [ "$_c2_sdk_rc" -eq 0 ] && [ -n "$_c2_sdk_out" ]; then
package/autonomy/grill.sh CHANGED
@@ -218,7 +218,7 @@ grill_invoke_provider() {
218
218
  else _gs_wrap=""; fi
219
219
  _gs_out="$($_gs_wrap "$_gs_loki" internal sdk-text \
220
220
  --prompt-file "$_gs_pf" \
221
- --model "${LOKI_SDK_GRILL_MODEL:-claude-sonnet-5}" --effort high \
221
+ --model "${LOKI_SDK_GRILL_MODEL:-sonnet}" --effort high \
222
222
  --timeout-ms "$(( _gs_to_s * 1000 ))" 2>/dev/null)" || _gs_rc=$?
223
223
  rm -f "$_gs_pf" 2>/dev/null || true
224
224
  if [ "$_gs_rc" -eq 0 ] && [ -n "$_gs_out" ]; then
@@ -121,7 +121,7 @@ _loki_done_recog_invoke() {
121
121
  else _sdk_wrap=""; fi
122
122
  _sdk_out="$($_sdk_wrap "$_sdk_loki" internal sdk-judge \
123
123
  --prompt-file "$_sdk_prompt_f" --schema-file "$_sdk_schema" \
124
- --model "${LOKI_SDK_JUDGE_MODEL:-claude-haiku-4-5}" --effort low \
124
+ --model "${LOKI_SDK_JUDGE_MODEL:-haiku}" --effort low \
125
125
  --timeout-ms "$(( ${LOKI_DONE_RECOG_TIMEOUT:-180} * 1000 ))" 2>/dev/null)" || _sdk_rc=$?
126
126
  rm -f "$_sdk_prompt_f" 2>/dev/null || true
127
127
  if [ "$_sdk_rc" -eq 0 ] && [ -n "$_sdk_out" ]; then
@@ -65,7 +65,7 @@ _loki_prd_enrich_invoke() {
65
65
  else _pe_wrap=""; fi
66
66
  _pe_out="$($_pe_wrap "$_pe_loki" internal sdk-text \
67
67
  --prompt-file "$_pe_pf" \
68
- --model "${LOKI_SDK_PRD_ENRICH_MODEL:-claude-sonnet-5}" --effort medium \
68
+ --model "${LOKI_SDK_PRD_ENRICH_MODEL:-sonnet}" --effort medium \
69
69
  --timeout-ms "$(( _pe_to_s * 1000 ))" 2>/dev/null)" || _pe_rc=$?
70
70
  rm -f "$_pe_pf" 2>/dev/null || true
71
71
  if [ "$_pe_rc" -eq 0 ] && [ -n "$_pe_out" ]; then
@@ -327,7 +327,7 @@ loki_council_dispatch_agents() {
327
327
  else _va_wrap=""; fi
328
328
  _va_out="$($_va_wrap "$_va_loki" internal sdk-judge \
329
329
  --prompt-file "$_va_pf" --schema-file "$_va_schema_f" \
330
- --model "${LOKI_SDK_COUNCIL_MODEL:-claude-sonnet-5}" --effort high \
330
+ --model "${LOKI_SDK_COUNCIL_MODEL:-sonnet}" --effort high \
331
331
  --timeout-ms "$(( _va_to_s * 1000 ))" 2>"$COUNCIL_STATE_DIR/votes/dispatch-stderr-${iteration}.log")" || _va_rc=$?
332
332
  rm -f "$_va_pf" 2>/dev/null || true
333
333
  if [ "$_va_rc" -eq 0 ] && [ -n "$_va_out" ]; then
package/autonomy/loki CHANGED
@@ -1860,7 +1860,7 @@ show_help() {
1860
1860
  echo " # only the OpenAI-shaped /v1/chat/completions. Use the aider or"
1861
1861
  echo " # cline route above for OpenRouter."
1862
1862
  echo ""
1863
- echo " # Cross-project context (Phase F v7.5.23+)"
1863
+ echo " # Cross-project context (Phase F)"
1864
1864
  echo " # Drop .loki/app.json with {schema_version:1,app_id:myapp,members:[ui,api]}"
1865
1865
  echo " # at the parent of related repos for shared CLAUDE.md + memory."
1866
1866
  echo ""
@@ -1871,7 +1871,7 @@ show_help() {
1871
1871
  echo ""
1872
1872
  echo " # Config + dashboard"
1873
1873
  echo " loki config set maxTier sonnet # Cap model cost"
1874
- echo " loki dashboard start # Web dashboard at localhost:57374"
1874
+ echo " loki dashboard start # Open the Control Plane UI"
1875
1875
  echo " loki watch # Auto-rerun on PRD changes"
1876
1876
  echo " loki cockpit # Live multi-repo cockpit (terminal image)"
1877
1877
  echo " loki remote # Remote session (phone/browser)"
@@ -1904,7 +1904,7 @@ show_help() {
1904
1904
  echo ""
1905
1905
  echo "Any command: loki <command> --help"
1906
1906
  echo ""
1907
- echo "Phase A-J features (v7.5.18 - v7.5.28) are default-on. See CHANGELOG."
1907
+ echo "Phase A-J features are default-on. See CHANGELOG."
1908
1908
  echo ""
1909
1909
  echo "Environment variables an operator would set: docs/environment-variables.md"
1910
1910
  echo "Cost controls (budget, iteration and wall-clock caps): docs/cost-controls.md"
@@ -2534,7 +2534,7 @@ cmd_start() {
2534
2534
  while [[ $# -gt 0 ]]; do
2535
2535
  case "$1" in
2536
2536
  --help|-h)
2537
- echo -e "${BOLD}loki start${NC} - Unified entry point for Loki Mode (v6.84.0)"
2537
+ echo -e "${BOLD}loki start${NC} - Unified entry point for Loki Mode"
2538
2538
  echo ""
2539
2539
  echo "Usage: loki start [REPO|PRD|ISSUE-REF] [options]"
2540
2540
  echo ""
@@ -2574,6 +2574,8 @@ cmd_start() {
2574
2574
  echo " --sandbox Run in Docker sandbox (default: off; requires Docker)"
2575
2575
  echo " --isolation LEVEL Per-run isolation: none (default) | worktree | docker."
2576
2576
  echo " Unified dial; --parallel = worktree, --sandbox = docker."
2577
+ echo " --attempts N Run N (1-5, default 1) independent attempts in separate git worktrees;"
2578
+ echo " the most executed passing checks wins, losers are recorded on the receipt"
2577
2579
  echo " --skip-memory Skip loading memory context at startup"
2578
2580
  echo " --fresh-prd Regenerate the PRD from the codebase on a no-PRD run"
2579
2581
  echo " (ignores the reusable generated PRD; aliases: --regen-prd,"
@@ -2728,6 +2730,17 @@ cmd_start() {
2728
2730
  args+=("--parallel")
2729
2731
  shift
2730
2732
  ;;
2733
+ --attempts)
2734
+ # 11.3.0 T5: N>=2 is routed to the Bun route by bin/loki; N=1 is today's behavior.
2735
+ if [[ "${2:-}" != "1" ]]; then
2736
+ echo -e "${RED}--attempts N (2-5) needs the Bun route: run via bin/loki${NC}"
2737
+ exit 1
2738
+ fi
2739
+ shift 2
2740
+ ;;
2741
+ --attempts=1)
2742
+ shift
2743
+ ;;
2731
2744
  --allow-haiku)
2732
2745
  # Enable Haiku for the fast tier. Mirrors the LOKI_ALLOW_HAIKU=true
2733
2746
  # env var (consumed by providers/claude.sh and run.sh). Documented in
@@ -4232,7 +4245,7 @@ cmd_stop() {
4232
4245
  while [[ $# -gt 0 ]]; do
4233
4246
  case "$1" in
4234
4247
  --help|-h)
4235
- echo -e "${BOLD}loki stop${NC} - Stop running sessions (v7.7.30)"
4248
+ echo -e "${BOLD}loki stop${NC} - Stop running sessions"
4236
4249
  echo ""
4237
4250
  echo "Usage: loki stop [session-id] [--all]"
4238
4251
  echo ""
@@ -7085,7 +7098,7 @@ cmd_provider() {
7085
7098
  echo " info Show provider details"
7086
7099
  echo " models Show resolved model configuration for all providers"
7087
7100
  echo ""
7088
- echo "Precedence (v7.7.2 -- highest wins):"
7101
+ echo "Precedence (highest wins):"
7089
7102
  echo " 1. loki start --provider NAME CLI flag (per-invocation)"
7090
7103
  echo " 2. .loki/state/provider saved value (per-project)"
7091
7104
  echo " 3. LOKI_PROVIDER env var shell session default"
@@ -7591,13 +7604,14 @@ cmd_dashboard_help() {
7591
7604
  echo ""
7592
7605
  echo "Usage: loki dashboard <command> [options]"
7593
7606
  echo ""
7594
- echo "Note: 'loki dashboard' is the operations/observability UI (port ${DASHBOARD_DEFAULT_PORT})."
7595
- echo " It is NOT the same as 'loki web' (Purple Lab, port ${PURPLE_LAB_DEFAULT_PORT}, deprecated v7.44.0)."
7596
- echo " Use 'loki dashboard' to monitor agents, tasks, costs, council, escalations,"
7597
- echo " and to submit a PRD via the embedded 'Lab' tab (replaces the deprecated 'loki web')."
7607
+ echo "'loki dashboard', 'loki dashboard start' and 'loki dashboard open' open the Control Plane,"
7608
+ echo "the browser UI for runs, cost, receipts and events (default port 47821; override with"
7609
+ echo "LOKI_CONTROL_PORT). Needs bun; see 'loki control --help'."
7610
+ echo "The commands below manage the classic dashboard server, which serves the API only."
7611
+ echo "Setting LOKI_LEGACY_DASHBOARD=1, or passing --host, --tls-cert or --tls-key, selects it."
7598
7612
  echo ""
7599
7613
  echo "Commands:"
7600
- echo " start Start the dashboard server"
7614
+ echo " start Open the Control Plane (or start the classic API server with the flags below)"
7601
7615
  echo " stop Stop the dashboard server"
7602
7616
  echo " status Show server status and URL"
7603
7617
  echo " url Get the dashboard URL"
@@ -7605,7 +7619,7 @@ cmd_dashboard_help() {
7605
7619
  echo " help Show this help"
7606
7620
  echo ""
7607
7621
  echo "Options for 'start':"
7608
- echo " --port PORT Port to listen on (default: $DASHBOARD_DEFAULT_PORT)"
7622
+ echo " --port PORT Port for the classic API server (default: see LOKI_DASHBOARD_PORT)"
7609
7623
  echo " --host HOST Host to bind to (default: $DASHBOARD_DEFAULT_HOST)"
7610
7624
  echo " --tls-cert PATH Path to PEM certificate (enables HTTPS)"
7611
7625
  echo " --tls-key PATH Path to PEM private key (enables HTTPS)"
@@ -7614,7 +7628,7 @@ cmd_dashboard_help() {
7614
7628
  echo " --format FMT Output format: text (default) or json"
7615
7629
  echo ""
7616
7630
  echo "Environment:"
7617
- echo " LOKI_DASHBOARD_PORT Default port (overrides $DASHBOARD_DEFAULT_PORT)"
7631
+ echo " LOKI_DASHBOARD_PORT Port for the classic API server"
7618
7632
  echo " LOKI_DASHBOARD_HOST Default host (overrides $DASHBOARD_DEFAULT_HOST)"
7619
7633
  echo " LOKI_TLS_CERT Path to PEM certificate (enables HTTPS)"
7620
7634
  echo " LOKI_TLS_KEY Path to PEM private key (enables HTTPS)"
@@ -7625,7 +7639,7 @@ cmd_dashboard_help() {
7625
7639
  echo " loki dashboard start --tls-cert cert.pem --tls-key key.pem"
7626
7640
  echo " loki dashboard status # Check if running"
7627
7641
  echo " loki dashboard url --format json # Get URL as JSON"
7628
- echo " loki dashboard open # Print the Control Plane hint (no browser)"
7642
+ echo " loki dashboard open # Open the Control Plane"
7629
7643
  echo " loki dashboard stop # Stop server"
7630
7644
  }
7631
7645
 
@@ -8409,39 +8423,29 @@ cmd_web_redirect_to_dashboard() {
8409
8423
  }
8410
8424
 
8411
8425
  cmd_web_help() {
8412
- echo -e "${BOLD}Purple Lab -- Loki Mode Web UI (deprecated -- use the dashboard)${NC}"
8426
+ echo -e "${BOLD}loki web${NC} - Deprecated alias for the Control Plane"
8413
8427
  echo ""
8414
8428
  echo "Usage: loki web [command] [options]"
8415
8429
  echo ""
8416
- echo "DEPRECATED as of v7.44.0: Purple Lab is consolidated into the dashboard."
8417
- echo " 'loki web' (no subcommand) now LAUNCHES THE DASHBOARD"
8418
- echo " (http://localhost:${DASHBOARD_DEFAULT_PORT}) instead of the deprecated Purple"
8419
- echo " Lab, so the obvious command lands you on the working UI. Use the embedded"
8420
- echo " 'Lab' tab there to submit a PRD. For the hosted platform, see Autonomi Cloud."
8421
- echo ""
8422
- echo "Note: the canonical command is 'loki dashboard' (operations UI, port ${DASHBOARD_DEFAULT_PORT})."
8423
- echo " Use it to monitor running agents, tasks, costs, council, escalations."
8430
+ echo "The standalone web UI was folded into the Control Plane. 'loki web' with no"
8431
+ echo "subcommand launches the Control Plane (default port 47821, override with"
8432
+ echo "LOKI_CONTROL_PORT). The canonical command is 'loki dashboard'."
8424
8433
  echo ""
8425
8434
  echo "Commands:"
8426
- echo " start Launch the dashboard (default; Purple Lab is deprecated)"
8427
- echo " stop Stop the Purple Lab server (if one was started the old way)"
8428
- echo " status Show Purple Lab server status"
8429
- echo " logs Show Purple Lab server logs"
8435
+ echo " start Launch the Control Plane (default)"
8436
+ echo " stop Stop a standalone web server started the old way"
8437
+ echo " status Show standalone web server status"
8438
+ echo " logs Show standalone web server logs"
8430
8439
  echo " help Show this help"
8431
8440
  echo ""
8432
8441
  echo "Options (for start):"
8433
- echo " --port PORT Use custom port (default: ${DASHBOARD_DEFAULT_PORT})"
8434
- echo " --no-open Accepted for back-compat; ignored (no-op on the dashboard)"
8442
+ echo " --port PORT Use custom port"
8443
+ echo " --no-open Accepted for back-compat; ignored (no-op)"
8435
8444
  echo ""
8436
8445
  echo "Examples:"
8437
- echo " loki web Launch the dashboard"
8438
- echo " loki web --no-open Launch the dashboard (--no-open is a no-op)"
8439
- echo " loki web stop Stop a Purple Lab server started the old way"
8440
- echo ""
8441
- echo "Note (since v7.5.30):"
8442
- echo " The same PRD-input UI is embedded in the dashboard as a 'Lab' sidebar entry."
8443
- echo " 'loki web stop|status|logs' still operate on a standalone Purple Lab"
8444
- echo " process so anyone who started one the old way is never stranded."
8446
+ echo " loki web Launch the Control Plane"
8447
+ echo " loki web --no-open Same (--no-open is a no-op)"
8448
+ echo " loki web stop Stop a standalone web server started the old way"
8445
8449
  }
8446
8450
 
8447
8451
  cmd_web_start() {
@@ -11836,7 +11840,7 @@ cmd_watch() {
11836
11840
  while [[ $# -gt 0 ]]; do
11837
11841
  case "$1" in
11838
11842
  --help|-h)
11839
- echo -e "${BOLD}loki watch${NC} - Auto-rerun on PRD file changes (v6.33.0)"
11843
+ echo -e "${BOLD}loki watch${NC} - Auto-rerun on PRD file changes"
11840
11844
  echo ""
11841
11845
  echo "Usage: loki watch [prd-path] [options]"
11842
11846
  echo ""
@@ -12134,7 +12138,7 @@ cmd_cockpit() {
12134
12138
  while [[ $# -gt 0 ]]; do
12135
12139
  case "$1" in
12136
12140
  --help|-h)
12137
- echo -e "${BOLD}loki cockpit${NC} - Live multi-repo status as a terminal inline image (v7.128.0)"
12141
+ echo -e "${BOLD}loki cockpit${NC} - Live multi-repo status as a terminal inline image"
12138
12142
  echo ""
12139
12143
  echo "Usage: loki cockpit [options]"
12140
12144
  echo ""
@@ -12380,7 +12384,7 @@ cmd_export() {
12380
12384
 
12381
12385
  case "$format" in
12382
12386
  --help|-h)
12383
- echo -e "${BOLD}loki export${NC} - Export session data (v6.0.0)"
12387
+ echo -e "${BOLD}loki export${NC} - Export session data"
12384
12388
  echo ""
12385
12389
  echo "Usage: loki export <format> [output-path]"
12386
12390
  echo ""
@@ -12936,7 +12940,7 @@ cmd_config() {
12936
12940
  echo " schema Print the key -> env-var mapping table"
12937
12941
  echo " validate [FILE] Validate loki.yaml (no FILE: repo root, then ~/.loki) or a --config file"
12938
12942
  echo ""
12939
- echo "Settable keys (v6.0.0):"
12943
+ echo "Settable keys:"
12940
12944
  echo " maxTier Cost ceiling: opus, sonnet, haiku (default: opus)"
12941
12945
  echo " model.planning Model for planning tier"
12942
12946
  echo " model.development Model for development tier"
@@ -13291,7 +13295,7 @@ cmd_config_show() {
13291
13295
  echo " max_iterations: ${LOKI_MAX_ITERATIONS:-1000}"
13292
13296
  echo " autonomy_mode: ${LOKI_AUTONOMY_MODE:-perpetual}"
13293
13297
  echo ""
13294
- echo "v6.0.0 Settings:"
13298
+ echo "Settings:"
13295
13299
  echo " maxTier: ${LOKI_MAX_TIER:-(unlimited)}"
13296
13300
  echo " blind_validation: ${LOKI_BLIND_VALIDATION:-true}"
13297
13301
  echo " adversarial_testing: ${LOKI_ADVERSARIAL_TESTING:-true}"
@@ -14396,7 +14400,7 @@ cmd_logs() {
14396
14400
  # Resolve the log the runner ACTUALLY writes.
14397
14401
  #
14398
14402
  # This read a logs/session.log path that nothing in the tree writes (other
14399
- # readers of it exist in web-app/ and api-examples/, all equally dead). So
14403
+ # readers of it exist in web-app/ and examples/api/, all equally dead). So
14400
14404
  # `loki logs`, the
14401
14405
  # most natural "what is it doing?" command, reported "No log file found"
14402
14406
  # while the real logs sat in that same directory. run.sh:22409 writes
@@ -14585,7 +14589,7 @@ cmd_api() {
14585
14589
  echo " status Check if dashboard server is running"
14586
14590
  echo ""
14587
14591
  echo "Environment:"
14588
- echo " LOKI_DASHBOARD_PORT Port to listen on (default: 57374)"
14592
+ echo " LOKI_DASHBOARD_PORT Port for the API server"
14589
14593
  echo ""
14590
14594
  echo "Endpoints:"
14591
14595
  echo " GET /api/health - Health check"
@@ -17957,7 +17961,7 @@ cmd_mcp() {
17957
17961
  }
17958
17962
 
17959
17963
  cmd_heal_help() {
17960
- echo -e "${BOLD}loki heal${NC} - Legacy system healing (v6.67.0)"
17964
+ echo -e "${BOLD}loki heal${NC} - Legacy system healing"
17961
17965
  echo ""
17962
17966
  echo "Heal legacy codebases by understanding their real behaviors -- the quirks,"
17963
17967
  echo "delays, error states, and invisible dependencies -- then modernizing"
@@ -18992,7 +18996,7 @@ cmd_cluster() {
18992
18996
 
18993
18997
  case "$subcmd" in
18994
18998
  --help|-h|help)
18995
- echo -e "${BOLD}loki cluster${NC} - Custom workflow templates (v6.3.0)"
18999
+ echo -e "${BOLD}loki cluster${NC} - Custom workflow templates"
18996
19000
  echo ""
18997
19001
  echo "Usage: loki cluster <command> [options]"
18998
19002
  echo ""
@@ -19710,7 +19714,7 @@ with open(failover_file, 'w') as f: json.dump(d, f, indent=2)
19710
19714
  shift
19711
19715
  ;;
19712
19716
  --help|-h)
19713
- echo -e "${BOLD}loki failover${NC} - Cross-provider auto-failover management (v6.19.0)"
19717
+ echo -e "${BOLD}loki failover${NC} - Cross-provider auto-failover management"
19714
19718
  echo ""
19715
19719
  echo "Usage: loki failover [options]"
19716
19720
  echo ""
@@ -19949,7 +19953,7 @@ def _resolve_session_pin(alias):
19949
19953
  # fable unavailable, collapse to opus. Claude Fable 5 is not available at
19950
19954
  # the Claude API (advises use Opus 4.8); the runner dispatches opus for a
19951
19955
  # fable pin (claude.sh resolve_model_for_tier, run.sh dispatch backstop).
19952
- # Quote opus pricing (\$5/\$25) so the estimator agrees with dispatch and
19956
+ # Quote opus pricing (\$4/\$20) so the estimator agrees with dispatch and
19953
19957
  # the dashboard (v7.39.1).
19954
19958
  _m = 'opus'
19955
19959
  else: # development (and the '*' fallthrough)
@@ -20279,22 +20283,23 @@ tokens_per_tier = {
20279
20283
  'fast': {'input': 30000, 'output': 5000, 'model': 'Haiku'},
20280
20284
  }
20281
20285
 
20282
- # Pricing per 1M tokens. Fable 5 is the top-tier advisory model at exactly 2x
20283
- # Opus per token (published \$10/\$50 in/out vs Opus \$5/\$25). The Opus row was
20284
- # corrected from a stale \$15/\$75 to the real Opus 4.8 \$5/\$25, and the Haiku
20285
- # row from a stale \$0.25/\$1.25 (Haiku 3.5) to the published Claude Haiku 4.5
20286
- # price of \$1/\$5 (anthropic.com/news/claude-haiku-4-5), so all four rows now
20286
+ # Pricing per 1M tokens. Fable 5 is the top-tier advisory model at 2.5x
20287
+ # Opus per token (published \$10/\$50 in/out vs Opus 5.5 \$4/\$20). The Opus row was
20288
+ # corrected to the published Opus 5.5 \$4/\$20 (platform.claude.com pricing, 2026-10-08), and the Haiku
20289
+ # row from a stale \$0.25/\$1.25 (Haiku 3.5) to Haiku 5.5 \$0.10/\$0.50 (the haiku alias target
20290
+ # in the model catalog, up to 100K prompt tokens), so all four rows now
20287
20291
  # match the three canonical model-keyed tables (run.sh pricing.json, run.sh
20288
20292
  # check_budget_limit, dashboard _DEFAULT_PRICING). The Fable row (\$10/\$50) is
20289
20293
  # kept as the reference price, but since v7.39.1 fable is unavailable at the API
20290
20294
  # and a fable pin RESOLVES to Opus everywhere -- so a fable-pinned run both
20291
- # dispatches AND quotes Opus (\$5/\$25), matching the runner. The Fable price row
20295
+ # dispatches AND quotes Opus (\$4/\$20), matching the runner. The Fable price row
20292
20296
  # is only reachable as an explicit advisory reference, not via a session pin.
20293
20297
  pricing = {
20294
20298
  'Fable': {'input': 10.00, 'output': 50.00},
20295
- 'Opus': {'input': 5.00, 'output': 25.00},
20299
+ 'Opus': {'input': 4.00, 'output': 20.00},
20296
20300
  'Sonnet': {'input': 2.00, 'output': 10.00},
20297
- 'Haiku': {'input': 1.00, 'output': 5.00},
20301
+ # Haiku = Haiku 5.5 up to 100K prompt tokens (alias target in the model catalog)
20302
+ 'Haiku': {'input': 0.10, 'output': 0.50},
20298
20303
  }
20299
20304
 
20300
20305
  # Build per-iteration plan
@@ -20888,6 +20893,23 @@ main() {
20888
20893
  # (CLI > config). The pre-pass SCANS without consuming; the per-command
20889
20894
  # loops carry consume-and-ignore arms for the three aliases. Gated to
20890
20895
  # start/run/quick so status/config/stop never trigger a config load.
20896
+ # T5-D2 (FC-38 sweep): the bash entries have no attempts engine. --attempts (any value) is refused
20897
+ # here, before cmd_start / cmd_run / cmd_quick / cmd_demo can reach the legacy loop. bin/loki sends
20898
+ # `start --attempts N` to the Bun start command and never gets here with it.
20899
+ case "$command" in
20900
+ start|run|quick|demo|tour)
20901
+ local _att_a
20902
+ for _att_a in "$@"; do
20903
+ case "$_att_a" in
20904
+ --attempts|--attempts=*)
20905
+ echo -e "${RED}--attempts is only supported by 'loki start --attempts N --no-pr' (the Loki 10 engine); 'loki $command' would run the removed legacy loop.${NC}" >&2
20906
+ exit 2
20907
+ ;;
20908
+ esac
20909
+ done
20910
+ ;;
20911
+ esac
20912
+
20891
20913
  case "$command" in
20892
20914
  start|run|quick)
20893
20915
  if declare -f loki_maybe_apply_config_file >/dev/null 2>&1; then
@@ -21017,13 +21039,13 @@ main() {
21017
21039
  echo "Usage: loki serve [options]"
21018
21040
  echo ""
21019
21041
  echo "Alias for 'loki api start'. Starts the dashboard HTTP API"
21020
- echo "server (FastAPI, port 57374 by default)."
21042
+ echo "server (FastAPI)."
21021
21043
  echo ""
21022
21044
  echo "For the UI, run 'loki' (opens the Control Plane) or 'loki control serve'."
21023
21045
  echo ""
21024
21046
  echo "Options:"
21025
21047
  echo " --host HOST Bind host (default: 127.0.0.1)"
21026
- echo " --port PORT Bind port (default: 57374)"
21048
+ echo " --port PORT Bind port (default: LOKI_DASHBOARD_PORT)"
21027
21049
  echo " --help, -h Show this help and exit"
21028
21050
  echo ""
21029
21051
  echo "Side effects: starts a long-running HTTP server bound to a TCP port."
@@ -22449,7 +22471,7 @@ MERGE_VALIDATE_PY
22449
22471
  ;;
22450
22472
 
22451
22473
  --help|-h|help)
22452
- echo -e "${BOLD}loki worktree${NC} - Manage parallel worktrees (v6.7.0)"
22474
+ echo -e "${BOLD}loki worktree${NC} - Manage parallel worktrees"
22453
22475
  echo ""
22454
22476
  echo "Usage: loki worktree <command>"
22455
22477
  echo ""
@@ -22475,7 +22497,7 @@ cmd_state() {
22475
22497
 
22476
22498
  case "$subcmd" in
22477
22499
  --help|-h|help)
22478
- echo -e "${BOLD}loki state${NC} - Query the SQLite state layer (v6.3.0)"
22500
+ echo -e "${BOLD}loki state${NC} - Query the SQLite state layer"
22479
22501
  echo ""
22480
22502
  echo "Usage: loki state <command> [options]"
22481
22503
  echo ""
@@ -24356,7 +24378,7 @@ except Exception as e:
24356
24378
  echo " skill [name] Show skill by name or list all skills"
24357
24379
  echo " vectors [rebuild] Show vector index stats or rebuild indices"
24358
24380
  echo ""
24359
- echo "Namespace Commands (v5.19.0):"
24381
+ echo "Namespace Commands:"
24360
24382
  echo " namespace detect Auto-detect namespace from current directory"
24361
24383
  echo " namespace list List all available namespaces"
24362
24384
  echo " namespace create NAME Create a new namespace"
@@ -24384,14 +24406,14 @@ except Exception as e:
24384
24406
  echo " loki memory vectors"
24385
24407
  echo " loki memory vectors rebuild"
24386
24408
  echo ""
24387
- echo " loki memory ingest --from-claude-transcript <path> # v7.7.18"
24388
- echo " loki memory ingest --from-stdin # v7.7.18"
24389
- echo " loki memory replay <episode-id> [--json] # v7.7.22"
24390
- echo " loki memory crossproject --for 'build api' # v7.7.20"
24391
- echo " loki memory graph --export graph.json # v7.7.20"
24392
- echo " loki memory graph rebuild # v7.7.20"
24393
- echo " loki memory enable-hook # v7.7.20"
24394
- echo " loki memory disable-hook # v7.7.20"
24409
+ echo " loki memory ingest --from-claude-transcript <path>"
24410
+ echo " loki memory ingest --from-stdin"
24411
+ echo " loki memory replay <episode-id> [--json]"
24412
+ echo " loki memory crossproject --for 'build api'"
24413
+ echo " loki memory graph --export graph.json"
24414
+ echo " loki memory graph rebuild"
24415
+ echo " loki memory enable-hook"
24416
+ echo " loki memory disable-hook"
24395
24417
  echo ""
24396
24418
  echo " loki memory namespace detect"
24397
24419
  echo " loki memory namespace list"
@@ -27166,15 +27188,17 @@ TELEM_DISABLE_PY
27166
27188
  echo " status Show OTEL config + collection state + pending crash reports"
27167
27189
  echo " enable [endpoint] Enable OTEL (default: http://localhost:4318)"
27168
27190
  echo " disable Disable OTEL for current project"
27169
- echo " on Opt in to anonymous diagnostics (off by default)"
27191
+ echo " on Opt in explicitly to anonymous diagnostics"
27170
27192
  echo " off Opt out of all anonymous diagnostics (telemetry + crash)"
27171
27193
  echo " start Alias for 'on' (persistent opt-in across all sessions)"
27172
27194
  echo " stop Alias for 'off' (persistent opt-out across all sessions)"
27173
27195
  echo " analytics on|off|status"
27174
27196
  echo " Opt in/out of build-outcome analytics (off by default)"
27175
27197
  echo ""
27176
- echo "Anonymous diagnostics are OFF by default. Nothing is collected or"
27177
- echo "sent unless you opt in. See docs/PRIVACY.md for the full disclosure."
27198
+ echo "Anonymous diagnostics are ON by default for individual interactive installs,"
27199
+ echo "and OFF in CI, enterprise, air-gapped and non-interactive contexts. An opt-out"
27200
+ echo "(loki telemetry off, LOKI_TELEMETRY=off or DO_NOT_TRACK=1) always wins."
27201
+ echo "See docs/PRIVACY.md for the full disclosure."
27178
27202
  echo ""
27179
27203
  ;;
27180
27204
  *)
@@ -29829,7 +29853,7 @@ PYEOF
29829
29853
  ;;
29830
29854
 
29831
29855
  --help|-h|help)
29832
- echo -e "${BOLD}loki agent${NC} - Agent type dispatch (v6.7.0)"
29856
+ echo -e "${BOLD}loki agent${NC} - Agent type dispatch"
29833
29857
  echo ""
29834
29858
  echo "Usage: loki agent <command> [args]"
29835
29859
  echo ""
@@ -31506,7 +31530,7 @@ _docs_invoke_provider() {
31506
31530
  # not the workload that needs the top tier. Pinned to the same
31507
31531
  # default the review subcall uses (run.sh:13762), and overridable
31508
31532
  # for anyone who wants a different trade.
31509
- result=$($t_prefix env CAVEMAN_DEFAULT_MODE=off claude -p --model "${LOKI_DOCS_MODEL:-claude-sonnet-5}" "$prompt" 2>/dev/null) || exit_code=$?
31533
+ result=$($t_prefix env CAVEMAN_DEFAULT_MODE=off claude -p --model "${LOKI_DOCS_MODEL:-sonnet}" "$prompt" 2>/dev/null) || exit_code=$?
31510
31534
  ;;
31511
31535
  codex)
31512
31536
  result=$($t_prefix codex exec --sandbox workspace-write "$prompt" 2>/dev/null) || exit_code=$?
@@ -35029,7 +35053,7 @@ cmd_report_legacy() {
35029
35053
  while [[ $# -gt 0 ]]; do
35030
35054
  case "$1" in
35031
35055
  --help|-h)
35032
- echo -e "${BOLD}loki report${NC} - Session report generator (v6.27.0)"
35056
+ echo -e "${BOLD}loki report${NC} - Session report generator"
35033
35057
  echo ""
35034
35058
  echo "Usage: loki report [subcommand] [options]"
35035
35059
  echo ""