@matteeh/osq 0.2.0 → 0.2.2

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 (630) hide show
  1. package/README.md +234 -15
  2. package/dist/cli/approve.d.ts +7 -0
  3. package/dist/cli/approve.d.ts.map +1 -1
  4. package/dist/cli/approve.js +34 -0
  5. package/dist/cli/approve.js.map +1 -1
  6. package/dist/cli/bin.js +2 -3
  7. package/dist/cli/bin.js.map +1 -1
  8. package/dist/cli/check.d.ts +15 -0
  9. package/dist/cli/check.d.ts.map +1 -0
  10. package/dist/cli/check.js +65 -0
  11. package/dist/cli/check.js.map +1 -0
  12. package/dist/cli/index.d.ts.map +1 -1
  13. package/dist/cli/index.js +10 -10
  14. package/dist/cli/index.js.map +1 -1
  15. package/dist/cli/init.d.ts.map +1 -1
  16. package/dist/cli/init.js +6 -1
  17. package/dist/cli/init.js.map +1 -1
  18. package/dist/cli/lint.d.ts +3 -0
  19. package/dist/cli/lint.d.ts.map +1 -1
  20. package/dist/cli/lint.js +33 -14
  21. package/dist/cli/lint.js.map +1 -1
  22. package/dist/cli/plan-queue.d.ts +10 -4
  23. package/dist/cli/plan-queue.d.ts.map +1 -1
  24. package/dist/cli/plan-queue.js +20 -19
  25. package/dist/cli/plan-queue.js.map +1 -1
  26. package/dist/cli/plan-sections.d.ts +15 -0
  27. package/dist/cli/plan-sections.d.ts.map +1 -0
  28. package/dist/cli/plan-sections.js +47 -0
  29. package/dist/cli/plan-sections.js.map +1 -0
  30. package/dist/cli/plan.d.ts +1 -0
  31. package/dist/cli/plan.d.ts.map +1 -1
  32. package/dist/cli/plan.js +14 -4
  33. package/dist/cli/plan.js.map +1 -1
  34. package/dist/cli/report.d.ts.map +1 -1
  35. package/dist/cli/report.js +73 -1
  36. package/dist/cli/report.js.map +1 -1
  37. package/dist/cli/run.d.ts +7 -0
  38. package/dist/cli/run.d.ts.map +1 -0
  39. package/dist/cli/run.js +22 -0
  40. package/dist/cli/run.js.map +1 -0
  41. package/dist/cli/verified.d.ts +15 -0
  42. package/dist/cli/verified.d.ts.map +1 -0
  43. package/dist/cli/verified.js +34 -0
  44. package/dist/cli/verified.js.map +1 -0
  45. package/dist/core/foundation/config-agents.d.ts +16 -0
  46. package/dist/core/foundation/config-agents.d.ts.map +1 -0
  47. package/dist/core/foundation/config-agents.js +2 -0
  48. package/dist/core/foundation/config-agents.js.map +1 -0
  49. package/dist/core/foundation/config-claude.d.ts +48 -0
  50. package/dist/core/foundation/config-claude.d.ts.map +1 -0
  51. package/dist/core/foundation/config-claude.js +106 -0
  52. package/dist/core/foundation/config-claude.js.map +1 -0
  53. package/dist/core/foundation/config-codex-resolve.d.ts +10 -0
  54. package/dist/core/foundation/config-codex-resolve.d.ts.map +1 -0
  55. package/dist/core/foundation/config-codex-resolve.js +24 -0
  56. package/dist/core/foundation/config-codex-resolve.js.map +1 -0
  57. package/dist/core/foundation/config-file.d.ts +18 -0
  58. package/dist/core/foundation/config-file.d.ts.map +1 -0
  59. package/dist/core/foundation/config-file.js +46 -0
  60. package/dist/core/foundation/config-file.js.map +1 -0
  61. package/dist/core/foundation/config-gates.d.ts +2 -0
  62. package/dist/core/foundation/config-gates.d.ts.map +1 -1
  63. package/dist/core/foundation/config-gates.js +8 -0
  64. package/dist/core/foundation/config-gates.js.map +1 -1
  65. package/dist/core/foundation/config-opencode.d.ts +25 -0
  66. package/dist/core/foundation/config-opencode.d.ts.map +1 -0
  67. package/dist/core/foundation/config-opencode.js +55 -0
  68. package/dist/core/foundation/config-opencode.js.map +1 -0
  69. package/dist/core/foundation/config-pi.d.ts +10 -0
  70. package/dist/core/foundation/config-pi.d.ts.map +1 -1
  71. package/dist/core/foundation/config-pi.js +13 -0
  72. package/dist/core/foundation/config-pi.js.map +1 -1
  73. package/dist/core/foundation/config-planning.d.ts +12 -1
  74. package/dist/core/foundation/config-planning.d.ts.map +1 -1
  75. package/dist/core/foundation/config-planning.js +29 -1
  76. package/dist/core/foundation/config-planning.js.map +1 -1
  77. package/dist/core/foundation/config-traceability.d.ts +28 -0
  78. package/dist/core/foundation/config-traceability.d.ts.map +1 -0
  79. package/dist/core/foundation/config-traceability.js +63 -0
  80. package/dist/core/foundation/config-traceability.js.map +1 -0
  81. package/dist/core/foundation/config-user.d.ts +32 -0
  82. package/dist/core/foundation/config-user.d.ts.map +1 -0
  83. package/dist/core/foundation/config-user.js +2 -0
  84. package/dist/core/foundation/config-user.js.map +1 -0
  85. package/dist/core/foundation/config-vcs.d.ts +29 -0
  86. package/dist/core/foundation/config-vcs.d.ts.map +1 -0
  87. package/dist/core/foundation/config-vcs.js +57 -0
  88. package/dist/core/foundation/config-vcs.js.map +1 -0
  89. package/dist/core/foundation/config.d.ts +23 -24
  90. package/dist/core/foundation/config.d.ts.map +1 -1
  91. package/dist/core/foundation/config.js +29 -36
  92. package/dist/core/foundation/config.js.map +1 -1
  93. package/dist/core/foundation/decisions-validate.d.ts +16 -0
  94. package/dist/core/foundation/decisions-validate.d.ts.map +1 -0
  95. package/dist/core/foundation/decisions-validate.js +74 -0
  96. package/dist/core/foundation/decisions-validate.js.map +1 -0
  97. package/dist/core/foundation/decisions.d.ts +34 -0
  98. package/dist/core/foundation/decisions.d.ts.map +1 -0
  99. package/dist/core/foundation/decisions.js +152 -0
  100. package/dist/core/foundation/decisions.js.map +1 -0
  101. package/dist/core/foundation/doctor-decisions.d.ts +9 -0
  102. package/dist/core/foundation/doctor-decisions.d.ts.map +1 -0
  103. package/dist/core/foundation/doctor-decisions.js +49 -0
  104. package/dist/core/foundation/doctor-decisions.js.map +1 -0
  105. package/dist/core/foundation/doctor-managed.d.ts.map +1 -1
  106. package/dist/core/foundation/doctor-managed.js +3 -0
  107. package/dist/core/foundation/doctor-managed.js.map +1 -1
  108. package/dist/core/foundation/doctor-prices.d.ts +8 -0
  109. package/dist/core/foundation/doctor-prices.d.ts.map +1 -0
  110. package/dist/core/foundation/doctor-prices.js +25 -0
  111. package/dist/core/foundation/doctor-prices.js.map +1 -0
  112. package/dist/core/foundation/doctor.d.ts.map +1 -1
  113. package/dist/core/foundation/doctor.js +20 -30
  114. package/dist/core/foundation/doctor.js.map +1 -1
  115. package/dist/core/foundation/harness-catalog.d.ts +7 -8
  116. package/dist/core/foundation/harness-catalog.d.ts.map +1 -1
  117. package/dist/core/foundation/harness-catalog.js +26 -41
  118. package/dist/core/foundation/harness-catalog.js.map +1 -1
  119. package/dist/core/foundation/init-blocks.d.ts +1 -1
  120. package/dist/core/foundation/init-blocks.d.ts.map +1 -1
  121. package/dist/core/foundation/init-blocks.js +51 -14
  122. package/dist/core/foundation/init-blocks.js.map +1 -1
  123. package/dist/core/foundation/init.d.ts +4 -0
  124. package/dist/core/foundation/init.d.ts.map +1 -1
  125. package/dist/core/foundation/init.js +7 -0
  126. package/dist/core/foundation/init.js.map +1 -1
  127. package/dist/core/foundation/new.d.ts +4 -1
  128. package/dist/core/foundation/new.d.ts.map +1 -1
  129. package/dist/core/foundation/new.js +18 -8
  130. package/dist/core/foundation/new.js.map +1 -1
  131. package/dist/core/foundation/package-root.d.ts +6 -0
  132. package/dist/core/foundation/package-root.d.ts.map +1 -1
  133. package/dist/core/foundation/package-root.js +6 -0
  134. package/dist/core/foundation/package-root.js.map +1 -1
  135. package/dist/core/foundation/rules-block.d.ts +11 -0
  136. package/dist/core/foundation/rules-block.d.ts.map +1 -0
  137. package/dist/core/foundation/rules-block.js +90 -0
  138. package/dist/core/foundation/rules-block.js.map +1 -0
  139. package/dist/core/foundation/traceability-block.d.ts +13 -0
  140. package/dist/core/foundation/traceability-block.d.ts.map +1 -0
  141. package/dist/core/foundation/traceability-block.js +124 -0
  142. package/dist/core/foundation/traceability-block.js.map +1 -0
  143. package/dist/core/lifecycle/done.d.ts.map +1 -1
  144. package/dist/core/lifecycle/done.js +2 -4
  145. package/dist/core/lifecycle/done.js.map +1 -1
  146. package/dist/core/lifecycle/recertify.d.ts +9 -0
  147. package/dist/core/lifecycle/recertify.d.ts.map +1 -0
  148. package/dist/core/lifecycle/recertify.js +27 -0
  149. package/dist/core/lifecycle/recertify.js.map +1 -0
  150. package/dist/core/lifecycle/reject.d.ts.map +1 -1
  151. package/dist/core/lifecycle/reject.js +3 -4
  152. package/dist/core/lifecycle/reject.js.map +1 -1
  153. package/dist/core/lifecycle/retry.d.ts.map +1 -1
  154. package/dist/core/lifecycle/retry.js +6 -20
  155. package/dist/core/lifecycle/retry.js.map +1 -1
  156. package/dist/core/lifecycle/verification-record.d.ts +42 -0
  157. package/dist/core/lifecycle/verification-record.d.ts.map +1 -0
  158. package/dist/core/lifecycle/verification-record.js +76 -0
  159. package/dist/core/lifecycle/verification-record.js.map +1 -0
  160. package/dist/core/report/approval-flags.d.ts +16 -3
  161. package/dist/core/report/approval-flags.d.ts.map +1 -1
  162. package/dist/core/report/approval-flags.js +59 -22
  163. package/dist/core/report/approval-flags.js.map +1 -1
  164. package/dist/core/report/brief-to-approval.d.ts +7 -0
  165. package/dist/core/report/brief-to-approval.d.ts.map +1 -0
  166. package/dist/core/report/brief-to-approval.js +43 -0
  167. package/dist/core/report/brief-to-approval.js.map +1 -0
  168. package/dist/core/report/planning-price-gaps.d.ts +10 -0
  169. package/dist/core/report/planning-price-gaps.d.ts.map +1 -0
  170. package/dist/core/report/planning-price-gaps.js +37 -0
  171. package/dist/core/report/planning-price-gaps.js.map +1 -0
  172. package/dist/core/report/planning-slice-lookup.d.ts.map +1 -1
  173. package/dist/core/report/planning-slice-lookup.js +3 -9
  174. package/dist/core/report/planning-slice-lookup.js.map +1 -1
  175. package/dist/core/report/recent-disclosures.d.ts +18 -0
  176. package/dist/core/report/recent-disclosures.d.ts.map +1 -0
  177. package/dist/core/report/recent-disclosures.js +105 -0
  178. package/dist/core/report/recent-disclosures.js.map +1 -0
  179. package/dist/core/report/record-disclosures.d.ts +14 -0
  180. package/dist/core/report/record-disclosures.d.ts.map +1 -0
  181. package/dist/core/report/record-disclosures.js +30 -0
  182. package/dist/core/report/record-disclosures.js.map +1 -0
  183. package/dist/core/report/record-estimates.d.ts +25 -0
  184. package/dist/core/report/record-estimates.d.ts.map +1 -0
  185. package/dist/core/report/record-estimates.js +83 -0
  186. package/dist/core/report/record-estimates.js.map +1 -0
  187. package/dist/core/report/record-rework.d.ts +19 -0
  188. package/dist/core/report/record-rework.d.ts.map +1 -0
  189. package/dist/core/report/record-rework.js +50 -0
  190. package/dist/core/report/record-rework.js.map +1 -0
  191. package/dist/core/report/record-verification.d.ts +16 -0
  192. package/dist/core/report/record-verification.d.ts.map +1 -0
  193. package/dist/core/report/record-verification.js +33 -0
  194. package/dist/core/report/record-verification.js.map +1 -0
  195. package/dist/core/report/report-dependencies.d.ts +29 -0
  196. package/dist/core/report/report-dependencies.d.ts.map +1 -0
  197. package/dist/core/report/report-dependencies.js +92 -0
  198. package/dist/core/report/report-dependencies.js.map +1 -0
  199. package/dist/core/report/report-events.d.ts +1 -0
  200. package/dist/core/report/report-events.d.ts.map +1 -1
  201. package/dist/core/report/report-events.js +8 -26
  202. package/dist/core/report/report-events.js.map +1 -1
  203. package/dist/core/report/report-mutation.d.ts +34 -0
  204. package/dist/core/report/report-mutation.d.ts.map +1 -0
  205. package/dist/core/report/report-mutation.js +191 -0
  206. package/dist/core/report/report-mutation.js.map +1 -0
  207. package/dist/core/report/report-scope.d.ts +21 -0
  208. package/dist/core/report/report-scope.d.ts.map +1 -0
  209. package/dist/core/report/report-scope.js +61 -0
  210. package/dist/core/report/report-scope.js.map +1 -0
  211. package/dist/core/report/report-traceability.d.ts +29 -0
  212. package/dist/core/report/report-traceability.d.ts.map +1 -0
  213. package/dist/core/report/report-traceability.js +94 -0
  214. package/dist/core/report/report-traceability.js.map +1 -0
  215. package/dist/core/report/report.d.ts +35 -1
  216. package/dist/core/report/report.d.ts.map +1 -1
  217. package/dist/core/report/report.js +130 -111
  218. package/dist/core/report/report.js.map +1 -1
  219. package/dist/core/report/result-sections.d.ts +30 -0
  220. package/dist/core/report/result-sections.d.ts.map +1 -0
  221. package/dist/core/report/result-sections.js +125 -0
  222. package/dist/core/report/result-sections.js.map +1 -0
  223. package/dist/core/report/scope-size.d.ts +7 -0
  224. package/dist/core/report/scope-size.d.ts.map +1 -0
  225. package/dist/core/report/scope-size.js +22 -0
  226. package/dist/core/report/scope-size.js.map +1 -0
  227. package/dist/core/run/commit-message.d.ts +24 -0
  228. package/dist/core/run/commit-message.d.ts.map +1 -0
  229. package/dist/core/run/commit-message.js +76 -0
  230. package/dist/core/run/commit-message.js.map +1 -0
  231. package/dist/core/run/dead-commit.d.ts +10 -0
  232. package/dist/core/run/dead-commit.d.ts.map +1 -0
  233. package/dist/core/run/dead-commit.js +70 -0
  234. package/dist/core/run/dead-commit.js.map +1 -0
  235. package/dist/core/run/focused-tests.d.ts +43 -0
  236. package/dist/core/run/focused-tests.d.ts.map +1 -0
  237. package/dist/core/run/focused-tests.js +116 -0
  238. package/dist/core/run/focused-tests.js.map +1 -0
  239. package/dist/core/run/manifest-approval.d.ts +7 -0
  240. package/dist/core/run/manifest-approval.d.ts.map +1 -0
  241. package/dist/core/run/manifest-approval.js +30 -0
  242. package/dist/core/run/manifest-approval.js.map +1 -0
  243. package/dist/core/run/manifest.d.ts +11 -1
  244. package/dist/core/run/manifest.d.ts.map +1 -1
  245. package/dist/core/run/manifest.js +52 -11
  246. package/dist/core/run/manifest.js.map +1 -1
  247. package/dist/core/run/mutation-report.d.ts +29 -0
  248. package/dist/core/run/mutation-report.d.ts.map +1 -0
  249. package/dist/core/run/mutation-report.js +107 -0
  250. package/dist/core/run/mutation-report.js.map +1 -0
  251. package/dist/core/run/mutation-run.d.ts +32 -0
  252. package/dist/core/run/mutation-run.d.ts.map +1 -0
  253. package/dist/core/run/mutation-run.js +80 -0
  254. package/dist/core/run/mutation-run.js.map +1 -0
  255. package/dist/core/run/verification.d.ts +12 -1
  256. package/dist/core/run/verification.d.ts.map +1 -1
  257. package/dist/core/run/verification.js +24 -2
  258. package/dist/core/run/verification.js.map +1 -1
  259. package/dist/core/spec/approve-worktree-shared.d.ts +33 -0
  260. package/dist/core/spec/approve-worktree-shared.d.ts.map +1 -0
  261. package/dist/core/spec/approve-worktree-shared.js +59 -0
  262. package/dist/core/spec/approve-worktree-shared.js.map +1 -0
  263. package/dist/core/spec/approve-worktree.d.ts +21 -0
  264. package/dist/core/spec/approve-worktree.d.ts.map +1 -0
  265. package/dist/core/spec/approve-worktree.js +153 -0
  266. package/dist/core/spec/approve-worktree.js.map +1 -0
  267. package/dist/core/spec/approve.d.ts +20 -10
  268. package/dist/core/spec/approve.d.ts.map +1 -1
  269. package/dist/core/spec/approve.js +57 -54
  270. package/dist/core/spec/approve.js.map +1 -1
  271. package/dist/core/spec/capability-impact.d.ts +43 -0
  272. package/dist/core/spec/capability-impact.d.ts.map +1 -0
  273. package/dist/core/spec/capability-impact.js +85 -0
  274. package/dist/core/spec/capability-impact.js.map +1 -0
  275. package/dist/core/spec/decisions-lint.d.ts +18 -0
  276. package/dist/core/spec/decisions-lint.d.ts.map +1 -0
  277. package/dist/core/spec/decisions-lint.js +127 -0
  278. package/dist/core/spec/decisions-lint.js.map +1 -0
  279. package/dist/core/spec/delta.d.ts +6 -0
  280. package/dist/core/spec/delta.d.ts.map +1 -1
  281. package/dist/core/spec/delta.js +73 -5
  282. package/dist/core/spec/delta.js.map +1 -1
  283. package/dist/core/spec/digest-capability.d.ts +17 -0
  284. package/dist/core/spec/digest-capability.d.ts.map +1 -0
  285. package/dist/core/spec/digest-capability.js +89 -0
  286. package/dist/core/spec/digest-capability.js.map +1 -0
  287. package/dist/core/spec/digest-decisions.d.ts +27 -0
  288. package/dist/core/spec/digest-decisions.d.ts.map +1 -0
  289. package/dist/core/spec/digest-decisions.js +86 -0
  290. package/dist/core/spec/digest-decisions.js.map +1 -0
  291. package/dist/core/spec/digest-flags.d.ts +1 -0
  292. package/dist/core/spec/digest-flags.d.ts.map +1 -1
  293. package/dist/core/spec/digest-flags.js +16 -16
  294. package/dist/core/spec/digest-flags.js.map +1 -1
  295. package/dist/core/spec/digest-format.d.ts +4 -0
  296. package/dist/core/spec/digest-format.d.ts.map +1 -0
  297. package/dist/core/spec/digest-format.js +44 -0
  298. package/dist/core/spec/digest-format.js.map +1 -0
  299. package/dist/core/spec/digest.d.ts +6 -3
  300. package/dist/core/spec/digest.d.ts.map +1 -1
  301. package/dist/core/spec/digest.js +18 -32
  302. package/dist/core/spec/digest.js.map +1 -1
  303. package/dist/core/spec/human-steps.d.ts +20 -0
  304. package/dist/core/spec/human-steps.d.ts.map +1 -0
  305. package/dist/core/spec/human-steps.js +52 -0
  306. package/dist/core/spec/human-steps.js.map +1 -0
  307. package/dist/core/spec/impact-lint.d.ts +24 -0
  308. package/dist/core/spec/impact-lint.d.ts.map +1 -0
  309. package/dist/core/spec/impact-lint.js +39 -0
  310. package/dist/core/spec/impact-lint.js.map +1 -0
  311. package/dist/core/spec/import-graph.d.ts +35 -0
  312. package/dist/core/spec/import-graph.d.ts.map +1 -0
  313. package/dist/core/spec/import-graph.js +155 -0
  314. package/dist/core/spec/import-graph.js.map +1 -0
  315. package/dist/core/spec/lint-findings.d.ts +44 -0
  316. package/dist/core/spec/lint-findings.d.ts.map +1 -0
  317. package/dist/core/spec/lint-findings.js +56 -0
  318. package/dist/core/spec/lint-findings.js.map +1 -0
  319. package/dist/core/spec/lint-output.d.ts +53 -0
  320. package/dist/core/spec/lint-output.d.ts.map +1 -0
  321. package/dist/core/spec/lint-output.js +87 -0
  322. package/dist/core/spec/lint-output.js.map +1 -0
  323. package/dist/core/spec/linter.d.ts +14 -4
  324. package/dist/core/spec/linter.d.ts.map +1 -1
  325. package/dist/core/spec/linter.js +271 -111
  326. package/dist/core/spec/linter.js.map +1 -1
  327. package/dist/core/spec/merged-spec-check.d.ts +24 -0
  328. package/dist/core/spec/merged-spec-check.d.ts.map +1 -0
  329. package/dist/core/spec/merged-spec-check.js +95 -0
  330. package/dist/core/spec/merged-spec-check.js.map +1 -0
  331. package/dist/core/spec/openspec-issues.d.ts +58 -0
  332. package/dist/core/spec/openspec-issues.d.ts.map +1 -0
  333. package/dist/core/spec/openspec-issues.js +166 -0
  334. package/dist/core/spec/openspec-issues.js.map +1 -0
  335. package/dist/core/spec/parser.d.ts +1 -0
  336. package/dist/core/spec/parser.d.ts.map +1 -1
  337. package/dist/core/spec/parser.js +16 -6
  338. package/dist/core/spec/parser.js.map +1 -1
  339. package/dist/core/spec/scenario-impact.d.ts +47 -0
  340. package/dist/core/spec/scenario-impact.d.ts.map +1 -0
  341. package/dist/core/spec/scenario-impact.js +130 -0
  342. package/dist/core/spec/scenario-impact.js.map +1 -0
  343. package/dist/core/spec/test-impact.d.ts +28 -0
  344. package/dist/core/spec/test-impact.d.ts.map +1 -0
  345. package/dist/core/spec/test-impact.js +119 -0
  346. package/dist/core/spec/test-impact.js.map +1 -0
  347. package/dist/core/spec/traceability-links.d.ts +50 -0
  348. package/dist/core/spec/traceability-links.d.ts.map +1 -0
  349. package/dist/core/spec/traceability-links.js +120 -0
  350. package/dist/core/spec/traceability-links.js.map +1 -0
  351. package/dist/core/spec/traceability-lint.d.ts +29 -0
  352. package/dist/core/spec/traceability-lint.d.ts.map +1 -0
  353. package/dist/core/spec/traceability-lint.js +143 -0
  354. package/dist/core/spec/traceability-lint.js.map +1 -0
  355. package/dist/core/status/blocked-item.d.ts +8 -0
  356. package/dist/core/status/blocked-item.d.ts.map +1 -0
  357. package/dist/core/status/blocked-item.js +45 -0
  358. package/dist/core/status/blocked-item.js.map +1 -0
  359. package/dist/core/status/change-locations.d.ts +44 -0
  360. package/dist/core/status/change-locations.d.ts.map +1 -0
  361. package/dist/core/status/change-locations.js +138 -0
  362. package/dist/core/status/change-locations.js.map +1 -0
  363. package/dist/core/status/dependency-readiness.d.ts +11 -0
  364. package/dist/core/status/dependency-readiness.d.ts.map +1 -0
  365. package/dist/core/status/dependency-readiness.js +39 -0
  366. package/dist/core/status/dependency-readiness.js.map +1 -0
  367. package/dist/core/status/inbox-projection.d.ts.map +1 -1
  368. package/dist/core/status/inbox-projection.js +23 -4
  369. package/dist/core/status/inbox-projection.js.map +1 -1
  370. package/dist/core/status/inbox-text.d.ts.map +1 -1
  371. package/dist/core/status/inbox-text.js +34 -3
  372. package/dist/core/status/inbox-text.js.map +1 -1
  373. package/dist/core/status/inbox.d.ts +10 -1
  374. package/dist/core/status/inbox.d.ts.map +1 -1
  375. package/dist/core/status/inbox.js +19 -1
  376. package/dist/core/status/inbox.js.map +1 -1
  377. package/dist/core/status/layout.d.ts +6 -0
  378. package/dist/core/status/layout.d.ts.map +1 -1
  379. package/dist/core/status/layout.js +8 -0
  380. package/dist/core/status/layout.js.map +1 -1
  381. package/dist/core/status/next-step.d.ts +17 -0
  382. package/dist/core/status/next-step.d.ts.map +1 -0
  383. package/dist/core/status/next-step.js +85 -0
  384. package/dist/core/status/next-step.js.map +1 -0
  385. package/dist/core/status/pre-spawn-words.d.ts +13 -0
  386. package/dist/core/status/pre-spawn-words.d.ts.map +1 -0
  387. package/dist/core/status/pre-spawn-words.js +26 -0
  388. package/dist/core/status/pre-spawn-words.js.map +1 -0
  389. package/dist/core/status/queue-parser.d.ts +1 -0
  390. package/dist/core/status/queue-parser.d.ts.map +1 -1
  391. package/dist/core/status/queue-parser.js +41 -2
  392. package/dist/core/status/queue-parser.js.map +1 -1
  393. package/dist/core/status/queue-planning.d.ts +1 -0
  394. package/dist/core/status/queue-planning.d.ts.map +1 -1
  395. package/dist/core/status/queue-planning.js +24 -12
  396. package/dist/core/status/queue-planning.js.map +1 -1
  397. package/dist/core/status/queue-report-detail.d.ts.map +1 -1
  398. package/dist/core/status/queue-report-detail.js +5 -3
  399. package/dist/core/status/queue-report-detail.js.map +1 -1
  400. package/dist/core/status/queue-state.d.ts +1 -1
  401. package/dist/core/status/queue-state.d.ts.map +1 -1
  402. package/dist/core/status/queue-state.js +27 -41
  403. package/dist/core/status/queue-state.js.map +1 -1
  404. package/dist/core/status/show.d.ts +25 -0
  405. package/dist/core/status/show.d.ts.map +1 -1
  406. package/dist/core/status/show.js +354 -91
  407. package/dist/core/status/show.js.map +1 -1
  408. package/dist/core/status/state.d.ts.map +1 -1
  409. package/dist/core/status/state.js +1 -23
  410. package/dist/core/status/state.js.map +1 -1
  411. package/dist/core/status/status.d.ts +18 -0
  412. package/dist/core/status/status.d.ts.map +1 -1
  413. package/dist/core/status/status.js +59 -80
  414. package/dist/core/status/status.js.map +1 -1
  415. package/dist/core/status/verification.d.ts +27 -0
  416. package/dist/core/status/verification.d.ts.map +1 -0
  417. package/dist/core/status/verification.js +111 -0
  418. package/dist/core/status/verification.js.map +1 -0
  419. package/dist/core/trace/function-ranges.d.ts +30 -0
  420. package/dist/core/trace/function-ranges.d.ts.map +1 -0
  421. package/dist/core/trace/function-ranges.js +250 -0
  422. package/dist/core/trace/function-ranges.js.map +1 -0
  423. package/dist/core/trace/mutation-pick.d.ts +55 -0
  424. package/dist/core/trace/mutation-pick.d.ts.map +1 -0
  425. package/dist/core/trace/mutation-pick.js +96 -0
  426. package/dist/core/trace/mutation-pick.js.map +1 -0
  427. package/dist/core/trace/scenario-index.d.ts +27 -0
  428. package/dist/core/trace/scenario-index.d.ts.map +1 -0
  429. package/dist/core/trace/scenario-index.js +76 -0
  430. package/dist/core/trace/scenario-index.js.map +1 -0
  431. package/dist/core/trace/scenario-lookup.d.ts +14 -0
  432. package/dist/core/trace/scenario-lookup.d.ts.map +1 -0
  433. package/dist/core/trace/scenario-lookup.js +179 -0
  434. package/dist/core/trace/scenario-lookup.js.map +1 -0
  435. package/dist/core/trace/tag-scan.d.ts +44 -0
  436. package/dist/core/trace/tag-scan.d.ts.map +1 -0
  437. package/dist/core/trace/tag-scan.js +200 -0
  438. package/dist/core/trace/tag-scan.js.map +1 -0
  439. package/dist/core/vcs/doctor-git.d.ts +13 -0
  440. package/dist/core/vcs/doctor-git.d.ts.map +1 -0
  441. package/dist/core/vcs/doctor-git.js +114 -0
  442. package/dist/core/vcs/doctor-git.js.map +1 -0
  443. package/dist/core/vcs/git-vcs-write.d.ts +47 -0
  444. package/dist/core/vcs/git-vcs-write.d.ts.map +1 -0
  445. package/dist/core/vcs/git-vcs-write.js +210 -0
  446. package/dist/core/vcs/git-vcs-write.js.map +1 -0
  447. package/dist/core/vcs/git-vcs.d.ts +40 -0
  448. package/dist/core/vcs/git-vcs.d.ts.map +1 -0
  449. package/dist/core/vcs/git-vcs.js +170 -0
  450. package/dist/core/vcs/git-vcs.js.map +1 -0
  451. package/dist/core/vcs/no-vcs.d.ts +26 -0
  452. package/dist/core/vcs/no-vcs.d.ts.map +1 -0
  453. package/dist/core/vcs/no-vcs.js +62 -0
  454. package/dist/core/vcs/no-vcs.js.map +1 -0
  455. package/dist/core/vcs/select.d.ts +11 -0
  456. package/dist/core/vcs/select.d.ts.map +1 -0
  457. package/dist/core/vcs/select.js +33 -0
  458. package/dist/core/vcs/select.js.map +1 -0
  459. package/dist/core/vcs/snapshot.d.ts +34 -0
  460. package/dist/core/vcs/snapshot.d.ts.map +1 -0
  461. package/dist/core/vcs/snapshot.js +71 -0
  462. package/dist/core/vcs/snapshot.js.map +1 -0
  463. package/dist/core/vcs/vcs.d.ts +55 -0
  464. package/dist/core/vcs/vcs.d.ts.map +1 -0
  465. package/dist/core/vcs/vcs.js +2 -0
  466. package/dist/core/vcs/vcs.js.map +1 -0
  467. package/dist/core/vcs/worktree.d.ts +10 -0
  468. package/dist/core/vcs/worktree.d.ts.map +1 -0
  469. package/dist/core/vcs/worktree.js +25 -0
  470. package/dist/core/vcs/worktree.js.map +1 -0
  471. package/dist/core/web/web-data-folders.d.ts.map +1 -1
  472. package/dist/core/web/web-data-folders.js +18 -33
  473. package/dist/core/web/web-data-folders.js.map +1 -1
  474. package/dist/core/web/web-data-lifecycle.d.ts.map +1 -1
  475. package/dist/core/web/web-data-lifecycle.js +2 -1
  476. package/dist/core/web/web-data-lifecycle.js.map +1 -1
  477. package/dist/core/web/web-events.d.ts +8 -6
  478. package/dist/core/web/web-events.d.ts.map +1 -1
  479. package/dist/core/web/web-events.js +7 -31
  480. package/dist/core/web/web-events.js.map +1 -1
  481. package/dist/core/web/web-server.d.ts.map +1 -1
  482. package/dist/core/web/web-server.js +3 -0
  483. package/dist/core/web/web-server.js.map +1 -1
  484. package/dist/core/web/web-trees.d.ts +27 -0
  485. package/dist/core/web/web-trees.d.ts.map +1 -0
  486. package/dist/core/web/web-trees.js +82 -0
  487. package/dist/core/web/web-trees.js.map +1 -0
  488. package/dist/harness/claude/claude-exec-args.d.ts +13 -0
  489. package/dist/harness/claude/claude-exec-args.d.ts.map +1 -0
  490. package/dist/harness/claude/claude-exec-args.js +61 -0
  491. package/dist/harness/claude/claude-exec-args.js.map +1 -0
  492. package/dist/harness/claude/claude-exec.d.ts +12 -0
  493. package/dist/harness/claude/claude-exec.d.ts.map +1 -0
  494. package/dist/harness/claude/claude-exec.js +79 -0
  495. package/dist/harness/claude/claude-exec.js.map +1 -0
  496. package/dist/harness/claude/claude-stream.d.ts +31 -0
  497. package/dist/harness/claude/claude-stream.d.ts.map +1 -0
  498. package/dist/harness/claude/claude-stream.js +150 -0
  499. package/dist/harness/claude/claude-stream.js.map +1 -0
  500. package/dist/harness/claude/claude-tools.d.ts +5 -0
  501. package/dist/harness/claude/claude-tools.d.ts.map +1 -0
  502. package/dist/harness/claude/claude-tools.js +30 -0
  503. package/dist/harness/claude/claude-tools.js.map +1 -0
  504. package/dist/harness/index.d.ts +1 -0
  505. package/dist/harness/index.d.ts.map +1 -1
  506. package/dist/harness/index.js +3 -0
  507. package/dist/harness/index.js.map +1 -1
  508. package/dist/harness/opencode/opencode-session.d.ts +42 -0
  509. package/dist/harness/opencode/opencode-session.d.ts.map +1 -0
  510. package/dist/harness/opencode/opencode-session.js +123 -0
  511. package/dist/harness/opencode/opencode-session.js.map +1 -0
  512. package/dist/harness/opencode/opencode.d.ts +2 -1
  513. package/dist/harness/opencode/opencode.d.ts.map +1 -1
  514. package/dist/harness/opencode/opencode.js +52 -28
  515. package/dist/harness/opencode/opencode.js.map +1 -1
  516. package/dist/harness/prompt.js +1 -1
  517. package/dist/harness/prompt.js.map +1 -1
  518. package/dist/harness/types.d.ts +114 -1
  519. package/dist/harness/types.d.ts.map +1 -1
  520. package/dist/harness/types.js.map +1 -1
  521. package/dist/index.d.ts +3 -1
  522. package/dist/index.d.ts.map +1 -1
  523. package/dist/index.js +1 -0
  524. package/dist/index.js.map +1 -1
  525. package/dist/testing/index.d.ts +3 -0
  526. package/dist/testing/index.d.ts.map +1 -0
  527. package/dist/testing/index.js +2 -0
  528. package/dist/testing/index.js.map +1 -0
  529. package/dist/testing/scenario.d.ts +29 -0
  530. package/dist/testing/scenario.d.ts.map +1 -0
  531. package/dist/testing/scenario.js +157 -0
  532. package/dist/testing/scenario.js.map +1 -0
  533. package/dist/watcher/archiver.d.ts +2 -1
  534. package/dist/watcher/archiver.d.ts.map +1 -1
  535. package/dist/watcher/archiver.js +27 -2
  536. package/dist/watcher/archiver.js.map +1 -1
  537. package/dist/watcher/auto-recertify.d.ts +27 -0
  538. package/dist/watcher/auto-recertify.d.ts.map +1 -0
  539. package/dist/watcher/auto-recertify.js +113 -0
  540. package/dist/watcher/auto-recertify.js.map +1 -0
  541. package/dist/watcher/auto-retry.d.ts +1 -1
  542. package/dist/watcher/auto-retry.d.ts.map +1 -1
  543. package/dist/watcher/auto-retry.js +3 -11
  544. package/dist/watcher/auto-retry.js.map +1 -1
  545. package/dist/watcher/baseline-key.d.ts +17 -0
  546. package/dist/watcher/baseline-key.d.ts.map +1 -0
  547. package/dist/watcher/baseline-key.js +31 -0
  548. package/dist/watcher/baseline-key.js.map +1 -0
  549. package/dist/watcher/baseline.d.ts +32 -0
  550. package/dist/watcher/baseline.d.ts.map +1 -0
  551. package/dist/watcher/baseline.js +166 -0
  552. package/dist/watcher/baseline.js.map +1 -0
  553. package/dist/watcher/blocked.d.ts +12 -0
  554. package/dist/watcher/blocked.d.ts.map +1 -0
  555. package/dist/watcher/blocked.js +24 -0
  556. package/dist/watcher/blocked.js.map +1 -0
  557. package/dist/watcher/build-project.d.ts +11 -0
  558. package/dist/watcher/build-project.d.ts.map +1 -0
  559. package/dist/watcher/build-project.js +36 -0
  560. package/dist/watcher/build-project.js.map +1 -0
  561. package/dist/watcher/build.d.ts +8 -5
  562. package/dist/watcher/build.d.ts.map +1 -1
  563. package/dist/watcher/build.js +35 -39
  564. package/dist/watcher/build.js.map +1 -1
  565. package/dist/watcher/dependencies.d.ts +28 -0
  566. package/dist/watcher/dependencies.d.ts.map +1 -0
  567. package/dist/watcher/dependencies.js +152 -0
  568. package/dist/watcher/dependencies.js.map +1 -0
  569. package/dist/watcher/done-metadata.d.ts +4 -0
  570. package/dist/watcher/done-metadata.d.ts.map +1 -0
  571. package/dist/watcher/done-metadata.js +20 -0
  572. package/dist/watcher/done-metadata.js.map +1 -0
  573. package/dist/watcher/failure-reason.d.ts +1 -1
  574. package/dist/watcher/failure-reason.d.ts.map +1 -1
  575. package/dist/watcher/fingerprint.d.ts +2 -2
  576. package/dist/watcher/fingerprint.d.ts.map +1 -1
  577. package/dist/watcher/fingerprint.js +31 -2
  578. package/dist/watcher/fingerprint.js.map +1 -1
  579. package/dist/watcher/focused-verify.d.ts +17 -0
  580. package/dist/watcher/focused-verify.d.ts.map +1 -0
  581. package/dist/watcher/focused-verify.js +54 -0
  582. package/dist/watcher/focused-verify.js.map +1 -0
  583. package/dist/watcher/git-guard.d.ts +24 -0
  584. package/dist/watcher/git-guard.d.ts.map +1 -0
  585. package/dist/watcher/git-guard.js +95 -0
  586. package/dist/watcher/git-guard.js.map +1 -0
  587. package/dist/watcher/instructions-drift.d.ts +21 -0
  588. package/dist/watcher/instructions-drift.d.ts.map +1 -0
  589. package/dist/watcher/instructions-drift.js +115 -0
  590. package/dist/watcher/instructions-drift.js.map +1 -0
  591. package/dist/watcher/loop.d.ts.map +1 -1
  592. package/dist/watcher/loop.js +37 -51
  593. package/dist/watcher/loop.js.map +1 -1
  594. package/dist/watcher/measures.d.ts.map +1 -1
  595. package/dist/watcher/measures.js +22 -39
  596. package/dist/watcher/measures.js.map +1 -1
  597. package/dist/watcher/mutation-check.d.ts +42 -0
  598. package/dist/watcher/mutation-check.d.ts.map +1 -0
  599. package/dist/watcher/mutation-check.js +147 -0
  600. package/dist/watcher/mutation-check.js.map +1 -0
  601. package/dist/watcher/outcome.d.ts +2 -0
  602. package/dist/watcher/outcome.d.ts.map +1 -1
  603. package/dist/watcher/outcome.js +5 -1
  604. package/dist/watcher/outcome.js.map +1 -1
  605. package/dist/watcher/regression.d.ts +10 -5
  606. package/dist/watcher/regression.d.ts.map +1 -1
  607. package/dist/watcher/regression.js +29 -19
  608. package/dist/watcher/regression.js.map +1 -1
  609. package/dist/watcher/runner.d.ts.map +1 -1
  610. package/dist/watcher/runner.js +12 -14
  611. package/dist/watcher/runner.js.map +1 -1
  612. package/dist/watcher/spawn.d.ts.map +1 -1
  613. package/dist/watcher/spawn.js +11 -1
  614. package/dist/watcher/spawn.js.map +1 -1
  615. package/dist/watcher/task-verify.d.ts +7 -2
  616. package/dist/watcher/task-verify.d.ts.map +1 -1
  617. package/dist/watcher/task-verify.js +33 -8
  618. package/dist/watcher/task-verify.js.map +1 -1
  619. package/dist/watcher/verify.d.ts +1 -5
  620. package/dist/watcher/verify.d.ts.map +1 -1
  621. package/dist/watcher/verify.js +2 -6
  622. package/dist/watcher/verify.js.map +1 -1
  623. package/package.json +5 -1
  624. package/templates/PLANNER.md +35 -9
  625. package/templates/openspec/config.yaml +1 -1
  626. package/templates/openspec/schemas/osq/schema.yaml +4 -2
  627. package/templates/openspec/schemas/osq/templates/proposal.md +9 -2
  628. package/templates/proposal.md +9 -2
  629. package/ui/dist/assets/{index-CZYeQ8la.js → index-D39uYbbL.js} +1 -1
  630. package/ui/dist/index.html +1 -1
