akm-cli 0.9.16 → 0.9.17-alpha.10

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 (403) hide show
  1. package/CHANGELOG.md +2101 -0
  2. package/STABILITY.md +11 -10
  3. package/dist/akm +124 -193
  4. package/dist/akm-migrate +38 -19
  5. package/dist/assets/hints/cli-hints-full.md +6 -7
  6. package/dist/assets/improve-strategies/catchup.json +0 -3
  7. package/dist/assets/improve-strategies/consolidate.json +0 -1
  8. package/dist/assets/improve-strategies/default.json +1 -2
  9. package/dist/assets/improve-strategies/proactive-maintenance.json +1 -2
  10. package/dist/assets/improve-strategies/quick.json +1 -2
  11. package/dist/assets/improve-strategies/reflect-distill.json +1 -2
  12. package/dist/assets/improve-strategies/thorough.json +0 -3
  13. package/dist/assets/prompts/consolidate-pair.md +20 -0
  14. package/dist/assets/prompts/consolidate-system.md +4 -11
  15. package/dist/assets/prompts/retrieval-relevance-judge.md +6 -0
  16. package/dist/assets/stash-skeleton/facts/conventions/backlinks.md +20 -20
  17. package/dist/assets/stash-skeleton/facts/conventions/domains.md +2 -2
  18. package/dist/assets/templates/html/health.html +3 -5
  19. package/dist/cli/retired-commands.js +1 -1
  20. package/dist/cli/shared.js +6 -2
  21. package/dist/cli/unknown-flags.js +24 -1
  22. package/dist/cli.js +68 -10
  23. package/dist/commands/agent/agent-dispatch.js +1 -1
  24. package/dist/commands/command/command-execution.js +24 -62
  25. package/dist/commands/feedback-cli.js +0 -1
  26. package/dist/commands/health/accept-rate.js +6 -0
  27. package/dist/commands/health/archive-usage.js +92 -0
  28. package/dist/commands/health/checks.js +83 -74
  29. package/dist/commands/health/config-skew.js +38 -0
  30. package/dist/commands/health/data-dir-usage.js +25 -13
  31. package/dist/commands/health/egress.js +54 -0
  32. package/dist/commands/health/html-report.js +1 -42
  33. package/dist/commands/health/improve-metrics.js +136 -591
  34. package/dist/commands/health/md-report.js +1 -6
  35. package/dist/commands/health/plugin-staleness.js +53 -3
  36. package/dist/commands/health/renderers.js +12 -4
  37. package/dist/commands/health/report-view-model.js +14 -120
  38. package/dist/commands/health/types-improve.js +4 -19
  39. package/dist/commands/health/windows.js +64 -74
  40. package/dist/commands/health.js +145 -143
  41. package/dist/commands/improve/consolidate/chunking.js +26 -117
  42. package/dist/commands/improve/consolidate/continuity-check.js +137 -0
  43. package/dist/commands/improve/consolidate/pair-pass.js +791 -0
  44. package/dist/commands/improve/consolidate/sanitize.js +54 -149
  45. package/dist/commands/improve/consolidate.js +589 -1127
  46. package/dist/commands/improve/content-hash.js +16 -24
  47. package/dist/commands/improve/distill/content-repair.js +18 -100
  48. package/dist/commands/improve/distill-guards.js +20 -81
  49. package/dist/commands/improve/distill-promotion-policy.js +23 -243
  50. package/dist/commands/improve/distill.js +608 -1041
  51. package/dist/commands/improve/eligibility.js +126 -390
  52. package/dist/commands/improve/execution.js +8 -10
  53. package/dist/commands/improve/extract-prompt.js +1 -2
  54. package/dist/commands/improve/extract.js +487 -1046
  55. package/dist/commands/improve/feedback-valence.js +0 -25
  56. package/dist/commands/improve/improve-cli.js +75 -169
  57. package/dist/commands/improve/improve-result-file.js +10 -66
  58. package/dist/commands/improve/improve-strategies.js +52 -4
  59. package/dist/commands/improve/improve-usage-report.js +18 -64
  60. package/dist/commands/improve/improve.js +480 -1074
  61. package/dist/commands/improve/ledger.js +119 -0
  62. package/dist/commands/improve/locks.js +2 -8
  63. package/dist/commands/improve/loop-stages.js +415 -1073
  64. package/dist/commands/improve/memory/derived-ref.js +12 -77
  65. package/dist/commands/improve/memory/memory-belief.js +16 -118
  66. package/dist/commands/improve/memory/memory-improve.js +266 -14
  67. package/dist/commands/improve/outcome-loop.js +28 -156
  68. package/dist/commands/improve/planner.js +5 -15
  69. package/dist/commands/improve/preparation.js +779 -2319
  70. package/dist/commands/improve/proactive-maintenance.js +34 -101
  71. package/dist/commands/improve/reflect-noise.js +104 -280
  72. package/dist/commands/improve/reflect.js +642 -1353
  73. package/dist/commands/improve/retrieval-gate.js +127 -0
  74. package/dist/commands/improve/retrieval-scope.js +92 -0
  75. package/dist/commands/improve/salience.js +41 -240
  76. package/dist/commands/improve/session-asset.js +19 -100
  77. package/dist/commands/improve/stage.js +322 -0
  78. package/dist/commands/lint/base-linter.js +37 -15
  79. package/dist/commands/proposal/drain.js +261 -578
  80. package/dist/commands/proposal/proposal-cli.js +19 -20
  81. package/dist/commands/proposal/proposal-types.js +31 -24
  82. package/dist/commands/proposal/proposal.js +38 -8
  83. package/dist/commands/proposal/propose.js +134 -160
  84. package/dist/commands/proposal/repository.js +1097 -1394
  85. package/dist/commands/proposal/validators/proposal-quality-validators.js +71 -174
  86. package/dist/commands/proposal/validators/proposal-validators.js +1 -1
  87. package/dist/commands/proposal/validators/proposals.js +22 -89
  88. package/dist/commands/read/curate.js +105 -462
  89. package/dist/commands/read/knowledge.js +3 -2
  90. package/dist/commands/read/search-cli.js +16 -33
  91. package/dist/commands/read/search.js +17 -23
  92. package/dist/commands/read/show.js +57 -108
  93. package/dist/commands/sources/bundle-cli.js +25 -2
  94. package/dist/commands/sources/bundle-config-ops.js +4 -0
  95. package/dist/commands/sources/dangerous-env-audit.js +1 -2
  96. package/dist/commands/sources/info.js +127 -29
  97. package/dist/commands/sources/installed-stashes.js +197 -746
  98. package/dist/commands/sources/schema-repair.js +98 -129
  99. package/dist/commands/sources/source-add.js +62 -12
  100. package/dist/commands/sources/source-manage.js +9 -2
  101. package/dist/commands/sources/stash-cli.js +24 -4
  102. package/dist/commands/tasks/explain.js +10 -13
  103. package/dist/commands/tasks/tasks-cli.js +12 -13
  104. package/dist/commands/tasks/tasks.js +350 -936
  105. package/dist/commands/tasks/validate.js +26 -24
  106. package/dist/commands/workflow/plan.js +22 -29
  107. package/dist/commands/workflow-cli.js +4 -4
  108. package/dist/core/adapter/adapters/akm-adapter.js +2 -1
  109. package/dist/core/adapter/adapters/akm-lint.js +2 -3
  110. package/dist/core/adapter/adapters/akm-metadata.js +42 -12
  111. package/dist/core/adapter/adapters/akm-task-adapter.js +29 -8
  112. package/dist/core/adapter/adapters/akm-workflow-adapter.js +1 -1
  113. package/dist/core/adapter/execution-source.js +17 -29
  114. package/dist/core/asset/asset-placement.js +4 -13
  115. package/dist/core/asset/frontmatter.js +106 -1
  116. package/dist/core/asset/resolve-ref.js +1 -1
  117. package/dist/core/bundle-id.js +42 -5
  118. package/dist/core/bundle-rename.js +285 -0
  119. package/dist/core/config/config-io.js +1 -2
  120. package/dist/core/config/config-schema.js +9 -34
  121. package/dist/core/config/config-walker.js +1 -1
  122. package/dist/core/config/config.js +184 -111
  123. package/dist/core/config/engine-semantics.js +0 -2
  124. package/dist/core/config/legacy-source-shape-shim.js +38 -9
  125. package/dist/core/config/schema/embedding.js +20 -5
  126. package/dist/core/config/schema/engines.js +5 -0
  127. package/dist/core/config/schema/execution.js +1 -1
  128. package/dist/core/config/schema/experimental.js +1 -1
  129. package/dist/core/config/schema/improve-processes.js +54 -125
  130. package/dist/core/config/schema/improve.js +4 -42
  131. package/dist/core/config/schema/index-config.js +9 -48
  132. package/dist/core/config/schema/scheduler.js +12 -12
  133. package/dist/core/config/schema/search.js +6 -22
  134. package/dist/core/env-secret-ref.js +0 -1
  135. package/dist/core/errors.js +8 -9
  136. package/dist/core/file-change.js +13 -5
  137. package/dist/core/file-lock.js +76 -173
  138. package/dist/core/improve-result.js +35 -7
  139. package/dist/core/improve-types.js +0 -1
  140. package/dist/core/logs-db.js +2 -2
  141. package/dist/core/loopback.js +7 -12
  142. package/dist/core/non-task-input.js +20 -0
  143. package/dist/core/parse.js +13 -16
  144. package/dist/core/paths.js +0 -24
  145. package/dist/core/redaction.js +109 -2
  146. package/dist/core/run-lock.js +2 -5
  147. package/dist/core/spawn-env.js +1 -1
  148. package/dist/core/state/migrations.js +123 -61
  149. package/dist/core/state-db-scope.js +2 -4
  150. package/dist/core/state-db.js +126 -692
  151. package/dist/core/time.js +0 -20
  152. package/dist/core/type-presentation.js +1 -9
  153. package/dist/core/write-source.js +294 -1005
  154. package/dist/execution/input-contract.js +1 -1
  155. package/dist/execution/resolved-request.js +135 -689
  156. package/dist/execution/source.js +63 -257
  157. package/dist/execution/target-ref.js +1 -1
  158. package/dist/indexer/bundle-identity-guard.js +2 -2
  159. package/dist/indexer/db/llm-cache.js +2 -2
  160. package/dist/indexer/ensure-index.js +77 -73
  161. package/dist/indexer/index-rebuild-lock.js +3 -11
  162. package/dist/indexer/index-writer-lock.js +8 -17
  163. package/dist/indexer/index-written-assets.js +141 -154
  164. package/dist/indexer/indexer.js +400 -1124
  165. package/dist/indexer/links/declared-links.js +90 -0
  166. package/dist/indexer/materialize-embeddings.js +60 -397
  167. package/dist/indexer/passes/memory-inference.js +96 -90
  168. package/dist/indexer/passes/metadata.js +132 -219
  169. package/dist/indexer/read-preflight.js +0 -7
  170. package/dist/indexer/scan/doc-to-entry.js +2 -3
  171. package/dist/indexer/scan/drain-dir.js +1 -1
  172. package/dist/indexer/search/db-search.js +190 -590
  173. package/dist/indexer/search/fts-query.js +30 -41
  174. package/dist/indexer/search/ranking.js +28 -154
  175. package/dist/indexer/search/search-attribution.js +12 -32
  176. package/dist/indexer/search/search-fields.js +11 -15
  177. package/dist/indexer/search/search-hit-enrichers.js +54 -85
  178. package/dist/indexer/search/search-source.js +1 -4
  179. package/dist/indexer/usage/usage-events.js +36 -7
  180. package/dist/indexer/walk/walker.js +3 -4
  181. package/dist/integrations/agent/engine-fallback.js +23 -40
  182. package/dist/integrations/agent/engine-resolution.js +93 -183
  183. package/dist/integrations/agent/execution.js +507 -0
  184. package/dist/integrations/agent/model-map.js +28 -156
  185. package/dist/integrations/agent/request-lowering.js +66 -141
  186. package/dist/integrations/agent/runner-dispatch.js +143 -321
  187. package/dist/integrations/agent/runner.js +54 -14
  188. package/dist/integrations/lockfile.js +53 -101
  189. package/dist/llm/client.js +18 -6
  190. package/dist/llm/embedders/deterministic.js +2 -3
  191. package/dist/llm/embedders/profile.js +71 -0
  192. package/dist/llm/embedders/remote.js +11 -17
  193. package/dist/llm/feature-gate.js +0 -8
  194. package/dist/llm/index-passes.js +3 -5
  195. package/dist/llm/memory-infer.js +1 -2
  196. package/dist/llm/structured-call.js +5 -24
  197. package/dist/output/generic-render.js +23 -11
  198. package/dist/output/html-render.js +13 -10
  199. package/dist/output/render-registry.js +3 -32
  200. package/dist/output/shapes/helpers.js +25 -38
  201. package/dist/output/shapes/passthrough.js +1 -9
  202. package/dist/{indexer/graph/graph-types.js → output/text/bundle-rename.js} +4 -1
  203. package/dist/output/text/command-format.js +69 -31
  204. package/dist/output/text/helpers.js +1 -1
  205. package/dist/output/text/migrate.js +5 -14
  206. package/dist/output/text/proposal-format.js +48 -3
  207. package/dist/output/text/show-format.js +13 -17
  208. package/dist/output/text/workflow-format.js +0 -32
  209. package/dist/output/text.js +2 -0
  210. package/dist/registry/factory.js +4 -19
  211. package/dist/registry/network.js +66 -220
  212. package/dist/registry/providers/index.js +0 -2
  213. package/dist/registry/providers/skills-sh.js +3 -14
  214. package/dist/registry/providers/static-index.js +24 -26
  215. package/dist/registry/resolve.js +55 -131
  216. package/dist/scripts/akm-migrate-node.js +42948 -92369
  217. package/dist/scripts/akm-migrate.js +42935 -92354
  218. package/dist/setup/registry-stash-loader.js +4 -13
  219. package/dist/setup/semantic-assets.js +3 -44
  220. package/dist/setup/setup.js +1 -1
  221. package/dist/setup/steps/connection.js +5 -6
  222. package/dist/setup/steps/platforms.js +2 -2
  223. package/dist/setup/steps/tasks.js +25 -15
  224. package/dist/sources/provider-factory.js +17 -18
  225. package/dist/sources/providers/filesystem.js +2 -3
  226. package/dist/sources/providers/git-install.js +7 -1
  227. package/dist/sources/providers/git-provider.js +0 -3
  228. package/dist/sources/providers/git-stash.js +83 -21
  229. package/dist/sources/providers/npm.js +2 -4
  230. package/dist/sources/providers/provider-utils.js +5 -10
  231. package/dist/sources/providers/website.js +0 -2
  232. package/dist/sources/snapshot-fetchers/website-ingest.js +1 -1
  233. package/dist/sources/website-url.js +2 -2
  234. package/dist/storage/database.js +9 -35
  235. package/dist/storage/repositories/improve-ledger-repository.js +209 -0
  236. package/dist/storage/repositories/index-connection.js +39 -72
  237. package/dist/storage/repositories/index-entries-repository.js +131 -129
  238. package/dist/storage/repositories/index-entry-mapper.js +1 -2
  239. package/dist/storage/repositories/index-entry-schema.js +101 -268
  240. package/dist/storage/repositories/index-fts-repository.js +86 -256
  241. package/dist/storage/repositories/index-links-repository.js +143 -0
  242. package/dist/storage/repositories/index-llm-cache-repository.js +7 -9
  243. package/dist/storage/repositories/index-meta-repository.js +6 -4
  244. package/dist/storage/repositories/index-schema.js +257 -325
  245. package/dist/storage/repositories/index-utility-repository.js +8 -29
  246. package/dist/storage/repositories/index-vec-repository.js +133 -414
  247. package/dist/storage/repositories/outcome-repository.js +2 -1
  248. package/dist/storage/repositories/proposals-repository.js +104 -1
  249. package/dist/storage/repositories/registry-index-cache-repository.js +100 -0
  250. package/dist/storage/repositories/salience-repository.js +1 -19
  251. package/dist/storage/repositories/task-history-repository.js +26 -4
  252. package/dist/storage/repositories/workflow-runs-repository.js +53 -244
  253. package/dist/storage/sqlite-migrations.js +136 -0
  254. package/dist/storage/sqlite-pragmas.js +11 -9
  255. package/dist/storage/sqlite-transaction.js +170 -0
  256. package/dist/storage/state-db-integrity.js +130 -0
  257. package/dist/tasks/activation-config.js +134 -62
  258. package/dist/tasks/backends/cron.js +191 -302
  259. package/dist/tasks/backends/exec-utils.js +2 -5
  260. package/dist/tasks/backends/launchd.js +141 -748
  261. package/dist/tasks/backends/schtasks.js +119 -623
  262. package/dist/tasks/prepare/prepare-support.js +5 -15
  263. package/dist/tasks/prepare/prepare.js +0 -2
  264. package/dist/tasks/resolve-akm-bin.js +20 -79
  265. package/dist/tasks/run/attempt-lifecycle.js +0 -1
  266. package/dist/tasks/run/load-task.js +1 -1
  267. package/dist/tasks/scheduler-binding.js +20 -238
  268. package/dist/tasks/scheduler-invocation.js +136 -244
  269. package/dist/tasks/scheduler-lock.js +53 -0
  270. package/dist/tasks/scheduler-sync.js +368 -679
  271. package/dist/tasks/source/parse-task-source.js +55 -9
  272. package/dist/tasks/source/task-source-v3-frozen.js +3 -4
  273. package/dist/tasks/source/task-to-v4.js +464 -88
  274. package/dist/workflows/authoring/authoring.js +3 -12
  275. package/dist/workflows/compile.js +211 -0
  276. package/dist/workflows/concurrency-policy.js +13 -74
  277. package/dist/workflows/exec/child-invocation.js +3 -17
  278. package/dist/workflows/exec/child-workflow.js +32 -141
  279. package/dist/workflows/exec/dispatch-redaction.js +13 -53
  280. package/dist/workflows/exec/environment.js +98 -0
  281. package/dist/workflows/exec/exec-unit.js +33 -140
  282. package/dist/workflows/exec/frozen-judge.js +7 -59
  283. package/dist/workflows/exec/native-executor.js +82 -341
  284. package/dist/workflows/exec/param-secrets.js +29 -47
  285. package/dist/workflows/exec/run-workflow.js +154 -387
  286. package/dist/workflows/exec/scheduler.js +9 -36
  287. package/dist/workflows/exec/step-work.js +127 -430
  288. package/dist/workflows/exec/unit-dispatch.js +11 -63
  289. package/dist/workflows/exec/unit-writer.js +8 -52
  290. package/dist/workflows/exec/worktree.js +39 -273
  291. package/dist/workflows/freeze/child-output-references.js +4 -15
  292. package/dist/workflows/freeze/environment.js +99 -92
  293. package/dist/workflows/freeze/freeze.js +172 -0
  294. package/dist/workflows/freeze/step-values.js +19 -21
  295. package/dist/workflows/freeze/targets/child-workflow.js +23 -92
  296. package/dist/workflows/freeze/targets/command.js +10 -33
  297. package/dist/workflows/freeze/targets/script.js +5 -12
  298. package/dist/workflows/freeze/targets/shell.js +3 -6
  299. package/dist/workflows/freeze/targets/task.js +25 -80
  300. package/dist/workflows/freeze/task-bindings.js +20 -67
  301. package/dist/workflows/{source-ir/github-yaml.js → github-yaml.js} +88 -206
  302. package/dist/workflows/ir/params.js +6 -51
  303. package/dist/workflows/ir/plan-hash.js +2 -34
  304. package/dist/workflows/parser.js +140 -43
  305. package/dist/{commands/improve/consolidate/types.js → workflows/plan.js} +2 -1
  306. package/dist/workflows/renderer.js +36 -69
  307. package/dist/workflows/resource-limits.js +12 -120
  308. package/dist/workflows/runtime/agent-identity.js +8 -40
  309. package/dist/workflows/runtime/run-outputs.js +3 -6
  310. package/dist/workflows/runtime/run-plan.js +316 -0
  311. package/dist/workflows/runtime/runs.js +48 -200
  312. package/dist/workflows/runtime/workflow-asset-loader.js +24 -57
  313. package/dist/workflows/{source-ir/semantics.js → source-semantics.js} +16 -20
  314. package/dist/workflows/validate-summary.js +2 -7
  315. package/docs/integration/bundling-akm.md +49 -42
  316. package/docs/migration/README.md +1 -0
  317. package/docs/migration/release-notes/0.9.17.md +43 -0
  318. package/docs/migration/v0.9.1-to-v0.9.2.md +23 -7
  319. package/docs/reference/cli.md +232 -135
  320. package/docs/reference/configuration.md +71 -57
  321. package/docs/reference/data-and-telemetry.md +20 -21
  322. package/docs/reference/tasks.md +105 -39
  323. package/docs/reference/workflow-schema.md +14 -18
  324. package/docs/reference/workflows.md +6 -9
  325. package/package.json +1 -1
  326. package/schemas/akm-config.json +115 -738
  327. package/schemas/akm-workflow.json +1 -0
  328. package/dist/assets/improve-strategies/graph-refresh.json +0 -15
  329. package/dist/assets/prompts/contradiction-judge.md +0 -33
  330. package/dist/assets/prompts/graph-extract-system.md +0 -1
  331. package/dist/assets/prompts/graph-extract-user-prompt.md +0 -35
  332. package/dist/assets/prompts/metadata-enhance-system.md +0 -1
  333. package/dist/assets/tasks/improve/akm-graph-refresh-weekly.yml +0 -4
  334. package/dist/commands/health/advisories.js +0 -150
  335. package/dist/commands/health/metrics.js +0 -329
  336. package/dist/commands/health/surfaces.js +0 -102
  337. package/dist/commands/improve/anti-collapse.js +0 -83
  338. package/dist/commands/improve/collapse-detector.js +0 -432
  339. package/dist/commands/improve/consolidate/eligibility.js +0 -48
  340. package/dist/commands/improve/consolidate/merge.js +0 -149
  341. package/dist/commands/improve/distill/promote-memory.js +0 -291
  342. package/dist/commands/improve/distill/quality-gate.js +0 -337
  343. package/dist/commands/improve/eval-cases.js +0 -52
  344. package/dist/commands/improve/memory/memory-contradiction-detect.js +0 -291
  345. package/dist/commands/improve/proposal-envelope.js +0 -31
  346. package/dist/commands/improve/run-context.js +0 -123
  347. package/dist/commands/improve/shared.js +0 -31
  348. package/dist/commands/improve/source-identity.js +0 -28
  349. package/dist/commands/improve/triage.js +0 -96
  350. package/dist/commands/proposal/drain-policies.js +0 -151
  351. package/dist/commands/sources/update-transaction.js +0 -220
  352. package/dist/core/action-contributors.js +0 -28
  353. package/dist/core/config/config-version-shim.js +0 -101
  354. package/dist/core/fs-txn.js +0 -405
  355. package/dist/core/lexical-score.js +0 -25
  356. package/dist/core/maintenance-barrier.js +0 -167
  357. package/dist/execution/executable-identity.js +0 -105
  358. package/dist/execution/guarded-source.js +0 -427
  359. package/dist/indexer/db/graph-db.js +0 -444
  360. package/dist/indexer/graph/graph-boost.js +0 -427
  361. package/dist/indexer/graph/graph-dedup.js +0 -95
  362. package/dist/indexer/graph/graph-extraction.js +0 -1108
  363. package/dist/indexer/search/name-match.js +0 -35
  364. package/dist/indexer/search/ranking-contributors.js +0 -515
  365. package/dist/indexer/search/ranking-types.js +0 -4
  366. package/dist/indexer/walk/project-context.js +0 -192
  367. package/dist/integrations/agent/execution-cascade.js +0 -566
  368. package/dist/integrations/agent/execution-definitions.js +0 -202
  369. package/dist/integrations/agent/execution-lowering.js +0 -841
  370. package/dist/integrations/agent/execution-preparation.js +0 -98
  371. package/dist/integrations/agent/inline-execution.js +0 -74
  372. package/dist/llm/graph-extract.js +0 -728
  373. package/dist/llm/metadata-enhance.js +0 -96
  374. package/dist/registry/create-provider-registry.js +0 -29
  375. package/dist/registry/pinned-request-helper.js +0 -247
  376. package/dist/registry/pinned-transport.js +0 -717
  377. package/dist/sources/providers/index.js +0 -14
  378. package/dist/storage/engines/sqlite-migrations.js +0 -271
  379. package/dist/storage/repositories/canaries-repository.js +0 -107
  380. package/dist/storage/repositories/embedding-salvage-repository.js +0 -184
  381. package/dist/storage/repositories/registry-cache.js +0 -113
  382. package/dist/tasks/scheduler-sync-preview.js +0 -52
  383. package/dist/tasks/source/task-to-v3.js +0 -507
  384. package/dist/workflows/freeze/resolve-steps.js +0 -86
  385. package/dist/workflows/freeze/source-freeze.js +0 -64
  386. package/dist/workflows/ir/compile.js +0 -321
  387. package/dist/workflows/ir/environment-v4.js +0 -330
  388. package/dist/workflows/ir/freeze-v4.js +0 -153
  389. package/dist/workflows/ir/schema-v4.js +0 -745
  390. package/dist/workflows/ir/schema.js +0 -354
  391. package/dist/workflows/program/schema.js +0 -77
  392. package/dist/workflows/runtime/checkin.js +0 -57
  393. package/dist/workflows/runtime/plan-classifier.js +0 -196
  394. package/dist/workflows/runtime/unit-checkin.js +0 -45
  395. package/dist/workflows/runtime/unit-phases.js +0 -20
  396. package/dist/workflows/schema.js +0 -4
  397. package/dist/workflows/source-ir/compile.js +0 -200
  398. package/dist/workflows/source-ir/program.js +0 -50
  399. package/dist/workflows/source-ir/result.js +0 -26
  400. package/dist/workflows/source-ir/schema.js +0 -786
  401. package/dist/workflows/source-ir/triggers.js +0 -79
  402. package/dist/workflows/source-ir/uses.js +0 -40
  403. package/dist/workflows/validator.js +0 -60
