akm-cli 0.9.0-rc.0 → 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 (598) hide show
  1. package/CHANGELOG.md +1283 -22
  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/prompts/workflow-unit-preamble.md +26 -0
  26. package/dist/assets/stash-skeleton/README.md +38 -10
  27. package/dist/assets/stash-skeleton/facts/conventions/assets/agent.md +8 -0
  28. package/dist/assets/stash-skeleton/facts/conventions/assets/command.md +8 -0
  29. package/dist/assets/stash-skeleton/facts/conventions/assets/fact.md +14 -1
  30. package/dist/assets/stash-skeleton/facts/conventions/assets/knowledge.md +13 -1
  31. package/dist/assets/stash-skeleton/facts/conventions/assets/lesson.md +9 -1
  32. package/dist/assets/stash-skeleton/facts/conventions/assets/memory.md +11 -0
  33. package/dist/assets/stash-skeleton/facts/conventions/assets/script.md +9 -0
  34. package/dist/assets/stash-skeleton/facts/conventions/assets/skill.md +9 -0
  35. package/dist/assets/stash-skeleton/facts/conventions/assets/workflow.md +8 -0
  36. package/dist/assets/stash-skeleton/facts/conventions/backlinks.md +100 -0
  37. package/dist/assets/stash-skeleton/facts/conventions/domains.md +64 -0
  38. package/dist/assets/stash-skeleton/facts/conventions/organization.md +136 -0
  39. package/dist/assets/tasks/core/extract.yml +3 -2
  40. package/dist/assets/tasks/core/improve.yml +2 -1
  41. package/dist/assets/tasks/core/index-refresh.yml +1 -0
  42. package/dist/assets/tasks/core/sync.yml +1 -0
  43. package/dist/assets/tasks/core/version-check.yml +2 -1
  44. package/dist/assets/tasks/improve/akm-graph-refresh-weekly.yml +5 -0
  45. package/dist/assets/tasks/improve/akm-improve-catchup.yml +8 -0
  46. package/dist/assets/tasks/improve/akm-improve-consolidate.yml +5 -0
  47. package/dist/assets/tasks/improve/akm-improve-frequent.yml +5 -0
  48. package/dist/assets/tasks/improve/akm-improve-nightly.yml +5 -0
  49. package/dist/assets/templates/html/health.html +5 -4
  50. package/dist/assets/workflows/workflow-template.md +31 -15
  51. package/dist/cli/invocation.js +279 -0
  52. package/dist/cli/parse-args.js +5 -90
  53. package/dist/cli/retired-commands.js +78 -0
  54. package/dist/cli/shared.js +158 -48
  55. package/dist/cli-node.mjs +2 -1
  56. package/dist/cli.js +747 -293
  57. package/dist/commands/agent/agent-dispatch.js +19 -18
  58. package/dist/commands/agent/agent-support.js +0 -24
  59. package/dist/commands/agent/contribute-cli.js +43 -97
  60. package/dist/commands/completions.js +80 -23
  61. package/dist/commands/config-cli.js +44 -281
  62. package/dist/commands/env/env-binding.js +99 -0
  63. package/dist/commands/env/env-cli.js +84 -224
  64. package/dist/commands/env/env.js +12 -163
  65. package/dist/commands/env/marker-path.js +6 -0
  66. package/dist/commands/env/secret-cli.js +45 -61
  67. package/dist/commands/env/secret.js +32 -62
  68. package/dist/commands/feedback-cli.js +179 -85
  69. package/dist/commands/health/accept-rate.js +58 -0
  70. package/dist/commands/health/advisories.js +7 -8
  71. package/dist/commands/health/checks.js +279 -94
  72. package/dist/commands/health/html-report.js +197 -578
  73. package/dist/commands/health/improve-metrics.js +277 -246
  74. package/dist/commands/health/llm-usage.js +19 -19
  75. package/dist/commands/health/md-report.js +16 -7
  76. package/dist/commands/health/metrics.js +67 -32
  77. package/dist/commands/health/renderers.js +47 -0
  78. package/dist/commands/health/report-view-model.js +508 -0
  79. package/dist/commands/health/stash-exposure.js +1 -1
  80. package/dist/commands/health/surfaces.js +16 -56
  81. package/dist/commands/health/task-runs.js +3 -67
  82. package/dist/{migrate-storage-node.mjs → commands/health/types-checks.js} +1 -5
  83. package/dist/commands/health/types-improve.js +29 -0
  84. package/dist/{output/text/save.js → commands/health/types-metrics.js} +1 -2
  85. package/dist/commands/health/types-result.js +7 -0
  86. package/dist/commands/health/types-runs.js +4 -0
  87. package/dist/commands/health/types-session-log.js +4 -0
  88. package/dist/commands/health/types-windows.js +4 -0
  89. package/dist/commands/health/types.js +26 -21
  90. package/dist/commands/health/windows.js +2 -3
  91. package/dist/commands/health.js +296 -167
  92. package/dist/commands/improve/anti-collapse.js +5 -5
  93. package/dist/commands/improve/autonomy-gate.js +68 -0
  94. package/dist/commands/improve/collapse-detector.js +65 -52
  95. package/dist/commands/improve/consolidate/chunking.js +9 -7
  96. package/dist/commands/improve/consolidate/eligibility.js +1 -23
  97. package/dist/commands/improve/consolidate/merge.js +4 -0
  98. package/dist/commands/improve/consolidate.js +454 -1354
  99. package/dist/commands/improve/content-hash.js +39 -0
  100. package/dist/commands/improve/distill/content-repair.js +4 -10
  101. package/dist/commands/improve/distill/promote-memory.js +89 -64
  102. package/dist/commands/improve/distill/quality-gate.js +118 -42
  103. package/dist/commands/improve/distill-guards.js +1 -1
  104. package/dist/commands/improve/distill-promotion-policy.js +33 -888
  105. package/dist/commands/improve/distill.js +607 -363
  106. package/dist/commands/improve/eligibility.js +165 -79
  107. package/dist/commands/improve/extract-cli.js +35 -126
  108. package/dist/commands/improve/extract-prompt.js +6 -35
  109. package/dist/commands/improve/extract.js +640 -391
  110. package/dist/commands/improve/feedback-valence.js +2 -12
  111. package/dist/commands/improve/improve-cli.js +134 -135
  112. package/dist/commands/improve/improve-result-file.js +30 -50
  113. package/dist/commands/improve/improve-run-types.js +4 -0
  114. package/dist/commands/improve/improve-strategies.js +135 -0
  115. package/dist/commands/improve/improve.js +904 -701
  116. package/dist/commands/improve/locks.js +64 -111
  117. package/dist/commands/improve/loop-stages.js +1110 -923
  118. package/dist/commands/improve/memory/derived-ref.js +124 -0
  119. package/dist/commands/improve/memory/memory-belief.js +79 -7
  120. package/dist/commands/improve/memory/memory-contradiction-detect.js +49 -52
  121. package/dist/commands/improve/memory/memory-improve.js +25 -37
  122. package/dist/commands/improve/outcome-loop.js +25 -88
  123. package/dist/commands/improve/preparation.js +1034 -813
  124. package/dist/commands/improve/proactive-maintenance.js +34 -9
  125. package/dist/commands/improve/proposal-envelope.js +31 -0
  126. package/dist/commands/improve/reflect.js +983 -794
  127. package/dist/commands/improve/run-context.js +119 -0
  128. package/dist/commands/improve/salience.js +24 -127
  129. package/dist/commands/improve/session-asset.js +7 -3
  130. package/dist/commands/improve/shared.js +14 -34
  131. package/dist/commands/improve/source-identity.js +28 -0
  132. package/dist/commands/improve/triage.js +20 -17
  133. package/dist/commands/lint/base-linter.js +340 -313
  134. package/dist/commands/lint/env-key-rules.js +31 -47
  135. package/dist/commands/lint/index.js +185 -30
  136. package/dist/commands/{events.js → log.js} +28 -38
  137. package/dist/commands/migrate-cli.js +54 -0
  138. package/dist/commands/migration-tool.js +55 -0
  139. package/dist/commands/observability-cli.js +70 -208
  140. package/dist/commands/proposal/diff-format.js +50 -0
  141. package/dist/commands/proposal/drain-policies.js +0 -6
  142. package/dist/commands/proposal/drain.js +91 -40
  143. package/dist/commands/proposal/proposal-cli.js +134 -132
  144. package/dist/commands/proposal/proposal-types.js +56 -0
  145. package/dist/commands/proposal/proposal.js +83 -65
  146. package/dist/commands/proposal/propose-cli.js +88 -0
  147. package/dist/commands/proposal/propose.js +105 -88
  148. package/dist/commands/proposal/repository.js +1303 -278
  149. package/dist/commands/proposal/validators/proposal-quality-validators.js +16 -6
  150. package/dist/commands/proposal/validators/proposal-validators.js +61 -12
  151. package/dist/commands/proposal/validators/proposals.js +6 -8
  152. package/dist/commands/read/curate.js +78 -73
  153. package/dist/commands/read/knowledge.js +510 -13
  154. package/dist/commands/read/registry-search.js +2 -2
  155. package/dist/commands/read/remember-cli.js +84 -15
  156. package/dist/commands/read/search-cli.js +203 -96
  157. package/dist/commands/read/search.js +126 -94
  158. package/dist/commands/read/show.js +226 -250
  159. package/dist/commands/registry-cli.js +34 -60
  160. package/dist/commands/remember.js +18 -57
  161. package/dist/commands/sources/add-cli.js +104 -49
  162. package/dist/commands/sources/bundle-cli.js +166 -0
  163. package/dist/commands/sources/bundle-config-ops.js +63 -0
  164. package/dist/commands/sources/info.js +27 -15
  165. package/dist/commands/sources/init.js +30 -40
  166. package/dist/commands/sources/installed-stashes.js +469 -172
  167. package/dist/commands/sources/migration-help.js +7 -4
  168. package/dist/commands/sources/schema-repair.js +10 -9
  169. package/dist/commands/sources/self-update.js +182 -121
  170. package/dist/commands/sources/source-add.js +169 -178
  171. package/dist/commands/sources/source-clone.js +144 -41
  172. package/dist/commands/sources/source-manage.js +94 -59
  173. package/dist/commands/sources/sources-cli.js +64 -205
  174. package/dist/commands/sources/stash-cli.js +91 -54
  175. package/dist/commands/sources/stash-skeleton.js +1 -1
  176. package/dist/commands/tasks/tasks-cli.js +106 -104
  177. package/dist/commands/tasks/tasks.js +445 -262
  178. package/dist/commands/workflow-cli.js +232 -121
  179. package/dist/core/action-contributors.js +1 -1
  180. package/dist/core/activation-policy.js +49 -0
  181. package/dist/core/adapter/adapters/agent-skills-adapter.js +181 -0
  182. package/dist/core/adapter/adapters/akm-adapter.js +528 -0
  183. package/dist/core/adapter/adapters/akm-lint.js +392 -0
  184. package/dist/core/adapter/adapters/akm-metadata.js +387 -0
  185. package/dist/core/adapter/adapters/akm-task-adapter.js +149 -0
  186. package/dist/core/adapter/adapters/akm-workflow-adapter.js +180 -0
  187. package/dist/core/adapter/adapters/claude-adapter.js +61 -0
  188. package/dist/core/adapter/adapters/dotenv-adapter.js +187 -0
  189. package/dist/core/adapter/adapters/generic-files-adapter.js +119 -0
  190. package/dist/core/adapter/adapters/index.js +80 -0
  191. package/dist/core/adapter/adapters/llm-wiki-adapter.js +419 -0
  192. package/dist/core/adapter/adapters/okf-adapter.js +391 -0
  193. package/dist/core/adapter/adapters/opencode-adapter.js +68 -0
  194. package/dist/core/adapter/adapters/shared.js +286 -0
  195. package/dist/core/adapter/adapters/tool-dir-shared.js +217 -0
  196. package/dist/core/adapter/adapters/website-snapshot-adapter.js +155 -0
  197. package/dist/core/adapter/bundle-adapter.js +4 -0
  198. package/dist/core/adapter/detect-adapter.js +17 -0
  199. package/dist/core/adapter/recognize-match.js +44 -0
  200. package/dist/core/adapter/registry.js +56 -0
  201. package/dist/core/adapter/types.js +4 -0
  202. package/dist/core/asset/akm-markdown.js +30 -0
  203. package/dist/core/asset/asset-placement.js +243 -0
  204. package/dist/core/asset/asset-ref.js +110 -79
  205. package/dist/core/asset/asset-serialize.js +20 -0
  206. package/dist/core/asset/frontmatter.js +28 -12
  207. package/dist/core/asset/markdown.js +40 -51
  208. package/dist/core/asset/resolve-ref.js +274 -0
  209. package/dist/core/asset/stash-meta.js +2 -2
  210. package/dist/core/bundle-id.js +51 -0
  211. package/dist/core/common.js +281 -86
  212. package/dist/core/config/config-io.js +42 -128
  213. package/dist/core/config/config-schema.js +233 -834
  214. package/dist/core/config/config-sources.js +162 -39
  215. package/dist/core/config/config-types.js +16 -11
  216. package/dist/core/config/config-version.js +29 -0
  217. package/dist/core/config/config-walker.js +126 -37
  218. package/dist/core/config/config.js +154 -331
  219. package/dist/core/config/deep-merge.js +41 -0
  220. package/dist/core/config/engine-semantics.js +28 -0
  221. package/dist/core/config/experimental.js +21 -0
  222. package/dist/core/config/schema/embedding.js +38 -0
  223. package/dist/core/config/schema/engines.js +116 -0
  224. package/dist/core/config/schema/experimental.js +47 -0
  225. package/dist/core/config/schema/feedback.js +31 -0
  226. package/dist/core/config/schema/improve-processes.js +389 -0
  227. package/dist/core/config/schema/improve.js +94 -0
  228. package/dist/core/config/schema/index-config.js +176 -0
  229. package/dist/core/config/schema/output.js +18 -0
  230. package/dist/core/config/schema/primitives.js +94 -0
  231. package/dist/core/config/schema/search.js +30 -0
  232. package/dist/core/config/schema/setup.js +18 -0
  233. package/dist/core/config/schema/sources-bundles.js +169 -0
  234. package/dist/core/config/schema/workflow.js +29 -0
  235. package/dist/core/env-secret-ref.js +155 -20
  236. package/dist/core/errors.js +17 -15
  237. package/dist/core/events-types.js +4 -0
  238. package/dist/core/events.js +46 -128
  239. package/dist/core/extra-params.js +62 -0
  240. package/dist/core/file-change.js +17 -0
  241. package/dist/core/file-lock.js +202 -57
  242. package/dist/core/fs-txn.js +392 -0
  243. package/dist/core/git-message.js +59 -0
  244. package/dist/core/improve-result.js +167 -0
  245. package/dist/core/json-schema.js +142 -0
  246. package/dist/core/lesson-lint.js +1 -17
  247. package/dist/core/logs-db.js +1 -1
  248. package/dist/core/maintenance-barrier.js +135 -0
  249. package/dist/core/migration-operation.js +44 -0
  250. package/dist/core/mutation-target.js +78 -0
  251. package/dist/core/paths.js +22 -25
  252. package/dist/core/platform.js +10 -0
  253. package/dist/core/recognition-util.js +128 -0
  254. package/dist/core/redaction.js +392 -0
  255. package/dist/core/standards/resolve-standards-context.js +36 -65
  256. package/dist/core/standards/resolve-stash-standards.js +2 -2
  257. package/dist/core/standards/resolve-type-conventions.js +5 -5
  258. package/dist/core/state/migrations.js +242 -11
  259. package/dist/core/state-db.js +98 -10
  260. package/dist/core/structured.js +1 -1
  261. package/dist/core/subprocess.js +303 -0
  262. package/dist/core/text-truncation.js +9 -5
  263. package/dist/core/time.js +20 -0
  264. package/dist/core/type-presentation.js +130 -0
  265. package/dist/core/warn.js +0 -3
  266. package/dist/core/write-source.js +834 -118
  267. package/dist/indexer/bundle-identity-guard.js +92 -0
  268. package/dist/indexer/db/graph-db.js +1 -25
  269. package/dist/indexer/db/llm-cache.js +1 -1
  270. package/dist/indexer/ensure-index.js +30 -9
  271. package/dist/indexer/graph/graph-boost.js +9 -30
  272. package/dist/indexer/graph/graph-extraction.js +41 -27
  273. package/dist/indexer/graph/graph-types.js +4 -0
  274. package/dist/indexer/index-writer-lock.js +93 -49
  275. package/dist/indexer/index-written-assets.js +100 -53
  276. package/dist/indexer/indexer.js +746 -329
  277. package/dist/indexer/init.js +18 -25
  278. package/dist/indexer/installations.js +142 -0
  279. package/dist/indexer/passes/dir-staleness.js +18 -10
  280. package/dist/indexer/passes/memory-inference.js +25 -15
  281. package/dist/indexer/passes/metadata.js +412 -243
  282. package/dist/indexer/scan/doc-to-entry.js +160 -0
  283. package/dist/indexer/scan/drain-dir.js +134 -0
  284. package/dist/indexer/search/db-search.js +292 -108
  285. package/dist/indexer/search/fts-query.js +64 -0
  286. package/dist/indexer/search/ranking-contributors.js +145 -25
  287. package/dist/indexer/search/ranking-types.js +4 -0
  288. package/dist/indexer/search/ranking.js +28 -71
  289. package/dist/indexer/search/search-attribution.js +67 -0
  290. package/dist/indexer/search/search-fields.js +18 -3
  291. package/dist/indexer/search/search-hit-enrichers.js +30 -40
  292. package/dist/indexer/search/search-source.js +157 -111
  293. package/dist/indexer/search/semantic-status.js +4 -1
  294. package/dist/indexer/usage/usage-events.js +10 -30
  295. package/dist/indexer/walk/file-context.js +3 -45
  296. package/dist/indexer/walk/matchers.js +42 -34
  297. package/dist/indexer/walk/path-resolver.js +11 -5
  298. package/dist/indexer/walk/walker.js +42 -14
  299. package/dist/integrations/agent/builder-shared.js +7 -0
  300. package/dist/integrations/agent/builders.js +5 -56
  301. package/dist/integrations/agent/config.js +3 -143
  302. package/dist/integrations/agent/detect.js +17 -2
  303. package/dist/integrations/agent/engine-resolution.js +231 -0
  304. package/dist/integrations/agent/index.js +1 -2
  305. package/dist/integrations/agent/model-aliases.js +16 -2
  306. package/dist/integrations/agent/profiles.js +36 -62
  307. package/dist/integrations/agent/prompts.js +46 -18
  308. package/dist/integrations/agent/runner-dispatch.js +93 -4
  309. package/dist/integrations/agent/runner.js +76 -208
  310. package/dist/integrations/agent/spawn.js +88 -196
  311. package/dist/integrations/harnesses/aider/agent-builder.js +114 -0
  312. package/dist/integrations/harnesses/aider/index.js +48 -0
  313. package/dist/integrations/harnesses/aider/result-extractor.js +53 -0
  314. package/dist/integrations/harnesses/amazonq/agent-builder.js +147 -0
  315. package/dist/integrations/harnesses/amazonq/index.js +45 -0
  316. package/dist/integrations/harnesses/amazonq/result-extractor.js +48 -0
  317. package/dist/integrations/harnesses/claude/agent-builder.js +46 -8
  318. package/dist/integrations/harnesses/claude/config-import.js +1 -3
  319. package/dist/integrations/harnesses/claude/index.js +24 -35
  320. package/dist/integrations/harnesses/claude/result-extractor.js +52 -0
  321. package/dist/integrations/harnesses/claude/session-log.js +27 -75
  322. package/dist/integrations/harnesses/codex/agent-builder.js +138 -0
  323. package/dist/integrations/harnesses/codex/index.js +52 -0
  324. package/dist/integrations/harnesses/codex/result-extractor.js +73 -0
  325. package/dist/integrations/harnesses/copilot/agent-builder.js +122 -0
  326. package/dist/integrations/harnesses/copilot/index.js +48 -0
  327. package/dist/integrations/harnesses/copilot/result-extractor.js +151 -0
  328. package/dist/integrations/harnesses/gemini/agent-builder.js +120 -0
  329. package/dist/integrations/harnesses/gemini/index.js +48 -0
  330. package/dist/integrations/harnesses/gemini/result-extractor.js +121 -0
  331. package/dist/integrations/harnesses/ids.js +24 -0
  332. package/dist/integrations/harnesses/index.js +54 -34
  333. package/dist/integrations/harnesses/opencode/agent-builder.js +23 -5
  334. package/dist/integrations/harnesses/opencode/config-import.js +1 -3
  335. package/dist/integrations/harnesses/opencode/index.js +14 -32
  336. package/dist/integrations/harnesses/opencode/session-log.js +67 -125
  337. package/dist/integrations/harnesses/opencode-sdk/harness.js +51 -0
  338. package/dist/integrations/harnesses/opencode-sdk/sdk-runner.js +681 -108
  339. package/dist/integrations/harnesses/openhands/agent-builder.js +128 -0
  340. package/dist/integrations/harnesses/openhands/index.js +48 -0
  341. package/dist/integrations/harnesses/openhands/result-extractor.js +103 -0
  342. package/dist/integrations/harnesses/pi/agent-builder.js +97 -0
  343. package/dist/integrations/harnesses/pi/index.js +45 -0
  344. package/dist/integrations/harnesses/pi/result-extractor.js +135 -0
  345. package/dist/integrations/harnesses/shared.js +17 -0
  346. package/dist/integrations/harnesses/types.js +43 -32
  347. package/dist/integrations/lockfile.js +211 -24
  348. package/dist/integrations/session-logs/index.js +36 -39
  349. package/dist/integrations/session-logs/provider-base.js +113 -0
  350. package/dist/llm/client.js +182 -110
  351. package/dist/llm/embedders/deterministic.js +2 -2
  352. package/dist/llm/embedders/remote.js +21 -9
  353. package/dist/llm/feature-gate.js +17 -57
  354. package/dist/llm/graph-extract.js +12 -13
  355. package/dist/llm/index-passes.js +8 -42
  356. package/dist/llm/memory-infer.js +144 -1
  357. package/dist/llm/metadata-enhance.js +45 -30
  358. package/dist/llm/structured-call.js +16 -8
  359. package/dist/llm/usage-persist.js +30 -5
  360. package/dist/llm/usage-telemetry.js +59 -6
  361. package/dist/output/cli-hints.js +1 -2
  362. package/dist/output/command-registry.js +27 -0
  363. package/dist/output/context.js +22 -7
  364. package/dist/output/format-exempt.js +80 -0
  365. package/dist/output/generic-render.js +251 -0
  366. package/dist/output/html-render.js +11 -16
  367. package/dist/output/render-registry.js +57 -0
  368. package/dist/output/renderers.js +14 -279
  369. package/dist/output/shapes/curate.js +10 -1
  370. package/dist/output/shapes/events.js +12 -7
  371. package/dist/output/shapes/helpers.js +58 -84
  372. package/dist/output/shapes/passthrough.js +11 -39
  373. package/dist/output/shapes/proposal/producer.js +15 -7
  374. package/dist/output/shapes/registry.js +12 -6
  375. package/dist/output/shapes.js +0 -9
  376. package/dist/output/text/{init.js → bundle-create.js} +3 -1
  377. package/dist/output/text/bundle-show.js +7 -0
  378. package/dist/output/text/command-format.js +562 -0
  379. package/dist/output/text/env.js +1 -3
  380. package/dist/output/text/events.js +8 -7
  381. package/dist/output/text/helpers.js +15 -1164
  382. package/dist/output/text/proposal/producer.js +4 -2
  383. package/dist/output/text/proposal-format.js +202 -0
  384. package/dist/output/text/registry-commands.js +1 -2
  385. package/dist/output/text/registry.js +12 -6
  386. package/dist/output/text/show-directives.js +117 -0
  387. package/dist/output/text/show-format.js +103 -0
  388. package/dist/output/text/sync.js +5 -0
  389. package/dist/output/text/workflow-format.js +332 -0
  390. package/dist/output/text/workflow.js +3 -2
  391. package/dist/output/text.js +10 -19
  392. package/dist/registry/factory.js +4 -6
  393. package/dist/registry/origin-resolve.js +16 -27
  394. package/dist/registry/providers/skills-sh.js +3 -3
  395. package/dist/registry/providers/static-index.js +15 -25
  396. package/dist/registry/resolve.js +43 -94
  397. package/dist/registry/semver.js +43 -0
  398. package/dist/runtime.js +81 -12
  399. package/dist/scripts/akm-migrate.js +35529 -0
  400. package/dist/setup/detect.js +5 -7
  401. package/dist/setup/detected-engines.js +136 -0
  402. package/dist/setup/engine-config.js +100 -0
  403. package/dist/setup/registry-stash-loader.js +3 -3
  404. package/dist/setup/semantic-assets.js +12 -9
  405. package/dist/setup/setup.js +444 -208
  406. package/dist/setup/steps/connection-shared.js +120 -0
  407. package/dist/setup/steps/connection.js +108 -305
  408. package/dist/setup/steps/platforms.js +13 -12
  409. package/dist/setup/steps/semantic.js +15 -3
  410. package/dist/setup/steps/sources.js +21 -15
  411. package/dist/setup/steps/stashdir.js +6 -4
  412. package/dist/setup/steps/tasks.js +236 -119
  413. package/dist/setup/steps.js +3 -2
  414. package/dist/sources/freshness.js +39 -0
  415. package/dist/sources/provider-factory.js +11 -17
  416. package/dist/sources/providers/filesystem.js +2 -3
  417. package/dist/sources/providers/git-install.js +278 -34
  418. package/dist/sources/providers/git-provider.js +54 -56
  419. package/dist/sources/providers/git-stash.js +420 -91
  420. package/dist/sources/providers/git.js +2 -2
  421. package/dist/sources/providers/npm.js +16 -19
  422. package/dist/sources/providers/provider-utils.js +47 -22
  423. package/dist/sources/providers/sync-from-ref.js +3 -9
  424. package/dist/sources/providers/website.js +2 -2
  425. package/dist/sources/resolve.js +11 -10
  426. package/dist/sources/snapshot-fetchers/types.js +4 -0
  427. package/dist/sources/{website-ingest.js → snapshot-fetchers/website-ingest.js} +110 -41
  428. package/dist/storage/database.js +60 -4
  429. package/dist/storage/engines/sqlite-migrations.js +156 -5
  430. package/dist/storage/locations.js +1 -2
  431. package/dist/storage/repositories/canaries-repository.js +1 -1
  432. package/dist/storage/repositories/events-repository.js +51 -11
  433. package/dist/storage/repositories/improve-runs-repository.js +6 -32
  434. package/dist/storage/repositories/index-connection.js +79 -0
  435. package/dist/storage/repositories/index-db.js +4 -3
  436. package/dist/storage/repositories/index-entries-repository.js +863 -0
  437. package/dist/{indexer/db/entry-mapper.js → storage/repositories/index-entry-mapper.js} +19 -2
  438. package/dist/storage/repositories/index-entry-types.js +4 -0
  439. package/dist/storage/repositories/index-fts-repository.js +167 -0
  440. package/dist/storage/repositories/index-llm-cache-repository.js +108 -0
  441. package/dist/storage/repositories/index-meta-repository.js +49 -0
  442. package/dist/{indexer/db/schema.js → storage/repositories/index-schema.js} +226 -100
  443. package/dist/storage/repositories/index-sql.js +12 -0
  444. package/dist/storage/repositories/index-utility-repository.js +356 -0
  445. package/dist/storage/repositories/index-vec-repository.js +250 -0
  446. package/dist/storage/repositories/outcome-repository.js +119 -0
  447. package/dist/storage/repositories/proposals-repository.js +317 -75
  448. package/dist/storage/repositories/registry-cache.js +1 -1
  449. package/dist/storage/repositories/salience-repository.js +172 -0
  450. package/dist/storage/repositories/task-history-repository.js +110 -3
  451. package/dist/storage/repositories/workflow-runs-repository.js +240 -19
  452. package/dist/tasks/backends/cron.js +169 -46
  453. package/dist/tasks/backends/exec-utils.js +76 -3
  454. package/dist/tasks/backends/index.js +6 -9
  455. package/dist/tasks/backends/launchd.js +292 -55
  456. package/dist/tasks/backends/schtasks.js +557 -70
  457. package/dist/tasks/backends/types.js +4 -0
  458. package/dist/tasks/command-executable.js +93 -0
  459. package/dist/tasks/embedded.js +56 -38
  460. package/dist/tasks/parser.js +156 -64
  461. package/dist/tasks/resolve-akm-bin.js +144 -51
  462. package/dist/tasks/runner.js +377 -209
  463. package/dist/tasks/schedule.js +108 -19
  464. package/dist/tasks/scheduler-invocation.js +296 -0
  465. package/dist/tasks/schema.js +1 -1
  466. package/dist/tasks/task-id.js +35 -0
  467. package/dist/tasks/validator.js +30 -16
  468. package/dist/text-import-hook.mjs +1 -1
  469. package/dist/workflows/authoring/authoring.js +104 -43
  470. package/dist/workflows/authoring/scope-key.js +1 -1
  471. package/dist/workflows/cli.js +0 -16
  472. package/dist/workflows/concurrency-policy.js +15 -0
  473. package/dist/workflows/exec/brief.js +450 -0
  474. package/dist/workflows/exec/frozen-judge.js +47 -0
  475. package/dist/workflows/exec/native-executor.js +1038 -0
  476. package/dist/workflows/exec/param-secrets.js +115 -0
  477. package/dist/workflows/exec/report.js +1460 -0
  478. package/dist/workflows/exec/run-workflow.js +602 -0
  479. package/dist/workflows/exec/scheduler.js +71 -0
  480. package/dist/workflows/exec/step-work.js +1190 -0
  481. package/dist/workflows/exec/unit-writer.js +23 -0
  482. package/dist/workflows/exec/workflow-engine-gate.js +67 -0
  483. package/dist/workflows/exec/worktree.js +171 -0
  484. package/dist/workflows/ir/compile.js +246 -0
  485. package/dist/workflows/ir/freeze.js +233 -0
  486. package/dist/workflows/ir/params.js +54 -0
  487. package/dist/workflows/ir/plan-hash.js +68 -0
  488. package/dist/workflows/ir/schema.js +540 -0
  489. package/dist/workflows/parser.js +878 -304
  490. package/dist/workflows/program/expressions.js +181 -0
  491. package/dist/workflows/program/schema.js +51 -0
  492. package/dist/workflows/renderer.js +100 -45
  493. package/dist/workflows/resource-limits.js +22 -0
  494. package/dist/workflows/runtime/agent-identity.js +59 -14
  495. package/dist/workflows/runtime/checkin.js +1 -1
  496. package/dist/workflows/runtime/plan-classifier.js +131 -0
  497. package/dist/workflows/runtime/runs.js +376 -119
  498. package/dist/workflows/runtime/unit-checkin.js +45 -0
  499. package/dist/workflows/runtime/unit-phases.js +20 -0
  500. package/dist/workflows/runtime/workflow-asset-loader.js +241 -40
  501. package/dist/workflows/schema.js +1 -11
  502. package/dist/workflows/validate-summary.js +2 -3
  503. package/dist/workflows/validator.js +52 -30
  504. package/docs/README.md +42 -78
  505. package/docs/migration/README.md +8 -0
  506. package/docs/migration/release-notes/0.6.0.md +1 -1
  507. package/docs/migration/release-notes/0.7.0.md +9 -8
  508. package/docs/migration/release-notes/0.9.0.md +158 -14
  509. package/docs/migration/v0.7-to-v0.8.md +46 -47
  510. package/docs/migration/v0.8-to-v0.9.md +844 -0
  511. package/docs/reference/README.md +12 -0
  512. package/docs/reference/data-and-telemetry.md +333 -0
  513. package/package.json +21 -17
  514. package/schemas/akm-asset-envelope.json +93 -0
  515. package/schemas/akm-config.json +4636 -0
  516. package/schemas/akm-task.json +87 -0
  517. package/schemas/akm-workflow.json +373 -0
  518. package/dist/akm-migrate-storage +0 -38
  519. package/dist/assets/help/help-accept.md +0 -12
  520. package/dist/assets/help/help-improve.md +0 -84
  521. package/dist/assets/help/help-proposals.md +0 -17
  522. package/dist/assets/help/help-propose.md +0 -17
  523. package/dist/assets/help/help-reject.md +0 -11
  524. package/dist/assets/profiles/frequent.json +0 -13
  525. package/dist/assets/profiles/recombine-only.json +0 -21
  526. package/dist/assets/profiles/reflect-distill.json +0 -30
  527. package/dist/assets/profiles/synthesize.json +0 -15
  528. package/dist/assets/prompts/procedural-system.md +0 -44
  529. package/dist/assets/prompts/recombine-system.md +0 -40
  530. package/dist/assets/prompts/staleness-detect-system.md +0 -6
  531. package/dist/assets/tasks/core/backup.yml +0 -4
  532. package/dist/assets/tasks/graph-refresh-weekly.yml +0 -10
  533. package/dist/assets/templates/html/default.html +0 -78
  534. package/dist/assets/templates/html/vendor/echarts.min.js +0 -45
  535. package/dist/assets/wiki/index-template.md +0 -12
  536. package/dist/assets/wiki/ingest-workflow-template.md +0 -83
  537. package/dist/assets/wiki/log-template.md +0 -8
  538. package/dist/assets/wiki/schema-template.md +0 -61
  539. package/dist/cli/config-migrate.js +0 -150
  540. package/dist/cli/config-validate.js +0 -39
  541. package/dist/commands/graph/graph-cli.js +0 -124
  542. package/dist/commands/graph/graph.js +0 -487
  543. package/dist/commands/improve/calibration.js +0 -161
  544. package/dist/commands/improve/dedup.js +0 -482
  545. package/dist/commands/improve/extract-watch.js +0 -140
  546. package/dist/commands/improve/hot-probation.js +0 -45
  547. package/dist/commands/improve/improve-auto-accept.js +0 -276
  548. package/dist/commands/improve/improve-profiles.js +0 -168
  549. package/dist/commands/improve/procedural.js +0 -398
  550. package/dist/commands/improve/recombine.js +0 -818
  551. package/dist/commands/improve/schema-similarity-gate.js +0 -168
  552. package/dist/commands/lint/agent-linter.js +0 -44
  553. package/dist/commands/lint/command-linter.js +0 -44
  554. package/dist/commands/lint/default-linter.js +0 -16
  555. package/dist/commands/lint/fact-linter.js +0 -39
  556. package/dist/commands/lint/knowledge-linter.js +0 -16
  557. package/dist/commands/lint/memory-linter.js +0 -61
  558. package/dist/commands/lint/registry.js +0 -41
  559. package/dist/commands/lint/skill-linter.js +0 -45
  560. package/dist/commands/lint/task-linter.js +0 -50
  561. package/dist/commands/lint/workflow-linter.js +0 -81
  562. package/dist/commands/proposal/legacy-import.js +0 -115
  563. package/dist/commands/sources/history.js +0 -196
  564. package/dist/commands/tasks/default-tasks.js +0 -186
  565. package/dist/commands/wiki-cli.js +0 -292
  566. package/dist/core/asset/asset-registry.js +0 -76
  567. package/dist/core/asset/asset-spec.js +0 -259
  568. package/dist/core/config/config-migration.js +0 -602
  569. package/dist/core/deep-merge.js +0 -38
  570. package/dist/core/eval/rank-metrics.js +0 -113
  571. package/dist/core/ripgrep/install.js +0 -163
  572. package/dist/core/ripgrep/resolve.js +0 -81
  573. package/dist/indexer/db/db.js +0 -1413
  574. package/dist/indexer/manifest.js +0 -170
  575. package/dist/indexer/passes/metadata-contributors.js +0 -31
  576. package/dist/indexer/usage/unmigrated-vaults-guard.js +0 -94
  577. package/dist/integrations/harnesses/opencode-sdk/index.js +0 -49
  578. package/dist/llm/call-ai.js +0 -62
  579. package/dist/llm/memory-infer-impl.js +0 -138
  580. package/dist/output/shapes/distill.js +0 -14
  581. package/dist/output/shapes/history.js +0 -11
  582. package/dist/output/text/distill.js +0 -6
  583. package/dist/output/text/enable-disable.js +0 -8
  584. package/dist/output/text/history.js +0 -6
  585. package/dist/output/text/wiki.js +0 -16
  586. package/dist/registry/build-index.js +0 -386
  587. package/dist/scripts/migrate-storage.js +0 -19108
  588. package/dist/scripts/migrations/import-fs-improve-runs-to-db.js +0 -9411
  589. package/dist/scripts/migrations/v16-to-v17.js +0 -141
  590. package/dist/setup/legacy-config.js +0 -106
  591. package/dist/storage/repositories/consolidation-repository.js +0 -38
  592. package/dist/storage/repositories/recombine-repository.js +0 -213
  593. package/dist/wiki/wiki-templates.js +0 -15
  594. package/dist/wiki/wiki.js +0 -1012
  595. package/dist/workflows/db.js +0 -215
  596. package/docs/data-and-telemetry.md +0 -226
  597. /package/dist/sources/{wiki-fetchers → snapshot-fetchers}/registry.js +0 -0
  598. /package/dist/sources/{wiki-fetchers → snapshot-fetchers}/youtube.js +0 -0