@@ -0,0 +1,46 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { createJiti } from 'jiti';
4
+ import { PACKAGE_ENTRY } from './package-root.js';
5
+ /** A config file that exists but fails to import or validate. */
6
+ export class ConfigLoadError extends Error {
7
+ constructor(configPath, cause) {
8
+ const message = cause instanceof Error ? cause.message : String(cause);
9
+ super(`Failed to load ${configPath}: ${message}`);
10
+ this.name = 'ConfigLoadError';
11
+ }
12
+ }
13
+ const CONFIG_FILES = ['osq.config.ts', 'osq.config.js', 'osq.config.mjs'];
14
+ const isFile = (target) => fs
15
+ .stat(target)
16
+ .then(() => true)
17
+ .catch(() => false);
18
+ /**
19
+ * Import the first existing config file through jiti, aliasing `@matteeh/osq`
20
+ * to the running osq so a project without its own `node_modules` still loads a
21
+ * scaffolded config. A file that fails to import rejects with a `ConfigLoadError`
22
+ * naming it; no config file resolves to an empty user config.
23
+ */
24
+ export async function loadConfigFile(projectRoot) {
25
+ for (const file of CONFIG_FILES) {
26
+ const fullPath = path.join(projectRoot, file);
27
+ if (!(await isFile(fullPath)))
28
+ continue;
29
+ try {
30
+ const jiti = createJiti(import.meta.url, {
31
+ moduleCache: false,
32
+ interopDefault: true,
33
+ alias: { '@matteeh/osq': PACKAGE_ENTRY },
34
+ });
35
+ const loaded = await jiti.import(fullPath);
36
+ const resolved = loaded?.default || loaded;
37
+ const userConfig = typeof resolved === 'object' && resolved !== null ? resolved : {};
38
+ return { userConfig, path: fullPath };
39
+ }
40
+ catch (err) {
41
+ throw new ConfigLoadError(fullPath, err);
42
+ }
43
+ }
44
+ return { userConfig: {} };
45
+ }
46
+ //# sourceMappingURL=config-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-file.js","sourceRoot":"","sources":["../../../src/core/foundation/config-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,iEAAiE;AACjE,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxC,YAAY,UAAkB,EAAE,KAAc;QAC5C,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,KAAK,CAAC,kBAAkB,UAAU,KAAK,OAAO,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAQD,MAAM,YAAY,GAAG,CAAC,eAAe,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC;AAE1E,MAAM,MAAM,GAAG,CAAC,MAAc,EAAoB,EAAE,CAClD,EAAE;KACC,IAAI,CAAC,MAAM,CAAC;KACZ,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;KAChB,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;AAExB;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,WAAmB;IACtD,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;YAAE,SAAS;QACxC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;gBACvC,WAAW,EAAE,KAAK;gBAClB,cAAc,EAAE,IAAI;gBACpB,KAAK,EAAE,EAAE,cAAc,EAAE,aAAa,EAAE;aACzC,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC3C,MAAM,QAAQ,GAAI,MAAsC,EAAE,OAAO,IAAI,MAAM,CAAC;YAC5E,MAAM,UAAU,GACd,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAE,QAA0B,CAAC,CAAC,CAAC,EAAE,CAAC;YACvF,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;AAC5B,CAAC"}
@@ -11,6 +11,8 @@ export interface GatesConfig {
11
11
  readonly changeVerifyAfterTask: boolean;
12
12
  readonly preSpawnVerify?: PreSpawnVerifyMode;
13
13
  readonly autoRetries?: number;
14
+ /** The command the watcher runs as a change's baseline, when configured. */
15
+ readonly baselineVerify?: string;
14
16
  }
