akm-cli 0.9.0-rc.4 → 0.9.0-rc.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (438) hide show
  1. package/CHANGELOG.md +122 -26
  2. package/README.md +7 -7
  3. package/SECURITY.md +11 -10
  4. package/dist/akm +2 -2
  5. package/dist/akm-migrate-storage +2 -2
  6. package/dist/assets/hints/cli-hints-full.md +60 -73
  7. package/dist/assets/hints/cli-hints-short.md +8 -12
  8. package/dist/assets/improve-strategies/default.json +5 -7
  9. package/dist/assets/improve-strategies/frequent.json +2 -2
  10. package/dist/assets/improve-strategies/proactive-maintenance.json +2 -2
  11. package/dist/assets/improve-strategies/quick.json +1 -1
  12. package/dist/assets/improve-strategies/reflect-distill.json +3 -3
  13. package/dist/assets/improve-strategies/thorough.json +1 -1
  14. package/dist/assets/prompts/consolidate-system.md +5 -5
  15. package/dist/assets/prompts/extract-session.md +2 -6
  16. package/dist/assets/prompts/reflect-llm-framed-contract.md +11 -0
  17. package/dist/assets/prompts/reflect-llm-schema-contract.md +3 -0
  18. package/dist/assets/prompts/reflect-output-repair.md +3 -0
  19. package/dist/assets/stash-skeleton/README.md +10 -11
  20. package/dist/assets/stash-skeleton/facts/conventions/assets/agent.md +1 -1
  21. package/dist/assets/stash-skeleton/facts/conventions/assets/fact.md +1 -1
  22. package/dist/assets/stash-skeleton/facts/conventions/assets/knowledge.md +1 -1
  23. package/dist/assets/stash-skeleton/facts/conventions/assets/lesson.md +2 -2
  24. package/dist/assets/stash-skeleton/facts/conventions/assets/memory.md +2 -2
  25. package/dist/assets/stash-skeleton/facts/conventions/assets/script.md +1 -1
  26. package/dist/assets/stash-skeleton/facts/conventions/assets/skill.md +2 -2
  27. package/dist/assets/stash-skeleton/facts/conventions/assets/workflow.md +1 -1
  28. package/dist/assets/stash-skeleton/facts/conventions/backlinks.md +18 -18
  29. package/dist/assets/stash-skeleton/facts/conventions/domains.md +8 -9
  30. package/dist/assets/stash-skeleton/facts/conventions/organization.md +13 -15
  31. package/dist/assets/tasks/core/extract.yml +2 -2
  32. package/dist/assets/tasks/core/improve.yml +1 -1
  33. package/dist/assets/templates/html/health.html +2 -3
  34. package/dist/cli/config-migrate.js +1328 -101
  35. package/dist/cli/invocation.js +255 -0
  36. package/dist/cli/parse-args.js +20 -83
  37. package/dist/cli/shared.js +15 -37
  38. package/dist/cli.js +18 -49
  39. package/dist/commands/agent/agent-dispatch.js +2 -2
  40. package/dist/commands/agent/contribute-cli.js +5 -4
  41. package/dist/commands/bundle/bundle-cli.js +68 -0
  42. package/dist/commands/bundle/bundle.js +219 -0
  43. package/dist/commands/completions.js +2 -2
  44. package/dist/commands/config-cli.js +6 -3
  45. package/dist/commands/env/env-binding.js +13 -9
  46. package/dist/commands/env/env-cli.js +49 -48
  47. package/dist/commands/env/secret-cli.js +24 -10
  48. package/dist/commands/events.js +2 -2
  49. package/dist/commands/feedback-cli.js +59 -33
  50. package/dist/commands/graph/graph.js +6 -4
  51. package/dist/commands/health/advisories.js +4 -4
  52. package/dist/commands/health/html-report.js +190 -593
  53. package/dist/commands/health/improve-metrics.js +240 -188
  54. package/dist/commands/health/metrics.js +9 -17
  55. package/dist/commands/health/report-view-model.js +509 -0
  56. package/dist/commands/health/surfaces.js +6 -3
  57. package/dist/commands/health/types-checks.js +4 -0
  58. package/dist/commands/health/types-improve.js +22 -0
  59. package/dist/commands/health/types-metrics.js +4 -0
  60. package/dist/commands/health/types-result.js +7 -0
  61. package/dist/commands/health/types-runs.js +4 -0
  62. package/dist/commands/health/types-session-log.js +4 -0
  63. package/dist/commands/health/types-windows.js +4 -0
  64. package/dist/commands/health/types.js +26 -21
  65. package/dist/commands/health/windows.js +1 -2
  66. package/dist/commands/health.js +219 -161
  67. package/dist/commands/improve/collapse-detector.js +25 -14
  68. package/dist/commands/improve/consolidate/chunking.js +7 -5
  69. package/dist/commands/improve/consolidate.js +640 -740
  70. package/dist/commands/improve/content-hash.js +39 -0
  71. package/dist/commands/improve/distill/content-repair.js +4 -10
  72. package/dist/commands/improve/distill/promote-memory.js +79 -49
  73. package/dist/commands/improve/distill/quality-gate.js +113 -35
  74. package/dist/commands/improve/distill-promotion-policy.js +24 -885
  75. package/dist/commands/improve/distill.js +565 -337
  76. package/dist/commands/improve/eligibility.js +75 -36
  77. package/dist/commands/improve/extract-cli.js +6 -6
  78. package/dist/commands/improve/extract-prompt.js +5 -34
  79. package/dist/commands/improve/extract.js +526 -357
  80. package/dist/commands/improve/feedback-valence.js +2 -12
  81. package/dist/commands/improve/improve-cli.js +11 -20
  82. package/dist/commands/improve/improve-result-file.js +7 -6
  83. package/dist/commands/improve/improve-run-types.js +4 -0
  84. package/dist/commands/improve/improve-strategies.js +3 -9
  85. package/dist/commands/improve/improve.js +822 -727
  86. package/dist/commands/improve/locks.js +27 -95
  87. package/dist/commands/improve/loop-stages.js +941 -963
  88. package/dist/commands/improve/memory/derived-ref.js +122 -0
  89. package/dist/commands/improve/memory/memory-contradiction-detect.js +35 -38
  90. package/dist/commands/improve/memory/memory-improve.js +24 -37
  91. package/dist/commands/improve/outcome-loop.js +13 -33
  92. package/dist/commands/improve/preparation.js +889 -691
  93. package/dist/commands/improve/proactive-maintenance.js +37 -9
  94. package/dist/commands/improve/proposal-envelope.js +31 -0
  95. package/dist/commands/improve/reflect.js +974 -588
  96. package/dist/commands/improve/run-context.js +119 -0
  97. package/dist/commands/improve/salience.js +8 -4
  98. package/dist/commands/improve/session-asset.js +7 -3
  99. package/dist/commands/improve/shared.js +14 -40
  100. package/dist/commands/improve/source-identity.js +39 -26
  101. package/dist/commands/improve/triage.js +20 -17
  102. package/dist/commands/lint/base-linter.js +288 -295
  103. package/dist/commands/lint/index.js +132 -19
  104. package/dist/commands/mv-cli.js +257 -234
  105. package/dist/commands/observability-cli.js +2 -1
  106. package/dist/commands/proposal/diff-format.js +50 -0
  107. package/dist/commands/proposal/drain-policies.js +0 -6
  108. package/dist/commands/proposal/drain.js +17 -16
  109. package/dist/commands/proposal/proposal-cli.js +40 -77
  110. package/dist/commands/proposal/proposal-types.js +56 -0
  111. package/dist/commands/proposal/proposal.js +39 -1
  112. package/dist/commands/proposal/propose.js +41 -19
  113. package/dist/commands/proposal/repository.js +566 -486
  114. package/dist/commands/proposal/validators/proposal-quality-validators.js +22 -6
  115. package/dist/commands/proposal/validators/proposal-validators.js +6 -5
  116. package/dist/commands/proposal/validators/proposals.js +5 -4
  117. package/dist/commands/read/curate.js +50 -28
  118. package/dist/commands/read/knowledge.js +25 -16
  119. package/dist/commands/read/remember-cli.js +12 -4
  120. package/dist/commands/read/search-cli.js +33 -33
  121. package/dist/commands/read/search.js +68 -55
  122. package/dist/commands/read/show.js +54 -135
  123. package/dist/commands/remember.js +7 -5
  124. package/dist/commands/sources/add-cli.js +10 -24
  125. package/dist/commands/sources/bundle-config-ops.js +58 -0
  126. package/dist/commands/sources/history.js +13 -8
  127. package/dist/commands/sources/info.js +10 -11
  128. package/dist/commands/sources/init.js +12 -21
  129. package/dist/commands/sources/installed-stashes.js +151 -138
  130. package/dist/commands/sources/schema-repair.js +5 -3
  131. package/dist/commands/sources/self-update.js +9 -7
  132. package/dist/commands/sources/source-add.js +116 -154
  133. package/dist/commands/sources/source-clone.js +33 -14
  134. package/dist/commands/sources/source-manage.js +43 -32
  135. package/dist/commands/sources/sources-cli.js +12 -7
  136. package/dist/commands/sources/stash-cli.js +12 -5
  137. package/dist/commands/sources/stash-skeleton.js +1 -1
  138. package/dist/commands/tasks/default-tasks.js +13 -13
  139. package/dist/commands/tasks/tasks-cli.js +3 -3
  140. package/dist/commands/tasks/tasks.js +71 -31
  141. package/dist/commands/workflow-cli.js +22 -26
  142. package/dist/core/action-contributors.js +1 -1
  143. package/dist/core/activation-policy.js +49 -0
  144. package/dist/core/adapter/adapters/agent-skills-adapter.js +181 -0
  145. package/dist/core/adapter/adapters/akm-adapter.js +509 -0
  146. package/dist/core/adapter/adapters/akm-lint.js +381 -0
  147. package/dist/core/adapter/adapters/akm-metadata.js +416 -0
  148. package/dist/core/adapter/adapters/akm-task-adapter.js +150 -0
  149. package/dist/core/adapter/adapters/akm-workflow-adapter.js +196 -0
  150. package/dist/core/adapter/adapters/claude-adapter.js +61 -0
  151. package/dist/core/adapter/adapters/dotenv-adapter.js +187 -0
  152. package/dist/core/adapter/adapters/generic-files-adapter.js +117 -0
  153. package/dist/core/adapter/adapters/index.js +80 -0
  154. package/dist/core/adapter/adapters/llm-wiki-adapter.js +413 -0
  155. package/dist/core/adapter/adapters/okf-adapter.js +223 -0
  156. package/dist/core/adapter/adapters/opencode-adapter.js +68 -0
  157. package/dist/core/adapter/adapters/shared.js +286 -0
  158. package/dist/core/adapter/adapters/tool-dir-shared.js +212 -0
  159. package/dist/core/adapter/adapters/website-snapshot-adapter.js +154 -0
  160. package/dist/core/adapter/bundle-adapter.js +4 -0
  161. package/dist/core/adapter/recognize-match.js +42 -0
  162. package/dist/core/adapter/registry.js +56 -0
  163. package/dist/core/adapter/types.js +4 -0
  164. package/dist/core/asset/asset-placement.js +229 -0
  165. package/dist/core/asset/asset-ref.js +107 -78
  166. package/dist/core/asset/asset-serialize.js +20 -0
  167. package/dist/core/asset/frontmatter.js +1 -1
  168. package/dist/core/asset/resolve-ref.js +223 -0
  169. package/dist/core/asset/stash-meta.js +1 -1
  170. package/dist/core/common.js +141 -49
  171. package/dist/core/config/config-io.js +0 -108
  172. package/dist/core/config/config-schema.js +94 -1039
  173. package/dist/core/config/config-sources.js +115 -36
  174. package/dist/core/config/config-types.js +16 -11
  175. package/dist/core/config/config-walker.js +4 -2
  176. package/dist/core/config/config.js +21 -26
  177. package/dist/core/config/engine-semantics.js +0 -4
  178. package/dist/core/config/schema/embedding.js +38 -0
  179. package/dist/core/config/schema/engines.js +116 -0
  180. package/dist/core/config/schema/feedback.js +31 -0
  181. package/dist/core/config/schema/improve-processes.js +395 -0
  182. package/dist/core/config/schema/improve.js +76 -0
  183. package/dist/core/config/schema/index-config.js +183 -0
  184. package/dist/core/config/schema/output.js +15 -0
  185. package/dist/core/config/schema/primitives.js +94 -0
  186. package/dist/core/config/schema/search.js +30 -0
  187. package/dist/core/config/schema/setup.js +27 -0
  188. package/dist/core/config/schema/sources-bundles.js +164 -0
  189. package/dist/core/config/schema/workflow.js +29 -0
  190. package/dist/core/env-secret-ref.js +113 -8
  191. package/dist/core/errors.js +1 -1
  192. package/dist/core/events-types.js +4 -0
  193. package/dist/core/extra-params.js +1 -0
  194. package/dist/core/file-change.js +16 -0
  195. package/dist/core/fs-txn.js +316 -0
  196. package/dist/core/git-message.js +59 -0
  197. package/dist/core/improve-result.js +9 -1
  198. package/dist/core/logs-db.js +1 -1
  199. package/dist/core/maintenance-barrier.js +16 -0
  200. package/dist/core/migration-backup.js +332 -160
  201. package/dist/core/paths.js +3 -6
  202. package/dist/core/platform.js +10 -0
  203. package/dist/core/recognition-util.js +130 -0
  204. package/dist/core/redaction.js +2 -2
  205. package/dist/core/standards/resolve-standards-context.js +47 -64
  206. package/dist/core/standards/resolve-type-conventions.js +3 -3
  207. package/dist/core/state/migrations.js +201 -8
  208. package/dist/core/state-db.js +38 -2
  209. package/dist/core/subprocess.js +303 -0
  210. package/dist/core/time.js +20 -0
  211. package/dist/core/type-presentation.js +130 -0
  212. package/dist/core/write-source.js +39 -67
  213. package/dist/indexer/bundle-identity-guard.js +91 -0
  214. package/dist/indexer/db/graph-db.js +1 -1
  215. package/dist/indexer/db/llm-cache.js +1 -1
  216. package/dist/indexer/ensure-index.js +29 -9
  217. package/dist/indexer/graph/graph-boost.js +28 -24
  218. package/dist/indexer/graph/graph-extraction.js +5 -6
  219. package/dist/indexer/graph/graph-types.js +4 -0
  220. package/dist/indexer/index-written-assets.js +44 -17
  221. package/dist/indexer/indexer.js +289 -153
  222. package/dist/indexer/init.js +18 -25
  223. package/dist/indexer/installations.js +224 -0
  224. package/dist/indexer/passes/dir-staleness.js +2 -1
  225. package/dist/indexer/passes/memory-inference.js +8 -4
  226. package/dist/indexer/passes/metadata.js +96 -243
  227. package/dist/indexer/scan/doc-to-entry.js +123 -0
  228. package/dist/indexer/scan/drain-dir.js +144 -0
  229. package/dist/indexer/search/db-search.js +171 -99
  230. package/dist/indexer/search/fts-query.js +1 -1
  231. package/dist/indexer/search/ranking-contributors.js +57 -7
  232. package/dist/indexer/search/ranking-types.js +4 -0
  233. package/dist/indexer/search/ranking.js +31 -6
  234. package/dist/indexer/search/search-attribution.js +67 -0
  235. package/dist/indexer/search/search-hit-enrichers.js +30 -40
  236. package/dist/indexer/search/search-source.js +109 -52
  237. package/dist/indexer/search/semantic-status.js +4 -1
  238. package/dist/indexer/usage/unmigrated-vaults-guard.js +2 -1
  239. package/dist/indexer/usage/usage-events.js +72 -9
  240. package/dist/indexer/walk/file-context.js +1 -44
  241. package/dist/indexer/walk/matchers.js +16 -32
  242. package/dist/indexer/walk/path-resolver.js +6 -5
  243. package/dist/indexer/walk/walker.js +4 -2
  244. package/dist/integrations/agent/engine-resolution.js +22 -0
  245. package/dist/integrations/agent/model-aliases.js +1 -1
  246. package/dist/integrations/agent/prompts.js +35 -11
  247. package/dist/integrations/agent/spawn.js +41 -270
  248. package/dist/integrations/harnesses/aider/agent-builder.js +2 -2
  249. package/dist/integrations/harnesses/aider/index.js +2 -11
  250. package/dist/integrations/harnesses/amazonq/agent-builder.js +1 -9
  251. package/dist/integrations/harnesses/amazonq/index.js +3 -16
  252. package/dist/integrations/harnesses/claude/config-import.js +1 -3
  253. package/dist/integrations/harnesses/claude/index.js +1 -12
  254. package/dist/integrations/harnesses/claude/session-log.js +27 -65
  255. package/dist/integrations/harnesses/codex/agent-builder.js +1 -2
  256. package/dist/integrations/harnesses/codex/index.js +2 -12
  257. package/dist/integrations/harnesses/copilot/agent-builder.js +2 -3
  258. package/dist/integrations/harnesses/copilot/index.js +1 -12
  259. package/dist/integrations/harnesses/gemini/agent-builder.js +1 -3
  260. package/dist/integrations/harnesses/gemini/index.js +1 -12
  261. package/dist/integrations/harnesses/ids.js +24 -0
  262. package/dist/integrations/harnesses/index.js +27 -2
  263. package/dist/integrations/harnesses/opencode/config-import.js +1 -3
  264. package/dist/integrations/harnesses/opencode/index.js +1 -12
  265. package/dist/integrations/harnesses/opencode/session-log.js +67 -110
  266. package/dist/integrations/harnesses/opencode-sdk/harness.js +2 -11
  267. package/dist/integrations/harnesses/openhands/agent-builder.js +3 -3
  268. package/dist/integrations/harnesses/openhands/index.js +2 -11
  269. package/dist/integrations/harnesses/pi/agent-builder.js +3 -11
  270. package/dist/integrations/harnesses/pi/index.js +3 -15
  271. package/dist/integrations/harnesses/shared.js +17 -0
  272. package/dist/integrations/harnesses/types.js +37 -2
  273. package/dist/integrations/lockfile.js +36 -0
  274. package/dist/integrations/session-logs/index.js +21 -12
  275. package/dist/integrations/session-logs/provider-base.js +113 -0
  276. package/dist/llm/client.js +7 -5
  277. package/dist/llm/embedders/deterministic.js +2 -2
  278. package/dist/llm/embedders/remote.js +8 -4
  279. package/dist/llm/graph-extract.js +7 -2
  280. package/dist/llm/metadata-enhance.js +43 -26
  281. package/dist/llm/structured-call.js +15 -7
  282. package/dist/migrate/legacy/config-source-migration.js +223 -0
  283. package/dist/migrate/legacy/content-migration.js +305 -0
  284. package/dist/migrate/legacy/legacy-layout.js +779 -0
  285. package/dist/migrate/legacy/legacy-paths.js +25 -0
  286. package/dist/migrate/legacy/legacy-stash-json.js +72 -0
  287. package/dist/migrate/legacy/proposal-fs-import.js +168 -0
  288. package/dist/migrate/legacy/task-target-ref-migration.js +272 -0
  289. package/dist/migrate/legacy/three-db-cutover.js +840 -0
  290. package/dist/migrate/legacy/workflow-migrations-bodies.js +52 -0
  291. package/dist/migrate/legacy/workflow-migrations-frozen.js +21 -0
  292. package/dist/migrate/legacy-ref-grammar.js +209 -0
  293. package/dist/output/command-registry.js +27 -0
  294. package/dist/output/html-render.js +11 -16
  295. package/dist/output/renderers.js +32 -276
  296. package/dist/output/shapes/passthrough.js +3 -9
  297. package/dist/output/shapes/registry.js +12 -6
  298. package/dist/output/text/command-format.js +547 -0
  299. package/dist/output/text/helpers.js +15 -1377
  300. package/dist/output/text/proposal-format.js +230 -0
  301. package/dist/output/text/registry.js +12 -6
  302. package/dist/output/text/show-directives.js +107 -0
  303. package/dist/output/text/show-format.js +103 -0
  304. package/dist/output/text/workflow-format.js +345 -0
  305. package/dist/output/text.js +1 -3
  306. package/dist/registry/build-index.js +13 -17
  307. package/dist/registry/providers/static-index.js +2 -2
  308. package/dist/registry/resolve.js +4 -90
  309. package/dist/registry/semver.js +93 -0
  310. package/dist/runtime.js +90 -0
  311. package/dist/schemas/akm-config.json +2956 -14890
  312. package/dist/schemas/akm-task.json +2 -2
  313. package/dist/schemas/akm-workflow.json +2 -2
  314. package/dist/scripts/migrate-storage.js +2312 -19642
  315. package/dist/setup/detect.js +5 -7
  316. package/dist/setup/engine-config.js +2 -1
  317. package/dist/setup/registry-stash-loader.js +1 -1
  318. package/dist/setup/semantic-assets.js +12 -9
  319. package/dist/setup/setup.js +109 -39
  320. package/dist/setup/steps/connection-shared.js +120 -0
  321. package/dist/setup/steps/connection.js +50 -274
  322. package/dist/setup/steps/platforms.js +1 -0
  323. package/dist/setup/steps/sources.js +13 -6
  324. package/dist/setup/steps/stashdir.js +5 -2
  325. package/dist/sources/freshness.js +39 -0
  326. package/dist/sources/providers/git-provider.js +29 -33
  327. package/dist/sources/providers/git-stash.js +10 -5
  328. package/dist/sources/providers/provider-utils.js +40 -18
  329. package/dist/sources/providers/website.js +1 -1
  330. package/dist/sources/resolve.js +5 -5
  331. package/dist/sources/snapshot-fetchers/types.js +4 -0
  332. package/dist/sources/{website-ingest.js → snapshot-fetchers/website-ingest.js} +105 -39
  333. package/dist/storage/database.js +47 -3
  334. package/dist/storage/engines/sqlite-migrations.js +34 -16
  335. package/dist/storage/locations.js +1 -2
  336. package/dist/storage/repositories/improve-runs-repository.js +0 -20
  337. package/dist/storage/repositories/index-connection.js +80 -0
  338. package/dist/storage/repositories/index-db.js +4 -3
  339. package/dist/storage/repositories/index-entries-repository.js +952 -0
  340. package/dist/{indexer/db/entry-mapper.js → storage/repositories/index-entry-mapper.js} +15 -2
  341. package/dist/storage/repositories/index-entry-types.js +4 -0
  342. package/dist/storage/repositories/index-fts-repository.js +164 -0
  343. package/dist/storage/repositories/index-llm-cache-repository.js +109 -0
  344. package/dist/storage/repositories/index-meta-repository.js +50 -0
  345. package/dist/{indexer/db/schema.js → storage/repositories/index-schema.js} +241 -100
  346. package/dist/storage/repositories/index-sql.js +12 -0
  347. package/dist/storage/repositories/index-utility-repository.js +369 -0
  348. package/dist/storage/repositories/index-vec-repository.js +245 -0
  349. package/dist/storage/repositories/proposals-repository.js +41 -50
  350. package/dist/storage/repositories/registry-cache.js +1 -1
  351. package/dist/storage/repositories/workflow-runs-repository.js +17 -11
  352. package/dist/tasks/backends/cron.js +5 -5
  353. package/dist/tasks/backends/exec-utils.js +21 -0
  354. package/dist/tasks/backends/index.js +6 -9
  355. package/dist/tasks/backends/launchd.js +16 -17
  356. package/dist/tasks/backends/schtasks.js +33 -41
  357. package/dist/tasks/backends/types.js +4 -0
  358. package/dist/tasks/parser.js +25 -5
  359. package/dist/tasks/runner.js +33 -39
  360. package/dist/tasks/validator.js +5 -6
  361. package/dist/workflows/authoring/authoring.js +8 -11
  362. package/dist/workflows/exec/brief.js +10 -7
  363. package/dist/workflows/exec/report.js +261 -156
  364. package/dist/workflows/exec/run-workflow.js +2 -1
  365. package/dist/workflows/exec/step-work.js +3 -9
  366. package/dist/workflows/program/parser.js +4 -60
  367. package/dist/workflows/renderer.js +11 -60
  368. package/dist/workflows/runtime/checkin.js +1 -1
  369. package/dist/workflows/runtime/plan-classifier.js +7 -4
  370. package/dist/workflows/runtime/runs.js +11 -10
  371. package/dist/workflows/runtime/unit-checkin.js +1 -1
  372. package/dist/workflows/runtime/unit-phases.js +20 -0
  373. package/dist/workflows/runtime/workflow-asset-loader.js +27 -16
  374. package/dist/workflows/validate-summary.js +2 -2
  375. package/dist/workflows/validator.js +18 -2
  376. package/docs/migration/release-notes/0.9.0.md +45 -3
  377. package/docs/migration/v0.8-to-v0.9.md +466 -262
  378. package/docs/{data-and-telemetry.md → reference/data-and-telemetry.md} +61 -17
  379. package/package.json +10 -9
  380. package/schemas/akm-config.json +2956 -14890
  381. package/schemas/akm-task.json +2 -2
  382. package/schemas/akm-workflow.json +2 -2
  383. package/dist/assets/help/help-accept.md +0 -12
  384. package/dist/assets/help/help-improve.md +0 -84
  385. package/dist/assets/help/help-proposals.md +0 -17
  386. package/dist/assets/help/help-propose.md +0 -17
  387. package/dist/assets/help/help-reject.md +0 -11
  388. package/dist/assets/improve-strategies/recombine-only.json +0 -23
  389. package/dist/assets/improve-strategies/synthesize.json +0 -17
  390. package/dist/assets/prompts/procedural-system.md +0 -44
  391. package/dist/assets/prompts/recombine-system.md +0 -40
  392. package/dist/assets/prompts/staleness-detect-system.md +0 -6
  393. package/dist/assets/templates/html/default.html +0 -78
  394. package/dist/assets/templates/html/vendor/echarts.min.js +0 -45
  395. package/dist/assets/wiki/index-template.md +0 -12
  396. package/dist/assets/wiki/ingest-workflow-template.md +0 -83
  397. package/dist/assets/wiki/log-template.md +0 -8
  398. package/dist/assets/wiki/schema-template.md +0 -61
  399. package/dist/commands/improve/calibration.js +0 -161
  400. package/dist/commands/improve/dedup.js +0 -482
  401. package/dist/commands/improve/hot-probation.js +0 -45
  402. package/dist/commands/improve/improve-auto-accept.js +0 -262
  403. package/dist/commands/improve/procedural.js +0 -403
  404. package/dist/commands/improve/recombine.js +0 -843
  405. package/dist/commands/improve/schema-similarity-gate.js +0 -168
  406. package/dist/commands/lint/agent-linter.js +0 -44
  407. package/dist/commands/lint/command-linter.js +0 -44
  408. package/dist/commands/lint/default-linter.js +0 -16
  409. package/dist/commands/lint/fact-linter.js +0 -39
  410. package/dist/commands/lint/knowledge-linter.js +0 -16
  411. package/dist/commands/lint/memory-linter.js +0 -61
  412. package/dist/commands/lint/registry.js +0 -41
  413. package/dist/commands/lint/skill-linter.js +0 -45
  414. package/dist/commands/lint/task-linter.js +0 -50
  415. package/dist/commands/lint/workflow-linter.js +0 -81
  416. package/dist/commands/proposal/legacy-import.js +0 -115
  417. package/dist/commands/wiki-cli.js +0 -291
  418. package/dist/core/asset/asset-registry.js +0 -76
  419. package/dist/core/asset/asset-spec.js +0 -316
  420. package/dist/core/eval/rank-metrics.js +0 -113
  421. package/dist/core/ripgrep/install.js +0 -163
  422. package/dist/core/ripgrep/resolve.js +0 -81
  423. package/dist/indexer/db/db.js +0 -1585
  424. package/dist/indexer/manifest.js +0 -170
  425. package/dist/indexer/passes/metadata-contributors.js +0 -31
  426. package/dist/integrations/harnesses/opencode-sdk/index.js +0 -25
  427. package/dist/output/text/wiki.js +0 -16
  428. package/dist/scripts/migrations/import-fs-improve-runs-to-db.js +0 -18228
  429. package/dist/scripts/migrations/v16-to-v17.js +0 -141
  430. package/dist/storage/repositories/consolidation-repository.js +0 -38
  431. package/dist/storage/repositories/recombine-repository.js +0 -213
  432. package/dist/wiki/wiki-templates.js +0 -15
  433. package/dist/wiki/wiki.js +0 -1013
  434. package/dist/workflows/db.js +0 -413
  435. package/docs/README.md +0 -103
  436. package/docs/migration/release-notes/0.9.0-beta.60.md +0 -19
  437. /package/dist/sources/{wiki-fetchers → snapshot-fetchers}/registry.js +0 -0
  438. /package/dist/sources/{wiki-fetchers → snapshot-fetchers}/youtube.js +0 -0
