akm-cli 0.9.0-rc.9 → 0.9.1-beta.1

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 (477) hide show
  1. package/CHANGELOG.md +1770 -44
  2. package/README.md +38 -47
  3. package/SECURITY.md +14 -1
  4. package/STABILITY.md +499 -0
  5. package/dist/akm +148 -35
  6. package/dist/{akm-migrate-storage → akm-migrate} +6 -9
  7. package/dist/assets/hints/cli-hints-full.md +223 -95
  8. package/dist/assets/hints/cli-hints-short.md +85 -22
  9. package/dist/assets/improve-strategies/default.json +1 -1
  10. package/dist/assets/improve-strategies/reflect-distill.json +1 -1
  11. package/dist/assets/prompts/memory-infer-user.md +2 -3
  12. package/dist/assets/stash-skeleton/README.md +6 -5
  13. package/dist/assets/stash-skeleton/facts/conventions/assets/agent.md +2 -0
  14. package/dist/assets/stash-skeleton/facts/conventions/assets/command.md +2 -0
  15. package/dist/assets/stash-skeleton/facts/conventions/assets/fact.md +2 -0
  16. package/dist/assets/stash-skeleton/facts/conventions/assets/knowledge.md +2 -0
  17. package/dist/assets/stash-skeleton/facts/conventions/assets/lesson.md +2 -0
  18. package/dist/assets/stash-skeleton/facts/conventions/assets/memory.md +2 -0
  19. package/dist/assets/stash-skeleton/facts/conventions/assets/script.md +2 -0
  20. package/dist/assets/stash-skeleton/facts/conventions/assets/skill.md +2 -0
  21. package/dist/assets/stash-skeleton/facts/conventions/assets/workflow.md +2 -0
  22. package/dist/assets/stash-skeleton/facts/conventions/backlinks.md +2 -0
  23. package/dist/assets/stash-skeleton/facts/conventions/domains.md +2 -0
  24. package/dist/assets/stash-skeleton/facts/conventions/organization.md +20 -9
  25. package/dist/assets/tasks/core/extract.yml +1 -1
  26. package/dist/assets/tasks/core/version-check.yml +1 -1
  27. package/dist/assets/tasks/improve/akm-graph-refresh-weekly.yml +5 -0
  28. package/dist/assets/tasks/improve/akm-improve-catchup.yml +8 -0
  29. package/dist/assets/tasks/improve/akm-improve-consolidate.yml +5 -0
  30. package/dist/assets/tasks/improve/akm-improve-frequent.yml +5 -0
  31. package/dist/assets/tasks/improve/akm-improve-nightly.yml +5 -0
  32. package/dist/assets/templates/html/health.html +1 -3
  33. package/dist/assets/workflows/workflow-template.md +32 -15
  34. package/dist/cli/invocation.js +40 -15
  35. package/dist/cli/parse-args.js +0 -22
  36. package/dist/cli/retired-commands.js +121 -0
  37. package/dist/cli/shared.js +154 -22
  38. package/dist/cli/unknown-flags.js +236 -0
  39. package/dist/cli-node.mjs +2 -1
  40. package/dist/cli.js +696 -258
  41. package/dist/commands/agent/agent-dispatch.js +14 -3
  42. package/dist/commands/agent/contribute-cli.js +74 -89
  43. package/dist/commands/completions.js +79 -22
  44. package/dist/commands/config-cli.js +17 -150
  45. package/dist/commands/env/env-cli.js +59 -143
  46. package/dist/commands/env/env.js +12 -163
  47. package/dist/commands/env/marker-path.js +6 -0
  48. package/dist/commands/env/secret-cli.js +36 -66
  49. package/dist/commands/env/secret.js +24 -57
  50. package/dist/commands/feedback-cli.js +148 -88
  51. package/dist/commands/health/accept-rate.js +58 -0
  52. package/dist/commands/health/advisories.js +3 -4
  53. package/dist/commands/health/checks.js +85 -23
  54. package/dist/commands/health/html-report.js +7 -10
  55. package/dist/commands/health/improve-metrics.js +25 -83
  56. package/dist/commands/health/llm-usage.js +2 -1
  57. package/dist/commands/health/md-report.js +5 -9
  58. package/dist/commands/health/metrics.js +62 -20
  59. package/dist/commands/health/renderers.js +47 -0
  60. package/dist/commands/health/report-view-model.js +4 -5
  61. package/dist/commands/health/stash-exposure.js +1 -1
  62. package/dist/commands/health/surfaces.js +4 -122
  63. package/dist/commands/health/task-runs.js +3 -67
  64. package/dist/commands/health/types-improve.js +7 -0
  65. package/dist/commands/health.js +160 -35
  66. package/dist/commands/improve/anti-collapse.js +2 -2
  67. package/dist/commands/improve/autonomy-gate.js +68 -0
  68. package/dist/commands/improve/collapse-detector.js +41 -40
  69. package/dist/commands/improve/consolidate/eligibility.js +1 -23
  70. package/dist/commands/improve/consolidate/merge.js +4 -0
  71. package/dist/commands/improve/consolidate.js +140 -1000
  72. package/dist/commands/improve/distill/promote-memory.js +12 -12
  73. package/dist/commands/improve/distill/quality-gate.js +11 -6
  74. package/dist/commands/improve/distill.js +58 -69
  75. package/dist/commands/improve/eligibility.js +101 -55
  76. package/dist/commands/improve/extract-cli.js +14 -133
  77. package/dist/commands/improve/improve-cli.js +98 -114
  78. package/dist/commands/improve/improve-result-file.js +1 -28
  79. package/dist/commands/improve/improve-strategies.js +8 -5
  80. package/dist/commands/improve/improve.js +254 -101
  81. package/dist/commands/improve/locks.js +7 -0
  82. package/dist/commands/improve/loop-stages.js +182 -20
  83. package/dist/commands/improve/memory/derived-ref.js +45 -43
  84. package/dist/commands/improve/memory/memory-belief.js +1 -1
  85. package/dist/commands/improve/memory/memory-contradiction-detect.js +4 -12
  86. package/dist/commands/improve/memory/memory-improve.js +14 -5
  87. package/dist/commands/improve/outcome-loop.js +22 -65
  88. package/dist/commands/improve/preparation.js +114 -123
  89. package/dist/commands/improve/proactive-maintenance.js +2 -5
  90. package/dist/commands/improve/reflect.js +56 -160
  91. package/dist/commands/improve/run-context.js +5 -0
  92. package/dist/commands/improve/salience.js +11 -122
  93. package/dist/commands/improve/session-asset.js +4 -0
  94. package/dist/commands/improve/source-identity.js +10 -38
  95. package/dist/commands/lint/base-linter.js +51 -131
  96. package/dist/commands/lint/env-key-rules.js +31 -47
  97. package/dist/commands/lint/index.js +444 -88
  98. package/dist/commands/lint/types.js +22 -1
  99. package/dist/commands/{events.js → log.js} +33 -38
  100. package/dist/commands/migrate-cli.js +92 -12
  101. package/dist/commands/migration-tool.js +46 -0
  102. package/dist/commands/observability-cli.js +70 -209
  103. package/dist/commands/proposal/drain.js +101 -29
  104. package/dist/commands/proposal/proposal-cli.js +76 -48
  105. package/dist/commands/proposal/proposal.js +54 -18
  106. package/dist/commands/proposal/propose-cli.js +88 -0
  107. package/dist/commands/proposal/propose.js +23 -15
  108. package/dist/commands/proposal/repository.js +718 -279
  109. package/dist/commands/proposal/validators/proposal-quality-validators.js +2 -8
  110. package/dist/commands/proposal/validators/proposal-validators.js +55 -7
  111. package/dist/commands/proposal/validators/proposals.js +4 -7
  112. package/dist/commands/read/curate.js +34 -53
  113. package/dist/commands/read/knowledge.js +150 -95
  114. package/dist/commands/read/registry-search.js +2 -2
  115. package/dist/commands/read/remember-cli.js +42 -15
  116. package/dist/commands/read/search-cli.js +180 -78
  117. package/dist/commands/read/search.js +58 -43
  118. package/dist/commands/read/show.js +197 -141
  119. package/dist/commands/registry-cli.js +12 -51
  120. package/dist/commands/remember.js +14 -57
  121. package/dist/commands/sources/add-cli.js +100 -31
  122. package/dist/commands/sources/bundle-cli.js +166 -0
  123. package/dist/commands/sources/bundle-config-ops.js +7 -2
  124. package/dist/commands/sources/info.js +30 -7
  125. package/dist/commands/sources/init.js +12 -12
  126. package/dist/commands/sources/installed-stashes.js +387 -98
  127. package/dist/commands/sources/schema-repair.js +3 -2
  128. package/dist/commands/sources/self-update.js +131 -38
  129. package/dist/commands/sources/source-add.js +72 -17
  130. package/dist/commands/sources/source-clone.js +129 -45
  131. package/dist/commands/sources/source-manage.js +43 -23
  132. package/dist/commands/sources/sources-cli.js +57 -208
  133. package/dist/commands/sources/stash-cli.js +46 -53
  134. package/dist/commands/tasks/tasks-cli.js +91 -97
  135. package/dist/commands/tasks/tasks.js +284 -423
  136. package/dist/commands/workflow-cli.js +181 -450
  137. package/dist/core/abort-deadline.js +28 -0
  138. package/dist/core/adapter/adapters/agent-skills-adapter.js +67 -5
  139. package/dist/core/adapter/adapters/akm-adapter.js +60 -38
  140. package/dist/core/adapter/adapters/akm-lint.js +109 -42
  141. package/dist/core/adapter/adapters/akm-metadata.js +15 -44
  142. package/dist/core/adapter/adapters/akm-task-adapter.js +54 -31
  143. package/dist/core/adapter/adapters/akm-workflow-adapter.js +55 -71
  144. package/dist/core/adapter/adapters/dotenv-adapter.js +1 -1
  145. package/dist/core/adapter/adapters/generic-files-adapter.js +2 -0
  146. package/dist/core/adapter/adapters/index.js +6 -6
  147. package/dist/core/adapter/adapters/llm-wiki-adapter.js +14 -8
  148. package/dist/core/adapter/adapters/okf-adapter.js +187 -19
  149. package/dist/core/adapter/adapters/shared.js +3 -19
  150. package/dist/core/adapter/adapters/tool-dir-shared.js +13 -6
  151. package/dist/core/adapter/adapters/website-snapshot-adapter.js +1 -0
  152. package/dist/core/adapter/detect-adapter.js +17 -0
  153. package/dist/core/adapter/recognize-match.js +6 -4
  154. package/dist/core/adapter/validate-context.js +214 -0
  155. package/dist/core/asset/akm-markdown.js +63 -0
  156. package/dist/core/asset/asset-placement.js +20 -6
  157. package/dist/core/asset/asset-ref.js +11 -9
  158. package/dist/core/asset/frontmatter-lint.js +30 -0
  159. package/dist/core/asset/frontmatter.js +29 -9
  160. package/dist/core/asset/markdown.js +40 -51
  161. package/dist/core/asset/resolve-ref.js +89 -18
  162. package/dist/core/asset/stash-meta.js +1 -1
  163. package/dist/core/bundle-id.js +51 -0
  164. package/dist/core/common.js +218 -44
  165. package/dist/core/concurrent.js +32 -0
  166. package/dist/core/config/config-io.js +12 -1
  167. package/dist/core/config/config-schema.js +35 -8
  168. package/dist/core/config/config-sources.js +55 -11
  169. package/dist/core/config/config-walker.js +25 -9
  170. package/dist/core/config/config.js +9 -48
  171. package/dist/core/config/experimental.js +21 -0
  172. package/dist/core/config/schema/embedding.js +5 -1
  173. package/dist/core/config/schema/experimental.js +30 -0
  174. package/dist/core/config/schema/improve-processes.js +0 -6
  175. package/dist/core/config/schema/improve.js +21 -3
  176. package/dist/core/config/schema/index-config.js +8 -15
  177. package/dist/core/config/schema/output.js +4 -1
  178. package/dist/core/config/schema/setup.js +9 -18
  179. package/dist/core/config/schema/sources-bundles.js +49 -33
  180. package/dist/core/config/schema/workflow.js +14 -3
  181. package/dist/core/env-secret-ref.js +76 -46
  182. package/dist/core/errors.js +43 -12
  183. package/dist/core/events.js +76 -152
  184. package/dist/core/file-change.js +6 -5
  185. package/dist/core/file-lock.js +7 -1
  186. package/dist/core/fs-txn.js +83 -7
  187. package/dist/core/git-message.js +2 -2
  188. package/dist/core/improve-result.js +6 -100
  189. package/dist/core/json-schema.js +327 -9
  190. package/dist/core/lesson-lint.js +1 -17
  191. package/dist/core/logs-db.js +2 -1
  192. package/dist/core/loopback.js +89 -0
  193. package/dist/core/migration-operation.js +33 -2
  194. package/dist/core/mutation-target.js +78 -0
  195. package/dist/core/parse.js +4 -1
  196. package/dist/core/path-access.js +107 -0
  197. package/dist/core/paths.js +17 -20
  198. package/dist/core/recognition-util.js +12 -14
  199. package/dist/core/redaction.js +98 -17
  200. package/dist/core/spawn-env.js +234 -0
  201. package/dist/core/standards/resolve-standards-context.js +2 -14
  202. package/dist/core/standards/resolve-stash-standards.js +2 -2
  203. package/dist/core/standards/resolve-type-conventions.js +2 -2
  204. package/dist/core/state/migrations.js +41 -18
  205. package/dist/core/state-db-scope.js +134 -0
  206. package/dist/core/state-db.js +5 -14
  207. package/dist/core/structured.js +1 -1
  208. package/dist/core/subprocess.js +182 -36
  209. package/dist/core/text-truncation.js +9 -5
  210. package/dist/core/type-presentation.js +3 -3
  211. package/dist/core/warn.js +0 -3
  212. package/dist/core/write-provenance.js +85 -0
  213. package/dist/core/write-source.js +778 -95
  214. package/dist/indexer/bundle-identity-guard.js +3 -2
  215. package/dist/indexer/db/graph-db.js +17 -30
  216. package/dist/indexer/ensure-index.js +11 -3
  217. package/dist/indexer/graph/graph-boost.js +9 -34
  218. package/dist/indexer/graph/graph-extraction.js +8 -5
  219. package/dist/indexer/index-writer-lock.js +53 -17
  220. package/dist/indexer/index-written-assets.js +33 -24
  221. package/dist/indexer/indexer.js +551 -253
  222. package/dist/indexer/installations.js +14 -96
  223. package/dist/indexer/passes/dir-staleness.js +16 -9
  224. package/dist/indexer/passes/memory-inference.js +15 -9
  225. package/dist/indexer/passes/metadata.js +113 -47
  226. package/dist/indexer/scan/doc-to-entry.js +38 -1
  227. package/dist/indexer/scan/drain-dir.js +13 -23
  228. package/dist/indexer/search/db-search.js +107 -69
  229. package/dist/indexer/search/fts-query.js +47 -24
  230. package/dist/indexer/search/ranking-contributors.js +42 -20
  231. package/dist/indexer/search/ranking.js +18 -99
  232. package/dist/indexer/search/search-fields.js +7 -2
  233. package/dist/indexer/search/search-source.js +82 -93
  234. package/dist/indexer/usage/usage-events.js +0 -89
  235. package/dist/indexer/walk/file-context.js +2 -1
  236. package/dist/indexer/walk/matchers.js +30 -43
  237. package/dist/indexer/walk/path-resolver.js +7 -2
  238. package/dist/indexer/walk/walker.js +38 -12
  239. package/dist/integrations/agent/builders.js +0 -6
  240. package/dist/integrations/agent/config.js +2 -2
  241. package/dist/integrations/agent/detect.js +49 -19
  242. package/dist/integrations/agent/engine-fallback.js +76 -0
  243. package/dist/integrations/agent/engine-resolution.js +24 -11
  244. package/dist/integrations/agent/model-aliases.js +1 -1
  245. package/dist/integrations/agent/profiles.js +23 -1
  246. package/dist/integrations/agent/prompts.js +12 -8
  247. package/dist/integrations/agent/runner-dispatch.js +4 -2
  248. package/dist/integrations/agent/runner.js +0 -1
  249. package/dist/integrations/agent/spawn.js +20 -93
  250. package/dist/integrations/github.js +1 -1
  251. package/dist/integrations/harnesses/aider/agent-builder.js +6 -4
  252. package/dist/integrations/harnesses/amazonq/agent-builder.js +7 -4
  253. package/dist/integrations/harnesses/claude/session-log.js +0 -10
  254. package/dist/integrations/harnesses/codex/agent-builder.js +5 -2
  255. package/dist/integrations/harnesses/copilot/agent-builder.js +5 -3
  256. package/dist/integrations/harnesses/gemini/agent-builder.js +5 -3
  257. package/dist/integrations/harnesses/index.js +3 -7
  258. package/dist/integrations/harnesses/opencode/agent-builder.js +21 -2
  259. package/dist/integrations/harnesses/opencode/session-log.js +0 -15
  260. package/dist/integrations/harnesses/opencode-sdk/sdk-runner.js +13 -4
  261. package/dist/integrations/harnesses/openhands/agent-builder.js +9 -6
  262. package/dist/integrations/harnesses/pi/agent-builder.js +6 -4
  263. package/dist/integrations/lockfile.js +132 -8
  264. package/dist/integrations/session-logs/index.js +3 -28
  265. package/dist/llm/client.js +136 -100
  266. package/dist/llm/embedders/remote.js +13 -5
  267. package/dist/llm/feature-gate.js +4 -12
  268. package/dist/llm/graph-extract.js +5 -11
  269. package/dist/llm/memory-infer.js +144 -1
  270. package/dist/llm/metadata-enhance.js +5 -7
  271. package/dist/llm/structured-call.js +1 -1
  272. package/dist/llm/usage-persist.js +26 -5
  273. package/dist/llm/usage-telemetry.js +25 -2
  274. package/dist/output/cli-hints.js +1 -2
  275. package/dist/output/context.js +22 -7
  276. package/dist/output/format-exempt.js +80 -0
  277. package/dist/output/generic-render.js +259 -0
  278. package/dist/output/render-registry.js +57 -0
  279. package/dist/output/renderers.js +14 -36
  280. package/dist/output/shapes/curate.js +10 -1
  281. package/dist/output/shapes/events.js +12 -7
  282. package/dist/output/shapes/helpers.js +56 -83
  283. package/dist/output/shapes/migrate.js +8 -0
  284. package/dist/output/shapes/passthrough.js +7 -41
  285. package/dist/output/shapes/proposal/producer.js +15 -7
  286. package/dist/output/shapes.js +2 -9
  287. package/dist/output/text/{init.js → bundle-create.js} +3 -1
  288. package/dist/output/text/bundle-show.js +7 -0
  289. package/dist/output/text/command-format.js +164 -96
  290. package/dist/output/text/env.js +1 -3
  291. package/dist/output/text/events.js +8 -7
  292. package/dist/output/text/health-format.js +103 -0
  293. package/dist/output/text/health.js +7 -0
  294. package/dist/output/text/helpers.js +10 -8
  295. package/dist/output/text/lint-format.js +56 -0
  296. package/dist/{migrate-storage-node.mjs → output/text/lint.js} +2 -5
  297. package/dist/output/text/migrate.js +88 -0
  298. package/dist/output/text/proposal/producer.js +4 -2
  299. package/dist/output/text/proposal-format.js +44 -72
  300. package/dist/output/text/registry-commands.js +1 -2
  301. package/dist/output/text/show-directives.js +15 -7
  302. package/dist/output/text/status-list.js +32 -0
  303. package/dist/output/text/{save.js → sync.js} +2 -2
  304. package/dist/output/text/workflow-format.js +24 -203
  305. package/dist/output/text/workflow.js +1 -7
  306. package/dist/output/text.js +16 -17
  307. package/dist/registry/factory.js +4 -6
  308. package/dist/registry/origin-resolve.js +16 -27
  309. package/dist/registry/providers/skills-sh.js +3 -3
  310. package/dist/registry/providers/static-index.js +13 -23
  311. package/dist/registry/resolve.js +42 -7
  312. package/dist/registry/semver.js +34 -84
  313. package/dist/runtime.js +2 -23
  314. package/dist/scripts/akm-migrate-node.js +60972 -0
  315. package/dist/scripts/akm-migrate.js +60310 -0
  316. package/dist/setup/detect.js +42 -15
  317. package/dist/setup/registry-stash-loader.js +2 -2
  318. package/dist/setup/setup.js +236 -136
  319. package/dist/setup/steps/connection.js +7 -9
  320. package/dist/setup/steps/platforms.js +9 -9
  321. package/dist/setup/steps/semantic.js +15 -3
  322. package/dist/setup/steps/sources.js +12 -13
  323. package/dist/setup/steps/stashdir.js +2 -3
  324. package/dist/setup/steps/tasks.js +237 -120
  325. package/dist/sources/freshness.js +1 -1
  326. package/dist/sources/provider-factory.js +11 -17
  327. package/dist/sources/providers/filesystem.js +2 -3
  328. package/dist/sources/providers/git-install.js +278 -34
  329. package/dist/sources/providers/git-provider.js +25 -23
  330. package/dist/sources/providers/git-stash.js +414 -106
  331. package/dist/sources/providers/git.js +2 -2
  332. package/dist/sources/providers/npm.js +16 -19
  333. package/dist/sources/providers/provider-utils.js +7 -4
  334. package/dist/sources/providers/sync-from-ref.js +3 -9
  335. package/dist/sources/providers/website.js +6 -1
  336. package/dist/sources/resolve.js +6 -5
  337. package/dist/sources/snapshot-fetchers/bluesky.js +146 -0
  338. package/dist/sources/snapshot-fetchers/content-extract.js +566 -0
  339. package/dist/sources/snapshot-fetchers/fetcher-util.js +41 -0
  340. package/dist/sources/snapshot-fetchers/github.js +100 -0
  341. package/dist/sources/snapshot-fetchers/host-guard.js +291 -0
  342. package/dist/sources/snapshot-fetchers/registry.js +17 -1
  343. package/dist/sources/snapshot-fetchers/robots.js +348 -0
  344. package/dist/sources/snapshot-fetchers/rss.js +282 -0
  345. package/dist/sources/snapshot-fetchers/secret-seam.js +42 -0
  346. package/dist/sources/snapshot-fetchers/website-ingest.js +686 -282
  347. package/dist/sources/snapshot-fetchers/x.js +910 -0
  348. package/dist/storage/database.js +13 -1
  349. package/dist/storage/engines/sqlite-migrations.js +23 -111
  350. package/dist/storage/managed-db.js +21 -2
  351. package/dist/storage/repositories/canaries-repository.js +1 -1
  352. package/dist/storage/repositories/events-repository.js +27 -11
  353. package/dist/storage/repositories/improve-runs-repository.js +6 -12
  354. package/dist/storage/repositories/index-connection.js +44 -8
  355. package/dist/storage/repositories/index-entries-repository.js +157 -241
  356. package/dist/storage/repositories/index-entry-mapper.js +15 -11
  357. package/dist/storage/repositories/index-fts-repository.js +5 -2
  358. package/dist/storage/repositories/index-llm-cache-repository.js +0 -1
  359. package/dist/storage/repositories/index-meta-repository.js +2 -3
  360. package/dist/storage/repositories/index-schema.js +10 -25
  361. package/dist/storage/repositories/index-utility-repository.js +15 -28
  362. package/dist/storage/repositories/index-vec-repository.js +6 -1
  363. package/dist/storage/repositories/outcome-repository.js +119 -0
  364. package/dist/storage/repositories/proposals-repository.js +296 -59
  365. package/dist/storage/repositories/registry-cache.js +19 -0
  366. package/dist/storage/repositories/salience-repository.js +172 -0
  367. package/dist/storage/repositories/task-history-repository.js +15 -13
  368. package/dist/storage/repositories/workflow-runs-repository.js +118 -53
  369. package/dist/tasks/backends/cron.js +105 -15
  370. package/dist/tasks/backends/index.js +1 -1
  371. package/dist/tasks/backends/launchd.js +85 -38
  372. package/dist/tasks/backends/schtasks.js +135 -15
  373. package/dist/tasks/embedded.js +56 -40
  374. package/dist/tasks/log-redaction.js +156 -0
  375. package/dist/tasks/parser.js +87 -160
  376. package/dist/tasks/resolve-akm-bin.js +137 -59
  377. package/dist/tasks/runner.js +209 -44
  378. package/dist/tasks/scheduler-invocation.js +220 -10
  379. package/dist/tasks/schema.js +89 -1
  380. package/dist/tasks/task-id.js +1 -3
  381. package/dist/tasks/validator.js +20 -6
  382. package/dist/workflows/authoring/authoring.js +94 -143
  383. package/dist/workflows/authoring/scope-key.js +1 -1
  384. package/dist/workflows/concurrency-policy.js +95 -1
  385. package/dist/workflows/exec/dispatch-redaction.js +114 -0
  386. package/dist/workflows/exec/exec-unit.js +542 -0
  387. package/dist/workflows/exec/frozen-judge.js +130 -32
  388. package/dist/workflows/exec/native-executor.js +513 -274
  389. package/dist/workflows/exec/param-secrets.js +12 -11
  390. package/dist/workflows/exec/run-workflow.js +496 -237
  391. package/dist/workflows/exec/step-work.js +616 -412
  392. package/dist/workflows/exec/unit-dispatch.js +34 -0
  393. package/dist/workflows/exec/unit-writer.js +53 -13
  394. package/dist/workflows/exec/worktree.js +454 -41
  395. package/dist/workflows/ir/compile.js +166 -271
  396. package/dist/workflows/ir/freeze.js +119 -42
  397. package/dist/workflows/ir/params.js +135 -11
  398. package/dist/workflows/ir/plan-hash.js +1 -1
  399. package/dist/workflows/ir/schema.js +129 -45
  400. package/dist/workflows/parser.js +1070 -307
  401. package/dist/workflows/program/expressions.js +20 -208
  402. package/dist/workflows/program/schema.js +31 -10
  403. package/dist/workflows/renderer.js +123 -68
  404. package/dist/workflows/resource-limits.js +184 -0
  405. package/dist/workflows/runtime/checkin.js +3 -3
  406. package/dist/workflows/runtime/plan-classifier.js +16 -75
  407. package/dist/workflows/runtime/runs.js +331 -132
  408. package/dist/workflows/runtime/unit-checkin.js +1 -1
  409. package/dist/workflows/runtime/unit-phases.js +2 -2
  410. package/dist/workflows/runtime/workflow-asset-loader.js +232 -83
  411. package/dist/workflows/schema.js +1 -11
  412. package/dist/workflows/validate-summary.js +47 -38
  413. package/dist/workflows/validator.js +21 -62
  414. package/docs/README.md +110 -0
  415. package/docs/migration/README.md +8 -0
  416. package/docs/migration/release-notes/0.7.0.md +11 -11
  417. package/docs/migration/release-notes/0.9.0.md +209 -27
  418. package/docs/migration/v0.7-to-v0.8.md +48 -48
  419. package/docs/migration/v0.8-to-v0.9.md +567 -209
  420. package/docs/migration/v0.9.0-troubleshooting.md +561 -0
  421. package/docs/reference/README.md +19 -0
  422. package/docs/reference/bundle-types.md +19 -0
  423. package/docs/reference/cli.md +2342 -0
  424. package/docs/reference/configuration.md +371 -0
  425. package/docs/reference/data-and-telemetry.md +129 -46
  426. package/docs/reference/supported-formats.md +50 -0
  427. package/docs/reference/workflow-schema.md +1014 -0
  428. package/docs/reference/workflows.md +51 -0
  429. package/package.json +31 -13
  430. package/schemas/akm-asset-envelope.json +93 -0
  431. package/schemas/akm-config.json +89 -128
  432. package/schemas/akm-task.json +27 -5
  433. package/schemas/akm-workflow.json +157 -81
  434. package/dist/assets/tasks/core/backup.yml +0 -5
  435. package/dist/assets/tasks/graph-refresh-weekly.yml +0 -10
  436. package/dist/cli/config-migrate.js +0 -1878
  437. package/dist/cli/config-validate.js +0 -41
  438. package/dist/commands/backup-cli.js +0 -56
  439. package/dist/commands/bundle/bundle-cli.js +0 -68
  440. package/dist/commands/bundle/bundle.js +0 -219
  441. package/dist/commands/graph/graph-cli.js +0 -124
  442. package/dist/commands/graph/graph.js +0 -489
  443. package/dist/commands/improve/extract-watch.js +0 -140
  444. package/dist/commands/mv-cli.js +0 -1221
  445. package/dist/commands/sources/history.js +0 -201
  446. package/dist/commands/tasks/default-tasks.js +0 -186
  447. package/dist/core/migration-backup.js +0 -1231
  448. package/dist/indexer/usage/unmigrated-vaults-guard.js +0 -95
  449. package/dist/llm/memory-infer-impl.js +0 -138
  450. package/dist/migrate/legacy/config-source-migration.js +0 -257
  451. package/dist/migrate/legacy/content-migration.js +0 -350
  452. package/dist/migrate/legacy/legacy-layout.js +0 -779
  453. package/dist/migrate/legacy/legacy-paths.js +0 -25
  454. package/dist/migrate/legacy/legacy-stash-json.js +0 -80
  455. package/dist/migrate/legacy/proposal-fs-import.js +0 -168
  456. package/dist/migrate/legacy/task-target-ref-migration.js +0 -278
  457. package/dist/migrate/legacy/three-db-cutover.js +0 -845
  458. package/dist/migrate/legacy/workflow-migrations-bodies.js +0 -52
  459. package/dist/migrate/legacy/workflow-migrations-frozen.js +0 -21
  460. package/dist/migrate/legacy-ref-grammar.js +0 -214
  461. package/dist/output/shapes/distill.js +0 -14
  462. package/dist/output/shapes/history.js +0 -11
  463. package/dist/output/text/distill.js +0 -6
  464. package/dist/output/text/enable-disable.js +0 -8
  465. package/dist/output/text/history.js +0 -6
  466. package/dist/registry/build-index.js +0 -382
  467. package/dist/schemas/akm-config.json +0 -4704
  468. package/dist/schemas/akm-task.json +0 -87
  469. package/dist/schemas/akm-workflow.json +0 -372
  470. package/dist/scripts/migrate-storage.js +0 -3816
  471. package/dist/workflows/authoring/workflow-program-template.yaml +0 -31
  472. package/dist/workflows/cli.js +0 -53
  473. package/dist/workflows/exec/brief.js +0 -481
  474. package/dist/workflows/exec/report.js +0 -1460
  475. package/dist/workflows/exec/watch.js +0 -116
  476. package/dist/workflows/program/parser.js +0 -813
  477. package/dist/workflows/program/project.js +0 -104
