loki-mode 11.17.57 → 11.17.59

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 (80) hide show
  1. package/README.md +13 -4
  2. package/SKILL.md +3 -3
  3. package/VERSION +1 -1
  4. package/autonomy/lib/engine10-push.sh +22 -5
  5. package/autonomy/loki +384 -9
  6. package/autonomy/telemetry.sh +2 -2
  7. package/bin/loki +105 -0
  8. package/completions/_loki +13 -0
  9. package/completions/loki.bash +15 -1
  10. package/dashboard/__init__.py +1 -1
  11. package/docs/CLI-REFERENCE.md +3 -1
  12. package/docs/COMPARE-OPENCODE.md +18 -6
  13. package/docs/INSTALLATION.md +6 -2
  14. package/docs/v10/CLI-MODERN.md +5 -3
  15. package/docs/v10/PROGRESS.md +3 -0
  16. package/loki-ts/dist/loki.js +1128 -1117
  17. package/mcp/__init__.py +1 -1
  18. package/package.json +2 -2
  19. package/packages/control-plane/dist/server.js +15 -1
  20. package/packages/control-plane/ui/dist/assets/{index-CxZWgwie.css → index-DeSVrWgd.css} +1 -1
  21. package/packages/control-plane/ui/dist/assets/{index-u8cd6TRQ.js → index-Dww-8G06.js} +10 -10
  22. package/packages/control-plane/ui/dist/index.html +2 -2
  23. package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
  24. package/web-app/dist/assets/{AdminPage-D9vxsKmh.js → AdminPage-CCO9zGD0.js} +1 -1
  25. package/web-app/dist/assets/{Avatar-DfxBpPUo.js → Avatar-JPtFS3re.js} +1 -1
  26. package/web-app/dist/assets/{Badge-Jtp0w19_.js → Badge-1bUFOFcI.js} +1 -1
  27. package/web-app/dist/assets/{Button-Cfl_Ygum.js → Button-BQn8thxN.js} +1 -1
  28. package/web-app/dist/assets/{CockpitPage-t_xLPM1y.js → CockpitPage-olBRJMLN.js} +1 -1
  29. package/web-app/dist/assets/{ComparePage-00e9eUgR.js → ComparePage-B-o4mxlZ.js} +1 -1
  30. package/web-app/dist/assets/{ErrorBoundary-DfoBT_kK.js → ErrorBoundary-C4IN6YYt.js} +1 -1
  31. package/web-app/dist/assets/{EvidenceReceiptPanel-Cm--Zldw.js → EvidenceReceiptPanel-CH4iRJiJ.js} +1 -1
  32. package/web-app/dist/assets/{GitHubIssuesPanel-CmZoYExK.js → GitHubIssuesPanel-BNgRlwGt.js} +1 -1
  33. package/web-app/dist/assets/{GitHubPRsPanel-rehTMC_P.js → GitHubPRsPanel-B6M_lVU3.js} +1 -1
  34. package/web-app/dist/assets/{HomePage-CKgOAUqm.js → HomePage-CSlr_5vo.js} +2 -2
  35. package/web-app/dist/assets/{LoginPage-DWMk7D-V.js → LoginPage-DJhYZ0SQ.js} +1 -1
  36. package/web-app/dist/assets/{MagicPage-BdIzYkjN.js → MagicPage-B4XpvDFP.js} +1 -1
  37. package/web-app/dist/assets/{MetricsPage-DdjN5LJL.js → MetricsPage-DlgPEc5f.js} +1 -1
  38. package/web-app/dist/assets/{NotFoundPage-Cf4GHp9Z.js → NotFoundPage-oE1Fvllj.js} +1 -1
  39. package/web-app/dist/assets/{ProjectPage-BP8u2iFN.js → ProjectPage-B94pP0UO.js} +3 -3
  40. package/web-app/dist/assets/{ProjectsPage-CK7R-DIh.js → ProjectsPage-Bk67iaJq.js} +1 -1
  41. package/web-app/dist/assets/{SettingsPage-DNMqOUrM.js → SettingsPage-BGVzSJ3n.js} +1 -1
  42. package/web-app/dist/assets/{ShowcasePage-RkPgacU3.js → ShowcasePage-DtGaDxE5.js} +1 -1
  43. package/web-app/dist/assets/{SystemSettingsPage-COqYOPAP.js → SystemSettingsPage-CfyOGdC-.js} +1 -1
  44. package/web-app/dist/assets/{TeamsPage-CyBIuYhv.js → TeamsPage-CuGmdY85.js} +1 -1
  45. package/web-app/dist/assets/{TemplatesPage-5cMJ3uaP.js → TemplatesPage-Db4OZ-o0.js} +1 -1
  46. package/web-app/dist/assets/{TerminalOutput-D2as8CHU.js → TerminalOutput-B1W28fpH.js} +1 -1
  47. package/web-app/dist/assets/{activity-B0HWAVsH.js → activity-DKFtW1Dz.js} +1 -1
  48. package/web-app/dist/assets/{bell-CeapvdDm.js → bell-D2iqUEiO.js} +1 -1
  49. package/web-app/dist/assets/{bot-C9_qiFCl.js → bot-DgV5jnOz.js} +1 -1
  50. package/web-app/dist/assets/{check-ZLkbkjP8.js → check-BgJBmYEn.js} +1 -1
  51. package/web-app/dist/assets/{chevron-left-DzAOofqV.js → chevron-left-lPbv6ogy.js} +1 -1
  52. package/web-app/dist/assets/{circle-alert-C_P6Sbnq.js → circle-alert-CKhQ_hdo.js} +1 -1
  53. package/web-app/dist/assets/{clock-hlFBiyvc.js → clock-DWq8vor5.js} +1 -1
  54. package/web-app/dist/assets/{cloud-gpl8_jQe.js → cloud-BvQxG3Q2.js} +1 -1
  55. package/web-app/dist/assets/{code-xml-CJ7WRPDY.js → code-xml-aL36Csaf.js} +1 -1
  56. package/web-app/dist/assets/{database-C0waxSTC.js → database-CFzHMx2h.js} +1 -1
  57. package/web-app/dist/assets/{dollar-sign-TFqYdT4P.js → dollar-sign-C-jqbXs_.js} +1 -1
  58. package/web-app/dist/assets/{file-code-corner-Cklb7xuW.js → file-code-corner-pZ_KZ1YO.js} +1 -1
  59. package/web-app/dist/assets/{file-plus-vY6Bgsjz.js → file-plus-fRMGiUh4.js} +1 -1
  60. package/web-app/dist/assets/{globe-4A2JXvUS.js → globe-CVyRdgIZ.js} +1 -1
  61. package/web-app/dist/assets/{hammer-ZHnY2Erh.js → hammer-DRokcz-I.js} +1 -1
  62. package/web-app/dist/assets/{index-CgCOQR3S.js → index-CLY7CAQL.js} +3 -3
  63. package/web-app/dist/assets/{layers-By5ECd5H.js → layers-CEWB89or.js} +1 -1
  64. package/web-app/dist/assets/{loader-circle-yM_E0C2Q.js → loader-circle-C5OvUx9K.js} +1 -1
  65. package/web-app/dist/assets/{lock-lSNyrxDR.js → lock-TGMA_-t0.js} +1 -1
  66. package/web-app/dist/assets/{package-BKFtRuCB.js → package-QJ4Wad2J.js} +1 -1
  67. package/web-app/dist/assets/{plus-CjV1F6qp.js → plus-Dgj8mPvu.js} +1 -1
  68. package/web-app/dist/assets/{refresh-cw-DTSM4-_Q.js → refresh-cw-AGMW2syT.js} +1 -1
  69. package/web-app/dist/assets/{rotate-ccw-CiCkyt92.js → rotate-ccw-BvQ3PO0r.js} +1 -1
  70. package/web-app/dist/assets/{scroll-text-D1Ruxchx.js → scroll-text-iwC90pRp.js} +1 -1
  71. package/web-app/dist/assets/{server-DhT2dH_l.js → server-TUwkkzsm.js} +1 -1
  72. package/web-app/dist/assets/{shield-alert-CFFYVEiJ.js → shield-alert-CR3ONYJ5.js} +1 -1
  73. package/web-app/dist/assets/{thumbs-up-Dl4lQ_rS.js → thumbs-up-DC2-6Rb1.js} +1 -1
  74. package/web-app/dist/assets/{trash-2-DMJUQZ_M.js → trash-2-o9Iijmor.js} +1 -1
  75. package/web-app/dist/assets/{trending-down-C4mhp6Ua.js → trending-down-d0olJaN5.js} +1 -1
  76. package/web-app/dist/assets/{trending-up-D534cAuW.js → trending-up-BB6Q7LpE.js} +1 -1
  77. package/web-app/dist/assets/{upload-nhP5uhIQ.js → upload-5ck9hJ9r.js} +1 -1
  78. package/web-app/dist/assets/{usePolling-CWFsCezc.js → usePolling-BLGH4uFR.js} +1 -1
  79. package/web-app/dist/assets/{user-5TMGZ6m7.js → user-CNCAMMb7.js} +1 -1
  80. package/web-app/dist/index.html +1 -1