package/CHANGELOG.md CHANGED
@@ -4,10 +4,79 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6
6
 
7
- ## [Unreleased]
7
+ ## [0.9.0] - 2026-07-20
8
+
9
+ 0.9.0 is the format-neutral **bundle / adapter** refactor: it replaces the flat
10
+ asset-type registry with per-format adapters, adopts one canonical ref grammar,
11
+ and consolidates the durable databases and config. This section supersedes the
12
+ earlier `0.9.0-rc.1` / `0.9.0-beta.*` development entries below.
13
+
14
+ ### Breaking changes & migration
15
+
16
+ - **Installed non-akm bundles reclassify on your next `akm index`.** The
17
+ indexer now dispatches each installed bundle's *detected* adapter (Claude
18
+ tool dirs, LLM wikis, website snapshots, agent-skills packs, …) instead of
19
+ recognizing everything with the akm-stash adapter. Entries in such bundles
20
+ change type and ref spelling to the owning adapter's own scheme the first
21
+ time you reindex. No action needed — the index is a regenerable cache and
22
+ rebuilds itself — but searches/saved refs into those bundles may resolve to
23
+ the new spellings afterwards.
24
+ - **Ref grammar cutover — `type:name` → `[bundle//]conceptId`.** Every ref is
25
+ now a subdir-qualified concept id inside its bundle (`skills/code-review`,
26
+ `memories/vpn-note`, `env/prod`), optionally prefixed with a `bundle//`
27
+ installation slug and suffixed with `#fragment`. Durable state stores the
28
+ fully-qualified `bundle//conceptId`; the short bundle-omitted form is accepted
29
+ input only (resolved against `defaultBundle`, then installation-priority
30
+ order). The pre-0.9.0 `[origin//]type:name` grammar is removed — there is no
31
+ compatibility parser; the frozen migrator in `src/migrate/legacy/` is the only
32
+ place it survives.
33
+ - **Explicit, journaled, crash-resumable cutover (`akm migrate apply`).** The
34
+ migrator re-keys all durable state to the new spelling, folds the former
35
+ `workflow.db` into `state.db` (four databases down to three: `state.db` /
36
+ `index.db` / a separate `logs.db`), and migrates config from the flat
37
+ `stashDir` / `sources` / `installed` / `wikiName` keys to `bundles` /
38
+ `defaultBundle`. A verified, installation-scoped **backup manifest v3**
39
+ (covering the pre-rescue `index.db`) is taken before any ledger is sealed;
40
+ expected orphans are quarantined, integrity failures fail closed, and the
41
+ whole cutover resumes idempotently after a crash. Normal commands refuse an
42
+ un-migrated or divergent durable schema rather than migrating as a side effect.
43
+ The retired `stashDir` / `sources` / `installed` keys are **hard-rejected** by
44
+ the 0.9.0 config schema whenever present (the error names `akm migrate apply`);
45
+ registry-installed bundles keep only their desired locator (`git`/`npm` +
46
+ `registryId`) in config, with resolved cache state living exclusively in the
47
+ lockfile.
48
+ - **`index.md` / `log.md` are reserved structural files.** Per the Open
49
+ Knowledge Format, `index.md` (directory listing) and `log.md` (update history)
50
+ are never indexed as concepts and are never valid write / `mv` targets at any
51
+ bundle depth. Existing stash files with those names are excluded from the
52
+ index (and renamed by the content migration when they hold a real concept).
53
+ - **`vault` asset type removed.** Use `env` (a whole `.env` group; key names
54
+ surfaced, values never) and `secret` (a single sensitive value), addressed as
55
+ `env/<name>` and `secrets/<name>`. `akm-migrate-storage` still performs the
56
+ non-destructive `vaults/` → `env/` copy for older stashes.
57
+ - **0.8-era CLI aliases removed.** The flat proposal verbs (`akm proposals`,
58
+ `akm accept`, `akm reject`, `akm diff`, `akm revert`, `akm show proposal`),
59
+ `akm save`, top-level `akm enable` / `akm disable`, `akm events`,
60
+ `--detail summary|agent`, `--for-agent`, `--note`, and `--source` (on
61
+ accept/reject/history) are gone — use the canonical spellings documented in
62
+ `STABILITY.md`.
63
+
64
+ See `docs/migration/v0.8-to-v0.9.md` and
65
+ `docs/migration/release-notes/0.9.0.md` for the full upgrade procedure.
8
66
 
