akm-cli 0.9.0-rc.8 → 0.9.0

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 (450) hide show
  1. package/CHANGELOG.md +1063 -44
  2. package/README.md +51 -25
  3. package/SECURITY.md +14 -1
  4. package/STABILITY.md +497 -0
  5. package/dist/akm +148 -35
  6. package/dist/{akm-migrate-storage → akm-migrate} +6 -9
  7. package/dist/assets/hints/cli-hints-full.md +223 -95
  8. package/dist/assets/hints/cli-hints-short.md +85 -22
  9. package/dist/assets/improve-strategies/default.json +1 -1
  10. package/dist/assets/improve-strategies/reflect-distill.json +1 -1
  11. package/dist/assets/prompts/memory-infer-user.md +2 -3
  12. package/dist/assets/stash-skeleton/README.md +6 -5
  13. package/dist/assets/stash-skeleton/facts/conventions/assets/agent.md +2 -0
  14. package/dist/assets/stash-skeleton/facts/conventions/assets/command.md +2 -0
  15. package/dist/assets/stash-skeleton/facts/conventions/assets/fact.md +2 -0
  16. package/dist/assets/stash-skeleton/facts/conventions/assets/knowledge.md +2 -0
  17. package/dist/assets/stash-skeleton/facts/conventions/assets/lesson.md +2 -0
  18. package/dist/assets/stash-skeleton/facts/conventions/assets/memory.md +2 -0
  19. package/dist/assets/stash-skeleton/facts/conventions/assets/script.md +2 -0
  20. package/dist/assets/stash-skeleton/facts/conventions/assets/skill.md +2 -0
  21. package/dist/assets/stash-skeleton/facts/conventions/assets/workflow.md +2 -0
  22. package/dist/assets/stash-skeleton/facts/conventions/backlinks.md +2 -0
  23. package/dist/assets/stash-skeleton/facts/conventions/domains.md +2 -0
  24. package/dist/assets/stash-skeleton/facts/conventions/organization.md +20 -9
  25. package/dist/assets/tasks/core/extract.yml +1 -1
  26. package/dist/assets/tasks/core/version-check.yml +1 -1
  27. package/dist/assets/tasks/improve/akm-graph-refresh-weekly.yml +5 -0
  28. package/dist/assets/tasks/improve/akm-improve-catchup.yml +8 -0
  29. package/dist/assets/tasks/improve/akm-improve-consolidate.yml +5 -0
  30. package/dist/assets/tasks/improve/akm-improve-frequent.yml +5 -0
  31. package/dist/assets/tasks/improve/akm-improve-nightly.yml +5 -0
  32. package/dist/assets/templates/html/health.html +1 -3
  33. package/dist/assets/workflows/workflow-template.md +32 -15
  34. package/dist/cli/invocation.js +40 -15
  35. package/dist/cli/parse-args.js +0 -22
  36. package/dist/cli/retired-commands.js +121 -0
  37. package/dist/cli/shared.js +154 -22
  38. package/dist/cli/unknown-flags.js +236 -0
  39. package/dist/cli-node.mjs +2 -1
  40. package/dist/cli.js +696 -258
  41. package/dist/commands/agent/agent-dispatch.js +14 -3
  42. package/dist/commands/agent/contribute-cli.js +73 -88
  43. package/dist/commands/completions.js +79 -22
  44. package/dist/commands/config-cli.js +17 -150
  45. package/dist/commands/env/env-cli.js +59 -143
  46. package/dist/commands/env/env.js +12 -163
  47. package/dist/commands/env/marker-path.js +6 -0
  48. package/dist/commands/env/secret-cli.js +36 -66
  49. package/dist/commands/env/secret.js +24 -57
  50. package/dist/commands/feedback-cli.js +141 -87
  51. package/dist/commands/health/accept-rate.js +58 -0
  52. package/dist/commands/health/advisories.js +3 -4
  53. package/dist/commands/health/checks.js +85 -23
  54. package/dist/commands/health/html-report.js +7 -10
  55. package/dist/commands/health/improve-metrics.js +25 -83
  56. package/dist/commands/health/md-report.js +5 -9
  57. package/dist/commands/health/metrics.js +62 -20
  58. package/dist/commands/health/renderers.js +47 -0
  59. package/dist/commands/health/report-view-model.js +4 -5
  60. package/dist/commands/health/stash-exposure.js +1 -1
  61. package/dist/commands/health/surfaces.js +3 -48
  62. package/dist/commands/health/task-runs.js +3 -67
  63. package/dist/commands/health/types-improve.js +7 -0
  64. package/dist/commands/health.js +99 -28
  65. package/dist/commands/improve/anti-collapse.js +2 -2
  66. package/dist/commands/improve/autonomy-gate.js +68 -0
  67. package/dist/commands/improve/collapse-detector.js +41 -40
  68. package/dist/commands/improve/consolidate/eligibility.js +1 -23
  69. package/dist/commands/improve/consolidate/merge.js +4 -0
  70. package/dist/commands/improve/consolidate.js +140 -1000
  71. package/dist/commands/improve/distill/promote-memory.js +12 -12
  72. package/dist/commands/improve/distill/quality-gate.js +6 -6
  73. package/dist/commands/improve/distill.js +58 -69
  74. package/dist/commands/improve/eligibility.js +105 -57
  75. package/dist/commands/improve/extract-cli.js +14 -133
  76. package/dist/commands/improve/improve-cli.js +98 -114
  77. package/dist/commands/improve/improve-result-file.js +1 -28
  78. package/dist/commands/improve/improve-strategies.js +8 -5
  79. package/dist/commands/improve/improve.js +128 -91
  80. package/dist/commands/improve/loop-stages.js +182 -20
  81. package/dist/commands/improve/memory/derived-ref.js +45 -43
  82. package/dist/commands/improve/memory/memory-belief.js +1 -1
  83. package/dist/commands/improve/memory/memory-contradiction-detect.js +4 -12
  84. package/dist/commands/improve/memory/memory-improve.js +6 -5
  85. package/dist/commands/improve/outcome-loop.js +22 -65
  86. package/dist/commands/improve/preparation.js +114 -123
  87. package/dist/commands/improve/proactive-maintenance.js +2 -5
  88. package/dist/commands/improve/reflect.js +56 -160
  89. package/dist/commands/improve/salience.js +11 -122
  90. package/dist/commands/improve/source-identity.js +10 -38
  91. package/dist/commands/lint/base-linter.js +20 -124
  92. package/dist/commands/lint/env-key-rules.js +31 -47
  93. package/dist/commands/lint/index.js +249 -43
  94. package/dist/commands/{events.js → log.js} +33 -38
  95. package/dist/commands/migrate-cli.js +92 -12
  96. package/dist/commands/migration-tool.js +46 -0
  97. package/dist/commands/observability-cli.js +70 -209
  98. package/dist/commands/proposal/drain.js +101 -29
  99. package/dist/commands/proposal/proposal-cli.js +76 -48
  100. package/dist/commands/proposal/proposal.js +54 -18
  101. package/dist/commands/proposal/propose-cli.js +88 -0
  102. package/dist/commands/proposal/propose.js +23 -15
  103. package/dist/commands/proposal/repository.js +701 -278
  104. package/dist/commands/proposal/validators/proposal-quality-validators.js +2 -8
  105. package/dist/commands/proposal/validators/proposal-validators.js +55 -7
  106. package/dist/commands/proposal/validators/proposals.js +4 -7
  107. package/dist/commands/read/curate.js +34 -53
  108. package/dist/commands/read/knowledge.js +150 -95
  109. package/dist/commands/read/registry-search.js +2 -2
  110. package/dist/commands/read/remember-cli.js +42 -15
  111. package/dist/commands/read/search-cli.js +180 -78
  112. package/dist/commands/read/search.js +58 -43
  113. package/dist/commands/read/show.js +197 -141
  114. package/dist/commands/registry-cli.js +12 -51
  115. package/dist/commands/remember.js +14 -57
  116. package/dist/commands/sources/add-cli.js +100 -31
  117. package/dist/commands/sources/bundle-cli.js +166 -0
  118. package/dist/commands/sources/bundle-config-ops.js +7 -2
  119. package/dist/commands/sources/info.js +18 -5
  120. package/dist/commands/sources/init.js +12 -12
  121. package/dist/commands/sources/installed-stashes.js +382 -98
  122. package/dist/commands/sources/schema-repair.js +3 -2
  123. package/dist/commands/sources/self-update.js +131 -38
  124. package/dist/commands/sources/source-add.js +72 -17
  125. package/dist/commands/sources/source-clone.js +129 -45
  126. package/dist/commands/sources/source-manage.js +43 -23
  127. package/dist/commands/sources/sources-cli.js +57 -208
  128. package/dist/commands/sources/stash-cli.js +46 -53
  129. package/dist/commands/tasks/tasks-cli.js +91 -97
  130. package/dist/commands/tasks/tasks.js +276 -421
  131. package/dist/commands/workflow-cli.js +175 -450
  132. package/dist/core/adapter/adapters/akm-adapter.js +47 -28
  133. package/dist/core/adapter/adapters/akm-lint.js +42 -27
  134. package/dist/core/adapter/adapters/akm-metadata.js +15 -44
  135. package/dist/core/adapter/adapters/akm-task-adapter.js +15 -13
  136. package/dist/core/adapter/adapters/akm-workflow-adapter.js +55 -71
  137. package/dist/core/adapter/adapters/dotenv-adapter.js +1 -1
  138. package/dist/core/adapter/adapters/generic-files-adapter.js +2 -0
  139. package/dist/core/adapter/adapters/index.js +6 -6
  140. package/dist/core/adapter/adapters/llm-wiki-adapter.js +14 -8
  141. package/dist/core/adapter/adapters/okf-adapter.js +187 -19
  142. package/dist/core/adapter/adapters/shared.js +3 -19
  143. package/dist/core/adapter/adapters/tool-dir-shared.js +8 -3
  144. package/dist/core/adapter/adapters/website-snapshot-adapter.js +1 -0
  145. package/dist/core/adapter/detect-adapter.js +17 -0
  146. package/dist/core/adapter/recognize-match.js +6 -4
  147. package/dist/core/adapter/validate-context.js +214 -0
  148. package/dist/core/asset/akm-markdown.js +63 -0
  149. package/dist/core/asset/asset-placement.js +20 -6
  150. package/dist/core/asset/asset-ref.js +11 -9
  151. package/dist/core/asset/frontmatter-lint.js +30 -0
  152. package/dist/core/asset/frontmatter.js +37 -9
  153. package/dist/core/asset/markdown.js +40 -51
  154. package/dist/core/asset/resolve-ref.js +89 -18
  155. package/dist/core/asset/stash-meta.js +1 -1
  156. package/dist/core/bundle-id.js +51 -0
  157. package/dist/core/common.js +152 -38
  158. package/dist/core/config/config-io.js +12 -1
  159. package/dist/core/config/config-schema.js +35 -8
  160. package/dist/core/config/config-sources.js +55 -11
  161. package/dist/core/config/config-walker.js +25 -9
  162. package/dist/core/config/config.js +9 -48
  163. package/dist/core/config/experimental.js +21 -0
  164. package/dist/core/config/schema/embedding.js +5 -1
  165. package/dist/core/config/schema/experimental.js +30 -0
  166. package/dist/core/config/schema/improve-processes.js +0 -6
  167. package/dist/core/config/schema/improve.js +21 -3
  168. package/dist/core/config/schema/index-config.js +8 -15
  169. package/dist/core/config/schema/output.js +4 -1
  170. package/dist/core/config/schema/setup.js +9 -18
  171. package/dist/core/config/schema/sources-bundles.js +49 -33
  172. package/dist/core/config/schema/workflow.js +3 -3
  173. package/dist/core/env-secret-ref.js +76 -46
  174. package/dist/core/errors.js +18 -12
  175. package/dist/core/events.js +46 -128
  176. package/dist/core/file-change.js +6 -5
  177. package/dist/core/fs-txn.js +83 -7
  178. package/dist/core/git-message.js +2 -2
  179. package/dist/core/improve-result.js +1 -100
  180. package/dist/core/lesson-lint.js +1 -17
  181. package/dist/core/logs-db.js +2 -1
  182. package/dist/core/migration-operation.js +16 -0
  183. package/dist/core/mutation-target.js +78 -0
  184. package/dist/core/parse.js +4 -1
  185. package/dist/core/paths.js +17 -20
  186. package/dist/core/recognition-util.js +12 -14
  187. package/dist/core/redaction.js +34 -0
  188. package/dist/core/standards/resolve-standards-context.js +2 -14
  189. package/dist/core/standards/resolve-stash-standards.js +2 -2
  190. package/dist/core/standards/resolve-type-conventions.js +2 -2
  191. package/dist/core/state/migrations.js +41 -18
  192. package/dist/core/state-db.js +5 -14
  193. package/dist/core/structured.js +1 -1
  194. package/dist/core/subprocess.js +6 -4
  195. package/dist/core/text-truncation.js +9 -5
  196. package/dist/core/type-presentation.js +3 -3
  197. package/dist/core/warn.js +0 -3
  198. package/dist/core/write-source.js +771 -95
  199. package/dist/indexer/bundle-identity-guard.js +3 -2
  200. package/dist/indexer/db/graph-db.js +0 -24
  201. package/dist/indexer/ensure-index.js +1 -0
  202. package/dist/indexer/graph/graph-boost.js +9 -34
  203. package/dist/indexer/graph/graph-extraction.js +8 -5
  204. package/dist/indexer/index-writer-lock.js +53 -17
  205. package/dist/indexer/index-written-assets.js +16 -22
  206. package/dist/indexer/indexer.js +497 -239
  207. package/dist/indexer/installations.js +14 -96
  208. package/dist/indexer/passes/dir-staleness.js +16 -9
  209. package/dist/indexer/passes/memory-inference.js +11 -9
  210. package/dist/indexer/passes/metadata.js +113 -47
  211. package/dist/indexer/scan/doc-to-entry.js +38 -1
  212. package/dist/indexer/scan/drain-dir.js +13 -23
  213. package/dist/indexer/search/db-search.js +99 -54
  214. package/dist/indexer/search/fts-query.js +47 -24
  215. package/dist/indexer/search/ranking-contributors.js +42 -20
  216. package/dist/indexer/search/ranking.js +18 -99
  217. package/dist/indexer/search/search-fields.js +7 -2
  218. package/dist/indexer/search/search-source.js +82 -93
  219. package/dist/indexer/usage/usage-events.js +0 -89
  220. package/dist/indexer/walk/file-context.js +2 -1
  221. package/dist/indexer/walk/matchers.js +30 -43
  222. package/dist/indexer/walk/path-resolver.js +7 -2
  223. package/dist/indexer/walk/walker.js +38 -12
  224. package/dist/integrations/agent/builders.js +0 -6
  225. package/dist/integrations/agent/config.js +2 -2
  226. package/dist/integrations/agent/detect.js +49 -19
  227. package/dist/integrations/agent/engine-fallback.js +76 -0
  228. package/dist/integrations/agent/profiles.js +14 -0
  229. package/dist/integrations/agent/prompts.js +12 -8
  230. package/dist/integrations/agent/runner-dispatch.js +4 -2
  231. package/dist/integrations/agent/runner.js +0 -1
  232. package/dist/integrations/agent/spawn.js +5 -6
  233. package/dist/integrations/github.js +1 -1
  234. package/dist/integrations/harnesses/aider/agent-builder.js +6 -4
  235. package/dist/integrations/harnesses/amazonq/agent-builder.js +7 -4
  236. package/dist/integrations/harnesses/claude/session-log.js +0 -10
  237. package/dist/integrations/harnesses/codex/agent-builder.js +5 -2
  238. package/dist/integrations/harnesses/copilot/agent-builder.js +5 -3
  239. package/dist/integrations/harnesses/gemini/agent-builder.js +5 -3
  240. package/dist/integrations/harnesses/index.js +3 -7
  241. package/dist/integrations/harnesses/opencode/agent-builder.js +21 -2
  242. package/dist/integrations/harnesses/opencode/session-log.js +0 -15
  243. package/dist/integrations/harnesses/opencode-sdk/sdk-runner.js +13 -4
  244. package/dist/integrations/harnesses/openhands/agent-builder.js +9 -6
  245. package/dist/integrations/harnesses/pi/agent-builder.js +6 -4
  246. package/dist/integrations/lockfile.js +101 -6
  247. package/dist/integrations/session-logs/index.js +3 -28
  248. package/dist/llm/client.js +136 -100
  249. package/dist/llm/embedders/remote.js +13 -5
  250. package/dist/llm/feature-gate.js +4 -12
  251. package/dist/llm/graph-extract.js +5 -11
  252. package/dist/llm/memory-infer.js +144 -1
  253. package/dist/llm/metadata-enhance.js +5 -7
  254. package/dist/llm/structured-call.js +1 -1
  255. package/dist/llm/usage-persist.js +26 -5
  256. package/dist/llm/usage-telemetry.js +25 -2
  257. package/dist/output/cli-hints.js +1 -2
  258. package/dist/output/context.js +22 -7
  259. package/dist/output/format-exempt.js +80 -0
  260. package/dist/output/generic-render.js +259 -0
  261. package/dist/output/render-registry.js +57 -0
  262. package/dist/output/renderers.js +14 -36
  263. package/dist/output/shapes/curate.js +10 -1
  264. package/dist/output/shapes/events.js +12 -7
  265. package/dist/output/shapes/helpers.js +56 -83
  266. package/dist/output/shapes/migrate.js +8 -0
  267. package/dist/output/shapes/passthrough.js +7 -41
  268. package/dist/output/shapes/proposal/producer.js +15 -7
  269. package/dist/output/shapes.js +2 -9
  270. package/dist/output/text/{init.js → bundle-create.js} +3 -1
  271. package/dist/output/text/bundle-show.js +7 -0
  272. package/dist/output/text/command-format.js +164 -96
  273. package/dist/output/text/env.js +1 -3
  274. package/dist/output/text/events.js +8 -7
  275. package/dist/output/text/health-format.js +103 -0
  276. package/dist/output/text/health.js +7 -0
  277. package/dist/output/text/helpers.js +10 -8
  278. package/dist/output/text/lint-format.js +43 -0
  279. package/dist/output/text/{save.js → lint.js} +2 -2
  280. package/dist/output/text/migrate.js +88 -0
  281. package/dist/output/text/proposal/producer.js +4 -2
  282. package/dist/output/text/proposal-format.js +44 -72
  283. package/dist/output/text/registry-commands.js +1 -2
  284. package/dist/output/text/show-directives.js +15 -7
  285. package/dist/output/text/status-list.js +32 -0
  286. package/dist/output/text/sync.js +5 -0
  287. package/dist/output/text/workflow-format.js +24 -203
  288. package/dist/output/text/workflow.js +1 -7
  289. package/dist/output/text.js +16 -17
  290. package/dist/registry/factory.js +4 -6
  291. package/dist/registry/origin-resolve.js +16 -27
  292. package/dist/registry/providers/skills-sh.js +3 -3
  293. package/dist/registry/providers/static-index.js +13 -23
  294. package/dist/registry/resolve.js +42 -7
  295. package/dist/registry/semver.js +34 -84
  296. package/dist/runtime.js +2 -23
  297. package/dist/scripts/akm-migrate-node.js +60290 -0
  298. package/dist/scripts/akm-migrate.js +59628 -0
  299. package/dist/setup/detect.js +42 -15
  300. package/dist/setup/registry-stash-loader.js +2 -2
  301. package/dist/setup/setup.js +236 -136
  302. package/dist/setup/steps/connection.js +7 -9
  303. package/dist/setup/steps/platforms.js +9 -9
  304. package/dist/setup/steps/semantic.js +15 -3
  305. package/dist/setup/steps/sources.js +12 -13
  306. package/dist/setup/steps/stashdir.js +2 -3
  307. package/dist/setup/steps/tasks.js +237 -120
  308. package/dist/sources/freshness.js +1 -1
  309. package/dist/sources/provider-factory.js +11 -17
  310. package/dist/sources/providers/filesystem.js +2 -3
  311. package/dist/sources/providers/git-install.js +278 -34
  312. package/dist/sources/providers/git-provider.js +25 -23
  313. package/dist/sources/providers/git-stash.js +395 -106
  314. package/dist/sources/providers/git.js +2 -2
  315. package/dist/sources/providers/npm.js +16 -19
  316. package/dist/sources/providers/provider-utils.js +7 -4
  317. package/dist/sources/providers/sync-from-ref.js +3 -9
  318. package/dist/sources/providers/website.js +6 -1
  319. package/dist/sources/resolve.js +6 -5
  320. package/dist/sources/snapshot-fetchers/bluesky.js +146 -0
  321. package/dist/sources/snapshot-fetchers/content-extract.js +566 -0
  322. package/dist/sources/snapshot-fetchers/fetcher-util.js +41 -0
  323. package/dist/sources/snapshot-fetchers/github.js +100 -0
  324. package/dist/sources/snapshot-fetchers/host-guard.js +291 -0
  325. package/dist/sources/snapshot-fetchers/registry.js +17 -1
  326. package/dist/sources/snapshot-fetchers/robots.js +348 -0
  327. package/dist/sources/snapshot-fetchers/rss.js +282 -0
  328. package/dist/sources/snapshot-fetchers/secret-seam.js +42 -0
  329. package/dist/sources/snapshot-fetchers/website-ingest.js +566 -268
  330. package/dist/sources/snapshot-fetchers/x.js +910 -0
  331. package/dist/storage/database.js +7 -0
  332. package/dist/storage/engines/sqlite-migrations.js +23 -111
  333. package/dist/storage/managed-db.js +2 -2
  334. package/dist/storage/repositories/canaries-repository.js +1 -1
  335. package/dist/storage/repositories/events-repository.js +27 -11
  336. package/dist/storage/repositories/improve-runs-repository.js +6 -12
  337. package/dist/storage/repositories/index-connection.js +17 -6
  338. package/dist/storage/repositories/index-entries-repository.js +151 -240
  339. package/dist/storage/repositories/index-entry-mapper.js +15 -11
  340. package/dist/storage/repositories/index-fts-repository.js +5 -2
  341. package/dist/storage/repositories/index-llm-cache-repository.js +0 -1
  342. package/dist/storage/repositories/index-meta-repository.js +2 -3
  343. package/dist/storage/repositories/index-schema.js +10 -25
  344. package/dist/storage/repositories/index-utility-repository.js +15 -28
  345. package/dist/storage/repositories/index-vec-repository.js +6 -1
  346. package/dist/storage/repositories/outcome-repository.js +119 -0
  347. package/dist/storage/repositories/proposals-repository.js +296 -59
  348. package/dist/storage/repositories/registry-cache.js +19 -0
  349. package/dist/storage/repositories/salience-repository.js +172 -0
  350. package/dist/storage/repositories/task-history-repository.js +15 -13
  351. package/dist/storage/repositories/workflow-runs-repository.js +52 -40
  352. package/dist/tasks/backends/cron.js +105 -15
  353. package/dist/tasks/backends/index.js +1 -1
  354. package/dist/tasks/backends/launchd.js +85 -38
  355. package/dist/tasks/backends/schtasks.js +135 -15
  356. package/dist/tasks/embedded.js +56 -40
  357. package/dist/tasks/parser.js +7 -157
  358. package/dist/tasks/resolve-akm-bin.js +137 -59
  359. package/dist/tasks/runner.js +79 -42
  360. package/dist/tasks/scheduler-invocation.js +220 -10
  361. package/dist/tasks/schema.js +24 -1
  362. package/dist/tasks/task-id.js +1 -3
  363. package/dist/tasks/validator.js +20 -6
  364. package/dist/workflows/authoring/authoring.js +94 -143
  365. package/dist/workflows/authoring/scope-key.js +1 -1
  366. package/dist/workflows/exec/frozen-judge.js +28 -2
  367. package/dist/workflows/exec/native-executor.js +77 -57
  368. package/dist/workflows/exec/param-secrets.js +9 -9
  369. package/dist/workflows/exec/run-workflow.js +133 -79
  370. package/dist/workflows/exec/step-work.js +219 -346
  371. package/dist/{migrate-storage-node.mjs → workflows/exec/unit-dispatch.js} +1 -5
  372. package/dist/workflows/ir/compile.js +141 -270
  373. package/dist/workflows/ir/freeze.js +40 -30
  374. package/dist/workflows/ir/params.js +135 -11
  375. package/dist/workflows/ir/plan-hash.js +1 -1
  376. package/dist/workflows/ir/schema.js +25 -26
  377. package/dist/workflows/parser.js +872 -307
  378. package/dist/workflows/program/expressions.js +20 -208
  379. package/dist/workflows/program/schema.js +7 -10
  380. package/dist/workflows/renderer.js +95 -68
  381. package/dist/workflows/resource-limits.js +2 -0
  382. package/dist/workflows/runtime/checkin.js +3 -3
  383. package/dist/workflows/runtime/plan-classifier.js +16 -75
  384. package/dist/workflows/runtime/runs.js +186 -127
  385. package/dist/workflows/runtime/unit-checkin.js +1 -1
  386. package/dist/workflows/runtime/unit-phases.js +2 -2
  387. package/dist/workflows/runtime/workflow-asset-loader.js +232 -83
  388. package/dist/workflows/schema.js +1 -11
  389. package/dist/workflows/validate-summary.js +30 -36
  390. package/dist/workflows/validator.js +21 -62
  391. package/docs/README.md +68 -0
  392. package/docs/migration/README.md +8 -0
  393. package/docs/migration/release-notes/0.7.0.md +11 -11
  394. package/docs/migration/release-notes/0.9.0.md +208 -27
  395. package/docs/migration/v0.7-to-v0.8.md +46 -47
  396. package/docs/migration/v0.8-to-v0.9.md +564 -208
  397. package/docs/migration/v0.9.0-troubleshooting.md +561 -0
  398. package/docs/reference/README.md +12 -0
  399. package/docs/reference/cli.md +2253 -0
  400. package/docs/reference/configuration.md +358 -0
  401. package/docs/reference/data-and-telemetry.md +105 -42
  402. package/docs/reference/workflows.md +647 -0
  403. package/package.json +22 -11
  404. package/schemas/akm-asset-envelope.json +93 -0
  405. package/schemas/akm-config.json +81 -128
  406. package/schemas/akm-workflow.json +74 -73
  407. package/dist/assets/tasks/core/backup.yml +0 -5
  408. package/dist/assets/tasks/graph-refresh-weekly.yml +0 -10
  409. package/dist/cli/config-migrate.js +0 -1806
  410. package/dist/cli/config-validate.js +0 -41
  411. package/dist/commands/backup-cli.js +0 -56
  412. package/dist/commands/bundle/bundle-cli.js +0 -68
  413. package/dist/commands/bundle/bundle.js +0 -219
  414. package/dist/commands/graph/graph-cli.js +0 -124
  415. package/dist/commands/graph/graph.js +0 -489
  416. package/dist/commands/improve/extract-watch.js +0 -140
  417. package/dist/commands/mv-cli.js +0 -1221
  418. package/dist/commands/sources/history.js +0 -201
  419. package/dist/commands/tasks/default-tasks.js +0 -186
  420. package/dist/core/migration-backup.js +0 -1234
  421. package/dist/indexer/usage/unmigrated-vaults-guard.js +0 -95
  422. package/dist/llm/memory-infer-impl.js +0 -138
  423. package/dist/migrate/legacy/config-source-migration.js +0 -223
  424. package/dist/migrate/legacy/content-migration.js +0 -305
  425. package/dist/migrate/legacy/legacy-layout.js +0 -779
  426. package/dist/migrate/legacy/legacy-paths.js +0 -25
  427. package/dist/migrate/legacy/legacy-stash-json.js +0 -72
  428. package/dist/migrate/legacy/proposal-fs-import.js +0 -168
  429. package/dist/migrate/legacy/task-target-ref-migration.js +0 -272
  430. package/dist/migrate/legacy/three-db-cutover.js +0 -841
  431. package/dist/migrate/legacy/workflow-migrations-bodies.js +0 -52
  432. package/dist/migrate/legacy/workflow-migrations-frozen.js +0 -21
  433. package/dist/migrate/legacy-ref-grammar.js +0 -214
  434. package/dist/output/shapes/distill.js +0 -14
  435. package/dist/output/shapes/history.js +0 -11
  436. package/dist/output/text/distill.js +0 -6
  437. package/dist/output/text/enable-disable.js +0 -8
  438. package/dist/output/text/history.js +0 -6
  439. package/dist/registry/build-index.js +0 -382
  440. package/dist/schemas/akm-config.json +0 -4704
  441. package/dist/schemas/akm-task.json +0 -87
  442. package/dist/schemas/akm-workflow.json +0 -372
  443. package/dist/scripts/migrate-storage.js +0 -3816
  444. package/dist/workflows/authoring/workflow-program-template.yaml +0 -31
  445. package/dist/workflows/cli.js +0 -53
  446. package/dist/workflows/exec/brief.js +0 -481
  447. package/dist/workflows/exec/report.js +0 -1460
  448. package/dist/workflows/exec/watch.js +0 -116
  449. package/dist/workflows/program/parser.js +0 -813
  450. package/dist/workflows/program/project.js +0 -104
