akm-cli 0.9.17-alpha.1 → 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 (399) hide show
  1. package/CHANGELOG.md +1623 -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/retrieval-relevance-judge.md +6 -0
  15. package/dist/assets/stash-skeleton/facts/conventions/backlinks.md +20 -20
  16. package/dist/assets/stash-skeleton/facts/conventions/domains.md +2 -2
  17. package/dist/assets/templates/html/health.html +3 -5
  18. package/dist/cli/retired-commands.js +1 -1
  19. package/dist/cli/shared.js +6 -2
  20. package/dist/cli/unknown-flags.js +24 -1
  21. package/dist/cli.js +68 -10
  22. package/dist/commands/agent/agent-dispatch.js +1 -1
  23. package/dist/commands/command/command-execution.js +24 -62
  24. package/dist/commands/feedback-cli.js +0 -1
  25. package/dist/commands/health/accept-rate.js +2 -2
  26. package/dist/commands/health/archive-usage.js +92 -0
  27. package/dist/commands/health/checks.js +30 -75
  28. package/dist/commands/health/config-skew.js +38 -0
  29. package/dist/commands/health/data-dir-usage.js +25 -13
  30. package/dist/commands/health/egress.js +54 -0
  31. package/dist/commands/health/html-report.js +1 -42
  32. package/dist/commands/health/improve-metrics.js +136 -587
  33. package/dist/commands/health/md-report.js +1 -6
  34. package/dist/commands/health/plugin-staleness.js +53 -3
  35. package/dist/commands/health/renderers.js +12 -4
  36. package/dist/commands/health/report-view-model.js +14 -119
  37. package/dist/commands/health/types-improve.js +4 -19
  38. package/dist/commands/health/windows.js +64 -74
  39. package/dist/commands/health.js +135 -143
  40. package/dist/commands/improve/consolidate/chunking.js +25 -100
  41. package/dist/commands/improve/consolidate/continuity-check.js +137 -0
  42. package/dist/commands/improve/consolidate/pair-pass.js +791 -0
  43. package/dist/commands/improve/consolidate/sanitize.js +54 -149
  44. package/dist/commands/improve/consolidate.js +573 -1124
  45. package/dist/commands/improve/content-hash.js +16 -24
  46. package/dist/commands/improve/distill/content-repair.js +18 -100
  47. package/dist/commands/improve/distill-guards.js +20 -81
  48. package/dist/commands/improve/distill-promotion-policy.js +23 -243
  49. package/dist/commands/improve/distill.js +608 -1075
  50. package/dist/commands/improve/eligibility.js +126 -400
  51. package/dist/commands/improve/execution.js +8 -10
  52. package/dist/commands/improve/extract-prompt.js +1 -2
  53. package/dist/commands/improve/extract.js +487 -1046
  54. package/dist/commands/improve/feedback-valence.js +0 -25
  55. package/dist/commands/improve/improve-cli.js +54 -171
  56. package/dist/commands/improve/improve-result-file.js +10 -66
  57. package/dist/commands/improve/improve-strategies.js +35 -9
  58. package/dist/commands/improve/improve-usage-report.js +18 -64
  59. package/dist/commands/improve/improve.js +451 -1082
  60. package/dist/commands/improve/ledger.js +119 -0
  61. package/dist/commands/improve/locks.js +2 -8
  62. package/dist/commands/improve/loop-stages.js +401 -1192
  63. package/dist/commands/improve/memory/derived-ref.js +12 -77
  64. package/dist/commands/improve/memory/memory-belief.js +16 -118
  65. package/dist/commands/improve/memory/memory-improve.js +266 -14
  66. package/dist/commands/improve/outcome-loop.js +28 -156
  67. package/dist/commands/improve/planner.js +5 -15
  68. package/dist/commands/improve/preparation.js +776 -2349
  69. package/dist/commands/improve/proactive-maintenance.js +34 -101
  70. package/dist/commands/improve/reflect-noise.js +104 -280
  71. package/dist/commands/improve/reflect.js +642 -1364
  72. package/dist/commands/improve/retrieval-gate.js +127 -0
  73. package/dist/commands/improve/retrieval-scope.js +92 -0
  74. package/dist/commands/improve/salience.js +41 -240
  75. package/dist/commands/improve/session-asset.js +19 -100
  76. package/dist/commands/improve/stage.js +322 -0
  77. package/dist/commands/lint/base-linter.js +37 -15
  78. package/dist/commands/proposal/drain.js +258 -644
  79. package/dist/commands/proposal/proposal-cli.js +19 -20
  80. package/dist/commands/proposal/proposal-types.js +27 -41
  81. package/dist/commands/proposal/proposal.js +38 -8
  82. package/dist/commands/proposal/propose.js +134 -160
  83. package/dist/commands/proposal/repository.js +1099 -1475
  84. package/dist/commands/proposal/validators/proposal-quality-validators.js +71 -174
  85. package/dist/commands/proposal/validators/proposal-validators.js +1 -1
  86. package/dist/commands/proposal/validators/proposals.js +22 -89
  87. package/dist/commands/read/curate.js +105 -462
  88. package/dist/commands/read/knowledge.js +3 -2
  89. package/dist/commands/read/search-cli.js +16 -33
  90. package/dist/commands/read/search.js +17 -23
  91. package/dist/commands/read/show.js +57 -108
  92. package/dist/commands/sources/bundle-cli.js +25 -2
  93. package/dist/commands/sources/bundle-config-ops.js +4 -0
  94. package/dist/commands/sources/dangerous-env-audit.js +1 -2
  95. package/dist/commands/sources/info.js +127 -29
  96. package/dist/commands/sources/installed-stashes.js +197 -746
  97. package/dist/commands/sources/schema-repair.js +98 -129
  98. package/dist/commands/sources/source-add.js +62 -12
  99. package/dist/commands/sources/source-manage.js +9 -2
  100. package/dist/commands/sources/stash-cli.js +24 -4
  101. package/dist/commands/tasks/explain.js +10 -13
  102. package/dist/commands/tasks/tasks-cli.js +12 -13
  103. package/dist/commands/tasks/tasks.js +350 -936
  104. package/dist/commands/tasks/validate.js +26 -24
  105. package/dist/commands/workflow/plan.js +22 -29
  106. package/dist/commands/workflow-cli.js +4 -4
  107. package/dist/core/adapter/adapters/akm-adapter.js +2 -1
  108. package/dist/core/adapter/adapters/akm-lint.js +2 -3
  109. package/dist/core/adapter/adapters/akm-metadata.js +42 -12
  110. package/dist/core/adapter/adapters/akm-task-adapter.js +29 -8
  111. package/dist/core/adapter/adapters/akm-workflow-adapter.js +1 -1
  112. package/dist/core/adapter/execution-source.js +17 -29
  113. package/dist/core/asset/asset-placement.js +4 -13
  114. package/dist/core/asset/resolve-ref.js +1 -1
  115. package/dist/core/bundle-id.js +42 -5
  116. package/dist/core/bundle-rename.js +285 -0
  117. package/dist/core/config/config-io.js +1 -2
  118. package/dist/core/config/config-schema.js +9 -34
  119. package/dist/core/config/config-walker.js +1 -1
  120. package/dist/core/config/config.js +184 -111
  121. package/dist/core/config/engine-semantics.js +0 -2
  122. package/dist/core/config/legacy-source-shape-shim.js +38 -9
  123. package/dist/core/config/schema/embedding.js +20 -5
  124. package/dist/core/config/schema/engines.js +5 -0
  125. package/dist/core/config/schema/execution.js +1 -1
  126. package/dist/core/config/schema/experimental.js +1 -1
  127. package/dist/core/config/schema/improve-processes.js +37 -135
  128. package/dist/core/config/schema/improve.js +4 -42
  129. package/dist/core/config/schema/index-config.js +9 -48
  130. package/dist/core/config/schema/scheduler.js +12 -12
  131. package/dist/core/config/schema/search.js +6 -22
  132. package/dist/core/env-secret-ref.js +0 -1
  133. package/dist/core/errors.js +8 -9
  134. package/dist/core/file-change.js +13 -5
  135. package/dist/core/file-lock.js +76 -173
  136. package/dist/core/improve-result.js +26 -7
  137. package/dist/core/improve-types.js +0 -1
  138. package/dist/core/logs-db.js +2 -2
  139. package/dist/core/loopback.js +7 -12
  140. package/dist/core/non-task-input.js +20 -0
  141. package/dist/core/parse.js +13 -16
  142. package/dist/core/paths.js +0 -31
  143. package/dist/core/redaction.js +109 -2
  144. package/dist/core/run-lock.js +2 -5
  145. package/dist/core/spawn-env.js +1 -1
  146. package/dist/core/state/migrations.js +123 -61
  147. package/dist/core/state-db-scope.js +2 -4
  148. package/dist/core/state-db.js +126 -692
  149. package/dist/core/time.js +0 -20
  150. package/dist/core/type-presentation.js +1 -9
  151. package/dist/core/write-source.js +294 -1005
  152. package/dist/execution/input-contract.js +1 -1
  153. package/dist/execution/resolved-request.js +135 -689
  154. package/dist/execution/source.js +63 -257
  155. package/dist/execution/target-ref.js +1 -1
  156. package/dist/indexer/bundle-identity-guard.js +2 -2
  157. package/dist/indexer/db/llm-cache.js +2 -2
  158. package/dist/indexer/ensure-index.js +46 -87
  159. package/dist/indexer/index-rebuild-lock.js +3 -11
  160. package/dist/indexer/index-writer-lock.js +8 -17
  161. package/dist/indexer/index-written-assets.js +141 -154
  162. package/dist/indexer/indexer.js +400 -1124
  163. package/dist/indexer/links/declared-links.js +90 -0
  164. package/dist/indexer/materialize-embeddings.js +60 -397
  165. package/dist/indexer/passes/memory-inference.js +81 -90
  166. package/dist/indexer/passes/metadata.js +132 -219
  167. package/dist/indexer/read-preflight.js +0 -7
  168. package/dist/indexer/scan/doc-to-entry.js +2 -3
  169. package/dist/indexer/scan/drain-dir.js +1 -1
  170. package/dist/indexer/search/db-search.js +190 -590
  171. package/dist/indexer/search/fts-query.js +30 -41
  172. package/dist/indexer/search/ranking.js +28 -154
  173. package/dist/indexer/search/search-attribution.js +12 -32
  174. package/dist/indexer/search/search-fields.js +11 -15
  175. package/dist/indexer/search/search-hit-enrichers.js +54 -85
  176. package/dist/indexer/search/search-source.js +1 -4
  177. package/dist/indexer/usage/usage-events.js +36 -7
  178. package/dist/indexer/walk/walker.js +3 -4
  179. package/dist/integrations/agent/engine-fallback.js +23 -40
  180. package/dist/integrations/agent/engine-resolution.js +93 -183
  181. package/dist/integrations/agent/execution.js +507 -0
  182. package/dist/integrations/agent/model-map.js +28 -156
  183. package/dist/integrations/agent/request-lowering.js +66 -141
  184. package/dist/integrations/agent/runner-dispatch.js +143 -321
  185. package/dist/integrations/agent/runner.js +54 -14
  186. package/dist/integrations/lockfile.js +53 -101
  187. package/dist/llm/client.js +8 -10
  188. package/dist/llm/embedders/deterministic.js +2 -3
  189. package/dist/llm/embedders/profile.js +71 -0
  190. package/dist/llm/embedders/remote.js +11 -17
  191. package/dist/llm/feature-gate.js +0 -8
  192. package/dist/llm/index-passes.js +3 -5
  193. package/dist/llm/memory-infer.js +1 -2
  194. package/dist/llm/structured-call.js +5 -24
  195. package/dist/output/generic-render.js +23 -11
  196. package/dist/output/html-render.js +13 -10
  197. package/dist/output/render-registry.js +3 -32
  198. package/dist/output/shapes/helpers.js +25 -38
  199. package/dist/output/shapes/passthrough.js +1 -9
  200. package/dist/{indexer/graph/graph-types.js → output/text/bundle-rename.js} +4 -1
  201. package/dist/output/text/command-format.js +69 -31
  202. package/dist/output/text/helpers.js +1 -1
  203. package/dist/output/text/migrate.js +5 -14
  204. package/dist/output/text/proposal-format.js +48 -3
  205. package/dist/output/text/show-format.js +13 -17
  206. package/dist/output/text/workflow-format.js +0 -32
  207. package/dist/output/text.js +2 -0
  208. package/dist/registry/factory.js +4 -19
  209. package/dist/registry/network.js +66 -220
  210. package/dist/registry/providers/index.js +0 -2
  211. package/dist/registry/providers/skills-sh.js +3 -14
  212. package/dist/registry/providers/static-index.js +24 -26
  213. package/dist/registry/resolve.js +55 -131
  214. package/dist/scripts/akm-migrate-node.js +42938 -92375
  215. package/dist/scripts/akm-migrate.js +42930 -92365
  216. package/dist/setup/registry-stash-loader.js +4 -13
  217. package/dist/setup/semantic-assets.js +3 -44
  218. package/dist/setup/setup.js +1 -1
  219. package/dist/setup/steps/connection.js +5 -6
  220. package/dist/setup/steps/platforms.js +2 -2
  221. package/dist/setup/steps/tasks.js +25 -15
  222. package/dist/sources/provider-factory.js +17 -18
  223. package/dist/sources/providers/filesystem.js +2 -3
  224. package/dist/sources/providers/git-install.js +7 -1
  225. package/dist/sources/providers/git-provider.js +0 -3
  226. package/dist/sources/providers/git-stash.js +83 -21
  227. package/dist/sources/providers/npm.js +2 -4
  228. package/dist/sources/providers/provider-utils.js +5 -10
  229. package/dist/sources/providers/website.js +0 -2
  230. package/dist/sources/snapshot-fetchers/website-ingest.js +1 -1
  231. package/dist/sources/website-url.js +2 -2
  232. package/dist/storage/database.js +9 -35
  233. package/dist/storage/repositories/improve-ledger-repository.js +209 -0
  234. package/dist/storage/repositories/index-connection.js +39 -72
  235. package/dist/storage/repositories/index-entries-repository.js +88 -129
  236. package/dist/storage/repositories/index-entry-mapper.js +1 -2
  237. package/dist/storage/repositories/index-entry-schema.js +101 -268
  238. package/dist/storage/repositories/index-fts-repository.js +86 -256
  239. package/dist/storage/repositories/index-links-repository.js +143 -0
  240. package/dist/storage/repositories/index-llm-cache-repository.js +7 -9
  241. package/dist/storage/repositories/index-meta-repository.js +6 -4
  242. package/dist/storage/repositories/index-schema.js +257 -325
  243. package/dist/storage/repositories/index-utility-repository.js +8 -29
  244. package/dist/storage/repositories/index-vec-repository.js +133 -414
  245. package/dist/storage/repositories/outcome-repository.js +2 -1
  246. package/dist/storage/repositories/proposals-repository.js +100 -0
  247. package/dist/storage/repositories/registry-index-cache-repository.js +100 -0
  248. package/dist/storage/repositories/salience-repository.js +1 -19
  249. package/dist/storage/repositories/task-history-repository.js +26 -4
  250. package/dist/storage/repositories/workflow-runs-repository.js +53 -244
  251. package/dist/storage/sqlite-migrations.js +136 -0
  252. package/dist/storage/sqlite-pragmas.js +11 -9
  253. package/dist/storage/sqlite-transaction.js +170 -0
  254. package/dist/storage/state-db-integrity.js +34 -27
  255. package/dist/tasks/activation-config.js +134 -62
  256. package/dist/tasks/backends/cron.js +191 -302
  257. package/dist/tasks/backends/exec-utils.js +2 -5
  258. package/dist/tasks/backends/launchd.js +141 -748
  259. package/dist/tasks/backends/schtasks.js +119 -623
  260. package/dist/tasks/prepare/prepare-support.js +5 -15
  261. package/dist/tasks/prepare/prepare.js +0 -2
  262. package/dist/tasks/resolve-akm-bin.js +20 -79
  263. package/dist/tasks/run/attempt-lifecycle.js +0 -1
  264. package/dist/tasks/run/load-task.js +1 -1
  265. package/dist/tasks/scheduler-binding.js +20 -238
  266. package/dist/tasks/scheduler-invocation.js +136 -244
  267. package/dist/tasks/scheduler-lock.js +53 -0
  268. package/dist/tasks/scheduler-sync.js +368 -679
  269. package/dist/tasks/source/parse-task-source.js +55 -9
  270. package/dist/tasks/source/task-source-v3-frozen.js +3 -4
  271. package/dist/tasks/source/task-to-v4.js +464 -88
  272. package/dist/workflows/authoring/authoring.js +3 -12
  273. package/dist/workflows/compile.js +211 -0
  274. package/dist/workflows/concurrency-policy.js +13 -74
  275. package/dist/workflows/exec/child-invocation.js +3 -17
  276. package/dist/workflows/exec/child-workflow.js +32 -141
  277. package/dist/workflows/exec/dispatch-redaction.js +13 -53
  278. package/dist/workflows/exec/environment.js +98 -0
  279. package/dist/workflows/exec/exec-unit.js +33 -140
  280. package/dist/workflows/exec/frozen-judge.js +7 -59
  281. package/dist/workflows/exec/native-executor.js +82 -341
  282. package/dist/workflows/exec/param-secrets.js +29 -47
  283. package/dist/workflows/exec/run-workflow.js +154 -387
  284. package/dist/workflows/exec/scheduler.js +9 -36
  285. package/dist/workflows/exec/step-work.js +127 -430
  286. package/dist/workflows/exec/unit-dispatch.js +11 -63
  287. package/dist/workflows/exec/unit-writer.js +8 -52
  288. package/dist/workflows/exec/worktree.js +39 -273
  289. package/dist/workflows/freeze/child-output-references.js +4 -15
  290. package/dist/workflows/freeze/environment.js +99 -92
  291. package/dist/workflows/freeze/freeze.js +172 -0
  292. package/dist/workflows/freeze/step-values.js +19 -21
  293. package/dist/workflows/freeze/targets/child-workflow.js +23 -92
  294. package/dist/workflows/freeze/targets/command.js +10 -33
  295. package/dist/workflows/freeze/targets/script.js +5 -12
  296. package/dist/workflows/freeze/targets/shell.js +3 -6
  297. package/dist/workflows/freeze/targets/task.js +25 -80
  298. package/dist/workflows/freeze/task-bindings.js +20 -67
  299. package/dist/workflows/{source-ir/github-yaml.js → github-yaml.js} +88 -206
  300. package/dist/workflows/ir/params.js +6 -51
  301. package/dist/workflows/ir/plan-hash.js +2 -34
  302. package/dist/workflows/parser.js +140 -43
  303. package/dist/{commands/improve/consolidate/types.js → workflows/plan.js} +2 -1
  304. package/dist/workflows/renderer.js +36 -69
  305. package/dist/workflows/resource-limits.js +12 -120
  306. package/dist/workflows/runtime/agent-identity.js +8 -40
  307. package/dist/workflows/runtime/run-outputs.js +3 -6
  308. package/dist/workflows/runtime/run-plan.js +316 -0
  309. package/dist/workflows/runtime/runs.js +48 -200
  310. package/dist/workflows/runtime/workflow-asset-loader.js +24 -57
  311. package/dist/workflows/{source-ir/semantics.js → source-semantics.js} +16 -20
  312. package/dist/workflows/validate-summary.js +2 -7
  313. package/docs/integration/bundling-akm.md +49 -42
  314. package/docs/migration/README.md +1 -0
  315. package/docs/migration/release-notes/0.9.17.md +43 -0
  316. package/docs/migration/v0.9.1-to-v0.9.2.md +23 -7
  317. package/docs/reference/cli.md +229 -133
  318. package/docs/reference/configuration.md +71 -57
  319. package/docs/reference/data-and-telemetry.md +19 -21
  320. package/docs/reference/tasks.md +105 -39
  321. package/docs/reference/workflow-schema.md +14 -18
  322. package/docs/reference/workflows.md +6 -9
  323. package/package.json +1 -1
  324. package/schemas/akm-config.json +87 -754
  325. package/dist/assets/improve-strategies/graph-refresh.json +0 -15
  326. package/dist/assets/prompts/contradiction-judge.md +0 -33
  327. package/dist/assets/prompts/graph-extract-system.md +0 -1
  328. package/dist/assets/prompts/graph-extract-user-prompt.md +0 -35
  329. package/dist/assets/prompts/metadata-enhance-system.md +0 -1
  330. package/dist/assets/tasks/improve/akm-graph-refresh-weekly.yml +0 -4
  331. package/dist/commands/health/advisories.js +0 -150
  332. package/dist/commands/health/metrics.js +0 -329
  333. package/dist/commands/health/surfaces.js +0 -102
  334. package/dist/commands/improve/anti-collapse.js +0 -83
  335. package/dist/commands/improve/collapse-detector.js +0 -432
  336. package/dist/commands/improve/consolidate/eligibility.js +0 -48
  337. package/dist/commands/improve/consolidate/merge.js +0 -146
  338. package/dist/commands/improve/distill/promote-memory.js +0 -329
  339. package/dist/commands/improve/distill/quality-gate.js +0 -500
  340. package/dist/commands/improve/memory/memory-contradiction-detect.js +0 -291
  341. package/dist/commands/improve/proposal-envelope.js +0 -31
  342. package/dist/commands/improve/run-context.js +0 -123
  343. package/dist/commands/improve/shared.js +0 -21
  344. package/dist/commands/improve/source-identity.js +0 -28
  345. package/dist/commands/improve/triage.js +0 -96
  346. package/dist/commands/proposal/drain-policies.js +0 -151
  347. package/dist/commands/sources/update-transaction.js +0 -220
  348. package/dist/core/action-contributors.js +0 -28
  349. package/dist/core/config/config-version-shim.js +0 -101
  350. package/dist/core/fs-txn.js +0 -405
  351. package/dist/core/lexical-score.js +0 -25
  352. package/dist/core/maintenance-barrier.js +0 -167
  353. package/dist/execution/executable-identity.js +0 -105
  354. package/dist/execution/guarded-source.js +0 -427
  355. package/dist/indexer/db/graph-db.js +0 -444
  356. package/dist/indexer/graph/graph-boost.js +0 -427
  357. package/dist/indexer/graph/graph-dedup.js +0 -95
  358. package/dist/indexer/graph/graph-extraction.js +0 -1182
  359. package/dist/indexer/search/name-match.js +0 -35
  360. package/dist/indexer/search/ranking-contributors.js +0 -515
  361. package/dist/indexer/search/ranking-types.js +0 -4
  362. package/dist/indexer/walk/project-context.js +0 -192
  363. package/dist/integrations/agent/execution-cascade.js +0 -566
  364. package/dist/integrations/agent/execution-definitions.js +0 -202
  365. package/dist/integrations/agent/execution-lowering.js +0 -841
  366. package/dist/integrations/agent/execution-preparation.js +0 -98
  367. package/dist/integrations/agent/inline-execution.js +0 -74
  368. package/dist/llm/graph-extract.js +0 -872
  369. package/dist/llm/metadata-enhance.js +0 -96
  370. package/dist/registry/create-provider-registry.js +0 -29
  371. package/dist/registry/pinned-request-helper.js +0 -247
  372. package/dist/registry/pinned-transport.js +0 -717
  373. package/dist/sources/providers/index.js +0 -14
  374. package/dist/storage/engines/sqlite-migrations.js +0 -271
  375. package/dist/storage/repositories/canaries-repository.js +0 -107
  376. package/dist/storage/repositories/embedding-salvage-repository.js +0 -184
  377. package/dist/storage/repositories/registry-cache.js +0 -113
  378. package/dist/tasks/scheduler-sync-preview.js +0 -52
  379. package/dist/tasks/source/task-to-v3.js +0 -507
  380. package/dist/workflows/freeze/resolve-steps.js +0 -86
  381. package/dist/workflows/freeze/source-freeze.js +0 -64
  382. package/dist/workflows/ir/compile.js +0 -321
  383. package/dist/workflows/ir/environment-v4.js +0 -330
  384. package/dist/workflows/ir/freeze-v4.js +0 -153
  385. package/dist/workflows/ir/schema-v4.js +0 -745
  386. package/dist/workflows/ir/schema.js +0 -354
  387. package/dist/workflows/program/schema.js +0 -78
  388. package/dist/workflows/runtime/checkin.js +0 -57
  389. package/dist/workflows/runtime/plan-classifier.js +0 -196
  390. package/dist/workflows/runtime/unit-checkin.js +0 -45
  391. package/dist/workflows/runtime/unit-phases.js +0 -20
  392. package/dist/workflows/schema.js +0 -4
  393. package/dist/workflows/source-ir/compile.js +0 -200
  394. package/dist/workflows/source-ir/program.js +0 -50
  395. package/dist/workflows/source-ir/result.js +0 -26
  396. package/dist/workflows/source-ir/schema.js +0 -786
  397. package/dist/workflows/source-ir/triggers.js +0 -79
  398. package/dist/workflows/source-ir/uses.js +0 -40
  399. package/dist/workflows/validator.js +0 -60