9
67
  ### Added
10
68
 
69
+ - **Local downstream value attribution for memory inference and graph
70
+ extraction.** Private search-hit sidecars now write versioned, source-qualified
71
+ per-entry `usage_events.metadata` for emitted MI direct/surface value and the
72
+ active graph contributor's positive applied/capped contribution. Current plain
73
+ traffic is marked as control, brief/replaced MI surfaces and graph ablations do
74
+ not claim attribution, and nested curate reads avoid duplicate show rows. The
75
+ read-only `akm-eval-attribution-rollup` separates user-only exposure,
76
+ selection/show consumption, current controls, and historical unattributed rows
77
+ without emitting bodies, query text, or provenance content. Graph contribution
78
+ is an input attribution signal, not a causal claim that rank changed. No table,
79
+ migration, dashboard, or health schema was added.
11
80
  - **Explicit, crash-resumable 0.9 migration coordination.** `akm migrate
12
81
  status` classifies config, `state.db`, and `workflow.db` independently;
13
82
  `akm migrate apply [--config <prepared>]` creates a verified,
@@ -165,7 +234,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
165
234
  exceeding it warns on stderr but still writes. Additionally, a type-root
166
235
  write (no `--path`, flat name) into a stash carrying convention facts now
167
236
  returns an additive `hint` output key pointing at the stash's placement
