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
@@ -0,0 +1,127 @@
1
+ import { brand } from './brand.js';
2
+ /** The marker's brand-derived namespace token (today `dorfl:intake`). */
3
+ const MARKER_NS = `${brand.base}:intake`;
4
+ /**
5
+ * Matches ONE intake marker anywhere in a comment body (the hidden HTML comment).
6
+ * Captures the inner attribute run (everything after the namespace, before `-->`)
7
+ * so {@link parseIntakeMarker} can pull `kind` / `slug` / `seen` out of it. Global
8
+ * so a body that (pathologically) carries more than one is fully scanned, though
9
+ * intake stamps exactly one per comment.
10
+ */
11
+ const MARKER_RE = new RegExp(`<!--\\s*${escapeRegExp(MARKER_NS)}\\s+([^>]*?)\\s*-->`, 'g');
12
+ /**
13
+ * STAMP the intake marker onto a comment body intake is about to post (the SHARED
14
+ * producer for ALL of ask / bounced / created). Appends the hidden HTML comment
15
+ * AFTER the human-readable text, separated by a blank line, so the rendered comment
16
+ * is just the text (the marker is invisible) yet the raw markdown carries the
17
+ * marker for the triage to recover.
18
+ *
19
+ * `seen` is the per-run DELTA of human comment ids (computed by
20
+ * {@link computeSeenDelta}); it is emitted even when empty (`seen=`) so the grammar
21
+ * is uniform and the parser never has to special-case its absence. `slug` is
22
+ * emitted only for `kind=created`.
23
+ */
24
+ export function stampIntakeMarker(body, marker) {
25
+ const parts = [`kind=${marker.kind}`];
26
+ if (marker.kind === 'created' &&
27
+ marker.slug !== undefined &&
28
+ marker.slug !== '') {
29
+ parts.push(`slug=${marker.slug}`);
30
+ }
31
+ parts.push(`seen=${marker.seen.join(',')}`);
32
+ const tag = `<!-- ${MARKER_NS} ${parts.join(' ')} -->`;
33
+ const text = body.replace(/\s+$/, '');
34
+ return text === '' ? tag : `${text}\n\n${tag}`;
35
+ }
36
+ /**
37
+ * Parse the FIRST intake marker out of a comment body (the SHARED consumer). Returns
38
+ * `undefined` when the body carries no intake marker \u2014 i.e. it is a HUMAN comment
39
+ * (the triage ranges its unseen-check over exactly these). A malformed marker (no
40
+ * `kind`, or an unknown `kind`) is treated as ABSENT rather than throwing: an
41
+ * unparseable hidden comment must never make the triage crash or misclassify a
42
+ * human comment as intake's.
43
+ */
44
+ export function parseIntakeMarker(body) {
45
+ MARKER_RE.lastIndex = 0;
46
+ const match = MARKER_RE.exec(body);
47
+ if (match === null) {
48
+ return undefined;
49
+ }
50
+ const attrs = match[1];
51
+ const kind = readAttr(attrs, 'kind');
52
+ if (kind !== 'ask' && kind !== 'bounced' && kind !== 'created') {
53
+ return undefined;
54
+ }
55
+ const slug = readAttr(attrs, 'slug');
56
+ const seenRaw = readAttr(attrs, 'seen');
57
+ const seen = seenRaw === undefined || seenRaw === ''
58
+ ? []
59
+ : seenRaw.split(',').filter((id) => id !== '');
60
+ return {
61
+ kind,
62
+ seen,
63
+ ...(slug !== undefined && slug !== '' ? { slug } : {}),
64
+ };
65
+ }
66
+ /** True iff the comment carries an intake marker \u2014 i.e. it is INTAKE's OWN comment. */
67
+ export function isIntakeComment(comment) {
68
+ return parseIntakeMarker(comment.body) !== undefined;
69
+ }
70
+ /**
71
+ * Compute the per-run `seen=` DELTA for a marker intake is about to stamp: the ids
72
+ * of the HUMAN comments in the thread as intake READ it, EXCLUDING (a) intake's own
73
+ * marker-comments (identified by carrying a marker) and (b) any human id ALREADY
74
+ * recorded in a prior intake marker's `seen=` (the chain model keeps each marker's
75
+ * `seen=` a bounded per-run delta; the union reconstructs the whole). Order follows
76
+ * `listComments`' oldest-first; ids with no value (a provider that omitted one) are
77
+ * dropped \u2014 the triage only reasons over ids it actually has.
78
+ */
79
+ export function computeSeenDelta(comments) {
80
+ const already = seenSetFrom(comments);
81
+ const delta = [];
82
+ for (const comment of comments) {
83
+ if (isIntakeComment(comment)) {
84
+ continue; // intake's own marker-comment \u2014 NEVER recorded in `seen=`.
85
+ }
86
+ const id = comment.id;
87
+ if (id === undefined || id === '') {
88
+ continue;
89
+ }
90
+ if (already.has(id) || delta.includes(id)) {
91
+ continue;
92
+ }
93
+ delta.push(id);
94
+ }
95
+ return delta;
96
+ }
97
+ /**
98
+ * Build the full `seenSet` for the TRIAGE: the UNION of every intake marker's
99
+ * `seen=` id-list in the thread (the chain model \u2014 each marker stores a per-run
100
+ * delta, the union reconstructs the complete set of human comments intake has EVER
101
+ * read). Ranges over intake's OWN comments (the ones carrying a marker); a human
102
+ * comment never carries a `seen=`.
103
+ */
104
+ export function seenSetFrom(comments) {
105
+ const set = new Set();
106
+ for (const comment of comments) {
107
+ const marker = parseIntakeMarker(comment.body);
108
+ if (marker === undefined) {
109
+ continue;
110
+ }
111
+ for (const id of marker.seen) {
112
+ set.add(id);
113
+ }
114
+ }
115
+ return set;
116
+ }
117
+ /** Read a `key=value` attribute out of a marker's inner attribute run. */
118
+ function readAttr(attrs, key) {
119
+ const re = new RegExp(`(?:^|\\s)${escapeRegExp(key)}=([^\\s]*)`);
120
+ const match = re.exec(attrs);
121
+ return match === null ? undefined : match[1];
122
+ }
123
+ /** Escape a literal for embedding in a RegExp (the brand base + attribute keys). */
124
+ function escapeRegExp(literal) {
125
+ return literal.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
126
+ }
127
+ //# sourceMappingURL=intake-marker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intake-marker.js","sourceRoot":"","sources":["../src/intake-marker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import type { IssueComment } from './issue-provider.js';
2
+ /**
3
+ * The TRIAGE outcome. `proceed` runs the prompt (optionally carrying enrichment
4
+ * flags for the prompt); `no-new-input` / `already-terminal` are SKIPS (siblings of
5
+ * `locked` \u2014 "ran, deliberately did nothing", both exit 0, observable by CI + a
6
+ * human).
7
+ */
8
+ export type IntakeTriageDecision = {
9
+ action: 'proceed';
10
+ /**
11
+ * Enrichment for the prompt on the PROCEED path. `predatingIds` are HUMAN
12
+ * comment ids that RACED IN (read-then-someone-commented-then-posted) \u2014 they
13
+ * PRE-DATE intake's last turn, so the prompt treats them as context for a
14
+ * PRIOR state, not necessarily a fresh answer. `deletedSeenCount` is the count
15
+ * of previously-SEEN human comments that have since been DELETED (computed
16
+ * ONLY on this raced proceed path \u2014 deletion is enrichment, never a wake
17
+ * trigger), flagged so the prompt does not assume its prior premises still
18
+ * hold. Both are absent/zero on the ordinary fresh/mid-ask proceed.
19
+ */
20
+ predatingIds: string[];
21
+ deletedSeenCount: number;
22
+ } | {
23
+ action: 'skip';
24
+ outcome: 'no-new-input' | 'already-terminal';
25
+ };
26
+ /**
27
+ * Run the TRIAGE over the issue's full comment thread (oldest-first, as
28
+ * `listComments` returns it). The canonical branches (prd `issue-intake`):
29
+ *
30
+ * 1. **Last comment is INTAKE's** (carries a marker). Build `seenSet` = the UNION of
31
+ * every intake marker's `seen=` id-list, then:
32
+ * - **PRIMARY** \u2014 is there an UNSEEN HUMAN comment (one WITHOUT a marker whose id
33
+ * is NOT in `seenSet`)? \u2192 PROCEED. The raced comment(s) are flagged as
34
+ * PRE-DATING intake's last turn. ALSO compute `seenSet \u2212 currentHumanThreadIds`;
35
+ * a non-empty difference means a previously-seen human comment was DELETED \u2014
36
+ * flagged (count only) so the prompt reassesses. (Deletion is ENRICHMENT on this
37
+ * proceed path only, NEVER a standalone wake trigger.)
38
+ * - **otherwise** (every human comment is in `seenSet`) \u2192 SKIP `no-new-input`. No
39
+ * deletion hunt here \u2014 a deletion with no new comment is not a turn worth waking
40
+ * for. This is what makes intake SELF-TRIGGERING a no-op by construction.
41
+ * 2. **Last comment is someone ELSE's** (no marker on the last comment):
42
+ * - the thread already contains a TERMINAL marker (`bounced`/`created`) \u2192 SKIP
43
+ * `already-terminal` (the issue was already transformed).
44
+ * - otherwise (no terminal marker \u2014 fresh issue, or mid-`ask` loop) \u2192 PROCEED.
45
+ * 3. **Empty thread** \u2192 PROCEED (a fresh issue with no comments).
46
+ */
47
+ export declare function triageIntake(comments: IssueComment[]): IntakeTriageDecision;
48
+ //# sourceMappingURL=intake-triage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intake-triage.d.ts","sourceRoot":"","sources":["../src/intake-triage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AA+BtD;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAC7B;IACA,MAAM,EAAE,SAAS,CAAC;IAClB;;;;;;;;;OASG;IACH,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CACxB,GACD;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,cAAc,GAAG,kBAAkB,CAAA;CAAC,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,oBAAoB,CAkD3E"}
@@ -0,0 +1,95 @@
1
+ import { parseIntakeMarker, seenSetFrom, } from './intake-marker.js';
2
+ /**
3
+ * **The intake TRIAGE GATE** (task `intake-self-awareness-resumption-tracking`, prd
4
+ * `issue-intake` US #2/#10): a DETERMINISTIC pre-decision gate that runs UNDER the
5
+ * processing lock, BEFORE the decision prompt, deciding whether intake should run
6
+ * the prompt at all. Built ENTIRELY on the thread MARKER (no sidecar, no cursor, no
7
+ * bot-identity), it makes intake skip when it has the last word or the issue is
8
+ * already terminal, and run the prompt ONLY on genuine new human input \u2014 which is
9
+ * also the COMPLETE fix for the self-trigger hazard (intake's own freshly-posted
10
+ * comment carries a marker, so it is excluded from the human-comment check by
11
+ * construction).
12
+ *
13
+ * The TERMINAL/non-terminal split lives HERE, never in the marker: `ask` is
14
+ * non-terminal, `bounced`/`created` are terminal. Re-classifying a kind later is a
15
+ * change to {@link TERMINAL_KINDS} only \u2014 old markers stay valid.
16
+ *
17
+ * This is PURE logic over the stubbed thread (no seam, no git, no `gh`), the same
18
+ * discipline `intake-event.ts` / `failure-cause.ts` keep.
19
+ */
20
+ /** The kinds the TRIAGE treats as TERMINAL (the issue was already transformed). */
21
+ const TERMINAL_KINDS = new Set(['bounced', 'created']);
22
+ /**
23
+ * Run the TRIAGE over the issue's full comment thread (oldest-first, as
24
+ * `listComments` returns it). The canonical branches (prd `issue-intake`):
25
+ *
26
+ * 1. **Last comment is INTAKE's** (carries a marker). Build `seenSet` = the UNION of
27
+ * every intake marker's `seen=` id-list, then:
28
+ * - **PRIMARY** \u2014 is there an UNSEEN HUMAN comment (one WITHOUT a marker whose id
29
+ * is NOT in `seenSet`)? \u2192 PROCEED. The raced comment(s) are flagged as
30
+ * PRE-DATING intake's last turn. ALSO compute `seenSet \u2212 currentHumanThreadIds`;
31
+ * a non-empty difference means a previously-seen human comment was DELETED \u2014
32
+ * flagged (count only) so the prompt reassesses. (Deletion is ENRICHMENT on this
33
+ * proceed path only, NEVER a standalone wake trigger.)
34
+ * - **otherwise** (every human comment is in `seenSet`) \u2192 SKIP `no-new-input`. No
35
+ * deletion hunt here \u2014 a deletion with no new comment is not a turn worth waking
36
+ * for. This is what makes intake SELF-TRIGGERING a no-op by construction.
37
+ * 2. **Last comment is someone ELSE's** (no marker on the last comment):
38
+ * - the thread already contains a TERMINAL marker (`bounced`/`created`) \u2192 SKIP
39
+ * `already-terminal` (the issue was already transformed).
40
+ * - otherwise (no terminal marker \u2014 fresh issue, or mid-`ask` loop) \u2192 PROCEED.
41
+ * 3. **Empty thread** \u2192 PROCEED (a fresh issue with no comments).
42
+ */
43
+ export function triageIntake(comments) {
44
+ if (comments.length === 0) {
45
+ // A fresh issue with no thread \u2014 there is genuine new material (the body).
46
+ return { action: 'proceed', predatingIds: [], deletedSeenCount: 0 };
47
+ }
48
+ const last = comments[comments.length - 1];
49
+ const lastIsIntake = parseIntakeMarker(last.body) !== undefined;
50
+ if (lastIsIntake) {
51
+ // BRANCH 1 \u2014 intake has the last word. Did a human comment race in unseen?
52
+ const seenSet = seenSetFrom(comments);
53
+ const humanComments = comments.filter((c) => parseIntakeMarker(c.body) === undefined);
54
+ const currentHumanIds = new Set(humanComments
55
+ .map((c) => c.id)
56
+ .filter((id) => id !== undefined && id !== ''));
57
+ // PRIMARY: HUMAN comments (markerless) whose id is NOT in seenSet \u2014 raced in.
58
+ const predatingIds = humanComments
59
+ .map((c) => c.id)
60
+ .filter((id) => id !== undefined && id !== '' && !seenSet.has(id));
61
+ if (predatingIds.length > 0) {
62
+ // PROCEED on the raced comment(s). DELETION ENRICHMENT (only here): a
63
+ // previously-seen human id no longer present in the thread was deleted.
64
+ let deletedSeenCount = 0;
65
+ for (const id of seenSet) {
66
+ if (!currentHumanIds.has(id)) {
67
+ deletedSeenCount += 1;
68
+ }
69
+ }
70
+ return { action: 'proceed', predatingIds, deletedSeenCount };
71
+ }
72
+ // Every human comment is in seenSet \u2014 intake has the last word and saw
73
+ // everything. SKIP (no deletion hunt: a bare deletion is not a wake trigger).
74
+ return { action: 'skip', outcome: 'no-new-input' };
75
+ }
76
+ // BRANCH 2 \u2014 the last comment is a human's. A terminal marker earlier in the
77
+ // thread means the issue was already transformed; a later human comment does not
78
+ // re-open it (a future feature may; for now, skip).
79
+ if (hasTerminalMarker(comments)) {
80
+ return { action: 'skip', outcome: 'already-terminal' };
81
+ }
82
+ // Fresh issue, or a human reply mid-`ask` loop \u2014 PROCEED to the decision.
83
+ return { action: 'proceed', predatingIds: [], deletedSeenCount: 0 };
84
+ }
85
+ /** True iff any comment in the thread carries a TERMINAL intake marker. */
86
+ function hasTerminalMarker(comments) {
87
+ for (const comment of comments) {
88
+ const marker = parseIntakeMarker(comment.body);
89
+ if (marker !== undefined && TERMINAL_KINDS.has(marker.kind)) {
90
+ return true;
91
+ }
92
+ }
93
+ return false;
94
+ }
95
+ //# sourceMappingURL=intake-triage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intake-triage.js","sourceRoot":"","sources":["../src/intake-triage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,185 @@
1
+ /**
2
+ * The `install-ci` ISSUE-INTAKE capability (prd `runner-in-ci`, task
3
+ * `install-ci-intake-trigger-and-review-surface`; capability D: consider incoming
4
+ * issues → task/prd, AND insertion point E: surface the review verdict back into
5
+ * the issue thread). This module GENERATES the one fixed intake workflow file and
6
+ * STRUCTURALLY VALIDATES it, mirroring the snapshot-assertion style of
7
+ * `advance-lifecycle-template.ts` / `advance-ci-template.ts` (the package depends on
8
+ * NO YAML lib, so the checks are presence/shape assertions over the raw text). It
9
+ * ALSO carries the PURE author-trust → per-outcome-flags DERIVATION
10
+ * ({@link deriveIntakeFlags}) — CI's merge-vs-propose POLICY, the load-bearing
11
+ * testable logic the workflow encodes at runtime.
12
+ *
13
+ * SCOPE FENCE (prd Out-of-Scope): the issue→artifact TRANSFORM engine is
14
+ * `issue-intake`'s (`intake <N>` + its four-outcome dispatch + the per-outcome
15
+ * KNOBS + the lone-task review that posts to the issue thread). CI only
16
+ * WIRES/SCHEDULES/INVOKES it and owns the merge-vs-propose POLICY + the delivery
17
+ * surface. This module emits NO transform; it emits the WORKFLOW that calls it.
18
+ *
19
+ * The discipline (prd capability-D row + the merge-vs-propose POLICY + the two
20
+ * RESOLVED design decisions in the task):
21
+ *
22
+ * - TRIGGERS: `issues` opened, `issue_comment` created, and a label
23
+ * (`dorfl:intake`). It invokes `intake <N>` (EXPLICIT, four-outcome
24
+ * dispatch) — never a bare slug.
25
+ * - EVENT→`IntakeEventKind` MAPPING (Decision 2: no edit-detection): only a
26
+ * CREATED `issue_comment` (and an opened issue / the label) drives
27
+ * (re-)evaluation; an EDITED comment is NOT a trigger (the ID-based
28
+ * `seen=<ids>` watermark suffices). The "post a NEW comment to signal an edit"
29
+ * convention is documented in the workflow so a human knows to re-trigger.
30
+ * - AUTHOR-TRUST → per-outcome FLAGS (Decision 1, {@link deriveIntakeFlags}): an
31
+ * UNTRUSTED author (`author_association` not in OWNER/MEMBER/COLLABORATOR)
32
+ * forces `--propose-task` REGARDLESS of the `autoBuild` gate, while
33
+ * `--merge-spec` stays allowed (a human still tasks a spec before anything
34
+ * autonomous acts — the checkpoint is intact). A TRUSTED author gets the plain
35
+ * gate-derived mode for both. The fully-gateless "all gates on + merge
36
+ * everywhere" path is a LOUD, NON-DEFAULT opt-in — the default is conservative
37
+ * (propose / human-in-the-loop).
38
+ * - INSERTION POINT E (the issue-thread review surface): the review verdict over
39
+ * intake's generated prds/tasks is surfaced into the ISSUE THREAD via the
40
+ * `IssueProvider.postIssueComment` seam (issue thread, by NUMBER — NOT the PR
41
+ * seam `postPRComment`, which is keyed by url). This is REUSED, not new:
42
+ * `intake <N>` already runs the lone-task review/edit loop and posts its
43
+ * findings as questions through `postIssueComment`. The workflow surfaces E by
44
+ * INVOKING `intake`; it adds no second review mechanism.
45
+ * - CI runs IN-PLACE (the CI container IS the isolation): no
46
+ * `--isolated`/`--remote`/registry. A PER-ISSUE concurrency group serialises
47
+ * overlapping ticks on the SAME issue; the `processing` lock / claim CAS is the
48
+ * real cross-run serialiser.
49
+ * - The running CI job NEVER edits `.github/workflows/**` (US #9): it requests NO
50
+ * `workflows` permission and cannot rewrite its own triggers. It needs
51
+ * `contents: write` + `pull-requests: write` (emit/propose the artifact) +
52
+ * `issues: write` (post the clarifying/review comment back).
53
+ *
54
+ * The structural validator is the dependency-free counterpart of "the workflow
55
+ * parses + carries the right discipline" the task's acceptance criteria require;
56
+ * the test generates this artifact under `--fake` and asserts every invariant.
57
+ */
58
+ import type { ResolvedCIConfig } from './install-ci-core.js';
59
+ /** The capability id (the registry key + the emitted workflow file stem). */
60
+ export declare const INTAKE_TRIGGER_CAPABILITY_ID = "intake";
61
+ /** The wizard-facing label for the issue-intake capability. */
62
+ export declare const INTAKE_TRIGGER_CAPABILITY_LABEL = "Consider incoming issues \u2192 task/prd + surface the review verdict into the issue thread (the intake trigger: issues / issue_comment / label)";
63
+ /** The repo-relative path (under the output base) of the emitted workflow. */
64
+ export declare const INTAKE_TRIGGER_WORKFLOW_PATH = "workflows/intake.yml";
65
+ /**
66
+ * The intake-trigger LABEL: a label whose addition (re-)triggers intake on an
67
+ * issue (the "label" trigger of capability D), brand-namespaced exactly like the
68
+ * `processing` lock so it cannot collide with a user's own labels. DISTINCT from
69
+ * the transient `processing` lock — this one is a human-facing "please (re-)intake
70
+ * this" signal, not a concurrency mutex.
71
+ */
72
+ export declare const INTAKE_TRIGGER_LABEL: string;
73
+ /**
74
+ * The trusted `author_association` values (Decision 1): a repo OWNER, an org
75
+ * MEMBER, or a write-COLLABORATOR is TRUSTED; everyone else
76
+ * (`CONTRIBUTOR`/`FIRST_TIME_CONTRIBUTOR`/`FIRST_TIMER`/`NONE`/anything unknown)
77
+ * is UNTRUSTED. This is the WHOLE author-trust signal — admin/write-collaborator,
78
+ * read straight off the event payload, no extra API call, no multi-factor matrix.
79
+ */
80
+ export declare const TRUSTED_AUTHOR_ASSOCIATIONS: readonly ["OWNER", "MEMBER", "COLLABORATOR"];
81
+ /**
82
+ * The per-outcome integration flags CI passes to `intake <N>` — the GRANULAR
83
+ * per-type pair (the aggregates `--merge`/`--propose` are not needed because CI
84
+ * always resolves BOTH types explicitly). Each is `'merge'` or `'propose'`.
85
+ */
86
+ export interface IntakeIntegrationFlags {
87
+ /** The spec outcome's mode → `--merge-spec` / `--propose-spec`. */
88
+ spec: 'merge' | 'propose';
89
+ /** The task outcome's mode → `--merge-task` / `--propose-task`. */
90
+ task: 'merge' | 'propose';
91
+ /**
92
+ * The ORIGIN-TRUST verdict CI passes to `intake <N>` via `--origin-trust`
93
+ * (task `untrusted-origin-forces-build-propose`) so the emitted prd/task is
94
+ * STAMPED with how it was born. Derived from the SAME `author_association` case
95
+ * as the integration flags (it IS `authorTrusted` collapsed to the wire value),
96
+ * so the stamp and the integration mode CANNOT desync. `intake.ts` writes it
97
+ * verbatim onto the frontmatter — it never re-resolves trust (the `intake.ts`
98
+ * ~L296 boundary: author-trust is CI's POLICY, passed IN, not resolved here).
99
+ */
100
+ originTrust: 'trusted' | 'untrusted';
101
+ }
102
+ /** The gate state CI composes with author-trust to derive the per-outcome flags. */
103
+ export interface IntakeGateState {
104
+ /**
105
+ * `autoBuild` — whether an agent will AUTO-BUILD an undeclared task next. ON ⇒
106
+ * a task needs a human PR checkpoint NOW (`--propose-task`); OFF ⇒ a human
107
+ * must build it, so it may `--merge-task` (when the author is also trusted).
108
+ */
109
+ autoBuild: boolean;
110
+ /**
111
+ * `autoTask` — whether an agent will AUTO-TASK an undeclared spec next. ON ⇒ a
112
+ * spec needs a human PR checkpoint NOW (`--propose-spec`); OFF ⇒ a human must
113
+ * task it, so it may `--merge-spec`.
114
+ */
115
+ autoTask: boolean;
116
+ }
117
+ /**
118
+ * DERIVE the per-outcome merge-vs-propose flags from the gate state COMPOSED with
119
+ * author-trust — CI's merge-vs-propose POLICY (prd "merge-vs-propose POLICY" +
120
+ * "Composed with AUTHOR-TRUST"; task Decision 1). This is the load-bearing pure
121
+ * logic the workflow encodes at runtime (it reads `author_association` off the
122
+ * event payload and sets the flags accordingly):
123
+ *
124
+ * - **SPEC** — gate-derived ONLY (author-trust does NOT bite): `--merge-spec` iff
125
+ * `autoTask` is OFF (a human must task the spec before anything autonomous
126
+ * acts on it — the human checkpoint stays AHEAD even for an untrusted author),
127
+ * else `--propose-spec`.
128
+ * - **TASK** — `--propose-task` iff (`autoBuild` ON) OR (author UNTRUSTED);
129
+ * `--merge-task` ONLY iff (`autoBuild` OFF AND author TRUSTED). An untrusted
130
+ * author can never auto-merge a task from a public-front-door issue.
131
+ *
132
+ * So the only way to `--merge-task` is a TRUSTED author with `autoBuild` OFF —
133
+ * and the fully-gateless "merge everything" path additionally needs `autoTask`
134
+ * OFF; both gates off + a trusted author is the LOUD, NON-DEFAULT opt-in. The
135
+ * conservative case (untrusted author, or any gate on) keeps a human in the loop.
136
+ */
137
+ export declare function deriveIntakeFlags(options: {
138
+ gate: IntakeGateState;
139
+ authorTrusted: boolean;
140
+ }): IntakeIntegrationFlags;
141
+ /**
142
+ * Classify an `author_association` string into trusted/untrusted (Decision 1). A
143
+ * missing/empty/unknown value is UNTRUSTED (fail-safe: a public front-door defaults
144
+ * to the conservative, human-in-the-loop path). Case-insensitive on the wire value
145
+ * for robustness, though GitHub emits upper-case.
146
+ */
147
+ export declare function isAuthorTrusted(authorAssociation: string | undefined): boolean;
148
+ /**
149
+ * Generate the intake-trigger workflow YAML. Deterministic: the same config
150
+ * produces byte-identical output. The workflow is a FIXED shell (ADR §6: all
151
+ * policy is env/config, so the artifact carries no config-derived policy beyond
152
+ * the env-block scaffolding) — `config` is accepted for parity with the
153
+ * `CapabilityEmitter` seam and future per-config wiring, but the intake-trigger
154
+ * shape itself is config-independent.
155
+ *
156
+ * The per-outcome FLAGS are DERIVED AT RUNTIME by a `bash` step that mirrors
157
+ * {@link deriveIntakeFlags}: it reads the gate env block + the event's
158
+ * `author_association` and sets `--merge-spec`/`--propose-spec` +
159
+ * `--merge-task`/`--propose-task` accordingly. The same rule that
160
+ * {@link deriveIntakeFlags} unit-tests is what the workflow executes — they cannot
161
+ * desync because the test asserts the SHELL derivation matches the function.
162
+ */
163
+ export declare function generateIntakeWorkflow(config: ResolvedCIConfig): string;
164
+ /** A single structural problem found in the generated workflow. */
165
+ export interface IntakeTriggerProblem {
166
+ /** A short, stable id for the violated invariant (for tests/assertions). */
167
+ id: string;
168
+ /** Human-readable description of what is missing or wrong. */
169
+ message: string;
170
+ }
171
+ /** The result of {@link validateIntakeWorkflow}. */
172
+ export interface IntakeTriggerValidation {
173
+ /** True iff the workflow satisfies EVERY structural invariant. */
174
+ ok: boolean;
175
+ /** Each violated invariant (empty when `ok`). */
176
+ problems: IntakeTriggerProblem[];
177
+ }
178
+ /**
179
+ * Structurally validate the intake-trigger workflow against the task's acceptance
180
+ * criteria. Dependency-free (no YAML lib): presence/shape assertions over the raw
181
+ * text, mirroring {@link validateAdvanceLifecycleWorkflow} /
182
+ * {@link validateCloseJobWorkflow}.
183
+ */
184
+ export declare function validateIntakeWorkflow(text: string): IntakeTriggerValidation;
185
+ //# sourceMappingURL=intake-trigger-template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intake-trigger-template.d.ts","sourceRoot":"","sources":["../src/intake-trigger-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AAGH,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AAG3D,6EAA6E;AAC7E,eAAO,MAAM,4BAA4B,WAAW,CAAC;AAErD,+DAA+D;AAC/D,eAAO,MAAM,+BAA+B,qJACkG,CAAC;AAE/I,8EAA8E;AAC9E,eAAO,MAAM,4BAA4B,yBAAyB,CAAC;AAEnE;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,QAAyB,CAAC;AAI3D;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,8CAI9B,CAAC;AAEX;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACtC,mEAAmE;IACnE,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,mEAAmE;IACnE,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B;;;;;;;;OAQG;IACH,WAAW,EAAE,SAAS,GAAG,WAAW,CAAC;CACrC;AAED,oFAAoF;AACpF,MAAM,WAAW,eAAe;IAC/B;;;;OAIG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,QAAQ,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE;IAC1C,IAAI,EAAE,eAAe,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;CACvB,GAAG,sBAAsB,CAoBzB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC9B,iBAAiB,EAAE,MAAM,GAAG,SAAS,GACnC,OAAO,CAMT;AAID;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CA4LvE;AAED,mEAAmE;AACnE,MAAM,WAAW,oBAAoB;IACpC,4EAA4E;IAC5E,EAAE,EAAE,MAAM,CAAC;IACX,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,oDAAoD;AACpD,MAAM,WAAW,uBAAuB;IACvC,kEAAkE;IAClE,EAAE,EAAE,OAAO,CAAC;IACZ,iDAAiD;IACjD,QAAQ,EAAE,oBAAoB,EAAE,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,uBAAuB,CAsK5E"}