loki-mode 11.86.0 → 11.88.0

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 (72) hide show
  1. package/SKILL.md +2 -2
  2. package/VERSION +1 -1
  3. package/autonomy/lib/telemetry-schema.json +20 -0
  4. package/autonomy/telemetry.sh +33 -0
  5. package/dashboard/__init__.py +1 -1
  6. package/docs/CLI-REFERENCE.md +1 -1
  7. package/docs/INSTALLATION.md +1 -1
  8. package/docs/PRIVACY.md +2 -0
  9. package/docs/dev/release-checklist.md +2 -0
  10. package/loki-ts/dist/loki.js +1222 -1220
  11. package/loki-ts/package.json +2 -1
  12. package/mcp/__init__.py +1 -1
  13. package/package.json +2 -2
  14. package/packages/control-plane/dist/server.js +183 -78
  15. package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
  16. package/web-app/dist/assets/{AdminPage-CXRvxMO_.js → AdminPage-DGFYz7jP.js} +1 -1
  17. package/web-app/dist/assets/{Avatar-Bk9K6OnI.js → Avatar-DimAK0qS.js} +1 -1
  18. package/web-app/dist/assets/{Badge-CDePJKKg.js → Badge-CtVHUWPT.js} +1 -1
  19. package/web-app/dist/assets/{Button-DMzR-FT4.js → Button-B6GOqLuT.js} +1 -1
  20. package/web-app/dist/assets/{CockpitPage-Cfh42owC.js → CockpitPage--Ua8KoOS.js} +1 -1
  21. package/web-app/dist/assets/{ComparePage-Oft34xnR.js → ComparePage-BtMraAUs.js} +1 -1
  22. package/web-app/dist/assets/{ErrorBoundary-DlXBbQDo.js → ErrorBoundary-CA8nmpsN.js} +1 -1
  23. package/web-app/dist/assets/{EvidenceReceiptPanel-C0LKef5y.js → EvidenceReceiptPanel-Dj0HmQVK.js} +1 -1
  24. package/web-app/dist/assets/{GitHubIssuesPanel-CyqsExTP.js → GitHubIssuesPanel-Crb9rp_b.js} +1 -1
  25. package/web-app/dist/assets/{GitHubPRsPanel-BC7ExtnE.js → GitHubPRsPanel-DhFPYxS7.js} +1 -1
  26. package/web-app/dist/assets/{HomePage-CmYisyjJ.js → HomePage-C51QMxKa.js} +2 -2
  27. package/web-app/dist/assets/{LoginPage-Cunt-wYH.js → LoginPage-CcjKShUz.js} +1 -1
  28. package/web-app/dist/assets/{MagicPage-lvGAbDEv.js → MagicPage-DYvCJMyL.js} +1 -1
  29. package/web-app/dist/assets/{MetricsPage-DPvRVQU7.js → MetricsPage-C7NfdivW.js} +1 -1
  30. package/web-app/dist/assets/{NotFoundPage-DDGT6teS.js → NotFoundPage-D_i8KOHP.js} +1 -1
  31. package/web-app/dist/assets/{ProjectPage-Bf6fTvjD.js → ProjectPage-BnX-bdrE.js} +3 -3
  32. package/web-app/dist/assets/{ProjectsPage-DL2gvN_V.js → ProjectsPage-Dw9vd8nh.js} +1 -1
  33. package/web-app/dist/assets/{SettingsPage-DV-X99VB.js → SettingsPage-BiMlvct4.js} +1 -1
  34. package/web-app/dist/assets/{ShowcasePage-B3eyQWQJ.js → ShowcasePage-CTicKPSd.js} +1 -1
  35. package/web-app/dist/assets/{SystemSettingsPage-DIUT7aYr.js → SystemSettingsPage-CCaBdNUV.js} +1 -1
  36. package/web-app/dist/assets/{TeamsPage-BJpeWszJ.js → TeamsPage-ZgHxhez9.js} +1 -1
  37. package/web-app/dist/assets/{TemplatesPage-Cqo6IMUO.js → TemplatesPage-CdabY5xG.js} +1 -1
  38. package/web-app/dist/assets/{TerminalOutput-B7NsTAYn.js → TerminalOutput-BnEw4Cel.js} +1 -1
  39. package/web-app/dist/assets/{activity-Bpy5MefF.js → activity-CMam860z.js} +1 -1
  40. package/web-app/dist/assets/{bell-BwXuuFea.js → bell-znbIfqyN.js} +1 -1
  41. package/web-app/dist/assets/{bot-Cij-5kEZ.js → bot-BEvnLIzv.js} +1 -1
  42. package/web-app/dist/assets/{check-YWtXU6Zo.js → check-7vhpsKmE.js} +1 -1
  43. package/web-app/dist/assets/{chevron-left-MxOda7Z9.js → chevron-left-DclMmWdO.js} +1 -1
  44. package/web-app/dist/assets/{circle-alert-w9za8rUy.js → circle-alert-DTrBplJz.js} +1 -1
  45. package/web-app/dist/assets/{clock-Bp3AU4Nx.js → clock-B_C913Rx.js} +1 -1
  46. package/web-app/dist/assets/{cloud-BFuxyAYb.js → cloud-CPXqqekD.js} +1 -1
  47. package/web-app/dist/assets/{code-xml-B3jPToQW.js → code-xml-BcFkh38Q.js} +1 -1
  48. package/web-app/dist/assets/{database-D85Q7ufb.js → database-wb6mQZnf.js} +1 -1
  49. package/web-app/dist/assets/{dollar-sign-C0hEZ3BL.js → dollar-sign-dD_UVJpH.js} +1 -1
  50. package/web-app/dist/assets/{file-code-corner-DeMr0sSL.js → file-code-corner-BNeg4iZA.js} +1 -1
  51. package/web-app/dist/assets/{file-plus-BtBan_QU.js → file-plus-CUcAf2PD.js} +1 -1
  52. package/web-app/dist/assets/{globe-DLHflM3B.js → globe-3rj7nR-A.js} +1 -1
  53. package/web-app/dist/assets/{hammer-BLoZn0OU.js → hammer-DP5N9S57.js} +1 -1
  54. package/web-app/dist/assets/{index-q6GEQ6U8.js → index-BplYtTNn.js} +3 -3
  55. package/web-app/dist/assets/{layers-Cac5ZHvD.js → layers-DDhFYiTv.js} +1 -1
  56. package/web-app/dist/assets/{loader-circle-C7UMl5I-.js → loader-circle-BbsRrghq.js} +1 -1
  57. package/web-app/dist/assets/{lock-BC3v0P7Z.js → lock-COw30Y3Z.js} +1 -1
  58. package/web-app/dist/assets/{package-CFsriyik.js → package-BYq-PY2J.js} +1 -1
  59. package/web-app/dist/assets/{plus-CSi88k0-.js → plus-7NF-59Ud.js} +1 -1
  60. package/web-app/dist/assets/{refresh-cw-BBBOc6SY.js → refresh-cw-CPAgqFOB.js} +1 -1
  61. package/web-app/dist/assets/{rotate-ccw-D_dHBG_h.js → rotate-ccw-Cvy3Bma-.js} +1 -1
  62. package/web-app/dist/assets/{scroll-text-z4CcL8tu.js → scroll-text-CKOo3ri8.js} +1 -1
  63. package/web-app/dist/assets/{server-Dsl-ujtv.js → server-DexVW09l.js} +1 -1
  64. package/web-app/dist/assets/{shield-alert-CXuzPi9-.js → shield-alert-Cof-u0b5.js} +1 -1
  65. package/web-app/dist/assets/{thumbs-up-CNkCfkkx.js → thumbs-up-CErphzWx.js} +1 -1
  66. package/web-app/dist/assets/{trash-2-rCtL1tv8.js → trash-2-CO-IQ0pS.js} +1 -1
  67. package/web-app/dist/assets/{trending-down-0wlGANoa.js → trending-down-CeSfSLgm.js} +1 -1
  68. package/web-app/dist/assets/{trending-up-C9iCihGe.js → trending-up-DY6hK6l9.js} +1 -1
  69. package/web-app/dist/assets/{upload-DdKjc6-R.js → upload-B11VKMdc.js} +1 -1
  70. package/web-app/dist/assets/{usePolling-Dyqa_HZa.js → usePolling-Dn_yhEG9.js} +1 -1
  71. package/web-app/dist/assets/{user-D1NeTikp.js → user-DHXJr_nV.js} +1 -1
  72. package/web-app/dist/index.html +1 -1
