@matteeh/osq 0.1.0 → 0.2.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/README.md +415 -72
  2. package/dist/cli/approve.d.ts +13 -3
  3. package/dist/cli/approve.d.ts.map +1 -1
  4. package/dist/cli/approve.js +59 -4
  5. package/dist/cli/approve.js.map +1 -1
  6. package/dist/cli/bin.js +0 -0
  7. package/dist/cli/confirm.d.ts +21 -0
  8. package/dist/cli/confirm.d.ts.map +1 -0
  9. package/dist/cli/confirm.js +28 -0
  10. package/dist/cli/confirm.js.map +1 -0
  11. package/dist/cli/doctor.d.ts +13 -0
  12. package/dist/cli/doctor.d.ts.map +1 -0
  13. package/dist/cli/doctor.js +23 -0
  14. package/dist/cli/doctor.js.map +1 -0
  15. package/dist/cli/done.d.ts +12 -0
  16. package/dist/cli/done.d.ts.map +1 -0
  17. package/dist/cli/done.js +26 -0
  18. package/dist/cli/done.js.map +1 -0
  19. package/dist/cli/inbox.d.ts +22 -0
  20. package/dist/cli/inbox.d.ts.map +1 -0
  21. package/dist/cli/inbox.js +41 -0
  22. package/dist/cli/inbox.js.map +1 -0
  23. package/dist/cli/index.d.ts.map +1 -1
  24. package/dist/cli/index.js +127 -8
  25. package/dist/cli/index.js.map +1 -1
  26. package/dist/cli/init.d.ts +1 -0
  27. package/dist/cli/init.d.ts.map +1 -1
  28. package/dist/cli/init.js +9 -3
  29. package/dist/cli/init.js.map +1 -1
  30. package/dist/cli/lint.d.ts +26 -0
  31. package/dist/cli/lint.d.ts.map +1 -0
  32. package/dist/cli/lint.js +60 -0
  33. package/dist/cli/lint.js.map +1 -0
  34. package/dist/cli/migrate.d.ts +18 -0
  35. package/dist/cli/migrate.d.ts.map +1 -0
  36. package/dist/cli/migrate.js +42 -0
  37. package/dist/cli/migrate.js.map +1 -0
  38. package/dist/cli/new.js +1 -1
  39. package/dist/cli/new.js.map +1 -1
  40. package/dist/cli/plan-queue.d.ts +50 -0
  41. package/dist/cli/plan-queue.d.ts.map +1 -0
  42. package/dist/cli/plan-queue.js +167 -0
  43. package/dist/cli/plan-queue.js.map +1 -0
  44. package/dist/cli/plan.d.ts +35 -0
  45. package/dist/cli/plan.d.ts.map +1 -0
  46. package/dist/cli/plan.js +153 -0
  47. package/dist/cli/plan.js.map +1 -0
  48. package/dist/cli/queue.d.ts +9 -0
  49. package/dist/cli/queue.d.ts.map +1 -0
  50. package/dist/cli/queue.js +24 -0
  51. package/dist/cli/queue.js.map +1 -0
  52. package/dist/cli/reject.d.ts +8 -0
  53. package/dist/cli/reject.d.ts.map +1 -0
  54. package/dist/cli/reject.js +18 -0
  55. package/dist/cli/reject.js.map +1 -0
  56. package/dist/cli/report.d.ts +1 -1
  57. package/dist/cli/report.d.ts.map +1 -1
  58. package/dist/cli/report.js +141 -14
  59. package/dist/cli/report.js.map +1 -1
  60. package/dist/cli/retry.d.ts +7 -0
  61. package/dist/cli/retry.d.ts.map +1 -0
  62. package/dist/cli/retry.js +29 -0
  63. package/dist/cli/retry.js.map +1 -0
  64. package/dist/cli/serve.d.ts +30 -0
  65. package/dist/cli/serve.d.ts.map +1 -0
  66. package/dist/cli/serve.js +136 -0
  67. package/dist/cli/serve.js.map +1 -0
  68. package/dist/cli/setup.d.ts.map +1 -1
  69. package/dist/cli/setup.js +7 -1
  70. package/dist/cli/setup.js.map +1 -1
  71. package/dist/cli/show.d.ts +2 -1
  72. package/dist/cli/show.d.ts.map +1 -1
  73. package/dist/cli/show.js +20 -3
  74. package/dist/cli/show.js.map +1 -1
  75. package/dist/cli/status.d.ts +1 -1
  76. package/dist/cli/status.d.ts.map +1 -1
  77. package/dist/cli/status.js +2 -2
  78. package/dist/cli/status.js.map +1 -1
  79. package/dist/cli/watch.d.ts +9 -6
  80. package/dist/cli/watch.d.ts.map +1 -1
  81. package/dist/cli/watch.js +15 -2
  82. package/dist/cli/watch.js.map +1 -1
  83. package/dist/core/foundation/config-codex.d.ts +22 -0
  84. package/dist/core/foundation/config-codex.d.ts.map +1 -0
  85. package/dist/core/foundation/config-codex.js +58 -0
  86. package/dist/core/foundation/config-codex.js.map +1 -0
  87. package/dist/core/foundation/config-doctor.d.ts +14 -0
  88. package/dist/core/foundation/config-doctor.d.ts.map +1 -0
  89. package/dist/core/foundation/config-doctor.js +29 -0
  90. package/dist/core/foundation/config-doctor.js.map +1 -0
  91. package/dist/core/foundation/config-env.d.ts +3 -0
  92. package/dist/core/foundation/config-env.d.ts.map +1 -0
  93. package/dist/core/foundation/config-env.js +22 -0
  94. package/dist/core/foundation/config-env.js.map +1 -0
  95. package/dist/core/foundation/config-gates.d.ts +22 -0
  96. package/dist/core/foundation/config-gates.d.ts.map +1 -0
  97. package/dist/core/foundation/config-gates.js +43 -0
  98. package/dist/core/foundation/config-gates.js.map +1 -0
  99. package/dist/core/foundation/config-pi.d.ts +64 -0
  100. package/dist/core/foundation/config-pi.d.ts.map +1 -0
  101. package/dist/core/foundation/config-pi.js +131 -0
  102. package/dist/core/foundation/config-pi.js.map +1 -0
  103. package/dist/core/foundation/config-planning.d.ts +24 -0
  104. package/dist/core/foundation/config-planning.d.ts.map +1 -0
  105. package/dist/core/foundation/config-planning.js +60 -0
  106. package/dist/core/foundation/config-planning.js.map +1 -0
  107. package/dist/core/foundation/config-queue.d.ts +15 -0
  108. package/dist/core/foundation/config-queue.d.ts.map +1 -0
  109. package/dist/core/foundation/config-queue.js +24 -0
  110. package/dist/core/foundation/config-queue.js.map +1 -0
  111. package/dist/core/foundation/config-serve.d.ts +20 -0
  112. package/dist/core/foundation/config-serve.d.ts.map +1 -0
  113. package/dist/core/foundation/config-serve.js +35 -0
  114. package/dist/core/foundation/config-serve.js.map +1 -0
  115. package/dist/core/{config.d.ts → foundation/config.d.ts} +34 -3
  116. package/dist/core/foundation/config.d.ts.map +1 -0
  117. package/dist/core/{config.js → foundation/config.js} +35 -18
  118. package/dist/core/foundation/config.js.map +1 -0
  119. package/dist/core/foundation/doctor-managed.d.ts +13 -0
  120. package/dist/core/foundation/doctor-managed.d.ts.map +1 -0
  121. package/dist/core/foundation/doctor-managed.js +77 -0
  122. package/dist/core/foundation/doctor-managed.js.map +1 -0
  123. package/dist/core/foundation/doctor.d.ts +19 -0
  124. package/dist/core/foundation/doctor.d.ts.map +1 -0
  125. package/dist/core/foundation/doctor.js +187 -0
  126. package/dist/core/foundation/doctor.js.map +1 -0
  127. package/dist/core/foundation/harness-catalog.d.ts +96 -0
  128. package/dist/core/foundation/harness-catalog.d.ts.map +1 -0
  129. package/dist/core/foundation/harness-catalog.js +182 -0
  130. package/dist/core/foundation/harness-catalog.js.map +1 -0
  131. package/dist/core/foundation/init-blocks.d.ts +33 -0
  132. package/dist/core/foundation/init-blocks.d.ts.map +1 -0
  133. package/dist/core/foundation/init-blocks.js +165 -0
  134. package/dist/core/foundation/init-blocks.js.map +1 -0
  135. package/dist/core/foundation/init-managed.d.ts +10 -0
  136. package/dist/core/foundation/init-managed.d.ts.map +1 -0
  137. package/dist/core/foundation/init-managed.js +115 -0
  138. package/dist/core/foundation/init-managed.js.map +1 -0
  139. package/dist/core/foundation/init.d.ts +18 -0
  140. package/dist/core/foundation/init.d.ts.map +1 -0
  141. package/dist/core/foundation/init.js +113 -0
  142. package/dist/core/foundation/init.js.map +1 -0
  143. package/dist/core/{logger.d.ts → foundation/logger.d.ts} +1 -0
  144. package/dist/core/foundation/logger.d.ts.map +1 -0
  145. package/dist/core/{logger.js → foundation/logger.js} +18 -2
  146. package/dist/core/foundation/logger.js.map +1 -0
  147. package/dist/core/{new.d.ts → foundation/new.d.ts} +3 -0
  148. package/dist/core/foundation/new.d.ts.map +1 -0
  149. package/dist/core/foundation/new.js +206 -0
  150. package/dist/core/foundation/new.js.map +1 -0
  151. package/dist/core/foundation/package-root.d.ts +9 -0
  152. package/dist/core/foundation/package-root.d.ts.map +1 -0
  153. package/dist/core/foundation/package-root.js +11 -0
  154. package/dist/core/foundation/package-root.js.map +1 -0
  155. package/dist/core/lifecycle/done.d.ts +17 -0
  156. package/dist/core/lifecycle/done.d.ts.map +1 -0
  157. package/dist/core/lifecycle/done.js +97 -0
  158. package/dist/core/lifecycle/done.js.map +1 -0
  159. package/dist/core/lifecycle/reject.d.ts +26 -0
  160. package/dist/core/lifecycle/reject.d.ts.map +1 -0
  161. package/dist/core/lifecycle/reject.js +83 -0
  162. package/dist/core/lifecycle/reject.js.map +1 -0
  163. package/dist/core/lifecycle/retry-transition.d.ts +23 -0
  164. package/dist/core/lifecycle/retry-transition.d.ts.map +1 -0
  165. package/dist/core/lifecycle/retry-transition.js +41 -0
  166. package/dist/core/lifecycle/retry-transition.js.map +1 -0
  167. package/dist/core/lifecycle/retry.d.ts +18 -0
  168. package/dist/core/lifecycle/retry.d.ts.map +1 -0
  169. package/dist/core/lifecycle/retry.js +179 -0
  170. package/dist/core/lifecycle/retry.js.map +1 -0
  171. package/dist/core/report/approval-flags.d.ts +29 -0
  172. package/dist/core/report/approval-flags.d.ts.map +1 -0
  173. package/dist/core/report/approval-flags.js +138 -0
  174. package/dist/core/report/approval-flags.js.map +1 -0
  175. package/dist/core/report/planning-economics.d.ts +39 -0
  176. package/dist/core/report/planning-economics.d.ts.map +1 -0
  177. package/dist/core/report/planning-economics.js +168 -0
  178. package/dist/core/report/planning-economics.js.map +1 -0
  179. package/dist/core/report/planning-observed.d.ts +59 -0
  180. package/dist/core/report/planning-observed.d.ts.map +1 -0
  181. package/dist/core/report/planning-observed.js +135 -0
  182. package/dist/core/report/planning-observed.js.map +1 -0
  183. package/dist/core/report/planning-records.d.ts +69 -0
  184. package/dist/core/report/planning-records.d.ts.map +1 -0
  185. package/dist/core/report/planning-records.js +149 -0
  186. package/dist/core/report/planning-records.js.map +1 -0
  187. package/dist/core/report/planning-slice-lookup.d.ts +13 -0
  188. package/dist/core/report/planning-slice-lookup.d.ts.map +1 -0
  189. package/dist/core/report/planning-slice-lookup.js +146 -0
  190. package/dist/core/report/planning-slice-lookup.js.map +1 -0
  191. package/dist/core/report/planning-slice-measures.d.ts +17 -0
  192. package/dist/core/report/planning-slice-measures.d.ts.map +1 -0
  193. package/dist/core/report/planning-slice-measures.js +85 -0
  194. package/dist/core/report/planning-slice-measures.js.map +1 -0
  195. package/dist/core/report/planning-slice-record.d.ts +4 -0
  196. package/dist/core/report/planning-slice-record.d.ts.map +1 -0
  197. package/dist/core/report/planning-slice-record.js +66 -0
  198. package/dist/core/report/planning-slice-record.js.map +1 -0
  199. package/dist/core/report/planning-slice-turns.d.ts +13 -0
  200. package/dist/core/report/planning-slice-turns.d.ts.map +1 -0
  201. package/dist/core/report/planning-slice-turns.js +41 -0
  202. package/dist/core/report/planning-slice-turns.js.map +1 -0
  203. package/dist/core/report/planning-slice.d.ts +70 -0
  204. package/dist/core/report/planning-slice.d.ts.map +1 -0
  205. package/dist/core/report/planning-slice.js +147 -0
  206. package/dist/core/report/planning-slice.js.map +1 -0
  207. package/dist/core/report/planning.d.ts +31 -0
  208. package/dist/core/report/planning.d.ts.map +1 -0
  209. package/dist/core/report/planning.js +75 -0
  210. package/dist/core/report/planning.js.map +1 -0
  211. package/dist/core/report/report-events.d.ts +52 -0
  212. package/dist/core/report/report-events.d.ts.map +1 -0
  213. package/dist/core/report/report-events.js +198 -0
  214. package/dist/core/report/report-events.js.map +1 -0
  215. package/dist/core/report/report-pre-spawn.d.ts +25 -0
  216. package/dist/core/report/report-pre-spawn.d.ts.map +1 -0
  217. package/dist/core/report/report-pre-spawn.js +40 -0
  218. package/dist/core/report/report-pre-spawn.js.map +1 -0
  219. package/dist/core/report/report-retries.d.ts +30 -0
  220. package/dist/core/report/report-retries.d.ts.map +1 -0
  221. package/dist/core/report/report-retries.js +100 -0
  222. package/dist/core/report/report-retries.js.map +1 -0
  223. package/dist/core/report/report.d.ts +276 -0
  224. package/dist/core/report/report.d.ts.map +1 -0
  225. package/dist/core/report/report.js +1421 -0
  226. package/dist/core/report/report.js.map +1 -0
  227. package/dist/core/{lock.d.ts → run/lock.d.ts} +6 -0
  228. package/dist/core/run/lock.d.ts.map +1 -0
  229. package/dist/core/{lock.js → run/lock.js} +7 -15
  230. package/dist/core/run/lock.js.map +1 -0
  231. package/dist/core/run/manifest.d.ts +39 -0
  232. package/dist/core/run/manifest.d.ts.map +1 -0
  233. package/dist/core/run/manifest.js +137 -0
  234. package/dist/core/run/manifest.js.map +1 -0
  235. package/dist/core/run/scope-hash.d.ts +71 -0
  236. package/dist/core/run/scope-hash.d.ts.map +1 -0
  237. package/dist/core/run/scope-hash.js +177 -0
  238. package/dist/core/run/scope-hash.js.map +1 -0
  239. package/dist/core/run/scope.d.ts +30 -0
  240. package/dist/core/run/scope.d.ts.map +1 -0
  241. package/dist/core/run/scope.js +193 -0
  242. package/dist/core/run/scope.js.map +1 -0
  243. package/dist/core/run/summary.d.ts +8 -0
  244. package/dist/core/run/summary.d.ts.map +1 -0
  245. package/dist/core/run/summary.js +25 -0
  246. package/dist/core/run/summary.js.map +1 -0
  247. package/dist/core/run/verification.d.ts +23 -0
  248. package/dist/core/run/verification.d.ts.map +1 -0
  249. package/dist/core/run/verification.js +78 -0
  250. package/dist/core/run/verification.js.map +1 -0
  251. package/dist/core/spec/approve.d.ts +31 -0
  252. package/dist/core/spec/approve.d.ts.map +1 -0
  253. package/dist/core/spec/approve.js +111 -0
  254. package/dist/core/spec/approve.js.map +1 -0
  255. package/dist/core/spec/delta.d.ts +77 -0
  256. package/dist/core/spec/delta.d.ts.map +1 -0
  257. package/dist/core/spec/delta.js +581 -0
  258. package/dist/core/spec/delta.js.map +1 -0
  259. package/dist/core/spec/digest-flags.d.ts +21 -0
  260. package/dist/core/spec/digest-flags.d.ts.map +1 -0
  261. package/dist/core/spec/digest-flags.js +194 -0
  262. package/dist/core/spec/digest-flags.js.map +1 -0
  263. package/dist/core/spec/digest-verify-starts.d.ts +5 -0
  264. package/dist/core/spec/digest-verify-starts.d.ts.map +1 -0
  265. package/dist/core/spec/digest-verify-starts.js +31 -0
  266. package/dist/core/spec/digest-verify-starts.js.map +1 -0
  267. package/dist/core/spec/digest.d.ts +42 -0
  268. package/dist/core/spec/digest.d.ts.map +1 -0
  269. package/dist/core/spec/digest.js +170 -0
  270. package/dist/core/spec/digest.js.map +1 -0
  271. package/dist/core/spec/hasher.d.ts +11 -0
  272. package/dist/core/spec/hasher.d.ts.map +1 -0
  273. package/dist/core/{hasher.js → spec/hasher.js} +27 -3
  274. package/dist/core/spec/hasher.js.map +1 -0
  275. package/dist/core/spec/linter.d.ts +79 -0
  276. package/dist/core/spec/linter.d.ts.map +1 -0
  277. package/dist/core/spec/linter.js +826 -0
  278. package/dist/core/spec/linter.js.map +1 -0
  279. package/dist/core/spec/migrate.d.ts +54 -0
  280. package/dist/core/spec/migrate.d.ts.map +1 -0
  281. package/dist/core/spec/migrate.js +297 -0
  282. package/dist/core/spec/migrate.js.map +1 -0
  283. package/dist/core/spec/openspec-version.d.ts +30 -0
  284. package/dist/core/spec/openspec-version.d.ts.map +1 -0
  285. package/dist/core/spec/openspec-version.js +118 -0
  286. package/dist/core/spec/openspec-version.js.map +1 -0
  287. package/dist/core/spec/parser.d.ts +82 -0
  288. package/dist/core/spec/parser.d.ts.map +1 -0
  289. package/dist/core/spec/parser.js +221 -0
  290. package/dist/core/spec/parser.js.map +1 -0
  291. package/dist/core/spec/verify-paths.d.ts +18 -0
  292. package/dist/core/spec/verify-paths.d.ts.map +1 -0
  293. package/dist/core/spec/verify-paths.js +139 -0
  294. package/dist/core/spec/verify-paths.js.map +1 -0
  295. package/dist/core/spec/verify-starts.d.ts +45 -0
  296. package/dist/core/spec/verify-starts.d.ts.map +1 -0
  297. package/dist/core/spec/verify-starts.js +61 -0
  298. package/dist/core/spec/verify-starts.js.map +1 -0
  299. package/dist/core/status/inbox-cursor.d.ts +10 -0
  300. package/dist/core/status/inbox-cursor.d.ts.map +1 -0
  301. package/dist/core/status/inbox-cursor.js +33 -0
  302. package/dist/core/status/inbox-cursor.js.map +1 -0
  303. package/dist/core/status/inbox-projection.d.ts +15 -0
  304. package/dist/core/status/inbox-projection.d.ts.map +1 -0
  305. package/dist/core/status/inbox-projection.js +20 -0
  306. package/dist/core/status/inbox-projection.js.map +1 -0
  307. package/dist/core/status/inbox-text.d.ts +4 -0
  308. package/dist/core/status/inbox-text.d.ts.map +1 -0
  309. package/dist/core/status/inbox-text.js +48 -0
  310. package/dist/core/status/inbox-text.js.map +1 -0
  311. package/dist/core/status/inbox.d.ts +53 -0
  312. package/dist/core/status/inbox.d.ts.map +1 -0
  313. package/dist/core/status/inbox.js +167 -0
  314. package/dist/core/status/inbox.js.map +1 -0
  315. package/dist/core/status/layout.d.ts +29 -0
  316. package/dist/core/status/layout.d.ts.map +1 -0
  317. package/dist/core/status/layout.js +77 -0
  318. package/dist/core/status/layout.js.map +1 -0
  319. package/dist/core/status/queue-parser.d.ts +13 -0
  320. package/dist/core/status/queue-parser.d.ts.map +1 -0
  321. package/dist/core/status/queue-parser.js +88 -0
  322. package/dist/core/status/queue-parser.js.map +1 -0
  323. package/dist/core/status/queue-planning.d.ts +62 -0
  324. package/dist/core/status/queue-planning.d.ts.map +1 -0
  325. package/dist/core/status/queue-planning.js +158 -0
  326. package/dist/core/status/queue-planning.js.map +1 -0
  327. package/dist/core/status/queue-report-detail.d.ts +50 -0
  328. package/dist/core/status/queue-report-detail.d.ts.map +1 -0
  329. package/dist/core/status/queue-report-detail.js +140 -0
  330. package/dist/core/status/queue-report-detail.js.map +1 -0
  331. package/dist/core/status/queue-report.d.ts +14 -0
  332. package/dist/core/status/queue-report.d.ts.map +1 -0
  333. package/dist/core/status/queue-report.js +41 -0
  334. package/dist/core/status/queue-report.js.map +1 -0
  335. package/dist/core/status/queue-state.d.ts +53 -0
  336. package/dist/core/status/queue-state.d.ts.map +1 -0
  337. package/dist/core/status/queue-state.js +167 -0
  338. package/dist/core/status/queue-state.js.map +1 -0
  339. package/dist/core/status/queue.d.ts +7 -0
  340. package/dist/core/status/queue.d.ts.map +1 -0
  341. package/dist/core/status/queue.js +4 -0
  342. package/dist/core/status/queue.js.map +1 -0
  343. package/dist/core/status/show.d.ts +102 -0
  344. package/dist/core/status/show.d.ts.map +1 -0
  345. package/dist/core/status/show.js +704 -0
  346. package/dist/core/status/show.js.map +1 -0
  347. package/dist/core/status/state.d.ts +56 -0
  348. package/dist/core/status/state.d.ts.map +1 -0
  349. package/dist/core/status/state.js +187 -0
  350. package/dist/core/status/state.js.map +1 -0
  351. package/dist/core/status/status.d.ts +23 -0
  352. package/dist/core/status/status.d.ts.map +1 -0
  353. package/dist/core/status/status.js +173 -0
  354. package/dist/core/status/status.js.map +1 -0
  355. package/dist/core/web/web-data-change.d.ts +10 -0
  356. package/dist/core/web/web-data-change.d.ts.map +1 -0
  357. package/dist/core/web/web-data-change.js +106 -0
  358. package/dist/core/web/web-data-change.js.map +1 -0
  359. package/dist/core/web/web-data-folders.d.ts +39 -0
  360. package/dist/core/web/web-data-folders.d.ts.map +1 -0
  361. package/dist/core/web/web-data-folders.js +125 -0
  362. package/dist/core/web/web-data-folders.js.map +1 -0
  363. package/dist/core/web/web-data-graph.d.ts +8 -0
  364. package/dist/core/web/web-data-graph.d.ts.map +1 -0
  365. package/dist/core/web/web-data-graph.js +113 -0
  366. package/dist/core/web/web-data-graph.js.map +1 -0
  367. package/dist/core/web/web-data-lifecycle.d.ts +43 -0
  368. package/dist/core/web/web-data-lifecycle.d.ts.map +1 -0
  369. package/dist/core/web/web-data-lifecycle.js +141 -0
  370. package/dist/core/web/web-data-lifecycle.js.map +1 -0
  371. package/dist/core/web/web-data-observations.d.ts +30 -0
  372. package/dist/core/web/web-data-observations.d.ts.map +1 -0
  373. package/dist/core/web/web-data-observations.js +181 -0
  374. package/dist/core/web/web-data-observations.js.map +1 -0
  375. package/dist/core/web/web-data-tokens.d.ts +29 -0
  376. package/dist/core/web/web-data-tokens.d.ts.map +1 -0
  377. package/dist/core/web/web-data-tokens.js +62 -0
  378. package/dist/core/web/web-data-tokens.js.map +1 -0
  379. package/dist/core/web/web-data-types.d.ts +156 -0
  380. package/dist/core/web/web-data-types.d.ts.map +1 -0
  381. package/dist/core/web/web-data-types.js +15 -0
  382. package/dist/core/web/web-data-types.js.map +1 -0
  383. package/dist/core/web/web-data.d.ts +10 -0
  384. package/dist/core/web/web-data.d.ts.map +1 -0
  385. package/dist/core/web/web-data.js +8 -0
  386. package/dist/core/web/web-data.js.map +1 -0
  387. package/dist/core/web/web-events.d.ts +54 -0
  388. package/dist/core/web/web-events.d.ts.map +1 -0
  389. package/dist/core/web/web-events.js +162 -0
  390. package/dist/core/web/web-events.js.map +1 -0
  391. package/dist/core/web/web-export.d.ts +18 -0
  392. package/dist/core/web/web-export.d.ts.map +1 -0
  393. package/dist/core/web/web-export.js +112 -0
  394. package/dist/core/web/web-export.js.map +1 -0
  395. package/dist/core/web/web-server.d.ts +34 -0
  396. package/dist/core/web/web-server.d.ts.map +1 -0
  397. package/dist/core/web/web-server.js +182 -0
  398. package/dist/core/web/web-server.js.map +1 -0
  399. package/dist/core/web/web-static.d.ts +20 -0
  400. package/dist/core/web/web-static.d.ts.map +1 -0
  401. package/dist/core/web/web-static.js +104 -0
  402. package/dist/core/web/web-static.js.map +1 -0
  403. package/dist/harness/{agy.d.ts → agy/agy.d.ts} +8 -6
  404. package/dist/harness/agy/agy.d.ts.map +1 -0
  405. package/dist/harness/{agy.js → agy/agy.js} +49 -34
  406. package/dist/harness/agy/agy.js.map +1 -0
  407. package/dist/harness/claude/claude-turns.d.ts +29 -0
  408. package/dist/harness/claude/claude-turns.d.ts.map +1 -0
  409. package/dist/harness/claude/claude-turns.js +162 -0
  410. package/dist/harness/claude/claude-turns.js.map +1 -0
  411. package/dist/harness/claude/claude-usage.d.ts +12 -0
  412. package/dist/harness/claude/claude-usage.d.ts.map +1 -0
  413. package/dist/harness/claude/claude-usage.js +144 -0
  414. package/dist/harness/claude/claude-usage.js.map +1 -0
  415. package/dist/harness/codex/codex-observe-usage.d.ts +6 -0
  416. package/dist/harness/codex/codex-observe-usage.d.ts.map +1 -0
  417. package/dist/harness/codex/codex-observe-usage.js +215 -0
  418. package/dist/harness/codex/codex-observe-usage.js.map +1 -0
  419. package/dist/harness/codex/codex-prompt.d.ts +17 -0
  420. package/dist/harness/codex/codex-prompt.d.ts.map +1 -0
  421. package/dist/harness/codex/codex-prompt.js +43 -0
  422. package/dist/harness/codex/codex-prompt.js.map +1 -0
  423. package/dist/harness/codex/codex-stream.d.ts +23 -0
  424. package/dist/harness/codex/codex-stream.d.ts.map +1 -0
  425. package/dist/harness/codex/codex-stream.js +182 -0
  426. package/dist/harness/codex/codex-stream.js.map +1 -0
  427. package/dist/harness/codex/codex-usage.d.ts +26 -0
  428. package/dist/harness/codex/codex-usage.d.ts.map +1 -0
  429. package/dist/harness/codex/codex-usage.js +122 -0
  430. package/dist/harness/codex/codex-usage.js.map +1 -0
  431. package/dist/harness/codex/codex.d.ts +16 -0
  432. package/dist/harness/codex/codex.d.ts.map +1 -0
  433. package/dist/harness/codex/codex.js +92 -0
  434. package/dist/harness/codex/codex.js.map +1 -0
  435. package/dist/harness/index.d.ts +11 -2
  436. package/dist/harness/index.d.ts.map +1 -1
  437. package/dist/harness/index.js +24 -9
  438. package/dist/harness/index.js.map +1 -1
  439. package/dist/harness/mock.d.ts +5 -2
  440. package/dist/harness/mock.d.ts.map +1 -1
  441. package/dist/harness/mock.js +10 -11
  442. package/dist/harness/mock.js.map +1 -1
  443. package/dist/harness/opencode/opencode-observe-usage.d.ts +4 -0
  444. package/dist/harness/opencode/opencode-observe-usage.d.ts.map +1 -0
  445. package/dist/harness/opencode/opencode-observe-usage.js +100 -0
  446. package/dist/harness/opencode/opencode-observe-usage.js.map +1 -0
  447. package/dist/harness/opencode/opencode-usage.d.ts +24 -0
  448. package/dist/harness/opencode/opencode-usage.d.ts.map +1 -0
  449. package/dist/harness/opencode/opencode-usage.js +181 -0
  450. package/dist/harness/opencode/opencode-usage.js.map +1 -0
  451. package/dist/harness/{opencode.d.ts → opencode/opencode.d.ts} +10 -7
  452. package/dist/harness/opencode/opencode.d.ts.map +1 -0
  453. package/dist/harness/{opencode.js → opencode/opencode.js} +159 -70
  454. package/dist/harness/opencode/opencode.js.map +1 -0
  455. package/dist/harness/pi/pi-args.d.ts +9 -0
  456. package/dist/harness/pi/pi-args.d.ts.map +1 -0
  457. package/dist/harness/pi/pi-args.js +33 -0
  458. package/dist/harness/pi/pi-args.js.map +1 -0
  459. package/dist/harness/pi/pi-stream.d.ts +27 -0
  460. package/dist/harness/pi/pi-stream.d.ts.map +1 -0
  461. package/dist/harness/pi/pi-stream.js +176 -0
  462. package/dist/harness/pi/pi-stream.js.map +1 -0
  463. package/dist/harness/pi/pi-tools.d.ts +5 -0
  464. package/dist/harness/pi/pi-tools.d.ts.map +1 -0
  465. package/dist/harness/pi/pi-tools.js +31 -0
  466. package/dist/harness/pi/pi-tools.js.map +1 -0
  467. package/dist/harness/pi/pi.d.ts +11 -0
  468. package/dist/harness/pi/pi.d.ts.map +1 -0
  469. package/dist/harness/pi/pi.js +109 -0
  470. package/dist/harness/pi/pi.js.map +1 -0
  471. package/dist/harness/prompt.d.ts +11 -0
  472. package/dist/harness/prompt.d.ts.map +1 -0
  473. package/dist/harness/prompt.js +105 -0
  474. package/dist/harness/prompt.js.map +1 -0
  475. package/dist/harness/types.d.ts +287 -8
  476. package/dist/harness/types.d.ts.map +1 -1
  477. package/dist/harness/types.js +125 -0
  478. package/dist/harness/types.js.map +1 -1
  479. package/dist/index.d.ts +13 -2
  480. package/dist/index.d.ts.map +1 -1
  481. package/dist/index.js +8 -1
  482. package/dist/index.js.map +1 -1
  483. package/dist/watcher/archive-verify.d.ts +9 -0
  484. package/dist/watcher/archive-verify.d.ts.map +1 -0
  485. package/dist/watcher/archive-verify.js +80 -0
  486. package/dist/watcher/archive-verify.js.map +1 -0
  487. package/dist/watcher/archiver.d.ts +14 -2
  488. package/dist/watcher/archiver.d.ts.map +1 -1
  489. package/dist/watcher/archiver.js +112 -33
  490. package/dist/watcher/archiver.js.map +1 -1
  491. package/dist/watcher/attempt.d.ts +19 -0
  492. package/dist/watcher/attempt.d.ts.map +1 -0
  493. package/dist/watcher/attempt.js +94 -0
  494. package/dist/watcher/attempt.js.map +1 -0
  495. package/dist/watcher/auto-retry.d.ts +11 -0
  496. package/dist/watcher/auto-retry.d.ts.map +1 -0
  497. package/dist/watcher/auto-retry.js +180 -0
  498. package/dist/watcher/auto-retry.js.map +1 -0
  499. package/dist/watcher/build.d.ts +24 -0
  500. package/dist/watcher/build.d.ts.map +1 -0
  501. package/dist/watcher/build.js +169 -0
  502. package/dist/watcher/build.js.map +1 -0
  503. package/dist/watcher/change-verify.d.ts +25 -0
  504. package/dist/watcher/change-verify.d.ts.map +1 -0
  505. package/dist/watcher/change-verify.js +57 -0
  506. package/dist/watcher/change-verify.js.map +1 -0
  507. package/dist/watcher/dev.d.ts +51 -0
  508. package/dist/watcher/dev.d.ts.map +1 -0
  509. package/dist/watcher/dev.js +124 -0
  510. package/dist/watcher/dev.js.map +1 -0
  511. package/dist/watcher/failure-reason.d.ts +7 -0
  512. package/dist/watcher/failure-reason.d.ts.map +1 -0
  513. package/dist/watcher/failure-reason.js +2 -0
  514. package/dist/watcher/failure-reason.js.map +1 -0
  515. package/dist/watcher/fingerprint.d.ts +19 -0
  516. package/dist/watcher/fingerprint.d.ts.map +1 -0
  517. package/dist/watcher/fingerprint.js +53 -0
  518. package/dist/watcher/fingerprint.js.map +1 -0
  519. package/dist/watcher/heartbeat.d.ts +33 -0
  520. package/dist/watcher/heartbeat.d.ts.map +1 -0
  521. package/dist/watcher/heartbeat.js +135 -0
  522. package/dist/watcher/heartbeat.js.map +1 -0
  523. package/dist/watcher/lock.d.ts +10 -0
  524. package/dist/watcher/lock.d.ts.map +1 -0
  525. package/dist/watcher/lock.js +14 -0
  526. package/dist/watcher/lock.js.map +1 -0
  527. package/dist/watcher/loop.d.ts +26 -6
  528. package/dist/watcher/loop.d.ts.map +1 -1
  529. package/dist/watcher/loop.js +154 -37
  530. package/dist/watcher/loop.js.map +1 -1
  531. package/dist/watcher/measures.d.ts +46 -0
  532. package/dist/watcher/measures.d.ts.map +1 -0
  533. package/dist/watcher/measures.js +203 -0
  534. package/dist/watcher/measures.js.map +1 -0
  535. package/dist/watcher/outcome.d.ts +32 -0
  536. package/dist/watcher/outcome.d.ts.map +1 -0
  537. package/dist/watcher/outcome.js +127 -0
  538. package/dist/watcher/outcome.js.map +1 -0
  539. package/dist/watcher/regression.d.ts +43 -0
  540. package/dist/watcher/regression.d.ts.map +1 -0
  541. package/dist/watcher/regression.js +175 -0
  542. package/dist/watcher/regression.js.map +1 -0
  543. package/dist/watcher/runner.d.ts +6 -68
  544. package/dist/watcher/runner.d.ts.map +1 -1
  545. package/dist/watcher/runner.js +74 -523
  546. package/dist/watcher/runner.js.map +1 -1
  547. package/dist/watcher/spawn.d.ts +48 -0
  548. package/dist/watcher/spawn.d.ts.map +1 -0
  549. package/dist/watcher/spawn.js +130 -0
  550. package/dist/watcher/spawn.js.map +1 -0
  551. package/dist/watcher/task-verify.d.ts +59 -0
  552. package/dist/watcher/task-verify.d.ts.map +1 -0
  553. package/dist/watcher/task-verify.js +108 -0
  554. package/dist/watcher/task-verify.js.map +1 -0
  555. package/dist/watcher/verify.d.ts +44 -0
  556. package/dist/watcher/verify.d.ts.map +1 -0
  557. package/dist/watcher/verify.js +156 -0
  558. package/dist/watcher/verify.js.map +1 -0
  559. package/package.json +21 -9
  560. package/templates/PLANNER.md +77 -0
  561. package/templates/openspec/config.yaml +24 -0
  562. package/templates/openspec/schemas/osq/README.md +30 -0
  563. package/templates/openspec/schemas/osq/schema.yaml +133 -0
  564. package/templates/openspec/schemas/osq/templates/proposal.md +66 -0
  565. package/templates/openspec/schemas/osq/templates/spec.md +13 -0
  566. package/templates/openspec/schemas/osq/templates/tasks.md +11 -0
  567. package/templates/proposal.md +66 -0
  568. package/templates/tasks.md +5 -0
  569. package/ui/dist/assets/index-CZYeQ8la.js +9 -0
  570. package/ui/dist/assets/index-D6zVSjO7.css +1 -0
  571. package/ui/dist/index.html +14 -0
  572. package/dist/core/approve.d.ts +0 -11
  573. package/dist/core/approve.d.ts.map +0 -1
  574. package/dist/core/approve.js +0 -52
  575. package/dist/core/approve.js.map +0 -1
  576. package/dist/core/config.d.ts.map +0 -1
  577. package/dist/core/config.js.map +0 -1
  578. package/dist/core/hasher.d.ts +0 -4
  579. package/dist/core/hasher.d.ts.map +0 -1
  580. package/dist/core/hasher.js.map +0 -1
  581. package/dist/core/init.d.ts +0 -12
  582. package/dist/core/init.d.ts.map +0 -1
  583. package/dist/core/init.js +0 -151
  584. package/dist/core/init.js.map +0 -1
  585. package/dist/core/linter.d.ts +0 -8
  586. package/dist/core/linter.d.ts.map +0 -1
  587. package/dist/core/linter.js +0 -100
  588. package/dist/core/linter.js.map +0 -1
  589. package/dist/core/lock.d.ts.map +0 -1
  590. package/dist/core/lock.js.map +0 -1
  591. package/dist/core/logger.d.ts.map +0 -1
  592. package/dist/core/logger.js.map +0 -1
  593. package/dist/core/new.d.ts.map +0 -1
  594. package/dist/core/new.js +0 -79
  595. package/dist/core/new.js.map +0 -1
  596. package/dist/core/parser.d.ts +0 -32
  597. package/dist/core/parser.d.ts.map +0 -1
  598. package/dist/core/parser.js +0 -87
  599. package/dist/core/parser.js.map +0 -1
  600. package/dist/core/report.d.ts +0 -54
  601. package/dist/core/report.d.ts.map +0 -1
  602. package/dist/core/report.js +0 -475
  603. package/dist/core/report.js.map +0 -1
  604. package/dist/core/show.d.ts +0 -50
  605. package/dist/core/show.d.ts.map +0 -1
  606. package/dist/core/show.js +0 -374
  607. package/dist/core/show.js.map +0 -1
  608. package/dist/core/state.d.ts +0 -25
  609. package/dist/core/state.d.ts.map +0 -1
  610. package/dist/core/state.js +0 -180
  611. package/dist/core/state.js.map +0 -1
  612. package/dist/core/status.d.ts +0 -10
  613. package/dist/core/status.d.ts.map +0 -1
  614. package/dist/core/status.js +0 -106
  615. package/dist/core/status.js.map +0 -1
  616. package/dist/harness/agy.d.ts.map +0 -1
  617. package/dist/harness/agy.js.map +0 -1
  618. package/dist/harness/opencode.d.ts.map +0 -1
  619. package/dist/harness/opencode.js.map +0 -1
