wingfoil 0.2.2 → 0.3.0

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 (454) hide show
  1. package/README.md +83 -43
  2. package/dist/agent/discovery.d.ts +72 -0
  3. package/dist/agent/discovery.d.ts.map +1 -0
  4. package/dist/agent/discovery.js +210 -0
  5. package/dist/agent/discovery.js.map +1 -0
  6. package/dist/agent/execute.d.ts +206 -0
  7. package/dist/agent/execute.d.ts.map +1 -0
  8. package/dist/agent/execute.js +581 -0
  9. package/dist/agent/execute.js.map +1 -0
  10. package/dist/agent/index.d.ts +23 -0
  11. package/dist/agent/index.d.ts.map +1 -0
  12. package/dist/agent/index.js +85 -0
  13. package/dist/agent/index.js.map +1 -0
  14. package/dist/agent/launch.d.ts +133 -0
  15. package/dist/agent/launch.d.ts.map +1 -0
  16. package/dist/agent/launch.js +380 -0
  17. package/dist/agent/launch.js.map +1 -0
  18. package/dist/agent/manifest.d.ts +30 -0
  19. package/dist/agent/manifest.d.ts.map +1 -0
  20. package/dist/agent/manifest.js +93 -0
  21. package/dist/agent/manifest.js.map +1 -0
  22. package/dist/agent/placeholders.d.ts +49 -0
  23. package/dist/agent/placeholders.d.ts.map +1 -0
  24. package/dist/agent/placeholders.js +177 -0
  25. package/dist/agent/placeholders.js.map +1 -0
  26. package/dist/agent/run-log.d.ts +254 -0
  27. package/dist/agent/run-log.d.ts.map +1 -0
  28. package/dist/agent/run-log.js +612 -0
  29. package/dist/agent/run-log.js.map +1 -0
  30. package/dist/agent/schema.d.ts +100 -0
  31. package/dist/agent/schema.d.ts.map +1 -0
  32. package/dist/agent/schema.js +89 -0
  33. package/dist/agent/schema.js.map +1 -0
  34. package/dist/agent/step.d.ts +41 -0
  35. package/dist/agent/step.d.ts.map +1 -0
  36. package/dist/agent/step.js +95 -0
  37. package/dist/agent/step.js.map +1 -0
  38. package/dist/build-info.json +4 -0
  39. package/dist/cli/error.d.ts +11 -2
  40. package/dist/cli/error.d.ts.map +1 -1
  41. package/dist/cli/error.js +27 -6
  42. package/dist/cli/error.js.map +1 -1
  43. package/dist/cli/exit.d.ts +33 -3
  44. package/dist/cli/exit.d.ts.map +1 -1
  45. package/dist/cli/exit.js +54 -3
  46. package/dist/cli/exit.js.map +1 -1
  47. package/dist/cli/index.d.ts +1 -1
  48. package/dist/cli/index.d.ts.map +1 -1
  49. package/dist/cli/index.js +2 -1
  50. package/dist/cli/index.js.map +1 -1
  51. package/dist/cli/init-command.d.ts.map +1 -1
  52. package/dist/cli/init-command.js +4 -2
  53. package/dist/cli/init-command.js.map +1 -1
  54. package/dist/cli/mcp-command.d.ts +13 -4
  55. package/dist/cli/mcp-command.d.ts.map +1 -1
  56. package/dist/cli/mcp-command.js +25 -8
  57. package/dist/cli/mcp-command.js.map +1 -1
  58. package/dist/cli/output.d.ts +12 -4
  59. package/dist/cli/output.d.ts.map +1 -1
  60. package/dist/cli/output.js +15 -4
  61. package/dist/cli/output.js.map +1 -1
  62. package/dist/cli/program.d.ts +1 -1
  63. package/dist/cli/program.d.ts.map +1 -1
  64. package/dist/cli/program.js +162 -40
  65. package/dist/cli/program.js.map +1 -1
  66. package/dist/cli/registrar.d.ts +1 -1
  67. package/dist/cli/registrar.d.ts.map +1 -1
  68. package/dist/cli/registrar.js +67 -6
  69. package/dist/cli/registrar.js.map +1 -1
  70. package/dist/cli/suggest.d.ts +20 -0
  71. package/dist/cli/suggest.d.ts.map +1 -0
  72. package/dist/cli/suggest.js +49 -0
  73. package/dist/cli/suggest.js.map +1 -0
  74. package/dist/cli/warning.d.ts +26 -0
  75. package/dist/cli/warning.d.ts.map +1 -0
  76. package/dist/cli/warning.js +66 -0
  77. package/dist/cli/warning.js.map +1 -0
  78. package/dist/cli.js +11 -2
  79. package/dist/cli.js.map +1 -1
  80. package/dist/core/agent-execute.d.ts +44 -0
  81. package/dist/core/agent-execute.d.ts.map +1 -0
  82. package/dist/core/agent-execute.js +71 -0
  83. package/dist/core/agent-execute.js.map +1 -0
  84. package/dist/core/agent-list.d.ts +95 -0
  85. package/dist/core/agent-list.d.ts.map +1 -0
  86. package/dist/core/agent-list.js +207 -0
  87. package/dist/core/agent-list.js.map +1 -0
  88. package/dist/core/agent-show.d.ts +44 -0
  89. package/dist/core/agent-show.d.ts.map +1 -0
  90. package/dist/core/agent-show.js +188 -0
  91. package/dist/core/agent-show.js.map +1 -0
  92. package/dist/core/approval-authority.d.ts +17 -14
  93. package/dist/core/approval-authority.d.ts.map +1 -1
  94. package/dist/core/approval-authority.js +9 -9
  95. package/dist/core/approval-authority.js.map +1 -1
  96. package/dist/core/builtin-asset.d.ts +18 -15
  97. package/dist/core/builtin-asset.d.ts.map +1 -1
  98. package/dist/core/builtin-asset.js +17 -14
  99. package/dist/core/builtin-asset.js.map +1 -1
  100. package/dist/core/builtin-integrity.d.ts +12 -2
  101. package/dist/core/builtin-integrity.d.ts.map +1 -1
  102. package/dist/core/builtin-integrity.js +85 -9
  103. package/dist/core/builtin-integrity.js.map +1 -1
  104. package/dist/core/confinement.d.ts +3 -1
  105. package/dist/core/confinement.d.ts.map +1 -1
  106. package/dist/core/confinement.js +7 -4
  107. package/dist/core/confinement.js.map +1 -1
  108. package/dist/core/context.d.ts +150 -98
  109. package/dist/core/context.d.ts.map +1 -1
  110. package/dist/core/context.js +602 -66
  111. package/dist/core/context.js.map +1 -1
  112. package/dist/core/directive-assign.d.ts +33 -7
  113. package/dist/core/directive-assign.d.ts.map +1 -1
  114. package/dist/core/directive-assign.js +67 -27
  115. package/dist/core/directive-assign.js.map +1 -1
  116. package/dist/core/directive-scope.d.ts +36 -0
  117. package/dist/core/directive-scope.d.ts.map +1 -0
  118. package/dist/core/directive-scope.js +34 -0
  119. package/dist/core/directive-scope.js.map +1 -0
  120. package/dist/core/directives-list.d.ts +13 -3
  121. package/dist/core/directives-list.d.ts.map +1 -1
  122. package/dist/core/directives-list.js +18 -6
  123. package/dist/core/directives-list.js.map +1 -1
  124. package/dist/core/dry-run.d.ts +33 -0
  125. package/dist/core/dry-run.d.ts.map +1 -0
  126. package/dist/core/dry-run.js +45 -0
  127. package/dist/core/dry-run.js.map +1 -0
  128. package/dist/core/element-ref.d.ts +23 -0
  129. package/dist/core/element-ref.d.ts.map +1 -0
  130. package/dist/core/element-ref.js +24 -0
  131. package/dist/core/element-ref.js.map +1 -0
  132. package/dist/core/error-details.d.ts +20 -0
  133. package/dist/core/error-details.d.ts.map +1 -0
  134. package/dist/core/error-details.js +65 -0
  135. package/dist/core/error-details.js.map +1 -0
  136. package/dist/core/exit-code.d.ts.map +1 -1
  137. package/dist/core/exit-code.js +6 -7
  138. package/dist/core/exit-code.js.map +1 -1
  139. package/dist/core/git-identity.d.ts +46 -11
  140. package/dist/core/git-identity.d.ts.map +1 -1
  141. package/dist/core/git-identity.js +140 -27
  142. package/dist/core/git-identity.js.map +1 -1
  143. package/dist/core/index.d.ts +184 -10
  144. package/dist/core/index.d.ts.map +1 -1
  145. package/dist/core/index.js +1045 -185
  146. package/dist/core/index.js.map +1 -1
  147. package/dist/core/init.d.ts +45 -5
  148. package/dist/core/init.d.ts.map +1 -1
  149. package/dist/core/init.js +134 -24
  150. package/dist/core/init.js.map +1 -1
  151. package/dist/core/loaders.d.ts +170 -14
  152. package/dist/core/loaders.d.ts.map +1 -1
  153. package/dist/core/loaders.js +570 -89
  154. package/dist/core/loaders.js.map +1 -1
  155. package/dist/core/memory-add-link.d.ts +28 -0
  156. package/dist/core/memory-add-link.d.ts.map +1 -0
  157. package/dist/core/memory-add-link.js +67 -0
  158. package/dist/core/memory-add-link.js.map +1 -0
  159. package/dist/core/memory-add-type.d.ts +25 -1
  160. package/dist/core/memory-add-type.d.ts.map +1 -1
  161. package/dist/core/memory-add-type.js +59 -1
  162. package/dist/core/memory-add-type.js.map +1 -1
  163. package/dist/core/memory-amend.d.ts +80 -0
  164. package/dist/core/memory-amend.d.ts.map +1 -0
  165. package/dist/core/memory-amend.js +160 -0
  166. package/dist/core/memory-amend.js.map +1 -0
  167. package/dist/core/memory-supersede.d.ts +28 -0
  168. package/dist/core/memory-supersede.d.ts.map +1 -0
  169. package/dist/core/memory-supersede.js +79 -0
  170. package/dist/core/memory-supersede.js.map +1 -0
  171. package/dist/core/memory-transition.d.ts +190 -30
  172. package/dist/core/memory-transition.d.ts.map +1 -1
  173. package/dist/core/memory-transition.js +480 -59
  174. package/dist/core/memory-transition.js.map +1 -1
  175. package/dist/core/registry.d.ts +82 -10
  176. package/dist/core/registry.d.ts.map +1 -1
  177. package/dist/core/registry.js +50 -0
  178. package/dist/core/registry.js.map +1 -1
  179. package/dist/core/relevance.d.ts +74 -12
  180. package/dist/core/relevance.d.ts.map +1 -1
  181. package/dist/core/relevance.js +45 -27
  182. package/dist/core/relevance.js.map +1 -1
  183. package/dist/core/require-reason.d.ts.map +1 -1
  184. package/dist/core/require-reason.js +6 -5
  185. package/dist/core/require-reason.js.map +1 -1
  186. package/dist/core/required-fields.d.ts +28 -0
  187. package/dist/core/required-fields.d.ts.map +1 -0
  188. package/dist/core/required-fields.js +60 -0
  189. package/dist/core/required-fields.js.map +1 -0
  190. package/dist/core/revision.d.ts +82 -0
  191. package/dist/core/revision.d.ts.map +1 -0
  192. package/dist/core/revision.js +144 -0
  193. package/dist/core/revision.js.map +1 -0
  194. package/dist/core/types.d.ts +28 -2
  195. package/dist/core/types.d.ts.map +1 -1
  196. package/dist/core/types.js +12 -3
  197. package/dist/core/types.js.map +1 -1
  198. package/dist/core/workflow-core-checks.d.ts +34 -0
  199. package/dist/core/workflow-core-checks.d.ts.map +1 -0
  200. package/dist/core/workflow-core-checks.js +403 -0
  201. package/dist/core/workflow-core-checks.js.map +1 -0
  202. package/dist/core/workflow-create-remove.d.ts +65 -0
  203. package/dist/core/workflow-create-remove.d.ts.map +1 -0
  204. package/dist/core/workflow-create-remove.js +277 -0
  205. package/dist/core/workflow-create-remove.js.map +1 -0
  206. package/dist/core/workflow-deduction.d.ts +48 -0
  207. package/dist/core/workflow-deduction.d.ts.map +1 -0
  208. package/dist/core/workflow-deduction.js +523 -0
  209. package/dist/core/workflow-deduction.js.map +1 -0
  210. package/dist/core/workflow-diagnostics.d.ts +83 -0
  211. package/dist/core/workflow-diagnostics.d.ts.map +1 -0
  212. package/dist/core/workflow-diagnostics.js +375 -0
  213. package/dist/core/workflow-diagnostics.js.map +1 -0
  214. package/dist/core/workflow-exit-state.d.ts +125 -0
  215. package/dist/core/workflow-exit-state.d.ts.map +1 -0
  216. package/dist/core/workflow-exit-state.js +243 -0
  217. package/dist/core/workflow-exit-state.js.map +1 -0
  218. package/dist/core/workflow-finalize.d.ts +37 -0
  219. package/dist/core/workflow-finalize.d.ts.map +1 -0
  220. package/dist/core/workflow-finalize.js +153 -0
  221. package/dist/core/workflow-finalize.js.map +1 -0
  222. package/dist/core/workflow-list-show.d.ts +176 -0
  223. package/dist/core/workflow-list-show.d.ts.map +1 -0
  224. package/dist/core/workflow-list-show.js +268 -0
  225. package/dist/core/workflow-list-show.js.map +1 -0
  226. package/dist/core/workflow-next.d.ts +268 -0
  227. package/dist/core/workflow-next.d.ts.map +1 -0
  228. package/dist/core/workflow-next.js +503 -0
  229. package/dist/core/workflow-next.js.map +1 -0
  230. package/dist/core/workflow-registry.d.ts +52 -0
  231. package/dist/core/workflow-registry.d.ts.map +1 -0
  232. package/dist/core/workflow-registry.js +158 -0
  233. package/dist/core/workflow-registry.js.map +1 -0
  234. package/dist/core/workflow-start-end.d.ts +71 -0
  235. package/dist/core/workflow-start-end.d.ts.map +1 -0
  236. package/dist/core/workflow-start-end.js +298 -0
  237. package/dist/core/workflow-start-end.js.map +1 -0
  238. package/dist/core/workflow-status.d.ts +83 -0
  239. package/dist/core/workflow-status.d.ts.map +1 -0
  240. package/dist/core/workflow-status.js +125 -0
  241. package/dist/core/workflow-status.js.map +1 -0
  242. package/dist/core/write-guard.d.ts +51 -8
  243. package/dist/core/write-guard.d.ts.map +1 -1
  244. package/dist/core/write-guard.js +139 -9
  245. package/dist/core/write-guard.js.map +1 -1
  246. package/dist/directives/index.d.ts +3 -2
  247. package/dist/directives/index.d.ts.map +1 -1
  248. package/dist/directives/index.js +5 -3
  249. package/dist/directives/index.js.map +1 -1
  250. package/dist/directives/schema.d.ts +34 -29
  251. package/dist/directives/schema.d.ts.map +1 -1
  252. package/dist/directives/schema.js +35 -29
  253. package/dist/directives/schema.js.map +1 -1
  254. package/dist/directives/version.d.ts +28 -0
  255. package/dist/directives/version.d.ts.map +1 -0
  256. package/dist/directives/version.js +51 -0
  257. package/dist/directives/version.js.map +1 -0
  258. package/dist/dna/edit.d.ts +7 -6
  259. package/dist/dna/edit.d.ts.map +1 -1
  260. package/dist/dna/edit.js +96 -41
  261. package/dist/dna/edit.js.map +1 -1
  262. package/dist/dna/mutate.js +18 -3
  263. package/dist/dna/mutate.js.map +1 -1
  264. package/dist/dna/path.d.ts +2 -2
  265. package/dist/dna/roles.d.ts +1 -1
  266. package/dist/dna/schema.d.ts +61 -3
  267. package/dist/dna/schema.d.ts.map +1 -1
  268. package/dist/dna/schema.js +121 -6
  269. package/dist/dna/schema.js.map +1 -1
  270. package/dist/mcp/dna-resource.d.ts.map +1 -1
  271. package/dist/mcp/dna-resource.js +4 -4
  272. package/dist/mcp/dna-resource.js.map +1 -1
  273. package/dist/mcp/index.d.ts +8 -4
  274. package/dist/mcp/index.d.ts.map +1 -1
  275. package/dist/mcp/index.js +13 -2
  276. package/dist/mcp/index.js.map +1 -1
  277. package/dist/mcp/memory-resource.d.ts.map +1 -1
  278. package/dist/mcp/memory-resource.js +30 -19
  279. package/dist/mcp/memory-resource.js.map +1 -1
  280. package/dist/mcp/prompt.d.ts +61 -24
  281. package/dist/mcp/prompt.d.ts.map +1 -1
  282. package/dist/mcp/prompt.js +176 -47
  283. package/dist/mcp/prompt.js.map +1 -1
  284. package/dist/mcp/read-only.d.ts +39 -0
  285. package/dist/mcp/read-only.d.ts.map +1 -1
  286. package/dist/mcp/read-only.js +61 -0
  287. package/dist/mcp/read-only.js.map +1 -1
  288. package/dist/mcp/registrar.d.ts +10 -0
  289. package/dist/mcp/registrar.d.ts.map +1 -1
  290. package/dist/mcp/registrar.js +48 -12
  291. package/dist/mcp/registrar.js.map +1 -1
  292. package/dist/mcp/server.d.ts +21 -14
  293. package/dist/mcp/server.d.ts.map +1 -1
  294. package/dist/mcp/server.js +41 -15
  295. package/dist/mcp/server.js.map +1 -1
  296. package/dist/mcp/session-resource.d.ts +13 -0
  297. package/dist/mcp/session-resource.d.ts.map +1 -0
  298. package/dist/mcp/session-resource.js +65 -0
  299. package/dist/mcp/session-resource.js.map +1 -0
  300. package/dist/mcp/workflow-resource.d.ts +18 -0
  301. package/dist/mcp/workflow-resource.d.ts.map +1 -1
  302. package/dist/mcp/workflow-resource.js +37 -8
  303. package/dist/mcp/workflow-resource.js.map +1 -1
  304. package/dist/memory/add.d.ts +110 -24
  305. package/dist/memory/add.d.ts.map +1 -1
  306. package/dist/memory/add.js +251 -64
  307. package/dist/memory/add.js.map +1 -1
  308. package/dist/memory/audit.d.ts +152 -39
  309. package/dist/memory/audit.d.ts.map +1 -1
  310. package/dist/memory/audit.js +257 -103
  311. package/dist/memory/audit.js.map +1 -1
  312. package/dist/memory/commit-message.d.ts +60 -38
  313. package/dist/memory/commit-message.d.ts.map +1 -1
  314. package/dist/memory/commit-message.js +167 -21
  315. package/dist/memory/commit-message.js.map +1 -1
  316. package/dist/memory/entry.d.ts.map +1 -1
  317. package/dist/memory/entry.js +1 -2
  318. package/dist/memory/entry.js.map +1 -1
  319. package/dist/memory/frontmatter-edit.d.ts +16 -4
  320. package/dist/memory/frontmatter-edit.d.ts.map +1 -1
  321. package/dist/memory/frontmatter-edit.js +13 -1
  322. package/dist/memory/frontmatter-edit.js.map +1 -1
  323. package/dist/memory/git-log.d.ts +18 -6
  324. package/dist/memory/git-log.d.ts.map +1 -1
  325. package/dist/memory/git-log.js +40 -13
  326. package/dist/memory/git-log.js.map +1 -1
  327. package/dist/memory/history.d.ts +73 -12
  328. package/dist/memory/history.d.ts.map +1 -1
  329. package/dist/memory/history.js +128 -44
  330. package/dist/memory/history.js.map +1 -1
  331. package/dist/memory/index.d.ts +13 -11
  332. package/dist/memory/index.d.ts.map +1 -1
  333. package/dist/memory/index.js +34 -3
  334. package/dist/memory/index.js.map +1 -1
  335. package/dist/memory/query.d.ts +161 -19
  336. package/dist/memory/query.d.ts.map +1 -1
  337. package/dist/memory/query.js +435 -55
  338. package/dist/memory/query.js.map +1 -1
  339. package/dist/memory/schema.d.ts +52 -3
  340. package/dist/memory/schema.d.ts.map +1 -1
  341. package/dist/memory/schema.js +132 -8
  342. package/dist/memory/schema.js.map +1 -1
  343. package/dist/memory/state-machine.d.ts +65 -10
  344. package/dist/memory/state-machine.d.ts.map +1 -1
  345. package/dist/memory/state-machine.js +134 -46
  346. package/dist/memory/state-machine.js.map +1 -1
  347. package/dist/memory/submit.d.ts +52 -3
  348. package/dist/memory/submit.d.ts.map +1 -1
  349. package/dist/memory/submit.js +118 -11
  350. package/dist/memory/submit.js.map +1 -1
  351. package/dist/storage/build-stamp.d.ts +18 -0
  352. package/dist/storage/build-stamp.d.ts.map +1 -0
  353. package/dist/storage/build-stamp.js +68 -0
  354. package/dist/storage/build-stamp.js.map +1 -0
  355. package/dist/storage/builtin-adapters.d.ts +32 -0
  356. package/dist/storage/builtin-adapters.d.ts.map +1 -0
  357. package/dist/storage/builtin-adapters.js +100 -0
  358. package/dist/storage/builtin-adapters.js.map +1 -0
  359. package/dist/storage/builtin-directives.d.ts +0 -29
  360. package/dist/storage/builtin-directives.d.ts.map +1 -1
  361. package/dist/storage/builtin-directives.js +9 -4
  362. package/dist/storage/builtin-directives.js.map +1 -1
  363. package/dist/storage/commit.d.ts +310 -3
  364. package/dist/storage/commit.d.ts.map +1 -1
  365. package/dist/storage/commit.js +807 -33
  366. package/dist/storage/commit.js.map +1 -1
  367. package/dist/storage/document.d.ts +6 -0
  368. package/dist/storage/document.d.ts.map +1 -1
  369. package/dist/storage/document.js +10 -1
  370. package/dist/storage/document.js.map +1 -1
  371. package/dist/storage/dry-run.d.ts +65 -0
  372. package/dist/storage/dry-run.d.ts.map +1 -0
  373. package/dist/storage/dry-run.js +150 -0
  374. package/dist/storage/dry-run.js.map +1 -0
  375. package/dist/storage/errors.d.ts +26 -0
  376. package/dist/storage/errors.d.ts.map +1 -1
  377. package/dist/storage/errors.js +27 -1
  378. package/dist/storage/errors.js.map +1 -1
  379. package/dist/storage/frontmatter.d.ts +1 -1
  380. package/dist/storage/frontmatter.js +1 -1
  381. package/dist/storage/git-read.d.ts +64 -0
  382. package/dist/storage/git-read.d.ts.map +1 -0
  383. package/dist/storage/git-read.js +107 -0
  384. package/dist/storage/git-read.js.map +1 -0
  385. package/dist/storage/index.d.ts +13 -5
  386. package/dist/storage/index.d.ts.map +1 -1
  387. package/dist/storage/index.js +39 -2
  388. package/dist/storage/index.js.map +1 -1
  389. package/dist/storage/layout.d.ts +2 -2
  390. package/dist/storage/layout.d.ts.map +1 -1
  391. package/dist/storage/layout.js +2 -7
  392. package/dist/storage/layout.js.map +1 -1
  393. package/dist/storage/memory-path.d.ts +18 -5
  394. package/dist/storage/memory-path.d.ts.map +1 -1
  395. package/dist/storage/memory-path.js +41 -5
  396. package/dist/storage/memory-path.js.map +1 -1
  397. package/dist/storage/snapshot.js +1 -1
  398. package/dist/storage/templates.d.ts +33 -6
  399. package/dist/storage/templates.d.ts.map +1 -1
  400. package/dist/storage/templates.js +170 -16
  401. package/dist/storage/templates.js.map +1 -1
  402. package/dist/validation/config-version.d.ts +19 -0
  403. package/dist/validation/config-version.d.ts.map +1 -0
  404. package/dist/validation/config-version.js +53 -0
  405. package/dist/validation/config-version.js.map +1 -0
  406. package/dist/validation/diagnostic.d.ts +40 -0
  407. package/dist/validation/diagnostic.d.ts.map +1 -0
  408. package/dist/validation/diagnostic.js +41 -0
  409. package/dist/validation/diagnostic.js.map +1 -0
  410. package/dist/validation/format.d.ts +74 -0
  411. package/dist/validation/format.d.ts.map +1 -0
  412. package/dist/validation/format.js +104 -0
  413. package/dist/validation/format.js.map +1 -0
  414. package/dist/validation/id.d.ts +14 -0
  415. package/dist/validation/id.d.ts.map +1 -1
  416. package/dist/validation/id.js +35 -11
  417. package/dist/validation/id.js.map +1 -1
  418. package/dist/validation/identity.d.ts +40 -0
  419. package/dist/validation/identity.d.ts.map +1 -0
  420. package/dist/validation/identity.js +78 -0
  421. package/dist/validation/identity.js.map +1 -0
  422. package/dist/validation/index.d.ts +9 -3
  423. package/dist/validation/index.d.ts.map +1 -1
  424. package/dist/validation/index.js +30 -1
  425. package/dist/validation/index.js.map +1 -1
  426. package/dist/validation/secret-scan.d.ts +3 -2
  427. package/dist/validation/secret-scan.d.ts.map +1 -1
  428. package/dist/validation/secret-scan.js +32 -11
  429. package/dist/validation/secret-scan.js.map +1 -1
  430. package/dist/validation/warning.d.ts +30 -16
  431. package/dist/validation/warning.d.ts.map +1 -1
  432. package/dist/validation/warning.js +74 -7
  433. package/dist/validation/warning.js.map +1 -1
  434. package/dist/workflow/bindings.d.ts +152 -0
  435. package/dist/workflow/bindings.d.ts.map +1 -0
  436. package/dist/workflow/bindings.js +249 -0
  437. package/dist/workflow/bindings.js.map +1 -0
  438. package/dist/workflow/create.d.ts +13 -0
  439. package/dist/workflow/create.d.ts.map +1 -0
  440. package/dist/workflow/create.js +41 -0
  441. package/dist/workflow/create.js.map +1 -0
  442. package/dist/workflow/deduce.d.ts +400 -0
  443. package/dist/workflow/deduce.d.ts.map +1 -0
  444. package/dist/workflow/deduce.js +1109 -0
  445. package/dist/workflow/deduce.js.map +1 -0
  446. package/dist/workflow/manifest-edit.d.ts +19 -0
  447. package/dist/workflow/manifest-edit.d.ts.map +1 -0
  448. package/dist/workflow/manifest-edit.js +124 -0
  449. package/dist/workflow/manifest-edit.js.map +1 -0
  450. package/dist/workflow/schema.d.ts +158 -19
  451. package/dist/workflow/schema.d.ts.map +1 -1
  452. package/dist/workflow/schema.js +163 -15
  453. package/dist/workflow/schema.js.map +1 -1
  454. package/package.json +18 -8
