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