@@ -19,15 +19,16 @@ import { resolveStashDir } from "../../core/common.js";
19
19
  import { generatedContentRejection } from "../../core/content-safety.js";
20
20
  import { UsageError } from "../../core/errors.js";
21
21
  import { appendEvent } from "../../core/events.js";
22
+ import { redactSensitiveText } from "../../core/redaction.js";
22
23
  import { resolveStandardsContext } from "../../core/standards/resolve-standards-context.js";
23
24
  import { warn } from "../../core/warn.js";
24
25
  import { deriveEntryProvenance } from "../../indexer/installations.js";
25
26
  import { fallbackAnnouncement } from "../../integrations/agent/engine-fallback.js";
26
- import { acquireLoweredExecutionDispatchLease, dispatchLoweredExecutionRequest, disposeLoweredExecutionDispatchLease, lowerResolvedExecutionRequest, redactWithLoweredExecutionDispatchLease, } from "../../integrations/agent/execution-lowering.js";
27
- import { prepareInlineExecution } from "../../integrations/agent/inline-execution.js";
27
+ import { buildExecution, resolveExecution } from "../../integrations/agent/execution.js";
28
28
  import { buildProposePrompt, parseAgentProposalPayload } from "../../integrations/agent/prompts.js";
29
+ import { assertRunnerCredentials, collectDispatchSensitiveValues, runExecution, } from "../../integrations/agent/runner-dispatch.js";
29
30
  import { baseFailureFields, enoentHintMessage, isEnoentFailure } from "../agent/agent-support.js";