@@ -5,6 +5,10 @@ exports.isArchivedStatus = isArchivedStatus;
5
5
  exports.resolveStateMachine = resolveStateMachine;
6
6
  exports.resolveTransitionTarget = resolveTransitionTarget;
7
7
  exports.resolveTypeTransition = resolveTypeTransition;
8
+ exports.supersedesEdgeFrom = supersedesEdgeFrom;
9
+ exports.resolveSupersedeTarget = resolveSupersedeTarget;
10
+ exports.resolveWaitingTarget = resolveWaitingTarget;
11
+ exports.isMachineEdge = isMachineEdge;
8
12
  exports.validateFrontmatterState = validateFrontmatterState;
9
13
  /**
10
14
  * State-machine transition-legality engine (REQ-SYS-04, task-005-per-type-state-machines).
@@ -20,7 +24,8 @@ exports.validateFrontmatterState = validateFrontmatterState;
20
24
  * This is spec-009-validation-strategy §1's Pass 2 (semantic / cross-file): the transition rule
21
25
  * needs the type's registered machine (loaded from `memory.yaml`) plus the document's own `status`
22
26
  * field — neither is decidable from the document's frontmatter schema alone, matching spec-009's own
23
- * worked example ("`wingfoil.status` must be a member of that type's `states.values`"). An illegal
27
+ * worked example ("`wingfoil.status` must be a state of that type's machine — a member of its
28
+ * `sequence`, a `gates` reject target, or `deprecated`"; {@link validateFrontmatterState}). An illegal
24
29
  * transition throws the shared `ValidationError` (exit code `1` — a business-rule failure, not an
25
30
  * integrity one, per spec-009 §3 as rewritten under `dl-032-illegal-transition-message-contract`)
26
31
  * and — critically — throws *before* returning any target, so a caller can never reach
@@ -42,6 +47,8 @@ exports.validateFrontmatterState = validateFrontmatterState;
42
47
  * - `reject`: legal only from a state that IS a `gates` key (regardless of `waiting` membership —
43
48
  * spec-001: a gate+waiting state "still exposes a manual `reject`/decline path"). Target:
44
49
  * `gates[<state>].reject`, always taken verbatim (it need not be a `sequence` member).
50
+ * - `park` (task-180, `dl-110` P1 (a)): legal only from a state that is a `returns` key. Target:
51
+ * `returns[<state>]`, an earlier state of `sequence` (the schema guarantees it).
45
52
  * - `deprecate`: the implicit wildcard edge — always legal from any current state, target is the
46
53
  * reserved `"deprecated"` state. Never declared in `sequence`/`gates`/`waiting` (enforced
47
54
  * structurally by task-004's `.superRefine()`; this engine does not need to re-check it).
@@ -53,8 +60,8 @@ exports.validateFrontmatterState = validateFrontmatterState;
53
60
  * independent of any transition attempt. `resolveTransitionTarget` only answers "is verb `op` legal
54
61
  * FROM `currentState`"; it never asserts that an arbitrary `status` string read off a document's
55
62
  * frontmatter is itself a member of the type's declared state set at all — the check
56
- * spec-010-memory-frontmatter-schema's "Validation rules" table names ("`status` must be a value in
57
- * the type's `states.values`" → failure "invalid state for type") and BDD
63
+ * spec-010-memory-frontmatter-schema's "Validation rules" table names ("`status` must be a state of
64
+ * the type's machine" → failure "invalid state for type") and BDD
58
65
  * `P4.11-deliverables.feature`/`P4.13-state-deduction.feature` both exercise (`"invalid state
59
66
  * 'shipped' for type 'task'"`). A state is legal for a type iff it belongs to that machine's full
60
67
  * reachable set — `sequence` ∪ every `gates.<state>.reject` target (spec-001 permits those to be
@@ -79,10 +86,14 @@ const schema_1 = require("./schema");
79
86
  /** The reserved implicit-wildcard target state (spec-001) — never declared explicitly anywhere. */