@@ -0,0 +1,371 @@
1
+ # Configuration
2
+
3
+ AKM reads one user configuration file: `$XDG_CONFIG_HOME/akm/config.json`
4
+ (normally `~/.config/akm/config.json` on Linux and macOS, or
5
+ `%APPDATA%\akm\config.json` on Windows). Set `AKM_CONFIG_DIR` to override the
6
+ directory. Project `.akm/config.json` files are not merged.
7
+
8
+ ## Version 0.9
9
+
10
+ A present configuration file must set `configVersion` to exactly `"0.9.0"`.
11
+ Missing, older, newer, numeric, and malformed versions are rejected by ordinary
12
+ commands without rewriting the file. `akm migrate status` reports config and
13
+ database state independently; it exits nonzero when migration is blocked.
14
+ `akm migrate apply` installs an operator-prepared 0.9 config and applies pending
15
+ database migrations, but it never guesses profile-to-engine mappings. See [the
16
+ migration guide](../migration/v0.8-to-v0.9.md) before editing an existing
17
+ installation.
18
+
19
+ Canonical config and durable database access fail closed while a restore or
20
+ migration-apply operation is incomplete. Use `akm migrate status` to inspect it
21
+ and `akm migrate apply` to retry; do not delete migration control files manually.
22
+
23
+ AKM 0.8 does not provide these migration commands. To cross from 0.8 to 0.9,
24
+ prepare the target and an independent filesystem backup first, install or stage
25
+ the 0.9 binary manually, then invoke that new binary with `migrate apply
26
+ --config`. Do not use `upgrade --migration-config` from 0.8; that installed 0.8
27
+ code cannot enforce safeguards introduced by 0.9.
28
+
29
+ ```jsonc
30
+ {
31
+ "configVersion": "0.9.0",
32
+ "$schema": "https://itlackey.github.io/akm/schemas/akm-config.json",
33
+ "engines": {
34
+ "fast": {
35
+ "kind": "llm",
36
+ "endpoint": "http://localhost:11434/v1/chat/completions",
37
+ "model": "qwen3",
38
+ "apiKey": "${LOCAL_LLM_API_KEY}"
39
+ },
40
+ "reviewer": {
41
+ "kind": "agent",
42
+ "platform": "opencode",
43
+ "model": "anthropic/claude-sonnet-4-6"
44
+ }
45
+ },
46
+ "defaults": {
47
+ "engine": "reviewer",
48
+ "llmEngine": "fast",
49
+ "improveStrategy": "default"
50
+ },
51
+ "workflow": {
52
+ "maxConcurrency": 8,
53
+ "judgeEngine": "reviewer"
54
+ },
55
+ "improve": {
56
+ "strategies": {
57
+ "nightly": {
58
+ "engine": "fast",
59
+ "processes": {
60
+ "reflect": {},
61
+ "memoryInference": { "model": "qwen3-small", "llm": { "temperature": 0.1 } }
62
+ }
63
+ }
64
+ }
65
+ }
66
+ }
67
+ ```
68
+
69
+ ## Engines
70
+
71
+ `engines` is the only public execution map. An engine name is lowercase
72
+ kebab-case, at most 63 characters, and cannot start with `akm-`.
73
+
74
+ | Kind | Required fields | Use |
75
+ | --- | --- | --- |
76
+ | `llm` | `endpoint`, `model` | OpenAI-compatible chat completions |
77
+ | `agent` | `platform` | A registered dispatch-capable harness |
78
+
79
+ LLM endpoints must be complete `http://` or `https://` chat-completions URLs
80
+ ending in `/chat/completions`, without userinfo, query, or fragment. API keys
81
+ are symbolic only: `$VAR` or `${VAR}`. AKM resolves them only at dispatch.
82
+
83
+ An agent engine may set `bin`, `args`, `workspace`, `model`, `timeoutMs`, and
84
+ `modelAliases`. Only `platform: "opencode-sdk"` may set `llmEngine`; it names
85
+ the LLM engine used as that SDK engine's fallback connection.
86
+
87
+ `platform: "opencode-sdk"` needs the **`opencode` binary** on PATH (or a `bin`
88
+ pointing at it). akm bundles `@opencode-ai/sdk`, but that package is an HTTP
89
+ client with no dependencies — it spawns `opencode serve` and talks to it — so
90
+ the npm dependency alone does not make the platform usable. Install the binary
91
+ with `npm i -g opencode-ai` or opencode's own installer.
92
+
93
+ Config-root `modelAliases` resolve by exact engine/platform column first, then
94
+ the shared `llm` column for direct and fallback LLM engines, then `"*"`. The
95
+ resolved exact model is used consistently by direct dispatch, SDK fallback,
96
+ health evidence, and frozen workflow plans.
97
+
98
+ `defaults.engine` names an LLM or agent engine. `defaults.llmEngine` must name
99
+ an LLM engine. There is no first-engine fallback: an unset `defaults.engine`
100
+ never resolves to some arbitrary entry in `engines`. It resolves instead to a
101
+ synthesized, config-free `opencode-sdk` engine when the `opencode` binary is on
102
+ PATH — announced once per run, and preempted by any `opencode-sdk` engine you
103
+ configure yourself. Naming an engine that is not configured is always an error
104
+ and is never rescued by that fallback.
105
+
106
+ Index passes select engines through `index.defaults.engine` or
107
+ `index.<pass>.engine`. Per-pass `model`, `timeoutMs`, and `llm` fields are
108
+ invocation overrides; `enabled: false` disables that pass. Connection fields
109
+ such as `endpoint`, `provider`, and `apiKey` belong only on named engines.
110
+
111
+ `workflow.maxConcurrency` is the native workflow engine ceiling. An explicit
112
+ value is clamped to `1..64`. When absent, AKM derives the cap once from the CPU
113
+ count (`min(16, max(1, cores - 2))`) and freezes it into the run plan, so resume
114
+ does not change policy on a different host or after config edits.
115
+
116
+ `workflow.defaultMapConcurrency` is the width a `map` step freezes when it
117
+ declares no `concurrency:` of its own. Unset means **4** — map steps are
118
+ parallel by default as of 0.9.1. An explicit value is clamped to `1..64`; set
119
+ it to `1` to restore the pre-0.9.1 serial-by-default fan-out for every workflow
120
+ on this machine. It is only a default: an authored `map.concurrency` always
121
+ wins, and it never raises a step past `workflow.maxConcurrency`, the selected
122
+ engine's `concurrency`, or the host CPU cap. An LLM engine that declares no
123
+ `engines.<name>.concurrency` gets **1** on a loopback endpoint (a local model
124
+ server holds one loaded model) and **4** on a remote one.
125
+
126
+ `workflow.judgeEngine` names the LLM or agent engine used to verify every
127
+ non-empty workflow `### gate` rubric. It is required when a workflow declares
128
+ completion criteria and is frozen into each new run, so later config edits do
129
+ not change an in-flight run's verifier. Missing, failed, or malformed verifier
130
+ results reject the gate; criteria are never silently bypassed.
131
+
132
+ ## Strategies
133
+
134
+ Improve presets live under `improve.strategies`; invoke one with
135
+ `akm improve --strategy <name>`. The selection order is `--strategy`,
136
+ `defaults.improveStrategy`, then built-in `default`. A strategy and each process
137
+ can select `engine`, `model`, `timeoutMs`, and LLM request overrides:
138
+
139
+ ```jsonc
140
+ {
141
+ "improve": {
142
+ "strategies": {
143
+ "nightly": {
144
+ "engine": "fast",
145
+ "processes": {
146
+ "reflect": { "llm": { "temperature": 0.2 } },
147
+ "graphExtraction": { "model": "qwen3-small" }
148
+ }
149
+ }
150
+ }
151
+ }
152
+ }
153
+ ```
154
+
155
+ LLM-only improve processes require an LLM engine; an explicit invalid or
156
+ incompatible engine never falls back to another engine. Built-in strategies
157
+ are complete presets. User-defined strategies inherit omitted fields from the
158
+ built-in `default` strategy before applying their own overrides.
159
+
160
+ The shipped `default` and `frequent` strategies keep improve-stage session
161
+ extraction off. `proactiveMaintenance` is off in `default` and
162
+ `reflect-distill`; run `akm improve --strategy proactive-maintenance` to use the
163
+ dedicated opt-in preset. Because strategies inherit from `default`, a preset
164
+ that omits either process also inherits the off value. User strategy overrides
165
+ are applied last, so an explicit `enabled: true` still opts the selected
166
+ strategy in.
167
+
168
+ These improve-stage defaults do not gate explicit standalone extraction through
169
+ `akm proposal extract --type <harness>` or `akm proposal extract --auto`. The interactive
170
+ scheduled-task step also continues to offer the bundled `core/extract` template
171
+ as an unselected opt-in; it is not installed merely because the template is
172
+ bundled.
173
+
174
+ ## Indexing
175
+
176
+ `index.indexBodyOpening` defaults to `false`. When enabled, AKM captures the
177
+ first prose paragraph of each Markdown asset body, capped at 280 characters,
178
+ into the lowest-weight search content and embedding text. Secret and env files
179
+ are never read for this field, and session-kind memories are excluded.
180
+
181
+ Changing this option changes indexed text. Run `akm index --full` after
182
+ toggling it so all entries and embeddings are rebuilt consistently. If the
183
+ setting differs from the state used to build the current index, AKM warns until
184
+ that full rebuild completes.
185
+
186
+ ## Semantic search
187
+
188
+ `semanticSearchMode` (top-level, `"off" | "auto"`, default `"off"`) gates
189
+ embedding-based search. `"auto"` lets AKM set up embeddings (which downloads
190
+ a local model unless you point `embedding` at a remote provider) and falls
191
+ back to keyword-only FTS if the embedding runtime is unavailable; `"off"`
192
+ disables semantic search outright and search is always keyword-only FTS.
193
+ The default is `"off"` so a bare or headless install (`akm bundle create`, `--yes`,
194
+ `--config`) never silently downloads the local embedding model on first
195
+ index.
196
+ The interactive `akm setup` wizard pre-selects semantic search **on**
197
+ regardless of this default, and warns that choosing it downloads the model
198
+ unless a remote `embedding` config is provided.
199
+
200
+ ```jsonc
201
+ { "semanticSearchMode": "off" }
202
+ ```
203
+
204
+ `embedding` configures the connection used for semantic search and
205
+ `akm improve`'s memory-inference/consolidate passes when they call an
206
+ embedding model: `provider`, `endpoint`, `model`, `apiKey` (symbolic
207
+ reference, same rules as engine `apiKey`), `dimension`, `localModel`,
208
+ `maxTokens`, `batchSize`, `chunkSize`, `contextLength`, and
209
+ `ollamaOptions.num_ctx`.
210
+
211
+ ## Search tuning
212
+
213
+ `search` tunes ranking, not behavior an ordinary user needs to touch:
214
+
215
+ | Key | Purpose |
216
+ | --- | --- |
217
+ | `search.minScore` | Drop results below this score |
218
+ | `search.defaultExcludeTypes` | Asset types excluded from results by default |
219
+
220
+ ### Graph boost search tuning
221
+
222
+ | Key | Purpose |
223
+ | --- | --- |
224
+ | `search.graphBoost.*` | Entity-graph relevance boost: `directBoostPerEntity`/`directBoostCap` (directly related entities), `hopBoostPerEntity`/`hopBoostCap` (multi-hop, capped at `maxHops` ≤ 3), `confidenceMode` (`off`\|`blend`\|`multiply`, default `blend`), `confidenceWeight` (0–1, default `0.2`) |
225
+
226
+ ## Feedback
227
+
228
+ `feedback` shapes the `akm feedback` taxonomy:
229
+
230
+ | Key | Purpose |
231
+ | --- | --- |
232
+ | `feedback.requireReason` | Whether `akm feedback --negative` without `--reason`/`--failure-mode` is a hard error. **Defaults to `true`** when unset — set `false` to downgrade the check to a warning instead |
233
+ | `feedback.allowedFailureModes` | Restrict `--failure-mode` values accepted by `akm feedback`. Curated set (also the default when unset): `incorrect`, `outdated`, `dangerous`, `incomplete`, `redundant` |
234
+
235
+ ## Bundles and write target
236
+
237
+ `bundles` (replacing the retired `stashDir`/`sources[]`/`installed[]` trio)
238
+ and `defaultBundle` are the 0.9 source configuration shape — see
239
+ [Concepts](https://github.com/itlackey/akm/blob/main/docs/guides/concepts.md) and the [CLI reference](cli.md) for the
240
+ full bundle model (`path`, `git`, `website`, `npm`, `writable`, `registryId`,
241
+ `components`). `defaultBundle` must name a key in `bundles` when set. A
242
+ bundle's `components.<id>.adapter` key pins it to a specific format adapter
243
+ instead of relying on auto-detection — see [Bundle Types](bundle-types.md)
244
+ for the full adapter list and what each one reads/writes.
245
+
246
+ ### defaultWriteTarget
247
+
248
+ `defaultWriteTarget` names the bundle that write commands (`akm remember`,
249
+ `akm env`/`secret create`, `akm improve`, etc.) fall back to when no
250
+ explicit destination flag is given and the command isn't already scoped to a
251
+ specific source. It must name a configured bundle; setting it with no
252
+ `bundles` configured, or naming an unconfigured bundle, is rejected at
253
+ `config set` (or config load) time. The full write-target resolution order
254
+ is the command's destination flag (`--bundle` on `remember`/`clone`/
255
+ `improve`, `--target` on `env`/`secret create`) -> `defaultWriteTarget` ->
256
+ working bundle (`defaultBundle`) -> `ConfigError`.
257
+
258
+ ### Memory scope
259
+
260
+ `akm remember`'s scope flags (`--user`, `--agent`, `--run`, `--channel`)
261
+ write four canonical top-level frontmatter keys on the memory file:
262
+ `scope_user`, `scope_agent`, `scope_run`, `scope_channel` (one key per
263
+ non-empty scope value; string values). This is not a config-file setting —
264
+ it is documented here because it is the multi-tenant/multi-agent contract
265
+ that `akm search --filter` and `akm show --filter` read back:
266
+ `--filter user=<id>` / `--filter agent=<id>` / `--filter run=<id>` /
267
+ `--filter channel=<name>` (repeatable) narrow results/resolution to assets
268
+ whose frontmatter scope matches, without changing ranking. A memory with
269
+ only scope flags and no tags is valid — the tag-required check is
270
+ independent of scope. `--scope` was removed in 0.9.0 with no alias; use
271
+ `--filter`.
272
+
273
+ `archiveRetentionDays` (default `90` when unset) controls how long a pending
274
+ proposal is kept before `akm improve`'s maintenance pass archives it (status
275
+ `rejected`, reason `"expired: no action within retention window"`) — `akm
276
+ proposal` itself has no archive/expire verb. Setting it to `0` or less
277
+ disables expiry entirely.
278
+
279
+ ## Registries
280
+
281
+ `registries` (top-level array, distinct from `bundles`) lists remote package
282
+ registries `akm registry`/`akm bundle add` can search and install from.
283
+ Each entry is `{ url, name?, enabled?, provider?, options? }`; `provider`
284
+ defaults to `"static-index"`. See [Registries](https://github.com/itlackey/akm/blob/main/docs/reference/registry.md) for the full
285
+ field reference and provider list.
286
+
287
+ ## Output defaults
288
+
289
+ `output.format` (one of `json`\|`yaml`\|`text`\|`jsonl`\|`md`\|`html`,
290
+ default `json`) and `output.detail` (`brief`\|`normal`\|`full`, default
291
+ `brief`) set the CLI's default `--format`/`--detail` when the flags are
292
+ omitted. Per-command flags always override these.
293
+
294
+ ## Setup-derived recommendations
295
+
296
+ `setup` is reserved for configuration derived by `akm setup`. It currently
297
+ holds no keys — the `setup.taskSchedules` sub-key was removed in 0.9.0 after
298
+ nothing in the setup flow or the tasks subsystem was found to read or write
299
+ it. Scheduling lives in the tasks subsystem (`akm task`).
300
+
301
+ ## Experimental opt-ins
302
+
303
+ `experimental` holds explicit opt-ins for behavior outside the 0.9
304
+ stability contract (see [STABILITY.md](../../STABILITY.md) for full
305
+ classification). Every key defaults to **off**; an absent `experimental`
306
+ section, an absent key, and an explicit `false` all read identically as off.
307
+
308
+ ```jsonc
309
+ {
310
+ "experimental": {
311
+ "improveAutonomy": false
312
+ }
313
+ }
314
+ ```
315
+
316
+ - **`experimental.improveAutonomy`** — gates only the autonomous
317
+ `memoryInference`, `triagePromote`, and `memoryCleanup` lanes. `akm improve`
318
+ itself always runs; this only gates mutations without a human in the loop.
319
+ Consolidation is not gated: it remains advisory and emits reviewable
320
+ proposals. `sync.push` is deliberately **not** gated by this key.
321
+
322
+ ## Managing Config
323
+
324
+ ```sh
325
+ akm config list
326
+ akm config get engines.fast
327
+ akm config set engines.fast '{"kind":"llm","endpoint":"http://localhost:11434/v1/chat/completions","model":"qwen3"}'
328
+ akm config set engines.fast.apiKey '$LOCAL_LLM_API_KEY'
329
+ akm config unset engines.old
330
+ akm migrate status
331
+ akm migrate status --config ./prepared-0.9.json
332
+ akm migrate apply --config ./prepared-0.9.json --dry-run
333
+ akm migrate apply --config ./prepared-0.9.json
334
+ ```
335
+
336
+ Object values passed to `config set` deep-merge with their current value.
337
+ Arrays replace, `null` is only valid for nullable fields, and `config unset` is
338
+ the only deletion operation. `configVersion` cannot be set or unset with the
339
+ generic walker.
340
+
341
+ ## Environment
342
+
343
+ | Variable | Purpose |
344
+ | --- | --- |
345
+ | `AKM_CONFIG_DIR` | Override the user config directory (or set `XDG_CONFIG_HOME`) |
346
+ | `AKM_ENGINE_<NAME>_API_KEY` | Fallback credential for LLM engine `<name>` |
347
+ | `AKM_LLM_API_KEY` | Fallback only for the selected `defaults.llmEngine` |
348
+ | `AKM_EMBED_API_KEY` | Embedding credential |
349
+ | `AKM_BUNDLE_DIR` | Override the bundle directory |
350
+ | `AKM_DATA_DIR` | Override the data directory — durable `index.db`/`workflow.db`/`state.db`, `akm.lock`, config backups (or set `XDG_DATA_HOME`) |
351
+ | `AKM_CACHE_DIR` | Override the cache directory — regenerable caches (or set `XDG_CACHE_HOME`) |
352
+ | `AKM_STATE_DIR` | Override the state directory — task-scheduler invocation state (or set `XDG_STATE_HOME`) |
353
+ | `AKM_SQLITE_JOURNAL_MODE` | SQLite journal mode: `WAL` (default), `DELETE`, or `TRUNCATE` |
354
+ | `AKM_VERBOSE` | Truthy value enables the same diagnostics as `--verbose` |
355
+ | `AKM_DEBUG` | `1` prints a stack trace on unexpected internal errors |
356
+
357
+ For an engine named `fast`, its fallback variable is
358
+ `AKM_ENGINE_FAST_API_KEY`. An explicit `apiKey` symbolic reference is
359
+ authoritative and does not fall through to another variable.
360
+
361
+ Use `AKM_SQLITE_JOURNAL_MODE=DELETE` or `TRUNCATE` when WAL is unavailable,
362
+ such as on some NFS/SMB mounts. With the default `WAL` setting, AKM detects a
363
+ network filesystem for the data directory and falls back to `DELETE`.
364
+
365
+ ## Retired Configuration
366
+
367
+ `profiles`, `llm`, `agent`, `features`, `stashes`, `defaults.llm`,
368
+ `defaults.agent`, and `defaults.improve` are rejected in 0.9. Recreate the
369
+ configuration using `engines`, `defaults.engine`, `defaults.llmEngine`, and
370
+ `improve.strategies`; AKM deliberately does not infer or rename ambiguous
371
+ profile identities.