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
@@ -15,8 +15,7 @@ import { listKeys as listVaultKeys } from "../commands/env/env.js";
15
15
  import { parseFrontmatter } from "../core/asset/frontmatter.js";
16
16
  import { extractFrontmatterOnly, extractLineRange, extractSection, formatToc, parseMarkdownToc, } from "../core/asset/markdown.js";
17
17
  import { asNonEmptyString, hasErrnoCode } from "../core/common.js";
18
- import { extractCommentMetadata, extractDescriptionFromComments } from "../indexer/passes/metadata.js";
19
- import { registerMetadataContributor } from "../indexer/passes/metadata-contributors.js";
18
+ import { extractCommentMetadata } from "../indexer/passes/metadata.js";
20
19
  import { registerRenderer } from "../indexer/walk/file-context.js";
21
20
  import { buildWorkflowAction, workflowMdRenderer, workflowProgramRenderer } from "../workflows/renderer.js";
22
21
  // ── Interpreter auto-detection map ───────────────────────────────────────────
@@ -219,60 +218,40 @@ const agentMdRenderer = {
219
218
  };
220
219
  },
221
220
  };
222
- // ── 4. knowledge-md / wiki-md shared helper ───────────────────────────────────
223
- const KNOWLEDGE_ACTION = "Reference material - read the content below. Use 'toc' view for large documents.";
224
- const WIKI_PAGE_ACTION = "Wiki page — read below. Use 'toc' to scan, 'section <heading>' for depth.";
225
- /**
226
- * Shared implementation for knowledge-md and wiki-md `buildShowResponse`.
227
- *
228
- * Both renderers handle the same set of view modes (toc, frontmatter, section,
229
- * lines, full). The only differences are the `type` discriminant and the
230
- * section-not-found message. Extracting this helper eliminates ~90 lines of
231
- * byte-for-byte duplication.
232
- */
233
- function buildMarkdownViewResponse(ctx, type, action) {
234
- const name = deriveName(ctx);
235
- const v = ctx.matchResult.meta?.view ?? { mode: "full" };
236
- const content = ctx.content();
237
- switch (v.mode) {
238
- case "toc": {
239
- const toc = parseMarkdownToc(content);
240
- return { type, name, path: ctx.absPath, action, content: formatToc(toc) };
241
- }
242
- case "frontmatter": {
243
- const fm = extractFrontmatterOnly(content);
244
- return { type, name, path: ctx.absPath, action, content: fm ?? "(no frontmatter)" };
245
- }
246
- case "section": {
247
- const section = extractSection(content, v.heading);
248
- if (!section) {
249
- const notFoundMsg = type === "wiki"
250
- ? `Section "${v.heading}" not found in ${name}. Try \`akm show wiki:${name} toc\` to discover available headings.`
251
- : `Section "${v.heading}" not found in ${name}. Try \`akm show <ref> toc\` to discover available headings.`;
252
- return { type, name, path: ctx.absPath, action, content: notFoundMsg };
253
- }
254
- return { type, name, path: ctx.absPath, action, content: section.content };
255
- }
256
- case "lines": {
257
- return { type, name, path: ctx.absPath, action, content: extractLineRange(content, v.start, v.end) };
258
- }
259
- default: {
260
- return { type, name, path: ctx.absPath, action, content };
261
- }
262
- }
263
- }
264
221
  // ── 4. knowledge-md ──────────────────────────────────────────────────────────