15
17
  export declare const DEFAULT_GATES_CONFIG: GatesConfig;
16
18
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"config-gates.d.ts","sourceRoot":"","sources":["../../../src/core/foundation/config-gates.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAEzD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IACxC,QAAQ,CAAC,cAAc,CAAC,EAAE,kBAAkB,CAAC;IAC7C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,eAAO,MAAM,oBAAoB,EAAE,WAIlC,CAAC;AAIF;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAkC/D"}
1
+ {"version":3,"file":"config-gates.d.ts","sourceRoot":"","sources":["../../../src/core/foundation/config-gates.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAEzD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IACxC,QAAQ,CAAC,cAAc,CAAC,EAAE,kBAAkB,CAAC;IAC7C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,4EAA4E;IAC5E,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,eAAO,MAAM,oBAAoB,EAAE,WAIlC,CAAC;AAIF;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CA0C/D"}
@@ -34,10 +34,18 @@ export function validateGatesConfig(gates) {
34
34
  autoRetriesRaw < 0) {
35
35
  throw new Error('gates.autoRetries must be a non-negative integer');
36
36
  }
37
+ let baselineVerify;
38
+ if (record.baselineVerify !== undefined) {
39
+ if (typeof record.baselineVerify !== 'string' || record.baselineVerify.trim().length === 0) {
40
+ throw new Error('gates.baselineVerify must be a non-empty command');
41
+ }
42
+ baselineVerify = record.baselineVerify.trim();
43
+ }
37
44
  return {
38
45
  changeVerifyAfterTask: value,
39
46
  preSpawnVerify: preSpawnRaw,
40
47
  autoRetries: autoRetriesRaw,
48
+ ...(baselineVerify !== undefined ? { baselineVerify } : {}),
41
49
  };
42
50
  }
