dorfl 0.0.0 → 0.1.1

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 (619) hide show
  1. package/dist/advance-ci-template.d.ts +73 -0
  2. package/dist/advance-ci-template.d.ts.map +1 -0
  3. package/dist/advance-ci-template.js +104 -0
  4. package/dist/advance-ci-template.js.map +1 -0
  5. package/dist/advance-classify.d.ts +132 -0
  6. package/dist/advance-classify.d.ts.map +1 -0
  7. package/dist/advance-classify.js +120 -0
  8. package/dist/advance-classify.js.map +1 -0
  9. package/dist/advance-drivers.d.ts +182 -0
  10. package/dist/advance-drivers.d.ts.map +1 -0
  11. package/dist/advance-drivers.js +231 -0
  12. package/dist/advance-drivers.js.map +1 -0
  13. package/dist/advance-isolated.d.ts +156 -0
  14. package/dist/advance-isolated.d.ts.map +1 -0
  15. package/dist/advance-isolated.js +256 -0
  16. package/dist/advance-isolated.js.map +1 -0
  17. package/dist/advance-lifecycle-template.d.ts +107 -0
  18. package/dist/advance-lifecycle-template.d.ts.map +1 -0
  19. package/dist/advance-lifecycle-template.js +668 -0
  20. package/dist/advance-lifecycle-template.js.map +1 -0
  21. package/dist/advance-loop-driver.d.ts +325 -0
  22. package/dist/advance-loop-driver.d.ts.map +1 -0
  23. package/dist/advance-loop-driver.js +437 -0
  24. package/dist/advance-loop-driver.js.map +1 -0
  25. package/dist/advance-treeless-publish.d.ts +108 -0
  26. package/dist/advance-treeless-publish.d.ts.map +1 -0
  27. package/dist/advance-treeless-publish.js +71 -0
  28. package/dist/advance-treeless-publish.js.map +1 -0
  29. package/dist/advance.d.ts +340 -0
  30. package/dist/advance.d.ts.map +1 -0
  31. package/dist/advance.js +1122 -0
  32. package/dist/advance.js.map +1 -0
  33. package/dist/advancing-lock.d.ts +294 -0
  34. package/dist/advancing-lock.d.ts.map +1 -0
  35. package/dist/advancing-lock.js +594 -0
  36. package/dist/advancing-lock.js.map +1 -0
  37. package/dist/agent-launch.d.ts +79 -0
  38. package/dist/agent-launch.d.ts.map +1 -0
  39. package/dist/agent-launch.js +61 -0
  40. package/dist/agent-launch.js.map +1 -0
  41. package/dist/agent-stop.d.ts +149 -0
  42. package/dist/agent-stop.d.ts.map +1 -0
  43. package/dist/agent-stop.js +307 -0
  44. package/dist/agent-stop.js.map +1 -0
  45. package/dist/apply-decide.d.ts +127 -0
  46. package/dist/apply-decide.d.ts.map +1 -0
  47. package/dist/apply-decide.js +176 -0
  48. package/dist/apply-decide.js.map +1 -0
  49. package/dist/apply-merge-action.d.ts +206 -0
  50. package/dist/apply-merge-action.d.ts.map +1 -0
  51. package/dist/apply-merge-action.js +307 -0
  52. package/dist/apply-merge-action.js.map +1 -0
  53. package/dist/apply-persist.d.ts +174 -0
  54. package/dist/apply-persist.d.ts.map +1 -0
  55. package/dist/apply-persist.js +359 -0
  56. package/dist/apply-persist.js.map +1 -0
  57. package/dist/arbiter.d.ts +120 -0
  58. package/dist/arbiter.d.ts.map +1 -0
  59. package/dist/arbiter.js +255 -0
  60. package/dist/arbiter.js.map +1 -0
  61. package/dist/brand.d.ts +70 -0
  62. package/dist/brand.d.ts.map +1 -0
  63. package/dist/brand.js +84 -0
  64. package/dist/brand.js.map +1 -0
  65. package/dist/buildable-body.d.ts +132 -0
  66. package/dist/buildable-body.d.ts.map +1 -0
  67. package/dist/buildable-body.js +131 -0
  68. package/dist/buildable-body.js.map +1 -0
  69. package/dist/categorise.d.ts +66 -0
  70. package/dist/categorise.d.ts.map +1 -0
  71. package/dist/categorise.js +106 -0
  72. package/dist/categorise.js.map +1 -0
  73. package/dist/claim-cas.d.ts +117 -0
  74. package/dist/claim-cas.d.ts.map +1 -0
  75. package/dist/claim-cas.js +312 -0
  76. package/dist/claim-cas.js.map +1 -0
  77. package/dist/cli-spinner.d.ts +112 -0
  78. package/dist/cli-spinner.d.ts.map +1 -0
  79. package/dist/cli-spinner.js +157 -0
  80. package/dist/cli-spinner.js.map +1 -0
  81. package/dist/cli.d.ts +11 -0
  82. package/dist/cli.d.ts.map +1 -0
  83. package/dist/cli.js +3100 -0
  84. package/dist/cli.js.map +1 -0
  85. package/dist/close-job-template.d.ts +70 -0
  86. package/dist/close-job-template.d.ts.map +1 -0
  87. package/dist/close-job-template.js +180 -0
  88. package/dist/close-job-template.js.map +1 -0
  89. package/dist/close-job.d.ts +95 -0
  90. package/dist/close-job.d.ts.map +1 -0
  91. package/dist/close-job.js +226 -0
  92. package/dist/close-job.js.map +1 -0
  93. package/dist/complete.d.ts +361 -0
  94. package/dist/complete.d.ts.map +1 -0
  95. package/dist/complete.js +885 -0
  96. package/dist/complete.js.map +1 -0
  97. package/dist/concurrency.d.ts +68 -0
  98. package/dist/concurrency.d.ts.map +1 -0
  99. package/dist/concurrency.js +112 -0
  100. package/dist/concurrency.js.map +1 -0
  101. package/dist/config-override.d.ts +76 -0
  102. package/dist/config-override.d.ts.map +1 -0
  103. package/dist/config-override.js +50 -0
  104. package/dist/config-override.js.map +1 -0
  105. package/dist/config.d.ts +668 -0
  106. package/dist/config.d.ts.map +1 -0
  107. package/dist/config.js +241 -0
  108. package/dist/config.js.map +1 -0
  109. package/dist/continue-branch.d.ts +249 -0
  110. package/dist/continue-branch.d.ts.map +1 -0
  111. package/dist/continue-branch.js +389 -0
  112. package/dist/continue-branch.js.map +1 -0
  113. package/dist/cwd-section.d.ts +186 -0
  114. package/dist/cwd-section.d.ts.map +1 -0
  115. package/dist/cwd-section.js +209 -0
  116. package/dist/cwd-section.js.map +1 -0
  117. package/dist/decision-engine.d.ts +170 -0
  118. package/dist/decision-engine.d.ts.map +1 -0
  119. package/dist/decision-engine.js +136 -0
  120. package/dist/decision-engine.js.map +1 -0
  121. package/dist/detect.d.ts +17 -0
  122. package/dist/detect.d.ts.map +1 -0
  123. package/dist/detect.js +118 -0
  124. package/dist/detect.js.map +1 -0
  125. package/dist/do-autopick.d.ts +85 -0
  126. package/dist/do-autopick.d.ts.map +1 -0
  127. package/dist/do-autopick.js +112 -0
  128. package/dist/do-autopick.js.map +1 -0
  129. package/dist/do-config.d.ts +312 -0
  130. package/dist/do-config.d.ts.map +1 -0
  131. package/dist/do-config.js +358 -0
  132. package/dist/do-config.js.map +1 -0
  133. package/dist/do-remote-auto.d.ts +75 -0
  134. package/dist/do-remote-auto.d.ts.map +1 -0
  135. package/dist/do-remote-auto.js +111 -0
  136. package/dist/do-remote-auto.js.map +1 -0
  137. package/dist/do.d.ts +621 -0
  138. package/dist/do.d.ts.map +1 -0
  139. package/dist/do.js +1882 -0
  140. package/dist/do.js.map +1 -0
  141. package/dist/drop-source.d.ts +96 -0
  142. package/dist/drop-source.d.ts.map +1 -0
  143. package/dist/drop-source.js +91 -0
  144. package/dist/drop-source.js.map +1 -0
  145. package/dist/eligibility.d.ts +46 -0
  146. package/dist/eligibility.d.ts.map +1 -0
  147. package/dist/eligibility.js +34 -0
  148. package/dist/eligibility.js.map +1 -0
  149. package/dist/env-config.d.ts +51 -0
  150. package/dist/env-config.d.ts.map +1 -0
  151. package/dist/env-config.js +272 -0
  152. package/dist/env-config.js.map +1 -0
  153. package/dist/failure-cause.d.ts +70 -0
  154. package/dist/failure-cause.d.ts.map +1 -0
  155. package/dist/failure-cause.js +126 -0
  156. package/dist/failure-cause.js.map +1 -0
  157. package/dist/format.d.ts +43 -0
  158. package/dist/format.d.ts.map +1 -0
  159. package/dist/format.js +256 -0
  160. package/dist/format.js.map +1 -0
  161. package/dist/frontmatter.d.ts +208 -0
  162. package/dist/frontmatter.d.ts.map +1 -0
  163. package/dist/frontmatter.js +344 -0
  164. package/dist/frontmatter.js.map +1 -0
  165. package/dist/gate-readiness.d.ts +84 -0
  166. package/dist/gate-readiness.d.ts.map +1 -0
  167. package/dist/gate-readiness.js +103 -0
  168. package/dist/gate-readiness.js.map +1 -0
  169. package/dist/gc.d.ts +165 -0
  170. package/dist/gc.d.ts.map +1 -0
  171. package/dist/gc.js +313 -0
  172. package/dist/gc.js.map +1 -0
  173. package/dist/gh-failure.d.ts +42 -0
  174. package/dist/gh-failure.d.ts.map +1 -0
  175. package/dist/gh-failure.js +49 -0
  176. package/dist/gh-failure.js.map +1 -0
  177. package/dist/git.d.ts +75 -0
  178. package/dist/git.d.ts.map +1 -0
  179. package/dist/git.js +130 -0
  180. package/dist/git.js.map +1 -0
  181. package/dist/github.d.ts +187 -0
  182. package/dist/github.d.ts.map +1 -0
  183. package/dist/github.js +343 -0
  184. package/dist/github.js.map +1 -0
  185. package/dist/harness.d.ts +242 -0
  186. package/dist/harness.d.ts.map +1 -0
  187. package/dist/harness.js +157 -0
  188. package/dist/harness.js.map +1 -0
  189. package/dist/identity.d.ts +167 -0
  190. package/dist/identity.d.ts.map +1 -0
  191. package/dist/identity.js +231 -0
  192. package/dist/identity.js.map +1 -0
  193. package/dist/index.d.ts +147 -0
  194. package/dist/index.d.ts.map +1 -0
  195. package/dist/index.js +76 -0
  196. package/dist/index.js.map +1 -0
  197. package/dist/install-ci-branch-protection.d.ts +147 -0
  198. package/dist/install-ci-branch-protection.d.ts.map +1 -0
  199. package/dist/install-ci-branch-protection.js +166 -0
  200. package/dist/install-ci-branch-protection.js.map +1 -0
  201. package/dist/install-ci-capabilities/advance-lifecycle.d.ts +15 -0
  202. package/dist/install-ci-capabilities/advance-lifecycle.d.ts.map +1 -0
  203. package/dist/install-ci-capabilities/advance-lifecycle.js +28 -0
  204. package/dist/install-ci-capabilities/advance-lifecycle.js.map +1 -0
  205. package/dist/install-ci-capabilities/close-job.d.ts +13 -0
  206. package/dist/install-ci-capabilities/close-job.d.ts.map +1 -0
  207. package/dist/install-ci-capabilities/close-job.js +26 -0
  208. package/dist/install-ci-capabilities/close-job.js.map +1 -0
  209. package/dist/install-ci-capabilities/example-noop.d.ts +16 -0
  210. package/dist/install-ci-capabilities/example-noop.d.ts.map +1 -0
  211. package/dist/install-ci-capabilities/example-noop.js +23 -0
  212. package/dist/install-ci-capabilities/example-noop.js.map +1 -0
  213. package/dist/install-ci-capabilities/intake.d.ts +15 -0
  214. package/dist/install-ci-capabilities/intake.d.ts.map +1 -0
  215. package/dist/install-ci-capabilities/intake.js +28 -0
  216. package/dist/install-ci-capabilities/intake.js.map +1 -0
  217. package/dist/install-ci-capabilities/verify.d.ts +14 -0
  218. package/dist/install-ci-capabilities/verify.d.ts.map +1 -0
  219. package/dist/install-ci-capabilities/verify.js +27 -0
  220. package/dist/install-ci-capabilities/verify.js.map +1 -0
  221. package/dist/install-ci-core.d.ts +446 -0
  222. package/dist/install-ci-core.d.ts.map +1 -0
  223. package/dist/install-ci-core.js +760 -0
  224. package/dist/install-ci-core.js.map +1 -0
  225. package/dist/install-ci-github.d.ts +167 -0
  226. package/dist/install-ci-github.d.ts.map +1 -0
  227. package/dist/install-ci-github.js +315 -0
  228. package/dist/install-ci-github.js.map +1 -0
  229. package/dist/install-ci.d.ts +105 -0
  230. package/dist/install-ci.d.ts.map +1 -0
  231. package/dist/install-ci.js +363 -0
  232. package/dist/install-ci.js.map +1 -0
  233. package/dist/intake-event.d.ts +88 -0
  234. package/dist/intake-event.d.ts.map +1 -0
  235. package/dist/intake-event.js +66 -0
  236. package/dist/intake-event.js.map +1 -0
  237. package/dist/intake-marker.d.ts +95 -0
  238. package/dist/intake-marker.d.ts.map +1 -0
  239. package/dist/intake-marker.js +127 -0
  240. package/dist/intake-marker.js.map +1 -0
  241. package/dist/intake-triage.d.ts +48 -0
  242. package/dist/intake-triage.d.ts.map +1 -0
  243. package/dist/intake-triage.js +95 -0
  244. package/dist/intake-triage.js.map +1 -0
  245. package/dist/intake-trigger-template.d.ts +185 -0
  246. package/dist/intake-trigger-template.d.ts.map +1 -0
  247. package/dist/intake-trigger-template.js +449 -0
  248. package/dist/intake-trigger-template.js.map +1 -0
  249. package/dist/intake.d.ts +569 -0
  250. package/dist/intake.d.ts.map +1 -0
  251. package/dist/intake.js +1628 -0
  252. package/dist/intake.js.map +1 -0
  253. package/dist/integration-core.d.ts +539 -0
  254. package/dist/integration-core.d.ts.map +1 -0
  255. package/dist/integration-core.js +2195 -0
  256. package/dist/integration-core.js.map +1 -0
  257. package/dist/integrator.d.ts +343 -0
  258. package/dist/integrator.d.ts.map +1 -0
  259. package/dist/integrator.js +400 -0
  260. package/dist/integrator.js.map +1 -0
  261. package/dist/isolation.d.ts +219 -0
  262. package/dist/isolation.d.ts.map +1 -0
  263. package/dist/isolation.js +261 -0
  264. package/dist/isolation.js.map +1 -0
  265. package/dist/issue-provider.d.ts +349 -0
  266. package/dist/issue-provider.d.ts.map +1 -0
  267. package/dist/issue-provider.js +360 -0
  268. package/dist/issue-provider.js.map +1 -0
  269. package/dist/item-lock.d.ts +626 -0
  270. package/dist/item-lock.d.ts.map +1 -0
  271. package/dist/item-lock.js +1381 -0
  272. package/dist/item-lock.js.map +1 -0
  273. package/dist/item-path.d.ts +49 -0
  274. package/dist/item-path.d.ts.map +1 -0
  275. package/dist/item-path.js +66 -0
  276. package/dist/item-path.js.map +1 -0
  277. package/dist/ledger-lint.d.ts +129 -0
  278. package/dist/ledger-lint.d.ts.map +1 -0
  279. package/dist/ledger-lint.js +249 -0
  280. package/dist/ledger-lint.js.map +1 -0
  281. package/dist/ledger-read.d.ts +357 -0
  282. package/dist/ledger-read.d.ts.map +1 -0
  283. package/dist/ledger-read.js +442 -0
  284. package/dist/ledger-read.js.map +1 -0
  285. package/dist/ledger-write.d.ts +330 -0
  286. package/dist/ledger-write.d.ts.map +1 -0
  287. package/dist/ledger-write.js +411 -0
  288. package/dist/ledger-write.js.map +1 -0
  289. package/dist/lifecycle-gather.d.ts +30 -0
  290. package/dist/lifecycle-gather.d.ts.map +1 -0
  291. package/dist/lifecycle-gather.js +205 -0
  292. package/dist/lifecycle-gather.js.map +1 -0
  293. package/dist/lifecycle-pools.d.ts +180 -0
  294. package/dist/lifecycle-pools.d.ts.map +1 -0
  295. package/dist/lifecycle-pools.js +78 -0
  296. package/dist/lifecycle-pools.js.map +1 -0
  297. package/dist/merge-question-surfacer.d.ts +166 -0
  298. package/dist/merge-question-surfacer.d.ts.map +1 -0
  299. package/dist/merge-question-surfacer.js +297 -0
  300. package/dist/merge-question-surfacer.js.map +1 -0
  301. package/dist/mint-adr.d.ts +126 -0
  302. package/dist/mint-adr.d.ts.map +1 -0
  303. package/dist/mint-adr.js +257 -0
  304. package/dist/mint-adr.js.map +1 -0
  305. package/dist/mirror-pool-scan.d.ts +125 -0
  306. package/dist/mirror-pool-scan.d.ts.map +1 -0
  307. package/dist/mirror-pool-scan.js +104 -0
  308. package/dist/mirror-pool-scan.js.map +1 -0
  309. package/dist/needs-attention.d.ts +341 -0
  310. package/dist/needs-attention.d.ts.map +1 -0
  311. package/dist/needs-attention.js +900 -0
  312. package/dist/needs-attention.js.map +1 -0
  313. package/dist/orphan-sidecar.d.ts +79 -0
  314. package/dist/orphan-sidecar.d.ts.map +1 -0
  315. package/dist/orphan-sidecar.js +71 -0
  316. package/dist/orphan-sidecar.js.map +1 -0
  317. package/dist/output.d.ts +48 -0
  318. package/dist/output.d.ts.map +1 -0
  319. package/dist/output.js +66 -0
  320. package/dist/output.js.map +1 -0
  321. package/dist/pi-harness.d.ts +179 -0
  322. package/dist/pi-harness.d.ts.map +1 -0
  323. package/dist/pi-harness.js +342 -0
  324. package/dist/pi-harness.js.map +1 -0
  325. package/dist/placement.d.ts +99 -0
  326. package/dist/placement.d.ts.map +1 -0
  327. package/dist/placement.js +67 -0
  328. package/dist/placement.js.map +1 -0
  329. package/dist/prd-to-spec.d.ts +329 -0
  330. package/dist/prd-to-spec.d.ts.map +1 -0
  331. package/dist/prd-to-spec.js +706 -0
  332. package/dist/prd-to-spec.js.map +1 -0
  333. package/dist/prepare.d.ts +121 -0
  334. package/dist/prepare.d.ts.map +1 -0
  335. package/dist/prepare.js +140 -0
  336. package/dist/prepare.js.map +1 -0
  337. package/dist/prompt.d.ts +363 -0
  338. package/dist/prompt.d.ts.map +1 -0
  339. package/dist/prompt.js +499 -0
  340. package/dist/prompt.js.map +1 -0
  341. package/dist/protocol/ADR-FORMAT.md +47 -0
  342. package/dist/protocol/CLAIM-PROTOCOL.md +217 -0
  343. package/dist/protocol/REVIEW-PROTOCOL.md +119 -0
  344. package/dist/protocol/SURFACE-PROTOCOL.md +121 -0
  345. package/dist/protocol/TASKING-PROTOCOL.md +122 -0
  346. package/dist/protocol/WORK-CONTRACT.md +276 -0
  347. package/dist/protocol/spec-template.md +71 -0
  348. package/dist/protocol/task-template.md +65 -0
  349. package/dist/readiness.d.ts +66 -0
  350. package/dist/readiness.d.ts.map +1 -0
  351. package/dist/readiness.js +36 -0
  352. package/dist/readiness.js.map +1 -0
  353. package/dist/reap-branches.d.ts +102 -0
  354. package/dist/reap-branches.d.ts.map +1 -0
  355. package/dist/reap-branches.js +149 -0
  356. package/dist/reap-branches.js.map +1 -0
  357. package/dist/recover-isolated.d.ts +72 -0
  358. package/dist/recover-isolated.d.ts.map +1 -0
  359. package/dist/recover-isolated.js +188 -0
  360. package/dist/recover-isolated.js.map +1 -0
  361. package/dist/registry.d.ts +172 -0
  362. package/dist/registry.d.ts.map +1 -0
  363. package/dist/registry.js +296 -0
  364. package/dist/registry.js.map +1 -0
  365. package/dist/repo-config.d.ts +201 -0
  366. package/dist/repo-config.d.ts.map +1 -0
  367. package/dist/repo-config.js +414 -0
  368. package/dist/repo-config.js.map +1 -0
  369. package/dist/repo-key.d.ts +20 -0
  370. package/dist/repo-key.d.ts.map +1 -0
  371. package/dist/repo-key.js +68 -0
  372. package/dist/repo-key.js.map +1 -0
  373. package/dist/repo-mirror.d.ts +177 -0
  374. package/dist/repo-mirror.d.ts.map +1 -0
  375. package/dist/repo-mirror.js +271 -0
  376. package/dist/repo-mirror.js.map +1 -0
  377. package/dist/retry-backoff.d.ts +90 -0
  378. package/dist/retry-backoff.d.ts.map +1 -0
  379. package/dist/retry-backoff.js +98 -0
  380. package/dist/retry-backoff.js.map +1 -0
  381. package/dist/review-gate.d.ts +173 -0
  382. package/dist/review-gate.d.ts.map +1 -0
  383. package/dist/review-gate.js +261 -0
  384. package/dist/review-gate.js.map +1 -0
  385. package/dist/review-verdict.d.ts +149 -0
  386. package/dist/review-verdict.d.ts.map +1 -0
  387. package/dist/review-verdict.js +332 -0
  388. package/dist/review-verdict.js.map +1 -0
  389. package/dist/run.d.ts +221 -0
  390. package/dist/run.d.ts.map +1 -0
  391. package/dist/run.js +963 -0
  392. package/dist/run.js.map +1 -0
  393. package/dist/scan.d.ts +308 -0
  394. package/dist/scan.d.ts.map +1 -0
  395. package/dist/scan.js +374 -0
  396. package/dist/scan.js.map +1 -0
  397. package/dist/select-order.d.ts +75 -0
  398. package/dist/select-order.d.ts.map +1 -0
  399. package/dist/select-order.js +108 -0
  400. package/dist/select-order.js.map +1 -0
  401. package/dist/select-priority.d.ts +188 -0
  402. package/dist/select-priority.d.ts.map +1 -0
  403. package/dist/select-priority.js +80 -0
  404. package/dist/select-priority.js.map +1 -0
  405. package/dist/select.d.ts +25 -0
  406. package/dist/select.d.ts.map +1 -0
  407. package/dist/select.js +43 -0
  408. package/dist/select.js.map +1 -0
  409. package/dist/session-path.d.ts +36 -0
  410. package/dist/session-path.d.ts.map +1 -0
  411. package/dist/session-path.js +129 -0
  412. package/dist/session-path.js.map +1 -0
  413. package/dist/sidecar-apply.d.ts +83 -0
  414. package/dist/sidecar-apply.d.ts.map +1 -0
  415. package/dist/sidecar-apply.js +111 -0
  416. package/dist/sidecar-apply.js.map +1 -0
  417. package/dist/sidecar.d.ts +245 -0
  418. package/dist/sidecar.d.ts.map +1 -0
  419. package/dist/sidecar.js +481 -0
  420. package/dist/sidecar.js.map +1 -0
  421. package/dist/slug-namespace.d.ts +204 -0
  422. package/dist/slug-namespace.d.ts.map +1 -0
  423. package/dist/slug-namespace.js +229 -0
  424. package/dist/slug-namespace.js.map +1 -0
  425. package/dist/spec-complete.d.ts +44 -0
  426. package/dist/spec-complete.d.ts.map +1 -0
  427. package/dist/spec-complete.js +69 -0
  428. package/dist/spec-complete.js.map +1 -0
  429. package/dist/start.d.ts +97 -0
  430. package/dist/start.d.ts.map +1 -0
  431. package/dist/start.js +633 -0
  432. package/dist/start.js.map +1 -0
  433. package/dist/status.d.ts +199 -0
  434. package/dist/status.d.ts.map +1 -0
  435. package/dist/status.js +228 -0
  436. package/dist/status.js.map +1 -0
  437. package/dist/surface-gate.d.ts +162 -0
  438. package/dist/surface-gate.d.ts.map +1 -0
  439. package/dist/surface-gate.js +206 -0
  440. package/dist/surface-gate.js.map +1 -0
  441. package/dist/surface-persist.d.ts +86 -0
  442. package/dist/surface-persist.d.ts.map +1 -0
  443. package/dist/surface-persist.js +129 -0
  444. package/dist/surface-persist.js.map +1 -0
  445. package/dist/tasker-review-loop.d.ts +249 -0
  446. package/dist/tasker-review-loop.d.ts.map +1 -0
  447. package/dist/tasker-review-loop.js +369 -0
  448. package/dist/tasker-review-loop.js.map +1 -0
  449. package/dist/tasking-eligibility.d.ts +74 -0
  450. package/dist/tasking-eligibility.d.ts.map +1 -0
  451. package/dist/tasking-eligibility.js +52 -0
  452. package/dist/tasking-eligibility.js.map +1 -0
  453. package/dist/tasking-lock.d.ts +111 -0
  454. package/dist/tasking-lock.d.ts.map +1 -0
  455. package/dist/tasking-lock.js +256 -0
  456. package/dist/tasking-lock.js.map +1 -0
  457. package/dist/tasking.d.ts +275 -0
  458. package/dist/tasking.d.ts.map +1 -0
  459. package/dist/tasking.js +951 -0
  460. package/dist/tasking.js.map +1 -0
  461. package/dist/triage-gate.d.ts +127 -0
  462. package/dist/triage-gate.d.ts.map +1 -0
  463. package/dist/triage-gate.js +139 -0
  464. package/dist/triage-gate.js.map +1 -0
  465. package/dist/triage-persist.d.ts +163 -0
  466. package/dist/triage-persist.d.ts.map +1 -0
  467. package/dist/triage-persist.js +387 -0
  468. package/dist/triage-persist.js.map +1 -0
  469. package/dist/verdict-json.d.ts +32 -0
  470. package/dist/verdict-json.d.ts.map +1 -0
  471. package/dist/verdict-json.js +74 -0
  472. package/dist/verdict-json.js.map +1 -0
  473. package/dist/verify-workflow-template.d.ts +60 -0
  474. package/dist/verify-workflow-template.d.ts.map +1 -0
  475. package/dist/verify-workflow-template.js +126 -0
  476. package/dist/verify-workflow-template.js.map +1 -0
  477. package/dist/verify.d.ts +60 -0
  478. package/dist/verify.d.ts.map +1 -0
  479. package/dist/verify.js +62 -0
  480. package/dist/verify.js.map +1 -0
  481. package/dist/watch-session.d.ts +112 -0
  482. package/dist/watch-session.d.ts.map +1 -0
  483. package/dist/watch-session.js +347 -0
  484. package/dist/watch-session.js.map +1 -0
  485. package/dist/work-layout.d.ts +198 -0
  486. package/dist/work-layout.d.ts.map +1 -0
  487. package/dist/work-layout.js +217 -0
  488. package/dist/work-layout.js.map +1 -0
  489. package/dist/work-on.d.ts +154 -0
  490. package/dist/work-on.d.ts.map +1 -0
  491. package/dist/work-on.js +387 -0
  492. package/dist/work-on.js.map +1 -0
  493. package/dist/workspace.d.ts +224 -0
  494. package/dist/workspace.d.ts.map +1 -0
  495. package/dist/workspace.js +325 -0
  496. package/dist/workspace.js.map +1 -0
  497. package/package.json +46 -2
  498. package/src/advance-ci-template.ts +203 -0
  499. package/src/advance-classify.ts +197 -0
  500. package/src/advance-drivers.ts +414 -0
  501. package/src/advance-isolated.ts +432 -0
  502. package/src/advance-lifecycle-template.ts +791 -0
  503. package/src/advance-loop-driver.ts +745 -0
  504. package/src/advance-treeless-publish.ts +177 -0
  505. package/src/advance.ts +1564 -0
  506. package/src/advancing-lock.ts +988 -0
  507. package/src/agent-launch.ts +137 -0
  508. package/src/agent-stop.ts +361 -0
  509. package/src/apply-decide.ts +242 -0
  510. package/src/apply-merge-action.ts +502 -0
  511. package/src/apply-persist.ts +518 -0
  512. package/src/arbiter.ts +372 -0
  513. package/src/brand.ts +111 -0
  514. package/src/buildable-body.ts +196 -0
  515. package/src/categorise.ts +158 -0
  516. package/src/claim-cas.ts +513 -0
  517. package/src/cli-spinner.ts +225 -0
  518. package/src/cli.ts +4379 -0
  519. package/src/close-job-template.ts +236 -0
  520. package/src/close-job.ts +319 -0
  521. package/src/complete.ts +1379 -0
  522. package/src/concurrency.ts +151 -0
  523. package/src/config-override.ts +116 -0
  524. package/src/config.ts +883 -0
  525. package/src/continue-branch.ts +542 -0
  526. package/src/cwd-section.ts +392 -0
  527. package/src/decision-engine.ts +272 -0
  528. package/src/detect.ts +124 -0
  529. package/src/do-autopick.ts +223 -0
  530. package/src/do-config.ts +589 -0
  531. package/src/do-remote-auto.ts +197 -0
  532. package/src/do.ts +2623 -0
  533. package/src/drop-source.ts +194 -0
  534. package/src/eligibility.ts +79 -0
  535. package/src/env-config.ts +305 -0
  536. package/src/failure-cause.ts +142 -0
  537. package/src/format.ts +313 -0
  538. package/src/frontmatter.ts +477 -0
  539. package/src/gate-readiness.ts +147 -0
  540. package/src/gc.ts +510 -0
  541. package/src/gh-failure.ts +53 -0
  542. package/src/git.ts +186 -0
  543. package/src/github.ts +468 -0
  544. package/src/harness.ts +355 -0
  545. package/src/identity.ts +322 -0
  546. package/src/index.ts +785 -0
  547. package/src/install-ci-branch-protection.ts +255 -0
  548. package/src/install-ci-capabilities/advance-lifecycle.ts +34 -0
  549. package/src/install-ci-capabilities/close-job.ts +32 -0
  550. package/src/install-ci-capabilities/example-noop.ts +24 -0
  551. package/src/install-ci-capabilities/intake.ts +34 -0
  552. package/src/install-ci-capabilities/verify.ts +33 -0
  553. package/src/install-ci-core.ts +1088 -0
  554. package/src/install-ci-github.ts +376 -0
  555. package/src/install-ci.ts +552 -0
  556. package/src/intake-event.ts +102 -0
  557. package/src/intake-marker.ts +195 -0
  558. package/src/intake-triage.ts +138 -0
  559. package/src/intake-trigger-template.ts +591 -0
  560. package/src/intake.ts +2445 -0
  561. package/src/integration-core.ts +3065 -0
  562. package/src/integrator.ts +771 -0
  563. package/src/isolation.ts +484 -0
  564. package/src/issue-provider.ts +733 -0
  565. package/src/item-lock.ts +1858 -0
  566. package/src/item-path.ts +75 -0
  567. package/src/ledger-lint.ts +332 -0
  568. package/src/ledger-read.ts +924 -0
  569. package/src/ledger-write.ts +865 -0
  570. package/src/lifecycle-gather.ts +298 -0
  571. package/src/lifecycle-pools.ts +250 -0
  572. package/src/merge-question-surfacer.ts +496 -0
  573. package/src/mint-adr.ts +362 -0
  574. package/src/mirror-pool-scan.ts +240 -0
  575. package/src/needs-attention.ts +1506 -0
  576. package/src/orphan-sidecar.ts +150 -0
  577. package/src/output.ts +89 -0
  578. package/src/pi-harness.ts +403 -0
  579. package/src/placement.ts +131 -0
  580. package/src/prd-to-spec.ts +1059 -0
  581. package/src/prepare.ts +230 -0
  582. package/src/prompt.ts +763 -0
  583. package/src/readiness.ts +98 -0
  584. package/src/reap-branches.ts +278 -0
  585. package/src/recover-isolated.ts +276 -0
  586. package/src/registry.ts +475 -0
  587. package/src/repo-config.ts +550 -0
  588. package/src/repo-key.ts +74 -0
  589. package/src/repo-mirror.ts +367 -0
  590. package/src/retry-backoff.ts +130 -0
  591. package/src/review-gate.ts +389 -0
  592. package/src/review-verdict.ts +422 -0
  593. package/src/run.ts +1430 -0
  594. package/src/scan.ts +611 -0
  595. package/src/select-order.ts +143 -0
  596. package/src/select-priority.ts +266 -0
  597. package/src/select.ts +62 -0
  598. package/src/session-path.ts +153 -0
  599. package/src/sidecar-apply.ts +216 -0
  600. package/src/sidecar.ts +700 -0
  601. package/src/slug-namespace.ts +367 -0
  602. package/src/spec-complete.ts +118 -0
  603. package/src/start.ts +974 -0
  604. package/src/status.ts +441 -0
  605. package/src/surface-gate.ts +337 -0
  606. package/src/surface-persist.ts +241 -0
  607. package/src/tasker-review-loop.ts +671 -0
  608. package/src/tasking-eligibility.ts +114 -0
  609. package/src/tasking-lock.ts +416 -0
  610. package/src/tasking.ts +1437 -0
  611. package/src/triage-gate.ts +248 -0
  612. package/src/triage-persist.ts +570 -0
  613. package/src/verdict-json.ts +73 -0
  614. package/src/verify-workflow-template.ts +159 -0
  615. package/src/verify.ts +123 -0
  616. package/src/watch-session.ts +397 -0
  617. package/src/work-layout.ts +262 -0
  618. package/src/work-on.ts +660 -0
  619. package/src/workspace.ts +502 -0
