akm-cli 0.9.0-rc.1 → 0.9.0-rc.13

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 (587) hide show
  1. package/CHANGELOG.md +1190 -52
  2. package/README.md +62 -37
  3. package/SECURITY.md +46 -31
  4. package/dist/akm +162 -38
  5. package/dist/akm-migrate +44 -0
  6. package/dist/assets/backends/schtasks-template.xml +2 -1
  7. package/dist/assets/hints/cli-hints-full.md +268 -118
  8. package/dist/assets/hints/cli-hints-short.md +87 -24
  9. package/dist/assets/{profiles → improve-strategies}/catchup.json +3 -1
  10. package/dist/assets/{profiles → improve-strategies}/consolidate.json +3 -1
  11. package/dist/assets/{profiles → improve-strategies}/default.json +6 -7
  12. package/dist/assets/improve-strategies/frequent.json +15 -0
  13. package/dist/assets/{profiles → improve-strategies}/graph-refresh.json +4 -2
  14. package/dist/assets/{profiles → improve-strategies}/memory-focus.json +4 -1
  15. package/dist/assets/{profiles → improve-strategies}/proactive-maintenance.json +5 -5
  16. package/dist/assets/{profiles → improve-strategies}/quick.json +4 -2
  17. package/dist/assets/improve-strategies/reflect-distill.json +30 -0
  18. package/dist/assets/{profiles → improve-strategies}/thorough.json +1 -1
  19. package/dist/assets/prompts/consolidate-system.md +5 -5
  20. package/dist/assets/prompts/extract-session.md +2 -6
  21. package/dist/assets/prompts/memory-infer-user.md +2 -3
  22. package/dist/assets/prompts/reflect-llm-framed-contract.md +11 -0
  23. package/dist/assets/prompts/reflect-llm-schema-contract.md +3 -0
  24. package/dist/assets/prompts/reflect-output-repair.md +3 -0
  25. package/dist/assets/stash-skeleton/README.md +38 -10
  26. package/dist/assets/stash-skeleton/facts/conventions/assets/agent.md +8 -0
  27. package/dist/assets/stash-skeleton/facts/conventions/assets/command.md +8 -0
  28. package/dist/assets/stash-skeleton/facts/conventions/assets/fact.md +14 -1
  29. package/dist/assets/stash-skeleton/facts/conventions/assets/knowledge.md +13 -1
  30. package/dist/assets/stash-skeleton/facts/conventions/assets/lesson.md +9 -1
  31. package/dist/assets/stash-skeleton/facts/conventions/assets/memory.md +11 -0
  32. package/dist/assets/stash-skeleton/facts/conventions/assets/script.md +9 -0
  33. package/dist/assets/stash-skeleton/facts/conventions/assets/skill.md +9 -0
  34. package/dist/assets/stash-skeleton/facts/conventions/assets/workflow.md +8 -0
  35. package/dist/assets/stash-skeleton/facts/conventions/backlinks.md +100 -0
  36. package/dist/assets/stash-skeleton/facts/conventions/domains.md +64 -0
  37. package/dist/assets/stash-skeleton/facts/conventions/organization.md +136 -0
  38. package/dist/assets/tasks/core/extract.yml +3 -2
  39. package/dist/assets/tasks/core/improve.yml +2 -1
  40. package/dist/assets/tasks/core/index-refresh.yml +1 -0
  41. package/dist/assets/tasks/core/sync.yml +1 -0
  42. package/dist/assets/tasks/core/version-check.yml +2 -1
  43. package/dist/assets/tasks/improve/akm-graph-refresh-weekly.yml +5 -0
  44. package/dist/assets/tasks/improve/akm-improve-catchup.yml +8 -0
  45. package/dist/assets/tasks/improve/akm-improve-consolidate.yml +5 -0
  46. package/dist/assets/tasks/improve/akm-improve-frequent.yml +5 -0
  47. package/dist/assets/tasks/improve/akm-improve-nightly.yml +5 -0
  48. package/dist/assets/templates/html/health.html +5 -4
  49. package/dist/assets/workflows/workflow-template.md +31 -15
  50. package/dist/cli/invocation.js +279 -0
  51. package/dist/cli/parse-args.js +5 -90
  52. package/dist/cli/retired-commands.js +78 -0
  53. package/dist/cli/shared.js +158 -48
  54. package/dist/cli-node.mjs +2 -1
  55. package/dist/cli.js +747 -293
  56. package/dist/commands/agent/agent-dispatch.js +19 -18
  57. package/dist/commands/agent/agent-support.js +0 -24
  58. package/dist/commands/agent/contribute-cli.js +43 -97
  59. package/dist/commands/completions.js +80 -23
  60. package/dist/commands/config-cli.js +44 -281
  61. package/dist/commands/env/env-binding.js +13 -9
  62. package/dist/commands/env/env-cli.js +76 -159
  63. package/dist/commands/env/env.js +12 -163
  64. package/dist/commands/env/marker-path.js +6 -0
  65. package/dist/commands/env/secret-cli.js +45 -61
  66. package/dist/commands/env/secret.js +32 -62
  67. package/dist/commands/feedback-cli.js +179 -85
  68. package/dist/commands/health/accept-rate.js +58 -0
  69. package/dist/commands/health/advisories.js +7 -8
  70. package/dist/commands/health/checks.js +279 -94
  71. package/dist/commands/health/html-report.js +197 -578
  72. package/dist/commands/health/improve-metrics.js +277 -246
  73. package/dist/commands/health/llm-usage.js +19 -19
  74. package/dist/commands/health/md-report.js +16 -7
  75. package/dist/commands/health/metrics.js +67 -32
  76. package/dist/commands/health/renderers.js +47 -0
  77. package/dist/commands/health/report-view-model.js +508 -0
  78. package/dist/commands/health/stash-exposure.js +1 -1
  79. package/dist/commands/health/surfaces.js +16 -56
  80. package/dist/commands/health/task-runs.js +3 -67
  81. package/dist/{migrate-storage-node.mjs → commands/health/types-checks.js} +1 -5
  82. package/dist/commands/health/types-improve.js +29 -0
  83. package/dist/{output/text/save.js → commands/health/types-metrics.js} +1 -2
  84. package/dist/commands/health/types-result.js +7 -0
  85. package/dist/commands/health/types-runs.js +4 -0
  86. package/dist/commands/health/types-session-log.js +4 -0
  87. package/dist/commands/health/types-windows.js +4 -0
  88. package/dist/commands/health/types.js +26 -21
  89. package/dist/commands/health/windows.js +2 -3
  90. package/dist/commands/health.js +296 -167
  91. package/dist/commands/improve/anti-collapse.js +5 -5
  92. package/dist/commands/improve/autonomy-gate.js +68 -0
  93. package/dist/commands/improve/collapse-detector.js +65 -52
  94. package/dist/commands/improve/consolidate/chunking.js +9 -7
  95. package/dist/commands/improve/consolidate/eligibility.js +1 -23
  96. package/dist/commands/improve/consolidate/merge.js +4 -0
  97. package/dist/commands/improve/consolidate.js +454 -1354
  98. package/dist/commands/improve/content-hash.js +39 -0
  99. package/dist/commands/improve/distill/content-repair.js +4 -10
  100. package/dist/commands/improve/distill/promote-memory.js +89 -64
  101. package/dist/commands/improve/distill/quality-gate.js +118 -42
  102. package/dist/commands/improve/distill-guards.js +1 -1
  103. package/dist/commands/improve/distill-promotion-policy.js +33 -888
  104. package/dist/commands/improve/distill.js +607 -363
  105. package/dist/commands/improve/eligibility.js +165 -79
  106. package/dist/commands/improve/extract-cli.js +35 -126
  107. package/dist/commands/improve/extract-prompt.js +6 -35
  108. package/dist/commands/improve/extract.js +640 -391
  109. package/dist/commands/improve/feedback-valence.js +2 -12
  110. package/dist/commands/improve/improve-cli.js +134 -135
  111. package/dist/commands/improve/improve-result-file.js +30 -50
  112. package/dist/commands/improve/improve-run-types.js +4 -0
  113. package/dist/commands/improve/improve-strategies.js +135 -0
  114. package/dist/commands/improve/improve.js +904 -701
  115. package/dist/commands/improve/locks.js +64 -111
  116. package/dist/commands/improve/loop-stages.js +1110 -923
  117. package/dist/commands/improve/memory/derived-ref.js +124 -0
  118. package/dist/commands/improve/memory/memory-belief.js +79 -7
  119. package/dist/commands/improve/memory/memory-contradiction-detect.js +49 -52
  120. package/dist/commands/improve/memory/memory-improve.js +25 -37
  121. package/dist/commands/improve/outcome-loop.js +25 -88
  122. package/dist/commands/improve/preparation.js +1034 -813
  123. package/dist/commands/improve/proactive-maintenance.js +34 -9
  124. package/dist/commands/improve/proposal-envelope.js +31 -0
  125. package/dist/commands/improve/reflect.js +983 -794
  126. package/dist/commands/improve/run-context.js +119 -0
  127. package/dist/commands/improve/salience.js +24 -127
  128. package/dist/commands/improve/session-asset.js +7 -3
  129. package/dist/commands/improve/shared.js +14 -34
  130. package/dist/commands/improve/source-identity.js +28 -0
  131. package/dist/commands/improve/triage.js +20 -17
  132. package/dist/commands/lint/base-linter.js +340 -313
  133. package/dist/commands/lint/env-key-rules.js +31 -47
  134. package/dist/commands/lint/index.js +185 -30
  135. package/dist/commands/{events.js → log.js} +28 -38
  136. package/dist/commands/migrate-cli.js +54 -0
  137. package/dist/commands/migration-tool.js +55 -0
  138. package/dist/commands/observability-cli.js +70 -208
  139. package/dist/commands/proposal/diff-format.js +50 -0
  140. package/dist/commands/proposal/drain-policies.js +0 -6
  141. package/dist/commands/proposal/drain.js +91 -40
  142. package/dist/commands/proposal/proposal-cli.js +134 -132
  143. package/dist/commands/proposal/proposal-types.js +56 -0
  144. package/dist/commands/proposal/proposal.js +83 -65
  145. package/dist/commands/proposal/propose-cli.js +88 -0
  146. package/dist/commands/proposal/propose.js +105 -88
  147. package/dist/commands/proposal/repository.js +1303 -278
  148. package/dist/commands/proposal/validators/proposal-quality-validators.js +16 -6
  149. package/dist/commands/proposal/validators/proposal-validators.js +61 -12
  150. package/dist/commands/proposal/validators/proposals.js +6 -8
  151. package/dist/commands/read/curate.js +78 -73
  152. package/dist/commands/read/knowledge.js +510 -13
  153. package/dist/commands/read/registry-search.js +2 -2
  154. package/dist/commands/read/remember-cli.js +84 -15
  155. package/dist/commands/read/search-cli.js +203 -96
  156. package/dist/commands/read/search.js +126 -94
  157. package/dist/commands/read/show.js +226 -250
  158. package/dist/commands/registry-cli.js +34 -60
  159. package/dist/commands/remember.js +18 -57
  160. package/dist/commands/sources/add-cli.js +104 -49
  161. package/dist/commands/sources/bundle-cli.js +166 -0
  162. package/dist/commands/sources/bundle-config-ops.js +63 -0
  163. package/dist/commands/sources/info.js +27 -15
  164. package/dist/commands/sources/init.js +30 -40
  165. package/dist/commands/sources/installed-stashes.js +469 -172
  166. package/dist/commands/sources/schema-repair.js +10 -9
  167. package/dist/commands/sources/self-update.js +182 -121
  168. package/dist/commands/sources/source-add.js +169 -178
  169. package/dist/commands/sources/source-clone.js +144 -41
  170. package/dist/commands/sources/source-manage.js +94 -59
  171. package/dist/commands/sources/sources-cli.js +64 -205
  172. package/dist/commands/sources/stash-cli.js +91 -54
  173. package/dist/commands/sources/stash-skeleton.js +1 -1
  174. package/dist/commands/tasks/tasks-cli.js +106 -104
  175. package/dist/commands/tasks/tasks.js +445 -262
  176. package/dist/commands/workflow-cli.js +75 -228
  177. package/dist/core/action-contributors.js +1 -1
  178. package/dist/core/activation-policy.js +49 -0
  179. package/dist/core/adapter/adapters/agent-skills-adapter.js +181 -0
  180. package/dist/core/adapter/adapters/akm-adapter.js +528 -0
  181. package/dist/core/adapter/adapters/akm-lint.js +392 -0
  182. package/dist/core/adapter/adapters/akm-metadata.js +387 -0
  183. package/dist/core/adapter/adapters/akm-task-adapter.js +149 -0
  184. package/dist/core/adapter/adapters/akm-workflow-adapter.js +180 -0
  185. package/dist/core/adapter/adapters/claude-adapter.js +61 -0
  186. package/dist/core/adapter/adapters/dotenv-adapter.js +187 -0
  187. package/dist/core/adapter/adapters/generic-files-adapter.js +119 -0
  188. package/dist/core/adapter/adapters/index.js +80 -0
  189. package/dist/core/adapter/adapters/llm-wiki-adapter.js +419 -0
  190. package/dist/core/adapter/adapters/okf-adapter.js +391 -0
  191. package/dist/core/adapter/adapters/opencode-adapter.js +68 -0
  192. package/dist/core/adapter/adapters/shared.js +286 -0
  193. package/dist/core/adapter/adapters/tool-dir-shared.js +217 -0
  194. package/dist/core/adapter/adapters/website-snapshot-adapter.js +155 -0
  195. package/dist/core/adapter/bundle-adapter.js +4 -0
  196. package/dist/core/adapter/detect-adapter.js +17 -0
  197. package/dist/core/adapter/recognize-match.js +44 -0
  198. package/dist/core/adapter/registry.js +56 -0
  199. package/dist/core/adapter/types.js +4 -0
  200. package/dist/core/asset/akm-markdown.js +30 -0
  201. package/dist/core/asset/asset-placement.js +243 -0
  202. package/dist/core/asset/asset-ref.js +110 -79
  203. package/dist/core/asset/asset-serialize.js +20 -0
  204. package/dist/core/asset/frontmatter.js +28 -12
  205. package/dist/core/asset/markdown.js +40 -51
  206. package/dist/core/asset/resolve-ref.js +274 -0
  207. package/dist/core/asset/stash-meta.js +2 -2
  208. package/dist/core/bundle-id.js +51 -0
  209. package/dist/core/common.js +281 -86
  210. package/dist/core/config/config-io.js +42 -128
  211. package/dist/core/config/config-schema.js +233 -855
  212. package/dist/core/config/config-sources.js +162 -39
  213. package/dist/core/config/config-types.js +16 -11
  214. package/dist/core/config/config-version.js +29 -0
  215. package/dist/core/config/config-walker.js +126 -37
  216. package/dist/core/config/config.js +154 -331
  217. package/dist/core/config/deep-merge.js +41 -0
  218. package/dist/core/config/engine-semantics.js +28 -0
  219. package/dist/core/config/experimental.js +21 -0
  220. package/dist/core/config/schema/embedding.js +38 -0
  221. package/dist/core/config/schema/engines.js +116 -0
  222. package/dist/core/config/schema/experimental.js +47 -0
  223. package/dist/core/config/schema/feedback.js +31 -0
  224. package/dist/core/config/schema/improve-processes.js +389 -0
  225. package/dist/core/config/schema/improve.js +94 -0
  226. package/dist/core/config/schema/index-config.js +176 -0
  227. package/dist/core/config/schema/output.js +18 -0
  228. package/dist/core/config/schema/primitives.js +94 -0
  229. package/dist/core/config/schema/search.js +30 -0
  230. package/dist/core/config/schema/setup.js +18 -0
  231. package/dist/core/config/schema/sources-bundles.js +169 -0
  232. package/dist/core/config/schema/workflow.js +29 -0
  233. package/dist/core/env-secret-ref.js +155 -20
  234. package/dist/core/errors.js +17 -15
  235. package/dist/core/events-types.js +4 -0
  236. package/dist/core/events.js +46 -128
  237. package/dist/core/extra-params.js +62 -0
  238. package/dist/core/file-change.js +17 -0
  239. package/dist/core/file-lock.js +202 -57
  240. package/dist/core/fs-txn.js +392 -0
  241. package/dist/core/git-message.js +59 -0
  242. package/dist/core/improve-result.js +167 -0
  243. package/dist/core/lesson-lint.js +1 -17
  244. package/dist/core/logs-db.js +1 -1
  245. package/dist/core/maintenance-barrier.js +135 -0
  246. package/dist/core/migration-operation.js +44 -0
  247. package/dist/core/mutation-target.js +78 -0
  248. package/dist/core/paths.js +22 -25
  249. package/dist/core/platform.js +10 -0
  250. package/dist/core/recognition-util.js +128 -0
  251. package/dist/core/redaction.js +392 -0
  252. package/dist/core/standards/resolve-standards-context.js +36 -65
  253. package/dist/core/standards/resolve-stash-standards.js +2 -2
  254. package/dist/core/standards/resolve-type-conventions.js +5 -5
  255. package/dist/core/state/migrations.js +242 -11
  256. package/dist/core/state-db.js +98 -10
  257. package/dist/core/structured.js +1 -1
  258. package/dist/core/subprocess.js +303 -0
  259. package/dist/core/text-truncation.js +9 -5
  260. package/dist/core/time.js +20 -0
  261. package/dist/core/type-presentation.js +130 -0
  262. package/dist/core/warn.js +0 -3
  263. package/dist/core/write-source.js +834 -118
  264. package/dist/indexer/bundle-identity-guard.js +92 -0
  265. package/dist/indexer/db/graph-db.js +1 -25
  266. package/dist/indexer/db/llm-cache.js +1 -1
  267. package/dist/indexer/ensure-index.js +30 -9
  268. package/dist/indexer/graph/graph-boost.js +9 -30
  269. package/dist/indexer/graph/graph-extraction.js +41 -27
  270. package/dist/indexer/graph/graph-types.js +4 -0
  271. package/dist/indexer/index-writer-lock.js +93 -49
  272. package/dist/indexer/index-written-assets.js +100 -53
  273. package/dist/indexer/indexer.js +746 -329
  274. package/dist/indexer/init.js +18 -25
  275. package/dist/indexer/installations.js +142 -0
  276. package/dist/indexer/passes/dir-staleness.js +18 -10
  277. package/dist/indexer/passes/memory-inference.js +25 -15
  278. package/dist/indexer/passes/metadata.js +412 -243
  279. package/dist/indexer/scan/doc-to-entry.js +160 -0
  280. package/dist/indexer/scan/drain-dir.js +134 -0
  281. package/dist/indexer/search/db-search.js +292 -108
  282. package/dist/indexer/search/fts-query.js +64 -0
  283. package/dist/indexer/search/ranking-contributors.js +145 -25
  284. package/dist/indexer/search/ranking-types.js +4 -0
  285. package/dist/indexer/search/ranking.js +28 -71
  286. package/dist/indexer/search/search-attribution.js +67 -0
  287. package/dist/indexer/search/search-fields.js +18 -3
  288. package/dist/indexer/search/search-hit-enrichers.js +30 -40
  289. package/dist/indexer/search/search-source.js +157 -111
  290. package/dist/indexer/search/semantic-status.js +4 -1
  291. package/dist/indexer/usage/usage-events.js +10 -30
  292. package/dist/indexer/walk/file-context.js +3 -45
  293. package/dist/indexer/walk/matchers.js +42 -73
  294. package/dist/indexer/walk/path-resolver.js +11 -5
  295. package/dist/indexer/walk/walker.js +42 -14
  296. package/dist/integrations/agent/builder-shared.js +7 -0
  297. package/dist/integrations/agent/builders.js +5 -58
  298. package/dist/integrations/agent/config.js +3 -143
  299. package/dist/integrations/agent/detect.js +17 -2
  300. package/dist/integrations/agent/engine-resolution.js +231 -0
  301. package/dist/integrations/agent/index.js +1 -2
  302. package/dist/integrations/agent/model-aliases.js +8 -3
  303. package/dist/integrations/agent/profiles.js +6 -99
  304. package/dist/integrations/agent/prompts.js +46 -18
  305. package/dist/integrations/agent/runner-dispatch.js +78 -13
  306. package/dist/integrations/agent/runner.js +76 -208
  307. package/dist/integrations/agent/spawn.js +48 -279
  308. package/dist/integrations/harnesses/aider/agent-builder.js +9 -8
  309. package/dist/integrations/harnesses/aider/index.js +2 -12
  310. package/dist/integrations/harnesses/amazonq/agent-builder.js +10 -16
  311. package/dist/integrations/harnesses/amazonq/index.js +3 -17
  312. package/dist/integrations/harnesses/claude/agent-builder.js +2 -3
  313. package/dist/integrations/harnesses/claude/config-import.js +1 -3
  314. package/dist/integrations/harnesses/claude/index.js +1 -14
  315. package/dist/integrations/harnesses/claude/session-log.js +27 -75
  316. package/dist/integrations/harnesses/codex/agent-builder.js +8 -7
  317. package/dist/integrations/harnesses/codex/index.js +2 -13
  318. package/dist/integrations/harnesses/copilot/agent-builder.js +9 -9
  319. package/dist/integrations/harnesses/copilot/index.js +1 -13
  320. package/dist/integrations/harnesses/gemini/agent-builder.js +8 -9
  321. package/dist/integrations/harnesses/gemini/index.js +1 -13
  322. package/dist/integrations/harnesses/ids.js +24 -0
  323. package/dist/integrations/harnesses/index.js +31 -33
  324. package/dist/integrations/harnesses/opencode/agent-builder.js +23 -5
  325. package/dist/integrations/harnesses/opencode/config-import.js +1 -3
  326. package/dist/integrations/harnesses/opencode/index.js +1 -18
  327. package/dist/integrations/harnesses/opencode/session-log.js +67 -125
  328. package/dist/integrations/harnesses/opencode-sdk/harness.js +3 -17
  329. package/dist/integrations/harnesses/opencode-sdk/sdk-runner.js +274 -191
  330. package/dist/integrations/harnesses/openhands/agent-builder.js +12 -10
  331. package/dist/integrations/harnesses/openhands/index.js +2 -12
  332. package/dist/integrations/harnesses/pi/agent-builder.js +11 -18
  333. package/dist/integrations/harnesses/pi/index.js +3 -16
  334. package/dist/integrations/harnesses/shared.js +17 -0
  335. package/dist/integrations/harnesses/types.js +38 -34
  336. package/dist/integrations/lockfile.js +211 -24
  337. package/dist/integrations/session-logs/index.js +24 -40
  338. package/dist/integrations/session-logs/provider-base.js +113 -0
  339. package/dist/llm/client.js +182 -110
  340. package/dist/llm/embedders/deterministic.js +2 -2
  341. package/dist/llm/embedders/remote.js +21 -9
  342. package/dist/llm/feature-gate.js +17 -57
  343. package/dist/llm/graph-extract.js +12 -13
  344. package/dist/llm/index-passes.js +8 -42
  345. package/dist/llm/memory-infer.js +144 -1
  346. package/dist/llm/metadata-enhance.js +45 -30
  347. package/dist/llm/structured-call.js +16 -8
  348. package/dist/llm/usage-persist.js +30 -5
  349. package/dist/llm/usage-telemetry.js +59 -6
  350. package/dist/output/cli-hints.js +1 -2
  351. package/dist/output/command-registry.js +27 -0
  352. package/dist/output/context.js +22 -7
  353. package/dist/output/format-exempt.js +80 -0
  354. package/dist/output/generic-render.js +251 -0
  355. package/dist/output/html-render.js +11 -16
  356. package/dist/output/render-registry.js +57 -0
  357. package/dist/output/renderers.js +15 -281
  358. package/dist/output/shapes/curate.js +10 -1
  359. package/dist/output/shapes/events.js +12 -7
  360. package/dist/output/shapes/helpers.js +58 -84
  361. package/dist/output/shapes/passthrough.js +8 -40
  362. package/dist/output/shapes/proposal/producer.js +15 -7
  363. package/dist/output/shapes/registry.js +12 -6
  364. package/dist/output/shapes.js +0 -9
  365. package/dist/output/text/{init.js → bundle-create.js} +3 -1
  366. package/dist/output/text/bundle-show.js +7 -0
  367. package/dist/output/text/command-format.js +562 -0
  368. package/dist/output/text/env.js +1 -3
  369. package/dist/output/text/events.js +8 -7
  370. package/dist/output/text/helpers.js +15 -1375
  371. package/dist/output/text/proposal/producer.js +4 -2
  372. package/dist/output/text/proposal-format.js +202 -0
  373. package/dist/output/text/registry-commands.js +1 -2
  374. package/dist/output/text/registry.js +12 -6
  375. package/dist/output/text/show-directives.js +117 -0
  376. package/dist/output/text/show-format.js +103 -0
  377. package/dist/output/text/sync.js +5 -0
  378. package/dist/output/text/workflow-format.js +332 -0
  379. package/dist/output/text/workflow.js +1 -2
  380. package/dist/output/text.js +10 -19
  381. package/dist/registry/factory.js +4 -6
  382. package/dist/registry/origin-resolve.js +16 -27
  383. package/dist/registry/providers/skills-sh.js +3 -3
  384. package/dist/registry/providers/static-index.js +15 -25
  385. package/dist/registry/resolve.js +43 -94
  386. package/dist/registry/semver.js +43 -0
  387. package/dist/runtime.js +81 -12
  388. package/dist/scripts/akm-migrate.js +35529 -0
  389. package/dist/setup/detect.js +5 -7
  390. package/dist/setup/detected-engines.js +136 -0
  391. package/dist/setup/engine-config.js +100 -0
  392. package/dist/setup/registry-stash-loader.js +3 -3
  393. package/dist/setup/semantic-assets.js +12 -9
  394. package/dist/setup/setup.js +444 -208
  395. package/dist/setup/steps/connection-shared.js +120 -0
  396. package/dist/setup/steps/connection.js +108 -305
  397. package/dist/setup/steps/platforms.js +13 -12
  398. package/dist/setup/steps/semantic.js +15 -3
  399. package/dist/setup/steps/sources.js +21 -15
  400. package/dist/setup/steps/stashdir.js +6 -4
  401. package/dist/setup/steps/tasks.js +236 -119
  402. package/dist/setup/steps.js +3 -2
  403. package/dist/sources/freshness.js +39 -0
  404. package/dist/sources/provider-factory.js +11 -17
  405. package/dist/sources/providers/filesystem.js +2 -3
  406. package/dist/sources/providers/git-install.js +278 -34
  407. package/dist/sources/providers/git-provider.js +54 -56
  408. package/dist/sources/providers/git-stash.js +420 -91
  409. package/dist/sources/providers/git.js +2 -2
  410. package/dist/sources/providers/npm.js +16 -19
  411. package/dist/sources/providers/provider-utils.js +47 -22
  412. package/dist/sources/providers/sync-from-ref.js +3 -9
  413. package/dist/sources/providers/website.js +2 -2
  414. package/dist/sources/resolve.js +11 -10
  415. package/dist/sources/snapshot-fetchers/types.js +4 -0
  416. package/dist/sources/{website-ingest.js → snapshot-fetchers/website-ingest.js} +110 -41
  417. package/dist/storage/database.js +60 -4
  418. package/dist/storage/engines/sqlite-migrations.js +156 -5
  419. package/dist/storage/locations.js +1 -2
  420. package/dist/storage/repositories/canaries-repository.js +1 -1
  421. package/dist/storage/repositories/events-repository.js +51 -11
  422. package/dist/storage/repositories/improve-runs-repository.js +6 -32
  423. package/dist/storage/repositories/index-connection.js +79 -0
  424. package/dist/storage/repositories/index-db.js +4 -3
  425. package/dist/storage/repositories/index-entries-repository.js +863 -0
  426. package/dist/{indexer/db/entry-mapper.js → storage/repositories/index-entry-mapper.js} +19 -2
  427. package/dist/storage/repositories/index-entry-types.js +4 -0
  428. package/dist/storage/repositories/index-fts-repository.js +167 -0
  429. package/dist/storage/repositories/index-llm-cache-repository.js +108 -0
  430. package/dist/storage/repositories/index-meta-repository.js +49 -0
  431. package/dist/{indexer/db/schema.js → storage/repositories/index-schema.js} +226 -100
  432. package/dist/storage/repositories/index-sql.js +12 -0
  433. package/dist/storage/repositories/index-utility-repository.js +356 -0
  434. package/dist/storage/repositories/index-vec-repository.js +250 -0
  435. package/dist/storage/repositories/outcome-repository.js +119 -0
  436. package/dist/storage/repositories/proposals-repository.js +317 -75
  437. package/dist/storage/repositories/registry-cache.js +1 -1
  438. package/dist/storage/repositories/salience-repository.js +172 -0
  439. package/dist/storage/repositories/task-history-repository.js +110 -3
  440. package/dist/storage/repositories/workflow-runs-repository.js +68 -35
  441. package/dist/tasks/backends/cron.js +169 -46
  442. package/dist/tasks/backends/exec-utils.js +76 -3
  443. package/dist/tasks/backends/index.js +6 -9
  444. package/dist/tasks/backends/launchd.js +292 -55
  445. package/dist/tasks/backends/schtasks.js +557 -70
  446. package/dist/tasks/backends/types.js +4 -0
  447. package/dist/tasks/command-executable.js +93 -0
  448. package/dist/tasks/embedded.js +56 -38
  449. package/dist/tasks/parser.js +156 -64
  450. package/dist/tasks/resolve-akm-bin.js +144 -51
  451. package/dist/tasks/runner.js +377 -209
  452. package/dist/tasks/schedule.js +108 -19
  453. package/dist/tasks/scheduler-invocation.js +296 -0
  454. package/dist/tasks/schema.js +1 -1
  455. package/dist/tasks/task-id.js +35 -0
  456. package/dist/tasks/validator.js +30 -16
  457. package/dist/workflows/authoring/authoring.js +96 -148
  458. package/dist/workflows/authoring/scope-key.js +1 -1
  459. package/dist/workflows/cli.js +0 -20
  460. package/dist/workflows/concurrency-policy.js +15 -0
  461. package/dist/workflows/exec/brief.js +25 -59
  462. package/dist/workflows/exec/frozen-judge.js +47 -0
  463. package/dist/workflows/exec/native-executor.js +157 -94
  464. package/dist/workflows/exec/report.js +365 -200
  465. package/dist/workflows/exec/run-workflow.js +46 -40
  466. package/dist/workflows/exec/scheduler.js +12 -41
  467. package/dist/workflows/exec/step-work.js +239 -205
  468. package/dist/workflows/exec/workflow-engine-gate.js +67 -0
  469. package/dist/workflows/ir/compile.js +141 -283
  470. package/dist/workflows/ir/freeze.js +233 -0
  471. package/dist/workflows/ir/plan-hash.js +40 -5
  472. package/dist/workflows/ir/schema.js +537 -1
  473. package/dist/workflows/parser.js +878 -306
  474. package/dist/workflows/program/expressions.js +20 -208
  475. package/dist/workflows/program/schema.js +7 -10
  476. package/dist/workflows/renderer.js +99 -121
  477. package/dist/workflows/resource-limits.js +22 -0
  478. package/dist/workflows/runtime/checkin.js +1 -1
  479. package/dist/workflows/runtime/plan-classifier.js +131 -0
  480. package/dist/workflows/runtime/runs.js +200 -113
  481. package/dist/workflows/runtime/unit-checkin.js +1 -1
  482. package/dist/workflows/runtime/unit-phases.js +20 -0
  483. package/dist/workflows/runtime/workflow-asset-loader.js +235 -97
  484. package/dist/workflows/schema.js +1 -11
  485. package/dist/workflows/validate-summary.js +4 -26
  486. package/dist/workflows/validator.js +52 -30
  487. package/docs/README.md +42 -78
  488. package/docs/migration/README.md +8 -0
  489. package/docs/migration/release-notes/0.6.0.md +1 -1
  490. package/docs/migration/release-notes/0.7.0.md +9 -8
  491. package/docs/migration/release-notes/0.9.0.md +158 -14
  492. package/docs/migration/v0.7-to-v0.8.md +46 -47
  493. package/docs/migration/v0.8-to-v0.9.md +844 -0
  494. package/docs/reference/README.md +12 -0
  495. package/docs/reference/data-and-telemetry.md +333 -0
  496. package/package.json +21 -17
  497. package/schemas/akm-asset-envelope.json +93 -0
  498. package/schemas/akm-config.json +4636 -0
  499. package/schemas/akm-task.json +87 -0
  500. package/{dist/schemas → schemas}/akm-workflow.json +127 -82
  501. package/dist/akm-migrate-storage +0 -38
  502. package/dist/assets/help/help-accept.md +0 -12
  503. package/dist/assets/help/help-improve.md +0 -84
  504. package/dist/assets/help/help-proposals.md +0 -17
  505. package/dist/assets/help/help-propose.md +0 -17
  506. package/dist/assets/help/help-reject.md +0 -11
  507. package/dist/assets/profiles/frequent.json +0 -13
  508. package/dist/assets/profiles/recombine-only.json +0 -21
  509. package/dist/assets/profiles/reflect-distill.json +0 -30
  510. package/dist/assets/profiles/synthesize.json +0 -15
  511. package/dist/assets/prompts/procedural-system.md +0 -44
  512. package/dist/assets/prompts/recombine-system.md +0 -40
  513. package/dist/assets/prompts/staleness-detect-system.md +0 -6
  514. package/dist/assets/tasks/core/backup.yml +0 -4
  515. package/dist/assets/tasks/graph-refresh-weekly.yml +0 -10
  516. package/dist/assets/templates/html/default.html +0 -78
  517. package/dist/assets/templates/html/vendor/echarts.min.js +0 -45
  518. package/dist/assets/wiki/index-template.md +0 -12
  519. package/dist/assets/wiki/ingest-workflow-template.md +0 -83
  520. package/dist/assets/wiki/log-template.md +0 -8
  521. package/dist/assets/wiki/schema-template.md +0 -61
  522. package/dist/cli/config-migrate.js +0 -150
  523. package/dist/cli/config-validate.js +0 -39
  524. package/dist/commands/graph/graph-cli.js +0 -124
  525. package/dist/commands/graph/graph.js +0 -487
  526. package/dist/commands/improve/calibration.js +0 -161
  527. package/dist/commands/improve/dedup.js +0 -482
  528. package/dist/commands/improve/extract-watch.js +0 -140
  529. package/dist/commands/improve/hot-probation.js +0 -45
  530. package/dist/commands/improve/improve-auto-accept.js +0 -276
  531. package/dist/commands/improve/improve-profiles.js +0 -168
  532. package/dist/commands/improve/procedural.js +0 -398
  533. package/dist/commands/improve/recombine.js +0 -818
  534. package/dist/commands/improve/schema-similarity-gate.js +0 -168
  535. package/dist/commands/lint/agent-linter.js +0 -44
  536. package/dist/commands/lint/command-linter.js +0 -44
  537. package/dist/commands/lint/default-linter.js +0 -16
  538. package/dist/commands/lint/fact-linter.js +0 -39
  539. package/dist/commands/lint/knowledge-linter.js +0 -16
  540. package/dist/commands/lint/memory-linter.js +0 -61
  541. package/dist/commands/lint/registry.js +0 -41
  542. package/dist/commands/lint/skill-linter.js +0 -45
  543. package/dist/commands/lint/task-linter.js +0 -50
  544. package/dist/commands/lint/workflow-linter.js +0 -81
  545. package/dist/commands/proposal/legacy-import.js +0 -115
  546. package/dist/commands/sources/history.js +0 -196
  547. package/dist/commands/tasks/default-tasks.js +0 -186
  548. package/dist/commands/wiki-cli.js +0 -292
  549. package/dist/core/asset/asset-registry.js +0 -76
  550. package/dist/core/asset/asset-spec.js +0 -316
  551. package/dist/core/config/config-migration.js +0 -602
  552. package/dist/core/deep-merge.js +0 -38
  553. package/dist/core/eval/rank-metrics.js +0 -113
  554. package/dist/core/ripgrep/install.js +0 -163
  555. package/dist/core/ripgrep/resolve.js +0 -81
  556. package/dist/indexer/db/db.js +0 -1414
  557. package/dist/indexer/manifest.js +0 -170
  558. package/dist/indexer/passes/metadata-contributors.js +0 -31
  559. package/dist/indexer/usage/unmigrated-vaults-guard.js +0 -94
  560. package/dist/integrations/harnesses/opencode-sdk/index.js +0 -25
  561. package/dist/llm/call-ai.js +0 -62
  562. package/dist/llm/memory-infer-impl.js +0 -138
  563. package/dist/output/shapes/distill.js +0 -14
  564. package/dist/output/shapes/history.js +0 -11
  565. package/dist/output/text/distill.js +0 -6
  566. package/dist/output/text/enable-disable.js +0 -8
  567. package/dist/output/text/history.js +0 -6
  568. package/dist/output/text/wiki.js +0 -16
  569. package/dist/registry/build-index.js +0 -386
  570. package/dist/schemas/akm-config.json +0 -14225
  571. package/dist/scripts/migrate-storage.js +0 -13169
  572. package/dist/scripts/migrations/import-fs-improve-runs-to-db.js +0 -10169
  573. package/dist/scripts/migrations/v16-to-v17.js +0 -141
  574. package/dist/setup/legacy-config.js +0 -106
  575. package/dist/storage/repositories/consolidation-repository.js +0 -38
  576. package/dist/storage/repositories/recombine-repository.js +0 -213
  577. package/dist/wiki/wiki-templates.js +0 -15
  578. package/dist/wiki/wiki.js +0 -1012
  579. package/dist/workflows/authoring/workflow-program-template.yaml +0 -31
  580. package/dist/workflows/db.js +0 -350
  581. package/dist/workflows/exec/watch.js +0 -116
  582. package/dist/workflows/program/parser.js +0 -760
  583. package/dist/workflows/program/project.js +0 -105
  584. package/docs/data-and-telemetry.md +0 -227
  585. package/docs/migration/release-notes/0.9.0-beta.60.md +0 -19
  586. /package/dist/sources/{wiki-fetchers → snapshot-fetchers}/registry.js +0 -0
  587. /package/dist/sources/{wiki-fetchers → snapshot-fetchers}/youtube.js +0 -0
