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.
- package/README.md +13 -4
- package/SKILL.md +3 -3
- package/VERSION +1 -1
- package/autonomy/lib/engine10-push.sh +22 -5
- package/autonomy/loki +384 -9
- package/autonomy/telemetry.sh +2 -2
- package/bin/loki +105 -0
- package/completions/_loki +13 -0
- package/completions/loki.bash +15 -1
- package/dashboard/__init__.py +1 -1
- package/docs/CLI-REFERENCE.md +3 -1
- package/docs/COMPARE-OPENCODE.md +18 -6
- package/docs/INSTALLATION.md +6 -2
- package/docs/v10/CLI-MODERN.md +5 -3
- package/docs/v10/PROGRESS.md +3 -0
- package/loki-ts/dist/loki.js +1128 -1117
- package/mcp/__init__.py +1 -1
- package/package.json +2 -2
- package/packages/control-plane/dist/server.js +15 -1
- package/packages/control-plane/ui/dist/assets/{index-CxZWgwie.css → index-DeSVrWgd.css} +1 -1
- package/packages/control-plane/ui/dist/assets/{index-u8cd6TRQ.js → index-Dww-8G06.js} +10 -10
- package/packages/control-plane/ui/dist/index.html +2 -2
- package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
- package/web-app/dist/assets/{AdminPage-D9vxsKmh.js → AdminPage-CCO9zGD0.js} +1 -1
- package/web-app/dist/assets/{Avatar-DfxBpPUo.js → Avatar-JPtFS3re.js} +1 -1
- package/web-app/dist/assets/{Badge-Jtp0w19_.js → Badge-1bUFOFcI.js} +1 -1
- package/web-app/dist/assets/{Button-Cfl_Ygum.js → Button-BQn8thxN.js} +1 -1
- package/web-app/dist/assets/{CockpitPage-t_xLPM1y.js → CockpitPage-olBRJMLN.js} +1 -1
- package/web-app/dist/assets/{ComparePage-00e9eUgR.js → ComparePage-B-o4mxlZ.js} +1 -1
- package/web-app/dist/assets/{ErrorBoundary-DfoBT_kK.js → ErrorBoundary-C4IN6YYt.js} +1 -1
- package/web-app/dist/assets/{EvidenceReceiptPanel-Cm--Zldw.js → EvidenceReceiptPanel-CH4iRJiJ.js} +1 -1
- package/web-app/dist/assets/{GitHubIssuesPanel-CmZoYExK.js → GitHubIssuesPanel-BNgRlwGt.js} +1 -1
- package/web-app/dist/assets/{GitHubPRsPanel-rehTMC_P.js → GitHubPRsPanel-B6M_lVU3.js} +1 -1
- package/web-app/dist/assets/{HomePage-CKgOAUqm.js → HomePage-CSlr_5vo.js} +2 -2
- package/web-app/dist/assets/{LoginPage-DWMk7D-V.js → LoginPage-DJhYZ0SQ.js} +1 -1
- package/web-app/dist/assets/{MagicPage-BdIzYkjN.js → MagicPage-B4XpvDFP.js} +1 -1
- package/web-app/dist/assets/{MetricsPage-DdjN5LJL.js → MetricsPage-DlgPEc5f.js} +1 -1
- package/web-app/dist/assets/{NotFoundPage-Cf4GHp9Z.js → NotFoundPage-oE1Fvllj.js} +1 -1
- package/web-app/dist/assets/{ProjectPage-BP8u2iFN.js → ProjectPage-B94pP0UO.js} +3 -3
- package/web-app/dist/assets/{ProjectsPage-CK7R-DIh.js → ProjectsPage-Bk67iaJq.js} +1 -1
- package/web-app/dist/assets/{SettingsPage-DNMqOUrM.js → SettingsPage-BGVzSJ3n.js} +1 -1
- package/web-app/dist/assets/{ShowcasePage-RkPgacU3.js → ShowcasePage-DtGaDxE5.js} +1 -1
- package/web-app/dist/assets/{SystemSettingsPage-COqYOPAP.js → SystemSettingsPage-CfyOGdC-.js} +1 -1
- package/web-app/dist/assets/{TeamsPage-CyBIuYhv.js → TeamsPage-CuGmdY85.js} +1 -1
- package/web-app/dist/assets/{TemplatesPage-5cMJ3uaP.js → TemplatesPage-Db4OZ-o0.js} +1 -1
- package/web-app/dist/assets/{TerminalOutput-D2as8CHU.js → TerminalOutput-B1W28fpH.js} +1 -1
- package/web-app/dist/assets/{activity-B0HWAVsH.js → activity-DKFtW1Dz.js} +1 -1
- package/web-app/dist/assets/{bell-CeapvdDm.js → bell-D2iqUEiO.js} +1 -1
- package/web-app/dist/assets/{bot-C9_qiFCl.js → bot-DgV5jnOz.js} +1 -1
- package/web-app/dist/assets/{check-ZLkbkjP8.js → check-BgJBmYEn.js} +1 -1
- package/web-app/dist/assets/{chevron-left-DzAOofqV.js → chevron-left-lPbv6ogy.js} +1 -1
- package/web-app/dist/assets/{circle-alert-C_P6Sbnq.js → circle-alert-CKhQ_hdo.js} +1 -1
- package/web-app/dist/assets/{clock-hlFBiyvc.js → clock-DWq8vor5.js} +1 -1
- package/web-app/dist/assets/{cloud-gpl8_jQe.js → cloud-BvQxG3Q2.js} +1 -1
- package/web-app/dist/assets/{code-xml-CJ7WRPDY.js → code-xml-aL36Csaf.js} +1 -1
- package/web-app/dist/assets/{database-C0waxSTC.js → database-CFzHMx2h.js} +1 -1
- package/web-app/dist/assets/{dollar-sign-TFqYdT4P.js → dollar-sign-C-jqbXs_.js} +1 -1
- package/web-app/dist/assets/{file-code-corner-Cklb7xuW.js → file-code-corner-pZ_KZ1YO.js} +1 -1
- package/web-app/dist/assets/{file-plus-vY6Bgsjz.js → file-plus-fRMGiUh4.js} +1 -1
- package/web-app/dist/assets/{globe-4A2JXvUS.js → globe-CVyRdgIZ.js} +1 -1
- package/web-app/dist/assets/{hammer-ZHnY2Erh.js → hammer-DRokcz-I.js} +1 -1
- package/web-app/dist/assets/{index-CgCOQR3S.js → index-CLY7CAQL.js} +3 -3
- package/web-app/dist/assets/{layers-By5ECd5H.js → layers-CEWB89or.js} +1 -1
- package/web-app/dist/assets/{loader-circle-yM_E0C2Q.js → loader-circle-C5OvUx9K.js} +1 -1
- package/web-app/dist/assets/{lock-lSNyrxDR.js → lock-TGMA_-t0.js} +1 -1
- package/web-app/dist/assets/{package-BKFtRuCB.js → package-QJ4Wad2J.js} +1 -1
- package/web-app/dist/assets/{plus-CjV1F6qp.js → plus-Dgj8mPvu.js} +1 -1
- package/web-app/dist/assets/{refresh-cw-DTSM4-_Q.js → refresh-cw-AGMW2syT.js} +1 -1
- package/web-app/dist/assets/{rotate-ccw-CiCkyt92.js → rotate-ccw-BvQ3PO0r.js} +1 -1
- package/web-app/dist/assets/{scroll-text-D1Ruxchx.js → scroll-text-iwC90pRp.js} +1 -1
- package/web-app/dist/assets/{server-DhT2dH_l.js → server-TUwkkzsm.js} +1 -1
- package/web-app/dist/assets/{shield-alert-CFFYVEiJ.js → shield-alert-CR3ONYJ5.js} +1 -1
- package/web-app/dist/assets/{thumbs-up-Dl4lQ_rS.js → thumbs-up-DC2-6Rb1.js} +1 -1
- package/web-app/dist/assets/{trash-2-DMJUQZ_M.js → trash-2-o9Iijmor.js} +1 -1
- package/web-app/dist/assets/{trending-down-C4mhp6Ua.js → trending-down-d0olJaN5.js} +1 -1
- package/web-app/dist/assets/{trending-up-D534cAuW.js → trending-up-BB6Q7LpE.js} +1 -1
- package/web-app/dist/assets/{upload-nhP5uhIQ.js → upload-5ck9hJ9r.js} +1 -1
- package/web-app/dist/assets/{usePolling-CWFsCezc.js → usePolling-BLGH4uFR.js} +1 -1
- package/web-app/dist/assets/{user-5TMGZ6m7.js → user-CNCAMMb7.js} +1 -1
- 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'
|
package/completions/loki.bash
CHANGED
|
@@ -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") )
|
package/dashboard/__init__.py
CHANGED
package/docs/CLI-REFERENCE.md
CHANGED
|
@@ -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.
|
|
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 |
|
package/docs/COMPARE-OPENCODE.md
CHANGED
|
@@ -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
|
|
12
|
+
| Category | Loki Mode | opencode | Edge |
|
|
13
13
|
|---|---|---|---|
|
|
14
|
-
| Everyday UX | `loki start
|
|
15
|
-
| Install and onboarding | npm install, `loki
|
|
16
|
-
| Learning curve |
|
|
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`,
|
|
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
|
package/docs/INSTALLATION.md
CHANGED
|
@@ -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.
|
|
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/`.
|
|
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
|
|
package/docs/v10/CLI-MODERN.md
CHANGED
|
@@ -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:
|
|
9
|
+
- KEEP-MODERN: 76
|
|
10
10
|
- UPDATE: 22
|
|
11
11
|
- DROP-LEGACY: 31
|
|
12
12
|
- DELETE: 14
|
|
13
|
-
- Total rows:
|
|
14
|
-
- Registry paths (commands and nested subcommands):
|
|
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 |
|
package/docs/v10/PROGRESS.md
CHANGED
|
@@ -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.
|