222
+ const KNOWLEDGE_ACTION = "Reference material - read the content below. Use 'toc' view for large documents.";
265
223
  const knowledgeMdRenderer = {
266
224
  name: "knowledge-md",
267
225
  buildShowResponse(ctx) {
268
- return buildMarkdownViewResponse(ctx, "knowledge", KNOWLEDGE_ACTION);
269
- },
270
- };
271
- // ── 4b. wiki-md ──────────────────────────────────────────────────────────────
272
- const wikiMdRenderer = {
273
- name: "wiki-md",
274
- buildShowResponse(ctx) {
275
- return buildMarkdownViewResponse(ctx, "wiki", WIKI_PAGE_ACTION);
226
+ const type = "knowledge";
227
+ const name = deriveName(ctx);
228
+ const v = ctx.matchResult.meta?.view ?? { mode: "full" };
229
+ const content = ctx.content();
230
+ const action = KNOWLEDGE_ACTION;
231
+ switch (v.mode) {
232
+ case "toc": {
233
+ const toc = parseMarkdownToc(content);
234
+ return { type, name, path: ctx.absPath, action, content: formatToc(toc) };
235
+ }
236
+ case "frontmatter": {
237
+ const fm = extractFrontmatterOnly(content);
238
+ return { type, name, path: ctx.absPath, action, content: fm ?? "(no frontmatter)" };
239
+ }
240
+ case "section": {
241
+ const section = extractSection(content, v.heading);
242
+ if (!section) {
243
+ const notFoundMsg = `Section "${v.heading}" not found in ${name}. Try \`akm show <ref> toc\` to discover available headings.`;
244
+ return { type, name, path: ctx.absPath, action, content: notFoundMsg };
245
+ }
246
+ return { type, name, path: ctx.absPath, action, content: section.content };
247
+ }
248
+ case "lines": {
249
+ return { type, name, path: ctx.absPath, action, content: extractLineRange(content, v.start, v.end) };
250
+ }
251
+ default: {
252
+ return { type, name, path: ctx.absPath, action, content };
253
+ }
254
+ }
276
255
  },
277
256
  };
278
257
  // ── 4c. lesson-md ────────────────────────────────────────────────────────────
@@ -508,228 +487,6 @@ const factMdRenderer = {
508
487
  };
509
488
  },
510
489
  };