43
51
  //# sourceMappingURL=config-gates.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-gates.js","sourceRoot":"","sources":["../../../src/core/foundation/config-gates.ts"],"names":[],"mappings":"AAgBA,MAAM,CAAC,MAAM,oBAAoB,GAAgB;IAC/C,qBAAqB,EAAE,IAAI;IAC3B,cAAc,EAAE,MAAM;IACtB,WAAW,EAAE,CAAC;CACf,CAAC;AAEF,MAAM,sBAAsB,GAAkC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAEtF;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,oBAAoB,CAAC;IACrD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,MAAM,KAAK,GACT,MAAM,CAAC,qBAAqB,KAAK,SAAS;QACxC,CAAC,CAAC,oBAAoB,CAAC,qBAAqB;QAC5C,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC;IACnC,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,WAAW,GACf,MAAM,CAAC,cAAc,KAAK,SAAS;QACjC,CAAC,CAAC,oBAAoB,CAAC,cAAc;QACrC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC;IAC5B,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,WAAiC,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,cAAc,GAClB,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;IAC3F,IACE,OAAO,cAAc,KAAK,QAAQ;QAClC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;QACjC,cAAc,GAAG,CAAC,EAClB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,OAAO;QACL,qBAAqB,EAAE,KAAK;QAC5B,cAAc,EAAE,WAAiC;QACjD,WAAW,EAAE,cAAc;KAC5B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config-gates.js","sourceRoot":"","sources":["../../../src/core/foundation/config-gates.ts"],"names":[],"mappings":"AAkBA,MAAM,CAAC,MAAM,oBAAoB,GAAgB;IAC/C,qBAAqB,EAAE,IAAI;IAC3B,cAAc,EAAE,MAAM;IACtB,WAAW,EAAE,CAAC;CACf,CAAC;AAEF,MAAM,sBAAsB,GAAkC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAEtF;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,oBAAoB,CAAC;IACrD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,MAAM,KAAK,GACT,MAAM,CAAC,qBAAqB,KAAK,SAAS;QACxC,CAAC,CAAC,oBAAoB,CAAC,qBAAqB;QAC5C,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC;IACnC,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,WAAW,GACf,MAAM,CAAC,cAAc,KAAK,SAAS;QACjC,CAAC,CAAC,oBAAoB,CAAC,cAAc;QACrC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC;IAC5B,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,WAAiC,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,cAAc,GAClB,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;IAC3F,IACE,OAAO,cAAc,KAAK,QAAQ;QAClC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;QACjC,cAAc,GAAG,CAAC,EAClB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,cAAkC,CAAC;IACvC,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACxC,IAAI,OAAO,MAAM,CAAC,cAAc,KAAK,QAAQ,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3F,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QACD,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAChD,CAAC;IACD,OAAO;QACL,qBAAqB,EAAE,KAAK;QAC5B,cAAc,EAAE,WAAiC;QACjD,WAAW,EAAE,cAAc;QAC3B,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { HarnessDiagnoseContext, HarnessDiagnosis } from './config-pi.js';