168
- conventions (`fact:conventions/organization` when that fact exists), so CLI
237
+ conventions (`facts/conventions/organization` when that fact exists), so CLI
169
238
  writers see the conventions that LLM flows already receive by injection.
170
239
  - **`--supersedes <ref>` on `akm remember` and `akm import` — atomic
171
240
  correction + demotion of the superseded asset.** The stash conventions'
@@ -195,9 +264,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
195
264
  parser. On a git write target the demotion is ordered before the
196
265
  batch-at-boundary commit, so the correction and the demoted old asset land
197
266
  in one commit.
198
- - **Ref-prefix search queries — `akm search "<type>:<prefix>/"` now enumerates
267
+ - **Ref-prefix search queries — `akm search "<subdir>/<prefix>/"` now enumerates
199
268
  that subtree.** A query shaped like a ref prefix (trailing slash required:
200
- `memory:projectA/`; a bare `memory:` lists the whole type) translates to a
269
+ `memories/projectA/`; a bare `memories/` lists the whole type) translates to a
201
270
  typed index enumeration narrowed to entry names under the prefix, instead of
202
271
  degenerating into the AND-token FTS query its sanitized form used to produce
203
272
  (`"memory projectA"` — noise, since `entry_type` is not an FTS column). The
@@ -207,15 +276,15 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
207
276
  composes with `--limit`, `--belief`, `--filter`, and named `--source`
