akm-cli 0.10.261012-beta → 0.10.261014-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 (518) hide show
  1. package/CHANGELOG.md +710 -3
  2. package/README.md +15 -0
  3. package/SECURITY.md +11 -10
  4. package/STABILITY.md +47 -51
  5. package/dist/assets/hints/cli-hints-full.md +21 -19
  6. package/dist/assets/hints/cli-hints-short.md +3 -4
  7. package/dist/assets/opencode/akm-plugin.js +177 -0
  8. package/dist/assets/stash-skeleton/README.md +1 -1
  9. package/dist/assets/tasks/core/improve.yml +1 -1
  10. package/dist/assets/tasks/improve/akm-improve-consolidate.yml +1 -1
  11. package/dist/assets/ui/config.js +27 -10
  12. package/dist/assets/workflows/workflow-template.md +2 -2
  13. package/dist/cli/clack.js +3 -1
  14. package/dist/cli/selection.js +33 -0
  15. package/dist/cli/shared.js +14 -1
  16. package/dist/cli/unknown-flags.js +6 -37
  17. package/dist/cli.js +69 -48
  18. package/dist/commands/agent/agent-dispatch.js +17 -25
  19. package/dist/commands/agent/contribute-cli.js +9 -8
  20. package/dist/commands/command/command-cli.js +4 -8
  21. package/dist/commands/command/command-execution.js +25 -39
  22. package/dist/commands/command/execution-source-loader.js +10 -14
  23. package/dist/commands/completions.js +1 -1
  24. package/dist/commands/config-cli.js +14 -5
  25. package/dist/commands/env/child-env.js +12 -14
  26. package/dist/commands/env/env-binding.js +47 -58
  27. package/dist/commands/env/env-cli.js +22 -24
  28. package/dist/commands/env/env.js +10 -58
  29. package/dist/commands/env/secret-cli.js +11 -29
  30. package/dist/commands/env/secret.js +3 -10
  31. package/dist/commands/health/checks.js +10 -849
  32. package/dist/commands/health/connections-and-harnesses-check.js +109 -0
  33. package/dist/commands/health/egress.js +3 -3
  34. package/dist/commands/health/html-report.js +9 -10
  35. package/dist/commands/health/plugin-staleness.js +18 -11
  36. package/dist/commands/health/report-view-model.js +16 -12
  37. package/dist/commands/health/scheduler-binary.js +1 -1
  38. package/dist/commands/health/semantic-search-check.js +85 -0
  39. package/dist/commands/health/type-directory-check.js +0 -3
  40. package/dist/commands/health.js +30 -42
  41. package/dist/commands/improve/consolidate/pair-pass.js +10 -25
  42. package/dist/commands/improve/consolidate.js +10 -15
  43. package/dist/commands/improve/distill.js +5 -17
  44. package/dist/commands/improve/eligibility.js +1 -3
  45. package/dist/commands/improve/execution.js +37 -40
  46. package/dist/commands/improve/extract-cli.js +6 -11
  47. package/dist/commands/improve/extract-prompt.js +2 -2
  48. package/dist/commands/improve/extract.js +67 -97
  49. package/dist/commands/improve/improve-cli.js +22 -128
  50. package/dist/commands/improve/improve-report.js +1 -1
  51. package/dist/commands/improve/improve-strategies.js +25 -108
  52. package/dist/commands/improve/improve.js +10 -14
  53. package/dist/commands/improve/loop-stages.js +3 -0
  54. package/dist/commands/improve/memory/memory-improve.js +1 -1
  55. package/dist/commands/improve/preparation.js +8 -13
  56. package/dist/commands/improve/reflect.js +203 -332
  57. package/dist/commands/improve/retrieval-scope.js +1 -1
  58. package/dist/commands/improve/session-asset.js +3 -2
  59. package/dist/commands/improve/stage.js +87 -115
  60. package/dist/commands/lint/base-linter.js +3 -3
  61. package/dist/commands/lint/env-key-rules.js +7 -6
  62. package/dist/commands/lint/index.js +3 -3
  63. package/dist/commands/models-cli.js +103 -63
  64. package/dist/commands/proposal/drain.js +26 -39
  65. package/dist/commands/proposal/proposal-cli.js +14 -18
  66. package/dist/commands/proposal/propose-cli.js +4 -2
  67. package/dist/commands/proposal/propose.js +37 -64
  68. package/dist/commands/proposal/repository.js +17 -17
  69. package/dist/commands/proposal/validators/proposal-validators.js +3 -6
  70. package/dist/commands/read/curate.js +10 -6
  71. package/dist/commands/read/registry-search.js +2 -48
  72. package/dist/commands/read/search-cli.js +1 -8
  73. package/dist/commands/read/search.js +5 -6
  74. package/dist/commands/read/show.js +6 -29
  75. package/dist/commands/remember.js +25 -40
  76. package/dist/commands/sources/add-cli.js +8 -63
  77. package/dist/commands/sources/bundle-cli.js +8 -9
  78. package/dist/commands/sources/bundle-config-ops.js +2 -2
  79. package/dist/commands/sources/info.js +12 -1
  80. package/dist/commands/sources/init.js +1 -1
  81. package/dist/commands/sources/installed-stashes.js +119 -63
  82. package/dist/commands/sources/migration-help.js +1 -1
  83. package/dist/commands/sources/plugin-upgrade.js +8 -15
  84. package/dist/commands/sources/schema-repair.js +4 -10
  85. package/dist/commands/sources/source-add.js +2 -2
  86. package/dist/commands/sources/source-clone.js +31 -7
  87. package/dist/commands/sources/source-manage.js +4 -4
  88. package/dist/commands/targets.js +175 -0
  89. package/dist/commands/tasks/explain.js +104 -69
  90. package/dist/commands/tasks/tasks-cli.js +9 -11
  91. package/dist/commands/tasks/tasks.js +75 -97
  92. package/dist/commands/ui/api.js +11 -3
  93. package/dist/commands/ui/redact.js +5 -31
  94. package/dist/commands/ui/workspace-actions.js +1 -1
  95. package/dist/commands/workflow/plan.js +48 -9
  96. package/dist/commands/workflow-cli.js +40 -45
  97. package/dist/core/adapter/adapters/agent-skills-adapter.js +10 -11
  98. package/dist/core/adapter/adapters/akm-adapter.js +36 -41
  99. package/dist/core/adapter/adapters/akm-lint.js +10 -12
  100. package/dist/core/adapter/adapters/akm-metadata.js +2 -2
  101. package/dist/core/adapter/adapters/akm-task-adapter.js +8 -9
  102. package/dist/core/adapter/adapters/akm-workflow-adapter.js +5 -5
  103. package/dist/core/adapter/adapters/claude-adapter.js +1 -1
  104. package/dist/core/adapter/adapters/dotenv-adapter.js +7 -6
  105. package/dist/core/adapter/adapters/generic-files-adapter.js +5 -5
  106. package/dist/core/adapter/adapters/index.js +3 -4
  107. package/dist/core/adapter/adapters/llm-wiki-adapter.js +12 -14
  108. package/dist/core/adapter/adapters/okf-adapter.js +8 -10
  109. package/dist/core/adapter/adapters/opencode-adapter.js +1 -1
  110. package/dist/core/adapter/adapters/shared.js +3 -3
  111. package/dist/core/adapter/adapters/tool-dir-shared.js +7 -25
  112. package/dist/core/adapter/adapters/website-snapshot-adapter.js +3 -3
  113. package/dist/core/adapter/detect-adapter.js +1 -1
  114. package/dist/core/adapter/execution-source.js +13 -35
  115. package/dist/core/adapter/registry.js +1 -1
  116. package/dist/core/adapter/validate-context.js +2 -4
  117. package/dist/core/asset/asset-placement.js +1 -1
  118. package/dist/core/asset/asset-ref.js +3 -3
  119. package/dist/core/asset/resolve-ref.js +5 -0
  120. package/dist/core/bundle-rename.js +12 -4
  121. package/dist/core/closest-match.js +37 -0
  122. package/dist/core/common.js +37 -57
  123. package/dist/core/config/config-io.js +26 -18
  124. package/dist/core/config/config-schema.js +19 -106
  125. package/dist/core/config/config-sources.js +3 -3
  126. package/dist/core/config/config-types.js +4 -4
  127. package/dist/core/config/config-walker.js +50 -77
  128. package/dist/core/config/config.js +438 -109
  129. package/dist/core/config/convert-engine-references.js +114 -0
  130. package/dist/core/config/convert-engines-shared.js +40 -0
  131. package/dist/core/config/convert-engines.js +300 -0
  132. package/dist/core/config/convert-models-overlay.js +137 -0
  133. package/dist/core/config/credentials.js +304 -0
  134. package/dist/core/config/engine-semantics.js +3 -3
  135. package/dist/core/config/migrate-keys.js +222 -0
  136. package/dist/core/config/model-aliases.js +37 -0
  137. package/dist/core/config/models-file.js +34 -0
  138. package/dist/core/config/retired-engines.js +53 -0
  139. package/dist/core/config/schema/connections.js +41 -0
  140. package/dist/core/config/schema/embedding.js +2 -2
  141. package/dist/core/config/schema/harnesses.js +41 -0
  142. package/dist/core/config/schema/improve-processes.js +9 -28
  143. package/dist/core/config/schema/improve.js +36 -1
  144. package/dist/core/config/schema/index-config.js +18 -20
  145. package/dist/core/config/schema/primitives.js +42 -17
  146. package/dist/core/config/schema/search.js +6 -11
  147. package/dist/core/config/schema/sources-bundles.js +9 -9
  148. package/dist/core/config/schema/workflow.js +2 -6
  149. package/dist/core/config/unusable-entries.js +66 -0
  150. package/dist/core/content-safety.js +3 -6
  151. package/dist/core/endpoint-url.js +47 -0
  152. package/dist/core/env-secret-ref.js +84 -73
  153. package/dist/core/errors.js +10 -16
  154. package/dist/core/extra-params.js +3 -3
  155. package/dist/core/improve-result.js +8 -9
  156. package/dist/core/json-schema.js +1 -1
  157. package/dist/core/lesson-lint.js +1 -1
  158. package/dist/core/llm-inference.js +80 -0
  159. package/dist/core/parse.js +2 -2
  160. package/dist/core/paths.js +33 -10
  161. package/dist/core/recognition-util.js +8 -10
  162. package/dist/core/redaction.js +94 -55
  163. package/dist/core/ref-token.js +82 -0
  164. package/dist/core/secret-value.js +14 -0
  165. package/dist/core/state/migrations.js +17 -22
  166. package/dist/core/structured.js +2 -68
  167. package/dist/core/subprocess.js +63 -22
  168. package/dist/core/type-presentation.js +10 -14
  169. package/dist/core/write-source.js +20 -4
  170. package/dist/execution/input-contract.js +3 -6
  171. package/dist/execution/notices.js +49 -0
  172. package/dist/execution/resolved-request.js +24 -40
  173. package/dist/execution/source.js +21 -45
  174. package/dist/execution/target-ref.js +2 -2
  175. package/dist/indexer/bundle-identity-guard.js +6 -5
  176. package/dist/indexer/ensure-index.js +1 -1
  177. package/dist/indexer/index-writer-lock.js +1 -1
  178. package/dist/indexer/indexer.js +46 -42
  179. package/dist/indexer/installations.js +12 -22
  180. package/dist/indexer/lookup/adapter-concept-owner.js +40 -14
  181. package/dist/indexer/materialize-embeddings.js +20 -16
  182. package/dist/indexer/passes/memory-inference.js +21 -50
  183. package/dist/indexer/passes/metadata.js +5 -5
  184. package/dist/indexer/scan/doc-to-entry.js +1 -1
  185. package/dist/indexer/scan/drain-dir.js +9 -11
  186. package/dist/indexer/search/db-search.js +9 -7
  187. package/dist/indexer/search/search-source.js +42 -22
  188. package/dist/indexer/usage/usage-events.js +2 -3
  189. package/dist/indexer/walk/index-context.js +2 -1
  190. package/dist/indexer/walk/matchers.js +3 -11
  191. package/dist/indexer/walk/path-resolver.js +13 -68
  192. package/dist/indexer/walk/walker.js +32 -26
  193. package/dist/integrations/agent/akm-read-tools.js +81 -0
  194. package/dist/integrations/agent/config.js +1 -1
  195. package/dist/integrations/agent/detect.js +32 -36
  196. package/dist/integrations/agent/execution.js +130 -428
  197. package/dist/integrations/agent/index.js +1 -1
  198. package/dist/integrations/agent/profiles.js +24 -28
  199. package/dist/integrations/agent/prompts.js +17 -30
  200. package/dist/integrations/agent/request-lowering.js +67 -101
  201. package/dist/integrations/agent/resolution.js +332 -0
  202. package/dist/integrations/agent/runner-dispatch.js +156 -181
  203. package/dist/integrations/agent/runner.js +20 -70
  204. package/dist/integrations/agent/runtime-port.js +4 -0
  205. package/dist/integrations/agent/runtime.js +10 -0
  206. package/dist/integrations/agent/spawn.js +65 -190
  207. package/dist/integrations/harnesses/aider/index.js +19 -39
  208. package/dist/integrations/harnesses/amazonq/index.js +17 -32
  209. package/dist/integrations/harnesses/claude/index.js +59 -28
  210. package/dist/integrations/harnesses/claude/session-log.js +7 -5
  211. package/dist/integrations/harnesses/codex/index.js +19 -31
  212. package/dist/integrations/harnesses/copilot/index.js +17 -35
  213. package/dist/integrations/harnesses/gemini/index.js +18 -34
  214. package/dist/integrations/harnesses/harness.js +36 -0
  215. package/dist/integrations/harnesses/index.js +20 -51
  216. package/dist/integrations/harnesses/opencode/agent-builder.js +132 -100
  217. package/dist/integrations/harnesses/opencode/index.js +11 -33
  218. package/dist/integrations/harnesses/opencode/roots.js +50 -0
  219. package/dist/integrations/harnesses/opencode/runtime/binary.js +206 -0
  220. package/dist/integrations/harnesses/opencode/runtime/command.js +152 -0
  221. package/dist/integrations/harnesses/opencode/runtime/index.js +177 -0
  222. package/dist/integrations/harnesses/opencode/runtime/tar.js +107 -0
  223. package/dist/integrations/harnesses/opencode/session-log-v1.js +15 -7
  224. package/dist/integrations/harnesses/opencode/session-log-v2.js +72 -48
  225. package/dist/integrations/harnesses/opencode/session-log.js +58 -137
  226. package/dist/integrations/harnesses/opencode/version.js +34 -53
  227. package/dist/integrations/harnesses/openhands/index.js +13 -37
  228. package/dist/integrations/harnesses/pi/index.js +21 -32
  229. package/dist/integrations/lockfile.js +1 -1
  230. package/dist/integrations/session-logs/index.js +11 -31
  231. package/dist/llm/client.js +93 -111
  232. package/dist/llm/embedder.js +19 -34
  233. package/dist/llm/embedders/connection.js +31 -0
  234. package/dist/llm/embedders/local-model-files.js +56 -0
  235. package/dist/llm/embedders/local.js +146 -115
  236. package/dist/llm/embedders/remote.js +26 -23
  237. package/dist/llm/embedders/types.js +1 -1
  238. package/dist/llm/index-passes.js +33 -39
  239. package/dist/llm/memory-infer.js +67 -77
  240. package/dist/llm/model-list.js +35 -0
  241. package/dist/llm/rerank-client.js +8 -14
  242. package/dist/llm/structured-call.js +45 -99
  243. package/dist/llm/structured.js +60 -0
  244. package/dist/output/renderers.js +2 -8
  245. package/dist/output/shapes/helpers.js +18 -44
  246. package/dist/output/shapes/passthrough.js +1 -0
  247. package/dist/output/shapes.js +1 -7
  248. package/dist/output/text/command-format.js +41 -39
  249. package/dist/output/text/health-format.js +8 -2
  250. package/dist/output/text/helpers.js +1 -1
  251. package/dist/output/text/migrate.js +12 -0
  252. package/dist/output/text/models.js +3 -2
  253. package/dist/output/text/registry-commands.js +1 -2
  254. package/dist/output/text/show-directives.js +16 -28
  255. package/dist/output/text/show-format.js +0 -2
  256. package/dist/output/text/targets-table.js +70 -0
  257. package/dist/output/text/workflow-format.js +44 -15
  258. package/dist/output/text.js +1 -1
  259. package/dist/registry/providers/skills-sh.js +1 -28
  260. package/dist/registry/providers/static-index.js +1 -71
  261. package/dist/runtime.js +6 -2
  262. package/dist/scripts/akm-migrate-node.js +47095 -44905
  263. package/dist/scripts/akm-migrate.js +46946 -44755
  264. package/dist/setup/detect.js +28 -273
  265. package/dist/setup/endpoint.js +36 -0
  266. package/dist/setup/semantic-assets.js +13 -19
  267. package/dist/setup/setup-flags.js +77 -0
  268. package/dist/setup/setup-plan.js +144 -0
  269. package/dist/setup/setup.js +134 -358
  270. package/dist/setup/steps/connection-shared.js +49 -101
  271. package/dist/setup/steps/connection.js +121 -524
  272. package/dist/setup/steps/embeddings.js +151 -0
  273. package/dist/setup/steps/harnesses.js +118 -0
  274. package/dist/setup/steps/platforms.js +2 -81
  275. package/dist/setup/steps/tasks.js +1 -2
  276. package/dist/setup/steps.js +10 -0
  277. package/dist/setup/summary.js +67 -0
  278. package/dist/sources/freshness.js +16 -21
  279. package/dist/sources/providers/git-provider.js +2 -9
  280. package/dist/sources/providers/provider-utils.js +13 -5
  281. package/dist/sources/resolve.js +12 -16
  282. package/dist/sources/snapshot-fetchers/robots.js +11 -12
  283. package/dist/sources/snapshot-fetchers/secret-seam.js +2 -4
  284. package/dist/sources/snapshot-fetchers/website-ingest.js +8 -15
  285. package/dist/sources/snapshot-fetchers/x.js +1 -1
  286. package/dist/standalone/onnxruntime-library.js +52 -0
  287. package/dist/storage/repositories/improve-ledger-repository.js +1 -1
  288. package/dist/storage/repositories/improve-runs-repository.js +0 -13
  289. package/dist/storage/repositories/index-entries-repository.js +2 -2
  290. package/dist/storage/repositories/proposals-repository.js +2 -2
  291. package/dist/storage/repositories/task-history-repository.js +2 -2
  292. package/dist/storage/repositories/workflow-runs-repository.js +44 -129
  293. package/dist/storage/sqlite-read-snapshot.js +33 -29
  294. package/dist/tasks/embedded.js +1 -1
  295. package/dist/tasks/log-redaction.js +7 -119
  296. package/dist/tasks/prepare/prepare-support.js +8 -7
  297. package/dist/tasks/prepare/prepare.js +8 -9
  298. package/dist/tasks/prepare/script-capture.js +9 -25
  299. package/dist/tasks/run/attempt-lifecycle.js +17 -35
  300. package/dist/tasks/run/load-task.js +54 -27
  301. package/dist/tasks/run/run-command-task.js +15 -10
  302. package/dist/tasks/run/run-native-task.js +8 -21
  303. package/dist/tasks/run/run-task.js +5 -8
  304. package/dist/tasks/run/run-workflow-task.js +14 -21
  305. package/dist/tasks/run/task-history.js +9 -17
  306. package/dist/tasks/run/task-log.js +1 -5
  307. package/dist/tasks/scheduler-invocation.js +13 -18
  308. package/dist/tasks/scheduler-sync.js +0 -1
  309. package/dist/tasks/source/bounded-document.js +31 -117
  310. package/dist/tasks/source/parse-task-source.js +0 -1
  311. package/dist/tasks/source/project-v4.js +5 -3
  312. package/dist/tasks/source/task-input-diagnostics.js +3 -4
  313. package/dist/tasks/source/task-source-v4.js +48 -72
  314. package/dist/tasks/source-v3.js +2 -5
  315. package/dist/tasks/task-run-reserved-flags.js +1 -2
  316. package/dist/workflows/authoring/authoring.js +2 -7
  317. package/dist/workflows/compile.js +1 -15
  318. package/dist/workflows/concurrency-policy.js +4 -4
  319. package/dist/workflows/exec/child-workflow.js +1 -4
  320. package/dist/workflows/exec/dispatch-redaction.js +35 -86
  321. package/dist/workflows/exec/environment.js +13 -77
  322. package/dist/workflows/exec/exec-unit.js +14 -55
  323. package/dist/workflows/exec/frozen-judge.js +26 -28
  324. package/dist/workflows/exec/native-executor.js +126 -71
  325. package/dist/workflows/exec/run-workflow.js +38 -42
  326. package/dist/workflows/exec/step-work.js +13 -17
  327. package/dist/workflows/exec/unit-dispatch.js +7 -21
  328. package/dist/workflows/freeze/environment.js +14 -119
  329. package/dist/workflows/freeze/freeze.js +14 -33
  330. package/dist/workflows/freeze/step-values.js +6 -13
  331. package/dist/workflows/freeze/targets/child-workflow.js +3 -5
  332. package/dist/workflows/freeze/targets/command.js +9 -15
  333. package/dist/workflows/freeze/targets/shell.js +0 -3
  334. package/dist/workflows/freeze/task-bindings.js +0 -1
  335. package/dist/workflows/parser.js +50 -59
  336. package/dist/workflows/plan.js +8 -2
  337. package/dist/workflows/renderer.js +83 -9
  338. package/dist/workflows/resource-limits.js +2 -2
  339. package/dist/workflows/runtime/run-plan.js +38 -23
  340. package/dist/workflows/runtime/runs.js +55 -93
  341. package/dist/workflows/runtime/workflow-asset-loader.js +55 -86
  342. package/dist/workflows/source-files.js +7 -19
  343. package/docs/README.md +10 -16
  344. package/docs/architecture/README.md +2 -37
  345. package/docs/architecture/adapters.md +2 -2
  346. package/docs/architecture/akm-core-principles.md +256 -118
  347. package/docs/architecture/architecture.md +283 -99
  348. package/docs/architecture/improvement.md +8 -2
  349. package/docs/architecture/internals/classification.md +1 -3
  350. package/docs/architecture/internals/fresh-host-rebuild-runbook.md +7 -6
  351. package/docs/architecture/internals/health-advisories.md +35 -74
  352. package/docs/architecture/internals/improve-workflow.md +27 -26
  353. package/docs/architecture/internals/indexing.md +3 -3
  354. package/docs/architecture/internals/storage-locations.md +48 -15
  355. package/docs/architecture/persisted-data-compat.md +10 -6
  356. package/docs/architecture/specs/okf-support.md +9 -11
  357. package/docs/architecture/specs/ref.md +7 -9
  358. package/docs/architecture/testing/testing-workflow.md +172 -52
  359. package/docs/architecture/workflow-engine.md +51 -34
  360. package/docs/guides/README.md +0 -1
  361. package/docs/guides/author-bundles.md +15 -20
  362. package/docs/guides/author-workflows.md +93 -71
  363. package/docs/guides/bundles.md +20 -16
  364. package/docs/guides/discover-and-load.md +1 -1
  365. package/docs/guides/getting-started.md +49 -3
  366. package/docs/guides/improve-the-library.md +10 -4
  367. package/docs/guides/recipes/headless-install.md +11 -16
  368. package/docs/guides/run-workflows.md +29 -20
  369. package/docs/guides/scheduling.md +2 -2
  370. package/docs/guides/use-with-any-agent.md +20 -22
  371. package/docs/integration/bundling-akm.md +19 -9
  372. package/docs/maintainers/README.md +2 -6
  373. package/docs/maintainers/release-checklist.md +73 -126
  374. package/docs/migration/README.md +10 -3
  375. package/docs/migration/release-notes/0.10.0.md +81 -16
  376. package/docs/migration/release-notes/0.6.0.md +1 -1
  377. package/docs/migration/release-notes/0.7.0.md +1 -1
  378. package/docs/migration/release-notes/0.9.0.md +1 -1
  379. package/docs/migration/release-notes/README.md +1 -1
  380. package/docs/migration/v0.9-to-v0.10.md +300 -60
  381. package/docs/migration/v0.9.1-to-v0.9.2.md +6 -5
  382. package/docs/posts/config-v2-lessons-16.md +1 -1
  383. package/docs/posts/llm-mode-reflect-13.md +1 -1
  384. package/docs/posts/release-0.6.0.md +11 -11
  385. package/docs/posts/release-0.8.0.md +4 -4
  386. package/docs/posts/workflows-vaults-09.md +1 -1
  387. package/docs/reference/README.md +1 -1
  388. package/docs/reference/asset-types.md +2 -2
  389. package/docs/reference/cli.md +477 -388
  390. package/docs/reference/configuration.md +569 -550
  391. package/docs/reference/data-and-telemetry.md +9 -6
  392. package/docs/reference/env-and-secrets.md +72 -15
  393. package/docs/reference/refs.md +3 -20
  394. package/docs/reference/registry.md +12 -38
  395. package/docs/reference/supported-formats.md +1 -1
  396. package/docs/reference/tasks.md +22 -11
  397. package/docs/reference/ui-api.md +14 -9
  398. package/docs/reference/workflow-schema.md +199 -154
  399. package/docs/reference/workflows.md +4 -6
  400. package/package.json +9 -11
  401. package/schemas/akm-config.json +1696 -2922
  402. package/schemas/akm-task.json +4 -4
  403. package/schemas/akm-workflow.json +36 -9
  404. package/ROADMAP.md +0 -112
  405. package/dist/assets/models.json +0 -35
  406. package/dist/commands/health/engine-usage.js +0 -45
  407. package/dist/commands/sources/dangerous-env-audit.js +0 -134
  408. package/dist/core/activation-policy.js +0 -67
  409. package/dist/core/config/schema/engines.js +0 -160
  410. package/dist/core/config/schema/execution.js +0 -23
  411. package/dist/core/spawn-env.js +0 -268
  412. package/dist/execution/directory-identity.js +0 -78
  413. package/dist/integrations/agent/builder-shared.js +0 -33
  414. package/dist/integrations/agent/builders.js +0 -43
  415. package/dist/integrations/agent/engine-fallback.js +0 -59
  416. package/dist/integrations/agent/engine-resolution.js +0 -333
  417. package/dist/integrations/agent/model-map.js +0 -475
  418. package/dist/integrations/harnesses/aider/agent-builder.js +0 -107
  419. package/dist/integrations/harnesses/aider/result-extractor.js +0 -53
  420. package/dist/integrations/harnesses/amazonq/agent-builder.js +0 -138
  421. package/dist/integrations/harnesses/amazonq/result-extractor.js +0 -48
  422. package/dist/integrations/harnesses/claude/agent-builder.js +0 -106
  423. package/dist/integrations/harnesses/claude/config-import.js +0 -67
  424. package/dist/integrations/harnesses/claude/result-extractor.js +0 -67
  425. package/dist/integrations/harnesses/codex/agent-builder.js +0 -150
  426. package/dist/integrations/harnesses/codex/result-extractor.js +0 -110
  427. package/dist/integrations/harnesses/copilot/agent-builder.js +0 -117
  428. package/dist/integrations/harnesses/copilot/result-extractor.js +0 -178
  429. package/dist/integrations/harnesses/gemini/agent-builder.js +0 -114
  430. package/dist/integrations/harnesses/gemini/result-extractor.js +0 -149
  431. package/dist/integrations/harnesses/opencode/config-import.js +0 -149
  432. package/dist/integrations/harnesses/opencode/model-config.js +0 -33
  433. package/dist/integrations/harnesses/opencode/model-work-agent.js +0 -115
  434. package/dist/integrations/harnesses/opencode/session-log-types.js +0 -12
  435. package/dist/integrations/harnesses/opencode-sdk/index.js +0 -44
  436. package/dist/integrations/harnesses/opencode-sdk/sdk-runner.js +0 -1052
  437. package/dist/integrations/harnesses/opencode-sdk/v1-adapter.js +0 -199
  438. package/dist/integrations/harnesses/opencode-sdk/v2-adapter.js +0 -254
  439. package/dist/integrations/harnesses/opencode-sdk/wire.js +0 -66
  440. package/dist/integrations/harnesses/openhands/agent-builder.js +0 -120
  441. package/dist/integrations/harnesses/openhands/result-extractor.js +0 -135
  442. package/dist/integrations/harnesses/pi/agent-builder.js +0 -89
  443. package/dist/integrations/harnesses/pi/result-extractor.js +0 -168
  444. package/dist/integrations/harnesses/shared.js +0 -18
  445. package/dist/integrations/harnesses/types.js +0 -55
  446. package/dist/llm/feature-gate.js +0 -115
  447. package/dist/output/shapes/models-list.js +0 -16
  448. package/dist/output/shapes/registry-search.js +0 -10
  449. package/dist/setup/detected-engines.js +0 -136
  450. package/dist/setup/engine-config.js +0 -97
  451. package/dist/setup/harness-config-import.js +0 -47
  452. package/dist/setup/providers.js +0 -14
  453. package/dist/setup/steps/semantic.js +0 -39
  454. package/dist/workflows/authoring/scope-key.js +0 -79
  455. package/dist/workflows/exec/lowering-notices.js +0 -23
  456. package/dist/workflows/source-semantics.js +0 -110
  457. package/docs/architecture/0.10-process-rules.md +0 -832
  458. package/docs/architecture/akm-architecture-decision-history.md +0 -2055
  459. package/docs/architecture/comparisons/claude-code-vs-akm-workflows-full.md +0 -550
  460. package/docs/architecture/decisions/0001-no-interpolation-attached-structured-context.md +0 -72
  461. package/docs/architecture/decisions/0002-unit-reuse-and-input-hash-scope.md +0 -142
  462. package/docs/architecture/decisions/0003-child-env-allowlist-and-provenance.md +0 -189
  463. package/docs/architecture/decisions/0004-task-input-contract-and-flag-coercion.md +0 -97
  464. package/docs/architecture/decisions/0005-task-result-vocabulary-and-legacy-read-mapping.md +0 -108
  465. package/docs/architecture/decisions/0006-task-source-version-routing.md +0 -124
  466. package/docs/architecture/decisions/0007-workflow-composition-bounds.md +0 -83
  467. package/docs/architecture/decisions/0008-task-binding-normalization.md +0 -88
  468. package/docs/architecture/decisions/0009-child-run-publication-column-parity.md +0 -80
  469. package/docs/architecture/decisions/0010-driver-protocol-cut.md +0 -36
  470. package/docs/architecture/decisions/0011-engine-run-loop-invariants.md +0 -125
  471. package/docs/architecture/decisions/README.md +0 -62
  472. package/docs/architecture/internals/functional-contract-patterns.md +0 -340
  473. package/docs/architecture/internals/registry-network-boundary.md +0 -57
  474. package/docs/architecture/internals/search.md +0 -248
  475. package/docs/architecture/reviews/env-secret-access.md +0 -319
  476. package/docs/architecture/runtime-boundary-design.md +0 -153
  477. package/docs/architecture/specs/0.9.0-close-out-plan.md +0 -361
  478. package/docs/architecture/specs/0.9.0-decisions.md +0 -532
  479. package/docs/architecture/specs/0.9.0-docs-code-drift-register.md +0 -745
  480. package/docs/architecture/specs/0.9.0-open-items-register.md +0 -135
  481. package/docs/architecture/specs/0.9.0-public-api-issue-backlog.md +0 -740
  482. package/docs/architecture/specs/0.9.0-release-surface-review.md +0 -636
  483. package/docs/architecture/specs/agent-command-engine-model-design.md +0 -513
  484. package/docs/architecture/specs/akm-0.9.0-bundle-adapter-spec.md +0 -501
  485. package/docs/architecture/specs/akm-0.9.0-ref-grammar-decision.md +0 -291
  486. package/docs/architecture/specs/akm-format-neutral-bundle-workspace-spec.md +0 -2059
  487. package/docs/architecture/specs/di-seams-plan.md +0 -539
  488. package/docs/architecture/specs/driver-protocol-keep-or-cut.md +0 -275
  489. package/docs/architecture/specs/fact-asset-type.md +0 -142
  490. package/docs/architecture/specs/improve-collapse-churn-detector-design.md +0 -634
  491. package/docs/architecture/specs/reviews/task-workflow-unification/README.md +0 -72
  492. package/docs/architecture/specs/reviews/task-workflow-unification/findings-consolidated.md +0 -152
  493. package/docs/architecture/specs/reviews/task-workflow-unification/library-eval-alternatives.md +0 -352
  494. package/docs/architecture/specs/reviews/task-workflow-unification/library-eval-bunqueue.md +0 -300
  495. package/docs/architecture/specs/reviews/task-workflow-unification/library-eval-openworkflow.md +0 -402
  496. package/docs/architecture/specs/reviews/task-workflow-unification/opus-review-1.md +0 -758
  497. package/docs/architecture/specs/reviews/task-workflow-unification/opus-review-2.md +0 -645
  498. package/docs/architecture/specs/reviews/task-workflow-unification/opus-review-3.md +0 -602
  499. package/docs/architecture/specs/reviews/task-workflow-unification/panel-r1-adversarial.md +0 -27
  500. package/docs/architecture/specs/reviews/task-workflow-unification/panel-r1-architecture.md +0 -27
  501. package/docs/architecture/specs/reviews/task-workflow-unification/panel-r1-coverage.md +0 -74
  502. package/docs/architecture/specs/reviews/task-workflow-unification/panel-r1-security.md +0 -15
  503. package/docs/architecture/specs/reviews/task-workflow-unification/panel-r2-adversarial.md +0 -132
  504. package/docs/architecture/specs/reviews/task-workflow-unification/panel-r2-verification.md +0 -147
  505. package/docs/architecture/specs/stash-conventions-code-spec.md +0 -275
  506. package/docs/architecture/specs/stash-organization-conventions.md +0 -377
  507. package/docs/architecture/specs/task-workflow-format-unification.md +0 -721
  508. package/docs/architecture/specs/workflow-engine-buy-vs-build.md +0 -231
  509. package/docs/architecture/specs/workflow-format-unification.md +0 -432
  510. package/docs/architecture/testing/manual-testing-checklist.md +0 -3411
  511. package/docs/architecture/testing/okf-v0.2-conformance-runbook.md +0 -924
  512. package/docs/architecture/testing/task-workflow-manual-tests.md +0 -1720
  513. package/docs/guides/claude-code-vs-akm-workflows.md +0 -29
  514. package/docs/guides/knowledge-management.md +0 -18
  515. package/docs/maintainers/curate-workmap.md +0 -335
  516. package/docs/migration/v0.5-to-v0.6.md +0 -759
  517. package/docs/migration/v0.7-to-v0.8.md +0 -1378
  518. package/docs/plans/0.9.2-agent-command-workflow-plan.md +0 -423
