dorfl 0.0.0 → 0.1.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 (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 +3094 -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 +215 -0
  162. package/dist/frontmatter.d.ts.map +1 -0
  163. package/dist/frontmatter.js +345 -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 +315 -0
  330. package/dist/prd-to-spec.d.ts.map +1 -0
  331. package/dist/prd-to-spec.js +684 -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 +360 -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 +952 -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 +4369 -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 +485 -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 +1023 -0
  581. package/src/prepare.ts +230 -0
  582. package/src/prompt.ts +760 -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 +1438 -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,215 @@
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 (frontmatter `spec:`); the spec lives at
46
+ * `work/specs/ready/<spec>.md`. The `spec` vocabulary name for the parent-spec
47
+ * pointer (prd `prd-to-spec-vocabulary-cutover-and-migration-command`). This is
48
+ * the EXPAND-step ADDITION beside {@link prd}: `parseFrontmatter` populates BOTH
49
+ * from EITHER the `spec:` OR the `prd:` key with the SAME value, so a caller
50
+ * reading either sees the parent-spec slug. The migrate batches move `fm.prd`
51
+ * reads onto `fm.spec` one at a time; the contract task removes `prd`.
52
+ */
53
+ spec: string | undefined;
54
+ /**
55
+ * Source spec slug (frontmatter `prd:`); the spec lives at
56
+ * `work/specs/ready/<prd>.md`. The LEGACY vocabulary name for the parent-spec
57
+ * pointer, kept BESIDE {@link spec} through the expand→migrate→contract cutover
58
+ * (prd `prd-to-spec-vocabulary-cutover-and-migration-command`) so every existing
59
+ * `fm.prd` reader keeps working; populated from EITHER the `spec:` or `prd:` key.
60
+ */
61
+ prd: string | undefined;
62
+ /**
63
+ * The GitHub issue number an `intake`-emitted artifact was transformed from
64
+ * (frontmatter `issue:`). Parsed so the `issue: N` intake writes is
65
+ * MACHINE-READABLE — the close JOB (`runner-in-ci`'s) reaches it to resolve the
66
+ * issue from folder + field state. Carried on EITHER:
67
+ *
68
+ * - a **prd** (`intake`'s prd outcome) — a fanned task reaches it via
69
+ * `task.prd: → work/prds/ready/<prd>.md → prd issue:` (the number lives
70
+ * ONLY on the prd, never duplicated across the N fanned tasks); OR
71
+ * - a **lone task** (`intake`'s TASK outcome, no `prd:`) — the provider-agnostic
72
+ * closure link for a task that closes its own issue directly (replaces the old
73
+ * GitHub-only `Fixes #N` body line, which is now a deferred optimisation).
74
+ *
75
+ * INVARIANT — one closure path per task: a task uses `issue:` XOR `prd:`, never
76
+ * both. Either it closes its own issue directly (`issue:`) or it contributes to a
77
+ * prd that closes the issue (`prd:` → prd `issue:`). This is NOT enforced by a
78
+ * throwing validator (there is no frontmatter-validation layer): intake never
79
+ * emits both — its task / prd dispatch branches are mutually exclusive — so only
80
+ * a human hand-edit could produce both, and the precedence rule (`prd:` wins,
81
+ * `issue:` ignored) is the future close-job's concern (see {@link
82
+ * resolveClosingIssue}), degrading a typo to "use the prd's number" rather than
83
+ * crashing. `undefined` when omitted (every non-intake prd and most tasks).
84
+ */
85
+ issue: number | undefined;
86
+ /**
87
+ * Autonomy gate axis 1 (DECIDED). `true` when the item declares itself
88
+ * human-only (a human must drive it regardless of how complete the spec is);
89
+ * `undefined` when omitted (undeclared — most items). Present on both tasks
90
+ * and prds.
91
+ */
92
+ humanOnly: boolean | undefined;
93
+ /**
94
+ * Autonomy gate axis 2 (DISCOVERED). `true` when the item has unresolved
95
+ * questions blocking autonomous progress (the open questions live in the body);
96
+ * `undefined` when omitted. Orthogonal to `humanOnly`; present on both tasks
97
+ * and prds.
98
+ */
99
+ needsAnswers: boolean | undefined;
100
+ /**
101
+ * The triage SETTLED marker (US #30). A non-empty `triaged:` value (e.g.
102
+ * `keep` / `duplicate`) means a human (or the conservative auto-disposition)
103
+ * has SETTLED this observation, so it DROPS OUT of the triage candidate pool
104
+ * and is never re-asked. `undefined` when omitted (an UNTRIAGED observation,
105
+ * still in the pool). Carried so the lifecycle-pool enumeration
106
+ * (`advance-autopick-lifecycle-pools`) can exclude settled observations from
107
+ * the triage selection.
108
+ */
109
+ triaged: string | undefined;
110
+ /** Slugs this item is blocked by; `[]` when omitted or empty. */
111
+ blockedBy: string[];
112
+ /**
113
+ * Prd-only: slugs of prds that must already be TASKED before this prd may be
114
+ * tasked (resolved against `work/prds/tasked/` residence, NOT `done/`). `[]` when
115
+ * omitted or empty. Parsed here so the auto-tasker can read it; enforcement
116
+ * lives in the `auto-slice` capability, not in eligibility.
117
+ */
118
+ taskedAfter: string[];
119
+ /**
120
+ * The per-item override layer for the `promptGuidance` NUDGE namespace
121
+ * (task `prompt-guidance-testfirst-item-override`, prd US #5). A task or
122
+ * prd may carry one or more `promptGuidance.<member>: true | false`
123
+ * frontmatter lines to OVERRIDE the resolved repo policy for THAT ITEM only.
124
+ * Each member is `undefined` when omitted (⇒ inherit the next layer down in
125
+ * the precedence chain: per-task > per-prd > repo-resolved). The override
126
+ * is honoured at the prompt-assembly seam (`prompt.ts`); it never affects
127
+ * the `verify` gate.
128
+ *
129
+ * Parsed from the DOTTED scalar form `promptGuidance.testFirst: true`
130
+ * (single-line, mirroring the flat shape `humanOnly`/`needsAnswers` use at the
131
+ * item level). A mistyped value (e.g. `"yes"`) reads as `undefined`, the same
132
+ * silent-on-malformed behaviour the existing `humanOnly` parsing has — no
133
+ * silent coerce to true/false.
134
+ */
135
+ promptGuidance: {
136
+ testFirst: boolean | undefined;
137
+ };
138
+ }
139
+ /**
140
+ * Set (or clear) the top-level `needsAnswers:` frontmatter marker on a `work/`
141
+ * markdown document, returning the new content. Used by the tasker review→edit
142
+ * LOOP's verdict sink (`slicer-review-edit-loop`) to emit a specific uncertain
143
+ * candidate task as `needsAnswers: true` (open questions block autonomous build;
144
+ * a human must answer them). If a `needsAnswers:` line already exists it is
145
+ * REPLACED (idempotent); otherwise it is appended as the last line inside the
146
+ * frontmatter fence. A document with NO frontmatter fence gets one PREPENDED (see
147
+ * {@link setFrontmatterMarker}) — observations are born fence-less (the
148
+ * `capture-signal` skill writes prose), so the tooling-owned `needsAnswers` axis
149
+ * MUST be settable on them rather than silently dropped.
150
+ */
151
+ export declare function setNeedsAnswersMarker(content: string, value: boolean): string;
152
+ /**
153
+ * Set (or replace) a top-level scalar `<key>: <value>` frontmatter marker on a
154
+ * `work/` markdown document, returning the new content. The generalised form of
155
+ * {@link setNeedsAnswersMarker} the advance APPLY rung uses to stamp a
156
+ * `triaged: keep` marker (US #30) on an item a human answered "keep" — so a
157
+ * settled observation drops out of the candidate pool and is never re-asked. If a
158
+ * `<key>:` line already exists it is REPLACED (idempotent); otherwise it is
159
+ * appended as the last line inside the frontmatter fence.
160
+ *
161
+ * A document with NO frontmatter fence gets ONE PREPENDED carrying just this
162
+ * marker (`---\n<key>: <value>\n---\n\n<body>`). This is the load-bearing fix for
163
+ * `sidecar-without-needsAnswers`: observations are routinely created fence-less
164
+ * (the `capture-signal` skill writes free-form prose), and the OLD behaviour
165
+ * silently returned the body UNCHANGED — so `persistSurfacedQuestions` wrote the
166
+ * sidecar while the `needsAnswers:true` flag it believed it set was discarded,
167
+ * tearing the `needsAnswers ⟺ active sidecar` invariant a later tick refused to
168
+ * classify. These markers (`needsAnswers`, `triaged`) are tooling-owned axes, not
169
+ * prose, so the tool is entitled to introduce the fence it needs.
170
+ *
171
+ * The ONE remaining return-unchanged case is a MALFORMED doc that opens a fence
172
+ * (`---\n`) but never closes it: rewriting that risks corrupting hand-authored
173
+ * content, so it is left untouched (a degenerate input no writer produces).
174
+ */
175
+ export declare function setFrontmatterMarker(content: string, key: string, value: string): string;
176
+ /**
177
+ * PROPAGATE the origin-trust PROVENANCE (`origin` + `originTrust`) from a SOURCE
178
+ * artifact (a prd) onto a TARGET artifact's content (an emitted task), returning
179
+ * the new content (task `untrusted-origin-forces-build-propose`). The tasker
180
+ * calls this so a task born from an untrusted-origin prd carries the stamp the
181
+ * BUILD transition reads. IDEMPOTENT: each present source field is written via
182
+ * {@link setFrontmatterMarker} (replace-or-append). When the source has NO `origin`
183
+ * (a human/local-authored prd ⇒ trusted), the target is returned UNCHANGED — the
184
+ * normal path is never stamped (zero behaviour change). When a stamp IS applied to
185
+ * a fence-less target, {@link setFrontmatterMarker} now prepends a fence to carry
186
+ * it (tasks the tasker emits always have a fence, so this is the defensive path).
187
+ */
188
+ export declare function propagateOrigin(source: Pick<Frontmatter, 'origin' | 'originTrust'>, targetContent: string): string;
189
+ export declare function parseFrontmatter(content: string): Frontmatter;
190
+ /**
191
+ * Resolve, from a parsed artifact's frontmatter, HOW it closes its source issue:
192
+ * the `prd:` hop or the lone-task `issue:` field. A PURE helper for the FUTURE
193
+ * CI close-job (`runner-in-ci`'s) — it is NOT wired into intake or any reader
194
+ * today; it merely pins the one-closure-path PRECEDENCE in one place.
195
+ *
196
+ * Encodes the invariant: a task uses `issue:` XOR `prd:`. When (only a human
197
+ * hand-edit could) BOTH are present, `prd:` WINS — the close-job hops to the prd's
198
+ * `issue:` and IGNORES the task's own `issue:` (the fanned-prd path is the
199
+ * authoritative one; a lone `issue:` on a `prd:`-bearing task is a contradiction
200
+ * that degrades to "use the prd" rather than crashing).
201
+ *
202
+ * Returns:
203
+ * - `{via: 'spec', spec}` when a `spec:` is present (hop to the spec's `issue:`; the
204
+ * caller resolves the spec file to read its number);
205
+ * - `{via: 'issue', issue}` when only a lone-task `issue:` is present;
206
+ * - `undefined` when neither is present (no closure path).
207
+ */
208
+ export declare function resolveClosingIssue(frontmatter: Pick<Frontmatter, 'spec' | 'issue'>): {
209
+ via: 'spec';
210
+ spec: string;
211
+ } | {
212
+ via: 'issue';
213
+ issue: number;
214
+ } | undefined;
215
+ //# 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;;;;;;;;OAQG;IACH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB;;;;;;OAMG;IACH,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB;;;;;;;;;;;;;;;;;;;;;;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,CA6H7D;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"}