80
87
  exports.DEPRECATED_STATE = 'deprecated';
81
88
  /**
82
- * The terminal state of the `adr` and `tech-spec` machines (`memory.yaml`): reached along the forward
83
- * `sequence` by `approve`, never by `memory deprecate`. A superseded decision is archived content — a
84
- * later element explicitly replaced it — which is why `dl-028-archived-states-excluded-from-context`
85
- * puts it in {@link ARCHIVED_STATUSES} alongside {@link DEPRECATED_STATE}.
89
+ * The terminal state of the `adr` and `tech-spec` machines (`memory.yaml`). The state before it is a
90
+ * `waiting` state, so no verb drives the edge into it — not `approve` and not `memory deprecate`
91
+ * (`spec-001`: "`submit`/`approve` on a `waiting` state is illegal"). It is reached only through the
92
+ * `supersedes:` engine trigger: approving an element whose `supersedes:` names another element of its
93
+ * type moves that element along this edge ({@link supersedesEdgeFrom}, `dl-065` Q1.1, task-162). A
94
+ * superseded decision is archived content — a later element explicitly replaced it — which is why
95
+ * `dl-028-archived-states-excluded-from-context` puts it in {@link ARCHIVED_STATUSES} alongside
96
+ * {@link DEPRECATED_STATE}.
86
97
  */
