akm-cli 0.9.28-alpha.1 → 0.9.28-alpha.10

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 (64) hide show
  1. package/CHANGELOG.md +176 -0
  2. package/STABILITY.md +44 -17
  3. package/dist/assets/hints/cli-hints-full.md +6 -2
  4. package/dist/assets/hints/cli-hints-short.md +1 -0
  5. package/dist/assets/templates/html/metrics.html +977 -0
  6. package/dist/cli/shared.js +5 -4
  7. package/dist/cli.js +11 -1
  8. package/dist/commands/command/command-execution.js +1 -0
  9. package/dist/commands/health/accept-rate.js +8 -4
  10. package/dist/commands/health/html-report.js +3 -8
  11. package/dist/commands/health/llm-usage.js +17 -6
  12. package/dist/commands/health/renderers.js +4 -4
  13. package/dist/commands/improve/consolidate/pair-pass.js +12 -1
  14. package/dist/commands/improve/distill.js +6 -0
  15. package/dist/commands/improve/extract-cli.js +1 -1
  16. package/dist/commands/improve/improve-report.js +4 -2
  17. package/dist/commands/improve/improve.js +22 -10
  18. package/dist/commands/metrics/collect.js +439 -0
  19. package/dist/commands/metrics/html-report.js +82 -0
  20. package/dist/commands/metrics/md-report.js +44 -0
  21. package/dist/commands/metrics/metrics-cli.js +213 -0
  22. package/dist/commands/metrics/report-view.js +243 -0
  23. package/dist/commands/metrics/types.js +4 -0
  24. package/dist/commands/read/search.js +5 -0
  25. package/dist/commands/sources/plugin-upgrade.js +431 -0
  26. package/dist/commands/sources/self-update.js +27 -5
  27. package/dist/commands/sources/sources-cli.js +23 -11
  28. package/dist/commands/workflow-cli.js +1 -1
  29. package/dist/core/adapter/adapters/akm-adapter.js +5 -1
  30. package/dist/core/config/schema/engines.js +10 -2
  31. package/dist/core/spawn-env.js +13 -0
  32. package/dist/core/trash.js +73 -0
  33. package/dist/indexer/indexer.js +64 -14
  34. package/dist/indexer/usage/usage-events.js +3 -1
  35. package/dist/indexer/walk/matchers.js +3 -2
  36. package/dist/integrations/agent/engine-resolution.js +1 -0
  37. package/dist/integrations/agent/execution.js +9 -1
  38. package/dist/integrations/agent/profiles.js +2 -2
  39. package/dist/integrations/agent/request-lowering.js +2 -2
  40. package/dist/integrations/harnesses/claude/agent-builder.js +0 -1
  41. package/dist/integrations/harnesses/ids.js +12 -10
  42. package/dist/integrations/harnesses/opencode/agent-builder.js +0 -1
  43. package/dist/integrations/harnesses/opencode-sdk/harness.js +0 -1
  44. package/dist/integrations/harnesses/opencode-sdk/sdk-runner.js +155 -52
  45. package/dist/integrations/session-logs/pre-filter.js +1 -0
  46. package/dist/llm/usage-persist.js +22 -11
  47. package/dist/llm/usage-telemetry.js +4 -0
  48. package/dist/output/html-render.js +15 -8
  49. package/dist/output/shapes/passthrough.js +1 -0
  50. package/dist/output/text/command-format.js +27 -1
  51. package/dist/output/text/metrics.js +39 -0
  52. package/dist/output/text.js +2 -0
  53. package/dist/scripts/akm-migrate-node.js +335 -27
  54. package/dist/scripts/akm-migrate.js +335 -27
  55. package/dist/storage/repositories/index-utility-repository.js +24 -0
  56. package/dist/storage/repositories/metrics-repository.js +80 -0
  57. package/dist/tasks/run/run-command-task.js +1 -1
  58. package/docs/README.md +1 -0
  59. package/docs/integration/bundling-akm.md +6 -1
  60. package/docs/reference/cli.md +187 -8
  61. package/docs/reference/configuration.md +9 -3
  62. package/docs/reference/data-and-telemetry.md +42 -8
  63. package/package.json +1 -1
  64. package/schemas/akm-config.json +8 -0