package/SKILL.md CHANGED
@@ -3,7 +3,7 @@ name: loki-mode
3
3
  description: Runs an autonomous software factory that knows what it is supposed to deliver and proves it did, with a signed receipt. Use when the user says Loki Mode or asks to build, fix or verify software autonomously.
4
4
  ---
5
5
 
6
- # Loki Mode v11.86.0
6
+ # Loki Mode v11.88.0
7
7
 
8
8
  **Current entry points (Loki 10 engine):** `loki "<task>"`, `loki owner/repo#N` and `loki quick "<task>"` run the Loki 10 engine and end with a signed receipt (`loki verify`). `loki backlog owner/repo --all` runs many issues in parallel. Guide: `docs/v10/GUIDE.md`. The skill instructions below, and `loki start`, describe the previous bash loop. PRD-file starts (`loki start ./prd.md`) and the opencode provider still run on it until FC38-SWEEP ports them; the legacy-engine command and the LOKI_ENGINE switch remain removed. Prefer `loki owner/repo#N` for issues.
9
9
 
@@ -475,4 +475,4 @@ Implemented, planned and deprecated items, with the version each landed in: `ski
475
475
 
476
476
  ---
477
477
 
478
- **v11.86.0 | [Autonomi](https://www.autonomi.dev/) flagship product | core skill**
478
+ **v11.88.0 | [Autonomi](https://www.autonomi.dev/) flagship product | core skill**
package/VERSION CHANGED
@@ -1 +1 @@
1
- 11.86.0
1
+ 11.88.0
@@ -51,6 +51,26 @@
51
51
  "gates_passed": {"type": "int", "min": 0, "max": 1000},
52
52
  "gates_total": {"type": "int", "min": 0, "max": 1000},
53
53
  "gate_pass_rate": {"type": "number", "min": 0, "max": 1}
54
+ },
55
+ "run_started": {
56
+ "engine": {"type": "enum", "values": ["engine10"]}
57
+ },
58
+ "run_finished": {
59
+ "engine": {"type": "enum", "values": ["engine10"]},
60
+ "verdict": {"type": "enum", "values": ["VERIFIED", "PARTIAL", "ALREADY_SATISFIED", "SPEC_CONFLICT", "FAILED", "INTERRUPTED", "BLOCKED"]},
61
+ "duration_s": {"type": "int", "min": 0, "max": 31536000},
62
+ "fix_rounds": {"type": "int", "min": 0, "max": 1000},
63
+ "exit_code": {"type": "int", "min": 0, "max": 255},
64
+ "stage_s_intake": {"type": "int", "min": 0, "max": 31536000},
65
+ "stage_s_plan": {"type": "int", "min": 0, "max": 31536000},
66
+ "stage_s_wall": {"type": "int", "min": 0, "max": 31536000},
67
+ "stage_s_implement": {"type": "int", "min": 0, "max": 31536000},
68
+ "stage_s_verify": {"type": "int", "min": 0, "max": 31536000},
69
+ "stage_s_fix": {"type": "int", "min": 0, "max": 31536000},
70
+ "stage_s_commit": {"type": "int", "min": 0, "max": 31536000},
71
+ "stage_s_seal": {"type": "int", "min": 0, "max": 31536000},
72
+ "stage_s_pr": {"type": "int", "min": 0, "max": 31536000},
73
+ "stage_s_deep": {"type": "int", "min": 0, "max": 31536000}
54
74
  }
55
75
  }
56
76
  }
@@ -432,3 +432,36 @@ loki_emit_build_verified_enum() {
432
432
  loki_telemetry "build_verified" "headline=VERIFIED" "route=engine10"
433
433
  return 0
434
434
  }
435
+
436
+ # loki_emit_run_started: one run_started event for a default-route (engine10)
437
+ # run. Fixed engine value, no caller input. Same strict analytics gate as the
438
+ # other run-outcome events, so every existing opt-out wins.
439
+ loki_emit_run_started() {
440
+ _loki_analytics_enabled || return 0
441
+ loki_telemetry "run_started" "engine=engine10"
442
+ return 0
443
+ }
444
+
445
+ # loki_emit_run_finished <verdict> [key=value...]: one run_finished event.
446
+ # Enum and integer args only: a verdict outside the fixed list sends nothing,
447
+ # and a pair is forwarded only when its key is duration_s, fix_rounds, exit_code
448
+ # or stage_s_<engine stage> AND its value is a plain non-negative integer. Never
449
+ # a path, repo, branch, prompt or error text; the schema re-filters at send.
450
+ loki_emit_run_finished() {
451
+ _loki_analytics_enabled || return 0
452
+ local _verdict="${1:-}"; shift
453
+ case "$_verdict" in VERIFIED|PARTIAL|ALREADY_SATISFIED|SPEC_CONFLICT|FAILED|INTERRUPTED|BLOCKED) ;; *) return 0 ;; esac
454
+ local _args=("engine=engine10" "verdict=${_verdict}") _kv _k _v
455
+ for _kv in "$@"; do
456
+ _k="${_kv%%=*}"; _v="${_kv#*=}"
457
+ case "$_k" in
458
+ duration_s|fix_rounds|exit_code|stage_s_intake|stage_s_plan|stage_s_wall|stage_s_implement|stage_s_verify|stage_s_fix|stage_s_commit|stage_s_seal|stage_s_pr|stage_s_deep) ;;
459
+ *) continue ;;
460
+ esac
461
+ case "$_v" in ''|*[!0-9]*) continue ;; esac
462
+ [ "${#_v}" -le 9 ] || continue
463
+ _args+=("${_k}=${_v}")
464
+ done
465
+ loki_telemetry "run_finished" "${_args[@]}"
466
+ return 0
467
+ }
@@ -7,6 +7,6 @@ Modules:
7
7
  control: Session control helpers (status, atomic writes, origin check)
8
8
  """
9
9
 
10
- __version__ = "11.86.0"
10
+ __version__ = "11.88.0"
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.86.0. Do not edit by hand.
3
+ Generated from `loki-ts/src/cli/registry.ts` by `scripts/generate-stale-zero.sh` for v11.88.0. Do not edit by hand.
4
4
  Hidden and legacy-only commands are omitted; see `docs/CLI-INVENTORY.md` for the full inventory.
5
5
 
6
6
  | Command | Description |
@@ -2,7 +2,7 @@
2
2
 
3
3
  Loki Mode, by [Autonomi](https://www.autonomi.dev/), turns a spec or an issue into a verified pull request with a receipt you can check. This page covers installing it, a first run, and the options around it.
4
4
 
5
- **Version:** v11.86.0
5
+ **Version:** v11.88.0
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
 
package/docs/PRIVACY.md CHANGED
@@ -102,6 +102,8 @@ paths, keys, or repo names -- only anonymous diagnostics.
102
102
  | `first_start_attempted` | first `loki start`, strict opt-in (section 4) | `entry` (a known loki subcommand, else `other`) |
103
103
  | `first_run_blocked` | first run stopped, strict opt-in (section 5) | `blocker` (fixed enum, section 5) |
104
104
  | `seal_hook_decision` | the loki-seal Stop hook decides, strict opt-in (section 4) | `decision` (allow, block), `reason` (none, tests_failed, tests_weakened, no_tests, contract_unverified, released, error) |
105
+ | `run_started` | a default-route run ends, strict opt-in (section 4) | `engine` (engine10) |
106
+ | `run_finished` | a default-route run ends, strict opt-in (section 4) | `engine`, `verdict` (VERIFIED, PARTIAL, ALREADY_SATISFIED, SPEC_CONFLICT, FAILED, INTERRUPTED, BLOCKED), `duration_s`, `stage_s_<stage>` (seconds per engine stage), `fix_rounds` (count), `exit_code` (0 to 255) |
105
107
  | `build_verified` | a build finishes, strict opt-in (section 4) | see section 4 |
106
108
 
107
109
  The `install` event of older versions is now `installed`. The npm postinstall
@@ -113,6 +113,8 @@ For a manual push (`git push origin main`), run `bash scripts/local-ci.sh` first
113
113
  npm, then creates the tag and GitHub Release, builds/pushes Docker (including `:latest`), and updates the Homebrew tap. Do not manually
114
114
  create tags.
115
115
 
116
+ Run the full Bun suite (including `tests/engine10`) only through `cd loki-ts && bun run test` or `bun run test:engine10`: both go through `scripts/test-slot.sh`, which allows at most 2 full runs per machine (`LOKI_ENGINE10_SLOTS` overrides; slots live in `~/.cache/loki-test-slots`, override `LOKI_TEST_SLOT_DIR`). A third run prints "waiting for a test slot" and starts when one frees; it is never killed, and a slot whose holder PID is dead is reclaimed. Filtered runs (`bun run test <file>`) take no slot. Never start the suite with a bare `bun test` for a full run. Test: `tests/test-test-slot.sh`.
117
+
116
118
  Before pushing the release commit, run `bash scripts/release.sh --check-clean`: it exits 1 naming any tracked file (for example a stamped `loki-ts/dist/loki.js.map`) the commit left modified; `--bump-only` prints the "stage these files:" list.
117
119
 
118
120
  ### 5. Verify ALL Distribution Channels