87
98
  exports.SUPERSEDED_STATE = 'superseded';
88
99
  /**
@@ -147,8 +158,9 @@ exports.E_INVALID_STATE = 'E_INVALID_STATE';
147
158
  * block", and its `Then` names the machine by value — so its title ("uses the defaults block")
148
159
  * describes the common case rather than a precondition.
149
160
  *
150
- * **Why this value.** It is `spec-001`'s own worked `defaults` example, verbatim — not REQ-STATE-08's
151
- * literal `draft → pending → approved/rejected → deprecated` wording, which `spec-001` §Consequences
161
+ * **Why this value.** It is `spec-001`'s own worked `defaults` example, verbatim, and the machine
162
+ * REQ-STATE-08 names since task-153 reconciled it (`bug-052`) — not the earlier
163
+ * `draft → pending → approved/rejected → deprecated` wording, which `spec-001` §Consequences
152
164
  * deliberately superseded: the default machine "loses its `rejected` state" ("no document ever records
153
165
  * `status: rejected` again" — a `reject` from the `pending` gate lands straight back on `draft`), and
154
166
  * `deprecated` is the reserved implicit wildcard reachable from any state, never declared in a
@@ -270,48 +282,35 @@ function resolveTransitionTarget(machine, currentState, op, filePath = '') {
270
282
  // `reject` target is taken verbatim — need not be a `sequence` member (spec-001).
271
283
  return gate.reject;
272
284
  }
285
+ case 'park': {
286
+ const target = (machine.returns ?? {})[currentState];
287
+ if (target === undefined) {
288
+ return illegal(currentState, op, 'not a `returns` state — `park` is only legal from a state that declares a return edge', filePath);
289
+ }
290
+ return target;
291
+ }
273
292
  default: {
274
293
  const exhaustive = op;
275
294
  return illegal(currentState, exhaustive, 'unknown operation', filePath);
276
295
  }
277
296
  }
278
297
  }
279
- /** What the contract message prints for `<to>` when a verb has no legal edge anywhere in the machine. */
280
- const NO_TARGET = '(none)';
281
298
  /**
282
- * The `<to>` of the illegal-transition contract message: the verb's **canonical edge** for this type —
283
- * the target `op` reaches from the first state, in `sequence` order, from which `op` is legal (for
284
- * `submit` on `task` or on the default machine: `pending`; on `release`: `planning`). A verb names no
285
- * target of its own, so the message needs a rule; this one reproduces the string BDD `P1.6` sc.2 and
286
- * `P5.2.3` sc.2 pin (`approved -> pending` for `task`) on both the default machine and the real `task`
287
- * machine, where the literal forward edge out of `approved` is `done`.
288
- *
289
- * What happens when that canonical target IS `currentState` — printing it would be a self-loop — is
290
- * ratified by `dl-053-illegal-transition-target-for-verbless-edges` (option 1): **keep walking
291
- * `sequence` for the next legal edge of the SAME verb**, and render {@link NO_TARGET} when the verb
292
- * has no other target. It must never name the next state in `sequence` regardless of verb — the
293
- * earlier fallback did, printing `draft -> pending` for a `reject` (a rejection shown as a forward
294
- * move) and `backlog -> in-progress` for an `approve` (a `waiting` edge no verb drives), misinforming
295
- * exactly the user who has just made an illegal call. Every `<to>` printed here is therefore a real
296
- * target of the verb the user typed, on this type's own machine.
299
+ * The `<to>` of the illegal-transition contract message — what the verb the user typed reaches from
300
+ * `<from>`. A transition verb names no target of its own, and {@link resolveTransitionTarget} refuses a
301
+ * call exactly when the verb has no edge from the current state (`deprecate` is never refused), so on a
302
+ * refusal that target is always nothing, rendered `(none)` (`dl-154` option A; `task-181`, `bug-165`,
303
+ * `bug-127`; REQ-STATE-01).
297
304
  *
298
- * A pure function of `(machine, currentState, op)` walked in `sequence` order (REQ-SYS-07).
305
+ * It replaces the verb's **canonical edge** (`dl-053` option 1, replaced by `dl-154`): the target the
306
+ * verb reaches from the first state in `sequence` where it is legal. That edge starts somewhere else in the machine, so it
307
+ * printed backward moves (`approve` on a `planned` bug → `planned -> triaged`; `submit` on the last
308
+ * state of the default machine → `approved -> pending`) and skips (`triaged -> resolved`), naming a move
309
+ * nobody attempted to exactly the user who has just made an illegal call. Why the verb has no edge is
310
+ * the issue's `detail` (`dl-032` option (c)), which reaches the operator under the message
311
+ * (`dl-055`, task-130).
299
312
  */