208
277
  narrowing exactly like the existing empty-query enumeration — hits carry the
209
278
  fixed browse score `1` in deterministic listing order, not a relevance
210
- ranking. The parsed type is explicit intent: a bare `session:` enumerates
279
+ ranking. The parsed type is explicit intent: a bare `sessions/` enumerates
211
280
  sessions just like `--type session` (the default session exclusion is an
212
281
  untyped-path policy), while an explicit `--type` flag always wins over the
213
282
  type parsed from the query (the branch fires only on untyped searches). A
214
- full ref without the trailing slash (`memory:projectA/auth-tip`) stays an
283
+ full ref without the trailing slash (`memories/projectA/auth-tip`) stays an
215
284
  ordinary keyword search — resolving a single ref is `akm show`'s job.
216
285
  **Stable-surface note:** `akm search` is Stable; this changes results for a
217
286
  query shape that previously returned noise or nothing. A user literally
218
- keyword-searching for the string `memory:x/` loses the old fuzzy token
287
+ keyword-searching for the string `memories/x/` loses the old fuzzy token
219
288
  behavior — accepted as negligible.
220
289
  - **The `category:` frontmatter key is now captured into the index** as
221
290
  `entry.category` (entry_json only — no schema migration). The key already
@@ -223,8 +292,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
223
292
  fact linter, but the indexer never captured it, so no category-keyed search