@@ -1,13 +1,16 @@
1
1
  # Moving from akm 0.9 to 0.10
2
2
 
3
- 0.10 is a clean-up and tuning release. It adds no `state.db` migration and
4
- does not change the `index.db` layout (still 26). It does remove CLI
5
- spellings, built-in improve strategies and a few workflow features, it changes
6
- what a nightly `akm improve` does on its own, and it changes how releases are
7
- numbered. This guide lists what to do, in order, and every change that can
8
- break a script, a task or a config.
9
-
10
- Checked against the `release/0.10.0` branch at build 0.10.26101202. The
3
+ 0.10 is a clean-up and tuning release. It replaces the `engines` in your config
4
+ with `connections` (the endpoints akm sends model requests to) and `harnesses`
5
+ (the agent programs you already have), and runs OpenCode 2 inside akm. It adds
6
+ no `state.db` migration and does not change the `index.db` layout (still 26). It
7
+ does remove CLI spellings, built-in improve strategies and a few workflow
8
+ features, it changes what a nightly `akm improve` does on its own, and it
9
+ changes how releases are numbered. This guide lists what to do, in order, and
10
+ every change that can break a script, a task or a config.
11
+
12
+ Checked against build 0.10.261013 with the connections and harnesses rework
13
+ (#1244). The
11
14
  user-facing summary of the whole series is the
12
15
  [0.10.0 release note](release-notes/0.10.0.md); the per-build detail is in the
13
16
  [CHANGELOG](https://github.com/itlackey/akm/blob/main/CHANGELOG.md).
@@ -15,16 +18,17 @@ user-facing summary of the whole series is the
15
18
  ## What the upgrade preserves
16
19
 
17
20
  - config, `state.db`, `index.db`, task sources, frozen workflow plans and
18
- scheduler rows that 0.9.15 or later wrote;
21
+ scheduler rows that 0.9.15 or later wrote; a config in the `engines` form
22
+ loads as `connections` and `harnesses` until you migrate it (see
23
+ [Connections, harnesses and OpenCode](#connections-harnesses-and-opencode));
19
24
  - every authored asset in your bundles;
20
25
  - the `akm upgrade` and `akm migrate` commands, with the same behaviour.
21
26
 
22
27
  ## What it does not cover
23
28
 
24
29
  0.10 reads what 0.9.15 and later wrote and converts nothing older. A config
25
- still in the old `stashDir` / `sources[]` / `installed[]` layout, or one with an
26
- `engines.<name>.extraParams` key that shadows a first-class engine field,
27
- fails to load with one message that names `akm migrate apply` under akm 0.9.x.
30
+ still in the old `stashDir` / `sources[]` / `installed[]` layout fails to load
31
+ with one message that names `akm migrate apply` under akm 0.9.x.
28
32
  An install older than 0.9.15 must go through 0.9.x first (step 1).
29
33
 
30
34
  ## Upgrade procedure
@@ -45,10 +49,16 @@ akm workflow list --active
45
49
  If it does not, run `akm migrate apply` now, under 0.9.x, and read what it
46
50
  changed.
47
51
  - **Workflow runs in flight.** A stored run whose plan has a `route` step or a
48
- `script` target (both came from features 0.10 removed) cannot be decoded in
49
- 0.10; `akm workflow run` abandons it. A run whose plan has `unit.isolation`
52
+ `script` target (both came from features 0.10 removed), or a command target
53
+ frozen before plan version 8 (it froze an engine), cannot be decoded in 0.10;
54
+ `akm workflow run` abandons it (status `failed`) and names `akm workflow run
55
+ <ref>` to start afresh. A run whose plan has `unit.isolation`
50
56
  still decodes and runs in the engine's working directory. Let active runs
51
- finish, or abandon them on purpose, before you upgrade.
57
+ finish, or abandon them on purpose, before you upgrade. In 0.10
58
+ `akm workflow run <ref>` always starts a new run (`akm workflow run <run-id>`
59
+ continues one; `resume` only re-activates a blocked or failed one), runs are no longer scoped
60
+ to a directory, and 0.9.15 does not see runs 0.10 started on the same
61
+ `state.db`. `--new` and `--all-scopes` are accepted and do nothing.
52
62
  - **Quit OpenCode.** `akm upgrade` skips (reports `deferred`) a plugin update
53
63
  while an OpenCode process runs. See [Plugins](#plugins).
54
64
 
@@ -68,6 +78,11 @@ crontab -l | grep akm
68
78
  `--target` is still valid on `env run`, `bundle remove`, `bundle update` and
69
79
  `registry remove` (it names the thing to act on there). Read each hit.
70
80
 
81
+ `--engine NAME` is not in that list because it still runs, but search for it
82
+ too (`grep -rn -- '--engine' <your script and task directories>`): after the
83
+ migration it reaches only a connection or harness called `NAME`
84
+ ([step 5](#5-fix-what-the-migration-cannot)).
85
+
71
86
  ### 3. Upgrade the program
72
87
 
73
88
  ```sh
@@ -103,24 +118,57 @@ akm migrate apply
103
118
  `akm upgrade` already ran `apply`; run `status` to confirm. What `apply` does
104
119
  in 0.10:
105
120
 
106
- - rewrites `config.json` through the normal load path, under a backup in
107
- `<cache dir>/config-backups/`, and drops every retired or unknown key (the
108
- [removed keys](#improve-strategies-tasks-and-config-keys) below);
121
+ - rewrites `config.json` under a backup in `<cache dir>/config-backups/`: the
122
+ `engines` / `defaults` form becomes `connections` / `harnesses`, the keys akm
123
+ no longer reads from config move to `credentials.json`, a leftover
124
+ `models.json` is folded in and moved, and every other retired or unknown key
125
+ is dropped (see [Connections, harnesses and
126
+ OpenCode](#connections-harnesses-and-opencode) and the [removed
127
+ keys](#improve-strategies-tasks-and-config-keys) below);
109
128
  - applies pending `state.db` migrations. 0.10 adds none, so on a 0.9.31 install
110
129
  this step has nothing to do;
111
130
  - rewrites task files still at version 2 or 3 as task source v4 and reports
112
131
  any it cannot convert as `blocked`;
132
+ - rewrites the retired `engine:` key on commands, agents, workflows and task
133
+ sources to `connection:` or `harness:`, under one backup directory per run;
113
134
  - removes superseded residue files.
114
135
 
115
- Until you run it, a retired key in `config.json` is harmless: the config loads,
116
- names the key once, and ignores it.
136
+ Until you run it, a config in the `engines` form loads as `connections` and
137
+ `harnesses` in memory, with one warning that names `akm migrate apply`, and any
138
+ other retired key is harmless: the config loads, names the key once, and
139
+ ignores it.
117
140
 
118
141
  ### 5. Fix what the migration cannot
119
142
 
120
- - **`defaults.improveStrategy` or `--strategy` names a removed strategy.** The
121
- config still loads, but `akm improve` fails (exit 78) with an error that names
122
- `default`. `akm health` reports it as the warning `active-improve-strategy`.
123
- Change the name, or define a strategy of that name yourself (below).
143
+ - **`improve.strategy` (was `defaults.improveStrategy`) or `--strategy` names a
144
+ removed strategy.** The config still loads, but `akm improve` and `akm task
145
+ doctor` fail (exit 78, `UNKNOWN_IMPROVE_STRATEGY`) with an error that names
146
+ `default`. Change the name, or define a strategy of that name yourself (below).
147
+ - **Notes from `akm migrate apply`.** Each names a setting it dropped, or a key
148
+ or an entry it could not move. A key it could not move stays on its connection
149
+ as `apiKey`, which akm warns about and never sends: put it in
150
+ `credentials.json` (`akm setup` does) or reference an environment variable
151
+ (`"apiKey": "$NAME"`). `AKM_ENGINE_<NAME>_API_KEY` and `AKM_LLM_API_KEY`
152
+ become an `apiKey` only when they were set in the environment you ran `apply`
153
+ in; if not, the connection has no key and a note names the variables. Set the
154
+ one you used and run `akm setup --api-key-env NAME`, or store the key with `akm
155
+ setup`.
156
+ - **Scripts that pass `--engine` or `--require-engines`.** They keep running,
157
+ with one warning each. Change `--engine NAME` to `--connection <name>` or
158
+ `--harness <name>`: how an old engine name resolves, and when it stops, is
159
+ under [The `engines` form](../reference/configuration.md#the-engines-form).
160
+ `--require-engines` does nothing now, and a scheduled caller that relied on it
161
+ loses its guarantee: the run no longer checks, before any side effect, that
162
+ every enabled process has a usable target (a configured connection or harness
163
+ to run on, a harness program that exists, a connection that answers). `akm
164
+ improve` stops at planning (exit 78) only when no process has anywhere to
165
+ run; when some do and some do not, it runs the ones that do and lists the
166
+ rest in `skippedProcesses`. Use `akm health` for the check: `akm health &&
167
+ akm improve ...` stops before the run when it exits 4, and its
168
+ `connections-and-harnesses` check names each connection that does not answer,
169
+ each harness program that is not installed and a missing default. It looks at
170
+ the configuration and the endpoints, not at whether a completion works (only a
171
+ run shows that).
124
172
  - **Scheduled tasks that call a removed strategy, flag or command.** Edit the
125
173
  task source, then run `akm task sync`. Tasks copied from the shipped
126
174
  templates `akm-improve-nightly`, `akm-improve-frequent` and
@@ -219,8 +267,15 @@ carries the old built-in's settings. A reflect-only replacement for `quick`:
219
267
 
220
268
  **Shipped task templates.** `akm-improve-nightly`, `akm-improve-frequent` and
221
269
  `akm-improve-catchup` are gone. The nightly template for a server install is
222
- now `core/improve` (`akm improve --require-engines`, 02:00), and `akm setup`
223
- preselects it.
270
+ now `core/improve` (`akm improve`, 02:00), and `akm setup` preselects it. A
271
+ scheduled command written for 0.9 keeps running: `--require-engines` is
272
+ accepted and does nothing (the run stops at planning, exit 78, only when no
273
+ process has a connection or harness to run on; the check it used to make, that
274
+ every enabled process has a usable target, is gone, and `akm health` is the
275
+ replacement), and `--engine NAME` on `agent`,
276
+ `command run`, `task add`, `proposal new` and `proposal extract` keeps running
277
+ ([step 5](#5-fix-what-the-migration-cannot)). Each warns once, and neither is
278
+ listed in `--help`.
224
279
 
225
280
  **Config keys.** These are removed. A config that still sets one loads (the key
226
281
  is named once by the unknown-key warning and ignored), and `akm migrate apply`
@@ -232,12 +287,19 @@ drops it. Paths are under `improve.strategies.<name>.processes.` unless noted.
232
287
  | `improve.salience.salienceThreshold` | The high-salience lane it tuned is gone. |
233
288
  | `distill.limit`, `memoryInference.cls`, `proactiveMaintenance.limit`, `triage.policy` | Nothing read them. `distill.cls` and the `limit` of `reflect` and `consolidate` are read and stay. |
234
289
  | `defaults.llm`, `defaults.agent`, `defaults.improve`, `feedbackDistillation`, `index.<pass>.{endpoint,provider,apiKey,baseUrl,temperature,maxTokens,capabilities}`, `index.stalenessDetection` | 0.9 rejected these with a bespoke error. They now load like any unknown key. |
290
+ | `execution.allowedTools` (top level) | Asset tool requests are gone (below), so there is nothing to cap. |
291
+
292
+ **Asset `tools:`.** Agents, commands and tasks no longer restrict an agent's
293
+ tools: an agent or command's `tools:` (or a Claude command's
294
+ `allowed-tools:`) is not read, and a task's `tools:` is ignored with a warning.
295
+ `akm show` no longer reports `toolPolicy`, a file is no longer recognized as an
296
+ agent by a `tools:` key alone, and the `EXECUTION_NOT_AUTHORIZED` error is gone.
297
+ To run an agent with restricted tools, define that agent in the harness itself
298
+ (a Claude or OpenCode agent) and select it with the harness's `agent`.
235
299
 
236
300
  Config that is newly refused: a retired source key (`stashDir`, `sources`,
237
- `installed`) and an `engines.<name>.extraParams` key that shadows a first-class
238
- field (`temperature`, `maxTokens`, `enableThinking`, `reasoningEffort`). Both
239
- were only warned about in 0.9.15 and later; the error says to run
240
- `akm migrate apply` under akm 0.9.x.
301
+ `installed`). It was only warned about in 0.9.15 and later; the error says to
302
+ run `akm migrate apply` under akm 0.9.x.
241
303
 
242
304
  ### Workflows
243
305
 
@@ -283,6 +345,169 @@ stop.
283
345
  object form. The `targetVocab` marker on `task_history` rows is no longer
284
346
  written, and the `"mcp"` package keyword is gone (akm has no MCP code).
285
347
 
348
+ ### Connections, harnesses and OpenCode
349
+
350
+ `engines` become `connections` and `harnesses`, `akm setup` and `akm health`
351
+ are rebuilt around them, and OpenCode 2 runs inside akm. Read this section even
352
+ if you never wrote an engine: `akm migrate apply` rewrites your config and
353
+ moves your keys.
354
+
355
+ - **A connection** is an OpenAI-compatible endpoint (`endpoint`, `apiKey`,
356
+ `models`, `contextLength`, `timeoutMs`, `concurrency`; any other key, on the
357
+ connection or in a model entry, is a request field sent as written). **A
358
+ harness** is an agent program you already have (`platform`, `bin`, `args`,
359
+ `workspace`, `agent`, `timeoutMs`, `models`). There is no `defaults` block: the
360
+ entry named `default`, or the only entry, is the default connection or
361
+ harness, and anywhere one can be named and none is, the default is used. With
362
+ neither configured, model features and agent work are off and each command
363
+ that needs one points at `akm setup`; there is no fallback to an `opencode`
364
+ binary on `PATH`.
365
+ - **Where a process runs** is set by `improve.connection` and `improve.harness`
366
+ (all of `akm improve`), `improve.processes.<process>`, `improve.qualityGate`
367
+ and `index`. A strategy says which processes run, never where.
368
+ `defaults.improveStrategy` is now `improve.strategy`.
369
+ - **Aliases.** `fast`, `balanced` and `reasoning` are set on a connection's or
370
+ harness's `models`. `akm models` lists a connection's aliases, then the models
371
+ its endpoint lists, and `akm models set <alias> <model>` changes one.
372
+ `models.json` and the `akm models list` and `copy-defaults` commands are gone.
373
+ - **Keys.** `apiKey` is a `$VAR` reference. Without one, the key is the entry
374
+ stored for the connection and its endpoint in `credentials.json`, next to
375
+ `config.json` (mode 0600); `akm setup` fills it from a masked prompt. A key is
376
+ read for the endpoint it was stored for and no other. A literal
377
+ `apiKey` in the file is warned about and never sent. `apiKeyFile`,
378
+ `${secrets/...}` and the implicit `AKM_ENGINE_<NAME>_API_KEY` and
379
+ `AKM_LLM_API_KEY` lookups are gone. Until `akm migrate apply` has filed it, a
380
+ key held in `apiKeyFile`, a literal or a `${secrets/...}` reference is not sent
381
+ (akm warns); `akm upgrade` runs `apply` for you.
382
+ - **`akm setup`** takes one flag per question (`--endpoint`, `--api-key-env`,
383
+ `--name`, `--harness`, `--embedding`, `--embedding-endpoint`,
384
+ `--embedding-api-key-env`) and `--yes` for the detected default; `akm setup
385
+ --endpoint http://localhost:11434/v1 --yes` is the quick start. `--probe` and
386
+ `--config` are gone.
387
+ - **`akm health` and `akm info`** print one table (the `connections-and-harnesses`
388
+ check, and `connectionsAndHarnesses` in `akm info`; a row for each
389
+ connection, each harness and each kind of work, with the connection or harness
390
+ and model it resolves to) in place of the engine checks. The checks
391
+ `default-engine`, `default-llm-engine`, `configured-engines`,
392
+ `active-improve-strategy`, `thinking-control` and `engine-last-used` are gone,
393
+ and an unreachable connection is a warning, not a failure.
394
+ - **`--connection`, `--harness` and `--model`** replace `--engine` on `akm agent`,
395
+ `akm command run`, `akm proposal new`, `akm proposal extract` and `akm task
396
+ add`. A scheduled command that still passes `--engine NAME` or
397
+ `--require-engines` keeps running, with one warning each and neither listed in
398
+ `--help`; `--require-engines` does nothing (see above). `akm migrate
399
+ apply` renames the default engine `default` and moves an old `default` aside
400
+ to `legacy-default`; what `--engine` and `engine:` mean until it has rewritten
401
+ every key it can reach is under [The `engines`
402
+ form](../reference/configuration.md#the-engines-form). It cannot rewrite a
403
+ command line or script: change those to `--connection` or `--harness` yourself.
404
+ - **`GET /api/config`** (the `akm ui` server) lists `connections` and `harnesses`
405
+ where it listed `engines`.
406
+
407
+ **An old config still loads.** A `config.json` with `engines` and `defaults` is
408
+ read as the new form in memory, with one warning that names `akm migrate
409
+ apply`; the file is not rewritten until you run it. An ordinary `akm config
410
+ set` edits the file as it is, and removing a value the old form supplies is
411
+ refused until the file is migrated. A connection or harness whose own settings
412
+ akm cannot use (no endpoint, an endpoint that is not a URL, a harness akm cannot
413
+ run) is ignored with one warning naming it, and the rest of the file loads.
414
+
415
+ **`akm migrate apply` converts the file.** Under a backup of `config.json` it
416
+ writes `connections` and `harnesses`, renames the default LLM engine to
417
+ `default` (references follow), moves what a strategy said about where a process
418
+ runs to `improve.processes` and `improve.qualityGate`, and keeps a connection or
419
+ harness the loader cannot use in the file, with a note on what to fix. It also:
420
+
421
+ - moves every key akm no longer reads from config (an engine's `apiKeyFile`, a
422
+ literal or `${secrets/...}` `apiKey`, and the same on a connection,
423
+ `embedding` or `search.curateRerank`) into `credentials.json`, for the
424
+ connection (or the `embedding` or `curateRerank` service) and the endpoint the
425
+ block names, with one note per key and never its value. A key that cannot be
426
+ moved (its secret does not resolve, the block names no endpoint of its own, a
427
+ `connections` entry now gives it another endpoint than its engine wrote the key
428
+ for, or `credentials.json` already holds a different key or endpoint for that
429
+ slot) stays on the
430
+ connection as `apiKey`, with a note, until you move it. `AKM_ENGINE_<NAME>_API_KEY`
431
+ and `AKM_LLM_API_KEY`, when set in the environment you run `apply` in, become
432
+ `apiKey: "$VAR"` instead;
433
+ - files a key in `credentials.json`'s older flat `{ "<name>": "<key>" }` form
434
+ under the endpoint your config gives that block, after copying the file to
435
+ `<cache dir>/config-backups/credentials.json.<timestamp>`. A block that already
436
+ has a stored key is not overwritten: the same key for the same endpoint drops
437
+ the older entry, and a different key or endpoint leaves both, with a note;
438
+ - folds `models.json` into the `models` of the connections and harnesses it
439
+ names (a connection's own column first, then the `*` column and the flat
440
+ shorthand, then the engine's own model; a model the config already names
441
+ stands; the entries it cannot place are listed in the notes) and moves the
442
+ file to `<cache dir>/config-backups/`;
443
+ - rewrites `engine:` on commands, agents, workflows and task sources to
444
+ `connection:` or `harness:` by what the name is now (a name that is neither is
445
+ written as `harness:`, with a note), under one backup directory per run. A
446
+ file you (or an editor or a bundle sync) changed after the plan was made is
447
+ left exactly as it now is, in no backup and no rewrite, and is reported as
448
+ skipped or still ready: running `akm migrate apply` again plans it afresh. An
449
+ asset that is a symbolic link is read but never rewritten: it is reported as
450
+ skipped, and its `engine:` key keeps its meaning until you change the file it
451
+ leads to.
452
+
453
+ `akm migrate apply --dry-run` lists all of it first, and `akm upgrade` runs it
454
+ for you.
455
+
456
+ **Dropped, with a note.** `provider`, an `extraParams` key that shadows a
457
+ first-class setting (the setting wins), `supportsJsonSchema` (akm retries
458
+ without a schema when an endpoint rejects one), `workflow.judgeEngine`, a
459
+ strategy's `engine`, `model`, `llm` and `timeoutMs`, an index pass's `engine`
460
+ that names a harness (an index pass can only name a connection; with none named
461
+ it runs where all model work does, on the default connection, else the default
462
+ harness, restricted where the harness can be), `models.json`
463
+ entries that name nothing configured, and an `opencode-sdk` engine's own model,
464
+ timeout and workspace (akm's own runtime has no entry in config; the connection
465
+ its `llmEngine` named becomes `default`). A workflow run frozen by an earlier
466
+ release (plan version 7 or lower) whose plan holds a command target cannot be
467
+ resumed: `akm workflow run` abandons it with a message naming `akm workflow run
468
+ <ref>` to start afresh. Let such runs finish before you upgrade.
469
+
470
+ **Harnesses run as thin shells.** akm writes only the arguments a program needs
471
+ to run without a person, hands it the prompt, and takes its standard output as
472
+ the reply, as written. It no longer asks a harness for JSON output or reads a
473
+ result or a session id out of it. Claude Code and pi take the prompt on stdin.
474
+ A harness's child gets your environment as it is, with akm's directories set
475
+ over it ([The environment programs run
476
+ in](#the-environment-programs-run-in)).
477
+ `akm agent` with no `--prompt` starts the harness for a person.
478
+
479
+ **OpenCode 1 is legacy, not deprecated for removal.** The `opencode` harness runs
480
+ `opencode run` for both majors, with no change to the config. Where akm reads
481
+ its version (`akm setup`, `akm upgrade`, and model work) and finds OpenCode 1, it
482
+ warns once that OpenCode 2 is recommended; OpenCode 1 keeps working, its model
483
+ work cannot be restricted, and no removal date is set.
484
+
485
+ **Model work runs on any harness**, with its tools restricted where the harness
486
+ can be (Claude Code, Codex, OpenCode 2) and unrestricted, with a notice, where it
487
+ cannot ([How akm runs a
488
+ harness](../reference/configuration.md#how-akm-runs-a-harness)). A config that
489
+ names an `opencode` harness for model work loads.
490
+
491
+ **akm's own runtime is a pinned OpenCode 2 binary that akm fetches and runs.**
492
+ Agent work on a connection, with no harness configured, runs on it: no entry in
493
+ config, no `opencode` of yours, driven by your connections only (no user or
494
+ project OpenCode config loads, though it still loads `~/.agents` and OpenCode's
495
+ system config, `/etc/opencode`; OpenCode's own free-model provider and model
496
+ catalog fetch are off). The first run downloads the binary for your platform from
497
+ the npm registry (about 114 MB, once, into `<akm cache dir>/opencode/<version>/`)
498
+ and checks it against the registry's integrity hash; if akm cannot reach the
499
+ registry for that step, enable the `opencode` harness with an installed OpenCode
500
+ 2 instead. On bare Alpine (musl) the binary needs `libstdc++` and `libgcc`, which
501
+ the Alpine Node image already has. Its sessions are stored in
502
+ `<akm data dir>/opencode-runtime/data/opencode/opencode.db`, with the rest of its
503
+ files under `<akm data dir>/opencode-runtime/`. A run reports its token usage, and
504
+ a persona goes in the prompt, not a system channel.
505
+
506
+ **`platform: "opencode"` is your OpenCode**, whichever major is installed, run
507
+ through its CLI (`opencode run`, the prompt on stdin). Your OpenCode owns its
508
+ configuration, logins and sessions: akm reads, copies and embeds nothing of
509
+ yours to run it, and its runs are in your OpenCode history, which improve reads.
510
+
286
511
  ## Behaviour changes you will notice
287
512
 
288
513
  ### `akm improve`
@@ -375,8 +600,8 @@ stop.
375
600
  default install. It warns only for a remote `embedding.endpoint` with no
376
601
  `embedding.model`.
377
602
  - **Command tasks (`uses: commands/...`) get the 6-hour unattended timeout** that
378
- workflow and shell tasks already had. An explicit task `timeout:`, an engine
379
- timeout or `timeout: null` still wins.
603
+ workflow and shell tasks already had. An explicit task `timeout:`, a connection's or
604
+ harness's `timeoutMs` or `timeout: null` still wins.
380
605
  - **Memory inference** writes to the default bundle (it used the first bundle in
381
606
  the list), and no longer reverts an edit made to the parent memory while the
382
607
  model ran.
@@ -384,13 +609,20 @@ stop.
384
609
  - **A transient reflect failure** (transport error, timeout, crash) no longer
385
610
  uses up the feedback that planned it; the ref is retried next run.
386
611
 
387
- ## Deprecated in 0.10
388
-
389
- - **The `opencode` CLI dispatch path.** An agent engine with
390
- `platform: "opencode"` runs `opencode run` for each call. It still works on
391
- OpenCode 1 and 2 throughout 0.10, but it is deprecated and may be removed in
392
- 0.11 or later. Switch such engines to `opencode-sdk`, which covers the same
393
- work, including a default agent for the engine.
612
+ ### The environment programs run in
613
+
614
+ A harness (agent tasks and workflow agent steps included) and an `exec` unit's
615
+ command now run with your environment as it is. In 0.9 each got an allowlist
616
+ (`PATH`, `HOME`, locale and a few more, plus the provider keys a harness named,
617
+ and an `exec` unit's `pass_env:` names); a variable outside it, a token in your
618
+ shell included, did not reach the program. Now every variable does, and
619
+ `pass_env:` still loads and selects nothing. What akm scrubs from an agent's reply
620
+ is under [Architecture: Connections and
621
+ Harnesses](../architecture/architecture.md#connections-and-harnesses); an `exec`
622
+ command's output is not scrubbed of what it inherited. Where a program must not
623
+ see a credential, scope the process that runs akm (a dedicated account, a clean
624
+ environment). See [How akm runs a
625
+ harness](../reference/configuration.md#how-akm-runs-a-harness).
394
626
 
395
627
  ## Plugins
396
628
 
@@ -419,19 +651,12 @@ run. For OpenCode 2, run `opencode plugin add akm-opencode-v2`.
419
651
  old build folders behind.) If your config pins another spec, such as `akm-opencode@0.9.30`, `akm upgrade`
420
652
  leaves it alone: change the spec, quit OpenCode, move that cache folder aside
421
653
  and start OpenCode again.
422
- - **OpenCode 2 permission defaults.** akm rejects every OpenCode permission
423
- request in a dispatch and changes no OpenCode default. OpenCode 1 asks before
424
- reading or writing outside the project directory, so akm rejects it and the
425
- model carries on. OpenCode 2 does not ask, so a read or write outside the
426
- project just runs. To get the rejection on OpenCode 2, add a rule to the
427
- global `opencode.json`, for example
428
- `"permissions": [{"action": "external_directory", "resource": "*", "effect": "ask"}]`.
429
- When akm rejects a request on OpenCode 2 the turn ends with `ok: false` and
430
- `reason: "aborted"`. See [Configuration](../reference/configuration.md#engines).
431
- - **Which OpenCode akm drives is detected**, from the engine's `bin` (or
432
- `opencode2`, else `opencode`, on `PATH`). There is no setting. OpenCode 1
433
- logs one warning recommending OpenCode 2; a binary of an unknown major is
434
- driven as OpenCode 2 with a warning.
654
+ - **Questions and permission requests.** Nobody can answer an akm run:
655
+ OpenCode's headless `run`, which akm's own runtime and the `opencode` harness
656
+ both use, cancels every question and rejects every permission request that
657
+ would ask, and the model carries on. akm changes no OpenCode permission
658
+ default. See
659
+ [Configuration](../reference/configuration.md#harnesses).
435
660
  - **Claude Code and Codex plugins** come from the `akm-plugins` marketplace and
436
661
  are updated by `akm upgrade`. Use the 0.10 plugin set with 0.10 (it passes
437
662
  `--detail agent`; see itlackey/akm-plugins#133); the plugins require akm
@@ -445,7 +670,7 @@ run. For OpenCode 2, run `opencode plugin add akm-opencode-v2`.
445
670
  retrieval, skillret and longmemeval benchmarks are the known ones
446
671
  (itlackey/akm-eval#33).
447
672
  - **A signal to `akm agent` now ends the harness.** `akm agent` on the
448
- `opencode`, `claude` and `codex` CLI engines runs the harness in its own
673
+ `opencode`, `claude` and `codex` CLI harnesses runs the harness in its own
449
674
  process group, and SIGTERM or SIGINT to akm now takes it down too.
450
675
 
451
676
  ## Version numbers
@@ -479,7 +704,7 @@ only.
479
704
  akm --version # the 0.10.YYMMNN you meant to install
480
705
  akm migrate status # status "current", ok true
481
706
  akm health # exit 0 ok; 4 means a warning, read the check names
482
- akm task doctor # scheduler backend, akm path, engines, improve triage and autonomy
707
+ akm task doctor # scheduler backend, akm path, connections and harnesses, improve triage and autonomy
483
708
  akm upgrade --check # per-plugin outcomes: current, pending, deferred, failed
484
709
  akm improve --dry-run # the strategy resolves, plan.triage shows the drain
485
710
  akm lint --type tasks # task files parse and pass the gates task sync runs
@@ -489,8 +714,16 @@ akm search --type task # your tasks are indexed
489
714
 
490
715
  Things to look for:
491
716
 
492
- - `akm health` check `active-improve-strategy` warns when the configured
493
- strategy was removed.
717
+ - `akm health` check `connections-and-harnesses` lists a row for each connection and harness (its
718
+ key held and reachable, or its binary found) and for each kind of work with
719
+ the connection or harness and model it resolves to; `akm info` prints the same
720
+ rows without probing, and `akm models` shows each alias of the default
721
+ connection. A connection that is not reachable is a warning (exit 4), not a
722
+ failure.
723
+ - `akm improve --dry-run` fails (exit 78, `UNKNOWN_IMPROVE_STRATEGY`) when the
724
+ configured strategy was removed.
725
+ - `config.json` no longer has `engines` or `defaults`, `credentials.json` holds
726
+ any keys that were in it, and `models.json` is in `<cache dir>/config-backups/`.
494
727
  - `akm task doctor` reports `improveTriage` (enabled, mode) and
495
728
  `improveAutonomy` with the lanes the `experimental.improveAutonomy` gate holds
496
729
  off.
@@ -504,13 +737,20 @@ Things to look for:
504
737
  0.10 changes neither database schema, so a downgrade needs no data change. To
505
738
  go back, stop AKM and any OpenCode process, install the earlier version
506
739
  (`akm-cli@0.9.31`), and restore `config.json` from the backup that
507
- `akm migrate apply` wrote under `<cache dir>/config-backups/` if you want the
508
- dropped keys back. Downgrade the plugins with the CLI: a 0.9 CLI rejects
509
- `--detail agent` and a 0.10 CLI rejects `--shape agent`.
740
+ `akm migrate apply` wrote under `<cache dir>/config-backups/`: 0.9 does not read
741
+ `connections`, `harnesses` or `credentials.json`, so a migrated config leaves it
742
+ with no engines (the backup holds your keys as they were, and `models.json` is
743
+ in the same directory). The assets whose `engine:` key `apply` rewrote are in the
744
+ backup directory the report names as `assetEngineKeys.backupPath`, under
745
+ `<akm data dir>/backups/asset-engine-keys/`. Finish or abandon workflow runs
746
+ started under 0.10 first; 0.9 refuses a plan a newer akm froze. Downgrade the
747
+ plugins with the CLI: a 0.9 CLI rejects `--detail agent` and a 0.10 CLI rejects
748
+ `--shape agent`.
510
749
 
511
750
  For the CHANGELOG entries behind each item, see the
512
751
  [CHANGELOG](https://github.com/itlackey/akm/blob/main/CHANGELOG.md) sections
513
752
  `0.10.26101001` to `0.10.26101202` (the daily alphas) and the monthly releases after them. For the stability tier of each command, see
514
753
  [STABILITY.md](https://github.com/itlackey/akm/blob/main/STABILITY.md). The
515
754
  rules each improve process follows in 0.10 are in
516
- [the 0.10 process rules](../architecture/0.10-process-rules.md).
755
+ [the improvement loop](../architecture/improvement.md) and the
756
+ [improve workflow reference](../architecture/internals/improve-workflow.md).
@@ -518,10 +518,10 @@ executor's replay-divergence error ("journaled with different inputs")
518
518
  instead of silently reusing a row bound to the now-stale value. Units
519
519
  without bindings are unaffected.
520
520
 
521
- See [`with:` on a task-composed step](../reference/workflow-schema.md#github-shaped-yaml-subset)
522
- for the full binding grammar, delivery surfaces (`AKM_TASK_INPUTS`, the
523
- `## Task inputs` prompt block), and `akm task explain` for inspecting what a
524
- task-composed step would actually receive.
521
+ A workflow step that composes a task (`uses: tasks/<ref>`), with its `with:`
522
+ bindings and the `AKM_TASK_INPUTS` and `## Task inputs` delivery surfaces, was
523
+ removed in 0.10 (see [Workflows](v0.9-to-v0.10.md#workflows)). `akm task
524
+ explain` remains: see [`akm task explain`](../reference/tasks.md#akm-task-explain).
525
525
 
526
526
  ## Child workflows
527
527
 
@@ -629,7 +629,8 @@ composing parent step's own output — see
629
629
  This is a Markdown-frontmatter-only key — a GitHub-shaped workflow's closed
630
630
  root key set (`name`, `on`, `jobs`) has no extension surface for it, the
631
631
  same reason it cannot declare `params:` either. See
632
- [Workflow Schema: Workflow outputs](../reference/workflow-schema.md#workflow-outputs).
632
+ [Moving from akm 0.9 to 0.10: Workflows](v0.9-to-v0.10.md#workflows), which
633
+ removed top-level `outputs:`.
633
634
 
634
635
  ## New commands
635
636
 
@@ -176,7 +176,7 @@ akm config
176
176
  # Full config in the new shape
177
177
  ```
178
178
 
179
- The complete old-to-new key mapping is in [docs/migration/v0.7-to-v0.8.md](https://github.com/itlackey/akm/blob/main/docs/migration/v0.7-to-v0.8.md).
179
+ The complete old-to-new key mapping is in [docs/migration/v0.7-to-v0.8.md](https://github.com/itlackey/akm/blob/7a4f302febfc0fe8c0bf3028c6156e6edc5aae33/docs/migration/v0.7-to-v0.8.md).
180
180
 
181
181
  ## What Adding a Field Looks Like Now
182
182
 
@@ -161,6 +161,6 @@ The next improve run after that shows reflect calls completing in the 6–10 sec
161
161
 
162
162
  ---
163
163
 
164
- LLM mode reflect is available in akm 0.8.0. The full configuration reference is in [configuration reference](../reference/configuration.md). The Config v2 key mapping is in the [v0.7 to v0.8 migration guide](../migration/v0.7-to-v0.8.md#config-080-migration-unified-profiles).
164
+ LLM mode reflect is available in akm 0.8.0. The full configuration reference is in [configuration reference](../reference/configuration.md). The Config v2 key mapping is in the [v0.7 to v0.8 migration guide](https://github.com/itlackey/akm/blob/7a4f302febfc0fe8c0bf3028c6156e6edc5aae33/docs/migration/v0.7-to-v0.8.md#config-080-migration-unified-profiles).
165
165
 
166
166
  For a broader view of the improve pipeline — all five phases, scheduling, and how reflect feeds the downstream consolidation and distill passes — see [The Improvement Loop: How akm Keeps Your Agent Sharp](https://dev.to/itlackey/the-improvement-loop-how-akm-keeps-your-agent-sharp-2d4d). For debugging improve runs when something goes wrong (stale DB entries, hallucinated merge plans, pre-flight filters), see [Your Agent Has a Memory That Runs While You Sleep](https://dev.to/itlackey/your-agent-has-a-memory-that-runs-while-you-sleep-20oh).
@@ -18,7 +18,7 @@ date: '2026-05-05T02:19:46Z'
18
18
 
19
19
  akm 0.6.0 is out. This one is deliberately boring: a stabilization release that takes a clean break from pre-v1 terminology so the surface area we carry into v1 is honest. The domain model now has one noun for "a source of content" (stash) and one noun for "a service that helps discover them" (registry). The parallel vocabulary that accreted during earlier experiments — "kit", "source", hand-special-cased provider types — is gone. A handful of additive quality-of-life improvements ship alongside, but the headline story is fewer concepts, not more.
20
20
 
21
- If you are on 0.5.x, read [the v0.5 → v0.6 migration guide](https://github.com/itlackey/akm/blob/main/docs/migration/v0.5-to-v0.6.md) before upgrading. Most projects will work without edits thanks to automatic on-disk migrations; a small number of config fields and CLI flags need explicit updates.
21
+ If you are on 0.5.x, read [the v0.5 → v0.6 migration guide](https://github.com/itlackey/akm/blob/7a4f302febfc0fe8c0bf3028c6156e6edc5aae33/docs/migration/v0.5-to-v0.6.md) before upgrading. Most projects will work without edits thanks to automatic on-disk migrations; a small number of config fields and CLI flags need explicit updates.
22
22
 
23
23
  ## TL;DR
24
24
 
@@ -51,14 +51,14 @@ The registry wire format follows the same logic. Schema v3 drops `kits[]` and pa
51
51
 
52
52
  Each bullet below links to its section in the migration guide, which has the exact before/after code or config diff.
53
53
 
54
- - [`stash.lock` → `akm.lock`](https://github.com/itlackey/akm/blob/main/docs/migration/v0.5-to-v0.6.md#1-stashlock--akmlock) — auto-copied on first run.
55
- - [`installed[]` → `stashes[]` + `akm.lock`](https://github.com/itlackey/akm/blob/main/docs/migration/v0.5-to-v0.6.md#2-installed--stashes--akmlock) — config cleanup happens on next write.
56
- - [`stashDir` → `primary: true`](https://github.com/itlackey/akm/blob/main/docs/migration/v0.5-to-v0.6.md#3-stashdir--primary-true) — automatic.
57
- - [`disableGlobalStashes` → `stashInheritance`](https://github.com/itlackey/akm/blob/main/docs/migration/v0.5-to-v0.6.md#1-replace-disableglobalstashes) — **manual**, one-line config edit.
58
- - [`--for-agent` → `--detail=agent`](https://github.com/itlackey/akm/blob/main/docs/migration/v0.5-to-v0.6.md#2-replace---for-agent-with---detailagent) — old flag still works as a deprecated alias for one release cycle.
59
- - [`akm enable/disable context-hub` removed](https://github.com/itlackey/akm/blob/main/docs/migration/v0.5-to-v0.6.md#3-replace-akm-enable-context-hub--akm-disable-context-hub) — add it as a regular git stash.
60
- - [Wire format `kits[]` → `stashes[]`](https://github.com/itlackey/akm/blob/main/docs/migration/v0.5-to-v0.6.md#wire-format-change-kits--stashes) — registry publishers must regenerate.
61
- - [Discovery keyword / topic `akm-kit` → `akm-stash`](https://github.com/itlackey/akm/blob/main/docs/migration/v0.5-to-v0.6.md#publisher--kit-maker-changes) — publishers must re-tag.
54
+ - [`stash.lock` → `akm.lock`](https://github.com/itlackey/akm/blob/7a4f302febfc0fe8c0bf3028c6156e6edc5aae33/docs/migration/v0.5-to-v0.6.md#1-stashlock--akmlock) — auto-copied on first run.
55
+ - [`installed[]` → `stashes[]` + `akm.lock`](https://github.com/itlackey/akm/blob/7a4f302febfc0fe8c0bf3028c6156e6edc5aae33/docs/migration/v0.5-to-v0.6.md#2-installed--stashes--akmlock) — config cleanup happens on next write.
56
+ - [`stashDir` → `primary: true`](https://github.com/itlackey/akm/blob/7a4f302febfc0fe8c0bf3028c6156e6edc5aae33/docs/migration/v0.5-to-v0.6.md#3-stashdir--primary-true) — automatic.
57
+ - [`disableGlobalStashes` → `stashInheritance`](https://github.com/itlackey/akm/blob/7a4f302febfc0fe8c0bf3028c6156e6edc5aae33/docs/migration/v0.5-to-v0.6.md#1-replace-disableglobalstashes) — **manual**, one-line config edit.
58
+ - [`--for-agent` → `--detail=agent`](https://github.com/itlackey/akm/blob/7a4f302febfc0fe8c0bf3028c6156e6edc5aae33/docs/migration/v0.5-to-v0.6.md#2-replace---for-agent-with---detailagent) — old flag still works as a deprecated alias for one release cycle.
59
+ - [`akm enable/disable context-hub` removed](https://github.com/itlackey/akm/blob/7a4f302febfc0fe8c0bf3028c6156e6edc5aae33/docs/migration/v0.5-to-v0.6.md#3-replace-akm-enable-context-hub--akm-disable-context-hub) — add it as a regular git stash.
60
+ - [Wire format `kits[]` → `stashes[]`](https://github.com/itlackey/akm/blob/7a4f302febfc0fe8c0bf3028c6156e6edc5aae33/docs/migration/v0.5-to-v0.6.md#wire-format-change-kits--stashes) — registry publishers must regenerate.
61
+ - [Discovery keyword / topic `akm-kit` → `akm-stash`](https://github.com/itlackey/akm/blob/7a4f302febfc0fe8c0bf3028c6156e6edc5aae33/docs/migration/v0.5-to-v0.6.md#publisher--kit-maker-changes) — publishers must re-tag.
62
62
 
63
63
  If you consume only the public registry and do not maintain your own, the publisher changes do not apply to you.
64
64
 
@@ -96,7 +96,7 @@ akm upgrade
96
96
 
97
97
  Read:
98
98
 
99
- - [v0.5 → v0.6 migration guide](https://github.com/itlackey/akm/blob/main/docs/migration/v0.5-to-v0.6.md) — every breaking change with before/after code; publisher checklist if you maintain a registry or an npm/GitHub stash.
99
+ - [v0.5 → v0.6 migration guide](https://github.com/itlackey/akm/blob/7a4f302febfc0fe8c0bf3028c6156e6edc5aae33/docs/migration/v0.5-to-v0.6.md) — every breaking change with before/after code; publisher checklist if you maintain a registry or an npm/GitHub stash.
100
100
 
101
101
  Verify:
102
102
 
@@ -106,7 +106,7 @@ akm config list # stashes[] populated, no installed[]
106
106
  akm list # your sources resolve cleanly # doclint:ignore (historical — pre-0.9.0 command spelling)
107
107
  ```
108
108
 
109
- If something looks wrong after upgrade, the guide has a [troubleshooting section](https://github.com/itlackey/akm/blob/main/docs/migration/v0.5-to-v0.6.md#troubleshooting) covering the common pitfalls (stale context-hub entries, v2 registry URLs, empty `stashes[]` after a read-only upgrade path).
109
+ If something looks wrong after upgrade, the guide has a [troubleshooting section](https://github.com/itlackey/akm/blob/7a4f302febfc0fe8c0bf3028c6156e6edc5aae33/docs/migration/v0.5-to-v0.6.md#troubleshooting) covering the common pitfalls (stale context-hub entries, v2 registry URLs, empty `stashes[]` after a read-only upgrade path).
110
110
 
111
111
  ## What's next
112
112
 
@@ -187,7 +187,7 @@ visible wins:
187
187
  asset that mentions a given entity, by confidence). `akm graph orphans`
188
188
  surfaces assets that produced zero entities — quality-triage candidates.
189
189
  See the 0.8.0 migration guide's
190
- [graph extraction section](../migration/v0.7-to-v0.8.md#memory-inference-and-graph-extraction-moved-out-of-index).
190
+ [graph extraction section](https://github.com/itlackey/akm/blob/7a4f302febfc0fe8c0bf3028c6156e6edc5aae33/docs/migration/v0.7-to-v0.8.md#memory-inference-and-graph-extraction-moved-out-of-index).
191
191
  - **Better output.** `akm graph relations` and `akm graph entities` now show
192
192
  per-row confidence. Search hits annotate the graph-boost contribution in
193
193
  `whyMatched`. Related results end with a `Next: akm show '<ref>'` hint
@@ -202,7 +202,7 @@ the next `akm improve` cycle, which makes LLM calls. The first improve cycle
202
202
  after upgrade is slower than steady state, but the Phase 1 / Phase 2
203
203
  improvements above make it dramatically faster than equivalent re-extraction
204
204
  on 0.7.x. See the migration guide section
205
- [Graph extraction will re-run after upgrade](../migration/v0.7-to-v0.8.md#graph-extraction-will-re-run-after-upgrade).
205
+ [Graph extraction will re-run after upgrade](https://github.com/itlackey/akm/blob/7a4f302febfc0fe8c0bf3028c6156e6edc5aae33/docs/migration/v0.7-to-v0.8.md#graph-extraction-will-re-run-after-upgrade).
206
206
 
207
207
  ## Config v2 and reflect LLM mode
208
208
 
@@ -269,7 +269,7 @@ akm config migrate # doclint:ignore (historical — akm 0.8.0 release announcem
269
269
  ```
270
270
 
271
271
  Full reference: [configuration reference](../reference/configuration.md).
272
- Full key mapping: [v0.7 to v0.8 migration guide — Config 0.8.0 migration](../migration/v0.7-to-v0.8.md#config-080-migration-unified-profiles).
272
+ Full key mapping: [v0.7 to v0.8 migration guide — Config 0.8.0 migration](https://github.com/itlackey/akm/blob/7a4f302febfc0fe8c0bf3028c6156e6edc5aae33/docs/migration/v0.7-to-v0.8.md#config-080-migration-unified-profiles).
273
273
 
274
274
  ## Migration Guidance
275
275
 
@@ -327,6 +327,6 @@ akm task list # shows your defined tasks — doclint:ignore (histor
327
327
  akm config get configVersion # "0.8.0" after akm config migrate
328
328
  ```
329
329
 
330
- Full details in the [v0.7 to v0.8 migration guide](../migration/v0.7-to-v0.8.md) and the [configuration reference](../reference/configuration.md).
330
+ Full details in the [v0.7 to v0.8 migration guide](https://github.com/itlackey/akm/blob/7a4f302febfc0fe8c0bf3028c6156e6edc5aae33/docs/migration/v0.7-to-v0.8.md) and the [configuration reference](../reference/configuration.md).
331
331
 
332
332
  Full changelog at [CHANGELOG.md](https://github.com/itlackey/akm/blob/main/CHANGELOG.md).