300
- function contractTarget(machine, currentState, op) {
301
- for (const state of machine.sequence) {
302
- let target;
303
- try {
304
- target = resolveTransitionTarget(machine, state, op);
305
- }
306
- catch {
307
- continue; // `op` is not legal from this state — keep walking the chain
308
- }
309
- // dl-053: a self-loop is not a transition; keep looking for a different target of this same verb.
310
- if (target !== currentState)
311
- return target;
312
- }
313
- return NO_TARGET;
314
- }
313
+ const NO_TARGET = '(none)';
315
314
  /**
316
315
  * Resolve the legal target of verb `op` for a document of type `typeName` currently in `currentState`
317
316
  * — the entry point every Memory transition verb (`submit`, and `approve`/`reject`/`deprecate` after
@@ -322,7 +321,7 @@ function contractTarget(machine, currentState, op) {
322
321
  * `dl-032-illegal-transition-message-contract` (option (c)) — `message` is the pinned
323
322
  * `` illegal transition <from> -> <to> for type '<type>' `` (REQ-STATE-01 Fit Criterion; BDD `P1.6`
324
323
  * sc.2, `P5.2.3` sc.2), `detail` carries the engine's explanation of *why* the edge is illegal, and the
325
- * exit code is `1`. `<to>` is computed by {@link contractTarget}.
324
+ * exit code is `1`. `<to>` is always {@link NO_TARGET}: the verb reaches nothing from `<from>`.
326
325
  *
327
326
  * @throws {@link ../validation.ValidationError} `E_INVALID_TRANSITION` (exit `1`) as above.
328
327
  * @throws `Error` when `typeName` is not registered (see {@link resolveStateMachine}). A registered type
@@ -342,12 +341,100 @@ function resolveTypeTransition(memoryYaml, typeName, currentState, op, filePath
342
341
  code: exports.E_INVALID_TRANSITION,
343
342
  path: 'status',
344
343
  file: filePath,
345
- message: `illegal transition ${currentState} -> ${contractTarget(machine, currentState, op)} for type '${typeName}'`,
344
+ message: `illegal transition ${currentState} -> ${NO_TARGET} for type '${typeName}'`,
346
345
  detail,
347
346
  },
348
347
  ]);
349
348
  }
350
349
  }
350
+ /**
351
+ * True when `state`'s forward edge leads into {@link SUPERSEDED_STATE} and no verb drives it: `state`
352
+ * is a `waiting` state and the next `sequence` entry is `superseded` (`accepted` for `adr`, `approved`
353
+ * for `tech-spec`). This is the edge the `supersedes:` trigger fires (`dl-065` Q1.1, `spec-001`), read
354
+ * from the machine rather than from a type name, so a project type with the same shape gets the same
355
+ * trigger. Pure (REQ-SYS-07).
356
+ */
357
+ function supersedesEdgeFrom(machine, state) {
358
+ const index = machine.sequence.indexOf(state);
359
+ return index !== -1 && (machine.waiting ?? []).includes(state) && machine.sequence[index + 1] === exports.SUPERSEDED_STATE;
360
+ }
361
+ /**
362
+ * The target of the `supersedes:` trigger on a document of type `typeName` in `currentState` —
363
+ * always {@link SUPERSEDED_STATE} — or a thrown `E_INVALID_TRANSITION` with `dl-032`'s contract
364
+ * message, `illegal transition <from> -> superseded for type '<type>'`, when the document is not in
365
+ * the state whose `waiting` edge leads there ({@link supersedesEdgeFrom}). The trigger is not a verb,
366
+ * so this is not a {@link TransitionOp}, and its `<to>` is the one state it can ever reach.
367
+ *
368
+ * @throws {@link ../validation.ValidationError} `E_INVALID_TRANSITION` as above.
369
+ * @throws `Error` when `typeName` is not registered (see {@link resolveStateMachine}).
370
+ */
371
+ function resolveSupersedeTarget(memoryYaml, typeName, currentState, filePath) {
372
+ const machine = resolveStateMachine(memoryYaml, typeName);
373
+ if (supersedesEdgeFrom(machine, currentState))
374
+ return exports.SUPERSEDED_STATE;
375
+ throw new validation_1.ValidationError([
376
+ {
377
+ code: exports.E_INVALID_TRANSITION,
378
+ path: 'status',
379
+ file: filePath,
380
+ message: `illegal transition ${currentState} -> ${exports.SUPERSEDED_STATE} for type '${typeName}'`,
381
+ detail: `only an element in the \`waiting\` state whose forward edge leads to '${exports.SUPERSEDED_STATE}' can be superseded ` +
382
+ `(spec-001); '${currentState}' is not that state`,
383
+ },
384
+ ]);
385
+ }
386
+ /**
387
+ * The target of the forward `waiting` edge out of `currentState` for a document of type `typeName` — the
388
+ * next `sequence` entry after a state listed in `waiting`, which no verb drives and a workflow action fires
389
+ * (`spec-001`). `workflow end` takes it to close a plan, `active → done` (task-217, `spec-017` §7.2): the
390
+ * commit is `wf(plan): finalize <id> [active → done]` (`spec-008` §2's `finalize` row). A `superseded`
391
+ * target is not this edge's: it is the `supersedes:` trigger's ({@link resolveSupersedeTarget}).
392
+ *
393
+ * @throws {@link ../validation.ValidationError} `E_INVALID_TRANSITION` with `dl-032`'s contract message,
394
+ * `illegal transition <from> -> (none) for type '<type>'` (`dl-154`), when `currentState` has no such edge.
395
+ * @throws `Error` when `typeName` is not registered (see {@link resolveStateMachine}).
396
+ */
397
+ function resolveWaitingTarget(memoryYaml, typeName, currentState, filePath) {
398
+ const machine = resolveStateMachine(memoryYaml, typeName);
399
+ const index = machine.sequence.indexOf(currentState);
400
+ const next = index === -1 ? undefined : machine.sequence[index + 1];
401
+ if ((machine.waiting ?? []).includes(currentState) && next !== undefined && next !== exports.SUPERSEDED_STATE)
402
+ return next;
403
+ throw new validation_1.ValidationError([
404
+ {
405
+ code: exports.E_INVALID_TRANSITION,
406
+ path: 'status',
407
+ file: filePath,
408
+ message: `illegal transition ${currentState} -> ${NO_TARGET} for type '${typeName}'`,
409
+ detail: `only a \`waiting\` state followed by another \`sequence\` state can be finalized (spec-001); '${currentState}' is not one`,
410
+ },
411
+ ]);
412
+ }
413
+ /**
414
+ * True when `from → to` is an edge of `machine`, whichever verb or engine action drives it — the
415
+ * question a hop of a chained transition bracket asks (`[a → b → c]`, `task-126`, `bug-155`), where
416
+ * the commit names states and no verb per hop. The edges are exactly the targets
417
+ * {@link resolveTransitionTarget} can return, plus the verb-less forward edges it refuses to drive:
418
+ *
419
+ * 1. the **forward edge** `sequence[i] → sequence[i + 1]`, for every `i` — including out of a `gates`
420
+ * or `waiting` state, whose forward edge is taken by `approve` or by a workflow action rather than
421
+ * by `submit`, but is an edge all the same;
422
+ * 2. every **`gates.<from>.reject`** target;
423
+ * 3. every **`returns.<from>`** target, the edge `memory park` takes (task-180);
424
+ * 4. the implicit wildcard edge to {@link DEPRECATED_STATE}, from any state.
425
+ *
426
+ * A self-loop is not an edge. Pure; no ordering dependence (REQ-SYS-07).
427
+ */
428
+ function isMachineEdge(machine, from, to) {
429
+ if (to === exports.DEPRECATED_STATE)
430
+ return true;
431
+ const index = machine.sequence.indexOf(from);
432
+ if (index !== -1 && machine.sequence[index + 1] === to)
433
+ return true;
434
+ if ((machine.returns ?? {})[from] === to)
435
+ return true;
436
+ return (machine.gates ?? {})[from]?.reject === to;
437
+ }
351
438
  /**
352
439
  * True when `status` is a state a document of this type may legitimately carry — the **full**
353
440
  * reachable state set of `machine`, which is the union of three sources:
@@ -369,7 +456,8 @@ function resolveTypeTransition(memoryYaml, typeName, currentState, op, filePath
369
456
  * any `sequence` (the `StateMachine` schema's own `.superRefine()` forbids declaring it).
370
457
  *
371
458
  * `machine.waiting` contributes nothing: every `waiting` entry is required to be a `sequence` member
372
- * already, so it is covered by (1).
459
+ * already, so it is covered by (1). Nor does `machine.returns`: the schema requires every `returns`
460
+ * target to be an earlier `sequence` state (task-180).
373
461
  *
374
462
  * Iteration over `gates` is sorted (REQ-SYS-07 — no unordered iteration in any output-affecting path);
375
463
  * the predicate's boolean result is order-independent, but keeping the traversal deterministic keeps
@@ -387,7 +475,7 @@ function isDeclaredState(machine, status) {
387
475
  /**
388
476
  * Assert that `status` — a value read straight off a document's frontmatter — is a legal state for
389
477
  * `typeName` under `machine` (REQ-STATE-01: state is derived from frontmatter; spec-010's "Validation
390
- * rules": *"`status` must be a value in the type's `states.values`"*). The legal set is exactly
478
+ * rules": *"`status` must be a state of the type's machine"*). The legal set is exactly
391
479
  * {@link isDeclaredState}'s: `sequence` ∪ every `gates.<state>.reject` target ∪ `deprecated`.
392
480
  *
393
481
  * This is a distinct check from {@link resolveTransitionTarget}: that function asks "is verb `op`
@@ -1 +1 @@
1
- {"version":3,"file":"state-machine.js","sourceRoot":"","sources":["../../src/memory/state-machine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state-machine.js","sourceRoot":"","sources":["../../src/memory/state-machine.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,60 @@
1
1
  /** The frontmatter key `memory.reject` sets and `memory.submit` removes (spec-010). */