@@ -0,0 +1,87 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://itlackey.github.io/akm/schemas/akm-task.json",
4
+ "title": "AKM Scheduled Task",
5
+ "description": "Strict version-2 YAML task definition. Exactly one target is required.",
6
+ "type": "object",
7
+ "required": ["version", "schedule"],
8
+ "additionalProperties": false,
9
+ "properties": {
10
+ "version": { "const": 2 },
11
+ "name": { "type": "string" },
12
+ "description": { "type": "string" },
13
+ "when_to_use": { "type": "string" },
14
+ "tags": { "type": "array", "items": { "type": "string", "minLength": 1 } },
15
+ "schedule": { "type": "string", "minLength": 1 },
16
+ "enabled": { "type": "boolean" },
17
+ "workflow": { "type": "string", "minLength": 1 },
18
+ "prompt": { "type": "string", "minLength": 1 },
19
+ "command": {
20
+ "oneOf": [
21
+ { "type": "string", "minLength": 1 },
22
+ { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 1 } }
23
+ ]
24
+ },
25
+ "params": { "type": "object" },
26
+ "engine": { "type": "string", "minLength": 1 },
27
+ "model": { "type": "string", "minLength": 1 },
28
+ "timeoutMs": { "type": ["integer", "null"], "minimum": 1 },
29
+ "llm": { "$ref": "#/definitions/llm" }
30
+ },
31
+ "oneOf": [
32
+ {
33
+ "required": ["workflow"],
34
+ "not": { "anyOf": [{ "required": ["prompt"] }, { "required": ["command"] }, { "required": ["engine"] }, { "required": ["model"] }, { "required": ["timeoutMs"] }, { "required": ["llm"] }] }
35
+ },
36
+ {
37
+ "required": ["prompt"],
38
+ "not": { "anyOf": [{ "required": ["workflow"] }, { "required": ["command"] }, { "required": ["params"] }] }
39
+ },
40
+ {
41
+ "required": ["command"],
42
+ "not": { "anyOf": [{ "required": ["workflow"] }, { "required": ["prompt"] }, { "required": ["params"] }, { "required": ["engine"] }, { "required": ["model"] }, { "required": ["llm"] }] }
43
+ }
44
+ ],
45
+ "definitions": {
46
+ "llm": {
47
+ "type": "object",
48
+ "additionalProperties": false,
49
+ "properties": {
50
+ "temperature": { "type": "number" },
51
+ "maxTokens": { "type": "integer", "minimum": 1 },
52
+ "supportsJsonSchema": { "type": "boolean" },
53
+ "extraParams": { "$ref": "#/definitions/extraParams" },
54
+ "contextLength": { "type": "integer", "minimum": 1 },
55
+ "enableThinking": { "type": "boolean" }
56
+ }
57
+ },
58
+ "extraParams": {
59
+ "type": "object",
60
+ "description": "Provider-specific request fields. Top-level AKM-owned fields are forbidden; credential-shaped keys are forbidden recursively after lowercase/non-alphanumeric normalization.",
61
+ "propertyNames": {
62
+ "not": {
63
+ "enum": ["model", "messages", "temperature", "maxtokens", "responseformat", "stream", "streamoptions", "enablethinking", "chattemplatekwargs", "authorization", "headers", "apikey", "token", "password", "secret", "cookie", "setcookie"]
64
+ }
65
+ },
66
+ "additionalProperties": { "$ref": "#/definitions/extraParamValue" },
67
+ "x-akm-protectedTopLevelNormalizedKeys": ["model", "messages", "temperature", "maxtokens", "responseformat", "stream", "streamoptions", "enablethinking", "chattemplatekwargs"],
68
+ "x-akm-recursivelyForbiddenNormalizedKeys": ["authorization", "headers", "apikey", "token", "password", "secret", "cookie", "setcookie"]
69
+ },
70
+ "extraParamValue": {
71
+ "anyOf": [
72
+ { "type": ["string", "number", "boolean", "null"] },
73
+ { "type": "array", "items": { "$ref": "#/definitions/extraParamValue" } },
74
+ {
75
+ "type": "object",
76
+ "propertyNames": {
77
+ "not": {
78
+ "enum": ["authorization", "headers", "apikey", "token", "password", "secret", "cookie", "setcookie"]
79
+ }
80
+ },
81
+ "additionalProperties": { "$ref": "#/definitions/extraParamValue" },
82
+ "x-akm-recursivelyForbiddenNormalizedKeys": ["authorization", "headers", "apikey", "token", "password", "secret", "cookie", "setcookie"]
83
+ }
84
+ ]
85
+ }
86
+ }
87
+ }
@@ -1,28 +1,28 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
3
  "$id": "https://itlackey.github.io/akm/schemas/akm-workflow.json",