511
- function applySessionMetadata(entry, ctx) {
512
- try {
513
- const fm = applyFrontmatterDescriptionAndTags(entry, ctx);
514
- entry.tags = Array.from(new Set([...(entry.tags ?? []), "session"]));
515
- const hints = new Set(entry.searchHints ?? []);
516
- const harness = asNonEmptyString(fm.harness);
517
- if (harness)
518
- hints.add(`harness:${harness}`);
519
- const project = asNonEmptyString(fm.project);
520
- if (project)
521
- hints.add(`project:${project}`);
522
- // log_path is the durable correlation key — keep it discoverable as a hint
523
- // so it survives in the index even when the body is re-derived.
524
- const logPath = asNonEmptyString(fm.log_path);
525
- if (logPath)
526
- hints.add(`log_path:${logPath}`);
527
- if (hints.size > 0)
528
- entry.searchHints = Array.from(hints).filter(Boolean);
529
- }
530
- catch {
531
- // Non-fatal: skip metadata extraction on parse error
532
- }
533
- }
534
- function applyTocMetadata(entry, ctx) {
535
- try {
536
- const toc = parseMarkdownToc(ctx.content());
537
- if (toc.headings.length > 0)
538
- entry.toc = toc.headings;
539
- }
540
- catch {
541
- // Non-fatal: skip TOC if file can't be read
542
- }
543
- }
544
- /**
545
- * Fact metadata: surface `category` and the `pinned` core marker as tags +
546
- * search hints (no dedicated DB columns — same encoding pattern as session /
547
- * task). `pinned` is mirrored to both a `pinned` tag and a `pinned` search
548
- * hint so the ranking contributor can detect it and queries can target it.
549
- */
550
- function applyFactMetadata(entry, ctx) {
551
- try {
552
- const fm = applyFrontmatterDescriptionAndTags(entry, ctx);
553
- const tags = new Set([...(entry.tags ?? []), "fact"]);
554
- const hints = new Set(entry.searchHints ?? []);
555
- const category = asNonEmptyString(fm.category);
556
- if (category) {
557
- tags.add(category);
558
- hints.add(`category:${category}`);
559
- }
560
- if (fm.pinned === true) {
561
- tags.add("pinned");
562
- hints.add("pinned");
563
- }
564
- entry.tags = Array.from(tags).filter(Boolean);
565
- if (hints.size > 0)
566
- entry.searchHints = Array.from(hints).filter(Boolean);
567
- }
568
- catch {
569
- // Non-fatal: skip metadata extraction on parse error
570
- }
571
- }
572
- /**
573
- * Parse frontmatter, apply description (if not already set) and merge tags
574
- * into `entry`. Returns the raw frontmatter data object so callers can access
575
- * type-specific fields without re-parsing.
576
- */
577
- function applyFrontmatterDescriptionAndTags(entry, ctx) {
578
- const parsed = parseFrontmatter(ctx.content());
579
- const fm = parsed.data;
580
- const desc = asNonEmptyString(fm.description);
581
- if (desc && !entry.description) {
582
- entry.description = desc;
583
- entry.source = "frontmatter";
584
- entry.confidence = 0.9;
585
- }
586
- if (Array.isArray(fm.tags) && fm.tags.length > 0) {
587
- const fmTags = fm.tags.filter((t) => typeof t === "string" && t.trim().length > 0);
588
- if (fmTags.length > 0) {
589
- entry.tags = Array.from(new Set([...(entry.tags ?? []), ...fmTags]));
590
- }
591
- }
592
- return fm;
593
- }
594
- function applyLessonMetadata(entry, ctx) {
595
- try {
596
- const fm = applyFrontmatterDescriptionAndTags(entry, ctx);
597
- const whenToUse = asNonEmptyString(fm.when_to_use);
598
- if (whenToUse) {
599
- const hints = new Set(entry.searchHints ?? []);
600
- hints.add(`when_to_use:${whenToUse}`);
601
- entry.searchHints = Array.from(hints).filter(Boolean);
602
- }
603
- }
604
- catch {
605
- // Non-fatal: skip metadata extraction on parse error
606
- }
607
- }
608
- function applyMemoryMetadata(entry, ctx) {
609
- try {
610
- const fm = applyFrontmatterDescriptionAndTags(entry, ctx);
611
- const hints = new Set(entry.searchHints ?? []);
612
- const source = asNonEmptyString(fm.source);
613
- if (source)
614
- hints.add(source);
615
- const fmObservedAt = asNonEmptyString(fm.observed_at);
616
- if (fmObservedAt) {
617
- hints.add(`observed_at:${fmObservedAt}`);
618
- }
619
- else {
620
- try {
621
- const isoDate = ctx.stat().mtime.toISOString().slice(0, 10);
622
- hints.add(`observed_at:${isoDate}`);
623
- }
624
- catch {
625
- // Non-fatal: skip mtime fallback on stat error
626
- }
627
- }
628
- const expires = asNonEmptyString(fm.expires);
629
- if (expires)
630
- hints.add(`expires:${expires}`);
631
- if (fm.subjective === true)
632
- hints.add("subjective");
633
- if (hints.size > 0) {
634
- entry.searchHints = Array.from(hints).filter(Boolean);
635
- }
636
- }
637
- catch {
638
- // Non-fatal: skip metadata extraction on error
639
- }
640
- }
641
- function applyScriptMetadata(entry, ctx) {
642
- if (ctx.ext === ".md")
643
- return;
644
- const commentDesc = extractDescriptionFromComments(ctx.absPath);
645
- if (commentDesc && !entry.description) {
646
- entry.description = commentDesc;
647
- entry.source = "comments";
648
- entry.confidence = 0.7;
649
- }
650
- }
651
- function applyEnvMetadata(entry, ctx) {
652
- // Key names only — comment text must never reach description/search_text
653
- // (comments routinely contain commented-out credentials).
654
- const { keys } = listVaultKeys(ctx.absPath);
655
- if (keys.length > 0) {
656
- entry.searchHints = keys;
657
- }
658
- entry.tags = Array.from(new Set([...(entry.tags ?? []), "env", "secrets"]));
659
- }
660
- /**
661
- * Secret metadata: tags only. Must NEVER read the file body — the whole file
662
- * is the value, so the entry is built from the filename alone (name-only).
663
- */
664
- function applySecretMetadata(entry, _ctx) {
665
- entry.tags = Array.from(new Set([...(entry.tags ?? []), "secret", "sensitive"]));
666
- }
667
- function applyTaskMetadata(entry, ctx) {
668
- try {
669
- const fm = applyFrontmatterDescriptionAndTags(entry, ctx);
670
- entry.tags = Array.from(new Set([...(entry.tags ?? []), "task", "scheduled"]));
671
- const hints = new Set(entry.searchHints ?? []);
672
- const schedule = asNonEmptyString(fm.schedule);
673
- if (schedule)
674
- hints.add(`schedule:${schedule}`);
675
- const workflow = asNonEmptyString(fm.workflow);
676
- if (workflow)
677
- hints.add(`workflow:${workflow}`);
678
- const prompt = asNonEmptyString(fm.prompt);
679
- if (prompt)
680
- hints.add(`prompt:${prompt}`);
681
- if (hints.size > 0)
682
- entry.searchHints = Array.from(hints).filter(Boolean);
683
- }
684
- catch {
685
- // Non-fatal: skip metadata extraction on error
686
- }
687
- }
688
- registerMetadataContributor({
689
- name: "toc-metadata",
690
- appliesTo: ({ rendererName }) => rendererName === "knowledge-md" || rendererName === "wiki-md",
691
- contribute: (entry, ctx) => applyTocMetadata(entry, ctx.renderContext),
692
- });
693
- registerMetadataContributor({
694
- name: "lesson-frontmatter-metadata",
695
- appliesTo: ({ rendererName }) => rendererName === "lesson-md",
696
- contribute: (entry, ctx) => applyLessonMetadata(entry, ctx.renderContext),
697
- });
698
- registerMetadataContributor({
699
- name: "memory-frontmatter-metadata",
700
- appliesTo: ({ rendererName }) => rendererName === "memory-md",
701
- contribute: (entry, ctx) => applyMemoryMetadata(entry, ctx.renderContext),
702
- });
703
- registerMetadataContributor({
704
- name: "script-comment-metadata",
705
- appliesTo: ({ rendererName }) => rendererName === "script-source",
706
- contribute: (entry, ctx) => applyScriptMetadata(entry, ctx.renderContext),
707
- });
708
- registerMetadataContributor({
709
- name: "env-file-metadata",
710
- appliesTo: ({ rendererName }) => rendererName === "env-file",
711
- contribute: (entry, ctx) => applyEnvMetadata(entry, ctx.renderContext),
712
- });
713
- registerMetadataContributor({
714
- name: "secret-file-metadata",
715
- appliesTo: ({ rendererName }) => rendererName === "secret-file",
716
- contribute: (entry, ctx) => applySecretMetadata(entry, ctx.renderContext),
717
- });
718
- registerMetadataContributor({
719
- name: "task-yaml-metadata",
720
- appliesTo: ({ rendererName }) => rendererName === "task-yaml",
721
- contribute: (entry, ctx) => applyTaskMetadata(entry, ctx.renderContext),
722
- });
723
- registerMetadataContributor({
724
- name: "session-md-metadata",
725
- appliesTo: ({ rendererName }) => rendererName === "session-md",
726
- contribute: (entry, ctx) => applySessionMetadata(entry, ctx.renderContext),
727
- });
728
- registerMetadataContributor({
729
- name: "fact-md-metadata",
730
- appliesTo: ({ rendererName }) => rendererName === "fact-md",
731
- contribute: (entry, ctx) => applyFactMetadata(entry, ctx.renderContext),
732
- });
733
490
  // ── Registration ─────────────────────────────────────────────────────────────
