windows-development-sandbox 1.4.1 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3550) hide show
  1. package/.sandbox-config.example.json +1 -2
  2. package/README.md +9 -9
  3. package/config.example.json +162 -8
  4. package/dist/api.d.ts +2 -2
  5. package/dist/api.js +29 -18
  6. package/dist/cli/args.d.ts +19 -6
  7. package/dist/cli/args.js +91 -35
  8. package/dist/cli/argv.d.ts +9 -0
  9. package/dist/cli/argv.js +22 -0
  10. package/dist/cli/commands/accounts.d.ts +1 -1
  11. package/dist/cli/commands/accounts.js +48 -32
  12. package/dist/cli/commands/agent-commands.d.ts +3 -3
  13. package/dist/cli/commands/agent-commands.js +20 -36
  14. package/dist/cli/commands/context.d.ts +15 -11
  15. package/dist/cli/commands/context.js +35 -32
  16. package/dist/cli/commands/data/clean.d.ts +2 -14
  17. package/dist/cli/commands/data/clean.js +18 -87
  18. package/dist/cli/commands/data/collect.d.ts +6 -3
  19. package/dist/cli/commands/data/collect.js +46 -15
  20. package/dist/cli/commands/data/index.d.ts +2 -2
  21. package/dist/cli/commands/data/index.js +34 -17
  22. package/dist/cli/commands/data/remove.d.ts +1 -1
  23. package/dist/cli/commands/data/remove.js +4 -4
  24. package/dist/cli/commands/index.d.ts +6 -4
  25. package/dist/cli/commands/index.js +6 -4
  26. package/dist/cli/commands/launch/add-root.d.ts +7 -0
  27. package/dist/cli/commands/launch/add-root.js +64 -0
  28. package/dist/cli/commands/launch/boot-progress.d.ts +7 -0
  29. package/dist/cli/commands/launch/boot-progress.js +48 -0
  30. package/dist/cli/commands/launch/boot-wants.d.ts +11 -0
  31. package/dist/cli/commands/launch/boot-wants.js +48 -0
  32. package/dist/cli/commands/launch/first-start.d.ts +10 -0
  33. package/dist/cli/commands/launch/first-start.js +53 -0
  34. package/dist/cli/commands/launch/index.d.ts +6 -0
  35. package/dist/cli/commands/launch/index.js +6 -0
  36. package/dist/cli/commands/launch/launch.d.ts +11 -0
  37. package/dist/cli/commands/launch/launch.js +273 -0
  38. package/dist/cli/commands/launch/prepare.d.ts +23 -0
  39. package/dist/cli/commands/launch/prepare.js +108 -0
  40. package/dist/cli/commands/launch/resume-offer.d.ts +8 -0
  41. package/dist/cli/commands/launch/resume-offer.js +41 -0
  42. package/dist/cli/commands/launch/running.d.ts +45 -0
  43. package/dist/cli/commands/launch/running.js +218 -0
  44. package/dist/cli/commands/launch/summary.d.ts +8 -0
  45. package/dist/cli/commands/launch/summary.js +98 -0
  46. package/dist/cli/commands/maintenance/audit.d.ts +3 -0
  47. package/dist/cli/commands/maintenance/audit.js +58 -0
  48. package/dist/cli/commands/maintenance/clean.d.ts +2 -0
  49. package/dist/cli/commands/maintenance/clean.js +10 -0
  50. package/dist/cli/commands/maintenance/config.d.ts +2 -0
  51. package/dist/cli/commands/maintenance/config.js +145 -0
  52. package/dist/cli/commands/maintenance/doctor.d.ts +2 -0
  53. package/dist/cli/commands/maintenance/doctor.js +6 -0
  54. package/dist/cli/commands/maintenance/host-claude.d.ts +5 -0
  55. package/dist/cli/commands/maintenance/host-claude.js +14 -0
  56. package/dist/cli/commands/maintenance/index.d.ts +10 -0
  57. package/dist/cli/commands/maintenance/index.js +11 -0
  58. package/dist/cli/commands/maintenance/logs.d.ts +2 -0
  59. package/dist/cli/commands/maintenance/logs.js +24 -0
  60. package/dist/cli/commands/maintenance/migrate.d.ts +13 -0
  61. package/dist/cli/commands/maintenance/migrate.js +55 -0
  62. package/dist/cli/commands/maintenance/sync.d.ts +2 -0
  63. package/dist/cli/commands/maintenance/sync.js +12 -0
  64. package/dist/cli/commands/maintenance/update.d.ts +22 -0
  65. package/dist/cli/commands/maintenance/update.js +106 -0
  66. package/dist/cli/commands/maintenance/watch.d.ts +3 -0
  67. package/dist/cli/commands/maintenance/watch.js +10 -0
  68. package/dist/cli/commands/projects/describe-sessions.d.ts +3 -0
  69. package/dist/cli/commands/projects/describe-sessions.js +15 -0
  70. package/dist/cli/commands/projects/here.d.ts +40 -0
  71. package/dist/cli/commands/projects/here.js +162 -0
  72. package/dist/cli/commands/projects/index.d.ts +4 -0
  73. package/dist/cli/commands/projects/index.js +4 -0
  74. package/dist/cli/commands/projects/projects.d.ts +2 -0
  75. package/dist/cli/commands/projects/projects.js +153 -0
  76. package/dist/cli/commands/projects/restart.d.ts +5 -0
  77. package/dist/cli/commands/projects/restart.js +106 -0
  78. package/dist/cli/commands/registry.d.ts +3 -0
  79. package/dist/cli/commands/registry.js +38 -0
  80. package/dist/cli/commands/repair/checks.js +105 -29
  81. package/dist/cli/commands/repair/finders.d.ts +13 -10
  82. package/dist/cli/commands/repair/finders.js +63 -43
  83. package/dist/cli/commands/repair/index.d.ts +3 -6
  84. package/dist/cli/commands/repair/index.js +29 -36
  85. package/dist/cli/commands/repair/types.d.ts +2 -2
  86. package/dist/cli/commands/repair/types.js +7 -2
  87. package/dist/cli/commands/resume.d.ts +2 -0
  88. package/dist/cli/commands/resume.js +61 -0
  89. package/dist/cli/commands/sessions/attach.d.ts +2 -0
  90. package/dist/cli/commands/sessions/attach.js +44 -0
  91. package/dist/cli/commands/sessions/control.d.ts +4 -0
  92. package/dist/cli/commands/sessions/control.js +66 -0
  93. package/dist/cli/commands/sessions/exec.d.ts +6 -0
  94. package/dist/cli/commands/sessions/exec.js +72 -0
  95. package/dist/cli/commands/sessions/index.d.ts +6 -0
  96. package/dist/cli/commands/sessions/index.js +9 -0
  97. package/dist/cli/commands/sessions/list.d.ts +2 -0
  98. package/dist/cli/commands/sessions/list.js +45 -0
  99. package/dist/cli/commands/sessions/reopen.d.ts +36 -0
  100. package/dist/cli/commands/sessions/reopen.js +99 -0
  101. package/dist/cli/commands/sessions/status.d.ts +2 -0
  102. package/dist/cli/commands/sessions/status.js +93 -0
  103. package/dist/cli/commands/sessions/window.d.ts +3 -0
  104. package/dist/cli/commands/sessions/window.js +18 -0
  105. package/dist/cli/commands/setup/checks.d.ts +4 -4
  106. package/dist/cli/commands/setup/checks.js +36 -19
  107. package/dist/cli/commands/setup/facts.d.ts +6 -6
  108. package/dist/cli/commands/setup/facts.js +25 -23
  109. package/dist/cli/commands/setup/index.d.ts +1 -1
  110. package/dist/cli/commands/setup/index.js +24 -26
  111. package/dist/cli/commands/shared-use.d.ts +29 -0
  112. package/dist/cli/commands/shared-use.js +69 -0
  113. package/dist/cli/commands/user-config.d.ts +5 -5
  114. package/dist/cli/commands/user-config.js +14 -12
  115. package/dist/cli/history.d.ts +5 -4
  116. package/dist/cli/history.js +23 -11
  117. package/dist/cli/index.d.ts +4 -14
  118. package/dist/cli/index.js +39 -78
  119. package/dist/cli/manifest.d.ts +645 -10
  120. package/dist/cli/manifest.js +405 -56
  121. package/dist/cli/menu/apps.d.ts +27 -14
  122. package/dist/cli/menu/apps.js +107 -90
  123. package/dist/cli/menu/command-fields.d.ts +15 -0
  124. package/dist/cli/menu/command-fields.js +23 -0
  125. package/dist/cli/menu/command-form.d.ts +8 -5
  126. package/dist/cli/menu/command-form.js +142 -57
  127. package/dist/cli/menu/index.d.ts +2 -24
  128. package/dist/cli/menu/index.js +4 -178
  129. package/dist/cli/menu/menu.d.ts +18 -0
  130. package/dist/cli/menu/menu.js +170 -0
  131. package/dist/cli/menu/pages/accounts-page.d.ts +29 -0
  132. package/dist/cli/menu/pages/accounts-page.js +168 -0
  133. package/dist/cli/menu/pages/apps-page.d.ts +26 -0
  134. package/dist/cli/menu/pages/apps-page.js +75 -0
  135. package/dist/cli/menu/pages/list-page.d.ts +42 -0
  136. package/dist/cli/menu/pages/list-page.js +65 -0
  137. package/dist/cli/menu/pages/maintenance-page.d.ts +76 -0
  138. package/dist/cli/menu/pages/maintenance-page.js +483 -0
  139. package/dist/cli/menu/pages/sandbox-page.d.ts +32 -0
  140. package/dist/cli/menu/pages/sandbox-page.js +273 -0
  141. package/dist/cli/menu/pages/scopes.d.ts +9 -0
  142. package/dist/cli/menu/pages/scopes.js +15 -0
  143. package/dist/cli/menu/pages/sessions-page.d.ts +20 -0
  144. package/dist/cli/menu/pages/sessions-page.js +94 -0
  145. package/dist/cli/menu/pages/settings-page.d.ts +31 -0
  146. package/dist/cli/menu/pages/settings-page.js +207 -0
  147. package/dist/cli/menu/pages/start-page.d.ts +43 -0
  148. package/dist/cli/menu/pages/start-page.js +192 -0
  149. package/dist/cli/menu/settings/categories.d.ts +2 -2
  150. package/dist/cli/menu/settings/categories.js +130 -20
  151. package/dist/cli/menu/settings/collections/collection-editor.d.ts +23 -0
  152. package/dist/cli/menu/settings/collections/collection-editor.js +73 -0
  153. package/dist/cli/menu/settings/collections/map-editor.d.ts +10 -0
  154. package/dist/cli/menu/settings/collections/map-editor.js +34 -0
  155. package/dist/cli/menu/settings/collections/object-list-editor.d.ts +10 -0
  156. package/dist/cli/menu/settings/collections/object-list-editor.js +23 -0
  157. package/dist/cli/menu/settings/collections/object-map-editor.d.ts +10 -0
  158. package/dist/cli/menu/settings/collections/object-map-editor.js +35 -0
  159. package/dist/cli/menu/settings/collections/string-list-editor.d.ts +12 -0
  160. package/dist/cli/menu/settings/collections/string-list-editor.js +39 -0
  161. package/dist/cli/menu/settings/config-file.d.ts +11 -2
  162. package/dist/cli/menu/settings/config-file.js +60 -26
  163. package/dist/cli/menu/settings/draft.d.ts +26 -0
  164. package/dist/cli/menu/settings/draft.js +67 -0
  165. package/dist/cli/menu/settings/editor-actions.d.ts +1 -0
  166. package/dist/cli/menu/settings/editor-actions.js +1 -0
  167. package/dist/cli/menu/settings/format.d.ts +5 -0
  168. package/dist/cli/menu/settings/format.js +39 -0
  169. package/dist/cli/menu/settings/index.d.ts +2 -30
  170. package/dist/cli/menu/settings/index.js +1 -133
  171. package/dist/cli/menu/settings/object-editor.d.ts +12 -0
  172. package/dist/cli/menu/settings/object-editor.js +66 -0
  173. package/dist/cli/menu/settings/schema-node.d.ts +3 -1
  174. package/dist/cli/menu/settings/schema-node.js +71 -24
  175. package/dist/cli/menu/settings/value-editor.d.ts +19 -0
  176. package/dist/cli/menu/settings/value-editor.js +137 -0
  177. package/dist/cli/menu/several.d.ts +4 -4
  178. package/dist/cli/menu/several.js +61 -20
  179. package/dist/cli/menu/shell.d.ts +54 -0
  180. package/dist/cli/menu/shell.js +109 -0
  181. package/dist/cli/output/colors.d.ts +24 -0
  182. package/dist/cli/output/colors.js +60 -0
  183. package/dist/cli/output/index.d.ts +3 -0
  184. package/dist/cli/output/index.js +3 -0
  185. package/dist/cli/output/print.d.ts +5 -0
  186. package/dist/cli/output/print.js +14 -0
  187. package/dist/cli/output/progress.d.ts +24 -0
  188. package/dist/cli/output/progress.js +124 -0
  189. package/dist/cli/report.d.ts +2 -0
  190. package/dist/cli/report.js +20 -0
  191. package/dist/cli/services/accounts-service.d.ts +44 -0
  192. package/dist/cli/services/accounts-service.js +115 -0
  193. package/dist/cli/services/agent-commands-service.d.ts +22 -0
  194. package/dist/cli/services/agent-commands-service.js +44 -0
  195. package/dist/cli/services/data-service.d.ts +43 -0
  196. package/dist/cli/services/data-service.js +66 -0
  197. package/dist/cli/services/data-targets.d.ts +13 -0
  198. package/dist/cli/services/data-targets.js +67 -0
  199. package/dist/cli/services/databases-service.d.ts +27 -0
  200. package/dist/cli/services/databases-service.js +57 -0
  201. package/dist/cli/services/health-service.d.ts +28 -0
  202. package/dist/cli/services/health-service.js +120 -0
  203. package/dist/cli/services/index.d.ts +12 -0
  204. package/dist/cli/services/index.js +12 -0
  205. package/dist/cli/services/logs-service.d.ts +25 -0
  206. package/dist/cli/services/logs-service.js +54 -0
  207. package/dist/cli/services/migrate-service.d.ts +29 -0
  208. package/dist/cli/services/migrate-service.js +43 -0
  209. package/dist/cli/services/projects-service.d.ts +56 -0
  210. package/dist/cli/services/projects-service.js +111 -0
  211. package/dist/cli/services/sandbox-service.d.ts +78 -0
  212. package/dist/cli/services/sandbox-service.js +125 -0
  213. package/dist/cli/services/sessions-service.d.ts +42 -0
  214. package/dist/cli/services/sessions-service.js +81 -0
  215. package/dist/cli/services/update-service.d.ts +74 -0
  216. package/dist/cli/services/update-service.js +185 -0
  217. package/dist/cli/tui/app.d.ts +19 -16
  218. package/dist/cli/tui/app.js +65 -11
  219. package/dist/cli/tui/dialogs/confirm-screen.d.ts +20 -0
  220. package/dist/cli/tui/dialogs/confirm-screen.js +50 -0
  221. package/dist/cli/tui/dialogs/message-screen.d.ts +17 -0
  222. package/dist/cli/tui/dialogs/message-screen.js +55 -0
  223. package/dist/cli/tui/dialogs/overlay.d.ts +34 -0
  224. package/dist/cli/tui/dialogs/overlay.js +104 -0
  225. package/dist/cli/tui/dialogs/paragraphs.d.ts +2 -0
  226. package/dist/cli/tui/dialogs/paragraphs.js +5 -0
  227. package/dist/cli/tui/dialogs/text-screen.d.ts +26 -0
  228. package/dist/cli/tui/dialogs/text-screen.js +107 -0
  229. package/dist/cli/tui/frame.d.ts +13 -4
  230. package/dist/cli/tui/frame.js +13 -9
  231. package/dist/cli/tui/index.d.ts +11 -4
  232. package/dist/cli/tui/index.js +7 -2
  233. package/dist/cli/tui/key-bar.d.ts +5 -0
  234. package/dist/cli/tui/key-bar.js +22 -0
  235. package/dist/cli/tui/list/list-screen.d.ts +38 -0
  236. package/dist/cli/tui/list/list-screen.js +402 -0
  237. package/dist/cli/tui/list/list-types.d.ts +84 -0
  238. package/dist/cli/tui/screen.d.ts +14 -0
  239. package/dist/cli/tui/tab-bar.d.ts +9 -0
  240. package/dist/cli/tui/tab-bar.js +33 -0
  241. package/dist/cli/tui/terminal.js +34 -10
  242. package/dist/cli/tui/text.d.ts +2 -1
  243. package/dist/cli/tui/text.js +40 -7
  244. package/dist/cli/tui/theme.js +27 -9
  245. package/dist/cli/validate.d.ts +8 -8
  246. package/dist/cli/validate.js +32 -21
  247. package/dist/core/config/defaults.d.ts +2 -0
  248. package/dist/core/config/defaults.js +273 -0
  249. package/dist/core/config/index.d.ts +2 -0
  250. package/dist/core/config/index.js +3 -0
  251. package/dist/core/config/loader.d.ts +20 -0
  252. package/dist/core/config/loader.js +88 -0
  253. package/dist/core/detect/databases.d.ts +15 -0
  254. package/dist/core/detect/databases.js +235 -0
  255. package/dist/core/detect/index.d.ts +4 -0
  256. package/dist/core/detect/index.js +4 -0
  257. package/dist/core/detect/pwsh.d.ts +18 -0
  258. package/dist/core/detect/pwsh.js +125 -0
  259. package/dist/core/detect/toolchains.d.ts +33 -0
  260. package/dist/core/detect/toolchains.js +104 -0
  261. package/dist/core/detect/versions.d.ts +55 -0
  262. package/dist/core/detect/versions.js +107 -0
  263. package/dist/core/disk.d.ts +14 -6
  264. package/dist/core/disk.js +62 -13
  265. package/dist/core/local-config/boot-wants.d.ts +45 -0
  266. package/dist/core/local-config/boot-wants.js +120 -0
  267. package/dist/core/local-config/file.d.ts +3 -0
  268. package/dist/core/local-config/file.js +16 -0
  269. package/dist/core/local-config/index.d.ts +5 -0
  270. package/dist/core/local-config/index.js +7 -0
  271. package/dist/core/local-config/overrides.d.ts +35 -0
  272. package/dist/core/local-config/overrides.js +137 -0
  273. package/dist/core/local-config/policy.d.ts +19 -0
  274. package/dist/core/local-config/policy.js +47 -0
  275. package/dist/core/local-config/trust.d.ts +13 -0
  276. package/dist/core/local-config/trust.js +51 -0
  277. package/dist/core/package-info.d.ts +4 -0
  278. package/dist/core/package-info.js +13 -0
  279. package/dist/core/prompt.d.ts +2 -2
  280. package/dist/core/prompt.js +6 -5
  281. package/dist/core/run/guest-workspace.d.ts +27 -0
  282. package/dist/core/run/guest-workspace.js +50 -0
  283. package/dist/core/run/index.d.ts +3 -0
  284. package/dist/core/run/index.js +3 -0
  285. package/dist/core/run/resolve-run.d.ts +6 -0
  286. package/dist/core/run/resolve-run.js +205 -0
  287. package/dist/core/run/versions.d.ts +13 -0
  288. package/dist/core/run/versions.js +65 -0
  289. package/dist/core/safe-paths.d.ts +6 -3
  290. package/dist/core/safe-paths.js +25 -10
  291. package/dist/core/schema/apps.d.ts +4 -4
  292. package/dist/core/schema/apps.js +55 -21
  293. package/dist/core/schema/common.d.ts +14 -11
  294. package/dist/core/schema/common.js +23 -11
  295. package/dist/core/schema/config.d.ts +44 -20
  296. package/dist/core/schema/config.js +81 -53
  297. package/dist/core/schema/databases.d.ts +4 -3
  298. package/dist/core/schema/databases.js +18 -12
  299. package/dist/core/schema/harness.d.ts +15 -1
  300. package/dist/core/schema/harness.js +42 -7
  301. package/dist/core/schema/index.d.ts +6 -0
  302. package/dist/core/schema/index.js +8 -0
  303. package/dist/core/schema/json-schema.d.ts +2 -2
  304. package/dist/core/schema/json-schema.js +20 -13
  305. package/dist/core/schema/profile.d.ts +4 -4
  306. package/dist/core/schema/profile.js +37 -17
  307. package/dist/core/schema/projects.d.ts +1 -1
  308. package/dist/core/schema/projects.js +16 -6
  309. package/dist/core/schema/resume.d.ts +11 -0
  310. package/dist/core/schema/resume.js +12 -0
  311. package/dist/core/schema/sandbox.d.ts +14 -11
  312. package/dist/core/schema/sandbox.js +106 -37
  313. package/dist/core/schema/toolchains.d.ts +9 -4
  314. package/dist/core/schema/toolchains.js +88 -36
  315. package/dist/core/types.d.ts +39 -12
  316. package/dist/core/util/errors.d.ts +8 -0
  317. package/dist/core/util/errors.js +16 -0
  318. package/dist/core/util/fs.d.ts +8 -0
  319. package/dist/core/util/fs.js +44 -0
  320. package/dist/core/util/index.d.ts +7 -0
  321. package/dist/core/util/index.js +7 -0
  322. package/dist/core/util/jsonc.d.ts +6 -0
  323. package/dist/core/util/jsonc.js +30 -0
  324. package/dist/core/util/links.d.ts +10 -0
  325. package/dist/core/util/links.js +39 -0
  326. package/dist/core/util/paths.d.ts +9 -0
  327. package/dist/core/util/paths.js +39 -0
  328. package/dist/core/util/process.d.ts +11 -0
  329. package/dist/core/util/process.js +13 -0
  330. package/dist/core/util/text.d.ts +10 -0
  331. package/dist/core/util/text.js +21 -0
  332. package/dist/guest/agents/agent-installer.d.ts +22 -0
  333. package/dist/guest/agents/agent-installer.js +124 -0
  334. package/dist/guest/agents/profile-links.d.ts +5 -0
  335. package/dist/guest/agents/profile-links.js +27 -0
  336. package/dist/guest/apps/after-install.d.ts +3 -0
  337. package/dist/guest/apps/after-install.js +47 -0
  338. package/dist/guest/apps/app-installer.d.ts +22 -0
  339. package/dist/guest/apps/app-installer.js +116 -0
  340. package/dist/guest/apps/find-exe.d.ts +5 -0
  341. package/dist/guest/apps/find-exe.js +41 -0
  342. package/dist/guest/apps/index.d.ts +3 -10
  343. package/dist/guest/apps/index.js +6 -206
  344. package/dist/guest/apps/resolvers.js +37 -9
  345. package/dist/guest/apps/shortcuts.d.ts +6 -0
  346. package/dist/guest/apps/shortcuts.js +19 -0
  347. package/dist/guest/apps/sources.d.ts +4 -0
  348. package/dist/guest/apps/sources.js +17 -0
  349. package/dist/guest/apps/unpack.d.ts +3 -0
  350. package/dist/guest/apps/unpack.js +47 -0
  351. package/dist/guest/audit/parse.d.ts +7 -0
  352. package/dist/guest/audit/parse.js +60 -0
  353. package/dist/guest/audit/process-audit.d.ts +6 -0
  354. package/dist/guest/audit/process-audit.js +72 -0
  355. package/dist/guest/boot/boot-env.d.ts +4 -0
  356. package/dist/guest/boot/boot-env.js +27 -0
  357. package/dist/guest/boot/boot.d.ts +18 -0
  358. package/dist/guest/boot/boot.js +242 -0
  359. package/dist/guest/boot/guide.d.ts +16 -0
  360. package/dist/guest/boot/guide.js +98 -0
  361. package/dist/guest/boot/project-env.d.ts +20 -0
  362. package/dist/guest/boot/project-env.js +28 -0
  363. package/dist/guest/boot/project-status.d.ts +5 -0
  364. package/dist/guest/boot/project-status.js +30 -0
  365. package/dist/guest/daemon/daemon.d.ts +7 -0
  366. package/dist/guest/daemon/daemon.js +57 -0
  367. package/dist/guest/daemon/exec.d.ts +3 -3
  368. package/dist/guest/daemon/exec.js +27 -11
  369. package/dist/guest/daemon/idle-shutdown.d.ts +8 -0
  370. package/dist/guest/daemon/idle-shutdown.js +34 -0
  371. package/dist/guest/daemon/project-provisioner.d.ts +23 -0
  372. package/dist/guest/daemon/project-provisioner.js +180 -0
  373. package/dist/guest/daemon/relays.d.ts +1 -1
  374. package/dist/guest/daemon/relays.js +7 -5
  375. package/dist/guest/daemon/sessions.d.ts +35 -0
  376. package/dist/guest/daemon/sessions.js +264 -0
  377. package/dist/guest/daemon/state.d.ts +9 -15
  378. package/dist/guest/daemon/state.js +40 -23
  379. package/dist/guest/databases/database-server.d.ts +13 -0
  380. package/dist/guest/databases/database-server.js +35 -0
  381. package/dist/guest/databases/dynamodb.d.ts +12 -0
  382. package/dist/guest/databases/dynamodb.js +81 -0
  383. package/dist/guest/databases/index.d.ts +2 -0
  384. package/dist/guest/databases/index.js +2 -0
  385. package/dist/guest/databases/mongodb.d.ts +7 -0
  386. package/dist/guest/databases/mongodb.js +46 -0
  387. package/dist/guest/databases/mysql.d.ts +7 -0
  388. package/dist/guest/databases/mysql.js +59 -0
  389. package/dist/guest/databases/names.d.ts +5 -0
  390. package/dist/guest/databases/names.js +8 -0
  391. package/dist/guest/databases/postgres.d.ts +9 -0
  392. package/dist/guest/databases/postgres.js +85 -0
  393. package/dist/guest/databases/redis.d.ts +7 -0
  394. package/dist/guest/databases/redis.js +25 -0
  395. package/dist/guest/databases/registry.d.ts +5 -0
  396. package/dist/guest/databases/registry.js +51 -0
  397. package/dist/guest/databases/sbx-db.d.ts +1 -0
  398. package/dist/guest/databases/sbx-db.js +75 -0
  399. package/dist/guest/databases/server.d.ts +14 -0
  400. package/dist/guest/databases/server.js +57 -0
  401. package/dist/guest/entries/daemon.js +16 -0
  402. package/dist/guest/entries/db.js +12 -0
  403. package/dist/guest/entries/gitguard.js +20 -0
  404. package/dist/guest/entries/main.d.ts +1 -0
  405. package/dist/guest/entries/main.js +24 -0
  406. package/dist/guest/entries/netproxy.d.ts +1 -0
  407. package/dist/guest/entries/netproxy.js +7 -0
  408. package/dist/guest/entries/view.d.ts +1 -0
  409. package/dist/guest/entries/view.js +11 -0
  410. package/dist/guest/git/decision.d.ts +7 -0
  411. package/dist/guest/git/decision.js +83 -0
  412. package/dist/guest/network/addresses.d.ts +2 -0
  413. package/dist/guest/network/addresses.js +8 -0
  414. package/dist/guest/network/allow-only.d.ts +9 -0
  415. package/dist/guest/network/allow-only.js +84 -0
  416. package/dist/guest/network/firewall.d.ts +9 -0
  417. package/dist/guest/network/firewall.js +187 -0
  418. package/dist/guest/network/proxy-server.d.ts +2 -0
  419. package/dist/guest/network/proxy-server.js +119 -0
  420. package/dist/guest/runtime/csc.d.ts +13 -0
  421. package/dist/guest/runtime/csc.js +48 -0
  422. package/dist/guest/runtime/fs.d.ts +2 -0
  423. package/dist/guest/runtime/fs.js +8 -0
  424. package/dist/guest/runtime/log.d.ts +3 -0
  425. package/dist/guest/runtime/log.js +22 -0
  426. package/dist/guest/runtime/paths.d.ts +13 -0
  427. package/dist/guest/runtime/paths.js +14 -0
  428. package/dist/guest/runtime/ports.d.ts +8 -0
  429. package/dist/guest/runtime/ports.js +34 -0
  430. package/dist/guest/runtime/process.d.ts +23 -0
  431. package/dist/guest/runtime/process.js +83 -0
  432. package/dist/guest/runtime/project-context.d.ts +7 -0
  433. package/dist/guest/runtime/project-context.js +16 -0
  434. package/dist/guest/runtime/session.d.ts +5 -0
  435. package/dist/guest/runtime/session.js +10 -0
  436. package/dist/guest/runtime/status.d.ts +7 -0
  437. package/dist/guest/runtime/status.js +57 -0
  438. package/dist/guest/sessions/cmdline.d.ts +12 -0
  439. package/dist/guest/sessions/cmdline.js +33 -0
  440. package/dist/guest/sessions/conversation.d.ts +5 -0
  441. package/dist/guest/sessions/conversation.js +38 -0
  442. package/dist/guest/sessions/pty-host.d.ts +22 -0
  443. package/dist/guest/sessions/pty-host.js +60 -0
  444. package/dist/guest/sessions/viewer.d.ts +1 -0
  445. package/dist/guest/sessions/viewer.js +39 -0
  446. package/dist/guest/setup/claude-mem.d.ts +10 -0
  447. package/dist/guest/setup/claude-mem.js +135 -0
  448. package/dist/guest/setup/claude-profile.d.ts +7 -0
  449. package/dist/guest/setup/claude-profile.js +89 -0
  450. package/dist/guest/setup/desktop.d.ts +2 -0
  451. package/dist/guest/setup/desktop.js +23 -0
  452. package/dist/guest/setup/environment.d.ts +3 -3
  453. package/dist/guest/setup/environment.js +42 -26
  454. package/dist/guest/setup/git-identity.d.ts +5 -0
  455. package/dist/guest/setup/git-identity.js +34 -0
  456. package/dist/guest/setup/git-rules.d.ts +2 -0
  457. package/dist/guest/setup/git-rules.js +50 -0
  458. package/dist/guest/setup/hooks.d.ts +3 -3
  459. package/dist/guest/setup/hooks.js +28 -9
  460. package/dist/guest/setup/managed-policy.d.ts +3 -0
  461. package/dist/guest/setup/managed-policy.js +20 -0
  462. package/dist/guest/toolchains/catalogue.d.ts +4 -4
  463. package/dist/guest/toolchains/catalogue.js +30 -7
  464. package/dist/guest/toolchains/detect.d.ts +12 -0
  465. package/dist/guest/toolchains/detect.js +54 -0
  466. package/dist/guest/toolchains/index.d.ts +3 -17
  467. package/dist/guest/toolchains/index.js +1 -106
  468. package/dist/guest/toolchains/install.d.ts +20 -0
  469. package/dist/guest/toolchains/install.js +29 -0
  470. package/dist/guest/toolchains/languages/go.d.ts +3 -0
  471. package/dist/guest/toolchains/languages/go.js +51 -0
  472. package/dist/guest/toolchains/languages/java.d.ts +8 -0
  473. package/dist/guest/toolchains/languages/java.js +135 -0
  474. package/dist/guest/toolchains/languages/node.d.ts +3 -0
  475. package/dist/guest/toolchains/languages/node.js +185 -0
  476. package/dist/guest/toolchains/languages/php.d.ts +3 -0
  477. package/dist/guest/toolchains/languages/php.js +96 -0
  478. package/dist/guest/toolchains/languages/python-tools.d.ts +3 -0
  479. package/dist/guest/toolchains/languages/python-tools.js +12 -0
  480. package/dist/guest/toolchains/languages/python.d.ts +3 -0
  481. package/dist/guest/toolchains/languages/python.js +91 -0
  482. package/dist/guest/toolchains/languages/ruby.d.ts +3 -0
  483. package/dist/guest/toolchains/languages/ruby.js +65 -0
  484. package/dist/guest/toolchains/leftovers.d.ts +1 -1
  485. package/dist/guest/toolchains/leftovers.js +13 -11
  486. package/dist/guest/toolchains/managers.d.ts +6 -6
  487. package/dist/guest/toolchains/managers.js +38 -17
  488. package/dist/guest/toolchains/native/binstall.d.ts +3 -2
  489. package/dist/guest/toolchains/native/binstall.js +20 -8
  490. package/dist/guest/toolchains/native/cpp.d.ts +2 -2
  491. package/dist/guest/toolchains/native/cpp.js +23 -8
  492. package/dist/guest/toolchains/native/dotnet.d.ts +5 -3
  493. package/dist/guest/toolchains/native/dotnet.js +72 -24
  494. package/dist/guest/toolchains/native/mesa.d.ts +2 -2
  495. package/dist/guest/toolchains/native/mesa.js +28 -11
  496. package/dist/guest/toolchains/native/msvc/environment.d.ts +4 -4
  497. package/dist/guest/toolchains/native/msvc/environment.js +30 -16
  498. package/dist/guest/toolchains/native/msvc/index.d.ts +3 -3
  499. package/dist/guest/toolchains/native/msvc/index.js +10 -8
  500. package/dist/guest/toolchains/native/msvc/packages.d.ts +1 -1
  501. package/dist/guest/toolchains/native/msvc/packages.js +69 -23
  502. package/dist/guest/toolchains/native/msvc/tree.d.ts +6 -6
  503. package/dist/guest/toolchains/native/msvc/tree.js +15 -9
  504. package/dist/guest/toolchains/native/rust-extras.d.ts +23 -0
  505. package/dist/guest/toolchains/native/rust-extras.js +100 -0
  506. package/dist/guest/toolchains/native/rust.d.ts +2 -2
  507. package/dist/guest/toolchains/native/rust.js +41 -10
  508. package/dist/guest/toolchains/native/vcruntime.d.ts +7 -0
  509. package/dist/guest/toolchains/native/vcruntime.js +47 -0
  510. package/dist/guest/toolchains/package-ledger.d.ts +17 -0
  511. package/dist/guest/toolchains/package-ledger.js +54 -0
  512. package/dist/guest/toolchains/plan.d.ts +3 -24
  513. package/dist/guest/toolchains/plan.js +104 -111
  514. package/dist/guest/toolchains/runtimes.d.ts +6 -6
  515. package/dist/guest/toolchains/runtimes.js +31 -13
  516. package/dist/guest/toolchains/scheduler.d.ts +22 -0
  517. package/dist/guest/toolchains/scheduler.js +123 -0
  518. package/dist/guest/toolchains/setup.d.ts +10 -0
  519. package/dist/guest/toolchains/setup.js +22 -0
  520. package/dist/guest/toolchains/state-file.d.ts +3 -0
  521. package/dist/guest/toolchains/state-file.js +10 -0
  522. package/dist/guest/toolchains/step.d.ts +24 -0
  523. package/dist/guest/toolchains/step.js +1 -0
  524. package/dist/guest/toolchains/tool-env.d.ts +12 -0
  525. package/dist/guest/toolchains/tool-env.js +16 -0
  526. package/dist/guest/toolchains/tools/cli.d.ts +10 -0
  527. package/dist/guest/toolchains/tools/cli.js +92 -0
  528. package/dist/guest/toolchains/tools/git.d.ts +3 -0
  529. package/dist/guest/toolchains/tools/git.js +144 -0
  530. package/dist/guest/toolchains/tools/pwsh.d.ts +4 -0
  531. package/dist/guest/toolchains/tools/pwsh.js +21 -0
  532. package/dist/guest/toolchains/tools/vscode-profile.d.ts +30 -0
  533. package/dist/guest/toolchains/tools/vscode-profile.js +85 -0
  534. package/dist/guest/toolchains/tools/vscode.d.ts +19 -0
  535. package/dist/guest/toolchains/tools/vscode.js +180 -0
  536. package/dist/guest/toolchains/version-cache.d.ts +16 -0
  537. package/dist/guest/toolchains/version-cache.js +67 -0
  538. package/dist/host/agent-commands/commands.d.ts +13 -0
  539. package/dist/host/agent-commands/commands.js +37 -0
  540. package/dist/host/agent-commands/forwarders.d.ts +7 -0
  541. package/dist/host/agent-commands/forwarders.js +33 -0
  542. package/dist/host/agent-commands/index.d.ts +4 -0
  543. package/dist/host/agent-commands/index.js +4 -0
  544. package/dist/host/agent-commands/reconcile.d.ts +12 -0
  545. package/dist/host/agent-commands/reconcile.js +69 -0
  546. package/dist/host/agent-commands/user-path.d.ts +5 -0
  547. package/dist/host/agent-commands/user-path.js +25 -0
  548. package/dist/host/audit/collect.d.ts +4 -4
  549. package/dist/host/audit/collect.js +63 -22
  550. package/dist/host/audit/log.d.ts +3 -3
  551. package/dist/host/audit/log.js +26 -10
  552. package/dist/host/channel/attach.d.ts +17 -0
  553. package/dist/host/channel/attach.js +88 -0
  554. package/dist/host/channel/channel.d.ts +53 -0
  555. package/dist/host/channel/channel.js +198 -0
  556. package/dist/host/channel/index.d.ts +2 -0
  557. package/dist/host/channel/index.js +2 -0
  558. package/dist/host/guard/agent-files.d.ts +7 -0
  559. package/dist/host/guard/agent-files.js +103 -0
  560. package/dist/host/guard/commands.d.ts +10 -0
  561. package/dist/host/guard/commands.js +123 -0
  562. package/dist/host/guard/file-hash.d.ts +4 -0
  563. package/dist/host/guard/file-hash.js +37 -0
  564. package/dist/host/guard/git-config.d.ts +5 -0
  565. package/dist/host/guard/git-config.js +62 -0
  566. package/dist/host/guard/git-dirs.d.ts +12 -0
  567. package/dist/host/guard/git-dirs.js +53 -0
  568. package/dist/host/guard/index.d.ts +5 -0
  569. package/dist/host/guard/index.js +4 -0
  570. package/dist/host/guard/mark-of-the-web.d.ts +8 -0
  571. package/dist/host/guard/mark-of-the-web.js +74 -0
  572. package/dist/host/guard/nested-repos.d.ts +14 -0
  573. package/dist/host/guard/nested-repos.js +88 -0
  574. package/dist/host/guard/quarantine.d.ts +3 -0
  575. package/dist/host/guard/quarantine.js +24 -0
  576. package/dist/host/guard/repo-guard.d.ts +10 -0
  577. package/dist/host/guard/repo-guard.js +36 -0
  578. package/dist/host/guard/store.d.ts +40 -0
  579. package/dist/host/guard/store.js +145 -0
  580. package/dist/host/guard/types.d.ts +27 -0
  581. package/dist/host/guard/types.js +3 -0
  582. package/dist/host/guard/watch-state.d.ts +9 -0
  583. package/dist/host/guard/watch-state.js +26 -0
  584. package/dist/host/install/index.d.ts +4 -0
  585. package/dist/host/install/index.js +4 -0
  586. package/dist/host/install/install-record.d.ts +19 -0
  587. package/dist/host/install/install-record.js +28 -0
  588. package/dist/host/install/layout.d.ts +29 -0
  589. package/dist/host/install/layout.js +111 -0
  590. package/dist/host/install/scheduled-task.d.ts +10 -0
  591. package/dist/host/install/scheduled-task.js +40 -0
  592. package/dist/host/install/shims.d.ts +10 -0
  593. package/dist/host/install/shims.js +55 -0
  594. package/dist/host/launch/boot-projects.d.ts +17 -0
  595. package/dist/host/launch/boot-projects.js +71 -0
  596. package/dist/host/launch/database-plan.d.ts +12 -0
  597. package/dist/host/launch/database-plan.js +63 -0
  598. package/dist/host/launch/generate.d.ts +4 -0
  599. package/dist/host/launch/generate.js +77 -0
  600. package/dist/host/launch/index.d.ts +10 -0
  601. package/dist/host/launch/index.js +10 -0
  602. package/dist/host/launch/mappings.d.ts +5 -5
  603. package/dist/host/launch/mappings.js +41 -26
  604. package/dist/host/launch/pc-scan.d.ts +5 -0
  605. package/dist/host/launch/pc-scan.js +51 -0
  606. package/dist/host/launch/project-scan.d.ts +9 -0
  607. package/dist/host/launch/project-scan.js +112 -0
  608. package/dist/host/launch/session-file.d.ts +23 -0
  609. package/dist/host/launch/session-file.js +75 -0
  610. package/dist/host/launch/stage.d.ts +5 -5
  611. package/dist/host/launch/stage.js +14 -13
  612. package/dist/host/launch/toolchains.d.ts +4 -0
  613. package/dist/host/launch/toolchains.js +21 -0
  614. package/dist/host/launch/wsb-file.d.ts +12 -0
  615. package/dist/host/launch/wsb-file.js +56 -0
  616. package/dist/host/life/crash-report.d.ts +10 -0
  617. package/dist/host/life/crash-report.js +89 -0
  618. package/dist/host/life/index.d.ts +7 -0
  619. package/dist/host/life/index.js +7 -0
  620. package/dist/host/life/keep-awake.d.ts +11 -0
  621. package/dist/host/life/keep-awake.js +32 -0
  622. package/dist/host/life/life-record.d.ts +48 -0
  623. package/dist/host/life/life-record.js +75 -0
  624. package/dist/host/life/session-ledger.d.ts +65 -0
  625. package/dist/host/life/session-ledger.js +163 -0
  626. package/dist/host/life/stop-events.d.ts +27 -0
  627. package/dist/host/life/stop-events.js +98 -0
  628. package/dist/host/life/stop-warning.d.ts +4 -0
  629. package/dist/host/life/stop-warning.js +25 -0
  630. package/dist/host/life/windows-update.d.ts +3 -0
  631. package/dist/host/life/windows-update.js +13 -0
  632. package/dist/host/migrate/backup.d.ts +15 -0
  633. package/dist/host/migrate/backup.js +92 -0
  634. package/dist/host/migrate/index.d.ts +5 -0
  635. package/dist/host/migrate/index.js +4 -0
  636. package/dist/host/migrate/marker.d.ts +21 -0
  637. package/dist/host/migrate/marker.js +49 -0
  638. package/dist/host/migrate/migration.d.ts +26 -0
  639. package/dist/host/migrate/migration.js +3 -0
  640. package/dist/host/migrate/migrations/config-file.d.ts +8 -0
  641. package/dist/host/migrate/migrations/config-file.js +28 -0
  642. package/dist/host/migrate/migrations/follow-machine-storage.d.ts +2 -0
  643. package/dist/host/migrate/migrations/follow-machine-storage.js +36 -0
  644. package/dist/host/migrate/migrations/unpin-config-defaults.d.ts +2 -0
  645. package/dist/host/migrate/migrations/unpin-config-defaults.js +41 -0
  646. package/dist/host/migrate/registry.d.ts +2 -0
  647. package/dist/host/migrate/registry.js +3 -0
  648. package/dist/host/migrate/runner.d.ts +21 -0
  649. package/dist/host/migrate/runner.js +67 -0
  650. package/dist/host/migrate/snapshots.d.ts +6 -0
  651. package/dist/host/migrate/snapshots.js +2200 -0
  652. package/dist/host/native.d.ts +9 -0
  653. package/dist/host/native.js +61 -0
  654. package/dist/host/network/index.d.ts +1 -0
  655. package/dist/host/network/index.js +1 -0
  656. package/dist/host/network/port-forward.d.ts +8 -0
  657. package/dist/host/network/port-forward.js +49 -0
  658. package/dist/host/profile/accounts.d.ts +38 -0
  659. package/dist/host/profile/accounts.js +159 -0
  660. package/dist/host/profile/agent-accounts.d.ts +29 -0
  661. package/dist/host/profile/agent-accounts.js +169 -0
  662. package/dist/host/profile/claude-login.d.ts +22 -0
  663. package/dist/host/profile/claude-login.js +57 -0
  664. package/dist/host/profile/claude-profile.d.ts +15 -0
  665. package/dist/host/profile/claude-profile.js +117 -0
  666. package/dist/host/profile/index.d.ts +8 -0
  667. package/dist/host/profile/index.js +8 -0
  668. package/dist/host/profile/personalize.d.ts +2 -0
  669. package/dist/host/profile/personalize.js +130 -0
  670. package/dist/host/profile/reg-file.d.ts +8 -0
  671. package/dist/host/profile/reg-file.js +45 -0
  672. package/dist/host/profile/secret-files.d.ts +2 -0
  673. package/dist/host/profile/secret-files.js +25 -0
  674. package/dist/host/profile/secret-patterns.d.ts +6 -0
  675. package/dist/host/profile/secret-patterns.js +128 -0
  676. package/dist/host/profile/secrets.d.ts +12 -0
  677. package/dist/host/profile/secrets.js +100 -0
  678. package/dist/host/projects/index.d.ts +4 -0
  679. package/dist/host/projects/index.js +4 -0
  680. package/dist/host/projects/join.d.ts +38 -0
  681. package/dist/host/projects/join.js +119 -0
  682. package/dist/host/projects/known.d.ts +28 -0
  683. package/dist/host/projects/known.js +55 -0
  684. package/dist/host/projects/mapper.d.ts +29 -0
  685. package/dist/host/projects/mapper.js +88 -0
  686. package/dist/host/projects/registry.d.ts +94 -0
  687. package/dist/host/projects/registry.js +164 -0
  688. package/dist/host/sandbox/doctor.d.ts +2 -0
  689. package/dist/host/sandbox/doctor.js +42 -0
  690. package/dist/host/sandbox/host-claude.d.ts +4 -0
  691. package/dist/host/sandbox/host-claude.js +47 -0
  692. package/dist/host/sandbox/index.d.ts +6 -0
  693. package/dist/host/sandbox/index.js +6 -0
  694. package/dist/host/sandbox/platform.d.ts +16 -0
  695. package/dist/host/sandbox/platform.js +72 -0
  696. package/dist/host/sandbox/probe.d.ts +3 -0
  697. package/dist/host/sandbox/probe.js +47 -0
  698. package/dist/host/sandbox/window.d.ts +4 -0
  699. package/dist/host/sandbox/window.js +54 -0
  700. package/dist/host/sandbox/wsb-cli.d.ts +37 -0
  701. package/dist/host/sandbox/wsb-cli.js +136 -0
  702. package/dist/host/sharing/acl.d.ts +30 -0
  703. package/dist/host/sharing/acl.js +65 -0
  704. package/dist/host/sharing/active-record.d.ts +27 -0
  705. package/dist/host/sharing/active-record.js +70 -0
  706. package/dist/host/sharing/borrow.d.ts +11 -0
  707. package/dist/host/sharing/borrow.js +20 -0
  708. package/dist/host/sharing/current.d.ts +11 -0
  709. package/dist/host/sharing/current.js +37 -0
  710. package/dist/host/sharing/index.d.ts +8 -0
  711. package/dist/host/sharing/index.js +10 -0
  712. package/dist/host/sharing/lifecycle.d.ts +26 -0
  713. package/dist/host/sharing/lifecycle.js +79 -0
  714. package/dist/host/sharing/machine-paths.d.ts +6 -0
  715. package/dist/host/sharing/machine-paths.js +13 -0
  716. package/dist/host/sharing/owner.d.ts +28 -0
  717. package/dist/host/sharing/owner.js +73 -0
  718. package/dist/host/sharing/rules.d.ts +39 -0
  719. package/dist/host/sharing/rules.js +60 -0
  720. package/dist/host/storage/cleanup.d.ts +24 -0
  721. package/dist/host/storage/cleanup.js +75 -0
  722. package/dist/host/storage/index.d.ts +2 -0
  723. package/dist/host/storage/index.js +2 -0
  724. package/dist/host/storage/state-files.d.ts +4 -0
  725. package/dist/host/storage/state-files.js +10 -0
  726. package/dist/host/test-guard.d.ts +2 -2
  727. package/dist/host/test-guard.js +7 -6
  728. package/dist/host/tools/conpty.d.ts +8 -0
  729. package/dist/host/tools/conpty.js +60 -0
  730. package/dist/host/tools/index.d.ts +2 -0
  731. package/dist/host/tools/index.js +2 -0
  732. package/dist/host/tools/windows-terminal.d.ts +32 -0
  733. package/dist/host/tools/windows-terminal.js +154 -0
  734. package/dist/host/update/decision.d.ts +29 -0
  735. package/dist/host/update/decision.js +32 -0
  736. package/dist/host/update/index.d.ts +6 -0
  737. package/dist/host/update/index.js +6 -0
  738. package/dist/host/update/notice.d.ts +11 -0
  739. package/dist/host/update/notice.js +28 -0
  740. package/dist/host/update/release-source.d.ts +32 -0
  741. package/dist/host/update/release-source.js +79 -0
  742. package/dist/host/update/update-lock.d.ts +7 -0
  743. package/dist/host/update/update-lock.js +48 -0
  744. package/dist/host/update/update-state.d.ts +24 -0
  745. package/dist/host/update/update-state.js +24 -0
  746. package/dist/host/update/updater.d.ts +62 -0
  747. package/dist/host/update/updater.js +241 -0
  748. package/dist/host/workspace-view/active-views.d.ts +3 -0
  749. package/dist/host/workspace-view/active-views.js +26 -0
  750. package/dist/host/workspace-view/index.d.ts +2 -18
  751. package/dist/host/workspace-view/index.js +2 -49
  752. package/dist/host/workspace-view/plan.d.ts +16 -0
  753. package/dist/host/workspace-view/plan.js +52 -0
  754. package/dist/host/workspace-view/rules.d.ts +3 -1
  755. package/dist/host/workspace-view/rules.js +13 -4
  756. package/dist/host/workspace-view/view-state.d.ts +10 -0
  757. package/dist/host/workspace-view/view-state.js +31 -0
  758. package/dist/host/workspace-view/view.d.ts +1 -0
  759. package/dist/host/workspace-view/view.js +51 -55
  760. package/dist/runtime/daemon.js +4924 -2311
  761. package/dist/runtime/db.js +2303 -898
  762. package/dist/runtime/gitguard.js +31 -13
  763. package/dist/runtime/main.js +5129 -2490
  764. package/dist/runtime/netproxy.js +1741 -428
  765. package/dist/runtime/view.js +1542 -558
  766. package/dist/selftest/accounts.test.d.ts +1 -1
  767. package/dist/selftest/accounts.test.js +24 -21
  768. package/dist/selftest/agent-commands.test.d.ts +1 -1
  769. package/dist/selftest/agent-commands.test.js +16 -12
  770. package/dist/selftest/audit.test.d.ts +1 -1
  771. package/dist/selftest/audit.test.js +46 -13
  772. package/dist/selftest/channel.test.d.ts +1 -1
  773. package/dist/selftest/channel.test.js +113 -60
  774. package/dist/selftest/cli.test.d.ts +1 -1
  775. package/dist/selftest/cli.test.js +95 -84
  776. package/dist/selftest/cmdline.test.d.ts +1 -1
  777. package/dist/selftest/cmdline.test.js +40 -10
  778. package/dist/selftest/config.test.d.ts +1 -1
  779. package/dist/selftest/config.test.js +12 -5
  780. package/dist/selftest/data.test.d.ts +1 -1
  781. package/dist/selftest/data.test.js +71 -24
  782. package/dist/selftest/detect.test.d.ts +1 -1
  783. package/dist/selftest/detect.test.js +56 -28
  784. package/dist/selftest/generate.test.d.ts +1 -1
  785. package/dist/selftest/generate.test.js +58 -32
  786. package/dist/selftest/git-access.test.d.ts +1 -1
  787. package/dist/selftest/git-access.test.js +44 -5
  788. package/dist/selftest/guest-boot.test.d.ts +1 -1
  789. package/dist/selftest/guest-boot.test.js +61 -41
  790. package/dist/selftest/host-sim.test.d.ts +1 -1
  791. package/dist/selftest/host-sim.test.js +30 -3
  792. package/dist/selftest/hostile-input.test.d.ts +1 -1
  793. package/dist/selftest/hostile-input.test.js +7 -5
  794. package/dist/selftest/index.d.ts +4 -4
  795. package/dist/selftest/index.js +109 -25
  796. package/dist/selftest/install.test.d.ts +2 -0
  797. package/dist/selftest/install.test.js +49 -0
  798. package/dist/selftest/layout.test.d.ts +2 -0
  799. package/dist/selftest/layout.test.js +131 -0
  800. package/dist/selftest/links.test.d.ts +1 -1
  801. package/dist/selftest/links.test.js +16 -11
  802. package/dist/selftest/live-daemon.test.d.ts +1 -1
  803. package/dist/selftest/live-daemon.test.js +34 -22
  804. package/dist/selftest/live-git.test.d.ts +1 -1
  805. package/dist/selftest/live-git.test.js +15 -6
  806. package/dist/selftest/live-network.test.d.ts +1 -1
  807. package/dist/selftest/live-network.test.js +75 -11
  808. package/dist/selftest/live-projects.test.d.ts +1 -1
  809. package/dist/selftest/live-projects.test.js +62 -31
  810. package/dist/selftest/live-terminal.test.d.ts +1 -1
  811. package/dist/selftest/live-terminal.test.js +69 -31
  812. package/dist/selftest/local-config.test.d.ts +1 -1
  813. package/dist/selftest/local-config.test.js +88 -41
  814. package/dist/selftest/menu-screens.d.ts +2 -0
  815. package/dist/selftest/menu-screens.js +224 -0
  816. package/dist/selftest/menu.test.d.ts +2 -0
  817. package/dist/selftest/menu.test.js +149 -0
  818. package/dist/selftest/migrate.test.d.ts +2 -0
  819. package/dist/selftest/migrate.test.js +194 -0
  820. package/dist/selftest/mirror.test.d.ts +1 -1
  821. package/dist/selftest/mirror.test.js +108 -69
  822. package/dist/selftest/network.test.d.ts +1 -1
  823. package/dist/selftest/network.test.js +21 -12
  824. package/dist/selftest/personalization.test.d.ts +1 -1
  825. package/dist/selftest/personalization.test.js +26 -20
  826. package/dist/selftest/projects.test.d.ts +1 -1
  827. package/dist/selftest/projects.test.js +423 -215
  828. package/dist/selftest/repair.test.d.ts +1 -1
  829. package/dist/selftest/repair.test.js +17 -5
  830. package/dist/selftest/repo-guard.test.d.ts +1 -1
  831. package/dist/selftest/repo-guard.test.js +51 -48
  832. package/dist/selftest/resume.test.d.ts +2 -0
  833. package/dist/selftest/resume.test.js +175 -0
  834. package/dist/selftest/secrets.test.d.ts +1 -1
  835. package/dist/selftest/secrets.test.js +59 -15
  836. package/dist/selftest/setup.test.d.ts +1 -1
  837. package/dist/selftest/setup.test.js +56 -28
  838. package/dist/selftest/shared-use.test.d.ts +2 -0
  839. package/dist/selftest/shared-use.test.js +116 -0
  840. package/dist/selftest/sharing.test.d.ts +2 -0
  841. package/dist/selftest/sharing.test.js +201 -0
  842. package/dist/selftest/support/fixtures.d.ts +337 -0
  843. package/dist/selftest/support/fixtures.js +173 -0
  844. package/dist/selftest/support/harness.d.ts +51 -0
  845. package/dist/selftest/support/harness.js +94 -0
  846. package/dist/selftest/support/live.d.ts +71 -0
  847. package/dist/selftest/support/live.js +144 -0
  848. package/dist/selftest/support/releases.d.ts +15 -0
  849. package/dist/selftest/support/releases.js +73 -0
  850. package/dist/selftest/support/suite.js +1 -0
  851. package/dist/selftest/sync.test.d.ts +1 -1
  852. package/dist/selftest/sync.test.js +103 -63
  853. package/dist/selftest/test-guard.test.d.ts +1 -1
  854. package/dist/selftest/test-guard.test.js +43 -15
  855. package/dist/selftest/toolchains.test.d.ts +1 -1
  856. package/dist/selftest/toolchains.test.js +180 -94
  857. package/dist/selftest/update-service.test.d.ts +2 -0
  858. package/dist/selftest/update-service.test.js +188 -0
  859. package/dist/selftest/update.test.d.ts +2 -0
  860. package/dist/selftest/update.test.js +172 -0
  861. package/dist/selftest/workspace-view.test.d.ts +1 -1
  862. package/dist/selftest/workspace-view.test.js +64 -22
  863. package/dist/selftest/workspace.test.d.ts +1 -1
  864. package/dist/selftest/workspace.test.js +22 -12
  865. package/dist/shared/apps/catalogue.d.ts +44 -0
  866. package/dist/shared/apps/catalogue.js +770 -0
  867. package/dist/shared/apps/index.d.ts +2 -0
  868. package/dist/shared/apps/index.js +2 -0
  869. package/dist/shared/apps/selection.d.ts +11 -0
  870. package/dist/shared/apps/selection.js +42 -0
  871. package/dist/shared/channel/index.d.ts +2 -0
  872. package/dist/shared/channel/index.js +2 -0
  873. package/dist/shared/channel/run-dir.d.ts +30 -0
  874. package/dist/shared/channel/run-dir.js +84 -0
  875. package/dist/shared/channel/schema.d.ts +607 -0
  876. package/dist/shared/channel/schema.js +133 -0
  877. package/dist/shared/download/archive.d.ts +13 -0
  878. package/dist/shared/download/archive.js +51 -0
  879. package/dist/shared/download/downloader.d.ts +38 -0
  880. package/dist/shared/download/downloader.js +111 -0
  881. package/dist/shared/download/github.d.ts +18 -0
  882. package/dist/shared/download/github.js +77 -0
  883. package/dist/shared/download/http.d.ts +5 -0
  884. package/dist/shared/download/http.js +34 -0
  885. package/dist/shared/download/index.d.ts +5 -0
  886. package/dist/shared/download/index.js +5 -0
  887. package/dist/shared/download/spawn.d.ts +3 -0
  888. package/dist/shared/download/spawn.js +9 -0
  889. package/dist/shared/io/index.d.ts +3 -0
  890. package/dist/shared/io/index.js +3 -0
  891. package/dist/shared/io/json-file.d.ts +10 -0
  892. package/dist/shared/io/json-file.js +21 -0
  893. package/dist/shared/io/json.d.ts +13 -0
  894. package/dist/shared/io/json.js +51 -0
  895. package/dist/shared/io/safe-remove.d.ts +10 -0
  896. package/dist/shared/io/safe-remove.js +94 -0
  897. package/dist/shared/network/firewall-rules.d.ts +24 -0
  898. package/dist/shared/network/firewall-rules.js +137 -0
  899. package/dist/shared/network/index.d.ts +2 -0
  900. package/dist/shared/network/index.js +2 -0
  901. package/dist/shared/network/policy.d.ts +27 -0
  902. package/dist/shared/network/policy.js +110 -0
  903. package/dist/shared/paths/agent-profile.d.ts +9 -0
  904. package/dist/shared/paths/agent-profile.js +21 -0
  905. package/dist/shared/paths/claude-paths.d.ts +15 -0
  906. package/dist/shared/paths/claude-paths.js +43 -0
  907. package/dist/shared/paths/conversation.d.ts +23 -0
  908. package/dist/shared/paths/conversation.js +25 -0
  909. package/dist/shared/paths/guest-paths.d.ts +51 -0
  910. package/dist/shared/paths/guest-paths.js +150 -0
  911. package/dist/shared/paths/index.d.ts +5 -0
  912. package/dist/shared/paths/index.js +5 -0
  913. package/dist/shared/paths/projects.d.ts +81 -0
  914. package/dist/shared/paths/projects.js +149 -0
  915. package/dist/shared/pty/client.d.ts +21 -0
  916. package/dist/shared/pty/client.js +79 -0
  917. package/dist/shared/pty/console-input.d.ts +11 -0
  918. package/dist/shared/pty/console-input.js +50 -0
  919. package/dist/shared/pty/index.d.ts +6 -0
  920. package/dist/shared/pty/index.js +6 -0
  921. package/dist/shared/pty/input-joiner.d.ts +15 -0
  922. package/dist/shared/pty/input-joiner.js +44 -0
  923. package/dist/shared/pty/output-filter.d.ts +16 -0
  924. package/dist/shared/pty/output-filter.js +143 -0
  925. package/dist/shared/pty/protocol.d.ts +38 -0
  926. package/dist/shared/pty/protocol.js +62 -0
  927. package/dist/shared/pty/terminal.d.ts +27 -0
  928. package/dist/shared/pty/terminal.js +153 -0
  929. package/dist/shared/scripts.d.ts +4 -0
  930. package/dist/shared/scripts.js +26 -0
  931. package/dist/shared/system.d.ts +11 -1
  932. package/dist/shared/system.js +15 -1
  933. package/dist/shared/test-guard.d.ts +3 -3
  934. package/dist/shared/test-guard.js +18 -10
  935. package/dist/sync/claude-mem.d.ts +3 -3
  936. package/dist/sync/claude-mem.js +19 -11
  937. package/dist/sync/history.d.ts +5 -33
  938. package/dist/sync/history.js +66 -51
  939. package/dist/sync/index.d.ts +5 -0
  940. package/dist/sync/index.js +5 -0
  941. package/dist/sync/sync-cycle.d.ts +18 -0
  942. package/dist/sync/sync-cycle.js +85 -0
  943. package/dist/sync/sync-state.d.ts +32 -0
  944. package/dist/sync/sync-state.js +43 -0
  945. package/dist/sync/watcher.d.ts +39 -17
  946. package/dist/sync/watcher.js +222 -155
  947. package/native/csharp/HostTools/KeepAwake.cs +24 -0
  948. package/native/csharp/HostTools/Program.cs +227 -0
  949. package/native/csharp/HostTools/UserPath.cs +74 -0
  950. package/native/csharp/HostTools/Window.cs +143 -0
  951. package/native/scripts/capture-look.ps1 +22 -0
  952. package/native/scripts/check-syntax.ps1 +14 -0
  953. package/native/scripts/edit-user-path.ps1 +11 -0
  954. package/native/scripts/hide-window.ps1 +8 -0
  955. package/native/scripts/keep-awake.ps1 +8 -0
  956. package/native/scripts/run-elevated.ps1 +12 -0
  957. package/native/scripts/sandbox-probe.ps1 +15 -0
  958. package/native/scripts/set-folder-access.ps1 +44 -0
  959. package/native/scripts/set-update-task.ps1 +43 -0
  960. package/native/scripts/show-window.ps1 +13 -0
  961. package/native/scripts/stop-events.ps1 +38 -0
  962. package/node_modules/@inquirer/ansi/LICENSE +22 -0
  963. package/node_modules/@inquirer/ansi/README.md +89 -0
  964. package/node_modules/@inquirer/ansi/dist/commonjs/index.d.ts +14 -0
  965. package/node_modules/@inquirer/ansi/dist/commonjs/index.js +28 -0
  966. package/node_modules/@inquirer/ansi/dist/commonjs/package.json +3 -0
  967. package/node_modules/@inquirer/ansi/dist/esm/index.d.ts +14 -0
  968. package/node_modules/@inquirer/ansi/dist/esm/index.js +21 -0
  969. package/node_modules/@inquirer/ansi/dist/esm/package.json +3 -0
  970. package/node_modules/@inquirer/ansi/package.json +97 -0
  971. package/node_modules/@inquirer/checkbox/LICENSE +22 -0
  972. package/node_modules/@inquirer/checkbox/README.md +188 -0
  973. package/node_modules/@inquirer/checkbox/dist/commonjs/index.d.ts +57 -0
  974. package/node_modules/@inquirer/checkbox/dist/commonjs/index.js +209 -0
  975. package/node_modules/@inquirer/checkbox/dist/commonjs/package.json +3 -0
  976. package/node_modules/@inquirer/checkbox/dist/esm/index.d.ts +57 -0
  977. package/node_modules/@inquirer/checkbox/dist/esm/index.js +202 -0
  978. package/node_modules/@inquirer/checkbox/dist/esm/package.json +3 -0
  979. package/node_modules/@inquirer/checkbox/package.json +113 -0
  980. package/node_modules/@inquirer/confirm/LICENSE +22 -0
  981. package/node_modules/@inquirer/confirm/README.md +92 -0
  982. package/node_modules/@inquirer/confirm/dist/commonjs/index.d.ts +10 -0
  983. package/node_modules/@inquirer/confirm/dist/commonjs/index.js +50 -0
  984. package/node_modules/@inquirer/confirm/dist/commonjs/package.json +3 -0
  985. package/node_modules/@inquirer/confirm/dist/esm/index.d.ts +10 -0
  986. package/node_modules/@inquirer/confirm/dist/esm/index.js +48 -0
  987. package/node_modules/@inquirer/confirm/dist/esm/package.json +3 -0
  988. package/node_modules/@inquirer/confirm/package.json +110 -0
  989. package/node_modules/@inquirer/core/LICENSE +22 -0
  990. package/node_modules/@inquirer/core/README.md +383 -0
  991. package/node_modules/@inquirer/core/dist/commonjs/index.d.ts +13 -0
  992. package/node_modules/@inquirer/core/dist/commonjs/index.js +46 -0
  993. package/node_modules/@inquirer/core/dist/commonjs/lib/Separator.d.ts +10 -0
  994. package/node_modules/@inquirer/core/dist/commonjs/lib/Separator.js +28 -0
  995. package/node_modules/@inquirer/core/dist/commonjs/lib/create-prompt.d.ts +4 -0
  996. package/node_modules/@inquirer/core/dist/commonjs/lib/create-prompt.js +156 -0
  997. package/node_modules/@inquirer/core/dist/commonjs/lib/errors.d.ts +20 -0
  998. package/node_modules/@inquirer/core/dist/commonjs/lib/errors.js +29 -0
  999. package/node_modules/@inquirer/core/dist/commonjs/lib/hook-engine.d.ts +23 -0
  1000. package/node_modules/@inquirer/core/dist/commonjs/lib/hook-engine.js +118 -0
  1001. package/node_modules/@inquirer/core/dist/commonjs/lib/key.d.ts +12 -0
  1002. package/node_modules/@inquirer/core/dist/commonjs/lib/key.js +29 -0
  1003. package/node_modules/@inquirer/core/dist/commonjs/lib/make-theme.d.ts +3 -0
  1004. package/node_modules/@inquirer/core/dist/commonjs/lib/make-theme.js +33 -0
  1005. package/node_modules/@inquirer/core/dist/commonjs/lib/pagination/use-pagination.d.ts +16 -0
  1006. package/node_modules/@inquirer/core/dist/commonjs/lib/pagination/use-pagination.js +124 -0
  1007. package/node_modules/@inquirer/core/dist/commonjs/lib/promise-polyfill.d.ts +7 -0
  1008. package/node_modules/@inquirer/core/dist/commonjs/lib/promise-polyfill.js +18 -0
  1009. package/node_modules/@inquirer/core/dist/commonjs/lib/screen-manager.d.ts +14 -0
  1010. package/node_modules/@inquirer/core/dist/commonjs/lib/screen-manager.js +82 -0
  1011. package/node_modules/@inquirer/core/dist/commonjs/lib/theme.d.ts +155 -0
  1012. package/node_modules/@inquirer/core/dist/commonjs/lib/theme.js +27 -0
  1013. package/node_modules/@inquirer/core/dist/commonjs/lib/use-effect.d.ts +2 -0
  1014. package/node_modules/@inquirer/core/dist/commonjs/lib/use-effect.js +14 -0
  1015. package/node_modules/@inquirer/core/dist/commonjs/lib/use-keypress.d.ts +3 -0
  1016. package/node_modules/@inquirer/core/dist/commonjs/lib/use-keypress.js +23 -0
  1017. package/node_modules/@inquirer/core/dist/commonjs/lib/use-memo.d.ts +1 -0
  1018. package/node_modules/@inquirer/core/dist/commonjs/lib/use-memo.js +17 -0
  1019. package/node_modules/@inquirer/core/dist/commonjs/lib/use-prefix.d.ts +5 -0
  1020. package/node_modules/@inquirer/core/dist/commonjs/lib/use-prefix.js +38 -0
  1021. package/node_modules/@inquirer/core/dist/commonjs/lib/use-ref.d.ts +6 -0
  1022. package/node_modules/@inquirer/core/dist/commonjs/lib/use-ref.js +7 -0
  1023. package/node_modules/@inquirer/core/dist/commonjs/lib/use-state.d.ts +4 -0
  1024. package/node_modules/@inquirer/core/dist/commonjs/lib/use-state.js +23 -0
  1025. package/node_modules/@inquirer/core/dist/commonjs/lib/utils.d.ts +13 -0
  1026. package/node_modules/@inquirer/core/dist/commonjs/lib/utils.js +32 -0
  1027. package/node_modules/@inquirer/core/dist/commonjs/package.json +3 -0
  1028. package/node_modules/@inquirer/core/dist/esm/index.d.ts +13 -0
  1029. package/node_modules/@inquirer/core/dist/esm/index.js +12 -0
  1030. package/node_modules/@inquirer/core/dist/esm/lib/Separator.d.ts +10 -0
  1031. package/node_modules/@inquirer/core/dist/esm/lib/Separator.js +21 -0
  1032. package/node_modules/@inquirer/core/dist/esm/lib/create-prompt.d.ts +4 -0
  1033. package/node_modules/@inquirer/core/dist/esm/lib/create-prompt.js +117 -0
  1034. package/node_modules/@inquirer/core/dist/esm/lib/errors.d.ts +20 -0
  1035. package/node_modules/@inquirer/core/dist/esm/lib/errors.js +21 -0
  1036. package/node_modules/@inquirer/core/dist/esm/lib/hook-engine.d.ts +23 -0
  1037. package/node_modules/@inquirer/core/dist/esm/lib/hook-engine.js +110 -0
  1038. package/node_modules/@inquirer/core/dist/esm/lib/key.d.ts +12 -0
  1039. package/node_modules/@inquirer/core/dist/esm/lib/key.js +19 -0
  1040. package/node_modules/@inquirer/core/dist/esm/lib/make-theme.d.ts +3 -0
  1041. package/node_modules/@inquirer/core/dist/esm/lib/make-theme.js +30 -0
  1042. package/node_modules/@inquirer/core/dist/esm/lib/pagination/use-pagination.d.ts +16 -0
  1043. package/node_modules/@inquirer/core/dist/esm/lib/pagination/use-pagination.js +121 -0
  1044. package/node_modules/@inquirer/core/dist/esm/lib/promise-polyfill.d.ts +7 -0
  1045. package/node_modules/@inquirer/core/dist/esm/lib/promise-polyfill.js +14 -0
  1046. package/node_modules/@inquirer/core/dist/esm/lib/screen-manager.d.ts +14 -0
  1047. package/node_modules/@inquirer/core/dist/esm/lib/screen-manager.js +79 -0
  1048. package/node_modules/@inquirer/core/dist/esm/lib/theme.d.ts +155 -0
  1049. package/node_modules/@inquirer/core/dist/esm/lib/theme.js +21 -0
  1050. package/node_modules/@inquirer/core/dist/esm/lib/use-effect.d.ts +2 -0
  1051. package/node_modules/@inquirer/core/dist/esm/lib/use-effect.js +11 -0
  1052. package/node_modules/@inquirer/core/dist/esm/lib/use-keypress.d.ts +3 -0
  1053. package/node_modules/@inquirer/core/dist/esm/lib/use-keypress.js +20 -0
  1054. package/node_modules/@inquirer/core/dist/esm/lib/use-memo.d.ts +1 -0
  1055. package/node_modules/@inquirer/core/dist/esm/lib/use-memo.js +14 -0
  1056. package/node_modules/@inquirer/core/dist/esm/lib/use-prefix.d.ts +5 -0
  1057. package/node_modules/@inquirer/core/dist/esm/lib/use-prefix.js +35 -0
  1058. package/node_modules/@inquirer/core/dist/esm/lib/use-ref.d.ts +6 -0
  1059. package/node_modules/@inquirer/core/dist/esm/lib/use-ref.js +4 -0
  1060. package/node_modules/@inquirer/core/dist/esm/lib/use-state.d.ts +4 -0
  1061. package/node_modules/@inquirer/core/dist/esm/lib/use-state.js +20 -0
  1062. package/node_modules/@inquirer/core/dist/esm/lib/utils.d.ts +13 -0
  1063. package/node_modules/@inquirer/core/dist/esm/lib/utils.js +25 -0
  1064. package/node_modules/@inquirer/core/dist/esm/package.json +3 -0
  1065. package/node_modules/@inquirer/core/package.json +119 -0
  1066. package/node_modules/@inquirer/editor/LICENSE +22 -0
  1067. package/node_modules/@inquirer/editor/README.md +101 -0
  1068. package/node_modules/@inquirer/editor/dist/commonjs/index.d.ts +17 -0
  1069. package/node_modules/@inquirer/editor/dist/commonjs/index.js +76 -0
  1070. package/node_modules/@inquirer/editor/dist/commonjs/package.json +3 -0
  1071. package/node_modules/@inquirer/editor/dist/esm/index.d.ts +17 -0
  1072. package/node_modules/@inquirer/editor/dist/esm/index.js +74 -0
  1073. package/node_modules/@inquirer/editor/dist/esm/package.json +3 -0
  1074. package/node_modules/@inquirer/editor/package.json +111 -0
  1075. package/node_modules/@inquirer/expand/LICENSE +22 -0
  1076. package/node_modules/@inquirer/expand/README.md +141 -0
  1077. package/node_modules/@inquirer/expand/dist/commonjs/index.d.ts +25 -0
  1078. package/node_modules/@inquirer/expand/dist/commonjs/index.js +115 -0
  1079. package/node_modules/@inquirer/expand/dist/commonjs/package.json +3 -0
  1080. package/node_modules/@inquirer/expand/dist/esm/index.d.ts +25 -0
  1081. package/node_modules/@inquirer/expand/dist/esm/index.js +108 -0
  1082. package/node_modules/@inquirer/expand/dist/esm/package.json +3 -0
  1083. package/node_modules/@inquirer/expand/package.json +111 -0
  1084. package/node_modules/@inquirer/external-editor/LICENSE +22 -0
  1085. package/node_modules/@inquirer/external-editor/README.md +154 -0
  1086. package/node_modules/@inquirer/external-editor/dist/commonjs/errors/CreateFileError.d.ts +10 -0
  1087. package/node_modules/@inquirer/external-editor/dist/commonjs/errors/CreateFileError.js +17 -0
  1088. package/node_modules/@inquirer/external-editor/dist/commonjs/errors/LaunchEditorError.d.ts +10 -0
  1089. package/node_modules/@inquirer/external-editor/dist/commonjs/errors/LaunchEditorError.js +17 -0
  1090. package/node_modules/@inquirer/external-editor/dist/commonjs/errors/ReadFileError.d.ts +10 -0
  1091. package/node_modules/@inquirer/external-editor/dist/commonjs/errors/ReadFileError.js +17 -0
  1092. package/node_modules/@inquirer/external-editor/dist/commonjs/errors/RemoveFileError.d.ts +10 -0
  1093. package/node_modules/@inquirer/external-editor/dist/commonjs/errors/RemoveFileError.js +17 -0
  1094. package/node_modules/@inquirer/external-editor/dist/commonjs/index.d.ts +39 -0
  1095. package/node_modules/@inquirer/external-editor/dist/commonjs/index.js +203 -0
  1096. package/node_modules/@inquirer/external-editor/dist/commonjs/package.json +3 -0
  1097. package/node_modules/@inquirer/external-editor/dist/esm/errors/CreateFileError.d.ts +10 -0
  1098. package/node_modules/@inquirer/external-editor/dist/esm/errors/CreateFileError.js +13 -0
  1099. package/node_modules/@inquirer/external-editor/dist/esm/errors/LaunchEditorError.d.ts +10 -0
  1100. package/node_modules/@inquirer/external-editor/dist/esm/errors/LaunchEditorError.js +13 -0
  1101. package/node_modules/@inquirer/external-editor/dist/esm/errors/ReadFileError.d.ts +10 -0
  1102. package/node_modules/@inquirer/external-editor/dist/esm/errors/ReadFileError.js +13 -0
  1103. package/node_modules/@inquirer/external-editor/dist/esm/errors/RemoveFileError.d.ts +10 -0
  1104. package/node_modules/@inquirer/external-editor/dist/esm/errors/RemoveFileError.js +13 -0
  1105. package/node_modules/@inquirer/external-editor/dist/esm/index.d.ts +39 -0
  1106. package/node_modules/@inquirer/external-editor/dist/esm/index.js +191 -0
  1107. package/node_modules/@inquirer/external-editor/dist/esm/package.json +3 -0
  1108. package/node_modules/@inquirer/external-editor/package.json +115 -0
  1109. package/node_modules/@inquirer/figures/LICENSE +22 -0
  1110. package/node_modules/@inquirer/figures/dist/commonjs/index.d.ts +275 -0
  1111. package/node_modules/@inquirer/figures/dist/commonjs/index.js +321 -0
  1112. package/node_modules/@inquirer/figures/dist/commonjs/package.json +3 -0
  1113. package/node_modules/@inquirer/figures/dist/esm/index.d.ts +275 -0
  1114. package/node_modules/@inquirer/figures/dist/esm/index.js +314 -0
  1115. package/node_modules/@inquirer/figures/dist/esm/package.json +3 -0
  1116. package/node_modules/@inquirer/figures/package.json +98 -0
  1117. package/node_modules/@inquirer/input/LICENSE +22 -0
  1118. package/node_modules/@inquirer/input/README.md +101 -0
  1119. package/node_modules/@inquirer/input/dist/commonjs/index.d.ts +20 -0
  1120. package/node_modules/@inquirer/input/dist/commonjs/index.js +99 -0
  1121. package/node_modules/@inquirer/input/dist/commonjs/package.json +3 -0
  1122. package/node_modules/@inquirer/input/dist/esm/index.d.ts +20 -0
  1123. package/node_modules/@inquirer/input/dist/esm/index.js +97 -0
  1124. package/node_modules/@inquirer/input/dist/esm/package.json +3 -0
  1125. package/node_modules/@inquirer/input/package.json +110 -0
  1126. package/node_modules/@inquirer/number/LICENSE +22 -0
  1127. package/node_modules/@inquirer/number/README.md +95 -0
  1128. package/node_modules/@inquirer/number/dist/commonjs/index.d.ts +15 -0
  1129. package/node_modules/@inquirer/number/dist/commonjs/index.js +96 -0
  1130. package/node_modules/@inquirer/number/dist/commonjs/package.json +3 -0
  1131. package/node_modules/@inquirer/number/dist/esm/index.d.ts +15 -0
  1132. package/node_modules/@inquirer/number/dist/esm/index.js +94 -0
  1133. package/node_modules/@inquirer/number/dist/esm/package.json +3 -0
  1134. package/node_modules/@inquirer/number/package.json +110 -0
  1135. package/node_modules/@inquirer/password/LICENSE +22 -0
  1136. package/node_modules/@inquirer/password/README.md +93 -0
  1137. package/node_modules/@inquirer/password/dist/commonjs/index.d.ts +10 -0
  1138. package/node_modules/@inquirer/password/dist/commonjs/index.js +57 -0
  1139. package/node_modules/@inquirer/password/dist/commonjs/package.json +3 -0
  1140. package/node_modules/@inquirer/password/dist/esm/index.d.ts +10 -0
  1141. package/node_modules/@inquirer/password/dist/esm/index.js +55 -0
  1142. package/node_modules/@inquirer/password/dist/esm/package.json +3 -0
  1143. package/node_modules/@inquirer/password/package.json +111 -0
  1144. package/node_modules/@inquirer/prompts/LICENSE +22 -0
  1145. package/node_modules/@inquirer/prompts/README.md +528 -0
  1146. package/node_modules/@inquirer/prompts/dist/commonjs/index.d.ts +10 -0
  1147. package/node_modules/@inquirer/prompts/dist/commonjs/index.js +27 -0
  1148. package/node_modules/@inquirer/prompts/dist/commonjs/package.json +3 -0
  1149. package/node_modules/@inquirer/prompts/dist/esm/index.d.ts +10 -0
  1150. package/node_modules/@inquirer/prompts/dist/esm/index.js +10 -0
  1151. package/node_modules/@inquirer/prompts/dist/esm/package.json +3 -0
  1152. package/node_modules/@inquirer/prompts/package.json +120 -0
  1153. package/node_modules/@inquirer/rawlist/LICENSE +22 -0
  1154. package/node_modules/@inquirer/rawlist/README.md +124 -0
  1155. package/node_modules/@inquirer/rawlist/dist/commonjs/index.d.ts +18 -0
  1156. package/node_modules/@inquirer/rawlist/dist/commonjs/index.js +132 -0
  1157. package/node_modules/@inquirer/rawlist/dist/commonjs/package.json +3 -0
  1158. package/node_modules/@inquirer/rawlist/dist/esm/index.d.ts +18 -0
  1159. package/node_modules/@inquirer/rawlist/dist/esm/index.js +125 -0
  1160. package/node_modules/@inquirer/rawlist/dist/esm/package.json +3 -0
  1161. package/node_modules/@inquirer/rawlist/package.json +111 -0
  1162. package/node_modules/@inquirer/search/LICENSE +22 -0
  1163. package/node_modules/@inquirer/search/README.md +212 -0
  1164. package/node_modules/@inquirer/search/dist/commonjs/index.d.ts +40 -0
  1165. package/node_modules/@inquirer/search/dist/commonjs/index.js +206 -0
  1166. package/node_modules/@inquirer/search/dist/commonjs/package.json +3 -0
  1167. package/node_modules/@inquirer/search/dist/esm/index.d.ts +40 -0
  1168. package/node_modules/@inquirer/search/dist/esm/index.js +199 -0
  1169. package/node_modules/@inquirer/search/dist/esm/package.json +3 -0
  1170. package/node_modules/@inquirer/search/package.json +112 -0
  1171. package/node_modules/@inquirer/select/LICENSE +22 -0
  1172. package/node_modules/@inquirer/select/README.md +181 -0
  1173. package/node_modules/@inquirer/select/dist/commonjs/index.d.ts +40 -0
  1174. package/node_modules/@inquirer/select/dist/commonjs/index.js +194 -0
  1175. package/node_modules/@inquirer/select/dist/commonjs/package.json +3 -0
  1176. package/node_modules/@inquirer/select/dist/esm/index.d.ts +40 -0
  1177. package/node_modules/@inquirer/select/dist/esm/index.js +187 -0
  1178. package/node_modules/@inquirer/select/dist/esm/package.json +3 -0
  1179. package/node_modules/@inquirer/select/package.json +113 -0
  1180. package/node_modules/@inquirer/type/LICENSE +22 -0
  1181. package/node_modules/@inquirer/type/dist/commonjs/index.d.ts +2 -0
  1182. package/node_modules/@inquirer/type/dist/commonjs/index.js +18 -0
  1183. package/node_modules/@inquirer/type/dist/commonjs/inquirer.d.ts +38 -0
  1184. package/node_modules/@inquirer/type/dist/commonjs/inquirer.js +2 -0
  1185. package/node_modules/@inquirer/type/dist/commonjs/package.json +3 -0
  1186. package/node_modules/@inquirer/type/dist/commonjs/utils.d.ts +29 -0
  1187. package/node_modules/@inquirer/type/dist/commonjs/utils.js +3 -0
  1188. package/node_modules/@inquirer/type/dist/esm/index.d.ts +2 -0
  1189. package/node_modules/@inquirer/type/dist/esm/index.js +2 -0
  1190. package/node_modules/@inquirer/type/dist/esm/inquirer.d.ts +38 -0
  1191. package/node_modules/@inquirer/type/dist/esm/inquirer.js +1 -0
  1192. package/node_modules/@inquirer/type/dist/esm/package.json +3 -0
  1193. package/node_modules/@inquirer/type/dist/esm/utils.d.ts +29 -0
  1194. package/node_modules/@inquirer/type/dist/esm/utils.js +2 -0
  1195. package/node_modules/@inquirer/type/package.json +106 -0
  1196. package/node_modules/ansi-regex/index.d.ts +37 -0
  1197. package/node_modules/ansi-regex/index.js +10 -0
  1198. package/node_modules/ansi-regex/license +9 -0
  1199. package/node_modules/ansi-regex/package.json +55 -0
  1200. package/node_modules/ansi-regex/readme.md +78 -0
  1201. package/node_modules/ansi-styles/index.d.ts +345 -0
  1202. package/node_modules/ansi-styles/index.js +163 -0
  1203. package/node_modules/ansi-styles/license +9 -0
  1204. package/node_modules/ansi-styles/package.json +56 -0
  1205. package/node_modules/ansi-styles/readme.md +152 -0
  1206. package/node_modules/chardet/LICENSE +19 -0
  1207. package/node_modules/chardet/README.md +135 -0
  1208. package/node_modules/chardet/lib/encoding/ascii.d.ts +6 -0
  1209. package/node_modules/chardet/lib/encoding/ascii.js +23 -0
  1210. package/node_modules/chardet/lib/encoding/ascii.js.map +1 -0
  1211. package/node_modules/chardet/lib/encoding/index.d.ts +14 -0
  1212. package/node_modules/chardet/lib/encoding/index.js +3 -0
  1213. package/node_modules/chardet/lib/encoding/index.js.map +1 -0
  1214. package/node_modules/chardet/lib/encoding/iso2022.d.ts +23 -0
  1215. package/node_modules/chardet/lib/encoding/iso2022.js +114 -0
  1216. package/node_modules/chardet/lib/encoding/iso2022.js.map +1 -0
  1217. package/node_modules/chardet/lib/encoding/mbcs.d.ts +50 -0
  1218. package/node_modules/chardet/lib/encoding/mbcs.js +347 -0
  1219. package/node_modules/chardet/lib/encoding/mbcs.js.map +1 -0
  1220. package/node_modules/chardet/lib/encoding/sbcs.d.ts +94 -0
  1221. package/node_modules/chardet/lib/encoding/sbcs.js +935 -0
  1222. package/node_modules/chardet/lib/encoding/sbcs.js.map +1 -0
  1223. package/node_modules/chardet/lib/encoding/unicode.d.ts +27 -0
  1224. package/node_modules/chardet/lib/encoding/unicode.js +109 -0
  1225. package/node_modules/chardet/lib/encoding/unicode.js.map +1 -0
  1226. package/node_modules/chardet/lib/encoding/utf8.d.ts +6 -0
  1227. package/node_modules/chardet/lib/encoding/utf8.js +72 -0
  1228. package/node_modules/chardet/lib/encoding/utf8.js.map +1 -0
  1229. package/node_modules/chardet/lib/fs/browser.d.ts +2 -0
  1230. package/node_modules/chardet/lib/fs/browser.js +6 -0
  1231. package/node_modules/chardet/lib/fs/browser.js.map +1 -0
  1232. package/node_modules/chardet/lib/fs/node.d.ts +2 -0
  1233. package/node_modules/chardet/lib/fs/node.js +11 -0
  1234. package/node_modules/chardet/lib/fs/node.js.map +1 -0
  1235. package/node_modules/chardet/lib/index.d.ts +20 -0
  1236. package/node_modules/chardet/lib/index.js +177 -0
  1237. package/node_modules/chardet/lib/index.js.map +1 -0
  1238. package/node_modules/chardet/lib/match.d.ts +9 -0
  1239. package/node_modules/chardet/lib/match.js +8 -0
  1240. package/node_modules/chardet/lib/match.js.map +1 -0
  1241. package/node_modules/chardet/lib/utils.d.ts +1 -0
  1242. package/node_modules/chardet/lib/utils.js +10 -0
  1243. package/node_modules/chardet/lib/utils.js.map +1 -0
  1244. package/node_modules/chardet/package.json +100 -0
  1245. package/node_modules/cli-width/LICENSE +13 -0
  1246. package/node_modules/cli-width/README.md +71 -0
  1247. package/node_modules/cli-width/index.d.ts +13 -0
  1248. package/node_modules/cli-width/index.js +49 -0
  1249. package/node_modules/cli-width/package.json +40 -0
  1250. package/node_modules/color-convert/CHANGELOG.md +54 -0
  1251. package/node_modules/color-convert/LICENSE +21 -0
  1252. package/node_modules/color-convert/README.md +68 -0
  1253. package/node_modules/color-convert/conversions.js +839 -0
  1254. package/node_modules/color-convert/index.js +81 -0
  1255. package/node_modules/color-convert/package.json +48 -0
  1256. package/node_modules/color-convert/route.js +97 -0
  1257. package/node_modules/color-name/LICENSE +8 -0
  1258. package/node_modules/color-name/README.md +11 -0
  1259. package/node_modules/color-name/index.js +152 -0
  1260. package/node_modules/color-name/package.json +28 -0
  1261. package/node_modules/commander/LICENSE +22 -0
  1262. package/node_modules/commander/Readme.md +1176 -0
  1263. package/node_modules/commander/esm.mjs +16 -0
  1264. package/node_modules/commander/index.js +24 -0
  1265. package/node_modules/commander/lib/argument.js +150 -0
  1266. package/node_modules/commander/lib/command.js +2777 -0
  1267. package/node_modules/commander/lib/error.js +39 -0
  1268. package/node_modules/commander/lib/help.js +747 -0
  1269. package/node_modules/commander/lib/option.js +380 -0
  1270. package/node_modules/commander/lib/suggestSimilar.js +101 -0
  1271. package/node_modules/commander/package-support.json +19 -0
  1272. package/node_modules/commander/package.json +82 -0
  1273. package/node_modules/commander/typings/esm.d.mts +3 -0
  1274. package/node_modules/commander/typings/index.d.ts +1113 -0
  1275. package/node_modules/emoji-regex/LICENSE-MIT.txt +20 -0
  1276. package/node_modules/emoji-regex/README.md +73 -0
  1277. package/node_modules/emoji-regex/es2015/index.js +6 -0
  1278. package/node_modules/emoji-regex/es2015/text.js +6 -0
  1279. package/node_modules/emoji-regex/index.d.ts +23 -0
  1280. package/node_modules/emoji-regex/index.js +6 -0
  1281. package/node_modules/emoji-regex/package.json +50 -0
  1282. package/node_modules/emoji-regex/text.js +6 -0
  1283. package/node_modules/iconv-lite/LICENSE +21 -0
  1284. package/node_modules/iconv-lite/README.md +138 -0
  1285. package/node_modules/iconv-lite/encodings/dbcs-codec.js +532 -0
  1286. package/node_modules/iconv-lite/encodings/dbcs-data.js +185 -0
  1287. package/node_modules/iconv-lite/encodings/index.js +23 -0
  1288. package/node_modules/iconv-lite/encodings/internal.js +218 -0
  1289. package/node_modules/iconv-lite/encodings/sbcs-codec.js +75 -0
  1290. package/node_modules/iconv-lite/encodings/sbcs-data-generated.js +451 -0
  1291. package/node_modules/iconv-lite/encodings/sbcs-data.js +180 -0
  1292. package/node_modules/iconv-lite/encodings/tables/big5-added.json +122 -0
  1293. package/node_modules/iconv-lite/encodings/tables/cp936.json +264 -0
  1294. package/node_modules/iconv-lite/encodings/tables/cp949.json +273 -0
  1295. package/node_modules/iconv-lite/encodings/tables/cp950.json +177 -0
  1296. package/node_modules/iconv-lite/encodings/tables/eucjp.json +182 -0
  1297. package/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +1 -0
  1298. package/node_modules/iconv-lite/encodings/tables/gbk-added.json +56 -0
  1299. package/node_modules/iconv-lite/encodings/tables/shiftjis.json +125 -0
  1300. package/node_modules/iconv-lite/encodings/utf16.js +187 -0
  1301. package/node_modules/iconv-lite/encodings/utf32.js +314 -0
  1302. package/node_modules/iconv-lite/encodings/utf7.js +283 -0
  1303. package/node_modules/iconv-lite/lib/bom-handling.js +48 -0
  1304. package/node_modules/iconv-lite/lib/helpers/merge-exports.js +13 -0
  1305. package/node_modules/iconv-lite/lib/index.d.ts +129 -0
  1306. package/node_modules/iconv-lite/lib/index.js +182 -0
  1307. package/node_modules/iconv-lite/lib/streams.js +105 -0
  1308. package/node_modules/iconv-lite/package.json +70 -0
  1309. package/node_modules/iconv-lite/types/encodings.d.ts +425 -0
  1310. package/node_modules/ignore/LICENSE-MIT +21 -0
  1311. package/node_modules/ignore/README.md +501 -0
  1312. package/node_modules/ignore/index.d.ts +81 -0
  1313. package/node_modules/ignore/index.js +1566 -0
  1314. package/node_modules/ignore/legacy.js +1346 -0
  1315. package/node_modules/ignore/package.json +93 -0
  1316. package/node_modules/is-fullwidth-code-point/index.d.ts +17 -0
  1317. package/node_modules/is-fullwidth-code-point/index.js +50 -0
  1318. package/node_modules/is-fullwidth-code-point/license +9 -0
  1319. package/node_modules/is-fullwidth-code-point/package.json +42 -0
  1320. package/node_modules/is-fullwidth-code-point/readme.md +39 -0
  1321. package/node_modules/jsonc-parser/CHANGELOG.md +76 -0
  1322. package/node_modules/jsonc-parser/LICENSE.md +21 -0
  1323. package/node_modules/jsonc-parser/README.md +364 -0
  1324. package/node_modules/jsonc-parser/SECURITY.md +41 -0
  1325. package/node_modules/jsonc-parser/lib/esm/impl/edit.js +185 -0
  1326. package/node_modules/jsonc-parser/lib/esm/impl/format.js +261 -0
  1327. package/node_modules/jsonc-parser/lib/esm/impl/parser.js +659 -0
  1328. package/node_modules/jsonc-parser/lib/esm/impl/scanner.js +443 -0
  1329. package/node_modules/jsonc-parser/lib/esm/impl/string-intern.js +29 -0
  1330. package/node_modules/jsonc-parser/lib/esm/main.d.ts +351 -0
  1331. package/node_modules/jsonc-parser/lib/esm/main.js +178 -0
  1332. package/node_modules/jsonc-parser/lib/umd/impl/edit.js +201 -0
  1333. package/node_modules/jsonc-parser/lib/umd/impl/format.js +275 -0
  1334. package/node_modules/jsonc-parser/lib/umd/impl/parser.js +682 -0
  1335. package/node_modules/jsonc-parser/lib/umd/impl/scanner.js +456 -0
  1336. package/node_modules/jsonc-parser/lib/umd/impl/string-intern.js +42 -0
  1337. package/node_modules/jsonc-parser/lib/umd/main.d.ts +351 -0
  1338. package/node_modules/jsonc-parser/lib/umd/main.js +194 -0
  1339. package/node_modules/jsonc-parser/package.json +37 -0
  1340. package/node_modules/lodash/LICENSE +47 -0
  1341. package/node_modules/lodash/README.md +39 -0
  1342. package/node_modules/lodash/_DataView.js +7 -0
  1343. package/node_modules/lodash/_Hash.js +32 -0
  1344. package/node_modules/lodash/_LazyWrapper.js +28 -0
  1345. package/node_modules/lodash/_ListCache.js +32 -0
  1346. package/node_modules/lodash/_LodashWrapper.js +22 -0
  1347. package/node_modules/lodash/_Map.js +7 -0
  1348. package/node_modules/lodash/_MapCache.js +32 -0
  1349. package/node_modules/lodash/_Promise.js +7 -0
  1350. package/node_modules/lodash/_Set.js +7 -0
  1351. package/node_modules/lodash/_SetCache.js +27 -0
  1352. package/node_modules/lodash/_Stack.js +27 -0
  1353. package/node_modules/lodash/_Symbol.js +6 -0
  1354. package/node_modules/lodash/_Uint8Array.js +6 -0
  1355. package/node_modules/lodash/_WeakMap.js +7 -0
  1356. package/node_modules/lodash/_apply.js +21 -0
  1357. package/node_modules/lodash/_arrayAggregator.js +22 -0
  1358. package/node_modules/lodash/_arrayEach.js +22 -0
  1359. package/node_modules/lodash/_arrayEachRight.js +21 -0
  1360. package/node_modules/lodash/_arrayEvery.js +23 -0
  1361. package/node_modules/lodash/_arrayFilter.js +25 -0
  1362. package/node_modules/lodash/_arrayIncludes.js +17 -0
  1363. package/node_modules/lodash/_arrayIncludesWith.js +22 -0
  1364. package/node_modules/lodash/_arrayLikeKeys.js +49 -0
  1365. package/node_modules/lodash/_arrayMap.js +21 -0
  1366. package/node_modules/lodash/_arrayPush.js +20 -0
  1367. package/node_modules/lodash/_arrayReduce.js +26 -0
  1368. package/node_modules/lodash/_arrayReduceRight.js +24 -0
  1369. package/node_modules/lodash/_arraySample.js +15 -0
  1370. package/node_modules/lodash/_arraySampleSize.js +17 -0
  1371. package/node_modules/lodash/_arrayShuffle.js +15 -0
  1372. package/node_modules/lodash/_arraySome.js +23 -0
  1373. package/node_modules/lodash/_asciiSize.js +12 -0
  1374. package/node_modules/lodash/_asciiToArray.js +12 -0
  1375. package/node_modules/lodash/_asciiWords.js +15 -0
  1376. package/node_modules/lodash/_assignMergeValue.js +20 -0
  1377. package/node_modules/lodash/_assignValue.js +28 -0
  1378. package/node_modules/lodash/_assocIndexOf.js +21 -0
  1379. package/node_modules/lodash/_baseAggregator.js +21 -0
  1380. package/node_modules/lodash/_baseAssign.js +17 -0
  1381. package/node_modules/lodash/_baseAssignIn.js +17 -0
  1382. package/node_modules/lodash/_baseAssignValue.js +25 -0
  1383. package/node_modules/lodash/_baseAt.js +23 -0
  1384. package/node_modules/lodash/_baseClamp.js +22 -0
  1385. package/node_modules/lodash/_baseClone.js +166 -0
  1386. package/node_modules/lodash/_baseConforms.js +18 -0
  1387. package/node_modules/lodash/_baseConformsTo.js +27 -0
  1388. package/node_modules/lodash/_baseCreate.js +30 -0
  1389. package/node_modules/lodash/_baseDelay.js +21 -0
  1390. package/node_modules/lodash/_baseDifference.js +67 -0
  1391. package/node_modules/lodash/_baseEach.js +14 -0
  1392. package/node_modules/lodash/_baseEachRight.js +14 -0
  1393. package/node_modules/lodash/_baseEvery.js +21 -0
  1394. package/node_modules/lodash/_baseExtremum.js +32 -0
  1395. package/node_modules/lodash/_baseFill.js +32 -0
  1396. package/node_modules/lodash/_baseFilter.js +21 -0
  1397. package/node_modules/lodash/_baseFindIndex.js +24 -0
  1398. package/node_modules/lodash/_baseFindKey.js +23 -0
  1399. package/node_modules/lodash/_baseFlatten.js +38 -0
  1400. package/node_modules/lodash/_baseFor.js +16 -0
  1401. package/node_modules/lodash/_baseForOwn.js +16 -0
  1402. package/node_modules/lodash/_baseForOwnRight.js +16 -0
  1403. package/node_modules/lodash/_baseForRight.js +15 -0
  1404. package/node_modules/lodash/_baseFunctions.js +19 -0
  1405. package/node_modules/lodash/_baseGet.js +24 -0
  1406. package/node_modules/lodash/_baseGetAllKeys.js +20 -0
  1407. package/node_modules/lodash/_baseGetTag.js +28 -0
  1408. package/node_modules/lodash/_baseGt.js +14 -0
  1409. package/node_modules/lodash/_baseHas.js +19 -0
  1410. package/node_modules/lodash/_baseHasIn.js +13 -0
  1411. package/node_modules/lodash/_baseInRange.js +18 -0
  1412. package/node_modules/lodash/_baseIndexOf.js +20 -0
  1413. package/node_modules/lodash/_baseIndexOfWith.js +23 -0
  1414. package/node_modules/lodash/_baseIntersection.js +74 -0
  1415. package/node_modules/lodash/_baseInverter.js +21 -0
  1416. package/node_modules/lodash/_baseInvoke.js +24 -0
  1417. package/node_modules/lodash/_baseIsArguments.js +18 -0
  1418. package/node_modules/lodash/_baseIsArrayBuffer.js +17 -0
  1419. package/node_modules/lodash/_baseIsDate.js +18 -0
  1420. package/node_modules/lodash/_baseIsEqual.js +28 -0
  1421. package/node_modules/lodash/_baseIsEqualDeep.js +83 -0
  1422. package/node_modules/lodash/_baseIsMap.js +18 -0
  1423. package/node_modules/lodash/_baseIsMatch.js +62 -0
  1424. package/node_modules/lodash/_baseIsNaN.js +12 -0
  1425. package/node_modules/lodash/_baseIsNative.js +47 -0
  1426. package/node_modules/lodash/_baseIsRegExp.js +18 -0
  1427. package/node_modules/lodash/_baseIsSet.js +18 -0
  1428. package/node_modules/lodash/_baseIsTypedArray.js +60 -0
  1429. package/node_modules/lodash/_baseIteratee.js +31 -0
  1430. package/node_modules/lodash/_baseKeys.js +30 -0
  1431. package/node_modules/lodash/_baseKeysIn.js +33 -0
  1432. package/node_modules/lodash/_baseLodash.js +10 -0
  1433. package/node_modules/lodash/_baseLt.js +14 -0
  1434. package/node_modules/lodash/_baseMap.js +22 -0
  1435. package/node_modules/lodash/_baseMatches.js +22 -0
  1436. package/node_modules/lodash/_baseMatchesProperty.js +33 -0
  1437. package/node_modules/lodash/_baseMean.js +20 -0
  1438. package/node_modules/lodash/_baseMerge.js +42 -0
  1439. package/node_modules/lodash/_baseMergeDeep.js +94 -0
  1440. package/node_modules/lodash/_baseNth.js +20 -0
  1441. package/node_modules/lodash/_baseOrderBy.js +49 -0
  1442. package/node_modules/lodash/_basePick.js +19 -0
  1443. package/node_modules/lodash/_basePickBy.js +30 -0
  1444. package/node_modules/lodash/_baseProperty.js +14 -0
  1445. package/node_modules/lodash/_basePropertyDeep.js +16 -0
  1446. package/node_modules/lodash/_basePropertyOf.js +14 -0
  1447. package/node_modules/lodash/_basePullAll.js +51 -0
  1448. package/node_modules/lodash/_basePullAt.js +37 -0
  1449. package/node_modules/lodash/_baseRandom.js +18 -0
  1450. package/node_modules/lodash/_baseRange.js +28 -0
  1451. package/node_modules/lodash/_baseReduce.js +23 -0
  1452. package/node_modules/lodash/_baseRepeat.js +35 -0
  1453. package/node_modules/lodash/_baseRest.js +17 -0
  1454. package/node_modules/lodash/_baseSample.js +15 -0
  1455. package/node_modules/lodash/_baseSampleSize.js +18 -0
  1456. package/node_modules/lodash/_baseSet.js +51 -0
  1457. package/node_modules/lodash/_baseSetData.js +17 -0
  1458. package/node_modules/lodash/_baseSetToString.js +22 -0
  1459. package/node_modules/lodash/_baseShuffle.js +15 -0
  1460. package/node_modules/lodash/_baseSlice.js +31 -0
  1461. package/node_modules/lodash/_baseSome.js +22 -0
  1462. package/node_modules/lodash/_baseSortBy.js +21 -0
  1463. package/node_modules/lodash/_baseSortedIndex.js +42 -0
  1464. package/node_modules/lodash/_baseSortedIndexBy.js +67 -0
  1465. package/node_modules/lodash/_baseSortedUniq.js +30 -0
  1466. package/node_modules/lodash/_baseSum.js +24 -0
  1467. package/node_modules/lodash/_baseTimes.js +20 -0
  1468. package/node_modules/lodash/_baseToNumber.js +24 -0
  1469. package/node_modules/lodash/_baseToPairs.js +18 -0
  1470. package/node_modules/lodash/_baseToString.js +37 -0
  1471. package/node_modules/lodash/_baseTrim.js +19 -0
  1472. package/node_modules/lodash/_baseUnary.js +14 -0
  1473. package/node_modules/lodash/_baseUniq.js +72 -0
  1474. package/node_modules/lodash/_baseUnset.js +52 -0
  1475. package/node_modules/lodash/_baseUpdate.js +18 -0
  1476. package/node_modules/lodash/_baseValues.js +19 -0
  1477. package/node_modules/lodash/_baseWhile.js +26 -0
  1478. package/node_modules/lodash/_baseWrapperValue.js +25 -0
  1479. package/node_modules/lodash/_baseXor.js +36 -0
  1480. package/node_modules/lodash/_baseZipObject.js +23 -0
  1481. package/node_modules/lodash/_cacheHas.js +13 -0
  1482. package/node_modules/lodash/_castArrayLikeObject.js +14 -0
  1483. package/node_modules/lodash/_castFunction.js +14 -0
  1484. package/node_modules/lodash/_castPath.js +21 -0
  1485. package/node_modules/lodash/_castRest.js +14 -0
  1486. package/node_modules/lodash/_castSlice.js +18 -0
  1487. package/node_modules/lodash/_charsEndIndex.js +19 -0
  1488. package/node_modules/lodash/_charsStartIndex.js +20 -0
  1489. package/node_modules/lodash/_cloneArrayBuffer.js +16 -0
  1490. package/node_modules/lodash/_cloneBuffer.js +35 -0
  1491. package/node_modules/lodash/_cloneDataView.js +16 -0
  1492. package/node_modules/lodash/_cloneRegExp.js +17 -0
  1493. package/node_modules/lodash/_cloneSymbol.js +18 -0
  1494. package/node_modules/lodash/_cloneTypedArray.js +16 -0
  1495. package/node_modules/lodash/_compareAscending.js +41 -0
  1496. package/node_modules/lodash/_compareMultiple.js +44 -0
  1497. package/node_modules/lodash/_composeArgs.js +39 -0
  1498. package/node_modules/lodash/_composeArgsRight.js +41 -0
  1499. package/node_modules/lodash/_copyArray.js +20 -0
  1500. package/node_modules/lodash/_copyObject.js +40 -0
  1501. package/node_modules/lodash/_copySymbols.js +16 -0
  1502. package/node_modules/lodash/_copySymbolsIn.js +16 -0
  1503. package/node_modules/lodash/_coreJsData.js +6 -0
  1504. package/node_modules/lodash/_countHolders.js +21 -0
  1505. package/node_modules/lodash/_createAggregator.js +23 -0
  1506. package/node_modules/lodash/_createAssigner.js +37 -0
  1507. package/node_modules/lodash/_createBaseEach.js +32 -0
  1508. package/node_modules/lodash/_createBaseFor.js +25 -0
  1509. package/node_modules/lodash/_createBind.js +28 -0
  1510. package/node_modules/lodash/_createCaseFirst.js +33 -0
  1511. package/node_modules/lodash/_createCompounder.js +24 -0
  1512. package/node_modules/lodash/_createCtor.js +37 -0
  1513. package/node_modules/lodash/_createCurry.js +46 -0
  1514. package/node_modules/lodash/_createFind.js +25 -0
  1515. package/node_modules/lodash/_createFlow.js +78 -0
  1516. package/node_modules/lodash/_createHybrid.js +92 -0
  1517. package/node_modules/lodash/_createInverter.js +17 -0
  1518. package/node_modules/lodash/_createMathOperation.js +38 -0
  1519. package/node_modules/lodash/_createOver.js +27 -0
  1520. package/node_modules/lodash/_createPadding.js +33 -0
  1521. package/node_modules/lodash/_createPartial.js +43 -0
  1522. package/node_modules/lodash/_createRange.js +30 -0
  1523. package/node_modules/lodash/_createRecurry.js +56 -0
  1524. package/node_modules/lodash/_createRelationalOperation.js +20 -0
  1525. package/node_modules/lodash/_createRound.js +35 -0
  1526. package/node_modules/lodash/_createSet.js +19 -0
  1527. package/node_modules/lodash/_createToPairs.js +30 -0
  1528. package/node_modules/lodash/_createWrap.js +106 -0
  1529. package/node_modules/lodash/_customDefaultsAssignIn.js +29 -0
  1530. package/node_modules/lodash/_customDefaultsMerge.js +28 -0
  1531. package/node_modules/lodash/_customOmitClone.js +16 -0
  1532. package/node_modules/lodash/_deburrLetter.js +71 -0
  1533. package/node_modules/lodash/_defineProperty.js +11 -0
  1534. package/node_modules/lodash/_equalArrays.js +84 -0
  1535. package/node_modules/lodash/_equalByTag.js +112 -0
  1536. package/node_modules/lodash/_equalObjects.js +90 -0
  1537. package/node_modules/lodash/_escapeHtmlChar.js +21 -0
  1538. package/node_modules/lodash/_escapeStringChar.js +22 -0
  1539. package/node_modules/lodash/_flatRest.js +16 -0
  1540. package/node_modules/lodash/_freeGlobal.js +4 -0
  1541. package/node_modules/lodash/_getAllKeys.js +16 -0
  1542. package/node_modules/lodash/_getAllKeysIn.js +17 -0
  1543. package/node_modules/lodash/_getData.js +15 -0
  1544. package/node_modules/lodash/_getFuncName.js +31 -0
  1545. package/node_modules/lodash/_getHolder.js +13 -0
  1546. package/node_modules/lodash/_getMapData.js +18 -0
  1547. package/node_modules/lodash/_getMatchData.js +24 -0
  1548. package/node_modules/lodash/_getNative.js +17 -0
  1549. package/node_modules/lodash/_getPrototype.js +6 -0
  1550. package/node_modules/lodash/_getRawTag.js +46 -0
  1551. package/node_modules/lodash/_getSymbols.js +30 -0
  1552. package/node_modules/lodash/_getSymbolsIn.js +25 -0
  1553. package/node_modules/lodash/_getTag.js +58 -0
  1554. package/node_modules/lodash/_getValue.js +13 -0
  1555. package/node_modules/lodash/_getView.js +33 -0
  1556. package/node_modules/lodash/_getWrapDetails.js +17 -0
  1557. package/node_modules/lodash/_hasPath.js +39 -0
  1558. package/node_modules/lodash/_hasUnicode.js +26 -0
  1559. package/node_modules/lodash/_hasUnicodeWord.js +15 -0
  1560. package/node_modules/lodash/_hashClear.js +15 -0
  1561. package/node_modules/lodash/_hashDelete.js +17 -0
  1562. package/node_modules/lodash/_hashGet.js +30 -0
  1563. package/node_modules/lodash/_hashHas.js +23 -0
  1564. package/node_modules/lodash/_hashSet.js +23 -0
  1565. package/node_modules/lodash/_initCloneArray.js +26 -0
  1566. package/node_modules/lodash/_initCloneByTag.js +77 -0
  1567. package/node_modules/lodash/_initCloneObject.js +18 -0
  1568. package/node_modules/lodash/_insertWrapDetails.js +23 -0
  1569. package/node_modules/lodash/_isFlattenable.js +20 -0
  1570. package/node_modules/lodash/_isIndex.js +25 -0
  1571. package/node_modules/lodash/_isIterateeCall.js +30 -0
  1572. package/node_modules/lodash/_isKey.js +29 -0
  1573. package/node_modules/lodash/_isKeyable.js +15 -0
  1574. package/node_modules/lodash/_isLaziable.js +28 -0
  1575. package/node_modules/lodash/_isMaskable.js +14 -0
  1576. package/node_modules/lodash/_isMasked.js +20 -0
  1577. package/node_modules/lodash/_isPrototype.js +18 -0
  1578. package/node_modules/lodash/_isStrictComparable.js +15 -0
  1579. package/node_modules/lodash/_iteratorToArray.js +18 -0
  1580. package/node_modules/lodash/_lazyClone.js +23 -0
  1581. package/node_modules/lodash/_lazyReverse.js +23 -0
  1582. package/node_modules/lodash/_lazyValue.js +69 -0
  1583. package/node_modules/lodash/_listCacheClear.js +13 -0
  1584. package/node_modules/lodash/_listCacheDelete.js +35 -0
  1585. package/node_modules/lodash/_listCacheGet.js +19 -0
  1586. package/node_modules/lodash/_listCacheHas.js +16 -0
  1587. package/node_modules/lodash/_listCacheSet.js +26 -0
  1588. package/node_modules/lodash/_mapCacheClear.js +21 -0
  1589. package/node_modules/lodash/_mapCacheDelete.js +18 -0
  1590. package/node_modules/lodash/_mapCacheGet.js +16 -0
  1591. package/node_modules/lodash/_mapCacheHas.js +16 -0
  1592. package/node_modules/lodash/_mapCacheSet.js +22 -0
  1593. package/node_modules/lodash/_mapToArray.js +18 -0
  1594. package/node_modules/lodash/_matchesStrictComparable.js +20 -0
  1595. package/node_modules/lodash/_memoizeCapped.js +26 -0
  1596. package/node_modules/lodash/_mergeData.js +90 -0
  1597. package/node_modules/lodash/_metaMap.js +6 -0
  1598. package/node_modules/lodash/_nativeCreate.js +6 -0
  1599. package/node_modules/lodash/_nativeKeys.js +6 -0
  1600. package/node_modules/lodash/_nativeKeysIn.js +20 -0
  1601. package/node_modules/lodash/_nodeUtil.js +30 -0
  1602. package/node_modules/lodash/_objectToString.js +22 -0
  1603. package/node_modules/lodash/_overArg.js +15 -0
  1604. package/node_modules/lodash/_overRest.js +36 -0
  1605. package/node_modules/lodash/_parent.js +16 -0
  1606. package/node_modules/lodash/_reEscape.js +4 -0
  1607. package/node_modules/lodash/_reEvaluate.js +4 -0
  1608. package/node_modules/lodash/_reInterpolate.js +4 -0
  1609. package/node_modules/lodash/_realNames.js +4 -0
  1610. package/node_modules/lodash/_reorder.js +29 -0
  1611. package/node_modules/lodash/_replaceHolders.js +29 -0
  1612. package/node_modules/lodash/_root.js +9 -0
  1613. package/node_modules/lodash/_safeGet.js +21 -0
  1614. package/node_modules/lodash/_setCacheAdd.js +19 -0
  1615. package/node_modules/lodash/_setCacheHas.js +14 -0
  1616. package/node_modules/lodash/_setData.js +20 -0
  1617. package/node_modules/lodash/_setToArray.js +18 -0
  1618. package/node_modules/lodash/_setToPairs.js +18 -0
  1619. package/node_modules/lodash/_setToString.js +14 -0
  1620. package/node_modules/lodash/_setWrapToString.js +21 -0
  1621. package/node_modules/lodash/_shortOut.js +37 -0
  1622. package/node_modules/lodash/_shuffleSelf.js +28 -0
  1623. package/node_modules/lodash/_stackClear.js +15 -0
  1624. package/node_modules/lodash/_stackDelete.js +18 -0
  1625. package/node_modules/lodash/_stackGet.js +14 -0
  1626. package/node_modules/lodash/_stackHas.js +14 -0
  1627. package/node_modules/lodash/_stackSet.js +34 -0
  1628. package/node_modules/lodash/_strictIndexOf.js +23 -0
  1629. package/node_modules/lodash/_strictLastIndexOf.js +21 -0
  1630. package/node_modules/lodash/_stringSize.js +18 -0
  1631. package/node_modules/lodash/_stringToArray.js +18 -0
  1632. package/node_modules/lodash/_stringToPath.js +27 -0
  1633. package/node_modules/lodash/_toKey.js +21 -0
  1634. package/node_modules/lodash/_toSource.js +26 -0
  1635. package/node_modules/lodash/_trimmedEndIndex.js +19 -0
  1636. package/node_modules/lodash/_unescapeHtmlChar.js +21 -0
  1637. package/node_modules/lodash/_unicodeSize.js +44 -0
  1638. package/node_modules/lodash/_unicodeToArray.js +40 -0
  1639. package/node_modules/lodash/_unicodeWords.js +69 -0
  1640. package/node_modules/lodash/_updateWrapDetails.js +46 -0
  1641. package/node_modules/lodash/_wrapperClone.js +23 -0
  1642. package/node_modules/lodash/add.js +22 -0
  1643. package/node_modules/lodash/after.js +42 -0
  1644. package/node_modules/lodash/array.js +67 -0
  1645. package/node_modules/lodash/ary.js +29 -0
  1646. package/node_modules/lodash/assign.js +58 -0
  1647. package/node_modules/lodash/assignIn.js +40 -0
  1648. package/node_modules/lodash/assignInWith.js +38 -0
  1649. package/node_modules/lodash/assignWith.js +37 -0
  1650. package/node_modules/lodash/at.js +23 -0
  1651. package/node_modules/lodash/attempt.js +35 -0
  1652. package/node_modules/lodash/before.js +40 -0
  1653. package/node_modules/lodash/bind.js +57 -0
  1654. package/node_modules/lodash/bindAll.js +41 -0
  1655. package/node_modules/lodash/bindKey.js +68 -0
  1656. package/node_modules/lodash/camelCase.js +29 -0
  1657. package/node_modules/lodash/capitalize.js +23 -0
  1658. package/node_modules/lodash/castArray.js +44 -0
  1659. package/node_modules/lodash/ceil.js +26 -0
  1660. package/node_modules/lodash/chain.js +38 -0
  1661. package/node_modules/lodash/chunk.js +50 -0
  1662. package/node_modules/lodash/clamp.js +39 -0
  1663. package/node_modules/lodash/clone.js +36 -0
  1664. package/node_modules/lodash/cloneDeep.js +29 -0
  1665. package/node_modules/lodash/cloneDeepWith.js +40 -0
  1666. package/node_modules/lodash/cloneWith.js +42 -0
  1667. package/node_modules/lodash/collection.js +30 -0
  1668. package/node_modules/lodash/commit.js +33 -0
  1669. package/node_modules/lodash/compact.js +31 -0
  1670. package/node_modules/lodash/concat.js +43 -0
  1671. package/node_modules/lodash/cond.js +60 -0
  1672. package/node_modules/lodash/conforms.js +35 -0
  1673. package/node_modules/lodash/conformsTo.js +32 -0
  1674. package/node_modules/lodash/constant.js +26 -0
  1675. package/node_modules/lodash/core.js +3877 -0
  1676. package/node_modules/lodash/core.min.js +30 -0
  1677. package/node_modules/lodash/countBy.js +40 -0
  1678. package/node_modules/lodash/create.js +43 -0
  1679. package/node_modules/lodash/curry.js +57 -0
  1680. package/node_modules/lodash/curryRight.js +54 -0
  1681. package/node_modules/lodash/date.js +3 -0
  1682. package/node_modules/lodash/debounce.js +191 -0
  1683. package/node_modules/lodash/deburr.js +45 -0
  1684. package/node_modules/lodash/defaultTo.js +25 -0
  1685. package/node_modules/lodash/defaults.js +64 -0
  1686. package/node_modules/lodash/defaultsDeep.js +30 -0
  1687. package/node_modules/lodash/defer.js +26 -0
  1688. package/node_modules/lodash/delay.js +28 -0
  1689. package/node_modules/lodash/difference.js +33 -0
  1690. package/node_modules/lodash/differenceBy.js +44 -0
  1691. package/node_modules/lodash/differenceWith.js +40 -0
  1692. package/node_modules/lodash/divide.js +22 -0
  1693. package/node_modules/lodash/drop.js +38 -0
  1694. package/node_modules/lodash/dropRight.js +39 -0
  1695. package/node_modules/lodash/dropRightWhile.js +45 -0
  1696. package/node_modules/lodash/dropWhile.js +45 -0
  1697. package/node_modules/lodash/each.js +1 -0
  1698. package/node_modules/lodash/eachRight.js +1 -0
  1699. package/node_modules/lodash/endsWith.js +43 -0
  1700. package/node_modules/lodash/entries.js +1 -0
  1701. package/node_modules/lodash/entriesIn.js +1 -0
  1702. package/node_modules/lodash/eq.js +37 -0
  1703. package/node_modules/lodash/escape.js +43 -0
  1704. package/node_modules/lodash/escapeRegExp.js +32 -0
  1705. package/node_modules/lodash/every.js +56 -0
  1706. package/node_modules/lodash/extend.js +1 -0
  1707. package/node_modules/lodash/extendWith.js +1 -0
  1708. package/node_modules/lodash/fill.js +45 -0
  1709. package/node_modules/lodash/filter.js +52 -0
  1710. package/node_modules/lodash/find.js +42 -0
  1711. package/node_modules/lodash/findIndex.js +55 -0
  1712. package/node_modules/lodash/findKey.js +44 -0
  1713. package/node_modules/lodash/findLast.js +25 -0
  1714. package/node_modules/lodash/findLastIndex.js +59 -0
  1715. package/node_modules/lodash/findLastKey.js +44 -0
  1716. package/node_modules/lodash/first.js +1 -0
  1717. package/node_modules/lodash/flatMap.js +29 -0
  1718. package/node_modules/lodash/flatMapDeep.js +31 -0
  1719. package/node_modules/lodash/flatMapDepth.js +31 -0
  1720. package/node_modules/lodash/flatten.js +22 -0
  1721. package/node_modules/lodash/flattenDeep.js +25 -0
  1722. package/node_modules/lodash/flattenDepth.js +33 -0
  1723. package/node_modules/lodash/flip.js +28 -0
  1724. package/node_modules/lodash/floor.js +26 -0
  1725. package/node_modules/lodash/flow.js +27 -0
  1726. package/node_modules/lodash/flowRight.js +26 -0
  1727. package/node_modules/lodash/forEach.js +41 -0
  1728. package/node_modules/lodash/forEachRight.js +31 -0
  1729. package/node_modules/lodash/forIn.js +39 -0
  1730. package/node_modules/lodash/forInRight.js +37 -0
  1731. package/node_modules/lodash/forOwn.js +36 -0
  1732. package/node_modules/lodash/forOwnRight.js +34 -0
  1733. package/node_modules/lodash/fp/F.js +1 -0
  1734. package/node_modules/lodash/fp/T.js +1 -0
  1735. package/node_modules/lodash/fp/__.js +1 -0
  1736. package/node_modules/lodash/fp/_baseConvert.js +569 -0
  1737. package/node_modules/lodash/fp/_convertBrowser.js +18 -0
  1738. package/node_modules/lodash/fp/_falseOptions.js +7 -0
  1739. package/node_modules/lodash/fp/_mapping.js +358 -0
  1740. package/node_modules/lodash/fp/_util.js +16 -0
  1741. package/node_modules/lodash/fp/add.js +5 -0
  1742. package/node_modules/lodash/fp/after.js +5 -0
  1743. package/node_modules/lodash/fp/all.js +1 -0
  1744. package/node_modules/lodash/fp/allPass.js +1 -0
  1745. package/node_modules/lodash/fp/always.js +1 -0
  1746. package/node_modules/lodash/fp/any.js +1 -0
  1747. package/node_modules/lodash/fp/anyPass.js +1 -0
  1748. package/node_modules/lodash/fp/apply.js +1 -0
  1749. package/node_modules/lodash/fp/array.js +2 -0
  1750. package/node_modules/lodash/fp/ary.js +5 -0
  1751. package/node_modules/lodash/fp/assign.js +5 -0
  1752. package/node_modules/lodash/fp/assignAll.js +5 -0
  1753. package/node_modules/lodash/fp/assignAllWith.js +5 -0
  1754. package/node_modules/lodash/fp/assignIn.js +5 -0
  1755. package/node_modules/lodash/fp/assignInAll.js +5 -0
  1756. package/node_modules/lodash/fp/assignInAllWith.js +5 -0
  1757. package/node_modules/lodash/fp/assignInWith.js +5 -0
  1758. package/node_modules/lodash/fp/assignWith.js +5 -0
  1759. package/node_modules/lodash/fp/assoc.js +1 -0
  1760. package/node_modules/lodash/fp/assocPath.js +1 -0
  1761. package/node_modules/lodash/fp/at.js +5 -0
  1762. package/node_modules/lodash/fp/attempt.js +5 -0
  1763. package/node_modules/lodash/fp/before.js +5 -0
  1764. package/node_modules/lodash/fp/bind.js +5 -0
  1765. package/node_modules/lodash/fp/bindAll.js +5 -0
  1766. package/node_modules/lodash/fp/bindKey.js +5 -0
  1767. package/node_modules/lodash/fp/camelCase.js +5 -0
  1768. package/node_modules/lodash/fp/capitalize.js +5 -0
  1769. package/node_modules/lodash/fp/castArray.js +5 -0
  1770. package/node_modules/lodash/fp/ceil.js +5 -0
  1771. package/node_modules/lodash/fp/chain.js +5 -0
  1772. package/node_modules/lodash/fp/chunk.js +5 -0
  1773. package/node_modules/lodash/fp/clamp.js +5 -0
  1774. package/node_modules/lodash/fp/clone.js +5 -0
  1775. package/node_modules/lodash/fp/cloneDeep.js +5 -0
  1776. package/node_modules/lodash/fp/cloneDeepWith.js +5 -0
  1777. package/node_modules/lodash/fp/cloneWith.js +5 -0
  1778. package/node_modules/lodash/fp/collection.js +2 -0
  1779. package/node_modules/lodash/fp/commit.js +5 -0
  1780. package/node_modules/lodash/fp/compact.js +5 -0
  1781. package/node_modules/lodash/fp/complement.js +1 -0
  1782. package/node_modules/lodash/fp/compose.js +1 -0
  1783. package/node_modules/lodash/fp/concat.js +5 -0
  1784. package/node_modules/lodash/fp/cond.js +5 -0
  1785. package/node_modules/lodash/fp/conforms.js +1 -0
  1786. package/node_modules/lodash/fp/conformsTo.js +5 -0
  1787. package/node_modules/lodash/fp/constant.js +5 -0
  1788. package/node_modules/lodash/fp/contains.js +1 -0
  1789. package/node_modules/lodash/fp/convert.js +18 -0
  1790. package/node_modules/lodash/fp/countBy.js +5 -0
  1791. package/node_modules/lodash/fp/create.js +5 -0
  1792. package/node_modules/lodash/fp/curry.js +5 -0
  1793. package/node_modules/lodash/fp/curryN.js +5 -0
  1794. package/node_modules/lodash/fp/curryRight.js +5 -0
  1795. package/node_modules/lodash/fp/curryRightN.js +5 -0
  1796. package/node_modules/lodash/fp/date.js +2 -0
  1797. package/node_modules/lodash/fp/debounce.js +5 -0
  1798. package/node_modules/lodash/fp/deburr.js +5 -0
  1799. package/node_modules/lodash/fp/defaultTo.js +5 -0
  1800. package/node_modules/lodash/fp/defaults.js +5 -0
  1801. package/node_modules/lodash/fp/defaultsAll.js +5 -0
  1802. package/node_modules/lodash/fp/defaultsDeep.js +5 -0
  1803. package/node_modules/lodash/fp/defaultsDeepAll.js +5 -0
  1804. package/node_modules/lodash/fp/defer.js +5 -0
  1805. package/node_modules/lodash/fp/delay.js +5 -0
  1806. package/node_modules/lodash/fp/difference.js +5 -0
  1807. package/node_modules/lodash/fp/differenceBy.js +5 -0
  1808. package/node_modules/lodash/fp/differenceWith.js +5 -0
  1809. package/node_modules/lodash/fp/dissoc.js +1 -0
  1810. package/node_modules/lodash/fp/dissocPath.js +1 -0
  1811. package/node_modules/lodash/fp/divide.js +5 -0
  1812. package/node_modules/lodash/fp/drop.js +5 -0
  1813. package/node_modules/lodash/fp/dropLast.js +1 -0
  1814. package/node_modules/lodash/fp/dropLastWhile.js +1 -0
  1815. package/node_modules/lodash/fp/dropRight.js +5 -0
  1816. package/node_modules/lodash/fp/dropRightWhile.js +5 -0
  1817. package/node_modules/lodash/fp/dropWhile.js +5 -0
  1818. package/node_modules/lodash/fp/each.js +1 -0
  1819. package/node_modules/lodash/fp/eachRight.js +1 -0
  1820. package/node_modules/lodash/fp/endsWith.js +5 -0
  1821. package/node_modules/lodash/fp/entries.js +1 -0
  1822. package/node_modules/lodash/fp/entriesIn.js +1 -0
  1823. package/node_modules/lodash/fp/eq.js +5 -0
  1824. package/node_modules/lodash/fp/equals.js +1 -0
  1825. package/node_modules/lodash/fp/escape.js +5 -0
  1826. package/node_modules/lodash/fp/escapeRegExp.js +5 -0
  1827. package/node_modules/lodash/fp/every.js +5 -0
  1828. package/node_modules/lodash/fp/extend.js +1 -0
  1829. package/node_modules/lodash/fp/extendAll.js +1 -0
  1830. package/node_modules/lodash/fp/extendAllWith.js +1 -0
  1831. package/node_modules/lodash/fp/extendWith.js +1 -0
  1832. package/node_modules/lodash/fp/fill.js +5 -0
  1833. package/node_modules/lodash/fp/filter.js +5 -0
  1834. package/node_modules/lodash/fp/find.js +5 -0
  1835. package/node_modules/lodash/fp/findFrom.js +5 -0
  1836. package/node_modules/lodash/fp/findIndex.js +5 -0
  1837. package/node_modules/lodash/fp/findIndexFrom.js +5 -0
  1838. package/node_modules/lodash/fp/findKey.js +5 -0
  1839. package/node_modules/lodash/fp/findLast.js +5 -0
  1840. package/node_modules/lodash/fp/findLastFrom.js +5 -0
  1841. package/node_modules/lodash/fp/findLastIndex.js +5 -0
  1842. package/node_modules/lodash/fp/findLastIndexFrom.js +5 -0
  1843. package/node_modules/lodash/fp/findLastKey.js +5 -0
  1844. package/node_modules/lodash/fp/first.js +1 -0
  1845. package/node_modules/lodash/fp/flatMap.js +5 -0
  1846. package/node_modules/lodash/fp/flatMapDeep.js +5 -0
  1847. package/node_modules/lodash/fp/flatMapDepth.js +5 -0
  1848. package/node_modules/lodash/fp/flatten.js +5 -0
  1849. package/node_modules/lodash/fp/flattenDeep.js +5 -0
  1850. package/node_modules/lodash/fp/flattenDepth.js +5 -0
  1851. package/node_modules/lodash/fp/flip.js +5 -0
  1852. package/node_modules/lodash/fp/floor.js +5 -0
  1853. package/node_modules/lodash/fp/flow.js +5 -0
  1854. package/node_modules/lodash/fp/flowRight.js +5 -0
  1855. package/node_modules/lodash/fp/forEach.js +5 -0
  1856. package/node_modules/lodash/fp/forEachRight.js +5 -0
  1857. package/node_modules/lodash/fp/forIn.js +5 -0
  1858. package/node_modules/lodash/fp/forInRight.js +5 -0
  1859. package/node_modules/lodash/fp/forOwn.js +5 -0
  1860. package/node_modules/lodash/fp/forOwnRight.js +5 -0
  1861. package/node_modules/lodash/fp/fromPairs.js +5 -0
  1862. package/node_modules/lodash/fp/function.js +2 -0
  1863. package/node_modules/lodash/fp/functions.js +5 -0
  1864. package/node_modules/lodash/fp/functionsIn.js +5 -0
  1865. package/node_modules/lodash/fp/get.js +5 -0
  1866. package/node_modules/lodash/fp/getOr.js +5 -0
  1867. package/node_modules/lodash/fp/groupBy.js +5 -0
  1868. package/node_modules/lodash/fp/gt.js +5 -0
  1869. package/node_modules/lodash/fp/gte.js +5 -0
  1870. package/node_modules/lodash/fp/has.js +5 -0
  1871. package/node_modules/lodash/fp/hasIn.js +5 -0
  1872. package/node_modules/lodash/fp/head.js +5 -0
  1873. package/node_modules/lodash/fp/identical.js +1 -0
  1874. package/node_modules/lodash/fp/identity.js +5 -0
  1875. package/node_modules/lodash/fp/inRange.js +5 -0
  1876. package/node_modules/lodash/fp/includes.js +5 -0
  1877. package/node_modules/lodash/fp/includesFrom.js +5 -0
  1878. package/node_modules/lodash/fp/indexBy.js +1 -0
  1879. package/node_modules/lodash/fp/indexOf.js +5 -0
  1880. package/node_modules/lodash/fp/indexOfFrom.js +5 -0
  1881. package/node_modules/lodash/fp/init.js +1 -0
  1882. package/node_modules/lodash/fp/initial.js +5 -0
  1883. package/node_modules/lodash/fp/intersection.js +5 -0
  1884. package/node_modules/lodash/fp/intersectionBy.js +5 -0
  1885. package/node_modules/lodash/fp/intersectionWith.js +5 -0
  1886. package/node_modules/lodash/fp/invert.js +5 -0
  1887. package/node_modules/lodash/fp/invertBy.js +5 -0
  1888. package/node_modules/lodash/fp/invertObj.js +1 -0
  1889. package/node_modules/lodash/fp/invoke.js +5 -0
  1890. package/node_modules/lodash/fp/invokeArgs.js +5 -0
  1891. package/node_modules/lodash/fp/invokeArgsMap.js +5 -0
  1892. package/node_modules/lodash/fp/invokeMap.js +5 -0
  1893. package/node_modules/lodash/fp/isArguments.js +5 -0
  1894. package/node_modules/lodash/fp/isArray.js +5 -0
  1895. package/node_modules/lodash/fp/isArrayBuffer.js +5 -0
  1896. package/node_modules/lodash/fp/isArrayLike.js +5 -0
  1897. package/node_modules/lodash/fp/isArrayLikeObject.js +5 -0
  1898. package/node_modules/lodash/fp/isBoolean.js +5 -0
  1899. package/node_modules/lodash/fp/isBuffer.js +5 -0
  1900. package/node_modules/lodash/fp/isDate.js +5 -0
  1901. package/node_modules/lodash/fp/isElement.js +5 -0
  1902. package/node_modules/lodash/fp/isEmpty.js +5 -0
  1903. package/node_modules/lodash/fp/isEqual.js +5 -0
  1904. package/node_modules/lodash/fp/isEqualWith.js +5 -0
  1905. package/node_modules/lodash/fp/isError.js +5 -0
  1906. package/node_modules/lodash/fp/isFinite.js +5 -0
  1907. package/node_modules/lodash/fp/isFunction.js +5 -0
  1908. package/node_modules/lodash/fp/isInteger.js +5 -0
  1909. package/node_modules/lodash/fp/isLength.js +5 -0
  1910. package/node_modules/lodash/fp/isMap.js +5 -0
  1911. package/node_modules/lodash/fp/isMatch.js +5 -0
  1912. package/node_modules/lodash/fp/isMatchWith.js +5 -0
  1913. package/node_modules/lodash/fp/isNaN.js +5 -0
  1914. package/node_modules/lodash/fp/isNative.js +5 -0
  1915. package/node_modules/lodash/fp/isNil.js +5 -0
  1916. package/node_modules/lodash/fp/isNull.js +5 -0
  1917. package/node_modules/lodash/fp/isNumber.js +5 -0
  1918. package/node_modules/lodash/fp/isObject.js +5 -0
  1919. package/node_modules/lodash/fp/isObjectLike.js +5 -0
  1920. package/node_modules/lodash/fp/isPlainObject.js +5 -0
  1921. package/node_modules/lodash/fp/isRegExp.js +5 -0
  1922. package/node_modules/lodash/fp/isSafeInteger.js +5 -0
  1923. package/node_modules/lodash/fp/isSet.js +5 -0
  1924. package/node_modules/lodash/fp/isString.js +5 -0
  1925. package/node_modules/lodash/fp/isSymbol.js +5 -0
  1926. package/node_modules/lodash/fp/isTypedArray.js +5 -0
  1927. package/node_modules/lodash/fp/isUndefined.js +5 -0
  1928. package/node_modules/lodash/fp/isWeakMap.js +5 -0
  1929. package/node_modules/lodash/fp/isWeakSet.js +5 -0
  1930. package/node_modules/lodash/fp/iteratee.js +5 -0
  1931. package/node_modules/lodash/fp/join.js +5 -0
  1932. package/node_modules/lodash/fp/juxt.js +1 -0
  1933. package/node_modules/lodash/fp/kebabCase.js +5 -0
  1934. package/node_modules/lodash/fp/keyBy.js +5 -0
  1935. package/node_modules/lodash/fp/keys.js +5 -0
  1936. package/node_modules/lodash/fp/keysIn.js +5 -0
  1937. package/node_modules/lodash/fp/lang.js +2 -0
  1938. package/node_modules/lodash/fp/last.js +5 -0
  1939. package/node_modules/lodash/fp/lastIndexOf.js +5 -0
  1940. package/node_modules/lodash/fp/lastIndexOfFrom.js +5 -0
  1941. package/node_modules/lodash/fp/lowerCase.js +5 -0
  1942. package/node_modules/lodash/fp/lowerFirst.js +5 -0
  1943. package/node_modules/lodash/fp/lt.js +5 -0
  1944. package/node_modules/lodash/fp/lte.js +5 -0
  1945. package/node_modules/lodash/fp/map.js +5 -0
  1946. package/node_modules/lodash/fp/mapKeys.js +5 -0
  1947. package/node_modules/lodash/fp/mapValues.js +5 -0
  1948. package/node_modules/lodash/fp/matches.js +1 -0
  1949. package/node_modules/lodash/fp/matchesProperty.js +5 -0
  1950. package/node_modules/lodash/fp/math.js +2 -0
  1951. package/node_modules/lodash/fp/max.js +5 -0
  1952. package/node_modules/lodash/fp/maxBy.js +5 -0
  1953. package/node_modules/lodash/fp/mean.js +5 -0
  1954. package/node_modules/lodash/fp/meanBy.js +5 -0
  1955. package/node_modules/lodash/fp/memoize.js +5 -0
  1956. package/node_modules/lodash/fp/merge.js +5 -0
  1957. package/node_modules/lodash/fp/mergeAll.js +5 -0
  1958. package/node_modules/lodash/fp/mergeAllWith.js +5 -0
  1959. package/node_modules/lodash/fp/mergeWith.js +5 -0
  1960. package/node_modules/lodash/fp/method.js +5 -0
  1961. package/node_modules/lodash/fp/methodOf.js +5 -0
  1962. package/node_modules/lodash/fp/min.js +5 -0
  1963. package/node_modules/lodash/fp/minBy.js +5 -0
  1964. package/node_modules/lodash/fp/mixin.js +5 -0
  1965. package/node_modules/lodash/fp/multiply.js +5 -0
  1966. package/node_modules/lodash/fp/nAry.js +1 -0
  1967. package/node_modules/lodash/fp/negate.js +5 -0
  1968. package/node_modules/lodash/fp/next.js +5 -0
  1969. package/node_modules/lodash/fp/noop.js +5 -0
  1970. package/node_modules/lodash/fp/now.js +5 -0
  1971. package/node_modules/lodash/fp/nth.js +5 -0
  1972. package/node_modules/lodash/fp/nthArg.js +5 -0
  1973. package/node_modules/lodash/fp/number.js +2 -0
  1974. package/node_modules/lodash/fp/object.js +2 -0
  1975. package/node_modules/lodash/fp/omit.js +5 -0
  1976. package/node_modules/lodash/fp/omitAll.js +1 -0
  1977. package/node_modules/lodash/fp/omitBy.js +5 -0
  1978. package/node_modules/lodash/fp/once.js +5 -0
  1979. package/node_modules/lodash/fp/orderBy.js +5 -0
  1980. package/node_modules/lodash/fp/over.js +5 -0
  1981. package/node_modules/lodash/fp/overArgs.js +5 -0
  1982. package/node_modules/lodash/fp/overEvery.js +5 -0
  1983. package/node_modules/lodash/fp/overSome.js +5 -0
  1984. package/node_modules/lodash/fp/pad.js +5 -0
  1985. package/node_modules/lodash/fp/padChars.js +5 -0
  1986. package/node_modules/lodash/fp/padCharsEnd.js +5 -0
  1987. package/node_modules/lodash/fp/padCharsStart.js +5 -0
  1988. package/node_modules/lodash/fp/padEnd.js +5 -0
  1989. package/node_modules/lodash/fp/padStart.js +5 -0
  1990. package/node_modules/lodash/fp/parseInt.js +5 -0
  1991. package/node_modules/lodash/fp/partial.js +5 -0
  1992. package/node_modules/lodash/fp/partialRight.js +5 -0
  1993. package/node_modules/lodash/fp/partition.js +5 -0
  1994. package/node_modules/lodash/fp/path.js +1 -0
  1995. package/node_modules/lodash/fp/pathEq.js +1 -0
  1996. package/node_modules/lodash/fp/pathOr.js +1 -0
  1997. package/node_modules/lodash/fp/paths.js +1 -0
  1998. package/node_modules/lodash/fp/pick.js +5 -0
  1999. package/node_modules/lodash/fp/pickAll.js +1 -0
  2000. package/node_modules/lodash/fp/pickBy.js +5 -0
  2001. package/node_modules/lodash/fp/pipe.js +1 -0
  2002. package/node_modules/lodash/fp/placeholder.js +6 -0
  2003. package/node_modules/lodash/fp/plant.js +5 -0
  2004. package/node_modules/lodash/fp/pluck.js +1 -0
  2005. package/node_modules/lodash/fp/prop.js +1 -0
  2006. package/node_modules/lodash/fp/propEq.js +1 -0
  2007. package/node_modules/lodash/fp/propOr.js +1 -0
  2008. package/node_modules/lodash/fp/property.js +1 -0
  2009. package/node_modules/lodash/fp/propertyOf.js +5 -0
  2010. package/node_modules/lodash/fp/props.js +1 -0
  2011. package/node_modules/lodash/fp/pull.js +5 -0
  2012. package/node_modules/lodash/fp/pullAll.js +5 -0
  2013. package/node_modules/lodash/fp/pullAllBy.js +5 -0
  2014. package/node_modules/lodash/fp/pullAllWith.js +5 -0
  2015. package/node_modules/lodash/fp/pullAt.js +5 -0
  2016. package/node_modules/lodash/fp/random.js +5 -0
  2017. package/node_modules/lodash/fp/range.js +5 -0
  2018. package/node_modules/lodash/fp/rangeRight.js +5 -0
  2019. package/node_modules/lodash/fp/rangeStep.js +5 -0
  2020. package/node_modules/lodash/fp/rangeStepRight.js +5 -0
  2021. package/node_modules/lodash/fp/rearg.js +5 -0
  2022. package/node_modules/lodash/fp/reduce.js +5 -0
  2023. package/node_modules/lodash/fp/reduceRight.js +5 -0
  2024. package/node_modules/lodash/fp/reject.js +5 -0
  2025. package/node_modules/lodash/fp/remove.js +5 -0
  2026. package/node_modules/lodash/fp/repeat.js +5 -0
  2027. package/node_modules/lodash/fp/replace.js +5 -0
  2028. package/node_modules/lodash/fp/rest.js +5 -0
  2029. package/node_modules/lodash/fp/restFrom.js +5 -0
  2030. package/node_modules/lodash/fp/result.js +5 -0
  2031. package/node_modules/lodash/fp/reverse.js +5 -0
  2032. package/node_modules/lodash/fp/round.js +5 -0
  2033. package/node_modules/lodash/fp/sample.js +5 -0
  2034. package/node_modules/lodash/fp/sampleSize.js +5 -0
  2035. package/node_modules/lodash/fp/seq.js +2 -0
  2036. package/node_modules/lodash/fp/set.js +5 -0
  2037. package/node_modules/lodash/fp/setWith.js +5 -0
  2038. package/node_modules/lodash/fp/shuffle.js +5 -0
  2039. package/node_modules/lodash/fp/size.js +5 -0
  2040. package/node_modules/lodash/fp/slice.js +5 -0
  2041. package/node_modules/lodash/fp/snakeCase.js +5 -0
  2042. package/node_modules/lodash/fp/some.js +5 -0
  2043. package/node_modules/lodash/fp/sortBy.js +5 -0
  2044. package/node_modules/lodash/fp/sortedIndex.js +5 -0
  2045. package/node_modules/lodash/fp/sortedIndexBy.js +5 -0
  2046. package/node_modules/lodash/fp/sortedIndexOf.js +5 -0
  2047. package/node_modules/lodash/fp/sortedLastIndex.js +5 -0
  2048. package/node_modules/lodash/fp/sortedLastIndexBy.js +5 -0
  2049. package/node_modules/lodash/fp/sortedLastIndexOf.js +5 -0
  2050. package/node_modules/lodash/fp/sortedUniq.js +5 -0
  2051. package/node_modules/lodash/fp/sortedUniqBy.js +5 -0
  2052. package/node_modules/lodash/fp/split.js +5 -0
  2053. package/node_modules/lodash/fp/spread.js +5 -0
  2054. package/node_modules/lodash/fp/spreadFrom.js +5 -0
  2055. package/node_modules/lodash/fp/startCase.js +5 -0
  2056. package/node_modules/lodash/fp/startsWith.js +5 -0
  2057. package/node_modules/lodash/fp/string.js +2 -0
  2058. package/node_modules/lodash/fp/stubArray.js +5 -0
  2059. package/node_modules/lodash/fp/stubFalse.js +5 -0
  2060. package/node_modules/lodash/fp/stubObject.js +5 -0
  2061. package/node_modules/lodash/fp/stubString.js +5 -0
  2062. package/node_modules/lodash/fp/stubTrue.js +5 -0
  2063. package/node_modules/lodash/fp/subtract.js +5 -0
  2064. package/node_modules/lodash/fp/sum.js +5 -0
  2065. package/node_modules/lodash/fp/sumBy.js +5 -0
  2066. package/node_modules/lodash/fp/symmetricDifference.js +1 -0
  2067. package/node_modules/lodash/fp/symmetricDifferenceBy.js +1 -0
  2068. package/node_modules/lodash/fp/symmetricDifferenceWith.js +1 -0
  2069. package/node_modules/lodash/fp/tail.js +5 -0
  2070. package/node_modules/lodash/fp/take.js +5 -0
  2071. package/node_modules/lodash/fp/takeLast.js +1 -0
  2072. package/node_modules/lodash/fp/takeLastWhile.js +1 -0
  2073. package/node_modules/lodash/fp/takeRight.js +5 -0
  2074. package/node_modules/lodash/fp/takeRightWhile.js +5 -0
  2075. package/node_modules/lodash/fp/takeWhile.js +5 -0
  2076. package/node_modules/lodash/fp/tap.js +5 -0
  2077. package/node_modules/lodash/fp/template.js +5 -0
  2078. package/node_modules/lodash/fp/templateSettings.js +5 -0
  2079. package/node_modules/lodash/fp/throttle.js +5 -0
  2080. package/node_modules/lodash/fp/thru.js +5 -0
  2081. package/node_modules/lodash/fp/times.js +5 -0
  2082. package/node_modules/lodash/fp/toArray.js +5 -0
  2083. package/node_modules/lodash/fp/toFinite.js +5 -0
  2084. package/node_modules/lodash/fp/toInteger.js +5 -0
  2085. package/node_modules/lodash/fp/toIterator.js +5 -0
  2086. package/node_modules/lodash/fp/toJSON.js +5 -0
  2087. package/node_modules/lodash/fp/toLength.js +5 -0
  2088. package/node_modules/lodash/fp/toLower.js +5 -0
  2089. package/node_modules/lodash/fp/toNumber.js +5 -0
  2090. package/node_modules/lodash/fp/toPairs.js +5 -0
  2091. package/node_modules/lodash/fp/toPairsIn.js +5 -0
  2092. package/node_modules/lodash/fp/toPath.js +5 -0
  2093. package/node_modules/lodash/fp/toPlainObject.js +5 -0
  2094. package/node_modules/lodash/fp/toSafeInteger.js +5 -0
  2095. package/node_modules/lodash/fp/toString.js +5 -0
  2096. package/node_modules/lodash/fp/toUpper.js +5 -0
  2097. package/node_modules/lodash/fp/transform.js +5 -0
  2098. package/node_modules/lodash/fp/trim.js +5 -0
  2099. package/node_modules/lodash/fp/trimChars.js +5 -0
  2100. package/node_modules/lodash/fp/trimCharsEnd.js +5 -0
  2101. package/node_modules/lodash/fp/trimCharsStart.js +5 -0
  2102. package/node_modules/lodash/fp/trimEnd.js +5 -0
  2103. package/node_modules/lodash/fp/trimStart.js +5 -0
  2104. package/node_modules/lodash/fp/truncate.js +5 -0
  2105. package/node_modules/lodash/fp/unapply.js +1 -0
  2106. package/node_modules/lodash/fp/unary.js +5 -0
  2107. package/node_modules/lodash/fp/unescape.js +5 -0
  2108. package/node_modules/lodash/fp/union.js +5 -0
  2109. package/node_modules/lodash/fp/unionBy.js +5 -0
  2110. package/node_modules/lodash/fp/unionWith.js +5 -0
  2111. package/node_modules/lodash/fp/uniq.js +5 -0
  2112. package/node_modules/lodash/fp/uniqBy.js +5 -0
  2113. package/node_modules/lodash/fp/uniqWith.js +5 -0
  2114. package/node_modules/lodash/fp/uniqueId.js +5 -0
  2115. package/node_modules/lodash/fp/unnest.js +1 -0
  2116. package/node_modules/lodash/fp/unset.js +5 -0
  2117. package/node_modules/lodash/fp/unzip.js +5 -0
  2118. package/node_modules/lodash/fp/unzipWith.js +5 -0
  2119. package/node_modules/lodash/fp/update.js +5 -0
  2120. package/node_modules/lodash/fp/updateWith.js +5 -0
  2121. package/node_modules/lodash/fp/upperCase.js +5 -0
  2122. package/node_modules/lodash/fp/upperFirst.js +5 -0
  2123. package/node_modules/lodash/fp/useWith.js +1 -0
  2124. package/node_modules/lodash/fp/util.js +2 -0
  2125. package/node_modules/lodash/fp/value.js +5 -0
  2126. package/node_modules/lodash/fp/valueOf.js +5 -0
  2127. package/node_modules/lodash/fp/values.js +5 -0
  2128. package/node_modules/lodash/fp/valuesIn.js +5 -0
  2129. package/node_modules/lodash/fp/where.js +1 -0
  2130. package/node_modules/lodash/fp/whereEq.js +1 -0
  2131. package/node_modules/lodash/fp/without.js +5 -0
  2132. package/node_modules/lodash/fp/words.js +5 -0
  2133. package/node_modules/lodash/fp/wrap.js +5 -0
  2134. package/node_modules/lodash/fp/wrapperAt.js +5 -0
  2135. package/node_modules/lodash/fp/wrapperChain.js +5 -0
  2136. package/node_modules/lodash/fp/wrapperLodash.js +5 -0
  2137. package/node_modules/lodash/fp/wrapperReverse.js +5 -0
  2138. package/node_modules/lodash/fp/wrapperValue.js +5 -0
  2139. package/node_modules/lodash/fp/xor.js +5 -0
  2140. package/node_modules/lodash/fp/xorBy.js +5 -0
  2141. package/node_modules/lodash/fp/xorWith.js +5 -0
  2142. package/node_modules/lodash/fp/zip.js +5 -0
  2143. package/node_modules/lodash/fp/zipAll.js +5 -0
  2144. package/node_modules/lodash/fp/zipObj.js +1 -0
  2145. package/node_modules/lodash/fp/zipObject.js +5 -0
  2146. package/node_modules/lodash/fp/zipObjectDeep.js +5 -0
  2147. package/node_modules/lodash/fp/zipWith.js +5 -0
  2148. package/node_modules/lodash/fp.js +2 -0
  2149. package/node_modules/lodash/fromPairs.js +30 -0
  2150. package/node_modules/lodash/function.js +25 -0
  2151. package/node_modules/lodash/functions.js +31 -0
  2152. package/node_modules/lodash/functionsIn.js +31 -0
  2153. package/node_modules/lodash/get.js +33 -0
  2154. package/node_modules/lodash/groupBy.js +41 -0
  2155. package/node_modules/lodash/gt.js +29 -0
  2156. package/node_modules/lodash/gte.js +30 -0
  2157. package/node_modules/lodash/has.js +35 -0
  2158. package/node_modules/lodash/hasIn.js +34 -0
  2159. package/node_modules/lodash/head.js +23 -0
  2160. package/node_modules/lodash/identity.js +21 -0
  2161. package/node_modules/lodash/inRange.js +55 -0
  2162. package/node_modules/lodash/includes.js +53 -0
  2163. package/node_modules/lodash/index.js +1 -0
  2164. package/node_modules/lodash/indexOf.js +42 -0
  2165. package/node_modules/lodash/initial.js +22 -0
  2166. package/node_modules/lodash/intersection.js +30 -0
  2167. package/node_modules/lodash/intersectionBy.js +45 -0
  2168. package/node_modules/lodash/intersectionWith.js +41 -0
  2169. package/node_modules/lodash/invert.js +42 -0
  2170. package/node_modules/lodash/invertBy.js +56 -0
  2171. package/node_modules/lodash/invoke.js +24 -0
  2172. package/node_modules/lodash/invokeMap.js +41 -0
  2173. package/node_modules/lodash/isArguments.js +36 -0
  2174. package/node_modules/lodash/isArray.js +26 -0
  2175. package/node_modules/lodash/isArrayBuffer.js +27 -0
  2176. package/node_modules/lodash/isArrayLike.js +33 -0
  2177. package/node_modules/lodash/isArrayLikeObject.js +33 -0
  2178. package/node_modules/lodash/isBoolean.js +29 -0
  2179. package/node_modules/lodash/isBuffer.js +38 -0
  2180. package/node_modules/lodash/isDate.js +27 -0
  2181. package/node_modules/lodash/isElement.js +25 -0
  2182. package/node_modules/lodash/isEmpty.js +77 -0
  2183. package/node_modules/lodash/isEqual.js +35 -0
  2184. package/node_modules/lodash/isEqualWith.js +41 -0
  2185. package/node_modules/lodash/isError.js +36 -0
  2186. package/node_modules/lodash/isFinite.js +36 -0
  2187. package/node_modules/lodash/isFunction.js +37 -0
  2188. package/node_modules/lodash/isInteger.js +33 -0
  2189. package/node_modules/lodash/isLength.js +35 -0
  2190. package/node_modules/lodash/isMap.js +27 -0
  2191. package/node_modules/lodash/isMatch.js +36 -0
  2192. package/node_modules/lodash/isMatchWith.js +41 -0
  2193. package/node_modules/lodash/isNaN.js +38 -0
  2194. package/node_modules/lodash/isNative.js +40 -0
  2195. package/node_modules/lodash/isNil.js +25 -0
  2196. package/node_modules/lodash/isNull.js +22 -0
  2197. package/node_modules/lodash/isNumber.js +38 -0
  2198. package/node_modules/lodash/isObject.js +31 -0
  2199. package/node_modules/lodash/isObjectLike.js +29 -0
  2200. package/node_modules/lodash/isPlainObject.js +62 -0
  2201. package/node_modules/lodash/isRegExp.js +27 -0
  2202. package/node_modules/lodash/isSafeInteger.js +37 -0
  2203. package/node_modules/lodash/isSet.js +27 -0
  2204. package/node_modules/lodash/isString.js +30 -0
  2205. package/node_modules/lodash/isSymbol.js +29 -0
  2206. package/node_modules/lodash/isTypedArray.js +27 -0
  2207. package/node_modules/lodash/isUndefined.js +22 -0
  2208. package/node_modules/lodash/isWeakMap.js +28 -0
  2209. package/node_modules/lodash/isWeakSet.js +28 -0
  2210. package/node_modules/lodash/iteratee.js +53 -0
  2211. package/node_modules/lodash/join.js +26 -0
  2212. package/node_modules/lodash/kebabCase.js +28 -0
  2213. package/node_modules/lodash/keyBy.js +36 -0
  2214. package/node_modules/lodash/keys.js +37 -0
  2215. package/node_modules/lodash/keysIn.js +32 -0
  2216. package/node_modules/lodash/lang.js +58 -0
  2217. package/node_modules/lodash/last.js +20 -0
  2218. package/node_modules/lodash/lastIndexOf.js +46 -0
  2219. package/node_modules/lodash/lodash.js +17259 -0
  2220. package/node_modules/lodash/lodash.min.js +136 -0
  2221. package/node_modules/lodash/lowerCase.js +27 -0
  2222. package/node_modules/lodash/lowerFirst.js +22 -0
  2223. package/node_modules/lodash/lt.js +29 -0
  2224. package/node_modules/lodash/lte.js +30 -0
  2225. package/node_modules/lodash/map.js +53 -0
  2226. package/node_modules/lodash/mapKeys.js +36 -0
  2227. package/node_modules/lodash/mapValues.js +43 -0
  2228. package/node_modules/lodash/matches.js +46 -0
  2229. package/node_modules/lodash/matchesProperty.js +44 -0
  2230. package/node_modules/lodash/math.js +17 -0
  2231. package/node_modules/lodash/max.js +29 -0
  2232. package/node_modules/lodash/maxBy.js +34 -0
  2233. package/node_modules/lodash/mean.js +22 -0
  2234. package/node_modules/lodash/meanBy.js +31 -0
  2235. package/node_modules/lodash/memoize.js +73 -0
  2236. package/node_modules/lodash/merge.js +39 -0
  2237. package/node_modules/lodash/mergeWith.js +39 -0
  2238. package/node_modules/lodash/method.js +34 -0
  2239. package/node_modules/lodash/methodOf.js +33 -0
  2240. package/node_modules/lodash/min.js +29 -0
  2241. package/node_modules/lodash/minBy.js +34 -0
  2242. package/node_modules/lodash/mixin.js +74 -0
  2243. package/node_modules/lodash/multiply.js +22 -0
  2244. package/node_modules/lodash/negate.js +40 -0
  2245. package/node_modules/lodash/next.js +35 -0
  2246. package/node_modules/lodash/noop.js +17 -0
  2247. package/node_modules/lodash/now.js +23 -0
  2248. package/node_modules/lodash/nth.js +29 -0
  2249. package/node_modules/lodash/nthArg.js +32 -0
  2250. package/node_modules/lodash/number.js +5 -0
  2251. package/node_modules/lodash/object.js +49 -0
  2252. package/node_modules/lodash/omit.js +57 -0
  2253. package/node_modules/lodash/omitBy.js +29 -0
  2254. package/node_modules/lodash/once.js +25 -0
  2255. package/node_modules/lodash/orderBy.js +47 -0
  2256. package/node_modules/lodash/over.js +24 -0
  2257. package/node_modules/lodash/overArgs.js +61 -0
  2258. package/node_modules/lodash/overEvery.js +34 -0
  2259. package/node_modules/lodash/overSome.js +37 -0
  2260. package/node_modules/lodash/package.json +19 -0
  2261. package/node_modules/lodash/pad.js +49 -0
  2262. package/node_modules/lodash/padEnd.js +39 -0
  2263. package/node_modules/lodash/padStart.js +39 -0
  2264. package/node_modules/lodash/parseInt.js +43 -0
  2265. package/node_modules/lodash/partial.js +50 -0
  2266. package/node_modules/lodash/partialRight.js +49 -0
  2267. package/node_modules/lodash/partition.js +43 -0
  2268. package/node_modules/lodash/pick.js +25 -0
  2269. package/node_modules/lodash/pickBy.js +37 -0
  2270. package/node_modules/lodash/plant.js +48 -0
  2271. package/node_modules/lodash/property.js +32 -0
  2272. package/node_modules/lodash/propertyOf.js +30 -0
  2273. package/node_modules/lodash/pull.js +29 -0
  2274. package/node_modules/lodash/pullAll.js +29 -0
  2275. package/node_modules/lodash/pullAllBy.js +33 -0
  2276. package/node_modules/lodash/pullAllWith.js +32 -0
  2277. package/node_modules/lodash/pullAt.js +43 -0
  2278. package/node_modules/lodash/random.js +91 -0
  2279. package/node_modules/lodash/range.js +46 -0
  2280. package/node_modules/lodash/rangeRight.js +41 -0
  2281. package/node_modules/lodash/rearg.js +33 -0
  2282. package/node_modules/lodash/reduce.js +51 -0
  2283. package/node_modules/lodash/reduceRight.js +36 -0
  2284. package/node_modules/lodash/reject.js +46 -0
  2285. package/node_modules/lodash/remove.js +53 -0
  2286. package/node_modules/lodash/repeat.js +37 -0
  2287. package/node_modules/lodash/replace.js +29 -0
  2288. package/node_modules/lodash/rest.js +40 -0
  2289. package/node_modules/lodash/result.js +56 -0
  2290. package/node_modules/lodash/reverse.js +34 -0
  2291. package/node_modules/lodash/round.js +26 -0
  2292. package/node_modules/lodash/sample.js +24 -0
  2293. package/node_modules/lodash/sampleSize.js +37 -0
  2294. package/node_modules/lodash/seq.js +16 -0
  2295. package/node_modules/lodash/set.js +35 -0
  2296. package/node_modules/lodash/setWith.js +32 -0
  2297. package/node_modules/lodash/shuffle.js +25 -0
  2298. package/node_modules/lodash/size.js +46 -0
  2299. package/node_modules/lodash/slice.js +37 -0
  2300. package/node_modules/lodash/snakeCase.js +28 -0
  2301. package/node_modules/lodash/some.js +51 -0
  2302. package/node_modules/lodash/sortBy.js +48 -0
  2303. package/node_modules/lodash/sortedIndex.js +24 -0
  2304. package/node_modules/lodash/sortedIndexBy.js +33 -0
  2305. package/node_modules/lodash/sortedIndexOf.js +31 -0
  2306. package/node_modules/lodash/sortedLastIndex.js +25 -0
  2307. package/node_modules/lodash/sortedLastIndexBy.js +33 -0
  2308. package/node_modules/lodash/sortedLastIndexOf.js +31 -0
  2309. package/node_modules/lodash/sortedUniq.js +24 -0
  2310. package/node_modules/lodash/sortedUniqBy.js +26 -0
  2311. package/node_modules/lodash/split.js +52 -0
  2312. package/node_modules/lodash/spread.js +63 -0
  2313. package/node_modules/lodash/startCase.js +29 -0
  2314. package/node_modules/lodash/startsWith.js +39 -0
  2315. package/node_modules/lodash/string.js +33 -0
  2316. package/node_modules/lodash/stubArray.js +23 -0
  2317. package/node_modules/lodash/stubFalse.js +18 -0
  2318. package/node_modules/lodash/stubObject.js +23 -0
  2319. package/node_modules/lodash/stubString.js +18 -0
  2320. package/node_modules/lodash/stubTrue.js +18 -0
  2321. package/node_modules/lodash/subtract.js +22 -0
  2322. package/node_modules/lodash/sum.js +24 -0
  2323. package/node_modules/lodash/sumBy.js +33 -0
  2324. package/node_modules/lodash/tail.js +22 -0
  2325. package/node_modules/lodash/take.js +37 -0
  2326. package/node_modules/lodash/takeRight.js +39 -0
  2327. package/node_modules/lodash/takeRightWhile.js +45 -0
  2328. package/node_modules/lodash/takeWhile.js +45 -0
  2329. package/node_modules/lodash/tap.js +29 -0
  2330. package/node_modules/lodash/template.js +284 -0
  2331. package/node_modules/lodash/templateSettings.js +71 -0
  2332. package/node_modules/lodash/throttle.js +69 -0
  2333. package/node_modules/lodash/thru.js +28 -0
  2334. package/node_modules/lodash/times.js +51 -0
  2335. package/node_modules/lodash/toArray.js +58 -0
  2336. package/node_modules/lodash/toFinite.js +42 -0
  2337. package/node_modules/lodash/toInteger.js +36 -0
  2338. package/node_modules/lodash/toIterator.js +23 -0
  2339. package/node_modules/lodash/toJSON.js +1 -0
  2340. package/node_modules/lodash/toLength.js +38 -0
  2341. package/node_modules/lodash/toLower.js +28 -0
  2342. package/node_modules/lodash/toNumber.js +64 -0
  2343. package/node_modules/lodash/toPairs.js +30 -0
  2344. package/node_modules/lodash/toPairsIn.js +30 -0
  2345. package/node_modules/lodash/toPath.js +33 -0
  2346. package/node_modules/lodash/toPlainObject.js +32 -0
  2347. package/node_modules/lodash/toSafeInteger.js +37 -0
  2348. package/node_modules/lodash/toString.js +28 -0
  2349. package/node_modules/lodash/toUpper.js +28 -0
  2350. package/node_modules/lodash/transform.js +65 -0
  2351. package/node_modules/lodash/trim.js +47 -0
  2352. package/node_modules/lodash/trimEnd.js +41 -0
  2353. package/node_modules/lodash/trimStart.js +43 -0
  2354. package/node_modules/lodash/truncate.js +111 -0
  2355. package/node_modules/lodash/unary.js +22 -0
  2356. package/node_modules/lodash/unescape.js +34 -0
  2357. package/node_modules/lodash/union.js +26 -0
  2358. package/node_modules/lodash/unionBy.js +39 -0
  2359. package/node_modules/lodash/unionWith.js +34 -0
  2360. package/node_modules/lodash/uniq.js +25 -0
  2361. package/node_modules/lodash/uniqBy.js +31 -0
  2362. package/node_modules/lodash/uniqWith.js +28 -0
  2363. package/node_modules/lodash/uniqueId.js +28 -0
  2364. package/node_modules/lodash/unset.js +34 -0
  2365. package/node_modules/lodash/unzip.js +45 -0
  2366. package/node_modules/lodash/unzipWith.js +39 -0
  2367. package/node_modules/lodash/update.js +35 -0
  2368. package/node_modules/lodash/updateWith.js +33 -0
  2369. package/node_modules/lodash/upperCase.js +27 -0
  2370. package/node_modules/lodash/upperFirst.js +22 -0
  2371. package/node_modules/lodash/util.js +34 -0
  2372. package/node_modules/lodash/value.js +1 -0
  2373. package/node_modules/lodash/valueOf.js +1 -0
  2374. package/node_modules/lodash/values.js +34 -0
  2375. package/node_modules/lodash/valuesIn.js +32 -0
  2376. package/node_modules/lodash/without.js +31 -0
  2377. package/node_modules/lodash/words.js +35 -0
  2378. package/node_modules/lodash/wrap.js +30 -0
  2379. package/node_modules/lodash/wrapperAt.js +48 -0
  2380. package/node_modules/lodash/wrapperChain.js +34 -0
  2381. package/node_modules/lodash/wrapperLodash.js +147 -0
  2382. package/node_modules/lodash/wrapperReverse.js +44 -0
  2383. package/node_modules/lodash/wrapperValue.js +21 -0
  2384. package/node_modules/lodash/xor.js +28 -0
  2385. package/node_modules/lodash/xorBy.js +39 -0
  2386. package/node_modules/lodash/xorWith.js +34 -0
  2387. package/node_modules/lodash/zip.js +22 -0
  2388. package/node_modules/lodash/zipObject.js +24 -0
  2389. package/node_modules/lodash/zipObjectDeep.js +23 -0
  2390. package/node_modules/lodash/zipWith.js +32 -0
  2391. package/node_modules/mute-stream/LICENSE +15 -0
  2392. package/node_modules/mute-stream/README.md +68 -0
  2393. package/node_modules/mute-stream/lib/index.js +142 -0
  2394. package/node_modules/mute-stream/package.json +54 -0
  2395. package/node_modules/safer-buffer/LICENSE +21 -0
  2396. package/node_modules/safer-buffer/Porting-Buffer.md +268 -0
  2397. package/node_modules/safer-buffer/Readme.md +156 -0
  2398. package/node_modules/safer-buffer/dangerous.js +58 -0
  2399. package/node_modules/safer-buffer/package.json +34 -0
  2400. package/node_modules/safer-buffer/safer.js +77 -0
  2401. package/node_modules/safer-buffer/tests.js +406 -0
  2402. package/node_modules/signal-exit/LICENSE.txt +16 -0
  2403. package/node_modules/signal-exit/README.md +74 -0
  2404. package/node_modules/signal-exit/dist/cjs/browser.d.ts +12 -0
  2405. package/node_modules/signal-exit/dist/cjs/browser.d.ts.map +1 -0
  2406. package/node_modules/signal-exit/dist/cjs/browser.js +10 -0
  2407. package/node_modules/signal-exit/dist/cjs/browser.js.map +1 -0
  2408. package/node_modules/signal-exit/dist/cjs/index.d.ts +48 -0
  2409. package/node_modules/signal-exit/dist/cjs/index.d.ts.map +1 -0
  2410. package/node_modules/signal-exit/dist/cjs/index.js +279 -0
  2411. package/node_modules/signal-exit/dist/cjs/index.js.map +1 -0
  2412. package/node_modules/signal-exit/dist/cjs/package.json +3 -0
  2413. package/node_modules/signal-exit/dist/cjs/signals.d.ts +29 -0
  2414. package/node_modules/signal-exit/dist/cjs/signals.d.ts.map +1 -0
  2415. package/node_modules/signal-exit/dist/cjs/signals.js +42 -0
  2416. package/node_modules/signal-exit/dist/cjs/signals.js.map +1 -0
  2417. package/node_modules/signal-exit/dist/mjs/browser.d.ts +12 -0
  2418. package/node_modules/signal-exit/dist/mjs/browser.d.ts.map +1 -0
  2419. package/node_modules/signal-exit/dist/mjs/browser.js +4 -0
  2420. package/node_modules/signal-exit/dist/mjs/browser.js.map +1 -0
  2421. package/node_modules/signal-exit/dist/mjs/index.d.ts +48 -0
  2422. package/node_modules/signal-exit/dist/mjs/index.d.ts.map +1 -0
  2423. package/node_modules/signal-exit/dist/mjs/index.js +275 -0
  2424. package/node_modules/signal-exit/dist/mjs/index.js.map +1 -0
  2425. package/node_modules/signal-exit/dist/mjs/package.json +3 -0
  2426. package/node_modules/signal-exit/dist/mjs/signals.d.ts +29 -0
  2427. package/node_modules/signal-exit/dist/mjs/signals.d.ts.map +1 -0
  2428. package/node_modules/signal-exit/dist/mjs/signals.js +39 -0
  2429. package/node_modules/signal-exit/dist/mjs/signals.js.map +1 -0
  2430. package/node_modules/signal-exit/package.json +106 -0
  2431. package/node_modules/string-width/index.d.ts +29 -0
  2432. package/node_modules/string-width/index.js +47 -0
  2433. package/node_modules/string-width/license +9 -0
  2434. package/node_modules/string-width/package.json +56 -0
  2435. package/node_modules/string-width/readme.md +50 -0
  2436. package/node_modules/strip-ansi/index.d.ts +17 -0
  2437. package/node_modules/strip-ansi/index.js +4 -0
  2438. package/node_modules/strip-ansi/license +9 -0
  2439. package/node_modules/strip-ansi/package.json +54 -0
  2440. package/node_modules/strip-ansi/readme.md +46 -0
  2441. package/node_modules/wrap-ansi/index.js +186 -0
  2442. package/node_modules/wrap-ansi/license +9 -0
  2443. package/node_modules/wrap-ansi/package.json +61 -0
  2444. package/node_modules/wrap-ansi/readme.md +97 -0
  2445. package/node_modules/yoctocolors-cjs/index.d.ts +94 -0
  2446. package/node_modules/yoctocolors-cjs/index.js +98 -0
  2447. package/node_modules/yoctocolors-cjs/license +9 -0
  2448. package/node_modules/yoctocolors-cjs/package.json +67 -0
  2449. package/node_modules/yoctocolors-cjs/readme.md +130 -0
  2450. package/node_modules/zod/LICENSE +21 -0
  2451. package/node_modules/zod/README.md +218 -0
  2452. package/node_modules/zod/compile.cjs +96 -0
  2453. package/node_modules/zod/compile.d.cts +1 -0
  2454. package/node_modules/zod/compile.d.ts +1 -0
  2455. package/node_modules/zod/compile.js +52 -0
  2456. package/node_modules/zod/index.cjs +52 -0
  2457. package/node_modules/zod/index.d.cts +3 -0
  2458. package/node_modules/zod/index.d.ts +3 -0
  2459. package/node_modules/zod/index.js +7 -0
  2460. package/node_modules/zod/locales/index.cjs +36 -0
  2461. package/node_modules/zod/locales/index.d.cts +1 -0
  2462. package/node_modules/zod/locales/index.d.ts +1 -0
  2463. package/node_modules/zod/locales/index.js +1 -0
  2464. package/node_modules/zod/locales/package.json +7 -0
  2465. package/node_modules/zod/mini/index.cjs +51 -0
  2466. package/node_modules/zod/mini/index.d.cts +3 -0
  2467. package/node_modules/zod/mini/index.d.ts +3 -0
  2468. package/node_modules/zod/mini/index.js +3 -0
  2469. package/node_modules/zod/mini/package.json +7 -0
  2470. package/node_modules/zod/package.json +147 -0
  2471. package/node_modules/zod/src/compile.ts +56 -0
  2472. package/node_modules/zod/src/index.ts +7 -0
  2473. package/node_modules/zod/src/locales/index.ts +1 -0
  2474. package/node_modules/zod/src/mini/index.ts +3 -0
  2475. package/node_modules/zod/src/v3/ZodError.ts +340 -0
  2476. package/node_modules/zod/src/v3/benchmarks/datetime.ts +58 -0
  2477. package/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +80 -0
  2478. package/node_modules/zod/src/v3/benchmarks/index.ts +59 -0
  2479. package/node_modules/zod/src/v3/benchmarks/ipv4.ts +57 -0
  2480. package/node_modules/zod/src/v3/benchmarks/object.ts +69 -0
  2481. package/node_modules/zod/src/v3/benchmarks/primitives.ts +162 -0
  2482. package/node_modules/zod/src/v3/benchmarks/realworld.ts +63 -0
  2483. package/node_modules/zod/src/v3/benchmarks/string.ts +55 -0
  2484. package/node_modules/zod/src/v3/benchmarks/union.ts +80 -0
  2485. package/node_modules/zod/src/v3/errors.ts +13 -0
  2486. package/node_modules/zod/src/v3/external.ts +6 -0
  2487. package/node_modules/zod/src/v3/helpers/enumUtil.ts +17 -0
  2488. package/node_modules/zod/src/v3/helpers/errorUtil.ts +8 -0
  2489. package/node_modules/zod/src/v3/helpers/parseUtil.ts +176 -0
  2490. package/node_modules/zod/src/v3/helpers/partialUtil.ts +34 -0
  2491. package/node_modules/zod/src/v3/helpers/typeAliases.ts +2 -0
  2492. package/node_modules/zod/src/v3/helpers/util.ts +224 -0
  2493. package/node_modules/zod/src/v3/index.ts +4 -0
  2494. package/node_modules/zod/src/v3/locales/en.ts +124 -0
  2495. package/node_modules/zod/src/v3/standard-schema.ts +113 -0
  2496. package/node_modules/zod/src/v3/tests/Mocker.ts +54 -0
  2497. package/node_modules/zod/src/v3/tests/all-errors.test.ts +157 -0
  2498. package/node_modules/zod/src/v3/tests/anyunknown.test.ts +28 -0
  2499. package/node_modules/zod/src/v3/tests/array.test.ts +71 -0
  2500. package/node_modules/zod/src/v3/tests/async-parsing.test.ts +388 -0
  2501. package/node_modules/zod/src/v3/tests/async-refinements.test.ts +46 -0
  2502. package/node_modules/zod/src/v3/tests/base.test.ts +29 -0
  2503. package/node_modules/zod/src/v3/tests/bigint.test.ts +55 -0
  2504. package/node_modules/zod/src/v3/tests/branded.test.ts +53 -0
  2505. package/node_modules/zod/src/v3/tests/catch.test.ts +220 -0
  2506. package/node_modules/zod/src/v3/tests/coerce.test.ts +133 -0
  2507. package/node_modules/zod/src/v3/tests/complex.test.ts +70 -0
  2508. package/node_modules/zod/src/v3/tests/custom.test.ts +31 -0
  2509. package/node_modules/zod/src/v3/tests/date.test.ts +32 -0
  2510. package/node_modules/zod/src/v3/tests/deepmasking.test.ts +186 -0
  2511. package/node_modules/zod/src/v3/tests/default.test.ts +112 -0
  2512. package/node_modules/zod/src/v3/tests/description.test.ts +33 -0
  2513. package/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +315 -0
  2514. package/node_modules/zod/src/v3/tests/enum.test.ts +80 -0
  2515. package/node_modules/zod/src/v3/tests/error.test.ts +586 -0
  2516. package/node_modules/zod/src/v3/tests/firstparty.test.ts +87 -0
  2517. package/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +21 -0
  2518. package/node_modules/zod/src/v3/tests/function.test.ts +261 -0
  2519. package/node_modules/zod/src/v3/tests/generics.test.ts +48 -0
  2520. package/node_modules/zod/src/v3/tests/instanceof.test.ts +37 -0
  2521. package/node_modules/zod/src/v3/tests/intersection.test.ts +128 -0
  2522. package/node_modules/zod/src/v3/tests/language-server.source.ts +76 -0
  2523. package/node_modules/zod/src/v3/tests/language-server.test.ts +206 -0
  2524. package/node_modules/zod/src/v3/tests/literal.test.ts +36 -0
  2525. package/node_modules/zod/src/v3/tests/map.test.ts +110 -0
  2526. package/node_modules/zod/src/v3/tests/masking.test.ts +4 -0
  2527. package/node_modules/zod/src/v3/tests/mocker.test.ts +19 -0
  2528. package/node_modules/zod/src/v3/tests/nan.test.ts +24 -0
  2529. package/node_modules/zod/src/v3/tests/nativeEnum.test.ts +87 -0
  2530. package/node_modules/zod/src/v3/tests/nullable.test.ts +42 -0
  2531. package/node_modules/zod/src/v3/tests/number.test.ts +176 -0
  2532. package/node_modules/zod/src/v3/tests/object-augmentation.test.ts +29 -0
  2533. package/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +29 -0
  2534. package/node_modules/zod/src/v3/tests/object.test.ts +431 -0
  2535. package/node_modules/zod/src/v3/tests/optional.test.ts +42 -0
  2536. package/node_modules/zod/src/v3/tests/parseUtil.test.ts +23 -0
  2537. package/node_modules/zod/src/v3/tests/parser.test.ts +41 -0
  2538. package/node_modules/zod/src/v3/tests/partials.test.ts +243 -0
  2539. package/node_modules/zod/src/v3/tests/pickomit.test.ts +111 -0
  2540. package/node_modules/zod/src/v3/tests/pipeline.test.ts +29 -0
  2541. package/node_modules/zod/src/v3/tests/preprocess.test.ts +186 -0
  2542. package/node_modules/zod/src/v3/tests/primitive.test.ts +440 -0
  2543. package/node_modules/zod/src/v3/tests/promise.test.ts +90 -0
  2544. package/node_modules/zod/src/v3/tests/readonly.test.ts +114 -0
  2545. package/node_modules/zod/src/v3/tests/record.test.ts +171 -0
  2546. package/node_modules/zod/src/v3/tests/recursive.test.ts +197 -0
  2547. package/node_modules/zod/src/v3/tests/refine.test.ts +313 -0
  2548. package/node_modules/zod/src/v3/tests/safeparse.test.ts +27 -0
  2549. package/node_modules/zod/src/v3/tests/set.test.ts +142 -0
  2550. package/node_modules/zod/src/v3/tests/standard-schema.test.ts +83 -0
  2551. package/node_modules/zod/src/v3/tests/string.test.ts +922 -0
  2552. package/node_modules/zod/src/v3/tests/transformer.test.ts +233 -0
  2553. package/node_modules/zod/src/v3/tests/tuple.test.ts +90 -0
  2554. package/node_modules/zod/src/v3/tests/unions.test.ts +57 -0
  2555. package/node_modules/zod/src/v3/tests/validations.test.ts +133 -0
  2556. package/node_modules/zod/src/v3/tests/void.test.ts +15 -0
  2557. package/node_modules/zod/src/v3/types.ts +5138 -0
  2558. package/node_modules/zod/src/v4/classic/checks.ts +33 -0
  2559. package/node_modules/zod/src/v4/classic/coerce.ts +27 -0
  2560. package/node_modules/zod/src/v4/classic/compat.ts +78 -0
  2561. package/node_modules/zod/src/v4/classic/deep-partial.ts +76 -0
  2562. package/node_modules/zod/src/v4/classic/errors.ts +97 -0
  2563. package/node_modules/zod/src/v4/classic/external.ts +57 -0
  2564. package/node_modules/zod/src/v4/classic/from-json-schema.ts +944 -0
  2565. package/node_modules/zod/src/v4/classic/in-out.ts +45 -0
  2566. package/node_modules/zod/src/v4/classic/index.ts +5 -0
  2567. package/node_modules/zod/src/v4/classic/iso.ts +20 -0
  2568. package/node_modules/zod/src/v4/classic/parse.ts +88 -0
  2569. package/node_modules/zod/src/v4/classic/schemas.ts +2937 -0
  2570. package/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +26 -0
  2571. package/node_modules/zod/src/v4/classic/tests/apply.test.ts +86 -0
  2572. package/node_modules/zod/src/v4/classic/tests/array.test.ts +264 -0
  2573. package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +402 -0
  2574. package/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +381 -0
  2575. package/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +68 -0
  2576. package/node_modules/zod/src/v4/classic/tests/base.test.ts +7 -0
  2577. package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +89 -0
  2578. package/node_modules/zod/src/v4/classic/tests/brand.test.ts +106 -0
  2579. package/node_modules/zod/src/v4/classic/tests/catch.test.ts +604 -0
  2580. package/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +20 -0
  2581. package/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +572 -0
  2582. package/node_modules/zod/src/v4/classic/tests/codec.test.ts +704 -0
  2583. package/node_modules/zod/src/v4/classic/tests/coerce.test.ts +160 -0
  2584. package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +374 -0
  2585. package/node_modules/zod/src/v4/classic/tests/credit-card.test.ts +76 -0
  2586. package/node_modules/zod/src/v4/classic/tests/custom.test.ts +40 -0
  2587. package/node_modules/zod/src/v4/classic/tests/cyclic-data.test.ts +985 -0
  2588. package/node_modules/zod/src/v4/classic/tests/date.test.ts +92 -0
  2589. package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +316 -0
  2590. package/node_modules/zod/src/v4/classic/tests/deep-partial.test.ts +380 -0
  2591. package/node_modules/zod/src/v4/classic/tests/default-locale.test.ts +32 -0
  2592. package/node_modules/zod/src/v4/classic/tests/default.test.ts +455 -0
  2593. package/node_modules/zod/src/v4/classic/tests/describe-meta-checks.test.ts +27 -0
  2594. package/node_modules/zod/src/v4/classic/tests/description.test.ts +32 -0
  2595. package/node_modules/zod/src/v4/classic/tests/detached-methods.test.ts +221 -0
  2596. package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +942 -0
  2597. package/node_modules/zod/src/v4/classic/tests/enum.test.ts +305 -0
  2598. package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +917 -0
  2599. package/node_modules/zod/src/v4/classic/tests/error.test.ts +1108 -0
  2600. package/node_modules/zod/src/v4/classic/tests/file.test.ts +96 -0
  2601. package/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +179 -0
  2602. package/node_modules/zod/src/v4/classic/tests/fix-json-issue.test.ts +26 -0
  2603. package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +1467 -0
  2604. package/node_modules/zod/src/v4/classic/tests/function.test.ts +391 -0
  2605. package/node_modules/zod/src/v4/classic/tests/generics.test.ts +72 -0
  2606. package/node_modules/zod/src/v4/classic/tests/global-config.test.ts +32 -0
  2607. package/node_modules/zod/src/v4/classic/tests/hash.test.ts +67 -0
  2608. package/node_modules/zod/src/v4/classic/tests/iban.test.ts +81 -0
  2609. package/node_modules/zod/src/v4/classic/tests/in-out.test.ts +159 -0
  2610. package/node_modules/zod/src/v4/classic/tests/index.test.ts +958 -0
  2611. package/node_modules/zod/src/v4/classic/tests/instance-footprint.test.ts +319 -0
  2612. package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +127 -0
  2613. package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +334 -0
  2614. package/node_modules/zod/src/v4/classic/tests/issue-schema.test.ts +215 -0
  2615. package/node_modules/zod/src/v4/classic/tests/jitless-allows-eval.test.ts +39 -0
  2616. package/node_modules/zod/src/v4/classic/tests/json.test.ts +109 -0
  2617. package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +262 -0
  2618. package/node_modules/zod/src/v4/classic/tests/literal.test.ts +128 -0
  2619. package/node_modules/zod/src/v4/classic/tests/locales_ka.test.ts +29 -0
  2620. package/node_modules/zod/src/v4/classic/tests/locales_ro.test.ts +24 -0
  2621. package/node_modules/zod/src/v4/classic/tests/map.test.ts +342 -0
  2622. package/node_modules/zod/src/v4/classic/tests/nan.test.ts +21 -0
  2623. package/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +168 -0
  2624. package/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +101 -0
  2625. package/node_modules/zod/src/v4/classic/tests/nullable.test.ts +22 -0
  2626. package/node_modules/zod/src/v4/classic/tests/number.test.ts +401 -0
  2627. package/node_modules/zod/src/v4/classic/tests/object.test.ts +1006 -0
  2628. package/node_modules/zod/src/v4/classic/tests/optin-ladder.test.ts +235 -0
  2629. package/node_modules/zod/src/v4/classic/tests/optional.test.ts +366 -0
  2630. package/node_modules/zod/src/v4/classic/tests/partial.test.ts +497 -0
  2631. package/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +211 -0
  2632. package/node_modules/zod/src/v4/classic/tests/pipe.test.ts +101 -0
  2633. package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +144 -0
  2634. package/node_modules/zod/src/v4/classic/tests/preprocess-types.test.ts +44 -0
  2635. package/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +351 -0
  2636. package/node_modules/zod/src/v4/classic/tests/primitive.test.ts +175 -0
  2637. package/node_modules/zod/src/v4/classic/tests/promise.test.ts +81 -0
  2638. package/node_modules/zod/src/v4/classic/tests/properties.test.ts +141 -0
  2639. package/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +23 -0
  2640. package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +184 -0
  2641. package/node_modules/zod/src/v4/classic/tests/record.test.ts +885 -0
  2642. package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +707 -0
  2643. package/node_modules/zod/src/v4/classic/tests/redos.test.ts +68 -0
  2644. package/node_modules/zod/src/v4/classic/tests/refine.test.ts +693 -0
  2645. package/node_modules/zod/src/v4/classic/tests/registries.test.ts +243 -0
  2646. package/node_modules/zod/src/v4/classic/tests/set.test.ts +190 -0
  2647. package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +153 -0
  2648. package/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +125 -0
  2649. package/node_modules/zod/src/v4/classic/tests/string.test.ts +1440 -0
  2650. package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +124 -0
  2651. package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +812 -0
  2652. package/node_modules/zod/src/v4/classic/tests/to-json-schema-methods.test.ts +438 -0
  2653. package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +4733 -0
  2654. package/node_modules/zod/src/v4/classic/tests/transform.test.ts +378 -0
  2655. package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +511 -0
  2656. package/node_modules/zod/src/v4/classic/tests/union.test.ts +310 -0
  2657. package/node_modules/zod/src/v4/classic/tests/url.test.ts +13 -0
  2658. package/node_modules/zod/src/v4/classic/tests/validate.test.ts +645 -0
  2659. package/node_modules/zod/src/v4/classic/tests/validations.test.ts +283 -0
  2660. package/node_modules/zod/src/v4/classic/tests/void.test.ts +12 -0
  2661. package/node_modules/zod/src/v4/core/api.ts +1875 -0
  2662. package/node_modules/zod/src/v4/core/checks.ts +1266 -0
  2663. package/node_modules/zod/src/v4/core/compile.ts +2313 -0
  2664. package/node_modules/zod/src/v4/core/core.ts +230 -0
  2665. package/node_modules/zod/src/v4/core/doc.ts +52 -0
  2666. package/node_modules/zod/src/v4/core/errors.ts +543 -0
  2667. package/node_modules/zod/src/v4/core/index.ts +19 -0
  2668. package/node_modules/zod/src/v4/core/json-schema-generator.ts +131 -0
  2669. package/node_modules/zod/src/v4/core/json-schema-processors.ts +934 -0
  2670. package/node_modules/zod/src/v4/core/json-schema.ts +148 -0
  2671. package/node_modules/zod/src/v4/core/memoizer.ts +331 -0
  2672. package/node_modules/zod/src/v4/core/parse.ts +309 -0
  2673. package/node_modules/zod/src/v4/core/regexes.ts +217 -0
  2674. package/node_modules/zod/src/v4/core/registries.ts +105 -0
  2675. package/node_modules/zod/src/v4/core/schemas.ts +5192 -0
  2676. package/node_modules/zod/src/v4/core/standard-schema.ts +159 -0
  2677. package/node_modules/zod/src/v4/core/tests/cached.test.ts +54 -0
  2678. package/node_modules/zod/src/v4/core/tests/compile-differential.test.ts +1004 -0
  2679. package/node_modules/zod/src/v4/core/tests/compile-generative.test.ts +445 -0
  2680. package/node_modules/zod/src/v4/core/tests/compile-global.test.ts +89 -0
  2681. package/node_modules/zod/src/v4/core/tests/compile-off-by-default.test.ts +26 -0
  2682. package/node_modules/zod/src/v4/core/tests/compile-stats.test.ts +34 -0
  2683. package/node_modules/zod/src/v4/core/tests/compile.test.ts +2036 -0
  2684. package/node_modules/zod/src/v4/core/tests/email-regex.test.ts +140 -0
  2685. package/node_modules/zod/src/v4/core/tests/extend.test.ts +59 -0
  2686. package/node_modules/zod/src/v4/core/tests/index.test.ts +46 -0
  2687. package/node_modules/zod/src/v4/core/tests/locales/be.test.ts +124 -0
  2688. package/node_modules/zod/src/v4/core/tests/locales/el.test.ts +214 -0
  2689. package/node_modules/zod/src/v4/core/tests/locales/en.test.ts +22 -0
  2690. package/node_modules/zod/src/v4/core/tests/locales/es.test.ts +180 -0
  2691. package/node_modules/zod/src/v4/core/tests/locales/fr.test.ts +72 -0
  2692. package/node_modules/zod/src/v4/core/tests/locales/he.test.ts +379 -0
  2693. package/node_modules/zod/src/v4/core/tests/locales/hr.test.ts +163 -0
  2694. package/node_modules/zod/src/v4/core/tests/locales/nl.test.ts +46 -0
  2695. package/node_modules/zod/src/v4/core/tests/locales/parity.test.ts +42 -0
  2696. package/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +128 -0
  2697. package/node_modules/zod/src/v4/core/tests/locales/tg.test.ts +85 -0
  2698. package/node_modules/zod/src/v4/core/tests/locales/tk.test.ts +69 -0
  2699. package/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +69 -0
  2700. package/node_modules/zod/src/v4/core/tests/locales/uz.test.ts +105 -0
  2701. package/node_modules/zod/src/v4/core/tests/polyfill-collision.test.ts +46 -0
  2702. package/node_modules/zod/src/v4/core/tests/record-constructor.test.ts +125 -0
  2703. package/node_modules/zod/src/v4/core/tests/recursive-tuples.test.ts +45 -0
  2704. package/node_modules/zod/src/v4/core/tests/treeshake.test.ts +51 -0
  2705. package/node_modules/zod/src/v4/core/tests/url-no-canparse.test.ts +133 -0
  2706. package/node_modules/zod/src/v4/core/to-json-schema.ts +857 -0
  2707. package/node_modules/zod/src/v4/core/util.ts +1280 -0
  2708. package/node_modules/zod/src/v4/core/versions.ts +5 -0
  2709. package/node_modules/zod/src/v4/core/visit.ts +193 -0
  2710. package/node_modules/zod/src/v4/core/zsf.ts +323 -0
  2711. package/node_modules/zod/src/v4/index.ts +4 -0
  2712. package/node_modules/zod/src/v4/locales/ar.ts +120 -0
  2713. package/node_modules/zod/src/v4/locales/az.ts +116 -0
  2714. package/node_modules/zod/src/v4/locales/be.ts +188 -0
  2715. package/node_modules/zod/src/v4/locales/bg.ts +133 -0
  2716. package/node_modules/zod/src/v4/locales/bn.ts +123 -0
  2717. package/node_modules/zod/src/v4/locales/ca.ts +121 -0
  2718. package/node_modules/zod/src/v4/locales/ckb.ts +140 -0
  2719. package/node_modules/zod/src/v4/locales/cs.ts +123 -0
  2720. package/node_modules/zod/src/v4/locales/da.ts +128 -0
  2721. package/node_modules/zod/src/v4/locales/de.ts +121 -0
  2722. package/node_modules/zod/src/v4/locales/el.ts +124 -0
  2723. package/node_modules/zod/src/v4/locales/en.ts +136 -0
  2724. package/node_modules/zod/src/v4/locales/eo.ts +123 -0
  2725. package/node_modules/zod/src/v4/locales/es.ts +145 -0
  2726. package/node_modules/zod/src/v4/locales/fa.ts +131 -0
  2727. package/node_modules/zod/src/v4/locales/fi.ts +126 -0
  2728. package/node_modules/zod/src/v4/locales/fr-CA.ts +121 -0
  2729. package/node_modules/zod/src/v4/locales/fr.ts +139 -0
  2730. package/node_modules/zod/src/v4/locales/gu.ts +123 -0
  2731. package/node_modules/zod/src/v4/locales/he.ts +253 -0
  2732. package/node_modules/zod/src/v4/locales/hi.ts +126 -0
  2733. package/node_modules/zod/src/v4/locales/hr.ts +135 -0
  2734. package/node_modules/zod/src/v4/locales/hu.ts +122 -0
  2735. package/node_modules/zod/src/v4/locales/hy.ts +175 -0
  2736. package/node_modules/zod/src/v4/locales/id.ts +120 -0
  2737. package/node_modules/zod/src/v4/locales/index.ts +63 -0
  2738. package/node_modules/zod/src/v4/locales/is.ts +124 -0
  2739. package/node_modules/zod/src/v4/locales/it.ts +121 -0
  2740. package/node_modules/zod/src/v4/locales/ja.ts +119 -0
  2741. package/node_modules/zod/src/v4/locales/ka.ts +128 -0
  2742. package/node_modules/zod/src/v4/locales/kh.ts +7 -0
  2743. package/node_modules/zod/src/v4/locales/km.ts +124 -0
  2744. package/node_modules/zod/src/v4/locales/kn.ts +126 -0
  2745. package/node_modules/zod/src/v4/locales/ko.ts +126 -0
  2746. package/node_modules/zod/src/v4/locales/lt.ts +243 -0
  2747. package/node_modules/zod/src/v4/locales/mk.ts +123 -0
  2748. package/node_modules/zod/src/v4/locales/ms.ts +120 -0
  2749. package/node_modules/zod/src/v4/locales/ne.ts +128 -0
  2750. package/node_modules/zod/src/v4/locales/nl.ts +126 -0
  2751. package/node_modules/zod/src/v4/locales/nn.ts +121 -0
  2752. package/node_modules/zod/src/v4/locales/no.ts +121 -0
  2753. package/node_modules/zod/src/v4/locales/ota.ts +122 -0
  2754. package/node_modules/zod/src/v4/locales/pl.ts +123 -0
  2755. package/node_modules/zod/src/v4/locales/ps.ts +131 -0
  2756. package/node_modules/zod/src/v4/locales/pt-BR.ts +161 -0
  2757. package/node_modules/zod/src/v4/locales/pt.ts +159 -0
  2758. package/node_modules/zod/src/v4/locales/ro.ts +132 -0
  2759. package/node_modules/zod/src/v4/locales/ru.ts +188 -0
  2760. package/node_modules/zod/src/v4/locales/sk.ts +123 -0
  2761. package/node_modules/zod/src/v4/locales/sl.ts +123 -0
  2762. package/node_modules/zod/src/v4/locales/sv.ts +124 -0
  2763. package/node_modules/zod/src/v4/locales/ta.ts +123 -0
  2764. package/node_modules/zod/src/v4/locales/tg.ts +135 -0
  2765. package/node_modules/zod/src/v4/locales/th.ts +124 -0
  2766. package/node_modules/zod/src/v4/locales/tk.ts +113 -0
  2767. package/node_modules/zod/src/v4/locales/tr.ts +116 -0
  2768. package/node_modules/zod/src/v4/locales/ua.ts +7 -0
  2769. package/node_modules/zod/src/v4/locales/uk.ts +122 -0
  2770. package/node_modules/zod/src/v4/locales/ur.ts +124 -0
  2771. package/node_modules/zod/src/v4/locales/uz.ts +120 -0
  2772. package/node_modules/zod/src/v4/locales/vi.ts +122 -0
  2773. package/node_modules/zod/src/v4/locales/yo.ts +129 -0
  2774. package/node_modules/zod/src/v4/locales/zh-CN.ts +121 -0
  2775. package/node_modules/zod/src/v4/locales/zh-TW.ts +120 -0
  2776. package/node_modules/zod/src/v4/mini/checks.ts +33 -0
  2777. package/node_modules/zod/src/v4/mini/coerce.ts +27 -0
  2778. package/node_modules/zod/src/v4/mini/deep-partial.ts +73 -0
  2779. package/node_modules/zod/src/v4/mini/external.ts +52 -0
  2780. package/node_modules/zod/src/v4/mini/in-out.ts +45 -0
  2781. package/node_modules/zod/src/v4/mini/index.ts +3 -0
  2782. package/node_modules/zod/src/v4/mini/iso.ts +66 -0
  2783. package/node_modules/zod/src/v4/mini/parse.ts +16 -0
  2784. package/node_modules/zod/src/v4/mini/schemas.ts +2051 -0
  2785. package/node_modules/zod/src/v4/mini/tests/apply.test.ts +57 -0
  2786. package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +190 -0
  2787. package/node_modules/zod/src/v4/mini/tests/brand.test.ts +94 -0
  2788. package/node_modules/zod/src/v4/mini/tests/checks.test.ts +158 -0
  2789. package/node_modules/zod/src/v4/mini/tests/codec.test.ts +582 -0
  2790. package/node_modules/zod/src/v4/mini/tests/computed.test.ts +30 -0
  2791. package/node_modules/zod/src/v4/mini/tests/cyclic-data.test.ts +84 -0
  2792. package/node_modules/zod/src/v4/mini/tests/deep-partial.test.ts +54 -0
  2793. package/node_modules/zod/src/v4/mini/tests/error.test.ts +41 -0
  2794. package/node_modules/zod/src/v4/mini/tests/functions.test.ts +14 -0
  2795. package/node_modules/zod/src/v4/mini/tests/index.test.ts +1146 -0
  2796. package/node_modules/zod/src/v4/mini/tests/number.test.ts +109 -0
  2797. package/node_modules/zod/src/v4/mini/tests/object.test.ts +292 -0
  2798. package/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +43 -0
  2799. package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +341 -0
  2800. package/node_modules/zod/src/v4/mini/tests/standard-schema.test.ts +50 -0
  2801. package/node_modules/zod/src/v4/mini/tests/string.test.ts +396 -0
  2802. package/node_modules/zod/src/v4-mini/index.ts +3 -0
  2803. package/node_modules/zod/v3/ZodError.cjs +167 -0
  2804. package/node_modules/zod/v3/ZodError.d.cts +164 -0
  2805. package/node_modules/zod/v3/ZodError.d.ts +164 -0
  2806. package/node_modules/zod/v3/ZodError.js +143 -0
  2807. package/node_modules/zod/v3/errors.cjs +36 -0
  2808. package/node_modules/zod/v3/errors.d.cts +5 -0
  2809. package/node_modules/zod/v3/errors.d.ts +5 -0
  2810. package/node_modules/zod/v3/errors.js +9 -0
  2811. package/node_modules/zod/v3/external.cjs +41 -0
  2812. package/node_modules/zod/v3/external.d.cts +6 -0
  2813. package/node_modules/zod/v3/external.d.ts +6 -0
  2814. package/node_modules/zod/v3/external.js +6 -0
  2815. package/node_modules/zod/v3/helpers/enumUtil.cjs +21 -0
  2816. package/node_modules/zod/v3/helpers/enumUtil.d.cts +8 -0
  2817. package/node_modules/zod/v3/helpers/enumUtil.d.ts +8 -0
  2818. package/node_modules/zod/v3/helpers/enumUtil.js +1 -0
  2819. package/node_modules/zod/v3/helpers/errorUtil.cjs +28 -0
  2820. package/node_modules/zod/v3/helpers/errorUtil.d.cts +9 -0
  2821. package/node_modules/zod/v3/helpers/errorUtil.d.ts +9 -0
  2822. package/node_modules/zod/v3/helpers/errorUtil.js +6 -0
  2823. package/node_modules/zod/v3/helpers/parseUtil.cjs +143 -0
  2824. package/node_modules/zod/v3/helpers/parseUtil.d.cts +78 -0
  2825. package/node_modules/zod/v3/helpers/parseUtil.d.ts +78 -0
  2826. package/node_modules/zod/v3/helpers/parseUtil.js +109 -0
  2827. package/node_modules/zod/v3/helpers/partialUtil.cjs +21 -0
  2828. package/node_modules/zod/v3/helpers/partialUtil.d.cts +8 -0
  2829. package/node_modules/zod/v3/helpers/partialUtil.d.ts +8 -0
  2830. package/node_modules/zod/v3/helpers/partialUtil.js +1 -0
  2831. package/node_modules/zod/v3/helpers/typeAliases.cjs +21 -0
  2832. package/node_modules/zod/v3/helpers/typeAliases.d.cts +2 -0
  2833. package/node_modules/zod/v3/helpers/typeAliases.d.ts +2 -0
  2834. package/node_modules/zod/v3/helpers/typeAliases.js +1 -0
  2835. package/node_modules/zod/v3/helpers/util.cjs +156 -0
  2836. package/node_modules/zod/v3/helpers/util.d.cts +85 -0
  2837. package/node_modules/zod/v3/helpers/util.d.ts +85 -0
  2838. package/node_modules/zod/v3/helpers/util.js +133 -0
  2839. package/node_modules/zod/v3/index.cjs +52 -0
  2840. package/node_modules/zod/v3/index.d.cts +4 -0
  2841. package/node_modules/zod/v3/index.d.ts +4 -0
  2842. package/node_modules/zod/v3/index.js +4 -0
  2843. package/node_modules/zod/v3/locales/en.cjs +112 -0
  2844. package/node_modules/zod/v3/locales/en.d.cts +3 -0
  2845. package/node_modules/zod/v3/locales/en.d.ts +3 -0
  2846. package/node_modules/zod/v3/locales/en.js +109 -0
  2847. package/node_modules/zod/v3/package.json +7 -0
  2848. package/node_modules/zod/v3/standard-schema.cjs +21 -0
  2849. package/node_modules/zod/v3/standard-schema.d.cts +102 -0
  2850. package/node_modules/zod/v3/standard-schema.d.ts +102 -0
  2851. package/node_modules/zod/v3/standard-schema.js +1 -0
  2852. package/node_modules/zod/v3/types.cjs +3798 -0
  2853. package/node_modules/zod/v3/types.d.cts +1034 -0
  2854. package/node_modules/zod/v3/types.d.ts +1034 -0
  2855. package/node_modules/zod/v3/types.js +3697 -0
  2856. package/node_modules/zod/v4/classic/checks.cjs +53 -0
  2857. package/node_modules/zod/v4/classic/checks.d.cts +1 -0
  2858. package/node_modules/zod/v4/classic/checks.d.ts +1 -0
  2859. package/node_modules/zod/v4/classic/checks.js +1 -0
  2860. package/node_modules/zod/v4/classic/coerce.cjs +66 -0
  2861. package/node_modules/zod/v4/classic/coerce.d.cts +17 -0
  2862. package/node_modules/zod/v4/classic/coerce.d.ts +17 -0
  2863. package/node_modules/zod/v4/classic/coerce.js +17 -0
  2864. package/node_modules/zod/v4/classic/compat.cjs +80 -0
  2865. package/node_modules/zod/v4/classic/compat.d.cts +48 -0
  2866. package/node_modules/zod/v4/classic/compat.d.ts +48 -0
  2867. package/node_modules/zod/v4/classic/compat.js +31 -0
  2868. package/node_modules/zod/v4/classic/deep-partial.cjs +58 -0
  2869. package/node_modules/zod/v4/classic/deep-partial.d.cts +14 -0
  2870. package/node_modules/zod/v4/classic/deep-partial.d.ts +14 -0
  2871. package/node_modules/zod/v4/classic/deep-partial.js +13 -0
  2872. package/node_modules/zod/v4/classic/errors.cjs +102 -0
  2873. package/node_modules/zod/v4/classic/errors.d.cts +29 -0
  2874. package/node_modules/zod/v4/classic/errors.d.ts +29 -0
  2875. package/node_modules/zod/v4/classic/errors.js +57 -0
  2876. package/node_modules/zod/v4/classic/external.cjs +97 -0
  2877. package/node_modules/zod/v4/classic/external.d.cts +19 -0
  2878. package/node_modules/zod/v4/classic/external.d.ts +19 -0
  2879. package/node_modules/zod/v4/classic/external.js +17 -0
  2880. package/node_modules/zod/v4/classic/from-json-schema.cjs +926 -0
  2881. package/node_modules/zod/v4/classic/from-json-schema.d.cts +12 -0
  2882. package/node_modules/zod/v4/classic/from-json-schema.d.ts +12 -0
  2883. package/node_modules/zod/v4/classic/from-json-schema.js +881 -0
  2884. package/node_modules/zod/v4/classic/in-out.cjs +82 -0
  2885. package/node_modules/zod/v4/classic/in-out.d.cts +8 -0
  2886. package/node_modules/zod/v4/classic/in-out.d.ts +8 -0
  2887. package/node_modules/zod/v4/classic/in-out.js +36 -0
  2888. package/node_modules/zod/v4/classic/index.cjs +52 -0
  2889. package/node_modules/zod/v4/classic/index.d.cts +3 -0
  2890. package/node_modules/zod/v4/classic/index.d.ts +3 -0
  2891. package/node_modules/zod/v4/classic/index.js +4 -0
  2892. package/node_modules/zod/v4/classic/iso.cjs +68 -0
  2893. package/node_modules/zod/v4/classic/iso.d.cts +7 -0
  2894. package/node_modules/zod/v4/classic/iso.d.ts +7 -0
  2895. package/node_modules/zod/v4/classic/iso.js +15 -0
  2896. package/node_modules/zod/v4/classic/package.json +7 -0
  2897. package/node_modules/zod/v4/classic/parse.cjs +63 -0
  2898. package/node_modules/zod/v4/classic/parse.d.cts +44 -0
  2899. package/node_modules/zod/v4/classic/parse.d.ts +44 -0
  2900. package/node_modules/zod/v4/classic/parse.js +16 -0
  2901. package/node_modules/zod/v4/classic/schemas.cjs +1676 -0
  2902. package/node_modules/zod/v4/classic/schemas.d.cts +816 -0
  2903. package/node_modules/zod/v4/classic/schemas.d.ts +816 -0
  2904. package/node_modules/zod/v4/classic/schemas.js +1535 -0
  2905. package/node_modules/zod/v4/core/api.cjs +1269 -0
  2906. package/node_modules/zod/v4/core/api.d.cts +335 -0
  2907. package/node_modules/zod/v4/core/api.d.ts +335 -0
  2908. package/node_modules/zod/v4/core/api.js +1107 -0
  2909. package/node_modules/zod/v4/core/checks.cjs +561 -0
  2910. package/node_modules/zod/v4/core/checks.d.cts +294 -0
  2911. package/node_modules/zod/v4/core/checks.d.ts +294 -0
  2912. package/node_modules/zod/v4/core/checks.js +516 -0
  2913. package/node_modules/zod/v4/core/compile.cjs +1908 -0
  2914. package/node_modules/zod/v4/core/compile.d.cts +65 -0
  2915. package/node_modules/zod/v4/core/compile.d.ts +65 -0
  2916. package/node_modules/zod/v4/core/compile.js +1858 -0
  2917. package/node_modules/zod/v4/core/core.cjs +167 -0
  2918. package/node_modules/zod/v4/core/core.d.cts +82 -0
  2919. package/node_modules/zod/v4/core/core.d.ts +82 -0
  2920. package/node_modules/zod/v4/core/core.js +141 -0
  2921. package/node_modules/zod/v4/core/doc.cjs +61 -0
  2922. package/node_modules/zod/v4/core/doc.d.cts +16 -0
  2923. package/node_modules/zod/v4/core/doc.d.ts +16 -0
  2924. package/node_modules/zod/v4/core/doc.js +38 -0
  2925. package/node_modules/zod/v4/core/errors.cjs +317 -0
  2926. package/node_modules/zod/v4/core/errors.d.cts +225 -0
  2927. package/node_modules/zod/v4/core/errors.d.ts +225 -0
  2928. package/node_modules/zod/v4/core/errors.js +267 -0
  2929. package/node_modules/zod/v4/core/index.cjs +70 -0
  2930. package/node_modules/zod/v4/core/index.d.cts +19 -0
  2931. package/node_modules/zod/v4/core/index.d.ts +19 -0
  2932. package/node_modules/zod/v4/core/index.js +19 -0
  2933. package/node_modules/zod/v4/core/json-schema-generator.cjs +122 -0
  2934. package/node_modules/zod/v4/core/json-schema-generator.d.cts +65 -0
  2935. package/node_modules/zod/v4/core/json-schema-generator.d.ts +65 -0
  2936. package/node_modules/zod/v4/core/json-schema-generator.js +99 -0
  2937. package/node_modules/zod/v4/core/json-schema-processors.cjs +929 -0
  2938. package/node_modules/zod/v4/core/json-schema-processors.d.cts +65 -0
  2939. package/node_modules/zod/v4/core/json-schema-processors.d.ts +65 -0
  2940. package/node_modules/zod/v4/core/json-schema-processors.js +843 -0
  2941. package/node_modules/zod/v4/core/json-schema.cjs +21 -0
  2942. package/node_modules/zod/v4/core/json-schema.d.cts +89 -0
  2943. package/node_modules/zod/v4/core/json-schema.d.ts +89 -0
  2944. package/node_modules/zod/v4/core/json-schema.js +1 -0
  2945. package/node_modules/zod/v4/core/memoizer.cjs +360 -0
  2946. package/node_modules/zod/v4/core/memoizer.d.cts +15 -0
  2947. package/node_modules/zod/v4/core/memoizer.d.ts +15 -0
  2948. package/node_modules/zod/v4/core/memoizer.js +311 -0
  2949. package/node_modules/zod/v4/core/package.json +7 -0
  2950. package/node_modules/zod/v4/core/parse.cjs +233 -0
  2951. package/node_modules/zod/v4/core/parse.d.cts +52 -0
  2952. package/node_modules/zod/v4/core/parse.d.ts +52 -0
  2953. package/node_modules/zod/v4/core/parse.js +175 -0
  2954. package/node_modules/zod/v4/core/regexes.cjs +209 -0
  2955. package/node_modules/zod/v4/core/regexes.d.cts +90 -0
  2956. package/node_modules/zod/v4/core/regexes.d.ts +90 -0
  2957. package/node_modules/zod/v4/core/regexes.js +156 -0
  2958. package/node_modules/zod/v4/core/registries.cjs +75 -0
  2959. package/node_modules/zod/v4/core/registries.d.cts +35 -0
  2960. package/node_modules/zod/v4/core/registries.d.ts +35 -0
  2961. package/node_modules/zod/v4/core/registries.js +51 -0
  2962. package/node_modules/zod/v4/core/schemas.cjs +2669 -0
  2963. package/node_modules/zod/v4/core/schemas.d.cts +1273 -0
  2964. package/node_modules/zod/v4/core/schemas.d.ts +1273 -0
  2965. package/node_modules/zod/v4/core/schemas.js +2606 -0
  2966. package/node_modules/zod/v4/core/standard-schema.cjs +21 -0
  2967. package/node_modules/zod/v4/core/standard-schema.d.cts +126 -0
  2968. package/node_modules/zod/v4/core/standard-schema.d.ts +126 -0
  2969. package/node_modules/zod/v4/core/standard-schema.js +1 -0
  2970. package/node_modules/zod/v4/core/to-json-schema.cjs +681 -0
  2971. package/node_modules/zod/v4/core/to-json-schema.d.cts +154 -0
  2972. package/node_modules/zod/v4/core/to-json-schema.d.ts +154 -0
  2973. package/node_modules/zod/v4/core/to-json-schema.js +651 -0
  2974. package/node_modules/zod/v4/core/util.cjs +949 -0
  2975. package/node_modules/zod/v4/core/util.d.cts +278 -0
  2976. package/node_modules/zod/v4/core/util.d.ts +278 -0
  2977. package/node_modules/zod/v4/core/util.js +859 -0
  2978. package/node_modules/zod/v4/core/versions.cjs +27 -0
  2979. package/node_modules/zod/v4/core/versions.d.cts +5 -0
  2980. package/node_modules/zod/v4/core/versions.d.ts +5 -0
  2981. package/node_modules/zod/v4/core/versions.js +5 -0
  2982. package/node_modules/zod/v4/core/visit.cjs +214 -0
  2983. package/node_modules/zod/v4/core/visit.d.cts +30 -0
  2984. package/node_modules/zod/v4/core/visit.d.ts +30 -0
  2985. package/node_modules/zod/v4/core/visit.js +169 -0
  2986. package/node_modules/zod/v4/index.cjs +51 -0
  2987. package/node_modules/zod/v4/index.d.cts +3 -0
  2988. package/node_modules/zod/v4/index.d.ts +3 -0
  2989. package/node_modules/zod/v4/index.js +4 -0
  2990. package/node_modules/zod/v4/locales/ar.cjs +138 -0
  2991. package/node_modules/zod/v4/locales/ar.d.cts +5 -0
  2992. package/node_modules/zod/v4/locales/ar.d.ts +4 -0
  2993. package/node_modules/zod/v4/locales/ar.js +111 -0
  2994. package/node_modules/zod/v4/locales/az.cjs +137 -0
  2995. package/node_modules/zod/v4/locales/az.d.cts +5 -0
  2996. package/node_modules/zod/v4/locales/az.d.ts +4 -0
  2997. package/node_modules/zod/v4/locales/az.js +110 -0
  2998. package/node_modules/zod/v4/locales/be.cjs +195 -0
  2999. package/node_modules/zod/v4/locales/be.d.cts +5 -0
  3000. package/node_modules/zod/v4/locales/be.d.ts +4 -0
  3001. package/node_modules/zod/v4/locales/be.js +168 -0
  3002. package/node_modules/zod/v4/locales/bg.cjs +152 -0
  3003. package/node_modules/zod/v4/locales/bg.d.cts +5 -0
  3004. package/node_modules/zod/v4/locales/bg.d.ts +4 -0
  3005. package/node_modules/zod/v4/locales/bg.js +125 -0
  3006. package/node_modules/zod/v4/locales/bn.cjs +140 -0
  3007. package/node_modules/zod/v4/locales/bn.d.cts +5 -0
  3008. package/node_modules/zod/v4/locales/bn.d.ts +4 -0
  3009. package/node_modules/zod/v4/locales/bn.js +113 -0
  3010. package/node_modules/zod/v4/locales/ca.cjs +139 -0
  3011. package/node_modules/zod/v4/locales/ca.d.cts +5 -0
  3012. package/node_modules/zod/v4/locales/ca.d.ts +4 -0
  3013. package/node_modules/zod/v4/locales/ca.js +112 -0
  3014. package/node_modules/zod/v4/locales/ckb.cjs +160 -0
  3015. package/node_modules/zod/v4/locales/ckb.d.cts +5 -0
  3016. package/node_modules/zod/v4/locales/ckb.d.ts +4 -0
  3017. package/node_modules/zod/v4/locales/ckb.js +133 -0
  3018. package/node_modules/zod/v4/locales/cs.cjs +143 -0
  3019. package/node_modules/zod/v4/locales/cs.d.cts +5 -0
  3020. package/node_modules/zod/v4/locales/cs.d.ts +4 -0
  3021. package/node_modules/zod/v4/locales/cs.js +116 -0
  3022. package/node_modules/zod/v4/locales/da.cjs +147 -0
  3023. package/node_modules/zod/v4/locales/da.d.cts +5 -0
  3024. package/node_modules/zod/v4/locales/da.d.ts +4 -0
  3025. package/node_modules/zod/v4/locales/da.js +120 -0
  3026. package/node_modules/zod/v4/locales/de.cjs +140 -0
  3027. package/node_modules/zod/v4/locales/de.d.cts +5 -0
  3028. package/node_modules/zod/v4/locales/de.d.ts +4 -0
  3029. package/node_modules/zod/v4/locales/de.js +113 -0
  3030. package/node_modules/zod/v4/locales/el.cjs +139 -0
  3031. package/node_modules/zod/v4/locales/el.d.cts +5 -0
  3032. package/node_modules/zod/v4/locales/el.d.ts +4 -0
  3033. package/node_modules/zod/v4/locales/el.js +112 -0
  3034. package/node_modules/zod/v4/locales/en.cjs +152 -0
  3035. package/node_modules/zod/v4/locales/en.d.cts +5 -0
  3036. package/node_modules/zod/v4/locales/en.d.ts +4 -0
  3037. package/node_modules/zod/v4/locales/en.js +125 -0
  3038. package/node_modules/zod/v4/locales/eo.cjs +141 -0
  3039. package/node_modules/zod/v4/locales/eo.d.cts +5 -0
  3040. package/node_modules/zod/v4/locales/eo.d.ts +4 -0
  3041. package/node_modules/zod/v4/locales/eo.js +114 -0
  3042. package/node_modules/zod/v4/locales/es.cjs +163 -0
  3043. package/node_modules/zod/v4/locales/es.d.cts +5 -0
  3044. package/node_modules/zod/v4/locales/es.d.ts +4 -0
  3045. package/node_modules/zod/v4/locales/es.js +136 -0
  3046. package/node_modules/zod/v4/locales/fa.cjs +146 -0
  3047. package/node_modules/zod/v4/locales/fa.d.cts +5 -0
  3048. package/node_modules/zod/v4/locales/fa.d.ts +4 -0
  3049. package/node_modules/zod/v4/locales/fa.js +119 -0
  3050. package/node_modules/zod/v4/locales/fi.cjs +144 -0
  3051. package/node_modules/zod/v4/locales/fi.d.cts +5 -0
  3052. package/node_modules/zod/v4/locales/fi.d.ts +4 -0
  3053. package/node_modules/zod/v4/locales/fi.js +117 -0
  3054. package/node_modules/zod/v4/locales/fr-CA.cjs +139 -0
  3055. package/node_modules/zod/v4/locales/fr-CA.d.cts +5 -0
  3056. package/node_modules/zod/v4/locales/fr-CA.d.ts +4 -0
  3057. package/node_modules/zod/v4/locales/fr-CA.js +112 -0
  3058. package/node_modules/zod/v4/locales/fr.cjs +156 -0
  3059. package/node_modules/zod/v4/locales/fr.d.cts +5 -0
  3060. package/node_modules/zod/v4/locales/fr.d.ts +4 -0
  3061. package/node_modules/zod/v4/locales/fr.js +129 -0
  3062. package/node_modules/zod/v4/locales/gu.cjs +140 -0
  3063. package/node_modules/zod/v4/locales/gu.d.cts +5 -0
  3064. package/node_modules/zod/v4/locales/gu.d.ts +4 -0
  3065. package/node_modules/zod/v4/locales/gu.js +113 -0
  3066. package/node_modules/zod/v4/locales/he.cjs +248 -0
  3067. package/node_modules/zod/v4/locales/he.d.cts +5 -0
  3068. package/node_modules/zod/v4/locales/he.d.ts +4 -0
  3069. package/node_modules/zod/v4/locales/he.js +221 -0
  3070. package/node_modules/zod/v4/locales/hi.cjs +138 -0
  3071. package/node_modules/zod/v4/locales/hi.d.cts +5 -0
  3072. package/node_modules/zod/v4/locales/hi.d.ts +4 -0
  3073. package/node_modules/zod/v4/locales/hi.js +111 -0
  3074. package/node_modules/zod/v4/locales/hr.cjs +153 -0
  3075. package/node_modules/zod/v4/locales/hr.d.cts +5 -0
  3076. package/node_modules/zod/v4/locales/hr.d.ts +4 -0
  3077. package/node_modules/zod/v4/locales/hr.js +126 -0
  3078. package/node_modules/zod/v4/locales/hu.cjs +140 -0
  3079. package/node_modules/zod/v4/locales/hu.d.cts +5 -0
  3080. package/node_modules/zod/v4/locales/hu.d.ts +4 -0
  3081. package/node_modules/zod/v4/locales/hu.js +113 -0
  3082. package/node_modules/zod/v4/locales/hy.cjs +185 -0
  3083. package/node_modules/zod/v4/locales/hy.d.cts +5 -0
  3084. package/node_modules/zod/v4/locales/hy.d.ts +4 -0
  3085. package/node_modules/zod/v4/locales/hy.js +158 -0
  3086. package/node_modules/zod/v4/locales/id.cjs +138 -0
  3087. package/node_modules/zod/v4/locales/id.d.cts +5 -0
  3088. package/node_modules/zod/v4/locales/id.d.ts +4 -0
  3089. package/node_modules/zod/v4/locales/id.js +111 -0
  3090. package/node_modules/zod/v4/locales/index.cjs +152 -0
  3091. package/node_modules/zod/v4/locales/index.d.cts +63 -0
  3092. package/node_modules/zod/v4/locales/index.d.ts +63 -0
  3093. package/node_modules/zod/v4/locales/index.js +63 -0
  3094. package/node_modules/zod/v4/locales/is.cjs +141 -0
  3095. package/node_modules/zod/v4/locales/is.d.cts +5 -0
  3096. package/node_modules/zod/v4/locales/is.d.ts +4 -0
  3097. package/node_modules/zod/v4/locales/is.js +114 -0
  3098. package/node_modules/zod/v4/locales/it.cjs +140 -0
  3099. package/node_modules/zod/v4/locales/it.d.cts +5 -0
  3100. package/node_modules/zod/v4/locales/it.d.ts +4 -0
  3101. package/node_modules/zod/v4/locales/it.js +113 -0
  3102. package/node_modules/zod/v4/locales/ja.cjs +139 -0
  3103. package/node_modules/zod/v4/locales/ja.d.cts +5 -0
  3104. package/node_modules/zod/v4/locales/ja.d.ts +4 -0
  3105. package/node_modules/zod/v4/locales/ja.js +112 -0
  3106. package/node_modules/zod/v4/locales/ka.cjs +144 -0
  3107. package/node_modules/zod/v4/locales/ka.d.cts +5 -0
  3108. package/node_modules/zod/v4/locales/ka.d.ts +4 -0
  3109. package/node_modules/zod/v4/locales/ka.js +117 -0
  3110. package/node_modules/zod/v4/locales/kh.cjs +12 -0
  3111. package/node_modules/zod/v4/locales/kh.d.cts +5 -0
  3112. package/node_modules/zod/v4/locales/kh.d.ts +5 -0
  3113. package/node_modules/zod/v4/locales/kh.js +5 -0
  3114. package/node_modules/zod/v4/locales/km.cjs +142 -0
  3115. package/node_modules/zod/v4/locales/km.d.cts +5 -0
  3116. package/node_modules/zod/v4/locales/km.d.ts +4 -0
  3117. package/node_modules/zod/v4/locales/km.js +115 -0
  3118. package/node_modules/zod/v4/locales/kn.cjs +143 -0
  3119. package/node_modules/zod/v4/locales/kn.d.cts +5 -0
  3120. package/node_modules/zod/v4/locales/kn.d.ts +4 -0
  3121. package/node_modules/zod/v4/locales/kn.js +116 -0
  3122. package/node_modules/zod/v4/locales/ko.cjs +143 -0
  3123. package/node_modules/zod/v4/locales/ko.d.cts +5 -0
  3124. package/node_modules/zod/v4/locales/ko.d.ts +4 -0
  3125. package/node_modules/zod/v4/locales/ko.js +116 -0
  3126. package/node_modules/zod/v4/locales/lt.cjs +234 -0
  3127. package/node_modules/zod/v4/locales/lt.d.cts +5 -0
  3128. package/node_modules/zod/v4/locales/lt.d.ts +4 -0
  3129. package/node_modules/zod/v4/locales/lt.js +207 -0
  3130. package/node_modules/zod/v4/locales/mk.cjs +141 -0
  3131. package/node_modules/zod/v4/locales/mk.d.cts +5 -0
  3132. package/node_modules/zod/v4/locales/mk.d.ts +4 -0
  3133. package/node_modules/zod/v4/locales/mk.js +114 -0
  3134. package/node_modules/zod/v4/locales/ms.cjs +139 -0
  3135. package/node_modules/zod/v4/locales/ms.d.cts +5 -0
  3136. package/node_modules/zod/v4/locales/ms.d.ts +4 -0
  3137. package/node_modules/zod/v4/locales/ms.js +112 -0
  3138. package/node_modules/zod/v4/locales/ne.cjs +138 -0
  3139. package/node_modules/zod/v4/locales/ne.d.cts +5 -0
  3140. package/node_modules/zod/v4/locales/ne.d.ts +4 -0
  3141. package/node_modules/zod/v4/locales/ne.js +111 -0
  3142. package/node_modules/zod/v4/locales/nl.cjs +142 -0
  3143. package/node_modules/zod/v4/locales/nl.d.cts +5 -0
  3144. package/node_modules/zod/v4/locales/nl.d.ts +4 -0
  3145. package/node_modules/zod/v4/locales/nl.js +115 -0
  3146. package/node_modules/zod/v4/locales/nn.cjs +140 -0
  3147. package/node_modules/zod/v4/locales/nn.d.cts +5 -0
  3148. package/node_modules/zod/v4/locales/nn.d.ts +4 -0
  3149. package/node_modules/zod/v4/locales/nn.js +113 -0
  3150. package/node_modules/zod/v4/locales/no.cjs +140 -0
  3151. package/node_modules/zod/v4/locales/no.d.cts +5 -0
  3152. package/node_modules/zod/v4/locales/no.d.ts +4 -0
  3153. package/node_modules/zod/v4/locales/no.js +113 -0
  3154. package/node_modules/zod/v4/locales/ota.cjs +141 -0
  3155. package/node_modules/zod/v4/locales/ota.d.cts +5 -0
  3156. package/node_modules/zod/v4/locales/ota.d.ts +4 -0
  3157. package/node_modules/zod/v4/locales/ota.js +114 -0
  3158. package/node_modules/zod/v4/locales/package.json +7 -0
  3159. package/node_modules/zod/v4/locales/pl.cjs +141 -0
  3160. package/node_modules/zod/v4/locales/pl.d.cts +5 -0
  3161. package/node_modules/zod/v4/locales/pl.d.ts +4 -0
  3162. package/node_modules/zod/v4/locales/pl.js +114 -0
  3163. package/node_modules/zod/v4/locales/ps.cjs +146 -0
  3164. package/node_modules/zod/v4/locales/ps.d.cts +5 -0
  3165. package/node_modules/zod/v4/locales/ps.d.ts +4 -0
  3166. package/node_modules/zod/v4/locales/ps.js +119 -0
  3167. package/node_modules/zod/v4/locales/pt-BR.cjs +170 -0
  3168. package/node_modules/zod/v4/locales/pt-BR.d.cts +5 -0
  3169. package/node_modules/zod/v4/locales/pt-BR.d.ts +4 -0
  3170. package/node_modules/zod/v4/locales/pt-BR.js +143 -0
  3171. package/node_modules/zod/v4/locales/pt.cjs +169 -0
  3172. package/node_modules/zod/v4/locales/pt.d.cts +5 -0
  3173. package/node_modules/zod/v4/locales/pt.d.ts +4 -0
  3174. package/node_modules/zod/v4/locales/pt.js +142 -0
  3175. package/node_modules/zod/v4/locales/ro.cjs +149 -0
  3176. package/node_modules/zod/v4/locales/ro.d.cts +5 -0
  3177. package/node_modules/zod/v4/locales/ro.d.ts +4 -0
  3178. package/node_modules/zod/v4/locales/ro.js +122 -0
  3179. package/node_modules/zod/v4/locales/ru.cjs +195 -0
  3180. package/node_modules/zod/v4/locales/ru.d.cts +5 -0
  3181. package/node_modules/zod/v4/locales/ru.d.ts +4 -0
  3182. package/node_modules/zod/v4/locales/ru.js +168 -0
  3183. package/node_modules/zod/v4/locales/sk.cjs +143 -0
  3184. package/node_modules/zod/v4/locales/sk.d.cts +5 -0
  3185. package/node_modules/zod/v4/locales/sk.d.ts +4 -0
  3186. package/node_modules/zod/v4/locales/sk.js +116 -0
  3187. package/node_modules/zod/v4/locales/sl.cjs +141 -0
  3188. package/node_modules/zod/v4/locales/sl.d.cts +5 -0
  3189. package/node_modules/zod/v4/locales/sl.d.ts +4 -0
  3190. package/node_modules/zod/v4/locales/sl.js +114 -0
  3191. package/node_modules/zod/v4/locales/sv.cjs +142 -0
  3192. package/node_modules/zod/v4/locales/sv.d.cts +5 -0
  3193. package/node_modules/zod/v4/locales/sv.d.ts +4 -0
  3194. package/node_modules/zod/v4/locales/sv.js +115 -0
  3195. package/node_modules/zod/v4/locales/ta.cjs +142 -0
  3196. package/node_modules/zod/v4/locales/ta.d.cts +5 -0
  3197. package/node_modules/zod/v4/locales/ta.d.ts +4 -0
  3198. package/node_modules/zod/v4/locales/ta.js +115 -0
  3199. package/node_modules/zod/v4/locales/tg.cjs +144 -0
  3200. package/node_modules/zod/v4/locales/tg.d.cts +5 -0
  3201. package/node_modules/zod/v4/locales/tg.d.ts +4 -0
  3202. package/node_modules/zod/v4/locales/tg.js +117 -0
  3203. package/node_modules/zod/v4/locales/th.cjs +142 -0
  3204. package/node_modules/zod/v4/locales/th.d.cts +5 -0
  3205. package/node_modules/zod/v4/locales/th.d.ts +4 -0
  3206. package/node_modules/zod/v4/locales/th.js +115 -0
  3207. package/node_modules/zod/v4/locales/tk.cjs +134 -0
  3208. package/node_modules/zod/v4/locales/tk.d.cts +5 -0
  3209. package/node_modules/zod/v4/locales/tk.d.ts +4 -0
  3210. package/node_modules/zod/v4/locales/tk.js +107 -0
  3211. package/node_modules/zod/v4/locales/tr.cjs +137 -0
  3212. package/node_modules/zod/v4/locales/tr.d.cts +5 -0
  3213. package/node_modules/zod/v4/locales/tr.d.ts +4 -0
  3214. package/node_modules/zod/v4/locales/tr.js +110 -0
  3215. package/node_modules/zod/v4/locales/ua.cjs +12 -0
  3216. package/node_modules/zod/v4/locales/ua.d.cts +5 -0
  3217. package/node_modules/zod/v4/locales/ua.d.ts +5 -0
  3218. package/node_modules/zod/v4/locales/ua.js +5 -0
  3219. package/node_modules/zod/v4/locales/uk.cjs +140 -0
  3220. package/node_modules/zod/v4/locales/uk.d.cts +5 -0
  3221. package/node_modules/zod/v4/locales/uk.d.ts +4 -0
  3222. package/node_modules/zod/v4/locales/uk.js +113 -0
  3223. package/node_modules/zod/v4/locales/ur.cjs +142 -0
  3224. package/node_modules/zod/v4/locales/ur.d.cts +5 -0
  3225. package/node_modules/zod/v4/locales/ur.d.ts +4 -0
  3226. package/node_modules/zod/v4/locales/ur.js +115 -0
  3227. package/node_modules/zod/v4/locales/uz.cjs +140 -0
  3228. package/node_modules/zod/v4/locales/uz.d.cts +5 -0
  3229. package/node_modules/zod/v4/locales/uz.d.ts +4 -0
  3230. package/node_modules/zod/v4/locales/uz.js +113 -0
  3231. package/node_modules/zod/v4/locales/vi.cjs +140 -0
  3232. package/node_modules/zod/v4/locales/vi.d.cts +5 -0
  3233. package/node_modules/zod/v4/locales/vi.d.ts +4 -0
  3234. package/node_modules/zod/v4/locales/vi.js +113 -0
  3235. package/node_modules/zod/v4/locales/yo.cjs +139 -0
  3236. package/node_modules/zod/v4/locales/yo.d.cts +5 -0
  3237. package/node_modules/zod/v4/locales/yo.d.ts +4 -0
  3238. package/node_modules/zod/v4/locales/yo.js +112 -0
  3239. package/node_modules/zod/v4/locales/zh-CN.cjs +141 -0
  3240. package/node_modules/zod/v4/locales/zh-CN.d.cts +5 -0
  3241. package/node_modules/zod/v4/locales/zh-CN.d.ts +4 -0
  3242. package/node_modules/zod/v4/locales/zh-CN.js +114 -0
  3243. package/node_modules/zod/v4/locales/zh-TW.cjs +139 -0
  3244. package/node_modules/zod/v4/locales/zh-TW.d.cts +5 -0
  3245. package/node_modules/zod/v4/locales/zh-TW.d.ts +4 -0
  3246. package/node_modules/zod/v4/locales/zh-TW.js +112 -0
  3247. package/node_modules/zod/v4/mini/checks.cjs +54 -0
  3248. package/node_modules/zod/v4/mini/checks.d.cts +1 -0
  3249. package/node_modules/zod/v4/mini/checks.d.ts +1 -0
  3250. package/node_modules/zod/v4/mini/checks.js +1 -0
  3251. package/node_modules/zod/v4/mini/coerce.cjs +71 -0
  3252. package/node_modules/zod/v4/mini/coerce.d.cts +7 -0
  3253. package/node_modules/zod/v4/mini/coerce.d.ts +7 -0
  3254. package/node_modules/zod/v4/mini/coerce.js +22 -0
  3255. package/node_modules/zod/v4/mini/deep-partial.cjs +58 -0
  3256. package/node_modules/zod/v4/mini/deep-partial.d.cts +14 -0
  3257. package/node_modules/zod/v4/mini/deep-partial.d.ts +14 -0
  3258. package/node_modules/zod/v4/mini/deep-partial.js +13 -0
  3259. package/node_modules/zod/v4/mini/external.cjs +95 -0
  3260. package/node_modules/zod/v4/mini/external.d.cts +16 -0
  3261. package/node_modules/zod/v4/mini/external.d.ts +16 -0
  3262. package/node_modules/zod/v4/mini/external.js +16 -0
  3263. package/node_modules/zod/v4/mini/in-out.cjs +82 -0
  3264. package/node_modules/zod/v4/mini/in-out.d.cts +8 -0
  3265. package/node_modules/zod/v4/mini/in-out.d.ts +8 -0
  3266. package/node_modules/zod/v4/mini/in-out.js +36 -0
  3267. package/node_modules/zod/v4/mini/index.cjs +51 -0
  3268. package/node_modules/zod/v4/mini/index.d.cts +3 -0
  3269. package/node_modules/zod/v4/mini/index.d.ts +3 -0
  3270. package/node_modules/zod/v4/mini/index.js +3 -0
  3271. package/node_modules/zod/v4/mini/iso.cjs +83 -0
  3272. package/node_modules/zod/v4/mini/iso.d.cts +22 -0
  3273. package/node_modules/zod/v4/mini/iso.d.ts +22 -0
  3274. package/node_modules/zod/v4/mini/iso.js +34 -0
  3275. package/node_modules/zod/v4/mini/package.json +7 -0
  3276. package/node_modules/zod/v4/mini/parse.cjs +37 -0
  3277. package/node_modules/zod/v4/mini/parse.d.cts +1 -0
  3278. package/node_modules/zod/v4/mini/parse.d.ts +1 -0
  3279. package/node_modules/zod/v4/mini/parse.js +1 -0
  3280. package/node_modules/zod/v4/mini/schemas.cjs +1147 -0
  3281. package/node_modules/zod/v4/mini/schemas.d.cts +480 -0
  3282. package/node_modules/zod/v4/mini/schemas.d.ts +480 -0
  3283. package/node_modules/zod/v4/mini/schemas.js +1002 -0
  3284. package/node_modules/zod/v4/package.json +7 -0
  3285. package/node_modules/zod/v4-mini/index.cjs +51 -0
  3286. package/node_modules/zod/v4-mini/index.d.cts +3 -0
  3287. package/node_modules/zod/v4-mini/index.d.ts +3 -0
  3288. package/node_modules/zod/v4-mini/index.js +3 -0
  3289. package/node_modules/zod/v4-mini/package.json +7 -0
  3290. package/package.json +19 -3
  3291. package/sandbox/boot/bootstrap/drives.ps1 +29 -0
  3292. package/sandbox/boot/bootstrap/files.ps1 +49 -0
  3293. package/sandbox/boot/bootstrap/runner.ps1 +87 -0
  3294. package/sandbox/boot/bootstrap/status.ps1 +8 -0
  3295. package/sandbox/boot/bootstrap.ps1 +91 -0
  3296. package/sandbox/boot/logon.cmd +30 -0
  3297. package/sandbox/csharp/CargoShim.cs +77 -0
  3298. package/sandbox/csharp/Desktop.cs +33 -0
  3299. package/sandbox/csharp/GitShim.cs +47 -0
  3300. package/sandbox/csharp/LinkGate.cs +108 -0
  3301. package/sandbox/csharp/OpenSsl.cs +56 -0
  3302. package/sandbox/csharp/PtyHost.cs +1327 -0
  3303. package/sandbox/csharp/SandboxTools/CpuCap.cs +134 -0
  3304. package/sandbox/csharp/SandboxTools/MemoryLog.cs +157 -0
  3305. package/sandbox/csharp/SandboxTools/PageFile.cs +72 -0
  3306. package/sandbox/csharp/SandboxTools/Program.cs +153 -0
  3307. package/sandbox/csharp/VsWhere.cs +145 -0
  3308. package/sandbox/csharp/VtInput.cs +63 -0
  3309. package/sandbox/scripts/enable-vt-input.ps1 +9 -0
  3310. package/sandbox/scripts/expand-archive.ps1 +9 -0
  3311. package/sandbox/scripts/get-gpu-names.ps1 +5 -0
  3312. package/sandbox/scripts/get-signer.ps1 +8 -0
  3313. package/sandbox/scripts/link-profile-dirs.ps1 +35 -0
  3314. package/sandbox/scripts/new-shortcuts.ps1 +15 -0
  3315. package/sandbox/scripts/set-desktop.ps1 +16 -0
  3316. package/sandbox/scripts/set-dns-servers.ps1 +8 -0
  3317. package/sandbox/scripts/set-machine-environment.ps1 +29 -0
  3318. package/schemas/config.schema.json +142 -7
  3319. package/schemas/sandbox-config.schema.json +64 -7
  3320. package/dist/cli/boot-progress.d.ts +0 -22
  3321. package/dist/cli/boot-progress.js +0 -59
  3322. package/dist/cli/colors.d.ts +0 -24
  3323. package/dist/cli/colors.js +0 -42
  3324. package/dist/cli/commands/launch.d.ts +0 -32
  3325. package/dist/cli/commands/launch.js +0 -421
  3326. package/dist/cli/commands/maintenance.d.ts +0 -10
  3327. package/dist/cli/commands/maintenance.js +0 -220
  3328. package/dist/cli/commands/project.d.ts +0 -33
  3329. package/dist/cli/commands/project.js +0 -102
  3330. package/dist/cli/commands/projects.d.ts +0 -14
  3331. package/dist/cli/commands/projects.js +0 -146
  3332. package/dist/cli/commands/restart.d.ts +0 -6
  3333. package/dist/cli/commands/restart.js +0 -95
  3334. package/dist/cli/commands/sessions.d.ts +0 -12
  3335. package/dist/cli/commands/sessions.js +0 -258
  3336. package/dist/cli/menu/settings/editors.d.ts +0 -30
  3337. package/dist/cli/menu/settings/editors.js +0 -305
  3338. package/dist/cli/progress.d.ts +0 -24
  3339. package/dist/cli/progress.js +0 -101
  3340. package/dist/cli/tui/dialogs.d.ts +0 -57
  3341. package/dist/cli/tui/dialogs.js +0 -162
  3342. package/dist/cli/tui/list-screen.d.ts +0 -101
  3343. package/dist/cli/tui/list-screen.js +0 -299
  3344. package/dist/core/config.d.ts +0 -17
  3345. package/dist/core/config.js +0 -109
  3346. package/dist/core/detect-databases.d.ts +0 -15
  3347. package/dist/core/detect-databases.js +0 -147
  3348. package/dist/core/detect-pwsh.d.ts +0 -18
  3349. package/dist/core/detect-pwsh.js +0 -111
  3350. package/dist/core/detect-toolchains.d.ts +0 -30
  3351. package/dist/core/detect-toolchains.js +0 -58
  3352. package/dist/core/local-config.d.ts +0 -50
  3353. package/dist/core/local-config.js +0 -142
  3354. package/dist/core/project-policy.d.ts +0 -62
  3355. package/dist/core/project-policy.js +0 -121
  3356. package/dist/core/schema.d.ts +0 -6
  3357. package/dist/core/schema.js +0 -8
  3358. package/dist/core/util.d.ts +0 -62
  3359. package/dist/core/util.js +0 -156
  3360. package/dist/core/workspace.d.ts +0 -35
  3361. package/dist/core/workspace.js +0 -206
  3362. package/dist/guest/audit-parse.d.ts +0 -7
  3363. package/dist/guest/audit-parse.js +0 -24
  3364. package/dist/guest/audit.d.ts +0 -4
  3365. package/dist/guest/audit.js +0 -47
  3366. package/dist/guest/boot-env.d.ts +0 -4
  3367. package/dist/guest/boot-env.js +0 -25
  3368. package/dist/guest/cmdline.d.ts +0 -12
  3369. package/dist/guest/cmdline.js +0 -23
  3370. package/dist/guest/daemon/project.d.ts +0 -14
  3371. package/dist/guest/daemon/project.js +0 -132
  3372. package/dist/guest/daemon/session.d.ts +0 -13
  3373. package/dist/guest/daemon/session.js +0 -139
  3374. package/dist/guest/daemon/shutdown.d.ts +0 -1
  3375. package/dist/guest/daemon/shutdown.js +0 -21
  3376. package/dist/guest/daemon.js +0 -57
  3377. package/dist/guest/db.js +0 -75
  3378. package/dist/guest/env.d.ts +0 -56
  3379. package/dist/guest/env.js +0 -115
  3380. package/dist/guest/gitguard.d.ts +0 -7
  3381. package/dist/guest/gitguard.js +0 -60
  3382. package/dist/guest/gitrules.d.ts +0 -2
  3383. package/dist/guest/gitrules.js +0 -11
  3384. package/dist/guest/guide.d.ts +0 -16
  3385. package/dist/guest/guide.js +0 -69
  3386. package/dist/guest/helpers.d.ts +0 -3
  3387. package/dist/guest/helpers.js +0 -26
  3388. package/dist/guest/main.js +0 -147
  3389. package/dist/guest/netproxy.js +0 -100
  3390. package/dist/guest/ports.d.ts +0 -6
  3391. package/dist/guest/ports.js +0 -22
  3392. package/dist/guest/project-context.d.ts +0 -7
  3393. package/dist/guest/project-context.js +0 -10
  3394. package/dist/guest/project-env.d.ts +0 -20
  3395. package/dist/guest/project-env.js +0 -20
  3396. package/dist/guest/project-status.d.ts +0 -5
  3397. package/dist/guest/project-status.js +0 -17
  3398. package/dist/guest/ptyhost.d.ts +0 -22
  3399. package/dist/guest/ptyhost.js +0 -46
  3400. package/dist/guest/setup/agents.d.ts +0 -11
  3401. package/dist/guest/setup/agents.js +0 -87
  3402. package/dist/guest/setup/claude.d.ts +0 -17
  3403. package/dist/guest/setup/claude.js +0 -192
  3404. package/dist/guest/setup/network.d.ts +0 -19
  3405. package/dist/guest/setup/network.js +0 -192
  3406. package/dist/guest/setup/policy.d.ts +0 -3
  3407. package/dist/guest/setup/policy.js +0 -18
  3408. package/dist/guest/setup/user.d.ts +0 -7
  3409. package/dist/guest/setup/user.js +0 -51
  3410. package/dist/guest/toolchains/cli.d.ts +0 -10
  3411. package/dist/guest/toolchains/cli.js +0 -72
  3412. package/dist/guest/toolchains/common.d.ts +0 -54
  3413. package/dist/guest/toolchains/common.js +0 -147
  3414. package/dist/guest/toolchains/databases/dynamodb.d.ts +0 -8
  3415. package/dist/guest/toolchains/databases/dynamodb.js +0 -52
  3416. package/dist/guest/toolchains/databases/index.d.ts +0 -6
  3417. package/dist/guest/toolchains/databases/index.js +0 -62
  3418. package/dist/guest/toolchains/databases/mongodb.d.ts +0 -3
  3419. package/dist/guest/toolchains/databases/mongodb.js +0 -31
  3420. package/dist/guest/toolchains/databases/mysql.d.ts +0 -3
  3421. package/dist/guest/toolchains/databases/mysql.js +0 -38
  3422. package/dist/guest/toolchains/databases/postgres.d.ts +0 -5
  3423. package/dist/guest/toolchains/databases/postgres.js +0 -38
  3424. package/dist/guest/toolchains/databases/redis.d.ts +0 -3
  3425. package/dist/guest/toolchains/databases/redis.js +0 -16
  3426. package/dist/guest/toolchains/databases/server.d.ts +0 -14
  3427. package/dist/guest/toolchains/databases/server.js +0 -52
  3428. package/dist/guest/toolchains/git.d.ts +0 -3
  3429. package/dist/guest/toolchains/git.js +0 -121
  3430. package/dist/guest/toolchains/go.d.ts +0 -3
  3431. package/dist/guest/toolchains/go.js +0 -33
  3432. package/dist/guest/toolchains/java.d.ts +0 -8
  3433. package/dist/guest/toolchains/java.js +0 -96
  3434. package/dist/guest/toolchains/node.d.ts +0 -3
  3435. package/dist/guest/toolchains/node.js +0 -152
  3436. package/dist/guest/toolchains/pwsh.d.ts +0 -4
  3437. package/dist/guest/toolchains/pwsh.js +0 -14
  3438. package/dist/guest/toolchains/python.d.ts +0 -3
  3439. package/dist/guest/toolchains/python.js +0 -78
  3440. package/dist/guest/toolchains/scripting/php.d.ts +0 -3
  3441. package/dist/guest/toolchains/scripting/php.js +0 -71
  3442. package/dist/guest/toolchains/scripting/ruby.d.ts +0 -3
  3443. package/dist/guest/toolchains/scripting/ruby.js +0 -47
  3444. package/dist/guest/toolchains/scripting/vcruntime.d.ts +0 -7
  3445. package/dist/guest/toolchains/scripting/vcruntime.js +0 -45
  3446. package/dist/guest/toolchains/versions.d.ts +0 -47
  3447. package/dist/guest/toolchains/versions.js +0 -77
  3448. package/dist/guest/toolchains/vscode-profile.d.ts +0 -30
  3449. package/dist/guest/toolchains/vscode-profile.js +0 -69
  3450. package/dist/guest/toolchains/vscode.d.ts +0 -19
  3451. package/dist/guest/toolchains/vscode.js +0 -139
  3452. package/dist/guest/view.d.ts +0 -1
  3453. package/dist/guest/view.js +0 -42
  3454. package/dist/host/accounts.d.ts +0 -32
  3455. package/dist/host/accounts.js +0 -128
  3456. package/dist/host/agent-commands.d.ts +0 -25
  3457. package/dist/host/agent-commands.js +0 -145
  3458. package/dist/host/attach.d.ts +0 -17
  3459. package/dist/host/attach.js +0 -70
  3460. package/dist/host/channel.d.ts +0 -38
  3461. package/dist/host/channel.js +0 -163
  3462. package/dist/host/claude-profile.d.ts +0 -15
  3463. package/dist/host/claude-profile.js +0 -107
  3464. package/dist/host/cleanup.d.ts +0 -23
  3465. package/dist/host/cleanup.js +0 -57
  3466. package/dist/host/database-plan.d.ts +0 -12
  3467. package/dist/host/database-plan.js +0 -52
  3468. package/dist/host/generate.d.ts +0 -13
  3469. package/dist/host/generate.js +0 -115
  3470. package/dist/host/join.d.ts +0 -35
  3471. package/dist/host/join.js +0 -90
  3472. package/dist/host/launch/projects.d.ts +0 -17
  3473. package/dist/host/launch/projects.js +0 -62
  3474. package/dist/host/launch/wsb.d.ts +0 -10
  3475. package/dist/host/launch/wsb.js +0 -34
  3476. package/dist/host/motw.d.ts +0 -17
  3477. package/dist/host/motw.js +0 -74
  3478. package/dist/host/pc-scan.d.ts +0 -6
  3479. package/dist/host/pc-scan.js +0 -37
  3480. package/dist/host/personalize.d.ts +0 -10
  3481. package/dist/host/personalize.js +0 -97
  3482. package/dist/host/platform.d.ts +0 -19
  3483. package/dist/host/platform.js +0 -129
  3484. package/dist/host/port-forward.d.ts +0 -8
  3485. package/dist/host/port-forward.js +0 -37
  3486. package/dist/host/project-scan.d.ts +0 -7
  3487. package/dist/host/project-scan.js +0 -89
  3488. package/dist/host/projects.d.ts +0 -123
  3489. package/dist/host/projects.js +0 -196
  3490. package/dist/host/repo-guard.d.ts +0 -43
  3491. package/dist/host/repo-guard.js +0 -347
  3492. package/dist/host/secrets.d.ts +0 -14
  3493. package/dist/host/secrets.js +0 -133
  3494. package/dist/host/stops.d.ts +0 -67
  3495. package/dist/host/stops.js +0 -126
  3496. package/dist/host/terminal.d.ts +0 -40
  3497. package/dist/host/terminal.js +0 -174
  3498. package/dist/host/window.d.ts +0 -4
  3499. package/dist/host/window.js +0 -72
  3500. package/dist/host/wsb.d.ts +0 -37
  3501. package/dist/host/wsb.js +0 -101
  3502. package/dist/selftest/fixtures.d.ts +0 -318
  3503. package/dist/selftest/fixtures.js +0 -82
  3504. package/dist/selftest/harness.d.ts +0 -51
  3505. package/dist/selftest/harness.js +0 -77
  3506. package/dist/selftest/live.d.ts +0 -65
  3507. package/dist/selftest/live.js +0 -109
  3508. package/dist/shared/apps.d.ts +0 -49
  3509. package/dist/shared/apps.js +0 -114
  3510. package/dist/shared/console-input.d.ts +0 -11
  3511. package/dist/shared/console-input.js +0 -61
  3512. package/dist/shared/download.d.ts +0 -63
  3513. package/dist/shared/download.js +0 -238
  3514. package/dist/shared/guest-paths.d.ts +0 -57
  3515. package/dist/shared/guest-paths.js +0 -129
  3516. package/dist/shared/netpolicy.d.ts +0 -27
  3517. package/dist/shared/netpolicy.js +0 -51
  3518. package/dist/shared/netrules.d.ts +0 -18
  3519. package/dist/shared/netrules.js +0 -98
  3520. package/dist/shared/paths.d.ts +0 -14
  3521. package/dist/shared/paths.js +0 -28
  3522. package/dist/shared/projects.d.ts +0 -76
  3523. package/dist/shared/projects.js +0 -126
  3524. package/dist/shared/pty-client.d.ts +0 -108
  3525. package/dist/shared/pty-client.js +0 -406
  3526. package/dist/shared/rundir.d.ts +0 -41
  3527. package/dist/shared/rundir.js +0 -96
  3528. package/dist/shared/safe-remove.d.ts +0 -10
  3529. package/dist/shared/safe-remove.js +0 -66
  3530. package/dist/shared/schema.d.ts +0 -561
  3531. package/dist/shared/schema.js +0 -104
  3532. package/sandbox/bootstrap.ps1 +0 -258
  3533. package/sandbox/cargoshim.cs +0 -56
  3534. package/sandbox/cpucap.cs +0 -33
  3535. package/sandbox/cpucap.ps1 +0 -20
  3536. package/sandbox/gitshim.cs +0 -35
  3537. package/sandbox/logon.cmd +0 -24
  3538. package/sandbox/memlog.ps1 +0 -34
  3539. package/sandbox/openssl.cs +0 -42
  3540. package/sandbox/pagefile.cs +0 -31
  3541. package/sandbox/pagefile.ps1 +0 -21
  3542. package/sandbox/ptyhost.cs +0 -769
  3543. package/sandbox/vswhere.cs +0 -83
  3544. /package/dist/{guest/daemon.d.ts → cli/tui/list/list-types.js} +0 -0
  3545. /package/dist/{guest/db.d.ts → cli/tui/screen.js} +0 -0
  3546. /package/dist/guest/{main.d.ts → entries/daemon.d.ts} +0 -0
  3547. /package/dist/guest/{netproxy.d.ts → entries/db.d.ts} +0 -0
  3548. /package/dist/{selftest/suite.js → guest/entries/gitguard.d.ts} +0 -0
  3549. /package/dist/selftest/{suite.d.ts → support/suite.d.ts} +0 -0
  3550. /package/sandbox/{trust.cmd → boot/trust.cmd} +0 -0
@@ -1363,11 +1363,11 @@ var require_lodash = __commonJS({
1363
1363
  return isFunction(object2[key]);
1364
1364
  });
1365
1365
  }
1366
- function baseGet(object2, path16) {
1367
- path16 = castPath(path16, object2);
1368
- var index = 0, length = path16.length;
1366
+ function baseGet(object2, path22) {
1367
+ path22 = castPath(path22, object2);
1368
+ var index = 0, length = path22.length;
1369
1369
  while (object2 != null && index < length) {
1370
- object2 = object2[toKey(path16[index++])];
1370
+ object2 = object2[toKey(path22[index++])];
1371
1371
  }
1372
1372
  return index && index == length ? object2 : undefined2;
1373
1373
  }
@@ -1431,10 +1431,10 @@ var require_lodash = __commonJS({
1431
1431
  });
1432
1432
  return accumulator;
1433
1433
  }
1434
- function baseInvoke(object2, path16, args) {
1435
- path16 = castPath(path16, object2);
1436
- object2 = parent(object2, path16);
1437
- var func = object2 == null ? object2 : object2[toKey(last(path16))];
1434
+ function baseInvoke(object2, path22, args) {
1435
+ path22 = castPath(path22, object2);
1436
+ object2 = parent(object2, path22);
1437
+ var func = object2 == null ? object2 : object2[toKey(last(path22))];
1438
1438
  return func == null ? undefined2 : apply(func, object2, args);
1439
1439
  }
1440
1440
  function baseIsArguments(value) {
@@ -1590,13 +1590,13 @@ var require_lodash = __commonJS({
1590
1590
  return object2 === source || baseIsMatch(object2, source, matchData);
1591
1591
  };
1592
1592
  }
1593
- function baseMatchesProperty(path16, srcValue) {
1594
- if (isKey(path16) && isStrictComparable(srcValue)) {
1595
- return matchesStrictComparable(toKey(path16), srcValue);
1593
+ function baseMatchesProperty(path22, srcValue) {
1594
+ if (isKey(path22) && isStrictComparable(srcValue)) {
1595
+ return matchesStrictComparable(toKey(path22), srcValue);
1596
1596
  }
1597
1597
  return function(object2) {
1598
- var objValue = get(object2, path16);
1599
- return objValue === undefined2 && objValue === srcValue ? hasIn(object2, path16) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
1598
+ var objValue = get(object2, path22);
1599
+ return objValue === undefined2 && objValue === srcValue ? hasIn(object2, path22) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
1600
1600
  };
1601
1601
  }
1602
1602
  function baseMerge(object2, source, srcIndex, customizer, stack) {
@@ -1693,23 +1693,23 @@ var require_lodash = __commonJS({
1693
1693
  });
1694
1694
  }
1695
1695
  function basePick(object2, paths) {
1696
- return basePickBy(object2, paths, function(value, path16) {
1697
- return hasIn(object2, path16);
1696
+ return basePickBy(object2, paths, function(value, path22) {
1697
+ return hasIn(object2, path22);
1698
1698
  });
1699
1699
  }
1700
1700
  function basePickBy(object2, paths, predicate) {
1701
1701
  var index = -1, length = paths.length, result2 = {};
1702
1702
  while (++index < length) {
1703
- var path16 = paths[index], value = baseGet(object2, path16);
1704
- if (predicate(value, path16)) {
1705
- baseSet(result2, castPath(path16, object2), value);
1703
+ var path22 = paths[index], value = baseGet(object2, path22);
1704
+ if (predicate(value, path22)) {
1705
+ baseSet(result2, castPath(path22, object2), value);
1706
1706
  }
1707
1707
  }
1708
1708
  return result2;
1709
1709
  }
1710
- function basePropertyDeep(path16) {
1710
+ function basePropertyDeep(path22) {
1711
1711
  return function(object2) {
1712
- return baseGet(object2, path16);
1712
+ return baseGet(object2, path22);
1713
1713
  };
1714
1714
  }
1715
1715
  function basePullAll(array2, values2, iteratee2, comparator) {
@@ -1783,14 +1783,14 @@ var require_lodash = __commonJS({
1783
1783
  var array2 = values(collection);
1784
1784
  return shuffleSelf(array2, baseClamp(n, 0, array2.length));
1785
1785
  }
1786
- function baseSet(object2, path16, value, customizer) {
1786
+ function baseSet(object2, path22, value, customizer) {
1787
1787
  if (!isObject2(object2)) {
1788
1788
  return object2;
1789
1789
  }
1790
- path16 = castPath(path16, object2);
1791
- var index = -1, length = path16.length, lastIndex = length - 1, nested = object2;
1790
+ path22 = castPath(path22, object2);
1791
+ var index = -1, length = path22.length, lastIndex = length - 1, nested = object2;
1792
1792
  while (nested != null && ++index < length) {
1793
- var key = toKey(path16[index]), newValue = value;
1793
+ var key = toKey(path22[index]), newValue = value;
1794
1794
  if (key === "__proto__" || key === "constructor" || key === "prototype") {
1795
1795
  return object2;
1796
1796
  }
@@ -1798,7 +1798,7 @@ var require_lodash = __commonJS({
1798
1798
  var objValue = nested[key];
1799
1799
  newValue = customizer ? customizer(objValue, key, nested) : undefined2;
1800
1800
  if (newValue === undefined2) {
1801
- newValue = isObject2(objValue) ? objValue : isIndex(path16[index + 1]) ? [] : {};
1801
+ newValue = isObject2(objValue) ? objValue : isIndex(path22[index + 1]) ? [] : {};
1802
1802
  }
1803
1803
  }
1804
1804
  assignValue(nested, key, newValue);
@@ -1964,14 +1964,14 @@ var require_lodash = __commonJS({
1964
1964
  }
1965
1965
  return result2;
1966
1966
  }
1967
- function baseUnset(object2, path16) {
1968
- path16 = castPath(path16, object2);
1969
- var index = -1, length = path16.length;
1967
+ function baseUnset(object2, path22) {
1968
+ path22 = castPath(path22, object2);
1969
+ var index = -1, length = path22.length;
1970
1970
  if (!length) {
1971
1971
  return true;
1972
1972
  }
1973
1973
  while (++index < length) {
1974
- var key = toKey(path16[index]);
1974
+ var key = toKey(path22[index]);
1975
1975
  if (key === "__proto__" && !hasOwnProperty.call(object2, "__proto__")) {
1976
1976
  return false;
1977
1977
  }
@@ -1979,11 +1979,11 @@ var require_lodash = __commonJS({
1979
1979
  return false;
1980
1980
  }
1981
1981
  }
1982
- var obj = parent(object2, path16);
1983
- return obj == null || delete obj[toKey(last(path16))];
1982
+ var obj = parent(object2, path22);
1983
+ return obj == null || delete obj[toKey(last(path22))];
1984
1984
  }
1985
- function baseUpdate(object2, path16, updater, customizer) {
1986
- return baseSet(object2, path16, updater(baseGet(object2, path16)), customizer);
1985
+ function baseUpdate(object2, path22, updater, customizer) {
1986
+ return baseSet(object2, path22, updater(baseGet(object2, path22)), customizer);
1987
1987
  }
1988
1988
  function baseWhile(array2, predicate, isDrop, fromRight) {
1989
1989
  var length = array2.length, index = fromRight ? length : -1;
@@ -2866,11 +2866,11 @@ var require_lodash = __commonJS({
2866
2866
  var match = source.match(reWrapDetails);
2867
2867
  return match ? match[1].split(reSplitDetails) : [];
2868
2868
  }
2869
- function hasPath(object2, path16, hasFunc) {
2870
- path16 = castPath(path16, object2);
2871
- var index = -1, length = path16.length, result2 = false;
2869
+ function hasPath(object2, path22, hasFunc) {
2870
+ path22 = castPath(path22, object2);
2871
+ var index = -1, length = path22.length, result2 = false;
2872
2872
  while (++index < length) {
2873
- var key = toKey(path16[index]);
2873
+ var key = toKey(path22[index]);
2874
2874
  if (!(result2 = object2 != null && hasFunc(object2, key))) {
2875
2875
  break;
2876
2876
  }
@@ -3072,8 +3072,8 @@ var require_lodash = __commonJS({
3072
3072
  return apply(func, this, otherArgs);
3073
3073
  };
3074
3074
  }
3075
- function parent(object2, path16) {
3076
- return path16.length < 2 ? object2 : baseGet(object2, baseSlice(path16, 0, -1));
3075
+ function parent(object2, path22) {
3076
+ return path22.length < 2 ? object2 : baseGet(object2, baseSlice(path22, 0, -1));
3077
3077
  }
3078
3078
  function reorder(array2, indexes) {
3079
3079
  var arrLength = array2.length, length = nativeMin(indexes.length, arrLength), oldArray = copyArray(array2);
@@ -3708,10 +3708,10 @@ var require_lodash = __commonJS({
3708
3708
  }
3709
3709
  return isString(collection) ? fromIndex <= length && collection.indexOf(value, fromIndex) > -1 : !!length && baseIndexOf(collection, value, fromIndex) > -1;
3710
3710
  }
3711
- var invokeMap = baseRest(function(collection, path16, args) {
3712
- var index = -1, isFunc = typeof path16 == "function", result2 = isArrayLike(collection) ? Array2(collection.length) : [];
3711
+ var invokeMap = baseRest(function(collection, path22, args) {
3712
+ var index = -1, isFunc = typeof path22 == "function", result2 = isArrayLike(collection) ? Array2(collection.length) : [];
3713
3713
  baseEach(collection, function(value) {
3714
- result2[++index] = isFunc ? apply(path16, value, args) : baseInvoke(value, path16, args);
3714
+ result2[++index] = isFunc ? apply(path22, value, args) : baseInvoke(value, path22, args);
3715
3715
  });
3716
3716
  return result2;
3717
3717
  });
@@ -3801,7 +3801,7 @@ var require_lodash = __commonJS({
3801
3801
  }
3802
3802
  return baseOrderBy(collection, baseFlatten(iteratees, 1), []);
3803
3803
  });
3804
- var now2 = ctxNow || function() {
3804
+ var now = ctxNow || function() {
3805
3805
  return root.Date.now();
3806
3806
  };
3807
3807
  function after(n, func) {
@@ -3897,7 +3897,7 @@ var require_lodash = __commonJS({
3897
3897
  return lastCallTime === undefined2 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;
3898
3898
  }
3899
3899
  function timerExpired() {
3900
- var time3 = now2();
3900
+ var time3 = now();
3901
3901
  if (shouldInvoke(time3)) {
3902
3902
  return trailingEdge(time3);
3903
3903
  }
@@ -3919,10 +3919,10 @@ var require_lodash = __commonJS({
3919
3919
  lastArgs = lastCallTime = lastThis = timerId = undefined2;
3920
3920
  }
3921
3921
  function flush() {
3922
- return timerId === undefined2 ? result2 : trailingEdge(now2());
3922
+ return timerId === undefined2 ? result2 : trailingEdge(now());
3923
3923
  }
3924
3924
  function debounced() {
3925
- var time3 = now2(), isInvoking = shouldInvoke(time3);
3925
+ var time3 = now(), isInvoking = shouldInvoke(time3);
3926
3926
  lastArgs = arguments;
3927
3927
  lastThis = this;
3928
3928
  lastCallTime = time3;
@@ -4363,15 +4363,15 @@ var require_lodash = __commonJS({
4363
4363
  function functionsIn(object2) {
4364
4364
  return object2 == null ? [] : baseFunctions(object2, keysIn(object2));
4365
4365
  }
4366
- function get(object2, path16, defaultValue) {
4367
- var result2 = object2 == null ? undefined2 : baseGet(object2, path16);
4366
+ function get(object2, path22, defaultValue) {
4367
+ var result2 = object2 == null ? undefined2 : baseGet(object2, path22);
4368
4368
  return result2 === undefined2 ? defaultValue : result2;
4369
4369
  }
4370
- function has(object2, path16) {
4371
- return object2 != null && hasPath(object2, path16, baseHas);
4370
+ function has(object2, path22) {
4371
+ return object2 != null && hasPath(object2, path22, baseHas);
4372
4372
  }
4373
- function hasIn(object2, path16) {
4374
- return object2 != null && hasPath(object2, path16, baseHasIn);
4373
+ function hasIn(object2, path22) {
4374
+ return object2 != null && hasPath(object2, path22, baseHasIn);
4375
4375
  }
4376
4376
  var invert = createInverter(function(result2, value, key) {
4377
4377
  if (value != null && typeof value.toString != "function") {
@@ -4424,10 +4424,10 @@ var require_lodash = __commonJS({
4424
4424
  return result2;
4425
4425
  }
4426
4426
  var isDeep = false;
4427
- paths = arrayMap(paths, function(path16) {
4428
- path16 = castPath(path16, object2);
4429
- isDeep || (isDeep = path16.length > 1);
4430
- return path16;
4427
+ paths = arrayMap(paths, function(path22) {
4428
+ path22 = castPath(path22, object2);
4429
+ isDeep || (isDeep = path22.length > 1);
4430
+ return path22;
4431
4431
  });
4432
4432
  copyObject(object2, getAllKeysIn(object2), result2);
4433
4433
  if (isDeep) {
@@ -4453,19 +4453,19 @@ var require_lodash = __commonJS({
4453
4453
  return [prop];
4454
4454
  });
4455
4455
  predicate = getIteratee(predicate);
4456
- return basePickBy(object2, props, function(value, path16) {
4457
- return predicate(value, path16[0]);
4456
+ return basePickBy(object2, props, function(value, path22) {
4457
+ return predicate(value, path22[0]);
4458
4458
  });
4459
4459
  }
4460
- function result(object2, path16, defaultValue) {
4461
- path16 = castPath(path16, object2);
4462
- var index = -1, length = path16.length;
4460
+ function result(object2, path22, defaultValue) {
4461
+ path22 = castPath(path22, object2);
4462
+ var index = -1, length = path22.length;
4463
4463
  if (!length) {
4464
4464
  length = 1;
4465
4465
  object2 = undefined2;
4466
4466
  }
4467
4467
  while (++index < length) {
4468
- var value = object2 == null ? undefined2 : object2[toKey(path16[index])];
4468
+ var value = object2 == null ? undefined2 : object2[toKey(path22[index])];
4469
4469
  if (value === undefined2) {
4470
4470
  index = length;
4471
4471
  value = defaultValue;
@@ -4474,12 +4474,12 @@ var require_lodash = __commonJS({
4474
4474
  }
4475
4475
  return object2;
4476
4476
  }
4477
- function set2(object2, path16, value) {
4478
- return object2 == null ? object2 : baseSet(object2, path16, value);
4477
+ function set2(object2, path22, value) {
4478
+ return object2 == null ? object2 : baseSet(object2, path22, value);
4479
4479
  }
4480
- function setWith(object2, path16, value, customizer) {
4480
+ function setWith(object2, path22, value, customizer) {
4481
4481
  customizer = typeof customizer == "function" ? customizer : undefined2;
4482
- return object2 == null ? object2 : baseSet(object2, path16, value, customizer);
4482
+ return object2 == null ? object2 : baseSet(object2, path22, value, customizer);
4483
4483
  }
4484
4484
  var toPairs = createToPairs(keys);
4485
4485
  var toPairsIn = createToPairs(keysIn);
@@ -4501,15 +4501,15 @@ var require_lodash = __commonJS({
4501
4501
  });
4502
4502
  return accumulator;
4503
4503
  }
4504
- function unset(object2, path16) {
4505
- return object2 == null ? true : baseUnset(object2, path16);
4504
+ function unset(object2, path22) {
4505
+ return object2 == null ? true : baseUnset(object2, path22);
4506
4506
  }
4507
- function update(object2, path16, updater) {
4508
- return object2 == null ? object2 : baseUpdate(object2, path16, castFunction(updater));
4507
+ function update(object2, path22, updater) {
4508
+ return object2 == null ? object2 : baseUpdate(object2, path22, castFunction(updater));
4509
4509
  }
4510
- function updateWith(object2, path16, updater, customizer) {
4510
+ function updateWith(object2, path22, updater, customizer) {
4511
4511
  customizer = typeof customizer == "function" ? customizer : undefined2;
4512
- return object2 == null ? object2 : baseUpdate(object2, path16, castFunction(updater), customizer);
4512
+ return object2 == null ? object2 : baseUpdate(object2, path22, castFunction(updater), customizer);
4513
4513
  }
4514
4514
  function values(object2) {
4515
4515
  return object2 == null ? [] : baseValues(object2, keys(object2));
@@ -4895,17 +4895,17 @@ var require_lodash = __commonJS({
4895
4895
  function matches(source) {
4896
4896
  return baseMatches(baseClone(source, CLONE_DEEP_FLAG));
4897
4897
  }
4898
- function matchesProperty(path16, srcValue) {
4899
- return baseMatchesProperty(path16, baseClone(srcValue, CLONE_DEEP_FLAG));
4898
+ function matchesProperty(path22, srcValue) {
4899
+ return baseMatchesProperty(path22, baseClone(srcValue, CLONE_DEEP_FLAG));
4900
4900
  }
4901
- var method = baseRest(function(path16, args) {
4901
+ var method = baseRest(function(path22, args) {
4902
4902
  return function(object2) {
4903
- return baseInvoke(object2, path16, args);
4903
+ return baseInvoke(object2, path22, args);
4904
4904
  };
4905
4905
  });
4906
4906
  var methodOf = baseRest(function(object2, args) {
4907
- return function(path16) {
4908
- return baseInvoke(object2, path16, args);
4907
+ return function(path22) {
4908
+ return baseInvoke(object2, path22, args);
4909
4909
  };
4910
4910
  });
4911
4911
  function mixin(object2, source, options) {
@@ -4952,12 +4952,12 @@ var require_lodash = __commonJS({
4952
4952
  var over = createOver(arrayMap);
4953
4953
  var overEvery = createOver(arrayEvery);
4954
4954
  var overSome = createOver(arraySome);
4955
- function property(path16) {
4956
- return isKey(path16) ? baseProperty(toKey(path16)) : basePropertyDeep(path16);
4955
+ function property(path22) {
4956
+ return isKey(path22) ? baseProperty(toKey(path22)) : basePropertyDeep(path22);
4957
4957
  }
4958
4958
  function propertyOf(object2) {
4959
- return function(path16) {
4960
- return object2 == null ? undefined2 : baseGet(object2, path16);
4959
+ return function(path22) {
4960
+ return object2 == null ? undefined2 : baseGet(object2, path22);
4961
4961
  };
4962
4962
  }
4963
4963
  var range = createRange();
@@ -5297,7 +5297,7 @@ var require_lodash = __commonJS({
5297
5297
  lodash.nth = nth;
5298
5298
  lodash.noConflict = noConflict;
5299
5299
  lodash.noop = noop;
5300
- lodash.now = now2;
5300
+ lodash.now = now;
5301
5301
  lodash.pad = pad;
5302
5302
  lodash.padEnd = padEnd;
5303
5303
  lodash.padStart = padStart;
@@ -5410,12 +5410,12 @@ var require_lodash = __commonJS({
5410
5410
  LazyWrapper.prototype.findLast = function(predicate) {
5411
5411
  return this.reverse().find(predicate);
5412
5412
  };
5413
- LazyWrapper.prototype.invokeMap = baseRest(function(path16, args) {
5414
- if (typeof path16 == "function") {
5413
+ LazyWrapper.prototype.invokeMap = baseRest(function(path22, args) {
5414
+ if (typeof path22 == "function") {
5415
5415
  return new LazyWrapper(this);
5416
5416
  }
5417
5417
  return this.map(function(value) {
5418
- return baseInvoke(value, path16, args);
5418
+ return baseInvoke(value, path22, args);
5419
5419
  });
5420
5420
  });
5421
5421
  LazyWrapper.prototype.reject = function(predicate) {
@@ -5531,8 +5531,42 @@ var require_lodash = __commonJS({
5531
5531
  }
5532
5532
  });
5533
5533
 
5534
- // src/guest/db.ts
5535
- import fs11 from "node:fs";
5534
+ // src/core/util/errors.ts
5535
+ function errMsg(e) {
5536
+ return e instanceof Error ? e.message : String(e);
5537
+ }
5538
+
5539
+ // src/shared/system.ts
5540
+ import path from "node:path";
5541
+ var systemRoot = () => process.env.SystemRoot ?? process.env.WINDIR ?? "C:\\Windows";
5542
+ function system32(exe) {
5543
+ return path.join(systemRoot(), "System32", exe);
5544
+ }
5545
+ var SYSTEM = {
5546
+ cmd: () => system32("cmd.exe"),
5547
+ powershell: () => system32("WindowsPowerShell\\v1.0\\powershell.exe"),
5548
+ tasklist: () => system32("tasklist.exe"),
5549
+ whoami: () => system32("whoami.exe"),
5550
+ icacls: () => system32("icacls.exe"),
5551
+ tar: () => system32("tar.exe"),
5552
+ reg: () => system32("reg.exe"),
5553
+ netsh: () => system32("netsh.exe"),
5554
+ netstat: () => system32("NETSTAT.EXE"),
5555
+ route: () => system32("ROUTE.EXE"),
5556
+ ipconfig: () => system32("ipconfig.exe"),
5557
+ robocopy: () => system32("Robocopy.exe"),
5558
+ shutdown: () => system32("shutdown.exe"),
5559
+ dism: () => system32("Dism.exe"),
5560
+ msiexec: () => system32("msiexec.exe"),
5561
+ /** The .NET Framework C# compiler that ships with Windows (C# 5). */
5562
+ csc: () => path.join(systemRoot(), "Microsoft.NET", "Framework64", "v4.0.30319", "csc.exe")
5563
+ };
5564
+ function dropInheritedModulePath(env = process.env) {
5565
+ delete env.PSModulePath;
5566
+ }
5567
+
5568
+ // src/guest/databases/sbx-db.ts
5569
+ import fs19 from "node:fs";
5536
5570
 
5537
5571
  // node_modules/zod/v4/classic/external.js
5538
5572
  var external_exports = {};
@@ -6350,10 +6384,10 @@ function mergeDefs(...defs) {
6350
6384
  function cloneDef(schema) {
6351
6385
  return mergeDefs(schema._zod.def);
6352
6386
  }
6353
- function getElementAtPath(obj, path16) {
6354
- if (!path16)
6387
+ function getElementAtPath(obj, path22) {
6388
+ if (!path22)
6355
6389
  return obj;
6356
- return path16.reduce((acc, key) => acc?.[key], obj);
6390
+ return path22.reduce((acc, key) => acc?.[key], obj);
6357
6391
  }
6358
6392
  function promiseAllObject(promisesObj) {
6359
6393
  const keys = Object.keys(promisesObj);
@@ -6693,11 +6727,11 @@ function explicitlyAborted(x, startIndex = 0) {
6693
6727
  }
6694
6728
  return false;
6695
6729
  }
6696
- function prefixIssues(path16, issues) {
6730
+ function prefixIssues(path22, issues) {
6697
6731
  return issues.map((iss) => {
6698
6732
  var _a3;
6699
6733
  (_a3 = iss).path ?? (_a3.path = []);
6700
- iss.path.unshift(path16);
6734
+ iss.path.unshift(path22);
6701
6735
  return iss;
6702
6736
  });
6703
6737
  }
@@ -7147,16 +7181,16 @@ function flattenError(error62, mapper = (issue2) => issue2.message) {
7147
7181
  }
7148
7182
  function formatError(error62, mapper = (issue2) => issue2.message) {
7149
7183
  const fieldErrors = { _errors: [] };
7150
- const processError = (error63, path16 = []) => {
7184
+ const processError = (error63, path22 = []) => {
7151
7185
  for (const issue2 of error63.issues) {
7152
7186
  if (issue2.code === "invalid_union" && issue2.errors.length) {
7153
- issue2.errors.map((issues) => processError({ issues }, [...path16, ...issue2.path]));
7187
+ issue2.errors.map((issues) => processError({ issues }, [...path22, ...issue2.path]));
7154
7188
  } else if (issue2.code === "invalid_key") {
7155
- processError({ issues: issue2.issues }, [...path16, ...issue2.path]);
7189
+ processError({ issues: issue2.issues }, [...path22, ...issue2.path]);
7156
7190
  } else if (issue2.code === "invalid_element") {
7157
- processError({ issues: issue2.issues }, [...path16, ...issue2.path]);
7191
+ processError({ issues: issue2.issues }, [...path22, ...issue2.path]);
7158
7192
  } else {
7159
- const fullpath = [...path16, ...issue2.path];
7193
+ const fullpath = [...path22, ...issue2.path];
7160
7194
  if (fullpath.length === 0) {
7161
7195
  fieldErrors._errors.push(mapper(issue2));
7162
7196
  } else {
@@ -7195,17 +7229,17 @@ function formatError(error62, mapper = (issue2) => issue2.message) {
7195
7229
  }
7196
7230
  function treeifyError(error62, mapper = (issue2) => issue2.message) {
7197
7231
  const result = { errors: [] };
7198
- const processError = (error63, path16 = []) => {
7232
+ const processError = (error63, path22 = []) => {
7199
7233
  var _a3;
7200
7234
  for (const issue2 of error63.issues) {
7201
7235
  if (issue2.code === "invalid_union" && issue2.errors.length) {
7202
- issue2.errors.map((issues) => processError({ issues }, [...path16, ...issue2.path]));
7236
+ issue2.errors.map((issues) => processError({ issues }, [...path22, ...issue2.path]));
7203
7237
  } else if (issue2.code === "invalid_key") {
7204
- processError({ issues: issue2.issues }, [...path16, ...issue2.path]);
7238
+ processError({ issues: issue2.issues }, [...path22, ...issue2.path]);
7205
7239
  } else if (issue2.code === "invalid_element") {
7206
- processError({ issues: issue2.issues }, [...path16, ...issue2.path]);
7240
+ processError({ issues: issue2.issues }, [...path22, ...issue2.path]);
7207
7241
  } else {
7208
- const fullpath = [...path16, ...issue2.path];
7242
+ const fullpath = [...path22, ...issue2.path];
7209
7243
  if (fullpath.length === 0) {
7210
7244
  result.errors.push(mapper(issue2));
7211
7245
  continue;
@@ -7244,8 +7278,8 @@ function treeifyError(error62, mapper = (issue2) => issue2.message) {
7244
7278
  }
7245
7279
  function toDotPath(_path) {
7246
7280
  const segs = [];
7247
- const path16 = _path.map((seg) => typeof seg === "object" ? seg.key : seg);
7248
- for (const seg of path16) {
7281
+ const path22 = _path.map((seg) => typeof seg === "object" ? seg.key : seg);
7282
+ for (const seg of path22) {
7249
7283
  if (typeof seg === "number")
7250
7284
  segs.push(`[${seg}]`);
7251
7285
  else if (typeof seg === "symbol")
@@ -24347,13 +24381,13 @@ function resolveRef(ref, ctx) {
24347
24381
  if (!ref.startsWith("#")) {
24348
24382
  throw new Error("External $ref is not supported, only local refs (#/...) are allowed");
24349
24383
  }
24350
- const path16 = ref.slice(1).split("/").filter(Boolean);
24351
- if (path16.length === 0) {
24384
+ const path22 = ref.slice(1).split("/").filter(Boolean);
24385
+ if (path22.length === 0) {
24352
24386
  return ctx.rootSchema;
24353
24387
  }
24354
24388
  const defsKey = ctx.version === "draft-2020-12" ? "$defs" : "definitions";
24355
- if (path16[0] === defsKey) {
24356
- const key = path16[1] === void 0 ? void 0 : decodeJSONPointerSegment(path16[1]);
24389
+ if (path22[0] === defsKey) {
24390
+ const key = path22[1] === void 0 ? void 0 : decodeJSONPointerSegment(path22[1]);
24357
24391
  if (!key || !ctx.defs[key]) {
24358
24392
  throw new Error(`Reference not found: ${ref}`);
24359
24393
  }
@@ -25202,104 +25236,161 @@ function date4(params) {
25202
25236
  return _coercedDate(ZodDate, params);
25203
25237
  }
25204
25238
 
25205
- // src/shared/guest-paths.ts
25239
+ // src/shared/paths/guest-paths.ts
25206
25240
  var RESERVED_GUEST = /^C:\\(?:Windows|Program Files|Program Files \(x86\)|ProgramData|Users|AgentLaunch|AgentData|HostTools|nvm|Mirror)(?:\\|$)/i;
25207
25241
  var MIRROR_LETTER = /^[D-Z]$/;
25208
25242
  var DRIVE_PATH = /^([A-Za-z]):\\(.*)$/;
25209
25243
  var BAD_CHARS = /[<>:"|?*/\x00-\x1f]/;
25210
- var isValidGuestPath = (guest) => {
25244
+ function isValidGuestPath(guest) {
25211
25245
  const m = DRIVE_PATH.exec(guest);
25212
25246
  if (!m) return false;
25213
25247
  const letter = m[1].toUpperCase();
25214
25248
  const rest = m[2].replace(/\\+$/, "");
25215
25249
  if (rest === "" || BAD_CHARS.test(rest)) return false;
25216
- if (rest.split("\\").some((segment) => segment === "" || segment === "." || segment === ".." || /[. ]$/.test(segment))) return false;
25250
+ if (rest.split("\\").some((segment) => segment === "" || segment === "." || segment === ".." || /[. ]$/.test(segment)))
25251
+ return false;
25217
25252
  if (letter === "C") return !RESERVED_GUEST.test("C:\\" + rest);
25218
25253
  return MIRROR_LETTER.test(letter);
25219
- };
25254
+ }
25220
25255
 
25221
25256
  // src/core/schema/common.ts
25222
- var GuestPath = external_exports.string().refine(
25257
+ var GuestPathSchema = external_exports.string().refine(
25223
25258
  isValidGuestPath,
25224
25259
  "reserved or invalid guest path (a folder under C:\\ other than Windows, Program Files, Users, AgentData, Mirror, ..., or on drive D: to Z:)"
25225
25260
  );
25226
- var Name = external_exports.string().regex(/^[A-Za-z0-9_-]+$/, "letters, numbers, - and _ only");
25227
- var Strings = external_exports.array(external_exports.string());
25228
- var toggle = (description) => external_exports.strictObject({ enabled: external_exports.boolean().describe(description) });
25229
- var SchemaRef = external_exports.string().describe("Path or URL of the JSON Schema for editor autocomplete and docs.");
25230
- var GitAccess = external_exports.enum(["full", "readonly", "none"]).describe("full: normal git. readonly: status/log/diff/show/blame only (no commit, push, checkout, ...). none: no git at all; .git is hidden from the agent.");
25231
- var Enabled = external_exports.union([external_exports.boolean(), external_exports.literal("auto")]);
25232
- var enabled = (what, markers) => Enabled.describe(what + ' true, false, or "auto" = only when the project has ' + markers + ".");
25233
- var Packages = (what, example) => Strings.describe(what + ", installed once and kept (e.g. " + example + ").");
25261
+ var NameSchema = external_exports.string().regex(/^[A-Za-z0-9_-]+$/, "letters, numbers, - and _ only");
25262
+ var StringsSchema = external_exports.array(external_exports.string());
25263
+ function toggle(description) {
25264
+ return external_exports.strictObject({ enabled: external_exports.boolean().describe(description) });
25265
+ }
25266
+ var SchemaRefSchema = external_exports.string().describe("Path or URL of the JSON Schema for editor autocomplete and docs.");
25267
+ var GitAccessSchema = external_exports.enum(["full", "readonly", "none"]).describe(
25268
+ "full: normal git. readonly: status/log/diff/show/blame only (no commit, push, checkout, ...). none: no git at all; .git is hidden from the agent."
25269
+ );
25270
+ var EnabledSchema = external_exports.union([external_exports.boolean(), external_exports.literal("auto")]);
25271
+ function enabled(what, markers) {
25272
+ return EnabledSchema.describe(what + ' true, false, or "auto" = only when the project has ' + markers + ".");
25273
+ }
25274
+ function Packages(what, example) {
25275
+ return StringsSchema.describe(what + ", installed once and kept (e.g. " + example + ").");
25276
+ }
25234
25277
 
25235
25278
  // src/core/schema/config.ts
25236
25279
  var import_lodash = __toESM(require_lodash(), 1);
25237
25280
 
25238
25281
  // src/core/schema/databases.ts
25239
- var Port = external_exports.number().int().min(1024).max(65535);
25240
- var dbEnabled = (name) => Enabled.describe(name + ': true, false, or "auto" = only when the project needs it (found from compose files, dependencies of every language, Prisma/ORM config and connection strings).');
25241
- var Databases = external_exports.strictObject({
25282
+ var PortSchema = external_exports.number().int().min(1024).max(65535);
25283
+ function dbEnabled(name) {
25284
+ return EnabledSchema.describe(
25285
+ name + ': true, false, or "auto" = only when the project needs it (found from compose files, dependencies of every language, Prisma/ORM config and connection strings).'
25286
+ );
25287
+ }
25288
+ var DatabasesSchema = external_exports.strictObject({
25242
25289
  postgres: external_exports.strictObject({
25243
25290
  enabled: dbEnabled("PostgreSQL (with psql, pg_dump). User postgres, no password, localhost only"),
25244
25291
  version: external_exports.string().min(1).describe('"latest" or a major version such as "16". A compose file pinning postgres:<major> wins.'),
25245
- port: Port.describe("Port inside the sandbox.")
25292
+ port: PortSchema.describe("Port inside the sandbox.")
25246
25293
  }),
25247
25294
  mysql: external_exports.strictObject({
25248
25295
  enabled: dbEnabled("MySQL-compatible database (MariaDB). User root, no password, localhost only"),
25249
25296
  version: external_exports.string().min(1).describe('"lts" (newest MariaDB LTS) or a MariaDB series such as "11.4".'),
25250
- port: Port.describe("Port inside the sandbox.")
25297
+ port: PortSchema.describe("Port inside the sandbox.")
25251
25298
  }),
25252
25299
  mongodb: external_exports.strictObject({
25253
25300
  enabled: dbEnabled("MongoDB with mongosh, localhost only"),
25254
25301
  version: external_exports.string().min(1).describe('"latest" or a version prefix such as "8.0".'),
25255
- port: Port.describe("Port inside the sandbox.")
25302
+ port: PortSchema.describe("Port inside the sandbox.")
25256
25303
  }),
25257
25304
  redis: external_exports.strictObject({
25258
25305
  enabled: dbEnabled("Redis (community Windows build), localhost only"),
25259
- port: Port.describe("Port inside the sandbox.")
25306
+ port: PortSchema.describe("Port inside the sandbox.")
25260
25307
  }),
25261
25308
  dynamodb: external_exports.strictObject({
25262
- enabled: dbEnabled("DynamoDB Local (Amazon's official emulator, on the Java toolchain) with dynamodb-admin, a web UI to browse and edit tables"),
25263
- port: Port.describe("DynamoDB endpoint port inside the sandbox (http://localhost:<port>)."),
25264
- adminPort: Port.describe("dynamodb-admin web UI port (open http://localhost:<adminPort> in the sandbox's browser)."),
25309
+ enabled: dbEnabled(
25310
+ "DynamoDB Local (Amazon's official emulator, on the Java toolchain) with dynamodb-admin, a web UI to browse and edit tables"
25311
+ ),
25312
+ port: PortSchema.describe("DynamoDB endpoint port inside the sandbox (http://localhost:<port>)."),
25313
+ adminPort: PortSchema.describe(
25314
+ "dynamodb-admin web UI port (open http://localhost:<adminPort> in the sandbox's browser)."
25315
+ ),
25265
25316
  admin: external_exports.boolean().describe("Run dynamodb-admin next to DynamoDB Local.")
25266
25317
  }),
25267
25318
  sqlserver: external_exports.strictObject({
25268
- enabled: dbEnabled("SQL Server. It cannot run inside Windows Sandbox; when a project needs it you get a note to use Postgres or SQLite for local work")
25319
+ enabled: dbEnabled(
25320
+ "SQL Server. It cannot run inside Windows Sandbox; when a project needs it you get a note to use Postgres or SQLite for local work"
25321
+ )
25269
25322
  })
25270
25323
  });
25271
25324
 
25272
25325
  // src/core/schema/harness.ts
25273
- var Harness = external_exports.strictObject({
25326
+ var SubfolderSchema = external_exports.string().regex(/^(?!.*(^|[\\/])\.\.([\\/]|$))[A-Za-z0-9._ -]+([\\/][A-Za-z0-9._ -]+)*$/, "a plain relative folder");
25327
+ var HarnessHomeSchema = external_exports.strictObject({
25328
+ env: external_exports.record(external_exports.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/), SubfolderSchema).describe("Environment variable -> folder (below the sandbox state folder) the agent keeps its data in."),
25329
+ profileDirs: external_exports.array(SubfolderSchema.refine((d) => !d.split(/[\\/]/).includes("."), "a plain relative folder")).max(8).optional().describe(
25330
+ "Folders below the sandbox's user profile (e.g. .qwen, .config/opencode) the agent keeps its data in: each becomes a link to state\\<agent>\\profile\\<folder>, so it survives between sandboxes."
25331
+ ),
25332
+ loginFiles: external_exports.array(SubfolderSchema).describe("Files that make up the login, relative to the agent's own state folder (state\\<agent>)."),
25333
+ hostDir: external_exports.string().optional().describe(
25334
+ "The agent's own folder on this PC (e.g. ~/.codex): loginFiles are read from it to save this PC's login."
25335
+ )
25336
+ });
25337
+ var HarnessSchema = external_exports.strictObject({
25274
25338
  hostExecutable: external_exports.string().optional().describe("Executable copied from this PC when installed here (e.g. claude.exe)."),
25275
25339
  hostDir: external_exports.string().optional().describe('Folder of hostExecutable on this PC, or "auto" to search PATH and ~/.local/bin.'),
25276
25340
  npmPackage: external_exports.string().optional().describe("npm package installed inside the sandbox when there is no host copy."),
25277
25341
  npmBin: external_exports.string().optional().describe("Command the npm package provides."),
25278
25342
  uvPackage: external_exports.string().optional().describe("Python package installed with `uv tool install` inside the sandbox (e.g. aider-chat)."),
25279
25343
  uvBin: external_exports.string().optional().describe("Command the uv package provides."),
25280
- arguments: Strings.describe("Arguments always passed to the agent."),
25344
+ arguments: StringsSchema.describe("Arguments always passed to the agent."),
25281
25345
  environment: external_exports.record(external_exports.string(), external_exports.string()).describe("Environment variables for the agent."),
25282
- resumeArguments: Strings.optional().describe("Arguments used when the agent is restarted in place (e.g. after an account switch) so it resumes the conversation.")
25283
- }).refine((h) => h.hostExecutable || h.npmPackage || h.uvPackage, "needs hostExecutable, npmPackage or uvPackage").refine((h) => !h.uvPackage || h.uvBin, "needs uvBin when uvPackage is set").refine((h) => !h.npmPackage || h.npmBin, "needs npmBin when npmPackage is set");
25346
+ home: HarnessHomeSchema.optional().describe(
25347
+ "Where its login lives inside the sandbox; leave out when the agent cannot be pointed at a folder (then its login is not kept between sandboxes)."
25348
+ ),
25349
+ resumeArguments: StringsSchema.optional().describe(
25350
+ "Arguments used when the agent is restarted in place (e.g. after an account switch) so it resumes the conversation."
25351
+ ),
25352
+ resumeOneArguments: StringsSchema.optional().describe(
25353
+ "Arguments that reopen one conversation, with {id} where its id goes (claude: --resume {id}). Used instead of resumeArguments when the conversation of a session is known."
25354
+ )
25355
+ }).refine(
25356
+ (h) => !h.resumeOneArguments || h.resumeOneArguments.some((a) => a.includes("{id}")),
25357
+ "needs {id} in resumeOneArguments"
25358
+ ).refine((h) => h.hostExecutable || h.npmPackage || h.uvPackage, "needs hostExecutable, npmPackage or uvPackage").refine((h) => !h.uvPackage || h.uvBin, "needs uvBin when uvPackage is set").refine((h) => !h.npmPackage || h.npmBin, "needs npmBin when npmPackage is set");
25284
25359
 
25285
25360
  // src/core/schema/profile.ts
25286
- var Secrets = external_exports.strictObject({
25287
- strip: external_exports.boolean().describe(`Remove credentials from everything copied into the sandbox (your Claude settings.json "env" and credential helpers, MCP servers' env, headers and arguments): AWS, Azure, Google Cloud, Cloudflare, hosting, CI, registries, payment, AI API keys, database URLs, anything named *_TOKEN / *_SECRET / *PASSWORD* / *_KEY or *PROD*, and values that look like keys.`),
25288
- allow: Strings.describe('Variable names that may go in anyway; * matches anything, e.g. ["AWS_REGION", "AWS_PROFILE", "MY_APP_*"].'),
25289
- patterns: Strings.describe('More variable names to treat as secrets; * matches anything, e.g. ["ACME_*", "*_INTERNAL_URL"].'),
25290
- warnFiles: external_exports.boolean().describe("Warn at launch about files in the workspace that usually hold secrets (.env, *.pem, credentials.json, ...). The agent CAN read them: Windows Sandbox maps the whole folder.")
25361
+ var SecretsSchema = external_exports.strictObject({
25362
+ strip: external_exports.boolean().describe(
25363
+ `Remove credentials from everything copied into the sandbox (your Claude settings.json "env" and credential helpers, MCP servers' env, headers and arguments): AWS, Azure, Google Cloud, Cloudflare, hosting, CI, registries, payment, AI API keys, database URLs, anything named *_TOKEN / *_SECRET / *PASSWORD* / *_KEY or *PROD*, and values that look like keys.`
25364
+ ),
25365
+ allow: StringsSchema.describe(
25366
+ 'Variable names that may go in anyway; * matches anything, e.g. ["AWS_REGION", "AWS_PROFILE", "MY_APP_*"].'
25367
+ ),
25368
+ patterns: StringsSchema.describe(
25369
+ 'More variable names to treat as secrets; * matches anything, e.g. ["ACME_*", "*_INTERNAL_URL"].'
25370
+ ),
25371
+ warnFiles: external_exports.boolean().describe(
25372
+ "Warn at launch about files in the workspace that usually hold secrets (.env, *.pem, credentials.json, ...). The agent CAN read them: Windows Sandbox maps the whole folder."
25373
+ )
25291
25374
  });
25292
- var Attach = external_exports.strictObject({
25375
+ var AttachSchema = external_exports.strictObject({
25293
25376
  enabled: external_exports.boolean().describe("Allow sandbox claude --terminal / sandbox attach from this PC."),
25294
- reuseSession: external_exports.boolean().describe("sandbox claude -t in a running sandbox reattaches to this folder's session when no terminal on this PC is attached to it (--new always starts another)."),
25295
- auto: external_exports.boolean().describe("Starting an agent attaches this terminal automatically, as if you passed -t (only in an interactive terminal)."),
25296
- autoHide: external_exports.boolean().describe("Hide the Windows Sandbox window whenever this terminal attaches; it keeps running (sandbox show brings it back).")
25377
+ reuseSession: external_exports.boolean().describe(
25378
+ "sandbox claude -t in a running sandbox reattaches to this folder's session when no terminal on this PC is attached to it (--new always starts another)."
25379
+ ),
25380
+ auto: external_exports.boolean().describe(
25381
+ "Starting an agent attaches this terminal automatically, as if you passed -t (only in an interactive terminal)."
25382
+ ),
25383
+ autoHide: external_exports.boolean().describe(
25384
+ "Hide the Windows Sandbox window whenever this terminal attaches; it keeps running (sandbox show brings it back)."
25385
+ )
25297
25386
  });
25298
- var AgentCommands = external_exports.strictObject({
25299
- enabled: external_exports.boolean().describe("(Beta) Typing an agent's own command on this PC (claude, codex, ...) starts it in a hidden sandbox for the folder you are in and attaches that terminal. Adds one folder to the start of YOUR PATH; off removes it. SANDBOX_AGENT_DIRECT=1 runs the real agent instead."),
25300
- agents: external_exports.union([external_exports.literal("auto"), external_exports.array(Name)]).describe('"auto" = every agent installed on this PC, or a list of agent names, e.g. ["claude", "codex"].')
25387
+ var AgentCommandsSchema = external_exports.strictObject({
25388
+ enabled: external_exports.boolean().describe(
25389
+ "(Beta) Typing an agent's own command on this PC (claude, codex, ...) starts it in a hidden sandbox for the folder you are in and attaches that terminal. Adds one folder to the start of YOUR PATH; off removes it. SANDBOX_AGENT_DIRECT=1 runs the real agent instead."
25390
+ ),
25391
+ agents: external_exports.union([external_exports.literal("auto"), external_exports.array(NameSchema)]).describe('"auto" = every agent installed on this PC, or a list of agent names, e.g. ["claude", "codex"].')
25301
25392
  });
25302
- var ClaudeProfile = external_exports.strictObject({
25393
+ var ClaudeProfileSchema = external_exports.strictObject({
25303
25394
  enabled: external_exports.boolean().describe("Copy selected Claude settings from this PC into the sandbox."),
25304
25395
  hostDir: external_exports.string().describe('Your Claude folder, or "auto" (~/.claude or CLAUDE_CONFIG_DIR).'),
25305
25396
  include: external_exports.array(external_exports.string().regex(/^[A-Za-z0-9._-]+$/)).describe("Files and folders copied from it."),
@@ -25307,25 +25398,37 @@ var ClaudeProfile = external_exports.strictObject({
25307
25398
  copyCredentials: external_exports.boolean().describe("Copy your Claude LOGIN into the sandbox. Prefer sandbox account instead."),
25308
25399
  overwrite: external_exports.boolean().describe("Refresh these settings from this PC on every launch."),
25309
25400
  syncHistory: external_exports.boolean().describe("Bring conversation history in, and sync new history back (path-translated)."),
25310
- historyScope: external_exports.enum(["project", "all"]).describe(`Which history comes in: "project" = only the projects in this sandbox (other projects' conversations, file backups and prompts stay on this PC), "all" = everything. Only this sandbox's projects ever sync back.`),
25401
+ historyScope: external_exports.enum(["project", "all"]).describe(
25402
+ `Which history comes in: "project" = only the projects in this sandbox (other projects' conversations, file backups and prompts stay on this PC), "all" = everything. Only this sandbox's projects ever sync back.`
25403
+ ),
25311
25404
  syncClaudeMem: external_exports.boolean().describe("Bring claude-mem data into the sandbox (its settings and backups stay on this PC)."),
25312
- syncClaudeMemBack: external_exports.boolean().describe("Also copy claude-mem's database back to this PC when the sandbox closes. Off by default: what is in it is loaded into every Claude session on this PC, so a compromised agent could plant instructions there.")
25405
+ syncClaudeMemBack: external_exports.boolean().describe(
25406
+ "Also copy claude-mem's database back to this PC when the sandbox closes. Off by default: what is in it is loaded into every Claude session on this PC, so a compromised agent could plant instructions there."
25407
+ )
25313
25408
  });
25314
25409
 
25315
25410
  // src/core/schema/sandbox.ts
25316
- var GuestWorkspace = external_exports.union([external_exports.literal("auto"), external_exports.literal("mirror"), GuestPath]).describe('Where the workspace appears inside the sandbox. "auto" = C:\\Workspace\\<folder name>. "mirror" = the same path as on this PC, so absolute paths in configs and build caches match (another drive letter such as F: is a subst drive onto C:\\Mirror\\F); paths the sandbox reserves (C:\\Users\\..., C:\\Program Files\\...) fall back to "auto".');
25317
- var Mapping = external_exports.strictObject({
25411
+ var GuestWorkspaceSchema = external_exports.union([external_exports.literal("auto"), external_exports.literal("mirror"), GuestPathSchema]).describe(
25412
+ 'Where the workspace appears inside the sandbox. "auto" = C:\\Workspace\\<folder name>. "mirror" = the same path as on this PC, so absolute paths in configs and build caches match (another drive letter such as F: is a subst drive onto C:\\Mirror\\F); paths the sandbox reserves (C:\\Users\\..., C:\\Program Files\\...) fall back to "auto".'
25413
+ );
25414
+ var MappingSchema = external_exports.strictObject({
25318
25415
  host: external_exports.string().min(1).describe("Folder on this PC (relative paths are relative to the config file)."),
25319
- guest: external_exports.string().min(1).max(1024).optional().describe("Where it appears inside the sandbox, e.g. C:\\Assets, or on another drive letter (D: to Z:) such as F:\\SteamLibrary\\steamapps\\common\\Game (shown as F: at boot). Leave it out to use the same path as on this PC (a folder inside the project stays where it is in the project). A path the sandbox cannot use (C:\\Windows\\..., C:\\Users\\..., one already in use) goes to C:\\Mapped\\<drive>\\<path> instead, and the launch says so."),
25416
+ guest: external_exports.string().min(1).max(1024).optional().describe(
25417
+ "Where it appears inside the sandbox, e.g. C:\\Assets, or on another drive letter (D: to Z:) such as F:\\SteamLibrary\\steamapps\\common\\Game (shown as F: at boot). Leave it out to use the same path as on this PC (a folder inside the project stays where it is in the project). A full path only; one the sandbox cannot use (C:\\Windows\\..., C:\\Users\\..., one already in use) stops the launch with the fix."
25418
+ ),
25320
25419
  readOnly: external_exports.boolean().describe("true = the agent can only read it."),
25321
25420
  optional: external_exports.boolean().optional().describe("true = skip it quietly when the host folder does not exist.")
25322
25421
  });
25323
- var Sandbox = external_exports.strictObject({
25422
+ var SandboxSchema = external_exports.strictObject({
25324
25423
  memoryMb: external_exports.union([external_exports.literal("auto"), external_exports.number().int().min(2048)]).describe('Sandbox RAM in MB (>= 2048), or "auto": free RAM minus reserveHostMb, capped at maxMemoryMb.'),
25325
25424
  maxMemoryMb: external_exports.number().int().positive().describe('Upper limit for memoryMb "auto".'),
25326
25425
  maxMemoryPercent: external_exports.number().int().min(10).max(100).describe(`memoryMb "auto" never takes more than this share of this PC's total RAM (percent).`),
25327
- cpuLimit: external_exports.union([external_exports.literal("none"), external_exports.number().int().min(5).max(100)]).describe(`Most of this PC's CPU the sandbox may use, in percent (5-100), e.g. 50 keeps half free for you; "none" = no cap (Windows Sandbox would take every processor). Covers everything this tool starts in the sandbox (agents, installs, builds, its terminal).`),
25328
- pageFileMb: external_exports.number().int().min(0).max(262144).describe(`Size of the sandbox's paging file in MB, created at full size when it starts so it never grows while builds run (8 GB of its disk always stays free). Windows Sandbox starts with about 1 GB: parallel builds then fail with "The paging file is too small", and Windows grows the file under load. 0 = leave Windows' own.`),
25426
+ cpuLimit: external_exports.union([external_exports.literal("none"), external_exports.number().int().min(5).max(100)]).describe(
25427
+ `Most of this PC's CPU the sandbox may use, in percent (5-100), e.g. 50 keeps half free for you; "none" = no cap (Windows Sandbox would take every processor). Covers everything this tool starts in the sandbox (agents, installs, builds, its terminal).`
25428
+ ),
25429
+ pageFileMb: external_exports.number().int().min(0).max(262144).describe(
25430
+ `Size of the sandbox's paging file in MB, created at full size when it starts so it never grows while builds run (8 GB of its disk always stays free). Windows Sandbox starts with about 1 GB: parallel builds then fail with "The paging file is too small", and Windows grows the file under load. 0 = leave Windows' own.`
25431
+ ),
25329
25432
  reserveHostMb: external_exports.number().int().nonnegative().describe('RAM always left for this PC when memoryMb is "auto".'),
25330
25433
  vGpu: external_exports.boolean().describe("Virtual GPU. Off by default: Microsoft notes it widens the sandbox attack surface."),
25331
25434
  networking: external_exports.boolean().describe("Internet access. false is the only hard network isolation Windows Sandbox offers."),
@@ -25334,215 +25437,979 @@ var Sandbox = external_exports.strictObject({
25334
25437
  videoInput: external_exports.boolean().describe("Camera access."),
25335
25438
  printerRedirection: external_exports.boolean().describe("Printers from this PC."),
25336
25439
  protectedClient: external_exports.boolean().describe("Run the sandbox window in Protected Client mode (recommended)."),
25337
- headless: external_exports.boolean().describe("Hide the sandbox window (sbx-show brings it back). A headless sandbox shuts down when its last session ends."),
25338
- keepAwake: external_exports.boolean().describe("Keep this PC from sleeping while a sandbox runs, so agents left working overnight keep going (the screen may still turn off; closing a laptop lid still sleeps it).")
25440
+ headless: external_exports.boolean().describe(
25441
+ "Hide the sandbox window (sbx-show brings it back). A headless sandbox shuts down when its last session ends."
25442
+ ),
25443
+ keepAwake: external_exports.boolean().describe(
25444
+ "Keep this PC from sleeping while a sandbox runs, so agents left working overnight keep going (the screen may still turn off; closing a laptop lid still sleeps it)."
25445
+ )
25339
25446
  });
25340
- var Port2 = external_exports.number().int().min(1).max(65535);
25341
- var HostEntry = external_exports.string().max(253).regex(/^(@developer|(\*\.)?([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+)$/, "a host name like example.com, *.example.com, or @developer");
25342
- var Network = external_exports.strictObject({
25447
+ var SharingSchema = external_exports.strictObject({
25448
+ otherUsers: external_exports.boolean().describe(
25449
+ "Let other Windows users of this PC use a sandbox you start: list its sessions, attach, run commands and stop it. They use the agent logins inside it, and history goes to your account."
25450
+ )
25451
+ });
25452
+ var PortSchema2 = external_exports.number().int().min(1).max(65535);
25453
+ var HostEntrySchema = external_exports.string().max(253).regex(
25454
+ /^(@developer|(\*\.)?([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+)$/,
25455
+ "a host name like example.com, *.example.com, or @developer"
25456
+ );
25457
+ var NetworkSchema = external_exports.strictObject({
25343
25458
  blockPrivateRanges: external_exports.boolean().describe("Block your LAN (10/8, 172.16/12, 192.168/16, SMB) from inside the sandbox."),
25344
- allowOnly: external_exports.array(HostEntry).describe("Only these hosts can be reached once the sandbox is set up (tools still download first). *.example.com covers its subdomains; @developer adds package registries, GitHub, toolchain downloads and the AI providers. Programs go through a proxy in the sandbox (HTTP_PROXY); anything else is blocked by its firewall. Empty = no limit."),
25345
- blockHosts: external_exports.array(external_exports.string().max(253).regex(/^([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+$/, "a host name like telemetry.example.com")).describe("Never reachable from the sandbox, e.g. production servers or telemetry (each exact name; the sandbox's hosts file sends them nowhere)."),
25346
- forwardPorts: external_exports.array(external_exports.strictObject({
25347
- pc: Port2.describe("The port on this PC (localhost only)."),
25348
- sandbox: Port2.describe("The port inside the sandbox (a server there may listen on localhost only).")
25349
- })).describe("Reach servers in the sandbox from this PC: http://localhost:<pc> here goes to <sandbox> inside, while it runs. Nothing else on your network can use them."),
25459
+ allowOnly: external_exports.array(HostEntrySchema).describe(
25460
+ "Only these hosts can be reached once the sandbox is set up (tools still download first). *.example.com covers its subdomains; @developer adds package registries, GitHub, toolchain downloads and the AI providers. Programs go through a proxy in the sandbox (HTTP_PROXY); anything else is blocked by its firewall. Empty = no limit."
25461
+ ),
25462
+ blockHosts: external_exports.array(
25463
+ external_exports.string().max(253).regex(/^([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+$/, "a host name like telemetry.example.com")
25464
+ ).describe(
25465
+ "Never reachable from the sandbox, e.g. production servers or telemetry (each exact name; the sandbox's hosts file sends them nowhere)."
25466
+ ),
25467
+ forwardPorts: external_exports.array(
25468
+ external_exports.strictObject({
25469
+ pc: PortSchema2.describe("The port on this PC (localhost only)."),
25470
+ sandbox: PortSchema2.describe("The port inside the sandbox (a server there may listen on localhost only).")
25471
+ })
25472
+ ).describe(
25473
+ "Reach servers in the sandbox from this PC: http://localhost:<pc> here goes to <sandbox> inside, while it runs. Nothing else on your network can use them."
25474
+ ),
25350
25475
  dns: external_exports.array(external_exports.string().regex(/^\d{1,3}(\.\d{1,3}){3}$/, "an IPv4 address like 1.1.1.1")).describe("DNS servers for the sandbox instead of your network's, e.g. 1.1.1.1 and 9.9.9.9."),
25351
- proxy: external_exports.string().regex(/^(https?:\/\/[^\s]+)?$/, "http://host:port").describe("An HTTP proxy the sandbox uses to reach the internet (HTTP_PROXY / HTTPS_PROXY for everything in it), e.g. http://proxy.corp:8080. Empty = none.")
25476
+ proxy: external_exports.string().regex(/^(https?:\/\/[^\s]+)?$/, "http://host:port").describe(
25477
+ "An HTTP proxy the sandbox uses to reach the internet (HTTP_PROXY / HTTPS_PROXY for everything in it), e.g. http://proxy.corp:8080. Empty = none."
25478
+ )
25352
25479
  });
25353
- var Audit = external_exports.strictObject({
25354
- enabled: external_exports.boolean().describe("Keep an audit log on this PC of what happened in your sandboxes: programs started (with their command lines), files changed in the project, sessions, and what the repo guard caught. The sandbox cannot change it. Read it with sandbox audit."),
25480
+ var AuditSchema = external_exports.strictObject({
25481
+ enabled: external_exports.boolean().describe(
25482
+ "Keep an audit log on this PC of what happened in your sandboxes: programs started (with their command lines), files changed in the project, sessions, and what the repo guard caught. The sandbox cannot change it. Read it with sandbox audit."
25483
+ ),
25355
25484
  days: external_exports.number().int().min(1).max(365).describe("Days the audit log is kept."),
25356
25485
  maxMb: external_exports.number().int().min(5).max(5e3).describe("Most space the audit log may take, in MB (older days go first). Days before today are compressed."),
25357
- processes: external_exports.boolean().describe("Record every program started in the sandbox with its command line (Windows process auditing; repeated runs are counted, not listed)."),
25486
+ processes: external_exports.boolean().describe(
25487
+ "Record every program started in the sandbox with its command line (Windows process auditing; repeated runs are counted, not listed)."
25488
+ ),
25358
25489
  files: external_exports.boolean().describe("Record the files changed in the project while the sandbox runs.")
25359
25490
  });
25360
- var WorkspaceFilter = external_exports.strictObject({
25361
- enabled: external_exports.boolean().describe("Keep what your .gitignore lists (.env files, node_modules, build output ...) out of the sandbox. The sandbox works on a copy of the project without those files, kept in step with it both ways within about a second; what it creates that is ignored (its own node_modules, builds) stays in the sandbox. Git works as usual. Off = the project folder itself is mapped."),
25491
+ var WorkspaceFilterSchema = external_exports.strictObject({
25492
+ enabled: external_exports.boolean().describe(
25493
+ "Keep what your .gitignore lists (.env files, node_modules, build output ...) out of the sandbox. The sandbox works on a copy of the project without those files, kept in step with it both ways within about a second; what it creates that is ignored (its own node_modules, builds) stays in the sandbox. Git works as usual. Off = the project folder itself is mapped."
25494
+ ),
25362
25495
  exclude: external_exports.array(external_exports.string().max(500)).describe("Also keep these out, as .gitignore patterns, e.g. secrets/, *.pem, data/private/."),
25363
25496
  include: external_exports.array(external_exports.string().max(500)).describe("Let these in although .gitignore lists them, e.g. .env.example, data/fixtures/.")
25364
25497
  });
25365
- var Git = external_exports.strictObject({ enabled: external_exports.boolean().describe("Provide Git for Windows (and Git Bash, which Claude Code needs)."), access: GitAccess });
25366
- var Provisioning = external_exports.strictObject({
25498
+ var GitSchema = external_exports.strictObject({
25499
+ enabled: external_exports.boolean().describe("Provide Git for Windows (and Git Bash, which Claude Code needs)."),
25500
+ access: GitAccessSchema
25501
+ });
25502
+ var ProvisioningSchema = external_exports.strictObject({
25367
25503
  copyFromHost: external_exports.boolean().describe("Copy Node, Git, nvm and the agent from this PC when they are installed here."),
25368
25504
  fallbackToInstall: external_exports.boolean().describe("Download anything that cannot be copied from this PC."),
25369
25505
  refresh: external_exports.boolean().describe("Re-copy / re-download everything on the next launch."),
25370
- git: Git,
25506
+ git: GitSchema,
25371
25507
  terminal: toggle("Windows Terminal as the sandbox window (downloaded once)."),
25372
- conpty: toggle("Agent sessions use Microsoft's newer pseudo console (conpty.dll, downloaded once) instead of the one built into Windows: no garbled screen after resizing, real scrollback for the mouse wheel. Off = the one built into Windows.")
25508
+ conpty: toggle(
25509
+ "Agent sessions use Microsoft's newer pseudo console (conpty.dll, downloaded once) instead of the one built into Windows: no garbled screen after resizing, real scrollback for the mouse wheel. Off = the one built into Windows."
25510
+ )
25373
25511
  });
25374
- var Downloads = external_exports.strictObject({
25375
- requireChecksum: external_exports.boolean().describe("Refuse any toolchain, database or tool download that has no published checksum (SHA-256/SHA-512) to verify it against. false = allow those, as before. Downloads that do have a published checksum are always verified. A project's .sandbox-config.json can only turn this on.")
25512
+ var DownloadsSchema = external_exports.strictObject({
25513
+ requireChecksum: external_exports.boolean().describe(
25514
+ "Refuse any toolchain, database or tool download that has no published checksum (SHA-256/SHA-512) to verify it against. false = allow those, as before. Downloads that do have a published checksum are always verified. A project's .sandbox-config.json can only turn this on."
25515
+ )
25376
25516
  });
25377
25517
 
25378
25518
  // src/core/schema/toolchains.ts
25379
- var Toolchains = external_exports.strictObject({
25519
+ var ToolchainsSchema = external_exports.strictObject({
25380
25520
  node: external_exports.strictObject({
25381
- version: external_exports.string().min(1).describe(`Default Node version for nvm. "host" = the Node on this PC. A project's .nvmrc / .node-version wins.`),
25382
- extraVersions: Strings.describe("More Node versions to install (switch with nvm use). On top of the up to 3 versions copied from this PC's nvm, not counted towards that limit."),
25521
+ version: external_exports.string().min(1).describe(
25522
+ `Default Node version for nvm. "host" = the Node on this PC. A project's .nvmrc / .node-version wins.`
25523
+ ),
25524
+ extraVersions: StringsSchema.describe(
25525
+ "More Node versions to install (switch with nvm use). On top of the up to 3 versions copied from this PC's nvm, not counted towards that limit."
25526
+ ),
25383
25527
  corepack: external_exports.boolean().describe(`pnpm and yarn through corepack (a project's "packageManager" in package.json picks the version).`),
25384
- volta: Enabled.describe(`Volta: true, false, or "auto" = when the project's package.json has "volta" pins or this PC uses Volta. With pins, Volta's node/npm/yarn/pnpm come first on PATH.`),
25385
- globalPackages: Packages("npm packages installed globally into the default Node version", '["typescript", "npm-check-updates"]')
25528
+ volta: EnabledSchema.describe(
25529
+ `Volta: true, false, or "auto" = when the project's package.json has "volta" pins or this PC uses Volta. With pins, Volta's node/npm/yarn/pnpm come first on PATH.`
25530
+ ),
25531
+ globalPackages: Packages(
25532
+ "npm packages installed globally into the default Node version",
25533
+ '["typescript", "npm-check-updates"]'
25534
+ )
25386
25535
  }),
25387
25536
  python: external_exports.strictObject({
25388
- enabled: enabled("Python 3 (CPython with pip).", "pyproject.toml, requirements.txt, setup.py, Pipfile or .python-version"),
25537
+ enabled: enabled(
25538
+ "Python 3 (CPython with pip).",
25539
+ "pyproject.toml, requirements.txt, setup.py, Pipfile or .python-version"
25540
+ ),
25389
25541
  version: external_exports.string().min(1).describe(`Python 3 version prefix, e.g. "3" or "3.12". A project's .python-version wins.`),
25390
25542
  python2: external_exports.boolean().describe("Also install Python 2.7 as python2 / pip2."),
25391
- pyenv: Enabled.describe('pyenv-win (pyenv install / local / global): true, false, or "auto" = when this PC uses pyenv. .python-version is honoured either way, and `uv python install` always works.'),
25392
- tools: Packages("Python command-line tools installed with `uv tool install` (needs uv)", '["poetry", "ruff", "pre-commit"]')
25543
+ pyenv: EnabledSchema.describe(
25544
+ 'pyenv-win (pyenv install / local / global): true, false, or "auto" = when this PC uses pyenv. .python-version is honoured either way, and `uv python install` always works.'
25545
+ ),
25546
+ tools: Packages(
25547
+ "Python command-line tools installed with `uv tool install` (needs uv)",
25548
+ '["poetry", "ruff", "pre-commit"]'
25549
+ )
25393
25550
  }),
25394
25551
  rust: external_exports.strictObject({
25395
25552
  enabled: enabled("Rust via rustup (cargo, rustc).", "Cargo.toml or rust-toolchain(.toml)"),
25396
25553
  toolchain: external_exports.string().min(1).describe('Default toolchain, e.g. "stable". rust-toolchain.toml in a project wins.'),
25397
- host: external_exports.string().min(1).describe('Host triple, or "auto": x86_64-pc-windows-msvc when the MSVC toolchain is on (like most PCs), else x86_64-pc-windows-gnu (MinGW is its linker).'),
25554
+ host: external_exports.string().min(1).describe(
25555
+ 'Host triple, or "auto": x86_64-pc-windows-msvc when the MSVC toolchain is on (like most PCs), else x86_64-pc-windows-gnu (MinGW is its linker).'
25556
+ ),
25398
25557
  components: Packages("Extra rustup components", '["rust-src", "llvm-tools"]'),
25399
25558
  targets: Packages("Extra rustup targets", '["wasm32-unknown-unknown"]'),
25400
- crates: Packages("Binaries for cargo: prebuilt via cargo-binstall when the crate publishes a Windows build, else compiled with `cargo install --locked` (slow the first time)", '["sccache", "cargo-nextest", "cargo-deny"]'),
25401
- targetDir: external_exports.string().min(1).describe(`"shared": cargo's default target\\ (shared with builds on this PC, so builds on either side invalidate the other), "separate": <workspace>\\target\\sandbox (kept, no cross-talk), "local": on the sandbox's own disk (fastest, lost every boot), or a guest path.`)
25559
+ crates: Packages(
25560
+ "Binaries for cargo: prebuilt via cargo-binstall when the crate publishes a Windows build, else compiled with `cargo install --locked` (slow the first time)",
25561
+ '["sccache", "cargo-nextest", "cargo-deny"]'
25562
+ ),
25563
+ targetDir: external_exports.string().min(1).describe(
25564
+ `"shared": cargo's default target\\ (shared with builds on this PC, so builds on either side invalidate the other), "separate": <workspace>\\target\\sandbox (kept, no cross-talk), "local": on the sandbox's own disk (fastest, lost every boot), or a guest path.`
25565
+ ),
25566
+ linker: external_exports.enum(["lld", "gnu"]).describe(
25567
+ `GNU host: "lld" links with Rust's own lld through MinGW's gcc (much less memory than GNU ld), "gnu" with GNU ld.`
25568
+ ),
25569
+ linkSlots: external_exports.union([external_exports.literal("auto"), external_exports.number().int().min(1).max(32)]).describe(
25570
+ 'GNU host: how many programs may link at the same time in the whole sandbox (other links wait). "auto" = one per 8 GB of sandbox memory, 2 to 4. Several agents linking big programs at once can take Windows down.'
25571
+ )
25402
25572
  }),
25403
25573
  msvc: external_exports.strictObject({
25404
- enabled: enabled("MSVC (cl, link) and the Windows SDK, portable from Microsoft's Visual Studio manifest (~1-2 GB once), with vcvars64.bat and vswhere.", "a .vcxproj, CMakePresets.json, a script calling vcvars/vswhere, or a Rust project when this PC builds Rust with MSVC"),
25405
- acceptLicense: external_exports.boolean().describe("Required to install MSVC: you accept the Visual Studio licence terms (https://visualstudio.microsoft.com/license-terms/), which need a Visual Studio licence."),
25574
+ enabled: enabled(
25575
+ "MSVC (cl, link) and the Windows SDK, portable from Microsoft's Visual Studio manifest (~1-2 GB once), with vcvars64.bat and vswhere.",
25576
+ "a .vcxproj, CMakePresets.json, a script calling vcvars/vswhere, or a Rust project when this PC builds Rust with MSVC"
25577
+ ),
25578
+ acceptLicense: external_exports.boolean().describe(
25579
+ "Required to install MSVC: you accept the Visual Studio licence terms (https://visualstudio.microsoft.com/license-terms/), which need a Visual Studio licence."
25580
+ ),
25406
25581
  msvcVersion: external_exports.string().min(1).describe('"latest" or an MSVC tools version prefix, e.g. "14.44".'),
25407
25582
  sdkVersion: external_exports.string().min(1).describe('"latest" or a Windows SDK build, e.g. "26100" or "10.0.22621".')
25408
25583
  }),
25409
25584
  cpp: external_exports.strictObject({
25410
- enabled: enabled("MinGW-w64 GCC with CMake, Ninja, premake5 and mingw32-make (also Rust's linker).", "CMakeLists.txt, Makefile, meson.build, premake5.lua or Cargo.toml"),
25411
- flexBison: external_exports.boolean().describe("win_flex / win_bison, the parser generators many C/C++ projects (game engines among them) need; CMake finds them.")
25585
+ enabled: enabled(
25586
+ "MinGW-w64 GCC with CMake, Ninja, premake5 and mingw32-make (also Rust's linker).",
25587
+ "CMakeLists.txt, Makefile, meson.build, premake5.lua or Cargo.toml"
25588
+ ),
25589
+ flexBison: external_exports.boolean().describe(
25590
+ "win_flex / win_bison, the parser generators many C/C++ projects (game engines among them) need; CMake finds them."
25591
+ )
25412
25592
  }),
25413
25593
  dotnet: external_exports.strictObject({
25414
25594
  enabled: enabled(".NET SDK (C#, F#).", "a .sln, .slnx, .csproj, .fsproj or global.json"),
25415
- channels: Strings.describe(`SDK channels, e.g. ["LTS", "8.0"]. A project's global.json is installed too.`),
25595
+ channels: StringsSchema.describe(`SDK channels, e.g. ["LTS", "8.0"]. A project's global.json is installed too.`),
25416
25596
  tools: Packages("Global .NET tools (`dotnet tool install -g`)", '["dotnet-ef", "csharpier"]'),
25417
25597
  workloads: Packages("SDK workloads (`dotnet workload install`)", '["aspire", "wasm-tools"]'),
25418
- frameworkTargets: Strings.describe('.NET Framework reference assemblies (targeting packs) from NuGet, so net4x and old-style .csproj projects build without Visual Studio, e.g. ["net48", "net472", "net462"]. The 4.8 runtime itself ships with Windows.'),
25419
- netfx35: external_exports.boolean().describe(".NET Framework 3.5 runtime (a Windows feature, enabled from Windows Update on every boot; a few minutes).")
25598
+ frameworkTargets: StringsSchema.describe(
25599
+ '.NET Framework reference assemblies (targeting packs) from NuGet, so net4x and old-style .csproj projects build without Visual Studio, e.g. ["net48", "net472", "net462"]. The 4.8 runtime itself ships with Windows.'
25600
+ ),
25601
+ netfx35: external_exports.boolean().describe(
25602
+ ".NET Framework 3.5 runtime (a Windows feature, enabled from Windows Update on every boot; a few minutes)."
25603
+ )
25420
25604
  }),
25421
25605
  go: external_exports.strictObject({
25422
25606
  enabled: enabled("Go.", "go.mod or go.work"),
25423
- version: external_exports.string().min(1).describe('"stable" or a version prefix such as "1.23". A go.mod asking for newer fetches it itself (GOTOOLCHAIN=auto).'),
25607
+ version: external_exports.string().min(1).describe(
25608
+ '"stable" or a version prefix such as "1.23". A go.mod asking for newer fetches it itself (GOTOOLCHAIN=auto).'
25609
+ ),
25424
25610
  tools: Packages("Go tools (`go install <path>@<version>`)", '["golang.org/x/tools/gopls@latest"]')
25425
25611
  }),
25426
25612
  java: external_exports.strictObject({
25427
- enabled: enabled("Java: Eclipse Temurin JDK.", "pom.xml, build.gradle(.kts), settings.gradle(.kts), mvnw, gradlew or .java-version"),
25613
+ enabled: enabled(
25614
+ "Java: Eclipse Temurin JDK.",
25615
+ "pom.xml, build.gradle(.kts), settings.gradle(.kts), mvnw, gradlew or .java-version"
25616
+ ),
25428
25617
  version: external_exports.string().min(1).describe(`"lts" (newest LTS) or a major version such as "21". A project's .java-version or .sdkmanrc wins.`),
25429
25618
  maven: external_exports.boolean().describe("Apache Maven (mvn). A project's mvnw works either way."),
25430
25619
  gradle: external_exports.boolean().describe("Gradle (gradle). A project's gradlew works either way.")
25431
25620
  }),
25432
25621
  ruby: external_exports.strictObject({
25433
- enabled: enabled("Ruby (RubyInstaller, with gem and bundler). Gems with C extensions need MSYS2, which is not included.", "Gemfile, a .gemspec or .ruby-version"),
25622
+ enabled: enabled(
25623
+ "Ruby (RubyInstaller, with gem and bundler). Gems with C extensions need MSYS2, which is not included.",
25624
+ "Gemfile, a .gemspec or .ruby-version"
25625
+ ),
25434
25626
  version: external_exports.string().min(1).describe(`Version prefix, e.g. "3" or "3.3". A project's .ruby-version wins.`),
25435
25627
  gems: Packages("Gems installed globally", '["rubocop"]')
25436
25628
  }),
25437
25629
  php: external_exports.strictObject({
25438
- enabled: enabled("PHP (with the Visual C++ runtime it needs, installed on every boot).", "composer.json, artisan or .php-version"),
25630
+ enabled: enabled(
25631
+ "PHP (with the Visual C++ runtime it needs, installed on every boot).",
25632
+ "composer.json, artisan or .php-version"
25633
+ ),
25439
25634
  version: external_exports.string().min(1).describe(`Version prefix, e.g. "8" or "8.3". A project's .php-version wins.`),
25440
25635
  composer: external_exports.boolean().describe("Composer.")
25441
25636
  }),
25442
25637
  deno: external_exports.strictObject({ enabled: enabled("Deno.", "deno.json, deno.jsonc or deno.lock") }),
25443
- pwsh: external_exports.strictObject({ enabled: Enabled.describe('PowerShell 7 (pwsh), portable (~110 MB once); `powershell` stays Windows PowerShell 5.1. true, false, or "auto" = when a .ps1 at the root or one folder down has #Requires -Version 7 / -PSEdition Core or a `pwsh ...` usage line, or, in a folder that is no project yet, when this PC has PowerShell 7.') }),
25638
+ pwsh: external_exports.strictObject({
25639
+ enabled: EnabledSchema.describe(
25640
+ 'PowerShell 7 (pwsh), portable (~110 MB once); `powershell` stays Windows PowerShell 5.1. true, false, or "auto" = when a .ps1 at the root or one folder down has #Requires -Version 7 / -PSEdition Core or a `pwsh ...` usage line, or, in a folder that is no project yet, when this PC has PowerShell 7.'
25641
+ )
25642
+ }),
25444
25643
  cli: external_exports.strictObject({
25445
- gh: Enabled.describe('GitHub CLI (gh). Only with provisioning.git.access "full": gh can push and merge through the GitHub API, past a read-only git. Your PC\'s gh login is never copied; `gh auth login` inside persists (GH_CONFIG_DIR). "auto" = when the project has a .github folder.'),
25446
- zstd: Enabled.describe('Zstandard (zstd). "auto" = off; set true to get it.'),
25447
- openssl: Enabled.describe('`openssl` on PATH, from the copy Git for Windows ships (its mingw64\\bin is not put on PATH, so it cannot shadow MinGW\'s gcc). "auto" = on.')
25644
+ gh: EnabledSchema.describe(
25645
+ 'GitHub CLI (gh). Only with provisioning.git.access "full": gh can push and merge through the GitHub API, past a read-only git. Your PC\'s gh login is never copied; `gh auth login` inside persists (GH_CONFIG_DIR). "auto" = when the project has a .github folder.'
25646
+ ),
25647
+ zstd: EnabledSchema.describe('Zstandard (zstd). "auto" = off; set true to get it.'),
25648
+ openssl: EnabledSchema.describe(
25649
+ '`openssl` on PATH, from the copy Git for Windows ships (its mingw64\\bin is not put on PATH, so it cannot shadow MinGW\'s gcc). "auto" = on.'
25650
+ )
25448
25651
  }).describe("Small portable command-line tools from their GitHub releases, installed once into tools\\cli."),
25449
- bun: toggle("Bun runtime (claude-mem needs it)."),
25450
- uv: toggle("uv, the Python package manager (claude-mem needs it)."),
25451
- vcRuntime: toggle("Microsoft Visual C++ runtime for tools that need it (a real installer, so it runs on every boot, ~15 s). PHP installs it regardless."),
25652
+ bun: external_exports.strictObject({
25653
+ enabled: enabled(
25654
+ "Bun (JavaScript runtime and package manager; claude-mem needs it).",
25655
+ "bun.lock, bun.lockb or bunfig.toml"
25656
+ )
25657
+ }),
25658
+ uv: external_exports.strictObject({
25659
+ enabled: enabled(
25660
+ "uv (fast Python package and tool manager; claude-mem needs it for its search index).",
25661
+ "uv.lock, a [tool.uv] pyproject.toml, toolchains.python.tools, or an agent installed with uv"
25662
+ )
25663
+ }),
25664
+ vcRuntime: toggle(
25665
+ "Microsoft Visual C++ runtime for tools that need it (a real installer, so it runs on every boot, ~15 s). PHP installs it regardless."
25666
+ ),
25452
25667
  mesa: external_exports.strictObject({
25453
- enabled: external_exports.boolean().describe("Mesa 3D (llvmpipe): OpenGL 4.5 in software for games and apps when there is no GPU (sandbox.vGpu off). Copy opengl32.dll and libgallium_wgl.dll from %MESA_DIR% next to the program's .exe."),
25454
- vulkan: external_exports.boolean().describe("Also software Vulkan 1.4 (Mesa lavapipe) with the Khronos loader, registered for every program; for wgpu set WGPU_BACKEND=vulkan.")
25668
+ enabled: external_exports.boolean().describe(
25669
+ "Mesa 3D (llvmpipe): OpenGL 4.5 in software for games and apps when there is no GPU (sandbox.vGpu off). Copy opengl32.dll and libgallium_wgl.dll from %MESA_DIR% next to the program's .exe."
25670
+ ),
25671
+ vulkan: external_exports.boolean().describe(
25672
+ "Also software Vulkan 1.4 (Mesa lavapipe) with the Khronos loader, registered for every program; for wgpu set WGPU_BACKEND=vulkan."
25673
+ )
25455
25674
  }),
25456
25675
  vscode: external_exports.strictObject({
25457
- enabled: external_exports.boolean().describe("Portable VS Code inside the sandbox (code on PATH, desktop shortcut); its settings and extensions persist."),
25458
- setup: external_exports.boolean().describe("Point VS Code at the sandbox's own tools (JDK, Python, Go, compilers, .NET, Git, PowerShell 7 and Git Bash terminals) and install the language extensions for the toolchains in use."),
25676
+ enabled: EnabledSchema.describe(
25677
+ 'Portable VS Code inside the sandbox (code on PATH, desktop shortcut); its settings and extensions persist. true, false, or "auto" = when VS Code is installed on this PC.'
25678
+ ),
25679
+ setup: external_exports.boolean().describe(
25680
+ "Point VS Code at the sandbox's own tools (JDK, Python, Go, compilers, .NET, Git, PowerShell 7 and Git Bash terminals) and install the language extensions for the toolchains in use."
25681
+ ),
25459
25682
  recommended: external_exports.boolean().describe("Also install the extensions a project recommends in its .vscode/extensions.json."),
25460
25683
  extensions: external_exports.array(external_exports.string().regex(/^[\w-]+\.[\w-]+$/, "publisher.name, e.g. eamodio.gitlens")).describe("More extensions to install in every sandbox, e.g. eamodio.gitlens, ms-azuretools.vscode-docker.")
25461
25684
  }),
25462
- environment: external_exports.record(external_exports.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/, "letters, digits and _ only"), external_exports.string()).describe('Extra environment variables for the agent and every terminal, e.g. registry mirrors: {"NPM_CONFIG_REGISTRY": "https://...", "PIP_INDEX_URL": "https://..."}.')
25685
+ environment: external_exports.record(external_exports.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/, "letters, digits and _ only"), external_exports.string()).describe(
25686
+ 'Extra environment variables for the agent and every terminal, e.g. registry mirrors: {"NPM_CONFIG_REGISTRY": "https://...", "PIP_INDEX_URL": "https://..."}.'
25687
+ )
25463
25688
  });
25464
25689
 
25465
- // src/shared/apps.ts
25690
+ // src/shared/apps/catalogue.ts
25466
25691
  var gh = (github, asset) => ({ github, asset });
25467
25692
  var APPS = [
25468
25693
  // ---- editors
25469
- { id: "vscode", name: "Visual Studio Code", category: "editors", about: "Code editor with debugging, set up for the sandbox's languages.", size: "150 MB", source: { resolve: "setting" }, exe: "Code.exe", setting: "toolchains.vscode.enabled" },
25470
- { id: "windows-terminal", name: "Windows Terminal", category: "utilities", about: "The sandbox window: tabs, panes, PowerShell 7 profile.", size: "40 MB", source: { resolve: "setting" }, exe: "WindowsTerminal.exe", setting: "provisioning.terminal.enabled" },
25471
- { id: "notepadpp", name: "Notepad++", category: "editors", about: "Fast text and code editor.", size: "8 MB", source: gh("notepad-plus-plus/notepad-plus-plus", "^npp\\.[\\d.]+\\.portable\\.x64\\.zip$"), exe: "notepad++.exe" },
25472
- { id: "sublime", name: "Sublime Text", category: "editors", about: "Fast code editor (paid licence, free to evaluate).", size: "28 MB", source: { resolve: "sublime" }, exe: "sublime_text.exe" },
25473
- { id: "neovim", name: "Neovim", category: "editors", about: "Terminal text editor (nvim).", size: "12 MB", source: gh("neovim/neovim", "^nvim-win64\\.zip$"), exe: "nvim.exe", cli: true },
25694
+ {
25695
+ id: "vscode",
25696
+ name: "Visual Studio Code",
25697
+ category: "editors",
25698
+ about: "Code editor with debugging, set up for the sandbox's languages.",
25699
+ size: "150 MB",
25700
+ source: { resolve: "setting" },
25701
+ exe: "Code.exe",
25702
+ setting: "toolchains.vscode.enabled"
25703
+ },
25704
+ {
25705
+ id: "windows-terminal",
25706
+ name: "Windows Terminal",
25707
+ category: "utilities",
25708
+ about: "The sandbox window: tabs, panes, PowerShell 7 profile.",
25709
+ size: "40 MB",
25710
+ source: { resolve: "setting" },
25711
+ exe: "WindowsTerminal.exe",
25712
+ setting: "provisioning.terminal.enabled"
25713
+ },
25714
+ {
25715
+ id: "notepadpp",
25716
+ name: "Notepad++",
25717
+ category: "editors",
25718
+ about: "Fast text and code editor.",
25719
+ size: "8 MB",
25720
+ source: gh("notepad-plus-plus/notepad-plus-plus", "^npp\\.[\\d.]+\\.portable\\.x64\\.zip$"),
25721
+ exe: "notepad++.exe"
25722
+ },
25723
+ {
25724
+ id: "sublime",
25725
+ name: "Sublime Text",
25726
+ category: "editors",
25727
+ about: "Fast code editor (paid licence, free to evaluate).",
25728
+ size: "28 MB",
25729
+ source: { resolve: "sublime" },
25730
+ exe: "sublime_text.exe"
25731
+ },
25732
+ {
25733
+ id: "neovim",
25734
+ name: "Neovim",
25735
+ category: "editors",
25736
+ about: "Terminal text editor (nvim).",
25737
+ size: "12 MB",
25738
+ source: gh("neovim/neovim", "^nvim-win64\\.zip$"),
25739
+ exe: "nvim.exe",
25740
+ cli: true
25741
+ },
25474
25742
  // ---- database clients
25475
- { id: "dbeaver", name: "DBeaver Community", category: "databases", about: "Universal database client: PostgreSQL, MySQL, SQLite, SQL Server and more.", size: "120 MB", source: gh("dbeaver/dbeaver", "^dbeaver-ce-[\\d.]+-windows-x86_64\\.zip$"), exe: "dbeaver.exe" },
25476
- { id: "pgadmin", name: "pgAdmin 4", category: "databases", about: "The PostgreSQL admin GUI (from the PostgreSQL binaries zip).", size: "330 MB", source: { resolve: "pgadmin" }, exe: "pgAdmin4.exe" },
25477
- { id: "heidisql", name: "HeidiSQL", category: "databases", about: "Light client for MySQL, MariaDB, PostgreSQL and SQL Server.", size: "28 MB", source: gh("HeidiSQL/HeidiSQL", "^HeidiSQL_[\\d.]+_64_Portable\\.zip$"), exe: "heidisql.exe" },
25478
- { id: "sqlitebrowser", name: "DB Browser for SQLite", category: "databases", about: "Open, browse and edit SQLite files.", size: "21 MB", source: gh("sqlitebrowser/sqlitebrowser", "^DB\\.Browser\\.for\\.SQLite-v?[\\d.]+-win64\\.zip$"), exe: "DB Browser for SQLite.exe" },
25479
- { id: "compass", name: "MongoDB Compass", category: "databases", about: "The MongoDB GUI.", size: "220 MB", source: gh("mongodb-js/compass", "^mongodb-compass-[\\d.]+-win32-x64\\.zip$"), exe: "MongoDBCompass.exe" },
25480
- { id: "redisinsight", name: "Redis Insight", category: "databases", about: "The Redis GUI.", size: "110 MB", source: gh("redis/RedisInsight", "^Redis-Insight-win-installer\\.exe$"), unpack: "nsis", exe: "Redis Insight.exe", needs: ["7zip"] },
25481
- { id: "dbgate", name: "DbGate", category: "databases", about: "Database manager for SQL and NoSQL databases.", size: "180 MB", source: gh("dbgate/dbgate", "^dbgate-[\\d.]+-win_x64\\.zip$"), exe: "DbGate.exe" },
25482
- { id: "beekeeper", name: "Beekeeper Studio", category: "databases", about: "SQL editor and database manager.", size: "245 MB", source: gh("beekeeper-studio/beekeeper-studio", "^Beekeeper-Studio-[\\d.]+-portable\\.exe$"), unpack: "nsis", exe: "Beekeeper Studio.exe", needs: ["7zip"] },
25483
- { id: "dynamodb-admin", name: "dynamodb-admin", category: "databases", about: "Web GUI for DynamoDB Local: run dynamodb-admin, then open http://localhost:8001.", size: "5 MB", source: { npm: "dynamodb-admin" }, exe: "dynamodb-admin.cmd", cli: true },
25743
+ {
25744
+ id: "dbeaver",
25745
+ name: "DBeaver Community",
25746
+ category: "databases",
25747
+ about: "Universal database client: PostgreSQL, MySQL, SQLite, SQL Server and more.",
25748
+ size: "120 MB",
25749
+ source: gh("dbeaver/dbeaver", "^dbeaver-ce-[\\d.]+-windows-x86_64\\.zip$"),
25750
+ exe: "dbeaver.exe"
25751
+ },
25752
+ {
25753
+ id: "pgadmin",
25754
+ name: "pgAdmin 4",
25755
+ category: "databases",
25756
+ about: "The PostgreSQL admin GUI (from the PostgreSQL binaries zip).",
25757
+ size: "330 MB",
25758
+ source: { resolve: "pgadmin" },
25759
+ exe: "pgAdmin4.exe"
25760
+ },
25761
+ {
25762
+ id: "heidisql",
25763
+ name: "HeidiSQL",
25764
+ category: "databases",
25765
+ about: "Light client for MySQL, MariaDB, PostgreSQL and SQL Server.",
25766
+ size: "28 MB",
25767
+ source: gh("HeidiSQL/HeidiSQL", "^HeidiSQL_[\\d.]+_64_Portable\\.zip$"),
25768
+ exe: "heidisql.exe"
25769
+ },
25770
+ {
25771
+ id: "sqlitebrowser",
25772
+ name: "DB Browser for SQLite",
25773
+ category: "databases",
25774
+ about: "Open, browse and edit SQLite files.",
25775
+ size: "21 MB",
25776
+ source: gh("sqlitebrowser/sqlitebrowser", "^DB\\.Browser\\.for\\.SQLite-v?[\\d.]+-win64\\.zip$"),
25777
+ exe: "DB Browser for SQLite.exe"
25778
+ },
25779
+ {
25780
+ id: "compass",
25781
+ name: "MongoDB Compass",
25782
+ category: "databases",
25783
+ about: "The MongoDB GUI.",
25784
+ size: "220 MB",
25785
+ source: gh("mongodb-js/compass", "^mongodb-compass-[\\d.]+-win32-x64\\.zip$"),
25786
+ exe: "MongoDBCompass.exe"
25787
+ },
25788
+ {
25789
+ id: "redisinsight",
25790
+ name: "Redis Insight",
25791
+ category: "databases",
25792
+ about: "The Redis GUI.",
25793
+ size: "110 MB",
25794
+ source: gh("redis/RedisInsight", "^Redis-Insight-win-installer\\.exe$"),
25795
+ unpack: "nsis",
25796
+ exe: "Redis Insight.exe",
25797
+ needs: ["7zip"]
25798
+ },
25799
+ {
25800
+ id: "dbgate",
25801
+ name: "DbGate",
25802
+ category: "databases",
25803
+ about: "Database manager for SQL and NoSQL databases.",
25804
+ size: "180 MB",
25805
+ source: gh("dbgate/dbgate", "^dbgate-[\\d.]+-win_x64\\.zip$"),
25806
+ exe: "DbGate.exe"
25807
+ },
25808
+ {
25809
+ id: "beekeeper",
25810
+ name: "Beekeeper Studio",
25811
+ category: "databases",
25812
+ about: "SQL editor and database manager.",
25813
+ size: "245 MB",
25814
+ source: gh("beekeeper-studio/beekeeper-studio", "^Beekeeper-Studio-[\\d.]+-portable\\.exe$"),
25815
+ unpack: "nsis",
25816
+ exe: "Beekeeper Studio.exe",
25817
+ needs: ["7zip"]
25818
+ },
25819
+ {
25820
+ id: "dynamodb-admin",
25821
+ name: "dynamodb-admin",
25822
+ category: "databases",
25823
+ about: "Web GUI for DynamoDB Local: run dynamodb-admin, then open http://localhost:8001.",
25824
+ size: "5 MB",
25825
+ source: { npm: "dynamodb-admin" },
25826
+ exe: "dynamodb-admin.cmd",
25827
+ cli: true
25828
+ },
25484
25829
  // ---- API clients
25485
- { id: "bruno", name: "Bruno", category: "api", about: "Offline, git-friendly API client (collections are files in your repo).", size: "175 MB", source: gh("usebruno/bruno", "^bruno_[\\d.]+_x64_win\\.zip$"), exe: "Bruno.exe" },
25486
- { id: "insomnia", name: "Insomnia", category: "api", about: "REST, GraphQL and gRPC client.", size: "590 MB", source: gh("Kong/insomnia", "^insomnia-[\\d.]+-full\\.nupkg$"), exe: "Insomnia.exe" },
25830
+ {
25831
+ id: "bruno",
25832
+ name: "Bruno",
25833
+ category: "api",
25834
+ about: "Offline, git-friendly API client (collections are files in your repo).",
25835
+ size: "175 MB",
25836
+ source: gh("usebruno/bruno", "^bruno_[\\d.]+_x64_win\\.zip$"),
25837
+ exe: "Bruno.exe"
25838
+ },
25839
+ {
25840
+ id: "insomnia",
25841
+ name: "Insomnia",
25842
+ category: "api",
25843
+ about: "REST, GraphQL and gRPC client.",
25844
+ size: "590 MB",
25845
+ source: gh("Kong/insomnia", "^insomnia-[\\d.]+-full\\.nupkg$"),
25846
+ exe: "Insomnia.exe"
25847
+ },
25487
25848
  // ---- git
25488
- { id: "sourcegit", name: "SourceGit", category: "git", about: "Fast open-source Git GUI.", size: "26 MB", source: gh("sourcegit-scm/sourcegit", "^sourcegit_[\\d.]+\\.win-x64\\.zip$"), exe: "SourceGit.exe" },
25489
- { id: "githubdesktop", name: "GitHub Desktop", category: "git", about: 'Simple Git GUI from GitHub. It has its own git, so it needs provisioning.git.access "full".', size: "300 MB", source: gh("desktop/desktop", "^GitHubDesktop-[\\d.]+-x64-full\\.nupkg$"), exe: "GitHubDesktop.exe", fullGitOnly: true },
25490
- { id: "lazygit", name: "lazygit", category: "git", about: "Git in the terminal.", size: "7 MB", source: gh("jesseduffield/lazygit", "^lazygit_[\\d.]+_windows_x86_64\\.zip$"), exe: "lazygit.exe", cli: true },
25849
+ {
25850
+ id: "sourcegit",
25851
+ name: "SourceGit",
25852
+ category: "git",
25853
+ about: "Fast open-source Git GUI.",
25854
+ size: "26 MB",
25855
+ source: gh("sourcegit-scm/sourcegit", "^sourcegit_[\\d.]+\\.win-x64\\.zip$"),
25856
+ exe: "SourceGit.exe"
25857
+ },
25858
+ {
25859
+ id: "githubdesktop",
25860
+ name: "GitHub Desktop",
25861
+ category: "git",
25862
+ about: 'Simple Git GUI from GitHub. It has its own git, so it needs provisioning.git.access "full".',
25863
+ size: "300 MB",
25864
+ source: gh("desktop/desktop", "^GitHubDesktop-[\\d.]+-x64-full\\.nupkg$"),
25865
+ exe: "GitHubDesktop.exe",
25866
+ fullGitOnly: true
25867
+ },
25868
+ {
25869
+ id: "lazygit",
25870
+ name: "lazygit",
25871
+ category: "git",
25872
+ about: "Git in the terminal.",
25873
+ size: "7 MB",
25874
+ source: gh("jesseduffield/lazygit", "^lazygit_[\\d.]+_windows_x86_64\\.zip$"),
25875
+ exe: "lazygit.exe",
25876
+ cli: true
25877
+ },
25491
25878
  // ---- utilities
25492
- { id: "7zip", name: "7-Zip", category: "utilities", about: "Archive manager (7z, zip, rar, tar ...). Also unpacks installers for other apps.", size: "2 MB", source: { resolve: "7zip" }, exe: "7zFM.exe" },
25493
- { id: "winmerge", name: "WinMerge", category: "utilities", about: "Compare and merge files and folders.", size: "23 MB", source: gh("WinMerge/winmerge", "^winmerge-[\\d.]+-x64-exe\\.zip$"), exe: "WinMergeU.exe" },
25494
- { id: "everything", name: "Everything", category: "utilities", about: "Finds files by name instantly.", size: "2 MB", source: { resolve: "everything" }, exe: "Everything.exe" },
25495
- { id: "sysinternals", name: "Sysinternals Suite", category: "utilities", about: "Process Explorer, Process Monitor, Autoruns, TCPView and more (on PATH).", size: "200 MB", source: { url: "https://download.sysinternals.com/files/SysinternalsSuite.zip" }, exe: "procexp64.exe" },
25496
- { id: "imhex", name: "ImHex", category: "utilities", about: "Hex editor for reverse engineering and binary formats.", size: "80 MB", source: gh("WerWolv/ImHex", "^imhex-[\\d.]+-Windows-Portable-NoGPU-x86_64\\.zip$"), exe: "imhex-gui.exe" },
25879
+ {
25880
+ id: "7zip",
25881
+ name: "7-Zip",
25882
+ category: "utilities",
25883
+ about: "Archive manager (7z, zip, rar, tar ...). Also unpacks installers for other apps.",
25884
+ size: "2 MB",
25885
+ source: { resolve: "7zip" },
25886
+ exe: "7zFM.exe"
25887
+ },
25888
+ {
25889
+ id: "winmerge",
25890
+ name: "WinMerge",
25891
+ category: "utilities",
25892
+ about: "Compare and merge files and folders.",
25893
+ size: "23 MB",
25894
+ source: gh("WinMerge/winmerge", "^winmerge-[\\d.]+-x64-exe\\.zip$"),
25895
+ exe: "WinMergeU.exe"
25896
+ },
25897
+ {
25898
+ id: "everything",
25899
+ name: "Everything",
25900
+ category: "utilities",
25901
+ about: "Finds files by name instantly.",
25902
+ size: "2 MB",
25903
+ source: { resolve: "everything" },
25904
+ exe: "Everything.exe"
25905
+ },
25906
+ {
25907
+ id: "sysinternals",
25908
+ name: "Sysinternals Suite",
25909
+ category: "utilities",
25910
+ about: "Process Explorer, Process Monitor, Autoruns, TCPView and more (on PATH).",
25911
+ size: "200 MB",
25912
+ source: { url: "https://download.sysinternals.com/files/SysinternalsSuite.zip" },
25913
+ exe: "procexp64.exe"
25914
+ },
25915
+ {
25916
+ id: "imhex",
25917
+ name: "ImHex",
25918
+ category: "utilities",
25919
+ about: "Hex editor for reverse engineering and binary formats.",
25920
+ size: "80 MB",
25921
+ source: gh("WerWolv/ImHex", "^imhex-[\\d.]+-Windows-Portable-NoGPU-x86_64\\.zip$"),
25922
+ exe: "imhex-gui.exe"
25923
+ },
25497
25924
  // ---- browsers
25498
- { id: "chrome", name: "Chrome for Testing", category: "browsers", about: "Chrome build made for automated tests (with chromedriver on PATH).", size: "170 MB", source: { resolve: "chrome" }, exe: "chrome.exe" },
25499
- { id: "firefox", name: "Firefox", category: "browsers", about: "Firefox for testing.", size: "75 MB", source: { resolve: "firefox" }, unpack: "nsis", exe: "firefox.exe", needs: ["7zip"] },
25925
+ {
25926
+ id: "chrome",
25927
+ name: "Chrome for Testing",
25928
+ category: "browsers",
25929
+ about: "Chrome build made for automated tests (with chromedriver on PATH).",
25930
+ size: "170 MB",
25931
+ source: { resolve: "chrome" },
25932
+ exe: "chrome.exe"
25933
+ },
25934
+ {
25935
+ id: "firefox",
25936
+ name: "Firefox",
25937
+ category: "browsers",
25938
+ about: "Firefox for testing.",
25939
+ size: "75 MB",
25940
+ source: { resolve: "firefox" },
25941
+ unpack: "nsis",
25942
+ exe: "firefox.exe",
25943
+ needs: ["7zip"]
25944
+ },
25500
25945
  // ---- game development
25501
- { id: "godot", name: "Godot", category: "gamedev", about: "Open-source 2D and 3D game engine.", size: "80 MB", source: gh("godotengine/godot", "^Godot_v[\\d.]+-stable_win64\\.exe\\.zip$"), exe: "/^Godot_v[\\d.]+-stable_win64\\.exe$/", needs: ["mesa"] },
25502
- { id: "blender", name: "Blender", category: "gamedev", about: "3D modelling, animation and rendering.", size: "400 MB", source: { resolve: "blender" }, exe: "blender.exe", needs: ["mesa"] },
25503
- { id: "love", name: "L\xD6VE", category: "gamedev", about: "Lua framework for 2D games.", size: "4 MB", source: gh("love2d/love", "^love-[\\d.]+-win64\\.zip$"), exe: "love.exe", needs: ["mesa"] },
25504
- { id: "defold", name: "Defold", category: "gamedev", about: "Free 2D/3D game engine and editor.", size: "330 MB", source: gh("defold/defold", "^Defold-x86_64-win32\\.zip$"), exe: "Defold.exe", needs: ["mesa"] },
25505
- { id: "pixelorama", name: "Pixelorama", category: "gamedev", about: "Pixel-art and sprite editor.", size: "40 MB", source: gh("Orama-Interactive/Pixelorama", "^Pixelorama-Windows-64bit\\.zip$"), exe: "Pixelorama.exe", needs: ["mesa"] },
25506
- { id: "tiled", name: "Tiled", category: "gamedev", about: "Tile map editor.", size: "22 MB", source: gh("mapeditor/tiled", "^Tiled-[\\d.]+_Windows-10\\+_x86_64\\.msi$"), unpack: "msi", exe: "tiled.exe" },
25946
+ {
25947
+ id: "godot",
25948
+ name: "Godot",
25949
+ category: "gamedev",
25950
+ about: "Open-source 2D and 3D game engine.",
25951
+ size: "80 MB",
25952
+ source: gh("godotengine/godot", "^Godot_v[\\d.]+-stable_win64\\.exe\\.zip$"),
25953
+ exe: "/^Godot_v[\\d.]+-stable_win64\\.exe$/",
25954
+ needs: ["mesa"]
25955
+ },
25956
+ {
25957
+ id: "blender",
25958
+ name: "Blender",
25959
+ category: "gamedev",
25960
+ about: "3D modelling, animation and rendering.",
25961
+ size: "400 MB",
25962
+ source: { resolve: "blender" },
25963
+ exe: "blender.exe",
25964
+ needs: ["mesa"]
25965
+ },
25966
+ {
25967
+ id: "love",
25968
+ name: "L\xD6VE",
25969
+ category: "gamedev",
25970
+ about: "Lua framework for 2D games.",
25971
+ size: "4 MB",
25972
+ source: gh("love2d/love", "^love-[\\d.]+-win64\\.zip$"),
25973
+ exe: "love.exe",
25974
+ needs: ["mesa"]
25975
+ },
25976
+ {
25977
+ id: "defold",
25978
+ name: "Defold",
25979
+ category: "gamedev",
25980
+ about: "Free 2D/3D game engine and editor.",
25981
+ size: "330 MB",
25982
+ source: gh("defold/defold", "^Defold-x86_64-win32\\.zip$"),
25983
+ exe: "Defold.exe",
25984
+ needs: ["mesa"]
25985
+ },
25986
+ {
25987
+ id: "pixelorama",
25988
+ name: "Pixelorama",
25989
+ category: "gamedev",
25990
+ about: "Pixel-art and sprite editor.",
25991
+ size: "40 MB",
25992
+ source: gh("Orama-Interactive/Pixelorama", "^Pixelorama-Windows-64bit\\.zip$"),
25993
+ exe: "Pixelorama.exe",
25994
+ needs: ["mesa"]
25995
+ },
25996
+ {
25997
+ id: "tiled",
25998
+ name: "Tiled",
25999
+ category: "gamedev",
26000
+ about: "Tile map editor.",
26001
+ size: "22 MB",
26002
+ source: gh("mapeditor/tiled", "^Tiled-[\\d.]+_Windows-10\\+_x86_64\\.msi$"),
26003
+ unpack: "msi",
26004
+ exe: "tiled.exe"
26005
+ },
25507
26006
  // ---- cloud
25508
- { id: "kubectl", name: "kubectl", category: "cloud", about: "Kubernetes command line.", size: "60 MB", source: { resolve: "kubectl" }, unpack: "file", exe: "kubectl.exe", cli: true },
25509
- { id: "helm", name: "Helm", category: "cloud", about: "Kubernetes package manager.", size: "20 MB", source: { resolve: "helm" }, exe: "helm.exe", cli: true },
25510
- { id: "k9s", name: "k9s", category: "cloud", about: "Kubernetes cluster UI in the terminal.", size: "40 MB", source: gh("derailed/k9s", "^k9s_Windows_amd64\\.zip$"), exe: "k9s.exe", cli: true },
25511
- { id: "terraform", name: "Terraform", category: "cloud", about: "Infrastructure as code.", size: "30 MB", source: { resolve: "terraform" }, exe: "terraform.exe", cli: true },
25512
- { id: "azure-cli", name: "Azure CLI", category: "cloud", about: "Manage Azure (az).", size: "90 MB", source: { url: "https://aka.ms/installazurecliwindowszipx64" }, exe: "az.cmd", cli: true },
25513
- { id: "gcloud", name: "Google Cloud CLI", category: "cloud", about: "Manage Google Cloud (gcloud, gsutil, bq).", size: "120 MB", source: { url: "https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-cli-windows-x86_64-bundled-python.zip" }, exe: "gcloud.cmd", cli: true },
25514
- { id: "aws-cli", name: "AWS CLI", category: "cloud", about: "Manage AWS (aws).", size: "50 MB", source: { url: "https://awscli.amazonaws.com/AWSCLIV2.msi" }, unpack: "msi", exe: "aws.exe", cli: true },
26007
+ {
26008
+ id: "kubectl",
26009
+ name: "kubectl",
26010
+ category: "cloud",
26011
+ about: "Kubernetes command line.",
26012
+ size: "60 MB",
26013
+ source: { resolve: "kubectl" },
26014
+ unpack: "file",
26015
+ exe: "kubectl.exe",
26016
+ cli: true
26017
+ },
26018
+ {
26019
+ id: "helm",
26020
+ name: "Helm",
26021
+ category: "cloud",
26022
+ about: "Kubernetes package manager.",
26023
+ size: "20 MB",
26024
+ source: { resolve: "helm" },
26025
+ exe: "helm.exe",
26026
+ cli: true
26027
+ },
26028
+ {
26029
+ id: "k9s",
26030
+ name: "k9s",
26031
+ category: "cloud",
26032
+ about: "Kubernetes cluster UI in the terminal.",
26033
+ size: "40 MB",
26034
+ source: gh("derailed/k9s", "^k9s_Windows_amd64\\.zip$"),
26035
+ exe: "k9s.exe",
26036
+ cli: true
26037
+ },
26038
+ {
26039
+ id: "terraform",
26040
+ name: "Terraform",
26041
+ category: "cloud",
26042
+ about: "Infrastructure as code.",
26043
+ size: "30 MB",
26044
+ source: { resolve: "terraform" },
26045
+ exe: "terraform.exe",
26046
+ cli: true
26047
+ },
26048
+ {
26049
+ id: "azure-cli",
26050
+ name: "Azure CLI",
26051
+ category: "cloud",
26052
+ about: "Manage Azure (az).",
26053
+ size: "90 MB",
26054
+ source: { url: "https://aka.ms/installazurecliwindowszipx64" },
26055
+ exe: "az.cmd",
26056
+ cli: true
26057
+ },
26058
+ {
26059
+ id: "gcloud",
26060
+ name: "Google Cloud CLI",
26061
+ category: "cloud",
26062
+ about: "Manage Google Cloud (gcloud, gsutil, bq).",
26063
+ size: "120 MB",
26064
+ source: {
26065
+ url: "https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-cli-windows-x86_64-bundled-python.zip"
26066
+ },
26067
+ exe: "gcloud.cmd",
26068
+ cli: true
26069
+ },
26070
+ {
26071
+ id: "aws-cli",
26072
+ name: "AWS CLI",
26073
+ category: "cloud",
26074
+ about: "Manage AWS (aws).",
26075
+ size: "50 MB",
26076
+ source: { url: "https://awscli.amazonaws.com/AWSCLIV2.msi" },
26077
+ unpack: "msi",
26078
+ exe: "aws.exe",
26079
+ cli: true
26080
+ },
25515
26081
  // ---- diagrams and docs
25516
- { id: "drawio", name: "draw.io", category: "diagrams", about: "Diagram editor (flowcharts, architecture, UML).", size: "170 MB", source: gh("jgraph/drawio-desktop", "^draw\\.io-[\\d.]+-windows\\.zip$"), exe: "draw.io.exe" },
25517
- { id: "pandoc", name: "Pandoc", category: "diagrams", about: "Convert documents between Markdown, HTML, Word, PDF ...", size: "35 MB", source: gh("jgm/pandoc", "^pandoc-[\\d.]+-windows-x86_64\\.zip$"), exe: "pandoc.exe", cli: true },
26082
+ {
26083
+ id: "drawio",
26084
+ name: "draw.io",
26085
+ category: "diagrams",
26086
+ about: "Diagram editor (flowcharts, architecture, UML).",
26087
+ size: "170 MB",
26088
+ source: gh("jgraph/drawio-desktop", "^draw\\.io-[\\d.]+-windows\\.zip$"),
26089
+ exe: "draw.io.exe"
26090
+ },
26091
+ {
26092
+ id: "pandoc",
26093
+ name: "Pandoc",
26094
+ category: "diagrams",
26095
+ about: "Convert documents between Markdown, HTML, Word, PDF ...",
26096
+ size: "35 MB",
26097
+ source: gh("jgm/pandoc", "^pandoc-[\\d.]+-windows-x86_64\\.zip$"),
26098
+ exe: "pandoc.exe",
26099
+ cli: true
26100
+ },
25518
26101
  // ---- network
25519
- { id: "mitmproxy", name: "mitmproxy", category: "network", about: "Intercepting HTTPS proxy (mitmweb opens a web UI).", size: "90 MB", source: { resolve: "mitmproxy" }, exe: "mitmweb.exe", cli: true },
25520
- { id: "xh", name: "xh", category: "network", about: "Friendly HTTP requests from the terminal (like HTTPie).", size: "5 MB", source: gh("ducaale/xh", "^xh-v[\\d.]+-x86_64-pc-windows-msvc\\.zip$"), exe: "xh.exe", cli: true },
25521
- { id: "grpcurl", name: "grpcurl", category: "network", about: "curl for gRPC servers.", size: "10 MB", source: gh("fullstorydev/grpcurl", "^grpcurl_[\\d.]+_windows_x86_64\\.zip$"), exe: "grpcurl.exe", cli: true },
25522
- { id: "k6", name: "k6", category: "network", about: "Load testing with JavaScript scripts.", size: "30 MB", source: gh("grafana/k6", "^k6-v[\\d.]+-windows-amd64\\.zip$"), exe: "k6.exe", cli: true },
26102
+ {
26103
+ id: "mitmproxy",
26104
+ name: "mitmproxy",
26105
+ category: "network",
26106
+ about: "Intercepting HTTPS proxy (mitmweb opens a web UI).",
26107
+ size: "90 MB",
26108
+ source: { resolve: "mitmproxy" },
26109
+ exe: "mitmweb.exe",
26110
+ cli: true
26111
+ },
26112
+ {
26113
+ id: "xh",
26114
+ name: "xh",
26115
+ category: "network",
26116
+ about: "Friendly HTTP requests from the terminal (like HTTPie).",
26117
+ size: "5 MB",
26118
+ source: gh("ducaale/xh", "^xh-v[\\d.]+-x86_64-pc-windows-msvc\\.zip$"),
26119
+ exe: "xh.exe",
26120
+ cli: true
26121
+ },
26122
+ {
26123
+ id: "grpcurl",
26124
+ name: "grpcurl",
26125
+ category: "network",
26126
+ about: "curl for gRPC servers.",
26127
+ size: "10 MB",
26128
+ source: gh("fullstorydev/grpcurl", "^grpcurl_[\\d.]+_windows_x86_64\\.zip$"),
26129
+ exe: "grpcurl.exe",
26130
+ cli: true
26131
+ },
26132
+ {
26133
+ id: "k6",
26134
+ name: "k6",
26135
+ category: "network",
26136
+ about: "Load testing with JavaScript scripts.",
26137
+ size: "30 MB",
26138
+ source: gh("grafana/k6", "^k6-v[\\d.]+-windows-amd64\\.zip$"),
26139
+ exe: "k6.exe",
26140
+ cli: true
26141
+ },
26142
+ // ---- reverse engineering
26143
+ {
26144
+ id: "rea",
26145
+ name: "REA (Reverse Engineer Anything)",
26146
+ category: "reversing",
26147
+ about: "Agent-driven reverse engineering (MCP server and CLI, by morluto). Run `rea setup` once to add it to Claude Code and Codex. Native binaries need Ghidra; needs Node 22.19+.",
26148
+ size: "8 MB",
26149
+ source: { npm: "rea-agents" },
26150
+ exe: "rea.cmd",
26151
+ cli: true
26152
+ },
26153
+ {
26154
+ id: "ghidra",
26155
+ name: "Ghidra",
26156
+ category: "reversing",
26157
+ about: "NSA's reverse-engineering suite: disassembler and decompiler. Needs Java 21 (toolchains.java).",
26158
+ size: "570 MB",
26159
+ source: gh("NationalSecurityAgency/ghidra", "^ghidra_[\\d.]+_PUBLIC_[\\d]+\\.zip$"),
26160
+ exe: "ghidraRun.bat"
26161
+ },
26162
+ {
26163
+ id: "x64dbg",
26164
+ name: "x64dbg",
26165
+ category: "reversing",
26166
+ about: "Debugger for 64- and 32-bit Windows programs.",
26167
+ size: "32 MB",
26168
+ source: gh("x64dbg/x64dbg", "^snapshot_[\\d_-]+\\.zip$"),
26169
+ exe: "/^x64dbg\\.exe$/"
26170
+ },
26171
+ {
26172
+ id: "ilspy",
26173
+ name: "ILSpy",
26174
+ category: "reversing",
26175
+ about: ".NET decompiler.",
26176
+ size: "55 MB",
26177
+ source: gh("icsharpcode/ILSpy", "^ILSpy_windows_selfcontained_[\\d.]+-x64\\.zip$"),
26178
+ exe: "ILSpy.exe"
26179
+ },
26180
+ {
26181
+ id: "dnspy",
26182
+ name: "dnSpyEx",
26183
+ category: "reversing",
26184
+ about: ".NET debugger and assembly editor.",
26185
+ size: "100 MB",
26186
+ source: gh("dnSpyEx/dnSpy", "^dnSpy-net-win64\\.zip$"),
26187
+ exe: "dnSpy.exe"
26188
+ },
26189
+ {
26190
+ id: "die",
26191
+ name: "Detect It Easy",
26192
+ category: "reversing",
26193
+ about: "Identifies file types, compilers and packers.",
26194
+ size: "25 MB",
26195
+ source: gh("horsicq/DIE-engine", "^die_win64_portable_[\\d.]+_x64\\.zip$"),
26196
+ exe: "die.exe"
26197
+ },
26198
+ {
26199
+ id: "pe-bear",
26200
+ name: "PE-bear",
26201
+ category: "reversing",
26202
+ about: "Views and edits Windows executables (PE files).",
26203
+ size: "12 MB",
26204
+ source: gh("hasherezade/pe-bear", "^PE-bear_[\\d.]+_qt6_x64_win_vs22\\.zip$"),
26205
+ exe: "PE-bear.exe"
26206
+ },
26207
+ {
26208
+ id: "cutter",
26209
+ name: "Cutter",
26210
+ category: "reversing",
26211
+ about: "Reverse-engineering GUI built on rizin.",
26212
+ size: "141 MB",
26213
+ source: gh("rizinorg/cutter", "^Cutter-v[\\d.]+-Windows-x86_64\\.zip$"),
26214
+ exe: "cutter.exe"
26215
+ },
26216
+ {
26217
+ id: "radare2",
26218
+ name: "radare2",
26219
+ category: "reversing",
26220
+ about: "Command-line reverse-engineering framework (r2).",
26221
+ size: "14 MB",
26222
+ source: gh("radareorg/radare2", "^radare2-[\\d.]+-w64\\.zip$"),
26223
+ exe: "radare2.exe",
26224
+ cli: true
26225
+ },
26226
+ {
26227
+ id: "jadx",
26228
+ name: "JADX",
26229
+ category: "reversing",
26230
+ about: "Android APK and DEX decompiler.",
26231
+ size: "99 MB",
26232
+ source: gh("skylot/jadx", "^jadx-gui-[\\d.]+-with-jre-win\\.zip$"),
26233
+ exe: "jadx-gui.exe"
26234
+ },
26235
+ {
26236
+ id: "system-informer",
26237
+ name: "System Informer",
26238
+ category: "reversing",
26239
+ about: "Process, service and network monitor (Process Hacker's successor).",
26240
+ size: "22 MB",
26241
+ source: gh("winsiderss/systeminformer", "^systeminformer-[\\d.]+-bin\\.zip$"),
26242
+ exe: "SystemInformer.exe"
26243
+ },
25523
26244
  // ---- command-line tools
25524
- { id: "jq", name: "jq", category: "cli", about: "Query and reshape JSON.", size: "1 MB", source: gh("jqlang/jq", "^jq-windows-amd64\\.exe$"), unpack: "file", exe: "jq.exe", cli: true },
25525
- { id: "yq", name: "yq", category: "cli", about: "Query and edit YAML, JSON, XML and TOML.", size: "10 MB", source: gh("mikefarah/yq", "^yq_windows_amd64\\.exe$"), unpack: "file", exe: "yq.exe", cli: true },
25526
- { id: "ripgrep", name: "ripgrep", category: "cli", about: "Very fast recursive search (rg).", size: "2 MB", source: gh("BurntSushi/ripgrep", "^ripgrep-[\\d.]+-x86_64-pc-windows-msvc\\.zip$"), exe: "rg.exe", cli: true },
25527
- { id: "fd", name: "fd", category: "cli", about: "Fast, friendly alternative to find.", size: "2 MB", source: gh("sharkdp/fd", "^fd-v[\\d.]+-x86_64-pc-windows-msvc\\.zip$"), exe: "fd.exe", cli: true },
25528
- { id: "bat", name: "bat", category: "cli", about: "cat with syntax highlighting and git changes.", size: "3 MB", source: gh("sharkdp/bat", "^bat-v[\\d.]+-x86_64-pc-windows-msvc\\.zip$"), exe: "bat.exe", cli: true },
25529
- { id: "fzf", name: "fzf", category: "cli", about: "Fuzzy finder for the terminal.", size: "2 MB", source: gh("junegunn/fzf", "^fzf-[\\d.]+-windows_amd64\\.zip$"), exe: "fzf.exe", cli: true },
25530
- { id: "delta", name: "delta", category: "cli", about: "Readable git diffs with syntax highlighting.", size: "3 MB", source: gh("dandavison/delta", "^delta-[\\d.]+-x86_64-pc-windows-msvc\\.zip$"), exe: "delta.exe", cli: true },
25531
- { id: "just", name: "just", category: "cli", about: "Command runner (a simpler make for project tasks).", size: "2 MB", source: gh("casey/just", "^just-[\\d.]+-x86_64-pc-windows-msvc\\.zip$"), exe: "just.exe", cli: true },
25532
- { id: "hyperfine", name: "hyperfine", category: "cli", about: "Benchmark commands.", size: "1 MB", source: gh("sharkdp/hyperfine", "^hyperfine-v[\\d.]+-x86_64-pc-windows-msvc\\.zip$"), exe: "hyperfine.exe", cli: true },
25533
- { id: "watchexec", name: "watchexec", category: "cli", about: "Run a command when files change.", size: "5 MB", source: gh("watchexec/watchexec", "^watchexec-[\\d.]+-x86_64-pc-windows-msvc\\.zip$"), exe: "watchexec.exe", cli: true },
25534
- { id: "protoc", name: "protoc", category: "cli", about: "Protocol Buffers compiler.", size: "3 MB", source: gh("protocolbuffers/protobuf", "^protoc-[\\d.]+-win64\\.zip$"), exe: "protoc.exe", cli: true },
25535
- { id: "ninja", name: "Ninja", category: "cli", about: "Small, fast build system (CMake's favourite generator).", size: "1 MB", source: gh("ninja-build/ninja", "^ninja-win\\.zip$"), exe: "ninja.exe", cli: true },
25536
- { id: "ffmpeg", name: "FFmpeg", category: "cli", about: "Convert and process audio and video.", size: "200 MB", source: gh("BtbN/FFmpeg-Builds", "^ffmpeg-master-latest-win64-gpl\\.zip$"), exe: "ffmpeg.exe", cli: true },
25537
- { id: "sqlite", name: "SQLite tools", category: "cli", about: "sqlite3 command-line shell.", size: "5 MB", source: { resolve: "sqlite" }, exe: "sqlite3.exe", cli: true },
25538
- { id: "shellcheck", name: "ShellCheck", category: "cli", about: "Finds bugs in shell scripts.", size: "10 MB", source: gh("koalaman/shellcheck", "^shellcheck-v[\\d.]+\\.zip$"), exe: "shellcheck.exe", cli: true },
25539
- { id: "gitleaks", name: "Gitleaks", category: "cli", about: "Finds secrets committed to git.", size: "8 MB", source: gh("gitleaks/gitleaks", "^gitleaks_[\\d.]+_windows_x64\\.zip$"), exe: "gitleaks.exe", cli: true }
26245
+ {
26246
+ id: "jq",
26247
+ name: "jq",
26248
+ category: "cli",
26249
+ about: "Query and reshape JSON.",
26250
+ size: "1 MB",
26251
+ source: gh("jqlang/jq", "^jq-windows-amd64\\.exe$"),
26252
+ unpack: "file",
26253
+ exe: "jq.exe",
26254
+ cli: true
26255
+ },
26256
+ {
26257
+ id: "yq",
26258
+ name: "yq",
26259
+ category: "cli",
26260
+ about: "Query and edit YAML, JSON, XML and TOML.",
26261
+ size: "10 MB",
26262
+ source: gh("mikefarah/yq", "^yq_windows_amd64\\.exe$"),
26263
+ unpack: "file",
26264
+ exe: "yq.exe",
26265
+ cli: true
26266
+ },
26267
+ {
26268
+ id: "ripgrep",
26269
+ name: "ripgrep",
26270
+ category: "cli",
26271
+ about: "Very fast recursive search (rg).",
26272
+ size: "2 MB",
26273
+ source: gh("BurntSushi/ripgrep", "^ripgrep-[\\d.]+-x86_64-pc-windows-msvc\\.zip$"),
26274
+ exe: "rg.exe",
26275
+ cli: true
26276
+ },
26277
+ {
26278
+ id: "fd",
26279
+ name: "fd",
26280
+ category: "cli",
26281
+ about: "Fast, friendly alternative to find.",
26282
+ size: "2 MB",
26283
+ source: gh("sharkdp/fd", "^fd-v[\\d.]+-x86_64-pc-windows-msvc\\.zip$"),
26284
+ exe: "fd.exe",
26285
+ cli: true
26286
+ },
26287
+ {
26288
+ id: "bat",
26289
+ name: "bat",
26290
+ category: "cli",
26291
+ about: "cat with syntax highlighting and git changes.",
26292
+ size: "3 MB",
26293
+ source: gh("sharkdp/bat", "^bat-v[\\d.]+-x86_64-pc-windows-msvc\\.zip$"),
26294
+ exe: "bat.exe",
26295
+ cli: true
26296
+ },
26297
+ {
26298
+ id: "fzf",
26299
+ name: "fzf",
26300
+ category: "cli",
26301
+ about: "Fuzzy finder for the terminal.",
26302
+ size: "2 MB",
26303
+ source: gh("junegunn/fzf", "^fzf-[\\d.]+-windows_amd64\\.zip$"),
26304
+ exe: "fzf.exe",
26305
+ cli: true
26306
+ },
26307
+ {
26308
+ id: "delta",
26309
+ name: "delta",
26310
+ category: "cli",
26311
+ about: "Readable git diffs with syntax highlighting.",
26312
+ size: "3 MB",
26313
+ source: gh("dandavison/delta", "^delta-[\\d.]+-x86_64-pc-windows-msvc\\.zip$"),
26314
+ exe: "delta.exe",
26315
+ cli: true
26316
+ },
26317
+ {
26318
+ id: "just",
26319
+ name: "just",
26320
+ category: "cli",
26321
+ about: "Command runner (a simpler make for project tasks).",
26322
+ size: "2 MB",
26323
+ source: gh("casey/just", "^just-[\\d.]+-x86_64-pc-windows-msvc\\.zip$"),
26324
+ exe: "just.exe",
26325
+ cli: true
26326
+ },
26327
+ {
26328
+ id: "hyperfine",
26329
+ name: "hyperfine",
26330
+ category: "cli",
26331
+ about: "Benchmark commands.",
26332
+ size: "1 MB",
26333
+ source: gh("sharkdp/hyperfine", "^hyperfine-v[\\d.]+-x86_64-pc-windows-msvc\\.zip$"),
26334
+ exe: "hyperfine.exe",
26335
+ cli: true
26336
+ },
26337
+ {
26338
+ id: "watchexec",
26339
+ name: "watchexec",
26340
+ category: "cli",
26341
+ about: "Run a command when files change.",
26342
+ size: "5 MB",
26343
+ source: gh("watchexec/watchexec", "^watchexec-[\\d.]+-x86_64-pc-windows-msvc\\.zip$"),
26344
+ exe: "watchexec.exe",
26345
+ cli: true
26346
+ },
26347
+ {
26348
+ id: "protoc",
26349
+ name: "protoc",
26350
+ category: "cli",
26351
+ about: "Protocol Buffers compiler.",
26352
+ size: "3 MB",
26353
+ source: gh("protocolbuffers/protobuf", "^protoc-[\\d.]+-win64\\.zip$"),
26354
+ exe: "protoc.exe",
26355
+ cli: true
26356
+ },
26357
+ {
26358
+ id: "ninja",
26359
+ name: "Ninja",
26360
+ category: "cli",
26361
+ about: "Small, fast build system (CMake's favourite generator).",
26362
+ size: "1 MB",
26363
+ source: gh("ninja-build/ninja", "^ninja-win\\.zip$"),
26364
+ exe: "ninja.exe",
26365
+ cli: true
26366
+ },
26367
+ {
26368
+ id: "ffmpeg",
26369
+ name: "FFmpeg",
26370
+ category: "cli",
26371
+ about: "Convert and process audio and video.",
26372
+ size: "200 MB",
26373
+ source: gh("BtbN/FFmpeg-Builds", "^ffmpeg-master-latest-win64-gpl\\.zip$"),
26374
+ exe: "ffmpeg.exe",
26375
+ cli: true
26376
+ },
26377
+ {
26378
+ id: "sqlite",
26379
+ name: "SQLite tools",
26380
+ category: "cli",
26381
+ about: "sqlite3 command-line shell.",
26382
+ size: "5 MB",
26383
+ source: { resolve: "sqlite" },
26384
+ exe: "sqlite3.exe",
26385
+ cli: true
26386
+ },
26387
+ {
26388
+ id: "shellcheck",
26389
+ name: "ShellCheck",
26390
+ category: "cli",
26391
+ about: "Finds bugs in shell scripts.",
26392
+ size: "10 MB",
26393
+ source: gh("koalaman/shellcheck", "^shellcheck-v[\\d.]+\\.zip$"),
26394
+ exe: "shellcheck.exe",
26395
+ cli: true
26396
+ },
26397
+ {
26398
+ id: "gitleaks",
26399
+ name: "Gitleaks",
26400
+ category: "cli",
26401
+ about: "Finds secrets committed to git.",
26402
+ size: "8 MB",
26403
+ source: gh("gitleaks/gitleaks", "^gitleaks_[\\d.]+_windows_x64\\.zip$"),
26404
+ exe: "gitleaks.exe",
26405
+ cli: true
26406
+ }
25540
26407
  ];
25541
26408
 
25542
26409
  // src/core/schema/apps.ts
25543
26410
  var CATALOGUE_IDS = APPS.filter((a) => !a.setting).map((a) => a.id);
25544
- var AppId = external_exports.enum(CATALOGUE_IDS);
25545
- var CustomAppId = external_exports.string().regex(/^[a-z0-9][a-z0-9-]{0,40}$/, "lower-case letters, digits and - only");
26411
+ var AppIdSchema = external_exports.enum(CATALOGUE_IDS);
26412
+ var CustomAppIdSchema = external_exports.string().regex(/^[a-z0-9][a-z0-9-]{0,40}$/, "lower-case letters, digits and - only");
25546
26413
  var compiles = (pattern) => {
25547
26414
  try {
25548
26415
  new RegExp(pattern);
@@ -25551,103 +26418,154 @@ var compiles = (pattern) => {
25551
26418
  return false;
25552
26419
  }
25553
26420
  };
25554
- var CustomApp = external_exports.strictObject({
26421
+ var CustomAppSchema = external_exports.strictObject({
25555
26422
  name: external_exports.string().min(1).max(80).describe('The name on the desktop shortcut, e.g. "My Tool".'),
25556
26423
  github: external_exports.string().regex(/^[\w.-]+\/[\w.-]+$/, "owner/repo, e.g. sharkdp/bat").optional().describe("GitHub repository (owner/repo): the file comes from its latest release."),
25557
26424
  asset: external_exports.string().max(200).refine(compiles, "not a valid pattern").optional().describe("With github: a pattern (regular expression) matching the release file, e.g. windows.*x64\\.zip$"),
25558
26425
  url: external_exports.string().url().startsWith("https://", "https:// only").optional().describe("Or a direct https:// download link (zip, 7z, exe or msi)."),
25559
26426
  sha256: external_exports.string().regex(/^[0-9a-fA-F]{64}$/, "64 hex characters").optional().describe("SHA-256 of the download (GitHub releases usually publish one; then this is not needed)."),
25560
- unpack: external_exports.enum(["archive", "file", "nsis", "msi"]).optional().describe("archive (zip, 7z, tar: the default), file (a single .exe), nsis (an installer 7-Zip can open) or msi."),
26427
+ unpack: external_exports.enum(["archive", "file", "nsis", "msi"]).optional().describe(
26428
+ "archive (zip, 7z, tar: the default), file (a single .exe), nsis (an installer 7-Zip can open) or msi."
26429
+ ),
25561
26430
  exe: external_exports.string().min(1).max(200).describe("The program to start (found anywhere in the download), e.g. mytool.exe."),
25562
26431
  cli: external_exports.boolean().optional().describe("A command-line tool: its folder goes on PATH instead of getting a desktop shortcut.")
25563
- }).refine((a) => a.github && a.asset ? !a.url : Boolean(a.url) && !a.github && !a.asset, { message: "give github + asset, or url (not both)" });
25564
- var Apps = external_exports.strictObject({
25565
- install: external_exports.array(AppId).describe("Apps from the catalogue to install in every sandbox (the Apps screen in the menu lists them by category). Each is downloaded once and kept."),
25566
- custom: external_exports.record(CustomAppId, CustomApp).describe("Programs of your own: a GitHub release or a download link, and the program to start. Installed like the catalogue apps.")
26432
+ }).refine((a) => a.github && a.asset ? !a.url : Boolean(a.url) && !a.github && !a.asset, {
26433
+ message: "give github + asset, or url (not both)"
26434
+ });
26435
+ var AppsSchema = external_exports.strictObject({
26436
+ install: external_exports.array(AppIdSchema).describe(
26437
+ "Apps from the catalogue to install in every sandbox (the Apps screen in the menu lists them by category). Each is downloaded once and kept."
26438
+ ),
26439
+ custom: external_exports.record(CustomAppIdSchema, CustomAppSchema).describe(
26440
+ "Programs of your own: a GitHub release or a download link, and the program to start. Installed like the catalogue apps."
26441
+ )
25567
26442
  });
25568
26443
 
25569
26444
  // src/core/schema/projects.ts
25570
- var Projects = external_exports.strictObject({
25571
- all: external_exports.boolean().describe("Map every project you have started before (and every folder in your roots) at every start, except those in exclude, so all of them open in the running sandbox without a restart. Every agent in the sandbox can then see all of them. Each one is still only set up when you first use it."),
26445
+ var ProjectsSchema = external_exports.strictObject({
26446
+ all: external_exports.boolean().describe(
26447
+ "Map every project you have started before (and every folder in your roots) at every start, except those in exclude, so all of them open in the running sandbox without a restart. Every agent in the sandbox can then see all of them. Each one is still only set up when you first use it."
26448
+ ),
25572
26449
  exclude: external_exports.array(external_exports.string().min(1)).describe('Projects left out when "all" is on (folders on this PC).'),
25573
- roots: external_exports.array(external_exports.string().min(1)).describe('Folders whose subfolders are your projects (e.g. "F:\\\\Code"), mapped read/write at every start. Any project inside one, including ones you create later, opens in the running sandbox at once, without a restart. Every agent in the sandbox can see all of them.'),
26450
+ roots: external_exports.array(external_exports.string().min(1)).describe(
26451
+ 'Folders whose subfolders are your projects (e.g. "F:\\\\Code"), mapped read/write at every start. Any project inside one, including ones you create later, opens in the running sandbox at once, without a restart. Every agent in the sandbox can see all of them.'
26452
+ ),
25574
26453
  askToAddRoot: external_exports.boolean().describe("When you start a project whose parent folder is not a root yet, ask once whether to add it."),
25575
26454
  declinedRoots: external_exports.array(external_exports.string().min(1)).describe("Parent folders you said no to (not asked again)."),
25576
- allowOutsideMappings: external_exports.union([external_exports.literal("ask"), external_exports.boolean()]).describe(`A project's .sandbox-config.json may map folders from outside the project (e.g. a game folder on another drive). "ask" = an interactive launch asks once per project and set of folders, and remembers your answer; true = always allowed (still listed when you approve the file); false = never (the launch stops and says which folders). Only your own settings decide this, never a project file.`),
25577
- wsbShare: external_exports.boolean().describe("On Windows 11 24H2+ with the Windows Sandbox command line (wsb), add other folders to the running sandbox with `wsb share` (untested). Otherwise starting a project outside every root offers a restart.")
26455
+ allowOutsideMappings: external_exports.union([external_exports.literal("ask"), external_exports.boolean()]).describe(
26456
+ `A project's .sandbox-config.json may map folders from outside the project (e.g. a game folder on another drive). "ask" = an interactive launch asks once per project and set of folders, and remembers your answer; true = always allowed (still listed when you approve the file); false = never (the launch stops and says which folders). Only your own settings decide this, never a project file.`
26457
+ ),
26458
+ wsbShare: external_exports.boolean().describe(
26459
+ "On Windows 11 24H2+ with the Windows Sandbox command line (wsb), add other folders to the running sandbox with `wsb share` (untested). Otherwise starting a project outside every root offers a restart."
26460
+ )
26461
+ });
26462
+
26463
+ // src/core/schema/resume.ts
26464
+ var RESUME_SESSIONS = ["ask", "always", "afterCrash", "never"];
26465
+ var ResumeSchema = external_exports.strictObject({
26466
+ sessions: external_exports.enum(RESUME_SESSIONS).describe(
26467
+ 'When a sandbox starts after one that had agent sessions: "ask" lists them and asks whether to reopen them (without a terminal it prints the command sandbox resume), "always" reopens them, "afterCrash" reopens them only when the last sandbox ended unexpectedly, "never" leaves it to sandbox resume. Terminal tabs you opened yourself in the sandbox are never reopened.'
26468
+ ),
26469
+ restartAfterCrash: external_exports.boolean().describe(
26470
+ "When the sandbox ends because Windows Sandbox crashed or ran out of memory, start it again by itself and reopen its sessions (at most 3 times in 6 hours)."
26471
+ )
25578
26472
  });
25579
26473
 
25580
26474
  // src/core/schema/config.ts
25581
- var Config = external_exports.strictObject({
25582
- $schema: SchemaRef.optional(),
25583
- defaultHarness: Name.describe("Agent started by `sandbox launch` (sandbox claude always runs claude)."),
25584
- guestWorkspace: GuestWorkspace,
26475
+ var ConfigSchema = external_exports.strictObject({
26476
+ $schema: SchemaRefSchema.optional(),
26477
+ defaultHarness: NameSchema.describe("Agent started by `sandbox launch` (sandbox claude always runs claude)."),
26478
+ guestWorkspace: GuestWorkspaceSchema,
25585
26479
  readOnly: external_exports.boolean().describe("Map the workspace read-only."),
25586
- workspaceFilter: WorkspaceFilter,
25587
- audit: Audit,
25588
- mappings: external_exports.array(Mapping).describe("Extra folders from this PC."),
25589
- sandbox: Sandbox,
26480
+ workspaceFilter: WorkspaceFilterSchema,
26481
+ audit: AuditSchema,
26482
+ mappings: external_exports.array(MappingSchema).describe("Extra folders from this PC."),
26483
+ sandbox: SandboxSchema,
26484
+ sharing: SharingSchema,
25590
26485
  storage: external_exports.strictObject({
25591
26486
  root: external_exports.string().min(1).describe("Where everything is kept on this PC (tools, databases, logins, launches)."),
25592
26487
  persistAgentState: external_exports.boolean().describe("Keep agent logins and history between sandboxes."),
25593
- dataName: Name.describe("Name of the persistent data set (C:\\AgentData) shared by all workspaces."),
25594
- markSandboxFiles: external_exports.boolean().describe(`Programs and scripts (.exe, .ps1, .bat, .cmd, .msi, .lnk ...) that appear or change in your project while a sandbox runs get Windows' "downloaded from the internet" mark, so SmartScreen and PowerShell ask before they run on this PC.`),
25595
- warnDataGb: external_exports.number().min(0).describe("Say at launch when the persisted data (tools, databases, logins) is bigger than this many GB; 0 = never. sandbox data shows what takes the space.")
26488
+ dataName: NameSchema.describe("Name of the persistent data set (C:\\AgentData) shared by all workspaces."),
26489
+ markSandboxFiles: external_exports.boolean().describe(
26490
+ `Programs and scripts (.exe, .ps1, .bat, .cmd, .msi, .lnk ...) that appear or change in your project while a sandbox runs get Windows' "downloaded from the internet" mark, so SmartScreen and PowerShell ask before they run on this PC.`
26491
+ ),
26492
+ warnDataGb: external_exports.number().min(0).describe(
26493
+ "Say at launch when the persisted data (tools, databases, logins) is bigger than this many GB; 0 = never. sandbox data shows what takes the space."
26494
+ )
25596
26495
  }),
25597
- network: Network,
25598
- provisioning: Provisioning,
25599
- downloads: Downloads,
25600
- toolchains: Toolchains,
25601
- databases: Databases.describe("Databases running inside the sandbox. Data persists in C:\\AgentData\\databases; each one starts at boot."),
25602
- attach: Attach,
25603
- agentCommands: AgentCommands,
25604
- secrets: Secrets,
26496
+ network: NetworkSchema,
26497
+ provisioning: ProvisioningSchema,
26498
+ downloads: DownloadsSchema,
26499
+ toolchains: ToolchainsSchema,
26500
+ databases: DatabasesSchema.describe(
26501
+ "Databases running inside the sandbox. Data persists in C:\\AgentData\\databases; each one starts at boot."
26502
+ ),
26503
+ attach: AttachSchema,
26504
+ agentCommands: AgentCommandsSchema,
26505
+ secrets: SecretsSchema,
25605
26506
  personalization: toggle("Copy your desktop look (theme, accent, taskbar, wallpaper, ...) into the sandbox."),
25606
- apps: Apps,
25607
- claudeProfile: ClaudeProfile,
25608
- harnesses: external_exports.record(Name, Harness).describe("Agents that can run in the sandbox."),
26507
+ apps: AppsSchema,
26508
+ claudeProfile: ClaudeProfileSchema,
26509
+ harnesses: external_exports.record(NameSchema, HarnessSchema).describe("Agents that can run in the sandbox."),
25609
26510
  hooks: external_exports.strictObject({ failFast: external_exports.boolean().describe("Stop when a hook script fails.") }),
25610
- projects: Projects.describe("Several projects in one sandbox: folders of projects mapped at every start, and adding folders while it runs.")
25611
- }).refine((c) => c.harnesses[c.defaultHarness] !== void 0, { message: "defaultHarness must be one of the configured harnesses", path: ["defaultHarness"] });
25612
- var LocalOverrides = external_exports.strictObject({
25613
- $schema: SchemaRef,
25614
- harness: Name.describe("Agent for this project."),
25615
- guestWorkspace: GuestWorkspace,
26511
+ projects: ProjectsSchema.describe(
26512
+ "Several projects in one sandbox: folders of projects mapped at every start, and adding folders while it runs."
26513
+ ),
26514
+ resume: ResumeSchema.describe("Reopening the sessions of the last sandbox when a new one starts.")
26515
+ }).refine((c) => c.harnesses[c.defaultHarness] !== void 0, {
26516
+ message: "defaultHarness must be one of the configured harnesses",
26517
+ path: ["defaultHarness"]
26518
+ });
26519
+ var LocalOverridesSchema = external_exports.strictObject({
26520
+ $schema: SchemaRefSchema,
26521
+ harness: NameSchema.describe("Agent for this project."),
26522
+ guestWorkspace: GuestWorkspaceSchema,
25616
26523
  readOnly: external_exports.boolean().describe("Map this project read-only."),
25617
26524
  // A project may turn the filter on and keep more out, never let ignored files in.
25618
- workspaceFilter: WorkspaceFilter.pick({ enabled: true, exclude: true }).partial(),
25619
- mappings: external_exports.array(Mapping).describe("Extra folders (relative paths are relative to this file), e.g. a read-only data folder at another place in the sandbox. Folders outside the project are used only as your projects.allowOutsideMappings setting allows (by default you are asked once)."),
25620
- scripts: Strings.describe("Scripts (.ps1 / .mjs / .cmd, relative to this file) run inside the sandbox before the agent."),
26525
+ workspaceFilter: WorkspaceFilterSchema.pick({ enabled: true, exclude: true }).partial(),
26526
+ mappings: external_exports.array(MappingSchema).describe(
26527
+ "Extra folders (relative paths are relative to this file), e.g. a read-only data folder at another place in the sandbox. Folders outside the project are used only as your projects.allowOutsideMappings setting allows (by default you are asked once)."
26528
+ ),
26529
+ scripts: StringsSchema.describe(
26530
+ "Scripts (.ps1 / .mjs / .cmd, relative to this file) run inside the sandbox before the agent."
26531
+ ),
25621
26532
  // This PC's resources are yours to share: CPU and paging file (this PC's disk) are not a project's to set.
25622
- sandbox: Sandbox.omit({ cpuLimit: true, pageFileMb: true }).partial(),
26533
+ sandbox: SandboxSchema.omit({ cpuLimit: true, pageFileMb: true }).partial(),
25623
26534
  // A project may block more (the LAN, hosts); it never opens hosts, ports, DNS or a proxy.
25624
- network: Network.pick({ blockPrivateRanges: true, blockHosts: true }).partial(),
25625
- provisioning: Provisioning.pick({ copyFromHost: true, fallbackToInstall: true, refresh: true }).extend({ git: Git.partial(), terminal: toggle("Windows Terminal as the sandbox window.").partial() }).partial(),
25626
- downloads: Downloads.partial(),
26535
+ network: NetworkSchema.pick({ blockPrivateRanges: true, blockHosts: true }).partial(),
26536
+ provisioning: ProvisioningSchema.pick({ copyFromHost: true, fallbackToInstall: true, refresh: true }).extend({ git: GitSchema.partial(), terminal: toggle("Windows Terminal as the sandbox window.").partial() }).partial(),
26537
+ downloads: DownloadsSchema.partial(),
25627
26538
  // Every toolchain setting, each one optional (a project usually only switches languages on or pins a version).
25628
26539
  toolchains: external_exports.strictObject({
25629
- ...import_lodash.default.mapValues(import_lodash.default.omit(Toolchains.shape, "environment"), (shape) => shape.partial()),
25630
- environment: Toolchains.shape.environment
26540
+ ...import_lodash.default.mapValues(import_lodash.default.omit(ToolchainsSchema.shape, "environment"), (shape) => shape.partial()),
26541
+ environment: ToolchainsSchema.shape.environment
25631
26542
  }).partial(),
25632
- databases: external_exports.strictObject(import_lodash.default.mapValues(Databases.shape, (shape) => shape.partial())).partial(),
25633
- attach: Attach.partial(),
26543
+ databases: external_exports.strictObject(import_lodash.default.mapValues(DatabasesSchema.shape, (shape) => shape.partial())).partial(),
26544
+ attach: AttachSchema.partial(),
25634
26545
  personalization: toggle("Copy your desktop look into the sandbox.").partial(),
25635
- // Catalogue apps only (a vetted list): your own programs (apps.custom) download anything, so a repo cannot add them.
25636
- apps: Apps.pick({ install: true }).partial(),
25637
- claudeProfile: ClaudeProfile.pick({ enabled: true, overwrite: true, copyCredentials: true, syncHistory: true, syncClaudeMem: true }).partial(),
26546
+ // Catalogue apps only (a vetted list): your own programs (apps.custom) download anything, so a repo cannot add
26547
+ // them.
26548
+ apps: AppsSchema.pick({ install: true }).partial(),
26549
+ claudeProfile: ClaudeProfileSchema.pick({
26550
+ enabled: true,
26551
+ overwrite: true,
26552
+ copyCredentials: true,
26553
+ syncHistory: true,
26554
+ syncClaudeMem: true
26555
+ }).partial(),
25638
26556
  hooks: external_exports.strictObject({ failFast: external_exports.boolean() }).partial()
25639
26557
  }).partial();
25640
26558
 
25641
- // src/shared/schema.ts
25642
- var Id = external_exports.string().regex(/^[A-Za-z0-9_-]{1,64}$/, "invalid id");
26559
+ // src/shared/channel/schema.ts
26560
+ var IdSchema = external_exports.string().regex(/^[A-Za-z0-9_-]{1,64}$/, "invalid id");
25643
26561
  var Text = (max = 4096) => external_exports.string().max(max);
25644
- var Time = Text(64);
25645
- var AttachEndpoint = external_exports.strictObject({
26562
+ var TimeSchema = Text(64);
26563
+ var AttachEndpointSchema = external_exports.strictObject({
25646
26564
  addresses: external_exports.array(Text(64)).max(16),
25647
26565
  port: external_exports.number().int().min(1024).max(65535),
25648
26566
  token: Text(256)
25649
26567
  });
25650
- var BootProgress = external_exports.strictObject({
26568
+ var BootProgressSchema = external_exports.strictObject({
25651
26569
  step: external_exports.number().int().min(1).max(32),
25652
26570
  steps: external_exports.number().int().min(1).max(32),
25653
26571
  title: Text(120),
@@ -25656,60 +26574,82 @@ var BootProgress = external_exports.strictObject({
25656
26574
  done: external_exports.number().int().min(0).max(1e3),
25657
26575
  total: external_exports.number().int().min(0).max(1e3)
25658
26576
  });
25659
- var SandboxStatus = external_exports.object({
26577
+ var SandboxStatusSchema = external_exports.object({
25660
26578
  launchId: Text(64),
25661
26579
  phase: external_exports.enum(["booting", "provisioning", "ready", "failed"]),
25662
26580
  message: Text(),
25663
- updatedAt: Time,
26581
+ updatedAt: TimeSchema,
25664
26582
  workspaceHost: Text(),
25665
26583
  guestWorkspace: Text(),
25666
26584
  headless: external_exports.boolean(),
25667
26585
  /** The sandbox's IPv4 addresses (for network.forwardPorts; the host only uses ones on its Hyper-V network). */
25668
26586
  addresses: external_exports.array(external_exports.string().max(45)).max(8).optional(),
25669
26587
  /** A malformed progress is dropped, never the status (the phase still counts). */
25670
- progress: BootProgress.optional().catch(void 0)
26588
+ progress: BootProgressSchema.optional().catch(void 0)
25671
26589
  });
25672
- var Version = external_exports.strictObject({ spec: Text(128), source: Text(256) });
25673
- var DatabasePlan = external_exports.strictObject({
26590
+ var VersionSchema = external_exports.strictObject({ spec: Text(128), source: Text(256) });
26591
+ var DatabasePlanSchema = external_exports.strictObject({
25674
26592
  database: external_exports.enum(["postgres", "mysql", "sqlserver", "mongodb", "redis", "dynamodb"]),
25675
26593
  reasons: external_exports.array(Text(1024)).max(32),
25676
26594
  version: Text(64),
25677
26595
  port: external_exports.number().int().min(1024).max(65535),
25678
26596
  adminPort: external_exports.number().int().min(1024).max(65535).optional()
25679
26597
  });
25680
- var ProjectSpec = external_exports.strictObject({
25681
- name: Id,
26598
+ var ProjectSpecSchema = external_exports.strictObject({
26599
+ name: IdSchema,
25682
26600
  /** Inside the sandbox: C:\Projects\<name>. */
25683
26601
  workspace: Text(1024),
25684
26602
  workspaceHost: Text(1024),
25685
- toolchains: Toolchains,
25686
- versions: external_exports.strictObject({ node: Version, nodeExtra: external_exports.array(Text(128)).max(16), python: Version }),
25687
- databases: external_exports.array(DatabasePlan).max(8),
26603
+ toolchains: ToolchainsSchema,
26604
+ versions: external_exports.strictObject({ node: VersionSchema, nodeExtra: external_exports.array(Text(128)).max(16), python: VersionSchema }),
26605
+ databases: external_exports.array(DatabasePlanSchema).max(8),
25688
26606
  /** Agents this project may start that the sandbox did not boot with (its .sandbox-config.json "harness"). */
25689
- harnesses: external_exports.record(Text(64), Harness).refine((h) => Object.keys(h).length <= 8, "at most 8 agents"),
26607
+ harnesses: external_exports.record(Text(64), HarnessSchema).refine((h) => Object.keys(h).length <= 8, "at most 8 agents"),
25690
26608
  /** Its hooks were staged in C:\AgentLaunch\projects\<name>\hooks. */
25691
26609
  hooks: external_exports.boolean()
25692
26610
  });
25693
- var GuestRequest = external_exports.discriminatedUnion("kind", [
25694
- external_exports.strictObject({ kind: external_exports.literal("session"), id: Id, harness: Text(64), args: external_exports.array(Text()).max(256), cwd: Text(), project: ProjectSpec.optional(), harnessSpec: Harness.optional(), createdAt: Time }),
26611
+ var GuestRequestSchema = external_exports.discriminatedUnion("kind", [
26612
+ external_exports.strictObject({
26613
+ kind: external_exports.literal("session"),
26614
+ id: IdSchema,
26615
+ harness: Text(64),
26616
+ args: external_exports.array(Text()).max(256),
26617
+ cwd: Text(),
26618
+ project: ProjectSpecSchema.optional(),
26619
+ harnessSpec: HarnessSchema.optional(),
26620
+ createdAt: TimeSchema
26621
+ }),
25695
26622
  /** Provision a registered project without starting an agent (sandbox start / exec / db from its folder). */
25696
- external_exports.strictObject({ kind: external_exports.literal("project"), id: Id, project: ProjectSpec, createdAt: Time }),
25697
- external_exports.strictObject({ kind: external_exports.literal("exec"), id: Id, command: external_exports.array(Text()).min(1).max(256), cwd: Text(), timeoutSeconds: external_exports.number().positive().max(86400), createdAt: Time }),
26623
+ external_exports.strictObject({ kind: external_exports.literal("project"), id: IdSchema, project: ProjectSpecSchema, createdAt: TimeSchema }),
26624
+ external_exports.strictObject({
26625
+ kind: external_exports.literal("exec"),
26626
+ id: IdSchema,
26627
+ command: external_exports.array(Text()).min(1).max(256),
26628
+ cwd: Text(),
26629
+ timeoutSeconds: external_exports.number().positive().max(86400),
26630
+ createdAt: TimeSchema
26631
+ }),
25698
26632
  /** cwd: only the sessions in this folder or below (one project's); omitted = every session. */
25699
- external_exports.strictObject({ kind: external_exports.literal("restart"), id: Id, harness: Text(64).nullable(), cwd: Text().optional(), createdAt: Time }),
25700
- external_exports.strictObject({ kind: external_exports.literal("ping"), id: Id, createdAt: Time })
26633
+ external_exports.strictObject({
26634
+ kind: external_exports.literal("restart"),
26635
+ id: IdSchema,
26636
+ harness: Text(64).nullable(),
26637
+ cwd: Text().optional(),
26638
+ createdAt: TimeSchema
26639
+ }),
26640
+ external_exports.strictObject({ kind: external_exports.literal("ping"), id: IdSchema, createdAt: TimeSchema })
25701
26641
  ]);
25702
- var GuestResponse = external_exports.object({
25703
- id: Id,
26642
+ var GuestResponseSchema = external_exports.object({
26643
+ id: IdSchema,
25704
26644
  ok: external_exports.boolean(),
25705
26645
  message: Text(65536),
25706
26646
  exitCode: external_exports.number().int().optional(),
25707
26647
  stdout: Text(4 * 1024 * 1024).optional(),
25708
26648
  stderr: Text(4 * 1024 * 1024).optional(),
25709
- finishedAt: Time
26649
+ finishedAt: TimeSchema
25710
26650
  });
25711
- var SessionStatus = external_exports.object({
25712
- id: Id,
26651
+ var SessionStatusSchema = external_exports.object({
26652
+ id: IdSchema,
25713
26653
  launchId: Text(64),
25714
26654
  harness: Text(64),
25715
26655
  cwd: Text(),
@@ -25717,86 +26657,70 @@ var SessionStatus = external_exports.object({
25717
26657
  project: Text(64).optional(),
25718
26658
  phase: external_exports.enum(["starting", "running", "exited", "failed"]),
25719
26659
  message: Text(),
25720
- updatedAt: Time,
25721
- startedAt: Time,
26660
+ updatedAt: TimeSchema,
26661
+ startedAt: TimeSchema,
26662
+ /** The agent's own conversation this session is in (Claude: the file name of its .jsonl), once known. */
26663
+ conversation: Text(128).optional(),
25722
26664
  exitCode: external_exports.number().int().optional(),
25723
- attach: AttachEndpoint.optional()
26665
+ attach: AttachEndpointSchema.optional()
25724
26666
  });
25725
- var ProjectStatus = external_exports.object({
25726
- name: Id,
26667
+ var ProjectStatusSchema = external_exports.object({
26668
+ name: IdSchema,
25727
26669
  workspace: Text(1024),
25728
26670
  phase: external_exports.enum(["provisioning", "ready", "failed"]),
25729
26671
  message: Text(),
25730
- updatedAt: Time,
26672
+ updatedAt: TimeSchema,
25731
26673
  databases: external_exports.array(external_exports.object({ database: Text(32), port: external_exports.number().int() })).max(16),
25732
26674
  summary: external_exports.array(Text(512)).max(64)
25733
26675
  });
25734
26676
 
25735
- // src/guest/ports.ts
26677
+ // src/guest/runtime/ports.ts
25736
26678
  import net from "node:net";
25737
- var portOpen = (port) => new Promise((resolve) => {
25738
- const socket = net.connect({ host: "127.0.0.1", port }, () => {
25739
- socket.destroy();
25740
- resolve(true);
26679
+ function portOpen(port) {
26680
+ return new Promise((resolve) => {
26681
+ const socket = net.connect({ host: "127.0.0.1", port }, () => {
26682
+ socket.destroy();
26683
+ resolve(true);
26684
+ });
26685
+ socket.once("error", () => resolve(false));
25741
26686
  });
25742
- socket.once("error", () => resolve(false));
25743
- });
25744
- var waitForPort = async (port, seconds) => {
26687
+ }
26688
+ async function waitForPort(port, seconds) {
25745
26689
  for (const end = Date.now() + seconds * 1e3; Date.now() < end; ) {
25746
26690
  if (await portOpen(port)) return true;
25747
26691
  await new Promise((r) => setTimeout(r, 300));
25748
26692
  }
25749
26693
  return false;
25750
- };
25751
-
25752
- // src/guest/toolchains/databases/index.ts
25753
- import fs10 from "node:fs";
25754
- import path15 from "node:path";
25755
- import { spawnSync as spawnSync2 } from "node:child_process";
26694
+ }
25756
26695
 
25757
- // src/shared/system.ts
25758
- import path from "node:path";
25759
- var systemRoot = () => process.env.SystemRoot ?? process.env.WINDIR ?? "C:\\Windows";
25760
- var system32 = (exe) => path.join(systemRoot(), "System32", exe);
25761
- var SYSTEM = {
25762
- cmd: () => system32("cmd.exe"),
25763
- powershell: () => system32("WindowsPowerShell\\v1.0\\powershell.exe"),
25764
- tasklist: () => system32("tasklist.exe"),
25765
- tar: () => system32("tar.exe"),
25766
- reg: () => system32("reg.exe"),
25767
- netsh: () => system32("netsh.exe"),
25768
- netstat: () => system32("NETSTAT.EXE"),
25769
- route: () => system32("ROUTE.EXE"),
25770
- ipconfig: () => system32("ipconfig.exe"),
25771
- robocopy: () => system32("Robocopy.exe"),
25772
- shutdown: () => system32("shutdown.exe"),
25773
- dism: () => system32("Dism.exe"),
25774
- msiexec: () => system32("msiexec.exe")
26696
+ // src/guest/databases/names.ts
26697
+ var DATABASE_NAMES = {
26698
+ postgres: "PostgreSQL",
26699
+ mysql: "MySQL (MariaDB)",
26700
+ mongodb: "MongoDB",
26701
+ redis: "Redis",
26702
+ dynamodb: "DynamoDB Local",
26703
+ sqlserver: "SQL Server"
25775
26704
  };
25776
26705
 
25777
- // src/guest/env.ts
25778
- import fs5 from "node:fs";
26706
+ // src/guest/runtime/paths.ts
25779
26707
  import path6 from "node:path";
25780
- import { spawnSync } from "node:child_process";
25781
26708
 
25782
- // src/shared/download.ts
25783
- import fs3 from "node:fs";
25784
- import path4 from "node:path";
25785
- import crypto from "node:crypto";
25786
- import { spawn } from "node:child_process";
25787
- import { Readable, Transform } from "node:stream";
25788
- import { pipeline } from "node:stream/promises";
26709
+ // src/shared/channel/run-dir.ts
26710
+ import fs4 from "node:fs";
26711
+ import path5 from "node:path";
25789
26712
 
25790
- // src/shared/safe-remove.ts
26713
+ // src/shared/io/json.ts
25791
26714
  import fs2 from "node:fs";
25792
- import os2 from "node:os";
25793
26715
  import path3 from "node:path";
25794
26716
 
25795
26717
  // src/shared/test-guard.ts
25796
26718
  import fs from "node:fs";
25797
26719
  import os from "node:os";
25798
26720
  import path2 from "node:path";
25799
- var selfTestRunning = () => process.env.AGENT_SANDBOX_SELFTEST === "1";
26721
+ function selfTestRunning() {
26722
+ return process.env.AGENT_SANDBOX_SELFTEST === "1";
26723
+ }
25800
26724
  var canonical = (p) => {
25801
26725
  let rest = "";
25802
26726
  let current = path2.resolve(p);
@@ -25811,31 +26735,75 @@ var canonical = (p) => {
25811
26735
  }
25812
26736
  }
25813
26737
  };
25814
- var testWriteRefusal = (target) => {
26738
+ function testWriteRefusal(target) {
25815
26739
  if (!selfTestRunning()) return null;
25816
26740
  const temp = canonical(os.tmpdir());
25817
26741
  const t = canonical(target);
25818
26742
  return t === temp || t.startsWith(temp + path2.sep) ? null : "The self-test refused to change " + target + ": it only works in temp folders, so it can never change this PC.";
25819
- };
25820
- var assertTestWritable = (target) => {
26743
+ }
26744
+ function assertTestWritable(target) {
25821
26745
  const refusal = testWriteRefusal(target);
25822
26746
  if (refusal) throw new Error(refusal);
26747
+ }
26748
+
26749
+ // src/shared/io/json.ts
26750
+ var MAX_MESSAGE_BYTES = 8 * 1024 * 1024;
26751
+ function readJsonFile(file2) {
26752
+ try {
26753
+ if (fs2.statSync(file2).size > MAX_MESSAGE_BYTES) return null;
26754
+ return JSON.parse(fs2.readFileSync(file2, "utf8").replace(/^\uFEFF/, ""));
26755
+ } catch {
26756
+ return null;
26757
+ }
26758
+ }
26759
+ function readValid(schema, file2) {
26760
+ const parsed = schema.safeParse(readJsonFile(file2));
26761
+ return parsed.success ? parsed.data : null;
26762
+ }
26763
+ var pause = (ms) => {
26764
+ Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
25823
26765
  };
26766
+ function writeJsonAtomic(file2, value) {
26767
+ return writeFileAtomic(file2, JSON.stringify(value, null, 2) + "\n");
26768
+ }
26769
+ function writeFileAtomic(file2, text) {
26770
+ assertTestWritable(file2);
26771
+ fs2.mkdirSync(path3.dirname(file2), { recursive: true });
26772
+ const temp = file2 + "." + process.pid + "-" + Math.random().toString(36).slice(2) + ".tmp";
26773
+ fs2.writeFileSync(temp, text, { encoding: "utf8", flag: "wx" });
26774
+ for (let attempt = 1; ; attempt++) {
26775
+ try {
26776
+ fs2.renameSync(temp, file2);
26777
+ return;
26778
+ } catch (e) {
26779
+ const code = e.code;
26780
+ if (attempt >= 8 || code !== "EPERM" && code !== "EBUSY" && code !== "EACCES") {
26781
+ fs2.rmSync(temp, { force: true });
26782
+ throw e;
26783
+ }
26784
+ pause(50 * attempt);
26785
+ }
26786
+ }
26787
+ }
25824
26788
 
25825
- // src/shared/safe-remove.ts
25826
- var norm = (p) => path3.resolve(p).replace(/[\\/]+$/, "").toLowerCase();
26789
+ // src/shared/io/safe-remove.ts
26790
+ import fs3 from "node:fs";
26791
+ import os2 from "node:os";
26792
+ import path4 from "node:path";
26793
+ var norm = (p) => path4.resolve(p).replace(/[\\/]+$/, "").toLowerCase();
25827
26794
  var isAncestorOrSame = (parent, child) => {
25828
26795
  const a = norm(parent);
25829
26796
  const b = norm(child);
25830
- return a === b || b.startsWith(a + path3.sep);
26797
+ return a === b || b.startsWith(a + path4.sep);
25831
26798
  };
26799
+ var depthBelow = (parent, child) => path4.relative(norm(parent), norm(child)).split(path4.sep).filter(Boolean).length;
25832
26800
  var protectedFolders = () => [
25833
26801
  os2.homedir(),
25834
26802
  process.env.USERPROFILE,
25835
26803
  process.env.APPDATA,
25836
26804
  process.env.LOCALAPPDATA,
25837
- path3.join(os2.homedir(), "Documents"),
25838
- path3.join(os2.homedir(), "Desktop"),
26805
+ path4.join(os2.homedir(), "Documents"),
26806
+ path4.join(os2.homedir(), "Desktop"),
25839
26807
  process.env.SystemRoot,
25840
26808
  process.env.WINDIR,
25841
26809
  process.env.ProgramFiles,
@@ -25844,53 +26812,166 @@ var protectedFolders = () => [
25844
26812
  "C:\\Users",
25845
26813
  "C:\\Windows"
25846
26814
  ].filter((p) => typeof p === "string" && p.trim() !== "");
25847
- var systemFolders = () => [process.env.SystemRoot, process.env.WINDIR, process.env.ProgramFiles, process.env["ProgramFiles(x86)"], "C:\\Windows", "C:\\Program Files", "C:\\Program Files (x86)"].filter((p) => typeof p === "string" && p.trim() !== "");
25848
- var removeRefusal = (target, root) => {
25849
- if (!target || !path3.isAbsolute(target) || !root || !path3.isAbsolute(root)) return "not an absolute path";
26815
+ var present = (paths) => paths.filter((p) => typeof p === "string" && p.trim() !== "");
26816
+ var windowsFolders = () => present([process.env.SystemRoot, process.env.WINDIR, "C:\\Windows"]);
26817
+ var programFolders = () => present([process.env.ProgramFiles, process.env["ProgramFiles(x86)"], "C:\\Program Files", "C:\\Program Files (x86)"]);
26818
+ function removeRefusal(target, root) {
26819
+ if (!target || !path4.isAbsolute(target) || !root || !path4.isAbsolute(root)) return "not an absolute path";
25850
26820
  if (/^[\\/]{2}[?.][\\/]/.test(target) || /^[\\/]{2}[?.][\\/]/.test(root)) return "a device path (\\\\?\\ or \\\\.\\)";
25851
26821
  const t = norm(target);
25852
- if (t === norm(path3.parse(t).root)) return "a drive root";
26822
+ if (t === norm(path4.parse(t).root)) return "a drive root";
25853
26823
  const hit = protectedFolders().find((p) => isAncestorOrSame(t, p));
25854
26824
  if (hit) return "it is, or contains, " + hit;
25855
- const system = systemFolders().find((p) => isAncestorOrSame(p, t));
25856
- if (system) return "it is inside " + system;
25857
- if (!t.startsWith(norm(root) + path3.sep)) return "it is not inside " + root;
26825
+ const windows = windowsFolders().find((p) => isAncestorOrSame(p, t));
26826
+ if (windows) return "it is inside " + windows;
26827
+ const program = programFolders().find((p) => isAncestorOrSame(p, t));
26828
+ if (program && !(isAncestorOrSame(program, root) && depthBelow(program, root) >= 2)) return "it is inside " + program;
26829
+ if (!t.startsWith(norm(root) + path4.sep)) return "it is not inside " + root;
25858
26830
  return null;
25859
- };
25860
- var safeRemove = (target, root) => {
26831
+ }
26832
+ function safeRemove(target, root) {
25861
26833
  const refusal = removeRefusal(target, root);
25862
26834
  if (refusal) throw new Error("Refusing to delete " + target + ": " + refusal);
25863
26835
  assertTestWritable(target);
25864
26836
  let stat;
25865
26837
  try {
25866
- stat = fs2.lstatSync(target);
26838
+ stat = fs3.lstatSync(target);
25867
26839
  } catch {
25868
26840
  return;
25869
26841
  }
25870
26842
  if (stat.isSymbolicLink()) {
25871
26843
  try {
25872
- fs2.unlinkSync(target);
26844
+ fs3.unlinkSync(target);
25873
26845
  } catch {
25874
- fs2.rmdirSync(target);
26846
+ fs3.rmdirSync(target);
25875
26847
  }
25876
26848
  return;
25877
26849
  }
25878
- fs2.rmSync(target, { recursive: true, force: true, maxRetries: 2 });
26850
+ fs3.rmSync(target, { recursive: true, force: true, maxRetries: 2 });
26851
+ }
26852
+
26853
+ // src/shared/channel/run-dir.ts
26854
+ function safeId(id) {
26855
+ return IdSchema.parse(id);
26856
+ }
26857
+ var scan = (schema, dir) => {
26858
+ if (!fs4.existsSync(dir)) return { valid: [], invalid: [] };
26859
+ const valid = [];
26860
+ const invalid = [];
26861
+ for (const name of fs4.readdirSync(dir)) {
26862
+ if (name.endsWith(".tmp")) continue;
26863
+ const message = /^[A-Za-z0-9_-]{1,64}\.json$/.test(name) ? readValid(schema, path5.join(dir, name)) : null;
26864
+ if (message) valid.push(message);
26865
+ else invalid.push(path5.join(dir, name));
26866
+ }
26867
+ return { valid, invalid };
26868
+ };
26869
+ var RunDir = class {
26870
+ root;
26871
+ sandboxFile;
26872
+ requestsDir;
26873
+ responsesDir;
26874
+ sessionsDir;
26875
+ projectsDir;
26876
+ /** audit.processes: programs the sandbox started, in small .jsonl files the host takes in and deletes. */
26877
+ auditDir;
26878
+ constructor(dataDir2) {
26879
+ this.root = path5.join(dataDir2, "run");
26880
+ this.sandboxFile = path5.join(this.root, "sandbox.json");
26881
+ this.requestsDir = path5.join(this.root, "requests");
26882
+ this.responsesDir = path5.join(this.root, "responses");
26883
+ this.sessionsDir = path5.join(this.root, "sessions");
26884
+ this.projectsDir = path5.join(this.root, "projects");
26885
+ this.auditDir = path5.join(this.root, "audit");
26886
+ }
26887
+ requestFile(id) {
26888
+ return path5.join(this.requestsDir, safeId(id) + ".json");
26889
+ }
26890
+ responseFile(id) {
26891
+ return path5.join(this.responsesDir, safeId(id) + ".json");
26892
+ }
26893
+ sessionFile(id) {
26894
+ return path5.join(this.sessionsDir, safeId(id) + ".json");
26895
+ }
26896
+ projectFile(name) {
26897
+ return path5.join(this.projectsDir, safeId(name) + ".json");
26898
+ }
26899
+ readSandboxStatus() {
26900
+ return readValid(SandboxStatusSchema, this.sandboxFile);
26901
+ }
26902
+ readSession(id) {
26903
+ return readValid(SessionStatusSchema, this.sessionFile(id));
26904
+ }
26905
+ readResponse(id) {
26906
+ return readValid(GuestResponseSchema, this.responseFile(id));
26907
+ }
26908
+ listSessions() {
26909
+ return scan(SessionStatusSchema, this.sessionsDir).valid.sort((a, b) => a.startedAt.localeCompare(b.startedAt));
26910
+ }
26911
+ readProjectStatus(name) {
26912
+ return readValid(ProjectStatusSchema, this.projectFile(name));
26913
+ }
26914
+ listProjectStatus() {
26915
+ return scan(ProjectStatusSchema, this.projectsDir).valid.slice(0, 64);
26916
+ }
26917
+ scanRequests() {
26918
+ return scan(GuestRequestSchema, this.requestsDir);
26919
+ }
25879
26920
  };
25880
26921
 
25881
- // src/shared/download.ts
25882
- var USER_AGENT = "windows-development-sandbox";
25883
- var stagingFolder = (destination) => destination + ".staging-" + crypto.randomBytes(3).toString("hex");
25884
- var moveIntoPlace = (work, destination) => {
25885
- safeRemove(destination, path4.dirname(destination));
25886
- fs3.mkdirSync(path4.dirname(destination), { recursive: true });
25887
- fs3.renameSync(work, destination);
26922
+ // src/guest/runtime/paths.ts
26923
+ var isWin = process.platform === "win32";
26924
+ var dryRun = process.env.AGENT_DRY_RUN === "1";
26925
+ var testMode = process.env.AGENT_SANDBOX_TEST === "1";
26926
+ var launchDir = process.env.AGENT_LAUNCH_DIR ?? "C:\\AgentLaunch";
26927
+ var dataDir = process.env.AGENT_DATA_DIR ?? "C:\\AgentData";
26928
+ var hostToolsDir = process.env.AGENT_HOST_TOOLS_DIR ?? "C:\\HostTools";
26929
+ var localDir = process.env.AGENT_LOCAL_DIR ?? "C:\\nvm";
26930
+ var toolsDir = path6.join(dataDir, "tools");
26931
+ var logsDir = path6.join(dataDir, "logs");
26932
+ var run = new RunDir(dataDir);
26933
+
26934
+ // src/guest/runtime/log.ts
26935
+ import fs5 from "node:fs";
26936
+ import path7 from "node:path";
26937
+ fs5.mkdirSync(logsDir, { recursive: true });
26938
+ var logFile = path7.join(
26939
+ logsDir,
26940
+ (process.env.AGENT_LOG_PREFIX ?? "guest") + "-" + (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-") + ".log"
26941
+ );
26942
+ var append = (line) => {
26943
+ try {
26944
+ fs5.appendFileSync(logFile, line + "\n");
26945
+ } catch {
26946
+ }
25888
26947
  };
25889
- var fetchRetry = async (url2, init = {}, attempts = 5, timeoutMs = 6e4) => {
26948
+ function log(message) {
26949
+ console.log(message);
26950
+ append(message);
26951
+ }
26952
+ function warn(message) {
26953
+ console.warn("\x1B[33mWARNING: " + message + "\x1B[0m");
26954
+ append("WARNING: " + message);
26955
+ }
26956
+
26957
+ // src/guest/runtime/project-context.ts
26958
+ import { AsyncLocalStorage } from "node:async_hooks";
26959
+
26960
+ // src/guest/runtime/session.ts
26961
+ import fs9 from "node:fs";
26962
+ import path11 from "node:path";
26963
+
26964
+ // src/shared/download/http.ts
26965
+ var USER_AGENT = "windows-development-sandbox";
26966
+ async function fetchRetry(url2, init = {}, attempts = 5, timeoutMs = 6e4) {
25890
26967
  let last;
25891
26968
  for (let i = 1; i <= attempts; i++) {
25892
26969
  try {
25893
- const response = await fetch(url2, { ...init, signal: AbortSignal.timeout(timeoutMs), headers: { "User-Agent": USER_AGENT, ...init.headers ?? {} } });
26970
+ const response = await fetch(url2, {
26971
+ ...init,
26972
+ signal: AbortSignal.timeout(timeoutMs),
26973
+ headers: { "User-Agent": USER_AGENT, ...init.headers ?? {} }
26974
+ });
25894
26975
  if (response.ok) return response;
25895
26976
  last = new Error("HTTP " + response.status + " for " + url2);
25896
26977
  if (response.status === 404) break;
@@ -25900,64 +26981,186 @@ var fetchRetry = async (url2, init = {}, attempts = 5, timeoutMs = 6e4) => {
25900
26981
  if (i < attempts) await new Promise((r) => setTimeout(r, 3e3));
25901
26982
  }
25902
26983
  throw last instanceof Error ? last : new Error(String(last));
25903
- };
25904
- var fetchJson = async (url2) => await (await fetchRetry(url2, { headers: { Accept: "application/json" } }, 2, 2e4)).json();
25905
- var fetchText = async (url2) => await (await fetchRetry(url2)).text();
25906
- var checksumRequired = false;
25907
- var setChecksumRequired = (on) => {
25908
- checksumRequired = on;
25909
- };
25910
- var downloadWatcher = null;
25911
- var download = async (url2, destination, expected = null) => {
25912
- const sums = typeof expected === "string" || expected === null ? { sha256: expected } : expected;
25913
- if (checksumRequired && !sums.sha256?.trim() && !sums.sha512?.trim()) {
25914
- throw new Error("Refusing to download " + path4.basename(destination) + " (" + url2 + "): no checksum is published for it, and downloads.requireChecksum is on. Turn that setting off to allow downloads that cannot be verified.");
25915
- }
25916
- const response = await fetchRetry(url2, {}, 3, 20 * 60 * 1e3);
25917
- if (!response.body) throw new Error("Empty response for " + url2);
25918
- fs3.mkdirSync(path4.dirname(destination), { recursive: true });
25919
- const checks = ["sha256", "sha512"].flatMap((kind) => {
25920
- const want = sums[kind]?.trim().toLowerCase();
25921
- return want ? [{ want, hash: crypto.createHash(kind) }] : [];
26984
+ }
26985
+ async function fetchJson(url2) {
26986
+ return await (await fetchRetry(url2, { headers: { Accept: "application/json" } }, 2, 2e4)).json();
26987
+ }
26988
+ async function fetchText(url2) {
26989
+ return await (await fetchRetry(url2)).text();
26990
+ }
26991
+
26992
+ // src/shared/download/archive.ts
26993
+ import fs7 from "node:fs";
26994
+ import path9 from "node:path";
26995
+ import crypto from "node:crypto";
26996
+
26997
+ // src/shared/scripts.ts
26998
+ import fs6 from "node:fs";
26999
+ import path8 from "node:path";
27000
+ import { fileURLToPath } from "node:url";
27001
+ var HERE = path8.dirname(fileURLToPath(import.meta.url));
27002
+ function sandboxScriptsDir() {
27003
+ const candidates = [path8.resolve(HERE, "..", "sandbox"), path8.resolve(HERE, "..", "..", "sandbox")];
27004
+ return candidates.find((dir) => fs6.existsSync(path8.join(dir, "boot", "bootstrap.ps1"))) ?? candidates[candidates.length - 1];
27005
+ }
27006
+ function scriptArgs(name, args = []) {
27007
+ return [
27008
+ "-NoLogo",
27009
+ "-NoProfile",
27010
+ "-NonInteractive",
27011
+ "-ExecutionPolicy",
27012
+ "Bypass",
27013
+ "-File",
27014
+ path8.join(sandboxScriptsDir(), "scripts", name),
27015
+ ...args
27016
+ ];
27017
+ }
27018
+
27019
+ // src/shared/download/spawn.ts
27020
+ import { spawn } from "node:child_process";
27021
+ function spawnAsync(file2, args, options = {}) {
27022
+ return new Promise((resolve, reject) => {
27023
+ const child = spawn(file2, args, { stdio: "ignore", windowsHide: true, ...options });
27024
+ child.once("error", reject);
27025
+ child.once("close", (code) => resolve(code ?? -1));
25922
27026
  });
25923
- const size = Number(response.headers.get("content-length")) || 0;
25924
- const report = size > 0 ? downloadWatcher?.() ?? null : null;
25925
- let received = 0;
25926
- let tenth = 0;
25927
- let reportedAt = Date.now();
25928
- const tap = new Transform({ transform(chunk, _encoding, done) {
25929
- for (const c of checks) c.hash.update(chunk);
25930
- if (report) {
25931
- received += chunk.length;
25932
- const now2 = Math.floor(received * 10 / size);
25933
- if (now2 !== tenth || Date.now() - reportedAt > 5e3) {
25934
- tenth = now2;
25935
- reportedAt = Date.now();
25936
- try {
25937
- report(Math.min(1, received / size));
25938
- } catch {
25939
- }
27027
+ }
27028
+
27029
+ // src/shared/download/archive.ts
27030
+ function stagingFolder(destination) {
27031
+ return destination + ".staging-" + crypto.randomBytes(3).toString("hex");
27032
+ }
27033
+ function moveIntoPlace(work, destination) {
27034
+ safeRemove(destination, path9.dirname(destination));
27035
+ fs7.mkdirSync(path9.dirname(destination), { recursive: true });
27036
+ fs7.renameSync(work, destination);
27037
+ }
27038
+ async function extractArchive(archive, destination, members2 = []) {
27039
+ fs7.mkdirSync(destination, { recursive: true });
27040
+ let status = await spawnAsync(SYSTEM.tar(), ["-xf", archive, "-C", destination, ...members2]);
27041
+ if (status !== 0 && /\.(zip|nupkg)$/i.test(archive)) {
27042
+ const zip = archive.endsWith(".zip") ? archive : archive + ".zip";
27043
+ if (zip !== archive) fs7.copyFileSync(archive, zip);
27044
+ status = await spawnAsync(
27045
+ SYSTEM.powershell(),
27046
+ scriptArgs("expand-archive.ps1", ["-Archive", zip, "-Destination", destination])
27047
+ );
27048
+ }
27049
+ if (status !== 0) throw new Error("Could not extract " + archive);
27050
+ }
27051
+ function findFile(root, name, maxDepth = 4) {
27052
+ if (maxDepth < 0 || !fs7.existsSync(root)) return null;
27053
+ const entries = fs7.readdirSync(root, { withFileTypes: true });
27054
+ for (const entry of entries)
27055
+ if (entry.isFile() && entry.name.toLowerCase() === name.toLowerCase()) return path9.join(root, entry.name);
27056
+ for (const entry of entries)
27057
+ if (entry.isDirectory()) {
27058
+ const found = findFile(path9.join(root, entry.name), name, maxDepth - 1);
27059
+ if (found) return found;
27060
+ }
27061
+ return null;
27062
+ }
27063
+
27064
+ // src/shared/download/downloader.ts
27065
+ import fs8 from "node:fs";
27066
+ import path10 from "node:path";
27067
+ import crypto2 from "node:crypto";
27068
+ import { Readable, Transform } from "node:stream";
27069
+ import { pipeline } from "node:stream/promises";
27070
+ var Downloader = class {
27071
+ /** downloads.requireChecksum: refuse anything without an expected hash. The guest sets it from session.json. */
27072
+ requireChecksum = false;
27073
+ watcher = null;
27074
+ /** Reports coarse progress of the downloads that start from now on to `watcher` (null: stop). */
27075
+ watch(watcher) {
27076
+ this.watcher = watcher;
27077
+ }
27078
+ /**
27079
+ * Streams a download to disk, hashing as it goes: big archives (PostgreSQL is ~330 MB) never sit in memory, and the
27080
+ * event loop stays free so other toolchains keep downloading meanwhile. A mismatch (or any failure) leaves no file
27081
+ * behind.
27082
+ */
27083
+ async file(url2, destination, expected = null) {
27084
+ const sums = typeof expected === "string" || expected === null ? { sha256: expected } : expected;
27085
+ if (this.requireChecksum && !sums.sha256?.trim() && !sums.sha512?.trim()) {
27086
+ throw new Error(
27087
+ "Refusing to download " + path10.basename(destination) + " (" + url2 + "): no checksum is published for it, and downloads.requireChecksum is on. Turn that setting off to allow downloads that cannot be verified."
27088
+ );
27089
+ }
27090
+ const response = await fetchRetry(url2, {}, 3, 20 * 60 * 1e3);
27091
+ if (!response.body) throw new Error("Empty response for " + url2);
27092
+ fs8.mkdirSync(path10.dirname(destination), { recursive: true });
27093
+ const checks = ["sha256", "sha512"].flatMap((kind) => {
27094
+ const want = sums[kind]?.trim().toLowerCase();
27095
+ return want ? [{ want, hash: crypto2.createHash(kind) }] : [];
27096
+ });
27097
+ const size = Number(response.headers.get("content-length")) || 0;
27098
+ const report = size > 0 ? this.watcher?.() ?? null : null;
27099
+ let received = 0;
27100
+ let tenth = 0;
27101
+ let reportedAt = Date.now();
27102
+ const tap = new Transform({
27103
+ transform(chunk, _encoding, done) {
27104
+ for (const c of checks) c.hash.update(chunk);
27105
+ if (report) {
27106
+ received += chunk.length;
27107
+ const now = Math.floor(received * 10 / size);
27108
+ if (now !== tenth || Date.now() - reportedAt > 5e3) {
27109
+ tenth = now;
27110
+ reportedAt = Date.now();
27111
+ try {
27112
+ report(Math.min(1, received / size));
27113
+ } catch {
27114
+ }
27115
+ }
27116
+ }
27117
+ done(null, chunk);
25940
27118
  }
27119
+ });
27120
+ const partial2 = destination + ".part";
27121
+ try {
27122
+ await pipeline(Readable.fromWeb(response.body), tap, fs8.createWriteStream(partial2));
27123
+ if (checks.some((c) => c.hash.digest("hex") !== c.want)) throw new Error("Checksum mismatch for " + url2);
27124
+ fs8.rmSync(destination, { force: true });
27125
+ fs8.renameSync(partial2, destination);
27126
+ } finally {
27127
+ fs8.rmSync(partial2, { force: true });
27128
+ }
27129
+ }
27130
+ /**
27131
+ * Downloads + extracts into `destination` atomically (staging folder, then rename). With `locate`, only the folder
27132
+ * holding that file is kept (`up` folders above it, e.g. locate ruby.exe with up 1 keeps the folder around bin).
27133
+ */
27134
+ async archive(url2, destination, options = {}) {
27135
+ const work = stagingFolder(destination);
27136
+ try {
27137
+ const archive = path10.join(work, options.fileName ?? path10.basename(new URL(url2).pathname));
27138
+ await this.file(url2, archive, { sha256: options.sha256, sha512: options.sha512 });
27139
+ const extracted = path10.join(work, "x");
27140
+ await extractArchive(archive, extracted, options.members);
27141
+ let root = extracted;
27142
+ if (options.locate) {
27143
+ const found = findFile(extracted, options.locate);
27144
+ if (!found) throw new Error(options.locate + " not found in " + url2);
27145
+ root = path10.dirname(found);
27146
+ for (let i = 0; i < (options.up ?? 0) && path10.dirname(root).startsWith(extracted); i++)
27147
+ root = path10.dirname(root);
27148
+ }
27149
+ moveIntoPlace(root, destination);
27150
+ } finally {
27151
+ safeRemove(work, path10.dirname(work));
25941
27152
  }
25942
- done(null, chunk);
25943
- } });
25944
- const partial2 = destination + ".part";
25945
- try {
25946
- await pipeline(Readable.fromWeb(response.body), tap, fs3.createWriteStream(partial2));
25947
- if (checks.some((c) => c.hash.digest("hex") !== c.want)) throw new Error("Checksum mismatch for " + url2);
25948
- fs3.rmSync(destination, { force: true });
25949
- fs3.renameSync(partial2, destination);
25950
- } finally {
25951
- fs3.rmSync(partial2, { force: true });
25952
27153
  }
25953
27154
  };
25954
- var spawnAsync = (file2, args, options = {}) => new Promise((resolve, reject) => {
25955
- const child = spawn(file2, args, { stdio: "ignore", windowsHide: true, ...options });
25956
- child.once("error", reject);
25957
- child.once("close", (code) => resolve(code ?? -1));
27155
+ var downloader = new Downloader();
27156
+
27157
+ // src/shared/download/github.ts
27158
+ var toAsset = (asset) => ({
27159
+ url: asset.browser_download_url,
27160
+ name: asset.name,
27161
+ sha256: asset.digest?.startsWith("sha256:") ? asset.digest.slice(7) : null
25958
27162
  });
25959
- var toAsset = (asset) => ({ url: asset.browser_download_url, name: asset.name, sha256: asset.digest?.startsWith("sha256:") ? asset.digest.slice(7) : null });
25960
- var githubAsset = async (repo, pattern, searchOlder = false) => {
27163
+ async function githubAsset(repo, pattern, searchOlder = false) {
25961
27164
  let latest;
25962
27165
  try {
25963
27166
  latest = await fetchJson("https://api.github.com/repos/" + repo + "/releases/latest");
@@ -25968,331 +27171,388 @@ var githubAsset = async (repo, pattern, searchOlder = false) => {
25968
27171
  const hit = latest.assets.find((a) => pattern.test(a.name));
25969
27172
  if (hit) return toAsset(hit);
25970
27173
  if (searchOlder) {
25971
- const releases = await fetchJson("https://api.github.com/repos/" + repo + "/releases?per_page=100");
27174
+ const releases = await fetchJson(
27175
+ "https://api.github.com/repos/" + repo + "/releases?per_page=100"
27176
+ );
25972
27177
  for (const release of releases.filter((r) => !r.prerelease && !r.draft)) {
25973
27178
  const older = release.assets.find((a) => pattern.test(a.name));
25974
27179
  if (older) return toAsset(older);
25975
27180
  }
25976
27181
  }
25977
- throw new Error("No asset matching " + pattern + " in the " + (searchOlder ? "stable" : "latest") + " " + repo + " release(s)");
25978
- };
25979
- var parseReleasePage = (html) => {
27182
+ throw new Error(
27183
+ "No asset matching " + pattern + " in the " + (searchOlder ? "stable" : "latest") + " " + repo + " release(s)"
27184
+ );
27185
+ }
27186
+ function parseReleasePage(html) {
25980
27187
  const links = [...html.matchAll(/href="(\/[^"]+\/releases\/download\/[^"]+)"/g)];
25981
27188
  return links.map((link, i) => {
25982
27189
  const digest = /sha256:([0-9a-f]{64})/.exec(html.slice(link.index, links[i + 1]?.index ?? html.length))?.[1] ?? null;
25983
27190
  return { url: "https://github.com" + link[1], name: decodeURIComponent(link[1].split("/").pop()), sha256: digest };
25984
27191
  });
25985
- };
25986
- var latestGithubTag = async (repo) => {
27192
+ }
27193
+ async function latestGithubTag(repo) {
25987
27194
  const latest = await fetchRetry("https://github.com/" + repo + "/releases/latest", {}, 2, 2e4);
25988
27195
  const tag = decodeURIComponent(latest.url.split("/releases/tag/")[1] ?? "");
25989
27196
  return tag || Promise.reject(new Error("Could not find the latest release of " + repo));
25990
- };
25991
- var parseReleaseTags = (html, repo) => {
27197
+ }
27198
+ function parseReleaseTags(html, repo) {
25992
27199
  const escaped = repo.replace(/[.*+?^${}()|[\]\\/]/g, "\\$&");
25993
- const tags = [...html.matchAll(new RegExp('href="/' + escaped + '/releases/tag/([^"?#]+)"', "gi"))].map((m) => decodeURIComponent(m[1]));
27200
+ const tags = [...html.matchAll(new RegExp('href="/' + escaped + '/releases/tag/([^"?#]+)"', "gi"))].map(
27201
+ (m) => decodeURIComponent(m[1])
27202
+ );
25994
27203
  return [...new Set(tags)];
25995
- };
27204
+ }
25996
27205
  var OLDER_RELEASES = 10;
25997
27206
  var githubAssetFromPage = async (repo, pattern, searchOlder) => {
25998
- const assetsOf = async (tag) => parseReleasePage(await fetchText("https://github.com/" + repo + "/releases/expanded_assets/" + encodeURIComponent(tag))).find((a) => pattern.test(a.name));
27207
+ const assetsOf = async (tag) => parseReleasePage(
27208
+ await fetchText("https://github.com/" + repo + "/releases/expanded_assets/" + encodeURIComponent(tag))
27209
+ ).find((a) => pattern.test(a.name));
25999
27210
  const latest = await latestGithubTag(repo);
26000
27211
  const hit = await assetsOf(latest);
26001
27212
  if (hit) return hit;
26002
27213
  if (searchOlder) {
26003
- const older = parseReleaseTags(await fetchText("https://github.com/" + repo + "/releases"), repo).filter((t) => t !== latest);
27214
+ const older = parseReleaseTags(await fetchText("https://github.com/" + repo + "/releases"), repo).filter(
27215
+ (t) => t !== latest
27216
+ );
26004
27217
  for (const tag of older.slice(0, OLDER_RELEASES)) {
26005
27218
  const found = await assetsOf(tag);
26006
27219
  if (found) return found;
26007
27220
  }
26008
27221
  }
26009
- throw new Error("No asset matching " + pattern + " in " + repo + " " + latest + (searchOlder ? " or the releases before it" : ""));
27222
+ throw new Error(
27223
+ "No asset matching " + pattern + " in " + repo + " " + latest + (searchOlder ? " or the releases before it" : "")
27224
+ );
26010
27225
  };
26011
- var extractArchive = async (archive, destination, members2 = []) => {
26012
- fs3.mkdirSync(destination, { recursive: true });
26013
- let status = await spawnAsync(SYSTEM.tar(), ["-xf", archive, "-C", destination, ...members2]);
26014
- if (status !== 0 && /\.(zip|nupkg)$/i.test(archive)) {
26015
- const zip = archive.endsWith(".zip") ? archive : archive + ".zip";
26016
- if (zip !== archive) fs3.copyFileSync(archive, zip);
26017
- status = await spawnAsync(SYSTEM.powershell(), ["-NoLogo", "-NoProfile", "-Command", "Expand-Archive -LiteralPath '" + zip.replace(/'/g, "''") + "' -DestinationPath '" + destination.replace(/'/g, "''") + "' -Force"]);
27226
+
27227
+ // src/guest/runtime/session.ts
27228
+ var session = JSON.parse(
27229
+ fs9.readFileSync(path11.join(launchDir, "session.json"), "utf8").replace(/^\uFEFF/, "")
27230
+ );
27231
+ downloader.requireChecksum = session.downloads?.requireChecksum === true;
27232
+ var workspace = process.env.AGENT_WORKSPACE ?? session.workspace;
27233
+ var stateDir = path11.join(dataDir, session.persistAgentState ? "state" : "state-session");
27234
+ var claudeDir = path11.join(stateDir, "claude");
27235
+
27236
+ // src/guest/runtime/project-context.ts
27237
+ var store = new AsyncLocalStorage();
27238
+ function projectWorkspace() {
27239
+ return store.getStore()?.workspace ?? workspace;
27240
+ }
27241
+ function duringSession() {
27242
+ return store.getStore()?.duringSession ?? false;
27243
+ }
27244
+
27245
+ // src/guest/databases/database-server.ts
27246
+ import { spawnSync } from "node:child_process";
27247
+ function listenerPid(port) {
27248
+ const out = spawnSync(SYSTEM.netstat(), ["-ano", "-p", "TCP"], { encoding: "utf8", windowsHide: true }).stdout ?? "";
27249
+ const hit = out.split(/\r?\n/).map((l) => /^\s*TCP\s+\S+:(\d+)\s+\S+\s+LISTENING\s+(\d+)/.exec(l)).find((m) => m && Number(m[1]) === port);
27250
+ return hit ? Number(hit[2]) : null;
27251
+ }
27252
+ function killListeners(plan) {
27253
+ for (const port of [plan.port, plan.adminPort ?? 0]) {
27254
+ const pid = port && listenerPid(port);
27255
+ if (pid)
27256
+ try {
27257
+ process.kill(pid);
27258
+ } catch {
27259
+ }
26018
27260
  }
26019
- if (status !== 0) throw new Error("Could not extract " + archive);
26020
- };
26021
- var findFile = (root, name, maxDepth = 4) => {
26022
- if (maxDepth < 0 || !fs3.existsSync(root)) return null;
26023
- const entries = fs3.readdirSync(root, { withFileTypes: true });
26024
- for (const entry of entries) if (entry.isFile() && entry.name.toLowerCase() === name.toLowerCase()) return path4.join(root, entry.name);
26025
- for (const entry of entries) if (entry.isDirectory()) {
26026
- const found = findFile(path4.join(root, entry.name), name, maxDepth - 1);
26027
- if (found) return found;
27261
+ }
27262
+ var DatabaseServer = class {
27263
+ get label() {
27264
+ return DATABASE_NAMES[this.id];
27265
+ }
27266
+ /** Ends whatever listens on the server's port (and its admin UI's port). */
27267
+ async stop(plan) {
27268
+ killListeners(plan);
26028
27269
  }
26029
- return null;
26030
27270
  };
26031
- var installArchive = async (url2, destination, options = {}) => {
26032
- const work = stagingFolder(destination);
27271
+
27272
+ // src/guest/databases/dynamodb.ts
27273
+ import fs17 from "node:fs";
27274
+ import path17 from "node:path";
27275
+ import { spawn as spawn3 } from "node:child_process";
27276
+
27277
+ // src/guest/runtime/process.ts
27278
+ import fs10 from "node:fs";
27279
+ import os3 from "node:os";
27280
+ import path12 from "node:path";
27281
+ import { spawnSync as spawnSync2 } from "node:child_process";
27282
+ function exec(file2, args, options = {}) {
27283
+ const result = spawnSync2(file2, args, { stdio: "inherit", windowsHide: true, ...options });
27284
+ if (result.error) throw result.error;
27285
+ if (result.status !== 0)
27286
+ throw new Error(path12.basename(file2) + " " + args.slice(0, 3).join(" ") + " failed with exit code " + result.status);
27287
+ }
27288
+ async function execAsync(file2, args, options = {}) {
27289
+ const code = await spawnAsync(file2, args, { stdio: "inherit", ...options });
27290
+ if (code !== 0)
27291
+ throw new Error(path12.basename(file2) + " " + args.slice(0, 3).join(" ") + " failed with exit code " + code);
27292
+ }
27293
+ function runScript(name, args = []) {
27294
+ exec(SYSTEM.powershell(), scriptArgs(name, args));
27295
+ }
27296
+ function runScriptWithJson(name, param, data, args = []) {
27297
+ const dir = fs10.mkdtempSync(path12.join(os3.tmpdir(), "sbx-"));
27298
+ const file2 = path12.join(dir, "input.json");
26033
27299
  try {
26034
- const archive = path4.join(work, options.fileName ?? path4.basename(new URL(url2).pathname));
26035
- await download(url2, archive, { sha256: options.sha256, sha512: options.sha512 });
26036
- const extracted = path4.join(work, "x");
26037
- await extractArchive(archive, extracted, options.members);
26038
- let root = extracted;
26039
- if (options.locate) {
26040
- const found = findFile(extracted, options.locate);
26041
- if (!found) throw new Error(options.locate + " not found in " + url2);
26042
- root = path4.dirname(found);
26043
- for (let i = 0; i < (options.up ?? 0) && path4.dirname(root).startsWith(extracted); i++) root = path4.dirname(root);
26044
- }
26045
- moveIntoPlace(root, destination);
27300
+ fs10.writeFileSync(file2, JSON.stringify(data), "utf8");
27301
+ runScript(name, ["-" + param, file2, ...args]);
26046
27302
  } finally {
26047
- safeRemove(work, path4.dirname(work));
27303
+ fs10.rmSync(dir, { recursive: true, force: true });
26048
27304
  }
26049
- };
27305
+ }
26050
27306
 
26051
- // src/shared/rundir.ts
26052
- import fs4 from "node:fs";
26053
- import path5 from "node:path";
26054
- var MAX_MESSAGE_BYTES = 8 * 1024 * 1024;
26055
- var safeId = (id) => Id.parse(id);
26056
- var runPaths = (dataDir2) => {
26057
- const run2 = path5.join(dataDir2, "run");
26058
- const file2 = (dir) => (id) => path5.join(run2, dir, safeId(id) + ".json");
26059
- return {
26060
- run: run2,
26061
- sandbox: path5.join(run2, "sandbox.json"),
26062
- requests: path5.join(run2, "requests"),
26063
- responses: path5.join(run2, "responses"),
26064
- sessions: path5.join(run2, "sessions"),
26065
- projects: path5.join(run2, "projects"),
26066
- /** audit.processes: programs the sandbox started, in small .jsonl files the host takes in and deletes. */
26067
- audit: path5.join(run2, "audit"),
26068
- request: file2("requests"),
26069
- response: file2("responses"),
26070
- session: file2("sessions"),
26071
- project: file2("projects")
26072
- };
26073
- };
26074
- var pause = (ms) => {
26075
- Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
26076
- };
26077
- var writeJsonAtomic = (file2, value) => writeFileAtomic(file2, JSON.stringify(value, null, 2) + "\n");
26078
- var writeFileAtomic = (file2, text) => {
26079
- assertTestWritable(file2);
26080
- fs4.mkdirSync(path5.dirname(file2), { recursive: true });
26081
- const temp = file2 + "." + process.pid + "-" + Math.random().toString(36).slice(2) + ".tmp";
26082
- fs4.writeFileSync(temp, text, { encoding: "utf8", flag: "wx" });
26083
- for (let attempt = 1; ; attempt++) {
26084
- try {
26085
- fs4.renameSync(temp, file2);
26086
- return;
26087
- } catch (e) {
26088
- const code = e.code;
26089
- if (attempt >= 8 || code !== "EPERM" && code !== "EBUSY" && code !== "EACCES") {
26090
- fs4.rmSync(temp, { force: true });
26091
- throw e;
26092
- }
26093
- pause(50 * attempt);
26094
- }
26095
- }
26096
- };
27307
+ // src/guest/runtime/fs.ts
27308
+ import fs11 from "node:fs";
27309
+ function exists(p) {
27310
+ return fs11.existsSync(p);
27311
+ }
27312
+ function mkdirp(p) {
27313
+ fs11.mkdirSync(p, { recursive: true });
27314
+ return p;
27315
+ }
26097
27316
 
26098
- // src/guest/env.ts
26099
- var isWin = process.platform === "win32";
26100
- var dryRun = process.env.AGENT_DRY_RUN === "1";
26101
- var testMode = process.env.AGENT_SANDBOX_TEST === "1";
26102
- var launchDir = process.env.AGENT_LAUNCH_DIR ?? "C:\\AgentLaunch";
26103
- var dataDir = process.env.AGENT_DATA_DIR ?? "C:\\AgentData";
26104
- var hostToolsDir = process.env.AGENT_HOST_TOOLS_DIR ?? "C:\\HostTools";
26105
- var localDir = process.env.AGENT_LOCAL_DIR ?? "C:\\nvm";
26106
- var toolsDir = path6.join(dataDir, "tools");
26107
- var logsDir = path6.join(dataDir, "logs");
26108
- var run = runPaths(dataDir);
26109
- var session = JSON.parse(fs5.readFileSync(path6.join(launchDir, "session.json"), "utf8").replace(/^\uFEFF/, ""));
26110
- setChecksumRequired(session.downloads?.requireChecksum === true);
26111
- var workspace = process.env.AGENT_WORKSPACE ?? session.workspace;
26112
- var stateDir = path6.join(dataDir, session.persistAgentState ? "state" : "state-session");
26113
- var claudeDir = path6.join(stateDir, "claude");
26114
- fs5.mkdirSync(logsDir, { recursive: true });
26115
- var logFile = path6.join(logsDir, (process.env.AGENT_LOG_PREFIX ?? "guest") + "-" + (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-") + ".log");
26116
- var append = (line) => {
27317
+ // src/guest/toolchains/languages/java.ts
27318
+ import fs15 from "node:fs";
27319
+ import path15 from "node:path";
27320
+
27321
+ // src/guest/toolchains/tool-env.ts
27322
+ import path13 from "node:path";
27323
+ function emptyEnv() {
27324
+ return { vars: {}, prepend: [], append: [], summary: [] };
27325
+ }
27326
+ var arch = process.arch === "arm64" ? "arm64" : "x64";
27327
+ function tool(...parts) {
27328
+ return path13.join(toolsDir, ...parts);
27329
+ }
27330
+
27331
+ // src/guest/toolchains/version-cache.ts
27332
+ import fs13 from "node:fs";
27333
+
27334
+ // src/guest/toolchains/state-file.ts
27335
+ import fs12 from "node:fs";
27336
+ function readState(file2, schema, empty) {
26117
27337
  try {
26118
- fs5.appendFileSync(logFile, line + "\n");
27338
+ return schema.safeParse(JSON.parse(fs12.readFileSync(file2, "utf8").replace(/^\uFEFF/, ""))).data ?? empty;
26119
27339
  } catch {
27340
+ return empty;
26120
27341
  }
26121
- };
26122
- var log = (message) => {
26123
- console.log(message);
26124
- append(message);
26125
- };
26126
- var warn = (message) => {
26127
- console.warn("\x1B[33mWARNING: " + message + "\x1B[0m");
26128
- append("WARNING: " + message);
26129
- };
26130
- var errMsg = (e) => e instanceof Error ? e.message : String(e);
26131
- var exists = (p) => fs5.existsSync(p);
26132
- var mkdirp = (p) => {
26133
- fs5.mkdirSync(p, { recursive: true });
26134
- return p;
26135
- };
26136
- var exec = (file2, args, options = {}) => {
26137
- const result = spawnSync(file2, args, { stdio: "inherit", windowsHide: true, ...options });
26138
- if (result.error) throw result.error;
26139
- if (result.status !== 0) throw new Error(path6.basename(file2) + " " + args.slice(0, 3).join(" ") + " failed with exit code " + result.status);
26140
- };
26141
- var execAsync = async (file2, args, options = {}) => {
26142
- const code = await spawnAsync(file2, args, { stdio: "inherit", ...options });
26143
- if (code !== 0) throw new Error(path6.basename(file2) + " " + args.slice(0, 3).join(" ") + " failed with exit code " + code);
26144
- };
26145
- var powershell = (script) => exec(SYSTEM.powershell(), ["-NoLogo", "-NoProfile", "-ExecutionPolicy", "Bypass", "-Command", script]);
27342
+ }
26146
27343
 
26147
- // src/guest/toolchains/common.ts
26148
- import fs6 from "node:fs";
26149
- import path7 from "node:path";
27344
+ // src/guest/toolchains/version-cache.ts
27345
+ var ResolvedSchema = external_exports.record(
27346
+ external_exports.string(),
27347
+ external_exports.union([external_exports.string(), external_exports.strictObject({ value: external_exports.string(), at: external_exports.number() })])
27348
+ );
27349
+ var FRESH_MS = 24 * 60 * 60 * 1e3;
27350
+ function isNetworkError(e) {
27351
+ return /fetch failed|timed? ?out|aborted|ENOTFOUND|EAI_AGAIN|ECONN|ENETUNREACH|EHOSTUNREACH|HTTP 5\d\d|socket/i.test(
27352
+ errMsg(e) + " " + String(e?.cause ?? "")
27353
+ );
27354
+ }
27355
+ var VersionCache = class {
27356
+ constructor(file2 = () => tool("resolved-versions.json")) {
27357
+ this.file = file2;
27358
+ }
27359
+ file;
27360
+ /** Set after a network failure: the remaining lookups go straight to the remembered versions. */
27361
+ offline = false;
27362
+ /**
27363
+ * Resolves a version online and remembers it for a day (provisioning.refresh looks again). After a network failure
27364
+ * the remaining lookups use the remembered versions instead of each waiting for the network; other errors (no such
27365
+ * version) do not.
27366
+ */
27367
+ async resolve(key, resolve) {
27368
+ const cached2 = this.remembered()[key];
27369
+ if (cached2 && (this.offline || !session.provisioning.refresh && Date.now() - cached2.at < FRESH_MS))
27370
+ return cached2.value;
27371
+ try {
27372
+ const value = await resolve();
27373
+ fs13.mkdirSync(toolsDir, { recursive: true });
27374
+ writeJsonAtomic(this.file(), { ...this.remembered(), [key]: { value, at: Date.now() } });
27375
+ return value;
27376
+ } catch (e) {
27377
+ if (isNetworkError(e)) this.offline = true;
27378
+ if (!cached2) throw e;
27379
+ warn(
27380
+ "Could not look up the latest " + key + " online (" + errMsg(e) + "); using " + cached2.value + " from an earlier start."
27381
+ );
27382
+ return cached2.value;
27383
+ }
27384
+ }
27385
+ remembered() {
27386
+ return Object.fromEntries(
27387
+ Object.entries(readState(this.file(), ResolvedSchema, {})).map(([k, v]) => [
27388
+ k,
27389
+ typeof v === "string" ? { value: v, at: 0 } : v
27390
+ ])
27391
+ );
27392
+ }
27393
+ };
27394
+ var versionCache = new VersionCache();
27395
+ function resolveCached(key, resolve) {
27396
+ return versionCache.resolve(key, resolve);
27397
+ }
26150
27398
 
26151
- // src/guest/project-context.ts
26152
- import { AsyncLocalStorage } from "node:async_hooks";
26153
- var store = new AsyncLocalStorage();
26154
- var projectWorkspace = () => store.getStore()?.workspace ?? workspace;
26155
- var duringSession = () => store.getStore()?.duringSession ?? false;
27399
+ // src/guest/toolchains/detect.ts
27400
+ import fs14 from "node:fs";
27401
+ import path14 from "node:path";
26156
27402
 
26157
- // src/guest/toolchains/versions.ts
26158
- var specFromVersionFile = (text) => /(\d+(?:\.\d+){0,2})/.exec(text.split(/\r?\n/).map((l) => l.replace(/#.*$/, "").trim()).find(Boolean) ?? "")?.[1] ?? null;
26159
- var javaMajorFrom = (text, sdkmanrc = false) => {
27403
+ // src/core/detect/versions.ts
27404
+ function specFromVersionFile(text) {
27405
+ return /(\d+(?:\.\d+){0,2})/.exec(
27406
+ text.split(/\r?\n/).map((l) => l.replace(/#.*$/, "").trim()).find(Boolean) ?? ""
27407
+ )?.[1] ?? null;
27408
+ }
27409
+ function javaMajorFrom(text, sdkmanrc = false) {
26160
27410
  const line = sdkmanrc ? /^\s*java\s*=\s*(.+)$/m.exec(text)?.[1] : text;
26161
27411
  const spec = line ? specFromVersionFile(line) : null;
26162
27412
  if (!spec) return null;
26163
27413
  const [major, minor] = spec.split(".");
26164
27414
  return major === "1" && minor ? minor : major;
26165
- };
27415
+ }
26166
27416
 
26167
- // src/core/detect-toolchains.ts
27417
+ // src/core/detect/toolchains.ts
26168
27418
  var MARKERS = {
26169
- python: ["pyproject.toml", "requirements.txt", "setup.py", "setup.cfg", "Pipfile", "uv.lock", "poetry.lock", ".python-version", "*.py", "*.ipynb"],
27419
+ python: [
27420
+ "pyproject.toml",
27421
+ "requirements.txt",
27422
+ "setup.py",
27423
+ "setup.cfg",
27424
+ "Pipfile",
27425
+ "uv.lock",
27426
+ "poetry.lock",
27427
+ ".python-version",
27428
+ "*.py",
27429
+ "*.ipynb"
27430
+ ],
26170
27431
  rust: ["Cargo.toml", "rust-toolchain", "rust-toolchain.toml"],
26171
27432
  msvc: ["*.vcxproj", "CMakePresets.json", "CMakeUserPresets.json"],
26172
- cpp: ["CMakeLists.txt", "Makefile", "meson.build", "premake5.lua", "Cargo.toml", "*.vcxproj", "*.c", "*.cpp", "*.cc", "*.h", "*.hpp"],
27433
+ cpp: [
27434
+ "CMakeLists.txt",
27435
+ "Makefile",
27436
+ "meson.build",
27437
+ "premake5.lua",
27438
+ "Cargo.toml",
27439
+ "*.vcxproj",
27440
+ "*.c",
27441
+ "*.cpp",
27442
+ "*.cc",
27443
+ "*.h",
27444
+ "*.hpp"
27445
+ ],
26173
27446
  dotnet: ["*.sln", "*.slnx", "*.csproj", "*.fsproj", "*.vbproj", "global.json", "*.cs"],
26174
27447
  go: ["go.mod", "go.work", "*.go"],
26175
- java: ["pom.xml", "build.gradle", "build.gradle.kts", "settings.gradle", "settings.gradle.kts", "mvnw", "gradlew", ".java-version", ".sdkmanrc", "*.java"],
27448
+ java: [
27449
+ "pom.xml",
27450
+ "build.gradle",
27451
+ "build.gradle.kts",
27452
+ "settings.gradle",
27453
+ "settings.gradle.kts",
27454
+ "mvnw",
27455
+ "gradlew",
27456
+ ".java-version",
27457
+ ".sdkmanrc",
27458
+ "*.java"
27459
+ ],
26176
27460
  ruby: ["Gemfile", "*.gemspec", ".ruby-version", "*.rb"],
26177
27461
  php: ["composer.json", "artisan", ".php-version", "*.php"],
26178
27462
  deno: ["deno.json", "deno.jsonc", "deno.lock"],
27463
+ bun: ["bun.lock", "bun.lockb", "bunfig.toml"],
27464
+ uv: ["uv.lock"],
27465
+ // VS Code is decided from this PC (hints are not needed): see decideToolchains.
27466
+ vscode: [],
26179
27467
  // Windows PowerShell 5.1 runs any .ps1: PowerShell 7 is decided from script contents (hints.pwsh) or this PC.
26180
27468
  pwsh: []
26181
27469
  };
26182
27470
  var AUTO_TOOLCHAINS = Object.keys(MARKERS);
26183
27471
  var PROJECT_FILES = [.../* @__PURE__ */ new Set([...Object.values(MARKERS).flat(), "package.json", "deno.json", "*.ts", "*.js"])];
26184
27472
 
26185
- // src/guest/toolchains/common.ts
26186
- var emptyEnv = () => ({ vars: {}, prepend: [], append: [], summary: [] });
26187
- var arch = process.arch === "arm64" ? "arm64" : "x64";
26188
- var tool = (...parts) => path7.join(toolsDir, ...parts);
26189
- var readState = (file2, schema, empty) => {
26190
- try {
26191
- return schema.safeParse(JSON.parse(fs6.readFileSync(file2, "utf8").replace(/^/, ""))).data ?? empty;
26192
- } catch {
26193
- return empty;
26194
- }
26195
- };
26196
- var Resolved = external_exports.record(external_exports.string(), external_exports.union([external_exports.string(), external_exports.strictObject({ value: external_exports.string(), at: external_exports.number() })]));
26197
- var resolvedFile = () => tool("resolved-versions.json");
26198
- var remembered = () => Object.fromEntries(Object.entries(readState(resolvedFile(), Resolved, {})).map(([k, v]) => [k, typeof v === "string" ? { value: v, at: 0 } : v]));
26199
- var FRESH_MS = 24 * 60 * 60 * 1e3;
26200
- var offline = false;
26201
- var networkError = (e) => /fetch failed|timed? ?out|aborted|ENOTFOUND|EAI_AGAIN|ECONN|ENETUNREACH|EHOSTUNREACH|HTTP 5\d\d|socket/i.test(errMsg(e) + " " + String(e?.cause ?? ""));
26202
- var resolveCached = async (key, resolve) => {
26203
- const cached2 = remembered()[key];
26204
- if (cached2 && (offline || !session.provisioning.refresh && Date.now() - cached2.at < FRESH_MS)) return cached2.value;
26205
- try {
26206
- const value = await resolve();
26207
- fs6.mkdirSync(toolsDir, { recursive: true });
26208
- writeJsonAtomic(resolvedFile(), { ...remembered(), [key]: { value, at: Date.now() } });
26209
- return value;
26210
- } catch (e) {
26211
- if (networkError(e)) offline = true;
26212
- if (!cached2) throw e;
26213
- warn("Could not look up the latest " + key + " online (" + errMsg(e) + "); using " + cached2.value + " from an earlier start.");
26214
- return cached2.value;
26215
- }
26216
- };
26217
- var installFromGithub = async (repo, pattern, o) => {
26218
- const asset = await githubAsset(repo, pattern, o.searchOlder);
26219
- log("Downloading " + (typeof o.what === "string" ? o.what : o.what(asset)) + " ...");
26220
- await installArchive(asset.url, o.dest, { sha256: asset.sha256, fileName: asset.name, ...o.locate ? { locate: o.locate } : {}, ...o.up ? { up: o.up } : {} });
26221
- };
26222
- var versionFromFiles = (files, parse3 = (t) => specFromVersionFile(t)) => {
27473
+ // src/guest/toolchains/detect.ts
27474
+ function versionFromFiles(files, parse3 = (t) => specFromVersionFile(t)) {
26223
27475
  for (const name of files) {
26224
- const file2 = path7.join(projectWorkspace(), name);
27476
+ const file2 = path14.join(projectWorkspace(), name);
26225
27477
  if (!exists(file2)) continue;
26226
- const spec = parse3(fs6.readFileSync(file2, "utf8"), name);
27478
+ const spec = parse3(fs14.readFileSync(file2, "utf8"), name);
26227
27479
  if (spec) return { spec, source: name };
26228
27480
  }
26229
27481
  return null;
26230
- };
26231
-
26232
- // src/guest/toolchains/databases/dynamodb.ts
26233
- import fs9 from "node:fs";
26234
- import path10 from "node:path";
26235
- import { spawn as spawn3 } from "node:child_process";
27482
+ }
26236
27483
 
26237
- // src/guest/toolchains/java.ts
26238
- import fs7 from "node:fs";
26239
- import path8 from "node:path";
27484
+ // src/guest/toolchains/languages/java.ts
26240
27485
  var ADOPTIUM = "https://api.adoptium.net/v3";
26241
27486
  var temurin = async (major) => {
26242
- const assets = await fetchJson(ADOPTIUM + "/assets/latest/" + major + "/hotspot?image_type=jdk&os=windows&vendor=eclipse&architecture=" + (arch === "arm64" ? "aarch64" : "x64"));
27487
+ const assets = await fetchJson(
27488
+ ADOPTIUM + "/assets/latest/" + major + "/hotspot?image_type=jdk&os=windows&vendor=eclipse&architecture=" + (arch === "arm64" ? "aarch64" : "x64")
27489
+ );
26243
27490
  return assets.find((a) => a.binary.package.name.endsWith(".zip")) ?? Promise.reject(new Error("No Temurin " + major + " JDK zip for Windows"));
26244
27491
  };
26245
27492
  var javaMajor = async (config2) => {
26246
- const fromProject = versionFromFiles([".java-version", ".sdkmanrc"], (text, name) => javaMajorFrom(text, name === ".sdkmanrc"));
27493
+ const fromProject = versionFromFiles(
27494
+ [".java-version", ".sdkmanrc"],
27495
+ (text, name) => javaMajorFrom(text, name === ".sdkmanrc")
27496
+ );
26247
27497
  if (fromProject) return { major: fromProject.spec, source: fromProject.source };
26248
27498
  const spec = config2.version.trim().toLowerCase();
26249
27499
  if (spec !== "lts") return { major: javaMajorFrom(spec) ?? spec, source: "config" };
26250
- const lts = await resolveCached("java:lts", async () => String((await fetchJson(ADOPTIUM + "/info/available_releases")).most_recent_lts));
27500
+ const lts = await resolveCached(
27501
+ "java:lts",
27502
+ async () => String((await fetchJson(ADOPTIUM + "/info/available_releases")).most_recent_lts)
27503
+ );
26251
27504
  return { major: lts, source: "newest LTS" };
26252
27505
  };
26253
27506
  var setupJdk = async (env, config2) => {
26254
27507
  const { major, source } = await javaMajor(config2);
26255
27508
  const release = await resolveCached("java:" + major, async () => (await temurin(major)).release_name);
26256
27509
  const home = tool("java", release.replace(/[^A-Za-z0-9.-]/g, "_"));
26257
- if (!exists(path8.join(home, "bin", "java.exe"))) {
27510
+ if (!exists(path15.join(home, "bin", "java.exe"))) {
26258
27511
  const asset = await temurin(major);
26259
27512
  log("Downloading Java " + release + " (JDK, ~200 MB once) ...");
26260
- await installArchive(asset.binary.package.link, home, { sha256: asset.binary.package.checksum, locate: "release", fileName: asset.binary.package.name });
27513
+ await downloader.archive(asset.binary.package.link, home, {
27514
+ sha256: asset.binary.package.checksum,
27515
+ locate: "release",
27516
+ fileName: asset.binary.package.name
27517
+ });
26261
27518
  }
26262
27519
  env.vars.JAVA_HOME = home;
26263
- env.prepend.push(path8.join(home, "bin"));
27520
+ env.prepend.push(path15.join(home, "bin"));
26264
27521
  env.summary.push("java: " + release + " (Temurin, from " + source + ")");
26265
27522
  };
26266
- var ensureJdk = async () => {
27523
+ async function ensureJdk() {
26267
27524
  const root = tool("java");
26268
- const installed = exists(root) ? fs7.readdirSync(root).filter((d) => exists(path8.join(root, d, "bin", "java.exe"))).sort((a, b) => b.localeCompare(a, void 0, { numeric: true })) : [];
26269
- if (installed.length) return path8.join(root, installed[0]);
27525
+ const installed = exists(root) ? fs15.readdirSync(root).filter((d) => exists(path15.join(root, d, "bin", "java.exe"))).sort((a, b) => b.localeCompare(a, void 0, { numeric: true })) : [];
27526
+ if (installed.length) return path15.join(root, installed[0]);
26270
27527
  const scratch = emptyEnv();
26271
27528
  await setupJdk(scratch, { enabled: true, version: "lts", maven: false, gradle: false });
26272
27529
  return scratch.vars.JAVA_HOME;
26273
- };
27530
+ }
26274
27531
 
26275
- // src/guest/toolchains/databases/server.ts
26276
- import fs8 from "node:fs";
26277
- import path9 from "node:path";
27532
+ // src/guest/databases/server.ts
27533
+ import fs16 from "node:fs";
27534
+ import path16 from "node:path";
26278
27535
  import { spawn as spawn2 } from "node:child_process";
26279
- var dataFor = (name) => path9.join(dataDir, "databases", name);
26280
- var startServer = async (name, exe, args, port) => {
27536
+ function dataFor(name) {
27537
+ return path16.join(dataDir, "databases", name);
27538
+ }
27539
+ async function startServer(name, exe, args, port) {
26281
27540
  if (await portOpen(port)) throw new Error("port " + port + " is already in use (change databases." + name + ".port)");
26282
- const logFile2 = path9.join(logsDir, name + ".log");
26283
- const out = fs8.openSync(logFile2, "a");
27541
+ const logFile2 = path16.join(logsDir, name + ".log");
27542
+ const out = fs16.openSync(logFile2, "a");
26284
27543
  spawn2(exe, args, { detached: true, stdio: ["ignore", out, out], windowsHide: true }).unref();
26285
- fs8.closeSync(out);
26286
- if (!await waitForPort(port, 60)) throw new Error(name + " did not start listening on port " + port + "; see " + logFile2);
26287
- };
26288
- var clearStaleLocks = async (dir, files, port) => {
27544
+ fs16.closeSync(out);
27545
+ if (!await waitForPort(port, 60))
27546
+ throw new Error(name + " did not start listening on port " + port + "; see " + logFile2);
27547
+ }
27548
+ async function clearStaleLocks(dir, files, port) {
26289
27549
  if (await portOpen(port)) return;
26290
- for (const f of files) fs8.rmSync(path9.join(dir, f), { force: true });
26291
- };
26292
- var createOnce = async (data, marker, create) => {
26293
- if (exists(path9.join(data, marker))) return;
27550
+ for (const f of files) fs16.rmSync(path16.join(dir, f), { force: true });
27551
+ }
27552
+ async function createOnce(data, marker, create) {
27553
+ if (exists(path16.join(data, marker))) return;
26294
27554
  const existed = exists(data);
26295
- mkdirp(path9.dirname(data));
27555
+ mkdirp(path16.dirname(data));
26296
27556
  try {
26297
27557
  await create();
26298
27558
  } catch (e) {
@@ -26304,217 +27564,353 @@ var createOnce = async (data, marker, create) => {
26304
27564
  }
26305
27565
  throw e;
26306
27566
  }
26307
- };
27567
+ }
26308
27568
 
26309
- // src/guest/toolchains/databases/dynamodb.ts
27569
+ // src/guest/databases/dynamodb.ts
26310
27570
  var DYNAMO_ZIP = "https://d1ni2b6xgvw0s0.cloudfront.net/v2.x/dynamodb_local_latest.zip";
26311
- var setupDynamo = async (env, plan) => {
26312
- const java = path10.join(await ensureJdk(), "bin", "java.exe");
26313
- const home = tool("dynamodb-local");
26314
- if (!exists(path10.join(home, "DynamoDBLocal.jar"))) {
26315
- log("Downloading DynamoDB Local (~60 MB once) ...");
26316
- const sha256 = (await fetchText(DYNAMO_ZIP + ".sha256")).trim().split(/\s+/)[0];
26317
- await installArchive(DYNAMO_ZIP, home, { sha256, locate: "DynamoDBLocal.jar", fileName: "dynamodb_local.zip" });
26318
- }
26319
- const data = mkdirp(dataFor("dynamodb"));
26320
- await startServer("dynamodb", java, ["-Djava.library.path=" + path10.join(home, "DynamoDBLocal_lib"), "-jar", path10.join(home, "DynamoDBLocal.jar"), "-sharedDb", "-dbPath", data, "-port", String(plan.port)], plan.port);
26321
- const endpoint = "http://localhost:" + plan.port;
26322
- const aws = { AWS_ENDPOINT_URL_DYNAMODB: endpoint, DYNAMO_ENDPOINT: endpoint, AWS_ACCESS_KEY_ID: "local", AWS_SECRET_ACCESS_KEY: "local", AWS_REGION: "us-east-1", AWS_DEFAULT_REGION: "us-east-1" };
26323
- Object.assign(env.vars, aws);
26324
- env.summary.push("dynamodb (DynamoDB Local): " + endpoint + " (AWS SDKs use it automatically via AWS_ENDPOINT_URL_DYNAMODB; dummy credentials)");
26325
- if (!plan.adminPort) return;
26326
- const prefix = tool("dynamodb-admin");
26327
- const script = path10.join(prefix, "node_modules", "dynamodb-admin", "dist", "dynamodb-admin.js");
26328
- if (!exists(script)) {
26329
- log("Installing dynamodb-admin, the DynamoDB web UI (~20 MB once) ...");
26330
- const npmCli = path10.join(path10.dirname(process.execPath), "node_modules", "npm", "bin", "npm-cli.js");
26331
- await execAsync(process.execPath, [npmCli, "install", "--global", "--prefix", prefix, "dynamodb-admin", "--no-fund", "--no-audit"], { stdio: "ignore" });
26332
- }
26333
- if (await portOpen(plan.adminPort)) {
26334
- env.summary.push("dynamodb-admin: NOT started, port " + plan.adminPort + " is in use (change databases.dynamodb.adminPort)");
26335
- return;
27571
+ var DynamoServer = class extends DatabaseServer {
27572
+ id = "dynamodb";
27573
+ /**
27574
+ * Amazon's DynamoDB Local (a Java program; the Java toolchain step runs first, else this installs the LTS JDK) and
27575
+ * dynamodb-admin, the web UI to browse and edit tables, installed with the runner's own npm. Every AWS SDK picks the
27576
+ * local endpoint up from AWS_ENDPOINT_URL_DYNAMODB, with dummy credentials (real ones never reach the sandbox).
27577
+ */
27578
+ async start(env, plan) {
27579
+ const java = path17.join(await ensureJdk(), "bin", "java.exe");
27580
+ const home = tool("dynamodb-local");
27581
+ if (!exists(path17.join(home, "DynamoDBLocal.jar"))) {
27582
+ log("Downloading DynamoDB Local (~60 MB once) ...");
27583
+ const sha256 = (await fetchText(DYNAMO_ZIP + ".sha256")).trim().split(/\s+/)[0];
27584
+ await downloader.archive(DYNAMO_ZIP, home, {
27585
+ sha256,
27586
+ locate: "DynamoDBLocal.jar",
27587
+ fileName: "dynamodb_local.zip"
27588
+ });
27589
+ }
27590
+ const data = mkdirp(dataFor("dynamodb"));
27591
+ await startServer(
27592
+ "dynamodb",
27593
+ java,
27594
+ [
27595
+ "-Djava.library.path=" + path17.join(home, "DynamoDBLocal_lib"),
27596
+ "-jar",
27597
+ path17.join(home, "DynamoDBLocal.jar"),
27598
+ "-sharedDb",
27599
+ "-dbPath",
27600
+ data,
27601
+ "-port",
27602
+ String(plan.port)
27603
+ ],
27604
+ plan.port
27605
+ );
27606
+ const endpoint = "http://localhost:" + plan.port;
27607
+ const aws = {
27608
+ AWS_ENDPOINT_URL_DYNAMODB: endpoint,
27609
+ DYNAMO_ENDPOINT: endpoint,
27610
+ AWS_ACCESS_KEY_ID: "local",
27611
+ AWS_SECRET_ACCESS_KEY: "local",
27612
+ AWS_REGION: "us-east-1",
27613
+ AWS_DEFAULT_REGION: "us-east-1"
27614
+ };
27615
+ Object.assign(env.vars, aws);
27616
+ env.summary.push(
27617
+ "dynamodb (DynamoDB Local): " + endpoint + " (AWS SDKs use it automatically via AWS_ENDPOINT_URL_DYNAMODB; dummy credentials)"
27618
+ );
27619
+ if (!plan.adminPort) return;
27620
+ const prefix = tool("dynamodb-admin");
27621
+ const script = path17.join(prefix, "node_modules", "dynamodb-admin", "dist", "dynamodb-admin.js");
27622
+ if (!exists(script)) {
27623
+ log("Installing dynamodb-admin, the DynamoDB web UI (~20 MB once) ...");
27624
+ const npmCli = path17.join(path17.dirname(process.execPath), "node_modules", "npm", "bin", "npm-cli.js");
27625
+ await execAsync(
27626
+ process.execPath,
27627
+ [npmCli, "install", "--global", "--prefix", prefix, "dynamodb-admin", "--no-fund", "--no-audit"],
27628
+ { stdio: "ignore" }
27629
+ );
27630
+ }
27631
+ if (await portOpen(plan.adminPort)) {
27632
+ env.summary.push(
27633
+ "dynamodb-admin: NOT started, port " + plan.adminPort + " is in use (change databases.dynamodb.adminPort)"
27634
+ );
27635
+ return;
27636
+ }
27637
+ const out = fs17.openSync(path17.join(logsDir, "dynamodb-admin.log"), "a");
27638
+ spawn3(
27639
+ process.execPath,
27640
+ [script, "--port", String(plan.adminPort), "--dynamo-endpoint", endpoint, "--skip-default-credentials"],
27641
+ { detached: true, stdio: ["ignore", out, out], windowsHide: true, env: { ...process.env, ...aws } }
27642
+ ).unref();
27643
+ fs17.closeSync(out);
27644
+ if (!await waitForPort(plan.adminPort, 30))
27645
+ throw new Error("dynamodb-admin did not start; see " + path17.join(logsDir, "dynamodb-admin.log"));
27646
+ env.summary.push(
27647
+ "dynamodb-admin: http://localhost:" + plan.adminPort + " (browse and edit tables in the sandbox's browser)"
27648
+ );
26336
27649
  }
26337
- const out = fs9.openSync(path10.join(logsDir, "dynamodb-admin.log"), "a");
26338
- spawn3(process.execPath, [script, "--port", String(plan.adminPort), "--dynamo-endpoint", endpoint, "--skip-default-credentials"], { detached: true, stdio: ["ignore", out, out], windowsHide: true, env: { ...process.env, ...aws } }).unref();
26339
- fs9.closeSync(out);
26340
- if (!await waitForPort(plan.adminPort, 30)) throw new Error("dynamodb-admin did not start; see " + path10.join(logsDir, "dynamodb-admin.log"));
26341
- env.summary.push("dynamodb-admin: http://localhost:" + plan.adminPort + " (browse and edit tables in the sandbox's browser)");
26342
27650
  };
26343
27651
 
26344
- // src/guest/toolchains/databases/mongodb.ts
26345
- import path11 from "node:path";
26346
- var setupMongo = async (env, plan) => {
26347
- const find2 = async () => {
26348
- const { versions } = await fetchJson("https://downloads.mongodb.org/full.json");
26349
- const prod = versions.filter((v) => v.production_release);
26350
- const hit = plan.version === "latest" ? prod[0] : prod.find((v) => v.version === plan.version || v.version.startsWith(plan.version + "."));
26351
- const archive = hit?.downloads.find((d) => d.target === "windows" && d.arch === "x86_64" && d.edition === "base")?.archive;
26352
- return hit && archive ? { version: hit.version, archive } : Promise.reject(new Error("No MongoDB " + plan.version + " for Windows"));
26353
- };
26354
- const version2 = await resolveCached("mongodb:" + plan.version, async () => (await find2()).version);
26355
- const home = tool("mongodb", version2);
26356
- if (!exists(path11.join(home, "bin", "mongod.exe"))) {
26357
- const { archive } = await find2();
26358
- log("Downloading MongoDB " + version2 + " (~400 MB once) ...");
26359
- await installArchive(archive.url, home, { sha256: archive.sha256, locate: "mongod.exe", up: 1 });
26360
- }
26361
- const shell = tool("mongosh");
26362
- if (!exists(path11.join(shell, "mongosh.exe"))) {
26363
- await installFromGithub("mongodb-js/mongosh", /^mongosh-[\d.]+-win32-x64\.zip$/, { dest: shell, what: "mongosh, the MongoDB shell (~50 MB once)", locate: "mongosh.exe" });
26364
- }
26365
- const data = mkdirp(dataFor("mongodb"));
26366
- await clearStaleLocks(data, ["mongod.lock"], plan.port);
26367
- await startServer("mongodb", path11.join(home, "bin", "mongod.exe"), ["--dbpath", data, "--bind_ip", "127.0.0.1", "--port", String(plan.port)], plan.port);
26368
- env.prepend.push(path11.join(home, "bin"), shell);
26369
- env.summary.push("mongodb " + version2 + ": mongodb://127.0.0.1:" + plan.port + " (mongosh on PATH)");
27652
+ // src/guest/databases/mongodb.ts
27653
+ import path18 from "node:path";
27654
+
27655
+ // src/guest/toolchains/install.ts
27656
+ async function installFromGithub(repo, pattern, o) {
27657
+ const asset = await githubAsset(repo, pattern, o.searchOlder);
27658
+ log("Downloading " + (typeof o.what === "string" ? o.what : o.what(asset)) + " ...");
27659
+ await downloader.archive(asset.url, o.dest, {
27660
+ sha256: asset.sha256,
27661
+ fileName: asset.name,
27662
+ ...o.locate ? { locate: o.locate } : {},
27663
+ ...o.up ? { up: o.up } : {}
27664
+ });
27665
+ }
27666
+
27667
+ // src/guest/databases/mongodb.ts
27668
+ var MongoServer = class extends DatabaseServer {
27669
+ id = "mongodb";
27670
+ async start(env, plan) {
27671
+ const find2 = async () => {
27672
+ const { versions } = await fetchJson("https://downloads.mongodb.org/full.json");
27673
+ const prod = versions.filter((v) => v.production_release);
27674
+ const hit = plan.version === "latest" ? prod[0] : prod.find((v) => v.version === plan.version || v.version.startsWith(plan.version + "."));
27675
+ const archive = hit?.downloads.find(
27676
+ (d) => d.target === "windows" && d.arch === "x86_64" && d.edition === "base"
27677
+ )?.archive;
27678
+ return hit && archive ? { version: hit.version, archive } : Promise.reject(new Error("No MongoDB " + plan.version + " for Windows"));
27679
+ };
27680
+ const version2 = await resolveCached("mongodb:" + plan.version, async () => (await find2()).version);
27681
+ const home = tool("mongodb", version2);
27682
+ if (!exists(path18.join(home, "bin", "mongod.exe"))) {
27683
+ const { archive } = await find2();
27684
+ log("Downloading MongoDB " + version2 + " (~400 MB once) ...");
27685
+ await downloader.archive(archive.url, home, { sha256: archive.sha256, locate: "mongod.exe", up: 1 });
27686
+ }
27687
+ const shell = tool("mongosh");
27688
+ if (!exists(path18.join(shell, "mongosh.exe"))) {
27689
+ await installFromGithub("mongodb-js/mongosh", /^mongosh-[\d.]+-win32-x64\.zip$/, {
27690
+ dest: shell,
27691
+ what: "mongosh, the MongoDB shell (~50 MB once)",
27692
+ locate: "mongosh.exe"
27693
+ });
27694
+ }
27695
+ const data = mkdirp(dataFor("mongodb"));
27696
+ await clearStaleLocks(data, ["mongod.lock"], plan.port);
27697
+ await startServer(
27698
+ "mongodb",
27699
+ path18.join(home, "bin", "mongod.exe"),
27700
+ ["--dbpath", data, "--bind_ip", "127.0.0.1", "--port", String(plan.port)],
27701
+ plan.port
27702
+ );
27703
+ env.prepend.push(path18.join(home, "bin"), shell);
27704
+ env.summary.push("mongodb " + version2 + ": mongodb://127.0.0.1:" + plan.port + " (mongosh on PATH)");
27705
+ }
26370
27706
  };
26371
27707
 
26372
- // src/guest/toolchains/databases/mysql.ts
26373
- import path12 from "node:path";
27708
+ // src/guest/databases/mysql.ts
27709
+ import path19 from "node:path";
26374
27710
  var MARIA = "https://downloads.mariadb.org/rest-api/mariadb/";
26375
- var setupMysql = async (env, plan) => {
26376
- const series = await resolveCached("mariadb:" + plan.version, async () => {
26377
- if (plan.version !== "lts") return plan.version;
26378
- const { major_releases: all } = await fetchJson(MARIA);
26379
- return all.find((r) => r.release_status === "Stable" && r.release_support_type === "Long Term Support")?.release_id ?? Promise.reject(new Error("No MariaDB LTS release found"));
26380
- });
26381
- const latest = async () => {
26382
- const { releases } = await fetchJson(MARIA + series + "/latest/");
26383
- const [version3, release] = Object.entries(releases)[0] ?? [];
26384
- const zip = release?.files.find((f) => /-winx64\.zip$/.test(f.file_name));
26385
- return zip ? { version: version3, zip } : Promise.reject(new Error("No MariaDB " + series + " zip for Windows"));
26386
- };
26387
- const version2 = await resolveCached("mariadb-version:" + series, async () => (await latest()).version);
26388
- const home = tool("mariadb", version2);
26389
- const bin = path12.join(home, "bin");
26390
- if (!exists(path12.join(bin, "mariadbd.exe"))) {
26391
- const { zip } = await latest();
26392
- log("Downloading MariaDB " + version2 + " (~90 MB once) ...");
26393
- await installArchive(zip.file_download_url.replace(/^http:/, "https:"), home, { sha256: zip.checksum?.sha256sum ?? null, locate: "mariadbd.exe", up: 1, fileName: zip.file_name });
26394
- }
26395
- const data = dataFor("mariadb");
26396
- await createOnce(data, "mysql", async () => {
26397
- log("Creating the MariaDB database (first start) ...");
26398
- await execAsync(path12.join(bin, "mariadb-install-db.exe"), ["--datadir=" + data, "--port=" + plan.port], { stdio: "ignore" });
26399
- });
26400
- await startServer("mysql", path12.join(bin, "mariadbd.exe"), ["--datadir=" + data, "--port=" + plan.port, "--bind-address=127.0.0.1", "--console"], plan.port);
26401
- Object.assign(env.vars, { MYSQL_HOST: "127.0.0.1", MYSQL_TCP_PORT: String(plan.port) });
26402
- env.prepend.push(bin);
26403
- env.summary.push("mysql (MariaDB " + version2 + "): 127.0.0.1:" + plan.port + ", user root, no password (mysql://root@127.0.0.1:" + plan.port + ")");
27711
+ var MysqlServer = class extends DatabaseServer {
27712
+ id = "mysql";
27713
+ async start(env, plan) {
27714
+ const series = await resolveCached("mariadb:" + plan.version, async () => {
27715
+ if (plan.version !== "lts") return plan.version;
27716
+ const { major_releases: all } = await fetchJson(MARIA);
27717
+ return all.find((r) => r.release_status === "Stable" && r.release_support_type === "Long Term Support")?.release_id ?? Promise.reject(new Error("No MariaDB LTS release found"));
27718
+ });
27719
+ const latest = async () => {
27720
+ const { releases } = await fetchJson(MARIA + series + "/latest/");
27721
+ const [version3, release] = Object.entries(releases)[0] ?? [];
27722
+ const zip = release?.files.find((f) => /-winx64\.zip$/.test(f.file_name));
27723
+ return zip ? { version: version3, zip } : Promise.reject(new Error("No MariaDB " + series + " zip for Windows"));
27724
+ };
27725
+ const version2 = await resolveCached("mariadb-version:" + series, async () => (await latest()).version);
27726
+ const home = tool("mariadb", version2);
27727
+ const bin = path19.join(home, "bin");
27728
+ if (!exists(path19.join(bin, "mariadbd.exe"))) {
27729
+ const { zip } = await latest();
27730
+ log("Downloading MariaDB " + version2 + " (~90 MB once) ...");
27731
+ await downloader.archive(zip.file_download_url.replace(/^http:/, "https:"), home, {
27732
+ sha256: zip.checksum?.sha256sum ?? null,
27733
+ locate: "mariadbd.exe",
27734
+ up: 1,
27735
+ fileName: zip.file_name
27736
+ });
27737
+ }
27738
+ const data = dataFor("mariadb");
27739
+ await createOnce(data, "mysql", async () => {
27740
+ log("Creating the MariaDB database (first start) ...");
27741
+ await execAsync(path19.join(bin, "mariadb-install-db.exe"), ["--datadir=" + data, "--port=" + plan.port], {
27742
+ stdio: "ignore"
27743
+ });
27744
+ });
27745
+ await startServer(
27746
+ "mysql",
27747
+ path19.join(bin, "mariadbd.exe"),
27748
+ ["--datadir=" + data, "--port=" + plan.port, "--bind-address=127.0.0.1", "--console"],
27749
+ plan.port
27750
+ );
27751
+ Object.assign(env.vars, { MYSQL_HOST: "127.0.0.1", MYSQL_TCP_PORT: String(plan.port) });
27752
+ env.prepend.push(bin);
27753
+ env.summary.push(
27754
+ "mysql (MariaDB " + version2 + "): 127.0.0.1:" + plan.port + ", user root, no password (mysql://root@127.0.0.1:" + plan.port + ")"
27755
+ );
27756
+ }
26404
27757
  };
26405
27758
 
26406
- // src/guest/toolchains/databases/postgres.ts
26407
- import path13 from "node:path";
26408
- var postgresData = (version2) => dataFor("postgres-" + version2.split(".")[0]);
26409
- var setupPostgres = async (env, plan) => {
26410
- const exact = await resolveCached("postgres:" + plan.version, async () => {
26411
- const versions = (await fetchJson("https://www.postgresql.org/versions.json")).filter((v) => v.supported);
26412
- const hit = plan.version === "latest" ? versions.find((v) => v.current) ?? versions[versions.length - 1] : versions.find((v) => v.major === plan.version.split(".")[0]);
26413
- return hit ? hit.major + "." + hit.latestMinor : Promise.reject(new Error("No supported PostgreSQL " + plan.version));
26414
- });
26415
- const home = tool("postgres", exact);
26416
- const bin = path13.join(home, "bin");
26417
- if (!exists(path13.join(bin, "pg_ctl.exe"))) {
26418
- log("Downloading PostgreSQL " + exact + " (~330 MB once) ...");
26419
- await installArchive("https://get.enterprisedb.com/postgresql/postgresql-" + exact + "-1-windows-x64-binaries.zip", home, {
26420
- locate: "pg_ctl.exe",
26421
- up: 1,
26422
- fileName: "postgresql-" + exact + ".zip",
26423
- members: ["pgsql/bin", "pgsql/lib", "pgsql/share", "pgsql/include"]
27759
+ // src/guest/databases/postgres.ts
27760
+ import fs18 from "node:fs";
27761
+ import path20 from "node:path";
27762
+ function postgresData(version2) {
27763
+ return dataFor("postgres-" + version2.split(".")[0]);
27764
+ }
27765
+ var PostgresServer = class extends DatabaseServer {
27766
+ id = "postgres";
27767
+ async start(env, plan) {
27768
+ const exact = await resolveCached("postgres:" + plan.version, async () => {
27769
+ const versions = (await fetchJson("https://www.postgresql.org/versions.json")).filter(
27770
+ (v) => v.supported
27771
+ );
27772
+ const hit = plan.version === "latest" ? versions.find((v) => v.current) ?? versions[versions.length - 1] : versions.find((v) => v.major === plan.version.split(".")[0]);
27773
+ return hit ? hit.major + "." + hit.latestMinor : Promise.reject(new Error("No supported PostgreSQL " + plan.version));
26424
27774
  });
27775
+ const home = tool("postgres", exact);
27776
+ const bin = path20.join(home, "bin");
27777
+ if (!exists(path20.join(bin, "pg_ctl.exe"))) {
27778
+ log("Downloading PostgreSQL " + exact + " (~330 MB once) ...");
27779
+ await downloader.archive(
27780
+ "https://get.enterprisedb.com/postgresql/postgresql-" + exact + "-1-windows-x64-binaries.zip",
27781
+ home,
27782
+ {
27783
+ locate: "pg_ctl.exe",
27784
+ up: 1,
27785
+ fileName: "postgresql-" + exact + ".zip",
27786
+ members: ["pgsql/bin", "pgsql/lib", "pgsql/share", "pgsql/include"]
27787
+ }
27788
+ );
27789
+ }
27790
+ const data = postgresData(exact);
27791
+ await createOnce(data, "PG_VERSION", async () => {
27792
+ log("Creating the PostgreSQL database (first start) ...");
27793
+ await execAsync(
27794
+ path20.join(bin, "initdb.exe"),
27795
+ ["-D", data, "-U", "postgres", "-A", "trust", "-E", "UTF8", "--locale=C"],
27796
+ { stdio: "ignore" }
27797
+ );
27798
+ });
27799
+ if (await portOpen(plan.port))
27800
+ throw new Error("port " + plan.port + " is already in use (change databases.postgres.port)");
27801
+ await clearStaleLocks(data, ["postmaster.pid"], plan.port);
27802
+ await execAsync(
27803
+ path20.join(bin, "pg_ctl.exe"),
27804
+ [
27805
+ "start",
27806
+ "-D",
27807
+ data,
27808
+ "-w",
27809
+ "-t",
27810
+ "60",
27811
+ "-l",
27812
+ path20.join(logsDir, "postgres.log"),
27813
+ "-o",
27814
+ "-p " + plan.port + " -c listen_addresses=localhost"
27815
+ ],
27816
+ { stdio: "ignore" }
27817
+ );
27818
+ Object.assign(env.vars, { PGHOST: "localhost", PGPORT: String(plan.port), PGUSER: "postgres" });
27819
+ env.prepend.push(bin);
27820
+ env.summary.push(
27821
+ "postgres " + exact + ": localhost:" + plan.port + ", user postgres, no password (postgres://postgres@localhost:" + plan.port + "/postgres)"
27822
+ );
27823
+ }
27824
+ /** Every installed version's cluster shuts down cleanly through pg_ctl first. */
27825
+ async stop(plan) {
27826
+ if (exists(tool("postgres"))) {
27827
+ for (const version2 of fs18.readdirSync(tool("postgres"))) {
27828
+ const data = postgresData(version2);
27829
+ const pgCtl = path20.join(tool("postgres", version2), "bin", "pg_ctl.exe");
27830
+ if (exists(path20.join(data, "postmaster.pid")) && exists(pgCtl))
27831
+ await execAsync(pgCtl, ["stop", "-D", data, "-m", "fast", "-w"], { stdio: "ignore" });
27832
+ }
27833
+ }
27834
+ await super.stop(plan);
26425
27835
  }
26426
- const data = postgresData(exact);
26427
- await createOnce(data, "PG_VERSION", async () => {
26428
- log("Creating the PostgreSQL database (first start) ...");
26429
- await execAsync(path13.join(bin, "initdb.exe"), ["-D", data, "-U", "postgres", "-A", "trust", "-E", "UTF8", "--locale=C"], { stdio: "ignore" });
26430
- });
26431
- if (await portOpen(plan.port)) throw new Error("port " + plan.port + " is already in use (change databases.postgres.port)");
26432
- await clearStaleLocks(data, ["postmaster.pid"], plan.port);
26433
- await execAsync(path13.join(bin, "pg_ctl.exe"), ["start", "-D", data, "-w", "-t", "60", "-l", path13.join(logsDir, "postgres.log"), "-o", "-p " + plan.port + " -c listen_addresses=localhost"], { stdio: "ignore" });
26434
- Object.assign(env.vars, { PGHOST: "localhost", PGPORT: String(plan.port), PGUSER: "postgres" });
26435
- env.prepend.push(bin);
26436
- env.summary.push("postgres " + exact + ": localhost:" + plan.port + ", user postgres, no password (postgres://postgres@localhost:" + plan.port + "/postgres)");
26437
27836
  };
26438
27837
 
26439
- // src/guest/toolchains/databases/redis.ts
26440
- import path14 from "node:path";
26441
- var setupRedis = async (env, plan) => {
26442
- const home = tool("redis");
26443
- if (!exists(path14.join(home, "redis-server.exe"))) {
26444
- await installFromGithub("redis-windows/redis-windows", /^Redis-[\d.]+-Windows-x64-msys2\.zip$/, { dest: home, what: (a) => "Redis (" + a.name + ", ~10 MB once)", locate: "redis-server.exe" });
26445
- }
26446
- const data = mkdirp(dataFor("redis"));
26447
- await startServer("redis", path14.join(home, "redis-server.exe"), ["--port", String(plan.port), "--bind", "127.0.0.1", "--dir", data.replace(/\\/g, "/"), "--appendonly", "yes"], plan.port);
26448
- env.prepend.push(home);
26449
- env.summary.push("redis: redis://127.0.0.1:" + plan.port + " (redis-cli on PATH)");
27838
+ // src/guest/databases/redis.ts
27839
+ import path21 from "node:path";
27840
+ var RedisServer = class extends DatabaseServer {
27841
+ id = "redis";
27842
+ async start(env, plan) {
27843
+ const home = tool("redis");
27844
+ if (!exists(path21.join(home, "redis-server.exe"))) {
27845
+ await installFromGithub("redis-windows/redis-windows", /^Redis-[\d.]+-Windows-x64-msys2\.zip$/, {
27846
+ dest: home,
27847
+ what: (a) => "Redis (" + a.name + ", ~10 MB once)",
27848
+ locate: "redis-server.exe"
27849
+ });
27850
+ }
27851
+ const data = mkdirp(dataFor("redis"));
27852
+ await startServer(
27853
+ "redis",
27854
+ path21.join(home, "redis-server.exe"),
27855
+ ["--port", String(plan.port), "--bind", "127.0.0.1", "--dir", data.replace(/\\/g, "/"), "--appendonly", "yes"],
27856
+ plan.port
27857
+ );
27858
+ env.prepend.push(home);
27859
+ env.summary.push("redis: redis://127.0.0.1:" + plan.port + " (redis-cli on PATH)");
27860
+ }
26450
27861
  };
26451
27862
 
26452
- // src/guest/toolchains/databases/index.ts
26453
- var SETUP = { postgres: setupPostgres, mysql: setupMysql, mongodb: setupMongo, redis: setupRedis, dynamodb: setupDynamo };
26454
- var DATABASE_NAMES = { postgres: "PostgreSQL", mysql: "MySQL (MariaDB)", mongodb: "MongoDB", redis: "Redis", dynamodb: "DynamoDB Local", sqlserver: "SQL Server" };
26455
- var listenerPid = (port) => {
26456
- const out = spawnSync2(SYSTEM.netstat(), ["-ano", "-p", "TCP"], { encoding: "utf8", windowsHide: true }).stdout ?? "";
26457
- const hit = out.split(/\r?\n/).map((l) => /^\s*TCP\s+\S+:(\d+)\s+\S+\s+LISTENING\s+(\d+)/.exec(l)).find((m) => m && Number(m[1]) === port);
26458
- return hit ? Number(hit[2]) : null;
27863
+ // src/guest/databases/registry.ts
27864
+ var SERVERS = {
27865
+ postgres: new PostgresServer(),
27866
+ mysql: new MysqlServer(),
27867
+ mongodb: new MongoServer(),
27868
+ redis: new RedisServer(),
27869
+ dynamodb: new DynamoServer()
26459
27870
  };
26460
- var stopDatabase = async (plan) => {
27871
+ async function stopDatabase(plan) {
26461
27872
  if (!await portOpen(plan.port)) return false;
26462
- if (plan.database === "postgres" && exists(tool("postgres"))) {
26463
- for (const version2 of fs10.readdirSync(tool("postgres"))) {
26464
- const data = postgresData(version2);
26465
- const pgCtl = path15.join(tool("postgres", version2), "bin", "pg_ctl.exe");
26466
- if (exists(path15.join(data, "postmaster.pid")) && exists(pgCtl)) await execAsync(pgCtl, ["stop", "-D", data, "-m", "fast", "-w"], { stdio: "ignore" });
26467
- }
26468
- }
26469
- for (const port of [plan.port, plan.adminPort ?? 0]) {
26470
- const pid = port && listenerPid(port);
26471
- if (pid) try {
26472
- process.kill(pid);
26473
- } catch {
26474
- }
26475
- }
27873
+ if (plan.database === "sqlserver") killListeners(plan);
27874
+ else await SERVERS[plan.database].stop(plan);
26476
27875
  return true;
26477
- };
26478
- var setupDatabase = async (env, plan) => {
27876
+ }
27877
+ async function setupDatabase(env, plan) {
26479
27878
  if (plan.database === "sqlserver") {
26480
- env.summary.push("sqlserver: NOT available (SQL Server cannot start inside Windows Sandbox). Switch the project to Postgres or SQLite for local work");
27879
+ env.summary.push(
27880
+ "sqlserver: NOT available (SQL Server cannot start inside Windows Sandbox). Switch the project to Postgres or SQLite for local work"
27881
+ );
26481
27882
  return;
26482
27883
  }
26483
27884
  if (dryRun) {
26484
- log("(dry run) would run " + DATABASE_NAMES[plan.database] + " on port " + plan.port + " (" + plan.reasons.join("; ") + ")");
27885
+ log(
27886
+ "(dry run) would run " + DATABASE_NAMES[plan.database] + " on port " + plan.port + " (" + plan.reasons.join("; ") + ")"
27887
+ );
26485
27888
  return;
26486
27889
  }
26487
27890
  if (duringSession() && await portOpen(plan.port)) {
26488
27891
  env.summary.push(plan.database + ": shared, already running on port " + plan.port);
26489
27892
  return;
26490
27893
  }
26491
- await SETUP[plan.database](env, plan);
26492
- };
27894
+ await SERVERS[plan.database].start(env, plan);
27895
+ }
26493
27896
 
26494
27897
  // src/guest/setup/environment.ts
26495
- var addMachineEnvironment = (vars, dirs, additive = false) => {
27898
+ function addMachineEnvironment(vars, dirs, additive = false) {
26496
27899
  if (!isWin || dryRun || testMode) return;
26497
- const script = [
26498
- "$vars = '" + JSON.stringify(vars).replace(/'/g, "''") + "' | ConvertFrom-Json",
26499
- "foreach ($p in $vars.PSObject.Properties) { " + (additive ? "if ([Environment]::GetEnvironmentVariable($p.Name, 'Machine')) { continue }; " : "") + "[Environment]::SetEnvironmentVariable($p.Name, [string]$p.Value, 'Machine') }",
26500
- "$path = [Environment]::GetEnvironmentVariable('Path', 'Machine') -split ';'",
26501
- "$add = '" + JSON.stringify(dirs).replace(/'/g, "''") + "' | ConvertFrom-Json | Where-Object { $path -notcontains $_ }",
26502
- "if ($add) { [Environment]::SetEnvironmentVariable('Path', (" + (additive ? "($path + @($add))" : "(@($add) + $path)") + " -join ';'), 'Machine') }"
26503
- ].join("\n");
26504
27900
  try {
26505
- powershell(script);
27901
+ runScriptWithJson("set-machine-environment.ps1", "SettingsFile", { vars, path: null, add: dirs, additive });
26506
27902
  } catch (e) {
26507
27903
  warn("Could not add to the environment: " + errMsg(e));
26508
27904
  }
26509
- };
27905
+ }
26510
27906
 
26511
- // src/guest/db.ts
27907
+ // src/guest/databases/sbx-db.ts
26512
27908
  var USAGE = "Usage: sbx-db [list] | sbx-db start <name> | sbx-db stop <name>";
26513
27909
  var projectPlans = () => {
26514
27910
  const file2 = process.env.AGENT_PROJECT_FILE;
26515
27911
  if (!file2) return null;
26516
27912
  try {
26517
- return ProjectSpec.safeParse(JSON.parse(fs11.readFileSync(file2, "utf8"))).data?.databases ?? null;
27913
+ return ProjectSpecSchema.safeParse(JSON.parse(fs19.readFileSync(file2, "utf8"))).data?.databases ?? null;
26518
27914
  } catch {
26519
27915
  return null;
26520
27916
  }
@@ -26526,7 +27922,10 @@ var plans = () => {
26526
27922
  var find = (name) => {
26527
27923
  const all = plans();
26528
27924
  const plan = all.find((p) => p.database === name?.toLowerCase());
26529
- if (!plan) throw new Error((name ? 'Unknown database "' + name + '". ' : "") + "Choose one of: " + all.map((p) => p.database).join(", "));
27925
+ if (!plan)
27926
+ throw new Error(
27927
+ (name ? 'Unknown database "' + name + '". ' : "") + "Choose one of: " + all.map((p) => p.database).join(", ")
27928
+ );
26530
27929
  if (plan.database === "sqlserver") throw new Error("SQL Server cannot run inside Windows Sandbox.");
26531
27930
  return plan;
26532
27931
  };
@@ -26556,17 +27955,23 @@ var stop = async (name) => {
26556
27955
  console.log(await stopDatabase(plan) ? "Stopped " + plan.database + "." : plan.database + " was not running.");
26557
27956
  return 0;
26558
27957
  };
26559
- var main = (args) => {
27958
+ function runSbxDb(args) {
26560
27959
  const [action = "list", name] = args;
26561
27960
  if (action === "list") return list();
26562
27961
  if (action === "start") return start(name);
26563
27962
  if (action === "stop") return stop(name);
26564
27963
  console.error(USAGE);
26565
27964
  return Promise.resolve(2);
26566
- };
26567
- main(process.argv.slice(2)).then((code) => {
26568
- process.exitCode = code;
26569
- }, (e) => {
26570
- console.error(errMsg(e));
26571
- process.exitCode = 1;
26572
- });
27965
+ }
27966
+
27967
+ // src/guest/entries/db.ts
27968
+ dropInheritedModulePath();
27969
+ runSbxDb(process.argv.slice(2)).then(
27970
+ (code) => {
27971
+ process.exitCode = code;
27972
+ },
27973
+ (e) => {
27974
+ console.error(errMsg(e));
27975
+ process.exitCode = 1;
27976
+ }
27977
+ );