@@ -1,220 +0,0 @@
1
- // This Source Code Form is subject to the terms of the Mozilla Public
2
- // License, v. 2.0. If a copy of the MPL was not distributed with this
3
- // file, You can obtain one at https://mozilla.org/MPL/2.0/.
4
- import { randomBytes } from "node:crypto";
5
- import fs from "node:fs";
6
- import path from "node:path";
7
- import { ConfigError } from "../../core/errors.js";
8
- import { warn } from "../../core/warn.js";
9
- import { runGit } from "../../sources/providers/git.js";
10
- import { assertNoIgnoredPathOverwrite } from "../../sources/providers/git-install.js";
11
- export function prepareDirectoryPublication(stagedRoot, liveRoot) {
12
- const backupRoot = `${liveRoot}.akm-update-backup-${randomBytes(6).toString("hex")}`;
13
- let published = false;
14
- let hadLiveRoot = false;
15
- return {
16
- publish() {
17
- if (published)
18
- throw new ConfigError(`Update content at ${liveRoot} was already published.`);
19
- hadLiveRoot = fs.existsSync(liveRoot);
20
- fs.mkdirSync(path.dirname(liveRoot), { recursive: true });
21
- if (hadLiveRoot)
22
- fs.renameSync(liveRoot, backupRoot);
23
- try {
24
- fs.renameSync(stagedRoot, liveRoot);
25
- published = true;
26
- }
27
- catch (error) {
28
- if (hadLiveRoot && fs.existsSync(backupRoot))
29
- fs.renameSync(backupRoot, liveRoot);
30
- throw error;
31
- }
32
- },
33
- rollback() {
34
- if (!published)
35
- return;
36
- const failedRoot = `${liveRoot}.akm-update-failed-${randomBytes(6).toString("hex")}`;
37
- if (fs.existsSync(liveRoot))
38
- fs.renameSync(liveRoot, failedRoot);
39
- try {
40
- if (hadLiveRoot && fs.existsSync(backupRoot))
41
- fs.renameSync(backupRoot, liveRoot);
42
- }
43
- catch (error) {
44
- // The prior generation could not be restored. Put the published
45
- // candidate back at the live path so resolution never sees a missing
46
- // root, then surface the rollback failure loudly.
47
- try {
48
- if (!fs.existsSync(liveRoot) && fs.existsSync(failedRoot))
49
- fs.renameSync(failedRoot, liveRoot);
50
- }
51
- catch {
52
- // Preserve the original restoration failure; both paths remain for
53
- // manual recovery when even the defensive rename cannot complete.
54
- }
55
- published = false;
56
- throw error;
57
- }
58
- try {
59
- fs.rmSync(failedRoot, { recursive: true, force: true });
60
- }
61
- catch (error) {
62
- warn(`[akm bundle update] restored ${liveRoot}, but could not remove failed candidate ${failedRoot}: ${error instanceof Error ? error.message : String(error)}`);
63
- }
64
- published = false;
65
- },
66
- commit() {
67
- if (hadLiveRoot) {
68
- try {
69
- fs.rmSync(backupRoot, { recursive: true, force: true });
70
- }
71
- catch (error) {
72
- warn(`[akm bundle update] update committed, but could not remove backup ${backupRoot}: ${error instanceof Error ? error.message : String(error)}`);
73
- }
74
- }
75
- published = false;
76
- },
77
- };
78
- }
79
- function gitOutput(repoDir, args, description) {
80
- const result = runGit(["-C", repoDir, ...args], { timeout: 120_000 });
81
- if (result.status !== 0) {
82
- throw new ConfigError(`${description}: ${result.stderr.trim() || result.stdout.trim() || "git failed"}`);
83
- }
84
- return result.stdout.trim();
85
- }
86
- function assertGitCheckoutGeneration(repoDir, expectedHead, phase) {
87
- const actualHead = gitOutput(repoDir, ["rev-parse", "HEAD"], `Cannot read writable Git HEAD at ${repoDir}`);
88
- if (actualHead !== expectedHead) {
89
- throw new ConfigError(`Writable Git checkout at ${repoDir} changed after the update was audited (${phase}: expected ${expectedHead}, found ${actualHead}); refusing to overwrite the live commit.`);
90
- }
91
- const status = gitOutput(repoDir, ["status", "--porcelain=v1", "--untracked-files=all", "--ignore-submodules=none"], `Cannot inspect writable Git checkout at ${repoDir}`);
92
- if (status) {
93
- throw new ConfigError(`Writable Git checkout at ${repoDir} changed after the update was audited (${phase}: working tree is no longer clean); refusing to overwrite live files.`);
94
- }
95
- }
96
- function assertNoGitlinks(repoDir, targetHead) {
97
- const tree = gitOutput(repoDir, ["ls-tree", "-r", "-z", targetHead], `Cannot inspect audited Git tree ${targetHead} at ${repoDir}`);
98
- const gitlink = tree.split("\0").find((entry) => entry.startsWith("160000 "));
99
- if (gitlink) {
100
- const targetPath = gitlink.slice(gitlink.indexOf("\t") + 1);
101
- throw new ConfigError(`Writable Git target contains unaudited submodule/gitlink ${targetPath}; refusing to materialize it.`);
102
- }
103
- }
104
- function copyWorktree(source, destination) {
105
- fs.mkdirSync(destination, { recursive: true, mode: 0o700 });
106
- for (const entry of fs.readdirSync(source, { withFileTypes: true })) {
107
- if (entry.name === ".git")
108
- continue;
109
- fs.cpSync(path.join(source, entry.name), path.join(destination, entry.name), {
110
- recursive: true,
111
- preserveTimestamps: true,
112
- });
113
- }
114
- }
115
- function clearWorktree(repoDir) {
116
- for (const entry of fs.readdirSync(repoDir, { withFileTypes: true })) {
117
- if (entry.name === ".git")
118
- continue;
119
- fs.rmSync(path.join(repoDir, entry.name), { recursive: true, force: true });
120
- }
121
- }
122
- /**
123
- * Publish the exact audited commit into a writable checkout without replacing
124
- * the checkout directory. The expected-old-HEAD and clean-tree fence runs
125
- * under the caller's asset mutation lease immediately before the fast-forward.
126
- */
127
- export function prepareWritableGitPublication(opts) {
128
- let published = false;
129
- let rollbackParent;
130
- let rollbackWorktree;
131
- const discardRollback = () => {
132
- if (!rollbackParent)
133
- return;
134
- cleanupStagingParent(rollbackParent);
135
- rollbackParent = undefined;
136
- rollbackWorktree = undefined;
137
- };
138
- const restore = () => {
139
- if (!rollbackWorktree)
140
- return;
141
- const actualHead = gitOutput(opts.liveRepo, ["rev-parse", "HEAD"], `Cannot read writable Git rollback HEAD`);
142
- if (actualHead !== opts.expectedOldHead && actualHead !== opts.auditedTargetHead) {
143
- throw new ConfigError(`Writable Git checkout ${opts.liveRepo} advanced concurrently to ${actualHead}; refusing to overwrite that commit during rollback.`);
144
- }
145
- gitOutput(opts.liveRepo, ["reset", "--hard", opts.expectedOldHead], `Cannot restore writable Git checkout ${opts.liveRepo} to ${opts.expectedOldHead}`);
146
- clearWorktree(opts.liveRepo);
147
- copyWorktree(rollbackWorktree, opts.liveRepo);
148
- assertGitCheckoutGeneration(opts.liveRepo, opts.expectedOldHead, "rollback verification");
149
- published = false;
150
- discardRollback();
151
- };
152
- return {
153
- publish() {
154
- if (published)
155
- throw new ConfigError(`Writable Git update at ${opts.liveRepo} was already published.`);
156
- assertGitCheckoutGeneration(opts.liveRepo, opts.expectedOldHead, "pre-publish fence");
157
- assertGitCheckoutGeneration(opts.stagedRepo, opts.auditedTargetHead, "staged audit fence");
158
- const ancestor = runGit([
159
- "-C",
160
- opts.stagedRepo,
161
- "merge-base",
162
- "--is-ancestor",
163
- opts.expectedOldHead,
164
- opts.auditedTargetHead,
165
- ]);
166
- if (ancestor.status !== 0) {
167
- throw new ConfigError(`Audited Git target ${opts.auditedTargetHead} is not a fast-forward of live HEAD ${opts.expectedOldHead}; refusing writable update.`);
168
- }
169
- assertNoGitlinks(opts.stagedRepo, opts.auditedTargetHead);
170
- gitOutput(opts.liveRepo, ["fetch", "--no-tags", opts.stagedRepo, opts.auditedTargetHead], `Cannot import audited Git target ${opts.auditedTargetHead} into ${opts.liveRepo}`);
171
- // A non-cooperating local Git command may have committed while fetch ran.
172
- assertGitCheckoutGeneration(opts.liveRepo, opts.expectedOldHead, "post-fetch fence");
173
- assertNoIgnoredPathOverwrite(opts.liveRepo, opts.auditedTargetHead);
174
- rollbackParent = createStagingParent(path.dirname(opts.liveRepo));
175
- rollbackWorktree = path.join(rollbackParent, "worktree");
176
- try {
177
- copyWorktree(opts.liveRepo, rollbackWorktree);
178
- }
179
- catch (error) {
180
- discardRollback();
181
- throw error;
182
- }
183
- try {
184
- gitOutput(opts.liveRepo, ["merge", "--ff-only", "--no-overwrite-ignore", opts.auditedTargetHead], `Cannot fast-forward writable Git checkout ${opts.liveRepo}`);
185
- published = true;
186
- assertGitCheckoutGeneration(opts.liveRepo, opts.auditedTargetHead, "post-materialization fence");
187
- }
188
- catch (error) {
189
- try {
190
- restore();
191
- }
192
- catch (restoreError) {
193
- throw new ConfigError(`Writable Git publication failed and its worktree could not be restored: ${restoreError instanceof Error ? restoreError.message : String(restoreError)}`);
194
- }
195
- throw error;
196
- }
197
- },
198
- rollback() {
199
- if (!published)
200
- return;
201
- restore();
202
- },
203
- commit() {
204
- published = false;
205
- discardRollback();
206
- },
207
- };
208
- }
209
- export function createStagingParent(parent) {
210
- fs.mkdirSync(parent, { recursive: true, mode: 0o700 });
211
- return fs.mkdtempSync(path.join(parent, ".akm-update-stage-"));
212
- }
213
- export function cleanupStagingParent(stagingParent) {
214
- try {
215
- fs.rmSync(stagingParent, { recursive: true, force: true });
216
- }
217
- catch (error) {
218
- warn(`[akm bundle update] could not remove staging directory ${stagingParent}: ${error instanceof Error ? error.message : String(error)}`);
219
- }
220
- }
@@ -1,28 +0,0 @@
1
- // This Source Code Form is subject to the terms of the Mozilla Public
2
- // License, v. 2.0. If a copy of the MPL was not distributed with this
3
- // file, You can obtain one at https://mozilla.org/MPL/2.0/.
4
- import { defaultRendererRegistry } from "./type-presentation.js";
5
- function registryActionContributor(registry) {
6
- return {
7
- name: "registry-action-contributor",
8
- appliesTo(ctx) {
9
- return registry.actionBuilderFor(ctx.type) !== undefined;
10
- },
11
- buildAction(ctx) {
12
- return registry.actionBuilderFor(ctx.type)?.(ctx.ref);
13
- },
14
- };
15
- }
16
- export function defaultActionContributors(registry = defaultRendererRegistry) {
17
- return [registryActionContributor(registry)];
18
- }
19
- export function buildActionFromContributors(ctx, contributors = defaultActionContributors()) {
20
- for (const contributor of contributors) {
21
- if (!contributor.appliesTo(ctx))
22
- continue;
23
- const action = contributor.buildAction(ctx);
24
- if (action !== undefined)
25
- return action;
26
- }
27
- return undefined;
28
- }
@@ -1,101 +0,0 @@
1
- // This Source Code Form is subject to the terms of the Mozilla Public
2
- // License, v. 2.0. If a copy of the MPL was not distributed with this
3
- // file, You can obtain one at https://mozilla.org/MPL/2.0/.
4
- /**
5
- * The `configVersion` read shim (#863).
6
- *
7
- * `configVersion` used to be a hard `z.literal(CURRENT_CONFIG_VERSION)` gate:
8
- * every value other than the exact current string threw
9
- * `UNSUPPORTED_CONFIG_VERSION` for every command, since every akm invocation
10
- * loads config first. That is the same shape of break #858/#859 (proposal
11
- * rows), the `task_history` `metadataVersion` gate, and the task-source v2/v3
12
- * gate each caused in 0.9.x — a version gate with no read shim — except
13
- * `configVersion`'s blast radius is the whole CLI rather than one subsystem.
14
- *
15
- * This module mirrors the in-tree template for that fix,
16
- * `src/tasks/source/parse-task-source.ts`'s v2/v3 -> v4 shim: a known-old
17
- * version routes through a pure, in-memory upgrade function to the current
18
- * shape, with a one-line stderr deprecation warning; the result is never
19
- * written back to disk (the on-disk rewrite already happens for free — every
20
- * `saveConfig`/`mutateConfig` write forces `configVersion` to
21
- * {@link CURRENT_CONFIG_VERSION}, so the very next `akm config set` or any
22
- * other mutating command silences the warning permanently). A version that is
23
- * neither current nor a known old version — including anything NEWER than
24
- * current — still fails closed with `UNSUPPORTED_CONFIG_VERSION`:
25
- * forward-incompatibility is a real hazard (an older binary must not guess at
26
- * a newer, unknown shape) and this shim does not soften that.
27
- *
28
- * IMPORTANT — as of this writing, `"0.9.0"` is the only `configVersion` akm
29
- * has ever shipped; there is no real prior release to shim. `"0.0.1"` below
30
- * is a SYNTHETIC placeholder entry that exists solely to stand up and
31
- * exercise this mechanism — the known-versions list, the dispatch table, the
32
- * warn-once-and-upgrade behavior, the fail-closed behavior for anything
33
- * else — before a real bump ever needs it (see
34
- * `tests/integration/config-version-shim.test.ts` and the
35
- * `previous-release-corpus.test.ts` fixture). When the first genuine
36
- * `configVersion` bump ships, add its real old shape as its own entry the
37
- * same way and delete the synthetic `"0.0.1"` entry (and this paragraph) in
38
- * the same change.
39
- */
40
- import { ConfigError } from "../errors.js";
41
- import { warn } from "../warn.js";
42
- import { CURRENT_CONFIG_VERSION } from "./schema/primitives.js";
43
- /**
44
- * Every `configVersion` this binary can still READ, other than
45
- * {@link CURRENT_CONFIG_VERSION} itself — each with an in-memory upgrade
46
- * function in {@link CONFIG_VERSION_UPGRADES}. Anything not in this list (and
47
- * not equal to current) fails closed.
48
- */
49
- export const KNOWN_OLD_CONFIG_VERSIONS = ["0.0.1"];
50
- function isKnownOldConfigVersion(value) {
51
- return typeof value === "string" && KNOWN_OLD_CONFIG_VERSIONS.includes(value);
52
- }
53
- /**
54
- * SYNTHETIC 0.0.1 -> 0.9.0 upgrade (placeholder — see module doc). Per this
55
- * placeholder, 0.0.1 kept the default LLM engine name at the config root as
56
- * `defaultEngine`; 0.9.0 moved it under `defaults.llmEngine`. Pure function:
57
- * takes the raw parsed JSON object, returns a new raw object with the 0.9.0
58
- * shape. Never touches disk.
59
- */
60
- function upgradeFrom080(raw) {
61
- const { defaultEngine, defaults, ...rest } = raw;
62
- if (typeof defaultEngine !== "string" || defaultEngine.length === 0) {
63
- return { ...rest, ...(defaults !== undefined ? { defaults } : {}), configVersion: CURRENT_CONFIG_VERSION };
64
- }
65
- const existingDefaults = defaults !== null && typeof defaults === "object" ? defaults : {};
66
- return {
67
- ...rest,
68
- configVersion: CURRENT_CONFIG_VERSION,
69
- // An explicit `defaults.llmEngine` already present in the raw 0.0.1
70
- // document (should never happen for a real 0.0.1 file, but a malformed
71
- // one is possible) wins over the root-level field being migrated in.
72
- defaults: { llmEngine: defaultEngine, ...existingDefaults },
73
- };
74
- }
75
- const CONFIG_VERSION_UPGRADES = {
76
- "0.0.1": upgradeFrom080,
77
- };
78
- function unsupportedConfigVersionError(rawVersion, sourcePath) {
79
- const where = sourcePath ? ` at ${sourcePath}` : "";
80
- const supported = [CURRENT_CONFIG_VERSION, ...KNOWN_OLD_CONFIG_VERSIONS].map((v) => `"${v}"`).join(", ");
81
- return new ConfigError(`Unsupported configVersion${where}: got ${JSON.stringify(rawVersion)}, expected one of ${supported}.`, "UNSUPPORTED_CONFIG_VERSION", "Recreate engines and improve.strategies manually for AKM 0.9.0; profile-based configuration is not translated automatically.");
82
- }
83
- /**
84
- * Route a raw parsed config object through the version shim before schema
85
- * validation. Returns a raw object whose `configVersion` is
86
- * {@link CURRENT_CONFIG_VERSION} — either unchanged (already current),
87
- * in-memory-upgraded (a known old version, with a one-line stderr warning),
88
- * or this throws `UNSUPPORTED_CONFIG_VERSION` (unknown, newer, missing, or
89
- * malformed).
90
- */
91
- export function upgradeConfigVersion(raw, sourcePath) {
92
- const version = raw.configVersion;
93
- if (version === CURRENT_CONFIG_VERSION)
94
- return raw;
95
- if (isKnownOldConfigVersion(version)) {
96
- const upgraded = CONFIG_VERSION_UPGRADES[version](raw);
97
- warn(`Config${sourcePath ? ` at ${sourcePath}` : ""} uses configVersion "${version}" — auto-upgraded to ${CURRENT_CONFIG_VERSION} in memory; the next config write (e.g. \`akm config set\`) persists this and silences the warning.`);
98
- return upgraded;
99
- }
100
- throw unsupportedConfigVersionError(version, sourcePath);
101
- }