30
- import { createProposal, isProposalSkipped, resolveProposalQueueTarget, } from "./repository.js";
31
+ import { createProposal, resolveProposalQueueTarget, } from "./repository.js";
31
32
  function failureEnvelope(result, type, name, engine, notices, fallbackReason = "non_zero_exit") {
32
33
  return {
33
34
  ...baseFailureFields(result, fallbackReason),
@@ -41,56 +42,43 @@ function failureEnvelope(result, type, name, engine, notices, fallbackReason = "
41
42
  function noticeFields(notices) {
42
43
  return notices.length > 0 ? { notices } : {};
43
44
  }
44
- /** Materialize required credentials through the real runner boundary, without provider I/O. */
45
- async function preflightProposalDispatch(lowered, runOptions) {
46
- return acquireLoweredExecutionDispatchLease(lowered, {
47
- ...(runOptions.envSource ? { envSource: runOptions.envSource } : {}),
48
- });
49
- }
50
45
  /** Resolve, lower, and dispatch the already-rendered proposal prompt. */
51
46
  async function dispatchProposalPrompt(prompt, config, options, onDispatchReady) {
52
47
  const current = {
53
48
  ...(options.engine !== undefined ? { engine: options.engine } : {}),
54
49
  ...(options.timeoutMs !== undefined ? { timeout: options.timeoutMs } : {}),
55
50
  };
56
- const prepared = prepareInlineExecution({
51
+ const prepared = resolveExecution({
57
52
  content: prompt,
58
53
  config,
59
- invocationKind: "direct",
60
54
  ...(Object.keys(current).length > 0 ? { current } : {}),
61
55
  });
62
56
  const engineName = prepared.request.engine.name;
63
57
  const announcement = fallbackAnnouncement(prepared.fallbackEngineName, engineName);
64
58
  if (announcement)
65
59
  warn(announcement);
66
- const lowered = lowerResolvedExecutionRequest(prepared.request, prepared.config);
60
+ const lowered = buildExecution(prepared.request, prepared.runner);
67
61
  const interactive = !options.runAgentOptions?.spawn;
68
62
  const runOptions = {
69
63
  stdio: interactive ? "interactive" : "captured",
70
64
  parseOutput: "text",
71
65
  ...(options.runAgentOptions ?? {}),
72
66
  };
73
- const lease = await preflightProposalDispatch(lowered, runOptions);
74
- // Materialize/validate every required symbolic credential before the entry
75
- // event opens durable state. Provider/runtime failures still occur after the
76
- // event, preserving the command-attempt observability contract.
77
- try {
78
- onDispatchReady();
79
- options.onDispatchReady?.();
80
- const result = await dispatchLoweredExecutionRequest(lowered, { runOptions, lease });
81
- return {
82
- result,
83
- engineName,
84
- ...(lowered.runner.kind === "llm" ? {} : { engineBin: lowered.runner.profile.bin }),
85
- notices: lowered.notices,
86
- lease,
87
- interactive,
88
- };
89
- }
90
- catch (error) {
91
- disposeLoweredExecutionDispatchLease(lease);
92
- throw error;
93
- }
67
+ // Validate every required symbolic credential before the entry event opens
68
+ // durable state. Provider/runtime failures still occur after the event,
69
+ // preserving the command-attempt observability contract.
70
+ assertRunnerCredentials(lowered.runner, runOptions.envSource);
71
+ onDispatchReady();
72
+ options.onDispatchReady?.();
73
+ const result = await runExecution(lowered, { runOptions });
74
+ return {
75
+ result,
76
+ engineName,
77
+ ...(lowered.runner.kind === "llm" ? {} : { engineBin: lowered.runner.profile.bin }),
78
+ notices: lowered.notices,
79
+ sensitiveValues: collectDispatchSensitiveValues(lowered.runner, {}, runOptions.envSource),
80
+ interactive,
81
+ };
94
82
  }
95
83
  /**
96
84
  * WI-8.5a — the fully-qualified `bundle//conceptId` item_ref for a proposal
@@ -158,153 +146,139 @@ export async function akmPropose(options) {
158
146
  // no synthetic persona, conversation turn, schema, or tool selection is
159
147
  // introduced while it crosses the shared resolved/lowered boundary.
160
148
  const dispatch = await dispatchProposalPrompt(prompt, config, options, () => emitProposeInvoked(target.source, options));
161
- const { result, engineName, notices, lease } = dispatch;
162
- try {
163
- if (!result.ok) {
164
- // B3: ENOENT / not-found gives an actionable hint.
165
- if (isEnoentFailure(result)) {
166
- return {
167
- ...failureEnvelope(result, options.type, options.name, engineName, notices),
168
- error: enoentHintMessage(dispatch.engineBin ?? engineName),
169
- };
170
- }
171
- return failureEnvelope(result, options.type, options.name, engineName, notices);
172
- }
173
- // 5. Resolve the proposal content.
174
- // Path A: opencode wrote the draft file — read it directly (no stdout parse).
175
- // Path B: fallback to stdout JSON parse for non-file-writing agents.
176
- let payload;
177
- if (fs.existsSync(resolvedDraftPath)) {
178
- const draftContent = fs.readFileSync(resolvedDraftPath, "utf8");
179
- fs.unlinkSync(resolvedDraftPath);
180
- payload = {
181
- ref: proposeItemRef(target.source, options.type, options.name),
182
- content: draftContent,
149
+ const { result, engineName, notices, sensitiveValues } = dispatch;
150
+ if (!result.ok) {
151
+ // B3: ENOENT / not-found gives an actionable hint.
152
+ if (isEnoentFailure(result)) {
153
+ return {
154
+ ...failureEnvelope(result, options.type, options.name, engineName, notices),
155
+ error: enoentHintMessage(dispatch.engineBin ?? engineName),
183
156
  };
184
157
  }
185
- else {
186
- // B1: When interactive mode was used and stdout is empty, the agent did not
187
- // write the draft file and stdout was not captured — surface an actionable error.
188
- if (dispatch.interactive && (result.stdout ?? "") === "") {
189
- return {
190
- schemaVersion: 2,
191
- ok: false,
192
- reason: "parse_error",
193
- error: "Agent did not write draft file and stdout was not captured (interactive mode). Check that the agent CLI understood the file-write instruction, or configure a headless profile with stdio: 'captured'.",
194
- type: options.type,
195
- name: options.name,
196
- engine: engineName,
197
- exitCode: result.exitCode,
198
- ...(result.stderr ? { stderr: result.stderr } : {}),
199
- ...noticeFields(notices),
200
- };
201
- }
202
- try {
203
- payload = parseAgentProposalPayload(result.stdout ?? "");
204
- }
205
- catch (err) {
206
- return {
207
- schemaVersion: 2,
208
- ok: false,
209
- reason: "parse_error",
210
- error: err instanceof Error ? err.message : String(err),
211
- type: options.type,
212
- name: options.name,
213
- engine: engineName,
214
- exitCode: result.exitCode,
215
- stdout: result.stdout,
216
- ...(result.stderr ? { stderr: result.stderr } : {}),
217
- ...noticeFields(notices),
218
- };
219
- }
220
- }
221
- const unsafeContent = generatedContentRejection(payload.content, redactWithLoweredExecutionDispatchLease(lease, payload.content));
222
- if (unsafeContent) {
158
+ return failureEnvelope(result, options.type, options.name, engineName, notices);
159
+ }
160
+ // 5. Resolve the proposal content.
161
+ // Path A: opencode wrote the draft file — read it directly (no stdout parse).
162
+ // Path B: fallback to stdout JSON parse for non-file-writing agents.
163
+ let payload;
164
+ if (fs.existsSync(resolvedDraftPath)) {
165
+ const draftContent = fs.readFileSync(resolvedDraftPath, "utf8");
166
+ fs.unlinkSync(resolvedDraftPath);
167
+ payload = {
168
+ ref: proposeItemRef(target.source, options.type, options.name),
169
+ content: draftContent,
170
+ };
171
+ }
172
+ else {
173
+ // B1: When interactive mode was used and stdout is empty, the agent did not
174
+ // write the draft file and stdout was not captured — surface an actionable error.
175
+ if (dispatch.interactive && (result.stdout ?? "") === "") {
223
176
  return {
224
177
  schemaVersion: 2,
225
178
  ok: false,
226
179
  reason: "parse_error",
227
- error: unsafeContent,
180
+ error: "Agent did not write draft file and stdout was not captured (interactive mode). Check that the agent CLI understood the file-write instruction, or configure a headless profile with stdio: 'captured'.",
228
181
  type: options.type,
229
182
  name: options.name,
230
183
  engine: engineName,
231
184
  exitCode: result.exitCode,
185
+ ...(result.stderr ? { stderr: result.stderr } : {}),
232
186
  ...noticeFields(notices),
233
187
  };
234
188
  }
235
- // 6. Insert the proposal. Note: we allow the agent's `ref` to normalise the
236
- // asset name (e.g. path-cleanup), but only after validating that the ref is
237
- // well-formed and the type still matches the requested type.
238
- const expectedRef = proposeItemRef(target.source, options.type, options.name);
239
- let ref = expectedRef;
240
- if (payload.ref) {
241
- let parsedRef;
242
- try {
243
- parsedRef = parseRefInput(payload.ref);
244
- }
245
- catch (err) {
246
- return {
247
- schemaVersion: 2,
248
- ok: false,
249
- reason: "parse_error",
250
- error: err instanceof Error ? err.message : String(err),
251
- type: options.type,
252
- name: options.name,
253
- engine: engineName,
254
- exitCode: result.exitCode,
255
- stdout: result.stdout,
256
- ...(result.stderr ? { stderr: result.stderr } : {}),
257
- ...noticeFields(notices),
258
- };
259
- }
260
- if (parsedRef.type !== options.type) {
261
- return {
262
- schemaVersion: 2,
263
- ok: false,
264
- reason: "parse_error",
265
- error: `Agent returned ref type ${parsedRef.type} but expected ${options.type}`,
266
- type: options.type,
267
- name: options.name,
268
- engine: engineName,
269
- exitCode: result.exitCode,
270
- stdout: result.stdout,
271
- ...(result.stderr ? { stderr: result.stderr } : {}),
272
- ...noticeFields(notices),
273
- };
274
- }
275
- ref = proposeItemRef(target.source, parsedRef.type, parsedRef.name);
189
+ try {
190
+ payload = parseAgentProposalPayload(result.stdout ?? "");
276
191
  }
277
- const createInput = {
278
- ref,
279
- source: "propose",
280
- sourceRun: `propose-${Date.now()}`,
281
- target,
282
- // User-initiated proposals always bypass dedup/cooldown guards — the
283
- // operator is explicitly asking for a new proposal.
284
- force: true,
285
- payload: {
286
- content: payload.content,
287
- ...(payload.frontmatter ? { frontmatter: payload.frontmatter } : {}),
288
- },
289
- };
290
- const proposalResult = createProposal(stash, createInput, options.ctx);
291
- // With force:true, the result is always a Proposal (never skipped).
292
- if (isProposalSkipped(proposalResult)) {
293
- // Should never happen when force:true, but be defensive.
294
- throw new Error(`Unexpected skip in propose command: ${proposalResult.message}`);
192
+ catch (err) {
193
+ return {
194
+ schemaVersion: 2,
195
+ ok: false,
196
+ reason: "parse_error",
197
+ error: err instanceof Error ? err.message : String(err),
198
+ type: options.type,
199
+ name: options.name,
200
+ engine: engineName,
201
+ exitCode: result.exitCode,
202
+ stdout: result.stdout,
203
+ ...(result.stderr ? { stderr: result.stderr } : {}),
204
+ ...noticeFields(notices),
205
+ };
295
206
  }
296
- const proposal = proposalResult;
207
+ }
208
+ const unsafeContent = generatedContentRejection(payload.content, redactSensitiveText(payload.content, sensitiveValues));
209
+ if (unsafeContent) {
297
210
  return {
298
211
  schemaVersion: 2,
299
- ok: true,
300
- proposal,
301
- ref: proposal.ref,
212
+ ok: false,
213
+ reason: "parse_error",
214
+ error: unsafeContent,
215
+ type: options.type,
216
+ name: options.name,
302
217
  engine: engineName,
303
- durationMs: result.durationMs,
218
+ exitCode: result.exitCode,
304
219
  ...noticeFields(notices),
305
220
  };
306
221
  }
307
- finally {
308
- disposeLoweredExecutionDispatchLease(lease);
222
+ // 6. Insert the proposal. Note: we allow the agent's `ref` to normalise the
223
+ // asset name (e.g. path-cleanup), but only after validating that the ref is
224
+ // well-formed and the type still matches the requested type.
225
+ const expectedRef = proposeItemRef(target.source, options.type, options.name);
226
+ let ref = expectedRef;
227
+ if (payload.ref) {
228
+ let parsedRef;
229
+ try {
230
+ parsedRef = parseRefInput(payload.ref);
231
+ }
232
+ catch (err) {
233
+ return {
234
+ schemaVersion: 2,
235
+ ok: false,
236
+ reason: "parse_error",
237
+ error: err instanceof Error ? err.message : String(err),
238
+ type: options.type,
239
+ name: options.name,
240
+ engine: engineName,
241
+ exitCode: result.exitCode,
242
+ stdout: result.stdout,
243
+ ...(result.stderr ? { stderr: result.stderr } : {}),
244
+ ...noticeFields(notices),
245
+ };
246
+ }
247
+ if (parsedRef.type !== options.type) {
248
+ return {
249
+ schemaVersion: 2,
250
+ ok: false,
251
+ reason: "parse_error",
252
+ error: `Agent returned ref type ${parsedRef.type} but expected ${options.type}`,
253
+ type: options.type,
254
+ name: options.name,
255
+ engine: engineName,
256
+ exitCode: result.exitCode,
257
+ stdout: result.stdout,
258
+ ...(result.stderr ? { stderr: result.stderr } : {}),
259
+ ...noticeFields(notices),
260
+ };
261
+ }
262
+ ref = proposeItemRef(target.source, parsedRef.type, parsedRef.name);
309
263
  }
264
+ const createInput = {
265
+ ref,
266
+ source: "propose",
267
+ sourceRun: `propose-${Date.now()}`,
268
+ target,
269
+ payload: {
270
+ content: payload.content,
271
+ ...(payload.frontmatter ? { frontmatter: payload.frontmatter } : {}),
272
+ },
273
+ };
274
+ const proposal = createProposal(stash, createInput, options.ctx);
275
+ return {
276
+ schemaVersion: 2,
277
+ ok: true,
278
+ proposal,
279
+ ref: proposal.ref,
280
+ engine: engineName,
281
+ durationMs: result.durationMs,
282
+ ...noticeFields(notices),
283
+ };
310
284
  }