4
- "title": "AKM Workflow Program",
5
- "description": "YAML workflow program for the akm CLI (Agent Knowledge Management). Files live under workflows/ with extension .yaml or .yml. Hand-authored alongside src/workflows/program/schema.ts; the enum vocabularies and patterns here are pinned against the TypeScript constants by tests/workflows/program-parser.test.ts — update both together.",
4
+ "title": "AKM Workflow",
5
+ "description": "Unified akm workflow frontmatter (workflow-format-unification). One markdown asset: the standard AKM asset envelope (type/description/tags/when_to_use/xrefs/updated/timestamp + the OKF v0.2 machine-stamped families) plus the orchestration graph. Per-step prose instructions and gate rubrics live in the markdown body, joined to this graph by step id — see docs/reference/workflows.md. Hand-authored alongside src/workflows/program/schema.ts; the enum vocabularies and patterns here are pinned against the TypeScript constants by tests/integration/workflows/schema-drift.test.ts.",
6
6
  "type": "object",
7
- "required": ["version", "name", "steps"],
7
+ "required": ["steps"],
8
8
  "additionalProperties": false,
9
9
  "properties": {
10
- "version": {
11
- "const": 1,
12
- "description": "Workflow program format version. Only 1 is valid."
13
- },
14
- "name": {
15
- "type": "string",
16
- "minLength": 1,
17
- "description": "Workflow name."
18
- },
19
- "description": {
20
- "type": "string",
21
- "description": "Optional human-readable description."
22
- },
10
+ "type": { "$ref": "akm-asset-envelope.json#/definitions/type" },
11
+ "description": { "$ref": "akm-asset-envelope.json#/definitions/description" },
12
+ "tags": { "$ref": "akm-asset-envelope.json#/definitions/tags" },
13
+ "when_to_use": { "$ref": "akm-asset-envelope.json#/definitions/when_to_use" },
14
+ "xrefs": { "$ref": "akm-asset-envelope.json#/definitions/xrefs" },
15
+ "updated": { "$ref": "akm-asset-envelope.json#/definitions/updated" },
16
+ "timestamp": { "$ref": "akm-asset-envelope.json#/definitions/timestamp" },
17
+ "generated": { "$ref": "akm-asset-envelope.json#/definitions/generated" },
18
+ "verified": { "$ref": "akm-asset-envelope.json#/definitions/verified" },
19
+ "provenance": { "$ref": "akm-asset-envelope.json#/definitions/provenance" },
20
+ "status": { "$ref": "akm-asset-envelope.json#/definitions/status" },
21
+ "stale_after": { "$ref": "akm-asset-envelope.json#/definitions/stale_after" },
23
22
  "params": {
24
23
  "type": "object",
25
- "description": "Run parameters: param name -> JSON Schema declaration. Names must be ${{ params.<name> }}-addressable identifiers.",
24
+ "maxProperties": 128,
25
+ "description": "Run parameters: param name -> JSON Schema declaration. Names must be params.<name>-addressable identifiers.",
26
26
  "propertyNames": {
27
27
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*$"
28
28
  },
@@ -39,6 +39,7 @@
39
39
  "steps": {
40
40
  "type": "array",
41
41
  "minItems": 1,
42
+ "maxItems": 256,
42
43
  "items": {
43
44
  "$ref": "#/definitions/step"
44
45
  }
@@ -48,7 +49,12 @@
48
49
  "identifier": {
49
50
  "type": "string",
50
51
  "pattern": "^[A-Za-z_][A-Za-z0-9_-]*$",
51
- "description": "Step id: a letter or underscore first, then letters, digits, underscores, or dashes (no dots, no leading digit). This is exactly the ${{ steps.<id>.output }}-addressable grammar; dots are reserved for the .output path separator and the engine's internal <stepId>.gate node id."
52
+ "description": "Step id: a letter or underscore first, then letters, digits, underscores, or dashes (no dots, no leading digit). This is exactly the steps.<id>.output-addressable grammar; dots are reserved for the .output path separator and the engine's internal <stepId>.gate node id."
53
+ },
54
+ "reference": {
55
+ "type": "string",
56
+ "minLength": 1,
57
+ "description": "A bare reference string: params.<name> or steps.<id>.output(.<ident>|[<int>])*. No ${{ }} delimiters — every position this appears in is a whole-value frontmatter field. Full grammar validation happens at compile time, not here."
52
58
  },
53
59
  "timeout": {
54
60
  "description": "Duration: \"<n>ms\" | \"<n>s\" | \"<n>m\" | \"none\" (bare integers are milliseconds).",
@@ -63,20 +69,56 @@
63
69
  }
64
70
  ]
65
71
  },
66
- "runner": {
67
- "description": "Execution backend for a unit; inherit defers to the run-level default.",
68
- "enum": ["llm", "agent", "sdk", "inherit"]
69
- },
70
72
  "onError": {
71
73
  "description": "Failure policy: fail the step on the first unit failure (default), or record failures and let the gate decide.",
72
74
  "enum": ["fail", "continue"]
73
75
  },
76
+ "llm": {
77
+ "type": "object",
78
+ "additionalProperties": false,
79
+ "properties": {
80
+ "temperature": { "type": "number" },
81
+ "max_tokens": { "type": "integer", "minimum": 1 },
82
+ "supports_json_schema": { "type": "boolean" },
83
+ "extra_params": { "$ref": "#/definitions/extraParams" },
84
+ "context_length": { "type": "integer", "minimum": 1 },
85
+ "enable_thinking": { "type": "boolean" }
86
+ }
87
+ },
88
+ "extraParams": {
89
+ "type": "object",
90
+ "description": "Provider-specific request fields. Top-level AKM-owned fields are forbidden; credential-shaped keys are forbidden recursively after lowercase/non-alphanumeric normalization.",
91
+ "propertyNames": {
92
+ "not": {
93
+ "enum": ["model", "messages", "temperature", "maxtokens", "responseformat", "stream", "streamoptions", "enablethinking", "chattemplatekwargs", "authorization", "headers", "apikey", "token", "password", "secret", "cookie", "setcookie"]
94
+ }
95
+ },
96
+ "additionalProperties": { "$ref": "#/definitions/extraParamValue" },
97
+ "x-akm-protectedTopLevelNormalizedKeys": ["model", "messages", "temperature", "maxtokens", "responseformat", "stream", "streamoptions", "enablethinking", "chattemplatekwargs"],
98
+ "x-akm-recursivelyForbiddenNormalizedKeys": ["authorization", "headers", "apikey", "token", "password", "secret", "cookie", "setcookie"]
99
+ },
100
+ "extraParamValue": {
101
+ "anyOf": [
102
+ { "type": ["string", "number", "boolean", "null"] },
103
+ { "type": "array", "items": { "$ref": "#/definitions/extraParamValue" } },
104
+ {
105
+ "type": "object",
106
+ "propertyNames": {
107
+ "not": {
108
+ "enum": ["authorization", "headers", "apikey", "token", "password", "secret", "cookie", "setcookie"]
109
+ }
110
+ },
111
+ "additionalProperties": { "$ref": "#/definitions/extraParamValue" },
112
+ "x-akm-recursivelyForbiddenNormalizedKeys": ["authorization", "headers", "apikey", "token", "password", "secret", "cookie", "setcookie"]
113
+ }
114
+ ]
115
+ },
74
116
  "reducer": {
75
117
  "description": "How a map step folds per-item unit results into the step artifact.",
76
118
  "enum": ["collect", "vote"]
77
119
  },
78
120
  "isolation": {
79
- "description": "Filesystem isolation for file-mutating units (enforcement lands in R2).",
121
+ "description": "Filesystem isolation for file-mutating units.",
80
122
  "enum": ["none", "worktree"]
81
123
  },
82
124
  "failureReason": {
@@ -133,6 +175,7 @@
133
175
  "max_units": {
134
176
  "type": "integer",
135
177
  "minimum": 1,
178
+ "maximum": 10000,
136
179
  "description": "Ceiling on total dispatched units across the run (seeded from journaled unit rows)."
137
180
  }
138
181
  }
@@ -142,8 +185,9 @@
142
185
  "description": "Run-level defaults, overridable per unit.",
143
186
  "additionalProperties": false,
144
187
  "properties": {
145
- "runner": {
146
- "$ref": "#/definitions/runner"
188
+ "engine": {
189
+ "type": "string",
190
+ "minLength": 1
147
191
  },
148
192
  "model": {
149
193
  "type": "string",
@@ -155,27 +199,29 @@
155
199
  },
156
200
  "on_error": {
157
201
  "$ref": "#/definitions/onError"
202
+ },
203
+ "llm": {
204
+ "$ref": "#/definitions/llm"
158
205
  }
159
206
  }
160
207
  },
161
208
  "unit": {
162
209
  "type": "object",
163
- "description": "A single dispatchable unit: instructions plus dispatch overrides.",
164
- "required": ["instructions"],
210
+ "description": "Optional dispatch-override bag for a unit/map step. A step with none of these carries the run's engine/model/timeout defaults verbatim.",
165
211
  "additionalProperties": false,
166
212
  "properties": {
167
- "runner": {
168
- "$ref": "#/definitions/runner"
169
- },
170
- "profile": {
213
+ "engine": {
171
214
  "type": "string",
172
215
  "minLength": 1,
173
- "description": "Agent/LLM profile name."
216
+ "description": "Named engine selected at workflow start."
174
217
  },
175
218
  "model": {
176
219
  "type": "string",
177
220
  "minLength": 1
178
221
  },
222
+ "llm": {
223
+ "$ref": "#/definitions/llm"
224
+ },
179
225
  "timeout": {
180
226
  "$ref": "#/definitions/timeout"
181
227
  },
@@ -185,11 +231,6 @@
185
231
  "on_error": {
186
232
  "$ref": "#/definitions/onError"
187
233
  },
188
- "instructions": {
189
- "type": "string",
190
- "minLength": 1,
191
- "description": "Instruction template. ${{ … }} expressions are parsed against the closed grammar: params.<name> | steps.<id>.output.<path> | item | item_index."
192
- },
193
234
  "output": {
194
235
  "$ref": "#/definitions/jsonSchemaObject"
195
236
  },
@@ -208,14 +249,13 @@
208
249
  },
209
250
  "map": {
210
251
  "type": "object",
211
- "description": "Fan the unit template out over an expression-addressed item list.",
212
- "required": ["over", "unit"],
252
+ "description": "Fan the step out over a reference-addressed item list.",
253
+ "required": ["over"],
213
254
  "additionalProperties": false,
214
255
  "properties": {
215
256
  "over": {
216
- "type": "string",
217
- "minLength": 1,
218
- "description": "${{ … }} expression naming the producer of the item list (e.g. ${{ steps.discover.output.files }})."
257
+ "$ref": "#/definitions/reference",
258
+ "description": "Reference naming the producer of the item list (e.g. steps.discover.output.files)."
219
259
  },
220
260
  "concurrency": {
221
261
  "type": "integer",
@@ -230,23 +270,35 @@
230
270
  }
231
271
  }
232
272
  },
273
+ "routeBranch": {
274
+ "type": "object",
275
+ "required": ["match", "step"],
276
+ "additionalProperties": false,
277
+ "properties": {
278
+ "match": {
279
+ "type": ["string", "number", "boolean"]
280
+ },
281
+ "step": {
282
+ "$ref": "#/definitions/identifier"
283
+ }
284
+ }
285
+ },
233
286
  "route": {
234
287
  "type": "object",
235
- "description": "Route on an explicit ${{ … }} input to a LATER step. Targets must come after the routing step.",
288
+ "description": "Route on an explicit reference input to a LATER step. Targets must come after the routing step.",
236
289
  "required": ["input", "when"],
237
290
  "additionalProperties": false,
238
291
  "properties": {
239
292
  "input": {
240
- "type": "string",
241
- "minLength": 1,
242
- "description": "${{ … }} expression naming the value to route on."
293
+ "$ref": "#/definitions/reference",
294
+ "description": "Reference naming the value to route on."
243
295
  },
244
296
  "when": {
245
- "type": "object",
246
- "minProperties": 1,
247
- "description": "Match value -> target step id.",
248
- "additionalProperties": {
249
- "$ref": "#/definitions/identifier"
297
+ "type": "array",
298
+ "minItems": 1,
299
+ "maxItems": 256,
300
+ "items": {
301
+ "$ref": "#/definitions/routeBranch"
250
302
  }
251
303
  },
252
304
  "default": {
@@ -256,42 +308,34 @@
256
308
  },
257
309
  "gate": {
258
310
  "type": "object",
259
- "description": "Completion gate criteria judged against the step artifact.",
260
- "required": ["criteria"],
311
+ "description": "Optional validation-loop configuration. The rubric itself lives in the body under a `### gate` sub-heading inside the step's section; omitted or empty rubric text skips validation.",
261
312
  "additionalProperties": false,
262
313
  "properties": {
263
- "criteria": {
264
- "type": "array",
265
- "minItems": 1,
266
- "items": {
267
- "type": "string",
268
- "minLength": 1
269
- }
270
- },
271
314
  "max_loops": {
272
315
  "type": "integer",
273
316
  "minimum": 1,
274
- "description": "Evaluator-optimizer loop bound (execution lands in R2)."
275
- },
276
- "required": {
277
- "type": "boolean",
278
- "description": "When true, the gate must be judged: if no summary-validation judge is available (offline / misconfigured LLM), the step BLOCKS for a human instead of failing open and silently passing. Absent = fail-open default. The engine's --require-gates flag applies this to every criteria-bearing gate for one invocation."
317
+ "description": "Evaluator-optimizer loop bound."
279
318
  }
280
319
  }
281
320
  },
321
+ "inputs": {
322
+ "type": "array",
323
+ "minItems": 1,
324
+ "maxItems": 64,
325
+ "items": {
326
+ "$ref": "#/definitions/reference"
327
+ },
328
+ "description": "Prior-step artifacts this unit/map step consumes, as reference strings (sub-paths legal). Attached to the dispatched unit as structured context; never spliced into instructions."
329
+ },
282
330
  "step": {
283
331
  "type": "object",
284
- "description": "One step of the gated spine. Exactly one of unit | map | route.",
332
+ "description": "One step of the gated spine. A step with no map/route is a unit step (bare `{id: ...}` is the complete minimal declaration). At most one of map/route.",
285
333
  "required": ["id"],
286
334
  "additionalProperties": false,
287
335
  "properties": {
288
336
  "id": {
289
337
  "$ref": "#/definitions/identifier"
290
338
  },
291
- "title": {
292
- "type": "string",
293
- "minLength": 1
294
- },
295
339
  "unit": {
296
340
  "$ref": "#/definitions/unit"
297
341
  },
@@ -301,6 +345,9 @@
301
345
  "route": {
302
346
  "$ref": "#/definitions/route"
303
347
  },
348
+ "inputs": {
349
+ "$ref": "#/definitions/inputs"
350
+ },
304
351
  "output": {
305
352
  "$ref": "#/definitions/jsonSchemaObject"
306
353
  },
@@ -310,17 +357,15 @@
310
357
  },
311
358
  "allOf": [
312
359
  {
313
- "oneOf": [
314
- {
315
- "required": ["unit"]
316
- },
317
- {
318
- "required": ["map"]
319
- },
320
- {
321
- "required": ["route"]
322
- }
323
- ]
360
+ "not": { "required": ["map", "route"] }
361
+ },
362
+ {
363
+ "if": { "required": ["route"] },
364
+ "then": { "not": { "anyOf": [{ "required": ["unit"] }, { "required": ["map"] }, { "required": ["inputs"] }] } }
365
+ },
366
+ {
367
+ "if": { "required": ["map"] },
368
+ "then": { "not": { "required": ["unit"] } }
324
369
  }
325
370
  ]
326
371
  }
@@ -1,38 +0,0 @@
1
- #!/bin/sh
2
- # This Source Code Form is subject to the terms of the Mozilla Public
3
- # License, v. 2.0. If a copy of the MPL was not distributed with this
4
- # file, You can obtain one at https://mozilla.org/MPL/2.0/.
5
-
6
- case "$0" in
7
- */*) SCRIPT_PATH=$0 ;;
8
- *)
9
- SCRIPT_PATH=$(command -v -- "$0" 2>/dev/null || true)
10
- if [ -z "$SCRIPT_PATH" ]; then
11
- echo "akm-migrate-storage launcher could not resolve its own path." >&2
12
- exit 127
13
- fi
14
- ;;
15
- esac
16
-
17
- if command -v readlink >/dev/null 2>&1; then
18
- while [ -L "$SCRIPT_PATH" ]; do
19
- LINK_TARGET=$(readlink "$SCRIPT_PATH")
20
- case "$LINK_TARGET" in
21
- /*) SCRIPT_PATH=$LINK_TARGET ;;
22
- *) SCRIPT_PATH=${SCRIPT_PATH%/*}/$LINK_TARGET ;;
23
- esac
24
- done
25
- fi
26
-
27
- SCRIPT_DIR=$(CDPATH= cd -- "${SCRIPT_PATH%/*}" && pwd)
28
-
29
- if command -v bun >/dev/null 2>&1; then
30
- exec bun "$SCRIPT_DIR/scripts/migrate-storage.js" "$@"
31
- fi
32
-
33
- if command -v node >/dev/null 2>&1; then
34
- exec node "$SCRIPT_DIR/migrate-storage-node.mjs" "$@"
35
- fi
36
-
37
- echo "akm-migrate-storage requires Bun or Node.js >= 20.12.0 on PATH." >&2
38
- exit 127
@@ -1,12 +0,0 @@
1
- Usage:
2
- akm proposal accept <id>
3
-
4
- Description:
5
- Accept a proposal and promote it into the stash.
6
-
7
- (`akm accept` is a deprecated alias for `akm proposal accept`; it warns on
8
- stderr and is removed in 0.9.0.)
9
-
10
- Examples:
11
- akm proposal accept proposal_123
12
- akm proposal accept proposal_123 --target team-stash
@@ -1,84 +0,0 @@
1
- Usage:
2
- akm improve
3
- akm improve <type>
4
- akm improve <ref>
5
-
6
- Description:
7
- Analyze existing AKM assets and generate improvement proposals.
8
-
9
- Modes:
10
- akm improve
11
- Improve all eligible assets in the current scope.
12
-
13
- akm improve <type>
14
- Improve all assets of a given type.
15
- Example: akm improve memory
16
-
17
- akm improve <ref>
18
- Improve one specific asset.
19
- Example: akm improve workflow:release-checklist
20
-
21
- What it does:
22
- - reviews feedback and recent history
23
- - proposes edits to existing assets
24
- - distills lessons where useful
25
- - promotes durable skill lessons into skill reference-doc proposals when justified
26
- - cleans and consolidates memories
27
- - writes results to the proposal queue
28
-
29
- Options:
30
- --task <text> Add extra guidance for this improvement pass
31
- --dry-run Show planned actions without generating proposals
32
- --target <source> Override the write target for accepted proposals
33
- --auto-accept[=<value>]
34
- Confidence threshold (0-100) for auto-accepting proposals.
35
- Default when flag is absent: ON at threshold 90 (all sub-processes).
36
- --auto-accept same as --auto-accept=90
37
- --auto-accept=<N> integer 0-100; accept proposals at or above N
38
- --auto-accept=safe alias for 90 (back-compat, not deprecated)
39
- --auto-accept=false disable auto-accept for all sub-processes;
40
- reflect/distill proposals go to the queue and
41
- consolidation will prompt interactively on HTTP paths
42
- Note: until proposals carry real confidence scores, any non-`false`
43
- value behaves like the legacy "safe" mode (whole-batch auto-accept).
44
- --profile <name> Improve profile to apply. Built-ins: default, quick,
45
- thorough, memory-focus, frequent, catchup, consolidate,
46
- graph-refresh, synthesize, reflect-distill,
47
- proactive-maintenance, recombine-only. User-defined
48
- profiles under `profiles.improve.<name>` in config are
49
- also accepted. Profiles bundle process gating, type
50
- filters, and run-level autoAccept/limit defaults. Falls
51
- back to `defaults.improve` in config, then to "default".
52
- An unknown name is a hard error listing the valid names
53
- (no silent fallback to default).
54
- Sync behavior by profile: default and thorough enable
55
- auto-commit + push; quick and memory-focus skip sync.
56
- --sync Commit (and optionally push) the git-backed primary
57
- stash when the run finishes. Use --no-sync to disable.
58
- Default: per profile config (enabled for default and
59
- thorough, disabled for quick and memory-focus).
60
- --push Push after the end-of-run sync commit when the stash
61
- is writable and has a remote configured. Use --no-push
62
- to commit only. Default: per profile config (true when
63
- sync is enabled).
64
- --consolidate-recovery <mode>
65
- Recovery mode for stale consolidate journals: abort (default) or clean
66
- --require-feedback-signal
67
- Only process refs with recent feedback signal events
68
- --min-retrieval-count <n>
69
- Retrieval fallback threshold when no recent feedback exists (default: 5)
70
- --json-to-stdout Emit the full JSON result on stdout (legacy behaviour).
71
- (0.8.0+: full result is recorded in the improve_runs table of
72
- state.db and stdout is empty; use --json-to-stdout for the prior
73
- behaviour, e.g. `akm improve --json-to-stdout | jq`.)
74
-
75
- Examples:
76
- akm improve
77
- akm improve memory
78
- akm improve skill
79
- akm improve skill:code-review
80
- akm improve workflow:incident-response --task "reduce duplication"
81
- akm improve --profile quick
82
- akm improve --profile memory-focus
83
- akm improve --no-sync
84
- akm improve --no-push
@@ -1,17 +0,0 @@
1
- Usage:
2
- akm proposal list
3
-
4
- Description:
5
- List proposal queue entries.
6
-
7
- (The flat `akm proposals` alias was removed in 0.9.0 — use `akm proposal list`.)
8
-
9
- Options:
10
- --status <status> Filter by pending, accepted, or rejected
11
- --type <type> Filter by asset type
12
- --ref <ref> Filter by exact asset ref
13
-
14
- Examples:
15
- akm proposal list
16
- akm proposal list --status pending
17
- akm proposal list --type skill
@@ -1,17 +0,0 @@
1
- Usage:
2
- akm propose <type> <name> --task "..."
3
- akm propose <type> <name> --file <path>
4
-
5
- Description:
6
- Create a proposal for a brand-new AKM asset.
7
-
8
- Input:
9
- --task <text> Inline task or prompt text
10
- --file <path> Read task or prompt text from a file
11
-
12
- Rules:
13
- Exactly one of --task or --file is required.
14
-
15
- Examples:
16
- akm propose skill release-auditor --task "review release artifacts before publish"
17
- akm propose workflow hotfix-triage --file ./prompts/hotfix-triage.md
@@ -1,11 +0,0 @@
1
- Usage:
2
- akm proposal reject <id> --reason "..."
3
-
4
- Description:
5
- Reject a proposal and record the reason.
6
-
7
- (`akm reject` is a deprecated alias for `akm proposal reject`; it warns on
8
- stderr and is removed in 0.9.0.)
9
-
10
- Examples:
11
- akm proposal reject proposal_123 --reason "duplicates existing workflow"
@@ -1,13 +0,0 @@
1
- {
2
- "description": "Frequent extract + inference pass — sessions, memory inference, graph, reflect.",
3
- "processes": {
4
- "reflect": { "enabled": true },
5
- "distill": { "enabled": false },
6
- "consolidate": { "enabled": false },
7
- "memoryInference": { "enabled": true },
8
- "graphExtraction": { "enabled": true },
9
- "extract": { "enabled": true, "minNewSessions": 3, "triage": { "enabled": true, "minScore": 2 } },
10
- "triage": { "enabled": false }
11
- },
12
- "sync": { "enabled": true, "push": true }
13
- }