windows-development-sandbox 1.4.1 → 1.4.3

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 (872) hide show
  1. package/config.example.json +3 -1
  2. package/dist/api.js +27 -16
  3. package/dist/cli/args.d.ts +4 -6
  4. package/dist/cli/args.js +67 -34
  5. package/dist/cli/argv.d.ts +9 -0
  6. package/dist/cli/argv.js +22 -0
  7. package/dist/cli/commands/accounts.d.ts +1 -1
  8. package/dist/cli/commands/accounts.js +42 -27
  9. package/dist/cli/commands/agent-commands.d.ts +3 -3
  10. package/dist/cli/commands/agent-commands.js +27 -18
  11. package/dist/cli/commands/context.d.ts +9 -11
  12. package/dist/cli/commands/context.js +35 -32
  13. package/dist/cli/commands/data/clean.d.ts +2 -2
  14. package/dist/cli/commands/data/clean.js +27 -11
  15. package/dist/cli/commands/data/collect.d.ts +6 -3
  16. package/dist/cli/commands/data/collect.js +46 -15
  17. package/dist/cli/commands/data/index.d.ts +2 -2
  18. package/dist/cli/commands/data/index.js +30 -12
  19. package/dist/cli/commands/data/remove.d.ts +1 -1
  20. package/dist/cli/commands/data/remove.js +4 -4
  21. package/dist/cli/commands/index.d.ts +5 -4
  22. package/dist/cli/commands/index.js +5 -4
  23. package/dist/cli/commands/launch/add-root.d.ts +7 -0
  24. package/dist/cli/commands/launch/add-root.js +64 -0
  25. package/dist/cli/commands/launch/boot-progress.d.ts +7 -0
  26. package/dist/cli/commands/launch/boot-progress.js +48 -0
  27. package/dist/cli/commands/launch/boot-wants.d.ts +11 -0
  28. package/dist/cli/commands/launch/boot-wants.js +48 -0
  29. package/dist/cli/commands/launch/first-start.d.ts +10 -0
  30. package/dist/cli/commands/launch/first-start.js +53 -0
  31. package/dist/cli/commands/launch/index.d.ts +6 -0
  32. package/dist/cli/commands/launch/index.js +6 -0
  33. package/dist/cli/commands/launch/launch.d.ts +8 -0
  34. package/dist/cli/commands/launch/launch.js +211 -0
  35. package/dist/cli/commands/launch/prepare.d.ts +23 -0
  36. package/dist/cli/commands/launch/prepare.js +109 -0
  37. package/dist/cli/commands/launch/running.d.ts +45 -0
  38. package/dist/cli/commands/launch/running.js +218 -0
  39. package/dist/cli/commands/launch/summary.d.ts +8 -0
  40. package/dist/cli/commands/launch/summary.js +98 -0
  41. package/dist/cli/commands/maintenance/audit.d.ts +3 -0
  42. package/dist/cli/commands/maintenance/audit.js +58 -0
  43. package/dist/cli/commands/maintenance/clean.d.ts +2 -0
  44. package/dist/cli/commands/maintenance/clean.js +10 -0
  45. package/dist/cli/commands/maintenance/config.d.ts +2 -0
  46. package/dist/cli/commands/maintenance/config.js +145 -0
  47. package/dist/cli/commands/maintenance/doctor.d.ts +2 -0
  48. package/dist/cli/commands/maintenance/doctor.js +52 -0
  49. package/dist/cli/commands/maintenance/host-claude.d.ts +2 -0
  50. package/dist/cli/commands/maintenance/host-claude.js +4 -0
  51. package/dist/cli/commands/maintenance/index.d.ts +8 -0
  52. package/dist/cli/commands/maintenance/index.js +9 -0
  53. package/dist/cli/commands/maintenance/logs.d.ts +2 -0
  54. package/dist/cli/commands/maintenance/logs.js +44 -0
  55. package/dist/cli/commands/maintenance/sync.d.ts +2 -0
  56. package/dist/cli/commands/maintenance/sync.js +12 -0
  57. package/dist/cli/commands/maintenance/watch.d.ts +3 -0
  58. package/dist/cli/commands/maintenance/watch.js +6 -0
  59. package/dist/cli/commands/projects/describe-sessions.d.ts +3 -0
  60. package/dist/cli/commands/projects/describe-sessions.js +15 -0
  61. package/dist/cli/commands/projects/here.d.ts +38 -0
  62. package/dist/cli/commands/projects/here.js +145 -0
  63. package/dist/cli/commands/projects/index.d.ts +4 -0
  64. package/dist/cli/commands/projects/index.js +4 -0
  65. package/dist/cli/commands/projects/projects.d.ts +14 -0
  66. package/dist/cli/commands/projects/projects.js +213 -0
  67. package/dist/cli/commands/projects/restart.d.ts +15 -0
  68. package/dist/cli/commands/projects/restart.js +149 -0
  69. package/dist/cli/commands/registry.d.ts +3 -0
  70. package/dist/cli/commands/registry.js +34 -0
  71. package/dist/cli/commands/repair/checks.js +105 -29
  72. package/dist/cli/commands/repair/finders.d.ts +13 -10
  73. package/dist/cli/commands/repair/finders.js +63 -43
  74. package/dist/cli/commands/repair/index.d.ts +4 -4
  75. package/dist/cli/commands/repair/index.js +47 -21
  76. package/dist/cli/commands/repair/types.d.ts +2 -2
  77. package/dist/cli/commands/repair/types.js +7 -2
  78. package/dist/cli/commands/sessions/attach.d.ts +2 -0
  79. package/dist/cli/commands/sessions/attach.js +45 -0
  80. package/dist/cli/commands/sessions/control.d.ts +4 -0
  81. package/dist/cli/commands/sessions/control.js +62 -0
  82. package/dist/cli/commands/sessions/exec.d.ts +6 -0
  83. package/dist/cli/commands/sessions/exec.js +72 -0
  84. package/dist/cli/commands/sessions/index.d.ts +6 -0
  85. package/dist/cli/commands/sessions/index.js +9 -0
  86. package/dist/cli/commands/sessions/list.d.ts +15 -0
  87. package/dist/cli/commands/sessions/list.js +65 -0
  88. package/dist/cli/commands/sessions/status.d.ts +2 -0
  89. package/dist/cli/commands/sessions/status.js +153 -0
  90. package/dist/cli/commands/sessions/window.d.ts +3 -0
  91. package/dist/cli/commands/sessions/window.js +18 -0
  92. package/dist/cli/commands/setup/checks.d.ts +4 -4
  93. package/dist/cli/commands/setup/checks.js +36 -19
  94. package/dist/cli/commands/setup/facts.d.ts +6 -6
  95. package/dist/cli/commands/setup/facts.js +23 -11
  96. package/dist/cli/commands/setup/index.d.ts +1 -1
  97. package/dist/cli/commands/setup/index.js +25 -12
  98. package/dist/cli/commands/user-config.d.ts +5 -5
  99. package/dist/cli/commands/user-config.js +14 -12
  100. package/dist/cli/history.d.ts +5 -4
  101. package/dist/cli/history.js +23 -11
  102. package/dist/cli/index.d.ts +4 -14
  103. package/dist/cli/index.js +27 -77
  104. package/dist/cli/manifest.d.ts +464 -10
  105. package/dist/cli/manifest.js +327 -53
  106. package/dist/cli/menu/apps.d.ts +7 -5
  107. package/dist/cli/menu/apps.js +64 -16
  108. package/dist/cli/menu/command-fields.d.ts +15 -0
  109. package/dist/cli/menu/command-fields.js +23 -0
  110. package/dist/cli/menu/command-form.d.ts +3 -5
  111. package/dist/cli/menu/command-form.js +116 -48
  112. package/dist/cli/menu/home.d.ts +22 -0
  113. package/dist/cli/menu/home.js +72 -0
  114. package/dist/cli/menu/index.d.ts +2 -24
  115. package/dist/cli/menu/index.js +4 -178
  116. package/dist/cli/menu/menu.d.ts +23 -0
  117. package/dist/cli/menu/menu.js +185 -0
  118. package/dist/cli/menu/settings/categories.d.ts +2 -2
  119. package/dist/cli/menu/settings/categories.js +123 -20
  120. package/dist/cli/menu/settings/collections/collection-editor.d.ts +23 -0
  121. package/dist/cli/menu/settings/collections/collection-editor.js +89 -0
  122. package/dist/cli/menu/settings/collections/map-editor.d.ts +10 -0
  123. package/dist/cli/menu/settings/collections/map-editor.js +34 -0
  124. package/dist/cli/menu/settings/collections/object-list-editor.d.ts +10 -0
  125. package/dist/cli/menu/settings/collections/object-list-editor.js +23 -0
  126. package/dist/cli/menu/settings/collections/object-map-editor.d.ts +10 -0
  127. package/dist/cli/menu/settings/collections/object-map-editor.js +35 -0
  128. package/dist/cli/menu/settings/collections/string-list-editor.d.ts +12 -0
  129. package/dist/cli/menu/settings/collections/string-list-editor.js +39 -0
  130. package/dist/cli/menu/settings/config-file.d.ts +2 -2
  131. package/dist/cli/menu/settings/config-file.js +42 -19
  132. package/dist/cli/menu/settings/editor-actions.d.ts +2 -0
  133. package/dist/cli/menu/settings/editor-actions.js +2 -0
  134. package/dist/cli/menu/settings/format.d.ts +5 -0
  135. package/dist/cli/menu/settings/format.js +39 -0
  136. package/dist/cli/menu/settings/index.d.ts +1 -29
  137. package/dist/cli/menu/settings/index.js +1 -133
  138. package/dist/cli/menu/settings/object-editor.d.ts +12 -0
  139. package/dist/cli/menu/settings/object-editor.js +86 -0
  140. package/dist/cli/menu/settings/schema-node.d.ts +3 -1
  141. package/dist/cli/menu/settings/schema-node.js +71 -24
  142. package/dist/cli/menu/settings/settings-editor.d.ts +30 -0
  143. package/dist/cli/menu/settings/settings-editor.js +176 -0
  144. package/dist/cli/menu/settings/{editors.d.ts → value-editor.d.ts} +2 -13
  145. package/dist/cli/menu/settings/value-editor.js +137 -0
  146. package/dist/cli/menu/several.d.ts +4 -4
  147. package/dist/cli/menu/several.js +61 -20
  148. package/dist/cli/{colors.d.ts → output/colors.d.ts} +8 -8
  149. package/dist/cli/{colors.js → output/colors.js} +32 -14
  150. package/dist/cli/output/index.d.ts +3 -0
  151. package/dist/cli/output/index.js +3 -0
  152. package/dist/cli/output/print.d.ts +5 -0
  153. package/dist/cli/output/print.js +14 -0
  154. package/dist/cli/{progress.d.ts → output/progress.d.ts} +5 -5
  155. package/dist/cli/{progress.js → output/progress.js} +42 -19
  156. package/dist/cli/report.d.ts +2 -0
  157. package/dist/cli/report.js +20 -0
  158. package/dist/cli/tui/app.d.ts +6 -16
  159. package/dist/cli/tui/app.js +28 -8
  160. package/dist/cli/tui/dialogs/confirm-screen.d.ts +20 -0
  161. package/dist/cli/tui/dialogs/confirm-screen.js +50 -0
  162. package/dist/cli/tui/dialogs/message-screen.d.ts +17 -0
  163. package/dist/cli/tui/dialogs/message-screen.js +55 -0
  164. package/dist/cli/tui/dialogs/paragraphs.d.ts +2 -0
  165. package/dist/cli/tui/dialogs/paragraphs.js +5 -0
  166. package/dist/cli/tui/dialogs/text-screen.d.ts +26 -0
  167. package/dist/cli/tui/dialogs/text-screen.js +107 -0
  168. package/dist/cli/tui/frame.js +3 -1
  169. package/dist/cli/tui/index.d.ts +7 -3
  170. package/dist/cli/tui/index.js +4 -2
  171. package/dist/cli/tui/list/list-screen.d.ts +29 -0
  172. package/dist/cli/tui/{list-screen.js → list/list-screen.js} +86 -23
  173. package/dist/cli/tui/{list-screen.d.ts → list/list-types.d.ts} +0 -28
  174. package/dist/cli/tui/screen.d.ts +14 -0
  175. package/dist/cli/tui/terminal.js +34 -10
  176. package/dist/cli/tui/text.d.ts +2 -1
  177. package/dist/cli/tui/text.js +37 -7
  178. package/dist/cli/tui/theme.js +27 -9
  179. package/dist/cli/validate.d.ts +8 -8
  180. package/dist/cli/validate.js +32 -21
  181. package/dist/core/config/defaults.d.ts +2 -0
  182. package/dist/core/config/defaults.js +203 -0
  183. package/dist/core/config/index.d.ts +2 -0
  184. package/dist/core/config/index.js +3 -0
  185. package/dist/core/{config.d.ts → config/loader.d.ts} +1 -2
  186. package/dist/core/config/loader.js +47 -0
  187. package/dist/core/{detect-databases.js → detect/databases.js} +111 -23
  188. package/dist/core/detect/index.d.ts +4 -0
  189. package/dist/core/detect/index.js +4 -0
  190. package/dist/core/{detect-pwsh.d.ts → detect/pwsh.d.ts} +1 -1
  191. package/dist/core/{detect-pwsh.js → detect/pwsh.js} +25 -11
  192. package/dist/core/{detect-toolchains.d.ts → detect/toolchains.d.ts} +1 -1
  193. package/dist/core/{detect-toolchains.js → detect/toolchains.js} +42 -5
  194. package/dist/{guest/toolchains → core/detect}/versions.js +28 -12
  195. package/dist/core/disk.d.ts +2 -0
  196. package/dist/core/disk.js +46 -3
  197. package/dist/core/local-config/boot-wants.d.ts +45 -0
  198. package/dist/core/local-config/boot-wants.js +120 -0
  199. package/dist/core/local-config/file.d.ts +3 -0
  200. package/dist/core/local-config/file.js +16 -0
  201. package/dist/core/local-config/index.d.ts +5 -0
  202. package/dist/core/local-config/index.js +7 -0
  203. package/dist/core/{local-config.d.ts → local-config/overrides.d.ts} +3 -18
  204. package/dist/core/{local-config.js → local-config/overrides.js} +45 -52
  205. package/dist/core/local-config/policy.d.ts +19 -0
  206. package/dist/core/local-config/policy.js +45 -0
  207. package/dist/core/local-config/trust.d.ts +13 -0
  208. package/dist/core/local-config/trust.js +43 -0
  209. package/dist/core/package-info.d.ts +4 -0
  210. package/dist/core/package-info.js +13 -0
  211. package/dist/core/run/guest-workspace.d.ts +23 -0
  212. package/dist/core/run/guest-workspace.js +47 -0
  213. package/dist/core/run/index.d.ts +3 -0
  214. package/dist/core/run/index.js +3 -0
  215. package/dist/core/run/resolve-run.d.ts +3 -0
  216. package/dist/core/run/resolve-run.js +202 -0
  217. package/dist/core/run/versions.d.ts +13 -0
  218. package/dist/core/run/versions.js +65 -0
  219. package/dist/core/safe-paths.js +17 -5
  220. package/dist/core/schema/apps.d.ts +4 -4
  221. package/dist/core/schema/apps.js +55 -21
  222. package/dist/core/schema/common.d.ts +13 -10
  223. package/dist/core/schema/common.js +16 -10
  224. package/dist/core/schema/config.d.ts +15 -10
  225. package/dist/core/schema/config.js +78 -53
  226. package/dist/core/schema/databases.d.ts +4 -3
  227. package/dist/core/schema/databases.js +16 -12
  228. package/dist/core/schema/harness.d.ts +1 -1
  229. package/dist/core/schema/harness.js +17 -7
  230. package/dist/core/schema/index.d.ts +6 -0
  231. package/dist/core/schema/index.js +8 -0
  232. package/dist/core/schema/json-schema.js +10 -5
  233. package/dist/core/schema/profile.d.ts +4 -4
  234. package/dist/core/schema/profile.js +37 -17
  235. package/dist/core/schema/projects.d.ts +1 -1
  236. package/dist/core/schema/projects.js +16 -6
  237. package/dist/core/schema/sandbox.d.ts +11 -11
  238. package/dist/core/schema/sandbox.js +101 -37
  239. package/dist/core/schema/toolchains.d.ts +6 -1
  240. package/dist/core/schema/toolchains.js +84 -34
  241. package/dist/core/types.d.ts +19 -9
  242. package/dist/core/util/errors.d.ts +8 -0
  243. package/dist/core/util/errors.js +14 -0
  244. package/dist/core/util/fs.d.ts +8 -0
  245. package/dist/core/util/fs.js +40 -0
  246. package/dist/core/util/index.d.ts +7 -0
  247. package/dist/core/util/index.js +7 -0
  248. package/dist/core/util/jsonc.d.ts +6 -0
  249. package/dist/core/util/jsonc.js +25 -0
  250. package/dist/core/util/links.d.ts +10 -0
  251. package/dist/core/util/links.js +39 -0
  252. package/dist/core/util/paths.d.ts +7 -0
  253. package/dist/core/util/paths.js +33 -0
  254. package/dist/core/util/process.d.ts +15 -0
  255. package/dist/core/util/process.js +54 -0
  256. package/dist/core/util/text.d.ts +8 -0
  257. package/dist/core/util/text.js +8 -0
  258. package/dist/guest/{setup/agents.js → agents/agent-installer.js} +24 -4
  259. package/dist/guest/apps/after-install.d.ts +3 -0
  260. package/dist/guest/apps/after-install.js +47 -0
  261. package/dist/guest/apps/app-installer.d.ts +22 -0
  262. package/dist/guest/apps/app-installer.js +116 -0
  263. package/dist/guest/apps/find-exe.d.ts +5 -0
  264. package/dist/guest/apps/find-exe.js +41 -0
  265. package/dist/guest/apps/index.d.ts +3 -10
  266. package/dist/guest/apps/index.js +6 -206
  267. package/dist/guest/apps/resolvers.js +37 -9
  268. package/dist/guest/apps/shortcuts.d.ts +6 -0
  269. package/dist/guest/apps/shortcuts.js +28 -0
  270. package/dist/guest/apps/sources.d.ts +4 -0
  271. package/dist/guest/apps/sources.js +17 -0
  272. package/dist/guest/apps/unpack.d.ts +3 -0
  273. package/dist/guest/apps/unpack.js +47 -0
  274. package/dist/guest/{audit-parse.js → audit/parse.js} +39 -3
  275. package/dist/guest/{audit.d.ts → audit/process-audit.d.ts} +3 -1
  276. package/dist/guest/{audit.js → audit/process-audit.js} +33 -8
  277. package/dist/guest/boot/boot-env.d.ts +4 -0
  278. package/dist/guest/{boot-env.js → boot/boot-env.js} +7 -5
  279. package/dist/guest/boot/boot.d.ts +1 -0
  280. package/dist/guest/{main.js → boot/boot.js} +96 -50
  281. package/dist/guest/{guide.js → boot/guide.js} +32 -7
  282. package/dist/guest/{project-env.d.ts → boot/project-env.d.ts} +3 -3
  283. package/dist/guest/{project-env.js → boot/project-env.js} +12 -4
  284. package/dist/guest/boot/project-status.d.ts +5 -0
  285. package/dist/guest/boot/project-status.js +28 -0
  286. package/dist/guest/daemon/daemon.d.ts +1 -0
  287. package/dist/guest/daemon/daemon.js +51 -0
  288. package/dist/guest/daemon/exec.js +18 -6
  289. package/dist/guest/daemon/{shutdown.js → idle-shutdown.js} +5 -4
  290. package/dist/guest/daemon/{project.d.ts → project-provisioner.d.ts} +3 -3
  291. package/dist/guest/daemon/{project.js → project-provisioner.js} +60 -22
  292. package/dist/guest/daemon/relays.js +5 -3
  293. package/dist/guest/daemon/{session.js → sessions.js} +84 -24
  294. package/dist/guest/daemon/state.d.ts +4 -1
  295. package/dist/guest/daemon/state.js +34 -20
  296. package/dist/guest/databases/database-server.d.ts +13 -0
  297. package/dist/guest/databases/database-server.js +35 -0
  298. package/dist/guest/databases/dynamodb.d.ts +12 -0
  299. package/dist/guest/databases/dynamodb.js +81 -0
  300. package/dist/guest/databases/index.d.ts +2 -0
  301. package/dist/guest/databases/index.js +2 -0
  302. package/dist/guest/databases/mongodb.d.ts +7 -0
  303. package/dist/guest/databases/mongodb.js +46 -0
  304. package/dist/guest/databases/mysql.d.ts +7 -0
  305. package/dist/guest/databases/mysql.js +59 -0
  306. package/dist/guest/databases/names.d.ts +5 -0
  307. package/dist/guest/databases/names.js +8 -0
  308. package/dist/guest/databases/postgres.d.ts +9 -0
  309. package/dist/guest/databases/postgres.js +85 -0
  310. package/dist/guest/databases/redis.d.ts +7 -0
  311. package/dist/guest/databases/redis.js +25 -0
  312. package/dist/guest/databases/registry.d.ts +5 -0
  313. package/dist/guest/databases/registry.js +51 -0
  314. package/dist/guest/databases/sbx-db.d.ts +1 -0
  315. package/dist/guest/{db.js → databases/sbx-db.js} +13 -13
  316. package/dist/guest/{toolchains/databases → databases}/server.d.ts +5 -5
  317. package/dist/guest/{toolchains/databases → databases}/server.js +18 -13
  318. package/dist/guest/entries/daemon.js +16 -0
  319. package/dist/guest/entries/db.js +10 -0
  320. package/dist/guest/entries/gitguard.js +20 -0
  321. package/dist/guest/entries/main.d.ts +1 -0
  322. package/dist/guest/entries/main.js +24 -0
  323. package/dist/guest/entries/netproxy.d.ts +1 -0
  324. package/dist/guest/entries/netproxy.js +7 -0
  325. package/dist/guest/entries/view.d.ts +1 -0
  326. package/dist/guest/entries/view.js +11 -0
  327. package/dist/guest/{gitguard.js → git/decision.js} +49 -26
  328. package/dist/guest/network/addresses.d.ts +2 -0
  329. package/dist/guest/network/addresses.js +6 -0
  330. package/dist/guest/{setup/network.d.ts → network/allow-only.d.ts} +0 -10
  331. package/dist/guest/network/allow-only.js +84 -0
  332. package/dist/guest/network/firewall.d.ts +9 -0
  333. package/dist/guest/{setup/network.js → network/firewall.js} +58 -63
  334. package/dist/guest/network/proxy-server.d.ts +2 -0
  335. package/dist/guest/{netproxy.js → network/proxy-server.js} +37 -18
  336. package/dist/guest/{helpers.d.ts → runtime/csc.d.ts} +1 -1
  337. package/dist/guest/{helpers.js → runtime/csc.js} +7 -2
  338. package/dist/guest/runtime/fs.d.ts +2 -0
  339. package/dist/guest/runtime/fs.js +6 -0
  340. package/dist/guest/runtime/log.d.ts +3 -0
  341. package/dist/guest/runtime/log.js +22 -0
  342. package/dist/guest/runtime/paths.d.ts +13 -0
  343. package/dist/guest/runtime/paths.js +14 -0
  344. package/dist/guest/{ports.js → runtime/ports.js} +8 -2
  345. package/dist/guest/runtime/process.d.ts +15 -0
  346. package/dist/guest/runtime/process.js +59 -0
  347. package/dist/guest/{project-context.js → runtime/project-context.js} +1 -1
  348. package/dist/guest/runtime/session.d.ts +5 -0
  349. package/dist/guest/runtime/session.js +10 -0
  350. package/dist/guest/runtime/status.d.ts +7 -0
  351. package/dist/guest/runtime/status.js +57 -0
  352. package/dist/guest/{cmdline.js → sessions/cmdline.js} +10 -4
  353. package/dist/guest/{ptyhost.js → sessions/pty-host.js} +12 -5
  354. package/dist/guest/{view.js → sessions/viewer.js} +8 -11
  355. package/dist/guest/setup/claude-mem.d.ts +10 -0
  356. package/dist/guest/setup/{claude.js → claude-mem.js} +18 -78
  357. package/dist/guest/setup/{claude.d.ts → claude-profile.d.ts} +0 -10
  358. package/dist/guest/setup/claude-profile.js +89 -0
  359. package/dist/guest/setup/desktop.d.ts +2 -0
  360. package/dist/guest/setup/desktop.js +32 -0
  361. package/dist/guest/setup/environment.js +28 -5
  362. package/dist/guest/setup/{user.d.ts → git-identity.d.ts} +0 -2
  363. package/dist/guest/setup/git-identity.js +34 -0
  364. package/dist/guest/{gitrules.d.ts → setup/git-rules.d.ts} +1 -1
  365. package/dist/guest/setup/git-rules.js +50 -0
  366. package/dist/guest/setup/hooks.js +22 -5
  367. package/dist/guest/setup/{policy.js → managed-policy.js} +2 -2
  368. package/dist/guest/toolchains/catalogue.d.ts +4 -4
  369. package/dist/guest/toolchains/catalogue.js +30 -7
  370. package/dist/guest/toolchains/detect.d.ts +12 -0
  371. package/dist/guest/toolchains/detect.js +54 -0
  372. package/dist/guest/toolchains/index.d.ts +3 -17
  373. package/dist/guest/toolchains/index.js +1 -106
  374. package/dist/guest/toolchains/install.d.ts +20 -0
  375. package/dist/guest/toolchains/install.js +29 -0
  376. package/dist/guest/toolchains/languages/go.d.ts +3 -0
  377. package/dist/guest/toolchains/{go.js → languages/go.js} +27 -9
  378. package/dist/guest/toolchains/languages/java.d.ts +8 -0
  379. package/dist/guest/toolchains/{java.js → languages/java.js} +57 -18
  380. package/dist/guest/toolchains/languages/node.d.ts +3 -0
  381. package/dist/guest/toolchains/{node.js → languages/node.js} +51 -18
  382. package/dist/guest/toolchains/languages/php.d.ts +3 -0
  383. package/dist/guest/toolchains/{scripting → languages}/php.js +36 -11
  384. package/dist/guest/toolchains/languages/python-tools.d.ts +3 -0
  385. package/dist/guest/toolchains/languages/python-tools.js +12 -0
  386. package/dist/guest/toolchains/languages/python.d.ts +3 -0
  387. package/dist/guest/toolchains/{python.js → languages/python.js} +29 -16
  388. package/dist/guest/toolchains/languages/ruby.d.ts +3 -0
  389. package/dist/guest/toolchains/{scripting → languages}/ruby.js +28 -10
  390. package/dist/guest/toolchains/leftovers.d.ts +1 -1
  391. package/dist/guest/toolchains/leftovers.js +13 -11
  392. package/dist/guest/toolchains/managers.d.ts +6 -6
  393. package/dist/guest/toolchains/managers.js +38 -17
  394. package/dist/guest/toolchains/native/binstall.d.ts +3 -2
  395. package/dist/guest/toolchains/native/binstall.js +20 -8
  396. package/dist/guest/toolchains/native/cpp.d.ts +2 -2
  397. package/dist/guest/toolchains/native/cpp.js +23 -8
  398. package/dist/guest/toolchains/native/dotnet.d.ts +5 -3
  399. package/dist/guest/toolchains/native/dotnet.js +72 -24
  400. package/dist/guest/toolchains/native/mesa.d.ts +2 -2
  401. package/dist/guest/toolchains/native/mesa.js +27 -10
  402. package/dist/guest/toolchains/native/msvc/environment.d.ts +4 -4
  403. package/dist/guest/toolchains/native/msvc/environment.js +30 -16
  404. package/dist/guest/toolchains/native/msvc/index.d.ts +3 -3
  405. package/dist/guest/toolchains/native/msvc/index.js +10 -8
  406. package/dist/guest/toolchains/native/msvc/packages.d.ts +1 -1
  407. package/dist/guest/toolchains/native/msvc/packages.js +69 -23
  408. package/dist/guest/toolchains/native/msvc/tree.d.ts +6 -6
  409. package/dist/guest/toolchains/native/msvc/tree.js +15 -9
  410. package/dist/guest/toolchains/native/rust-extras.d.ts +23 -0
  411. package/dist/guest/toolchains/native/rust-extras.js +100 -0
  412. package/dist/guest/toolchains/native/rust.d.ts +2 -2
  413. package/dist/guest/toolchains/native/rust.js +41 -10
  414. package/dist/guest/toolchains/{scripting → native}/vcruntime.d.ts +2 -2
  415. package/dist/guest/toolchains/{scripting → native}/vcruntime.js +17 -7
  416. package/dist/guest/toolchains/package-ledger.d.ts +17 -0
  417. package/dist/guest/toolchains/package-ledger.js +54 -0
  418. package/dist/guest/toolchains/plan.d.ts +3 -24
  419. package/dist/guest/toolchains/plan.js +99 -111
  420. package/dist/guest/toolchains/runtimes.d.ts +6 -6
  421. package/dist/guest/toolchains/runtimes.js +31 -13
  422. package/dist/guest/toolchains/scheduler.d.ts +22 -0
  423. package/dist/guest/toolchains/scheduler.js +123 -0
  424. package/dist/guest/toolchains/setup.d.ts +10 -0
  425. package/dist/guest/toolchains/setup.js +22 -0
  426. package/dist/guest/toolchains/state-file.d.ts +3 -0
  427. package/dist/guest/toolchains/state-file.js +10 -0
  428. package/dist/guest/toolchains/step.d.ts +24 -0
  429. package/dist/guest/toolchains/step.js +1 -0
  430. package/dist/guest/toolchains/tool-env.d.ts +12 -0
  431. package/dist/guest/toolchains/tool-env.js +16 -0
  432. package/dist/guest/toolchains/tools/cli.d.ts +10 -0
  433. package/dist/guest/toolchains/{cli.js → tools/cli.js} +35 -15
  434. package/dist/guest/toolchains/tools/git.d.ts +3 -0
  435. package/dist/guest/toolchains/{git.js → tools/git.js} +38 -15
  436. package/dist/guest/toolchains/tools/pwsh.d.ts +4 -0
  437. package/dist/guest/toolchains/{pwsh.js → tools/pwsh.js} +14 -7
  438. package/dist/guest/toolchains/{vscode-profile.d.ts → tools/vscode-profile.d.ts} +6 -6
  439. package/dist/guest/toolchains/{vscode-profile.js → tools/vscode-profile.js} +28 -12
  440. package/dist/guest/toolchains/{vscode.d.ts → tools/vscode.d.ts} +6 -6
  441. package/dist/guest/toolchains/{vscode.js → tools/vscode.js} +67 -21
  442. package/dist/guest/toolchains/version-cache.d.ts +16 -0
  443. package/dist/guest/toolchains/version-cache.js +67 -0
  444. package/dist/host/agent-commands/commands.d.ts +13 -0
  445. package/dist/host/agent-commands/commands.js +33 -0
  446. package/dist/host/agent-commands/forwarders.d.ts +7 -0
  447. package/dist/host/agent-commands/forwarders.js +31 -0
  448. package/dist/host/agent-commands/index.d.ts +4 -0
  449. package/dist/host/agent-commands/index.js +4 -0
  450. package/dist/host/agent-commands/reconcile.d.ts +12 -0
  451. package/dist/host/agent-commands/reconcile.js +69 -0
  452. package/dist/host/agent-commands/user-path.d.ts +2 -0
  453. package/dist/host/agent-commands/user-path.js +33 -0
  454. package/dist/host/audit/collect.d.ts +2 -2
  455. package/dist/host/audit/collect.js +59 -22
  456. package/dist/host/audit/log.d.ts +2 -2
  457. package/dist/host/audit/log.js +24 -8
  458. package/dist/host/{attach.d.ts → channel/attach.d.ts} +2 -2
  459. package/dist/host/{attach.js → channel/attach.js} +33 -15
  460. package/dist/host/channel/channel.d.ts +51 -0
  461. package/dist/host/channel/channel.js +196 -0
  462. package/dist/host/channel/index.d.ts +2 -0
  463. package/dist/host/channel/index.js +2 -0
  464. package/dist/host/guard/agent-files.d.ts +7 -0
  465. package/dist/host/guard/agent-files.js +103 -0
  466. package/dist/host/guard/commands.d.ts +10 -0
  467. package/dist/host/guard/commands.js +123 -0
  468. package/dist/host/guard/file-hash.d.ts +4 -0
  469. package/dist/host/guard/file-hash.js +37 -0
  470. package/dist/host/guard/git-config.d.ts +5 -0
  471. package/dist/host/guard/git-config.js +62 -0
  472. package/dist/host/guard/git-dirs.d.ts +12 -0
  473. package/dist/host/guard/git-dirs.js +53 -0
  474. package/dist/host/guard/index.d.ts +5 -0
  475. package/dist/host/guard/index.js +4 -0
  476. package/dist/host/guard/mark-of-the-web.d.ts +8 -0
  477. package/dist/host/guard/mark-of-the-web.js +74 -0
  478. package/dist/host/guard/nested-repos.d.ts +14 -0
  479. package/dist/host/guard/nested-repos.js +88 -0
  480. package/dist/host/guard/quarantine.d.ts +3 -0
  481. package/dist/host/guard/quarantine.js +24 -0
  482. package/dist/host/guard/repo-guard.d.ts +10 -0
  483. package/dist/host/guard/repo-guard.js +36 -0
  484. package/dist/host/guard/store.d.ts +40 -0
  485. package/dist/host/guard/store.js +145 -0
  486. package/dist/host/guard/types.d.ts +27 -0
  487. package/dist/host/guard/types.js +3 -0
  488. package/dist/host/guard/watch-state.d.ts +9 -0
  489. package/dist/host/guard/watch-state.js +26 -0
  490. package/dist/host/launch/boot-projects.d.ts +17 -0
  491. package/dist/host/launch/{projects.js → boot-projects.js} +22 -13
  492. package/dist/host/{database-plan.d.ts → launch/database-plan.d.ts} +5 -5
  493. package/dist/host/{database-plan.js → launch/database-plan.js} +24 -13
  494. package/dist/host/launch/generate.d.ts +4 -0
  495. package/dist/host/launch/generate.js +77 -0
  496. package/dist/host/launch/index.d.ts +10 -0
  497. package/dist/host/launch/index.js +10 -0
  498. package/dist/host/launch/mappings.d.ts +5 -5
  499. package/dist/host/launch/mappings.js +37 -24
  500. package/dist/host/launch/pc-scan.d.ts +5 -0
  501. package/dist/host/{pc-scan.js → launch/pc-scan.js} +20 -13
  502. package/dist/host/launch/project-scan.d.ts +7 -0
  503. package/dist/host/{project-scan.js → launch/project-scan.js} +29 -21
  504. package/dist/host/launch/session-file.d.ts +23 -0
  505. package/dist/host/launch/session-file.js +73 -0
  506. package/dist/host/launch/stage.d.ts +5 -5
  507. package/dist/host/launch/stage.js +14 -13
  508. package/dist/host/launch/toolchains.d.ts +4 -0
  509. package/dist/host/launch/toolchains.js +11 -0
  510. package/dist/host/launch/{wsb.d.ts → wsb-file.d.ts} +4 -2
  511. package/dist/host/launch/wsb-file.js +56 -0
  512. package/dist/host/life/crash-report.d.ts +8 -0
  513. package/dist/host/life/crash-report.js +87 -0
  514. package/dist/host/life/index.d.ts +6 -0
  515. package/dist/host/life/index.js +6 -0
  516. package/dist/host/life/keep-awake.d.ts +10 -0
  517. package/dist/host/life/keep-awake.js +29 -0
  518. package/dist/host/life/life-record.d.ts +48 -0
  519. package/dist/host/life/life-record.js +76 -0
  520. package/dist/host/life/stop-events.d.ts +27 -0
  521. package/dist/host/life/stop-events.js +96 -0
  522. package/dist/host/life/stop-warning.d.ts +4 -0
  523. package/dist/host/life/stop-warning.js +25 -0
  524. package/dist/host/life/windows-update.d.ts +3 -0
  525. package/dist/host/life/windows-update.js +11 -0
  526. package/dist/host/native.d.ts +4 -0
  527. package/dist/host/native.js +11 -0
  528. package/dist/host/network/index.d.ts +1 -0
  529. package/dist/host/network/index.js +1 -0
  530. package/dist/host/{port-forward.d.ts → network/port-forward.d.ts} +1 -1
  531. package/dist/host/{port-forward.js → network/port-forward.js} +16 -10
  532. package/dist/host/profile/accounts.d.ts +37 -0
  533. package/dist/host/profile/accounts.js +146 -0
  534. package/dist/host/profile/claude-login.d.ts +22 -0
  535. package/dist/host/profile/claude-login.js +57 -0
  536. package/dist/host/{claude-profile.d.ts → profile/claude-profile.d.ts} +9 -9
  537. package/dist/host/{claude-profile.js → profile/claude-profile.js} +32 -22
  538. package/dist/host/profile/index.d.ts +7 -0
  539. package/dist/host/profile/index.js +7 -0
  540. package/dist/host/profile/personalize.d.ts +2 -0
  541. package/dist/host/profile/personalize.js +127 -0
  542. package/dist/host/profile/reg-file.d.ts +8 -0
  543. package/dist/host/profile/reg-file.js +45 -0
  544. package/dist/host/profile/secret-files.d.ts +2 -0
  545. package/dist/host/profile/secret-files.js +25 -0
  546. package/dist/host/profile/secret-patterns.d.ts +6 -0
  547. package/dist/host/profile/secret-patterns.js +128 -0
  548. package/dist/host/profile/secrets.d.ts +12 -0
  549. package/dist/host/profile/secrets.js +100 -0
  550. package/dist/host/projects/index.d.ts +4 -0
  551. package/dist/host/projects/index.js +4 -0
  552. package/dist/host/{join.d.ts → projects/join.d.ts} +12 -9
  553. package/dist/host/{join.js → projects/join.js} +62 -33
  554. package/dist/host/projects/known.d.ts +28 -0
  555. package/dist/host/projects/known.js +55 -0
  556. package/dist/host/projects/mapper.d.ts +29 -0
  557. package/dist/host/projects/mapper.js +88 -0
  558. package/dist/host/projects/registry.d.ts +83 -0
  559. package/dist/host/projects/registry.js +136 -0
  560. package/dist/host/sandbox/doctor.d.ts +2 -0
  561. package/dist/host/sandbox/doctor.js +42 -0
  562. package/dist/host/sandbox/host-claude.d.ts +1 -0
  563. package/dist/host/sandbox/host-claude.js +26 -0
  564. package/dist/host/sandbox/index.d.ts +6 -0
  565. package/dist/host/sandbox/index.js +6 -0
  566. package/dist/host/{platform.d.ts → sandbox/platform.d.ts} +0 -5
  567. package/dist/host/sandbox/platform.js +60 -0
  568. package/dist/host/sandbox/probe.d.ts +3 -0
  569. package/dist/host/sandbox/probe.js +47 -0
  570. package/dist/host/{window.js → sandbox/window.js} +7 -5
  571. package/dist/host/{wsb.js → sandbox/wsb-cli.js} +31 -8
  572. package/dist/host/{cleanup.js → storage/cleanup.js} +27 -12
  573. package/dist/host/storage/index.d.ts +2 -0
  574. package/dist/host/storage/index.js +2 -0
  575. package/dist/host/storage/state-files.d.ts +4 -0
  576. package/dist/host/storage/state-files.js +10 -0
  577. package/dist/host/test-guard.js +1 -1
  578. package/dist/host/tools/conpty.d.ts +8 -0
  579. package/dist/host/tools/conpty.js +58 -0
  580. package/dist/host/tools/index.d.ts +2 -0
  581. package/dist/host/tools/index.js +2 -0
  582. package/dist/host/{terminal.d.ts → tools/windows-terminal.d.ts} +2 -10
  583. package/dist/host/{terminal.js → tools/windows-terminal.js} +33 -57
  584. package/dist/host/workspace-view/active-views.d.ts +3 -0
  585. package/dist/host/workspace-view/active-views.js +22 -0
  586. package/dist/host/workspace-view/index.d.ts +2 -18
  587. package/dist/host/workspace-view/index.js +2 -49
  588. package/dist/host/workspace-view/plan.d.ts +16 -0
  589. package/dist/host/workspace-view/plan.js +50 -0
  590. package/dist/host/workspace-view/rules.js +10 -3
  591. package/dist/host/workspace-view/view-state.d.ts +10 -0
  592. package/dist/host/workspace-view/view-state.js +31 -0
  593. package/dist/host/workspace-view/view.d.ts +1 -0
  594. package/dist/host/workspace-view/view.js +51 -55
  595. package/dist/runtime/daemon.js +4220 -1968
  596. package/dist/runtime/db.js +2134 -849
  597. package/dist/runtime/gitguard.js +29 -11
  598. package/dist/runtime/main.js +4687 -2243
  599. package/dist/runtime/netproxy.js +1644 -420
  600. package/dist/runtime/view.js +1356 -428
  601. package/dist/selftest/accounts.test.d.ts +1 -1
  602. package/dist/selftest/accounts.test.js +20 -17
  603. package/dist/selftest/agent-commands.test.d.ts +1 -1
  604. package/dist/selftest/agent-commands.test.js +9 -5
  605. package/dist/selftest/audit.test.d.ts +1 -1
  606. package/dist/selftest/audit.test.js +46 -13
  607. package/dist/selftest/channel.test.d.ts +1 -1
  608. package/dist/selftest/channel.test.js +63 -16
  609. package/dist/selftest/cli.test.d.ts +1 -1
  610. package/dist/selftest/cli.test.js +68 -16
  611. package/dist/selftest/cmdline.test.d.ts +1 -1
  612. package/dist/selftest/cmdline.test.js +36 -7
  613. package/dist/selftest/config.test.d.ts +1 -1
  614. package/dist/selftest/config.test.js +12 -5
  615. package/dist/selftest/data.test.d.ts +1 -1
  616. package/dist/selftest/data.test.js +35 -6
  617. package/dist/selftest/detect.test.d.ts +1 -1
  618. package/dist/selftest/detect.test.js +22 -9
  619. package/dist/selftest/generate.test.d.ts +1 -1
  620. package/dist/selftest/generate.test.js +33 -9
  621. package/dist/selftest/git-access.test.d.ts +1 -1
  622. package/dist/selftest/git-access.test.js +42 -4
  623. package/dist/selftest/guest-boot.test.d.ts +1 -1
  624. package/dist/selftest/guest-boot.test.js +25 -7
  625. package/dist/selftest/host-sim.test.d.ts +1 -1
  626. package/dist/selftest/host-sim.test.js +27 -3
  627. package/dist/selftest/hostile-input.test.d.ts +1 -1
  628. package/dist/selftest/hostile-input.test.js +5 -5
  629. package/dist/selftest/index.d.ts +1 -1
  630. package/dist/selftest/index.js +72 -16
  631. package/dist/selftest/layout.test.d.ts +2 -0
  632. package/dist/selftest/layout.test.js +131 -0
  633. package/dist/selftest/links.test.d.ts +1 -1
  634. package/dist/selftest/links.test.js +16 -11
  635. package/dist/selftest/live-daemon.test.d.ts +1 -1
  636. package/dist/selftest/live-daemon.test.js +20 -8
  637. package/dist/selftest/live-git.test.d.ts +1 -1
  638. package/dist/selftest/live-git.test.js +13 -4
  639. package/dist/selftest/live-network.test.d.ts +1 -1
  640. package/dist/selftest/live-network.test.js +24 -9
  641. package/dist/selftest/live-projects.test.d.ts +1 -1
  642. package/dist/selftest/live-projects.test.js +47 -20
  643. package/dist/selftest/live-terminal.test.d.ts +1 -1
  644. package/dist/selftest/live-terminal.test.js +41 -15
  645. package/dist/selftest/local-config.test.d.ts +1 -1
  646. package/dist/selftest/local-config.test.js +64 -16
  647. package/dist/selftest/mirror.test.d.ts +1 -1
  648. package/dist/selftest/mirror.test.js +102 -32
  649. package/dist/selftest/network.test.d.ts +1 -1
  650. package/dist/selftest/network.test.js +17 -8
  651. package/dist/selftest/personalization.test.d.ts +1 -1
  652. package/dist/selftest/personalization.test.js +12 -5
  653. package/dist/selftest/projects.test.d.ts +1 -1
  654. package/dist/selftest/projects.test.js +280 -85
  655. package/dist/selftest/repair.test.d.ts +1 -1
  656. package/dist/selftest/repair.test.js +17 -5
  657. package/dist/selftest/repo-guard.test.d.ts +1 -1
  658. package/dist/selftest/repo-guard.test.js +21 -20
  659. package/dist/selftest/secrets.test.d.ts +1 -1
  660. package/dist/selftest/secrets.test.js +57 -13
  661. package/dist/selftest/setup.test.d.ts +1 -1
  662. package/dist/selftest/setup.test.js +25 -5
  663. package/dist/selftest/{fixtures.d.ts → support/fixtures.d.ts} +5 -3
  664. package/dist/selftest/{fixtures.js → support/fixtures.js} +95 -17
  665. package/dist/selftest/{harness.js → support/harness.js} +24 -7
  666. package/dist/selftest/{live.d.ts → support/live.d.ts} +2 -2
  667. package/dist/selftest/{live.js → support/live.js} +34 -10
  668. package/dist/selftest/support/suite.js +1 -0
  669. package/dist/selftest/sync.test.d.ts +1 -1
  670. package/dist/selftest/sync.test.js +64 -26
  671. package/dist/selftest/test-guard.test.d.ts +1 -1
  672. package/dist/selftest/test-guard.test.js +43 -15
  673. package/dist/selftest/toolchains.test.d.ts +1 -1
  674. package/dist/selftest/toolchains.test.js +135 -36
  675. package/dist/selftest/workspace-view.test.d.ts +1 -1
  676. package/dist/selftest/workspace-view.test.js +48 -11
  677. package/dist/selftest/workspace.test.d.ts +1 -1
  678. package/dist/selftest/workspace.test.js +13 -4
  679. package/dist/shared/{apps.d.ts → apps/catalogue.d.ts} +1 -11
  680. package/dist/shared/apps/catalogue.js +768 -0
  681. package/dist/shared/apps/index.d.ts +2 -0
  682. package/dist/shared/apps/index.js +2 -0
  683. package/dist/shared/apps/selection.d.ts +11 -0
  684. package/dist/shared/apps/selection.js +40 -0
  685. package/dist/shared/channel/index.d.ts +2 -0
  686. package/dist/shared/channel/index.js +2 -0
  687. package/dist/shared/channel/run-dir.d.ts +30 -0
  688. package/dist/shared/channel/run-dir.js +84 -0
  689. package/dist/shared/{schema.d.ts → channel/schema.d.ts} +38 -21
  690. package/dist/shared/{schema.js → channel/schema.js} +62 -35
  691. package/dist/shared/download/archive.d.ts +13 -0
  692. package/dist/shared/download/archive.js +57 -0
  693. package/dist/shared/download/downloader.d.ts +35 -0
  694. package/dist/shared/download/downloader.js +110 -0
  695. package/dist/shared/download/github.d.ts +16 -0
  696. package/dist/shared/download/github.js +74 -0
  697. package/dist/shared/download/http.d.ts +5 -0
  698. package/dist/shared/download/http.js +30 -0
  699. package/dist/shared/download/index.d.ts +5 -0
  700. package/dist/shared/download/index.js +5 -0
  701. package/dist/shared/download/spawn.d.ts +2 -0
  702. package/dist/shared/download/spawn.js +7 -0
  703. package/dist/shared/io/index.d.ts +3 -0
  704. package/dist/shared/io/index.js +3 -0
  705. package/dist/shared/io/json-file.d.ts +10 -0
  706. package/dist/shared/io/json-file.js +21 -0
  707. package/dist/shared/io/json.d.ts +13 -0
  708. package/dist/shared/io/json.js +49 -0
  709. package/dist/shared/{safe-remove.js → io/safe-remove.js} +32 -7
  710. package/dist/shared/{netrules.js → network/firewall-rules.js} +36 -5
  711. package/dist/shared/network/index.d.ts +2 -0
  712. package/dist/shared/network/index.js +2 -0
  713. package/dist/shared/{netpolicy.js → network/policy.js} +66 -11
  714. package/dist/shared/{paths.js → paths/claude-paths.js} +12 -2
  715. package/dist/shared/{guest-paths.d.ts → paths/guest-paths.d.ts} +6 -12
  716. package/dist/shared/{guest-paths.js → paths/guest-paths.js} +53 -36
  717. package/dist/shared/paths/index.d.ts +3 -0
  718. package/dist/shared/paths/index.js +3 -0
  719. package/dist/shared/{projects.js → paths/projects.js} +13 -3
  720. package/dist/shared/pty/client.d.ts +21 -0
  721. package/dist/shared/pty/client.js +79 -0
  722. package/dist/shared/{console-input.js → pty/console-input.js} +26 -6
  723. package/dist/shared/pty/index.d.ts +6 -0
  724. package/dist/shared/pty/index.js +6 -0
  725. package/dist/shared/pty/input-joiner.d.ts +15 -0
  726. package/dist/shared/pty/input-joiner.js +44 -0
  727. package/dist/shared/pty/output-filter.d.ts +13 -0
  728. package/dist/shared/pty/output-filter.js +140 -0
  729. package/dist/shared/pty/protocol.d.ts +36 -0
  730. package/dist/shared/pty/protocol.js +60 -0
  731. package/dist/shared/pty/terminal.d.ts +24 -0
  732. package/dist/shared/pty/terminal.js +147 -0
  733. package/dist/shared/test-guard.js +3 -1
  734. package/dist/sync/claude-mem.d.ts +1 -1
  735. package/dist/sync/claude-mem.js +9 -4
  736. package/dist/sync/history.d.ts +1 -29
  737. package/dist/sync/history.js +57 -45
  738. package/dist/sync/index.d.ts +5 -0
  739. package/dist/sync/index.js +5 -0
  740. package/dist/sync/sync-cycle.d.ts +18 -0
  741. package/dist/sync/sync-cycle.js +85 -0
  742. package/dist/sync/sync-state.d.ts +32 -0
  743. package/dist/sync/sync-state.js +37 -0
  744. package/dist/sync/watcher.d.ts +0 -18
  745. package/dist/sync/watcher.js +66 -100
  746. package/native/keep-awake.ps1 +8 -0
  747. package/native/power.cs +23 -0
  748. package/native/stop-events.ps1 +38 -0
  749. package/package.json +11 -3
  750. package/sandbox/linkgate.cs +98 -0
  751. package/sandbox/memlog.ps1 +15 -6
  752. package/schemas/config.schema.json +34 -1
  753. package/schemas/sandbox-config.schema.json +34 -1
  754. package/dist/cli/boot-progress.d.ts +0 -22
  755. package/dist/cli/boot-progress.js +0 -59
  756. package/dist/cli/commands/launch.d.ts +0 -32
  757. package/dist/cli/commands/launch.js +0 -421
  758. package/dist/cli/commands/maintenance.d.ts +0 -10
  759. package/dist/cli/commands/maintenance.js +0 -220
  760. package/dist/cli/commands/project.d.ts +0 -33
  761. package/dist/cli/commands/project.js +0 -102
  762. package/dist/cli/commands/projects.d.ts +0 -14
  763. package/dist/cli/commands/projects.js +0 -146
  764. package/dist/cli/commands/restart.d.ts +0 -6
  765. package/dist/cli/commands/restart.js +0 -95
  766. package/dist/cli/commands/sessions.d.ts +0 -12
  767. package/dist/cli/commands/sessions.js +0 -258
  768. package/dist/cli/menu/settings/editors.js +0 -305
  769. package/dist/cli/tui/dialogs.d.ts +0 -57
  770. package/dist/cli/tui/dialogs.js +0 -162
  771. package/dist/core/config.js +0 -109
  772. package/dist/core/project-policy.d.ts +0 -62
  773. package/dist/core/project-policy.js +0 -121
  774. package/dist/core/schema.d.ts +0 -6
  775. package/dist/core/schema.js +0 -8
  776. package/dist/core/util.d.ts +0 -62
  777. package/dist/core/util.js +0 -156
  778. package/dist/core/workspace.d.ts +0 -35
  779. package/dist/core/workspace.js +0 -206
  780. package/dist/guest/boot-env.d.ts +0 -4
  781. package/dist/guest/daemon.js +0 -57
  782. package/dist/guest/env.d.ts +0 -56
  783. package/dist/guest/env.js +0 -115
  784. package/dist/guest/gitrules.js +0 -11
  785. package/dist/guest/project-status.d.ts +0 -5
  786. package/dist/guest/project-status.js +0 -17
  787. package/dist/guest/setup/user.js +0 -51
  788. package/dist/guest/toolchains/cli.d.ts +0 -10
  789. package/dist/guest/toolchains/common.d.ts +0 -54
  790. package/dist/guest/toolchains/common.js +0 -147
  791. package/dist/guest/toolchains/databases/dynamodb.d.ts +0 -8
  792. package/dist/guest/toolchains/databases/dynamodb.js +0 -52
  793. package/dist/guest/toolchains/databases/index.d.ts +0 -6
  794. package/dist/guest/toolchains/databases/index.js +0 -62
  795. package/dist/guest/toolchains/databases/mongodb.d.ts +0 -3
  796. package/dist/guest/toolchains/databases/mongodb.js +0 -31
  797. package/dist/guest/toolchains/databases/mysql.d.ts +0 -3
  798. package/dist/guest/toolchains/databases/mysql.js +0 -38
  799. package/dist/guest/toolchains/databases/postgres.d.ts +0 -5
  800. package/dist/guest/toolchains/databases/postgres.js +0 -38
  801. package/dist/guest/toolchains/databases/redis.d.ts +0 -3
  802. package/dist/guest/toolchains/databases/redis.js +0 -16
  803. package/dist/guest/toolchains/git.d.ts +0 -3
  804. package/dist/guest/toolchains/go.d.ts +0 -3
  805. package/dist/guest/toolchains/java.d.ts +0 -8
  806. package/dist/guest/toolchains/node.d.ts +0 -3
  807. package/dist/guest/toolchains/pwsh.d.ts +0 -4
  808. package/dist/guest/toolchains/python.d.ts +0 -3
  809. package/dist/guest/toolchains/scripting/php.d.ts +0 -3
  810. package/dist/guest/toolchains/scripting/ruby.d.ts +0 -3
  811. package/dist/host/accounts.d.ts +0 -32
  812. package/dist/host/accounts.js +0 -128
  813. package/dist/host/agent-commands.d.ts +0 -25
  814. package/dist/host/agent-commands.js +0 -145
  815. package/dist/host/channel.d.ts +0 -38
  816. package/dist/host/channel.js +0 -163
  817. package/dist/host/generate.d.ts +0 -13
  818. package/dist/host/generate.js +0 -115
  819. package/dist/host/launch/projects.d.ts +0 -17
  820. package/dist/host/launch/wsb.js +0 -34
  821. package/dist/host/motw.d.ts +0 -17
  822. package/dist/host/motw.js +0 -74
  823. package/dist/host/pc-scan.d.ts +0 -6
  824. package/dist/host/personalize.d.ts +0 -10
  825. package/dist/host/personalize.js +0 -97
  826. package/dist/host/platform.js +0 -129
  827. package/dist/host/project-scan.d.ts +0 -7
  828. package/dist/host/projects.d.ts +0 -123
  829. package/dist/host/projects.js +0 -196
  830. package/dist/host/repo-guard.d.ts +0 -43
  831. package/dist/host/repo-guard.js +0 -347
  832. package/dist/host/secrets.d.ts +0 -14
  833. package/dist/host/secrets.js +0 -133
  834. package/dist/host/stops.d.ts +0 -67
  835. package/dist/host/stops.js +0 -126
  836. package/dist/shared/apps.js +0 -114
  837. package/dist/shared/download.d.ts +0 -63
  838. package/dist/shared/download.js +0 -238
  839. package/dist/shared/pty-client.d.ts +0 -108
  840. package/dist/shared/pty-client.js +0 -406
  841. package/dist/shared/rundir.d.ts +0 -41
  842. package/dist/shared/rundir.js +0 -96
  843. /package/dist/{guest/daemon.d.ts → cli/tui/list/list-types.js} +0 -0
  844. /package/dist/{guest/db.d.ts → cli/tui/screen.js} +0 -0
  845. /package/dist/core/{detect-databases.d.ts → detect/databases.d.ts} +0 -0
  846. /package/dist/{guest/toolchains → core/detect}/versions.d.ts +0 -0
  847. /package/dist/guest/{setup/agents.d.ts → agents/agent-installer.d.ts} +0 -0
  848. /package/dist/guest/{audit-parse.d.ts → audit/parse.d.ts} +0 -0
  849. /package/dist/guest/{guide.d.ts → boot/guide.d.ts} +0 -0
  850. /package/dist/guest/daemon/{shutdown.d.ts → idle-shutdown.d.ts} +0 -0
  851. /package/dist/guest/daemon/{session.d.ts → sessions.d.ts} +0 -0
  852. /package/dist/guest/{main.d.ts → entries/daemon.d.ts} +0 -0
  853. /package/dist/guest/{netproxy.d.ts → entries/db.d.ts} +0 -0
  854. /package/dist/{selftest/suite.js → guest/entries/gitguard.d.ts} +0 -0
  855. /package/dist/guest/{gitguard.d.ts → git/decision.d.ts} +0 -0
  856. /package/dist/guest/{ports.d.ts → runtime/ports.d.ts} +0 -0
  857. /package/dist/guest/{project-context.d.ts → runtime/project-context.d.ts} +0 -0
  858. /package/dist/guest/{cmdline.d.ts → sessions/cmdline.d.ts} +0 -0
  859. /package/dist/guest/{ptyhost.d.ts → sessions/pty-host.d.ts} +0 -0
  860. /package/dist/guest/{view.d.ts → sessions/viewer.d.ts} +0 -0
  861. /package/dist/guest/setup/{policy.d.ts → managed-policy.d.ts} +0 -0
  862. /package/dist/host/{window.d.ts → sandbox/window.d.ts} +0 -0
  863. /package/dist/host/{wsb.d.ts → sandbox/wsb-cli.d.ts} +0 -0
  864. /package/dist/host/{cleanup.d.ts → storage/cleanup.d.ts} +0 -0
  865. /package/dist/selftest/{harness.d.ts → support/harness.d.ts} +0 -0
  866. /package/dist/selftest/{suite.d.ts → support/suite.d.ts} +0 -0
  867. /package/dist/shared/{safe-remove.d.ts → io/safe-remove.d.ts} +0 -0
  868. /package/dist/shared/{netrules.d.ts → network/firewall-rules.d.ts} +0 -0
  869. /package/dist/shared/{netpolicy.d.ts → network/policy.d.ts} +0 -0
  870. /package/dist/shared/{paths.d.ts → paths/claude-paths.d.ts} +0 -0
  871. /package/dist/shared/{projects.d.ts → paths/projects.d.ts} +0 -0
  872. /package/dist/shared/{console-input.d.ts → pty/console-input.d.ts} +0 -0