2
+ /** Tested opencode release range. opencode 1 is deliberately out of support. */
3
+ export declare const OPENCODE_TESTED_RANGE = ">=2.0.0 <3.0.0";
4
+ /** Assessment of one `opencode --version` line against the tested range. */
5
+ export interface OpencodeVersionAssessment {
6
+ /** Extracted `major.minor.patch`, or the raw first line when unparseable. */
7
+ readonly version: string;
8
+ /** False only below 2.0.0, the one version that is a hard failure. */
9
+ readonly ok: boolean;
10
+ /** True only inside `>=2.0.0 <3.0.0`. */
11
+ readonly tested: boolean;
12
+ }
13
+ /**
14
+ * Assess the first `major.minor.patch` in `opencode --version` output, so
15
+ * `opencode v2.0.18` reads as `2.0.18`. Below 2.0.0 is a failure; a version at
16
+ * or above 3.0.0, or output with no readable version, is a passing warning.
17
+ */
18
+ export declare function assessOpencodeVersion(raw: string): OpencodeVersionAssessment;
19
+ /**
20
+ * Version check for `osq doctor`. Inside the tested range the check passes
21
+ * silently; below 2.0.0 it fails because the adapter no longer supports
22
+ * opencode 1; above the range and unparseable output pass with a warning.
23
+ */
24
+ export declare function diagnoseOpencode(context: HarnessDiagnoseContext): Promise<readonly HarnessDiagnosis[]>;
25
+ //# sourceMappingURL=config-opencode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-opencode.d.ts","sourceRoot":"","sources":["../../../src/core/foundation/config-opencode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAE/E,gFAAgF;AAChF,eAAO,MAAM,qBAAqB,mBAAmB,CAAC;AAKtD,4EAA4E;AAC5E,MAAM,WAAW,yBAAyB;IACxC,6EAA6E;IAC7E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,yCAAyC;IACzC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAYD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,yBAAyB,CAW5E;AAYD;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,SAAS,gBAAgB,EAAE,CAAC,CAWtC"}
@@ -0,0 +1,55 @@
1
+ /** Tested opencode release range. opencode 1 is deliberately out of support. */
2
+ export const OPENCODE_TESTED_RANGE = '>=2.0.0 <3.0.0';
3
+ const OPENCODE_TESTED_MIN = [2, 0, 0];
4
+ const OPENCODE_TESTED_MAX = [3, 0, 0];
5
+ function compareVersion(a, b) {
6
+ for (let i = 0; i < 3; i += 1) {
7
+ if (a[i] !== b[i])
8
+ return (a[i] ?? 0) - (b[i] ?? 0);
9
+ }
10
+ return 0;
11
+ }
12
+ /**
13
+ * Assess the first `major.minor.patch` in `opencode --version` output, so
14
+ * `opencode v2.0.18` reads as `2.0.18`. Below 2.0.0 is a failure; a version at
15
+ * or above 3.0.0, or output with no readable version, is a passing warning.
16
+ */
17
+ export function assessOpencodeVersion(raw) {
18
+ const line = raw.trim().split('\n')[0]?.trim() ?? '';
19
+ const match = /(\d+)\.(\d+)\.(\d+)/.exec(line);
20
+ if (!match) {
21
+ return { version: line, ok: true, tested: false };
22
+ }
23
+ const version = `${match[1]}.${match[2]}.${match[3]}`;
24
+ const current = [Number(match[1]), Number(match[2]), Number(match[3])];
25
+ const atLeastMinimum = compareVersion(current, OPENCODE_TESTED_MIN) >= 0;
26
+ const tested = atLeastMinimum && compareVersion(current, OPENCODE_TESTED_MAX) < 0;
27
+ return { version, ok: atLeastMinimum, tested };
28
+ }
29
+ function versionMessage(assessment) {
30
+ if (assessment.tested) {
31
+ return `opencode ${assessment.version} (tested ${OPENCODE_TESTED_RANGE})`;
32
+ }
33
+ if (assessment.ok) {
34
+ return `opencode ${assessment.version} is outside the tested range ${OPENCODE_TESTED_RANGE}`;
35
+ }
36
+ return `opencode ${assessment.version} is not supported; the opencode adapter needs opencode 2 (tested ${OPENCODE_TESTED_RANGE})`;
37
+ }
38
+ /**
39
+ * Version check for `osq doctor`. Inside the tested range the check passes
40
+ * silently; below 2.0.0 it fails because the adapter no longer supports
41
+ * opencode 1; above the range and unparseable output pass with a warning.
42
+ */
43
+ export async function diagnoseOpencode(context) {
44
+ const assessment = assessOpencodeVersion(context.version);
45
+ const warns = assessment.ok && !assessment.tested;
46
+ return [
47
+ {
48
+ name: 'harness-version',
49
+ ok: assessment.ok,
50
+ ...(warns ? { warning: true } : {}),
51
+ message: versionMessage(assessment),
52
+ },
53
+ ];
54
+ }
55
+ //# sourceMappingURL=config-opencode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-opencode.js","sourceRoot":"","sources":["../../../src/core/foundation/config-opencode.ts"],"names":[],"mappings":"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"}
@@ -54,6 +54,16 @@ export declare function resolvePiEffort(config?: {
54
54
  readonly thinking?: string;
55
55
  };
56
56
  }): string | null;