224
293
  or ranking policy was implementable. Captured for all markdown asset types
225
294
  alongside `beliefState` (trimmed; blank/non-string values ignored; no
226
- default invented), and whitelisted through the `.stash.json` entry
227
- round-trip. Search results and ranking are unchanged — this is capture
295
+ default invented), captured directly onto the index entry. Search results
296
+ and ranking are unchanged — this is capture
228
297
  only (a unit test pins that `category` never enters the FTS search
229
298
  fields). **Requires a reindex to take effect** for existing entries. The
230
299
  companion rank-time demotion of `category: convention` facts on untyped
@@ -301,6 +370,27 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
301
370
 
302
371
  ### Changed
303
372
 
373
+ - **Improve-stage extraction and proactive maintenance now ship opt-in.** The
374
+ built-in `default` and `frequent` strategies resolve extract off, while
375
+ `default` and `reflect-distill` resolve `proactiveMaintenance` off. The
376
+ dedicated `proactive-maintenance` strategy remains enabled. Built-ins such as
377
+ `thorough` that omit these fields inherit the new `default` off values; user
378
+ overrides are merged last, so explicit `enabled: true` values still win.
379
+ Standalone extraction remains independent of the improve-stage toggle but
380
+ still requires `--type <harness>` or `--auto`. The bundled, unselected
381
+ `core/extract` task now uses `akm extract --auto`; existing scheduled tasks
382
+ with invalid bare `akm extract` commands must be updated explicitly.
383
+ - **Indexing dispatches each bundle's detected adapter.** The indexer's per-
384
+ directory scan now resolves the component's adapter (`adapterForId`) and runs
385
+ THAT adapter's `recognize`, instead of always using the `akm` adapter. A
386
+ component whose adapter id is unknown is skipped with a warning. Adapter-owned
387
+ filtering moves the AKM-stash sensitive/infra exclusions (env/secret
388
+ `.sensitive`-marker skips, the legacy `vaults/` skip, wiki infra files) out of
389
+ the core scan and into the `akm` adapter's own recognition, so each adapter
390
+ owns its bundle's filtering. **Reindex note:** any non-`akm` bundle that was
391
+ previously probed as one adapter id but still recognized by `akm` will
392
+ re-index under its own adapter on the next `akm index` — the index is a
393
+ regenerable cache, so no migration is required.
304
394
  - **Improve target identity is now end-to-end and source-qualified.** Explicit
305
395
  targets govern reads, generated proposals, triage promotion, consolidation,
306
396
  retrieval signals, cooldowns, and replay state. Duplicate bare refs in other
@@ -313,7 +403,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
313
403
  - **Directory (scope/domain) tokens now always merge into `tags` at index
314
404
  time**, even when an asset sets explicit `tags:` frontmatter. Previously
315
405
  explicit tags suppressed all path-derived tags, so a nested asset like
316
- `memory:projectA/auth-tip` with `tags: [auth]` silently lost the exact
406
+ `memories/projectA/auth-tip` with `tags: [auth]` silently lost the exact
317
407
  tag-match ranking boost for its scope token unless the author restated it.
318
408
  The merged tokens come from the canonical ref subpath
319
409
  (`extractDirTagsFromName`), which also fixes the flat-walk indexing path
@@ -350,6 +440,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
350
440
 
351
441
  ### Fixed
352
442
 
443
+ - **Improve RC stabilization.** Restored one ownership-safe whole-run lock from
444
+ triage through final sync; `--skip-if-locked` is a true no-op; the run deadline
445
+ now starts before indexing and reaches index waits, generation, reindexing, and
446
+ quality judges; reflect judges the sanitized final candidate with bounded
447
+ changed-region context; write-target selectors no longer replace durable source
448
+ identity; and vLLM thinking controls cannot be overridden through `extraParams`.
353
449
  - **Proposal promotion, reversion, and rejection are durable and recoverable.**
354
450
  Acceptance and reversion persist target ownership and content fingerprints,
355
451
  publish atomically across filesystem layouts, index immediately, commit exact
@@ -369,7 +465,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
369
465
  keys (`name`, `updated` were missing); removed the documented-but-nonexistent
370
466
  `akm workflow step` alias from `docs/features/workflows.md`.
371
467
 
372
- ## [0.9.0] 2026-06-30
468
+ ## [0.9.0-rc.1] - 2026-06-30
373
469
 
374
470
  ### Fixed
375
471
 
@@ -508,7 +604,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
508
604
  convention, or `.meta/index.md` files. Seeding stays absent-only and never