package/bin/loki CHANGED
@@ -287,6 +287,99 @@ case "${1:-}" in
287
287
  ;;
288
288
  esac
289
289
 
290
+ # Optional cheaper-model preference. Stripped for every command so the engine
291
+ # never sees an unknown flag, including a bare `loki "<task>" --cost-first`.
292
+ # Off unless the flag or --haiku is passed. The hard cap (--max-cost,
293
+ # budgets.per_run) is unchanged.
294
+ _cf_has=0
295
+ for _cf_a in "$@"; do
296
+ case "$_cf_a" in --cost-first) _cf_has=1 ;; esac
297
+ done
298
+ if [ "$_cf_has" = "1" ]; then
299
+ export LOKI_COST_FIRST=1
300
+ _cf_out=()
301
+ for _cf_a in "$@"; do
302
+ [ "$_cf_a" = "--cost-first" ] || _cf_out+=("$_cf_a")
303
+ done
304
+ set -- ${_cf_out[@]+"${_cf_out[@]}"}
305
+ fi
306
+ unset _cf_has _cf_out _cf_a
307
+
308
+ # --haiku opts the first implement onto haiku (the existing lean levers).
309
+ # The default model stays the provider default, the same one a raw claude
310
+ # session uses. A failed check still climbs back (haikuFirstDowngrade).
311
+ # Explicit env wins. Stripped so neither engine treats it as an unknown flag.
312
+ _hk_has=0
313
+ for _hk_a in "$@"; do
314
+ case "$_hk_a" in --haiku) _hk_has=1 ;; esac
315
+ done
316
+ if [ "$_hk_has" = "1" ]; then
317
+ : "${LOKI_IMPLEMENT_HAIKU_FIRST:=1}"
318
+ : "${LOKI_E10_TRIM:=1}"
319
+ : "${LOKI_E10_SMALL_NO_RUNNER:=1}"
320
+ : "${LOKI_E10_SMALL_MAX_CHARS:=1200}"
321
+ : "${LOKI_COST_FIRST:=1}"
322
+ export LOKI_IMPLEMENT_HAIKU_FIRST LOKI_E10_TRIM LOKI_E10_SMALL_NO_RUNNER LOKI_E10_SMALL_MAX_CHARS LOKI_COST_FIRST
323
+ _hk_out=()
324
+ for _hk_a in "$@"; do
325
+ [ "$_hk_a" = "--haiku" ] || _hk_out+=("$_hk_a")
326
+ done
327
+ set -- ${_hk_out[@]+"${_hk_out[@]}"}
328
+ fi
329
+ unset _hk_has _hk_out _hk_a
330
+
331
+ # Fail-to-pass, on for a real start. SWE-bench counts a fix only when a test
332
+ # fails on the base and passes on the head. mutation_proof.ts already re-runs
333
+ # the Wall tests on the old tree; LOKI_MUTATION_STRICT=1 is what refuses
334
+ # VERIFIED when they still pass and the plan declared a behavior change.
335
+ # The library default stays off. This command turns it on. Opt out with
336
+ # LOKI_MUTATION_STRICT=0. --help does not set it.
337
+ _loki_f2p_default() {
338
+ case "${1:-}" in
339
+ start|run|quick) ;;
340
+ *" "*|*/*\#[0-9]*|http://*|https://*) ;;
341
+ *) return 0 ;;
342
+ esac
343
+ local _a
344
+ for _a in "$@"; do
345
+ case "$_a" in --help|-h) return 0 ;; esac
346
+ done
347
+ if [ -z "${LOKI_MUTATION_STRICT:-}" ]; then
348
+ export LOKI_MUTATION_STRICT=1
349
+ export LOKI_F2P_DEFAULTED=1
350
+ fi
351
+ # Tool logs are shortened before the next turn. The tail of a command
352
+ # stays (trim.ts never halves it), so a failure is not cut off. Earlier
353
+ # turns are not rewritten, so the prompt cache stays valid. Opt out: 0.
354
+ if [ -z "${LOKI_E10_TRIM:-}" ]; then
355
+ export LOKI_E10_TRIM=1
356
+ export LOKI_TRIM_DEFAULTED=1
357
+ fi
358
+ }
359
+ # Same text as loki_f2p_banner in autonomy/loki: names only the defaults this run turned on.
360
+ # stderr, so a --json run's stdout stays one JSON document.
361
+ _loki_f2p_banner() {
362
+ if [ "${LOKI_F2P_DEFAULTED:-}" = "1" ] && [ "${LOKI_TRIM_DEFAULTED:-}" = "1" ]; then
363
+ echo "Factory: a behavior change is verified only when a Wall test fails on the old code, and tool logs are trimmed before the next turn. Opt out: LOKI_MUTATION_STRICT=0, LOKI_E10_TRIM=0." >&2
364
+ elif [ "${LOKI_F2P_DEFAULTED:-}" = "1" ]; then
365
+ echo "Factory: a behavior change is verified only when a Wall test fails on the old code. Opt out: LOKI_MUTATION_STRICT=0." >&2
366
+ elif [ "${LOKI_TRIM_DEFAULTED:-}" = "1" ]; then
367
+ echo "Factory: tool logs are trimmed before the next turn. Opt out: LOKI_E10_TRIM=0." >&2
368
+ fi
369
+ }
370
+ _loki_f2p_default "$@"
371
+
372
+ _loki_print_autonomy() {
373
+ local _pol="" _f _data="${LOKI_DATA_DIR:-${HOME}/.loki}"
374
+ for _f in ".loki/policies.json" ".loki/policies.yaml" "${_data}/policies.json" "${_data}/policies.yaml"; do
375
+ if [ -f "$_f" ]; then _pol="$_f"; break; fi
376
+ done
377
+ if [ -n "$_pol" ]; then
378
+ echo "Autonomy: policy file $_pol (propose, execute, operate; the file decides PR allow, draft or deny)." >&2
379
+ else
380
+ echo "Autonomy: execute (no policy file). Levels: propose, execute, operate." >&2
381
+ fi
382
+ }
290
383
  # First-run funnel, stage C: the activation ATTEMPT (first `loki start`).
291
384
  #
292
385
  # WHY HERE. This shim runs for BOTH routes before any exec, so one emit at this
@@ -664,6 +757,18 @@ case "v10" in
664
757
  if [ "$_e10" = "1" ]; then
665
758
  _lb=$(_loki_bun)
666
759
  [ -n "$_lb" ] || { echo "Error: the Loki 10 engine needs bun. Install bun from https://bun.sh." >&2; exit 1; }
760
+ # Only a run prints the policy lines, and only with --verbose: the default Loki 10 output is
761
+ # held to 8 lines (D48). keys, export, status, verify, dashboard and plan --spec are data
762
+ # commands whose output callers parse, so they never print them.
763
+ case "${1:-}" in
764
+ keys|export|status|verify|dashboard|plan) ;;
765
+ *)
766
+ for _e10_v in "${_e10_args[@]}"; do
767
+ if [ "$_e10_v" = "--verbose" ]; then _loki_f2p_banner; _loki_print_autonomy; break; fi
768
+ done
769
+ unset _e10_v
770
+ ;;
771
+ esac
667
772
  exec "$_lb" "$BUN_CLI" engine10 "${_e10_args[@]}"
668
773
  fi
669
774
  unset _e10 _e10_args _e10_hard
package/completions/_loki CHANGED
@@ -32,6 +32,17 @@ function _loki {
32
32
  export)
33
33
  _arguments '--sarif[Write findings.sarif for a run]'
34
34
  ;;
35
+ tour)
36
+ _arguments '--live[Tiny real task, same as loki wow]'
37
+ ;;
38
+ wow)
39
+ _arguments \
40
+ '--offline[Always show the offline sample]' \
41
+ '--dry-run[Print the plan, no model call]' \
42
+ '--keep[Keep the temp repo]' \
43
+ '--provider[Provider]:provider:(claude opencode codex cline aider)' \
44
+ '--max-cost[Hard per-run cap in USD]:usd:'
45
+ ;;
35
46
  control)
36
47
  _arguments \
37
48
  '--port[Port for the control plane server]:port:' \
@@ -241,6 +252,8 @@ function _loki_commands {
241
252
  'monitor:Monitor Docker Compose services with auto-fix'
242
253
  'demo:Interactive 60-second demo'
243
254
  'tour:Offline sample receipt replay (no key, no spend)'
255
+ 'wow:Tiny real task in a temp repo, or the offline sample'
256
+ 'factory:loki start with the autonomy policy printed'
244
257
  'welcome:Friendly first-run opener (what Loki is, next steps)'
245
258
  'init:Interactive PRD builder'
246
259
  'stop:Stop execution'
@@ -5,7 +5,7 @@ _loki_completion() {
5
5
  _init_completion || return
6
6
 
7
7
  # Main subcommands (must match autonomy/loki main case statement)
8
- local main_commands="start backlog quick monitor demo tour welcome init stop pause resume cancel steer status next ship dashboard web serve api sandbox notify import github issue intent config provider reset memory compound checkpoint council dogfood projects enterprise secrets cockpit secure own handoff doctor watchdog audit metrics syslog onboard share proof receipt outcomes explain plan report cost estimate kpis stats test ci watch telemetry agent context ctx code run export review optimize heal modernize migrate cluster worktree wt trigger failover remote deploy docker mcp magic assets analyze compliance crash control workspace open otel preview quickstart rc rollback merge self-update sentrux setup-skill spec state template trust trust-metrics ultracode update verify voice why wiki bench cleanup logs grill docs cp version completions help keys answer queue issues undo acp verify-pr chat route edit setup models agents diff backup restore"
8
+ local main_commands="start backlog quick monitor demo tour wow factory welcome init stop pause resume cancel steer status next ship dashboard web serve api sandbox notify import github issue intent config provider reset memory compound checkpoint council dogfood projects enterprise secrets cockpit secure own handoff doctor watchdog audit metrics syslog onboard share proof receipt outcomes explain plan report cost estimate kpis stats test ci watch telemetry agent context ctx code run export review optimize heal modernize migrate cluster worktree wt trigger failover remote deploy docker mcp magic assets analyze compliance crash control workspace open otel preview quickstart rc rollback merge self-update sentrux setup-skill spec state template trust trust-metrics ultracode update verify voice why wiki bench cleanup logs grill docs cp version completions help keys answer queue issues undo acp verify-pr chat route edit setup models agents diff backup restore"
9
9
 
10
10
  # 1. If we are on the first argument (subcommand)
11
11
  if [[ $cword -eq 1 ]]; then
@@ -231,6 +231,20 @@ _loki_completion() {
231
231
  fi
232
232
  ;;
233
233
 
234
+ tour)
235
+ if [[ "$cur" == -* ]]; then
236
+ COMPREPLY=( $(compgen -W "--live --help" -- "$cur") )
237
+ return 0
238
+ fi
239
+ ;;
240
+
241
+ wow)
242
+ if [[ "$cur" == -* ]]; then
243
+ COMPREPLY=( $(compgen -W "--offline --dry-run --keep --provider --max-cost --help" -- "$cur") )
244
+ return 0
245
+ fi
246
+ ;;
247
+
234
248
  quickstart)
235
249
  if [[ "$cur" == -* ]]; then
236
250
  COMPREPLY=( $(compgen -W "--dry-run --explain-match --from-preview --verify-preview --json --list-templates --template --yes --help" -- "$cur") )
@@ -7,6 +7,6 @@ Modules:
7
7
  control: Session control helpers (status, atomic writes, origin check)
8
8
  """
9
9
 
10
- __version__ = "11.17.57"
10
+ __version__ = "11.17.59"
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.57. Do not edit by hand.
3
+ Generated from `loki-ts/src/cli/registry.ts` by `scripts/generate-stale-zero.sh` for v11.17.59. 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 |
@@ -143,6 +143,8 @@ Hidden and legacy-only commands are omitted; see `docs/v10/CLI-MODERN.md` for th
143
143
  | `loki export` | Export session data |
144
144
  | `loki notify` | Notifications |
145
145
  | `loki tour` | See a sample result |
146
+ | `loki wow` | Tiny real task, or the offline sample |
147
+ | `loki factory` | loki start with the autonomy policy printed |
146
148
  | `loki welcome` | First-run opener |
147
149
  | `loki onboard` | Onboard to a codebase |
148
150
  | `loki setup-skill` | Install the skill symlinks |
@@ -9,18 +9,20 @@ Loki can also drive opencode as a provider (`loki start --provider opencode`).
9
9
 
10
10
  ## Summary
11
11
 
12
- | Category | Loki Mode (11.4.0) | opencode | Edge |
12
+ | Category | Loki Mode | opencode | Edge |
13
13
  |---|---|---|---|
14
- | Everyday UX | `loki start` with one unified summary; `loki chat` for interactive use | Polished TUI as the main surface | opencode for interactive feel; Loki for hands-off runs |
15
- | Install and onboarding | npm install, `loki setup`, `loki doctor --fix`; needs Node, Python, git, jq, curl and a model | Single binary or npm, provider login flow | opencode lighter; Loki now guided |
16
- | Learning curve | Few core verbs (`loki help`), one route for every input, `loki route` explains it | Learn one TUI | Roughly even |
14
+ | Everyday UX | One command, `loki start`. No task and no repo shows a receipt before any spend. The run prints its autonomy level | Polished TUI as the main surface | opencode for interactive feel; Loki for one command that finishes |
15
+ | Install and onboarding | npm install, then `loki start`. No key shows a real receipt. A provider is required only when there is a repo or a task | Single binary or npm, provider login flow | Loki shows proof before it asks for a key |
16
+ | Learning curve | `loki start` is the factory. Policy, receipt, and cost route are printed by that command. `loki help` lists the rest | Learn one TUI | Loki if you do not want a second verb |
17
17
  | Interactive coding | `loki chat`: Plan/Build modes, slash commands, `--attach` | Full TUI with sessions and rich editing flow | opencode |
18
18
  | Small changes | `loki edit` (one pass, diff, opt-in verify and receipt) | Prompt in the TUI or `opencode run` | Even |
19
19
  | Provider flexibility | Claude default; codex, cline, aider, opencode; OpenRouter and local routes | Very wide provider catalog, first-class | opencode |
20
20
  | Local models | `loki models --local`, `LOKI_MODEL_ROUTE=ollama/...`, lmstudio, llamacpp, vllm, custom URL | Local providers via config | Even |
21
- | Multi-agent | Role agents, council review, custom agents in `.loki/agents/*.md`, export to Claude Code subagents | Configurable agents and subagents | Even; Loki adds council |
21
+ | Multi-agent | Role agents, council review, custom agents in `.loki/agents/*.md`, the run view names the active stage | Configurable agents and subagents | Loki when you want the receipt to name who ran |
22
+ | Cost control | Same provider model as a raw session. Tool logs are trimmed before the next turn so a long run does not resend them. `--max-cost` and `budgets.per_run` are hard caps. `--haiku` or `--cost lean` opts the first implement onto haiku; a failed check climbs back. `--cost-first` (or `LOKI_COST_FIRST=1`, also set by `--haiku`) keeps a haiku route only when the advisor marks the risk low; a history floor, no advisor, or an explicit model override still raise it | User watches the TUI | Loki when the result has to be a check the model did not grade |
23
+ | Proof | Signed receipt, `loki verify`, NOT PROVEN list, and a PR comment. A behavior change is verified only when a Wall test fails on the old code and passes after (`LOKI_MUTATION_STRICT=0` opts out) | The diff in the TUI | Loki |
22
24
  | Docs consistency | One routing story, one cap rule, generated CLI table | Single product surface | Even |
23
- | Predictability | Order-independent routing, documented exit-code contract, spend cap | Interactive, user-driven | Loki for unattended use |
25
+ | Predictability | Order-independent routing, documented exit-code contract, spend cap, STALLED is never a verified receipt | Interactive, user-driven | Loki for unattended use |
24
26
 
25
27
  ## Per category
26
28
 
@@ -87,6 +89,16 @@ that applies on every engine10 provider.
87
89
  `loki verify` for CI, and test-weakening detection.
88
90
  - **Council.** Specialist review selected from the changed files and diff.
89
91
 
92
+ ## Switching from Claude Code or opencode
93
+
94
+ `loki start` and `loki factory` run the Loki 10 engine for an issue reference or a multi-word task, when bun is available and the provider is claude, codex, cline, aider or opencode. A PRD file or a one-word argument takes the legacy engine, and so does a host with no bun or an unsupported `LOKI_PROVIDER` (those two print a one-line notice). On the Loki 10 path, `--provider opencode` and the default Claude path are the same loop: plan, implement, verify, seal, and a pull request unless you pass `--no-pr`. The receipt is still written with `--no-pr`, and `loki verify` checks it with no network.
95
+
96
+ There is no transcript importer. A Claude Code or opencode session is not copied in. The handoff is the repository and the task. Inside one Loki run on the Claude SDK path, the plan session resumes into implement unless `LOKI_E10_FIX_RESUME=0`; other providers start implement fresh. `loki chat --attach` joins a run that is already going. `loki resume` continues a paused or interrupted run from its checkpoint.
97
+
98
+ A rate limit is retried. A hard billing failure is not. Two fix rounds in a row that leave the tree byte-identical against the same failure stop as STALLED with a receipt, and that receipt is not VERIFIED.
99
+
100
+ The MCP server and the Claude plugin return the same receipt-capable result as the CLI. Uninstalling Loki removes the command only. Receipts stay in the project's `.loki/runs` and in `~/.loki` until you delete them.
101
+
90
102
  ## When to pick which
91
103
 
92
104
  Pick opencode for hands-on interactive coding across many providers. Pick Loki
@@ -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.57
5
+ **Version:** v11.17.59
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
 
@@ -196,7 +196,11 @@ loki completions bash > ~/.loki-completion.bash # or print the script
196
196
  | Bun | `bun update -g loki-mode` | `bun remove -g loki-mode` |
197
197
  | Homebrew | `brew upgrade loki-mode` | `brew uninstall loki-mode` |
198
198
 
199
- Run state lives in `.loki/` inside each project and in `~/.loki/`. Remove those directories to delete it.
199
+ Run state lives in `.loki/` inside each project and in `~/.loki/`. Uninstalling the CLI does not delete those directories. Receipts stay yours. Remove `.loki/` and `~/.loki/` yourself only when you want the history gone.
200
+
201
+ `loki wow` runs one small task in a temporary repo when Claude or OpenCode is ready, and falls back to `loki tour` when it is not. `loki factory "<task>"` is `loki start` with the autonomy policy named first. `--cost-first` prefers a lower-cost model only when the advisor marks the route low risk. `--max-cost` and `budgets.per_run` stay the hard cap.
202
+
203
+ There is no importer that copies a Claude Code or OpenCode transcript into a Loki run. Inside one Loki run, the plan session resumes into implement unless `LOKI_E10_FIX_RESUME=0`. A rate limit stays a retry; a hard billing failure does not (`loki-ts/src/runner/retry_class.ts`). Checkpoint resume is `loki resume`. The handoff from another tool is the repo plus the task: `loki start --provider opencode` or the default Claude path, then `loki chat --attach` to watch. The MCP server and the Claude plugin return the same receipt-capable results as the CLI.
200
204
 
201
205
  ---
202
206
 
@@ -6,12 +6,12 @@ Classes: KEEP-MODERN (v10-native or engine-neutral), UPDATE (live but needs mode
6
6
 
7
7
  ## Counts
8
8
 
9
- - KEEP-MODERN: 74
9
+ - KEEP-MODERN: 76
10
10
  - UPDATE: 22
11
11
  - DROP-LEGACY: 31
12
12
  - DELETE: 14
13
- - Total rows: 141
14
- - Registry paths (commands and nested subcommands): 209
13
+ - Total rows: 143
14
+ - Registry paths (commands and nested subcommands): 211
15
15
 
16
16
  ## Commands
17
17
 
@@ -83,6 +83,8 @@ Classes: KEEP-MODERN (v10-native or engine-neutral), UPDATE (live but needs mode
83
83
  | export | autonomy/loki | UPDATE | Duplicates report export |
84
84
  | notify | autonomy/loki | KEEP-MODERN | Engine-neutral |
85
85
  | tour | autonomy/loki | KEEP-MODERN | Onboarding |
86
+ | wow | autonomy/loki | KEEP-MODERN | Onboarding: loki tour --live |
87
+ | factory | autonomy/loki | KEEP-MODERN | propose, execute, operate unchanged |
86
88
  | welcome | autonomy/loki | KEEP-MODERN | Onboarding |
87
89
  | onboard | autonomy/loki | UPDATE | Overlaps wiki |
88
90
  | setup-skill | autonomy/loki | KEEP-MODERN | Setup |
@@ -2551,3 +2551,6 @@ v11.17.21 published (Release success on 462fbc40a; npm latest 11.17.21, next 11.
2551
2551
 
2552
2552
  ## 2026-10-17T15:48Z (CoS) v11.17.57
2553
2553
  - STAB-1 main green fix-forward: core budget 4956 (budget.test pass), P9 allowtoken case PASS, L2 registry pass, monorepo_cwd 16 pass 0 fail, sigpipe 1722 <= 1722, select-tests 119 pass 0 fail, help drift 34 pass 0 fail. Combined: tsc rc=0, build rc=0, bun test (budget, l0, monorepo, l2, verify, util, spawn_env_guard, contract, cli) 765 pass 0 fail. Three orphan bun test PIDs (ppid 1, 21h old, removed worktrees) stopped by PID.
2554
+
2555
+ ## 2026-10-17T16:07Z (CoS) v11.17.58
2556
+ - STAB-1 follow-up: Tests 39046745996 on v11.17.57 failed only on shard 1 help drift (FAIL: 'loki queue rm' (CHANGELOG) is absent from help), caused by the 11.17.57 notes. Reworded; tests/test-help-changelog-drift.sh 4 passed, 0 failed. Release 39046745968 all jobs success; npm latest and next 11.17.57.