windows-development-sandbox 0.0.0-stage → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (426) hide show
  1. package/.sandbox-config.example.json +14 -0
  2. package/LICENSE +21 -0
  3. package/README.md +94 -2
  4. package/config.example.json +349 -0
  5. package/dist/api.d.ts +31 -0
  6. package/dist/api.js +31 -0
  7. package/dist/bin/agent-sandbox.d.ts +2 -0
  8. package/dist/bin/agent-sandbox.js +3 -0
  9. package/dist/bin/claude-host.d.ts +2 -0
  10. package/dist/bin/claude-host.js +5 -0
  11. package/dist/bin/claude-sbx.d.ts +2 -0
  12. package/dist/bin/claude-sbx.js +3 -0
  13. package/dist/bin/codex-sbx.d.ts +2 -0
  14. package/dist/bin/codex-sbx.js +3 -0
  15. package/dist/bin/gemini-sbx.d.ts +2 -0
  16. package/dist/bin/gemini-sbx.js +3 -0
  17. package/dist/bin/sandbox.d.ts +2 -0
  18. package/dist/bin/sandbox.js +4 -0
  19. package/dist/bin/sbx-hide.d.ts +2 -0
  20. package/dist/bin/sbx-hide.js +3 -0
  21. package/dist/bin/sbx-show.d.ts +2 -0
  22. package/dist/bin/sbx-show.js +3 -0
  23. package/dist/cli/args.d.ts +52 -0
  24. package/dist/cli/args.js +143 -0
  25. package/dist/cli/colors.d.ts +24 -0
  26. package/dist/cli/colors.js +42 -0
  27. package/dist/cli/commands/accounts.d.ts +2 -0
  28. package/dist/cli/commands/accounts.js +52 -0
  29. package/dist/cli/commands/agent-commands.d.ts +6 -0
  30. package/dist/cli/commands/agent-commands.js +61 -0
  31. package/dist/cli/commands/context.d.ts +23 -0
  32. package/dist/cli/commands/context.js +57 -0
  33. package/dist/cli/commands/data/clean.d.ts +15 -0
  34. package/dist/cli/commands/data/clean.js +101 -0
  35. package/dist/cli/commands/data/collect.d.ts +11 -0
  36. package/dist/cli/commands/data/collect.js +54 -0
  37. package/dist/cli/commands/data/index.d.ts +4 -0
  38. package/dist/cli/commands/data/index.js +45 -0
  39. package/dist/cli/commands/data/remove.d.ts +2 -0
  40. package/dist/cli/commands/data/remove.js +30 -0
  41. package/dist/cli/commands/index.d.ts +10 -0
  42. package/dist/cli/commands/index.js +10 -0
  43. package/dist/cli/commands/launch.d.ts +29 -0
  44. package/dist/cli/commands/launch.js +333 -0
  45. package/dist/cli/commands/maintenance.d.ts +8 -0
  46. package/dist/cli/commands/maintenance.js +154 -0
  47. package/dist/cli/commands/project.d.ts +29 -0
  48. package/dist/cli/commands/project.js +63 -0
  49. package/dist/cli/commands/projects.d.ts +14 -0
  50. package/dist/cli/commands/projects.js +146 -0
  51. package/dist/cli/commands/repair/checks.d.ts +2 -0
  52. package/dist/cli/commands/repair/checks.js +170 -0
  53. package/dist/cli/commands/repair/finders.d.ts +30 -0
  54. package/dist/cli/commands/repair/finders.js +108 -0
  55. package/dist/cli/commands/repair/index.d.ts +12 -0
  56. package/dist/cli/commands/repair/index.js +61 -0
  57. package/dist/cli/commands/repair/types.d.ts +26 -0
  58. package/dist/cli/commands/repair/types.js +3 -0
  59. package/dist/cli/commands/restart.d.ts +6 -0
  60. package/dist/cli/commands/restart.js +85 -0
  61. package/dist/cli/commands/sessions.d.ts +12 -0
  62. package/dist/cli/commands/sessions.js +257 -0
  63. package/dist/cli/commands/setup/checks.d.ts +13 -0
  64. package/dist/cli/commands/setup/checks.js +71 -0
  65. package/dist/cli/commands/setup/facts.d.ts +31 -0
  66. package/dist/cli/commands/setup/facts.js +60 -0
  67. package/dist/cli/commands/setup/index.d.ts +2 -0
  68. package/dist/cli/commands/setup/index.js +43 -0
  69. package/dist/cli/commands/user-config.d.ts +8 -0
  70. package/dist/cli/commands/user-config.js +41 -0
  71. package/dist/cli/history.d.ts +11 -0
  72. package/dist/cli/history.js +21 -0
  73. package/dist/cli/index.d.ts +20 -0
  74. package/dist/cli/index.js +121 -0
  75. package/dist/cli/manifest.d.ts +103 -0
  76. package/dist/cli/manifest.js +107 -0
  77. package/dist/cli/menu-multi.d.ts +12 -0
  78. package/dist/cli/menu-multi.js +82 -0
  79. package/dist/cli/menu.d.ts +14 -0
  80. package/dist/cli/menu.js +290 -0
  81. package/dist/cli/progress.d.ts +9 -0
  82. package/dist/cli/progress.js +49 -0
  83. package/dist/cli/settings/edit.d.ts +13 -0
  84. package/dist/cli/settings/edit.js +19 -0
  85. package/dist/cli/settings/index.d.ts +8 -0
  86. package/dist/cli/settings/index.js +131 -0
  87. package/dist/cli/settings/prompts.d.ts +7 -0
  88. package/dist/cli/settings/prompts.js +48 -0
  89. package/dist/cli/settings/schema.d.ts +33 -0
  90. package/dist/cli/settings/schema.js +29 -0
  91. package/dist/cli/validate.d.ts +17 -0
  92. package/dist/cli/validate.js +89 -0
  93. package/dist/core/config.d.ts +17 -0
  94. package/dist/core/config.js +106 -0
  95. package/dist/core/detect-databases.d.ts +15 -0
  96. package/dist/core/detect-databases.js +147 -0
  97. package/dist/core/detect-pwsh.d.ts +18 -0
  98. package/dist/core/detect-pwsh.js +111 -0
  99. package/dist/core/detect-toolchains.d.ts +30 -0
  100. package/dist/core/detect-toolchains.js +58 -0
  101. package/dist/core/disk.d.ts +16 -0
  102. package/dist/core/disk.js +55 -0
  103. package/dist/core/local-config.d.ts +20 -0
  104. package/dist/core/local-config.js +77 -0
  105. package/dist/core/project-policy.d.ts +15 -0
  106. package/dist/core/project-policy.js +35 -0
  107. package/dist/core/prompt.d.ts +4 -0
  108. package/dist/core/prompt.js +15 -0
  109. package/dist/core/safe-paths.d.ts +4 -0
  110. package/dist/core/safe-paths.js +37 -0
  111. package/dist/core/schema/common.d.ts +17 -0
  112. package/dist/core/schema/common.js +15 -0
  113. package/dist/core/schema/config.d.ts +594 -0
  114. package/dist/core/schema/config.js +63 -0
  115. package/dist/core/schema/databases.d.ts +33 -0
  116. package/dist/core/schema/databases.js +35 -0
  117. package/dist/core/schema/harness.d.ts +12 -0
  118. package/dist/core/schema/harness.js +17 -0
  119. package/dist/core/schema/json-schema.d.ts +5 -0
  120. package/dist/core/schema/json-schema.js +25 -0
  121. package/dist/core/schema/profile.d.ts +27 -0
  122. package/dist/core/schema/profile.js +29 -0
  123. package/dist/core/schema/projects.d.ts +9 -0
  124. package/dist/core/schema/projects.js +11 -0
  125. package/dist/core/schema/sandbox.d.ts +50 -0
  126. package/dist/core/schema/sandbox.js +36 -0
  127. package/dist/core/schema/toolchains.d.ts +93 -0
  128. package/dist/core/schema/toolchains.js +83 -0
  129. package/dist/core/schema.d.ts +6 -0
  130. package/dist/core/schema.js +8 -0
  131. package/dist/core/types.d.ts +190 -0
  132. package/dist/core/types.js +1 -0
  133. package/dist/core/util.d.ts +60 -0
  134. package/dist/core/util.js +154 -0
  135. package/dist/core/workspace.d.ts +18 -0
  136. package/dist/core/workspace.js +128 -0
  137. package/dist/guest/boot-env.d.ts +4 -0
  138. package/dist/guest/boot-env.js +25 -0
  139. package/dist/guest/cmdline.d.ts +12 -0
  140. package/dist/guest/cmdline.js +23 -0
  141. package/dist/guest/daemon/exec.d.ts +5 -0
  142. package/dist/guest/daemon/exec.js +32 -0
  143. package/dist/guest/daemon/project.d.ts +14 -0
  144. package/dist/guest/daemon/project.js +132 -0
  145. package/dist/guest/daemon/session.d.ts +13 -0
  146. package/dist/guest/daemon/session.js +139 -0
  147. package/dist/guest/daemon/shutdown.d.ts +1 -0
  148. package/dist/guest/daemon/shutdown.js +21 -0
  149. package/dist/guest/daemon/state.d.ts +17 -0
  150. package/dist/guest/daemon/state.js +31 -0
  151. package/dist/guest/daemon.d.ts +1 -0
  152. package/dist/guest/daemon.js +53 -0
  153. package/dist/guest/db.d.ts +1 -0
  154. package/dist/guest/db.js +75 -0
  155. package/dist/guest/env.d.ts +51 -0
  156. package/dist/guest/env.js +101 -0
  157. package/dist/guest/gitguard.d.ts +7 -0
  158. package/dist/guest/gitguard.js +60 -0
  159. package/dist/guest/gitrules.d.ts +2 -0
  160. package/dist/guest/gitrules.js +11 -0
  161. package/dist/guest/guide.d.ts +16 -0
  162. package/dist/guest/guide.js +69 -0
  163. package/dist/guest/helpers.d.ts +3 -0
  164. package/dist/guest/helpers.js +26 -0
  165. package/dist/guest/main.d.ts +1 -0
  166. package/dist/guest/main.js +130 -0
  167. package/dist/guest/ports.d.ts +6 -0
  168. package/dist/guest/ports.js +22 -0
  169. package/dist/guest/project-context.d.ts +7 -0
  170. package/dist/guest/project-context.js +10 -0
  171. package/dist/guest/project-env.d.ts +20 -0
  172. package/dist/guest/project-env.js +20 -0
  173. package/dist/guest/project-status.d.ts +5 -0
  174. package/dist/guest/project-status.js +17 -0
  175. package/dist/guest/ptyhost.d.ts +22 -0
  176. package/dist/guest/ptyhost.js +36 -0
  177. package/dist/guest/setup/agents.d.ts +11 -0
  178. package/dist/guest/setup/agents.js +87 -0
  179. package/dist/guest/setup/claude.d.ts +21 -0
  180. package/dist/guest/setup/claude.js +146 -0
  181. package/dist/guest/setup/environment.d.ts +16 -0
  182. package/dist/guest/setup/environment.js +69 -0
  183. package/dist/guest/setup/hooks.d.ts +9 -0
  184. package/dist/guest/setup/hooks.js +50 -0
  185. package/dist/guest/setup/network.d.ts +10 -0
  186. package/dist/guest/setup/network.js +99 -0
  187. package/dist/guest/setup/policy.d.ts +3 -0
  188. package/dist/guest/setup/policy.js +18 -0
  189. package/dist/guest/setup/user.d.ts +7 -0
  190. package/dist/guest/setup/user.js +47 -0
  191. package/dist/guest/toolchains/catalogue.d.ts +55 -0
  192. package/dist/guest/toolchains/catalogue.js +31 -0
  193. package/dist/guest/toolchains/cli.d.ts +10 -0
  194. package/dist/guest/toolchains/cli.js +72 -0
  195. package/dist/guest/toolchains/common.d.ts +54 -0
  196. package/dist/guest/toolchains/common.js +147 -0
  197. package/dist/guest/toolchains/databases/dynamodb.d.ts +8 -0
  198. package/dist/guest/toolchains/databases/dynamodb.js +52 -0
  199. package/dist/guest/toolchains/databases/index.d.ts +6 -0
  200. package/dist/guest/toolchains/databases/index.js +62 -0
  201. package/dist/guest/toolchains/databases/mongodb.d.ts +3 -0
  202. package/dist/guest/toolchains/databases/mongodb.js +31 -0
  203. package/dist/guest/toolchains/databases/mysql.d.ts +3 -0
  204. package/dist/guest/toolchains/databases/mysql.js +38 -0
  205. package/dist/guest/toolchains/databases/postgres.d.ts +5 -0
  206. package/dist/guest/toolchains/databases/postgres.js +38 -0
  207. package/dist/guest/toolchains/databases/redis.d.ts +3 -0
  208. package/dist/guest/toolchains/databases/redis.js +16 -0
  209. package/dist/guest/toolchains/databases/server.d.ts +14 -0
  210. package/dist/guest/toolchains/databases/server.js +52 -0
  211. package/dist/guest/toolchains/git.d.ts +3 -0
  212. package/dist/guest/toolchains/git.js +121 -0
  213. package/dist/guest/toolchains/go.d.ts +3 -0
  214. package/dist/guest/toolchains/go.js +33 -0
  215. package/dist/guest/toolchains/index.d.ts +17 -0
  216. package/dist/guest/toolchains/index.js +80 -0
  217. package/dist/guest/toolchains/java.d.ts +8 -0
  218. package/dist/guest/toolchains/java.js +96 -0
  219. package/dist/guest/toolchains/leftovers.d.ts +2 -0
  220. package/dist/guest/toolchains/leftovers.js +26 -0
  221. package/dist/guest/toolchains/managers.d.ts +16 -0
  222. package/dist/guest/toolchains/managers.js +84 -0
  223. package/dist/guest/toolchains/native/binstall.d.ts +7 -0
  224. package/dist/guest/toolchains/native/binstall.js +52 -0
  225. package/dist/guest/toolchains/native/cpp.d.ts +4 -0
  226. package/dist/guest/toolchains/native/cpp.js +38 -0
  227. package/dist/guest/toolchains/native/dotnet.d.ts +4 -0
  228. package/dist/guest/toolchains/native/dotnet.js +103 -0
  229. package/dist/guest/toolchains/native/mesa.d.ts +7 -0
  230. package/dist/guest/toolchains/native/mesa.js +46 -0
  231. package/dist/guest/toolchains/native/msvc/environment.d.ts +16 -0
  232. package/dist/guest/toolchains/native/msvc/environment.js +57 -0
  233. package/dist/guest/toolchains/native/msvc/index.d.ts +6 -0
  234. package/dist/guest/toolchains/native/msvc/index.js +48 -0
  235. package/dist/guest/toolchains/native/msvc/packages.d.ts +6 -0
  236. package/dist/guest/toolchains/native/msvc/packages.js +156 -0
  237. package/dist/guest/toolchains/native/msvc/tree.d.ts +15 -0
  238. package/dist/guest/toolchains/native/msvc/tree.js +21 -0
  239. package/dist/guest/toolchains/native/rust.d.ts +3 -0
  240. package/dist/guest/toolchains/native/rust.js +45 -0
  241. package/dist/guest/toolchains/node.d.ts +3 -0
  242. package/dist/guest/toolchains/node.js +152 -0
  243. package/dist/guest/toolchains/plan.d.ts +22 -0
  244. package/dist/guest/toolchains/plan.js +96 -0
  245. package/dist/guest/toolchains/pwsh.d.ts +4 -0
  246. package/dist/guest/toolchains/pwsh.js +14 -0
  247. package/dist/guest/toolchains/python.d.ts +3 -0
  248. package/dist/guest/toolchains/python.js +54 -0
  249. package/dist/guest/toolchains/runtimes.d.ts +19 -0
  250. package/dist/guest/toolchains/runtimes.js +38 -0
  251. package/dist/guest/toolchains/scripting/php.d.ts +3 -0
  252. package/dist/guest/toolchains/scripting/php.js +71 -0
  253. package/dist/guest/toolchains/scripting/ruby.d.ts +3 -0
  254. package/dist/guest/toolchains/scripting/ruby.js +47 -0
  255. package/dist/guest/toolchains/scripting/vcruntime.d.ts +7 -0
  256. package/dist/guest/toolchains/scripting/vcruntime.js +45 -0
  257. package/dist/guest/toolchains/versions.d.ts +47 -0
  258. package/dist/guest/toolchains/versions.js +77 -0
  259. package/dist/guest/toolchains/vscode.d.ts +2 -0
  260. package/dist/guest/toolchains/vscode.js +53 -0
  261. package/dist/guest/view.d.ts +1 -0
  262. package/dist/guest/view.js +42 -0
  263. package/dist/host/accounts.d.ts +32 -0
  264. package/dist/host/accounts.js +128 -0
  265. package/dist/host/agent-commands.d.ts +25 -0
  266. package/dist/host/agent-commands.js +145 -0
  267. package/dist/host/attach.d.ts +17 -0
  268. package/dist/host/attach.js +69 -0
  269. package/dist/host/channel.d.ts +38 -0
  270. package/dist/host/channel.js +162 -0
  271. package/dist/host/claude-profile.d.ts +15 -0
  272. package/dist/host/claude-profile.js +107 -0
  273. package/dist/host/cleanup.d.ts +23 -0
  274. package/dist/host/cleanup.js +57 -0
  275. package/dist/host/database-plan.d.ts +12 -0
  276. package/dist/host/database-plan.js +52 -0
  277. package/dist/host/generate.d.ts +7 -0
  278. package/dist/host/generate.js +98 -0
  279. package/dist/host/join.d.ts +28 -0
  280. package/dist/host/join.js +76 -0
  281. package/dist/host/launch/mappings.d.ts +3 -0
  282. package/dist/host/launch/mappings.js +50 -0
  283. package/dist/host/launch/projects.d.ts +15 -0
  284. package/dist/host/launch/projects.js +56 -0
  285. package/dist/host/launch/stage.d.ts +11 -0
  286. package/dist/host/launch/stage.js +66 -0
  287. package/dist/host/launch/wsb.d.ts +10 -0
  288. package/dist/host/launch/wsb.js +34 -0
  289. package/dist/host/pc-scan.d.ts +6 -0
  290. package/dist/host/pc-scan.js +37 -0
  291. package/dist/host/personalize.d.ts +10 -0
  292. package/dist/host/personalize.js +97 -0
  293. package/dist/host/platform.d.ts +19 -0
  294. package/dist/host/platform.js +126 -0
  295. package/dist/host/project-scan.d.ts +7 -0
  296. package/dist/host/project-scan.js +89 -0
  297. package/dist/host/projects.d.ts +100 -0
  298. package/dist/host/projects.js +147 -0
  299. package/dist/host/repo-guard.d.ts +36 -0
  300. package/dist/host/repo-guard.js +219 -0
  301. package/dist/host/secrets.d.ts +14 -0
  302. package/dist/host/secrets.js +133 -0
  303. package/dist/host/terminal.d.ts +32 -0
  304. package/dist/host/terminal.js +130 -0
  305. package/dist/host/test-guard.d.ts +6 -0
  306. package/dist/host/test-guard.js +15 -0
  307. package/dist/host/window.d.ts +4 -0
  308. package/dist/host/window.js +72 -0
  309. package/dist/host/wsb.d.ts +37 -0
  310. package/dist/host/wsb.js +101 -0
  311. package/dist/runtime/daemon.js +28494 -0
  312. package/dist/runtime/db.js +26387 -0
  313. package/dist/runtime/gitguard.js +84 -0
  314. package/dist/runtime/main.js +28622 -0
  315. package/dist/runtime/view.js +25841 -0
  316. package/dist/selftest/accounts.test.d.ts +2 -0
  317. package/dist/selftest/accounts.test.js +44 -0
  318. package/dist/selftest/agent-commands.test.d.ts +2 -0
  319. package/dist/selftest/agent-commands.test.js +47 -0
  320. package/dist/selftest/channel.test.d.ts +2 -0
  321. package/dist/selftest/channel.test.js +37 -0
  322. package/dist/selftest/cli.test.d.ts +2 -0
  323. package/dist/selftest/cli.test.js +118 -0
  324. package/dist/selftest/cmdline.test.d.ts +2 -0
  325. package/dist/selftest/cmdline.test.js +45 -0
  326. package/dist/selftest/config.test.d.ts +2 -0
  327. package/dist/selftest/config.test.js +38 -0
  328. package/dist/selftest/data.test.d.ts +2 -0
  329. package/dist/selftest/data.test.js +80 -0
  330. package/dist/selftest/detect.test.d.ts +2 -0
  331. package/dist/selftest/detect.test.js +58 -0
  332. package/dist/selftest/fixtures.d.ts +272 -0
  333. package/dist/selftest/fixtures.js +80 -0
  334. package/dist/selftest/generate.test.d.ts +2 -0
  335. package/dist/selftest/generate.test.js +63 -0
  336. package/dist/selftest/git-access.test.d.ts +2 -0
  337. package/dist/selftest/git-access.test.js +26 -0
  338. package/dist/selftest/guest-boot.test.d.ts +2 -0
  339. package/dist/selftest/guest-boot.test.js +76 -0
  340. package/dist/selftest/harness.d.ts +51 -0
  341. package/dist/selftest/harness.js +77 -0
  342. package/dist/selftest/host-sim.test.d.ts +2 -0
  343. package/dist/selftest/host-sim.test.js +93 -0
  344. package/dist/selftest/hostile-input.test.d.ts +2 -0
  345. package/dist/selftest/hostile-input.test.js +54 -0
  346. package/dist/selftest/index.d.ts +8 -0
  347. package/dist/selftest/index.js +155 -0
  348. package/dist/selftest/links.test.d.ts +2 -0
  349. package/dist/selftest/links.test.js +50 -0
  350. package/dist/selftest/live-daemon.test.d.ts +2 -0
  351. package/dist/selftest/live-daemon.test.js +91 -0
  352. package/dist/selftest/live-git.test.d.ts +2 -0
  353. package/dist/selftest/live-git.test.js +60 -0
  354. package/dist/selftest/live-projects.test.d.ts +2 -0
  355. package/dist/selftest/live-projects.test.js +127 -0
  356. package/dist/selftest/live.d.ts +65 -0
  357. package/dist/selftest/live.js +109 -0
  358. package/dist/selftest/local-config.test.d.ts +2 -0
  359. package/dist/selftest/local-config.test.js +107 -0
  360. package/dist/selftest/mirror.test.d.ts +2 -0
  361. package/dist/selftest/mirror.test.js +101 -0
  362. package/dist/selftest/network.test.d.ts +2 -0
  363. package/dist/selftest/network.test.js +28 -0
  364. package/dist/selftest/personalization.test.d.ts +2 -0
  365. package/dist/selftest/personalization.test.js +53 -0
  366. package/dist/selftest/projects.test.d.ts +2 -0
  367. package/dist/selftest/projects.test.js +254 -0
  368. package/dist/selftest/repair.test.d.ts +2 -0
  369. package/dist/selftest/repair.test.js +42 -0
  370. package/dist/selftest/repo-guard.test.d.ts +2 -0
  371. package/dist/selftest/repo-guard.test.js +63 -0
  372. package/dist/selftest/secrets.test.d.ts +2 -0
  373. package/dist/selftest/secrets.test.js +71 -0
  374. package/dist/selftest/setup.test.d.ts +2 -0
  375. package/dist/selftest/setup.test.js +46 -0
  376. package/dist/selftest/suite.d.ts +13 -0
  377. package/dist/selftest/suite.js +1 -0
  378. package/dist/selftest/sync.test.d.ts +2 -0
  379. package/dist/selftest/sync.test.js +94 -0
  380. package/dist/selftest/test-guard.test.d.ts +2 -0
  381. package/dist/selftest/test-guard.test.js +49 -0
  382. package/dist/selftest/toolchains.test.d.ts +2 -0
  383. package/dist/selftest/toolchains.test.js +103 -0
  384. package/dist/selftest/workspace.test.d.ts +2 -0
  385. package/dist/selftest/workspace.test.js +53 -0
  386. package/dist/shared/download.d.ts +60 -0
  387. package/dist/shared/download.js +215 -0
  388. package/dist/shared/guest-paths.d.ts +30 -0
  389. package/dist/shared/guest-paths.js +61 -0
  390. package/dist/shared/netrules.d.ts +18 -0
  391. package/dist/shared/netrules.js +98 -0
  392. package/dist/shared/paths.d.ts +14 -0
  393. package/dist/shared/paths.js +28 -0
  394. package/dist/shared/projects.d.ts +53 -0
  395. package/dist/shared/projects.js +67 -0
  396. package/dist/shared/pty-client.d.ts +86 -0
  397. package/dist/shared/pty-client.js +227 -0
  398. package/dist/shared/rundir.d.ts +39 -0
  399. package/dist/shared/rundir.js +94 -0
  400. package/dist/shared/safe-remove.d.ts +10 -0
  401. package/dist/shared/safe-remove.js +66 -0
  402. package/dist/shared/schema.d.ts +527 -0
  403. package/dist/shared/schema.js +90 -0
  404. package/dist/shared/system.d.ts +15 -0
  405. package/dist/shared/system.js +19 -0
  406. package/dist/shared/test-guard.d.ts +4 -0
  407. package/dist/shared/test-guard.js +37 -0
  408. package/dist/sync/claude-mem.d.ts +8 -0
  409. package/dist/sync/claude-mem.js +79 -0
  410. package/dist/sync/history.d.ts +41 -0
  411. package/dist/sync/history.js +161 -0
  412. package/dist/sync/watcher.d.ts +21 -0
  413. package/dist/sync/watcher.js +135 -0
  414. package/hooks/post-agent/README.txt +1 -0
  415. package/hooks/pre-provision/README.txt +1 -0
  416. package/package.json +91 -4
  417. package/sandbox/bootstrap.ps1 +258 -0
  418. package/sandbox/cpucap.ps1 +51 -0
  419. package/sandbox/gitshim.cs +35 -0
  420. package/sandbox/logon.cmd +18 -0
  421. package/sandbox/openssl.cs +42 -0
  422. package/sandbox/ptyhost.cs +614 -0
  423. package/sandbox/trust.cmd +35 -0
  424. package/sandbox/vswhere.cs +83 -0
  425. package/schemas/config.schema.json +1161 -0
  426. package/schemas/sandbox-config.schema.json +968 -0