@@ -11,11 +11,12 @@ export function shapeProposalProducerOutput(result, detail) {
11
11
  ...(result.ref !== undefined ? { ref: result.ref } : {}),
12
12
  ...(result.type !== undefined ? { type: result.type } : {}),
13
13
  ...(result.name !== undefined ? { name: result.name } : {}),
14
+ ...(result.engine !== undefined ? { engine: result.engine } : {}),
14
15
  ...(result.exitCode !== undefined ? { exitCode: result.exitCode } : {}),
15
16
  };
16
17
  if (detail === "full") {
17
18
  return {
18
- schemaVersion: result.schemaVersion ?? 1,
19
+ schemaVersion: result.schemaVersion,
19
20
  ...base,
20
21
  ...(result.stdout !== undefined ? { stdout: result.stdout } : {}),
21
22
  ...(result.stderr !== undefined ? { stderr: result.stderr } : {}),
@@ -23,16 +24,16 @@ export function shapeProposalProducerOutput(result, detail) {
23
24
  }
24
25
  return base;
25
26
  }
26
- const proposal = result.proposal ?? {};
27
+ const proposal = result.proposal;
27
28
  const base = {
28
- ok: true,
29
+ ok: result.ok,
29
30
  ref: result.ref,
30
- ...(result.agentProfile !== undefined ? { agentProfile: result.agentProfile } : {}),
31
+ ...(result.engine !== undefined ? { engine: result.engine } : {}),
31
32
  ...(typeof result.durationMs === "number" ? { durationMs: result.durationMs } : {}),
32
33
  proposal: shapeProposalEntry(proposal, detail === "brief" ? "normal" : detail),
33
34
  };
34
35
  if (detail === "full") {
35
- return { schemaVersion: result.schemaVersion ?? 1, ...base };
36
+ return { schemaVersion: result.schemaVersion, ...base };
36
37
  }
37
38
  return base;
38
39
  }