57
+ /**
58
+ * Pi execution model: explicit `pi.model`, then `OSQ_MODEL` only when Pi is the
59
+ * selected executor. `undefined` defers to Pi's native default. The selected
60
+ * check is supplied by the caller so the catalog owns harness-name knowledge.
61
+ */
62
+ export declare function resolvePiModel(config?: {
63
+ readonly pi?: {
64
+ readonly model?: string;
65
+ };
66
+ }, selected?: boolean): string | undefined;
57
67
  /** Version warning plus provider credential check for `osq doctor`. */
58
68
  export declare function diagnosePi(context: HarnessDiagnoseContext): Promise<readonly HarnessDiagnosis[]>;
59
69
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"config-pi.d.ts","sourceRoot":"","sources":["../../../src/core/foundation/config-pi.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAID,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,OAAO,GAAG,QAAQ,CAkBtD;AAED,+EAA+E;AAC/E,eAAO,MAAM,eAAe,qBAAqB,CAAC;AAKlD,sEAAsE;AACtE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAYD,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAmBhE;AAED,2DAA2D;AAC3D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,8EAA8E;AAC9E,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,6DAA6D;AAC7D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,CAAC,EAAE;QAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAAG,MAAM,CAM5F;AAED,uDAAuD;AACvD,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE;IACvC,QAAQ,CAAC,EAAE,CAAC,EAAE;QAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9C,GAAG,MAAM,GAAG,IAAI,CAEhB;AAED,uEAAuE;AACvE,wBAAsB,UAAU,CAC9B,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,SAAS,gBAAgB,EAAE,CAAC,CA4BtC;AAmBD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,cAAc,SAAK,GAClB,OAAO,CAAC,YAAY,CAAC,CAoBvB"}
1
+ {"version":3,"file":"config-pi.d.ts","sourceRoot":"","sources":["../../../src/core/foundation/config-pi.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAID,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,OAAO,GAAG,QAAQ,CAkBtD;AAED,+EAA+E;AAC/E,eAAO,MAAM,eAAe,qBAAqB,CAAC;AAKlD,sEAAsE;AACtE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAYD,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAmBhE;AAED,2DAA2D;AAC3D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,8EAA8E;AAC9E,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,6DAA6D;AAC7D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,CAAC,EAAE;QAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAAG,MAAM,CAM5F;AAED,uDAAuD;AACvD,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE;IACvC,QAAQ,CAAC,EAAE,CAAC,EAAE;QAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9C,GAAG,MAAM,GAAG,IAAI,CAEhB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,MAAM,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EACtD,QAAQ,UAAQ,GACf,MAAM,GAAG,SAAS,CAKpB;AAED,uEAAuE;AACvE,wBAAsB,UAAU,CAC9B,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,SAAS,gBAAgB,EAAE,CAAC,CA4BtC;AAmBD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,cAAc,SAAK,GAClB,OAAO,CAAC,YAAY,CAAC,CAoBvB"}
@@ -67,6 +67,19 @@ export function resolvePiBinary(config) {
67
67
  export function resolvePiEffort(config) {
68
68
  return config?.pi?.thinking?.trim() || null;
69
69
  }
70
+ /**
71
+ * Pi execution model: explicit `pi.model`, then `OSQ_MODEL` only when Pi is the
72
+ * selected executor. `undefined` defers to Pi's native default. The selected
73
+ * check is supplied by the caller so the catalog owns harness-name knowledge.
74
+ */
75
+ export function resolvePiModel(config, selected = false) {
76
+ const explicit = config?.pi?.model?.trim();
77
+ if (explicit)
78
+ return explicit;
79
+ if (!selected)
80
+ return undefined;
81
+ return process.env.OSQ_MODEL?.trim() || undefined;
82
+ }
70
83
  /** Version warning plus provider credential check for `osq doctor`. */
71
84
  export async function diagnosePi(context) {
72
85
  const assessment = assessPiVersion(context.version);
@@ -1 +1 @@
1
- {"version":3,"file":"config-pi.js","sourceRoot":"","sources":["../../../src/core/foundation/config-pi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-pi.js","sourceRoot":"","sources":["../../../src/core/foundation/config-pi.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,9 @@
2
2
  * Planning measurement settings. `idleGapMinutes` bounds the gap between two
3
3
  * owned turns that still counts as active planning; `prices` optionally maps a
4
4
  * model id to USD per million tokens so a slice can be priced when no harness
5
- * reported a cost. osq ships no price table of its own.
5
+ * reported a cost. `disclosures` bounds the executor disclosures the plan
6
+ * prompt quotes from recent archived changes. osq ships no price table of its
7
+ * own.
6
8
  */
7
9
  export interface PlanningPrice {
8
10
  readonly input: number;
@@ -10,10 +12,19 @@ export interface PlanningPrice {
10
12
  readonly cacheRead: number;
11
13
  readonly cacheWrite: number;
12
14
  }
15
+ /** Bounds on the executor disclosures quoted in the plan prompt. */
16
+ export interface PlanningDisclosuresConfig {
17
+ /** How many of the newest archived changes may contribute disclosures. */
18
+ readonly recentChanges: number;
19
+ /** Total characters of quoted disclosure entries, excluding the claim line. */
20
+ readonly maxCharacters: number;
21
+ }
13
22
  export interface PlanningConfig {
14
23
  readonly idleGapMinutes: number;
24
+ readonly disclosures: PlanningDisclosuresConfig;
15
25
  readonly prices?: Readonly<Record<string, PlanningPrice>>;
16
26
  }
27
+ export declare const DEFAULT_PLANNING_DISCLOSURES: PlanningDisclosuresConfig;
17
28
  export declare const DEFAULT_PLANNING_CONFIG: PlanningConfig;
18
29
  /**
19
30
  * Validate an optional `planning` block over the defaults. A partial block
@@ -1 +1 @@
1
- {"version":3,"file":"config-planning.d.ts","sourceRoot":"","sources":["../../../src/core/foundation/config-planning.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;CAC3D;AAED,eAAO,MAAM,uBAAuB,EAAE,cAErC,CAAC;AAIF;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,OAAO,GAAG,cAAc,CAmBxE"}
1
+ {"version":3,"file":"config-planning.d.ts","sourceRoot":"","sources":["../../../src/core/foundation/config-planning.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,oEAAoE;AACpE,MAAM,WAAW,yBAAyB;IACxC,0EAA0E;IAC1E,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,+EAA+E;IAC/E,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,yBAAyB,CAAC;IAChD,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;CAC3D;AAED,eAAO,MAAM,4BAA4B,EAAE,yBAG1C,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,cAGrC,CAAC;AAIF;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,OAAO,GAAG,cAAc,CAsBxE"}
@@ -1,5 +1,10 @@
1
+ export const DEFAULT_PLANNING_DISCLOSURES = {
2
+ recentChanges: 3,
3
+ maxCharacters: 4000,
4
+ };
1
5
  export const DEFAULT_PLANNING_CONFIG = {
2
6
  idleGapMinutes: 10,
7
+ disclosures: DEFAULT_PLANNING_DISCLOSURES,
3
8
  };
4
9
  const PRICE_KINDS = ['input', 'output', 'cacheRead', 'cacheWrite'];
5
10
  /**
@@ -22,8 +27,31 @@ export function validatePlanningConfig(planning) {
22
27
  idleGapMinutes <= 0) {
23
28
  throw new Error('planning.idleGapMinutes must be a positive finite number');
24
29
  }
30
+ const disclosures = validatePlanningDisclosures(record.disclosures);
25
31
  const prices = validatePlanningPrices(record.prices);
26
- return prices === undefined ? { idleGapMinutes } : { idleGapMinutes, prices };
32
+ return prices === undefined
33
+ ? { idleGapMinutes, disclosures }
34
+ : { idleGapMinutes, disclosures, prices };
35
+ }
36
+ function validatePlanningDisclosures(disclosures) {
37
+ if (disclosures === undefined)
38
+ return DEFAULT_PLANNING_DISCLOSURES;
39
+ if (typeof disclosures !== 'object' || disclosures === null || Array.isArray(disclosures)) {
40
+ throw new Error('planning.disclosures must be an object with recentChanges and maxCharacters');
41
+ }
42
+ const record = disclosures;
43
+ return {
44
+ recentChanges: validateDisclosureCount('recentChanges', record.recentChanges, DEFAULT_PLANNING_DISCLOSURES.recentChanges),
45
+ maxCharacters: validateDisclosureCount('maxCharacters', record.maxCharacters, DEFAULT_PLANNING_DISCLOSURES.maxCharacters),
46
+ };
47
+ }
48
+ /** A partial `disclosures` block keeps defaults; every value is a positive integer. */
49
+ function validateDisclosureCount(key, value, fallback) {
50
+ const resolved = value === undefined ? fallback : value;
51
+ if (typeof resolved !== 'number' || !Number.isInteger(resolved) || resolved <= 0) {
52
+ throw new Error(`planning.disclosures.${key} must be a positive integer`);
53
+ }
54
+ return resolved;
27
55
  }
28
56
  function validatePlanningPrices(prices) {
29
57
  if (prices === undefined)
@@ -1 +1 @@
1
- {"version":3,"file":"config-planning.js","sourceRoot":"","sources":["../../../src/core/foundation/config-planning.ts"],"names":[],"mappings":"AAkBA,MAAM,CAAC,MAAM,uBAAuB,GAAmB;IACrD,cAAc,EAAE,EAAE;CACnB,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAU,CAAC;AAE5E;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAiB;IACtD,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,uBAAuB,CAAC;IAC3D,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjF,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAClF,CAAC;IACD,MAAM,MAAM,GAAG,QAAmC,CAAC;IACnD,MAAM,cAAc,GAClB,MAAM,CAAC,cAAc,KAAK,SAAS;QACjC,CAAC,CAAC,uBAAuB,CAAC,cAAc;QACxC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC;IAC5B,IACE,OAAO,cAAc,KAAK,QAAQ;QAClC,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC;QAChC,cAAc,IAAI,CAAC,EACnB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACrD,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;AAChF,CAAC;AAED,SAAS,sBAAsB,CAC7B,MAAe;IAEf,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IACD,MAAM,MAAM,GAAkC,EAAE,CAAC;IACjD,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAiC,CAAC,EAAE,CAAC;QAC/E,MAAM,CAAC,KAAK,CAAC,GAAG,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAa,EAAE,KAAc;IAC1D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CACb,mBAAmB,KAAK,8DAA8D,CACvF,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,MAAM,KAAK,GAAiD;QAC1D,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC;QACT,SAAS,EAAE,CAAC;QACZ,UAAU,EAAE,CAAC;KACd,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACtE,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,IAAI,IAAI,uCAAuC,CAAC,CAAC;QAC3F,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IACtB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"config-planning.js","sourceRoot":"","sources":["../../../src/core/foundation/config-planning.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Scenario traceability. `capabilities` opts capabilities in, either every
3
+ * capability with `'all'` or a list of names; `mode` turns each finding into a
4
+ * warning or an error; `focusedTests` is an optional command with a `{files}`
5
+ * placeholder, left out of the resolved block when unset; `mutation` is an
6
+ * optional command and budget, also left out when unset.
7
+ */
8
+ export type TraceabilityMode = 'warn' | 'require';
9
+ /** The project's mutation command and its per-task wall-time budget. */
10
+ export interface MutationConfig {
11
+ readonly command: string;
12
+ readonly budgetSeconds: number;
13
+ }
14
+ export interface TraceabilityConfig {
15
+ readonly capabilities: 'all' | readonly string[];
16
+ readonly mode: TraceabilityMode;
17
+ readonly focusedTests?: string;
18
+ readonly mutation?: MutationConfig;
19
+ }
20
+ /** Default wall-time budget for one task's mutation check. */
21
+ export declare const DEFAULT_MUTATION_BUDGET_SECONDS = 300;
22
+ export declare const DEFAULT_TRACEABILITY_CONFIG: TraceabilityConfig;
23
+ /**
24
+ * Validate an optional `traceability` block over the defaults. A partial block
25
+ * keeps each missing default; a value outside its type is rejected.
26
+ */
27
+ export declare function validateTraceabilityConfig(traceability: unknown): TraceabilityConfig;
28
+ //# sourceMappingURL=config-traceability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-traceability.d.ts","sourceRoot":"","sources":["../../../src/core/foundation/config-traceability.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAAC;AAElD,wEAAwE;AACxE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,YAAY,EAAE,KAAK,GAAG,SAAS,MAAM,EAAE,CAAC;IACjD,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC;CACpC;AAED,8DAA8D;AAC9D,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAEnD,eAAO,MAAM,2BAA2B,EAAE,kBAGzC,CAAC;AA2BF;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,YAAY,EAAE,OAAO,GAAG,kBAAkB,CA8BpF"}
@@ -0,0 +1,63 @@
1
+ /** Default wall-time budget for one task's mutation check. */
2
+ export const DEFAULT_MUTATION_BUDGET_SECONDS = 300;
3
+ export const DEFAULT_TRACEABILITY_CONFIG = {
4
+ capabilities: [],
5
+ mode: 'warn',
6
+ };
7
+ const TRACEABILITY_MODES = ['warn', 'require'];
8
+ function isCapabilities(value) {
9
+ if (value === 'all')
10
+ return true;
11
+ return Array.isArray(value) && value.every((entry) => typeof entry === 'string');
12
+ }
13
+ /** Validate an optional `mutation` block; the budget defaults when omitted. */
14
+ function validateMutationConfig(mutation) {
15
+ const record = typeof mutation === 'object' && mutation !== null && !Array.isArray(mutation)
16
+ ? mutation
17
+ : {};
18
+ const command = record.command;
19
+ if (typeof command !== 'string' || command.trim() === '') {
20
+ throw new Error('traceability.mutation.command must be a non-empty command');
21
+ }
22
+ const budgetSeconds = record.budgetSeconds === undefined ? DEFAULT_MUTATION_BUDGET_SECONDS : record.budgetSeconds;
23
+ if (typeof budgetSeconds !== 'number' || !Number.isFinite(budgetSeconds) || budgetSeconds <= 0) {
24
+ throw new Error('traceability.mutation.budgetSeconds must be a positive number');
25
+ }
26
+ return { command, budgetSeconds };
27
+ }
28
+ /**
29
+ * Validate an optional `traceability` block over the defaults. A partial block
30
+ * keeps each missing default; a value outside its type is rejected.
31
+ */
32
+ export function validateTraceabilityConfig(traceability) {
33
+ if (traceability === undefined)
34
+ return DEFAULT_TRACEABILITY_CONFIG;
35
+ if (typeof traceability !== 'object' || traceability === null || Array.isArray(traceability)) {
36
+ throw new Error('traceability configuration must be an object');
37
+ }
38
+ const record = traceability;
39
+ const capabilities = record.capabilities === undefined
40
+ ? DEFAULT_TRACEABILITY_CONFIG.capabilities
41
+ : record.capabilities;
42
+ if (!isCapabilities(capabilities)) {
43
+ throw new Error("traceability.capabilities must be 'all' or a list of capability names");
44
+ }
45
+ const mode = record.mode === undefined ? DEFAULT_TRACEABILITY_CONFIG.mode : record.mode;
46
+ if (!TRACEABILITY_MODES.includes(mode)) {
47
+ throw new Error('traceability.mode must be one of warn, require');
48
+ }
49
+ const focusedTests = record.focusedTests;
50
+ if (focusedTests !== undefined) {
51
+ if (typeof focusedTests !== 'string' || !focusedTests.includes('{files}')) {
52
+ throw new Error('traceability.focusedTests must be a command containing {files}');
53
+ }
54
+ }
55
+ const mutation = record.mutation;
56
+ return {
57
+ capabilities,
58
+ mode: mode,
59
+ ...(focusedTests !== undefined ? { focusedTests } : {}),
60
+ ...(mutation !== undefined ? { mutation: validateMutationConfig(mutation) } : {}),
61
+ };
62
+ }
63
+ //# sourceMappingURL=config-traceability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-traceability.js","sourceRoot":"","sources":["../../../src/core/foundation/config-traceability.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { ClaudeConfig } from './config-claude.js';
2
+ import type { CodexConfig } from './config-codex.js';
3
+ import type { GatesConfig } from './config-gates.js';
4
+ import type { PiConfig } from './config-pi.js';
5
+ import type { PlanningConfig } from './config-planning.js';
6
+ import type { QueueConfig } from './config-queue.js';
7
+ import type { TraceabilityConfig } from './config-traceability.js';
8
+ import type { VcsConfig } from './config-vcs.js';
9
+ import type { AgyConfig, LogConfig, OpencodeConfig, OsqConfig, OsqLimits, OsqPaths, OsqTimeouts, PlannerConfig } from './config.js';
10
+ /**
11
+ * Consumer-authored partial configuration accepted by `defineConfig`. Harness
12
+ * sections with extra resolved fields (codex, pi, claude) are re-declared as
13
+ * partial so callers never have to spell out defaults.
14
+ */
15
+ export type OsqUserConfig = Partial<Omit<OsqConfig, 'limits' | 'paths' | 'timeouts' | 'codex' | 'pi' | 'claude' | 'log' | 'planner' | 'planning' | 'queue' | 'gates' | 'traceability' | 'vcs'>> & {
16
+ readonly limits?: Partial<OsqLimits>;
17
+ readonly paths?: Partial<OsqPaths>;
18
+ readonly timeouts?: Partial<OsqTimeouts>;
19
+ readonly agy?: Partial<AgyConfig>;
20
+ readonly opencode?: Partial<OpencodeConfig>;
21
+ readonly codex?: Partial<CodexConfig>;
22
+ readonly pi?: Partial<PiConfig>;
23
+ readonly claude?: Partial<ClaudeConfig>;
24
+ readonly log?: Partial<LogConfig>;
25
+ readonly planner?: Partial<PlannerConfig>;
26
+ readonly planning?: Partial<PlanningConfig>;
27
+ readonly queue?: Partial<QueueConfig>;
28
+ readonly gates?: Partial<GatesConfig>;
29
+ readonly traceability?: Partial<TraceabilityConfig>;
30
+ readonly vcs?: Partial<VcsConfig>;
31
+ };
32
+ //# sourceMappingURL=config-user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-user.d.ts","sourceRoot":"","sources":["../../../src/core/foundation/config-user.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EACV,SAAS,EACT,SAAS,EACT,cAAc,EACd,SAAS,EACT,SAAS,EACT,QAAQ,EACR,WAAW,EACX,aAAa,EACd,MAAM,aAAa,CAAC;AAErB;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,CACjC,IAAI,CACF,SAAS,EACP,QAAQ,GACR,OAAO,GACP,UAAU,GACV,OAAO,GACP,IAAI,GACJ,QAAQ,GACR,KAAK,GACL,SAAS,GACT,UAAU,GACV,OAAO,GACP,OAAO,GACP,cAAc,GACd,KAAK,CACR,CACF,GAAG;IACF,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACzC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAC5C,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACtC,QAAQ,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACxC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1C,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAC5C,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACpD,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;CACnC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=config-user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-user.js","sourceRoot":"","sources":["../../../src/core/foundation/config-user.ts"],"names":[],"mappings":""}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Version control configuration. osq performs no git writes unless `enabled`
3
+ * is set, so the block defaults off. `author` is the identity every osq commit
4
+ * carries and is required once writes are on. `worktreeRoot` names where linked
5
+ * worktrees live, `defaultBranch` names the branch approval must start from,
6
+ * and `prepare` runs before osq commits; all three keep their trimmed form.
7
+ * The commit timeout lives with the other timeouts.
8
+ */
9
+ export interface VcsConfig {
10
+ readonly enabled: boolean;
11
+ readonly author?: string;
12
+ readonly worktreeRoot?: string;
13
+ readonly defaultBranch?: string;
14
+ readonly prepare?: string;
15
+ }
16
+ export declare const DEFAULT_VCS_CONFIG: VcsConfig;
17
+ /** The branch used when neither origin nor `vcs.defaultBranch` names one. */
18
+ export declare const DEFAULT_BRANCH = "main";
19
+ /** Where linked worktrees live when `vcs.worktreeRoot` is unset. */
20
+ export declare const DEFAULT_WORKTREE_ROOT = "~/.osq/worktrees";
21
+ /** Default bound in seconds for each commit osq makes when unset. */
22
+ export declare const DEFAULT_GIT_COMMIT_SECONDS = 120;
23
+ /**
24
+ * Validate an optional `vcs` block over the defaults. Missing fields keep the
25
+ * defaults; a non-boolean `enabled`, a malformed author, an author missing
26
+ * while enabled, and a blank or non-string path or command are rejected.
27
+ */
28
+ export declare function validateVcsConfig(vcs: unknown): VcsConfig;
29
+ //# sourceMappingURL=config-vcs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-vcs.d.ts","sourceRoot":"","sources":["../../../src/core/foundation/config-vcs.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,kBAAkB,EAAE,SAA8B,CAAC;AAEhE,6EAA6E;AAC7E,eAAO,MAAM,cAAc,SAAS,CAAC;AAErC,oEAAoE;AACpE,eAAO,MAAM,qBAAqB,qBAAqB,CAAC;AAExD,qEAAqE;AACrE,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAK9C;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,CA8BzD"}
@@ -0,0 +1,57 @@
1
+ export const DEFAULT_VCS_CONFIG = { enabled: false };
2
+ /** The branch used when neither origin nor `vcs.defaultBranch` names one. */
3
+ export const DEFAULT_BRANCH = 'main';
4
+ /** Where linked worktrees live when `vcs.worktreeRoot` is unset. */
5
+ export const DEFAULT_WORKTREE_ROOT = '~/.osq/worktrees';
6
+ /** Default bound in seconds for each commit osq makes when unset. */
7
+ export const DEFAULT_GIT_COMMIT_SECONDS = 120;
8
+ /** A name, a space, and a non-empty email in angle brackets. */
9
+ const AUTHOR_PATTERN = /^\S.*\s<[^<>]+>$/;
10
+ /**
11
+ * Validate an optional `vcs` block over the defaults. Missing fields keep the
12
+ * defaults; a non-boolean `enabled`, a malformed author, an author missing
13
+ * while enabled, and a blank or non-string path or command are rejected.
14
+ */
15
+ export function validateVcsConfig(vcs) {
16
+ if (vcs === undefined)
17
+ return DEFAULT_VCS_CONFIG;
18
+ if (typeof vcs !== 'object' || vcs === null || Array.isArray(vcs)) {
19
+ throw new Error('vcs configuration must be an object');
20
+ }
21
+ const record = vcs;
22
+ const enabled = record.enabled === undefined ? DEFAULT_VCS_CONFIG.enabled : record.enabled;
23
+ if (typeof enabled !== 'boolean') {
24
+ throw new Error('vcs.enabled must be a boolean');
25
+ }
26
+ let author;
27
+ if (record.author !== undefined) {
28
+ if (typeof record.author !== 'string' || !AUTHOR_PATTERN.test(record.author)) {
29
+ throw new Error('vcs.author must look like "Name <email>"');
30
+ }
31
+ author = record.author;
32
+ }
33
+ if (enabled && author === undefined) {
34
+ throw new Error('vcs.author is required when vcs.enabled is true');
35
+ }
36
+ const worktreeRoot = trimmedField(record, 'worktreeRoot');
37
+ const defaultBranch = trimmedField(record, 'defaultBranch');
38
+ const prepare = trimmedField(record, 'prepare');
39
+ return {
40
+ enabled,
41
+ ...(author !== undefined ? { author } : {}),
42
+ ...(worktreeRoot !== undefined ? { worktreeRoot } : {}),
43
+ ...(defaultBranch !== undefined ? { defaultBranch } : {}),
44
+ ...(prepare !== undefined ? { prepare } : {}),
45
+ };
46
+ }
47
+ /** A present field's trimmed value, rejecting blanks and non-strings. */
48
+ function trimmedField(record, field) {
49
+ const value = record[field];
50
+ if (value === undefined)
51
+ return undefined;
52
+ if (typeof value !== 'string' || !value.trim()) {
53
+ throw new Error(`vcs.${field} must be a non-empty string if provided`);
54
+ }
55
+ return value.trim();
56
+ }
57
+ //# sourceMappingURL=config-vcs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-vcs.js","sourceRoot":"","sources":["../../../src/core/foundation/config-vcs.ts"],"names":[],"mappings":"AAgBA,MAAM,CAAC,MAAM,kBAAkB,GAAc,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAEhE,6EAA6E;AAC7E,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC;AAErC,oEAAoE;AACpE,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAAkB,CAAC;AAExD,qEAAqE;AACrE,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAE9C,gEAAgE;AAChE,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAE1C;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAY;IAC5C,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,kBAAkB,CAAC;IACjD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,MAAM,GAAG,GAA8B,CAAC;IAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IAC3F,IAAI,OAAO,OAAO,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,MAA0B,CAAC;IAC/B,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7E,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IACzB,CAAC;IACD,IAAI,OAAO,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1D,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAChD,OAAO;QACL,OAAO;QACP,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9C,CAAC;AACJ,CAAC;AAED,yEAAyE;AACzE,SAAS,YAAY,CAAC,MAA+B,EAAE,KAAa;IAClE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,yCAAyC,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC"}