@@ -0,0 +1,2 @@
1
+ export { type AppCategory, APP_CATEGORIES, type AppSource, type AppEntry, APPS, appById } from './catalogue.js';
2
+ export { exeMatcher, appsToInstall, appsNeedMesa } from './selection.js';
@@ -0,0 +1,2 @@
1
+ export { APP_CATEGORIES, APPS, appById } from './catalogue.js';
2
+ export { exeMatcher, appsToInstall, appsNeedMesa } from './selection.js';
@@ -0,0 +1,11 @@
1
+ import type { Config, GitAccess } from '../../core/types.js';
2
+ import { type AppEntry } from './catalogue.js';
3
+ /** A catalogue `exe` that is a regex ("/.../") matches names with a version in them. */
4
+ export declare const exeMatcher: (exe: string) => ((name: string) => boolean);
5
+ /** The apps to install, in order: 7-Zip first when anything needs it to unpack. */
6
+ export declare const appsToInstall: (apps: Config["apps"], gitAccess: GitAccess) => {
7
+ entries: AppEntry[];
8
+ skipped: string[];
9
+ };
10
+ /** Does any chosen app draw with OpenGL (so the Mesa step must run first)? */
11
+ export declare const appsNeedMesa: (apps: Config["apps"] | undefined) => boolean;
@@ -0,0 +1,40 @@
1
+ import { appById } from './catalogue.js';
2
+ /** A catalogue `exe` that is a regex ("/.../") matches names with a version in them. */
3
+ export const exeMatcher = (exe) => {
4
+ const regex = /^\/(.+)\/$/.exec(exe);
5
+ if (regex) {
6
+ const r = new RegExp(regex[1], 'i');
7
+ return (name) => r.test(name);
8
+ }
9
+ return (name) => name.toLowerCase() === exe.toLowerCase();
10
+ };
11
+ /** Your own program as a catalogue entry (its folder is apps\custom\<id>). */
12
+ const customEntry = (id, app) => ({
13
+ id: 'custom/' + id,
14
+ name: app.name,
15
+ category: 'utilities',
16
+ about: 'Your own program.',
17
+ size: '?',
18
+ source: app.github && app.asset ? { github: app.github, asset: app.asset } : { url: app.url },
19
+ unpack: app.unpack,
20
+ exe: app.exe,
21
+ cli: app.cli,
22
+ });
23
+ /** The apps to install, in order: 7-Zip first when anything needs it to unpack. */
24
+ export const appsToInstall = (apps, gitAccess) => {
25
+ const chosen = apps.install.flatMap((id) => {
26
+ const e = appById(id);
27
+ return e && !e.setting ? [e] : [];
28
+ });
29
+ const skipped = chosen
30
+ .filter((e) => e.fullGitOnly && gitAccess !== 'full')
31
+ .map((e) => e.name + ' (needs provisioning.git.access "full")');
32
+ const allowed = [
33
+ ...chosen.filter((e) => !(e.fullGitOnly && gitAccess !== 'full')),
34
+ ...Object.entries(apps.custom).map(([id, app]) => customEntry(id, app)),
35
+ ];
36
+ const needs7zip = allowed.some((e) => e.needs?.includes('7zip') || e.unpack === 'nsis') && !allowed.some((e) => e.id === '7zip');
37
+ return { entries: [...(needs7zip ? [appById('7zip')] : []), ...allowed], skipped };
38
+ };
39
+ /** Does any chosen app draw with OpenGL (so the Mesa step must run first)? */
40
+ export const appsNeedMesa = (apps) => Boolean(apps?.install.some((id) => appById(id)?.needs?.includes('mesa')));
@@ -0,0 +1,2 @@
1
+ export * from './schema.js';
2
+ export * from './run-dir.js';
@@ -0,0 +1,2 @@
1
+ export * from './schema.js';
2
+ export * from './run-dir.js';
@@ -0,0 +1,30 @@
1
+ import type { GuestRequest, GuestResponse, ProjectStatus, SandboxStatus, SessionStatus } from './schema.js';
2
+ /** Ids become file names, so only a strict alphabet is allowed (no separators, no dots). */
3
+ export declare function safeId(id: string): string;
4
+ export declare function now(): string;
5
+ /** The run folder of one data folder: where each message lives, and reading them validated. */
6
+ export declare class RunDir {
7
+ readonly root: string;
8
+ readonly sandboxFile: string;
9
+ readonly requestsDir: string;
10
+ readonly responsesDir: string;
11
+ readonly sessionsDir: string;
12
+ readonly projectsDir: string;
13
+ /** audit.processes: programs the sandbox started, in small .jsonl files the host takes in and deletes. */
14
+ readonly auditDir: string;
15
+ constructor(dataDir: string);
16
+ requestFile(id: string): string;
17
+ responseFile(id: string): string;
18
+ sessionFile(id: string): string;
19
+ projectFile(name: string): string;
20
+ readSandboxStatus(): SandboxStatus | null;
21
+ readSession(id: string): SessionStatus | null;
22
+ readResponse(id: string): GuestResponse | null;
23
+ listSessions(): SessionStatus[];
24
+ readProjectStatus(name: string): ProjectStatus | null;
25
+ listProjectStatus(): ProjectStatus[];
26
+ scanRequests(): {
27
+ valid: GuestRequest[];
28
+ invalid: string[];
29
+ };
30
+ }
@@ -0,0 +1,84 @@
1
+ // The run folder (<data>\run on the host, C:\AgentData\run in the sandbox) is the host <-> sandbox channel. No
2
+ // network needed: boot status, requests (host -> guest) and responses/status (guest -> host) are small JSON files,
3
+ // written atomically and parsed with the channel schemas on read. Anything that does not parse is ignored.
4
+ import fs from 'node:fs';
5
+ import path from 'node:path';
6
+ import { GuestRequestSchema, GuestResponseSchema, IdSchema, ProjectStatusSchema, SandboxStatusSchema, SessionStatusSchema, } from './schema.js';
7
+ import { readValid } from '../io/index.js';
8
+ /** Ids become file names, so only a strict alphabet is allowed (no separators, no dots). */
9
+ export function safeId(id) {
10
+ return IdSchema.parse(id);
11
+ }
12
+ export function now() {
13
+ return new Date().toISOString();
14
+ }
15
+ /** Message files in a folder (strict names only), validated; invalid ones are reported separately for deletion. */
16
+ const scan = (schema, dir) => {
17
+ if (!fs.existsSync(dir))
18
+ return { valid: [], invalid: [] };
19
+ const valid = [];
20
+ const invalid = [];
21
+ for (const name of fs.readdirSync(dir)) {
22
+ if (name.endsWith('.tmp'))
23
+ continue;
24
+ const message = /^[A-Za-z0-9_-]{1,64}\.json$/.test(name) ? readValid(schema, path.join(dir, name)) : null;
25
+ if (message)
26
+ valid.push(message);
27
+ else
28
+ invalid.push(path.join(dir, name));
29
+ }
30
+ return { valid, invalid };
31
+ };
32
+ /** The run folder of one data folder: where each message lives, and reading them validated. */
33
+ export class RunDir {
34
+ root;
35
+ sandboxFile;
36
+ requestsDir;
37
+ responsesDir;
38
+ sessionsDir;
39
+ projectsDir;
40
+ /** audit.processes: programs the sandbox started, in small .jsonl files the host takes in and deletes. */
41
+ auditDir;
42
+ constructor(dataDir) {
43
+ this.root = path.join(dataDir, 'run');
44
+ this.sandboxFile = path.join(this.root, 'sandbox.json');
45
+ this.requestsDir = path.join(this.root, 'requests');
46
+ this.responsesDir = path.join(this.root, 'responses');
47
+ this.sessionsDir = path.join(this.root, 'sessions');
48
+ this.projectsDir = path.join(this.root, 'projects');
49
+ this.auditDir = path.join(this.root, 'audit');
50
+ }
51
+ requestFile(id) {
52
+ return path.join(this.requestsDir, safeId(id) + '.json');
53
+ }
54
+ responseFile(id) {
55
+ return path.join(this.responsesDir, safeId(id) + '.json');
56
+ }
57
+ sessionFile(id) {
58
+ return path.join(this.sessionsDir, safeId(id) + '.json');
59
+ }
60
+ projectFile(name) {
61
+ return path.join(this.projectsDir, safeId(name) + '.json');
62
+ }
63
+ readSandboxStatus() {
64
+ return readValid(SandboxStatusSchema, this.sandboxFile);
65
+ }
66
+ readSession(id) {
67
+ return readValid(SessionStatusSchema, this.sessionFile(id));
68
+ }
69
+ readResponse(id) {
70
+ return readValid(GuestResponseSchema, this.responseFile(id));
71
+ }
72
+ listSessions() {
73
+ return scan(SessionStatusSchema, this.sessionsDir).valid.sort((a, b) => a.startedAt.localeCompare(b.startedAt));
74
+ }
75
+ readProjectStatus(name) {
76
+ return readValid(ProjectStatusSchema, this.projectFile(name));
77
+ }
78
+ listProjectStatus() {
79
+ return scan(ProjectStatusSchema, this.projectsDir).valid.slice(0, 64);
80
+ }
81
+ scanRequests() {
82
+ return scan(GuestRequestSchema, this.requestsDir);
83
+ }
84
+ }
@@ -1,12 +1,12 @@
1
1
  import { z } from 'zod';