package/CHANGELOG.md CHANGED
@@ -6,6 +6,182 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.9.28-alpha.10] - 2026-10-08
10
+
11
+ ### Fixed
12
+
13
+ - **An `opencode-sdk` dispatch no longer hangs when OpenCode asks for a permission (#1104).** The runner never
14
+ answered permission requests, so a tool call that needed one (OpenCode's default `external_directory: ask`,
15
+ e.g. reading the plugin's `/tmp/akm-opencode/curated/<session>.md`) stayed `running` until the dispatch
16
+ timed out. The runner now rejects each request of its session, and of the sub-sessions it spawns, exactly as
17
+ a non-interactive `opencode run` does ("auto-rejecting"), so the model gets a refusal it can work around;
18
+ each request is recorded in the dispatch's `stderr`, and the event subscription is closed when the dispatch
19
+ ends. Grant access in the agent's `permission` config to allow it instead.
20
+
21
+ ## [0.9.28-alpha.9] - 2026-10-08
22
+
23
+ ### Fixed
24
+
25
+ - **The `opencode-sdk` server receives `OPENCODE_API_KEY` and `OPENCODE_CONFIG`.** It was started with only the
26
+ common baseline and the XDG names, so a provider that reads its key from the environment (OpenCode Go) failed
27
+ with `UnknownError: Unexpected server error` where `opencode run` worked. The `opencode` CLI profile and the
28
+ SDK server now share one list of OpenCode names; a different key value starts another server.
29
+
30
+ - **`akm upgrade --next` no longer fails OpenCode as "older than `@latest`" (#1089).** akm-plugins' stable
31
+ versions concatenate a timestamp into the patch (`0.9.27202610072331`), so by semver every prerelease build
32
+ (`0.9.28-alpha.8.202610081938`) sorted below stable and `akm-opencode@next` was always rejected. `@next` is
33
+ now judged by the `akm-cli` it pins against the one `@latest` pins; plugin versions are only compared for
34
+ equality (is the cache already this build?).
35
+
36
+ ## [0.9.28-alpha.8] - 2026-10-08
37
+
38
+ ### Fixed
39
+
40
+ - **`opencode-sdk` runs keep their OpenCode session (#1100).** The SDK runner deleted the session after every
41
+ dispatch, so a workflow, task or `akm agent` run left no transcript in OpenCode's history to debug or to learn
42
+ from, unlike `opencode run`. The session is now kept; a dispatch akm gives up on (timeout or abort) is still
43
+ aborted on the server so it stops calling the model. The OpenCode session id is on the `akm agent` / command
44
+ result as `sessionId` and in the task log line, as workflow steps already carried it.
45
+
46
+ ## [0.9.28-alpha.7] - 2026-10-08
47
+
48
+ ### Added
49
+
50
+ - **An agent engine can name a default `agent`.** `engines.<name>.agent` (`opencode`, `opencode-sdk`, `claude`)
51
+ is the native agent the engine runs when a request names none, so an `opencode-sdk` engine, which takes no
52
+ `args`, can run e.g. `akm-workflow` for workflows and tasks. A request's own agent wins, a persona is kept,
53
+ and model work keeps its confined agent. See [Configuration](docs/reference/configuration.md) (#1049).
54
+
55
+ ### Changed
56
+
57
+ - **Stability tiers for 0.10's stabilization work.** Experimental: the built-in
58
+ improve strategies other than `default` and `consolidate` (`quick`,
59
+ `reflect-distill`, `thorough`, `catchup`), the proactive-maintenance and
60
+ high-salience lanes, and session extraction (`akm proposal extract`).
61
+ Evolving and now listed: `akm command run` and `akm models`; every agent
62
+ harness (the `opencode` CLI path, `copilot`, `pi`, `gemini`, `aider`,
63
+ `amazonq`, `openhands` included) and the `okf`, `llm-wiki` and
64
+ `generic-files` adapters are named Evolving. `akm upgrade`'s plugin step and
65
+ `--next` are targeted to become Stable before the 0.9 series ends.
66
+
67
+ - **Workflows are Experimental.** The `akm workflow` commands (`run`, `status`,
68
+ `list`, `create`, `resume`, `abandon`, `plan`), the workflow asset format and
69
+ the engine move to Experimental in STABILITY.md and the help text, for the rest
70
+ of 0.9 and all of 0.10, which stabilizes the feature and then promotes it or
71
+ removes it. Nothing changes in how they run.
72
+
73
+ ### Fixed
74
+
75
+ - **Consolidate's pair pass no longer retires a knowledge note in favour of a memory (#1092).** Knowledge is the
76
+ reviewed form and a memory is raw capture, often the very memory the note was promoted from, yet a `duplicate`,
77
+ `supersedes` or `subsumed` verdict could retire `knowledge/...` for `memories/...` (a `.derived` memory counts as a
78
+ memory). When the verdict would do that and the judge lists no claim held only by the memory, the memory is retired
79
+ in favour of the note instead, through the same guards and staging as any memory retirement; when the memory holds
80
+ a claim of its own, nothing is minted and the pair is counted as a no-action verdict. A memory is still retired in
81
+ favour of a knowledge note, and knowledge against knowledge is unchanged.
82
+
83
+ ## [0.9.28-alpha.6] - 2026-10-08
84
+
85
+ ### Fixed
86
+
87
+ - **The #1063 fix now reaches files that have not changed (#1063).** An incremental `akm index` skips a
88
+ directory whose files are unchanged, so a reference file already filed as a command stayed
89
+ `commands/skills/<name>/...` until `akm index --full`. The `akm` adapter's version, which is part of each
90
+ directory's freshness, is bumped, so the next `akm index` after upgrading re-files those rows once (about 18
91
+ entries in a 18,000-entry library) and drops their old refs. Reading every directory once makes that run slower
92
+ (about 27 s against 2 s on that library) and re-embeds the entries whose embedding hash was written by an older
93
+ release (about 8,000 of them); later runs cost what they did before.
94
+
95
+ ## [0.9.28-alpha.5] - 2026-10-08
96
+
97
+ ### Added
98
+
99
+ - **`akm upgrade --next` installs the `@next` prerelease of akm and its OpenCode plugin.** The CLI target is
100
+ the `next` dist-tag of `akm-cli` when it is newer than the latest stable release, else the stable release
101
+ (never a downgrade); npm/Bun/pnpm installs name that exact version and binary installs take its GitHub
102
+ release. The OpenCode lockstep and cache refresh follow `akm-opencode@next` when the OpenCode config's
103
+ `plugin` list names it (akm never edits that config); with a bare `"akm-opencode"` the entry is `skipped`
104
+ with a message saying to set `"plugin": ["akm-opencode@next"]`, and lockstep stays on the `@latest` pin.
105
+ Missing, older-than-`@latest` or unpinned `@next` fails closed like the stable lockstep. Claude Code and
106
+ Codex are unchanged (no prerelease channel). The result gains `channel`. Works with `--check`, `--force`
107
+ and `-q`. See [`akm upgrade`](docs/reference/cli.md#prereleases-next).
108
+
109
+ ## [0.9.28-alpha.4] - 2026-10-08
110
+
111
+ ### Added
112
+
113
+ - **`akm upgrade` also updates the akm plugin of each installed harness (#1007).** After the CLI step
114
+ it refreshes Claude Code (`claude plugin marketplace update`, then `claude plugin update`) and
115
+ Codex (`codex plugin marketplace upgrade`) when the `akm-plugins` marketplace is configured and the
116
+ plugin is installed, and replaces a stale cached `akm-opencode` (moved to the trash, then re-fetched
117
+ by `opencode debug config`) unless OpenCode is running, in which case it is `deferred`. It only
118
+ updates: a missing plugin is never installed. The result gains `plugins` (one `outcome` per harness:
119
+ `updated`, `current`, `skipped`, `deferred`, `failed`; under `--check`, which changes nothing,
120
+ `pending` for OpenCode and `unknown` for Claude Code and Codex, whose check needs a fetch) and a failed plugin exits 1. With the OpenCode plugin present the CLI moves to the akm-cli
121
+ that `akm-opencode@latest` pins instead of the newest release, reported under `lockstep`; if the pin
122
+ cannot be read the CLI is held where it is rather than moved ahead of the plugin. The
123
+ Containers entrypoint and the Codex hook trust entries are documented under
124
+ [`akm upgrade`](docs/reference/cli.md#upgrade).
125
+
126
+ ### Fixed
127
+
128
+ - **A skill's reference file with a shell `$1` is no longer indexed as a command (#1063).** A file under
129
+ `skills/**` other than `SKILL.md` that showed `local var="$1"` in a code block was retyped to
130
+ `commands/skills/<name>/...`. A skill's folder now counts as a declared context, as `memories/` and the other typed
131
+ directories already did, so the file stays a skill resource (`knowledge/skills/<name>/...`). A `$1` under
132
+ `commands/` or in a loose file is still a command.
133
+
134
+ ## [0.9.28-alpha.3] - 2026-10-08
135
+
136
+ ### Changed
137
+
138
+ - A consolidate pair-pass retire proposal now records the judge's claim lists in its `retirement` metadata as `onlyInRetired` and `onlyInSuccessor`, named by role rather than by the judge's A/B, so what the judge found only on each side survives past the run. Proposals minted before this lack both fields; no row is added for a pair akm keeps.
139
+
140
+ - A distill lesson the quality gate rejects or sends to review now keeps its text: the `distill_invoked` event and the distill result carry `rejectedContent`, cut to 2000 characters (the judge prompt's cap). Before, a rejected lesson left only its score and reason. It stays local in `state.db`.
141
+
142
+ ## [0.9.28-alpha.2] - 2026-10-08
143
+
144
+ ### Added
145
+
146
+ - **`akm metrics` (experimental) reports what akm has recorded, in every `--format`.** One
147
+ read-only command covers asset usage (searches, shows, curates, selects, the
148
+ queries that returned nothing), feedback with its reasons and tags, utility
149
+ and outcome scores, LLM tokens, latency, task runs,
150
+ proposals and workflow token spend. `--since` (default `30d`) sets the window start; the window ends now, counts
151
+ `user`-source usage and keeps the top 20 of every ranked list. The
152
+ window rows (usage rows as recorded, LLM calls summed per day, engine, model, process and stage) ride along with
153
+ `--format html` and `--detail full`. A window
154
+ longer than a store's retention says so in `notes`.
155
+
156
+ - **`akm metrics` renders as text and Markdown.** `--format text` prints aligned
157
+ Usage, Feedback, Utility, LLM, Index, Tasks, Proposals and Workflows sections
158
+ with top-N tables (cut to 5 at `--detail brief`); `--format md` prints one
159
+ heading per section with GFM tables.
160
+
161
+ - **`akm metrics --format html` writes a self-contained dashboard.** The page
162
+ carries the window's raw rows, so you can filter by date, bundle, source and
163
+ event type, sort the tables, open an asset to see its timeline, queries and
164
+ feedback, and download any table as CSV, all in the browser. Charts load
165
+ ECharts from the same CDN tag as `akm health --report`. A page keeps the most
166
+ recent 50,000 usage rows and says so when it cuts older ones.
167
+
168
+ ### Changed
169
+
170
+ - **LLM usage is recorded for every command.** `akm index`, curate, workflow,
171
+ agent dispatch and `akm command run` now persist their `llm_usage` events
172
+ like `improve` and `proposal drain` already did; before, a call made outside
173
+ those two was dropped. An improve run still keeps its own sink and the
174
+ process-wide one resumes when it ends.
175
+
176
+ - Search latency is recorded in the search summary usage row (`totalMs`, plus `rankMs` and `embedMs` when present), and every `akm index` run appends an `index_completed` event with its phase timings.
177
+
178
+ ### Fixed
179
+
180
+ - **Usage-event retention no longer deletes a day early.** The purge on `akm index`
181
+ compared the space-separated `created_at` against an ISO cutoff, so every row on
182
+ the cutoff's date was removed up to 24 hours before its 90 days were up. Both
183
+ sides are now normalized before the comparison.
184
+
9
185
  ## [0.9.28-alpha.1] - 2026-10-08
10
186
 
11
187
  ### Fixed
package/STABILITY.md CHANGED
@@ -46,6 +46,7 @@ enumeration of the whole `proposal` noun group.
46
46
  | `akm setup` | Stable | |
47
47
  | `akm index` | Stable | |
48
48
  | `akm health` | Evolving | Exit codes are Evolving; report *content* and rendered `md`/`html` layout are Experimental — do not script against report layout. |
49
+ | `akm metrics` | Experimental | New in 0.9.28. Report content, JSON shape and the `html` dashboard may change. |
49
50
  | `akm info` | Stable | |
50
51
  | `akm bundle create` | Stable | |
51
52
  | `akm bundle add` | Stable | |
@@ -53,17 +54,17 @@ enumeration of the whole `proposal` noun group.
53
54
  | `akm bundle show` | Evolving | See note above. |
54
55
  | `akm bundle remove` | Stable | |
55
56
  | `akm bundle update` | Stable | |
56
- | `akm upgrade` | Evolving | |
57
+ | `akm upgrade` | Evolving | The plugin step and `--next` (0.9.28) are being verified on real hosts to become Stable before the 0.9 series ends. |
57
58
  | `akm search` | Stable | |
58
59
  | `akm curate` | Stable | |
59
60
  | `akm show` | Stable | |
60
- | `akm workflow status` | Stable | `--all-scopes` added in 0.9.15 (#942), additive. |
61
- | `akm workflow plan` | Evolving | New in 0.9.2; secret-free provenance output; envelope shape may change. |
62
- | `akm workflow list` | Stable | `--all-scopes` and a top-level `scopeKey` envelope field added in 0.9.15 (#942), both additive. |
63
- | `akm workflow create` | Stable | |
64
- | `akm workflow resume` | Stable | |
65
- | `akm workflow abandon` | Stable | |
66
- | `akm workflow run` | Stable | Canonical start/resume/execute command. |
61
+ | `akm workflow status` | Experimental | `--all-scopes` added in 0.9.15 (#942), additive. |
62
+ | `akm workflow plan` | Experimental | New in 0.9.2; secret-free provenance output; envelope shape may change. |
63
+ | `akm workflow list` | Experimental | `--all-scopes` and a top-level `scopeKey` envelope field added in 0.9.15 (#942), both additive. |
64
+ | `akm workflow create` | Experimental | |
65
+ | `akm workflow resume` | Experimental | |
66
+ | `akm workflow abandon` | Experimental | |
67
+ | `akm workflow run` | Experimental | Canonical start/resume/execute command. |
67
68
  | `akm remember` | Stable | |
68
69
  | `akm import` | Stable | |
69
70
  | `akm sync` | Stable | |
@@ -82,6 +83,8 @@ enumeration of the whole `proposal` noun group.
82
83
  | `akm feedback` | Stable | |
83
84
  | `akm log` | Evolving | |
84
85
  | `akm agent` | Evolving | |
86
+ | `akm command run` | Evolving | Runs stored command templates through the same agent dispatch as `akm agent`. |
87
+ | `akm models` | Evolving | `list` and `copy-defaults` for model intent aliases. |
85
88
  | `akm lint` | Evolving | |
86
89
  | `akm improve` | Evolving | Review-first by default; mutating lanes require `experimental.improveAutonomy` — see below. |
87
90
  | `akm proposal list` | Stable | See reconciliation note above. |
@@ -92,7 +95,7 @@ enumeration of the whole `proposal` noun group.
92
95
  | `akm proposal reopen` | Evolving | New in 0.9.19; undoes a rejection. |
93
96
  | `akm proposal revert` | Evolving | |
94
97
  | `akm proposal drain` | Evolving | |
95
- | `akm proposal extract` | Evolving | Former top-level `akm extract`. |
98
+ | `akm proposal extract` | Experimental | Former top-level `akm extract`. Session extraction quality is still being measured (0.10, #1094). |
96
99
  | `akm proposal new` | Evolving | Former top-level `akm propose`. |
97
100
  | `akm help` | Stable | |
98
101
  | `akm help agents` | Stable | |
@@ -290,9 +293,8 @@ CHANGELOG with a migration note.
290
293
  - **Workflow plan** — `akm workflow plan <ref>`, new in 0.9.2: zero-write
291
294
  compile+freeze introspection (the canonical step graph, task/child
292
295
  expansion, input bindings, and lowering notices for a workflow, without
293
- starting or publishing a run). The envelope shape may still change; the
294
- five long-Stable `workflow` verbs (`status`, `list`, `create`, `resume`,
295
- `abandon`) and `run` are unaffected.
296
+ starting or publishing a run). The envelope shape may still change. Like every
297
+ `workflow` verb it is Experimental from 0.9.28 (see Experimental below).
296
298
  - **Events / log** — `akm log` is the event-stream surface (0.9.0: the
297
299
  asset-scoped `akm history` surface, and `log`'s own `tail` subcommand, were
298
300
  both removed; `log` is now a leaf command — the former `list` surface).
@@ -301,7 +303,8 @@ CHANGELOG with a migration note.
301
303
  commands/agents, knowledge, YAML workflows, tasks, env/secret files, scripts,
302
304
  OKF and LLM-wiki knowledge bases). Config is keyed by `bundles` and
303
305
  `defaultBundle`. The adapter set, bundle-recognition rules, and the
304
- `bundles` config shape may still shift. Bundles are inspected through
306
+ `bundles` config shape may still shift; the `okf`, `llm-wiki` and
307
+ `generic-files` adapters in particular are Evolving. Bundles are inspected through
305
308
  `akm bundle list` / `akm bundle show <name>` and enumerated through
306
309
  `akm search "bundle//"`. (An earlier `akm bundle items` noun group was
307
310
  removed in 0.9.0 as duplicative of `akm search`; the current `akm bundle`
@@ -317,9 +320,15 @@ CHANGELOG with a migration note.
317
320
  `log.md` / `raw/` / `pages/` and its ingest flow); wiki pages are addressed
318
321
  as ordinary concepts inside their bundle. Adapter behavior and page
319
322
  conventions are still iterating.
320
- - **Agent dispatch** — `akm agent` subcommand. Supported backends: `claude`,
321
- `opencode`, `opencode-sdk`, `codex`, `copilot`, `pi`, `gemini`, `aider`,
322
- `amazonq`, `openhands`. The set will grow.
323
+ - **Agent dispatch** — `akm agent` and `akm command run`. Supported backends:
324
+ `claude`, `opencode-sdk` (the primary OpenCode interface), `codex`, and the
325
+ `opencode` CLI path, `copilot`, `pi`, `gemini`, `aider`, `amazonq`,
326
+ `openhands`. Every harness is Evolving: the harness implementation is being
327
+ reworked so harnesses are easy to add, remove and update (0.10), and the
328
+ `opencode` CLI dispatch path is a deprecation candidate once `opencode-sdk`
329
+ covers it. The set will grow.
330
+ - **Model aliases** — `akm models list|copy-defaults` and the intent-alias
331
+ defaults they expose.
323
332
  - **Proposal queue** — quality classifications (`accepted`, `pending`,
324
333
  `proposed`, `rejected`, `archived`) are stable; the JSON shape of a
325
334
  proposal record may add fields.
@@ -329,7 +338,9 @@ CHANGELOG with a migration note.
329
338
  lives outside the CLI, in `scripts/build-registry-index.ts`.
330
339
  - **Upgrade** — `akm upgrade`. Checksum verification is not optional; the
331
340
  recovery hatch is the `AKM_UPGRADE_SKIP_CHECKSUM` environment variable
332
- (Internal), not a flag.
341
+ (Internal), not a flag. The harness plugin step and `--next` (new in 0.9.28)
342
+ are targeted to become Stable before the 0.9 series ends, once verified on
343
+ real hosts.
333
344
  - **Lint** — `akm lint`. The rule set and finding shapes iterate; the
334
345
  `--fail-on-flagged` CI contract and the exit codes are stable.
335
346
  - **Health** — `akm health` and its exit codes (0 pass / 4 warn / 1 fail) are
@@ -341,6 +352,15 @@ CHANGELOG with a migration note.
341
352
  Subject to change without notice within minor releases. Not yet recommended
342
353
  for scripted use.
343
354
 
355
+ - **Workflows** — the whole `akm workflow` surface (`run`, `status`, `list`,
356
+ `create`, `resume`, `abandon`, `plan`), the workflow asset format and the
357
+ workflow engine are Experimental from 0.9.28 and throughout 0.10. The 0.10
358
+ series stabilizes the feature and trims what is not useful, then either
359
+ promotes it out of Experimental or removes it if stabilization does not
360
+ produce a quality feature.
361
+ - **`akm metrics`** — new in 0.9.28. What it reports, its JSON shape and the
362
+ `--format html` dashboard may change in any release; do not script against
363
+ them.
344
364
  - **`lesson` asset type** — schema (`when_to_use`, `description`) is
345
365
  stable, but lesson-distillation triggers and ranking are tuning targets.
346
366
  - **`--shape agent` and `--shape summary`** — the output-projection axis
@@ -357,6 +377,13 @@ for scripted use.
357
377
  - **Memory belief-state transitions** — `captureMode`, `beliefState`,
358
378
  contradiction edges, and the consolidate journal are observable but
359
379
  the algorithm that writes them is tuning across patch releases.
380
+ - **Improve built-in strategies and lanes** — the built-in strategies other
381
+ than `default` and `consolidate` (`quick`, `reflect-distill`, `thorough`,
382
+ `catchup`) and the proactive-maintenance and high-salience lanes. 0.10
383
+ measures each and keeps, folds or removes it (#1094).
384
+ - **Session extraction** — `akm proposal extract` and the `extract` process:
385
+ what it extracts, its quality gates and its output may change while 0.10
386
+ measures it (#1094).
360
387
  - **Improve tuning config** — `improve.strategies.*.processes.*` (per-process
361
388
  engines, limits, gates, and the anti-collapse / CLS / fidelity knobs) and
362
389
  the `index.*` per-pass config. The 0.9.x series is explicitly still settling
@@ -329,8 +329,9 @@ akm bundle list # List all sources
329
329
  akm lint # Structural lint over the bundle; exits 0 regardless of findings
330
330
  akm lint --fix # Auto-fix Tier 1 issues
331
331
  akm lint --fail-on-flagged # Exit non-zero when summary.flagged > 0 (CI-friendly)
332
- akm upgrade # Upgrade akm using its install method
333
- akm upgrade --check # Check for updates
332
+ akm upgrade # Upgrade akm using its install method, then update installed harness plugins
333
+ akm upgrade --check # Report pending CLI and plugin updates, changing nothing
334
+ akm upgrade --next # Follow prereleases (@next); OpenCode needs "akm-opencode@next" in its plugin list
334
335
  akm help migrate 0.6.0 # Print migration notes for a release (or: latest)
335
336
  akm help bundle # Print options and subcommands for one command
336
337
  akm help agents --full # Print this reference
@@ -416,6 +417,9 @@ akm agent --model sonnet --prompt "..." # Model override (aliases or exa
416
417
  akm info # Capabilities, bundle dir, index stats, semantic-search status
417
418
  akm health # Runtime diagnostics; exit 0 ok / 4 warn / 1 fail
418
419
  akm health --report # Adds accept-rate metrics
420
+ akm metrics # Usage, feedback, utility, LLM tokens, tasks, workflows (last 30d, read-only)
421
+ akm metrics --since 7d # Narrow the window
422
+ akm metrics --format html --output metrics.html # Self-contained dashboard with the window's rows (filter, sort, export CSV)
419
423
  akm log # Append-only event stream (mutations, feedback, indexing)
420
424
  akm log --ref <ref> # One asset's event trail
421
425
  akm log --since @offset:<id> # Durable row-id cursor — poll this to follow the stream
@@ -47,6 +47,7 @@ akm clone <ref> # Copy an asset to the working bun
47
47
  akm sync # Commit (and push if writable remote) changes in the primary bundle (--no-push to commit only)
48
48
  akm improve --no-sync # Run improve without the end-of-run auto-commit
49
49
  akm improve --no-push # Auto-commit but skip push for this run
50
+ akm metrics --since 7d # What was searched, shown and rated, and which assets went unused (--format html: dashboard)
50
51
  akm search "<query>" --from registry # Search all registries (registry search was folded into search)
51
52
  ```
52
53