509
605
  overwrites a user-edited file. (#646)
510
606
 
511
- ## [0.9.0-beta.36] 2026-06-22
607
+ ## [0.9.0-beta.36] - 2026-06-22
512
608
 
513
609
  ### Added
514
610
 
@@ -543,7 +639,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
543
639
  - Corrected a prompt/validator drift where the distill system prompt asked for an
544
640
  80–200 char description while the gate enforced 20–400. (#645)
545
641
 
546
- ## [0.9.0-beta.35] 2026-06-21
642
+ ## [0.9.0-beta.35] - 2026-06-21
547
643
 
548
644
  ### Fixed
549
645
 
@@ -571,7 +667,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
571
667
  LLM call per processed session (the session summary); set it to `false` to halve
572
668
  per-session extract cost. Unchanged/skipped sessions still cost zero.
573
669
 
574
- ## [0.9.0-beta.34] 2026-06-21
670
+ ## [0.9.0-beta.34] - 2026-06-21
575
671
 
576
672
  ### Fixed
577
673
 
@@ -586,7 +682,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
586
682
  and falls back to the JSON layout. Verified end-to-end through the plugin's
587
683
  `session.idle` hook.
588
684
 
589
- ## [0.9.0-beta.33] 2026-06-21
685
+ ## [0.9.0-beta.33] - 2026-06-21
590
686
 
591
687
  ### Fixed
592
688
 
@@ -602,7 +698,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
602
698
  already-extracted session with zero LLM calls) and only `--force` re-extracts. This
603
699
  makes a session-end hook firing `extract --session-id <id>` precise AND idempotent.
604
700
 
605
- ## [0.9.0-beta.32] 2026-06-21
701
+ ## [0.9.0-beta.32] - 2026-06-21
606
702
 
607
703
  ### Added
608
704
 
@@ -628,7 +724,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
628
724
  with freshly-read timestamp maps INSIDE the lock (`filterProactiveDue`), dropping
629
725
  refs a concurrent run already reflected.
630
726
 
631
- ## [0.9.0-beta.31] 2026-06-20
727
+ ## [0.9.0-beta.31] - 2026-06-20
632
728
 
633
729
  ### Changed
634
730
 
@@ -641,7 +737,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
641
737
  On the live stash this turns the recombine cluster set from generic 66–171-member
642
738
  buckets into tight topical clusters (`auth`, `architecture`, `patterns`, …).
643
739
 
644
- ## [0.9.0-beta.30] 2026-06-20
740
+ ## [0.9.0-beta.30] - 2026-06-20
645
741
 
646
742
  ### Changed / Fixed
647
743
 
@@ -660,7 +756,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
660
756
  membership-overlap (≥ 0.7) and reuses its stable ref, so the streak accumulates
661
757
  through membership drift. First/non-overlapping induction is unchanged.
662
758
 
663
- ## [0.9.0-beta.29] 2026-06-20
759
+ ## [0.9.0-beta.29] - 2026-06-20
664
760
 
665
761
  ### Reverted
666
762
 
@@ -668,7 +764,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
668
764
  `akm fact` CLI shipped in beta.28 was reverted pending rework. Phase 1 (#629, the
669
765
  `fact` asset type itself) remains in place.
670
766
 
671
- ## [0.9.0-beta.27] 2026-06-20
767
+ ## [0.9.0-beta.27] - 2026-06-20
672
768
 
673
769
  All new behavior is **opt-in / default-preserving** — default runs are byte-identical.
674
770
 
@@ -714,7 +810,7 @@ All new behavior is **opt-in / default-preserving** — default runs are byte-id
714
810
  hang/timeout** (the busy-spin can rarely fire even at `--parallel=1`) and never
715
811
  on a real test failure, so genuine red tests still fail fast and are never masked.
716
812
 
717
- ## [0.9.0-beta.26] 2026-06-20
813
+ ## [0.9.0-beta.26] - 2026-06-20
718
814
 
719
815
  ### Added
720
816
 
@@ -731,7 +827,7 @@ All new behavior is **opt-in / default-preserving** — default runs are byte-id
731
827
  Azure Container Apps). New docs section "Hosting AKM databases on a network share
732
828
  (NFS/SMB)" in `docs/configuration.md`.
733
829
 
734
- ## [0.9.0-beta.25] 2026-06-19
830
+ ## [0.9.0-beta.25] - 2026-06-19
735
831
 
736
832
  Completes the recombine / extract-efficiency / graph thread. All new improve
737
833
  passes are **opt-in (default off)**, so default behavior is unchanged.
@@ -769,20 +865,20 @@ passes are **opt-in (default off)**, so default behavior is unchanged.
769
865
  sandbox dirs left by force-killed workers — eliminating the tmpfs accumulation
770
866
  that caused intermittent `EEXIST: epoll_ctl` test flakes.
771
867
 
772
- ## [0.9.0-beta.20] 2026-06-18
868
+ ## [0.9.0-beta.20] - 2026-06-18
773
869
 
774
870
  ### Fixed
775
871
 
776
872
  - **`akm update --all` no longer fails for writable `github:` entries stored as `source:"git"`**. `updateRegistryEntry` was using `synced.source` (re-derived from the ref scheme as `"github"`) instead of the existing `entry.source`, causing the config validator to reject `writable:true` on every update cycle.
777
873
 
778
- ## [0.9.0-beta.19] 2026-06-17
874
+ ## [0.9.0-beta.19] - 2026-06-17
779
875
 
780
876
  ### Fixed
781
877
 
782
878
  - **`akm feedback` now completes in ~0.3s** (was 3+ minutes). Root cause: the command was calling `ensureIndex` with `mode: "blocking"` inside `withIndexWriterLease`, triggering a full reindex on every feedback call. Fix: removed the `ensureIndex` call entirely (feedback only needs the index to exist, not be current — a stale index is fine for ref lookup); removed the application-level writer lock (SQLite WAL + `busy_timeout=30s` handles concurrent access with `akm improve`); added a fast DB-exists guard with a clear error for first-time users.
783
879
  - **`akm health --format html` now completes in ~11s** (was ~18s). Root cause: `akmHealth()` was called twice — once for the main result and once to get `deltas`. Fix: merged into a single call passing both `groupBy: "run"` and `windowCompare` together.
784
880
 
785
- ## [0.9.0-beta.18] 2026-06-17
881
+ ## [0.9.0-beta.18] - 2026-06-17
786
882
 
787
883
  ### Changed
788
884
 
@@ -1234,7 +1330,7 @@ proposal and log storage, `--format html` output, and per-stage LLM telemetry.
1234
1330
 
1235
1331
  ### Added
1236
1332
 
