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,31 +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
- * `emitProposal` — the proposal-envelope facade (D10 / R7).
6
- *
7
- * Every improve verb that raises a proposal (revise = reflect, learn =
8
- * distill/promote/extract, consolidate = the merge/promote ops) routes it
9
- * through this single seam instead of calling {@link createProposal} directly.
10
- *
11
- * Since WI-6.2 the envelope carries `changes: FileChange[]` + `beforeHash`:
12
- * `createProposal` derives a single-entry change set (whose `after` IS
13
- * `payload.content`) and the mint-time before-state hash for every proposal
14
- * emitted through this seam — producers stay payload-shaped and get the
15
- * envelope for free. The facade remains a pass-through: it does NOT synthesise
16
- * `sourceRun` or mutate the input — each emit site owns its own
17
- * `source`/`sourceRun`/attribution.
18
- *
19
- * Pinned by `tests/commands/improve/proposal-envelope.test.ts`.
20
- */
21
- import { createProposal, } from "../proposal/repository.js";
22
- /**
23
- * Emit a proposal through the single improve envelope seam. Equivalent to
24
- * `createProposal(ctx.stashDir, input, ctx.proposalsCtx)`; returns either the
25
- * persisted {@link import("../proposal/repository.js").Proposal} or a
26
- * {@link import("../proposal/repository.js").CreateProposalSkipped} record when a
27
- * dedup/cooldown guard fires (detect with `isProposalSkipped`).
28
- */
29
- export function emitProposal(ctx, input) {
30
- return createProposal(ctx.stashDir, input, ctx.proposalsCtx);
31
- }
@@ -1,123 +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
- * `RunContext` — the shared, run-scoped carrier for the three improve verbs
6
- * (revise = reflect, learn = extract/distill/inference, consolidate = the
7
- * memory-tier ops; D17). WI-7.5–7.8 decompose the improve god-functions into
8
- * named passes that thread a `RunContext` instead of long positional argument
9
- * lists.
10
- *
11
- * ## The D6 read-once seam
12
- *
13
- * `readAsset` is a memoizing file-read seam whose memo is **NEVER run-wide**
14
- * (D6 / top-risk #7: a run-wide memo would serve prep-time bytes after a mid-run
15
- * write). The guarantee is structural here, not merely conventional:
16
- *
17
- * - The **base** context returned by {@link createRunContext} has NO active
18
- * memo. `readAsset` on it always reads through to disk, so it can never go
19
- * stale — the safe default.
20
- * - {@link RunContext.withFreshAssetMemo} mints a sibling context that shares
21
- * every run-scoped carrier but owns a FRESH, empty memo. Memoization is
22
- * therefore opt-in per scope:
23
- * * prep's stage-body passes share ONE memo, forked only AFTER the
24
- * mutating pre-loop passes have written their ops to disk, then
25
- * discarded at stage end;
26
- * * reflect and distill each fork their own memo per verb invocation, so
27
- * their reads still happen at invoke time (not prep time).
28
- * - Within a memo scope, {@link RunContext.writeAsset} writes through to disk
29
- * AND refreshes the memo, and {@link RunContext.noteAssetWrite} drops a memo
30
- * entry for a path written out-of-band, so a subsequent `readAsset` of the
31
- * same path returns POST-write bytes (e.g. the distill in-loop salience
32
- * stamp at `distill.ts:816`).
33
- *
34
- * The contract is pinned by `tests/commands/improve/run-context.test.ts`.
35
- *
36
- * This module deliberately mints only the carrier + seam. Adoption at the verb
37
- * call sites lands in WI-7.5 (reflect/distill), WI-7.6 (preparation), and
38
- * WI-7.7 (akmImprove/extract). It does NOT change `EventsContext` shape and does
39
- * NOT thread a db handle into `ProposalsContext` (D14).
40
- */
41
- import fs from "node:fs";
42
- import path from "node:path";
43
- import { resolveStashDir } from "../../core/common.js";
44
- import { recordWrittenPath } from "../../core/write-provenance.js";
45
- /**
46
- * Build a `RunContext` over the given carriers with the supplied memo (or `null`
47
- * for the non-memoizing base context). Kept private so the only way to obtain a
48
- * memoizing context is {@link RunContext.withFreshAssetMemo}.
49
- */
50
- function buildRunContext(carriers, memo) {
51
- const memoKey = (filePath) => path.resolve(filePath);
52
- return {
53
- stashDir: carriers.stashDir,
54
- config: carriers.config,
55
- eventsCtx: carriers.eventsCtx,
56
- proposalsCtx: carriers.proposalsCtx,
57
- chat: carriers.chat,
58
- getLlmRunner: carriers.getLlmRunner,
59
- sourceRun: carriers.sourceRun,
60
- dryRun: carriers.dryRun,
61
- signal: carriers.signal,
62
- now: carriers.now,
63
- readAsset(filePath) {
64
- if (!memo)
65
- return carriers.readFile(filePath);
66
- const key = memoKey(filePath);
67
- const cached = memo.get(key);
68
- if (cached !== undefined)
69
- return cached;
70
- const bytes = carriers.readFile(filePath);
71
- memo.set(key, bytes);
72
- return bytes;
73
- },
74
- writeAsset(filePath, content) {
75
- carriers.writeFile(filePath, content);
76
- // #652: journal the write for the run's write-provenance set. Recorded
77
- // here (not in the default `writeFile` carrier) so an injected IO seam is
78
- // attributed identically to a real `fs` write.
79
- recordWrittenPath(filePath);
80
- memo?.set(memoKey(filePath), content);
81
- },
82
- noteAssetWrite(filePath) {
83
- memo?.delete(memoKey(filePath));
84
- },
85
- withFreshAssetMemo() {
86
- return buildRunContext(carriers, new Map());
87
- },
88
- };
89
- }
90
- /**
91
- * Create the base `RunContext` for an improve run. Its `readAsset` is
92
- * non-memoizing (always fresh); call {@link RunContext.withFreshAssetMemo} to
93
- * enter a memoized pass/invocation scope.
94
- */
95
- export function createRunContext(init) {
96
- const carriers = {
97
- stashDir: init.stashDir,
98
- config: init.config,
99
- eventsCtx: init.eventsCtx,
100
- proposalsCtx: init.proposalsCtx,
101
- chat: init.chat,
102
- getLlmRunner: init.getLlmRunner ?? (() => null),
103
- sourceRun: init.sourceRun,
104
- dryRun: init.dryRun,
105
- signal: init.signal,
106
- now: init.now ?? Date.now,
107
- readFile: init.io?.readFile ?? ((filePath) => fs.readFileSync(filePath, "utf8")),
108
- writeFile: init.io?.writeFile ?? ((filePath, content) => fs.writeFileSync(filePath, content, "utf8")),
109
- };
110
- return buildRunContext(carriers, null);
111
- }
112
- /**
113
- * Resolve the run's stash directory at the improve builder boundary: the
114
- * explicit `options.stashDir` when the caller passed one, else the ambient
115
- * resolveStashDir() fallback. WI-9.10d: this is the SINGLE resolveStashDir
116
- * call site on the improve path — the verb entries call THIS instead of
117
- * resolveStashDir directly, so the ambient read lives only in the builder
118
- * module. (The CLI-wide resolveStashDir sweep for non-improve commands is a
119
- * deferred follow-on — see the chunk-9 ledger WI-9.10d entry.)
120
- */
121
- export function resolveRunStashDir(explicitStashDir) {
122
- return explicitStashDir ?? resolveStashDir();
123
- }
@@ -1,31 +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
- * Small pure helpers shared across the improve command family. Extracted to
6
- * delete byte-identical duplication that previously lived inline in the
7
- * per-process passes (the whole-corpus synthesis pass removed in 0.9.0 and
8
- * the procedural-compilation pass removed in 0.9.0). Keep this file free of
9
- * I/O and of any improve-specific state — these are leaf utilities.
10
- */
11
- /**
12
- * Cap on how many prior rejected proposals for a ref are injected as
13
- * Reflexion-style verbal-RL context so the LLM avoids regenerating refusals.
14
- * Shared by both the revise (reflect) and learn (distill) verbs, which
15
- * previously declared this constant independently.
16
- */
17
- export const MAX_REJECTED_PROPOSALS = 3;
18
- /** Normalize an unknown thrown value to a human-readable message string. */
19
- export function errMessage(e) {
20
- return e instanceof Error ? e.message : String(e);
21
- }
22
- /**
23
- * Slugify an asset ref for use in eval-case / rejection filenames: lowercase,
24
- * non-alphanumerics collapsed to `-`, capped at 60 characters.
25
- */
26
- export function refSlug(ref) {
27
- return ref
28
- .replace(/[^a-z0-9]/gi, "-")
29
- .toLowerCase()
30
- .slice(0, 60);
31
- }
@@ -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
- // ── Durable improve-state keys ───────────────────────────────────────────────
5
- //
6
- // Every improve ref uses the current grammar (a short conceptId), and the durable
7
- // state key is the resolved index entry's `item_ref` when the planner supplied
8
- // one, else the conceptId `ref` itself (`preparation.ts`
9
- // `salienceWriteKey`/`outcomeWriteKey` = `itemRef ?? ref`).
10
- /**
11
- * The durable improve-state key for a ref with no resolved `item_ref` — the
12
- * conceptId `ref` itself.
13
- */
14
- export function durableImproveRef(ref) {
15
- return ref;
16
- }
17
- /** Return the conceptId portion of a durable improve-state key. */
18
- export function bareImproveRef(ref) {
19
- const boundary = ref.indexOf("//");
20
- return boundary >= 0 ? ref.slice(boundary + 2) : ref;
21
- }
22
- /**
23
- * The single durable improve-state key used by both readers and writers.
24
- * Indexed entries use item_ref; direct or provenance-free refs use conceptId.
25
- */
26
- export function improveStateReadRefs(ref, itemRef) {
27
- return [itemRef ?? ref];
28
- }
@@ -1,96 +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
- * Default minimum total score a session must reach to PASS the gate. Tuned
6
- * conservatively: a single real narrative-lesson session, or a procedurally
7
- * dense session, clears it — but pure read-only Q&A does not. Config-overridable
8
- * via `processes.extract.triage.minScore`.
9
- */
10
- export const DEFAULT_TRIAGE_MIN_SCORE = 2;
11
- // Decision / outcome / error narrative markers. Case-insensitive, word-bounded.
12
- const MARKER_RE = /\b(error|failed|fix(?:ed)?|root cause|turns out|because|decided|instead|gotcha|workaround|regress(?:ed)?|broke|TIL)\b/i;
13
- // Edit / commit / file-write markers in tool event text.
14
- const EDIT_COMMIT_RE = /\b(Edit|Write|MultiEdit|git commit|diff)\b/i;
15
- // A substantive turn is an assistant or tool turn whose text is non-trivial.
16
- const SUBSTANTIVE_MIN_CHARS = 40;
17
- /**
18
- * Pure heuristic scorer. Operates only on `data.events`. Each sub-signal is
19
- * normalized to a small bounded contribution; `score` is their sum and
20
- * `pass = score >= minScore`.
21
- *
22
- * Sub-signals:
23
- * - markers: presence of decision/outcome/error keywords across event text
24
- * (capped, narrative-lesson signal).
25
- * - toolDensity: bounded contribution from tool-use events.
26
- * - editCommit: bounded contribution from edit/write/commit events.
27
- * - substantiveRatio: scaled fraction of non-trivial assistant+tool turns,
28
- * filtering pure short Q&A.
29
- *
30
- * toolDensity + editCommit alone can clear DEFAULT_TRIAGE_MIN_SCORE so
31
- * high-action / no-narrative sessions are KEPT.
32
- */
33
- export function scoreSessionTriage(data, minScore) {
34
- const events = data.events;
35
- const total = events.length;
36
- // (a) markers — count word-bounded marker hits across all event text, capped.
37
- let markerHits = 0;
38
- for (const e of events) {
39
- if (MARKER_RE.test(e.text))
40
- markerHits += 1;
41
- }
42
- // Each marker-bearing event contributes 1 point, capped at 2 (a single real
43
- // narrative session clears the bar on markers alone).
44
- const markers = Math.min(markerHits, 2);
45
- // (b) toolDensity — bounded contribution from tool-use events.
46
- let toolEvents = 0;
47
- for (const e of events) {
48
- if (e.role === "tool")
49
- toolEvents += 1;
50
- }
51
- // 0.25 per tool event, capped at 1.5.
52
- const toolDensity = Math.min(toolEvents * 0.25, 1.5);
53
- // (c) editCommit — bounded contribution from edit/write/commit markers on
54
- // events (filePath present, or text matching the edit/commit regex).
55
- let editCommitEvents = 0;
56
- for (const e of events) {
57
- if (e.filePath || EDIT_COMMIT_RE.test(e.text))
58
- editCommitEvents += 1;
59
- }
60
- // 0.25 per edit/commit event, capped at 1.5. Together with toolDensity a
61
- // procedurally dense session reaches well above the default threshold.
62
- const editCommit = Math.min(editCommitEvents * 0.25, 1.5);
63
- // (d) substantiveRatio — scaled fraction of non-trivial assistant+tool turns.
64
- let substantive = 0;
65
- for (const e of events) {
66
- if ((e.role === "assistant" || e.role === "tool") && e.text.length >= SUBSTANTIVE_MIN_CHARS) {
67
- substantive += 1;
68
- }
69
- }
70
- const ratio = total > 0 ? substantive / total : 0;
71
- // Scale to a bounded [0,1] contribution.
72
- const substantiveRatio = Math.min(ratio, 1);
73
- const subscores = { markers, toolDensity, editCommit, substantiveRatio };
74
- const score = markers + toolDensity + editCommit + substantiveRatio;
75
- // Base gate: score must clear the floor.
76
- const pass = score >= minScore;
77
- return {
78
- pass,
79
- score,
80
- subscores,
81
- ...(pass ? {} : { reason: "low_signal" }),
82
- };
83
- }
84
- /**
85
- * Resolve the effective triage config from the extract process config. Mirrors
86
- * the minContentChars resolution style in akmExtract.
87
- *
88
- * Default-off: `enabled` is FALSE unless `triage.enabled === true`. `minScore`
89
- * defaults to {@link DEFAULT_TRIAGE_MIN_SCORE}.
90
- */
91
- export function resolveTriageConfig(extractProcess) {
92
- const triage = extractProcess?.triage;
93
- const enabled = triage?.enabled === true;
94
- const minScore = typeof triage?.minScore === "number" ? triage.minScore : DEFAULT_TRIAGE_MIN_SCORE;
95
- return { enabled, minScore };
96
- }
@@ -1,151 +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
- * Built-in deterministic triage policy presets (Proposal-Queue Triage, §3.1).
6
- *
7
- * These are the *only* "rule schema" we ship. Custom needs are served by the
8
- * single `--policy <path>` escape hatch, which zod-validates an external policy
9
- * file — not by a config-embedded rule engine (see §9, rejected alternatives).
10
- *
11
- * | preset | accepts | rejects | leaves pending |
12
- * |------------------|-----------------------------------------------------------|-------------|----------------------------------------------------|
13
- * | `personal-stash` | extract (real content); reflect ≤80 lines; consolidate | empty diffs | consolidate mid-band, distill dups, contradictions |
14
- * | `conservative` | small extract + consolidate only | empty diffs | everything else |
15
- * | `manual` | nothing | empty diffs | everything else |
16
- */
17
- import fs from "node:fs";
18
- import { z } from "zod";
19
- import { UsageError } from "../../core/errors.js";
20
- import { warnOnce } from "../../core/warn.js";
21
- import { PROPOSAL_SOURCES } from "./repository.js";
22
- // Valid `generator` values for a drain rule are exactly the canonical proposal
23
- // `source` values (see {@link PROPOSAL_SOURCES} in src/commands/proposal/repository.ts). The
24
- // engine matches rules via `policy.accept.find(r => r.generator === proposal.source)`,
25
- // so a generator that is not a real source can never match — it would be a
26
- // silent permanent no-op. Validate against the closed set to surface typos.
27
- const GeneratorSchema = z.enum(PROPOSAL_SOURCES, {
28
- errorMap: () => ({
29
- message: `must be one of the known proposal sources: ${PROPOSAL_SOURCES.join(", ")}`,
30
- }),
31
- });
32
- // ---------------------------------------------------------------------------
33
- // Built-in presets
34
- // ---------------------------------------------------------------------------
35
- /**
36
- * `personal-stash` encodes the deterministic core of today's hand-rolled
37
- * rubric (the editable `contradicted` memory). It is shipped as a preset, never
38
- * hardcoded policy: edit a copy via `--policy <path>` to tune it.
39
- */
40
- export const PERSONAL_STASH = {
41
- name: "personal-stash",
42
- accept: [
43
- // Extract proposals carry freshly-pulled real content — accept when present,
44
- // but cap the diff for parity with reflect(80)/consolidate(200): an
45
- // arbitrarily large extract should not auto-promote with zero LLM calls.
46
- { generator: "extract", minContentLines: 1, maxDiffLines: 200 },
47
- // Reflect refinements: accept small ones; larger refinements defer to review.
48
- { generator: "reflect", maxDiffLines: 80 },
49
- // Consolidate within the diff band; mid-band lands in `defer` below.
50
- { generator: "consolidate", maxDiffLines: 200 },
51
- ],
52
- rejectEmpty: true,
53
- // Mid-band consolidate, distill duplicates, and contradiction escalations are
54
- // the irreducibly-semantic tail — deferred to the (Phase 3) judgment tier.
55
- defer: ["consolidate", "distill"],
56
- };
57
- /** `conservative` accepts only small, low-risk extract + consolidate proposals. */
58
- export const CONSERVATIVE = {
59
- name: "conservative",
60
- accept: [
61
- { generator: "extract", maxDiffLines: 80, minContentLines: 1 },
62
- { generator: "consolidate", maxDiffLines: 80 },
63
- ],
64
- rejectEmpty: true,
65
- defer: [],
66
- };
67
- /** `manual` accepts nothing; it only clears empty diffs. */
68
- export const MANUAL = {
69
- name: "manual",
70
- accept: [],
71
- rejectEmpty: true,
72
- defer: [],
73
- };
74
- const BUILTIN_POLICIES = {
75
- "personal-stash": PERSONAL_STASH,
76
- conservative: CONSERVATIVE,
77
- manual: MANUAL,
78
- };
79
- /** Names of the built-in presets, for help text and validation messages. */
80
- export const BUILTIN_POLICY_NAMES = Object.keys(BUILTIN_POLICIES);
81
- // ---------------------------------------------------------------------------
82
- // Custom policy file schema (`--policy <path>`)
83
- // ---------------------------------------------------------------------------
84
- const DrainAcceptRuleSchema = z
85
- .object({
86
- generator: GeneratorSchema,
87
- maxDiffLines: z.number().int().positive().optional(),
88
- minContentLines: z.number().int().nonnegative().optional(),
89
- requireType: z.string().optional(),
90
- })
91
- .passthrough();
92
- const DrainPolicySchema = z
93
- .object({
94
- name: z.string().min(1),
95
- accept: z.array(DrainAcceptRuleSchema),
96
- rejectEmpty: z.boolean(),
97
- defer: z.array(GeneratorSchema),
98
- })
99
- .passthrough();
100
- function warnIgnoredPolicyKeys(filePath, label, raw, knownKeys) {
101
- if (!raw || typeof raw !== "object" || Array.isArray(raw))
102
- return;
103
- const extra = Object.keys(raw).filter((key) => !knownKeys.includes(key));
104
- if (extra.length === 0)
105
- return;
106
- warnOnce(`drain-policy-ignored-keys:${filePath}:${label}:${extra.join(",")}`, `[proposal] Policy file "${filePath}" has ${label} field(s) akm does not recognize and ignores: ${extra.join(", ")}. Check for a typo, or the file may be written for a newer akm version.`);
107
- }
108
- const DRAIN_POLICY_KNOWN_KEYS = Object.keys(DrainPolicySchema.shape);
109
- const DRAIN_ACCEPT_RULE_KNOWN_KEYS = Object.keys(DrainAcceptRuleSchema.shape);
110
- /**
111
- * Resolve a `--policy <preset|path>` argument into a {@link DrainPolicy}.
112
- *
113
- * - A bare preset name (`personal-stash` / `conservative` / `manual`) returns
114
- * the matching built-in.
115
- * - Anything else is treated as a filesystem path to a JSON policy file, which
116
- * is read and zod-validated.
117
- *
118
- * Throws a {@link UsageError} on an unknown preset, a missing file, or a file
119
- * that fails schema validation.
120
- */
121
- export function resolveDrainPolicy(arg) {
122
- const value = (arg ?? "personal-stash").trim();
123
- const builtin = BUILTIN_POLICIES[value];
124
- if (builtin)
125
- return builtin;
126
- // Treat as a path to a custom policy file.
127
- if (!fs.existsSync(value)) {
128
- throw new UsageError(`Unknown policy "${value}". Use a built-in preset (${BUILTIN_POLICY_NAMES.join(", ")}) or a path to a policy file.`, "INVALID_FLAG_VALUE");
129
- }
130
- let parsed;
131
- try {
132
- parsed = JSON.parse(fs.readFileSync(value, "utf8"));
133
- }
134
- catch (err) {
135
- throw new UsageError(`Could not parse policy file "${value}": ${err instanceof Error ? err.message : String(err)}`, "INVALID_FLAG_VALUE");
136
- }
137
- const validated = DrainPolicySchema.safeParse(parsed);
138
- if (!validated.success) {
139
- throw new UsageError(`Invalid policy file "${value}": ${validated.error.issues.map((i) => `${i.path.join(".") || "<root>"}: ${i.message}`).join("; ")}`, "INVALID_FLAG_VALUE");
140
- }
141
- warnIgnoredPolicyKeys(value, "top-level", parsed, DRAIN_POLICY_KNOWN_KEYS);
142
- if (parsed &&
143
- typeof parsed === "object" &&
144
- !Array.isArray(parsed) &&
145
- Array.isArray(parsed.accept)) {
146
- parsed.accept.forEach((rule, index) => {
147
- warnIgnoredPolicyKeys(value, `accept[${index}]`, rule, DRAIN_ACCEPT_RULE_KNOWN_KEYS);
148
- });
149
- }
150
- return validated.data;
151
- }