@@ -0,0 +1,31 @@
1
+ import path from 'node:path';
2
+ import { firstNonEmptyString } from '../stream.js';
3
+ const SUMMARY_MAX = 60;
4
+ /** Relativize an absolute path under the project root, leaving relative paths. */
5
+ export function toProjectRelative(target, projectRoot) {
6
+ return path.isAbsolute(target) ? path.relative(projectRoot, target) : target;
7
+ }
8
+ /** Short, human-readable tool summary following Pi's tool argument shapes. */
9
+ export function piToolSummary(toolName, args) {
10
+ const a = args ?? {};
11
+ let raw;
12
+ switch (toolName) {
13
+ case 'bash':
14
+ raw = firstNonEmptyString(a.command);
15
+ break;
16
+ case 'read':
17
+ case 'edit':
18
+ case 'write':
19
+ raw = firstNonEmptyString(a.path);
20
+ break;
21
+ case 'grep':
22
+ case 'find':
23
+ case 'ls':
24
+ raw = firstNonEmptyString(a.pattern, a.path);
25
+ break;
26
+ default:
27
+ raw = JSON.stringify(a);
28
+ }
29
+ return (raw ?? '').slice(0, SUMMARY_MAX);
30
+ }
31
+ //# sourceMappingURL=pi-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi-tools.js","sourceRoot":"","sources":["../../../src/harness/pi/pi-tools.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB,kFAAkF;AAClF,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAE,WAAmB;IACnE,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC/E,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,IAAyC;IACvF,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;IACrB,IAAI,GAAuB,CAAC;IAC5B,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,MAAM;YACT,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM;QACR,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACV,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM;QACR,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,IAAI;YACP,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM;QACR;YACE,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { type OsqConfig } from '../../core/foundation/config.js';
2
+ import type { HarnessAdapter, SpawnResult, SpawnTaskOptions } from '../types.js';
3
+ /** Probe `pi --version`, warn outside the tested range, and check credentials. */
4
+ export declare function preflightPi(projectRoot: string, config: OsqConfig): Promise<void>;
5
+ export declare class PiAdapter implements HarnessAdapter {
6
+ readonly name = "pi";
7
+ setup(_projectRoot: string, _config: OsqConfig): Promise<void>;
8
+ preflight(projectRoot: string, config: OsqConfig): Promise<void>;
9
+ spawn(options: SpawnTaskOptions): Promise<SpawnResult>;
10
+ }
11
+ //# sourceMappingURL=pi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi.d.ts","sourceRoot":"","sources":["../../../src/harness/pi/pi.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,SAAS,EAAc,MAAM,iCAAiC,CAAC;AAG7E,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AA2BjF,kFAAkF;AAClF,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BvF;AAED,qBAAa,SAAU,YAAW,cAAc;IAC9C,QAAQ,CAAC,IAAI,QAAQ;IAEf,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9D,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhE,KAAK,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;CAqE7D"}
@@ -0,0 +1,109 @@
1
+ import { assessPiVersion, resolvePiBinary, runPiAuthCheck, } from '../../core/foundation/config-pi.js';
2
+ import { loadConfig } from '../../core/foundation/config.js';
3
+ import { DEFAULT_KILL_GRACE_PERIOD_MS, spawnWithTimeout } from '../process.js';
4
+ import { EventStreamParser } from '../stream.js';
5
+ import { buildPiArgs } from './pi-args.js';
6
+ import { createPiStreamState, processPiStdoutLine } from './pi-stream.js';
7
+ const MISSING_KEY_MARKER = 'No API key found';
8
+ async function probePiVersion(bin, projectRoot, timeoutSeconds, killGracePeriodMs) {
9
+ const result = await spawnWithTimeout({
10
+ command: bin,
11
+ args: ['--version'],
12
+ cwd: projectRoot,
13
+ timeoutSeconds,
14
+ killGracePeriodMs,
15
+ });
16
+ if (result.exitCode !== 0)
17
+ return undefined;
18
+ return (result.stdout || result.stderr).trim().split('\n')[0]?.trim();
19
+ }
20
+ function missingCredentialsHint(provider) {
21
+ return `Pi credentials are missing. Run: pi auth check --provider ${provider ?? 'default'}`;
22
+ }
23
+ /** Probe `pi --version`, warn outside the tested range, and check credentials. */
24
+ export async function preflightPi(projectRoot, config) {
25
+ const bin = resolvePiBinary(config);
26
+ const timeoutSeconds = config.timeouts?.harnessPreflightSeconds ?? 10;
27
+ const version = await probePiVersion(bin, projectRoot, timeoutSeconds, config.timeouts?.harnessKillGracePeriodMs);
28
+ if (version === undefined) {
29
+ throw new Error(`Pi binary not found or failed: ${bin}`);
30
+ }
31
+ const assessment = assessPiVersion(version);
32
+ if (!assessment.tested) {
33
+ console.warn(assessment.warning ?? `Pi ${version} is outside the tested range`);
34
+ }
35
+ const provider = config.pi?.provider?.trim();
36
+ if (!provider)
37
+ return;
38
+ const auth = await runPiAuthCheck(bin, projectRoot, provider, timeoutSeconds);
39
+ if (!auth.ok) {
40
+ throw new Error(`Pi credentials not ready for provider ${provider}: ${auth.reason ?? auth.status}. ` +
41
+ `Run: pi auth check --provider ${provider}`);
42
+ }
43
+ }
44
+ export class PiAdapter {
45
+ name = 'pi';
46
+ async setup(_projectRoot, _config) {
47
+ // Pi reads AGENTS.md itself; osq writes no Pi files.
48
+ }
49
+ async preflight(projectRoot, config) {
50
+ await preflightPi(projectRoot, config);
51
+ }
52
+ async spawn(options) {
53
+ const { projectRoot, specFolderPath, taskNumber } = options;
54
+ const resolved = options.config ?? (await loadConfig(projectRoot).catch(() => undefined));
55
+ const bin = resolvePiBinary(resolved);
56
+ const args = buildPiArgs(options, resolved);
57
+ const state = createPiStreamState();
58
+ const parser = new EventStreamParser((line) => processPiStdoutLine(line, { specFolderPath, taskNumber, projectRoot, logger: options.logger }, state));
59
+ const killGraceMs = resolved?.timeouts?.harnessKillGracePeriodMs ?? DEFAULT_KILL_GRACE_PERIOD_MS;
60
+ const version = await probePiVersion(bin, projectRoot, resolved?.timeouts?.harnessPreflightSeconds ?? 10, resolved?.timeouts?.harnessKillGracePeriodMs);
61
+ let pid;
62
+ let finished = false;
63
+ let graceTimer;
64
+ state.onSettled = () => {
65
+ if (graceTimer)
66
+ return;
67
+ graceTimer = setTimeout(() => {
68
+ if (!finished && pid !== undefined) {
69
+ try {
70
+ process.kill(pid, 'SIGTERM');
71
+ }
72
+ catch { }
73
+ }
74
+ }, killGraceMs);
75
+ };
76
+ const result = await spawnWithTimeout({
77
+ command: bin,
78
+ args,
79
+ cwd: projectRoot,
80
+ env: { ...process.env, OSQ_TASK_NUMBER: taskNumber, OSQ_SPEC_FOLDER: specFolderPath },
81
+ timeoutSeconds: options.timeoutSeconds ?? resolved?.timeouts?.taskTimeoutSeconds ?? 1800,
82
+ killGracePeriodMs: resolved?.timeouts?.harnessKillGracePeriodMs,
83
+ onStdout: (chunk) => parser.feed(chunk),
84
+ onSpawn: (childPid) => {
85
+ pid = childPid;
86
+ options.onSpawn?.(childPid, version ? { harnessVersion: version } : undefined);
87
+ },
88
+ });
89
+ finished = true;
90
+ if (graceTimer)
91
+ clearTimeout(graceTimer);
92
+ await parser.flush();
93
+ const settled = state.settled;
94
+ const failed = !settled && result.exitCode !== 0;
95
+ const missingKey = failed && result.stderr.includes(MISSING_KEY_MARKER);
96
+ const error = missingKey
97
+ ? `${result.stderr.trim()}\n${missingCredentialsHint(resolved?.pi?.provider)}`
98
+ : result.error;
99
+ return {
100
+ exitCode: settled ? 0 : result.exitCode,
101
+ timedOut: settled ? false : result.timedOut,
102
+ signal: result.signal,
103
+ error: settled ? undefined : error,
104
+ pid: result.pid,
105
+ elapsedMs: result.elapsedMs,
106
+ };
107
+ }
108
+ }
109
+ //# sourceMappingURL=pi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi.js","sourceRoot":"","sources":["../../../src/harness/pi/pi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { type SpawnTaskOptions } from './types.js';
2
+ /** Delta spec paths written by the change, in deterministic capability order. */
3
+ export declare function deltaSpecPaths(options: SpawnTaskOptions): string[];
4
+ /**
5
+ * Living capability specs referenced by the parent change: the reads declared by
6
+ * the proposal plus the capabilities written by the change's delta specs.
7
+ */
8
+ export declare function livingSpecPaths(options: SpawnTaskOptions): string[];
9
+ /** Full one-attempt executor prompt naming every file the task needs. */
10
+ export declare function buildExecutorPrompt(options: SpawnTaskOptions): string;
11
+ //# sourceMappingURL=prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/harness/prompt.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,gBAAgB,EAItB,MAAM,YAAY,CAAC;AAEpB,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAclE;AAoBD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAkBnE;AAED,yEAAyE;AACzE,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAyCrE"}
@@ -0,0 +1,105 @@
1
+ import fsSync from 'node:fs';
2
+ import path from 'node:path';
3
+ import { EXECUTOR_EXIT_LINES, EXECUTOR_STEPS } from '../core/foundation/init-blocks.js';
4
+ import { parseSpecMd } from '../core/spec/parser.js';
5
+ import { capabilityRuleLines, priorContextLines, resolveCapabilityRules, } from './types.js';
6
+ /** Delta spec paths written by the change, in deterministic capability order. */
7
+ export function deltaSpecPaths(options) {
8
+ const { projectRoot, specFolderPath } = options;
9
+ const dir = path.join(specFolderPath, 'specs');
10
+ let entries;
11
+ try {
12
+ entries = fsSync.readdirSync(dir, { withFileTypes: true });
13
+ }
14
+ catch {
15
+ return [];
16
+ }
17
+ return entries
18
+ .filter((entry) => entry.isDirectory())
19
+ .map((entry) => entry.name)
20
+ .sort()
21
+ .map((name) => path.relative(projectRoot, path.join(dir, name, 'spec.md')));
22
+ }
23
+ /**
24
+ * Reads the `features.reads` names from `proposal.md`. A missing or malformed
25
+ * proposal contributes no reads, exactly as the previous async loader did.
26
+ */
27
+ function proposalReads(specFolderPath) {
28
+ let content;
29
+ try {
30
+ content = fsSync.readFileSync(path.join(specFolderPath, 'proposal.md'), 'utf8');
31
+ }
32
+ catch {
33
+ return [];
34
+ }
35
+ try {
36
+ return parseSpecMd(content).features.reads;
37
+ }
38
+ catch {
39
+ return [];
40
+ }
41
+ }
42
+ /**
43
+ * Living capability specs referenced by the parent change: the reads declared by
44
+ * the proposal plus the capabilities written by the change's delta specs.
45
+ */
46
+ export function livingSpecPaths(options) {
47
+ const { projectRoot, specFolderPath, config } = options;
48
+ const names = new Set();
49
+ for (const name of proposalReads(specFolderPath)) {
50
+ if (name.trim())
51
+ names.add(name.trim());
52
+ }
53
+ for (const delta of deltaSpecPaths(options)) {
54
+ const parts = delta.split(path.sep);
55
+ if (parts.length >= 2)
56
+ names.add(parts[parts.length - 2]);
57
+ }
58
+ const featuresDir = config?.paths?.features || 'openspec/specs';
59
+ const paths = [];
60
+ for (const name of [...names].sort()) {
61
+ const relative = path.join(featuresDir, name, 'spec.md');
62
+ if (fsSync.existsSync(path.resolve(projectRoot, relative)))
63
+ paths.push(relative);
64
+ }
65
+ return paths;
66
+ }
67
+ /** Full one-attempt executor prompt naming every file the task needs. */
68
+ export function buildExecutorPrompt(options) {
69
+ const { projectRoot, specFolderPath, taskNumber, taskTitle, scope, entry, verifyCommand } = options;
70
+ const taskRel = path.relative(projectRoot, path.resolve(specFolderPath, 'tasks', `${taskNumber}.md`));
71
+ const specRel = path.relative(projectRoot, path.resolve(specFolderPath, 'proposal.md'));
72
+ const resultAbs = path.resolve(specFolderPath, '.run', 'results', `${taskNumber}.md`);
73
+ const resultRel = path.relative(projectRoot, resultAbs);
74
+ const priorResult = fsSync.existsSync(resultAbs) ? resultRel : undefined;
75
+ const deltas = deltaSpecPaths(options);
76
+ const living = livingSpecPaths(options);
77
+ return [
78
+ 'You are a coding agent working autonomously on an osq task. Follow AGENTS.md strictly.',
79
+ `Task File: ${taskRel}`,
80
+ `Parent Spec: ${specRel}`,
81
+ `Task Title: ${taskTitle}`,
82
+ `Scope: ${scope.join(', ')}`,
83
+ `Entry: ${entry.join(', ')}`,
84
+ `Verify Command: ${verifyCommand}`,
85
+ `Result Destination: ${resultRel}`,
86
+ ...priorContextLines({
87
+ attempt: options.attempt,
88
+ reason: options.priorFailureReason,
89
+ output: options.priorFailureOutput,
90
+ resultPath: priorResult,
91
+ }),
92
+ ...(deltas.length > 0 ? ['', 'Delta Specs:', ...deltas.map((p) => `- ${p}`)] : []),
93
+ ...(living.length > 0 ? ['', 'Living Capability Specs:', ...living.map((p) => `- ${p}`)] : []),
94
+ '',
95
+ 'Rules:',
96
+ ...EXECUTOR_STEPS,
97
+ ...capabilityRuleLines(resolveCapabilityRules(options)),
98
+ '',
99
+ 'Exiting:',
100
+ ...EXECUTOR_EXIT_LINES,
101
+ '',
102
+ `CRITICAL: Before exiting, you MUST write ${resultRel} as the Exiting rules above describe. Change no file outside Scope except that result file.`,
103
+ ].join('\n');
104
+ }
105
+ //# sourceMappingURL=prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/harness/prompt.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,38 @@
1
- import type { OsqConfig } from '../core/config.js';
2
- import type { Logger } from '../core/logger.js';
3
- export type HarnessEventType = 'started' | 'tokens' | 'tool' | 'text' | 'file_changed' | 'verify_ran' | 'result_written' | 'exited' | 'done' | 'dead';
1
+ import type { OsqConfig } from '../core/foundation/config.js';
2
+ import type { Logger } from '../core/foundation/logger.js';
3
+ import type { ScopePathAttribution } from '../core/run/scope-hash.js';
4
+ import type { SCOPE_RESOLVER_VERSION } from '../core/run/scope.js';
5
+ export type { ScopePathAttribution } from '../core/run/scope-hash.js';
6
+ export type HarnessEventType = 'started' | 'tokens' | 'tool' | 'text' | 'file_changed' | 'verify_ran' | 'result_written' | 'exited' | 'measures' | 'done' | 'done_manual' | 'dead' | 'regressed' | 'retry' | 'stuck' | 'harness_retry' | 'recertification' | 'rejected';
7
+ /** Payload of the lifecycle `started` event emitted by the runner. */
8
+ export interface StartedEventData {
9
+ harness: string;
10
+ model: string;
11
+ osqVersion: string;
12
+ /** Target-wide execution attempt; initial execution is 1. */
13
+ attempt: number;
14
+ commit?: string;
15
+ pid?: number;
16
+ timeoutSeconds: number;
17
+ version?: string;
18
+ /** First line of the harness binary's `--version`, when the adapter supplies it. */
19
+ harnessVersion?: string;
20
+ }
21
+ /** Legacy `started` payloads emitted by adapters before the runner owned it. */
22
+ export type StartedEventPayload = StartedEventData | Record<string, unknown>;
23
+ /** Payload of a `tokens` event accumulated from the agent stream. */
24
+ export interface TokensEventData {
25
+ promptTokens: number;
26
+ candidateTokens: number;
27
+ totalTokens?: number;
28
+ cachedTokens?: number;
29
+ reasoningTokens?: number;
30
+ cost?: number;
31
+ /** Provider Pi reported for the response, when it reported one. */
32
+ provider?: string;
33
+ /** Model Pi reported for the response, when it reported one. */
34
+ model?: string;
35
+ }
4
36
  export interface ToolEventData {
5
37
  tool: string;
6
38
  summary: string;
@@ -8,17 +40,191 @@ export interface ToolEventData {
8
40
  export interface TextEventData {
9
41
  readonly text: string;
10
42
  }
43
+ export interface FileChangedEventData {
44
+ path: string;
45
+ }
46
+ export interface VerifyRanEventData {
47
+ command: string;
48
+ exitCode: number;
49
+ duration: number;
50
+ /** Legacy field name retained so older emitted lines still type-check. */
51
+ verifyCommand?: string;
52
+ output?: string;
53
+ /** Present only on pre-spawn runs: the declared start state and verdict. */
54
+ phase?: 'pre_spawn';
55
+ expected?: 'red' | 'green' | 'any';
56
+ mismatch?: boolean;
57
+ /** Present only when a named path is absent before spawn, in command order. */
58
+ missingPaths?: string[];
59
+ }
60
+ export interface ResultWrittenEventData {
61
+ path: string;
62
+ synthesized?: boolean;
63
+ }
64
+ export interface ExitedEventData {
65
+ exitCode: number;
66
+ pid?: number;
67
+ signal?: string;
68
+ timedOut?: boolean;
69
+ elapsedSeconds?: number;
70
+ }
71
+ /**
72
+ * Raw measures captured at task start and end. Values are stored as observed;
73
+ * no rates or aggregates are derived here.
74
+ */
75
+ export interface MeasuresEventData {
76
+ phase: 'start' | 'end';
77
+ /** Deterministic scope resolver version that produced the scope-derived fields. */
78
+ scopeResolver: typeof SCOPE_RESOLVER_VERSION;
79
+ scopeFiles: number;
80
+ scopeLines: number;
81
+ repoFiles: number;
82
+ repoLines: number;
83
+ importFanIn: number;
84
+ proposalWords: number;
85
+ taskWords: number;
86
+ deltaRequirements: number;
87
+ deltaScenarios: number;
88
+ changedFiles?: number;
89
+ changedLines?: number;
90
+ scopeHashes?: Record<string, {
91
+ before: string | null;
92
+ after: string | null;
93
+ }>;
94
+ }
11
95
  export interface DoneEventData {
12
96
  readonly task: string;
13
97
  }
98
+ export interface DoneManualEventData {
99
+ readonly task: string;
100
+ readonly reason: string;
101
+ }
14
102
  export interface DeadEventData {
15
103
  readonly task: string;
16
104
  readonly reason: string;
17
105
  }
18
- export interface HarnessEvent {
19
- type: HarnessEventType;
20
- timestamp: string;
21
- data?: Record<string, unknown>;
106
+ /** Payload of a `regressed` event recording a scope or verification regression. */
107
+ export interface RegressedEventData {
108
+ task?: string;
109
+ exitCode?: number;
110
+ duration?: number;
111
+ command?: string;
112
+ differingPaths?: string[];
113
+ /** Paths a verify named that did not exist; set on `verify_path_missing` regressions. */
114
+ missingPaths?: string[];
115
+ reason?: string;
116
+ /** Structured per-path attribution detected by the scope recertification audit. */
117
+ attribution?: ScopePathAttribution[];
118
+ recordedHash?: string;
119
+ currentHash?: string;
120
+ /** Recorded resolver version (null when legacy or malformed) and current version. */
121
+ recordedResolver?: number | null;
122
+ currentResolver?: number;
123
+ output?: string;
124
+ timedOut?: boolean;
125
+ verificationPassed?: boolean;
126
+ }
127
+ /**
128
+ * Payload of a `retry` event recording an explicit retry transition. `attempt`
129
+ * is the following execution attempt, so the next `started` event for the
130
+ * target carries the same number.
131
+ */
132
+ export interface RetryEventData {
133
+ readonly target: string;
134
+ readonly reason: string;
135
+ readonly attempt: number;
136
+ /** True only when the watcher, rather than a human, requested the retry. */
137
+ readonly automatic?: boolean;
138
+ }
139
+ /**
140
+ * Payload of a `stuck` event: the watcher observed the same failure twice and
141
+ * stopped retrying the task automatically.
142
+ */
143
+ export interface StuckEventData {
144
+ readonly task: string;
145
+ readonly fingerprint: string;
146
+ }
147
+ /**
148
+ * Payload of a `harness_retry` event translated from a harness's own automatic
149
+ * retry records (Pi's `auto_retry_start` and `auto_retry_end`).
150
+ */
151
+ export interface HarnessRetryEventData {
152
+ readonly phase: 'start' | 'end';
153
+ readonly attempt: number;
154
+ readonly maxAttempts?: number;
155
+ readonly delayMs?: number;
156
+ readonly success?: boolean;
157
+ readonly error?: string;
158
+ }
159
+ /**
160
+ * Payload of a `recertification` event recording a human retry of an active
161
+ * scope regression. `passed` refreshes the trusted done record without an agent
162
+ * or execution attempt; `requeued` retains both markers and carries the next
163
+ * attempt and failed output so a restarted watcher can rebuild the executor
164
+ * context from append-only state alone.
165
+ */
166
+ export interface RecertificationEventData {
167
+ readonly task: string;
168
+ readonly outcome: 'passed' | 'requeued';
169
+ readonly differingPaths: string[];
170
+ readonly attribution: ScopePathAttribution[];
171
+ readonly command: string;
172
+ readonly exitCode: number;
173
+ readonly output: string;
174
+ readonly timedOut: boolean;
175
+ /** Recorded hash before the change, or the original trusted hash. */
176
+ readonly recordedHash: string;
177
+ readonly currentHash: string;
178
+ /** Next execution attempt; present only for a requeue. */
179
+ readonly attempt?: number;
180
+ /** Failure reason carried to the next executor; present only for a requeue. */
181
+ readonly reason?: string;
182
+ }
183
+ /**
184
+ * Payload of a `rejected` event recording a change moved into rejected history.
185
+ * The event's top-level timestamp is the authoritative rejection time; the data
186
+ * carries the same non-empty reason persisted to `.run/rejected.md`.
187
+ */
188
+ export interface RejectedEventData {
189
+ readonly reason: string;
190
+ }
191
+ /** Event type to payload mapping for every lifecycle and observed event. */
192
+ export interface OsqEventData {
193
+ started: StartedEventPayload;
194
+ tokens: TokensEventData;
195
+ tool: ToolEventData;
196
+ text: TextEventData;
197
+ file_changed: FileChangedEventData;
198
+ verify_ran: VerifyRanEventData;
199
+ result_written: ResultWrittenEventData;
200
+ exited: ExitedEventData;
201
+ measures: MeasuresEventData;
202
+ done: DoneEventData;
203
+ done_manual: DoneManualEventData;
204
+ dead: DeadEventData;
205
+ regressed: RegressedEventData;
206
+ retry: RetryEventData;
207
+ stuck: StuckEventData;
208
+ harness_retry: HarnessRetryEventData;
209
+ recertification: RecertificationEventData;
210
+ rejected: RejectedEventData;
211
+ }
212
+ /**
213
+ * Typed discriminated union over `type` with per-event payloads. Every event
214
+ * written to `.run/events/<n>.jsonl` must conform to one of these members.
215
+ */
216
+ export type OsqEvent = {
217
+ [K in HarnessEventType]: {
218
+ type: K;
219
+ timestamp: string;
220
+ data: OsqEventData[K];
221
+ };
222
+ }[HarnessEventType];
223
+ /** Backwards-compatible alias for {@link OsqEvent}. */
224
+ export type HarnessEvent = OsqEvent;
225
+ /** Optional attribution an adapter can add when the child process exists. */
226
+ export interface SpawnDetails {
227
+ readonly harnessVersion?: string;
22
228
  }
23
229
  export interface SpawnTaskOptions {
24
230
  projectRoot: string;
@@ -33,7 +239,14 @@ export interface SpawnTaskOptions {
33
239
  timeoutSeconds?: number;
34
240
  config?: OsqConfig;
35
241
  logger?: Logger;
36
- onSpawn?: (pid: number) => Promise<void> | void;
242
+ onSpawn?: (pid: number, details?: SpawnDetails) => Promise<void> | void;
243
+ capabilityRules?: string[];
244
+ /** Target-wide execution attempt; initial execution is 1, post-retry is 2+. */
245
+ attempt?: number;
246
+ /** Failure reason carried from the preceding retry transition, when any. */
247
+ priorFailureReason?: string;
248
+ /** Failed verification output carried from a requeued recertification, when any. */
249
+ priorFailureOutput?: string;
37
250
  }
38
251
  export interface SpawnResult {
39
252
  exitCode: number;
@@ -43,11 +256,77 @@ export interface SpawnResult {
43
256
  pid?: number;
44
257
  elapsedMs?: number;
45
258
  }
259
+ export interface InteractiveSessionOptions {
260
+ prompt: string;
261
+ cwd: string;
262
+ model?: string;
263
+ agent?: string;
264
+ }
265
+ /**
266
+ * Observed-only usage for one interactive planning session. Every field is
267
+ * independently nullable: missing artifacts, malformed data, ambiguous matches,
268
+ * or absent harness support yield `null` rather than an estimate.
269
+ */
270
+ export interface InteractiveUsage {
271
+ readonly inputTokens: number | null;
272
+ readonly outputTokens: number | null;
273
+ readonly cachedTokens: number | null;
274
+ readonly reasoningTokens: number | null;
275
+ readonly cost: number | null;
276
+ }
277
+ /** Explicit all-null value for harnesses without a confirmed usage artifact. */
278
+ export declare const NULL_INTERACTIVE_USAGE: InteractiveUsage;
279
+ export interface ReadInteractiveUsageOptions {
280
+ readonly cwd: string;
281
+ readonly startedAt: string;
282
+ readonly endedAt: string;
283
+ }
46
284
  export interface HarnessAdapter {
47
285
  readonly name: string;
48
286
  setup(projectRoot: string, config: OsqConfig): Promise<void>;
49
287
  spawn(options: SpawnTaskOptions): Promise<SpawnResult>;
288
+ spawnInteractive?(options: InteractiveSessionOptions): Promise<number>;
289
+ /**
290
+ * Optional post-session usage observation. Receives the project working
291
+ * directory and the observed session interval and never changes the planner
292
+ * process exit result.
293
+ */
294
+ readInteractiveUsage?(options: ReadInteractiveUsageOptions): Promise<InteractiveUsage>;
50
295
  preflight?(projectRoot: string, config: OsqConfig): Promise<void>;
51
296
  }
297
+ /**
298
+ * Extracts capability-specific rules from the delta specs a change writes under
299
+ * `specs/<capability>/spec.md`. Each rule is rendered as
300
+ * `<capability>: <requirement title> — <requirement statement>`. Capabilities
301
+ * are visited in sorted order and requirements keep document order, so the
302
+ * resulting prompt is deterministic. Returns an empty array when the change
303
+ * folder has no delta specs.
304
+ */
305
+ export declare function extractCapabilityRules(specFolderPath: string): string[];
306
+ /**
307
+ * Resolves the capability rules for a task. An explicit `capabilityRules`
308
+ * option always wins, including an explicit empty array; when the option is
309
+ * absent the change folder's delta specs are parsed.
310
+ */
311
+ export declare function resolveCapabilityRules(options: SpawnTaskOptions): string[];
312
+ /**
313
+ * Shared `Rules:` sub-section listing capability-specific requirements. Returns
314
+ * no lines when there are no rules so a prompt never carries an empty header.
315
+ */
316
+ export declare function capabilityRuleLines(rules: readonly string[]): string[];
317
+ export interface PriorContext {
318
+ readonly attempt?: number;
319
+ readonly reason?: string;
320
+ /** Failed verification output to bound and render inside the prior context. */
321
+ readonly output?: string;
322
+ readonly resultPath?: string;
323
+ }
324
+ /**
325
+ * Shared prior-context block for every textual executor prompt. It is rendered
326
+ * when a retry or requeued recertification supplied an attempt, failure reason,
327
+ * or failed output, or when a prior result file still exists, so a fresh process
328
+ * reconstructs why it is running again.
329
+ */
330
+ export declare function priorContextLines(context: PriorContext): string[];
52
331
  export declare function appendHarnessEvent(specFolderPath: string, taskNumber: string, event: HarnessEvent): Promise<void>;
53
332
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/harness/types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,QAAQ,GACR,MAAM,GACN,MAAM,GACN,cAAc,GACd,YAAY,GACZ,gBAAgB,GAChB,QAAQ,GACR,MAAM,GACN,MAAM,CAAC;AAEX,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACjD;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,KAAK,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACvD,SAAS,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnE;AAED,wBAAsB,kBAAkB,CACtC,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CAOf"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/harness/types.ts"],"names":[],"mappings":"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"}