1237
- - **Cross-runtime: akm now runs on Node.js >= 20.12 in addition to Bun** (#560,
1333
+ - **Cross-runtime: akm now runs on Node.js >= 22 in addition to Bun** (#560,
1238
1334
  #465). A two-file runtime boundary (`src/storage/database.ts` owns SQLite via
1239
1335
  `bun:sqlite` on Bun / `better-sqlite3` on Node; `src/runtime.ts` owns every
1240
1336
  `Bun.*` API) contains all runtime-specific code, enforced by a lint guard so it
package/README.md CHANGED
@@ -24,7 +24,7 @@ curl -fsSL https://github.com/itlackey/akm/releases/latest/download/install.sh |
24
24
  irm https://github.com/itlackey/akm/releases/latest/download/install.ps1 | iex
25
25
  ```
26
26
 
27
- **Option 2 — npm package (requires [Node.js](https://nodejs.org) >= 20.12):**
27
+ **Option 2 — npm package (requires [Node.js](https://nodejs.org) >= 22):**
28
28
 
29
29
  ```sh
30
30
  npm install -g akm-cli
@@ -47,7 +47,7 @@ binaries are runtime-free.
47
47
  akm setup # Guided setup: configure, initialize, and index
48
48
  akm add github:owner/repo # Add a stash from GitHub
49
49
  akm search "deploy" # Find assets across all sources
50
- akm show script:deploy.sh # View details and run command
50
+ akm show scripts/deploy.sh # View details and run command
51
51
  ```
52
52
 
53
53
  ## Why akm?
@@ -92,11 +92,11 @@ Manage stashes with `akm list`, `akm update --all`, and `akm remove`.
92
92
 
93
93
  Full docs, CLI reference, and guides are available on [GitHub](https://github.com/itlackey/akm):
94
94
 
95
- - [Getting Started](https://github.com/itlackey/akm/blob/main/docs/getting-started.md)
96
- - [CLI Reference](https://github.com/itlackey/akm/blob/main/docs/cli.md)
97
- - [Configuration](https://github.com/itlackey/akm/blob/main/docs/configuration.md)
98
- - [Stash Maker's Guide](https://github.com/itlackey/akm/blob/main/docs/stash-makers.md)
99
- - [Registry](https://github.com/itlackey/akm/blob/main/docs/registry.md)
95
+ - [Getting Started](https://github.com/itlackey/akm/blob/main/docs/guides/getting-started.md)
96
+ - [CLI Reference](https://github.com/itlackey/akm/blob/main/docs/reference/cli.md)
97
+ - [Configuration](https://github.com/itlackey/akm/blob/main/docs/reference/configuration.md)
98
+ - [Stash Maker's Guide](https://github.com/itlackey/akm/blob/main/docs/guides/stash-makers.md)
99
+ - [Registry](https://github.com/itlackey/akm/blob/main/docs/reference/registry.md)
100
100
 
101
101
  ## License
102
102
 
package/SECURITY.md CHANGED
@@ -31,7 +31,7 @@ shell commands (via scripts, workflows, and agent dispatch), and talks to
31
31
  explicitly configured external services (LLM endpoints, git remotes, npm,
32
32
  HTTP sources). It does **not** ship telemetry, send data to anyone by
33
33
  default, or open network listeners. See
34
- [`docs/data-and-telemetry.md`](docs/data-and-telemetry.md) for the on-disk
34
+ [`docs/reference/data-and-telemetry.md`](docs/reference/data-and-telemetry.md) for the on-disk
35
35
  inventory.
36
36
 
37
37
  Several akm surfaces execute user-controlled code or data with the full
@@ -43,19 +43,19 @@ bugs, but you should be aware of them:
43
43
  Workflow steps run in your shell with your PATH and your environment
44
44
  variables — including any secrets you have exported or loaded via
45
45
  `akm env run` / `akm secret run`. **Only add workflow sources you trust.** See
46
- [`docs/features/workflows.md` — "Security: workflow sources are executed
47
- code"](docs/features/workflows.md#security-workflow-sources-are-executed-code)
46
+ [`docs/reference/workflows.md` — "Security: workflow sources are executed
47
+ code"](docs/reference/workflows.md#security-workflow-sources-are-executed-code)
48
48
  for the full discussion.
49
49
 
50
50
  ### Scripts execute shell commands
51
51
 
52
- `akm show script:<name>` returns a `run:` command line the user (or an
52
+ `akm show scripts/<name>` returns a `run:` command line the user (or an
53
53
  integrating agent) then executes. The same trust model applies: scripts you
54
54
  install from third-party stashes are third-party code.
55
55
 
56
56
  ### Agents and commands embed user-authored prompts
57
57
 
58
- `akm show agent:<name>` and `akm show command:<name>` return prompt
58
+ `akm show agents/<name>` and `akm show commands/<name>` return prompt
59
59
  templates and system prompts that an LLM will execute. A malicious stash
60
60
  maintainer could write a system prompt that instructs the LLM to read
61
61
  sensitive files in your working tree and exfiltrate them via the LLM
@@ -70,11 +70,12 @@ files to source control. Normal `akm env` and `akm secret` output never echoes
70
70
  values; materialize values only at the command boundary with `akm env run`,
71
71
  `akm secret run`, or `akm secret path`.
72
72
 
73
- ### Improve / propose / distill send asset content to the configured LLM
73
+ ### Improve / propose send asset content to the configured LLM
74
74
 
75
- `akm improve`, `akm propose`, `akm distill`, `akm reflect`, and `akm
76
- consolidate` can send asset frontmatter and body to the named LLM engine selected
77
- by the command, strategy, or current defaults. LLM connections live under
75
+ `akm improve` (whose strategies run processes such as reflect, distill, and
76
+ consolidate) and `akm propose` can send asset frontmatter and body to the
77
+ named LLM engine selected by the command, strategy, or current defaults. LLM
78
+ connections live under
78
79
  `engines.<name>` in `~/.config/akm/config.json`. If you configure a third-party
79
80
  LLM, your asset content goes to that third party. Use a local engine endpoint
80
81
  (for example, `http://localhost:11434/v1/chat/completions` via Ollama) for assets
@@ -82,7 +83,7 @@ containing secrets or private notes.
82
83
 
83
84
  ## Known non-issues
84
85
 
85
- - **The `akm-cli` npm package requires Node.js >= 20.12 as its bootstrap.** A
86
+ - **The `akm-cli` npm package requires Node.js >= 22 as its bootstrap.** A
86
87
  working Bun >= 1.0 is preferred for execution when it is also on `PATH`; old,
87
88
  unusable, or absent Bun installations fall back to Node.js. Bun does not
88
89
  remove the package's Node.js requirement. Standalone binaries are
package/dist/akm CHANGED
@@ -8,8 +8,8 @@ import { fileURLToPath } from "node:url";
8
8
 
9
9
  if (!process.versions.bun) {
10
10
  const [major = 0, minor = 0] = process.versions.node.split(".").map(Number);
11
- if (major < 20 || (major === 20 && minor < 12)) {
12
- console.error("The akm-cli npm package requires Node.js >= 20.12 to bootstrap.");
11
+ if (major < 22) {
12
+ console.error("The akm-cli npm package requires Node.js >= 22 to bootstrap.");
13
13
  process.exit(1);
14
14
  }
15
15
  }
@@ -8,8 +8,8 @@ import { fileURLToPath } from "node:url";
8
8
 
9
9
  if (!process.versions.bun) {
10
10
  const [major = 0, minor = 0] = process.versions.node.split(".").map(Number);
11
- if (major < 20 || (major === 20 && minor < 12)) {
12
- console.error("The akm-cli npm package requires Node.js >= 20.12 to bootstrap.");
11
+ if (major < 22) {
12
+ console.error("The akm-cli npm package requires Node.js >= 22 to bootstrap.");
13
13
  process.exit(1);
14
14
  }
15
15
  }