@@ -42,8 +43,7 @@ export function shapeProposalEntry(entry, detail) {
42
43
  }
43
44
  if (detail === "normal") {
44
45
  // `confidence` and `gateDecision` (#577) explain why a proposal is pending,
45
- // so they are projected at `normal` for `akm proposal list/show` — both are
46
- // optional and absent on legacy proposals.
46
+ // so they are projected at `normal` for `akm proposal list/show` when present.
47
47
  return pickFields(entry, [
48
48
  "id",
49
49
  "ref",
@@ -73,74 +73,54 @@ export function shapeProposalEntry(entry, detail) {
73
73
  ]);
74
74
  }
75
75
  export function shapeProposalListOutput(result, detail) {
76
- const proposals = Array.isArray(result.proposals) ? result.proposals : [];
76
+ const proposals = result.proposals;
77
77
  const shaped = proposals.map((p) => shapeProposalEntry(p, detail));
78
78
  const base = {
79
- totalCount: result.totalCount ?? shaped.length,
79
+ totalCount: result.totalCount,
80
80
  proposals: shaped,
81
81
  };
82
82
  if (detail === "full") {
83
- return { schemaVersion: result.schemaVersion ?? 1, ...base };
83
+ return { schemaVersion: result.schemaVersion, ...base };
84
84
  }
85
85
  return base;
86
86
  }
87
87
  export function shapeProposalShowOutput(result, detail) {
88
- const proposal = result.proposal ?? {};
88
+ const proposal = result.proposal;
89
89
  const validation = result.validation;
90
90
  const base = {
91
91
  proposal: shapeProposalEntry(proposal, detail === "brief" ? "normal" : detail),
92
92
  ...(validation ? { validation } : {}),
93
93
  };
94
94
  if (detail === "full") {
95
- return { schemaVersion: result.schemaVersion ?? 1, ...base };
95
+ return { schemaVersion: result.schemaVersion, ...base };
96
96
  }
97
97
  return base;
98
98
  }
99
99
  export function shapeProposalAcceptOutput(result, detail) {
100
- const proposal = result.proposal ?? {};
100
+ const proposal = result.proposal;
101
101
  const base = {
102
- ok: result.ok ?? true,
102
+ ok: result.ok,
103
103
  id: result.id,
104
104
  ref: result.ref,
105
105
  assetPath: result.assetPath,
106
106
  proposal: shapeProposalEntry(proposal, detail === "brief" ? "normal" : detail),
107
107
  };
108
108
  if (detail === "full") {
109
- return { schemaVersion: result.schemaVersion ?? 1, ...base };
109
+ return { schemaVersion: result.schemaVersion, ...base };
110
110
  }
111
111
  return base;
112
112
  }
113
113
  export function shapeProposalRejectOutput(result, detail) {
114
- const proposal = result.proposal ?? {};
114
+ const proposal = result.proposal;
115
115
  const base = {
116
- ok: result.ok ?? true,
116
+ ok: result.ok,
117
117
  id: result.id,
118
118
  ref: result.ref,
119
119
  ...(result.reason !== undefined ? { reason: result.reason } : {}),
120
120
  proposal: shapeProposalEntry(proposal, detail === "brief" ? "normal" : detail),
121
121
  };
122
122
  if (detail === "full") {
123
- return { schemaVersion: result.schemaVersion ?? 1, ...base };
124
- }
125
- return base;
126
- }
127
- export function shapeDistillOutput(result, detail) {
128
- const proposal = result.proposal;
129
- if (detail === "brief") {
130
- return pickFields(result, ["ok", "outcome", "inputRef", "lessonRef", "proposalId", "message"]);
131
- }
132
- const base = {
133
- ok: result.ok ?? true,
134
- outcome: result.outcome,
135
- inputRef: result.inputRef,
136
- lessonRef: result.lessonRef,
137
- ...(result.proposalId !== undefined ? { proposalId: result.proposalId } : {}),
138
- ...(result.message !== undefined ? { message: result.message } : {}),
139
- ...(Array.isArray(result.findings) && result.findings.length > 0 ? { findings: result.findings } : {}),
140
- ...(proposal ? { proposal: shapeProposalEntry(proposal, detail) } : {}),
141
- };
142
- if (detail === "full") {
143
- return { schemaVersion: result.schemaVersion ?? 1, ...base };
123
+ return { schemaVersion: result.schemaVersion, ...base };
144
124
  }
145
125
  return base;
146
126
  }
@@ -153,7 +133,7 @@ export function shapeProposalDiffOutput(result, detail) {
153
133
  ...(result.targetPath !== undefined ? { targetPath: result.targetPath } : {}),
154
134
  };
155
135
  if (detail === "full") {
156
- return { schemaVersion: result.schemaVersion ?? 1, ...base };
136
+ return { schemaVersion: result.schemaVersion, ...base };
157
137
  }
158
138
  return base;
159
139
  }