734
491
  /** All built-in renderers. */
735
492
  const builtinRenderers = [
@@ -737,7 +494,6 @@ const builtinRenderers = [
737
494
  commandMdRenderer,
738
495
  agentMdRenderer,
739
496
  knowledgeMdRenderer,
740
- wikiMdRenderer,
741
497
  lessonMdRenderer,
742
498
  memoryMdRenderer,
743
499
  workflowMdRenderer,
@@ -759,4 +515,4 @@ export function registerBuiltinRenderers() {
759
515
  }
760
516
  }
761
517
  // ── Named exports for testing ────────────────────────────────────────────────
762
- export { agentMdRenderer, commandMdRenderer, envFileRenderer, factMdRenderer, INTERPRETER_MAP, knowledgeMdRenderer, lessonMdRenderer, memoryMdRenderer, SETUP_SIGNALS, scriptSourceRenderer, secretFileRenderer, skillMdRenderer, wikiMdRenderer, workflowMdRenderer, workflowProgramRenderer, };
518
+ export { agentMdRenderer, commandMdRenderer, envFileRenderer, factMdRenderer, INTERPRETER_MAP, knowledgeMdRenderer, lessonMdRenderer, memoryMdRenderer, SETUP_SIGNALS, scriptSourceRenderer, secretFileRenderer, skillMdRenderer, workflowMdRenderer, workflowProgramRenderer, };
@@ -22,6 +22,9 @@ const PASSTHROUGH_COMMANDS = [
22
22
  "add",
23
23
  "agent-result",
24
24
  "backup",
25
+ "bundle-items",
26
+ "bundle-list",
27
+ "bundle-show",
25
28
  "clone",
26
29
  "config",
27
30
  "disable",
@@ -79,15 +82,6 @@ const PASSTHROUGH_COMMANDS = [
79
82
  "tasks-sync",
80
83
  "update",
81
84
  "upgrade",
82
- "wiki-create",
83
- "wiki-ingest",
84
- "wiki-lint",
85
- "wiki-list",
86
- "wiki-pages",
87
- "wiki-register",
88
- "wiki-remove",
89
- "wiki-show",
90
- "wiki-stash",
91
85
  "workflow-abandon",
92
86
  "workflow-brief",
93
87
  "workflow-complete",
@@ -1,7 +1,15 @@
1
1
  // This Source Code Form is subject to the terms of the Mozilla Public
2
2
  // License, v. 2.0. If a copy of the MPL was not distributed with this
3
3
  // file, You can obtain one at https://mozilla.org/MPL/2.0/.
4
- const OUTPUT_SHAPE_REGISTRY = new Map();
4
+ /**
5
+ * Output shape registry.
6
+ *
7
+ * Separated from `shapes.ts` so per-command shape modules can import
8
+ * `registerOutputShape` without creating a circular dependency back into
9
+ * the main shapes module.
10
+ */
11
+ import { createCommandRegistry } from "../command-registry.js";
12
+ const OUTPUT_SHAPE_REGISTRY = createCommandRegistry();
5
13
  /**
6
14
  * Register an output shape handler for a command name.
7
15
  *
@@ -13,7 +21,7 @@ const OUTPUT_SHAPE_REGISTRY = new Map();
13
21
  * ```
14
22
  */
15
23
  export function registerOutputShape(command, handler) {
16
- OUTPUT_SHAPE_REGISTRY.set(command, handler);
24
+ OUTPUT_SHAPE_REGISTRY.register(command, handler);
17
25
  }
18
26
  /**
19
27
  * Register a batch of {@link OutputShapeEntry} definitions in iteration order.
@@ -23,15 +31,13 @@ export function registerOutputShape(command, handler) {
23
31
  * with no reliance on module import order.
24
32
  */
25
33
  export function registerOutputShapes(entries) {
26
- for (const { command, handler } of entries) {
27
- OUTPUT_SHAPE_REGISTRY.set(command, handler);
28
- }
34
+ OUTPUT_SHAPE_REGISTRY.registerAll(entries);
29
35
  }
30
36
  /**
31
37
  * Remove a previously-registered output shape. Test-only utility.
32
38
  */
33
39
  export function deregisterOutputShape(command) {
34
- OUTPUT_SHAPE_REGISTRY.delete(command);
40
+ OUTPUT_SHAPE_REGISTRY.deregister(command);
35
41
  }
36
42
  /**
37
43
  * Look up a registered output shape handler by command name.