2
2
  export declare const REJECTION_REASON_FIELD = "rejection_reason";
3
+ /**
4
+ * Why a required field's not-applicable value is refused: the type does not declare it, it gives no
5
+ * reason, or it separates the reason with something other than an em dash (`n/a - x`, `n/a: x`).
6
+ */
7
+ export type NotApplicableProblem = 'undeclared' | 'no-reason' | 'bad-form';
8
+ /** One refused not-applicable value, by field. */
9
+ export interface NotApplicableRefusal {
10
+ readonly field: string;
11
+ readonly problem: NotApplicableProblem;
12
+ }
3
13
  /**
4
14
  * The fields that must be filled before a submit but are not: `title` first (spec-010 requires it of
5
- * every type), then each of `required` in its declared order, without duplicates. `[]` means the
6
- * document may be submitted.
15
+ * every type), then each of `required` in its declared order, without duplicates. `[]` means no field
16
+ * is missing. `listFields` are the type's `template.frontmatter.lists`: on those alone a list, `[]`
17
+ * included, is filled; `title` is never one. A not-applicable value counts as present here — whether it is *accepted* is
18
+ * {@link notApplicableRefusals}'s question, so a field is reported by one of the two, never both.
7
19
  */
8
- export declare function missingRequiredFields(frontmatter: Readonly<Record<string, unknown>>, required: readonly string[]): string[];
20
+ export declare function missingRequiredFields(frontmatter: Readonly<Record<string, unknown>>, required: readonly string[], listFields?: readonly string[]): string[];
21
+ /**
22
+ * The required fields holding a not-applicable value that may not stand (`dl-124`, task-168), in the
23
+ * same order as {@link missingRequiredFields}:
24
+ * - `undeclared` — the type's `template.frontmatter.not_applicable_allowed` does not list the field
25
+ * (`title` never counts as listed: spec-010 requires it of every type);
26
+ * - `no-reason` — the field is listed, but the value is bare `n/a` or `n/a —` with a blank reason;
27
+ * - `bad-form` — the field is listed, but the reason follows another separator than the em dash.
28
+ *
29
+ * Optional fields are not checked: what they hold is the type's own business.
30
+ */
31
+ export declare function notApplicableRefusals(frontmatter: Readonly<Record<string, unknown>>, required: readonly string[], notApplicableAllowed?: readonly string[]): NotApplicableRefusal[];
9
32
  /** The submitted document: `status` set to `target` and `rejection_reason` removed; nothing else changes. */