2
- export declare const Id: z.ZodString;
3
- export declare const AttachEndpoint: z.ZodObject<{
2
+ export declare const IdSchema: z.ZodString;
3
+ export declare const AttachEndpointSchema: z.ZodObject<{
4
4
  addresses: z.ZodArray<z.ZodString>;
5
5
  port: z.ZodNumber;
6
6
  token: z.ZodString;
7
7
  }, z.core.$strict>;
8
8
  /** The boot's progress in a shape the host can show: step n of m, what is being set up now, how many are done. */
9
- export declare const BootProgress: z.ZodObject<{
9
+ export declare const BootProgressSchema: z.ZodObject<{
10
10
  step: z.ZodNumber;
11
11
  steps: z.ZodNumber;
12
12
  title: z.ZodString;
@@ -18,7 +18,7 @@ export declare const BootProgress: z.ZodObject<{
18
18
  total: z.ZodNumber;
19
19
  }, z.core.$strict>;
20
20
  /** C:\AgentData\run\sandbox.json: boot progress of the sandbox as a whole. */
21
- export declare const SandboxStatus: z.ZodObject<{
21
+ export declare const SandboxStatusSchema: z.ZodObject<{
22
22
  launchId: z.ZodString;
23
23
  phase: z.ZodEnum<{
24
24
  provisioning: "provisioning";
@@ -49,7 +49,7 @@ export declare const SandboxStatus: z.ZodObject<{
49
49
  * provision it and run its sessions with its own environment, resolved on the host exactly like a fresh launch (its
50
50
  * approved .sandbox-config.json, version files, toolchain detection, database plan). Host -> guest only.
51
51
  */
52
- export declare const ProjectSpec: z.ZodObject<{
52
+ export declare const ProjectSpecSchema: z.ZodObject<{
53
53
  name: z.ZodString;
54
54
  workspace: z.ZodString;
55
55
  workspaceHost: z.ZodString;
@@ -76,6 +76,11 @@ export declare const ProjectSpec: z.ZodObject<{
76
76
  targets: z.ZodArray<z.ZodString>;
77
77
  crates: z.ZodArray<z.ZodString>;
78
78
  targetDir: z.ZodString;
79
+ linker: z.ZodEnum<{
80
+ lld: "lld";
81
+ gnu: "gnu";
82
+ }>;
83
+ linkSlots: z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodNumber]>;
79
84
  }, z.core.$strict>;
80
85
  msvc: z.ZodObject<{
81
86
  enabled: z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>;
@@ -163,10 +168,10 @@ export declare const ProjectSpec: z.ZodObject<{
163
168
  database: z.ZodEnum<{
164
169
  postgres: "postgres";
165
170
  mysql: "mysql";
171
+ sqlserver: "sqlserver";
166
172
  mongodb: "mongodb";
167
173
  redis: "redis";
168
174
  dynamodb: "dynamodb";
169
- sqlserver: "sqlserver";
170
175
  }>;
171
176
  reasons: z.ZodArray<z.ZodString>;
172
177
  version: z.ZodString;
@@ -187,7 +192,7 @@ export declare const ProjectSpec: z.ZodObject<{
187
192
  hooks: z.ZodBoolean;
188
193
  }, z.core.$strict>;
189
194
  /** C:\AgentData\run\requests\<id>.json: the ONLY things the host can ask the sandbox to do. */
190
- export declare const GuestRequest: z.ZodDiscriminatedUnion<[z.ZodObject<{
195
+ export declare const GuestRequestSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
191
196
  kind: z.ZodLiteral<"session">;
192
197
  id: z.ZodString;
193
198
  harness: z.ZodString;
@@ -220,6 +225,11 @@ export declare const GuestRequest: z.ZodDiscriminatedUnion<[z.ZodObject<{
220
225
  targets: z.ZodArray<z.ZodString>;
221
226
  crates: z.ZodArray<z.ZodString>;
222
227
  targetDir: z.ZodString;
228
+ linker: z.ZodEnum<{
229
+ lld: "lld";
230
+ gnu: "gnu";
231
+ }>;
232
+ linkSlots: z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodNumber]>;
223
233
  }, z.core.$strict>;
224
234
  msvc: z.ZodObject<{
225
235
  enabled: z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>;
@@ -307,10 +317,10 @@ export declare const GuestRequest: z.ZodDiscriminatedUnion<[z.ZodObject<{
307
317
  database: z.ZodEnum<{
308
318
  postgres: "postgres";
309
319
  mysql: "mysql";
320
+ sqlserver: "sqlserver";
310
321
  mongodb: "mongodb";
311
322
  redis: "redis";
312
323
  dynamodb: "dynamodb";
313
- sqlserver: "sqlserver";
314
324
  }>;
315
325
  reasons: z.ZodArray<z.ZodString>;
316
326
  version: z.ZodString;
@@ -372,6 +382,11 @@ export declare const GuestRequest: z.ZodDiscriminatedUnion<[z.ZodObject<{
372
382
  targets: z.ZodArray<z.ZodString>;
373
383
  crates: z.ZodArray<z.ZodString>;
374
384
  targetDir: z.ZodString;
385
+ linker: z.ZodEnum<{
386
+ lld: "lld";
387
+ gnu: "gnu";
388
+ }>;
389
+ linkSlots: z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodNumber]>;
375
390
  }, z.core.$strict>;
376
391
  msvc: z.ZodObject<{
377
392
  enabled: z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>;
@@ -459,10 +474,10 @@ export declare const GuestRequest: z.ZodDiscriminatedUnion<[z.ZodObject<{
459
474
  database: z.ZodEnum<{
460
475
  postgres: "postgres";
461
476
  mysql: "mysql";
477
+ sqlserver: "sqlserver";
462
478
  mongodb: "mongodb";
463
479
  redis: "redis";
464
480
  dynamodb: "dynamodb";
465
- sqlserver: "sqlserver";
466
481
  }>;
467
482
  reasons: z.ZodArray<z.ZodString>;
468
483
  version: z.ZodString;
@@ -502,7 +517,7 @@ export declare const GuestRequest: z.ZodDiscriminatedUnion<[z.ZodObject<{
502
517
  createdAt: z.ZodString;
503
518
  }, z.core.$strict>], "kind">;
504
519
  /** C:\AgentData\run\responses\<id>.json: the guest's reply. */
505
- export declare const GuestResponse: z.ZodObject<{
520
+ export declare const GuestResponseSchema: z.ZodObject<{
506
521
  id: z.ZodString;
507
522
  ok: z.ZodBoolean;
508
523
  message: z.ZodString;
@@ -512,7 +527,7 @@ export declare const GuestResponse: z.ZodObject<{
512
527
  finishedAt: z.ZodString;
513
528
  }, z.core.$strip>;
514
529
  /** C:\AgentData\run\sessions\<id>.json: one agent session (its own pseudo console and terminal tab). */
515
- export declare const SessionStatus: z.ZodObject<{
530
+ export declare const SessionStatusSchema: z.ZodObject<{
516
531
  id: z.ZodString;
517
532
  launchId: z.ZodString;
518
533
  harness: z.ZodString;
@@ -534,8 +549,10 @@ export declare const SessionStatus: z.ZodObject<{
534
549
  token: z.ZodString;
535
550
  }, z.core.$strict>>;
536
551
  }, z.core.$strip>;
537
- /** C:\AgentData\run\projects\<name>.json: how far a project's provisioning is (guest-written, so validated and capped). */
538
- export declare const ProjectStatus: z.ZodObject<{
552
+ /**
553
+ * C:\AgentData\run\projects\<name>.json: how far a project's provisioning is (guest-written, so validated and capped).
554
+ */
555
+ export declare const ProjectStatusSchema: z.ZodObject<{
539
556
  name: z.ZodString;
540
557
  workspace: z.ZodString;
541
558
  phase: z.ZodEnum<{
@@ -551,11 +568,11 @@ export declare const ProjectStatus: z.ZodObject<{
551
568
  }, z.core.$strip>>;
552
569
  summary: z.ZodArray<z.ZodString>;
553
570
  }, z.core.$strip>;
554
- export type ProjectSpecT = z.output<typeof ProjectSpec>;
555
- export type ProjectStatusT = z.output<typeof ProjectStatus>;
556
- export type AttachEndpointT = z.output<typeof AttachEndpoint>;
557
- export type SandboxStatusT = z.output<typeof SandboxStatus>;
558
- export type BootProgressT = z.output<typeof BootProgress>;
559
- export type GuestRequestT = z.output<typeof GuestRequest>;
560
- export type GuestResponseT = z.output<typeof GuestResponse>;
561
- export type SessionStatusT = z.output<typeof SessionStatus>;
571
+ export type ProjectSpec = z.output<typeof ProjectSpecSchema>;
572
+ export type ProjectStatus = z.output<typeof ProjectStatusSchema>;
573
+ export type AttachEndpoint = z.output<typeof AttachEndpointSchema>;
574
+ export type SandboxStatus = z.output<typeof SandboxStatusSchema>;
575
+ export type BootProgress = z.output<typeof BootProgressSchema>;
576
+ export type GuestRequest = z.output<typeof GuestRequestSchema>;
577
+ export type GuestResponse = z.output<typeof GuestResponseSchema>;
578
+ export type SessionStatus = z.output<typeof SessionStatusSchema>;
@@ -1,17 +1,17 @@
1
1
  // The host <-> sandbox channel messages, defined once with zod. Both sides parse what they read: the guest only acts on
2
2
  // these request kinds, and the host treats everything the guest writes as untrusted (shapes checked, sizes capped).
3
3
  import { z } from 'zod';
4
- import { Harness, Toolchains } from '../core/schema.js';
5
- export const Id = z.string().regex(/^[A-Za-z0-9_-]{1,64}$/, 'invalid id');
4
+ import { HarnessSchema, ToolchainsSchema } from '../../core/schema/index.js';
5
+ export const IdSchema = z.string().regex(/^[A-Za-z0-9_-]{1,64}$/, 'invalid id');
6
6
  const Text = (max = 4096) => z.string().max(max);
7
- const Time = Text(64);
8
- export const AttachEndpoint = z.strictObject({
7
+ const TimeSchema = Text(64);
8
+ export const AttachEndpointSchema = z.strictObject({
9
9
  addresses: z.array(Text(64)).max(16),
10
10
  port: z.number().int().min(1024).max(65535),
11
11
  token: Text(256),
12
12
  });
13
13
  /** The boot's progress in a shape the host can show: step n of m, what is being set up now, how many are done. */
14
- export const BootProgress = z.strictObject({
14
+ export const BootProgressSchema = z.strictObject({
15
15
  step: z.number().int().min(1).max(32),
16
16
  steps: z.number().int().min(1).max(32),
17
17
  title: Text(120),
@@ -21,65 +21,90 @@ export const BootProgress = z.strictObject({
21
21
  total: z.number().int().min(0).max(1000),
22
22
  });
23
23
  /** C:\AgentData\run\sandbox.json: boot progress of the sandbox as a whole. */
24
- export const SandboxStatus = z.object({
24
+ export const SandboxStatusSchema = z.object({
25
25
  launchId: Text(64),
26
26
  phase: z.enum(['booting', 'provisioning', 'ready', 'failed']),
27
27
  message: Text(),
28
- updatedAt: Time,
28
+ updatedAt: TimeSchema,
29
29
  workspaceHost: Text(),
30
30
  guestWorkspace: Text(),
31
31
  headless: z.boolean(),
32
32
  /** The sandbox's IPv4 addresses (for network.forwardPorts; the host only uses ones on its Hyper-V network). */
33
33
  addresses: z.array(z.string().max(45)).max(8).optional(),
34
34
  /** A malformed progress is dropped, never the status (the phase still counts). */
35
- progress: BootProgress.optional().catch(undefined),
35
+ progress: BootProgressSchema.optional().catch(undefined),
36
36
  });
37
- const Version = z.strictObject({ spec: Text(128), source: Text(256) });
38
- const DatabasePlan = z.strictObject({
37
+ const VersionSchema = z.strictObject({ spec: Text(128), source: Text(256) });
38
+ const DatabasePlanSchema = z.strictObject({
39
39
  database: z.enum(['postgres', 'mysql', 'sqlserver', 'mongodb', 'redis', 'dynamodb']),
40
- reasons: z.array(Text(1024)).max(32), version: Text(64), port: z.number().int().min(1024).max(65535), adminPort: z.number().int().min(1024).max(65535).optional(),
40
+ reasons: z.array(Text(1024)).max(32),
41
+ version: Text(64),
42
+ port: z.number().int().min(1024).max(65535),
43
+ adminPort: z.number().int().min(1024).max(65535).optional(),
41
44
  });
42
45
  /**
43
46
  * A project the host registered after boot (sandbox claude from another folder): everything the guest needs to
44
47
  * provision it and run its sessions with its own environment, resolved on the host exactly like a fresh launch (its
45
48
  * approved .sandbox-config.json, version files, toolchain detection, database plan). Host -> guest only.
46
49
  */
47
- export const ProjectSpec = z.strictObject({
48
- name: Id,
50
+ export const ProjectSpecSchema = z.strictObject({
51
+ name: IdSchema,
49
52
  /** Inside the sandbox: C:\Projects\<name>. */
50
53
  workspace: Text(1024),
51
54
  workspaceHost: Text(1024),
52
- toolchains: Toolchains,
53
- versions: z.strictObject({ node: Version, nodeExtra: z.array(Text(128)).max(16), python: Version }),
54
- databases: z.array(DatabasePlan).max(8),
55
+ toolchains: ToolchainsSchema,
56
+ versions: z.strictObject({ node: VersionSchema, nodeExtra: z.array(Text(128)).max(16), python: VersionSchema }),
57
+ databases: z.array(DatabasePlanSchema).max(8),
55
58
  /** Agents this project may start that the sandbox did not boot with (its .sandbox-config.json "harness"). */
56
- harnesses: z.record(Text(64), Harness).refine((h) => Object.keys(h).length <= 8, 'at most 8 agents'),
59
+ harnesses: z.record(Text(64), HarnessSchema).refine((h) => Object.keys(h).length <= 8, 'at most 8 agents'),
57
60
  /** Its hooks were staged in C:\AgentLaunch\projects\<name>\hooks. */
58
61
  hooks: z.boolean(),
59
62
  });
60
63
  /** C:\AgentData\run\requests\<id>.json: the ONLY things the host can ask the sandbox to do. */
61
- export const GuestRequest = z.discriminatedUnion('kind', [
62
- z.strictObject({ kind: z.literal('session'), id: Id, harness: Text(64), args: z.array(Text()).max(256), cwd: Text(), project: ProjectSpec.optional(), harnessSpec: Harness.optional(), createdAt: Time }),
64
+ export const GuestRequestSchema = z.discriminatedUnion('kind', [
65
+ z.strictObject({
66
+ kind: z.literal('session'),
67
+ id: IdSchema,
68
+ harness: Text(64),
69
+ args: z.array(Text()).max(256),
70
+ cwd: Text(),
71
+ project: ProjectSpecSchema.optional(),
72
+ harnessSpec: HarnessSchema.optional(),
73
+ createdAt: TimeSchema,
74
+ }),
63
75
  /** Provision a registered project without starting an agent (sandbox start / exec / db from its folder). */
64
- z.strictObject({ kind: z.literal('project'), id: Id, project: ProjectSpec, createdAt: Time }),
65
- z.strictObject({ kind: z.literal('exec'), id: Id, command: z.array(Text()).min(1).max(256), cwd: Text(), timeoutSeconds: z.number().positive().max(86400), createdAt: Time }),
76
+ z.strictObject({ kind: z.literal('project'), id: IdSchema, project: ProjectSpecSchema, createdAt: TimeSchema }),
77
+ z.strictObject({
78
+ kind: z.literal('exec'),
79
+ id: IdSchema,
80
+ command: z.array(Text()).min(1).max(256),
81
+ cwd: Text(),
82
+ timeoutSeconds: z.number().positive().max(86400),
83
+ createdAt: TimeSchema,
84
+ }),
66
85
  /** cwd: only the sessions in this folder or below (one project's); omitted = every session. */
67
- z.strictObject({ kind: z.literal('restart'), id: Id, harness: Text(64).nullable(), cwd: Text().optional(), createdAt: Time }),
68
- z.strictObject({ kind: z.literal('ping'), id: Id, createdAt: Time }),
86
+ z.strictObject({
87
+ kind: z.literal('restart'),
88
+ id: IdSchema,
89
+ harness: Text(64).nullable(),
90
+ cwd: Text().optional(),
91
+ createdAt: TimeSchema,
92
+ }),
93
+ z.strictObject({ kind: z.literal('ping'), id: IdSchema, createdAt: TimeSchema }),
69
94
  ]);
70
95
  /** C:\AgentData\run\responses\<id>.json: the guest's reply. */
71
- export const GuestResponse = z.object({
72
- id: Id,
96
+ export const GuestResponseSchema = z.object({
97
+ id: IdSchema,
73
98
  ok: z.boolean(),
74
99
  message: Text(65536),
75
100
  exitCode: z.number().int().optional(),
76
101
  stdout: Text(4 * 1024 * 1024).optional(),
77
102
  stderr: Text(4 * 1024 * 1024).optional(),
78
- finishedAt: Time,
103
+ finishedAt: TimeSchema,
79
104
  });
80
105
  /** C:\AgentData\run\sessions\<id>.json: one agent session (its own pseudo console and terminal tab). */
81
- export const SessionStatus = z.object({
82
- id: Id,
106
+ export const SessionStatusSchema = z.object({
107
+ id: IdSchema,
83
108
  launchId: Text(64),
84
109
  harness: Text(64),
85
110
  cwd: Text(),
@@ -87,18 +112,20 @@ export const SessionStatus = z.object({
87
112
  project: Text(64).optional(),
88
113
  phase: z.enum(['starting', 'running', 'exited', 'failed']),
89
114
  message: Text(),
90
- updatedAt: Time,
91
- startedAt: Time,
115
+ updatedAt: TimeSchema,
116
+ startedAt: TimeSchema,
92
117
  exitCode: z.number().int().optional(),
93
- attach: AttachEndpoint.optional(),
118
+ attach: AttachEndpointSchema.optional(),
94
119
  });
95
- /** C:\AgentData\run\projects\<name>.json: how far a project's provisioning is (guest-written, so validated and capped). */
96
- export const ProjectStatus = z.object({
97
- name: Id,
120
+ /**
121
+ * C:\AgentData\run\projects\<name>.json: how far a project's provisioning is (guest-written, so validated and capped).
122
+ */
123
+ export const ProjectStatusSchema = z.object({
124
+ name: IdSchema,
98
125
  workspace: Text(1024),
99
126
  phase: z.enum(['provisioning', 'ready', 'failed']),
100
127
  message: Text(),
101
- updatedAt: Time,
128
+ updatedAt: TimeSchema,
102
129
  databases: z.array(z.object({ database: Text(32), port: z.number().int() })).max(16),
103
130
  summary: z.array(Text(512)).max(64),
104
131
  });
@@ -0,0 +1,13 @@
1
+ /**
2
+ * A fresh `<destination>.staging-<hex>` folder next to `destination`: fill it, then moveIntoPlace. An interrupted copy
3
+ * or extraction leaves only the staging folder (cleanup/repair remove those), never a half-filled destination.
4
+ */
5
+ export declare const stagingFolder: (destination: string) => string;
6
+ /** Replaces `destination` with the finished `work` folder (a folder rename: the destination is never half there). */
7
+ export declare const moveIntoPlace: (work: string, destination: string) => void;
8
+ /**
9
+ * Extracts .zip / .nupkg / .7z / .tar.gz with the tar.exe that ships with Windows, falling back to Expand-Archive.
10
+ * `members` limits it to those paths inside the archive (e.g. skip pgAdmin in the PostgreSQL zip).
11
+ */
12
+ export declare const extractArchive: (archive: string, destination: string, members?: string[]) => Promise<void>;
13
+ export declare const findFile: (root: string, name: string, maxDepth?: number) => string | null;
@@ -0,0 +1,57 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import crypto from 'node:crypto';
4
+ import { safeRemove } from '../io/index.js';
5
+ import { SYSTEM } from '../system.js';
6
+ import { spawnAsync } from './spawn.js';
7
+ /**
8
+ * A fresh `<destination>.staging-<hex>` folder next to `destination`: fill it, then moveIntoPlace. An interrupted copy
9
+ * or extraction leaves only the staging folder (cleanup/repair remove those), never a half-filled destination.
10
+ */
11
+ export const stagingFolder = (destination) => destination + '.staging-' + crypto.randomBytes(3).toString('hex');
12
+ /** Replaces `destination` with the finished `work` folder (a folder rename: the destination is never half there). */
13
+ export const moveIntoPlace = (work, destination) => {
14
+ safeRemove(destination, path.dirname(destination));
15
+ fs.mkdirSync(path.dirname(destination), { recursive: true });
16
+ fs.renameSync(work, destination);
17
+ };
18
+ /**
19
+ * Extracts .zip / .nupkg / .7z / .tar.gz with the tar.exe that ships with Windows, falling back to Expand-Archive.
20
+ * `members` limits it to those paths inside the archive (e.g. skip pgAdmin in the PostgreSQL zip).
21
+ */
22
+ export const extractArchive = async (archive, destination, members = []) => {
23
+ fs.mkdirSync(destination, { recursive: true });
24
+ let status = await spawnAsync(SYSTEM.tar(), ['-xf', archive, '-C', destination, ...members]);
25
+ if (status !== 0 && /\.(zip|nupkg)$/i.test(archive)) {
26
+ const zip = archive.endsWith('.zip') ? archive : archive + '.zip';
27
+ if (zip !== archive)
28
+ fs.copyFileSync(archive, zip);
29
+ status = await spawnAsync(SYSTEM.powershell(), [
30
+ '-NoLogo',
31
+ '-NoProfile',
32
+ '-Command',
33
+ "Expand-Archive -LiteralPath '" +
34
+ zip.replace(/'/g, "''") +
35
+ "' -DestinationPath '" +
36
+ destination.replace(/'/g, "''") +
37
+ "' -Force",
38
+ ]);
39
+ }
40
+ if (status !== 0)
41
+ throw new Error('Could not extract ' + archive);
42
+ };
43
+ export const findFile = (root, name, maxDepth = 4) => {
44
+ if (maxDepth < 0 || !fs.existsSync(root))
45
+ return null;
46
+ const entries = fs.readdirSync(root, { withFileTypes: true });
47
+ for (const entry of entries)
48
+ if (entry.isFile() && entry.name.toLowerCase() === name.toLowerCase())
49
+ return path.join(root, entry.name);
50
+ for (const entry of entries)
51
+ if (entry.isDirectory()) {
52
+ const found = findFile(path.join(root, entry.name), name, maxDepth - 1);
53
+ if (found)
54
+ return found;
55
+ }
56
+ return null;
57
+ };
@@ -0,0 +1,35 @@
1
+ /** Expected checksums of a download; any that are given must match. */
2
+ export interface Checksums {
3
+ sha256?: string | null;
4
+ sha512?: string | null;
5
+ }
6
+ export interface ArchiveOptions extends Checksums {
7
+ /** Keep only the folder holding this file. */
8
+ locate?: string;
9
+ /** Folders above `locate`'s to keep. */
10
+ up?: number;
11
+ fileName?: string;
12
+ members?: string[];
13
+ }
14
+ /** Who wants coarse download progress: called as a download starts (in the caller's async context), returns its reporter. */
15
+ export type DownloadWatcher = () => ((fraction: number) => void) | null;
16
+ export declare class Downloader {
17
+ /** downloads.requireChecksum: refuse anything without an expected hash. The guest sets it from session.json. */
18
+ requireChecksum: boolean;
19
+ private watcher;
20
+ /** Reports coarse progress of the downloads that start from now on to `watcher` (null: stop). */
21
+ watch(watcher: DownloadWatcher | null): void;
22
+ /**
23
+ * Streams a download to disk, hashing as it goes: big archives (PostgreSQL is ~330 MB) never sit in memory, and the
24
+ * event loop stays free so other toolchains keep downloading meanwhile. A mismatch (or any failure) leaves no file
25
+ * behind.
26
+ */
27
+ file(url: string, destination: string, expected?: string | null | Checksums): Promise<void>;
28
+ /**
29
+ * Downloads + extracts into `destination` atomically (staging folder, then rename). With `locate`, only the folder
30
+ * holding that file is kept (`up` folders above it, e.g. locate ruby.exe with up 1 keeps the folder around bin).
31
+ */
32
+ archive(url: string, destination: string, options?: ArchiveOptions): Promise<void>;
33
+ }
34
+ /** The one downloader of this process. */
35
+ export declare const downloader: Downloader;