@@ -163,8 +143,14 @@ export function shapeEventsOutput(result, detail) {
163
143
  const base = {
164
144
  ...(result.ref !== undefined ? { ref: result.ref } : {}),
165
145
  ...(result.type !== undefined ? { type: result.type } : {}),
146
+ ...(result.run !== undefined ? { run: result.run } : {}),
166
147
  ...(result.since !== undefined ? { since: result.since } : {}),
167
148
  ...(typeof result.sinceOffset === "number" ? { sinceOffset: result.sinceOffset } : {}),
149
+ // D-38: echo `--limit` through the shaped envelope too — `akmEventsList`
150
+ // already conditionally includes it in its raw result (see
151
+ // src/commands/events.ts) only when the caller passed it, so this mirrors
152
+ // that same "present only if requested" convention.
153
+ ...(typeof result.limit === "number" ? { limit: result.limit } : {}),
168
154
  totalCount: result.totalCount ?? shapedEvents.length,
169
155
  events: shapedEvents,
170
156
  };
@@ -189,45 +175,6 @@ export function shapeEventEntry(entry, detail) {
189
175
  // full: project everything the reader emits.
190
176
  return pickFields(entry, ["id", "schemaVersion", "eventType", "ref", "ts", "metadata"]);
191
177
  }
192
- export function shapeHistoryOutput(result, detail) {
193
- const entries = Array.isArray(result.entries) ? result.entries : [];
194
- const shapedEntries = entries.map((entry) => shapeHistoryEntry(entry, detail));
195
- if (detail === "full") {
196
- return {
197
- schemaVersion: result.schemaVersion ?? 1,
198
- ...(result.ref !== undefined ? { ref: result.ref } : {}),
199
- ...(result.since !== undefined ? { since: result.since } : {}),
200
- totalCount: result.totalCount ?? shapedEntries.length,
201
- entries: shapedEntries,
202
- // `sources` lists the event sources included in this response.
203
- // Always contains "usage_events"; also "events.jsonl" when
204
- // --include-proposals was specified.
205
- ...(Array.isArray(result.sources) ? { sources: result.sources } : {}),
206
- ...(Array.isArray(result.warnings) && result.warnings.length > 0 ? { warnings: result.warnings } : {}),
207
- };
208
- }
209
- return {
210
- ...(result.ref !== undefined ? { ref: result.ref } : {}),
211
- ...(result.since !== undefined ? { since: result.since } : {}),
212
- totalCount: result.totalCount ?? shapedEntries.length,
213
- entries: shapedEntries,
214
- ...(Array.isArray(result.sources) ? { sources: result.sources } : {}),
215
- ...(Array.isArray(result.warnings) && result.warnings.length > 0 ? { warnings: result.warnings } : {}),
216
- };
217
- }
218
- export function shapeHistoryEntry(entry, detail) {
219
- if (detail === "brief") {
220
- // signal is load-bearing for feedback rows (positive/negative) so we
221
- // project it even at brief — without it the entry is ambiguous.
222
- // source lets callers verify filter correctness (e.g. --source user).
223
- return pickFields(entry, ["eventType", "ref", "signal", "source", "createdAt"]);
224
- }
225
- if (detail === "normal") {
226
- return pickFields(entry, ["eventType", "ref", "signal", "source", "query", "createdAt"]);
227
- }
228
- // full: return everything the reader emits.
229
- return pickFields(entry, ["id", "eventType", "ref", "entryId", "query", "signal", "source", "metadata", "createdAt"]);
230
- }
231
178
  export function shapeSearchOutput(result, detail, shape = "human") {
232
179
  const forAgent = shape === "agent";
233
180
  const hits = Array.isArray(result.hits) ? result.hits : [];
@@ -248,11 +195,10 @@ export function shapeSearchOutput(result, detail, shape = "human") {
248
195
  if (detail === "full") {
249
196
  return {
250
197
  schemaVersion: result.schemaVersion,
251
- stashDir: result.stashDir,
198
+ bundleDir: result.bundleDir,
252
199
  source: result.source,
253
200
  hits: shapedHits,
254
201
  ...(shapedRegistryHits.length > 0 ? { registryHits: shapedRegistryHits } : {}),
255
- ...(result.semanticSearch ? { semanticSearch: result.semanticSearch } : {}),
256
202
  ...(result.tip ? { tip: result.tip } : {}),
257
203
  ...(result.warnings ? { warnings: result.warnings } : {}),
258
204
  ...(result.timing ? { timing: result.timing } : {}),
@@ -330,7 +276,21 @@ export function shapeSearchHit(hit, detail) {
330
276
  }
331
277
  /** Agent-optimized search hit: only fields an LLM agent needs to decide and act */
332
278
  export function shapeSearchHitForAgent(hit) {
333
- const picked = pickFields(hit, ["name", "ref", "type", "description", "action", "score", "estimatedTokens", "keys"]);
279
+ const picked = pickFields(hit, [
280
+ "name",
281
+ "ref",
282
+ "type",
283
+ "path",
284
+ "editable",
285
+ "editHint",
286
+ "description",
287
+ "action",
288
+ "score",
289
+ "estimatedTokens",
290
+ "keys",
291
+ ]);
292
+ if (picked.editable !== false)
293
+ delete picked.editHint;
334
294
  return capDescription(picked, NORMAL_DESCRIPTION_LIMIT);
335
295
  }
336
296
  export function capDescription(hit, limit) {
@@ -349,9 +309,13 @@ export function truncateDescription(description, limit) {
349
309
  }
350
310
  export function shapeShowOutput(result, detail, shape = "human") {
351
311
  if (shape === "agent") {
352
- return pickFields(result, [
312
+ const shaped = pickFields(result, [
353
313
  "type",
354
314
  "name",
315
+ "ref",
316
+ "path",
317
+ "editable",
318
+ "editHint",
355
319
  "description",
356
320
  "action",
357
321
  "content",
@@ -371,11 +335,18 @@ export function shapeShowOutput(result, detail, shape = "human") {
371
335
  "keys",
372
336
  "related",
373
337
  ]);
338
+ if (shaped.editable !== false)
339
+ delete shaped.editHint;
340
+ return shaped;
374
341
  }
375
342
  if (shape === "summary") {
376
343
  return pickFields(result, [
377
344
  "type",
378
345
  "name",
346
+ // ref is present on every show shape (human/summary/agent) — it is the
347
+ // canonical identity of the asset, not an agent-only convenience field
348
+ // (R-020).
349
+ "ref",
379
350
  "description",
380
351
  "tags",
381
352
  "parameters",
@@ -390,6 +361,8 @@ export function shapeShowOutput(result, detail, shape = "human") {
390
361
  const base = pickFields(result, [
391
362
  "type",
392
363
  "name",
364
+ // ref is always projected, same as path/editable below (R-020).
365
+ "ref",
393
366
  "origin",
394
367
  "action",
395
368
  "description",
@@ -410,8 +383,9 @@ export function shapeShowOutput(result, detail, shape = "human") {
410
383
  "activeRun",
411
384
  "keys",
412
385
  "related",
413
- // path and editable are always projected so JSON consumers can locate and
414
- // edit the asset without needing --detail full (QA #7).
386
+ // ref, path, and editable are always projected — at every --detail level,
387
+ // not just --detail full — so JSON consumers can locate and edit the
388
+ // asset without needing --detail full (QA #7 / D-14).
415
389
  "path",
416
390
  "editable",
417
391
  ]);
@@ -21,33 +21,20 @@ function makeStampHandler(command) {
21
21
  const PASSTHROUGH_COMMANDS = [
22
22
  "add",
23
23
  "agent-result",
24
+ "bundle-create",
25
+ "bundle-show",
24
26
  "clone",
25
27
  "config",
26
- "disable",
27
- "enable",
28
28
  "env-create",
29
29
  "env-export",
30
30
  "env-remove",
31
- "env-set",
32
- "env-unset",
33
31
  "feedback",
34
- "graph-entities",
35
- "graph-entity",
36
- "graph-export",
37
- "graph-orphans",
38
- "graph-related",
39
- "graph-relations",
40
- "graph-summary",
41
- "graph-update",
42
32
  "extract",
43
33
  "health",
44
34
  "improve",
45
- "improve-canary",
46
- "lessons-coverage",
47
35
  "import",
48
36
  "index",
49
37
  "info",
50
- "init",
51
38
  "lint",
52
39
  "list",
53
40
  "proposal-accept-batch",
@@ -55,47 +42,32 @@ const PASSTHROUGH_COMMANDS = [
55
42
  "proposal-reject-batch",
56
43
  "proposal-revert",
57
44
  "registry-add",
58
- "registry-build-index",
59
45
  "registry-list",
60
46
  "registry-remove",
61
47
  "remember",
62
48
  "remove",
63
- "save",
64
49
  "secret-set",
65
- "secret-remove",
66
50
  "setup",
67
- "tasks-add",
68
- "tasks-disable",
69
- "tasks-doctor",
70
- "tasks-enable",
71
- "tasks-history",
72
- "tasks-init",
73
- "tasks-list",
74
- "tasks-remove",
75
- "tasks-run",
76
- "tasks-show",
77
- "tasks-sync",
51
+ "sync",
52
+ "task-add",
53
+ "task-doctor",
54
+ "task-history",
55
+ "task-run",
56
+ "task-sync",
78
57
  "update",
79
58
  "upgrade",
80
- "wiki-create",
81
- "wiki-ingest",
82
- "wiki-lint",
83
- "wiki-list",
84
- "wiki-pages",
85
- "wiki-register",
86
- "wiki-remove",
87
- "wiki-show",
88
- "wiki-stash",
89
59
  "workflow-abandon",
60
+ "workflow-brief",
90
61
  "workflow-complete",
91
62
  "workflow-complete-rejected",
92
63
  "workflow-create",
93
64
  "workflow-list",
94
65
  "workflow-next",
66
+ "workflow-report",
95
67
  "workflow-resume",
68
+ "workflow-run",
96
69
  "workflow-start",
97
70
  "workflow-status",
98
- "workflow-validate",
99
71
  ];
100
72
  export const passthroughShapes = PASSTHROUGH_COMMANDS.map((command) => ({
101
73
  command,
@@ -1,12 +1,20 @@
1
1
  // This Source Code Form is subject to the terms of the Mozilla Public
2
2
  // License, v. 2.0. If a copy of the MPL was not distributed with this
3
3
  // file, You can obtain one at https://mozilla.org/MPL/2.0/.
4
- // Output shape registration for `akm reflect` and `akm propose` (#226).
5
- // Both share the proposal-producer envelope shape (success carries a proposal
6
- // entry; failure carries an AgentFailureReason discriminant).
4
+ // Output shape registration for `akm proposal new` (#226; formerly the
5
+ // top-level `akm propose`, moved under `proposal` in the 0.9 CLI overhaul, S8).
6
+ // Shares the proposal-producer envelope shape (success carries a proposal
7
+ // entry; failure carries an AgentFailureReason discriminant) with the
8
+ // internal `akmReflect` result shape — but `reflect` has no standalone CLI
9
+ // verb and never reaches the output() chokepoint (reflect.ts is called
10
+ // directly by the improve loop, not through this registry), so only
11
+ // `proposal new` is registered here.
12
+ //
13
+ // Deliberately phrased WITHOUT the literal call spelling: the registry
14
+ // completeness scanner (tests/integration/output-shape-registry-completeness.ts)
15
+ // greps sources for that exact pattern to find commands needing a shape, and
16
+ // it does not skip comments — so writing the spelling here to explain the
17
+ // absence would re-summon the very registration this comment says is gone.
7
18
  import { shapeProposalProducerOutput } from "../helpers.js";
8
19
  const handler = (result, detail) => shapeProposalProducerOutput(result, detail);
9
- export const proposalProducerShapes = [
10
- { command: "reflect", handler },
11
- { command: "propose", handler },
12
- ];
20
+ export const proposalProducerShapes = [{ command: "proposal-new", handler }];
@@ -1,7 +1,15 @@
1
1
  // This Source Code Form is subject to the terms of the Mozilla Public
2
2
  // License, v. 2.0. If a copy of the MPL was not distributed with this
3
3
  // file, You can obtain one at https://mozilla.org/MPL/2.0/.
4
- const OUTPUT_SHAPE_REGISTRY = new Map();
4
+ /**
5
+ * Output shape registry.
6
+ *
7
+ * Separated from `shapes.ts` so per-command shape modules can import
8
+ * `registerOutputShape` without creating a circular dependency back into
9
+ * the main shapes module.
10
+ */
11
+ import { createCommandRegistry } from "../command-registry.js";
12
+ const OUTPUT_SHAPE_REGISTRY = createCommandRegistry();
5
13
  /**
6
14
  * Register an output shape handler for a command name.
7
15
  *
@@ -13,7 +21,7 @@ const OUTPUT_SHAPE_REGISTRY = new Map();
13
21
  * ```
14
22
  */
15
23
  export function registerOutputShape(command, handler) {
16
- OUTPUT_SHAPE_REGISTRY.set(command, handler);
24
+ OUTPUT_SHAPE_REGISTRY.register(command, handler);
17
25
  }
18
26
  /**
19
27
  * Register a batch of {@link OutputShapeEntry} definitions in iteration order.
@@ -23,15 +31,13 @@ export function registerOutputShape(command, handler) {
23
31
  * with no reliance on module import order.
24
32
  */
25
33
  export function registerOutputShapes(entries) {
26
- for (const { command, handler } of entries) {
27
- OUTPUT_SHAPE_REGISTRY.set(command, handler);
28
- }
34
+ OUTPUT_SHAPE_REGISTRY.registerAll(entries);
29
35
  }
30
36
  /**
31
37
  * Remove a previously-registered output shape. Test-only utility.
32
38
  */
33
39
  export function deregisterOutputShape(command) {
34
- OUTPUT_SHAPE_REGISTRY.delete(command);
40
+ OUTPUT_SHAPE_REGISTRY.deregister(command);
35
41
  }
36
42
  /**
37
43
  * Look up a registered output shape handler by command name.
@@ -19,10 +19,8 @@
19
19
  */
20
20
  import { UsageError } from "../core/errors.js";
21
21
  import { curateShapes } from "./shapes/curate.js";
22
- import { distillShapes } from "./shapes/distill.js";
23
22
  import { envListShapes } from "./shapes/env-list.js";
24
23
  import { eventsShapes } from "./shapes/events.js";
25
- import { historyShapes } from "./shapes/history.js";
26
24
  import { passthroughShapes } from "./shapes/passthrough.js";
27
25
  import { proposalAcceptShapes } from "./shapes/proposal/accept.js";
28
26
  import { proposalDiffShapes } from "./shapes/proposal/diff.js";
@@ -35,11 +33,6 @@ import { registrySearchShapes } from "./shapes/registry-search.js";
35
33
  import { searchShapes } from "./shapes/search.js";
36
34
  import { secretListShapes } from "./shapes/secret-list.js";
37
35
  import { showShapes } from "./shapes/show.js";
38
- // Re-export helpers so existing imports from `shapes.ts` keep working.
39
- export { capDescription, NORMAL_DESCRIPTION_LIMIT, pickFields, shapeAssetHit, shapeDistillOutput, shapeEventEntry, shapeEventsOutput, shapeHistoryEntry, shapeHistoryOutput, shapeProposalAcceptOutput, shapeProposalDiffOutput, shapeProposalEntry, shapeProposalListOutput, shapeProposalProducerOutput, shapeProposalRejectOutput, shapeProposalShowOutput, shapeRegistrySearchOutput, shapeSearchHit, shapeSearchHitForAgent, shapeSearchOutput, shapeShowOutput, truncateDescription, } from "./shapes/helpers.js";
40
- // Re-export registry API so callers can use this module as the single entry
41
- // point (backward compat).
42
- export { deregisterOutputShape, registerOutputShape } from "./shapes/registry.js";
43
36
  // ── Explicit built-in shape assembly ──────────────────────────────────────────
44
37
  // Each entry below is a pure exported `OutputShapeEntry[]` from a per-command
45
38
  // module. The set is registered ONCE, deterministically, with no reliance on
@@ -51,7 +44,6 @@ const BUILT_IN_OUTPUT_SHAPES = [
51
44
  ...curateShapes,
52
45
  ...registrySearchShapes,
53
46
  ...showShapes,
54
- ...historyShapes,
55
47
  ...eventsShapes,
56
48
  ...proposalListShapes,
57
49
  ...proposalShowShapes,
@@ -59,7 +51,6 @@ const BUILT_IN_OUTPUT_SHAPES = [
59
51
  ...proposalRejectShapes,
60
52
  ...proposalDiffShapes,
61
53
  ...proposalProducerShapes,
62
- ...distillShapes,
63
54
  ...envListShapes,
64
55
  ...secretListShapes,
65
56
  // Passthrough commands are registered last so an explicit dedicated handler
@@ -2,4 +2,6 @@
2
2
  // License, v. 2.0. If a copy of the MPL was not distributed with this
3
3
  // file, You can obtain one at https://mozilla.org/MPL/2.0/.
4
4
  import { formatInitPlain } from "./helpers.js";
5
- export const initFormatters = [{ command: "init", handler: (r) => formatInitPlain(r) }];
5
+ export const bundleCreateFormatters = [
6
+ { command: "bundle-create", handler: (r) => formatInitPlain(r) },
7
+ ];
@@ -0,0 +1,7 @@
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
+ import { formatBundleShowPlain } from "./helpers.js";
5
+ export const bundleShowFormatters = [
6
+ { command: "bundle-show", handler: (r) => formatBundleShowPlain(r) },
7
+ ];