10
33
  export declare function renderSubmitDocument(content: string, target: string): string;
34
+ /**
35
+ * What a submit carries besides its own edit (task-209, `dl-106` W1 (a)): every way the author's
36
+ * working-tree document differs from the one committed at `HEAD`, worded by `describeDocumentChanges`
37
+ * — "the body", a `frontmatter field '<name>'` per moved field, sorted by name — the function that
38
+ * already words the gated verbs' refusal of the same edits. Both copies are first rendered by the same
39
+ * transition ({@link renderSubmitDocument}), so the submit's own fields, `status` and a cleared
40
+ * `rejection_reason`, never count: a pure transition carries nothing (`[]`).
41
+ *
42
+ * `committed` is `null` when no commit holds the document; the verb refuses that case before asking.
43
+ * Pure and deterministic (REQ-SYS-07).
44
+ */
45
+ export declare function describeSubmitContent(committed: string | null, content: string, target: string): string[];
46
+ /**
47
+ * `text` rewritten in the line-ending style of `like`: CRLF when `like` holds any CRLF, LF otherwise
48
+ * (task-209 re-review 1). `memory submit` compares the blob git would store for its rendering with the
49
+ * blob of the same rendering in the committed document's style, which isolates a line-ending
50
+ * conversion from the content edits made with it. Pure.
51
+ */
52
+ export declare function withLineEndingsOf(text: string, like: string): string;
53
+ /**
54
+ * The item a submit declares, after every other item, when git — after its own line-ending filters —
55
+ * would store the rendered document with line endings other than the committed one's (`storesAsBlob`,
56
+ * `src/storage`): the one change {@link describeSubmitContent} cannot see, because it compares
57
+ * line-ending-normalized text.
58
+ */
59
+ export declare const LINE_ENDINGS_ITEM = "the line endings";
11
60
  //# sourceMappingURL=submit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"submit.d.ts","sourceRoot":"","sources":["../../src/memory/submit.ts"],"names":[],"mappings":"AAcA,uFAAuF;AACvF,eAAO,MAAM,sBAAsB,qBAAqB,CAAC;AAUzD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAG3H;AAED,6GAA6G;AAC7G,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE5E"}
1
+ {"version":3,"file":"submit.d.ts","sourceRoot":"","sources":["../../src/memory/submit.ts"],"names":[],"mappings":"AAgBA,uFAAuF;AACvF,eAAO,MAAM,sBAAsB,qBAAqB,CAAC;AA8CzD;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,WAAW,GAAG,UAAU,CAAC;AAE3E,kDAAkD;AAClD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;CACxC;AAOD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC9C,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,UAAU,GAAE,SAAS,MAAM,EAAO,GACjC,MAAM,EAAE,CAGV;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC9C,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,oBAAoB,GAAE,SAAS,MAAM,EAAO,GAC3C,oBAAoB,EAAE,CAWxB;AAED,6GAA6G;AAC7G,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAIzG;AAOD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAGpE;AAED;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,qBAAqB,CAAC"}
@@ -1,15 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.REJECTION_REASON_FIELD = void 0;
3
+ exports.LINE_ENDINGS_ITEM = exports.REJECTION_REASON_FIELD = void 0;
4
4
  exports.missingRequiredFields = missingRequiredFields;
5
+ exports.notApplicableRefusals = notApplicableRefusals;
5
6
  exports.renderSubmitDocument = renderSubmitDocument;
7
+ exports.describeSubmitContent = describeSubmitContent;
8
+ exports.withLineEndingsOf = withLineEndingsOf;
6
9
  /**
7
10
  * Pure helpers behind `wingfoil memory submit` (P1.6, task-045-memory-submit), kept out of the
8
11
  * `CoreResult`-wrapped operation in `src/core` the same way `./add.ts` serves `memory add`.
9
12
  *
10
13
  * Both implement `spec-010-memory-frontmatter-schema`:
11
14
  * - "Validation rules": `title`, and every field in the type's `template.frontmatter.required`, must
12
- * be non-empty once `status` is anything other than `draft` — so a submit checks them first.
15
+ * be non-empty once `status` is anything other than `draft` — so a submit checks them first. A field
16
+ * the type lists in `template.frontmatter.not_applicable_allowed` may instead hold
17
+ * `"n/a — <reason>"` (`dl-124`, task-168); no other field may hold a not-applicable value.
13
18
  * - "Field-write ownership": `memory.submit` moves `status` to the next state and clears
14
19
  * `rejection_reason` by removing the key (it mirrors only the most recent reject).
15
20
  *
@@ -18,27 +23,129 @@ exports.renderSubmitDocument = renderSubmitDocument;
18
23
  const frontmatter_edit_1 = require("./frontmatter-edit");
19
24
  /** The frontmatter key `memory.reject` sets and `memory.submit` removes (spec-010). */
20
25
  exports.REJECTION_REASON_FIELD = 'rejection_reason';