@@ -1,305 +0,0 @@
1
- // This Source Code Form is subject to the terms of the Mozilla Public
2
- // License, v. 2.0. If a copy of the MPL was not distributed with this
3
- // file, You can obtain one at https://mozilla.org/MPL/2.0/.
4
- /**
5
- * @removeIn 0.10.0
6
- *
7
- * The one-time content migration (akm 0.9.0 Chunk 8, WI-8.5d; ref-grammar
8
- * decision D-R6; plan §3.4). Three filesystem folds that retire the last
9
- * pre-0.9 on-disk shapes, run as an ADDITIVE journaled step of the
10
- * `cutover-applied` phase AFTER the state txn commits — best-effort (log, never
11
- * abort a committed cutover) and idempotent (a second apply is a no-op).
12
- *
13
- * 1. **`.stash.json` death.** For each per-directory `.stash.json` sidecar under
14
- * the configured stash roots, fold its curated overrides into the matching
15
- * file's YAML frontmatter (the sidecar override WON at read time, so it wins
16
- * on fold too), then delete the sidecar. Only markdown targets are folded:
17
- * the indexer reads curated frontmatter for `.md` files only
18
- * ({@link applyCuratedFrontmatter} runs on `ext === ".md"`), and prepending a
19
- * `---` block to a shell/script/env asset would corrupt it — non-markdown
20
- * entries are counted + logged, never rewritten.
21
- * 2. **D-R6 reserved-filename conformance.** OKF reserves `index.md`/`log.md` as
22
- * bundle structure at every depth (never concept documents). A pre-existing
23
- * stash file so named that actually carries akm ASSET frontmatter (a
24
- * `description`/`when_to_use`-bearing concept mis-placed under a reserved
25
- * name) is renamed to a collision-safe reported name (`index-content.md`,
26
- * `log-content.md`, appending `-2`/`-3`/… on collision) so the akm adapter's
27
- * new reserved-file exclusion never silently drops it. A structural
28
- * `index.md`/`log.md` (no asset frontmatter) is left in place.
29
- * 3. **`derived_from` backref grammar (Group-C item 2).** A derived memory's
30
- * `source: memory:<name>` frontmatter backref — the last deliberately-legacy
31
- * ref channel (WI-8.5c survivor) — is rewritten forward to the 0.9.0
32
- * `source: memories/<name>` conceptId, matching the flipped producer output.
33
- * Idempotent: a value already in `memories/<name>` (or any non-`memory:`
34
- * `source`) is left untouched. The index `derived_from` COLUMN needs no fold
35
- * — it is regenerable, so the producer flip + a reindex re-key it.
36
- *
37
- * PRE-RELEASE EXTENSION NOTE: 0.9.0 is UNRELEASED, so no user has run the cutover
38
- * yet. Fold #3 was ADDED to this step (not a second migration) after folds #1/#2
39
- * shipped in-branch — the module's READ behavior (the frozen sidecar reader) is
40
- * unchanged; only the rewrite/fold set grew. Post-release this file is frozen.
41
- * The pre-0.9 filesystem-proposal import (`proposal-fs-import.ts`) is a SIBLING
42
- * additive step of the same phase, wired in `config-migrate.ts`; its count rides
43
- * the {@link ContentMigrationReport} (`legacyProposalsImported`) — this module
44
- * defaults it to 0 since the fold itself only rewrites on-disk shapes.
45
- *
46
- * This module is migrator-only and imports the frozen sidecar reader
47
- * ({@link readLegacyStashOverrides}) plus core leaves; it is never on a live
48
- * indexer path.
49
- */
50
- import fs from "node:fs";
51
- import path from "node:path";
52
- import { mutateFrontmatter, parseFrontmatter } from "../../core/asset/frontmatter.js";
53
- import { asNonEmptyString } from "../../core/common.js";
54
- import { warn } from "../../core/warn.js";
55
- import { legacyStashFilePath, readLegacyStashOverrides } from "./legacy-stash-json.js";
56
- /** OKF reserved structural filenames (case-insensitive, any depth). */
57
- const RESERVED_BASENAMES = new Set(["index.md", "log.md"]);
58
- /**
59
- * The sidecar `IndexDocument` fields that {@link applyCuratedFrontmatter} reads
60
- * back off frontmatter, paired with the frontmatter KEY the indexer expects
61
- * (two keys are renamed on the way in: `whenToUse`→`when_to_use`,
62
- * `sourceRefs`→`source_refs`). Fields the indexer never reads off frontmatter
63
- * (`confidence`/`source`/`fileSize`/`filename`/…) are intentionally absent — the
64
- * fold preserves only what survives a re-index, so it stays faithful.
65
- */
66
- const CURATED_FIELD_MAP = [
67
- ["description", "description"],
68
- ["tags", "tags"],
69
- ["aliases", "aliases"],
70
- ["searchHints", "searchHints"],
71
- ["usage", "usage"],
72
- ["examples", "examples"],
73
- ["run", "run"],
74
- ["setup", "setup"],
75
- ["cwd", "cwd"],
76
- ["quality", "quality"],
77
- ["category", "category"],
78
- ["beliefState", "beliefState"],
79
- ["supersededBy", "supersededBy"],
80
- ["contradictedBy", "contradictedBy"],
81
- ["generation", "generation"],
82
- ["sourceRefs", "source_refs"],
83
- ["currentBeliefRefs", "currentBeliefRefs"],
84
- ["captureMode", "captureMode"],
85
- ["whenToUse", "when_to_use"],
86
- ["lessonStrength", "lessonStrength"],
87
- ["evidenceSources", "evidenceSources"],
88
- ["intent", "intent"],
89
- ["scope", "scope"],
90
- ];
91
- function emptyReport() {
92
- return {
93
- sidecarsFolded: 0,
94
- entriesFolded: 0,
95
- entriesSkipped: 0,
96
- reservedRenames: [],
97
- sourceBackrefsRewritten: 0,
98
- legacyProposalsImported: 0,
99
- };
100
- }
101
- function safeIsDir(p) {
102
- try {
103
- return fs.statSync(p).isDirectory();
104
- }
105
- catch {
106
- return false;
107
- }
108
- }
109
- /**
110
- * Absolute directories under `root` (inclusive), best-effort (unreadable dirs
111
- * skipped). Dot-directories (`.git`, `.meta`, …) are skipped: the indexer never
112
- * descends into them, so they hold no items to migrate and no `.stash.json` the
113
- * live reader would have merged.
114
- */
115
- function collectDirs(root) {
116
- const out = [];
117
- const walk = (dir) => {
118
- out.push(dir);
119
- let entries;
120
- try {
121
- entries = fs.readdirSync(dir, { withFileTypes: true });
122
- }
123
- catch {
124
- return;
125
- }
126
- for (const entry of entries) {
127
- if (entry.isDirectory() && !entry.name.startsWith("."))
128
- walk(path.join(dir, entry.name));
129
- }
130
- };
131
- walk(root);
132
- return out;
133
- }
134
- /**
135
- * Run the content migration over the configured stash roots. Never throws — a
136
- * per-file failure is logged and the walk continues (best-effort, cutover
137
- * already committed).
138
- */
139
- export function runContentMigration(stashRoots) {
140
- const report = emptyReport();
141
- const seen = new Set();
142
- for (const root of stashRoots) {
143
- const resolved = path.resolve(root);
144
- if (seen.has(resolved) || !safeIsDir(resolved))
145
- continue;
146
- seen.add(resolved);
147
- const dirs = collectDirs(resolved);
148
- for (const dir of dirs)
149
- foldSidecarInDir(dir, report);
150
- for (const dir of dirs)
151
- renameReservedConceptsInDir(dir, report);
152
- for (const dir of dirs)
153
- rewriteSourceBackrefsInDir(dir, report);
154
- }
155
- return report;
156
- }
157
- /**
158
- * Group-C item 2: rewrite each markdown file's legacy `source: memory:<name>`
159
- * derived-memory backref forward to the 0.9.0 `source: memories/<name>`
160
- * conceptId. Idempotent — a `source` already in `memories/<name>` (or any value
161
- * that is not a `memory:` backref) is skipped, so a second apply rewrites
162
- * nothing. Best-effort per file (log + continue on error).
163
- */
164
- function rewriteSourceBackrefsInDir(dir, report) {
165
- let entries;
166
- try {
167
- entries = fs.readdirSync(dir, { withFileTypes: true });
168
- }
169
- catch {
170
- return;
171
- }
172
- for (const entry of entries) {
173
- if (!entry.isFile() || path.extname(entry.name).toLowerCase() !== ".md")
174
- continue;
175
- const filePath = path.join(dir, entry.name);
176
- try {
177
- const source = asNonEmptyString(parseFrontmatter(fs.readFileSync(filePath, "utf8")).data.source);
178
- const rewritten = legacyMemoryBackrefToConceptId(source);
179
- if (rewritten === undefined)
180
- continue; // already conceptId / not a memory backref → no-op
181
- mutateFrontmatter(filePath, (parsed) => ({ ...parsed.data, source: rewritten }));
182
- report.sourceBackrefsRewritten++;
183
- }
184
- catch (error) {
185
- warn(`[akm] content-migration: could not rewrite source backref in ${filePath}: ${errMsg(error)}`);
186
- }
187
- }
188
- }
189
- /**
190
- * Return the `memories/<name>` conceptId for a legacy `memory:<name>` backref,
191
- * or `undefined` when `value` is absent, already a `memories/<name>` conceptId,
192
- * or not a `memory:` backref at all. Only the bare legacy spelling the producer
193
- * ever wrote is rewritten (origin-prefixed values were never produced on
194
- * `source:` and are left untouched — the tolerant reader still normalises them).
195
- */
196
- function legacyMemoryBackrefToConceptId(value) {
197
- if (!value)
198
- return undefined;
199
- const trimmed = value.trim();
200
- const MEMORY_PREFIX = "memory:";
201
- if (!trimmed.startsWith(MEMORY_PREFIX))
202
- return undefined;
203
- return `memories/${trimmed.slice(MEMORY_PREFIX.length)}`;
204
- }
205
- /** Fold + delete one directory's `.stash.json`, if present. */
206
- function foldSidecarInDir(dir, report) {
207
- const sidecarPath = legacyStashFilePath(dir);
208
- if (!fs.existsSync(sidecarPath))
209
- return;
210
- try {
211
- const overrides = readLegacyStashOverrides(dir);
212
- for (const entry of overrides?.entries ?? [])
213
- foldEntry(dir, entry, report);
214
- fs.rmSync(sidecarPath, { force: true });
215
- report.sidecarsFolded++;
216
- }
217
- catch (error) {
218
- warn(`[akm] content-migration: could not fold ${sidecarPath}: ${errMsg(error)}`);
219
- }
220
- }
221
- /** Fold one sidecar entry into its target markdown file's frontmatter. */
222
- function foldEntry(dir, entry, report) {
223
- if (!entry.filename) {
224
- report.entriesSkipped++;
225
- return;
226
- }
227
- const target = path.join(dir, entry.filename);
228
- if (!fs.existsSync(target) || path.extname(target).toLowerCase() !== ".md") {
229
- report.entriesSkipped++;
230
- return;
231
- }
232
- try {
233
- mutateFrontmatter(target, (parsed) => foldCuratedFields(parsed.data, entry));
234
- report.entriesFolded++;
235
- }
236
- catch (error) {
237
- report.entriesSkipped++;
238
- warn(`[akm] content-migration: could not fold entry into ${target}: ${errMsg(error)}`);
239
- }
240
- }
241
- /** Merge the sidecar entry's curated fields onto the existing frontmatter (sidecar wins). */
242
- function foldCuratedFields(existing, entry) {
243
- const next = { ...existing };
244
- const source = entry;
245
- for (const [field, fmKey] of CURATED_FIELD_MAP) {
246
- const value = source[field];
247
- if (value !== undefined)
248
- next[fmKey] = value;
249
- }
250
- return next;
251
- }
252
- /** D-R6: rename any mis-named reserved-filename concept in `dir` to a collision-safe name. */
253
- function renameReservedConceptsInDir(dir, report) {
254
- let entries;
255
- try {
256
- entries = fs.readdirSync(dir, { withFileTypes: true });
257
- }
258
- catch {
259
- return;
260
- }
261
- for (const entry of entries) {
262
- if (!entry.isFile() || !RESERVED_BASENAMES.has(entry.name.toLowerCase()))
263
- continue;
264
- const filePath = path.join(dir, entry.name);
265
- try {
266
- if (!carriesAssetFrontmatter(filePath))
267
- continue;
268
- const target = collisionSafeTarget(dir, entry.name);
269
- fs.renameSync(filePath, target);
270
- report.reservedRenames.push({ from: filePath, to: target });
271
- }
272
- catch (error) {
273
- warn(`[akm] content-migration: could not rename reserved file ${filePath}: ${errMsg(error)}`);
274
- }
275
- }
276
- }
277
- /**
278
- * True when a reserved-name file actually holds akm ASSET frontmatter (a
279
- * concept mis-placed under a reserved name), keyed on the D-R6 example markers
280
- * `description` / `when_to_use`. A structural listing/log block (no asset
281
- * frontmatter, e.g. only the bundle-root `okf_version`) returns false.
282
- */
283
- function carriesAssetFrontmatter(filePath) {
284
- const parsed = parseFrontmatter(fs.readFileSync(filePath, "utf8"));
285
- if (parsed.frontmatter === null)
286
- return false;
287
- const data = parsed.data;
288
- return !!(asNonEmptyString(data.description) ||
289
- asNonEmptyString(data.when_to_use) ||
290
- asNonEmptyString(data.whenToUse));
291
- }
292
- /** `index.md` → `index-content.md`, then `index-content-2.md`, … on collision. */
293
- function collisionSafeTarget(dir, basename) {
294
- const stem = basename.slice(0, basename.length - ".md".length);
295
- let candidate = path.join(dir, `${stem}-content.md`);
296
- let suffix = 2;
297
- while (fs.existsSync(candidate)) {
298
- candidate = path.join(dir, `${stem}-content-${suffix}.md`);
299
- suffix++;
300
- }
301
- return candidate;
302
- }
303
- function errMsg(error) {
304
- return error instanceof Error ? error.message : String(error);
305
- }