loki-mode 10.5.35 → 10.6.6
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 +15 -308
- package/SKILL.md +2 -2
- package/VERSION +1 -1
- package/autonomy/loki +34 -1
- package/autonomy/telemetry.sh +1 -1
- package/bin/loki +5 -5
- package/completions/_loki +1 -0
- package/completions/loki.bash +2 -2
- package/dashboard/__init__.py +1 -1
- package/docs/INSTALLATION.md +6 -5
- package/docs/v10/BOARD.md +1 -0
- package/docs/v10/CONTROL-PLANE.md +102 -0
- package/docs/v10/DECISIONS.md +33 -0
- package/docs/v10/DEPS.md +16 -0
- package/docs/v10/LEGACY-REMOVAL.md +101 -0
- package/docs/v10/OPERATING-MODEL.md +1 -1
- package/docs/v10/PROGRESS.md +6 -0
- package/loki-ts/dist/loki.js +485 -464
- package/mcp/__init__.py +1 -1
- package/package.json +14 -3
- package/packages/control-plane/dist/server.js +5919 -0
- package/packages/control-plane/drizzle/0000_new_maelstrom.sql +49 -0
- package/packages/control-plane/drizzle/meta/0000_snapshot.json +343 -0
- package/packages/control-plane/drizzle/meta/_journal.json +13 -0
- package/packages/control-plane/package.json +20 -0
- package/packages/control-plane/src/db/migrate.ts +20 -0
- package/packages/control-plane/src/db/schema.ts +54 -0
- package/packages/control-plane/src/server/app.ts +63 -0
- package/packages/control-plane/src/server/ingest.ts +52 -0
- package/packages/control-plane/src/server/runs.ts +116 -0
- package/packages/control-plane/src/server/serve.ts +15 -0
- package/packages/control-plane/src/shipper/backfill.ts +40 -0
- package/packages/control-plane/src/shipper/ship.ts +95 -0
- package/packages/control-plane/ui/dist/assets/index-B6EiyukW.js +114 -0
- package/packages/control-plane/ui/dist/assets/index-BH3LtKcG.css +1 -0
- package/packages/control-plane/ui/dist/index.html +13 -0
- package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
- package/web-app/dist/assets/{AdminPage-DEZMrOU2.js → AdminPage-CH-bmw4l.js} +1 -1
- package/web-app/dist/assets/{Avatar-Dcn23Doz.js → Avatar-Bos-ky_x.js} +1 -1
- package/web-app/dist/assets/{Badge-CsV7PB4a.js → Badge-DNJyHg9Y.js} +1 -1
- package/web-app/dist/assets/{Button-C8Q1ckXg.js → Button-KqD3Tt-I.js} +1 -1
- package/web-app/dist/assets/{CockpitPage-YYX4FOT9.js → CockpitPage-l6oTsRaL.js} +1 -1
- package/web-app/dist/assets/{ComparePage-BrA6JGOn.js → ComparePage-DN6uxXko.js} +1 -1
- package/web-app/dist/assets/{ErrorBoundary-CA3xFm23.js → ErrorBoundary-CKQhnvU9.js} +1 -1
- package/web-app/dist/assets/{EvidenceReceiptPanel-C9151UPM.js → EvidenceReceiptPanel-CzSIqLmy.js} +1 -1
- package/web-app/dist/assets/{GitHubIssuesPanel-DBYUDlkc.js → GitHubIssuesPanel-YJUcDezn.js} +1 -1
- package/web-app/dist/assets/{GitHubPRsPanel-x-Ug3n6Q.js → GitHubPRsPanel-Bv7xFvJN.js} +1 -1
- package/web-app/dist/assets/{HomePage-DHPokDA2.js → HomePage-CJsxBbii.js} +2 -2
- package/web-app/dist/assets/{LoginPage-CB8h5M-E.js → LoginPage-D1V2Ag0s.js} +1 -1
- package/web-app/dist/assets/{MagicPage-B6Zg4DHE.js → MagicPage-BBVNMEr5.js} +1 -1
- package/web-app/dist/assets/{MetricsPage-JN6AkYit.js → MetricsPage-CtHM-IlA.js} +1 -1
- package/web-app/dist/assets/{NotFoundPage-dOUCtSdt.js → NotFoundPage-BBEEJLj5.js} +1 -1
- package/web-app/dist/assets/{ProjectPage-DfyhdFcg.js → ProjectPage-BVRJoEaQ.js} +3 -3
- package/web-app/dist/assets/{ProjectsPage-oHMOXioV.js → ProjectsPage-DqaA9rUa.js} +1 -1
- package/web-app/dist/assets/{SettingsPage-D4BGbBbt.js → SettingsPage-B_RQV_vF.js} +1 -1
- package/web-app/dist/assets/{ShowcasePage-CCkk1kPK.js → ShowcasePage-DqN-mrZ8.js} +1 -1
- package/web-app/dist/assets/{SystemSettingsPage-N2_JdIbZ.js → SystemSettingsPage-D-CvuL-K.js} +1 -1
- package/web-app/dist/assets/{TeamsPage-CEDSFaIj.js → TeamsPage-CzkkDcPj.js} +1 -1
- package/web-app/dist/assets/{TemplatesPage-DB9WjPjI.js → TemplatesPage-Bbchk7YQ.js} +1 -1
- package/web-app/dist/assets/{TerminalOutput-DK55nBdV.js → TerminalOutput-B32BAX--.js} +1 -1
- package/web-app/dist/assets/{activity-3EPj3lfE.js → activity-C9vnEmhG.js} +1 -1
- package/web-app/dist/assets/{bell-05FwE2g4.js → bell-XsIhkyjq.js} +1 -1
- package/web-app/dist/assets/{bot-DAtzuPmj.js → bot-CvQhqBws.js} +1 -1
- package/web-app/dist/assets/{check-DVZjl88M.js → check-HmG8WcD-.js} +1 -1
- package/web-app/dist/assets/{chevron-left-BaNjYaIh.js → chevron-left-C1KNgnbD.js} +1 -1
- package/web-app/dist/assets/{circle-alert-DlvI6QdR.js → circle-alert-DSmCvZju.js} +1 -1
- package/web-app/dist/assets/{clock-B0vWVEQz.js → clock-CPhE3RXd.js} +1 -1
- package/web-app/dist/assets/{cloud-Du5W0a4Q.js → cloud-29lwqocB.js} +1 -1
- package/web-app/dist/assets/{code-xml-CBNJDFTV.js → code-xml-4jZUzbPt.js} +1 -1
- package/web-app/dist/assets/{database-CCqFWW7j.js → database-H0Ct2r-8.js} +1 -1
- package/web-app/dist/assets/{dollar-sign-BiD3YO1u.js → dollar-sign-DsXkO0yT.js} +1 -1
- package/web-app/dist/assets/{file-code-corner-DCelfbWq.js → file-code-corner-BM8w_nvX.js} +1 -1
- package/web-app/dist/assets/{file-plus-B18v-CXD.js → file-plus-BWkYTJ4D.js} +1 -1
- package/web-app/dist/assets/{globe-DdaeBtBG.js → globe-FOFDl_8Z.js} +1 -1
- package/web-app/dist/assets/{hammer-BaxkIYAS.js → hammer-orm5gvky.js} +1 -1
- package/web-app/dist/assets/{index-BnsxsCEv.js → index-B6juCuPX.js} +3 -3
- package/web-app/dist/assets/{layers-jmRqcTgA.js → layers-DUQPkPAl.js} +1 -1
- package/web-app/dist/assets/{loader-circle-B5eWOgN-.js → loader-circle-Deq6bDar.js} +1 -1
- package/web-app/dist/assets/{lock-DCOObKS4.js → lock-CSzWTPRC.js} +1 -1
- package/web-app/dist/assets/{package-1nzEtHlZ.js → package-CmACgZuF.js} +1 -1
- package/web-app/dist/assets/{plus-B5cRKjki.js → plus-BjPW5v3A.js} +1 -1
- package/web-app/dist/assets/{refresh-cw-D769PBG8.js → refresh-cw-DhI1sHaj.js} +1 -1
- package/web-app/dist/assets/{rotate-ccw-CTHsioqQ.js → rotate-ccw-Byi2ouWB.js} +1 -1
- package/web-app/dist/assets/{scroll-text-DcwZwpH-.js → scroll-text-gq7bJ81H.js} +1 -1
- package/web-app/dist/assets/{server-DvIdr3uc.js → server-YbY5s1-X.js} +1 -1
- package/web-app/dist/assets/{shield-alert-HsBQ7gvc.js → shield-alert-DhKjtwZt.js} +1 -1
- package/web-app/dist/assets/{thumbs-up-Dwy2c2yM.js → thumbs-up-D2X5JR-5.js} +1 -1
- package/web-app/dist/assets/{trash-2-DhZM5W4J.js → trash-2-BHAmMxTq.js} +1 -1
- package/web-app/dist/assets/{trending-down-Bw3nDTCd.js → trending-down-C41kQa-Q.js} +1 -1
- package/web-app/dist/assets/{trending-up-CbZDPnht.js → trending-up-M-OK_9DC.js} +1 -1
- package/web-app/dist/assets/{upload-w6RYv_bT.js → upload-CarpPiGw.js} +1 -1
- package/web-app/dist/assets/{usePolling-9hkUOMWP.js → usePolling-rJ7rM7R0.js} +1 -1
- package/web-app/dist/assets/{user-Cct2X0U_.js → user-cBhWpZen.js} +1 -1
- package/web-app/dist/index.html +1 -1
package/README.md
CHANGED
|
@@ -24,7 +24,6 @@ Before a build counts as done, a review council selects reviewers from a special
|
|
|
24
24
|
- [loki doctor](#loki-doctor)
|
|
25
25
|
- [Modernization: status of loki modernize](#modernization-status-of-loki-modernize)
|
|
26
26
|
- [Providers](#providers)
|
|
27
|
-
- [Legacy engine reference](#legacy-engine-reference) (the engine `loki` runs by default today)
|
|
28
27
|
|
|
29
28
|
## Install
|
|
30
29
|
|
|
@@ -72,19 +71,21 @@ loki-seal is a Claude Code Stop hook that runs your repo's real test suite when
|
|
|
72
71
|
|
|
73
72
|
## Loki 10 engine
|
|
74
73
|
|
|
75
|
-
|
|
74
|
+
Loki Mode now runs the v10 engine for all commands. <!-- loki10-default -->
|
|
76
75
|
|
|
77
|
-
|
|
76
|
+
Guide, provider table and summary format: [docs/v10/GUIDE.md](docs/v10/GUIDE.md).
|
|
78
77
|
|
|
79
78
|
```
|
|
80
|
-
|
|
79
|
+
loki "fix the login redirect loop" --no-pr
|
|
81
80
|
```
|
|
82
81
|
|
|
83
82
|
```
|
|
84
|
-
|
|
83
|
+
loki owner/repo#123
|
|
85
84
|
```
|
|
86
85
|
|
|
87
|
-
The
|
|
86
|
+
The v10 engine accepts a quoted multi-word task, a GitHub, GitLab or Jira issue reference, `status`, `verify`, `dashboard`, and other subcommands. Flags (`loki-ts/src/engine10/cli.ts` USAGE): `--no-pr` builds and verifies without opening a pull request, `--deep` requests the deep verify pass and a longer implement budget, `--provider <name>` picks the coding provider (`--json` and `--verbose` are also parsed by the supervisor, see [Quiet output](#quiet-output)). The engine needs Bun; without it the command exits 1 with a message and installation instructions.
|
|
87
|
+
|
|
88
|
+
Migration note: Legacy engine removed in 10.6.0; use `loki "<task>"`, `loki owner/repo#N`, or `loki backlog` instead.
|
|
88
89
|
|
|
89
90
|
### The state machine
|
|
90
91
|
|
|
@@ -148,10 +149,10 @@ Every sealed v10 run writes a receipt to `.loki/runs/<run-id>/receipt.json`. `re
|
|
|
148
149
|
Receipts are signed by default. On the first run Loki generates an Ed25519 key at `~/.loki/keys/receipt-ed25519.pem` (mode 0600, directory 0700), or you supply your own with `LOKI_RECEIPT_SIGNING_KEY` or `LOKI_RECEIPT_SIGNING_KEY_FILE`. See [docs/SIGNED-RECEIPTS.md](docs/SIGNED-RECEIPTS.md).
|
|
149
150
|
|
|
150
151
|
```
|
|
151
|
-
|
|
152
|
+
loki verify
|
|
152
153
|
```
|
|
153
154
|
|
|
154
|
-
`loki verify [run-id]` (latest run by default) re-hashes the receipt, checks the signature against your local key (and retired keys listed in `LOKI_RECEIPT_RETIRED_PUBKEYS`), and checks the receipt against the event log. Verdicts and exit codes
|
|
155
|
+
`loki verify [run-id]` (latest run by default) re-hashes the receipt, checks the signature against your local key (and retired keys listed in `LOKI_RECEIPT_RETIRED_PUBKEYS`), and checks the receipt against the event log. Verdicts and exit codes (`loki-ts/src/engine10/verify_cmd.ts`):
|
|
155
156
|
|
|
156
157
|
| Verdict | Exit | Meaning |
|
|
157
158
|
|---------|------|---------|
|
|
@@ -163,8 +164,6 @@ LOKI_ENGINE=v10 loki verify
|
|
|
163
164
|
|
|
164
165
|
A verified receipt is bound to the run's event log, so a receipt lifted out of its run, or a log edited after sealing, does not verify. Signing proves the receipt came from the key holder; it does not prove the generated code is bug-free. A receipt only claims what its checks ran, and states what they did not.
|
|
165
166
|
|
|
166
|
-
On the legacy engine, receipts live under `.loki/proofs/<run_id>/` and are inspected with `loki proof list`, `loki proof show <id>` and `loki proof verify <id>` (exit 0 clean, 1 on tamper or drift, 2 could not check).
|
|
167
|
-
|
|
168
167
|
## Quiet output
|
|
169
168
|
|
|
170
169
|
The v10 run is quiet by default: no stage chatter, only the final summary. `--verbose` tails the event stream live (one line per finished stage and a heartbeat with elapsed time and the running diff size). `--json` prints one JSON object (`ok`, `outcome`, `stop`, `run_id`, `receipt_sha256`) instead of text.
|
|
@@ -213,10 +212,7 @@ Exit 0 when every required check passes; optional warnings (an absent provider C
|
|
|
213
212
|
|
|
214
213
|
## Modernization: status of loki modernize
|
|
215
214
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
- `loki modernize heal <path>` and `loki modernize migrate <path>` are the shipped legacy commands (agent-driven phases). `loki modernize heal <path> --assess` is read-only. See [Already have a codebase](#already-have-a-codebase-start-read-only).
|
|
219
|
-
- `loki modernize <repo> --to <target>` is the new v10 command with behavior-captured equivalence. It is routed to the v10 engine whatever `LOKI_ENGINE` says, but it is not finished: only the `--dry-run` estimate works (inventory, dependency graph, unit clustering, cost, time and risk estimate, no model spend). A real run stops after the estimate and prints `modernize: oracle capture and execution are not built yet; use --dry-run`. Targets `python3` and `java21` exist; the Java dependency graph is not wired in yet. Nothing in v10 modernize claims a unit is proven equivalent today. Design: [docs/v10/MODERNIZE.md](docs/v10/MODERNIZE.md), user summary: [docs/v10/GUIDE-MODERNIZE.md](docs/v10/GUIDE-MODERNIZE.md).
|
|
215
|
+
Migration: `loki modernize heal <repo> --assess` was a legacy command for read-only analysis. The v10 path `loki modernize <repo> --to <target>` is not yet finished: only `--dry-run` works (inventory, dependency graph, unit clustering, cost, time and risk estimate). A real run stops after the estimate and prints `modernize: oracle capture and execution are not built yet; use --dry-run`. Targets `python3` and `java21` exist; the Java dependency graph is not wired in yet. Design: [docs/v10/MODERNIZE.md](docs/v10/MODERNIZE.md), user summary: [docs/v10/GUIDE-MODERNIZE.md](docs/v10/GUIDE-MODERNIZE.md).
|
|
220
216
|
|
|
221
217
|
## Providers
|
|
222
218
|
|
|
@@ -234,98 +230,6 @@ Claude Code is the provider Loki is built for and the one that is run end to end
|
|
|
234
230
|
|
|
235
231
|
---
|
|
236
232
|
|
|
237
|
-
# Legacy engine reference
|
|
238
|
-
|
|
239
|
-
Everything below describes the legacy engine, which `loki` still runs by default (and which stays reachable when Loki 10 is made the default). The long-form commands, `loki start`, `loki quick`, `loki quickstart` and `loki proof` all live here.
|
|
240
|
-
|
|
241
|
-
## Use it
|
|
242
|
-
|
|
243
|
-
```bash
|
|
244
|
-
loki quickstart # guided first build: asks a few questions, quotes cost, builds
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
That is the whole happy path. It asks for a one-line idea, picks a template,
|
|
248
|
-
shows the real cost and time estimate before spending anything, then builds.
|
|
249
|
-
Press Enter through every step and you get a sample Todo app.
|
|
250
|
-
|
|
251
|
-
One command, no prompts (CI, scripts, containers, any shell without a terminal):
|
|
252
|
-
|
|
253
|
-
```bash
|
|
254
|
-
loki quickstart "a todo app with user accounts" --yes
|
|
255
|
-
```
|
|
256
|
-
|
|
257
|
-
Both halves are required with no terminal: an idea (or a path to a PRD file)
|
|
258
|
-
and an explicit `--yes`. Given both, Loki picks the top-ranked template
|
|
259
|
-
automatically, prints the same honest cost and time estimate, and starts the
|
|
260
|
-
build without asking anything. Missing either half exits 2 with the
|
|
261
|
-
needs-a-terminal message and writes nothing, so an ambient `LOKI_AUTO_CONFIRM`
|
|
262
|
-
or a stray argument in CI can never start a paid build on its own. Existing
|
|
263
|
-
files are never overwritten: if `prd.md` is present the PRD lands at
|
|
264
|
-
`prd-quickstart.md`, then numbered suffixes as needed.
|
|
265
|
-
|
|
266
|
-
Choose an exact shipped starter when the top-ranked match is not the one you
|
|
267
|
-
want:
|
|
268
|
-
|
|
269
|
-
```bash
|
|
270
|
-
loki quickstart --list-templates
|
|
271
|
-
loki quickstart --list-templates --json # schema-v1 automation output
|
|
272
|
-
loki quickstart "an internal reporting workspace" --template dashboard --yes
|
|
273
|
-
```
|
|
274
|
-
|
|
275
|
-
Template discovery works without a terminal or provider and lists every shipped
|
|
276
|
-
starter's stable name and purpose in catalog order. It returns before estimation,
|
|
277
|
-
consent, PRD writes, or build execution. Positional input and execution/preview
|
|
278
|
-
flags are intentionally incompatible; `--json` is the only optional modifier.
|
|
279
|
-
|
|
280
|
-
`--template` accepts an exact template name for idea inputs and works the same
|
|
281
|
-
way with interactive use or `--dry-run` (including JSON preview). Unknown
|
|
282
|
-
templates, duplicate flags, and combinations with a PRD path refuse before
|
|
283
|
-
provider discovery, estimation, writes, or build execution.
|
|
284
|
-
|
|
285
|
-
Preview the same deterministic template choice and estimator-backed plan with
|
|
286
|
-
zero writes or execution:
|
|
287
|
-
|
|
288
|
-
```bash
|
|
289
|
-
loki quickstart "a todo app with user accounts" --dry-run
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
Preview requires an idea or readable PRD path, works without a terminal or AI
|
|
293
|
-
provider, and exits before creating a PRD or starting a build. `--dry-run` and
|
|
294
|
-
`--yes` are mutually exclusive so execution intent is never ambiguous.
|
|
295
|
-
|
|
296
|
-
For scripts and local dashboards, add `--json` to receive one versioned JSON
|
|
297
|
-
object instead of terminal text:
|
|
298
|
-
|
|
299
|
-
```bash
|
|
300
|
-
loki quickstart "a todo app with user accounts" --dry-run --json > preview.json
|
|
301
|
-
loki quickstart --verify-preview preview.json --json
|
|
302
|
-
loki quickstart --from-preview preview.json --yes
|
|
303
|
-
```
|
|
304
|
-
|
|
305
|
-
The object contains the input kind, deterministic selected template (or `null`
|
|
306
|
-
for an existing PRD), the exact estimator response under `plan`, and a bounded
|
|
307
|
-
continuation containing the exact idea/template or the PRD path and SHA-256.
|
|
308
|
-
`--verify-preview` validates the same bounded duplicate-key-rejecting schema and
|
|
309
|
-
requires either a currently shipped idea template or the unchanged digest-bound
|
|
310
|
-
PRD, while emitting no idea or PRD path. It accepts a file or piped stdin and
|
|
311
|
-
returns before provider discovery, estimation, writes, or build execution.
|
|
312
|
-
`--from-preview` requires explicit argv `--yes`, rejects malformed, conflicting,
|
|
313
|
-
symlinked, or changed inputs before provider and build boundaries, then uses the
|
|
314
|
-
existing no-clobber quickstart path. The saved plan is evidence rather than
|
|
315
|
-
execution authority: Loki recomputes and displays the current estimate before
|
|
316
|
-
starting. `--json` requires `--dry-run`; invalid input or estimator failure
|
|
317
|
-
writes no JSON, and preview still exits before provider discovery, file writes,
|
|
318
|
-
or build execution.
|
|
319
|
-
|
|
320
|
-
Or go straight at it:
|
|
321
|
-
|
|
322
|
-
```bash
|
|
323
|
-
loki quick "build a landing page with a signup form" # one-shot task
|
|
324
|
-
loki start prd.md # build from a spec you wrote
|
|
325
|
-
loki modernize heal ./your-repo --assess # existing codebase, read-only
|
|
326
|
-
```
|
|
327
|
-
|
|
328
|
-
|
|
329
233
|
## Try it first, without installing
|
|
330
234
|
|
|
331
235
|
```bash
|
|
@@ -346,121 +250,7 @@ Headline: VERIFIED WITH GAPS
|
|
|
346
250
|
| Cost | $10.3218 |
|
|
347
251
|
```
|
|
348
252
|
|
|
349
|
-
**"WITH GAPS" is the point.** Build was not run, security has findings, and the
|
|
350
|
-
receipt says so on its own front page. Recompute the diff hash yourself and
|
|
351
|
-
check it matches -- you are not asked to trust the agent's self-report.
|
|
352
|
-
|
|
353
|
-
## How the legacy engine works
|
|
354
|
-
|
|
355
|
-
Drop a spec: a PRD, GitHub issue, OpenAPI/JSON/YAML, or a one-line brief. Loki Mode classifies complexity (`run.sh:detect_complexity()`), selects reviewers from a specialist pool (`agents/types.json` ships the role definitions; 10 are keyword-scored by the review selector at `run.sh:FOCUS_KEYWORDS`, alongside the mandatory reviewers, and the rest are role descriptions in `references/agents.md` that the orchestrator adopts per phase rather than separate processes), with a blind review council and optional git-worktree streams on Claude Code, sequential on most other providers, and runs autonomous RARV cycles (Reason, Act, Reflect, Verify; see `run.sh:run_autonomous()`) with 8 quality gates (see `skills/quality-gates.md`). Code is not "done" until it passes automated verification. Output is a Git repo with source, tests, configs and audit logs.
|
|
356
|
-
|
|
357
|
-
**Why verified completion matters.** Self-reported completion is the failure users actually hit: the agent says it is done and the work is not. Loki treats "done" as a claim to be checked. [docs/EVALUATING.md](docs/EVALUATING.md) puts a runnable command next to every claim we make, and states plainly what we do not have (no enterprise case studies, no independent benchmark placement, and generation is not air-gapped). `bash tests/test-competitor-verify-surface.sh` reruns our check of which local agent CLIs expose a command that verifies their own output.
|
|
358
|
-
|
|
359
|
-
## Already have a codebase? Start read-only.
|
|
360
|
-
|
|
361
|
-
Most agents are built to create new apps. The harder, more valuable problem is
|
|
362
|
-
the ten-year-old repo that pays the bills. Loki works on both, and on an
|
|
363
|
-
existing codebase it starts by **changing nothing**:
|
|
364
|
-
|
|
365
|
-
```bash
|
|
366
|
-
loki modernize heal ./your-repo --assess # read-only. no writes, no commits.
|
|
367
|
-
loki modernize heal ./your-repo --assess --json # same, machine-readable
|
|
368
|
-
```
|
|
369
|
-
|
|
370
|
-
You get a modernization readiness report: language mix, a 4-level maturity
|
|
371
|
-
rating, technical-debt signals (test coverage, TODO density, oversized files,
|
|
372
|
-
dependency staleness), and a **ranked list of where to start** -- ordered by
|
|
373
|
-
blast radius, so the first change is the one least likely to break something.
|
|
374
|
-
|
|
375
|
-
Then, if you want it to act:
|
|
376
|
-
|
|
377
|
-
```bash
|
|
378
|
-
loki modernize heal ./your-repo --strict # block ALL behavioral change without approval
|
|
379
|
-
loki modernize heal ./your-repo --phase archaeology # extract knowledge only
|
|
380
|
-
loki modernize heal ./your-repo --compliance healthcare # preset flag: healthcare, fintech or government (not a certification)
|
|
381
|
-
```
|
|
382
|
-
|
|
383
|
-
The healing pipeline runs in phases -- archaeology, stabilize, isolate,
|
|
384
|
-
modernize, validate -- and the validate phase checks **behavioral equivalence
|
|
385
|
-
against the pre-change baseline**, not just that the tests are green. Friction
|
|
386
|
-
points (the weird code that exists for a reason nobody remembers) are cataloged
|
|
387
|
-
before anything touches them, because in a legacy system the strange code is
|
|
388
|
-
usually load-bearing.
|
|
389
|
-
|
|
390
|
-
## The Evidence Receipt: don't trust the agent, check it
|
|
391
|
-
|
|
392
|
-
Every coding agent tells you it finished. Loki hands you something you can
|
|
393
|
-
check yourself.
|
|
394
|
-
|
|
395
|
-
**We are not the only tool that checks its own work, and you should be
|
|
396
|
-
suspicious of anyone who claims to be.** Lovable runs a security scan on every
|
|
397
|
-
publish and can block the publish outright. Claude Code's review has a step that
|
|
398
|
-
checks findings against actual code behavior. Replit says its agent tests its
|
|
399
|
-
own work.
|
|
400
|
-
|
|
401
|
-
The difference is what you are left holding. Their output lives in their
|
|
402
|
-
dashboard: a findings count in a dialog, a check run that by design never blocks
|
|
403
|
-
a merge. Ours is a **file**. It is bound to a specific diff by `diff_sha256`, it
|
|
404
|
-
records what was NOT proven as prominently as what was, and someone who has
|
|
405
|
-
never installed Loki can re-verify it from the repository alone. Commit it,
|
|
406
|
-
attach it to the PR, hand it to an auditor.
|
|
407
|
-
|
|
408
|
-
Portable, diff-bound, and honest about its gaps -- that is the claim, and it is
|
|
409
|
-
the one worth checking.
|
|
410
|
-
|
|
411
|
-
Each run writes a receipt to `.loki/proofs/<run_id>/` that separates
|
|
412
|
-
**deterministic FACTS** (the git diff with base and head SHAs plus a
|
|
413
|
-
`diff_sha256`, the test command and its exit code, the build command and its
|
|
414
|
-
exit code, each gate verdict) from **AI ASSESSMENTS** (the council verdict,
|
|
415
|
-
labeled as judgment, never as proof). The headline is computed from the facts
|
|
416
|
-
alone:
|
|
417
|
-
|
|
418
|
-
| Headline | Means |
|
|
419
|
-
|---|---|
|
|
420
|
-
| VERIFIED | tests ran a real command and exited 0, diff non-empty, nothing skipped |
|
|
421
|
-
| VERIFIED WITH GAPS | each gap listed by name |
|
|
422
|
-
| NOT VERIFIED | a check ran and failed |
|
|
423
|
-
|
|
424
|
-
```bash
|
|
425
|
-
loki proof list # every receipt from this project
|
|
426
|
-
loki proof show <id> # the facts, the assessments, and the headline
|
|
427
|
-
loki proof verify <id> # re-hash the receipt and re-derive the diff
|
|
428
|
-
```
|
|
429
|
-
|
|
430
|
-
`loki proof verify` exits 0 clean, 1 on tamper or drift, 2 when it could not check
|
|
431
|
-
(full table: [docs/exit-codes.md](docs/exit-codes.md)). Receipts are attached
|
|
432
|
-
to pull requests automatically (`LOKI_PROVEN_PR=0` to opt out), so a reviewer
|
|
433
|
-
sees the evidence next to the code.
|
|
434
|
-
|
|
435
|
-
**What the receipt does NOT claim.** On the unsigned path the generator is
|
|
436
|
-
trusted: someone who rewrites both the facts and the headline into a mutually
|
|
437
|
-
consistent lie and recomputes the hash will still pass verification. That is
|
|
438
|
-
defense-in-depth, not non-forgeability, and neutral non-forgeability needs the
|
|
439
|
-
signed record. We tested for exactly this and locked the limitation into the
|
|
440
|
-
suite (`tests/test-proof-forgery-defense.sh`), and in v7.111.0 we removed our
|
|
441
|
-
own earlier "non-forgeable" claim once we found it was false on that path. An
|
|
442
|
-
honest boundary you can verify beats a marketing claim you cannot.
|
|
443
|
-
|
|
444
|
-
To close that gap, receipts are signed automatically with an Ed25519 key
|
|
445
|
-
generated on first run (or your own via `LOKI_RECEIPT_SIGNING_KEY_FILE`; this needs the
|
|
446
|
-
Python `cryptography` package, otherwise the receipt stays unsigned). See [docs/SIGNED-RECEIPTS.md](docs/SIGNED-RECEIPTS.md).
|
|
447
|
-
|
|
448
|
-
## What the legacy engine guarantees
|
|
449
|
-
|
|
450
|
-
- **Verified completion** - the evidence gate (`skills/quality-gates.md`) refuses a "done" claim on an empty git diff against the run-start commit, blocks completion when tests run red, blocks when a serveable app is confirmed unhealthy (opt out `LOKI_EVIDENCE_BOOT_GATE=0`) or a credential is detected in the changed files (opt out `LOKI_EVIDENCE_SECRET_GATE=0`).
|
|
451
|
-
- **An honest checklist verifier** - each completion checklist item is checked deterministically before the completion council accepts "done". A check that cannot be established is reported as inconclusive (pending), never as a false pass or a false failure. `rc == 0` alone is not a pass: a test check goes green only on a real "N passed" signal from the runner.
|
|
452
|
-
- **Quality gates and review** - 8 quality gates (`skills/quality-gates.md`), blind 3-reviewer code review (`run.sh:run_code_review()`), anti-sycophancy checks.
|
|
453
|
-
- **Standalone verification: `loki verify`** - runs the deterministic gates (build, tests, static analysis, secret scan, dependency audit) against any branch or PR diff, including code written by other agents or humans. Exit codes 0 VERIFIED, 1 CONCERNS, 2 BLOCKED, 3 verifier error; machine-readable evidence at `.loki/verify/evidence.json`. Inconclusive evidence is reported as CONCERNS; see [docs/exit-codes.md](docs/exit-codes.md) for the known gaps, including `--fast`, which can exit 0 when nothing was scanned.
|
|
454
|
-
- **Living spec and pre-build interrogation** - `loki spec` locks a spec and detects drift; `loki grill` runs a Devil's-Advocate interrogation of the spec before you build.
|
|
455
|
-
- **Confidence is not evidence** - when the agent's self-reported confidence spikes to near-certainty, Loki forces an extra verification pass (opt out `LOKI_CONFIDENCE_SPIKE=0`).
|
|
456
|
-
- **Stops paying for failures that cannot succeed** - a positively identified permanent failure (bad credentials, unknown model, exhausted quota) exits instead of burning the retry budget; an unrecognized error still retries (opt out `LOKI_SMART_RETRY=0`).
|
|
457
|
-
- **Cross-project memory** - episodic, semantic and procedural memory with optional vector search (`memory/engine.py`).
|
|
458
|
-
- **Guided first build** - `loki quickstart` quotes the real cost and time estimate before anything is spent. `loki preview` prints the running app URL.
|
|
459
|
-
- **MCP server** - 36 tools plus 3 resources and 2 prompts (`mcp/server.py`, magic tools from `mcp/magic_tools.py`, the managed-memory tool from `mcp/managed_tools.py`). Of the 36, 35 are always available; `loki_memory_redact` only succeeds when `LOKI_MANAGED_AGENTS=true` and `LOKI_MANAGED_MEMORY=true`. Launch with `loki mcp`.
|
|
460
|
-
- **Legacy system healing** - `loki modernize heal` runs archaeology, stabilize, isolate, modernize and validate phases (`skills/healing.md`).
|
|
461
|
-
- **Self-hosted and source-available (BUSL-1.1)** - your keys, your infrastructure. Free for personal, internal and academic use.
|
|
462
|
-
|
|
463
|
-
---
|
|
253
|
+
**"WITH GAPS" is the point.** Build was not run, security has findings, and the receipt says so on its own front page. Recompute the diff hash yourself and check it matches.
|
|
464
254
|
|
|
465
255
|
## Loki does not lie about "done"
|
|
466
256
|
|
|
@@ -493,81 +283,6 @@ This is honesty-of-done, not a claim of perfection. The receipt proves the
|
|
|
493
283
|
completion claim is backed by deterministic evidence and is independently
|
|
494
284
|
re-checkable; it does not claim the generated code is bug-free.
|
|
495
285
|
|
|
496
|
-
<details>
|
|
497
|
-
<summary><strong>Verify a receipt yourself -- <code>loki proof</code> commands, tamper/drift checks, proven PRs (advanced)</strong></summary>
|
|
498
|
-
|
|
499
|
-
### Verify it yourself
|
|
500
|
-
|
|
501
|
-
Receipts are written to `.loki/proofs/<run_id>/` automatically at run completion
|
|
502
|
-
(opt out with `LOKI_PROOF=0`). Inspect and re-check them with `loki proof`
|
|
503
|
-
(aliased as `loki receipt`):
|
|
504
|
-
|
|
505
|
-
```bash
|
|
506
|
-
loki proof list # every receipt: run id, time, council verdict, cost, files
|
|
507
|
-
loki proof show <id> # the full proof.json (facts, assessments, honesty)
|
|
508
|
-
loki proof verify <id> # re-check the receipt against the repo (exit 0 clean, 1 tamper/drift, 2 could not check)
|
|
509
|
-
```
|
|
510
|
-
|
|
511
|
-
`loki proof verify` does two independent checks and prints the result as JSON:
|
|
512
|
-
|
|
513
|
-
- **Tamper check** -- recomputes the receipt's integrity hash and compares it to
|
|
514
|
-
the recorded one. If anyone edited the receipt after it was written, `hash_ok`
|
|
515
|
-
is `false`.
|
|
516
|
-
- **Drift check** -- re-runs the diff from the recorded base SHA against the
|
|
517
|
-
current repo and compares the file/insertion/deletion counts and `diff_sha256`
|
|
518
|
-
to what the receipt recorded. If the repo no longer matches, `diff_drift` is
|
|
519
|
-
`true`.
|
|
520
|
-
|
|
521
|
-
A clean receipt prints `"ok": true` and exits 0. A tampered or drifted receipt
|
|
522
|
-
exits 1. When a check cannot run (for example a receipt with no recorded base
|
|
523
|
-
SHA), the verifier reports it as unverifiable rather than passing it silently.
|
|
524
|
-
|
|
525
|
-
```json
|
|
526
|
-
{
|
|
527
|
-
"hash_ok": true,
|
|
528
|
-
"diff_drift": false,
|
|
529
|
-
"gpg_ok": "n/a",
|
|
530
|
-
"degraded": [],
|
|
531
|
-
"reason": "",
|
|
532
|
-
"ok": true
|
|
533
|
-
}
|
|
534
|
-
```
|
|
535
|
-
|
|
536
|
-
You can share a receipt as a self-contained HTML page (`loki proof open <id>`),
|
|
537
|
-
or publish it as a GitHub Gist with `loki proof share <id>` (opt-in; the page is
|
|
538
|
-
redacted before it leaves your machine). Receipts carry an Ed25519
|
|
539
|
-
attestation (`LOKI_RECEIPT_SIGNING_KEY_FILE` to use your own key).
|
|
540
|
-
|
|
541
|
-
### Proven PR
|
|
542
|
-
|
|
543
|
-
When Loki opens a pull request, the PR body includes the Evidence Receipt
|
|
544
|
-
summary, so a reviewer does not have to take the agent on faith. It shows the
|
|
545
|
-
honest verdict (VERIFIED / VERIFIED WITH GAPS / NOT VERIFIED), the key facts
|
|
546
|
-
(diff hash, tests, secure-gate, cost), and a "verify this yourself" line:
|
|
547
|
-
`loki proof verify <id>` against the recorded base SHA. A green claim appears
|
|
548
|
-
only when the receipt's own headline is VERIFIED. This is on by default whenever
|
|
549
|
-
Loki opens or advises a PR; opt out with `LOKI_PROVEN_PR=0`.
|
|
550
|
-
|
|
551
|
-
For a review-before-publish workflow, preparation and GitHub mutation are two
|
|
552
|
-
explicit steps:
|
|
553
|
-
|
|
554
|
-
```bash
|
|
555
|
-
loki start owner/repo#42 --prepare-pr # builds and writes exact title/body locally
|
|
556
|
-
loki ship --publish # pushes that issue branch and opens the PR
|
|
557
|
-
```
|
|
558
|
-
|
|
559
|
-
The second command consumes `.loki/state/pr-title.txt` and
|
|
560
|
-
`.loki/state/pr-body.md` byte-for-byte. Plain `loki ship`, previews, and default
|
|
561
|
-
start paths remain non-publishing. A failed PR creation preserves both files and
|
|
562
|
-
prints the exact remote-branch rollback command.
|
|
563
|
-
|
|
564
|
-
An optional advisory status check (`loki: verified-completion`) maps the verdict
|
|
565
|
-
to a GitHub check-run. It is opt-in (`LOKI_PROVEN_PR_CHECK=1`) and can never block
|
|
566
|
-
a merge on its own. To make verified-completion blocking, add it as a required
|
|
567
|
-
status check in your repository's branch-protection settings.
|
|
568
|
-
|
|
569
|
-
</details>
|
|
570
|
-
|
|
571
286
|
<details>
|
|
572
287
|
<summary><b>Setup details: providers, other models, what loki doctor checks</b></summary>
|
|
573
288
|
|
|
@@ -701,11 +416,11 @@ See the [Installation Guide](docs/INSTALLATION.md) for the long form.
|
|
|
701
416
|
<details>
|
|
702
417
|
<summary><strong>Runtime architecture: dual Bash/Bun runtime and the rollback flag</strong></summary>
|
|
703
418
|
|
|
704
|
-
Loki Mode runs
|
|
419
|
+
Loki Mode v10 runs on the Bun runtime by default, which hosts the autonomous build engine. Bash is used for system integration where needed.
|
|
705
420
|
|
|
706
|
-
- Commands
|
|
707
|
-
- If `bun` is not on `PATH`,
|
|
708
|
-
-
|
|
421
|
+
- Commands that require Bun: `version`, `--version`, `-v`, `status`, `stats`, `doctor`, `provider`, `memory`, `rollback`, `kpis`, `trust`, `wiki`, `crash`, `internal`, and `report kpis`.
|
|
422
|
+
- If `bun` is not on `PATH`, commands exit 1 with installation instructions.
|
|
423
|
+
- For troubleshooting, force commands onto alternate paths with environment variables; see `loki doctor` for available options.
|
|
709
424
|
|
|
710
425
|
See [UPGRADING.md](UPGRADING.md) and [ADR-001: Runtime Migration](docs/architecture/ADR-001-runtime-migration.md).
|
|
711
426
|
|
|
@@ -736,14 +451,6 @@ All formats land in the same RARV pipeline and pass the same 8 quality gates (`s
|
|
|
736
451
|
|
|
737
452
|
---
|
|
738
453
|
|
|
739
|
-
## Internal architecture (legacy engine)
|
|
740
|
-
|
|
741
|
-
- **RARV cycle** - every iteration: Reason (read state), Act (execute, commit), Reflect (update context), Verify (run tests, check spec). Failures trigger self-correction. [Core Workflow](references/core-workflow.md)
|
|
742
|
-
- **8 quality gates** - static analysis, test suite (pass/fail), blind 3-reviewer code review with severity blocking, anti-sycophancy Devil's Advocate, mock-integrity detection, test-mutation detection, documentation coverage, and Magic Modules debate. Backward compatibility is a conditional healing-mode auditor, not one of the 8. [Quality Gates](skills/quality-gates.md)
|
|
743
|
-
- **Memory** - episodic (interaction traces), semantic (generalized patterns), procedural (learned skills). Vector search optional. [Memory Architecture](references/memory-system.md)
|
|
744
|
-
- **Dashboard** - real-time monitoring, task queue, WebSocket streaming and a Live App Preview. Starts at `localhost:57374`. [Dashboard Guide](docs/dashboard-guide.md)
|
|
745
|
-
- **Enterprise layer** - TLS, OIDC bearer-token validation (the foundation for SSO; browser SAML login is roadmap), scoped RBAC, OTEL tracing and audit logs, activated via env vars. See [Enterprise Identity Roadmap](docs/ENTERPRISE-IDENTITY-ROADMAP.md) and [Enterprise Guide](docs/enterprise/architecture.md).
|
|
746
|
-
|
|
747
454
|
For how Loki compares with other tools, see [docs/COMPARISON.md](docs/COMPARISON.md) and [docs/EVALUATING.md](docs/EVALUATING.md).
|
|
748
455
|
|
|
749
456
|
---
|
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 v10.
|
|
6
|
+
# Loki Mode v10.6.6
|
|
7
7
|
|
|
8
8
|
**You are an autonomous agent. You make decisions. You do not ask questions. You do not stop.**
|
|
9
9
|
|
|
@@ -470,4 +470,4 @@ See `CHANGELOG.md` entries [7.5.7], [7.5.8], [7.5.13] for the per-fix list and r
|
|
|
470
470
|
|
|
471
471
|
---
|
|
472
472
|
|
|
473
|
-
**v10.
|
|
473
|
+
**v10.6.6 | [Autonomi](https://www.autonomi.dev/) flagship product | ~410 lines core**
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
10.
|
|
1
|
+
10.6.6
|
package/autonomy/loki
CHANGED
|
@@ -1782,6 +1782,7 @@ show_help() {
|
|
|
1782
1782
|
echo " syslog telemetry template test tour trigger trust trust-metrics"
|
|
1783
1783
|
echo " ultracode update verify version voice watch watchdog web welcome why"
|
|
1784
1784
|
echo " wiki worktree (wt)"
|
|
1785
|
+
echo " control (preview, needs LOKI_CONTROL=1)"
|
|
1785
1786
|
echo ""
|
|
1786
1787
|
echo "Any command: loki <command> --help"
|
|
1787
1788
|
echo ""
|
|
@@ -21581,7 +21582,7 @@ status stop pause resume monitor watch watchdog dashboard web open preview share
|
|
|
21581
21582
|
memory context ctx checkpoint state report kpis cost metrics stats logs otel \
|
|
21582
21583
|
syslog telemetry crash config provider doctor setup-skill onboard quickstart \
|
|
21583
21584
|
welcome update self-update rollback failover cluster enterprise remote deploy docker \
|
|
21584
|
-
sandbox api mcp magic compound assets export wiki docs explain why audit compliance \
|
|
21585
|
+
sandbox api mcp magic compound assets export wiki control docs explain why audit compliance \
|
|
21585
21586
|
secrets analyze optimize bench ci reset cleanup notify trigger voice sentrux \
|
|
21586
21587
|
worktree wt projects cp rc trust-metrics serve agent code self_update test help version"
|
|
21587
21588
|
local best
|
|
@@ -22072,6 +22073,9 @@ main() {
|
|
|
22072
22073
|
wiki)
|
|
22073
22074
|
cmd_wiki "$@"
|
|
22074
22075
|
;;
|
|
22076
|
+
control)
|
|
22077
|
+
cmd_control "$@"
|
|
22078
|
+
;;
|
|
22075
22079
|
magic)
|
|
22076
22080
|
cmd_magic "$@"
|
|
22077
22081
|
;;
|
|
@@ -33803,6 +33807,35 @@ cmd_outcomes() {
|
|
|
33803
33807
|
LOKI_DIR="${LOKI_DIR:-.loki}" python3 "$lib" "$@"
|
|
33804
33808
|
}
|
|
33805
33809
|
|
|
33810
|
+
# loki control -- D56 control plane (preview). The live route is the Bun CLI
|
|
33811
|
+
# (loki-ts/src/commands/control.ts); this is the LOKI_LEGACY_BASH / no-shim
|
|
33812
|
+
# fallback. It keeps the gate and help in bash and hands the work to Bun.
|
|
33813
|
+
cmd_control() {
|
|
33814
|
+
local sub="${1:-}"
|
|
33815
|
+
case "$sub" in
|
|
33816
|
+
""|-h|--help|help)
|
|
33817
|
+
echo "Usage: loki control <command> [options] (preview, requires LOKI_CONTROL=1)"
|
|
33818
|
+
echo ""
|
|
33819
|
+
echo "Commands:"
|
|
33820
|
+
echo " serve [--port N] [--db PATH] Run the control plane + UI on 127.0.0.1"
|
|
33821
|
+
echo " backfill [DIR] Ship DIR/.loki/runs to the control plane"
|
|
33822
|
+
echo " status Show whether the control plane is reachable"
|
|
33823
|
+
return 0
|
|
33824
|
+
;;
|
|
33825
|
+
esac
|
|
33826
|
+
if [ "${LOKI_CONTROL:-}" != "1" ]; then
|
|
33827
|
+
echo "loki control is in preview. Enable it with: export LOKI_CONTROL=1"
|
|
33828
|
+
return 0
|
|
33829
|
+
fi
|
|
33830
|
+
local cli="$SKILL_DIR/loki-ts/dist/loki.js"
|
|
33831
|
+
if ! command -v bun >/dev/null 2>&1; then
|
|
33832
|
+
echo "loki control requires bun (https://bun.sh)" >&2
|
|
33833
|
+
return 1
|
|
33834
|
+
fi
|
|
33835
|
+
[ -f "$cli" ] || cli="$SKILL_DIR/loki-ts/src/cli.ts"
|
|
33836
|
+
exec bun "$cli" control "$@"
|
|
33837
|
+
}
|
|
33838
|
+
|
|
33806
33839
|
cmd_wiki() {
|
|
33807
33840
|
local subcmd="${1:-}"
|
|
33808
33841
|
shift 2>/dev/null || true
|
package/autonomy/telemetry.sh
CHANGED
|
@@ -168,7 +168,7 @@ _loki_known_command() {
|
|
|
168
168
|
case "${1:-}" in
|
|
169
169
|
--help|--version|-h|-v|agent|analyze|api|assets\
|
|
170
170
|
|audit|bench|checkpoint|ci|cleanup|cluster|cockpit|code\
|
|
171
|
-
|completions|compliance|compound|config|context|cost|council|cp\
|
|
171
|
+
|completions|compliance|compound|config|context|control|cost|council|cp\
|
|
172
172
|
|crash|ctx|dashboard|demo|deploy|docker|docs|doctor\
|
|
173
173
|
|dogfood|enterprise|explain|export|failover|github|grill|handoff\
|
|
174
174
|
|heal|help|import|init|internal|issue|kpis|logs\
|
package/bin/loki
CHANGED
|
@@ -244,8 +244,8 @@ if [ "${LOKI_LEGACY_BASH:-0}" = "1" ] || [ "${LOKI_LEGACY_BASH:-}" = "true" ]; t
|
|
|
244
244
|
fi
|
|
245
245
|
|
|
246
246
|
# Loki 10 bun resolver: bun on PATH, then an npm-installed @oven/bun-* optional
|
|
247
|
-
# dependency under REPO_ROOT (
|
|
248
|
-
#
|
|
247
|
+
# dependency under REPO_ROOT (the per-platform packages ship the binary and have no
|
|
248
|
+
# install scripts; node_modules/bun/bin/bun.exe is a legacy fallback). A candidate counts only if `--version` exits 0
|
|
249
249
|
# within 2s. Prints the path, or nothing.
|
|
250
250
|
_loki_bun_probe() {
|
|
251
251
|
local c="$1" t p w rc
|
|
@@ -263,7 +263,7 @@ _loki_bun() {
|
|
|
263
263
|
local c
|
|
264
264
|
c=$(command -v bun 2>/dev/null || true)
|
|
265
265
|
if [ -n "$c" ] && _loki_bun_probe "$c"; then printf '%s\n' "$c"; return 0; fi
|
|
266
|
-
for c in "$REPO_ROOT/node_modules/bun
|
|
266
|
+
for c in "$REPO_ROOT"/node_modules/@oven/bun-*/bin/bun "$REPO_ROOT"/node_modules/@oven/bun-*/bin/bun.exe "$REPO_ROOT/node_modules/bun/bin/bun.exe"; do
|
|
267
267
|
[ -x "$c" ] && _loki_bun_probe "$c" && { printf '%s\n' "$c"; return 0; }
|
|
268
268
|
done
|
|
269
269
|
return 0
|
|
@@ -271,7 +271,7 @@ _loki_bun() {
|
|
|
271
271
|
# Reason text for the fallback notice: missing, or failed to start, exit N.
|
|
272
272
|
_loki_bun_why() {
|
|
273
273
|
local c rc
|
|
274
|
-
for c in "$REPO_ROOT/node_modules/bun
|
|
274
|
+
for c in "$REPO_ROOT"/node_modules/@oven/bun-*/bin/bun "$REPO_ROOT"/node_modules/@oven/bun-*/bin/bun.exe "$REPO_ROOT/node_modules/bun/bin/bun.exe"; do
|
|
275
275
|
[ -x "$c" ] || continue
|
|
276
276
|
_loki_bun_probe "$c"; rc=$?
|
|
277
277
|
echo "failed to start, exit $rc"; return 0
|
|
@@ -559,7 +559,7 @@ fi
|
|
|
559
559
|
# Two-token routes (provider show/list, memory list/index) match on the first
|
|
560
560
|
# token only; the Bun dispatcher handles subcommand routing internally.
|
|
561
561
|
case "${1:-}" in
|
|
562
|
-
version|--version|-v|status|stats|doctor|provider|memory|rollback|internal|kpis|trust|proof|receipt|wiki|crash)
|
|
562
|
+
version|--version|-v|status|stats|doctor|provider|memory|rollback|internal|kpis|trust|proof|receipt|wiki|crash|control)
|
|
563
563
|
# v7.5.2: rollback added (wires loki-ts/src/commands/rollback.ts).
|
|
564
564
|
# v7.5.3: internal added for autonomy/run.sh phase1-hooks calls.
|
|
565
565
|
# v7.5.28: kpis added (Phase K MVP: read-only KPI snapshot).
|
package/completions/_loki
CHANGED
|
@@ -206,6 +206,7 @@ function _loki_commands {
|
|
|
206
206
|
'crash:Crash report management'
|
|
207
207
|
'otel:OpenTelemetry management'
|
|
208
208
|
'wiki:Wiki commands'
|
|
209
|
+
'control:Control plane (preview, LOKI_CONTROL=1)'
|
|
209
210
|
'backlog:Run every matching open issue, N in parallel'
|
|
210
211
|
'explain:Explain Loki concepts'
|
|
211
212
|
'optimize:Optimization commands'
|
package/completions/loki.bash
CHANGED
|
@@ -5,8 +5,8 @@ _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 steer status next ship dashboard web serve api sandbox notify import github issue 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 open otel preview quickstart rc rollback 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"
|
|
9
|
-
local main_commands="start backlog quick monitor demo tour welcome init stop pause resume 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 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 open otel preview quickstart rc rollback 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"
|
|
8
|
+
local main_commands="start backlog quick monitor demo tour welcome init stop pause resume steer status next ship dashboard web serve api sandbox notify import github issue 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 open otel preview quickstart rc rollback 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"
|
|
9
|
+
local main_commands="start backlog quick monitor demo tour welcome init stop pause resume 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 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 open otel preview quickstart rc rollback 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"
|
|
10
10
|
|
|
11
11
|
# 1. If we are on the first argument (subcommand)
|
|
12
12
|
if [[ $cword -eq 1 ]]; then
|
package/dashboard/__init__.py
CHANGED
package/docs/INSTALLATION.md
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
The flagship product of [Autonomi](https://www.autonomi.dev/). Loki Mode is a spec-driven autonomous builder with a built-in trust layer that takes any spec to a deployed product and verifies completion with evidence (quality gates plus a completion council), not just a "done" claim. Complete installation instructions for all platforms and use cases.
|
|
4
4
|
|
|
5
|
-
**Version:** v10.
|
|
5
|
+
**Version:** v10.6.6
|
|
6
|
+
|
|
7
|
+
**Migration Note:** Legacy engine removed in 10.6.0. Use `loki "<task>"`, `loki owner/repo#N`, or `loki backlog` instead.
|
|
6
8
|
|
|
7
9
|
---
|
|
8
10
|
|
|
@@ -149,10 +151,9 @@ Install Loki Mode without the bundled bun binary. This reduces the package size
|
|
|
149
151
|
- OpenTelemetry instrumentation packages
|
|
150
152
|
|
|
151
153
|
**What happens:**
|
|
152
|
-
-
|
|
153
|
-
- Each `loki` command that would use the Loki 10 engine prints this as the first line on stderr: "loki: the Loki 10 engine cannot run on this machine: no working bun (none on PATH, and the bundled bun for darwin-aarch64 is missing). Running the legacy engine instead. To fix: install bun from https://bun.sh, or reinstall loki-mode without --omit=optional."
|
|
154
|
+
- Loki 10 requires Bun. Each `loki` command prints an error on stderr if Bun is not found: "loki: the Loki 10 engine cannot run on this machine: no working bun (none on PATH, and the bundled bun for darwin-aarch64 is missing). To fix: install bun from https://bun.sh, or reinstall loki-mode without --omit=optional."
|
|
154
155
|
|
|
155
|
-
**To restore Loki
|
|
156
|
+
**To restore Loki access:**
|
|
156
157
|
- Install bun: `curl -fsSL https://bun.sh/install | bash` or `brew install oven-sh/bun/bun`
|
|
157
158
|
- Or reinstall loki-mode without the flag: `npm install -g loki-mode`
|
|
158
159
|
|
|
@@ -164,7 +165,7 @@ Install Loki Mode without the bundled bun binary. This reduces the package size
|
|
|
164
165
|
brew tap asklokesh/tap && brew install loki-mode
|
|
165
166
|
```
|
|
166
167
|
|
|
167
|
-
Installs the `loki` CLI.
|
|
168
|
+
Installs the `loki` CLI. Loki 10 requires Bun; if bun is not installed, run `brew install oven-sh/bun/bun`. Without bun, each command exits 1 with an error message.
|
|
168
169
|
|
|
169
170
|
To also install the skill for interactive use with all providers:
|
|
170
171
|
|
package/docs/v10/BOARD.md
CHANGED
|
@@ -618,6 +618,7 @@ Source: ~/git/autonomi-dev/research/2026-09-30-adoption/SWARM-PROMPT-ADOPTION.md
|
|
|
618
618
|
| D50-F2r | D50-F2 rework, honest label only: label a test value change only on the expected side of an assert comparison or a parametrize expected value, only when the old or new value appears in the task text; wording 'assertion value changed (not shown to be required by the task): file:line old -> new' and keep the 'weakened test' line beside it; exclude control flow, range, tolerances, approx kwargs, decorators | loki-ts/src/e10ext classifier, engine10 verify and seal wiring, tests, dist | probes C D E F G H K from the F2 review all keep 'weakened test'; A labelled only when 5 appears in the task; verdict PARTIAL in every case | HIGH | building@2026-10-01T13:50Z r3 (r2 38d8ffe7 REJECTED: tolerance column never read in the body passes as expected; token boundaries let -25 match 25; required: seal re-check on the committed blob with verify counts) | none |
|
|
619
619
|
| D50-F2-S3 | humanize-174 lift: let the implement brief edit an existing assertion only when the task text states the new expected value; verdict stays PARTIAL, never VERIFIED (moat). CTO call needed first: does a PARTIAL spec-required test edit count as the right outcome, and does the brief license weaken the append-only rule (context.ts:23) | loki-ts/src/e10ext/context.ts, verify and wall policy, eval fixture through implement | humanize-174 fixture through implement ends with code fixed and the spec value assertion changed, PARTIAL with an honest note | HIGH | ready (D53 ruled 12:39Z: VERIFIED allowed when the new literal is verbatim in the issue, the edit changes only that literal in an existing assert, and Wall plus other tests pass; PARTIAL never scores completed; red bypass tests for tolerance, if True to False, deleted assert, literal not in issue) | needs D50-F2r |
|
|
620
620
|
| D50-F4b | D50-F4 hardening from the opus review (non-blocking): validate base from the worker-written event log as ^[0-9a-f]{40,64}$ before any git call, and skip the backstop when log.verify() fails | loki-ts/src/engine10/supervisor.ts or e10ext/commit_filter.ts, tests | a base of --output=x is refused with no git call; a tampered log runs no backstop | MEDIUM | ready@2026-10-01T13:50Z | none |
|
|
621
|
+
| NPM-LAG | CORRECTED 16:14Z: v10.5.34 (ceb6942a) was accepted by npm at 15:37Z with the notice that it was being processed, and appeared in the registry only at 16:05:58Z (about 29 min; gitHead ceb6942a correct). Not a lost publish, a long npm processing delay, while the Release run already showed success. Guard: publish-npm, post-release-smoke and promote wait up to 45 min for the version (registry, no cache) before declaring it missing, and promote re-triggers when it appears, so a delay is never read as a failure or a pass (10.5.34 smoke failed ETARGET during the lag and skipped promote; rerun 16:30Z); train-cycle merges origin/main back into local main after each release (it stalled at 16:20Z with local main behind its own release) and waits on previous version visible; the release captain (train-cycle.sh) refuses the next release while the previous version is missing from npm | .github/workflows/release.yml publish-npm, scripts/train-cycle.sh, tests | a stubbed npm that never lists the version fails the step; train-cycle logs PREV_NOT_ON_NPM and waits | MEDIUM | ready@2026-10-01T16:14Z | none |
|
|
621
622
|
| D53-Q1 | CTO call before D50-F2-S3: under D53(a) a bug-report task ('Expected 200, got 404') lets a test change to the buggy value pass the literal-only gate; only Wall coverage of that behaviour stops it. Options: require the new literal to sit on the expected side of an expected/should phrase in the task, or require Wall coverage of the edited assertion | docs/v10/DECISIONS.md D53 | ruling recorded | HIGH | released@2026-10-01T14:20Z (ruled in DECISIONS D53 amendment: literal must be the EXPECTED value in the acceptance criteria with a source span; Wall must cover the behaviour; unclassifiable stays PARTIAL) | none |
|
|
622
623
|
| D50-F4 | aiq-52 diagnosis: on FAILED, backstopCommit runs git add -A and re-stages the commit stage's exclusions (pre-existing dirt, Wall files, stray lockfiles), so a PR with only setup dirt is pushed. Backstop applies the same exclusions; nothing left means no commit and no PR | loki-ts/src/engine10/supervisor.ts, e10ext helper, tests, dist | preexisting-dirty fixture with FAILED: HEAD equals base and no PR; with a run edit the backstop commit holds only that edit; Wall and stray lockfile never committed | HIGH | merged@2026-10-01T13:50Z 8364a03e (ed8caedf, opus APPROVE r2: filter fixture shows no token, hooks, fsmonitor, textconv or ext-diff with the supervisor env; train/61) | none |
|
|
623
624
|
| D50-F5 | aiq-52 lift: already_done.ts findEvidence misses compound task keywords (searchbar vs search-command); add deterministic compound-token matching and a same-stem source plus referencing-test category pair; confirmation still must cite a real hit | loki-ts/src/e10ext/already_done.ts, tests, dist | aiq-52-shaped fixture yields a candidate; unrelated keyword, source without referencing test and short prefix yield none | HIGH | building@2026-10-01T13:50Z r3 (r2 f4aa8cc9 REJECTED: derivational suffixes, authorization vs author.ts, productivity vs product.ts; import detection counts strings, comments and docstrings) | none |
|