@@ -0,0 +1,594 @@
1
+ import { z } from 'zod';
2
+ export declare const Config: z.ZodObject<{
3
+ $schema: z.ZodOptional<z.ZodString>;
4
+ defaultHarness: z.ZodString;
5
+ guestWorkspace: z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodLiteral<"mirror">, z.ZodString]>;
6
+ readOnly: z.ZodBoolean;
7
+ mappings: z.ZodArray<z.ZodObject<{
8
+ host: z.ZodString;
9
+ guest: z.ZodString;
10
+ readOnly: z.ZodBoolean;
11
+ optional: z.ZodOptional<z.ZodBoolean>;
12
+ }, z.core.$strict>>;
13
+ sandbox: z.ZodObject<{
14
+ memoryMb: z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodNumber]>;
15
+ maxMemoryMb: z.ZodNumber;
16
+ maxMemoryPercent: z.ZodNumber;
17
+ cpuLimit: z.ZodUnion<readonly [z.ZodLiteral<"none">, z.ZodNumber]>;
18
+ reserveHostMb: z.ZodNumber;
19
+ vGpu: z.ZodBoolean;
20
+ networking: z.ZodBoolean;
21
+ clipboard: z.ZodBoolean;
22
+ audioInput: z.ZodBoolean;
23
+ videoInput: z.ZodBoolean;
24
+ printerRedirection: z.ZodBoolean;
25
+ protectedClient: z.ZodBoolean;
26
+ headless: z.ZodBoolean;
27
+ }, z.core.$strict>;
28
+ storage: z.ZodObject<{
29
+ root: z.ZodString;
30
+ persistAgentState: z.ZodBoolean;
31
+ dataName: z.ZodString;
32
+ }, z.core.$strict>;
33
+ network: z.ZodObject<{
34
+ blockPrivateRanges: z.ZodBoolean;
35
+ }, z.core.$strict>;
36
+ provisioning: z.ZodObject<{
37
+ copyFromHost: z.ZodBoolean;
38
+ fallbackToInstall: z.ZodBoolean;
39
+ refresh: z.ZodBoolean;
40
+ git: z.ZodObject<{
41
+ enabled: z.ZodBoolean;
42
+ access: z.ZodEnum<{
43
+ readonly: "readonly";
44
+ full: "full";
45
+ none: "none";
46
+ }>;
47
+ }, z.core.$strict>;
48
+ terminal: z.ZodObject<{
49
+ enabled: z.ZodBoolean;
50
+ }, z.core.$strict>;
51
+ }, z.core.$strict>;
52
+ downloads: z.ZodObject<{
53
+ requireChecksum: z.ZodBoolean;
54
+ }, z.core.$strict>;
55
+ toolchains: z.ZodObject<{
56
+ node: z.ZodObject<{
57
+ version: z.ZodString;
58
+ extraVersions: z.ZodArray<z.ZodString>;
59
+ corepack: z.ZodBoolean;
60
+ volta: z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>;
61
+ globalPackages: z.ZodArray<z.ZodString>;
62
+ }, z.core.$strict>;
63
+ python: z.ZodObject<{
64
+ enabled: z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>;
65
+ version: z.ZodString;
66
+ python2: z.ZodBoolean;
67
+ pyenv: z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>;
68
+ tools: z.ZodArray<z.ZodString>;
69
+ }, z.core.$strict>;
70
+ rust: z.ZodObject<{
71
+ enabled: z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>;
72
+ toolchain: z.ZodString;
73
+ host: z.ZodString;
74
+ components: z.ZodArray<z.ZodString>;
75
+ targets: z.ZodArray<z.ZodString>;
76
+ crates: z.ZodArray<z.ZodString>;
77
+ targetDir: z.ZodString;
78
+ }, z.core.$strict>;
79
+ msvc: z.ZodObject<{
80
+ enabled: z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>;
81
+ acceptLicense: z.ZodBoolean;
82
+ msvcVersion: z.ZodString;
83
+ sdkVersion: z.ZodString;
84
+ }, z.core.$strict>;
85
+ cpp: z.ZodObject<{
86
+ enabled: z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>;
87
+ flexBison: z.ZodBoolean;
88
+ }, z.core.$strict>;
89
+ dotnet: z.ZodObject<{
90
+ enabled: z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>;
91
+ channels: z.ZodArray<z.ZodString>;
92
+ tools: z.ZodArray<z.ZodString>;
93
+ workloads: z.ZodArray<z.ZodString>;
94
+ frameworkTargets: z.ZodArray<z.ZodString>;
95
+ netfx35: z.ZodBoolean;
96
+ }, z.core.$strict>;
97
+ go: z.ZodObject<{
98
+ enabled: z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>;
99
+ version: z.ZodString;
100
+ tools: z.ZodArray<z.ZodString>;
101
+ }, z.core.$strict>;
102
+ java: z.ZodObject<{
103
+ enabled: z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>;
104
+ version: z.ZodString;
105
+ maven: z.ZodBoolean;
106
+ gradle: z.ZodBoolean;
107
+ }, z.core.$strict>;
108
+ ruby: z.ZodObject<{
109
+ enabled: z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>;
110
+ version: z.ZodString;
111
+ gems: z.ZodArray<z.ZodString>;
112
+ }, z.core.$strict>;
113
+ php: z.ZodObject<{
114
+ enabled: z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>;
115
+ version: z.ZodString;
116
+ composer: z.ZodBoolean;
117
+ }, z.core.$strict>;
118
+ deno: z.ZodObject<{
119
+ enabled: z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>;
120
+ }, z.core.$strict>;
121
+ pwsh: z.ZodObject<{
122
+ enabled: z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>;
123
+ }, z.core.$strict>;
124
+ cli: z.ZodObject<{
125
+ gh: z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>;
126
+ zstd: z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>;
127
+ openssl: z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>;
128
+ }, z.core.$strict>;
129
+ bun: z.ZodObject<{
130
+ enabled: z.ZodBoolean;
131
+ }, z.core.$strict>;
132
+ uv: z.ZodObject<{
133
+ enabled: z.ZodBoolean;
134
+ }, z.core.$strict>;
135
+ vcRuntime: z.ZodObject<{
136
+ enabled: z.ZodBoolean;
137
+ }, z.core.$strict>;
138
+ mesa: z.ZodObject<{
139
+ enabled: z.ZodBoolean;
140
+ vulkan: z.ZodBoolean;
141
+ }, z.core.$strict>;
142
+ vscode: z.ZodObject<{
143
+ enabled: z.ZodBoolean;
144
+ }, z.core.$strict>;
145
+ environment: z.ZodRecord<z.ZodString, z.ZodString>;
146
+ }, z.core.$strict>;
147
+ databases: z.ZodObject<{
148
+ postgres: z.ZodObject<{
149
+ enabled: z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>;
150
+ version: z.ZodString;
151
+ port: z.ZodNumber;
152
+ }, z.core.$strict>;
153
+ mysql: z.ZodObject<{
154
+ enabled: z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>;
155
+ version: z.ZodString;
156
+ port: z.ZodNumber;
157
+ }, z.core.$strict>;
158
+ mongodb: z.ZodObject<{
159
+ enabled: z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>;
160
+ version: z.ZodString;
161
+ port: z.ZodNumber;
162
+ }, z.core.$strict>;
163
+ redis: z.ZodObject<{
164
+ enabled: z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>;
165
+ port: z.ZodNumber;
166
+ }, z.core.$strict>;
167
+ dynamodb: z.ZodObject<{
168
+ enabled: z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>;
169
+ port: z.ZodNumber;
170
+ adminPort: z.ZodNumber;
171
+ admin: z.ZodBoolean;
172
+ }, z.core.$strict>;
173
+ sqlserver: z.ZodObject<{
174
+ enabled: z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>;
175
+ }, z.core.$strict>;
176
+ }, z.core.$strict>;
177
+ attach: z.ZodObject<{
178
+ enabled: z.ZodBoolean;
179
+ reuseSession: z.ZodBoolean;
180
+ auto: z.ZodBoolean;
181
+ autoHide: z.ZodBoolean;
182
+ }, z.core.$strict>;
183
+ agentCommands: z.ZodObject<{
184
+ enabled: z.ZodBoolean;
185
+ agents: z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodArray<z.ZodString>]>;
186
+ }, z.core.$strict>;
187
+ secrets: z.ZodObject<{
188
+ strip: z.ZodBoolean;
189
+ allow: z.ZodArray<z.ZodString>;
190
+ patterns: z.ZodArray<z.ZodString>;
191
+ warnFiles: z.ZodBoolean;
192
+ }, z.core.$strict>;
193
+ personalization: z.ZodObject<{
194
+ enabled: z.ZodBoolean;
195
+ }, z.core.$strict>;
196
+ claudeProfile: z.ZodObject<{
197
+ enabled: z.ZodBoolean;
198
+ hostDir: z.ZodString;
199
+ include: z.ZodArray<z.ZodString>;
200
+ globalStateFile: z.ZodString;
201
+ copyCredentials: z.ZodBoolean;
202
+ overwrite: z.ZodBoolean;
203
+ syncHistory: z.ZodBoolean;
204
+ syncClaudeMem: z.ZodBoolean;
205
+ }, z.core.$strict>;
206
+ harnesses: z.ZodRecord<z.ZodString, z.ZodObject<{
207
+ hostExecutable: z.ZodOptional<z.ZodString>;
208
+ hostDir: z.ZodOptional<z.ZodString>;
209
+ npmPackage: z.ZodOptional<z.ZodString>;
210
+ npmBin: z.ZodOptional<z.ZodString>;
211
+ uvPackage: z.ZodOptional<z.ZodString>;
212
+ uvBin: z.ZodOptional<z.ZodString>;
213
+ arguments: z.ZodArray<z.ZodString>;
214
+ environment: z.ZodRecord<z.ZodString, z.ZodString>;
215
+ resumeArguments: z.ZodOptional<z.ZodArray<z.ZodString>>;
216
+ }, z.core.$strict>>;
217
+ hooks: z.ZodObject<{
218
+ failFast: z.ZodBoolean;
219
+ }, z.core.$strict>;
220
+ projects: z.ZodObject<{
221
+ all: z.ZodBoolean;
222
+ exclude: z.ZodArray<z.ZodString>;
223
+ roots: z.ZodArray<z.ZodString>;
224
+ askToAddRoot: z.ZodBoolean;
225
+ declinedRoots: z.ZodArray<z.ZodString>;
226
+ wsbShare: z.ZodBoolean;
227
+ }, z.core.$strict>;
228
+ }, z.core.$strict>;
229
+ /**
230
+ * What a project's .sandbox-config.json may change. A repo can ship this file, so it can NOT touch storage, agent
231
+ * executables, host folders for tools or Claude settings, or anything else outside this list.
232
+ */
233
+ export declare const LocalOverrides: z.ZodObject<{
234
+ $schema: z.ZodOptional<z.ZodString>;
235
+ harness: z.ZodOptional<z.ZodString>;
236
+ guestWorkspace: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodLiteral<"mirror">, z.ZodString]>>;
237
+ readOnly: z.ZodOptional<z.ZodBoolean>;
238
+ mappings: z.ZodOptional<z.ZodArray<z.ZodObject<{
239
+ host: z.ZodString;
240
+ guest: z.ZodString;
241
+ readOnly: z.ZodBoolean;
242
+ optional: z.ZodOptional<z.ZodBoolean>;
243
+ }, z.core.$strict>>>;
244
+ scripts: z.ZodOptional<z.ZodArray<z.ZodString>>;
245
+ sandbox: z.ZodOptional<z.ZodObject<{
246
+ memoryMb: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodNumber]>>;
247
+ maxMemoryMb: z.ZodOptional<z.ZodNumber>;
248
+ maxMemoryPercent: z.ZodOptional<z.ZodNumber>;
249
+ reserveHostMb: z.ZodOptional<z.ZodNumber>;
250
+ vGpu: z.ZodOptional<z.ZodBoolean>;
251
+ networking: z.ZodOptional<z.ZodBoolean>;
252
+ clipboard: z.ZodOptional<z.ZodBoolean>;
253
+ audioInput: z.ZodOptional<z.ZodBoolean>;
254
+ videoInput: z.ZodOptional<z.ZodBoolean>;
255
+ printerRedirection: z.ZodOptional<z.ZodBoolean>;
256
+ protectedClient: z.ZodOptional<z.ZodBoolean>;
257
+ headless: z.ZodOptional<z.ZodBoolean>;
258
+ }, z.core.$strict>>;
259
+ network: z.ZodOptional<z.ZodObject<{
260
+ blockPrivateRanges: z.ZodOptional<z.ZodBoolean>;
261
+ }, z.core.$strict>>;
262
+ provisioning: z.ZodOptional<z.ZodObject<{
263
+ copyFromHost: z.ZodOptional<z.ZodBoolean>;
264
+ fallbackToInstall: z.ZodOptional<z.ZodBoolean>;
265
+ refresh: z.ZodOptional<z.ZodBoolean>;
266
+ git: z.ZodOptional<z.ZodObject<{
267
+ enabled: z.ZodOptional<z.ZodBoolean>;
268
+ access: z.ZodOptional<z.ZodEnum<{
269
+ readonly: "readonly";
270
+ full: "full";
271
+ none: "none";
272
+ }>>;
273
+ }, z.core.$strict>>;
274
+ terminal: z.ZodOptional<z.ZodObject<{
275
+ enabled: z.ZodOptional<z.ZodBoolean>;
276
+ }, z.core.$strict>>;
277
+ }, z.core.$strict>>;
278
+ downloads: z.ZodOptional<z.ZodObject<{
279
+ requireChecksum: z.ZodOptional<z.ZodBoolean>;
280
+ }, z.core.$strict>>;
281
+ toolchains: z.ZodOptional<z.ZodObject<{
282
+ environment: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
283
+ node: z.ZodOptional<z.ZodObject<{
284
+ enabled: z.ZodOptional<z.ZodBoolean>;
285
+ }, z.core.$strict> | z.ZodObject<{
286
+ version: z.ZodOptional<z.ZodString>;
287
+ extraVersions: z.ZodOptional<z.ZodArray<z.ZodString>>;
288
+ corepack: z.ZodOptional<z.ZodBoolean>;
289
+ volta: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
290
+ globalPackages: z.ZodOptional<z.ZodArray<z.ZodString>>;
291
+ }, z.core.$strict> | z.ZodObject<{
292
+ enabled: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
293
+ }, z.core.$strict> | z.ZodObject<{
294
+ gh: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
295
+ zstd: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
296
+ openssl: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
297
+ }, z.core.$strict>>;
298
+ python: z.ZodOptional<z.ZodObject<{
299
+ enabled: z.ZodOptional<z.ZodBoolean>;
300
+ }, z.core.$strict> | z.ZodObject<{
301
+ version: z.ZodOptional<z.ZodString>;
302
+ extraVersions: z.ZodOptional<z.ZodArray<z.ZodString>>;
303
+ corepack: z.ZodOptional<z.ZodBoolean>;
304
+ volta: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
305
+ globalPackages: z.ZodOptional<z.ZodArray<z.ZodString>>;
306
+ }, z.core.$strict> | z.ZodObject<{
307
+ enabled: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
308
+ }, z.core.$strict> | z.ZodObject<{
309
+ gh: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
310
+ zstd: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
311
+ openssl: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
312
+ }, z.core.$strict>>;
313
+ rust: z.ZodOptional<z.ZodObject<{
314
+ enabled: z.ZodOptional<z.ZodBoolean>;
315
+ }, z.core.$strict> | z.ZodObject<{
316
+ version: z.ZodOptional<z.ZodString>;
317
+ extraVersions: z.ZodOptional<z.ZodArray<z.ZodString>>;
318
+ corepack: z.ZodOptional<z.ZodBoolean>;
319
+ volta: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
320
+ globalPackages: z.ZodOptional<z.ZodArray<z.ZodString>>;
321
+ }, z.core.$strict> | z.ZodObject<{
322
+ enabled: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
323
+ }, z.core.$strict> | z.ZodObject<{
324
+ gh: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
325
+ zstd: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
326
+ openssl: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
327
+ }, z.core.$strict>>;
328
+ msvc: z.ZodOptional<z.ZodObject<{
329
+ enabled: z.ZodOptional<z.ZodBoolean>;
330
+ }, z.core.$strict> | z.ZodObject<{
331
+ version: z.ZodOptional<z.ZodString>;
332
+ extraVersions: z.ZodOptional<z.ZodArray<z.ZodString>>;
333
+ corepack: z.ZodOptional<z.ZodBoolean>;
334
+ volta: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
335
+ globalPackages: z.ZodOptional<z.ZodArray<z.ZodString>>;
336
+ }, z.core.$strict> | z.ZodObject<{
337
+ enabled: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
338
+ }, z.core.$strict> | z.ZodObject<{
339
+ gh: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
340
+ zstd: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
341
+ openssl: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
342
+ }, z.core.$strict>>;
343
+ cpp: z.ZodOptional<z.ZodObject<{
344
+ enabled: z.ZodOptional<z.ZodBoolean>;
345
+ }, z.core.$strict> | z.ZodObject<{
346
+ version: z.ZodOptional<z.ZodString>;
347
+ extraVersions: z.ZodOptional<z.ZodArray<z.ZodString>>;
348
+ corepack: z.ZodOptional<z.ZodBoolean>;
349
+ volta: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
350
+ globalPackages: z.ZodOptional<z.ZodArray<z.ZodString>>;
351
+ }, z.core.$strict> | z.ZodObject<{
352
+ enabled: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
353
+ }, z.core.$strict> | z.ZodObject<{
354
+ gh: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
355
+ zstd: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
356
+ openssl: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
357
+ }, z.core.$strict>>;
358
+ dotnet: z.ZodOptional<z.ZodObject<{
359
+ enabled: z.ZodOptional<z.ZodBoolean>;
360
+ }, z.core.$strict> | z.ZodObject<{
361
+ version: z.ZodOptional<z.ZodString>;
362
+ extraVersions: z.ZodOptional<z.ZodArray<z.ZodString>>;
363
+ corepack: z.ZodOptional<z.ZodBoolean>;
364
+ volta: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
365
+ globalPackages: z.ZodOptional<z.ZodArray<z.ZodString>>;
366
+ }, z.core.$strict> | z.ZodObject<{
367
+ enabled: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
368
+ }, z.core.$strict> | z.ZodObject<{
369
+ gh: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
370
+ zstd: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
371
+ openssl: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
372
+ }, z.core.$strict>>;
373
+ go: z.ZodOptional<z.ZodObject<{
374
+ enabled: z.ZodOptional<z.ZodBoolean>;
375
+ }, z.core.$strict> | z.ZodObject<{
376
+ version: z.ZodOptional<z.ZodString>;
377
+ extraVersions: z.ZodOptional<z.ZodArray<z.ZodString>>;
378
+ corepack: z.ZodOptional<z.ZodBoolean>;
379
+ volta: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
380
+ globalPackages: z.ZodOptional<z.ZodArray<z.ZodString>>;
381
+ }, z.core.$strict> | z.ZodObject<{
382
+ enabled: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
383
+ }, z.core.$strict> | z.ZodObject<{
384
+ gh: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
385
+ zstd: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
386
+ openssl: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
387
+ }, z.core.$strict>>;
388
+ java: z.ZodOptional<z.ZodObject<{
389
+ enabled: z.ZodOptional<z.ZodBoolean>;
390
+ }, z.core.$strict> | z.ZodObject<{
391
+ version: z.ZodOptional<z.ZodString>;
392
+ extraVersions: z.ZodOptional<z.ZodArray<z.ZodString>>;
393
+ corepack: z.ZodOptional<z.ZodBoolean>;
394
+ volta: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
395
+ globalPackages: z.ZodOptional<z.ZodArray<z.ZodString>>;
396
+ }, z.core.$strict> | z.ZodObject<{
397
+ enabled: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
398
+ }, z.core.$strict> | z.ZodObject<{
399
+ gh: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
400
+ zstd: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
401
+ openssl: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
402
+ }, z.core.$strict>>;
403
+ ruby: z.ZodOptional<z.ZodObject<{
404
+ enabled: z.ZodOptional<z.ZodBoolean>;
405
+ }, z.core.$strict> | z.ZodObject<{
406
+ version: z.ZodOptional<z.ZodString>;
407
+ extraVersions: z.ZodOptional<z.ZodArray<z.ZodString>>;
408
+ corepack: z.ZodOptional<z.ZodBoolean>;
409
+ volta: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
410
+ globalPackages: z.ZodOptional<z.ZodArray<z.ZodString>>;
411
+ }, z.core.$strict> | z.ZodObject<{
412
+ enabled: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
413
+ }, z.core.$strict> | z.ZodObject<{
414
+ gh: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
415
+ zstd: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
416
+ openssl: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
417
+ }, z.core.$strict>>;
418
+ php: z.ZodOptional<z.ZodObject<{
419
+ enabled: z.ZodOptional<z.ZodBoolean>;
420
+ }, z.core.$strict> | z.ZodObject<{
421
+ version: z.ZodOptional<z.ZodString>;
422
+ extraVersions: z.ZodOptional<z.ZodArray<z.ZodString>>;
423
+ corepack: z.ZodOptional<z.ZodBoolean>;
424
+ volta: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
425
+ globalPackages: z.ZodOptional<z.ZodArray<z.ZodString>>;
426
+ }, z.core.$strict> | z.ZodObject<{
427
+ enabled: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
428
+ }, z.core.$strict> | z.ZodObject<{
429
+ gh: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
430
+ zstd: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
431
+ openssl: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
432
+ }, z.core.$strict>>;
433
+ deno: z.ZodOptional<z.ZodObject<{
434
+ enabled: z.ZodOptional<z.ZodBoolean>;
435
+ }, z.core.$strict> | z.ZodObject<{
436
+ version: z.ZodOptional<z.ZodString>;
437
+ extraVersions: z.ZodOptional<z.ZodArray<z.ZodString>>;
438
+ corepack: z.ZodOptional<z.ZodBoolean>;
439
+ volta: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
440
+ globalPackages: z.ZodOptional<z.ZodArray<z.ZodString>>;
441
+ }, z.core.$strict> | z.ZodObject<{
442
+ enabled: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
443
+ }, z.core.$strict> | z.ZodObject<{
444
+ gh: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
445
+ zstd: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
446
+ openssl: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
447
+ }, z.core.$strict>>;
448
+ pwsh: z.ZodOptional<z.ZodObject<{
449
+ enabled: z.ZodOptional<z.ZodBoolean>;
450
+ }, z.core.$strict> | z.ZodObject<{
451
+ version: z.ZodOptional<z.ZodString>;
452
+ extraVersions: z.ZodOptional<z.ZodArray<z.ZodString>>;
453
+ corepack: z.ZodOptional<z.ZodBoolean>;
454
+ volta: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
455
+ globalPackages: z.ZodOptional<z.ZodArray<z.ZodString>>;
456
+ }, z.core.$strict> | z.ZodObject<{
457
+ enabled: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
458
+ }, z.core.$strict> | z.ZodObject<{
459
+ gh: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
460
+ zstd: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
461
+ openssl: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
462
+ }, z.core.$strict>>;
463
+ cli: z.ZodOptional<z.ZodObject<{
464
+ enabled: z.ZodOptional<z.ZodBoolean>;
465
+ }, z.core.$strict> | z.ZodObject<{
466
+ version: z.ZodOptional<z.ZodString>;
467
+ extraVersions: z.ZodOptional<z.ZodArray<z.ZodString>>;
468
+ corepack: z.ZodOptional<z.ZodBoolean>;
469
+ volta: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
470
+ globalPackages: z.ZodOptional<z.ZodArray<z.ZodString>>;
471
+ }, z.core.$strict> | z.ZodObject<{
472
+ enabled: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
473
+ }, z.core.$strict> | z.ZodObject<{
474
+ gh: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
475
+ zstd: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
476
+ openssl: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
477
+ }, z.core.$strict>>;
478
+ bun: z.ZodOptional<z.ZodObject<{
479
+ enabled: z.ZodOptional<z.ZodBoolean>;
480
+ }, z.core.$strict> | z.ZodObject<{
481
+ version: z.ZodOptional<z.ZodString>;
482
+ extraVersions: z.ZodOptional<z.ZodArray<z.ZodString>>;
483
+ corepack: z.ZodOptional<z.ZodBoolean>;
484
+ volta: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
485
+ globalPackages: z.ZodOptional<z.ZodArray<z.ZodString>>;
486
+ }, z.core.$strict> | z.ZodObject<{
487
+ enabled: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
488
+ }, z.core.$strict> | z.ZodObject<{
489
+ gh: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
490
+ zstd: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
491
+ openssl: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
492
+ }, z.core.$strict>>;
493
+ uv: z.ZodOptional<z.ZodObject<{
494
+ enabled: z.ZodOptional<z.ZodBoolean>;
495
+ }, z.core.$strict> | z.ZodObject<{
496
+ version: z.ZodOptional<z.ZodString>;
497
+ extraVersions: z.ZodOptional<z.ZodArray<z.ZodString>>;
498
+ corepack: z.ZodOptional<z.ZodBoolean>;
499
+ volta: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
500
+ globalPackages: z.ZodOptional<z.ZodArray<z.ZodString>>;
501
+ }, z.core.$strict> | z.ZodObject<{
502
+ enabled: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
503
+ }, z.core.$strict> | z.ZodObject<{
504
+ gh: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
505
+ zstd: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
506
+ openssl: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
507
+ }, z.core.$strict>>;
508
+ vcRuntime: z.ZodOptional<z.ZodObject<{
509
+ enabled: z.ZodOptional<z.ZodBoolean>;
510
+ }, z.core.$strict> | z.ZodObject<{
511
+ version: z.ZodOptional<z.ZodString>;
512
+ extraVersions: z.ZodOptional<z.ZodArray<z.ZodString>>;
513
+ corepack: z.ZodOptional<z.ZodBoolean>;
514
+ volta: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
515
+ globalPackages: z.ZodOptional<z.ZodArray<z.ZodString>>;
516
+ }, z.core.$strict> | z.ZodObject<{
517
+ enabled: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
518
+ }, z.core.$strict> | z.ZodObject<{
519
+ gh: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
520
+ zstd: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
521
+ openssl: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
522
+ }, z.core.$strict>>;
523
+ mesa: z.ZodOptional<z.ZodObject<{
524
+ enabled: z.ZodOptional<z.ZodBoolean>;
525
+ }, z.core.$strict> | z.ZodObject<{
526
+ version: z.ZodOptional<z.ZodString>;
527
+ extraVersions: z.ZodOptional<z.ZodArray<z.ZodString>>;
528
+ corepack: z.ZodOptional<z.ZodBoolean>;
529
+ volta: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
530
+ globalPackages: z.ZodOptional<z.ZodArray<z.ZodString>>;
531
+ }, z.core.$strict> | z.ZodObject<{
532
+ enabled: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
533
+ }, z.core.$strict> | z.ZodObject<{
534
+ gh: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
535
+ zstd: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
536
+ openssl: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
537
+ }, z.core.$strict>>;
538
+ vscode: z.ZodOptional<z.ZodObject<{
539
+ enabled: z.ZodOptional<z.ZodBoolean>;
540
+ }, z.core.$strict> | z.ZodObject<{
541
+ version: z.ZodOptional<z.ZodString>;
542
+ extraVersions: z.ZodOptional<z.ZodArray<z.ZodString>>;
543
+ corepack: z.ZodOptional<z.ZodBoolean>;
544
+ volta: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
545
+ globalPackages: z.ZodOptional<z.ZodArray<z.ZodString>>;
546
+ }, z.core.$strict> | z.ZodObject<{
547
+ enabled: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
548
+ }, z.core.$strict> | z.ZodObject<{
549
+ gh: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
550
+ zstd: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
551
+ openssl: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
552
+ }, z.core.$strict>>;
553
+ }, z.core.$strict>>;
554
+ databases: z.ZodOptional<z.ZodObject<{
555
+ postgres: z.ZodOptional<z.ZodObject<{
556
+ enabled: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
557
+ }, z.core.$strict>>;
558
+ mysql: z.ZodOptional<z.ZodObject<{
559
+ enabled: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
560
+ }, z.core.$strict>>;
561
+ mongodb: z.ZodOptional<z.ZodObject<{
562
+ enabled: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
563
+ }, z.core.$strict>>;
564
+ redis: z.ZodOptional<z.ZodObject<{
565
+ enabled: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
566
+ }, z.core.$strict>>;
567
+ dynamodb: z.ZodOptional<z.ZodObject<{
568
+ enabled: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
569
+ }, z.core.$strict>>;
570
+ sqlserver: z.ZodOptional<z.ZodObject<{
571
+ enabled: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"auto">]>>;
572
+ }, z.core.$strict>>;
573
+ }, z.core.$strict>>;
574
+ attach: z.ZodOptional<z.ZodObject<{
575
+ enabled: z.ZodOptional<z.ZodBoolean>;
576
+ reuseSession: z.ZodOptional<z.ZodBoolean>;
577
+ auto: z.ZodOptional<z.ZodBoolean>;
578
+ autoHide: z.ZodOptional<z.ZodBoolean>;
579
+ }, z.core.$strict>>;
580
+ personalization: z.ZodOptional<z.ZodObject<{
581
+ enabled: z.ZodOptional<z.ZodBoolean>;
582
+ }, z.core.$strict>>;
583
+ claudeProfile: z.ZodOptional<z.ZodObject<{
584
+ enabled: z.ZodOptional<z.ZodBoolean>;
585
+ include: z.ZodOptional<z.ZodArray<z.ZodString>>;
586
+ copyCredentials: z.ZodOptional<z.ZodBoolean>;
587
+ overwrite: z.ZodOptional<z.ZodBoolean>;
588
+ syncHistory: z.ZodOptional<z.ZodBoolean>;
589
+ syncClaudeMem: z.ZodOptional<z.ZodBoolean>;
590
+ }, z.core.$strict>>;
591
+ hooks: z.ZodOptional<z.ZodObject<{
592
+ failFast: z.ZodOptional<z.ZodBoolean>;
593
+ }, z.core.$strict>>;
594
+ }, z.core.$strict>;
@@ -0,0 +1,63 @@
1
+ // The user config and the smaller subset a project's .sandbox-config.json may change. Types are inferred from these
2
+ // schemas, and the JSON Schema files in schemas/ are generated from them at build time.
3
+ import _ from 'lodash';
4
+ import { z } from 'zod';
5
+ import { Name, SchemaRef, Strings, toggle } from './common.js';
6
+ import { Databases } from './databases.js';
7
+ import { Harness } from './harness.js';
8
+ import { AgentCommands, Attach, ClaudeProfile, Secrets } from './profile.js';
9
+ import { Downloads, Git, GuestWorkspace, Mapping, Provisioning, Sandbox } from './sandbox.js';
10
+ import { Toolchains } from './toolchains.js';
11
+ import { Projects } from './projects.js';
12
+ export const Config = z.strictObject({
13
+ $schema: SchemaRef.optional(),
14
+ defaultHarness: Name.describe('Agent started by `sandbox launch` (sandbox claude always runs claude).'),
15
+ guestWorkspace: GuestWorkspace,
16
+ readOnly: z.boolean().describe('Map the workspace read-only.'),
17
+ mappings: z.array(Mapping).describe('Extra folders from this PC.'),
18
+ sandbox: Sandbox,
19
+ storage: z.strictObject({
20
+ root: z.string().min(1).describe('Where everything is kept on this PC (tools, databases, logins, launches).'),
21
+ persistAgentState: z.boolean().describe('Keep agent logins and history between sandboxes.'),
22
+ dataName: Name.describe('Name of the persistent data set (C:\\AgentData) shared by all workspaces.'),
23
+ }),
24
+ network: z.strictObject({ blockPrivateRanges: z.boolean().describe('Block your LAN (10/8, 172.16/12, 192.168/16, SMB) from inside the sandbox.') }),
25
+ provisioning: Provisioning,
26
+ downloads: Downloads,
27
+ toolchains: Toolchains,
28
+ databases: Databases.describe('Databases running inside the sandbox. Data persists in C:\\AgentData\\databases; each one starts at boot.'),
29
+ attach: Attach,
30
+ agentCommands: AgentCommands,
31
+ secrets: Secrets,
32
+ personalization: toggle('Copy your desktop look (theme, accent, taskbar, wallpaper, ...) into the sandbox.'),
33
+ claudeProfile: ClaudeProfile,
34
+ harnesses: z.record(Name, Harness).describe('Agents that can run in the sandbox.'),
35
+ hooks: z.strictObject({ failFast: z.boolean().describe('Stop when a hook script fails.') }),
36
+ projects: Projects.describe('Several projects in one sandbox: folders of projects mapped at every start, and adding folders while it runs.'),
37
+ }).refine((c) => c.harnesses[c.defaultHarness] !== undefined, { message: 'defaultHarness must be one of the configured harnesses', path: ['defaultHarness'] });
38
+ /**
39
+ * What a project's .sandbox-config.json may change. A repo can ship this file, so it can NOT touch storage, agent
40
+ * executables, host folders for tools or Claude settings, or anything else outside this list.
41
+ */
42
+ export const LocalOverrides = z.strictObject({
43
+ $schema: SchemaRef,
44
+ harness: Name.describe('Agent for this project.'),
45
+ guestWorkspace: GuestWorkspace,
46
+ readOnly: z.boolean().describe('Map this project read-only.'),
47
+ mappings: z.array(Mapping).describe('Extra folders (relative to this file).'),
48
+ scripts: Strings.describe('Scripts (.ps1 / .mjs / .cmd, relative to this file) run inside the sandbox before the agent.'),
49
+ sandbox: Sandbox.omit({ cpuLimit: true }).partial(),
50
+ network: z.strictObject({ blockPrivateRanges: z.boolean() }).partial(),
51
+ provisioning: Provisioning.pick({ copyFromHost: true, fallbackToInstall: true, refresh: true }).extend({ git: Git.partial(), terminal: toggle('Windows Terminal as the sandbox window.').partial() }).partial(),
52
+ downloads: Downloads.partial(),
53
+ // Every toolchain setting, each one optional (a project usually only switches languages on or pins a version).
54
+ toolchains: z.strictObject({
55
+ ..._.mapValues(_.omit(Toolchains.shape, 'environment'), (shape) => shape.partial()),
56
+ environment: Toolchains.shape.environment,
57
+ }).partial(),
58
+ databases: z.strictObject(_.mapValues(Databases.shape, (shape) => shape.partial())).partial(),
59
+ attach: Attach.partial(),
60
+ personalization: toggle('Copy your desktop look into the sandbox.').partial(),
61
+ claudeProfile: ClaudeProfile.pick({ enabled: true, include: true, overwrite: true, copyCredentials: true, syncHistory: true, syncClaudeMem: true }).partial(),
62
+ hooks: z.strictObject({ failFast: z.boolean() }).partial(),
63
+ }).partial();