@smthrs/std 0.0.0-stage → 1.0.0-rc.12

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 (582) hide show
  1. package/CHANGELOG.md +148 -0
  2. package/LICENSE +21 -0
  3. package/README.md +156 -2
  4. package/dist/cjs/ApplyPatch.d.ts +174 -0
  5. package/dist/cjs/ApplyPatch.d.ts.map +1 -0
  6. package/dist/cjs/ApplyPatch.js +309 -0
  7. package/dist/cjs/ApplyPatch.js.map +7 -0
  8. package/dist/cjs/Bash.d.ts +390 -0
  9. package/dist/cjs/Bash.d.ts.map +1 -0
  10. package/dist/cjs/Bash.js +333 -0
  11. package/dist/cjs/Bash.js.map +7 -0
  12. package/dist/cjs/Checkpoints.d.ts +322 -0
  13. package/dist/cjs/Checkpoints.d.ts.map +1 -0
  14. package/dist/cjs/Checkpoints.js +233 -0
  15. package/dist/cjs/Checkpoints.js.map +7 -0
  16. package/dist/cjs/Container.d.ts +132 -0
  17. package/dist/cjs/Container.d.ts.map +1 -0
  18. package/dist/cjs/Container.js +113 -0
  19. package/dist/cjs/Container.js.map +7 -0
  20. package/dist/cjs/Edit.d.ts +203 -0
  21. package/dist/cjs/Edit.d.ts.map +1 -0
  22. package/dist/cjs/Edit.js +258 -0
  23. package/dist/cjs/Edit.js.map +7 -0
  24. package/dist/cjs/ExaWebSearch.d.ts +22 -0
  25. package/dist/cjs/ExaWebSearch.d.ts.map +1 -0
  26. package/dist/cjs/ExaWebSearch.js +138 -0
  27. package/dist/cjs/ExaWebSearch.js.map +7 -0
  28. package/dist/cjs/Explore.d.ts +328 -0
  29. package/dist/cjs/Explore.d.ts.map +1 -0
  30. package/dist/cjs/Explore.js +90 -0
  31. package/dist/cjs/Explore.js.map +7 -0
  32. package/dist/cjs/Fetch.d.ts +130 -0
  33. package/dist/cjs/Fetch.d.ts.map +1 -0
  34. package/dist/cjs/Fetch.js +64 -0
  35. package/dist/cjs/Fetch.js.map +7 -0
  36. package/dist/cjs/Glob.d.ts +204 -0
  37. package/dist/cjs/Glob.d.ts.map +1 -0
  38. package/dist/cjs/Glob.js +94 -0
  39. package/dist/cjs/Glob.js.map +7 -0
  40. package/dist/cjs/Grep.d.ts +347 -0
  41. package/dist/cjs/Grep.d.ts.map +1 -0
  42. package/dist/cjs/Grep.js +181 -0
  43. package/dist/cjs/Grep.js.map +7 -0
  44. package/dist/cjs/HttpPost.d.ts +130 -0
  45. package/dist/cjs/HttpPost.d.ts.map +1 -0
  46. package/dist/cjs/HttpPost.js +72 -0
  47. package/dist/cjs/HttpPost.js.map +7 -0
  48. package/dist/cjs/LanguageServer.d.ts +90 -0
  49. package/dist/cjs/LanguageServer.d.ts.map +1 -0
  50. package/dist/cjs/LanguageServer.js +60 -0
  51. package/dist/cjs/LanguageServer.js.map +7 -0
  52. package/dist/cjs/Ls.d.ts +164 -0
  53. package/dist/cjs/Ls.d.ts.map +1 -0
  54. package/dist/cjs/Ls.js +136 -0
  55. package/dist/cjs/Ls.js.map +7 -0
  56. package/dist/cjs/Lsp.d.ts +125 -0
  57. package/dist/cjs/Lsp.d.ts.map +1 -0
  58. package/dist/cjs/Lsp.js +137 -0
  59. package/dist/cjs/Lsp.js.map +7 -0
  60. package/dist/cjs/Manifest.d.ts +918 -0
  61. package/dist/cjs/Manifest.d.ts.map +1 -0
  62. package/dist/cjs/Manifest.js +144 -0
  63. package/dist/cjs/Manifest.js.map +7 -0
  64. package/dist/cjs/NativeSearch.d.ts +38 -0
  65. package/dist/cjs/NativeSearch.d.ts.map +1 -0
  66. package/dist/cjs/NativeSearch.js +326 -0
  67. package/dist/cjs/NativeSearch.js.map +7 -0
  68. package/dist/cjs/NodeLanguageServer.d.ts +128 -0
  69. package/dist/cjs/NodeLanguageServer.d.ts.map +1 -0
  70. package/dist/cjs/NodeLanguageServer.js +796 -0
  71. package/dist/cjs/NodeLanguageServer.js.map +7 -0
  72. package/dist/cjs/PortableSearch.d.ts +36 -0
  73. package/dist/cjs/PortableSearch.d.ts.map +1 -0
  74. package/dist/cjs/PortableSearch.js +240 -0
  75. package/dist/cjs/PortableSearch.js.map +7 -0
  76. package/dist/cjs/Probe.d.ts +193 -0
  77. package/dist/cjs/Probe.d.ts.map +1 -0
  78. package/dist/cjs/Probe.js +134 -0
  79. package/dist/cjs/Probe.js.map +7 -0
  80. package/dist/cjs/Read.d.ts +189 -0
  81. package/dist/cjs/Read.d.ts.map +1 -0
  82. package/dist/cjs/Read.js +223 -0
  83. package/dist/cjs/Read.js.map +7 -0
  84. package/dist/cjs/Relocate.d.ts +73 -0
  85. package/dist/cjs/Relocate.d.ts.map +1 -0
  86. package/dist/cjs/Relocate.js +72 -0
  87. package/dist/cjs/Relocate.js.map +7 -0
  88. package/dist/cjs/RemoteSearch.d.ts +54 -0
  89. package/dist/cjs/RemoteSearch.d.ts.map +1 -0
  90. package/dist/cjs/RemoteSearch.js +134 -0
  91. package/dist/cjs/RemoteSearch.js.map +7 -0
  92. package/dist/cjs/Search.d.ts +163 -0
  93. package/dist/cjs/Search.d.ts.map +1 -0
  94. package/dist/cjs/Search.js +51 -0
  95. package/dist/cjs/Search.js.map +7 -0
  96. package/dist/cjs/SearchConformance.d.ts +115 -0
  97. package/dist/cjs/SearchConformance.d.ts.map +1 -0
  98. package/dist/cjs/SearchConformance.js +172 -0
  99. package/dist/cjs/SearchConformance.js.map +7 -0
  100. package/dist/cjs/SearchContract.d.ts +114 -0
  101. package/dist/cjs/SearchContract.d.ts.map +1 -0
  102. package/dist/cjs/SearchContract.js +339 -0
  103. package/dist/cjs/SearchContract.js.map +7 -0
  104. package/dist/cjs/ShellCommand.d.ts +164 -0
  105. package/dist/cjs/ShellCommand.d.ts.map +1 -0
  106. package/dist/cjs/ShellCommand.js +102 -0
  107. package/dist/cjs/ShellCommand.js.map +7 -0
  108. package/dist/cjs/StdError.d.ts +55 -0
  109. package/dist/cjs/StdError.d.ts.map +1 -0
  110. package/dist/cjs/StdError.js +74 -0
  111. package/dist/cjs/StdError.js.map +7 -0
  112. package/dist/cjs/TestRun.d.ts +311 -0
  113. package/dist/cjs/TestRun.d.ts.map +1 -0
  114. package/dist/cjs/TestRun.js +228 -0
  115. package/dist/cjs/TestRun.js.map +7 -0
  116. package/dist/cjs/TestRunner.d.ts +102 -0
  117. package/dist/cjs/TestRunner.d.ts.map +1 -0
  118. package/dist/cjs/TestRunner.js +54 -0
  119. package/dist/cjs/TestRunner.js.map +7 -0
  120. package/dist/cjs/TreeFingerprint.d.ts +140 -0
  121. package/dist/cjs/TreeFingerprint.d.ts.map +1 -0
  122. package/dist/cjs/TreeFingerprint.js +87 -0
  123. package/dist/cjs/TreeFingerprint.js.map +7 -0
  124. package/dist/cjs/UpdatePlan.d.ts +152 -0
  125. package/dist/cjs/UpdatePlan.d.ts.map +1 -0
  126. package/dist/cjs/UpdatePlan.js +87 -0
  127. package/dist/cjs/UpdatePlan.js.map +7 -0
  128. package/dist/cjs/WebFetch.d.ts +134 -0
  129. package/dist/cjs/WebFetch.d.ts.map +1 -0
  130. package/dist/cjs/WebFetch.js +140 -0
  131. package/dist/cjs/WebFetch.js.map +7 -0
  132. package/dist/cjs/WebSearch.d.ts +181 -0
  133. package/dist/cjs/WebSearch.d.ts.map +1 -0
  134. package/dist/cjs/WebSearch.js +86 -0
  135. package/dist/cjs/WebSearch.js.map +7 -0
  136. package/dist/cjs/Write.d.ts +147 -0
  137. package/dist/cjs/Write.d.ts.map +1 -0
  138. package/dist/cjs/Write.js +122 -0
  139. package/dist/cjs/Write.js.map +7 -0
  140. package/dist/cjs/index.d.ts +129 -0
  141. package/dist/cjs/index.d.ts.map +1 -0
  142. package/dist/cjs/index.js +101 -0
  143. package/dist/cjs/index.js.map +7 -0
  144. package/dist/cjs/internal/ApplyPatch.d.ts +145 -0
  145. package/dist/cjs/internal/ApplyPatch.d.ts.map +1 -0
  146. package/dist/cjs/internal/ApplyPatch.js +462 -0
  147. package/dist/cjs/internal/ApplyPatch.js.map +7 -0
  148. package/dist/cjs/internal/CodexText.d.ts +73 -0
  149. package/dist/cjs/internal/CodexText.d.ts.map +1 -0
  150. package/dist/cjs/internal/CodexText.js +108 -0
  151. package/dist/cjs/internal/CodexText.js.map +7 -0
  152. package/dist/cjs/internal/Declaration.d.ts +49 -0
  153. package/dist/cjs/internal/Declaration.d.ts.map +1 -0
  154. package/dist/cjs/internal/Declaration.js +46 -0
  155. package/dist/cjs/internal/Declaration.js.map +7 -0
  156. package/dist/cjs/internal/Diagnostics.d.ts +77 -0
  157. package/dist/cjs/internal/Diagnostics.d.ts.map +1 -0
  158. package/dist/cjs/internal/Diagnostics.js +89 -0
  159. package/dist/cjs/internal/Diagnostics.js.map +7 -0
  160. package/dist/cjs/internal/EnvelopePrecheck.d.ts +69 -0
  161. package/dist/cjs/internal/EnvelopePrecheck.d.ts.map +1 -0
  162. package/dist/cjs/internal/EnvelopePrecheck.js +323 -0
  163. package/dist/cjs/internal/EnvelopePrecheck.js.map +7 -0
  164. package/dist/cjs/internal/Exec.d.ts +151 -0
  165. package/dist/cjs/internal/Exec.d.ts.map +1 -0
  166. package/dist/cjs/internal/Exec.js +207 -0
  167. package/dist/cjs/internal/Exec.js.map +7 -0
  168. package/dist/cjs/internal/FileMutation.d.ts +109 -0
  169. package/dist/cjs/internal/FileMutation.d.ts.map +1 -0
  170. package/dist/cjs/internal/FileMutation.js +116 -0
  171. package/dist/cjs/internal/FileMutation.js.map +7 -0
  172. package/dist/cjs/internal/FsFailure.d.ts +38 -0
  173. package/dist/cjs/internal/FsFailure.d.ts.map +1 -0
  174. package/dist/cjs/internal/FsFailure.js +40 -0
  175. package/dist/cjs/internal/FsFailure.js.map +7 -0
  176. package/dist/cjs/internal/GitWorktree.d.ts +108 -0
  177. package/dist/cjs/internal/GitWorktree.d.ts.map +1 -0
  178. package/dist/cjs/internal/GitWorktree.js +276 -0
  179. package/dist/cjs/internal/GitWorktree.js.map +7 -0
  180. package/dist/cjs/internal/Grouping.d.ts +51 -0
  181. package/dist/cjs/internal/Grouping.d.ts.map +1 -0
  182. package/dist/cjs/internal/Grouping.js +83 -0
  183. package/dist/cjs/internal/Grouping.js.map +7 -0
  184. package/dist/cjs/internal/Html.d.ts +20 -0
  185. package/dist/cjs/internal/Html.d.ts.map +1 -0
  186. package/dist/cjs/internal/Html.js +81 -0
  187. package/dist/cjs/internal/Html.js.map +7 -0
  188. package/dist/cjs/internal/Http.d.ts +95 -0
  189. package/dist/cjs/internal/Http.d.ts.map +1 -0
  190. package/dist/cjs/internal/Http.js +153 -0
  191. package/dist/cjs/internal/Http.js.map +7 -0
  192. package/dist/cjs/internal/HttpNetwork.d.ts +27 -0
  193. package/dist/cjs/internal/HttpNetwork.d.ts.map +1 -0
  194. package/dist/cjs/internal/HttpNetwork.js +146 -0
  195. package/dist/cjs/internal/HttpNetwork.js.map +7 -0
  196. package/dist/cjs/internal/Ignore.d.ts +37 -0
  197. package/dist/cjs/internal/Ignore.d.ts.map +1 -0
  198. package/dist/cjs/internal/Ignore.js +100 -0
  199. package/dist/cjs/internal/Ignore.js.map +7 -0
  200. package/dist/cjs/internal/LinearRegex.d.ts +19 -0
  201. package/dist/cjs/internal/LinearRegex.d.ts.map +1 -0
  202. package/dist/cjs/internal/LinearRegex.js +166 -0
  203. package/dist/cjs/internal/LinearRegex.js.map +7 -0
  204. package/dist/cjs/internal/Match.d.ts +85 -0
  205. package/dist/cjs/internal/Match.d.ts.map +1 -0
  206. package/dist/cjs/internal/Match.js +99 -0
  207. package/dist/cjs/internal/Match.js.map +7 -0
  208. package/dist/cjs/internal/Paths.d.ts +23 -0
  209. package/dist/cjs/internal/Paths.d.ts.map +1 -0
  210. package/dist/cjs/internal/Paths.js +52 -0
  211. package/dist/cjs/internal/Paths.js.map +7 -0
  212. package/dist/cjs/internal/Preserve.d.ts +25 -0
  213. package/dist/cjs/internal/Preserve.d.ts.map +1 -0
  214. package/dist/cjs/internal/Preserve.js +88 -0
  215. package/dist/cjs/internal/Preserve.js.map +7 -0
  216. package/dist/cjs/internal/Prune.d.ts +35 -0
  217. package/dist/cjs/internal/Prune.d.ts.map +1 -0
  218. package/dist/cjs/internal/Prune.js +54 -0
  219. package/dist/cjs/internal/Prune.js.map +7 -0
  220. package/dist/cjs/internal/RemoteTree.d.ts +60 -0
  221. package/dist/cjs/internal/RemoteTree.d.ts.map +1 -0
  222. package/dist/cjs/internal/RemoteTree.js +123 -0
  223. package/dist/cjs/internal/RemoteTree.js.map +7 -0
  224. package/dist/cjs/internal/SearchContract.d.ts +63 -0
  225. package/dist/cjs/internal/SearchContract.d.ts.map +1 -0
  226. package/dist/cjs/internal/SearchContract.js +46 -0
  227. package/dist/cjs/internal/SearchContract.js.map +7 -0
  228. package/dist/cjs/internal/Symbols.d.ts +39 -0
  229. package/dist/cjs/internal/Symbols.d.ts.map +1 -0
  230. package/dist/cjs/internal/Symbols.js +59 -0
  231. package/dist/cjs/internal/Symbols.js.map +7 -0
  232. package/dist/cjs/internal/Tar.d.ts +23 -0
  233. package/dist/cjs/internal/Tar.d.ts.map +1 -0
  234. package/dist/cjs/internal/Tar.js +86 -0
  235. package/dist/cjs/internal/Tar.js.map +7 -0
  236. package/dist/cjs/internal/TestReport.d.ts +52 -0
  237. package/dist/cjs/internal/TestReport.d.ts.map +1 -0
  238. package/dist/cjs/internal/TestReport.js +131 -0
  239. package/dist/cjs/internal/TestReport.js.map +7 -0
  240. package/dist/cjs/internal/Text.d.ts +125 -0
  241. package/dist/cjs/internal/Text.d.ts.map +1 -0
  242. package/dist/cjs/internal/Text.js +85 -0
  243. package/dist/cjs/internal/Text.js.map +7 -0
  244. package/dist/cjs/internal/Url.d.ts +13 -0
  245. package/dist/cjs/internal/Url.d.ts.map +1 -0
  246. package/dist/cjs/internal/Url.js +35 -0
  247. package/dist/cjs/internal/Url.js.map +7 -0
  248. package/dist/cjs/internal/Walk.d.ts +72 -0
  249. package/dist/cjs/internal/Walk.d.ts.map +1 -0
  250. package/dist/cjs/internal/Walk.js +108 -0
  251. package/dist/cjs/internal/Walk.js.map +7 -0
  252. package/dist/cjs/package.json +1 -0
  253. package/dist/esm/ApplyPatch.d.ts +174 -0
  254. package/dist/esm/ApplyPatch.d.ts.map +1 -0
  255. package/dist/esm/ApplyPatch.js +346 -0
  256. package/dist/esm/ApplyPatch.js.map +1 -0
  257. package/dist/esm/Bash.d.ts +390 -0
  258. package/dist/esm/Bash.d.ts.map +1 -0
  259. package/dist/esm/Bash.js +514 -0
  260. package/dist/esm/Bash.js.map +1 -0
  261. package/dist/esm/Checkpoints.d.ts +322 -0
  262. package/dist/esm/Checkpoints.d.ts.map +1 -0
  263. package/dist/esm/Checkpoints.js +396 -0
  264. package/dist/esm/Checkpoints.js.map +1 -0
  265. package/dist/esm/Container.d.ts +132 -0
  266. package/dist/esm/Container.d.ts.map +1 -0
  267. package/dist/esm/Container.js +151 -0
  268. package/dist/esm/Container.js.map +1 -0
  269. package/dist/esm/Edit.d.ts +203 -0
  270. package/dist/esm/Edit.d.ts.map +1 -0
  271. package/dist/esm/Edit.js +296 -0
  272. package/dist/esm/Edit.js.map +1 -0
  273. package/dist/esm/ExaWebSearch.d.ts +22 -0
  274. package/dist/esm/ExaWebSearch.d.ts.map +1 -0
  275. package/dist/esm/ExaWebSearch.js +107 -0
  276. package/dist/esm/ExaWebSearch.js.map +1 -0
  277. package/dist/esm/Explore.d.ts +328 -0
  278. package/dist/esm/Explore.d.ts.map +1 -0
  279. package/dist/esm/Explore.js +106 -0
  280. package/dist/esm/Explore.js.map +1 -0
  281. package/dist/esm/Fetch.d.ts +130 -0
  282. package/dist/esm/Fetch.d.ts.map +1 -0
  283. package/dist/esm/Fetch.js +91 -0
  284. package/dist/esm/Fetch.js.map +1 -0
  285. package/dist/esm/Glob.d.ts +204 -0
  286. package/dist/esm/Glob.d.ts.map +1 -0
  287. package/dist/esm/Glob.js +177 -0
  288. package/dist/esm/Glob.js.map +1 -0
  289. package/dist/esm/Grep.d.ts +347 -0
  290. package/dist/esm/Grep.d.ts.map +1 -0
  291. package/dist/esm/Grep.js +289 -0
  292. package/dist/esm/Grep.js.map +1 -0
  293. package/dist/esm/HttpPost.d.ts +130 -0
  294. package/dist/esm/HttpPost.d.ts.map +1 -0
  295. package/dist/esm/HttpPost.js +89 -0
  296. package/dist/esm/HttpPost.js.map +1 -0
  297. package/dist/esm/LanguageServer.d.ts +90 -0
  298. package/dist/esm/LanguageServer.d.ts.map +1 -0
  299. package/dist/esm/LanguageServer.js +57 -0
  300. package/dist/esm/LanguageServer.js.map +1 -0
  301. package/dist/esm/Ls.d.ts +164 -0
  302. package/dist/esm/Ls.d.ts.map +1 -0
  303. package/dist/esm/Ls.js +178 -0
  304. package/dist/esm/Ls.js.map +1 -0
  305. package/dist/esm/Lsp.d.ts +125 -0
  306. package/dist/esm/Lsp.d.ts.map +1 -0
  307. package/dist/esm/Lsp.js +165 -0
  308. package/dist/esm/Lsp.js.map +1 -0
  309. package/dist/esm/Manifest.d.ts +918 -0
  310. package/dist/esm/Manifest.d.ts.map +1 -0
  311. package/dist/esm/Manifest.js +153 -0
  312. package/dist/esm/Manifest.js.map +1 -0
  313. package/dist/esm/NativeSearch.d.ts +38 -0
  314. package/dist/esm/NativeSearch.d.ts.map +1 -0
  315. package/dist/esm/NativeSearch.js +378 -0
  316. package/dist/esm/NativeSearch.js.map +1 -0
  317. package/dist/esm/NodeLanguageServer.d.ts +128 -0
  318. package/dist/esm/NodeLanguageServer.d.ts.map +1 -0
  319. package/dist/esm/NodeLanguageServer.js +843 -0
  320. package/dist/esm/NodeLanguageServer.js.map +1 -0
  321. package/dist/esm/PortableSearch.d.ts +36 -0
  322. package/dist/esm/PortableSearch.d.ts.map +1 -0
  323. package/dist/esm/PortableSearch.js +256 -0
  324. package/dist/esm/PortableSearch.js.map +1 -0
  325. package/dist/esm/Probe.d.ts +193 -0
  326. package/dist/esm/Probe.d.ts.map +1 -0
  327. package/dist/esm/Probe.js +225 -0
  328. package/dist/esm/Probe.js.map +1 -0
  329. package/dist/esm/Read.d.ts +189 -0
  330. package/dist/esm/Read.d.ts.map +1 -0
  331. package/dist/esm/Read.js +300 -0
  332. package/dist/esm/Read.js.map +1 -0
  333. package/dist/esm/Relocate.d.ts +73 -0
  334. package/dist/esm/Relocate.d.ts.map +1 -0
  335. package/dist/esm/Relocate.js +153 -0
  336. package/dist/esm/Relocate.js.map +1 -0
  337. package/dist/esm/RemoteSearch.d.ts +54 -0
  338. package/dist/esm/RemoteSearch.d.ts.map +1 -0
  339. package/dist/esm/RemoteSearch.js +162 -0
  340. package/dist/esm/RemoteSearch.js.map +1 -0
  341. package/dist/esm/Search.d.ts +163 -0
  342. package/dist/esm/Search.d.ts.map +1 -0
  343. package/dist/esm/Search.js +47 -0
  344. package/dist/esm/Search.js.map +1 -0
  345. package/dist/esm/SearchConformance.d.ts +115 -0
  346. package/dist/esm/SearchConformance.d.ts.map +1 -0
  347. package/dist/esm/SearchConformance.js +193 -0
  348. package/dist/esm/SearchConformance.js.map +1 -0
  349. package/dist/esm/SearchContract.d.ts +114 -0
  350. package/dist/esm/SearchContract.d.ts.map +1 -0
  351. package/dist/esm/SearchContract.js +461 -0
  352. package/dist/esm/SearchContract.js.map +1 -0
  353. package/dist/esm/ShellCommand.d.ts +164 -0
  354. package/dist/esm/ShellCommand.d.ts.map +1 -0
  355. package/dist/esm/ShellCommand.js +159 -0
  356. package/dist/esm/ShellCommand.js.map +1 -0
  357. package/dist/esm/StdError.d.ts +55 -0
  358. package/dist/esm/StdError.d.ts.map +1 -0
  359. package/dist/esm/StdError.js +71 -0
  360. package/dist/esm/StdError.js.map +1 -0
  361. package/dist/esm/TestRun.d.ts +311 -0
  362. package/dist/esm/TestRun.d.ts.map +1 -0
  363. package/dist/esm/TestRun.js +316 -0
  364. package/dist/esm/TestRun.js.map +1 -0
  365. package/dist/esm/TestRunner.d.ts +102 -0
  366. package/dist/esm/TestRunner.d.ts.map +1 -0
  367. package/dist/esm/TestRunner.js +68 -0
  368. package/dist/esm/TestRunner.js.map +1 -0
  369. package/dist/esm/TreeFingerprint.d.ts +140 -0
  370. package/dist/esm/TreeFingerprint.d.ts.map +1 -0
  371. package/dist/esm/TreeFingerprint.js +170 -0
  372. package/dist/esm/TreeFingerprint.js.map +1 -0
  373. package/dist/esm/UpdatePlan.d.ts +152 -0
  374. package/dist/esm/UpdatePlan.d.ts.map +1 -0
  375. package/dist/esm/UpdatePlan.js +129 -0
  376. package/dist/esm/UpdatePlan.js.map +1 -0
  377. package/dist/esm/WebFetch.d.ts +134 -0
  378. package/dist/esm/WebFetch.d.ts.map +1 -0
  379. package/dist/esm/WebFetch.js +151 -0
  380. package/dist/esm/WebFetch.js.map +1 -0
  381. package/dist/esm/WebSearch.d.ts +181 -0
  382. package/dist/esm/WebSearch.d.ts.map +1 -0
  383. package/dist/esm/WebSearch.js +134 -0
  384. package/dist/esm/WebSearch.js.map +1 -0
  385. package/dist/esm/Write.d.ts +147 -0
  386. package/dist/esm/Write.d.ts.map +1 -0
  387. package/dist/esm/Write.js +144 -0
  388. package/dist/esm/Write.js.map +1 -0
  389. package/dist/esm/index.d.ts +129 -0
  390. package/dist/esm/index.d.ts.map +1 -0
  391. package/dist/esm/index.js +129 -0
  392. package/dist/esm/index.js.map +1 -0
  393. package/dist/esm/internal/ApplyPatch.d.ts +145 -0
  394. package/dist/esm/internal/ApplyPatch.d.ts.map +1 -0
  395. package/dist/esm/internal/ApplyPatch.js +489 -0
  396. package/dist/esm/internal/ApplyPatch.js.map +1 -0
  397. package/dist/esm/internal/CodexText.d.ts +73 -0
  398. package/dist/esm/internal/CodexText.d.ts.map +1 -0
  399. package/dist/esm/internal/CodexText.js +156 -0
  400. package/dist/esm/internal/CodexText.js.map +1 -0
  401. package/dist/esm/internal/Declaration.d.ts +49 -0
  402. package/dist/esm/internal/Declaration.d.ts.map +1 -0
  403. package/dist/esm/internal/Declaration.js +42 -0
  404. package/dist/esm/internal/Declaration.js.map +1 -0
  405. package/dist/esm/internal/Diagnostics.d.ts +77 -0
  406. package/dist/esm/internal/Diagnostics.d.ts.map +1 -0
  407. package/dist/esm/internal/Diagnostics.js +99 -0
  408. package/dist/esm/internal/Diagnostics.js.map +1 -0
  409. package/dist/esm/internal/EnvelopePrecheck.d.ts +69 -0
  410. package/dist/esm/internal/EnvelopePrecheck.d.ts.map +1 -0
  411. package/dist/esm/internal/EnvelopePrecheck.js +426 -0
  412. package/dist/esm/internal/EnvelopePrecheck.js.map +1 -0
  413. package/dist/esm/internal/Exec.d.ts +151 -0
  414. package/dist/esm/internal/Exec.d.ts.map +1 -0
  415. package/dist/esm/internal/Exec.js +285 -0
  416. package/dist/esm/internal/Exec.js.map +1 -0
  417. package/dist/esm/internal/FileMutation.d.ts +109 -0
  418. package/dist/esm/internal/FileMutation.d.ts.map +1 -0
  419. package/dist/esm/internal/FileMutation.js +123 -0
  420. package/dist/esm/internal/FileMutation.js.map +1 -0
  421. package/dist/esm/internal/FsFailure.d.ts +38 -0
  422. package/dist/esm/internal/FsFailure.d.ts.map +1 -0
  423. package/dist/esm/internal/FsFailure.js +39 -0
  424. package/dist/esm/internal/FsFailure.js.map +1 -0
  425. package/dist/esm/internal/GitWorktree.d.ts +108 -0
  426. package/dist/esm/internal/GitWorktree.d.ts.map +1 -0
  427. package/dist/esm/internal/GitWorktree.js +352 -0
  428. package/dist/esm/internal/GitWorktree.js.map +1 -0
  429. package/dist/esm/internal/Grouping.d.ts +51 -0
  430. package/dist/esm/internal/Grouping.d.ts.map +1 -0
  431. package/dist/esm/internal/Grouping.js +99 -0
  432. package/dist/esm/internal/Grouping.js.map +1 -0
  433. package/dist/esm/internal/Html.d.ts +20 -0
  434. package/dist/esm/internal/Html.d.ts.map +1 -0
  435. package/dist/esm/internal/Html.js +70 -0
  436. package/dist/esm/internal/Html.js.map +1 -0
  437. package/dist/esm/internal/Http.d.ts +95 -0
  438. package/dist/esm/internal/Http.d.ts.map +1 -0
  439. package/dist/esm/internal/Http.js +154 -0
  440. package/dist/esm/internal/Http.js.map +1 -0
  441. package/dist/esm/internal/HttpNetwork.d.ts +27 -0
  442. package/dist/esm/internal/HttpNetwork.d.ts.map +1 -0
  443. package/dist/esm/internal/HttpNetwork.js +114 -0
  444. package/dist/esm/internal/HttpNetwork.js.map +1 -0
  445. package/dist/esm/internal/Ignore.d.ts +37 -0
  446. package/dist/esm/internal/Ignore.d.ts.map +1 -0
  447. package/dist/esm/internal/Ignore.js +128 -0
  448. package/dist/esm/internal/Ignore.js.map +1 -0
  449. package/dist/esm/internal/LinearRegex.d.ts +19 -0
  450. package/dist/esm/internal/LinearRegex.d.ts.map +1 -0
  451. package/dist/esm/internal/LinearRegex.js +176 -0
  452. package/dist/esm/internal/LinearRegex.js.map +1 -0
  453. package/dist/esm/internal/Match.d.ts +85 -0
  454. package/dist/esm/internal/Match.d.ts.map +1 -0
  455. package/dist/esm/internal/Match.js +142 -0
  456. package/dist/esm/internal/Match.js.map +1 -0
  457. package/dist/esm/internal/Paths.d.ts +23 -0
  458. package/dist/esm/internal/Paths.d.ts.map +1 -0
  459. package/dist/esm/internal/Paths.js +40 -0
  460. package/dist/esm/internal/Paths.js.map +1 -0
  461. package/dist/esm/internal/Preserve.d.ts +25 -0
  462. package/dist/esm/internal/Preserve.d.ts.map +1 -0
  463. package/dist/esm/internal/Preserve.js +70 -0
  464. package/dist/esm/internal/Preserve.js.map +1 -0
  465. package/dist/esm/internal/Prune.d.ts +35 -0
  466. package/dist/esm/internal/Prune.d.ts.map +1 -0
  467. package/dist/esm/internal/Prune.js +60 -0
  468. package/dist/esm/internal/Prune.js.map +1 -0
  469. package/dist/esm/internal/RemoteTree.d.ts +60 -0
  470. package/dist/esm/internal/RemoteTree.d.ts.map +1 -0
  471. package/dist/esm/internal/RemoteTree.js +132 -0
  472. package/dist/esm/internal/RemoteTree.js.map +1 -0
  473. package/dist/esm/internal/SearchContract.d.ts +63 -0
  474. package/dist/esm/internal/SearchContract.d.ts.map +1 -0
  475. package/dist/esm/internal/SearchContract.js +66 -0
  476. package/dist/esm/internal/SearchContract.js.map +1 -0
  477. package/dist/esm/internal/Symbols.d.ts +39 -0
  478. package/dist/esm/internal/Symbols.d.ts.map +1 -0
  479. package/dist/esm/internal/Symbols.js +79 -0
  480. package/dist/esm/internal/Symbols.js.map +1 -0
  481. package/dist/esm/internal/Tar.d.ts +23 -0
  482. package/dist/esm/internal/Tar.d.ts.map +1 -0
  483. package/dist/esm/internal/Tar.js +97 -0
  484. package/dist/esm/internal/Tar.js.map +1 -0
  485. package/dist/esm/internal/TestReport.d.ts +52 -0
  486. package/dist/esm/internal/TestReport.d.ts.map +1 -0
  487. package/dist/esm/internal/TestReport.js +172 -0
  488. package/dist/esm/internal/TestReport.js.map +1 -0
  489. package/dist/esm/internal/Text.d.ts +125 -0
  490. package/dist/esm/internal/Text.d.ts.map +1 -0
  491. package/dist/esm/internal/Text.js +141 -0
  492. package/dist/esm/internal/Text.js.map +1 -0
  493. package/dist/esm/internal/Url.d.ts +13 -0
  494. package/dist/esm/internal/Url.d.ts.map +1 -0
  495. package/dist/esm/internal/Url.js +27 -0
  496. package/dist/esm/internal/Url.js.map +1 -0
  497. package/dist/esm/internal/Walk.d.ts +72 -0
  498. package/dist/esm/internal/Walk.d.ts.map +1 -0
  499. package/dist/esm/internal/Walk.js +126 -0
  500. package/dist/esm/internal/Walk.js.map +1 -0
  501. package/docs/README.md +119 -0
  502. package/docs/api.md +499 -0
  503. package/docs/concepts/effects-and-capabilities.md +138 -0
  504. package/docs/concepts/flows-and-handlers.md +115 -0
  505. package/docs/concepts/limits-and-disclosure.md +105 -0
  506. package/docs/concepts/search-contract.md +182 -0
  507. package/docs/guides/bind-the-standard-flows.md +116 -0
  508. package/docs/guides/implement-a-search-peer.md +133 -0
  509. package/docs/guides/pin-a-checkpoint.md +161 -0
  510. package/docs/guides/query-a-language-server.md +257 -0
  511. package/docs/guides/reach-the-network.md +141 -0
  512. package/docs/guides/read-and-edit-a-file.md +240 -0
  513. package/docs/guides/run-a-shell-command.md +236 -0
  514. package/docs/guides/run-the-test-suite.md +154 -0
  515. package/docs/guides/search-a-workspace.md +148 -0
  516. package/docs/installation.md +115 -0
  517. package/docs/quickstart.md +125 -0
  518. package/docs/reference/flows.md +556 -0
  519. package/docs/troubleshooting.md +347 -0
  520. package/package.json +449 -3
  521. package/src/ApplyPatch.ts +458 -0
  522. package/src/Bash.ts +619 -0
  523. package/src/Checkpoints.ts +589 -0
  524. package/src/Container.ts +212 -0
  525. package/src/Edit.ts +366 -0
  526. package/src/ExaWebSearch.ts +145 -0
  527. package/src/Explore.ts +139 -0
  528. package/src/Fetch.ts +117 -0
  529. package/src/Glob.ts +200 -0
  530. package/src/Grep.ts +320 -0
  531. package/src/HttpPost.ts +120 -0
  532. package/src/LanguageServer.ts +110 -0
  533. package/src/Ls.ts +228 -0
  534. package/src/Lsp.ts +184 -0
  535. package/src/Manifest.ts +162 -0
  536. package/src/NativeSearch.ts +457 -0
  537. package/src/NodeLanguageServer.ts +1148 -0
  538. package/src/PortableSearch.ts +284 -0
  539. package/src/Probe.ts +284 -0
  540. package/src/Read.ts +359 -0
  541. package/src/Relocate.ts +166 -0
  542. package/src/RemoteSearch.ts +199 -0
  543. package/src/Search.ts +185 -0
  544. package/src/SearchConformance.ts +288 -0
  545. package/src/SearchContract.ts +489 -0
  546. package/src/ShellCommand.ts +201 -0
  547. package/src/StdError.ts +80 -0
  548. package/src/TestRun.ts +401 -0
  549. package/src/TestRunner.ts +119 -0
  550. package/src/TreeFingerprint.ts +200 -0
  551. package/src/UpdatePlan.ts +171 -0
  552. package/src/WebFetch.ts +194 -0
  553. package/src/WebSearch.ts +165 -0
  554. package/src/Write.ts +195 -0
  555. package/src/index.ts +157 -0
  556. package/src/internal/ApplyPatch.ts +601 -0
  557. package/src/internal/CodexText.ts +182 -0
  558. package/src/internal/Declaration.ts +60 -0
  559. package/src/internal/Diagnostics.ts +134 -0
  560. package/src/internal/EnvelopePrecheck.ts +489 -0
  561. package/src/internal/Exec.ts +427 -0
  562. package/src/internal/FileMutation.ts +231 -0
  563. package/src/internal/FsFailure.ts +51 -0
  564. package/src/internal/GitWorktree.ts +491 -0
  565. package/src/internal/Grouping.ts +106 -0
  566. package/src/internal/Html.ts +87 -0
  567. package/src/internal/Http.ts +209 -0
  568. package/src/internal/HttpNetwork.ts +153 -0
  569. package/src/internal/Ignore.ts +135 -0
  570. package/src/internal/LinearRegex.ts +173 -0
  571. package/src/internal/Match.ts +172 -0
  572. package/src/internal/Paths.ts +42 -0
  573. package/src/internal/Preserve.ts +108 -0
  574. package/src/internal/Prune.ts +62 -0
  575. package/src/internal/RemoteTree.ts +159 -0
  576. package/src/internal/SearchContract.ts +77 -0
  577. package/src/internal/Symbols.ts +88 -0
  578. package/src/internal/Tar.ts +95 -0
  579. package/src/internal/TestReport.ts +194 -0
  580. package/src/internal/Text.ts +185 -0
  581. package/src/internal/Url.ts +23 -0
  582. package/src/internal/Walk.ts +176 -0