package/dist/format.js ADDED
@@ -0,0 +1,256 @@
1
+ import { formatDuplicateWarnings } from './ledger-lint.js';
2
+ import { categoriseItems, summariseGroups, CATEGORY_ORDER, CATEGORY_LABELS, } from './categorise.js';
3
+ /**
4
+ * Human label for the two autonomy axes. `humanOnly` is reported first when both
5
+ * are set, so the REASON an agent is gated is always visible and distinct from
6
+ * `needsAnswers`.
7
+ */
8
+ export function gateLabel(humanOnly, needsAnswers) {
9
+ if (humanOnly === true) {
10
+ return 'human-only';
11
+ }
12
+ if (needsAnswers === true) {
13
+ return 'needs-answers';
14
+ }
15
+ return 'undeclared';
16
+ }
17
+ /** A short description of the `blockedBy` readiness for one item. */
18
+ function readinessLabel(item) {
19
+ if (item.blockedBy.length === 0) {
20
+ return 'deps: satisfied (none)';
21
+ }
22
+ if (item.eligibility.blockedBy.satisfied) {
23
+ return `deps: satisfied (${item.blockedBy.join(', ')})`;
24
+ }
25
+ return `deps: waiting on ${item.eligibility.blockedBy.missing.join(', ')}`;
26
+ }
27
+ /** Ready items get a filled marker, blocked ones an open one. */
28
+ function readinessMarker(entry) {
29
+ return entry.ready ? '*' : 'o';
30
+ }
31
+ function formatItem(entry) {
32
+ return ` ${readinessMarker(entry)} ${entry.item.slug} ${readinessLabel(entry.item)}`;
33
+ }
34
+ /** Render one repo's three labelled groups; empty groups show `(none)`. */
35
+ function formatRepo(path, groups) {
36
+ const lines = [];
37
+ lines.push(` ${path}`);
38
+ lines.push('');
39
+ for (const category of CATEGORY_ORDER) {
40
+ lines.push(` ${CATEGORY_LABELS[category]}:`);
41
+ const entries = groups[category];
42
+ if (entries.length === 0) {
43
+ lines.push(' (none)');
44
+ }
45
+ else {
46
+ for (const entry of entries) {
47
+ lines.push(formatItem(entry));
48
+ }
49
+ }
50
+ }
51
+ lines.push('');
52
+ return lines;
53
+ }
54
+ function pluralRepos(n) {
55
+ return n === 1 ? 'repo' : 'repos';
56
+ }
57
+ function pluralItems(n) {
58
+ return n === 1 ? 'item' : 'items';
59
+ }
60
+ /**
61
+ * The divergence-vs-arbiter line for the cwd-local section, using the
62
+ * `main-divergence-guard` framing: local `main` AHEAD of `<arbiter>/main` means
63
+ * UNPUSHED commits (the local working tree is more authoritative than the
64
+ * arbiter for those); BEHIND means the arbiter has commits the local tree lacks.
65
+ * When the fetch failed it says so (the divergence reflects last-known).
66
+ */
67
+ function cwdDivergenceLine(arbiter) {
68
+ const freshness = arbiter.fetched
69
+ ? 'fetched just now'
70
+ : 'FETCH FAILED — last-known (offline)';
71
+ const { ahead, behind, remote } = arbiter;
72
+ if (ahead === 0 && behind === 0) {
73
+ return ` in sync with ${remote}/main (${freshness}).`;
74
+ }
75
+ const parts = [];
76
+ if (ahead > 0) {
77
+ parts.push(`${ahead} commit${ahead === 1 ? '' : 's'} ahead (unpushed)`);
78
+ }
79
+ if (behind > 0) {
80
+ parts.push(`${behind} commit${behind === 1 ? '' : 's'} behind`);
81
+ }
82
+ return ` local main is ${parts.join(', ')} vs ${remote}/main (${freshness}).`;
83
+ }
84
+ /**
85
+ * Render the CWD-LOCAL section of `scan`/`status` (the `scan-status-read-cwd-repo`
86
+ * task): a DISTINCT, separately-counted block for the CURRENT repo, read from
87
+ * the LOCAL WORKING TREE (NOT the registry's bare mirror ref). Returns `[]` when
88
+ * the cwd does NOT participate (no local section). The section LABELS its source
89
+ * + freshness, shows the divergence-vs-arbiter (`main-divergence-guard` framing),
90
+ * and — when the cwd participates but is NOT registered — teaches
91
+ * self-registration instead of the dead-end "No participating repos found".
92
+ *
93
+ * The counts here are the cwd's OWN (never merged into the registry total — the
94
+ * consistency rule): the two reads have different freshness + storage models.
95
+ */
96
+ /**
97
+ * Render ONE held per-item lock entry (action × state + reason/questions) as
98
+ * indented lines, the SHARED renderer for the in-flight lock surface on BOTH the
99
+ * registry view (`formatStatus`) and the cwd section (`formatCwdSection`), so the
100
+ * two substrates present a held/stuck item identically (NOT a forked renderer). An
101
+ * `active` hold reads as `in-progress`; a `stuck` hold as `needs-attention` and
102
+ * carries its (possibly multi-line) reason + any surfaced questions.
103
+ */
104
+ export function formatLockEntryLines(entry, indent) {
105
+ const lines = [];
106
+ const view = entry.state === 'stuck' ? 'needs-attention' : 'in-progress';
107
+ lines.push(`${indent}${entry.entry} (${entry.action}/${entry.state} = ${view})`);
108
+ if (entry.state === 'stuck') {
109
+ const reason = entry.reason && entry.reason !== ''
110
+ ? entry.reason
111
+ : '(no reason recorded)';
112
+ const reasonLines = reason.split('\n');
113
+ lines.push(`${indent} reason: ${reasonLines[0]}`);
114
+ for (const extra of reasonLines.slice(1)) {
115
+ lines.push(`${indent} ${extra}`);
116
+ }
117
+ if (entry.questions && entry.questions.length > 0) {
118
+ lines.push(`${indent} questions:`);
119
+ for (const q of entry.questions) {
120
+ lines.push(`${indent} - ${q}`);
121
+ }
122
+ }
123
+ }
124
+ return lines;
125
+ }
126
+ export function formatCwdSection(section) {
127
+ if (!section.participating || section.repo === undefined) {
128
+ return [];
129
+ }
130
+ const lines = [];
131
+ const dedup = section.alsoRegistered === true ? ' (also registered)' : '';
132
+ lines.push('This repo (local working tree):');
133
+ lines.push(` ${section.path}${dedup}`);
134
+ lines.push(' source: local working tree (may be ahead of / behind the arbiter) — ' +
135
+ 'distinct from the registry view below (arbiter main, fetched).');
136
+ // Fetch-first divergence-vs-arbiter (or a no-arbiter note).
137
+ if (section.arbiter !== undefined) {
138
+ lines.push(cwdDivergenceLine(section.arbiter));
139
+ }
140
+ else {
141
+ lines.push(' no arbiter remote configured — divergence vs arbiter unknown.');
142
+ }
143
+ const total = section.totalItems ?? 0;
144
+ // Self-registration hint when the cwd participates but is NOT registered.
145
+ if (section.alsoRegistered !== true) {
146
+ lines.push('');
147
+ lines.push(` This repo participates (${total} backlog ${pluralItems(total)}) but is ` +
148
+ 'NOT registered — `run`/`scan` across machines won’t see it until ' +
149
+ '`dorfl remote add . --local` (or `remote add <its-url>`).');
150
+ }
151
+ // The cwd's grouped backlog — the SAME who-can-take-it grouping the registry
152
+ // view uses, but read from the working tree and counted SEPARATELY.
153
+ const groups = categoriseItems(section.repo.items);
154
+ lines.push('');
155
+ for (const category of CATEGORY_ORDER) {
156
+ lines.push(` ${CATEGORY_LABELS[category]}:`);
157
+ const entries = groups[category];
158
+ if (entries.length === 0) {
159
+ lines.push(' (none)');
160
+ }
161
+ else {
162
+ for (const entry of entries) {
163
+ lines.push(formatItem(entry));
164
+ }
165
+ }
166
+ }
167
+ // The PER-ITEM LOCK in-flight SURFACE for the cwd (prd
168
+ // `ledger-status-per-item-lock-refs` US #8): held (`active` = in-progress) and
169
+ // `stuck` (= needs-attention) lock entries + their reasons. This is what keeps a
170
+ // held/stuck cwd item from vanishing: the held-slug subtraction removes it from
171
+ // the buckets above, so without THIS block it would be invisible (the regression
172
+ // this fixes). Symmetric with the registry view's `In-flight locks` block (same
173
+ // `refs/dorfl/lock/*` source, same primitive); rendered HERE inside the cwd
174
+ // section so it stays the cwd's OWN, separately-counted surface. Empty ⇒ no
175
+ // block (a calm repo adds no lines).
176
+ const lockHeld = section.repo.lockHeld ?? [];
177
+ if (lockHeld.length > 0) {
178
+ lines.push('');
179
+ lines.push(' In progress / stuck (lock held — refs/dorfl/lock/*):');
180
+ for (const entry of lockHeld) {
181
+ lines.push(...formatLockEntryLines(entry, ' '));
182
+ }
183
+ }
184
+ lines.push('');
185
+ lines.push(` Local total: ${total} ${pluralItems(total)} ` +
186
+ `(${section.totalEligible ?? 0} eligible) — this repo only, NOT merged with ` +
187
+ 'the registry total below.');
188
+ return lines;
189
+ }
190
+ /**
191
+ * Render the cross-repo queue as a human decision dashboard: under each repo,
192
+ * every backlog item is grouped by who-can-take-it (Agent-claimable now /
193
+ * Human-only / Blocked), with empty groups shown as `(none)`. Within a group,
194
+ * ready (deps-satisfied) items sort above blocked ones.
195
+ *
196
+ * The set of groups shown is INDEPENDENT of `autoBuild`; only the eligibility
197
+ * *verdict* line reflects the policy (`report.totalEligible` counts an
198
+ * agent-claimable item only when `autoBuild` is on).
199
+ */
200
+ export function formatReport(report, cwd) {
201
+ const lines = [];
202
+ // The cwd-local section (the `scan-status-read-cwd-repo` task): a DISTINCT,
203
+ // separately-counted block for the CURRENT repo, ABOVE the registry view.
204
+ const cwdLines = cwd !== undefined ? formatCwdSection(cwd) : [];
205
+ if (cwdLines.length > 0) {
206
+ lines.push(...cwdLines);
207
+ lines.push('');
208
+ }
209
+ // De-dup: when the cwd is ALSO registered, drop its registry row (shown once,
210
+ // above, marked "(also registered)") so the same repo never appears twice.
211
+ const registryRepos = cwd?.alsoRegistered === true && cwd.registeredMirrorPath !== undefined
212
+ ? report.repos.filter((r) => r.path !== cwd.registeredMirrorPath)
213
+ : report.repos;
214
+ if (registryRepos.length === 0) {
215
+ // If the cwd participates we already rendered its local section above (no
216
+ // dead-end). Otherwise keep the existing empty-state.
217
+ if (cwdLines.length === 0) {
218
+ lines.push('No participating repos found.');
219
+ lines.push('(A repo participates iff its work/ tree has lifecycle content in any ' +
220
+ 'pool: tasks/ready, tasks/backlog, prds/proposed, prds/ready, ' +
221
+ 'notes/observations, or questions.)');
222
+ }
223
+ else {
224
+ lines.push('Registered repos: (none) — nothing registered in the registry yet.');
225
+ }
226
+ return lines.join('\n').replace(/\n+$/, '');
227
+ }
228
+ lines.push('Registered repos (registry — arbiter main, fetched):');
229
+ lines.push('');
230
+ const allGroups = [];
231
+ for (const repo of registryRepos) {
232
+ const groups = categoriseItems(repo.items);
233
+ allGroups.push(groups);
234
+ lines.push(...formatRepo(repo.path, groups));
235
+ // The one-slug-one-folder LINT (prd `ledger-integrity` story 3): WARN LOUDLY
236
+ // when any slug in this repo's ledger resides in >1 status folder (a corrupt
237
+ // ledger — never a silent pass). Clean ledgers add no lines.
238
+ const warnings = formatDuplicateWarnings(repo.ledgerDuplicates ?? []);
239
+ if (warnings.length > 0) {
240
+ lines.push(...warnings.map((w) => ` ${w}`));
241
+ lines.push('');
242
+ }
243
+ }
244
+ const s = summariseGroups(allGroups);
245
+ const repoCount = registryRepos.length;
246
+ const registryItems = registryRepos.reduce((n, r) => n + r.items.length, 0);
247
+ const registryEligible = registryRepos.reduce((n, r) => n + r.items.filter((i) => i.eligibility.eligible).length, 0);
248
+ lines.push(`Registry summary: ${registryItems} item(s) across ${repoCount} ${pluralRepos(repoCount)} — ` +
249
+ `${s.agentClaimable} agent-claimable, ${s.humanOnly} human-only, ` +
250
+ `${s.needsAnswers} needs-answers, ${s.blocked} blocked ` +
251
+ `(${s.ready} ready).`);
252
+ lines.push(`Runner verdict: ${registryEligible}/${registryItems} item(s) eligible now ` +
253
+ `(under the current --auto-build policy).`);
254
+ return lines.join('\n');
255
+ }
256
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,208 @@
1
+ /**
2
+ * Minimal, dependency-free parser for the small subset of YAML frontmatter the
3
+ * `work/` contract uses: top-level scalar keys and string lists (inline `[a, b]`
4
+ * or block `- a` form). It deliberately does NOT implement general YAML — only
5
+ * what `work/` task frontmatter needs (slug, humanOnly, blockedBy, ...).
6
+ */
7
+ /**
8
+ * **Origin-trust PROVENANCE** (task `untrusted-origin-forces-build-propose`).
9
+ * How a prd/task was BORN and the AUTHOR-TRUST verdict at birth, stamped so the
10
+ * signal SURVIVES the prd/task merge boundary (a landed-on-`main` artifact would
11
+ * otherwise erase how it was created — the laundering gap).
12
+ *
13
+ * - `origin` — `human` (the default / unset: a human authored it locally; a local
14
+ * intake with no `--origin-trust` is ALSO this) | `issue` (the CI intake
15
+ * front-door stamped it from a public issue).
16
+ * - `originTrust` — `trusted` | `untrusted`, the `author_association` verdict at
17
+ * birth (only meaningful when `origin: issue`). UNSET ⇒ `trusted` (the normal
18
+ * human path; ZERO behaviour change). `untrusted` forces the task's BUILD
19
+ * transition to `propose` so a human reviews the becomes-code change (an
20
+ * explicit `--merge` still overrides — the operator is present).
21
+ *
22
+ * `intake.ts` does NOT resolve the trust verdict itself (the `intake.ts` ~L296
23
+ * boundary: trust is CI's POLICY); the CI shell passes it IN via `--origin-trust`.
24
+ */
25
+ export type Origin = 'human' | 'issue';
26
+ export type OriginTrust = 'trusted' | 'untrusted';
27
+ export interface Frontmatter {
28
+ /**
29
+ * How the artifact was BORN (`human`|`issue`). `undefined` when omitted
30
+ * (⇒ `human`/trusted: the normal local-author path, no behaviour change).
31
+ * Stamped `issue` by the CI intake front-door so the becomes-code checkpoint is
32
+ * not laundered at the merge boundary.
33
+ */
34
+ origin: Origin | undefined;
35
+ /**
36
+ * The author-trust verdict at birth (`trusted`|`untrusted`); only meaningful
37
+ * when `origin: issue`. `undefined` when omitted (⇒ `trusted`: the normal path,
38
+ * zero behaviour change). An `untrusted` task forces its BUILD transition to
39
+ * `propose` (overridable by an explicit `--merge`).
40
+ */
41
+ originTrust: OriginTrust | undefined;
42
+ /** Content-derived slug id (frontmatter `slug:`). */
43
+ slug: string | undefined;
44
+ /**
45
+ * Source SPEC slug: the parent-spec pointer this artifact derives from; the
46
+ * spec lives at `work/specs/ready/<spec>.md`. The `spec` vocabulary name (spec
47
+ * `prd-to-spec-vocabulary-cutover-and-migration-command`). `parseFrontmatter`
48
+ * populates it from EITHER the canonical `spec:` key OR the LEGACY `prd:` key
49
+ * (the latter kept as a read-only BACK-COMPAT alias for un-migrated downstream
50
+ * repos, whose data still carries `prd:` until `dorfl prd-to-spec` converts it).
51
+ * `spec:` wins when both are present. There is no longer a separate `fm.prd`
52
+ * FIELD — both keys feed this one field.
53
+ */
54
+ spec: string | undefined;
55
+ /**
56
+ * The GitHub issue number an `intake`-emitted artifact was transformed from
57
+ * (frontmatter `issue:`). Parsed so the `issue: N` intake writes is
58
+ * MACHINE-READABLE — the close JOB (`runner-in-ci`'s) reaches it to resolve the
59
+ * issue from folder + field state. Carried on EITHER:
60
+ *
61
+ * - a **spec** (`intake`'s spec outcome) — a fanned task reaches it via
62
+ * `task.spec: → work/specs/ready/<spec>.md → spec issue:` (the number lives
63
+ * ONLY on the spec, never duplicated across the N fanned tasks); OR
64
+ * - a **lone task** (`intake`'s TASK outcome, no `spec:`) — the provider-agnostic
65
+ * closure link for a task that closes its own issue directly (replaces the old
66
+ * GitHub-only `Fixes #N` body line, which is now a deferred optimisation).
67
+ *
68
+ * INVARIANT — one closure path per task: a task uses `issue:` XOR `spec:`, never
69
+ * both. Either it closes its own issue directly (`issue:`) or it contributes to a
70
+ * spec that closes the issue (`spec:` → spec `issue:`). This is NOT enforced by a
71
+ * throwing validator (there is no frontmatter-validation layer): intake never
72
+ * emits both — its task / spec dispatch branches are mutually exclusive — so only
73
+ * a human hand-edit could produce both, and the precedence rule (`spec:` wins,
74
+ * `issue:` ignored) is the future close-job's concern (see {@link
75
+ * resolveClosingIssue}), degrading a typo to "use the spec's number" rather than
76
+ * crashing. `undefined` when omitted (every non-intake spec and most tasks).
77
+ */
78
+ issue: number | undefined;
79
+ /**
80
+ * Autonomy gate axis 1 (DECIDED). `true` when the item declares itself
81
+ * human-only (a human must drive it regardless of how complete the spec is);
82
+ * `undefined` when omitted (undeclared — most items). Present on both tasks
83
+ * and prds.
84
+ */
85
+ humanOnly: boolean | undefined;
86
+ /**
87
+ * Autonomy gate axis 2 (DISCOVERED). `true` when the item has unresolved
88
+ * questions blocking autonomous progress (the open questions live in the body);
89
+ * `undefined` when omitted. Orthogonal to `humanOnly`; present on both tasks
90
+ * and prds.
91
+ */
92
+ needsAnswers: boolean | undefined;
93
+ /**
94
+ * The triage SETTLED marker (US #30). A non-empty `triaged:` value (e.g.
95
+ * `keep` / `duplicate`) means a human (or the conservative auto-disposition)
96
+ * has SETTLED this observation, so it DROPS OUT of the triage candidate pool
97
+ * and is never re-asked. `undefined` when omitted (an UNTRIAGED observation,
98
+ * still in the pool). Carried so the lifecycle-pool enumeration
99
+ * (`advance-autopick-lifecycle-pools`) can exclude settled observations from
100
+ * the triage selection.
101
+ */
102
+ triaged: string | undefined;
103
+ /** Slugs this item is blocked by; `[]` when omitted or empty. */
104
+ blockedBy: string[];
105
+ /**
106
+ * Prd-only: slugs of prds that must already be TASKED before this prd may be
107
+ * tasked (resolved against `work/prds/tasked/` residence, NOT `done/`). `[]` when
108
+ * omitted or empty. Parsed here so the auto-tasker can read it; enforcement
109
+ * lives in the `auto-slice` capability, not in eligibility.
110
+ */
111
+ taskedAfter: string[];
112
+ /**
113
+ * The per-item override layer for the `promptGuidance` NUDGE namespace
114
+ * (task `prompt-guidance-testfirst-item-override`, prd US #5). A task or
115
+ * prd may carry one or more `promptGuidance.<member>: true | false`
116
+ * frontmatter lines to OVERRIDE the resolved repo policy for THAT ITEM only.
117
+ * Each member is `undefined` when omitted (⇒ inherit the next layer down in
118
+ * the precedence chain: per-task > per-prd > repo-resolved). The override
119
+ * is honoured at the prompt-assembly seam (`prompt.ts`); it never affects
120
+ * the `verify` gate.
121
+ *
122
+ * Parsed from the DOTTED scalar form `promptGuidance.testFirst: true`
123
+ * (single-line, mirroring the flat shape `humanOnly`/`needsAnswers` use at the
124
+ * item level). A mistyped value (e.g. `"yes"`) reads as `undefined`, the same
125
+ * silent-on-malformed behaviour the existing `humanOnly` parsing has — no
126
+ * silent coerce to true/false.
127
+ */
128
+ promptGuidance: {
129
+ testFirst: boolean | undefined;
130
+ };
131
+ }
132
+ /**
133
+ * Set (or clear) the top-level `needsAnswers:` frontmatter marker on a `work/`
134
+ * markdown document, returning the new content. Used by the tasker review→edit
135
+ * LOOP's verdict sink (`slicer-review-edit-loop`) to emit a specific uncertain
136
+ * candidate task as `needsAnswers: true` (open questions block autonomous build;
137
+ * a human must answer them). If a `needsAnswers:` line already exists it is
138
+ * REPLACED (idempotent); otherwise it is appended as the last line inside the
139
+ * frontmatter fence. A document with NO frontmatter fence gets one PREPENDED (see
140
+ * {@link setFrontmatterMarker}) — observations are born fence-less (the
141
+ * `capture-signal` skill writes prose), so the tooling-owned `needsAnswers` axis
142
+ * MUST be settable on them rather than silently dropped.
143
+ */
144
+ export declare function setNeedsAnswersMarker(content: string, value: boolean): string;
145
+ /**
146
+ * Set (or replace) a top-level scalar `<key>: <value>` frontmatter marker on a
147
+ * `work/` markdown document, returning the new content. The generalised form of
148
+ * {@link setNeedsAnswersMarker} the advance APPLY rung uses to stamp a
149
+ * `triaged: keep` marker (US #30) on an item a human answered "keep" — so a
150
+ * settled observation drops out of the candidate pool and is never re-asked. If a
151
+ * `<key>:` line already exists it is REPLACED (idempotent); otherwise it is
152
+ * appended as the last line inside the frontmatter fence.
153
+ *
154
+ * A document with NO frontmatter fence gets ONE PREPENDED carrying just this
155
+ * marker (`---\n<key>: <value>\n---\n\n<body>`). This is the load-bearing fix for
156
+ * `sidecar-without-needsAnswers`: observations are routinely created fence-less
157
+ * (the `capture-signal` skill writes free-form prose), and the OLD behaviour
158
+ * silently returned the body UNCHANGED — so `persistSurfacedQuestions` wrote the
159
+ * sidecar while the `needsAnswers:true` flag it believed it set was discarded,
160
+ * tearing the `needsAnswers ⟺ active sidecar` invariant a later tick refused to
161
+ * classify. These markers (`needsAnswers`, `triaged`) are tooling-owned axes, not
162
+ * prose, so the tool is entitled to introduce the fence it needs.
163
+ *
164
+ * The ONE remaining return-unchanged case is a MALFORMED doc that opens a fence
165
+ * (`---\n`) but never closes it: rewriting that risks corrupting hand-authored
166
+ * content, so it is left untouched (a degenerate input no writer produces).
167
+ */
168
+ export declare function setFrontmatterMarker(content: string, key: string, value: string): string;
169
+ /**
170
+ * PROPAGATE the origin-trust PROVENANCE (`origin` + `originTrust`) from a SOURCE
171
+ * artifact (a prd) onto a TARGET artifact's content (an emitted task), returning
172
+ * the new content (task `untrusted-origin-forces-build-propose`). The tasker
173
+ * calls this so a task born from an untrusted-origin prd carries the stamp the
174
+ * BUILD transition reads. IDEMPOTENT: each present source field is written via
175
+ * {@link setFrontmatterMarker} (replace-or-append). When the source has NO `origin`
176
+ * (a human/local-authored prd ⇒ trusted), the target is returned UNCHANGED — the
177
+ * normal path is never stamped (zero behaviour change). When a stamp IS applied to
178
+ * a fence-less target, {@link setFrontmatterMarker} now prepends a fence to carry
179
+ * it (tasks the tasker emits always have a fence, so this is the defensive path).
180
+ */
181
+ export declare function propagateOrigin(source: Pick<Frontmatter, 'origin' | 'originTrust'>, targetContent: string): string;
182
+ export declare function parseFrontmatter(content: string): Frontmatter;
183
+ /**
184
+ * Resolve, from a parsed artifact's frontmatter, HOW it closes its source issue:
185
+ * the `spec:` hop or the lone-task `issue:` field. A PURE helper for the FUTURE
186
+ * CI close-job (`runner-in-ci`'s) — it is NOT wired into intake or any reader
187
+ * today; it merely pins the one-closure-path PRECEDENCE in one place.
188
+ *
189
+ * Encodes the invariant: a task uses `issue:` XOR `spec:`. When (only a human
190
+ * hand-edit could) BOTH are present, `spec:` WINS — the close-job hops to the
191
+ * spec's `issue:` and IGNORES the task's own `issue:` (the fanned-spec path is
192
+ * the authoritative one; a lone `issue:` on a `spec:`-bearing task is a
193
+ * contradiction that degrades to "use the spec" rather than crashing).
194
+ *
195
+ * Returns:
196
+ * - `{via: 'spec', spec}` when a `spec:` is present (hop to the spec's `issue:`; the
197
+ * caller resolves the spec file to read its number);
198
+ * - `{via: 'issue', issue}` when only a lone-task `issue:` is present;
199
+ * - `undefined` when neither is present (no closure path).
200
+ */
201
+ export declare function resolveClosingIssue(frontmatter: Pick<Frontmatter, 'spec' | 'issue'>): {
202
+ via: 'spec';
203
+ spec: string;
204
+ } | {
205
+ via: 'issue';
206
+ issue: number;
207
+ } | undefined;
208
+ //# sourceMappingURL=frontmatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../src/frontmatter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AACvC,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC;AAElD,MAAM,WAAW,WAAW;IAC3B;;;;;OAKG;IACH,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B;;;;;OAKG;IACH,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,qDAAqD;IACrD,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB;;;;;;;;;OASG;IACH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B;;;;;OAKG;IACH,SAAS,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B;;;;;OAKG;IACH,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC;;;;;;;;OAQG;IACH,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,iEAAiE;IACjE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB;;;;;OAKG;IACH,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB;;;;;;;;;;;;;;;OAeG;IACH,cAAc,EAAE;QAAC,SAAS,EAAE,OAAO,GAAG,SAAS,CAAA;KAAC,CAAC;CACjD;AA6FD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAE7E;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,oBAAoB,CACnC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACX,MAAM,CAyBR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC9B,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,GAAG,aAAa,CAAC,EACnD,aAAa,EAAE,MAAM,GACnB,MAAM,CAYR;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CA4H7D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CAClC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,GAC9C;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,GAAG;IAAC,GAAG,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,GAAG,SAAS,CAQzE"}