21
- /** Absent, `null`, a blank string or an empty list count as "not filled in". */
22
- function isEmptyValue(value) {
26
+ /**
27
+ * Whether a required field's value counts as "not filled in" (`spec-010` § Validation rules,
28
+ * `bug-147`, approver rulings 2026-10-02 at `task-168`'s review): absent, `null` (an empty YAML value,
29
+ * `features:`), a blank string, or a mapping. A list is a value only on a field the type declares in
30
+ * `template.frontmatter.lists`, and there any list is, `[]` included (the author declared "none"); on
31
+ * every other field a list is missing. A date (YAML timestamp) is a value.
32
+ */
33
+ /**
34
+ * The frontmatter's own value for `field`, or `undefined`: a field named like an `Object.prototype`
35
+ * member (`constructor`, `toString`) is an ordinary field, never the prototype's function (task-279
36
+ * review F1).
37
+ */
38
+ function ownValue(frontmatter, field) {
39
+ return Object.hasOwn(frontmatter, field) ? frontmatter[field] : undefined;
40
+ }
41
+ function isEmptyValue(value, isListField) {
23
42
  if (value === undefined || value === null)
24
43
  return true;
25
44
  if (typeof value === 'string')
26
45
  return value.trim().length === 0;
27
46
  if (Array.isArray(value))
28
- return value.length === 0;
29
- return false;
47
+ return !isListField;
48
+ if (value instanceof Date)
49
+ return false;
50
+ return typeof value === 'object';
51
+ }
52
+ /**
53
+ * A value that says "this field does not apply" (`dl-124` Q1 (A)): a string whose text starts with
54
+ * `n/a`, in any case, not followed by a letter, digit or `_` — so `n/a`, `N/A` and
55
+ * `n/a — patch release` are, while `n/available` or `P1 (n/a for docs)` are ordinary data.
56
+ */
57
+ const NOT_APPLICABLE_SHAPE = /^n\/a(?![\w])/i;
58
+ /**
59
+ * The one accepted form (`dl-124` Q3 (ii)): `n/a`, an em dash, then a non-blank reason. Case, and
60
+ * whitespace around the em dash, do not matter (task-168 review fix 3): `N/A — x` and `n/a—x` pass.
61
+ */
62
+ const NOT_APPLICABLE_WITH_REASON = /^n\/a\s*—\s*\S/i;
63
+ /** Bare `n/a`, or `n/a —` with nothing after it: the form is right, the reason is missing. */
64
+ const NOT_APPLICABLE_WITHOUT_REASON = /^n\/a\s*(—\s*)?$/i;
65
+ function isNotApplicableShaped(value) {
66
+ return typeof value === 'string' && NOT_APPLICABLE_SHAPE.test(value.trim());
67
+ }
68
+ /** `title` first (spec-010 requires it of every type), then `required` in declared order, deduplicated. */
69
+ function requiredFieldOrder(required) {
70
+ return [...new Set(['title', ...required])];
30
71
  }
31
72
  /**
32
73
  * The fields that must be filled before a submit but are not: `title` first (spec-010 requires it of
33
- * every type), then each of `required` in its declared order, without duplicates. `[]` means the
34
- * document may be submitted.
74
+ * every type), then each of `required` in its declared order, without duplicates. `[]` means no field
75
+ * is missing. `listFields` are the type's `template.frontmatter.lists`: on those alone a list, `[]`
76
+ * included, is filled; `title` is never one. A not-applicable value counts as present here — whether it is *accepted* is
77
+ * {@link notApplicableRefusals}'s question, so a field is reported by one of the two, never both.
35
78
  */
36
- function missingRequiredFields(frontmatter, required) {
37
- const fields = [...new Set(['title', ...required])];
38
- return fields.filter((field) => isEmptyValue(frontmatter[field]));
79
+ function missingRequiredFields(frontmatter, required, listFields = []) {
80
+ const lists = new Set(listFields.filter((field) => field !== 'title'));
81
+ return requiredFieldOrder(required).filter((field) => isEmptyValue(ownValue(frontmatter, field), lists.has(field)));
82
+ }
83
+ /**
84
+ * The required fields holding a not-applicable value that may not stand (`dl-124`, task-168), in the
85
+ * same order as {@link missingRequiredFields}:
86
+ * - `undeclared` — the type's `template.frontmatter.not_applicable_allowed` does not list the field
87
+ * (`title` never counts as listed: spec-010 requires it of every type);
88
+ * - `no-reason` — the field is listed, but the value is bare `n/a` or `n/a —` with a blank reason;
89
+ * - `bad-form` — the field is listed, but the reason follows another separator than the em dash.
90
+ *
91
+ * Optional fields are not checked: what they hold is the type's own business.
92
+ */
93
+ function notApplicableRefusals(frontmatter, required, notApplicableAllowed = []) {
94
+ const allowed = new Set(notApplicableAllowed.filter((field) => field !== 'title'));
95
+ const refusals = [];
96
+ for (const field of requiredFieldOrder(required)) {
97
+ const value = ownValue(frontmatter, field);
98
+ if (!isNotApplicableShaped(value))
99
+ continue;
100
+ if (!allowed.has(field))
101
+ refusals.push({ field, problem: 'undeclared' });
102
+ else if (NOT_APPLICABLE_WITHOUT_REASON.test(value.trim()))
103
+ refusals.push({ field, problem: 'no-reason' });
104
+ else if (!NOT_APPLICABLE_WITH_REASON.test(value.trim()))
105
+ refusals.push({ field, problem: 'bad-form' });
106
+ }
107
+ return refusals;
39
108
  }
40
109
  /** The submitted document: `status` set to `target` and `rejection_reason` removed; nothing else changes. */
41
110
  function renderSubmitDocument(content, target) {
42
111
  return (0, frontmatter_edit_1.removeFrontmatterField)((0, frontmatter_edit_1.setFrontmatterField)(content, 'status', target), exports.REJECTION_REASON_FIELD);
43
112
  }
113
+ /**
114
+ * What a submit carries besides its own edit (task-209, `dl-106` W1 (a)): every way the author's
115
+ * working-tree document differs from the one committed at `HEAD`, worded by `describeDocumentChanges`
116
+ * — "the body", a `frontmatter field '<name>'` per moved field, sorted by name — the function that
117
+ * already words the gated verbs' refusal of the same edits. Both copies are first rendered by the same
118
+ * transition ({@link renderSubmitDocument}), so the submit's own fields, `status` and a cleared
119
+ * `rejection_reason`, never count: a pure transition carries nothing (`[]`).
120
+ *
121
+ * `committed` is `null` when no commit holds the document; the verb refuses that case before asking.
122
+ * Pure and deterministic (REQ-SYS-07).
123
+ */
124
+ function describeSubmitContent(committed, content, target) {
125
+ const after = renderSubmitDocument(toLf(content), target);
126
+ if (committed === null)
127
+ return (0, frontmatter_edit_1.describeDocumentChanges)(null, after);
128
+ return (0, frontmatter_edit_1.describeDocumentChanges)(renderSubmitDocument(toLf(committed), target), after);
129
+ }
130
+ /** CRLF → LF: the comparison is of content, so line endings are compared separately (task-209 review F1). */
131
+ function toLf(text) {
132
+ return text.replace(/\r\n/g, '\n');
133
+ }
134
+ /**
135
+ * `text` rewritten in the line-ending style of `like`: CRLF when `like` holds any CRLF, LF otherwise
136
+ * (task-209 re-review 1). `memory submit` compares the blob git would store for its rendering with the
137
+ * blob of the same rendering in the committed document's style, which isolates a line-ending
138
+ * conversion from the content edits made with it. Pure.
139
+ */
140
+ function withLineEndingsOf(text, like) {
141
+ const lf = toLf(text);
142
+ return like.includes('\r\n') ? lf.replace(/\n/g, '\r\n') : lf;
143
+ }
144
+ /**
145
+ * The item a submit declares, after every other item, when git — after its own line-ending filters —
146
+ * would store the rendered document with line endings other than the committed one's (`storesAsBlob`,
147
+ * `src/storage`): the one change {@link describeSubmitContent} cannot see, because it compares
148
+ * line-ending-normalized text.
149
+ */
150
+ exports.LINE_ENDINGS_ITEM = 'the line endings';
44
151
  //# sourceMappingURL=submit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"submit.js","sourceRoot":"","sources":["../../src/memory/submit.ts"],"names":[],"mappings":";;;AA8BA,sDAGC;AAGD,oDAEC;AAtCD;;;;;;;;;;;GAWG;AACH,yDAAiF;AAEjF,uFAAuF;AAC1E,QAAA,sBAAsB,GAAG,kBAAkB,CAAC;AAEzD,gFAAgF;AAChF,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;IAChE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IACpD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,WAA8C,EAAE,QAA2B;IAC/G,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,6GAA6G;AAC7G,SAAgB,oBAAoB,CAAC,OAAe,EAAE,MAAc;IAClE,OAAO,IAAA,yCAAsB,EAAC,IAAA,sCAAmB,EAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,8BAAsB,CAAC,CAAC;AACxG,CAAC"}
1
+ {"version":3,"file":"submit.js","sourceRoot":"","sources":["../../src/memory/submit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /** The trailer key `dl-111` reserves for the build signature (refused in a `--reason`, `dl-067` clause 4). */
2
+ export declare const WINGFOIL_VERSION_TRAILER_KEY = "WingFoil-Version";
3
+ /**
4
+ * The running build's stamp, `<semver> (<sha>)` — `<semver>` from `package.json`, `<sha>` from the
5
+ * build record, or `unknown`.
6
+ *
7
+ * Both files are located from `moduleDir`, the directory of a module one level below the compiled
8
+ * root: `build-info.json` one level up (`dist/build-info.json` from `dist/storage/`), `package.json`
9
+ * two levels up, which is the package root in the `src/` and the `dist/` layout alike and where npm
10
+ * installs the manifest. The version is the manifest's, never the record's: `package.json` is what
11
+ * npm installed, and the record only adds the commit.
12
+ *
13
+ * @param moduleDir - Defaults to this module's own directory; a test passes a fixture's.
14
+ */
15
+ export declare function readBuildStamp(moduleDir?: string): string;
16
+ /** The trailer line for `stamp`: `WingFoil-Version: <stamp>`. */
17
+ export declare function formatVersionTrailer(stamp: string): string;
18
+ //# sourceMappingURL=build-stamp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-stamp.d.ts","sourceRoot":"","sources":["../../src/storage/build-stamp.ts"],"names":[],"mappings":"AAoBA,8GAA8G;AAC9G,eAAO,MAAM,4BAA4B,qBAAqB,CAAC;AAwB/D;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,SAAS,GAAE,MAAkB,GAAG,MAAM,CAIpE;AAED,iEAAiE;AACjE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D"}