@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,59 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var Symbols_exports = {};
20
+ __export(Symbols_exports, {
21
+ enclosing: () => enclosing
22
+ });
23
+ module.exports = __toCommonJS(Symbols_exports);
24
+ const declaration = /^([ \t]*)(?:(?:async|export|default|public|private|protected|internal|static|final|abstract|open|pub(?:\([^)]*\))?|unsafe|const|declare)[ \t]+)*(def|class|function|fn|func|struct|impl|interface|trait|enum|module|namespace|type|sub|method)[ \t]+([A-Za-z_$][A-Za-z0-9_$]*)/;
25
+ const closer = /^[ \t]*[)}\]]/;
26
+ const indentOf = (line) => /^[ \t]*/.exec(line)[0].length;
27
+ const blank = (line) => line.trim() === "";
28
+ const enclosing = (lines, line) => {
29
+ const index = line - 1;
30
+ if (index < 0 || index >= lines.length) return void 0;
31
+ let reference = index;
32
+ while (reference > 0 && blank(lines[reference])) reference--;
33
+ const indent = indentOf(lines[reference]);
34
+ let start = -1;
35
+ let parsed = null;
36
+ for (let candidate = index; candidate >= 0; candidate--) {
37
+ const text = lines[candidate];
38
+ if (blank(text)) continue;
39
+ const found = declaration.exec(text);
40
+ if (found === null) continue;
41
+ if (candidate !== index && indentOf(text) >= indent) continue;
42
+ start = candidate;
43
+ parsed = found;
44
+ break;
45
+ }
46
+ if (parsed === null) return void 0;
47
+ const opening = indentOf(lines[start]);
48
+ let end = lines.length - 1;
49
+ for (let candidate = start + 1; candidate < lines.length; candidate++) {
50
+ const text = lines[candidate];
51
+ if (blank(text)) continue;
52
+ if (indentOf(text) > opening) continue;
53
+ end = closer.test(text) ? candidate : candidate - 1;
54
+ break;
55
+ }
56
+ while (end > start && blank(lines[end])) end--;
57
+ return { kind: parsed[2], name: parsed[3], startLine: start + 1, endLine: end + 1 };
58
+ };
59
+ //# sourceMappingURL=Symbols.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/internal/Symbols.ts"],
4
+ "sourcesContent": ["/**\n * The definition a line sits inside, read off the file's own shape.\n *\n * A search hit is a line number, and a line number is not a read window. Agents\n * guess one: `offset: line - 10, limit: 40`, which lands short (astropy-15569\n * missed `get_lookup` by one line and probed the wrong binding) or long (six\n * blind-offset reads on sympy-13878). The enclosing definition is the window the\n * hit actually belongs to, and for indentation- and brace-structured source it\n * is derivable from the text already in hand.\n *\n * This is a heuristic and reports only what it can see plainly: a declaration\n * keyword, a name, and the block that keyword opens. When the shape is not\n * plain \u2014 a match at top level, a language this table does not name, a\n * declaration split across lines \u2014 it answers `undefined` rather than guessing,\n * because a wrong window is worse than none.\n *\n * @since 1.0.0\n */\n\n/**\n * The definition enclosing a line.\n *\n * @category models\n * @since 1.0.0\n */\nexport interface Symbol {\n readonly kind: string\n readonly name: string\n readonly startLine: number\n readonly endLine: number\n}\n\n/**\n * Declaration keywords this heuristic recognises across the languages the\n * standard flows meet. Modifiers before the keyword are skipped, the name after\n * it is captured, and everything else is left alone.\n */\nconst declaration =\n /^([ \\t]*)(?:(?:async|export|default|public|private|protected|internal|static|final|abstract|open|pub(?:\\([^)]*\\))?|unsafe|const|declare)[ \\t]+)*(def|class|function|fn|func|struct|impl|interface|trait|enum|module|namespace|type|sub|method)[ \\t]+([A-Za-z_$][A-Za-z0-9_$]*)/\n\nconst closer = /^[ \\t]*[)}\\]]/\n\nconst indentOf = (line: string): number => /^[ \\t]*/.exec(line)![0].length\n\nconst blank = (line: string): boolean => line.trim() === \"\"\n\n/**\n * The definition enclosing a 1-based line, or `undefined` when there is none to\n * read plainly.\n *\n * @category navigation\n * @since 1.0.0\n */\nexport const enclosing = (lines: ReadonlyArray<string>, line: number): Symbol | undefined => {\n const index = line - 1\n if (index < 0 || index >= lines.length) return undefined\n // A blank match line has no indentation of its own; the nearest text above it\n // does, and that is the block the blank line belongs to.\n let reference = index\n while (reference > 0 && blank(lines[reference]!)) reference--\n const indent = indentOf(lines[reference]!)\n let start = -1\n let parsed: RegExpExecArray | null = null\n for (let candidate = index; candidate >= 0; candidate--) {\n const text = lines[candidate]!\n if (blank(text)) continue\n const found = declaration.exec(text)\n if (found === null) continue\n if (candidate !== index && indentOf(text) >= indent) continue\n start = candidate\n parsed = found\n break\n }\n if (parsed === null) return undefined\n const opening = indentOf(lines[start]!)\n let end = lines.length - 1\n for (let candidate = start + 1; candidate < lines.length; candidate++) {\n const text = lines[candidate]!\n if (blank(text)) continue\n if (indentOf(text) > opening) continue\n // A brace language closes the block at the declaration's own indentation,\n // and that closing line is part of the definition rather than what follows.\n end = closer.test(text) ? candidate : candidate - 1\n break\n }\n while (end > start && blank(lines[end]!)) end--\n return { kind: parsed[2]!, name: parsed[3]!, startLine: start + 1, endLine: end + 1 }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAqCA,MAAM,cACJ;AAEF,MAAM,SAAS;AAEf,MAAM,WAAW,CAAC,SAAyB,UAAU,KAAK,IAAI,EAAG,CAAC,EAAE;AAEpE,MAAM,QAAQ,CAAC,SAA0B,KAAK,KAAK,MAAM;AASlD,MAAM,YAAY,CAAC,OAA8B,SAAqC;AAC3F,QAAM,QAAQ,OAAO;AACrB,MAAI,QAAQ,KAAK,SAAS,MAAM,OAAQ,QAAO;AAG/C,MAAI,YAAY;AAChB,SAAO,YAAY,KAAK,MAAM,MAAM,SAAS,CAAE,EAAG;AAClD,QAAM,SAAS,SAAS,MAAM,SAAS,CAAE;AACzC,MAAI,QAAQ;AACZ,MAAI,SAAiC;AACrC,WAAS,YAAY,OAAO,aAAa,GAAG,aAAa;AACvD,UAAM,OAAO,MAAM,SAAS;AAC5B,QAAI,MAAM,IAAI,EAAG;AACjB,UAAM,QAAQ,YAAY,KAAK,IAAI;AACnC,QAAI,UAAU,KAAM;AACpB,QAAI,cAAc,SAAS,SAAS,IAAI,KAAK,OAAQ;AACrD,YAAQ;AACR,aAAS;AACT;AAAA,EACF;AACA,MAAI,WAAW,KAAM,QAAO;AAC5B,QAAM,UAAU,SAAS,MAAM,KAAK,CAAE;AACtC,MAAI,MAAM,MAAM,SAAS;AACzB,WAAS,YAAY,QAAQ,GAAG,YAAY,MAAM,QAAQ,aAAa;AACrE,UAAM,OAAO,MAAM,SAAS;AAC5B,QAAI,MAAM,IAAI,EAAG;AACjB,QAAI,SAAS,IAAI,IAAI,QAAS;AAG9B,UAAM,OAAO,KAAK,IAAI,IAAI,YAAY,YAAY;AAClD;AAAA,EACF;AACA,SAAO,MAAM,SAAS,MAAM,MAAM,GAAG,CAAE,EAAG;AAC1C,SAAO,EAAE,MAAM,OAAO,CAAC,GAAI,MAAM,OAAO,CAAC,GAAI,WAAW,QAAQ,GAAG,SAAS,MAAM,EAAE;AACtF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * The regular files of a tar stream.
3
+ *
4
+ * `RemoteSearch` brings a machine's files back with its own `tar`, because
5
+ * every image ships one and it frames each file with its name and size. GNU
6
+ * and BusyBox `tar` write GNU long names, `bsdtar` writes POSIX extended
7
+ * headers, and `xargs` may start `tar` more than once, so the stream can hold
8
+ * several archives one after another. This reads all of them.
9
+ *
10
+ * @since 1.0.0-rc.8
11
+ */
12
+ /**
13
+ * Every regular file the stream holds, by member name, or `undefined` when
14
+ * the stream is not whole tar archives: a header whose checksum does not
15
+ * hold, a member cut short, or a last archive with no end. A `tar` that
16
+ * stopped between two members wrote no end, so its missing files are not
17
+ * mistaken for files it could not read.
18
+ *
19
+ * @private
20
+ * @since 1.0.0-rc.8
21
+ */
22
+ export declare const files: (stream: Uint8Array) => ReadonlyMap<string, Uint8Array> | undefined;
23
+ //# sourceMappingURL=Tar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tar.d.ts","sourceRoot":"","sources":["../../../src/internal/Tar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAsCH;;;;;;;;;GASG;AACH,eAAO,MAAM,KAAK,GAAI,QAAQ,UAAU,KAAG,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,SAoC5E,CAAA"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var Tar_exports = {};
20
+ __export(Tar_exports, {
21
+ files: () => files
22
+ });
23
+ module.exports = __toCommonJS(Tar_exports);
24
+ const decoder = new TextDecoder();
25
+ const text = (bytes) => {
26
+ const end = bytes.indexOf(0);
27
+ return decoder.decode(end === -1 ? bytes : bytes.subarray(0, end));
28
+ };
29
+ const octal = (bytes) => {
30
+ const digits = text(bytes).trim();
31
+ return /^[0-7]+$/.test(digits) ? Number.parseInt(digits, 8) : void 0;
32
+ };
33
+ const checksum = (header) => {
34
+ let sum = 0;
35
+ for (let index = 0; index < 512; index++) sum += index >= 148 && index < 156 ? 32 : header[index];
36
+ return sum;
37
+ };
38
+ const paxPath = (data) => {
39
+ let offset = 0;
40
+ let path;
41
+ while (offset < data.length) {
42
+ const space = data.indexOf(32, offset);
43
+ const length = space === -1 ? Number.NaN : Number(decoder.decode(data.subarray(offset, space)));
44
+ if (!Number.isSafeInteger(length) || length <= space - offset || offset + length > data.length) return path;
45
+ const record = decoder.decode(data.subarray(space + 1, offset + length - 1));
46
+ if (record.startsWith("path=")) path = record.slice("path=".length);
47
+ offset += length;
48
+ }
49
+ return path;
50
+ };
51
+ const files = (stream) => {
52
+ const found = /* @__PURE__ */ new Map();
53
+ let longName;
54
+ let extended;
55
+ let ended = true;
56
+ for (let offset = 0; offset + 512 <= stream.length; ) {
57
+ const header = stream.subarray(offset, offset + 512);
58
+ offset += 512;
59
+ ended = header.every((byte) => byte === 0);
60
+ if (ended) continue;
61
+ const size = octal(header.subarray(124, 136));
62
+ if (size === void 0 || octal(header.subarray(148, 156)) !== checksum(header)) return void 0;
63
+ if (offset + size > stream.length) return void 0;
64
+ const data = stream.subarray(offset, offset + size);
65
+ offset += Math.ceil(size / 512) * 512;
66
+ const type = String.fromCharCode(header[156]);
67
+ if (type === "L") {
68
+ longName = text(data);
69
+ continue;
70
+ }
71
+ if (type === "x") {
72
+ extended = paxPath(data) ?? extended;
73
+ continue;
74
+ }
75
+ if (type === "K" || type === "g") continue;
76
+ if (type === "0" || type === "\0" || type === "7") {
77
+ const prefix = decoder.decode(header.subarray(257, 263)) === "ustar\0" ? text(header.subarray(345, 500)) : "";
78
+ const short = text(header.subarray(0, 100));
79
+ found.set(extended ?? longName ?? (prefix === "" ? short : `${prefix}/${short}`), data.slice());
80
+ }
81
+ longName = void 0;
82
+ extended = void 0;
83
+ }
84
+ return ended ? found : void 0;
85
+ };
86
+ //# sourceMappingURL=Tar.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/internal/Tar.ts"],
4
+ "sourcesContent": ["/**\n * The regular files of a tar stream.\n *\n * `RemoteSearch` brings a machine's files back with its own `tar`, because\n * every image ships one and it frames each file with its name and size. GNU\n * and BusyBox `tar` write GNU long names, `bsdtar` writes POSIX extended\n * headers, and `xargs` may start `tar` more than once, so the stream can hold\n * several archives one after another. This reads all of them.\n *\n * @since 1.0.0-rc.8\n */\n\nconst decoder = new TextDecoder()\n\n/** Bytes up to the first NUL, as text. */\nconst text = (bytes: Uint8Array): string => {\n const end = bytes.indexOf(0)\n return decoder.decode(end === -1 ? bytes : bytes.subarray(0, end))\n}\n\n/** An octal header field, or `undefined` when it holds anything else. */\nconst octal = (bytes: Uint8Array): number | undefined => {\n const digits = text(bytes).trim()\n return /^[0-7]+$/.test(digits) ? Number.parseInt(digits, 8) : undefined\n}\n\n/** The header's checksum, computed with the checksum field read as spaces. */\nconst checksum = (header: Uint8Array): number => {\n let sum = 0\n for (let index = 0; index < 512; index++) sum += index >= 148 && index < 156 ? 32 : header[index]!\n return sum\n}\n\n/** The `path` record of a POSIX extended header: `<length> <key>=<value>\\n` records. */\nconst paxPath = (data: Uint8Array): string | undefined => {\n let offset = 0\n let path: string | undefined\n while (offset < data.length) {\n const space = data.indexOf(32, offset)\n const length = space === -1 ? Number.NaN : Number(decoder.decode(data.subarray(offset, space)))\n if (!Number.isSafeInteger(length) || length <= space - offset || offset + length > data.length) return path\n const record = decoder.decode(data.subarray(space + 1, offset + length - 1))\n if (record.startsWith(\"path=\")) path = record.slice(\"path=\".length)\n offset += length\n }\n return path\n}\n\n/**\n * Every regular file the stream holds, by member name, or `undefined` when\n * the stream is not whole tar archives: a header whose checksum does not\n * hold, a member cut short, or a last archive with no end. A `tar` that\n * stopped between two members wrote no end, so its missing files are not\n * mistaken for files it could not read.\n *\n * @private\n * @since 1.0.0-rc.8\n */\nexport const files = (stream: Uint8Array): ReadonlyMap<string, Uint8Array> | undefined => {\n const found = new Map<string, Uint8Array>()\n let longName: string | undefined\n let extended: string | undefined\n let ended = true\n for (let offset = 0; offset + 512 <= stream.length;) {\n const header = stream.subarray(offset, offset + 512)\n offset += 512\n // Zero blocks end one archive; `xargs` may have started another.\n ended = header.every((byte) => byte === 0)\n if (ended) continue\n const size = octal(header.subarray(124, 136))\n if (size === undefined || octal(header.subarray(148, 156)) !== checksum(header)) return undefined\n if (offset + size > stream.length) return undefined\n const data = stream.subarray(offset, offset + size)\n offset += Math.ceil(size / 512) * 512\n const type = String.fromCharCode(header[156]!)\n if (type === \"L\") {\n longName = text(data)\n continue\n }\n if (type === \"x\") {\n extended = paxPath(data) ?? extended\n continue\n }\n // A long link name and a global header describe no member of their own.\n if (type === \"K\" || type === \"g\") continue\n if (type === \"0\" || type === \"\\0\" || type === \"7\") {\n const prefix = decoder.decode(header.subarray(257, 263)) === \"ustar\\0\" ? text(header.subarray(345, 500)) : \"\"\n const short = text(header.subarray(0, 100))\n found.set(extended ?? longName ?? (prefix === \"\" ? short : `${prefix}/${short}`), data.slice())\n }\n longName = undefined\n extended = undefined\n }\n return ended ? found : undefined\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA,MAAM,UAAU,IAAI,YAAY;AAGhC,MAAM,OAAO,CAAC,UAA8B;AAC1C,QAAM,MAAM,MAAM,QAAQ,CAAC;AAC3B,SAAO,QAAQ,OAAO,QAAQ,KAAK,QAAQ,MAAM,SAAS,GAAG,GAAG,CAAC;AACnE;AAGA,MAAM,QAAQ,CAAC,UAA0C;AACvD,QAAM,SAAS,KAAK,KAAK,EAAE,KAAK;AAChC,SAAO,WAAW,KAAK,MAAM,IAAI,OAAO,SAAS,QAAQ,CAAC,IAAI;AAChE;AAGA,MAAM,WAAW,CAAC,WAA+B;AAC/C,MAAI,MAAM;AACV,WAAS,QAAQ,GAAG,QAAQ,KAAK,QAAS,QAAO,SAAS,OAAO,QAAQ,MAAM,KAAK,OAAO,KAAK;AAChG,SAAO;AACT;AAGA,MAAM,UAAU,CAAC,SAAyC;AACxD,MAAI,SAAS;AACb,MAAI;AACJ,SAAO,SAAS,KAAK,QAAQ;AAC3B,UAAM,QAAQ,KAAK,QAAQ,IAAI,MAAM;AACrC,UAAM,SAAS,UAAU,KAAK,OAAO,MAAM,OAAO,QAAQ,OAAO,KAAK,SAAS,QAAQ,KAAK,CAAC,CAAC;AAC9F,QAAI,CAAC,OAAO,cAAc,MAAM,KAAK,UAAU,QAAQ,UAAU,SAAS,SAAS,KAAK,OAAQ,QAAO;AACvG,UAAM,SAAS,QAAQ,OAAO,KAAK,SAAS,QAAQ,GAAG,SAAS,SAAS,CAAC,CAAC;AAC3E,QAAI,OAAO,WAAW,OAAO,EAAG,QAAO,OAAO,MAAM,QAAQ,MAAM;AAClE,cAAU;AAAA,EACZ;AACA,SAAO;AACT;AAYO,MAAM,QAAQ,CAAC,WAAoE;AACxF,QAAM,QAAQ,oBAAI,IAAwB;AAC1C,MAAI;AACJ,MAAI;AACJ,MAAI,QAAQ;AACZ,WAAS,SAAS,GAAG,SAAS,OAAO,OAAO,UAAS;AACnD,UAAM,SAAS,OAAO,SAAS,QAAQ,SAAS,GAAG;AACnD,cAAU;AAEV,YAAQ,OAAO,MAAM,CAAC,SAAS,SAAS,CAAC;AACzC,QAAI,MAAO;AACX,UAAM,OAAO,MAAM,OAAO,SAAS,KAAK,GAAG,CAAC;AAC5C,QAAI,SAAS,UAAa,MAAM,OAAO,SAAS,KAAK,GAAG,CAAC,MAAM,SAAS,MAAM,EAAG,QAAO;AACxF,QAAI,SAAS,OAAO,OAAO,OAAQ,QAAO;AAC1C,UAAM,OAAO,OAAO,SAAS,QAAQ,SAAS,IAAI;AAClD,cAAU,KAAK,KAAK,OAAO,GAAG,IAAI;AAClC,UAAM,OAAO,OAAO,aAAa,OAAO,GAAG,CAAE;AAC7C,QAAI,SAAS,KAAK;AAChB,iBAAW,KAAK,IAAI;AACpB;AAAA,IACF;AACA,QAAI,SAAS,KAAK;AAChB,iBAAW,QAAQ,IAAI,KAAK;AAC5B;AAAA,IACF;AAEA,QAAI,SAAS,OAAO,SAAS,IAAK;AAClC,QAAI,SAAS,OAAO,SAAS,QAAQ,SAAS,KAAK;AACjD,YAAM,SAAS,QAAQ,OAAO,OAAO,SAAS,KAAK,GAAG,CAAC,MAAM,YAAY,KAAK,OAAO,SAAS,KAAK,GAAG,CAAC,IAAI;AAC3G,YAAM,QAAQ,KAAK,OAAO,SAAS,GAAG,GAAG,CAAC;AAC1C,YAAM,IAAI,YAAY,aAAa,WAAW,KAAK,QAAQ,GAAG,MAAM,IAAI,KAAK,KAAK,KAAK,MAAM,CAAC;AAAA,IAChG;AACA,eAAW;AACX,eAAW;AAAA,EACb;AACA,SAAO,QAAQ,QAAQ;AACzB;",
6
+ "names": []
7
+ }
@@ -0,0 +1,52 @@
1
+ /**
2
+ * What a test runner said, read out of what it printed.
3
+ *
4
+ * A suite's answer is two facts — how many passed, and which ones failed — and
5
+ * a runner spends twenty to thirty kilobytes of stdout saying them. Paying a
6
+ * model to read that is the expensive way to learn a number, and the measured
7
+ * program shows what it costs: sixteen frames on sphinx-8721 existed because a
8
+ * pre-existing failure was never isolated, and the failure *names* were in the
9
+ * output all along.
10
+ *
11
+ * The parsers below recognise the report shapes the standard runners print.
12
+ * Precision is the design constraint, exactly as in `Probe`: a reader claims a
13
+ * complete report only when the runner printed an authoritative completion
14
+ * statement and the observed outcomes agree with it. Pytest requires a tally,
15
+ * TAP requires a plan with every planned outcome, and unittest requires its
16
+ * `Ran` line plus an `OK` or `FAILED` summary. Incomplete captures still return
17
+ * the outcomes they contain with `parsed: false`. A wrong failure set is worse
18
+ * than no failure set, because attribution is built on it.
19
+ *
20
+ * @since 1.0.0
21
+ */
22
+ /**
23
+ * One run's outcome as this module could read it.
24
+ *
25
+ * @category models
26
+ * @since 1.0.0
27
+ */
28
+ export interface Report {
29
+ readonly passed: number;
30
+ readonly failed: ReadonlyArray<string>;
31
+ readonly reportedFailed: number | undefined;
32
+ readonly parsed: boolean;
33
+ }
34
+ /**
35
+ * Reads one run's report, or says plainly that it could not.
36
+ *
37
+ * @category parsing
38
+ * @since 1.0.0
39
+ */
40
+ export declare const parse: (text: string) => Report;
41
+ /**
42
+ * How two runs of the same command differ, which is the whole of attribution.
43
+ *
44
+ * @category parsing
45
+ * @since 1.0.0
46
+ */
47
+ export declare const attribute: (current: Report, base: Report) => {
48
+ readonly introduced: ReadonlyArray<string>;
49
+ readonly preexisting: ReadonlyArray<string>;
50
+ readonly fixed: ReadonlyArray<string>;
51
+ } | undefined;
52
+ //# sourceMappingURL=TestReport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestReport.d.ts","sourceRoot":"","sources":["../../../src/internal/TestReport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACtC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3C,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CACzB;AAiHD;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAAI,MAAM,MAAM,KAAG,MAiBpC,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GACpB,SAAS,MAAM,EACf,MAAM,MAAM,KACX;IACD,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC1C,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC3C,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CACtC,GAAG,SASH,CAAA"}
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var TestReport_exports = {};
20
+ __export(TestReport_exports, {
21
+ attribute: () => attribute,
22
+ parse: () => parse
23
+ });
24
+ module.exports = __toCommonJS(TestReport_exports);
25
+ const unique = (ids) => [...new Set(ids)];
26
+ const collect = (text, pattern) => {
27
+ const found = [];
28
+ for (const match of text.matchAll(pattern)) {
29
+ found.push(match[1]);
30
+ }
31
+ return found;
32
+ };
33
+ const count = (text, pattern) => {
34
+ const match = pattern.exec(text);
35
+ return match === null ? void 0 : Number(match[1]);
36
+ };
37
+ const pytest = (text) => {
38
+ const summaryFailed = collect(text, /^(?:FAILED|ERROR)[ \t]+(.+?)(?:[ \t]+-[ \t]+.*)?$/gm);
39
+ const outcomes = [...text.matchAll(/^(.+?)[ \t]+(PASSED|FAILED|ERROR)(?:[ \t]+.*)?$/gm)];
40
+ const verboseFailed = outcomes.flatMap((match) => match[2] === "FAILED" || match[2] === "ERROR" ? [match[1]] : []);
41
+ const verbosePassed = unique(outcomes.flatMap((match) => match[2] === "PASSED" ? [match[1]] : [])).length;
42
+ const failed = unique([...summaryFailed, ...verboseFailed]);
43
+ const lastLine = text.trimEnd().split("\n").at(-1);
44
+ const summary = /^(?:=+[ \t]*)?(\d+ [a-z]+(?:,[ \t]*\d+ [a-z]+)*) in \d+(?:\.\d+)?s(?: \([^)]*\))?[ \t]*(?:=+)?$/.exec(lastLine)?.[1];
45
+ const tally = summary === void 0 ? void 0 : count(summary, /\b(\d+) passed\b/);
46
+ const failures = summary === void 0 ? void 0 : count(summary, /\b(\d+) failed\b/);
47
+ const errors = summary === void 0 ? void 0 : count(summary, /\b(\d+) errors?\b/);
48
+ const hasTally = tally !== void 0 || failures !== void 0 || errors !== void 0;
49
+ const reportedFailed = hasTally ? (failures ?? 0) + (errors ?? 0) : void 0;
50
+ if (!hasTally && outcomes.length === 0 && summaryFailed.length === 0) return void 0;
51
+ return {
52
+ passed: tally ?? verbosePassed,
53
+ failed,
54
+ reportedFailed,
55
+ parsed: hasTally && failed.length === reportedFailed
56
+ };
57
+ };
58
+ const unittest = (text) => {
59
+ const ran = count(text, /^Ran (\d+) tests?\b/m);
60
+ const outcomes = [...text.matchAll(/^(?:FAIL|ERROR|UNEXPECTED SUCCESS):[ \t]+(\S+)[ \t]+\(([^)\s]+)\)/gm)];
61
+ if (ran === void 0 && outcomes.length === 0) return void 0;
62
+ const failed = unique(
63
+ outcomes.map((match) => match[2].endsWith(`.${match[1]}`) ? match[2] : `${match[2]}.${match[1]}`)
64
+ );
65
+ const summary = /^(OK|FAILED)(?: \(([^)]*)\))?[ \t]*$/m.exec(text);
66
+ const counts = /* @__PURE__ */ new Map();
67
+ let known = summary !== null;
68
+ for (const entry of summary?.[2]?.split(", ") ?? []) {
69
+ const match = /^(failures|errors|skipped|expected failures|unexpected successes)=(\d+)$/.exec(entry);
70
+ if (match === null || counts.has(match[1])) known = false;
71
+ else counts.set(match[1], Number(match[2]));
72
+ }
73
+ const reportedFailed = known ? (counts.get("failures") ?? 0) + (counts.get("errors") ?? 0) + (counts.get("unexpected successes") ?? 0) : void 0;
74
+ const skipped = counts.get("skipped") ?? 0;
75
+ const expectedFailures = counts.get("expected failures") ?? 0;
76
+ const passed = ran === void 0 || reportedFailed === void 0 ? 0 : Math.max(0, ran - reportedFailed - skipped - expectedFailures);
77
+ return {
78
+ passed,
79
+ failed,
80
+ reportedFailed,
81
+ parsed: ran !== void 0 && reportedFailed !== void 0 && failed.length === reportedFailed && (summary?.[1] === "OK" ? reportedFailed === 0 : reportedFailed > 0) && passed + failed.length + skipped + expectedFailures === ran
82
+ };
83
+ };
84
+ const tap = (text) => {
85
+ const outcomes = [...text.matchAll(/^(not ok|ok)\b[ \t]*\d*[ \t]*-?[ \t]*(.*)$/gm)].map((match) => {
86
+ const directive = /[ \t]*#[ \t]*(SKIP|TODO)\b.*$/i.exec(match[2]);
87
+ return {
88
+ ok: match[1] === "ok",
89
+ id: match[2].slice(0, directive?.index).trim(),
90
+ directive: directive === null ? void 0 : directive[1].toUpperCase()
91
+ };
92
+ });
93
+ const failures = outcomes.filter((outcome) => !outcome.ok && outcome.directive === void 0);
94
+ const failed = unique(failures.flatMap((outcome) => outcome.id === "" ? [] : [outcome.id]));
95
+ const passed = outcomes.filter((outcome) => outcome.ok && outcome.directive !== "SKIP").length;
96
+ const planned = count(text, /^1\.\.(\d+)\b/m);
97
+ if (outcomes.length === 0 && planned === void 0) return void 0;
98
+ const reportedFailed = failures.length;
99
+ return {
100
+ passed,
101
+ failed,
102
+ reportedFailed,
103
+ parsed: planned !== void 0 && outcomes.length === planned && failed.length === reportedFailed
104
+ };
105
+ };
106
+ const parse = (text) => {
107
+ const hasTap = /^(?:TAP version \d+|1\.\.\d+|not ok\b|ok\b)/m.test(text);
108
+ const hasUnittest = /^Ran \d+ tests?\b/m.test(text);
109
+ const lastLine = text.trimEnd().split("\n").at(-1);
110
+ const hasPytest = /^(?:=+[ \t]*)?\d+ [a-z]+(?:,[ \t]*\d+ [a-z]+)* in \d+(?:\.\d+)?s(?: \([^)]*\))?[ \t]*(?:=+)?$/.test(lastLine);
111
+ if ([hasTap, hasUnittest, hasPytest].filter(Boolean).length > 1) {
112
+ return { passed: 0, failed: [], reportedFailed: void 0, parsed: false };
113
+ }
114
+ const readers = hasTap ? [tap] : hasUnittest ? [unittest] : hasPytest ? [pytest] : [unittest, pytest, tap];
115
+ for (const reader of readers) {
116
+ const report = reader(text);
117
+ if (report !== void 0) return report;
118
+ }
119
+ return { passed: 0, failed: [], reportedFailed: void 0, parsed: false };
120
+ };
121
+ const attribute = (current, base) => {
122
+ if (!current.parsed || !base.parsed) return void 0;
123
+ const before = new Set(base.failed);
124
+ const now = new Set(current.failed);
125
+ return {
126
+ introduced: current.failed.filter((id) => !before.has(id)),
127
+ preexisting: current.failed.filter((id) => before.has(id)),
128
+ fixed: base.failed.filter((id) => !now.has(id))
129
+ };
130
+ };
131
+ //# sourceMappingURL=TestReport.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/internal/TestReport.ts"],
4
+ "sourcesContent": ["/**\n * What a test runner said, read out of what it printed.\n *\n * A suite's answer is two facts \u2014 how many passed, and which ones failed \u2014 and\n * a runner spends twenty to thirty kilobytes of stdout saying them. Paying a\n * model to read that is the expensive way to learn a number, and the measured\n * program shows what it costs: sixteen frames on sphinx-8721 existed because a\n * pre-existing failure was never isolated, and the failure *names* were in the\n * output all along.\n *\n * The parsers below recognise the report shapes the standard runners print.\n * Precision is the design constraint, exactly as in `Probe`: a reader claims a\n * complete report only when the runner printed an authoritative completion\n * statement and the observed outcomes agree with it. Pytest requires a tally,\n * TAP requires a plan with every planned outcome, and unittest requires its\n * `Ran` line plus an `OK` or `FAILED` summary. Incomplete captures still return\n * the outcomes they contain with `parsed: false`. A wrong failure set is worse\n * than no failure set, because attribution is built on it.\n *\n * @since 1.0.0\n */\n\n/**\n * One run's outcome as this module could read it.\n *\n * @category models\n * @since 1.0.0\n */\nexport interface Report {\n readonly passed: number\n readonly failed: ReadonlyArray<string>\n readonly reportedFailed: number | undefined\n readonly parsed: boolean\n}\n\nconst unique = (ids: ReadonlyArray<string>): ReadonlyArray<string> => [...new Set(ids)]\n\nconst collect = (text: string, pattern: RegExp): ReadonlyArray<string> => {\n const found: Array<string> = []\n for (const match of text.matchAll(pattern)) {\n found.push(match[1]!)\n }\n return found\n}\n\nconst count = (text: string, pattern: RegExp): number | undefined => {\n const match = pattern.exec(text)\n return match === null ? undefined : Number(match[1])\n}\n\n/**\n * pytest, in every verbosity it is normally run at.\n *\n * The short summary (`-rA`, and the default on failure) prints one\n * `FAILED path::id - reason` line per failure, and the tally line prints the\n * authoritative counts. Verbose outcome lines preserve observations from an\n * incomplete capture but cannot establish that the run completed.\n */\nconst pytest = (text: string): Report | undefined => {\n const summaryFailed = collect(text, /^(?:FAILED|ERROR)[ \\t]+(.+?)(?:[ \\t]+-[ \\t]+.*)?$/gm)\n const outcomes = [...text.matchAll(/^(.+?)[ \\t]+(PASSED|FAILED|ERROR)(?:[ \\t]+.*)?$/gm)]\n const verboseFailed = outcomes.flatMap((match) => match[2] === \"FAILED\" || match[2] === \"ERROR\" ? [match[1]!] : [])\n const verbosePassed = unique(outcomes.flatMap((match) => match[2] === \"PASSED\" ? [match[1]!] : [])).length\n const failed = unique([...summaryFailed, ...verboseFailed])\n // Only a terminal pytest summary can certify completion. Earlier diagnostic\n // lines (including test stdout) are not runner tallies.\n const lastLine = text.trimEnd().split(\"\\n\").at(-1)!\n const summary = /^(?:=+[ \\t]*)?(\\d+ [a-z]+(?:,[ \\t]*\\d+ [a-z]+)*) in \\d+(?:\\.\\d+)?s(?: \\([^)]*\\))?[ \\t]*(?:=+)?$/\n .exec(lastLine)?.[1]\n const tally = summary === undefined ? undefined : count(summary, /\\b(\\d+) passed\\b/)\n const failures = summary === undefined ? undefined : count(summary, /\\b(\\d+) failed\\b/)\n const errors = summary === undefined ? undefined : count(summary, /\\b(\\d+) errors?\\b/)\n const hasTally = tally !== undefined || failures !== undefined || errors !== undefined\n const reportedFailed = hasTally ? (failures ?? 0) + (errors ?? 0) : undefined\n if (!hasTally && outcomes.length === 0 && summaryFailed.length === 0) return undefined\n return {\n passed: tally ?? verbosePassed,\n failed,\n reportedFailed,\n parsed: hasTally && failed.length === reportedFailed\n }\n}\n\n/**\n * unittest, whose failures name a method and a class in the opposite order to\n * the dotted id everything else uses.\n */\nconst unittest = (text: string): Report | undefined => {\n const ran = count(text, /^Ran (\\d+) tests?\\b/m)\n const outcomes = [...text.matchAll(/^(?:FAIL|ERROR|UNEXPECTED SUCCESS):[ \\t]+(\\S+)[ \\t]+\\(([^)\\s]+)\\)/gm)]\n if (ran === undefined && outcomes.length === 0) return undefined\n const failed = unique(\n outcomes.map((match) => match[2]!.endsWith(`.${match[1]}`) ? match[2]! : `${match[2]}.${match[1]}`)\n )\n const summary = /^(OK|FAILED)(?: \\(([^)]*)\\))?[ \\t]*$/m.exec(text)\n const counts = new Map<string, number>()\n let known = summary !== null\n for (const entry of summary?.[2]?.split(\", \") ?? []) {\n const match = /^(failures|errors|skipped|expected failures|unexpected successes)=(\\d+)$/.exec(entry)\n if (match === null || counts.has(match[1]!)) known = false\n else counts.set(match[1]!, Number(match[2]))\n }\n const reportedFailed = known\n ? (counts.get(\"failures\") ?? 0) + (counts.get(\"errors\") ?? 0) + (counts.get(\"unexpected successes\") ?? 0)\n : undefined\n const skipped = counts.get(\"skipped\") ?? 0\n const expectedFailures = counts.get(\"expected failures\") ?? 0\n const passed = ran === undefined || reportedFailed === undefined\n ? 0\n : Math.max(0, ran - reportedFailed - skipped - expectedFailures)\n return {\n passed,\n failed,\n reportedFailed,\n parsed: ran !== undefined && reportedFailed !== undefined && failed.length === reportedFailed &&\n (summary?.[1] === \"OK\" ? reportedFailed === 0 : reportedFailed > 0) &&\n passed + failed.length + skipped + expectedFailures === ran\n }\n}\n\n/**\n * TAP, which several ecosystems emit and which names each test on its own line.\n */\nconst tap = (text: string): Report | undefined => {\n const outcomes = [...text.matchAll(/^(not ok|ok)\\b[ \\t]*\\d*[ \\t]*-?[ \\t]*(.*)$/gm)].map((match) => {\n const directive = /[ \\t]*#[ \\t]*(SKIP|TODO)\\b.*$/i.exec(match[2]!)\n return {\n ok: match[1] === \"ok\",\n id: match[2]!.slice(0, directive?.index).trim(),\n directive: directive === null ? undefined : directive[1]!.toUpperCase()\n }\n })\n const failures = outcomes.filter((outcome) => !outcome.ok && outcome.directive === undefined)\n const failed = unique(failures.flatMap((outcome) => outcome.id === \"\" ? [] : [outcome.id]))\n const passed = outcomes.filter((outcome) => outcome.ok && outcome.directive !== \"SKIP\").length\n const planned = count(text, /^1\\.\\.(\\d+)\\b/m)\n if (outcomes.length === 0 && planned === undefined) return undefined\n const reportedFailed = failures.length\n return {\n passed,\n failed,\n reportedFailed,\n parsed: planned !== undefined && outcomes.length === planned && failed.length === reportedFailed\n }\n}\n\n/**\n * Reads one run's report, or says plainly that it could not.\n *\n * @category parsing\n * @since 1.0.0\n */\nexport const parse = (text: string): Report => {\n const hasTap = /^(?:TAP version \\d+|1\\.\\.\\d+|not ok\\b|ok\\b)/m.test(text)\n const hasUnittest = /^Ran \\d+ tests?\\b/m.test(text)\n const lastLine = text.trimEnd().split(\"\\n\").at(-1)!\n const hasPytest = /^(?:=+[ \\t]*)?\\d+ [a-z]+(?:,[ \\t]*\\d+ [a-z]+)* in \\d+(?:\\.\\d+)?s(?: \\([^)]*\\))?[ \\t]*(?:=+)?$/\n .test(lastLine)\n // Two runner completion signatures in one capture cannot establish which\n // protocol owns the outcomes. Never attribute such a report.\n if ([hasTap, hasUnittest, hasPytest].filter(Boolean).length > 1) {\n return { passed: 0, failed: [], reportedFailed: undefined, parsed: false }\n }\n const readers = hasTap ? [tap] : hasUnittest ? [unittest] : hasPytest ? [pytest] : [unittest, pytest, tap]\n for (const reader of readers) {\n const report = reader(text)\n if (report !== undefined) return report\n }\n return { passed: 0, failed: [], reportedFailed: undefined, parsed: false }\n}\n\n/**\n * How two runs of the same command differ, which is the whole of attribution.\n *\n * @category parsing\n * @since 1.0.0\n */\nexport const attribute = (\n current: Report,\n base: Report\n): {\n readonly introduced: ReadonlyArray<string>\n readonly preexisting: ReadonlyArray<string>\n readonly fixed: ReadonlyArray<string>\n} | undefined => {\n if (!current.parsed || !base.parsed) return undefined\n const before = new Set(base.failed)\n const now = new Set(current.failed)\n return {\n introduced: current.failed.filter((id) => !before.has(id)),\n preexisting: current.failed.filter((id) => before.has(id)),\n fixed: base.failed.filter((id) => !now.has(id))\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Shared text paging, numbering, and byte-budget helpers.
3
+ *
4
+ * Every limit here is a display budget, not a policy limit: exceeding one is
5
+ * always disclosed to the model rather than silently applied.
6
+ *
7
+ * @since 1.0.0
8
+ */
9
+ /**
10
+ * Default number of lines or entries returned by a paged flow.
11
+ *
12
+ * @category constants
13
+ * @since 1.0.0
14
+ */
15
+ export declare const DEFAULT_READ_LIMIT = 2000;
16
+ /**
17
+ * Maximum number of directory entries or glob paths returned in one call.
18
+ *
19
+ * @category constants
20
+ * @since 1.0.0
21
+ */
22
+ export declare const MAX_ENTRIES = 1000;
23
+ /**
24
+ * Maximum number of grep matches returned in one call.
25
+ *
26
+ * @category constants
27
+ * @since 1.0.0
28
+ */
29
+ export declare const MAX_GREP_MATCHES = 200;
30
+ /**
31
+ * Maximum number of Unicode scalar values displayed for a single line.
32
+ *
33
+ * @category constants
34
+ * @since 1.0.0
35
+ */
36
+ export declare const MAX_LINE_CHARS = 2000;
37
+ /**
38
+ * Maximum UTF-8 byte budget for one rendered text payload.
39
+ *
40
+ * @category constants
41
+ * @since 1.0.0
42
+ */
43
+ export declare const MAX_OUTPUT_BYTES = 60000;
44
+ /**
45
+ * Maximum UTF-8 byte budget captured per shell output stream.
46
+ *
47
+ * @category constants
48
+ * @since 1.0.0
49
+ */
50
+ export declare const MAX_SHELL_OUTPUT_BYTES = 30000;
51
+ /**
52
+ * A byte-budgeted rendering of a text value.
53
+ *
54
+ * @category models
55
+ * @since 1.0.0
56
+ */
57
+ export interface Truncation {
58
+ readonly text: string;
59
+ readonly truncated: boolean;
60
+ readonly keptBytes: number;
61
+ readonly droppedBytes: number;
62
+ }
63
+ /**
64
+ * One page of source lines.
65
+ *
66
+ * @category models
67
+ * @since 1.0.0
68
+ */
69
+ export interface Page {
70
+ readonly lines: ReadonlyArray<string>;
71
+ readonly startLine: number;
72
+ readonly endLine: number;
73
+ readonly totalLines: number;
74
+ }
75
+ /**
76
+ * Trims a string to a UTF-8 byte budget without splitting a code point.
77
+ *
78
+ * `keep: "head"` retains the beginning of the value; `keep: "tail"` retains
79
+ * the end, which is what shell output needs because the interesting part of an
80
+ * overflowing stream is almost always its last lines.
81
+ *
82
+ * @category rendering
83
+ * @since 1.0.0
84
+ */
85
+ export declare const truncateBytes: (text: string, maxBytes: number, options: {
86
+ readonly keep: "head" | "tail";
87
+ }) => Truncation;
88
+ /**
89
+ * Joins the start and the end of a stream cut in the middle around one line
90
+ * naming the bytes cut between them.
91
+ *
92
+ * The line stands alone, so a start that stops mid-line is ended before it.
93
+ * Only the line's own newlines are added; `droppedBytes` counts printed bytes.
94
+ *
95
+ * @category rendering
96
+ * @since 1.0.0-rc.5
97
+ */
98
+ export declare const elideMiddle: (start: string, droppedBytes: number, end: string) => string;
99
+ /**
100
+ * Splits on LF without counting a terminal LF as a line.
101
+ * Carriage returns remain part of each line, including the CR in CRLF, so
102
+ * joining a page with LF preserves its bytes except for the final LF.
103
+ *
104
+ * @category parsing
105
+ * @since 1.0.0
106
+ */
107
+ export declare const sourceLines: (text: string) => ReadonlyArray<string>;
108
+ /**
109
+ * Selects a 1-based page of lines from a text value.
110
+ *
111
+ * @category paging
112
+ * @since 1.0.0
113
+ */
114
+ export declare const slice: (text: string, options: {
115
+ readonly offset: number;
116
+ readonly limit: number;
117
+ }) => Page;
118
+ /**
119
+ * Renders the disclosure appended whenever output was capped.
120
+ *
121
+ * @category rendering
122
+ * @since 1.0.0
123
+ */
124
+ export declare const notice: (unit: string, shown: number, total: number) => string;
125
+ //# sourceMappingURL=Text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../../src/internal/Text.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,OAAQ,CAAA;AAEvC;;;;;GAKG;AACH,eAAO,MAAM,WAAW,OAAQ,CAAA;AAEhC;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,MAAM,CAAA;AAEnC;;;;;GAKG;AACH,eAAO,MAAM,cAAc,OAAQ,CAAA;AAEnC;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,QAAS,CAAA;AAEtC;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,QAAS,CAAA;AAE5C;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;CAC9B;AAED;;;;;GAKG;AACH,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B;AAKD;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,GACxB,MAAM,MAAM,EACZ,UAAU,MAAM,EAChB,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,KAC1C,UAwBF,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,EAAE,cAAc,MAAM,EAAE,KAAK,MAAM,KAAG,MAG1D,CAAA;AAErB;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,KAAG,aAAa,CAAC,MAAM,CAI9D,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAChB,MAAM,MAAM,EACZ,SAAS;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,KAC3D,IAWF,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,MAAM,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,EAAE,OAAO,MAAM,KAAG,MACL,CAAA"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var Text_exports = {};
20
+ __export(Text_exports, {
21
+ DEFAULT_READ_LIMIT: () => DEFAULT_READ_LIMIT,
22
+ MAX_ENTRIES: () => MAX_ENTRIES,
23
+ MAX_GREP_MATCHES: () => MAX_GREP_MATCHES,
24
+ MAX_LINE_CHARS: () => MAX_LINE_CHARS,
25
+ MAX_OUTPUT_BYTES: () => MAX_OUTPUT_BYTES,
26
+ MAX_SHELL_OUTPUT_BYTES: () => MAX_SHELL_OUTPUT_BYTES,
27
+ elideMiddle: () => elideMiddle,
28
+ notice: () => notice,
29
+ slice: () => slice,
30
+ sourceLines: () => sourceLines,
31
+ truncateBytes: () => truncateBytes
32
+ });
33
+ module.exports = __toCommonJS(Text_exports);
34
+ const DEFAULT_READ_LIMIT = 2e3;
35
+ const MAX_ENTRIES = 1e3;
36
+ const MAX_GREP_MATCHES = 200;
37
+ const MAX_LINE_CHARS = 2e3;
38
+ const MAX_OUTPUT_BYTES = 6e4;
39
+ const MAX_SHELL_OUTPUT_BYTES = 3e4;
40
+ const encoder = new TextEncoder();
41
+ const fatalDecoder = new TextDecoder("utf-8", { fatal: true });
42
+ const truncateBytes = (text, maxBytes, options) => {
43
+ const bytes = encoder.encode(text);
44
+ if (bytes.byteLength <= maxBytes) {
45
+ return { text, truncated: false, keptBytes: bytes.byteLength, droppedBytes: 0 };
46
+ }
47
+ let start = options.keep === "head" ? 0 : bytes.byteLength - maxBytes;
48
+ let end = options.keep === "head" ? maxBytes : bytes.byteLength;
49
+ while (true) {
50
+ try {
51
+ const decoded = fatalDecoder.decode(bytes.subarray(start, end));
52
+ const keptBytes = end - start;
53
+ return {
54
+ text: decoded,
55
+ truncated: true,
56
+ keptBytes,
57
+ droppedBytes: bytes.byteLength - keptBytes
58
+ };
59
+ } catch {
60
+ if (options.keep === "head") end--;
61
+ else start++;
62
+ }
63
+ }
64
+ };
65
+ const elideMiddle = (start, droppedBytes, end) => `${start}${start === "" || start.endsWith("\n") ? "" : "\n"}[${droppedBytes} ${droppedBytes === 1 ? "byte" : "bytes"} omitted]
66
+ ${end}`;
67
+ const sourceLines = (text) => {
68
+ const lines = text.length === 0 ? [] : text.split("\n");
69
+ if (text.endsWith("\n")) lines.pop();
70
+ return lines;
71
+ };
72
+ const slice = (text, options) => {
73
+ const lines = sourceLines(text);
74
+ const totalLines = lines.length;
75
+ const startLine = Math.max(1, options.offset);
76
+ const endLine = Math.min(totalLines, startLine + Math.max(0, options.limit) - 1);
77
+ return {
78
+ lines: lines.slice(startLine - 1, endLine),
79
+ startLine,
80
+ endLine,
81
+ totalLines
82
+ };
83
+ };
84
+ const notice = (unit, shown, total) => `Showing ${shown} of ${total} ${unit}; output was truncated.`;
85
+ //# sourceMappingURL=Text.js.map