akm-cli 0.9.31 → 0.10.261001-beta

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 (270) hide show
  1. package/CHANGELOG.md +409 -0
  2. package/STABILITY.md +99 -57
  3. package/dist/api-node.mjs +20 -0
  4. package/dist/api.d.ts +23 -0
  5. package/dist/api.js +45 -0
  6. package/dist/assets/hints/cli-hints-full.md +15 -29
  7. package/dist/assets/hints/cli-hints-short.md +2 -2
  8. package/dist/assets/improve-strategies/default.json +3 -3
  9. package/dist/assets/prompts/consolidate-pair.md +9 -7
  10. package/dist/assets/stash-skeleton/README.md +1 -1
  11. package/dist/assets/tasks/improve/akm-improve-consolidate.yml +1 -1
  12. package/dist/cli/shared.js +31 -48
  13. package/dist/cli/unknown-flags.js +6 -43
  14. package/dist/cli.js +8 -34
  15. package/dist/commands/agent/contribute-cli.js +1 -1
  16. package/dist/commands/completions.js +1 -2
  17. package/dist/commands/config-cli.js +5 -28
  18. package/dist/commands/env/env-cli.js +5 -5
  19. package/dist/commands/env/secret-cli.js +2 -2
  20. package/dist/commands/feedback-cli.js +75 -49
  21. package/dist/commands/health/checks.js +41 -16
  22. package/dist/commands/health/plugin-staleness.js +52 -22
  23. package/dist/commands/improve/autonomy-gate.js +5 -3
  24. package/dist/commands/improve/consolidate/chunking.js +3 -10
  25. package/dist/commands/improve/consolidate/continuity-check.js +4 -4
  26. package/dist/commands/improve/consolidate/pair-pass.js +29 -10
  27. package/dist/commands/improve/consolidate.js +10 -65
  28. package/dist/commands/improve/distill/lesson-update.js +91 -0
  29. package/dist/commands/improve/distill-guards.js +1 -43
  30. package/dist/commands/improve/distill.js +148 -21
  31. package/dist/commands/improve/eligibility.js +14 -1
  32. package/dist/commands/improve/extract-cli.js +1 -1
  33. package/dist/commands/improve/extract-prompt.js +17 -7
  34. package/dist/commands/improve/extract.js +5 -7
  35. package/dist/commands/improve/improve-cli.js +92 -106
  36. package/dist/commands/improve/improve-strategies.js +8 -12
  37. package/dist/commands/improve/improve.js +134 -52
  38. package/dist/commands/improve/loop-stages.js +18 -5
  39. package/dist/commands/improve/planner.js +0 -1
  40. package/dist/commands/improve/preparation.js +40 -99
  41. package/dist/commands/improve/proactive-maintenance.js +2 -2
  42. package/dist/commands/improve/reflect-noise.js +3 -55
  43. package/dist/commands/improve/reflect.js +29 -34
  44. package/dist/commands/improve/retrieval-queries.js +37 -0
  45. package/dist/commands/improve/retrieval-scope.js +2 -2
  46. package/dist/commands/improve/salience.js +2 -9
  47. package/dist/commands/improve/session-asset.js +4 -1
  48. package/dist/commands/improve/stage.js +23 -12
  49. package/dist/commands/lint/index.js +5 -20
  50. package/dist/commands/observability-cli.js +3 -9
  51. package/dist/commands/proposal/drain.js +43 -6
  52. package/dist/commands/proposal/proposal-cli.js +11 -31
  53. package/dist/commands/proposal/repository.js +20 -14
  54. package/dist/commands/proposal/validators/proposal-quality-validators.js +0 -3
  55. package/dist/commands/read/knowledge.js +3 -3
  56. package/dist/commands/read/remember-cli.js +0 -13
  57. package/dist/commands/read/search-cli.js +29 -97
  58. package/dist/commands/read/search.js +0 -11
  59. package/dist/commands/read/show.js +0 -19
  60. package/dist/commands/sources/plugin-upgrade.js +164 -101
  61. package/dist/commands/sources/sources-cli.js +1 -15
  62. package/dist/commands/sources/stash-cli.js +6 -14
  63. package/dist/commands/tasks/tasks-cli.js +4 -115
  64. package/dist/commands/workflow/plan.js +11 -33
  65. package/dist/commands/workflow-cli.js +2 -7
  66. package/dist/core/adapter/adapter-ids.js +1 -2
  67. package/dist/core/adapter/adapters/agent-skills-adapter.js +0 -4
  68. package/dist/core/adapter/adapters/akm-adapter.js +9 -48
  69. package/dist/core/adapter/adapters/akm-lint.js +10 -26
  70. package/dist/core/adapter/adapters/akm-metadata.js +2 -72
  71. package/dist/core/adapter/adapters/akm-task-adapter.js +0 -5
  72. package/dist/core/adapter/adapters/akm-workflow-adapter.js +9 -28
  73. package/dist/core/adapter/adapters/dotenv-adapter.js +1 -20
  74. package/dist/core/adapter/adapters/generic-files-adapter.js +0 -10
  75. package/dist/core/adapter/adapters/llm-wiki-adapter.js +0 -4
  76. package/dist/core/adapter/adapters/tool-dir-shared.js +0 -24
  77. package/dist/core/adapter/adapters/website-snapshot-adapter.js +4 -4
  78. package/dist/core/adapter/recognize-match.js +3 -4
  79. package/dist/core/common.js +18 -2
  80. package/dist/core/config/config-schema.js +12 -15
  81. package/dist/core/config/config-types.js +6 -15
  82. package/dist/core/config/config-walker.js +6 -23
  83. package/dist/core/config/config.js +17 -80
  84. package/dist/core/config/engine-semantics.js +7 -3
  85. package/dist/core/config/schema/engines.js +7 -7
  86. package/dist/core/config/schema/improve-processes.js +10 -63
  87. package/dist/core/config/schema/improve.js +2 -21
  88. package/dist/core/config/schema/index-config.js +6 -39
  89. package/dist/core/env-secret-ref.js +2 -45
  90. package/dist/core/errors.js +1 -2
  91. package/dist/core/extra-params.js +2 -86
  92. package/dist/core/file-lock.js +2 -6
  93. package/dist/core/improve-result.js +13 -1
  94. package/dist/core/mutation-target.js +2 -2
  95. package/dist/core/paths.js +4 -0
  96. package/dist/core/recognition-util.js +4 -5
  97. package/dist/core/run-lock.js +1 -1
  98. package/dist/core/subprocess.js +49 -0
  99. package/dist/core/warn.js +21 -4
  100. package/dist/core/write-source.js +3 -3
  101. package/dist/execution/target-ref.js +1 -2
  102. package/dist/indexer/indexer.js +15 -6
  103. package/dist/indexer/passes/memory-inference.js +15 -6
  104. package/dist/indexer/search/db-search.js +49 -36
  105. package/dist/indexer/search/fts-query.js +0 -19
  106. package/dist/indexer/search/ranking.js +29 -1
  107. package/dist/indexer/usage/usage-events.js +21 -16
  108. package/dist/integrations/agent/engine-resolution.js +5 -2
  109. package/dist/integrations/agent/index.js +1 -1
  110. package/dist/integrations/agent/profiles.js +41 -98
  111. package/dist/integrations/agent/request-lowering.js +3 -3
  112. package/dist/integrations/harnesses/aider/index.js +5 -0
  113. package/dist/integrations/harnesses/amazonq/index.js +1 -0
  114. package/dist/integrations/harnesses/claude/config-import.js +2 -3
  115. package/dist/integrations/harnesses/claude/index.js +5 -0
  116. package/dist/integrations/harnesses/codex/index.js +1 -0
  117. package/dist/integrations/harnesses/copilot/index.js +1 -0
  118. package/dist/integrations/harnesses/gemini/index.js +1 -0
  119. package/dist/integrations/harnesses/index.js +18 -39
  120. package/dist/integrations/harnesses/opencode/agent-builder.js +60 -35
  121. package/dist/integrations/harnesses/opencode/config-import.js +121 -52
  122. package/dist/integrations/harnesses/opencode/index.js +22 -0
  123. package/dist/integrations/harnesses/opencode/plugin-layout.js +68 -0
  124. package/dist/integrations/harnesses/opencode/session-log-types.js +12 -0
  125. package/dist/integrations/harnesses/opencode/session-log-v1.js +72 -0
  126. package/dist/integrations/harnesses/opencode/session-log-v2.js +140 -0
  127. package/dist/integrations/harnesses/opencode/session-log.js +104 -115
  128. package/dist/integrations/harnesses/opencode/version.js +98 -0
  129. package/dist/integrations/harnesses/opencode-sdk/{harness.js → index.js} +5 -17
  130. package/dist/integrations/harnesses/opencode-sdk/sdk-runner.js +105 -206
  131. package/dist/integrations/harnesses/opencode-sdk/v1-adapter.js +199 -0
  132. package/dist/integrations/harnesses/opencode-sdk/v2-adapter.js +254 -0
  133. package/dist/integrations/harnesses/opencode-sdk/wire.js +66 -0
  134. package/dist/integrations/harnesses/openhands/index.js +1 -0
  135. package/dist/integrations/harnesses/pi/index.js +1 -0
  136. package/dist/integrations/harnesses/shared.js +2 -0
  137. package/dist/integrations/harnesses/types.js +2 -0
  138. package/dist/llm/client.js +41 -11
  139. package/dist/output/cli-hints.js +1 -1
  140. package/dist/output/context.js +10 -19
  141. package/dist/output/format-exempt.js +5 -8
  142. package/dist/output/shapes/helpers.js +1 -22
  143. package/dist/output/shapes/passthrough.js +0 -1
  144. package/dist/output/shapes.js +3 -31
  145. package/dist/output/stdout.js +5 -1
  146. package/dist/output/text/command-format.js +6 -1
  147. package/dist/output/text/workflow-format.js +4 -22
  148. package/dist/scripts/akm-migrate-node.js +15745 -16711
  149. package/dist/scripts/akm-migrate.js +16318 -17280
  150. package/dist/setup/detect.js +10 -4
  151. package/dist/setup/harness-config-import.js +5 -14
  152. package/dist/setup/setup.js +1 -1
  153. package/dist/setup/steps/tasks.js +12 -13
  154. package/dist/sources/providers/git-stash.js +94 -13
  155. package/dist/storage/repositories/index-utility-repository.js +2 -32
  156. package/dist/storage/repositories/index-vec-repository.js +4 -0
  157. package/dist/storage/repositories/task-history-repository.js +0 -5
  158. package/dist/storage/repositories/workflow-runs-repository.js +5 -15
  159. package/dist/tasks/embedded.js +2 -1
  160. package/dist/tasks/run/run-command-task.js +9 -1
  161. package/dist/tasks/run/run-workflow-task.js +4 -3
  162. package/dist/tasks/run/task-history.js +0 -2
  163. package/dist/tasks/run/task-log.js +38 -1
  164. package/dist/tasks/schedule-gates.js +39 -0
  165. package/dist/tasks/scheduler-binding.js +0 -16
  166. package/dist/tasks/scheduler-sync.js +3 -97
  167. package/dist/tasks/source/bounded-document.js +1 -1
  168. package/dist/tasks/source/task-source-v4.js +2 -12
  169. package/dist/tasks/task-run-reserved-flags.js +2 -31
  170. package/dist/workflows/authoring/authoring.js +6 -6
  171. package/dist/workflows/compile.js +8 -65
  172. package/dist/workflows/exec/child-workflow.js +22 -3
  173. package/dist/workflows/exec/native-executor.js +12 -147
  174. package/dist/workflows/exec/run-workflow.js +31 -103
  175. package/dist/workflows/exec/step-work.js +9 -178
  176. package/dist/workflows/exec/unit-dispatch.js +0 -10
  177. package/dist/workflows/freeze/environment.js +3 -44
  178. package/dist/workflows/freeze/freeze.js +8 -41
  179. package/dist/workflows/freeze/targets/child-workflow.js +27 -63
  180. package/dist/workflows/freeze/targets/command.js +2 -16
  181. package/dist/workflows/freeze/targets/shell.js +0 -2
  182. package/dist/workflows/freeze/task-bindings.js +2 -28
  183. package/dist/workflows/ir/params.js +12 -2
  184. package/dist/workflows/parser.js +82 -232
  185. package/dist/workflows/plan.js +1 -1
  186. package/dist/workflows/renderer.js +10 -19
  187. package/dist/workflows/runtime/run-plan.js +11 -53
  188. package/dist/workflows/runtime/runs.js +4 -27
  189. package/dist/workflows/source-files.js +12 -16
  190. package/dist/workflows/source-semantics.js +1 -93
  191. package/docs/README.md +1 -1
  192. package/docs/agents/README.md +3 -3
  193. package/docs/agents/agent-install.md +1 -1
  194. package/docs/architecture/0.10-process-rules.md +827 -0
  195. package/docs/architecture/adapters.md +17 -31
  196. package/docs/architecture/architecture.md +4 -5
  197. package/docs/architecture/improvement.md +115 -76
  198. package/docs/architecture/internals/improve-workflow.md +22 -16
  199. package/docs/architecture/internals/indexing.md +1 -1
  200. package/docs/architecture/internals/search.md +1 -2
  201. package/docs/architecture/internals/storage-locations.md +6 -6
  202. package/docs/architecture/persisted-data-compat.md +13 -4
  203. package/docs/architecture/specs/0.9.0-decisions.md +6 -2
  204. package/docs/architecture/specs/improve-collapse-churn-detector-design.md +2 -2
  205. package/docs/architecture/specs/workflow-format-unification.md +1 -6
  206. package/docs/architecture/testing/manual-testing-checklist.md +21 -30
  207. package/docs/architecture/testing/task-workflow-manual-tests.md +106 -203
  208. package/docs/architecture/testing/testing-workflow.md +1 -1
  209. package/docs/architecture/workflow-engine.md +5 -56
  210. package/docs/guides/author-workflows.md +39 -69
  211. package/docs/guides/bundles.md +3 -1
  212. package/docs/guides/capture-knowledge.md +1 -1
  213. package/docs/guides/claude-code-vs-akm-workflows.md +1 -2
  214. package/docs/guides/discover-and-load.md +4 -4
  215. package/docs/guides/getting-started.md +1 -1
  216. package/docs/guides/improve-the-library.md +10 -9
  217. package/docs/guides/recipes/headless-install.md +2 -2
  218. package/docs/guides/run-workflows.md +1 -1
  219. package/docs/guides/scheduling.md +9 -1
  220. package/docs/guides/use-with-any-agent.md +49 -4
  221. package/docs/integration/bundling-akm.md +7 -6
  222. package/docs/maintainers/curate-workmap.md +1 -2
  223. package/docs/maintainers/release-checklist.md +33 -1
  224. package/docs/migration/README.md +2 -0
  225. package/docs/migration/release-notes/0.10.0.md +201 -0
  226. package/docs/migration/release-notes/README.md +1 -0
  227. package/docs/migration/v0.9-to-v0.10.md +507 -0
  228. package/docs/posts/akm-command-tour.md +3 -3
  229. package/docs/product-surface.md +1 -1
  230. package/docs/reference/README.md +1 -0
  231. package/docs/reference/api.md +65 -0
  232. package/docs/reference/asset-types.md +3 -5
  233. package/docs/reference/bundle-types.md +2 -4
  234. package/docs/reference/cli.md +160 -188
  235. package/docs/reference/configuration.md +101 -20
  236. package/docs/reference/data-and-telemetry.md +2 -2
  237. package/docs/reference/env-and-secrets.md +2 -2
  238. package/docs/reference/supported-formats.md +3 -4
  239. package/docs/reference/tasks.md +12 -19
  240. package/docs/reference/website-sources.md +1 -1
  241. package/docs/reference/workflow-schema.md +89 -317
  242. package/docs/reference/workflows.md +20 -48
  243. package/package.json +12 -2
  244. package/schemas/akm-config.json +2 -243
  245. package/schemas/akm-task.json +2 -3
  246. package/schemas/akm-workflow.json +47 -84
  247. package/dist/assets/improve-strategies/catchup.json +0 -41
  248. package/dist/assets/improve-strategies/proactive-maintenance.json +0 -24
  249. package/dist/assets/improve-strategies/quick.json +0 -17
  250. package/dist/assets/improve-strategies/reflect-distill.json +0 -29
  251. package/dist/assets/improve-strategies/thorough.json +0 -49
  252. package/dist/assets/prompts/retrieval-relevance-judge.md +0 -6
  253. package/dist/assets/tasks/improve/akm-improve-catchup.yml +0 -6
  254. package/dist/assets/tasks/improve/akm-improve-frequent.yml +0 -4
  255. package/dist/assets/tasks/improve/akm-improve-nightly.yml +0 -4
  256. package/dist/cli/retired-commands.js +0 -118
  257. package/dist/commands/improve/retrieval-gate.js +0 -132
  258. package/dist/commands/tasks/validate.js +0 -176
  259. package/dist/core/config/legacy-source-shape-shim.js +0 -117
  260. package/dist/indexer/feedback/utility-policy.js +0 -75
  261. package/dist/integrations/harnesses/ids.js +0 -28
  262. package/dist/tasks/source/task-source-v3-frozen.js +0 -424
  263. package/dist/tasks/source/task-to-v4.js +0 -863
  264. package/dist/workflows/exec/worktree.js +0 -372
  265. package/dist/workflows/freeze/child-output-references.js +0 -83
  266. package/dist/workflows/freeze/identity.js +0 -22
  267. package/dist/workflows/freeze/targets/script.js +0 -50
  268. package/dist/workflows/freeze/targets/task.js +0 -124
  269. package/dist/workflows/github-yaml.js +0 -506
  270. package/dist/workflows/runtime/run-outputs.js +0 -80
@@ -10,17 +10,11 @@ it's written, see [Running Workflows](../guides/run-workflows.md).
10
10
 
11
11
  ## Start from the template
12
12
 
13
- Authors can choose peer Markdown or GitHub-shaped YAML sources. Markdown is
14
- the full AKM authoring format: OKF-conformant frontmatter carries the
15
- orchestration graph and its body carries instructions and gate rubrics.
16
- GitHub-shaped YAML is a strict local subset for interoperability. Read the
17
- [authoritative YAML subset](../reference/workflow-schema.md#github-shaped-yaml-subset)
18
- before translating an Actions-shaped file; AKM does not accept arbitrary
19
- GitHub semantics. `.yaml` is not recognized—use `.yml`.
20
-
21
- Use `akm workflow create --print` to print a valid Markdown starter, then edit
22
- it and register it with `akm workflow create`. Author a YAML source directly
23
- under `workflows/<name>.yml` and validate either source with `akm lint`:
13
+ A workflow is a Markdown file: OKF-conformant frontmatter carries the
14
+ orchestration graph and the body carries instructions and gate rubrics.
15
+
16
+ Use `akm workflow create --print` to print a valid starter, then edit it and
17
+ register it with `akm workflow create`. Validate with `akm lint`:
24
18
 
25
19
  ```sh
26
20
  akm workflow create my-release --print # Print the template, without writing
@@ -417,70 +411,46 @@ blast radius before running it.
417
411
  [Workflow Schema: Gates and verification](../reference/workflow-schema.md#gates-and-verification)),
418
412
  so this is worth confirming once per workflow rather than assuming.
419
413
 
420
- ## Composing a task with typed inputs
414
+ ## Running a child workflow (Experimental)
421
415
 
422
- A `uses: tasks/<ref>` step in the GitHub-shaped YAML format can bind a task
423
- source v4 target's declared `inputs:` through `with:`. Given this task:
416
+ A step can run another workflow and use its result. The step names the child
417
+ in its `unit:` bag and binds the child's `params:` with `with:`:
424
418
 
425
- ```yaml
426
- # tasks/ticket-review.yml
427
- version: 4
428
- name: Ticket review
429
- inputs:
430
- ticket:
431
- type: string
432
- required: true
433
- scope:
434
- type: string
435
- enum: [changed, all]
436
- default: changed
437
- uses: commands/review
438
- ```
419
+ ```markdown
420
+ ---
421
+ type: workflow
422
+ params:
423
+ topic: { type: string }
424
+ steps:
425
+ - id: investigate
426
+ unit:
427
+ workflow: workflows/research
428
+ with:
429
+ topic: { from: params.topic }
430
+ - id: report
431
+ inputs: [steps.investigate.output]
432
+ ---
439
433
 
440
- a workflow step can bind `ticket` from an EARLIER step's output, and override
441
- `scope` with a literal:
434
+ ## investigate
442
435
 
443
- ```yaml
444
- # workflows/nightly.yml
445
- name: Nightly review
446
- on:
447
- workflow_dispatch: {}
448
- jobs:
449
- main:
450
- runs-on: [self-hosted]
451
- steps:
452
- - id: pick
453
- run: echo T-42
454
- - id: dispatch
455
- uses: tasks/ticket-review
456
- with:
457
- ticket: { from: "steps.pick.output" }
458
- scope: all
436
+ Runs the research workflow as a child run.
437
+
438
+ ## report
439
+
440
+ Summarise the research finding.
459
441
  ```
460
442
 
461
- `{from: "steps.<id>.output(.<segment>)*"}` and `{from: "params.<name>"}` are
462
- the only two reference roots; anything else, or an object carrying `from`
463
- plus any other key, is `INPUT_BINDING_INVALID` at freeze — never silently
464
- reinterpreted as a literal. `pick`'s output is resolved just before the
465
- `dispatch` unit dispatches, then validated against `ticket`'s declared
466
- schema; a literal (like `scope: all` here) is validated at freeze instead,
467
- before the plan is ever published.
468
-
469
- The composed target — `commands/review` here — receives the resolved
470
- bindings on whichever delivery surface matches its kind: an
471
- `akm/command`/`commands/<ref>` target gets a `## Task inputs` block appended
472
- to its prompt; a `run:` shell or `scripts/<ref>` target gets one
473
- `AKM_TASK_INPUTS` environment variable (canonical JSON of the resolved
474
- bindings). Inspect exactly what each step's `with:` would deliver, without
475
- running anything, with `akm workflow plan workflows/nightly --format json`
476
- — its per-step `inputBindings` show `dispatch`'s `scope` as the literal
477
- `all` and `ticket` as the unresolved reference `steps.pick.output`, the
478
- same shape freezing a real run would produce. `akm task explain` is not a
479
- substitute here: it only reflects a task's OWN CLI flags, declared
480
- defaults, and `schedule[].inputs` — it never reads a workflow step's
481
- `with:` binding at all, so pointing it at `tasks/ticket-review` prints
482
- `scope`'s task-level default (`changed`), not the `all` this step actually
483
- sends.
443
+ A `with:` value is a literal (checked against the child's param type when the
444
+ workflow is frozen) or `{ from: <reference> }`, where the reference is
445
+ `params.<name>` or `steps.<id>.output(.<segment>)*`, resolved just before the
446
+ step runs. The child's **last step output** is the composing step's output, so
447
+ `report` reads it through `inputs:`. Inspect what a step would pass, without
448
+ running anything, with `akm workflow plan workflows/<name> --format json`; the
449
+ per-step `inputBindings` show each literal and each unresolved reference.
450
+
451
+ Child workflows are Experimental. See
452
+ [Workflow Schema: Child workflows](../reference/workflow-schema.md#child-workflows)
453
+ for blocked-child recovery and the limits.
484
454
 
485
455
  ## Troubleshooting
486
456
 
@@ -250,7 +250,9 @@ akm sync my-skills -m "Update" # Named writable git bundle
250
250
  ```
251
251
 
252
252
  Push behavior depends on configuration: if the bundle is a git repo with a
253
- remote and `writable: true`, sync also pushes. Otherwise it commits only.
253
+ remote and `writable: true`, sync first fetches and merges what another host
254
+ pushed, then pushes. A conflicting merge is aborted and the push skipped (your
255
+ commit stays). Otherwise it commits only.
254
256
 
255
257
  Writes that land on a writable git bundle via an explicit destination flag
256
258
  (e.g. `akm remember --bundle my-skills`, proposal accept/revert, consolidate)
@@ -71,7 +71,7 @@ akm import - --name scratch-notes < notes.md
71
71
  akm import https://example.com/docs/auth
72
72
 
73
73
  # Route to a named writable bundle:
74
- akm import ./docs/auth-flow.md --target team-bundle
74
+ akm import ./docs/auth-flow.md --bundle team-bundle
75
75
  ```
76
76
 
77
77
  Both commands accept `--xref <ref>` to cross-reference related assets and
@@ -5,8 +5,7 @@ out inside the current session — an in-context script or tool that spawns
5
5
  subagents, runs them concurrently, and reports back before the session ends.
6
6
  AKM workflows are a different thing: a portable procedure that any supported
7
7
  agent harness can run, with durable state, retries, gates, and resume built
8
- in. Peer workflow sources are Markdown `.md` and GitHub-shaped YAML `.yml`;
9
- both adapters lower to source IR version 1. Every run freezes the durable plan
8
+ in. A workflow source is Markdown `.md`, lowered to source IR version 1. Every run freezes the durable plan
10
9
  v4 family's executable `irVersion: 5` before execution; pre-`irVersion`-5
11
10
  stored plans are rejected.
12
11
  Neither replaces the other — they solve different problems, and the right
@@ -14,7 +14,7 @@ whether a script, a workflow, or a skill covers this, so it starts broad,
14
14
  narrows to a ref, and loads that ref's content:
15
15
 
16
16
  ```sh
17
- akm curate "deploy the app to staging" --shape agent
17
+ akm curate "deploy the app to staging" --detail agent
18
18
  # → ranked shortlist; top hit: {"type":"script","ref":"scripts/deploy.sh","score":0.91,...}
19
19
 
20
20
  akm show scripts/deploy.sh
@@ -40,7 +40,7 @@ curate when you know what you're trying to do.
40
40
  (BM25) and semantic (vector) matches fused into one list:
41
41
 
42
42
  ```sh
43
- akm search "deploy" --type script --shape agent
43
+ akm search "deploy" --type script --detail agent
44
44
  # → [{"type":"script","name":"deploy.sh","ref":"scripts/deploy.sh","score":0.0328,...}]
45
45
  ```
46
46
 
@@ -53,7 +53,7 @@ akm curate "review an architecture proposal" --type skill
53
53
  # → ranked shortlist with akm show skills/code-review as the top follow-up
54
54
  ```
55
55
 
56
- Use `--shape agent` on either command to get the `ref`/`path`/`editable`
56
+ Use `--detail agent` on either command to get the `ref`/`path`/`editable`
57
57
  fields an agent needs to act on a hit. See [CLI Reference](../reference/cli.md)
58
58
  for the full flag tables and exact output-field lists per `--detail` level.
59
59
 
@@ -145,7 +145,7 @@ its ranking) and does not trigger a rewrite.
145
145
 
146
146
  ## 7. Reference links
147
147
 
148
- - [CLI Reference](../reference/cli.md) — full `--detail`/`--shape` flag
148
+ - [CLI Reference](../reference/cli.md) — full `--detail` flag
149
149
  semantics, complete flag tables, and exact output-field lists for `search`,
150
150
  `curate`, `show`, and `index`
151
151
  - [Architecture](../architecture/architecture.md) — ranking and search
@@ -162,7 +162,7 @@ your agent the payload; running it is a deliberate next step.
162
162
  ## 7. Tell your agent about akm
163
163
 
164
164
  ```sh
165
- akm help agents >> AGENTS.md
165
+ akm hints --detail brief >> AGENTS.md
166
166
  ```
167
167
 
168
168
  **Success check:** `AGENTS.md` now has a block of agent-facing usage
@@ -28,8 +28,9 @@ rewrite an asset's text. Once you have verified the correct fact, attach the
28
28
  exact fix: `--replace "<exact current text>" --with "<corrected text>"
29
29
  --source "<URL, command or file that shows it>"` (repeat `--replace`/`--with`
30
30
  for several edits). akm checks that each `--replace` text appears exactly once,
31
- records nothing if one does not, and queues the edit as a `feedback` proposal
32
- for review. `--positive` records that an asset helped (it raises its ranking)
31
+ records nothing if one does not, and applies the edit at once: no review, no
32
+ gate (the `feedback` proposal it files is accepted on the spot, so
33
+ `akm proposal revert` undoes it). `--positive` records that an asset helped (it raises its ranking)
33
34
  and does not trigger a rewrite.
34
35
 
35
36
  ```sh
@@ -112,12 +113,12 @@ It also skips a memory whose only feedback in that window is a positive with no
112
113
  reason or note: say what helped (`--reason`), or the lesson has nothing to
113
114
  distil.
114
115
  Unless `--require-feedback-signal` is set,
115
- two fallback lanes pick assets with no such feedback: high-salience assets that
116
- were never reflected, and, in a strategy that enables proactive maintenance,
117
- assets due for a revisit. They only select and score assets and plan nothing,
118
- so improve does not rewrite on a proactive cadence. The planned assets are
119
- ranked by salience and cut to `--limit`.
120
- Improve reworks only what gets read: without fresh feedback, a fallback lane
116
+ the proactive-maintenance lane (on in `default`) also plans assets with no such
117
+ feedback that are due for a revisit: at most 15 per run
118
+ (`processes.proactiveMaintenance.maxPerRun`), and only assets not reflected or
119
+ distilled for 30 days (`dueDays`), so each comes up at most once a month. The
120
+ planned assets are ranked by salience and cut to `--limit`.
121
+ Improve reworks only what gets read: without fresh feedback, the lane
121
122
  picks an asset (and a memory is judged for consolidation) only if `search`,
122
123
  `curate` or `show` returned it, or feedback named it, in the last 90 days — the
123
124
  usage log's retention — or if it is new material no improve stage has processed
@@ -171,7 +172,7 @@ akm proposal diff <id> # Preview the change vs. the liv
171
172
 
172
173
  # Apply or discard
173
174
  akm proposal accept <uuid-or-prefix>
174
- akm proposal accept skills/akm-dream --target team-bundle
175
+ akm proposal accept skills/akm-dream --bundle team-bundle
175
176
  akm proposal reject <uuid-or-prefix> --reason "duplicates existing workflow"
176
177
  ```
177
178
 
@@ -31,7 +31,7 @@ akm info
31
31
  akm search "test"
32
32
 
33
33
  # 7. Install agent guidance
34
- akm help agents >> AGENTS.md
34
+ akm hints --detail brief >> AGENTS.md
35
35
 
36
36
  echo "akm setup complete"
37
37
  ```
@@ -85,7 +85,7 @@ indexing.
85
85
  `indexStats.entryCount` and `semanticSearch.status`; `akm search "<query>"`
86
86
  confirms retrieval actually returns results.
87
87
 
88
- **Install agent guidance.** `akm help agents >> AGENTS.md` appends the
88
+ **Install agent guidance.** `akm hints --detail brief >> AGENTS.md` appends the
89
89
  canonical usage block agents need to discover and use the library. Run this
90
90
  after indexing so the guidance matches the installed version.
91
91
 
@@ -21,7 +21,7 @@ projects.
21
21
 
22
22
  Every new run/start compiles source IR v1 and freezes the durable plan v4
23
23
  family's current executable format (`irVersion: 5`) before publishing the run.
24
- Markdown `.md` and GitHub-shaped `.yml` refs use the same freeze path.
24
+ A workflow ref is a Markdown `.md` source.
25
25
 
26
26
  ```sh
27
27
  akm workflow run workflows/ship-release --version 1.2.3
@@ -76,9 +76,17 @@ the command is `akm improve`'s own:
76
76
 
77
77
  ```sh
78
78
  akm task add improve-team --schedule "15 3 * * *" \
79
- --command "akm improve --bundle team --skip-if-locked --require-engines"
79
+ --command "akm improve --bundle team --require-engines"
80
80
  ```
81
81
 
82
+ Leave `--skip-if-locked` off a once-a-night run: if a short-cadence improve task
83
+ holds the lock when it fires, the run fails with `IMPROVE_LOCK_HELD` (exit 75) and
84
+ is recorded, rather than being silently skipped. Put `--skip-if-locked` on the
85
+ frequent tasks, and give them a `--timeout-ms` that ends before the nightly starts.
86
+ The shipped `improve/akm-improve-consolidate` task does both: it runs at `:20`
87
+ every four hours with `--timeout-ms 3600000`, so the 00:20 run is over by 01:20,
88
+ well before the 02:00 nightly.
89
+
82
90
  ## Rerunning setup preserves scheduler bindings
83
91
 
84
92
  Rerunning `akm setup` preserves existing scheduler bindings by design — it
@@ -26,7 +26,7 @@ For a longer, agent-facing instruction block — usage patterns, flag guidance,
26
26
  the full ref format — generate one instead of hand-writing it:
27
27
 
28
28
  ```sh
29
- akm help agents >> AGENTS.md
29
+ akm hints --detail brief >> AGENTS.md
30
30
  ```
31
31
 
32
32
  The output is stable across patch releases and designed for agents rather
@@ -50,7 +50,7 @@ akm show workflows/deploy-to-prod
50
50
  akm feedback workflows/deploy-to-prod --positive --reason "Completed without issues"
51
51
  ```
52
52
 
53
- **Get refs from search.** Agents should call `akm search --shape agent` or
53
+ **Get refs from search.** Agents should call `akm search --detail agent` or
54
54
  `akm curate` to discover refs — not guess them. The `ref` field in search
55
55
  results is the stable token to pass to `akm show`. Feedback closes the loop.
56
56
  Record `--negative` only when the asset's content is wrong or stale; a note that
@@ -70,7 +70,7 @@ sets expectations by environment.
70
70
 
71
71
  | Environment | Core support | Optional/extended support |
72
72
  | --- | --- | --- |
73
- | Shell-capable coding agent | `curate` / `show` / `feedback` via the CLI | Generated prompt block (`akm help agents`) or a platform plugin |
73
+ | Shell-capable coding agent | `curate` / `show` / `feedback` via the CLI | Generated prompt block (`akm hints`) or a platform plugin |
74
74
  | Claude/OpenCode project layout | Indexed in place through a `BundleAdapter` — no migration needed | `akm clone` selected assets into a writable bundle for editing |
75
75
  | IDE assistant without shell access | Not a direct core integration | Requires a plugin, an `akm task`, or an external bridge that can shell out on the assistant's behalf |
76
76
 
@@ -118,12 +118,57 @@ than replacing either.
118
118
  browsing, automatic context injection — but the core `akm` CLI works
119
119
  without them.
120
120
 
121
+ ## OpenCode plugins: one package per OpenCode major
122
+
123
+ OpenCode 1 and OpenCode 2 load different plugin APIs, so akm ships one plugin
124
+ package for each. Install only the one that matches the `opencode` you run; akm
125
+ never installs or replaces the `opencode` binary, and `akm upgrade` never adds
126
+ one plugin to the other major's config.
127
+
128
+ | OpenCode | Plugin package | Config key | Plugin cache |
129
+ | --- | --- | --- | --- |
130
+ | 1 | `akm-opencode` | `"plugin"` | `~/.cache/opencode/packages/akm-opencode@<tag>/` |
131
+ | 2 | `akm-opencode-v2` | `"plugins"` (the key `opencode plugin add` writes) | `~/.cache/opencode/npm/akm-opencode-v2@<tag>/<build>/` |
132
+
133
+ (`$XDG_CACHE_HOME` and `$XDG_CONFIG_HOME` move both.) Both packages declare the
134
+ same `akm-cli` dependency.
135
+
136
+ **OpenCode 1.** Add `akm-opencode` to the global config
137
+ (`~/.config/opencode/opencode.json`):
138
+
139
+ ```json
140
+ { "plugin": ["akm-opencode"] }
141
+ ```
142
+
143
+ **OpenCode 2.**
144
+
145
+ ```sh
146
+ opencode plugin add akm-opencode-v2
147
+ ```
148
+
149
+ This installs the package and adds it to `plugins` in the global config.
150
+
151
+ **Updating.** `akm upgrade` refreshes the cached plugin of each major it finds,
152
+ holds the CLI to the `akm-cli` those plugins pin, and leaves a plugin alone
153
+ whose config pins another spec such as `akm-opencode@0.8.0`. Use
154
+ `akm upgrade --next` with `akm-opencode@next` / `akm-opencode-v2@next` in the
155
+ config to follow prereleases. The exact rules are in the
156
+ [`akm upgrade` reference](../reference/cli.md#harness-plugins). `akm health`
157
+ warns when either plugin's bundled `akm-cli` differs from the running CLI.
158
+
159
+ **Which OpenCode akm drives** is detected, not configured: an `opencode` or
160
+ `opencode-sdk` agent engine runs the most recent OpenCode on `PATH` (or its own
161
+ `bin`) and uses the adapters for the major that binary reports; OpenCode 1 logs a
162
+ warning recommending OpenCode 2 (see
163
+ [Configuration](../reference/configuration.md#engines)). It does not change
164
+ which plugin you install, and the plugin choice does not change it.
165
+
121
166
  ## See also
122
167
 
123
168
  - [Configuration](../reference/configuration.md#engines) — named agent engines and model aliases
124
169
  - [Discover and Load](discover-and-load.md) — the full curate → show retrieval path
125
170
  - [Knowledge Management](knowledge-management.md) — capturing agent-generated memories
126
171
  - [Improve the Library](improve-the-library.md) — feeding back usage signals
127
- - [CLI Reference](../reference/cli.md) — `completions`, `agent`, and `help agents` command documentation
172
+ - [CLI Reference](../reference/cli.md) — `completions`, `agent`, and `hints` command documentation
128
173
  - [Concepts](concepts.md) — refs, origins, and the asset type system
129
174
  - [Bundle Types](../reference/bundle-types.md) — how AKM indexes existing project layouts in place
@@ -30,10 +30,11 @@ akm migrate apply
30
30
  In order, every run applies (or, under `status`/`--dry-run`, plans):
31
31
 
32
32
  1. **config.json in its current shape** (`configFile`): retired and unknown
33
- keys dropped, legacy `extraParams` lifted onto first-class fields, the
34
- legacy `stashDir`/`sources[]`/`installed` layout converted to
35
- `bundles`/`defaultBundle`. Config loading already does all of this in
36
- memory; this persists it under a backup.
33
+ keys dropped, `configVersion` set. Config loading already does this in
34
+ memory; this persists it under a backup. A config older than 0.9.15 (the
35
+ legacy `stashDir`/`sources[]`/`installed` layout, an `extraParams` key
36
+ that shadows a first-class field) is not converted by 0.10: it blocks
37
+ with a message to run `akm migrate apply` under akm 0.9.x first.
37
38
  2. **Pending `state.db` migrations**, historical-destructive ones included
38
39
  (`stateMigrations`). This is the only path (besides `akm upgrade`, which
39
40
  calls the same code) that is allowed to apply a destructive migration to an
@@ -98,7 +99,7 @@ same step names):
98
99
  `status` is one of:
99
100
 
100
101
  - **`current`** — no task-source file needs converting, and no config
101
- extraParams lift is pending. A no-op boot.
102
+ rewrite is pending. A no-op boot.
102
103
  - **`ready`** — task sources have eligible changes and no config-lift
103
104
  conflict; a real `apply` will clear them.
104
105
  - **`blocked`** — at least one item cannot be applied automatically (a
@@ -244,7 +245,7 @@ akm-migrate apply
244
245
 
245
246
  `akm migrate status`/`apply` (under the `akm` CLI) are a thin wrapper over
246
247
  this same executable — same plan, same exit codes. Reach for `akm-migrate`
247
- directly when you don't want `akm`'s `--format`/`--shape`/`--detail` output
248
+ directly when you don't want `akm`'s `--format`/`--detail` output
248
249
  handling in the way, e.g. a shell script that just wants the raw JSON line
249
250
  on stdout and a plain exit code.
250
251
 
@@ -197,8 +197,7 @@ Important details:
197
197
 
198
198
  - `curate` has a dedicated output shaper now
199
199
  - `brief` still keeps `followUp` and `reason`
200
- - `--shape agent` trims fields down for agent use
201
- - `--shape summary` is rejected on `curate`
200
+ - `--detail agent` trims fields down for agent use
202
201
  - text output prints fixed `Next steps:` guidance that assumes `akm show <ref>` is the next action
203
202
 
204
203
  ## Telemetry And Retrieval Signal
@@ -6,7 +6,14 @@ run of the exact commit that will be published.
6
6
 
7
7
  ## 1. Freeze the candidate
8
8
 
9
- 1. Finish the version, changelog, migration-note, and release-PR changes.
9
+ 1. Finish the version, changelog, migration-note, and release-PR changes. From
10
+ 0.10 the version is a monthly release number, `0.10.YYMMNN` (see step 4):
11
+ `bun scripts/release-version.ts next` prints the next free one for this
12
+ month (UTC). Every release, whatever its stage, takes the next number.
13
+ Commit it in `package.json` and cut the CHANGELOG as
14
+ `## [0.10.YYMMNN] - YYYY-MM-DD`. A prerelease stage is not committed: it is
15
+ chosen when the Release workflow runs, and the release's CHANGELOG section
16
+ covers it.
10
17
  2. Record `git rev-parse HEAD`. This is the full 40-character release-candidate SHA.
11
18
  3. Run `bun run release:check` locally. If Docker is unavailable, run
12
19
  `./tests/release-check.sh --skip-docker` and rely on the gated Docker job
@@ -101,3 +108,28 @@ After the exact-SHA gated run and local release check are green, trigger the
101
108
  Release workflow with the version already committed in `package.json`. Keep the
102
109
  candidate SHA and Gated CI run URL in the release record so the published
103
110
  artifact's validation can be audited later.
111
+
112
+ 0.10 and later use monthly release numbers, `0.10.YYMMNN`: `YY` the UTC year,
113
+ `MM` the month and `NN` the release in that month (`01` to `99`), two digits
114
+ each (see [`STABILITY.md`](../../STABILITY.md)). The first release of 2026-10 is
115
+ `0.10.261001`. `bun scripts/release-version.ts next` takes `NN` as one above the
116
+ highest release already on npm for this UTC month, with or without a stage
117
+ (`npm view akm-cli versions`), so numbering follows what was published, not
118
+ what was committed. The retired 8-digit daily builds (`0.10.26101001-alpha` to
119
+ `0.10.26101202-alpha`) are not counted.
120
+
121
+ The workflow has two inputs:
122
+
123
+ - `version`: the version committed in `package.json`, as before. The workflow
124
+ rejects a malformed one (`scripts/release-version.ts`, tested in
125
+ `tests/release-version.test.ts`): two digits each for `YY`, `MM`, `NN`, a
126
+ month 01 to 12, `NN` 01 to 99; the old 8-digit daily form is rejected. For
127
+ 0.9 and older it is the `X.Y.Z` as before.
128
+ - `stage`: `none` publishes `<version>` to the npm `latest` tag and as a GitHub
129
+ release. `alpha`, `beta` or `rc` publishes `<version>-<stage>` to `next` as a
130
+ GitHub prerelease (no `.N`: every release has its own number). There is no
131
+ promoting one build through stages: the next release, at any stage, commits
132
+ the next number (`0.10.261001-alpha`, then `0.10.261002-beta`, then
133
+ `0.10.261003`).
134
+
135
+ `bun scripts/release-version.ts validate <version>` checks a version by hand.
@@ -2,6 +2,8 @@
2
2
 
3
3
  Upgrade guides and per-release migration notes.
4
4
 
5
+ - [v0.9 -> v0.10 migration guide](v0.9-to-v0.10.md) -- Upgrade order for a 0.9.15+ install, every removed CLI spelling, strategy, config key and workflow feature with its replacement, changed `akm improve` defaults, the OpenCode plugins, and `0.10.YYMMNN` version numbers
6
+ - [v0.10.0 release note](release-notes/0.10.0.md) -- Summary of the 0.10 series: the 0.9.15 version floor, `--shape`/`--target`/`help agents` removals, `default` and `consolidate` as the only built-in strategies, OpenCode 2, feedback-scaled ranking, and what is gone
5
7
  - [v0.9.1 -> v0.9.2 migration guide](v0.9.1-to-v0.9.2.md) -- Task-v2/task-v3 to task source v4 conversion, the durable-v4-family workflow boundary at executable `irVersion: 5`, and release behavior changes
6
8
  - [v0.9.2 release note](release-notes/0.9.2.md) -- Self-contained terminal upgrade summary shipped for `akm help migrate 0.9.2`
7
9
  - [v0.9.16 release note](release-notes/0.9.16.md) -- Source-bound scheduler grants, local execution authority, and split unsafe overrides