@@ -0,0 +1,311 @@
1
+ /**
2
+ * The `test` flow: run the declared suite, and answer with the two facts.
3
+ *
4
+ * Two things this returns that a shell command cannot. First, a *reading*:
5
+ * `{passed, failed}` parsed from the runner's own report, with the raw tail
6
+ * kept for whatever the parse could not carry — a suite's answer is a number
7
+ * and a list of names, not twenty kilobytes of stdout for a model to re-read.
8
+ *
9
+ * Second, `against: "base"`: the same selection also runs against the pristine
10
+ * base commit in a scratch checkout, and the two failure sets are differenced
11
+ * here. That is the whole of attribution, in one call. Without it, agents pay
12
+ * for it in frames — sphinx-8721 spent fourteen frames because a pre-existing
13
+ * failure was never baselined, sympy-13878 spent $0.90 on the same mistake, and
14
+ * django-24970 spent three frames. The rule the harness teaches ("before
15
+ * blaming your own edit, run the same command on the unmodified tree") is only
16
+ * cheap when the tool can do it.
17
+ *
18
+ * A third thing is answered on the way out: whether a non-zero exit is the
19
+ * tree's failure at all, or the command failing to resolve a name. Jev decides
20
+ * it through `Probe.classify`, so the flow needs an `Evaluator` and a host
21
+ * uses its configured subscription seat. A judge that does not answer fails the call with
22
+ * the code `Probe.unjudged` names, because a run nobody judged is not a run
23
+ * this flow can report on.
24
+ *
25
+ * @since 1.0.0
26
+ */
27
+ import type * as ChildProcessSpawner from "@smthrs/kernel/ChildProcessSpawner";
28
+ import type * as Evaluator from "@smthrs/model/Evaluator";
29
+ import * as Effect from "effect/Effect";
30
+ import * as Schema from "effect/Schema";
31
+ import * as StdError from "./StdError.ts";
32
+ import * as TestRunner from "./TestRunner.ts";
33
+ /**
34
+ * Registry name for the test flow.
35
+ *
36
+ * @category identifiers
37
+ * @since 1.0.0
38
+ */
39
+ export declare const name = "test";
40
+ /**
41
+ * Model-facing description of the test flow.
42
+ *
43
+ * @category descriptions
44
+ * @since 1.0.0
45
+ */
46
+ export declare const description = "Run this repository's declared test runner and get {passed, failed[ids]}, not raw output. against:'base' also runs it on the pristine base commit, so a pre-existing failure is named, not investigated.";
47
+ /**
48
+ * The parent directory baseline checkouts are written into, relative to the
49
+ * repository root, and therefore also relative to the runner's own directory.
50
+ *
51
+ * @category constants
52
+ * @since 1.0.0
53
+ */
54
+ export declare const scratchDirectory = ".flows-test-base";
55
+ /**
56
+ * Default wall-clock budget for one test run.
57
+ *
58
+ * @category constants
59
+ * @since 1.0.0
60
+ */
61
+ export declare const DEFAULT_TIMEOUT_MS = 600000;
62
+ /**
63
+ * Maximum bytes retained from each stream while a test run executes.
64
+ *
65
+ * @category constants
66
+ * @since 1.0.0
67
+ */
68
+ export declare const MAX_CAPTURE_BYTES = 8000000;
69
+ /**
70
+ * Input schema for the test flow.
71
+ *
72
+ * @category schemas
73
+ * @since 1.0.0
74
+ */
75
+ export declare const Input: Schema.Struct<{
76
+ readonly selection: Schema.optional<Schema.$Array<Schema.String>>;
77
+ readonly against: Schema.optional<Schema.Literals<readonly ["workspace", "base"]>>;
78
+ readonly timeoutMs: Schema.optional<Schema.Number>;
79
+ }>;
80
+ /**
81
+ * Decoded input accepted by the `test` flow.
82
+ *
83
+ * @category models
84
+ * @since 1.0.0
85
+ */
86
+ export type Input = typeof Input.Type;
87
+ /**
88
+ * One run's outcome.
89
+ *
90
+ * @category schemas
91
+ * @since 1.0.0
92
+ */
93
+ export declare const Outcome: Schema.Struct<{
94
+ readonly command: Schema.String;
95
+ readonly exitCode: Schema.Number;
96
+ readonly passed: Schema.Number;
97
+ readonly failed: Schema.$Array<Schema.String>;
98
+ readonly parsed: Schema.Boolean;
99
+ readonly tail: Schema.String;
100
+ readonly tailTruncated: Schema.Boolean;
101
+ readonly tailDroppedBytes: Schema.Number;
102
+ readonly invalidProbe: Schema.optional<Schema.Struct<{
103
+ readonly reason: Schema.Literals<readonly ["unknown-command", "unknown-test", "unknown-path", "unknown-module", "unknown-environment"]>;
104
+ readonly evidence: Schema.String;
105
+ readonly message: Schema.String;
106
+ }>>;
107
+ }>;
108
+ /**
109
+ * Output schema for the test flow.
110
+ *
111
+ * @category schemas
112
+ * @since 1.0.0
113
+ */
114
+ export declare const Output: Schema.Struct<{
115
+ readonly base: Schema.optional<Schema.Struct<{
116
+ readonly ref: Schema.String;
117
+ readonly commit: Schema.String;
118
+ readonly command: Schema.String;
119
+ readonly exitCode: Schema.Number;
120
+ readonly passed: Schema.Number;
121
+ readonly failed: Schema.$Array<Schema.String>;
122
+ readonly parsed: Schema.Boolean;
123
+ readonly tail: Schema.String;
124
+ readonly tailTruncated: Schema.Boolean;
125
+ readonly tailDroppedBytes: Schema.Number;
126
+ readonly invalidProbe: Schema.optional<Schema.Struct<{
127
+ readonly reason: Schema.Literals<readonly ["unknown-command", "unknown-test", "unknown-path", "unknown-module", "unknown-environment"]>;
128
+ readonly evidence: Schema.String;
129
+ readonly message: Schema.String;
130
+ }>>;
131
+ }>>;
132
+ readonly introduced: Schema.optional<Schema.$Array<Schema.String>>;
133
+ readonly preexisting: Schema.optional<Schema.$Array<Schema.String>>;
134
+ readonly fixed: Schema.optional<Schema.$Array<Schema.String>>;
135
+ readonly command: Schema.String;
136
+ readonly exitCode: Schema.Number;
137
+ readonly passed: Schema.Number;
138
+ readonly failed: Schema.$Array<Schema.String>;
139
+ readonly parsed: Schema.Boolean;
140
+ readonly tail: Schema.String;
141
+ readonly tailTruncated: Schema.Boolean;
142
+ readonly tailDroppedBytes: Schema.Number;
143
+ readonly invalidProbe: Schema.optional<Schema.Struct<{
144
+ readonly reason: Schema.Literals<readonly ["unknown-command", "unknown-test", "unknown-path", "unknown-module", "unknown-environment"]>;
145
+ readonly evidence: Schema.String;
146
+ readonly message: Schema.String;
147
+ }>>;
148
+ }>;
149
+ /**
150
+ * Decoded output returned by the `test` flow.
151
+ *
152
+ * @category models
153
+ * @since 1.0.0
154
+ */
155
+ export type Output = typeof Output.Type;
156
+ /**
157
+ * Static conservative effect envelope for the test flow.
158
+ *
159
+ * @category effects
160
+ * @since 1.0.0
161
+ */
162
+ export declare const effects: import("@smthrs/plan/Effects").Declaration;
163
+ /**
164
+ * Narrows the effect envelope for a decoded invocation.
165
+ *
166
+ * @category effects
167
+ * @since 1.0.0
168
+ */
169
+ export declare const effectsFor: (_input: typeof Input.Type) => import("@smthrs/plan/Effects").Declaration;
170
+ /**
171
+ * Capabilities required by the test flow.
172
+ *
173
+ * @category capabilities
174
+ * @since 1.0.0
175
+ */
176
+ export declare const capabilities: string[];
177
+ /**
178
+ * Declaration-only test flow.
179
+ *
180
+ * @category flows
181
+ * @since 1.0.0
182
+ */
183
+ export declare const flow: {
184
+ readonly name: "test";
185
+ readonly description: "Run this repository's declared test runner and get {passed, failed[ids]}, not raw output. against:'base' also runs it on the pristine base commit, so a pre-existing failure is named, not investigated.";
186
+ readonly input: Schema.Struct<{
187
+ readonly selection: Schema.optional<Schema.$Array<Schema.String>>;
188
+ readonly against: Schema.optional<Schema.Literals<readonly ["workspace", "base"]>>;
189
+ readonly timeoutMs: Schema.optional<Schema.Number>;
190
+ }>;
191
+ readonly output: Schema.Struct<{
192
+ readonly base: Schema.optional<Schema.Struct<{
193
+ readonly ref: Schema.String;
194
+ readonly commit: Schema.String;
195
+ readonly command: Schema.String;
196
+ readonly exitCode: Schema.Number;
197
+ readonly passed: Schema.Number;
198
+ readonly failed: Schema.$Array<Schema.String>;
199
+ readonly parsed: Schema.Boolean;
200
+ readonly tail: Schema.String;
201
+ readonly tailTruncated: Schema.Boolean;
202
+ readonly tailDroppedBytes: Schema.Number;
203
+ readonly invalidProbe: Schema.optional<Schema.Struct<{
204
+ readonly reason: Schema.Literals<readonly ["unknown-command", "unknown-test", "unknown-path", "unknown-module", "unknown-environment"]>;
205
+ readonly evidence: Schema.String;
206
+ readonly message: Schema.String;
207
+ }>>;
208
+ }>>;
209
+ readonly introduced: Schema.optional<Schema.$Array<Schema.String>>;
210
+ readonly preexisting: Schema.optional<Schema.$Array<Schema.String>>;
211
+ readonly fixed: Schema.optional<Schema.$Array<Schema.String>>;
212
+ readonly command: Schema.String;
213
+ readonly exitCode: Schema.Number;
214
+ readonly passed: Schema.Number;
215
+ readonly failed: Schema.$Array<Schema.String>;
216
+ readonly parsed: Schema.Boolean;
217
+ readonly tail: Schema.String;
218
+ readonly tailTruncated: Schema.Boolean;
219
+ readonly tailDroppedBytes: Schema.Number;
220
+ readonly invalidProbe: Schema.optional<Schema.Struct<{
221
+ readonly reason: Schema.Literals<readonly ["unknown-command", "unknown-test", "unknown-path", "unknown-module", "unknown-environment"]>;
222
+ readonly evidence: Schema.String;
223
+ readonly message: Schema.String;
224
+ }>>;
225
+ }>;
226
+ readonly capabilities: string[];
227
+ readonly effects: import("@smthrs/plan/Effects").Declaration;
228
+ };
229
+ /**
230
+ * What a call to this flow does, for a reader of a run.
231
+ *
232
+ * Display metadata only. `@smthrs/registry` `Descriptor.FlowActivity` is the
233
+ * governing vocabulary and `StandardFlows` binds this value onto the flow's
234
+ * descriptor, where the binding site checks it. `declarationDigest` excludes
235
+ * it, so declaring it cannot invalidate a call identity or a cached prompt.
236
+ *
237
+ * @category presentation
238
+ * @since 1.0.0-rc.0
239
+ */
240
+ export declare const activity: "tests";
241
+ /**
242
+ * How one recorded call to this flow reads: the verb for each settlement, the
243
+ * input field that is its subject, and the measured output fields a one-line
244
+ * summary may count.
245
+ *
246
+ * Display metadata only, governed by `@smthrs/registry`
247
+ * `Descriptor.CallPresentation` and checked where `StandardFlows` binds it.
248
+ *
249
+ * @category presentation
250
+ * @since 1.0.0-rc.0
251
+ */
252
+ export declare const presentation: {
253
+ readonly verb: {
254
+ readonly pending: "running";
255
+ readonly success: "ran";
256
+ readonly failure: "failed to run";
257
+ };
258
+ readonly subject: "selection";
259
+ readonly result: "tests";
260
+ };
261
+ /**
262
+ * Runs the declared suite, and on request the same suite on the pristine base.
263
+ *
264
+ * Baseline Git and both runners use the caller-provided process service.
265
+ * A host that cannot safely stage the base declares `baseline: false`, which
266
+ * refuses the request before running either suite or Git. Library hosts that
267
+ * support staging remove the detached checkout when the call ends.
268
+ *
269
+ * @category handlers
270
+ * @since 1.0.0
271
+ */
272
+ export declare const run: (input: {
273
+ readonly timeoutMs?: number | undefined;
274
+ readonly selection?: readonly string[] | undefined;
275
+ readonly against?: "base" | "workspace" | undefined;
276
+ }) => Effect.Effect<{
277
+ readonly tail: string;
278
+ readonly exitCode: number;
279
+ readonly command: string;
280
+ readonly failed: readonly string[];
281
+ readonly passed: number;
282
+ readonly parsed: boolean;
283
+ readonly tailTruncated: boolean;
284
+ readonly tailDroppedBytes: number;
285
+ readonly fixed?: readonly string[] | undefined;
286
+ readonly invalidProbe?: {
287
+ readonly reason: "unknown-command" | "unknown-test" | "unknown-path" | "unknown-module" | "unknown-environment";
288
+ readonly evidence: string;
289
+ readonly message: string;
290
+ } | undefined;
291
+ readonly base?: {
292
+ readonly tail: string;
293
+ readonly exitCode: number;
294
+ readonly command: string;
295
+ readonly failed: readonly string[];
296
+ readonly ref: string;
297
+ readonly commit: string;
298
+ readonly passed: number;
299
+ readonly parsed: boolean;
300
+ readonly tailTruncated: boolean;
301
+ readonly tailDroppedBytes: number;
302
+ readonly invalidProbe?: {
303
+ readonly reason: "unknown-command" | "unknown-test" | "unknown-path" | "unknown-module" | "unknown-environment";
304
+ readonly evidence: string;
305
+ readonly message: string;
306
+ } | undefined;
307
+ } | undefined;
308
+ readonly introduced?: readonly string[] | undefined;
309
+ readonly preexisting?: readonly string[] | undefined;
310
+ }, StdError.StdError, ChildProcessSpawner.ChildProcessSpawner | Evaluator.Evaluator | TestRunner.TestRunner>;
311
+ //# sourceMappingURL=TestRun.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestRun.d.ts","sourceRoot":"","sources":["../../src/TestRun.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,KAAK,mBAAmB,MAAM,oCAAoC,CAAA;AAC9E,OAAO,KAAK,KAAK,SAAS,MAAM,yBAAyB,CAAA;AACzD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AASvC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;;;;GAKG;AACH,eAAO,MAAM,IAAI,SAAS,CAAA;AAE1B;;;;;GAKG;AACH,eAAO,MAAM,WAAW,6MACoL,CAAA;AAE5M;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,qBAAwB,CAAA;AAErD;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,SAAU,CAAA;AAEzC;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,UAAY,CAAA;AAE1C;;;;;GAKG;AACH,eAAO,MAAM,KAAK;;;;EAShB,CAAA;AAEF;;;;;GAKG;AACH,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAErC;;;;;GAKG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;;;;;EAoBlB,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBjB,CAAA;AAEF;;;;;GAKG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,IAAI,CAAA;AAEvC;;;;;GAKG;AACH,eAAO,MAAM,OAAO,4CAA8E,CAAA;AAElG;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GAAI,QAAQ,OAAO,KAAK,CAAC,IAAI,+CAAY,CAAA;AAEhE;;;;;GAKG;AACH,eAAO,MAAM,YAAY,UAAkC,CAAA;AAE3D;;;;;GAKG;AACH,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAsF,CAAA;AAEvG;;;;;;;;;;GAUG;AACH,eAAO,MAAM,QAAQ,EAAG,OAAgB,CAAA;AAExC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY;;;;;;;;CAIf,CAAA;AAkGV;;;;;;;;;;GAUG;AACH,eAAO,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4GA6Dd,CAAA"}
@@ -0,0 +1,228 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name2 in all)
10
+ __defProp(target, name2, { get: all[name2], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var TestRun_exports = {};
30
+ __export(TestRun_exports, {
31
+ DEFAULT_TIMEOUT_MS: () => DEFAULT_TIMEOUT_MS,
32
+ Input: () => Input,
33
+ MAX_CAPTURE_BYTES: () => MAX_CAPTURE_BYTES,
34
+ Outcome: () => Outcome,
35
+ Output: () => Output,
36
+ activity: () => activity,
37
+ capabilities: () => capabilities,
38
+ description: () => description,
39
+ effects: () => effects,
40
+ effectsFor: () => effectsFor,
41
+ flow: () => flow,
42
+ name: () => name,
43
+ presentation: () => presentation,
44
+ run: () => run,
45
+ scratchDirectory: () => scratchDirectory
46
+ });
47
+ module.exports = __toCommonJS(TestRun_exports);
48
+ var Effect = __toESM(require("effect/Effect"), 1);
49
+ var Option = __toESM(require("effect/Option"), 1);
50
+ var Schema = __toESM(require("effect/Schema"), 1);
51
+ var Container = __toESM(require("./Container.js"), 1);
52
+ var import_Declaration = require("./internal/Declaration.js");
53
+ var Exec = __toESM(require("./internal/Exec.js"), 1);
54
+ var import_GitWorktree = require("./internal/GitWorktree.js");
55
+ var Prune = __toESM(require("./internal/Prune.js"), 1);
56
+ var TestReport = __toESM(require("./internal/TestReport.js"), 1);
57
+ var import_Text = require("./internal/Text.js");
58
+ var Probe = __toESM(require("./Probe.js"), 1);
59
+ var StdError = __toESM(require("./StdError.js"), 1);
60
+ var TestRunner = __toESM(require("./TestRunner.js"), 1);
61
+ const name = "test";
62
+ const description = "Run this repository's declared test runner and get {passed, failed[ids]}, not raw output. against:'base' also runs it on the pristine base commit, so a pre-existing failure is named, not investigated.";
63
+ const scratchDirectory = Prune.testBaseScratch;
64
+ const DEFAULT_TIMEOUT_MS = 6e5;
65
+ const MAX_CAPTURE_BYTES = 8e6;
66
+ const Input = Schema.Struct({
67
+ selection: Schema.optional(Schema.Array(Schema.String)).annotate({
68
+ description: "Test ids, paths or selectors passed to the runner as arguments; all tests when omitted"
69
+ }),
70
+ against: Schema.optional(Schema.Literals(["workspace", "base"])).annotate({
71
+ description: "workspace (default) runs the tree as it stands; base also runs the pristine base commit and reports which failures are new"
72
+ }),
73
+ timeoutMs: Schema.optional(Schema.Number).annotate({ description: "Wall-clock timeout in milliseconds" })
74
+ });
75
+ const Outcome = Schema.Struct({
76
+ command: Schema.String.annotate({
77
+ description: "The logical invocation that ran, without container transport arguments"
78
+ }),
79
+ exitCode: Schema.Number,
80
+ passed: Schema.Number.annotate({ description: "Tests reported passing; 0 when parsed is false" }),
81
+ failed: Schema.Array(Schema.String).annotate({ description: "Ids of the tests reported failing or erroring" }),
82
+ parsed: Schema.Boolean.annotate({
83
+ description: "Whether the runner's complete report could be read; when false, tail is all there is. Base attribution is omitted unless both reports are complete"
84
+ }),
85
+ tail: Schema.String.annotate({ description: "The end of the runner's combined output" }),
86
+ // `<field>Truncated` beside `<field>` is the wire convention
87
+ // `@smthrs/harness/TruncatedOutput` reads to refuse a later write of these
88
+ // exact bytes. A tail written over a file replaces it with its own end.
89
+ tailTruncated: Schema.Boolean.annotate({
90
+ description: "Whether the runner printed more than tail carries, leaving tail a fragment that must not be written"
91
+ }),
92
+ tailDroppedBytes: Schema.Number.annotate({ description: "UTF-8 bytes omitted from the start of tail" }),
93
+ invalidProbe: Schema.optional(Probe.InvalidProbe)
94
+ });
95
+ const Output = Schema.Struct({
96
+ ...Outcome.fields,
97
+ base: Schema.optional(Schema.Struct({
98
+ ...Outcome.fields,
99
+ ref: Schema.String.annotate({ description: "The ref the baseline tree came from" }),
100
+ commit: Schema.String.annotate({ description: "The commit the baseline tree came from" })
101
+ })),
102
+ introduced: Schema.optional(Schema.Array(Schema.String)).annotate({
103
+ description: "Failing here and not on the base tree: the failures this working tree is responsible for"
104
+ }),
105
+ preexisting: Schema.optional(Schema.Array(Schema.String)).annotate({
106
+ description: "Failing on both trees: not yours, and not worth investigating"
107
+ }),
108
+ fixed: Schema.optional(Schema.Array(Schema.String)).annotate({
109
+ description: "Failing on the base tree and passing here"
110
+ })
111
+ });
112
+ const effects = (0, import_Declaration.envelope)({ tier: "irreversible", mode: "expected", reads: [], writes: [] });
113
+ const effectsFor = (_input) => effects;
114
+ const capabilities = [(0, import_Declaration.capability)("proc:spawn", "*")];
115
+ const flow = { name, description, input: Input, output: Output, capabilities, effects };
116
+ const activity = "tests";
117
+ const presentation = {
118
+ verb: { pending: "running", success: "ran", failure: "failed to run" },
119
+ subject: "selection",
120
+ result: "tests"
121
+ };
122
+ const invocation = (runner, selection) => ({
123
+ file: "bash",
124
+ args: ["-c", `${runner.command} "$@"`, runner.command, ...selection]
125
+ });
126
+ const failed = (message, code = "command_failed") => new StdError.StdError({ code, message });
127
+ const execute = (runner, transport, options) => Effect.gen(function* () {
128
+ const plan = invocation(runner, options.selection);
129
+ const routed = runner.container === void 0 ? { ...plan, env: runner.env } : Option.isNone(transport) ? yield* Effect.fail(Container.unavailable(runner.container)) : yield* transport.value.exec({
130
+ container: runner.container,
131
+ file: plan.file,
132
+ args: plan.args,
133
+ ...options.cwd === void 0 ? {} : { cwd: options.cwd },
134
+ ...runner.env === void 0 ? {} : { env: runner.env },
135
+ stdin: false
136
+ });
137
+ const quoted = [plan.file, ...plan.args].join(" ");
138
+ const result = yield* Exec.exec(routed.file, {
139
+ args: [...routed.args],
140
+ ...options.cwd === void 0 || runner.container !== void 0 ? {} : { cwd: options.cwd },
141
+ ...routed.env === void 0 ? {} : { env: routed.env },
142
+ timeoutMs: options.timeoutMs,
143
+ maxCaptureBytes: MAX_CAPTURE_BYTES
144
+ }).pipe(
145
+ Effect.mapError(
146
+ (error) => new StdError.StdError({
147
+ code: Exec.toStdErrorCode(error),
148
+ message: `The test runner did not run: ${error.message}`,
149
+ ...error.limitMillis === void 0 ? {} : { limitMillis: error.limitMillis }
150
+ })
151
+ )
152
+ );
153
+ const combined = result.stderr === "" ? result.stdout : result.stdout === "" ? result.stderr : `${result.stdout}
154
+ ${result.stderr}`;
155
+ const tail = (0, import_Text.truncateBytes)(combined, import_Text.MAX_SHELL_OUTPUT_BYTES, { keep: "tail" });
156
+ const report = TestReport.parse(combined);
157
+ const probe = yield* Probe.classify({
158
+ command: quoted,
159
+ exitCode: result.exitCode,
160
+ output: tail.text
161
+ }).pipe(Effect.mapError(Probe.unjudged));
162
+ const capturedDroppedBytes = result.stdoutDroppedBytes + result.stderrDroppedBytes;
163
+ return {
164
+ outcome: {
165
+ command: quoted,
166
+ exitCode: result.exitCode,
167
+ passed: report.passed,
168
+ failed: report.failed,
169
+ parsed: report.parsed,
170
+ tail: tail.text,
171
+ tailTruncated: capturedDroppedBytes > 0 || tail.truncated,
172
+ tailDroppedBytes: capturedDroppedBytes + tail.droppedBytes,
173
+ ...probe.invalidProbe === void 0 ? {} : { invalidProbe: probe.invalidProbe }
174
+ },
175
+ report
176
+ };
177
+ });
178
+ const run = Effect.fn("TestRun.run")(function* (input) {
179
+ const declaration = yield* TestRunner.TestRunner;
180
+ const runner = yield* declaration.declared;
181
+ if (input.against === "base" && runner.baseline === false) {
182
+ return yield* Effect.fail(failed(
183
+ "Baseline comparison is unavailable on this host. Run against the workspace.",
184
+ "provider_unavailable"
185
+ ));
186
+ }
187
+ const transport = yield* Effect.serviceOption(Container.Container);
188
+ const selection = input.selection ?? [];
189
+ const timeoutMs = input.timeoutMs ?? runner.timeoutMs ?? DEFAULT_TIMEOUT_MS;
190
+ const current = yield* execute(runner, transport, {
191
+ selection,
192
+ cwd: runner.cwd,
193
+ timeoutMs
194
+ });
195
+ if (input.against !== "base") return current.outcome;
196
+ const root = runner.root ?? runner.cwd;
197
+ if (root === void 0) {
198
+ return yield* Effect.fail(
199
+ failed(
200
+ "The declared runner names no repository directory, so there is no base tree to check out",
201
+ "invalid_input"
202
+ )
203
+ );
204
+ }
205
+ const base = yield* import_GitWorktree.GitWorktree.resolveCommit(
206
+ root,
207
+ runner.baseRef === void 0 ? [TestRunner.captureBase, "HEAD"] : [runner.baseRef]
208
+ ).pipe(Effect.mapError(
209
+ (error) => error.code === "not_found" ? failed(`No pristine base to compare against: ${error.message} Run against the workspace instead.`, "not_found") : error
210
+ ));
211
+ const baseline = yield* import_GitWorktree.GitWorktree.withDetachedWorktree(
212
+ yield* import_GitWorktree.GitWorktree.open(root),
213
+ `${scratchDirectory}/run`,
214
+ base.commit,
215
+ (scratch) => execute(runner, transport, {
216
+ selection,
217
+ cwd: runner.cwd === void 0 ? scratch : `${runner.cwd.replace(/\/+$/, "")}${scratch.slice(root.replace(/\/+$/, "").length)}`,
218
+ timeoutMs
219
+ })
220
+ );
221
+ const difference = TestReport.attribute(current.report, baseline.report);
222
+ return {
223
+ ...current.outcome,
224
+ base: { ...baseline.outcome, ref: base.ref, commit: base.commit },
225
+ ...difference === void 0 ? {} : difference
226
+ };
227
+ });
228
+ //# sourceMappingURL=TestRun.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/TestRun.ts"],
4
+ "sourcesContent": ["/**\n * The `test` flow: run the declared suite, and answer with the two facts.\n *\n * Two things this returns that a shell command cannot. First, a *reading*:\n * `{passed, failed}` parsed from the runner's own report, with the raw tail\n * kept for whatever the parse could not carry \u2014 a suite's answer is a number\n * and a list of names, not twenty kilobytes of stdout for a model to re-read.\n *\n * Second, `against: \"base\"`: the same selection also runs against the pristine\n * base commit in a scratch checkout, and the two failure sets are differenced\n * here. That is the whole of attribution, in one call. Without it, agents pay\n * for it in frames \u2014 sphinx-8721 spent fourteen frames because a pre-existing\n * failure was never baselined, sympy-13878 spent $0.90 on the same mistake, and\n * django-24970 spent three frames. The rule the harness teaches (\"before\n * blaming your own edit, run the same command on the unmodified tree\") is only\n * cheap when the tool can do it.\n *\n * A third thing is answered on the way out: whether a non-zero exit is the\n * tree's failure at all, or the command failing to resolve a name. Jev decides\n * it through `Probe.classify`, so the flow needs an `Evaluator` and a host\n * uses its configured subscription seat. A judge that does not answer fails the call with\n * the code `Probe.unjudged` names, because a run nobody judged is not a run\n * this flow can report on.\n *\n * @since 1.0.0\n */\n\nimport type * as ChildProcessSpawner from \"@smthrs/kernel/ChildProcessSpawner\"\nimport type * as Evaluator from \"@smthrs/model/Evaluator\"\nimport * as Effect from \"effect/Effect\"\nimport * as Option from \"effect/Option\"\nimport * as Schema from \"effect/Schema\"\nimport * as Container from \"./Container.ts\"\nimport { capability, envelope } from \"./internal/Declaration.ts\"\nimport * as Exec from \"./internal/Exec.ts\"\nimport { GitWorktree } from \"./internal/GitWorktree.ts\"\nimport * as Prune from \"./internal/Prune.ts\"\nimport * as TestReport from \"./internal/TestReport.ts\"\nimport { MAX_SHELL_OUTPUT_BYTES, truncateBytes } from \"./internal/Text.ts\"\nimport * as Probe from \"./Probe.ts\"\nimport * as StdError from \"./StdError.ts\"\nimport * as TestRunner from \"./TestRunner.ts\"\n\n/**\n * Registry name for the test flow.\n *\n * @category identifiers\n * @since 1.0.0\n */\nexport const name = \"test\"\n\n/**\n * Model-facing description of the test flow.\n *\n * @category descriptions\n * @since 1.0.0\n */\nexport const description =\n \"Run this repository's declared test runner and get {passed, failed[ids]}, not raw output. against:'base' also runs it on the pristine base commit, so a pre-existing failure is named, not investigated.\"\n\n/**\n * The parent directory baseline checkouts are written into, relative to the\n * repository root, and therefore also relative to the runner's own directory.\n *\n * @category constants\n * @since 1.0.0\n */\nexport const scratchDirectory = Prune.testBaseScratch\n\n/**\n * Default wall-clock budget for one test run.\n *\n * @category constants\n * @since 1.0.0\n */\nexport const DEFAULT_TIMEOUT_MS = 600_000\n\n/**\n * Maximum bytes retained from each stream while a test run executes.\n *\n * @category constants\n * @since 1.0.0\n */\nexport const MAX_CAPTURE_BYTES = 8_000_000\n\n/**\n * Input schema for the test flow.\n *\n * @category schemas\n * @since 1.0.0\n */\nexport const Input = Schema.Struct({\n selection: Schema.optional(Schema.Array(Schema.String)).annotate({\n description: \"Test ids, paths or selectors passed to the runner as arguments; all tests when omitted\"\n }),\n against: Schema.optional(Schema.Literals([\"workspace\", \"base\"])).annotate({\n description:\n \"workspace (default) runs the tree as it stands; base also runs the pristine base commit and reports which failures are new\"\n }),\n timeoutMs: Schema.optional(Schema.Number).annotate({ description: \"Wall-clock timeout in milliseconds\" })\n})\n\n/**\n * Decoded input accepted by the `test` flow.\n *\n * @category models\n * @since 1.0.0\n */\nexport type Input = typeof Input.Type\n\n/**\n * One run's outcome.\n *\n * @category schemas\n * @since 1.0.0\n */\nexport const Outcome = Schema.Struct({\n command: Schema.String.annotate({\n description: \"The logical invocation that ran, without container transport arguments\"\n }),\n exitCode: Schema.Number,\n passed: Schema.Number.annotate({ description: \"Tests reported passing; 0 when parsed is false\" }),\n failed: Schema.Array(Schema.String).annotate({ description: \"Ids of the tests reported failing or erroring\" }),\n parsed: Schema.Boolean.annotate({\n description:\n \"Whether the runner's complete report could be read; when false, tail is all there is. Base attribution is omitted unless both reports are complete\"\n }),\n tail: Schema.String.annotate({ description: \"The end of the runner's combined output\" }),\n // `<field>Truncated` beside `<field>` is the wire convention\n // `@smthrs/harness/TruncatedOutput` reads to refuse a later write of these\n // exact bytes. A tail written over a file replaces it with its own end.\n tailTruncated: Schema.Boolean.annotate({\n description: \"Whether the runner printed more than tail carries, leaving tail a fragment that must not be written\"\n }),\n tailDroppedBytes: Schema.Number.annotate({ description: \"UTF-8 bytes omitted from the start of tail\" }),\n invalidProbe: Schema.optional(Probe.InvalidProbe)\n})\n\n/**\n * Output schema for the test flow.\n *\n * @category schemas\n * @since 1.0.0\n */\nexport const Output = Schema.Struct({\n ...Outcome.fields,\n base: Schema.optional(Schema.Struct({\n ...Outcome.fields,\n ref: Schema.String.annotate({ description: \"The ref the baseline tree came from\" }),\n commit: Schema.String.annotate({ description: \"The commit the baseline tree came from\" })\n })),\n introduced: Schema.optional(Schema.Array(Schema.String)).annotate({\n description: \"Failing here and not on the base tree: the failures this working tree is responsible for\"\n }),\n preexisting: Schema.optional(Schema.Array(Schema.String)).annotate({\n description: \"Failing on both trees: not yours, and not worth investigating\"\n }),\n fixed: Schema.optional(Schema.Array(Schema.String)).annotate({\n description: \"Failing on the base tree and passing here\"\n })\n})\n\n/**\n * Decoded output returned by the `test` flow.\n *\n * @category models\n * @since 1.0.0\n */\nexport type Output = typeof Output.Type\n\n/**\n * Static conservative effect envelope for the test flow.\n *\n * @category effects\n * @since 1.0.0\n */\nexport const effects = envelope({ tier: \"irreversible\", mode: \"expected\", reads: [], writes: [] })\n\n/**\n * Narrows the effect envelope for a decoded invocation.\n *\n * @category effects\n * @since 1.0.0\n */\nexport const effectsFor = (_input: typeof Input.Type) => effects\n\n/**\n * Capabilities required by the test flow.\n *\n * @category capabilities\n * @since 1.0.0\n */\nexport const capabilities = [capability(\"proc:spawn\", \"*\")]\n\n/**\n * Declaration-only test flow.\n *\n * @category flows\n * @since 1.0.0\n */\nexport const flow = { name, description, input: Input, output: Output, capabilities, effects } as const\n\n/**\n * What a call to this flow does, for a reader of a run.\n *\n * Display metadata only. `@smthrs/registry` `Descriptor.FlowActivity` is the\n * governing vocabulary and `StandardFlows` binds this value onto the flow's\n * descriptor, where the binding site checks it. `declarationDigest` excludes\n * it, so declaring it cannot invalidate a call identity or a cached prompt.\n *\n * @category presentation\n * @since 1.0.0-rc.0\n */\nexport const activity = \"tests\" as const\n\n/**\n * How one recorded call to this flow reads: the verb for each settlement, the\n * input field that is its subject, and the measured output fields a one-line\n * summary may count.\n *\n * Display metadata only, governed by `@smthrs/registry`\n * `Descriptor.CallPresentation` and checked where `StandardFlows` binds it.\n *\n * @category presentation\n * @since 1.0.0-rc.0\n */\nexport const presentation = {\n verb: { pending: \"running\", success: \"ran\", failure: \"failed to run\" },\n subject: \"selection\",\n result: \"tests\"\n} as const\n\n/**\n * The invocation for one run: the declared command line with the selection\n * appended as arguments rather than as text.\n *\n * `bash -c '<command> \"$@\"' <command> id\u2026` is how a selection reaches a runner\n * without being quoted into it. A test id holds `::`, `[`, `]`, spaces and\n * shell metacharacters routinely, and every one of them is data here.\n */\nconst invocation = (\n runner: TestRunner.Runner,\n selection: ReadonlyArray<string>\n): { readonly file: string; readonly args: ReadonlyArray<string> } => ({\n file: \"bash\",\n args: [\"-c\", `${runner.command} \"$@\"`, runner.command, ...selection]\n})\n\nconst failed = (message: string, code: StdError.Code = \"command_failed\"): StdError.StdError =>\n new StdError.StdError({ code, message })\n\n/** Runs one invocation, in the container when the declaration names one. */\nconst execute = (\n runner: TestRunner.Runner,\n transport: Option.Option<Container.Container>,\n options: {\n readonly selection: ReadonlyArray<string>\n readonly cwd: string | undefined\n readonly timeoutMs: number\n }\n): Effect.Effect<\n { readonly outcome: typeof Outcome.Type; readonly report: TestReport.Report },\n StdError.StdError,\n ChildProcessSpawner.ChildProcessSpawner | Evaluator.Evaluator\n> =>\n Effect.gen(function*() {\n const plan = invocation(runner, options.selection)\n const routed: Container.Plan = runner.container === undefined ?\n { ...plan, env: runner.env } :\n Option.isNone(transport)\n ? yield* Effect.fail(Container.unavailable(runner.container))\n : yield* transport.value.exec({\n container: runner.container,\n file: plan.file,\n args: plan.args,\n ...(options.cwd === undefined ? {} : { cwd: options.cwd }),\n ...(runner.env === undefined ? {} : { env: runner.env }),\n stdin: false\n })\n // Report the logical invocation, never the transport or its credentials.\n const quoted = [plan.file, ...plan.args].join(\" \")\n const result = yield* Exec.exec(routed.file, {\n args: [...routed.args],\n ...(options.cwd === undefined || runner.container !== undefined ? {} : { cwd: options.cwd }),\n ...(routed.env === undefined ? {} : { env: routed.env }),\n timeoutMs: options.timeoutMs,\n maxCaptureBytes: MAX_CAPTURE_BYTES\n }).pipe(\n Effect.mapError((error) =>\n new StdError.StdError({\n code: Exec.toStdErrorCode(error),\n message: `The test runner did not run: ${error.message}`,\n ...(error.limitMillis === undefined ? {} : { limitMillis: error.limitMillis })\n })\n )\n )\n const combined = result.stderr === \"\"\n ? result.stdout\n : result.stdout === \"\"\n ? result.stderr\n : `${result.stdout}\\n${result.stderr}`\n const tail = truncateBytes(combined, MAX_SHELL_OUTPUT_BYTES, { keep: \"tail\" })\n const report = TestReport.parse(combined)\n // Judged on the text this call returns rather than the text it captured,\n // so the attribution is made from the output the reader can see. A judge\n // that does not answer fails the call: see `Probe.unjudged`.\n const probe = yield* Probe.classify({\n command: quoted,\n exitCode: result.exitCode,\n output: tail.text\n }).pipe(Effect.mapError(Probe.unjudged))\n const capturedDroppedBytes = result.stdoutDroppedBytes + result.stderrDroppedBytes\n return {\n outcome: {\n command: quoted,\n exitCode: result.exitCode,\n passed: report.passed,\n failed: report.failed,\n parsed: report.parsed,\n tail: tail.text,\n tailTruncated: capturedDroppedBytes > 0 || tail.truncated,\n tailDroppedBytes: capturedDroppedBytes + tail.droppedBytes,\n ...(probe.invalidProbe === undefined ? {} : { invalidProbe: probe.invalidProbe })\n },\n report\n }\n })\n\n/**\n * Runs the declared suite, and on request the same suite on the pristine base.\n *\n * Baseline Git and both runners use the caller-provided process service.\n * A host that cannot safely stage the base declares `baseline: false`, which\n * refuses the request before running either suite or Git. Library hosts that\n * support staging remove the detached checkout when the call ends.\n *\n * @category handlers\n * @since 1.0.0\n */\nexport const run = Effect.fn(\"TestRun.run\")(function*(\n input: typeof Input.Type\n): Effect.fn.Return<\n typeof Output.Type,\n StdError.StdError,\n ChildProcessSpawner.ChildProcessSpawner | Evaluator.Evaluator | TestRunner.TestRunner\n> {\n const declaration = yield* TestRunner.TestRunner\n const runner = yield* declaration.declared\n if (input.against === \"base\" && runner.baseline === false) {\n return yield* Effect.fail(failed(\n \"Baseline comparison is unavailable on this host. Run against the workspace.\",\n \"provider_unavailable\"\n ))\n }\n const transport = yield* Effect.serviceOption(Container.Container)\n const selection = input.selection ?? []\n const timeoutMs = input.timeoutMs ?? runner.timeoutMs ?? DEFAULT_TIMEOUT_MS\n const current = yield* execute(runner, transport, {\n selection,\n cwd: runner.cwd,\n timeoutMs\n })\n if (input.against !== \"base\") return current.outcome\n\n const root = runner.root ?? runner.cwd\n if (root === undefined) {\n return yield* Effect.fail(\n failed(\n \"The declared runner names no repository directory, so there is no base tree to check out\",\n \"invalid_input\"\n )\n )\n }\n const base = yield* GitWorktree.resolveCommit(\n root,\n runner.baseRef === undefined ? [TestRunner.captureBase, \"HEAD\"] : [runner.baseRef]\n ).pipe(Effect.mapError((error) =>\n error.code === \"not_found\"\n ? failed(`No pristine base to compare against: ${error.message} Run against the workspace instead.`, \"not_found\")\n : error\n ))\n const baseline = yield* GitWorktree.withDetachedWorktree(\n yield* GitWorktree.open(root),\n `${scratchDirectory}/run`,\n base.commit,\n (scratch) =>\n execute(runner, transport, {\n selection,\n cwd: runner.cwd === undefined\n ? scratch\n : `${runner.cwd.replace(/\\/+$/, \"\")}${scratch.slice(root.replace(/\\/+$/, \"\").length)}`,\n timeoutMs\n })\n )\n const difference = TestReport.attribute(current.report, baseline.report)\n return {\n ...current.outcome,\n base: { ...baseline.outcome, ref: base.ref, commit: base.commit },\n ...(difference === undefined ? {} : difference)\n }\n})\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }