windows-development-sandbox 1.4.1 → 1.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (872) hide show
  1. package/config.example.json +3 -1
  2. package/dist/api.js +27 -16
  3. package/dist/cli/args.d.ts +4 -6
  4. package/dist/cli/args.js +67 -34
  5. package/dist/cli/argv.d.ts +9 -0
  6. package/dist/cli/argv.js +22 -0
  7. package/dist/cli/commands/accounts.d.ts +1 -1
  8. package/dist/cli/commands/accounts.js +42 -27
  9. package/dist/cli/commands/agent-commands.d.ts +3 -3
  10. package/dist/cli/commands/agent-commands.js +27 -18
  11. package/dist/cli/commands/context.d.ts +9 -11
  12. package/dist/cli/commands/context.js +35 -32
  13. package/dist/cli/commands/data/clean.d.ts +2 -2
  14. package/dist/cli/commands/data/clean.js +27 -11
  15. package/dist/cli/commands/data/collect.d.ts +6 -3
  16. package/dist/cli/commands/data/collect.js +46 -15
  17. package/dist/cli/commands/data/index.d.ts +2 -2
  18. package/dist/cli/commands/data/index.js +30 -12
  19. package/dist/cli/commands/data/remove.d.ts +1 -1
  20. package/dist/cli/commands/data/remove.js +4 -4
  21. package/dist/cli/commands/index.d.ts +5 -4
  22. package/dist/cli/commands/index.js +5 -4
  23. package/dist/cli/commands/launch/add-root.d.ts +7 -0
  24. package/dist/cli/commands/launch/add-root.js +64 -0
  25. package/dist/cli/commands/launch/boot-progress.d.ts +7 -0
  26. package/dist/cli/commands/launch/boot-progress.js +48 -0
  27. package/dist/cli/commands/launch/boot-wants.d.ts +11 -0
  28. package/dist/cli/commands/launch/boot-wants.js +48 -0
  29. package/dist/cli/commands/launch/first-start.d.ts +10 -0
  30. package/dist/cli/commands/launch/first-start.js +53 -0
  31. package/dist/cli/commands/launch/index.d.ts +6 -0
  32. package/dist/cli/commands/launch/index.js +6 -0
  33. package/dist/cli/commands/launch/launch.d.ts +8 -0
  34. package/dist/cli/commands/launch/launch.js +211 -0
  35. package/dist/cli/commands/launch/prepare.d.ts +23 -0
  36. package/dist/cli/commands/launch/prepare.js +109 -0
  37. package/dist/cli/commands/launch/running.d.ts +45 -0
  38. package/dist/cli/commands/launch/running.js +218 -0
  39. package/dist/cli/commands/launch/summary.d.ts +8 -0
  40. package/dist/cli/commands/launch/summary.js +98 -0
  41. package/dist/cli/commands/maintenance/audit.d.ts +3 -0
  42. package/dist/cli/commands/maintenance/audit.js +58 -0
  43. package/dist/cli/commands/maintenance/clean.d.ts +2 -0
  44. package/dist/cli/commands/maintenance/clean.js +10 -0
  45. package/dist/cli/commands/maintenance/config.d.ts +2 -0
  46. package/dist/cli/commands/maintenance/config.js +145 -0
  47. package/dist/cli/commands/maintenance/doctor.d.ts +2 -0
  48. package/dist/cli/commands/maintenance/doctor.js +52 -0
  49. package/dist/cli/commands/maintenance/host-claude.d.ts +2 -0
  50. package/dist/cli/commands/maintenance/host-claude.js +4 -0
  51. package/dist/cli/commands/maintenance/index.d.ts +8 -0
  52. package/dist/cli/commands/maintenance/index.js +9 -0
  53. package/dist/cli/commands/maintenance/logs.d.ts +2 -0
  54. package/dist/cli/commands/maintenance/logs.js +44 -0
  55. package/dist/cli/commands/maintenance/sync.d.ts +2 -0
  56. package/dist/cli/commands/maintenance/sync.js +12 -0
  57. package/dist/cli/commands/maintenance/watch.d.ts +3 -0
  58. package/dist/cli/commands/maintenance/watch.js +6 -0
  59. package/dist/cli/commands/projects/describe-sessions.d.ts +3 -0
  60. package/dist/cli/commands/projects/describe-sessions.js +15 -0
  61. package/dist/cli/commands/projects/here.d.ts +38 -0
  62. package/dist/cli/commands/projects/here.js +145 -0
  63. package/dist/cli/commands/projects/index.d.ts +4 -0
  64. package/dist/cli/commands/projects/index.js +4 -0
  65. package/dist/cli/commands/projects/projects.d.ts +14 -0
  66. package/dist/cli/commands/projects/projects.js +213 -0
  67. package/dist/cli/commands/projects/restart.d.ts +15 -0
  68. package/dist/cli/commands/projects/restart.js +149 -0
  69. package/dist/cli/commands/registry.d.ts +3 -0
  70. package/dist/cli/commands/registry.js +34 -0
  71. package/dist/cli/commands/repair/checks.js +105 -29
  72. package/dist/cli/commands/repair/finders.d.ts +13 -10
  73. package/dist/cli/commands/repair/finders.js +63 -43
  74. package/dist/cli/commands/repair/index.d.ts +4 -4
  75. package/dist/cli/commands/repair/index.js +47 -21
  76. package/dist/cli/commands/repair/types.d.ts +2 -2
  77. package/dist/cli/commands/repair/types.js +7 -2
  78. package/dist/cli/commands/sessions/attach.d.ts +2 -0
  79. package/dist/cli/commands/sessions/attach.js +45 -0
  80. package/dist/cli/commands/sessions/control.d.ts +4 -0
  81. package/dist/cli/commands/sessions/control.js +62 -0
  82. package/dist/cli/commands/sessions/exec.d.ts +6 -0
  83. package/dist/cli/commands/sessions/exec.js +72 -0
  84. package/dist/cli/commands/sessions/index.d.ts +6 -0
  85. package/dist/cli/commands/sessions/index.js +9 -0
  86. package/dist/cli/commands/sessions/list.d.ts +15 -0
  87. package/dist/cli/commands/sessions/list.js +65 -0
  88. package/dist/cli/commands/sessions/status.d.ts +2 -0
  89. package/dist/cli/commands/sessions/status.js +153 -0
  90. package/dist/cli/commands/sessions/window.d.ts +3 -0
  91. package/dist/cli/commands/sessions/window.js +18 -0
  92. package/dist/cli/commands/setup/checks.d.ts +4 -4
  93. package/dist/cli/commands/setup/checks.js +36 -19
  94. package/dist/cli/commands/setup/facts.d.ts +6 -6
  95. package/dist/cli/commands/setup/facts.js +23 -11
  96. package/dist/cli/commands/setup/index.d.ts +1 -1
  97. package/dist/cli/commands/setup/index.js +25 -12
  98. package/dist/cli/commands/user-config.d.ts +5 -5
  99. package/dist/cli/commands/user-config.js +14 -12
  100. package/dist/cli/history.d.ts +5 -4
  101. package/dist/cli/history.js +23 -11
  102. package/dist/cli/index.d.ts +4 -14
  103. package/dist/cli/index.js +27 -77
  104. package/dist/cli/manifest.d.ts +464 -10
  105. package/dist/cli/manifest.js +327 -53
  106. package/dist/cli/menu/apps.d.ts +7 -5
  107. package/dist/cli/menu/apps.js +64 -16
  108. package/dist/cli/menu/command-fields.d.ts +15 -0
  109. package/dist/cli/menu/command-fields.js +23 -0
  110. package/dist/cli/menu/command-form.d.ts +3 -5
  111. package/dist/cli/menu/command-form.js +116 -48
  112. package/dist/cli/menu/home.d.ts +22 -0
  113. package/dist/cli/menu/home.js +72 -0
  114. package/dist/cli/menu/index.d.ts +2 -24
  115. package/dist/cli/menu/index.js +4 -178
  116. package/dist/cli/menu/menu.d.ts +23 -0
  117. package/dist/cli/menu/menu.js +185 -0
  118. package/dist/cli/menu/settings/categories.d.ts +2 -2
  119. package/dist/cli/menu/settings/categories.js +123 -20
  120. package/dist/cli/menu/settings/collections/collection-editor.d.ts +23 -0
  121. package/dist/cli/menu/settings/collections/collection-editor.js +89 -0
  122. package/dist/cli/menu/settings/collections/map-editor.d.ts +10 -0
  123. package/dist/cli/menu/settings/collections/map-editor.js +34 -0
  124. package/dist/cli/menu/settings/collections/object-list-editor.d.ts +10 -0
  125. package/dist/cli/menu/settings/collections/object-list-editor.js +23 -0
  126. package/dist/cli/menu/settings/collections/object-map-editor.d.ts +10 -0
  127. package/dist/cli/menu/settings/collections/object-map-editor.js +35 -0
  128. package/dist/cli/menu/settings/collections/string-list-editor.d.ts +12 -0
  129. package/dist/cli/menu/settings/collections/string-list-editor.js +39 -0
  130. package/dist/cli/menu/settings/config-file.d.ts +2 -2
  131. package/dist/cli/menu/settings/config-file.js +42 -19
  132. package/dist/cli/menu/settings/editor-actions.d.ts +2 -0
  133. package/dist/cli/menu/settings/editor-actions.js +2 -0
  134. package/dist/cli/menu/settings/format.d.ts +5 -0
  135. package/dist/cli/menu/settings/format.js +39 -0
  136. package/dist/cli/menu/settings/index.d.ts +1 -29
  137. package/dist/cli/menu/settings/index.js +1 -133
  138. package/dist/cli/menu/settings/object-editor.d.ts +12 -0
  139. package/dist/cli/menu/settings/object-editor.js +86 -0
  140. package/dist/cli/menu/settings/schema-node.d.ts +3 -1
  141. package/dist/cli/menu/settings/schema-node.js +71 -24
  142. package/dist/cli/menu/settings/settings-editor.d.ts +30 -0
  143. package/dist/cli/menu/settings/settings-editor.js +176 -0
  144. package/dist/cli/menu/settings/{editors.d.ts → value-editor.d.ts} +2 -13
  145. package/dist/cli/menu/settings/value-editor.js +137 -0
  146. package/dist/cli/menu/several.d.ts +4 -4
  147. package/dist/cli/menu/several.js +61 -20
  148. package/dist/cli/{colors.d.ts → output/colors.d.ts} +8 -8
  149. package/dist/cli/{colors.js → output/colors.js} +32 -14
  150. package/dist/cli/output/index.d.ts +3 -0
  151. package/dist/cli/output/index.js +3 -0
  152. package/dist/cli/output/print.d.ts +5 -0
  153. package/dist/cli/output/print.js +14 -0
  154. package/dist/cli/{progress.d.ts → output/progress.d.ts} +5 -5
  155. package/dist/cli/{progress.js → output/progress.js} +42 -19
  156. package/dist/cli/report.d.ts +2 -0
  157. package/dist/cli/report.js +20 -0
  158. package/dist/cli/tui/app.d.ts +6 -16
  159. package/dist/cli/tui/app.js +28 -8
  160. package/dist/cli/tui/dialogs/confirm-screen.d.ts +20 -0
  161. package/dist/cli/tui/dialogs/confirm-screen.js +50 -0
  162. package/dist/cli/tui/dialogs/message-screen.d.ts +17 -0
  163. package/dist/cli/tui/dialogs/message-screen.js +55 -0
  164. package/dist/cli/tui/dialogs/paragraphs.d.ts +2 -0
  165. package/dist/cli/tui/dialogs/paragraphs.js +5 -0
  166. package/dist/cli/tui/dialogs/text-screen.d.ts +26 -0
  167. package/dist/cli/tui/dialogs/text-screen.js +107 -0
  168. package/dist/cli/tui/frame.js +3 -1
  169. package/dist/cli/tui/index.d.ts +7 -3
  170. package/dist/cli/tui/index.js +4 -2
  171. package/dist/cli/tui/list/list-screen.d.ts +29 -0
  172. package/dist/cli/tui/{list-screen.js → list/list-screen.js} +86 -23
  173. package/dist/cli/tui/{list-screen.d.ts → list/list-types.d.ts} +0 -28
  174. package/dist/cli/tui/screen.d.ts +14 -0
  175. package/dist/cli/tui/terminal.js +34 -10
  176. package/dist/cli/tui/text.d.ts +2 -1
  177. package/dist/cli/tui/text.js +37 -7
  178. package/dist/cli/tui/theme.js +27 -9
  179. package/dist/cli/validate.d.ts +8 -8
  180. package/dist/cli/validate.js +32 -21
  181. package/dist/core/config/defaults.d.ts +2 -0
  182. package/dist/core/config/defaults.js +203 -0
  183. package/dist/core/config/index.d.ts +2 -0
  184. package/dist/core/config/index.js +3 -0
  185. package/dist/core/{config.d.ts → config/loader.d.ts} +1 -2
  186. package/dist/core/config/loader.js +47 -0
  187. package/dist/core/{detect-databases.js → detect/databases.js} +111 -23
  188. package/dist/core/detect/index.d.ts +4 -0
  189. package/dist/core/detect/index.js +4 -0
  190. package/dist/core/{detect-pwsh.d.ts → detect/pwsh.d.ts} +1 -1
  191. package/dist/core/{detect-pwsh.js → detect/pwsh.js} +25 -11
  192. package/dist/core/{detect-toolchains.d.ts → detect/toolchains.d.ts} +1 -1
  193. package/dist/core/{detect-toolchains.js → detect/toolchains.js} +42 -5
  194. package/dist/{guest/toolchains → core/detect}/versions.js +28 -12
  195. package/dist/core/disk.d.ts +2 -0
  196. package/dist/core/disk.js +46 -3
  197. package/dist/core/local-config/boot-wants.d.ts +45 -0
  198. package/dist/core/local-config/boot-wants.js +120 -0
  199. package/dist/core/local-config/file.d.ts +3 -0
  200. package/dist/core/local-config/file.js +16 -0
  201. package/dist/core/local-config/index.d.ts +5 -0
  202. package/dist/core/local-config/index.js +7 -0
  203. package/dist/core/{local-config.d.ts → local-config/overrides.d.ts} +3 -18
  204. package/dist/core/{local-config.js → local-config/overrides.js} +45 -52
  205. package/dist/core/local-config/policy.d.ts +19 -0
  206. package/dist/core/local-config/policy.js +45 -0
  207. package/dist/core/local-config/trust.d.ts +13 -0
  208. package/dist/core/local-config/trust.js +43 -0
  209. package/dist/core/package-info.d.ts +4 -0
  210. package/dist/core/package-info.js +13 -0
  211. package/dist/core/run/guest-workspace.d.ts +23 -0
  212. package/dist/core/run/guest-workspace.js +47 -0
  213. package/dist/core/run/index.d.ts +3 -0
  214. package/dist/core/run/index.js +3 -0
  215. package/dist/core/run/resolve-run.d.ts +3 -0
  216. package/dist/core/run/resolve-run.js +202 -0
  217. package/dist/core/run/versions.d.ts +13 -0
  218. package/dist/core/run/versions.js +65 -0
  219. package/dist/core/safe-paths.js +17 -5
  220. package/dist/core/schema/apps.d.ts +4 -4
  221. package/dist/core/schema/apps.js +55 -21
  222. package/dist/core/schema/common.d.ts +13 -10
  223. package/dist/core/schema/common.js +16 -10
  224. package/dist/core/schema/config.d.ts +15 -10
  225. package/dist/core/schema/config.js +78 -53
  226. package/dist/core/schema/databases.d.ts +4 -3
  227. package/dist/core/schema/databases.js +16 -12
  228. package/dist/core/schema/harness.d.ts +1 -1
  229. package/dist/core/schema/harness.js +17 -7
  230. package/dist/core/schema/index.d.ts +6 -0
  231. package/dist/core/schema/index.js +8 -0
  232. package/dist/core/schema/json-schema.js +10 -5
  233. package/dist/core/schema/profile.d.ts +4 -4
  234. package/dist/core/schema/profile.js +37 -17
  235. package/dist/core/schema/projects.d.ts +1 -1
  236. package/dist/core/schema/projects.js +16 -6
  237. package/dist/core/schema/sandbox.d.ts +11 -11
  238. package/dist/core/schema/sandbox.js +101 -37
  239. package/dist/core/schema/toolchains.d.ts +6 -1
  240. package/dist/core/schema/toolchains.js +84 -34
  241. package/dist/core/types.d.ts +19 -9
  242. package/dist/core/util/errors.d.ts +8 -0
  243. package/dist/core/util/errors.js +14 -0
  244. package/dist/core/util/fs.d.ts +8 -0
  245. package/dist/core/util/fs.js +40 -0
  246. package/dist/core/util/index.d.ts +7 -0
  247. package/dist/core/util/index.js +7 -0
  248. package/dist/core/util/jsonc.d.ts +6 -0
  249. package/dist/core/util/jsonc.js +25 -0
  250. package/dist/core/util/links.d.ts +10 -0
  251. package/dist/core/util/links.js +39 -0
  252. package/dist/core/util/paths.d.ts +7 -0
  253. package/dist/core/util/paths.js +33 -0
  254. package/dist/core/util/process.d.ts +15 -0
  255. package/dist/core/util/process.js +54 -0
  256. package/dist/core/util/text.d.ts +8 -0
  257. package/dist/core/util/text.js +8 -0
  258. package/dist/guest/{setup/agents.js → agents/agent-installer.js} +24 -4
  259. package/dist/guest/apps/after-install.d.ts +3 -0
  260. package/dist/guest/apps/after-install.js +47 -0
  261. package/dist/guest/apps/app-installer.d.ts +22 -0
  262. package/dist/guest/apps/app-installer.js +116 -0
  263. package/dist/guest/apps/find-exe.d.ts +5 -0
  264. package/dist/guest/apps/find-exe.js +41 -0
  265. package/dist/guest/apps/index.d.ts +3 -10
  266. package/dist/guest/apps/index.js +6 -206
  267. package/dist/guest/apps/resolvers.js +37 -9
  268. package/dist/guest/apps/shortcuts.d.ts +6 -0
  269. package/dist/guest/apps/shortcuts.js +28 -0
  270. package/dist/guest/apps/sources.d.ts +4 -0
  271. package/dist/guest/apps/sources.js +17 -0
  272. package/dist/guest/apps/unpack.d.ts +3 -0
  273. package/dist/guest/apps/unpack.js +47 -0
  274. package/dist/guest/{audit-parse.js → audit/parse.js} +39 -3
  275. package/dist/guest/{audit.d.ts → audit/process-audit.d.ts} +3 -1
  276. package/dist/guest/{audit.js → audit/process-audit.js} +33 -8
  277. package/dist/guest/boot/boot-env.d.ts +4 -0
  278. package/dist/guest/{boot-env.js → boot/boot-env.js} +7 -5
  279. package/dist/guest/boot/boot.d.ts +1 -0
  280. package/dist/guest/{main.js → boot/boot.js} +96 -50
  281. package/dist/guest/{guide.js → boot/guide.js} +32 -7
  282. package/dist/guest/{project-env.d.ts → boot/project-env.d.ts} +3 -3
  283. package/dist/guest/{project-env.js → boot/project-env.js} +12 -4
  284. package/dist/guest/boot/project-status.d.ts +5 -0
  285. package/dist/guest/boot/project-status.js +28 -0
  286. package/dist/guest/daemon/daemon.d.ts +1 -0
  287. package/dist/guest/daemon/daemon.js +51 -0
  288. package/dist/guest/daemon/exec.js +18 -6
  289. package/dist/guest/daemon/{shutdown.js → idle-shutdown.js} +5 -4
  290. package/dist/guest/daemon/{project.d.ts → project-provisioner.d.ts} +3 -3
  291. package/dist/guest/daemon/{project.js → project-provisioner.js} +60 -22
  292. package/dist/guest/daemon/relays.js +5 -3
  293. package/dist/guest/daemon/{session.js → sessions.js} +84 -24
  294. package/dist/guest/daemon/state.d.ts +4 -1
  295. package/dist/guest/daemon/state.js +34 -20
  296. package/dist/guest/databases/database-server.d.ts +13 -0
  297. package/dist/guest/databases/database-server.js +35 -0
  298. package/dist/guest/databases/dynamodb.d.ts +12 -0
  299. package/dist/guest/databases/dynamodb.js +81 -0
  300. package/dist/guest/databases/index.d.ts +2 -0
  301. package/dist/guest/databases/index.js +2 -0
  302. package/dist/guest/databases/mongodb.d.ts +7 -0
  303. package/dist/guest/databases/mongodb.js +46 -0
  304. package/dist/guest/databases/mysql.d.ts +7 -0
  305. package/dist/guest/databases/mysql.js +59 -0
  306. package/dist/guest/databases/names.d.ts +5 -0
  307. package/dist/guest/databases/names.js +8 -0
  308. package/dist/guest/databases/postgres.d.ts +9 -0
  309. package/dist/guest/databases/postgres.js +85 -0
  310. package/dist/guest/databases/redis.d.ts +7 -0
  311. package/dist/guest/databases/redis.js +25 -0
  312. package/dist/guest/databases/registry.d.ts +5 -0
  313. package/dist/guest/databases/registry.js +51 -0
  314. package/dist/guest/databases/sbx-db.d.ts +1 -0
  315. package/dist/guest/{db.js → databases/sbx-db.js} +13 -13
  316. package/dist/guest/{toolchains/databases → databases}/server.d.ts +5 -5
  317. package/dist/guest/{toolchains/databases → databases}/server.js +18 -13
  318. package/dist/guest/entries/daemon.js +16 -0
  319. package/dist/guest/entries/db.js +10 -0
  320. package/dist/guest/entries/gitguard.js +20 -0
  321. package/dist/guest/entries/main.d.ts +1 -0
  322. package/dist/guest/entries/main.js +24 -0
  323. package/dist/guest/entries/netproxy.d.ts +1 -0
  324. package/dist/guest/entries/netproxy.js +7 -0
  325. package/dist/guest/entries/view.d.ts +1 -0
  326. package/dist/guest/entries/view.js +11 -0
  327. package/dist/guest/{gitguard.js → git/decision.js} +49 -26
  328. package/dist/guest/network/addresses.d.ts +2 -0
  329. package/dist/guest/network/addresses.js +6 -0
  330. package/dist/guest/{setup/network.d.ts → network/allow-only.d.ts} +0 -10
  331. package/dist/guest/network/allow-only.js +84 -0
  332. package/dist/guest/network/firewall.d.ts +9 -0
  333. package/dist/guest/{setup/network.js → network/firewall.js} +58 -63
  334. package/dist/guest/network/proxy-server.d.ts +2 -0
  335. package/dist/guest/{netproxy.js → network/proxy-server.js} +37 -18
  336. package/dist/guest/{helpers.d.ts → runtime/csc.d.ts} +1 -1
  337. package/dist/guest/{helpers.js → runtime/csc.js} +7 -2
  338. package/dist/guest/runtime/fs.d.ts +2 -0
  339. package/dist/guest/runtime/fs.js +6 -0
  340. package/dist/guest/runtime/log.d.ts +3 -0
  341. package/dist/guest/runtime/log.js +22 -0
  342. package/dist/guest/runtime/paths.d.ts +13 -0
  343. package/dist/guest/runtime/paths.js +14 -0
  344. package/dist/guest/{ports.js → runtime/ports.js} +8 -2
  345. package/dist/guest/runtime/process.d.ts +15 -0
  346. package/dist/guest/runtime/process.js +59 -0
  347. package/dist/guest/{project-context.js → runtime/project-context.js} +1 -1
  348. package/dist/guest/runtime/session.d.ts +5 -0
  349. package/dist/guest/runtime/session.js +10 -0
  350. package/dist/guest/runtime/status.d.ts +7 -0
  351. package/dist/guest/runtime/status.js +57 -0
  352. package/dist/guest/{cmdline.js → sessions/cmdline.js} +10 -4
  353. package/dist/guest/{ptyhost.js → sessions/pty-host.js} +12 -5
  354. package/dist/guest/{view.js → sessions/viewer.js} +8 -11
  355. package/dist/guest/setup/claude-mem.d.ts +10 -0
  356. package/dist/guest/setup/{claude.js → claude-mem.js} +18 -78
  357. package/dist/guest/setup/{claude.d.ts → claude-profile.d.ts} +0 -10
  358. package/dist/guest/setup/claude-profile.js +89 -0
  359. package/dist/guest/setup/desktop.d.ts +2 -0
  360. package/dist/guest/setup/desktop.js +32 -0
  361. package/dist/guest/setup/environment.js +28 -5
  362. package/dist/guest/setup/{user.d.ts → git-identity.d.ts} +0 -2
  363. package/dist/guest/setup/git-identity.js +34 -0
  364. package/dist/guest/{gitrules.d.ts → setup/git-rules.d.ts} +1 -1
  365. package/dist/guest/setup/git-rules.js +50 -0
  366. package/dist/guest/setup/hooks.js +22 -5
  367. package/dist/guest/setup/{policy.js → managed-policy.js} +2 -2
  368. package/dist/guest/toolchains/catalogue.d.ts +4 -4
  369. package/dist/guest/toolchains/catalogue.js +30 -7
  370. package/dist/guest/toolchains/detect.d.ts +12 -0
  371. package/dist/guest/toolchains/detect.js +54 -0
  372. package/dist/guest/toolchains/index.d.ts +3 -17
  373. package/dist/guest/toolchains/index.js +1 -106
  374. package/dist/guest/toolchains/install.d.ts +20 -0
  375. package/dist/guest/toolchains/install.js +29 -0
  376. package/dist/guest/toolchains/languages/go.d.ts +3 -0
  377. package/dist/guest/toolchains/{go.js → languages/go.js} +27 -9
  378. package/dist/guest/toolchains/languages/java.d.ts +8 -0
  379. package/dist/guest/toolchains/{java.js → languages/java.js} +57 -18
  380. package/dist/guest/toolchains/languages/node.d.ts +3 -0
  381. package/dist/guest/toolchains/{node.js → languages/node.js} +51 -18
  382. package/dist/guest/toolchains/languages/php.d.ts +3 -0
  383. package/dist/guest/toolchains/{scripting → languages}/php.js +36 -11
  384. package/dist/guest/toolchains/languages/python-tools.d.ts +3 -0
  385. package/dist/guest/toolchains/languages/python-tools.js +12 -0
  386. package/dist/guest/toolchains/languages/python.d.ts +3 -0
  387. package/dist/guest/toolchains/{python.js → languages/python.js} +29 -16
  388. package/dist/guest/toolchains/languages/ruby.d.ts +3 -0
  389. package/dist/guest/toolchains/{scripting → languages}/ruby.js +28 -10
  390. package/dist/guest/toolchains/leftovers.d.ts +1 -1
  391. package/dist/guest/toolchains/leftovers.js +13 -11
  392. package/dist/guest/toolchains/managers.d.ts +6 -6
  393. package/dist/guest/toolchains/managers.js +38 -17
  394. package/dist/guest/toolchains/native/binstall.d.ts +3 -2
  395. package/dist/guest/toolchains/native/binstall.js +20 -8
  396. package/dist/guest/toolchains/native/cpp.d.ts +2 -2
  397. package/dist/guest/toolchains/native/cpp.js +23 -8
  398. package/dist/guest/toolchains/native/dotnet.d.ts +5 -3
  399. package/dist/guest/toolchains/native/dotnet.js +72 -24
  400. package/dist/guest/toolchains/native/mesa.d.ts +2 -2
  401. package/dist/guest/toolchains/native/mesa.js +27 -10
  402. package/dist/guest/toolchains/native/msvc/environment.d.ts +4 -4
  403. package/dist/guest/toolchains/native/msvc/environment.js +30 -16
  404. package/dist/guest/toolchains/native/msvc/index.d.ts +3 -3
  405. package/dist/guest/toolchains/native/msvc/index.js +10 -8
  406. package/dist/guest/toolchains/native/msvc/packages.d.ts +1 -1
  407. package/dist/guest/toolchains/native/msvc/packages.js +69 -23
  408. package/dist/guest/toolchains/native/msvc/tree.d.ts +6 -6
  409. package/dist/guest/toolchains/native/msvc/tree.js +15 -9
  410. package/dist/guest/toolchains/native/rust-extras.d.ts +23 -0
  411. package/dist/guest/toolchains/native/rust-extras.js +100 -0
  412. package/dist/guest/toolchains/native/rust.d.ts +2 -2
  413. package/dist/guest/toolchains/native/rust.js +41 -10
  414. package/dist/guest/toolchains/{scripting → native}/vcruntime.d.ts +2 -2
  415. package/dist/guest/toolchains/{scripting → native}/vcruntime.js +17 -7
  416. package/dist/guest/toolchains/package-ledger.d.ts +17 -0
  417. package/dist/guest/toolchains/package-ledger.js +54 -0
  418. package/dist/guest/toolchains/plan.d.ts +3 -24
  419. package/dist/guest/toolchains/plan.js +99 -111
  420. package/dist/guest/toolchains/runtimes.d.ts +6 -6
  421. package/dist/guest/toolchains/runtimes.js +31 -13
  422. package/dist/guest/toolchains/scheduler.d.ts +22 -0
  423. package/dist/guest/toolchains/scheduler.js +123 -0
  424. package/dist/guest/toolchains/setup.d.ts +10 -0
  425. package/dist/guest/toolchains/setup.js +22 -0
  426. package/dist/guest/toolchains/state-file.d.ts +3 -0
  427. package/dist/guest/toolchains/state-file.js +10 -0
  428. package/dist/guest/toolchains/step.d.ts +24 -0
  429. package/dist/guest/toolchains/step.js +1 -0
  430. package/dist/guest/toolchains/tool-env.d.ts +12 -0
  431. package/dist/guest/toolchains/tool-env.js +16 -0
  432. package/dist/guest/toolchains/tools/cli.d.ts +10 -0
  433. package/dist/guest/toolchains/{cli.js → tools/cli.js} +35 -15
  434. package/dist/guest/toolchains/tools/git.d.ts +3 -0
  435. package/dist/guest/toolchains/{git.js → tools/git.js} +38 -15
  436. package/dist/guest/toolchains/tools/pwsh.d.ts +4 -0
  437. package/dist/guest/toolchains/{pwsh.js → tools/pwsh.js} +14 -7
  438. package/dist/guest/toolchains/{vscode-profile.d.ts → tools/vscode-profile.d.ts} +6 -6
  439. package/dist/guest/toolchains/{vscode-profile.js → tools/vscode-profile.js} +28 -12
  440. package/dist/guest/toolchains/{vscode.d.ts → tools/vscode.d.ts} +6 -6
  441. package/dist/guest/toolchains/{vscode.js → tools/vscode.js} +67 -21
  442. package/dist/guest/toolchains/version-cache.d.ts +16 -0
  443. package/dist/guest/toolchains/version-cache.js +67 -0
  444. package/dist/host/agent-commands/commands.d.ts +13 -0
  445. package/dist/host/agent-commands/commands.js +33 -0
  446. package/dist/host/agent-commands/forwarders.d.ts +7 -0
  447. package/dist/host/agent-commands/forwarders.js +31 -0
  448. package/dist/host/agent-commands/index.d.ts +4 -0
  449. package/dist/host/agent-commands/index.js +4 -0
  450. package/dist/host/agent-commands/reconcile.d.ts +12 -0
  451. package/dist/host/agent-commands/reconcile.js +69 -0
  452. package/dist/host/agent-commands/user-path.d.ts +2 -0
  453. package/dist/host/agent-commands/user-path.js +33 -0
  454. package/dist/host/audit/collect.d.ts +2 -2
  455. package/dist/host/audit/collect.js +59 -22
  456. package/dist/host/audit/log.d.ts +2 -2
  457. package/dist/host/audit/log.js +24 -8
  458. package/dist/host/{attach.d.ts → channel/attach.d.ts} +2 -2
  459. package/dist/host/{attach.js → channel/attach.js} +33 -15
  460. package/dist/host/channel/channel.d.ts +51 -0
  461. package/dist/host/channel/channel.js +196 -0
  462. package/dist/host/channel/index.d.ts +2 -0
  463. package/dist/host/channel/index.js +2 -0
  464. package/dist/host/guard/agent-files.d.ts +7 -0
  465. package/dist/host/guard/agent-files.js +103 -0
  466. package/dist/host/guard/commands.d.ts +10 -0
  467. package/dist/host/guard/commands.js +123 -0
  468. package/dist/host/guard/file-hash.d.ts +4 -0
  469. package/dist/host/guard/file-hash.js +37 -0
  470. package/dist/host/guard/git-config.d.ts +5 -0
  471. package/dist/host/guard/git-config.js +62 -0
  472. package/dist/host/guard/git-dirs.d.ts +12 -0
  473. package/dist/host/guard/git-dirs.js +53 -0
  474. package/dist/host/guard/index.d.ts +5 -0
  475. package/dist/host/guard/index.js +4 -0
  476. package/dist/host/guard/mark-of-the-web.d.ts +8 -0
  477. package/dist/host/guard/mark-of-the-web.js +74 -0
  478. package/dist/host/guard/nested-repos.d.ts +14 -0
  479. package/dist/host/guard/nested-repos.js +88 -0
  480. package/dist/host/guard/quarantine.d.ts +3 -0
  481. package/dist/host/guard/quarantine.js +24 -0
  482. package/dist/host/guard/repo-guard.d.ts +10 -0
  483. package/dist/host/guard/repo-guard.js +36 -0
  484. package/dist/host/guard/store.d.ts +40 -0
  485. package/dist/host/guard/store.js +145 -0
  486. package/dist/host/guard/types.d.ts +27 -0
  487. package/dist/host/guard/types.js +3 -0
  488. package/dist/host/guard/watch-state.d.ts +9 -0
  489. package/dist/host/guard/watch-state.js +26 -0
  490. package/dist/host/launch/boot-projects.d.ts +17 -0
  491. package/dist/host/launch/{projects.js → boot-projects.js} +22 -13
  492. package/dist/host/{database-plan.d.ts → launch/database-plan.d.ts} +5 -5
  493. package/dist/host/{database-plan.js → launch/database-plan.js} +24 -13
  494. package/dist/host/launch/generate.d.ts +4 -0
  495. package/dist/host/launch/generate.js +77 -0
  496. package/dist/host/launch/index.d.ts +10 -0
  497. package/dist/host/launch/index.js +10 -0
  498. package/dist/host/launch/mappings.d.ts +5 -5
  499. package/dist/host/launch/mappings.js +37 -24
  500. package/dist/host/launch/pc-scan.d.ts +5 -0
  501. package/dist/host/{pc-scan.js → launch/pc-scan.js} +20 -13
  502. package/dist/host/launch/project-scan.d.ts +7 -0
  503. package/dist/host/{project-scan.js → launch/project-scan.js} +29 -21
  504. package/dist/host/launch/session-file.d.ts +23 -0
  505. package/dist/host/launch/session-file.js +73 -0
  506. package/dist/host/launch/stage.d.ts +5 -5
  507. package/dist/host/launch/stage.js +14 -13
  508. package/dist/host/launch/toolchains.d.ts +4 -0
  509. package/dist/host/launch/toolchains.js +11 -0
  510. package/dist/host/launch/{wsb.d.ts → wsb-file.d.ts} +4 -2
  511. package/dist/host/launch/wsb-file.js +56 -0
  512. package/dist/host/life/crash-report.d.ts +8 -0
  513. package/dist/host/life/crash-report.js +87 -0
  514. package/dist/host/life/index.d.ts +6 -0
  515. package/dist/host/life/index.js +6 -0
  516. package/dist/host/life/keep-awake.d.ts +10 -0
  517. package/dist/host/life/keep-awake.js +29 -0
  518. package/dist/host/life/life-record.d.ts +48 -0
  519. package/dist/host/life/life-record.js +76 -0
  520. package/dist/host/life/stop-events.d.ts +27 -0
  521. package/dist/host/life/stop-events.js +96 -0
  522. package/dist/host/life/stop-warning.d.ts +4 -0
  523. package/dist/host/life/stop-warning.js +25 -0
  524. package/dist/host/life/windows-update.d.ts +3 -0
  525. package/dist/host/life/windows-update.js +11 -0
  526. package/dist/host/native.d.ts +4 -0
  527. package/dist/host/native.js +11 -0
  528. package/dist/host/network/index.d.ts +1 -0
  529. package/dist/host/network/index.js +1 -0
  530. package/dist/host/{port-forward.d.ts → network/port-forward.d.ts} +1 -1
  531. package/dist/host/{port-forward.js → network/port-forward.js} +16 -10
  532. package/dist/host/profile/accounts.d.ts +37 -0
  533. package/dist/host/profile/accounts.js +146 -0
  534. package/dist/host/profile/claude-login.d.ts +22 -0
  535. package/dist/host/profile/claude-login.js +57 -0
  536. package/dist/host/{claude-profile.d.ts → profile/claude-profile.d.ts} +9 -9
  537. package/dist/host/{claude-profile.js → profile/claude-profile.js} +32 -22
  538. package/dist/host/profile/index.d.ts +7 -0
  539. package/dist/host/profile/index.js +7 -0
  540. package/dist/host/profile/personalize.d.ts +2 -0
  541. package/dist/host/profile/personalize.js +127 -0
  542. package/dist/host/profile/reg-file.d.ts +8 -0
  543. package/dist/host/profile/reg-file.js +45 -0
  544. package/dist/host/profile/secret-files.d.ts +2 -0
  545. package/dist/host/profile/secret-files.js +25 -0
  546. package/dist/host/profile/secret-patterns.d.ts +6 -0
  547. package/dist/host/profile/secret-patterns.js +128 -0
  548. package/dist/host/profile/secrets.d.ts +12 -0
  549. package/dist/host/profile/secrets.js +100 -0
  550. package/dist/host/projects/index.d.ts +4 -0
  551. package/dist/host/projects/index.js +4 -0
  552. package/dist/host/{join.d.ts → projects/join.d.ts} +12 -9
  553. package/dist/host/{join.js → projects/join.js} +62 -33
  554. package/dist/host/projects/known.d.ts +28 -0
  555. package/dist/host/projects/known.js +55 -0
  556. package/dist/host/projects/mapper.d.ts +29 -0
  557. package/dist/host/projects/mapper.js +88 -0
  558. package/dist/host/projects/registry.d.ts +83 -0
  559. package/dist/host/projects/registry.js +136 -0
  560. package/dist/host/sandbox/doctor.d.ts +2 -0
  561. package/dist/host/sandbox/doctor.js +42 -0
  562. package/dist/host/sandbox/host-claude.d.ts +1 -0
  563. package/dist/host/sandbox/host-claude.js +26 -0
  564. package/dist/host/sandbox/index.d.ts +6 -0
  565. package/dist/host/sandbox/index.js +6 -0
  566. package/dist/host/{platform.d.ts → sandbox/platform.d.ts} +0 -5
  567. package/dist/host/sandbox/platform.js +60 -0
  568. package/dist/host/sandbox/probe.d.ts +3 -0
  569. package/dist/host/sandbox/probe.js +47 -0
  570. package/dist/host/{window.js → sandbox/window.js} +7 -5
  571. package/dist/host/{wsb.js → sandbox/wsb-cli.js} +31 -8
  572. package/dist/host/{cleanup.js → storage/cleanup.js} +27 -12
  573. package/dist/host/storage/index.d.ts +2 -0
  574. package/dist/host/storage/index.js +2 -0
  575. package/dist/host/storage/state-files.d.ts +4 -0
  576. package/dist/host/storage/state-files.js +10 -0
  577. package/dist/host/test-guard.js +1 -1
  578. package/dist/host/tools/conpty.d.ts +8 -0
  579. package/dist/host/tools/conpty.js +58 -0
  580. package/dist/host/tools/index.d.ts +2 -0
  581. package/dist/host/tools/index.js +2 -0
  582. package/dist/host/{terminal.d.ts → tools/windows-terminal.d.ts} +2 -10
  583. package/dist/host/{terminal.js → tools/windows-terminal.js} +33 -57
  584. package/dist/host/workspace-view/active-views.d.ts +3 -0
  585. package/dist/host/workspace-view/active-views.js +22 -0
  586. package/dist/host/workspace-view/index.d.ts +2 -18
  587. package/dist/host/workspace-view/index.js +2 -49
  588. package/dist/host/workspace-view/plan.d.ts +16 -0
  589. package/dist/host/workspace-view/plan.js +50 -0
  590. package/dist/host/workspace-view/rules.js +10 -3
  591. package/dist/host/workspace-view/view-state.d.ts +10 -0
  592. package/dist/host/workspace-view/view-state.js +31 -0
  593. package/dist/host/workspace-view/view.d.ts +1 -0
  594. package/dist/host/workspace-view/view.js +51 -55
  595. package/dist/runtime/daemon.js +4220 -1968
  596. package/dist/runtime/db.js +2134 -849
  597. package/dist/runtime/gitguard.js +29 -11
  598. package/dist/runtime/main.js +4687 -2243
  599. package/dist/runtime/netproxy.js +1644 -420
  600. package/dist/runtime/view.js +1356 -428
  601. package/dist/selftest/accounts.test.d.ts +1 -1
  602. package/dist/selftest/accounts.test.js +20 -17
  603. package/dist/selftest/agent-commands.test.d.ts +1 -1
  604. package/dist/selftest/agent-commands.test.js +9 -5
  605. package/dist/selftest/audit.test.d.ts +1 -1
  606. package/dist/selftest/audit.test.js +46 -13
  607. package/dist/selftest/channel.test.d.ts +1 -1
  608. package/dist/selftest/channel.test.js +63 -16
  609. package/dist/selftest/cli.test.d.ts +1 -1
  610. package/dist/selftest/cli.test.js +68 -16
  611. package/dist/selftest/cmdline.test.d.ts +1 -1
  612. package/dist/selftest/cmdline.test.js +36 -7
  613. package/dist/selftest/config.test.d.ts +1 -1
  614. package/dist/selftest/config.test.js +12 -5
  615. package/dist/selftest/data.test.d.ts +1 -1
  616. package/dist/selftest/data.test.js +35 -6
  617. package/dist/selftest/detect.test.d.ts +1 -1
  618. package/dist/selftest/detect.test.js +22 -9
  619. package/dist/selftest/generate.test.d.ts +1 -1
  620. package/dist/selftest/generate.test.js +33 -9
  621. package/dist/selftest/git-access.test.d.ts +1 -1
  622. package/dist/selftest/git-access.test.js +42 -4
  623. package/dist/selftest/guest-boot.test.d.ts +1 -1
  624. package/dist/selftest/guest-boot.test.js +25 -7
  625. package/dist/selftest/host-sim.test.d.ts +1 -1
  626. package/dist/selftest/host-sim.test.js +27 -3
  627. package/dist/selftest/hostile-input.test.d.ts +1 -1
  628. package/dist/selftest/hostile-input.test.js +5 -5
  629. package/dist/selftest/index.d.ts +1 -1
  630. package/dist/selftest/index.js +72 -16
  631. package/dist/selftest/layout.test.d.ts +2 -0
  632. package/dist/selftest/layout.test.js +131 -0
  633. package/dist/selftest/links.test.d.ts +1 -1
  634. package/dist/selftest/links.test.js +16 -11
  635. package/dist/selftest/live-daemon.test.d.ts +1 -1
  636. package/dist/selftest/live-daemon.test.js +20 -8
  637. package/dist/selftest/live-git.test.d.ts +1 -1
  638. package/dist/selftest/live-git.test.js +13 -4
  639. package/dist/selftest/live-network.test.d.ts +1 -1
  640. package/dist/selftest/live-network.test.js +24 -9
  641. package/dist/selftest/live-projects.test.d.ts +1 -1
  642. package/dist/selftest/live-projects.test.js +47 -20
  643. package/dist/selftest/live-terminal.test.d.ts +1 -1
  644. package/dist/selftest/live-terminal.test.js +41 -15
  645. package/dist/selftest/local-config.test.d.ts +1 -1
  646. package/dist/selftest/local-config.test.js +64 -16
  647. package/dist/selftest/mirror.test.d.ts +1 -1
  648. package/dist/selftest/mirror.test.js +102 -32
  649. package/dist/selftest/network.test.d.ts +1 -1
  650. package/dist/selftest/network.test.js +17 -8
  651. package/dist/selftest/personalization.test.d.ts +1 -1
  652. package/dist/selftest/personalization.test.js +12 -5
  653. package/dist/selftest/projects.test.d.ts +1 -1
  654. package/dist/selftest/projects.test.js +280 -85
  655. package/dist/selftest/repair.test.d.ts +1 -1
  656. package/dist/selftest/repair.test.js +17 -5
  657. package/dist/selftest/repo-guard.test.d.ts +1 -1
  658. package/dist/selftest/repo-guard.test.js +21 -20
  659. package/dist/selftest/secrets.test.d.ts +1 -1
  660. package/dist/selftest/secrets.test.js +57 -13
  661. package/dist/selftest/setup.test.d.ts +1 -1
  662. package/dist/selftest/setup.test.js +25 -5
  663. package/dist/selftest/{fixtures.d.ts → support/fixtures.d.ts} +5 -3
  664. package/dist/selftest/{fixtures.js → support/fixtures.js} +95 -17
  665. package/dist/selftest/{harness.js → support/harness.js} +24 -7
  666. package/dist/selftest/{live.d.ts → support/live.d.ts} +2 -2
  667. package/dist/selftest/{live.js → support/live.js} +34 -10
  668. package/dist/selftest/support/suite.js +1 -0
  669. package/dist/selftest/sync.test.d.ts +1 -1
  670. package/dist/selftest/sync.test.js +64 -26
  671. package/dist/selftest/test-guard.test.d.ts +1 -1
  672. package/dist/selftest/test-guard.test.js +43 -15
  673. package/dist/selftest/toolchains.test.d.ts +1 -1
  674. package/dist/selftest/toolchains.test.js +135 -36
  675. package/dist/selftest/workspace-view.test.d.ts +1 -1
  676. package/dist/selftest/workspace-view.test.js +48 -11
  677. package/dist/selftest/workspace.test.d.ts +1 -1
  678. package/dist/selftest/workspace.test.js +13 -4
  679. package/dist/shared/{apps.d.ts → apps/catalogue.d.ts} +1 -11
  680. package/dist/shared/apps/catalogue.js +768 -0
  681. package/dist/shared/apps/index.d.ts +2 -0
  682. package/dist/shared/apps/index.js +2 -0
  683. package/dist/shared/apps/selection.d.ts +11 -0
  684. package/dist/shared/apps/selection.js +40 -0
  685. package/dist/shared/channel/index.d.ts +2 -0
  686. package/dist/shared/channel/index.js +2 -0
  687. package/dist/shared/channel/run-dir.d.ts +30 -0
  688. package/dist/shared/channel/run-dir.js +84 -0
  689. package/dist/shared/{schema.d.ts → channel/schema.d.ts} +38 -21
  690. package/dist/shared/{schema.js → channel/schema.js} +62 -35
  691. package/dist/shared/download/archive.d.ts +13 -0
  692. package/dist/shared/download/archive.js +57 -0
  693. package/dist/shared/download/downloader.d.ts +35 -0
  694. package/dist/shared/download/downloader.js +110 -0
  695. package/dist/shared/download/github.d.ts +16 -0
  696. package/dist/shared/download/github.js +74 -0
  697. package/dist/shared/download/http.d.ts +5 -0
  698. package/dist/shared/download/http.js +30 -0
  699. package/dist/shared/download/index.d.ts +5 -0
  700. package/dist/shared/download/index.js +5 -0
  701. package/dist/shared/download/spawn.d.ts +2 -0
  702. package/dist/shared/download/spawn.js +7 -0
  703. package/dist/shared/io/index.d.ts +3 -0
  704. package/dist/shared/io/index.js +3 -0
  705. package/dist/shared/io/json-file.d.ts +10 -0
  706. package/dist/shared/io/json-file.js +21 -0
  707. package/dist/shared/io/json.d.ts +13 -0
  708. package/dist/shared/io/json.js +49 -0
  709. package/dist/shared/{safe-remove.js → io/safe-remove.js} +32 -7
  710. package/dist/shared/{netrules.js → network/firewall-rules.js} +36 -5
  711. package/dist/shared/network/index.d.ts +2 -0
  712. package/dist/shared/network/index.js +2 -0
  713. package/dist/shared/{netpolicy.js → network/policy.js} +66 -11
  714. package/dist/shared/{paths.js → paths/claude-paths.js} +12 -2
  715. package/dist/shared/{guest-paths.d.ts → paths/guest-paths.d.ts} +6 -12
  716. package/dist/shared/{guest-paths.js → paths/guest-paths.js} +53 -36
  717. package/dist/shared/paths/index.d.ts +3 -0
  718. package/dist/shared/paths/index.js +3 -0
  719. package/dist/shared/{projects.js → paths/projects.js} +13 -3
  720. package/dist/shared/pty/client.d.ts +21 -0
  721. package/dist/shared/pty/client.js +79 -0
  722. package/dist/shared/{console-input.js → pty/console-input.js} +26 -6
  723. package/dist/shared/pty/index.d.ts +6 -0
  724. package/dist/shared/pty/index.js +6 -0
  725. package/dist/shared/pty/input-joiner.d.ts +15 -0
  726. package/dist/shared/pty/input-joiner.js +44 -0
  727. package/dist/shared/pty/output-filter.d.ts +13 -0
  728. package/dist/shared/pty/output-filter.js +140 -0
  729. package/dist/shared/pty/protocol.d.ts +36 -0
  730. package/dist/shared/pty/protocol.js +60 -0
  731. package/dist/shared/pty/terminal.d.ts +24 -0
  732. package/dist/shared/pty/terminal.js +147 -0
  733. package/dist/shared/test-guard.js +3 -1
  734. package/dist/sync/claude-mem.d.ts +1 -1
  735. package/dist/sync/claude-mem.js +9 -4
  736. package/dist/sync/history.d.ts +1 -29
  737. package/dist/sync/history.js +57 -45
  738. package/dist/sync/index.d.ts +5 -0
  739. package/dist/sync/index.js +5 -0
  740. package/dist/sync/sync-cycle.d.ts +18 -0
  741. package/dist/sync/sync-cycle.js +85 -0
  742. package/dist/sync/sync-state.d.ts +32 -0
  743. package/dist/sync/sync-state.js +37 -0
  744. package/dist/sync/watcher.d.ts +0 -18
  745. package/dist/sync/watcher.js +66 -100
  746. package/native/keep-awake.ps1 +8 -0
  747. package/native/power.cs +23 -0
  748. package/native/stop-events.ps1 +38 -0
  749. package/package.json +11 -3
  750. package/sandbox/linkgate.cs +98 -0
  751. package/sandbox/memlog.ps1 +15 -6
  752. package/schemas/config.schema.json +34 -1
  753. package/schemas/sandbox-config.schema.json +34 -1
  754. package/dist/cli/boot-progress.d.ts +0 -22
  755. package/dist/cli/boot-progress.js +0 -59
  756. package/dist/cli/commands/launch.d.ts +0 -32
  757. package/dist/cli/commands/launch.js +0 -421
  758. package/dist/cli/commands/maintenance.d.ts +0 -10
  759. package/dist/cli/commands/maintenance.js +0 -220
  760. package/dist/cli/commands/project.d.ts +0 -33
  761. package/dist/cli/commands/project.js +0 -102
  762. package/dist/cli/commands/projects.d.ts +0 -14
  763. package/dist/cli/commands/projects.js +0 -146
  764. package/dist/cli/commands/restart.d.ts +0 -6
  765. package/dist/cli/commands/restart.js +0 -95
  766. package/dist/cli/commands/sessions.d.ts +0 -12
  767. package/dist/cli/commands/sessions.js +0 -258
  768. package/dist/cli/menu/settings/editors.js +0 -305
  769. package/dist/cli/tui/dialogs.d.ts +0 -57
  770. package/dist/cli/tui/dialogs.js +0 -162
  771. package/dist/core/config.js +0 -109
  772. package/dist/core/project-policy.d.ts +0 -62
  773. package/dist/core/project-policy.js +0 -121
  774. package/dist/core/schema.d.ts +0 -6
  775. package/dist/core/schema.js +0 -8
  776. package/dist/core/util.d.ts +0 -62
  777. package/dist/core/util.js +0 -156
  778. package/dist/core/workspace.d.ts +0 -35
  779. package/dist/core/workspace.js +0 -206
  780. package/dist/guest/boot-env.d.ts +0 -4
  781. package/dist/guest/daemon.js +0 -57
  782. package/dist/guest/env.d.ts +0 -56
  783. package/dist/guest/env.js +0 -115
  784. package/dist/guest/gitrules.js +0 -11
  785. package/dist/guest/project-status.d.ts +0 -5
  786. package/dist/guest/project-status.js +0 -17
  787. package/dist/guest/setup/user.js +0 -51
  788. package/dist/guest/toolchains/cli.d.ts +0 -10
  789. package/dist/guest/toolchains/common.d.ts +0 -54
  790. package/dist/guest/toolchains/common.js +0 -147
  791. package/dist/guest/toolchains/databases/dynamodb.d.ts +0 -8
  792. package/dist/guest/toolchains/databases/dynamodb.js +0 -52
  793. package/dist/guest/toolchains/databases/index.d.ts +0 -6
  794. package/dist/guest/toolchains/databases/index.js +0 -62
  795. package/dist/guest/toolchains/databases/mongodb.d.ts +0 -3
  796. package/dist/guest/toolchains/databases/mongodb.js +0 -31
  797. package/dist/guest/toolchains/databases/mysql.d.ts +0 -3
  798. package/dist/guest/toolchains/databases/mysql.js +0 -38
  799. package/dist/guest/toolchains/databases/postgres.d.ts +0 -5
  800. package/dist/guest/toolchains/databases/postgres.js +0 -38
  801. package/dist/guest/toolchains/databases/redis.d.ts +0 -3
  802. package/dist/guest/toolchains/databases/redis.js +0 -16
  803. package/dist/guest/toolchains/git.d.ts +0 -3
  804. package/dist/guest/toolchains/go.d.ts +0 -3
  805. package/dist/guest/toolchains/java.d.ts +0 -8
  806. package/dist/guest/toolchains/node.d.ts +0 -3
  807. package/dist/guest/toolchains/pwsh.d.ts +0 -4
  808. package/dist/guest/toolchains/python.d.ts +0 -3
  809. package/dist/guest/toolchains/scripting/php.d.ts +0 -3
  810. package/dist/guest/toolchains/scripting/ruby.d.ts +0 -3
  811. package/dist/host/accounts.d.ts +0 -32
  812. package/dist/host/accounts.js +0 -128
  813. package/dist/host/agent-commands.d.ts +0 -25
  814. package/dist/host/agent-commands.js +0 -145
  815. package/dist/host/channel.d.ts +0 -38
  816. package/dist/host/channel.js +0 -163
  817. package/dist/host/generate.d.ts +0 -13
  818. package/dist/host/generate.js +0 -115
  819. package/dist/host/launch/projects.d.ts +0 -17
  820. package/dist/host/launch/wsb.js +0 -34
  821. package/dist/host/motw.d.ts +0 -17
  822. package/dist/host/motw.js +0 -74
  823. package/dist/host/pc-scan.d.ts +0 -6
  824. package/dist/host/personalize.d.ts +0 -10
  825. package/dist/host/personalize.js +0 -97
  826. package/dist/host/platform.js +0 -129
  827. package/dist/host/project-scan.d.ts +0 -7
  828. package/dist/host/projects.d.ts +0 -123
  829. package/dist/host/projects.js +0 -196
  830. package/dist/host/repo-guard.d.ts +0 -43
  831. package/dist/host/repo-guard.js +0 -347
  832. package/dist/host/secrets.d.ts +0 -14
  833. package/dist/host/secrets.js +0 -133
  834. package/dist/host/stops.d.ts +0 -67
  835. package/dist/host/stops.js +0 -126
  836. package/dist/shared/apps.js +0 -114
  837. package/dist/shared/download.d.ts +0 -63
  838. package/dist/shared/download.js +0 -238
  839. package/dist/shared/pty-client.d.ts +0 -108
  840. package/dist/shared/pty-client.js +0 -406
  841. package/dist/shared/rundir.d.ts +0 -41
  842. package/dist/shared/rundir.js +0 -96
  843. /package/dist/{guest/daemon.d.ts → cli/tui/list/list-types.js} +0 -0
  844. /package/dist/{guest/db.d.ts → cli/tui/screen.js} +0 -0
  845. /package/dist/core/{detect-databases.d.ts → detect/databases.d.ts} +0 -0
  846. /package/dist/{guest/toolchains → core/detect}/versions.d.ts +0 -0
  847. /package/dist/guest/{setup/agents.d.ts → agents/agent-installer.d.ts} +0 -0
  848. /package/dist/guest/{audit-parse.d.ts → audit/parse.d.ts} +0 -0
  849. /package/dist/guest/{guide.d.ts → boot/guide.d.ts} +0 -0
  850. /package/dist/guest/daemon/{shutdown.d.ts → idle-shutdown.d.ts} +0 -0
  851. /package/dist/guest/daemon/{session.d.ts → sessions.d.ts} +0 -0
  852. /package/dist/guest/{main.d.ts → entries/daemon.d.ts} +0 -0
  853. /package/dist/guest/{netproxy.d.ts → entries/db.d.ts} +0 -0
  854. /package/dist/{selftest/suite.js → guest/entries/gitguard.d.ts} +0 -0
  855. /package/dist/guest/{gitguard.d.ts → git/decision.d.ts} +0 -0
  856. /package/dist/guest/{ports.d.ts → runtime/ports.d.ts} +0 -0
  857. /package/dist/guest/{project-context.d.ts → runtime/project-context.d.ts} +0 -0
  858. /package/dist/guest/{cmdline.d.ts → sessions/cmdline.d.ts} +0 -0
  859. /package/dist/guest/{ptyhost.d.ts → sessions/pty-host.d.ts} +0 -0
  860. /package/dist/guest/{view.d.ts → sessions/viewer.d.ts} +0 -0
  861. /package/dist/guest/setup/{policy.d.ts → managed-policy.d.ts} +0 -0
  862. /package/dist/host/{window.d.ts → sandbox/window.d.ts} +0 -0
  863. /package/dist/host/{wsb.d.ts → sandbox/wsb-cli.d.ts} +0 -0
  864. /package/dist/host/{cleanup.d.ts → storage/cleanup.d.ts} +0 -0
  865. /package/dist/selftest/{harness.d.ts → support/harness.d.ts} +0 -0
  866. /package/dist/selftest/{suite.d.ts → support/suite.d.ts} +0 -0
  867. /package/dist/shared/{safe-remove.d.ts → io/safe-remove.d.ts} +0 -0
  868. /package/dist/shared/{netrules.d.ts → network/firewall-rules.d.ts} +0 -0
  869. /package/dist/shared/{netpolicy.d.ts → network/policy.d.ts} +0 -0
  870. /package/dist/shared/{paths.d.ts → paths/claude-paths.d.ts} +0 -0
  871. /package/dist/shared/{projects.d.ts → paths/projects.d.ts} +0 -0
  872. /package/dist/shared/{console-input.d.ts → pty/console-input.d.ts} +0 -0
@@ -0,0 +1,98 @@
1
+ function agentRow(run, generated, prepared) {
2
+ const { config } = run;
3
+ // What the sandbox boots with (the launch folder's settings plus what the other projects at boot want).
4
+ const booted = generated.bootConfig;
5
+ return (run.harnessName +
6
+ (prepared?.account ? ' (account: ' + prepared.account + ')' : '') +
7
+ ' Memory: ' +
8
+ generated.memoryMb +
9
+ ' MB CPU: ' +
10
+ (config.sandbox.cpuLimit === 'none' ? 'all' : 'max ' + config.sandbox.cpuLimit + '%') +
11
+ ' Network: ' +
12
+ booted.sandbox.networking +
13
+ (booted.sandbox.vGpu ? ' vGPU' : '') +
14
+ (config.sandbox.headless ? ' HEADLESS' : ''));
15
+ }
16
+ function versionsRow(run) {
17
+ const { node, python } = run.versions;
18
+ return node.spec + ' (' + node.source + ') Python: ' + python.spec + ' (' + python.source + ')';
19
+ }
20
+ function preparedRows(prepared) {
21
+ return prepared
22
+ ? [
23
+ ['Ignored files', prepared.filter],
24
+ ['Terminal', prepared.terminal],
25
+ ['History', prepared.history],
26
+ ['Cleanup', prepared.pruned],
27
+ ]
28
+ : [];
29
+ }
30
+ function toolchainsRow(generated) {
31
+ return (Object.entries(generated.toolchains)
32
+ .filter(([, d]) => d.on)
33
+ .map(([name, d]) => name + ' (' + d.reason + ')')
34
+ .join(', ') || 'Node only (nothing else used by this project)');
35
+ }
36
+ function databaseRows(generated) {
37
+ if (!generated.databases.length)
38
+ return [['Databases', 'none needed (databases.<name>.enabled = true adds one)']];
39
+ return generated.databases.map((d, i) => [
40
+ i ? '' : 'Databases',
41
+ d.database +
42
+ (d.database === 'sqlserver'
43
+ ? ' (cannot run in the sandbox; use Postgres or SQLite for local work)'
44
+ : ' on port ' + d.port) +
45
+ ' because ' +
46
+ d.reasons[0] +
47
+ (d.reasons.length > 1 ? ' (+' + (d.reasons.length - 1) + ' more)' : ''),
48
+ ]);
49
+ }
50
+ function claudeRow(generated) {
51
+ const { profile } = generated;
52
+ return profile.staged.length
53
+ ? profile.staged.join(', ') + (profile.credentials ? ' (INCLUDING YOUR LOGIN)' : '')
54
+ : 'no settings copied';
55
+ }
56
+ function secretsRow(run, generated) {
57
+ if (!run.config.secrets.strip)
58
+ return 'NOT stripped (secrets.strip is off)';
59
+ const removed = generated.profile.secretsRemoved;
60
+ return removed.length
61
+ ? 'kept on this PC: ' + removed.join(', ') + ' (secrets.allow lets one through)'
62
+ : 'none found in what is copied';
63
+ }
64
+ /** Project roots, boot-mapped projects, then any other folder mapped (not the tool's own nor the workspace). */
65
+ function mappingRows(run, generated) {
66
+ const { roots, projects } = generated.projects;
67
+ return [
68
+ ...roots.map((r, i) => [
69
+ i ? '' : 'Project roots',
70
+ r.host + ' -> ' + r.guest + ' (every project in it opens without a restart)',
71
+ ]),
72
+ ...projects.map((p, i) => [i ? '' : 'Projects', p.host + ' -> ' + p.guest]),
73
+ ...generated.mappings
74
+ .slice(2)
75
+ .filter((m) => m.guest !== run.config.guestWorkspace && ![...roots, ...projects].some((p) => p.guest === m.guest))
76
+ .map((m) => [
77
+ ' map ' + (m.readOnly ? 'ro' : 'rw'),
78
+ m.host + ' -> ' + m.guest + (m.label ? ' (' + m.label + ')' : ''),
79
+ ]),
80
+ ];
81
+ }
82
+ /** The launch summary rows, in the order they are printed. */
83
+ export function launchSummary(run, generated, prepared) {
84
+ const { config } = run;
85
+ return [
86
+ ['Workspace', run.workspaceHost + ' -> ' + config.guestWorkspace + (config.readOnly ? ' (read-only)' : '')],
87
+ ['Agent', agentRow(run, generated, prepared)],
88
+ ['Node', versionsRow(run)],
89
+ ...preparedRows(prepared),
90
+ ['Toolchains', toolchainsRow(generated)],
91
+ ...databaseRows(generated),
92
+ ['Desktop', generated.personalization],
93
+ ['Claude', claudeRow(generated)],
94
+ ['Secrets', secretsRow(run, generated)],
95
+ ...mappingRows(run, generated),
96
+ ['Generated', generated.wsbPath],
97
+ ];
98
+ }
@@ -0,0 +1,3 @@
1
+ import { type Context } from '../context.js';
2
+ /** `sandbox audit`: the audit log of the last days (audit.enabled), newest last. */
3
+ export declare function audit(ctx: Context): Promise<number>;
@@ -0,0 +1,58 @@
1
+ import path from 'node:path';
2
+ import { fail, plainText } from '../../../core/util/index.js';
3
+ import { humanBytes } from '../../../core/disk.js';
4
+ import { AuditLog } from '../../../host/audit/log.js';
5
+ import { printJson, c } from '../../output/index.js';
6
+ const KINDS = ['proc', 'file', 'session', 'guard', 'note'];
7
+ const KIND_LABEL = {
8
+ proc: 'program',
9
+ file: 'file',
10
+ session: 'session',
11
+ guard: 'GUARD',
12
+ note: 'note',
13
+ };
14
+ /** `sandbox audit`: the audit log of the last days (audit.enabled), newest last. */
15
+ export async function audit(ctx) {
16
+ const settings = ctx.loaded.config.audit;
17
+ const kind = ctx.options.kind;
18
+ if (kind && !KINDS.includes(kind))
19
+ fail('Unknown kind "' + kind + '".', 'Use one of: ' + KINDS.join(', '));
20
+ const log = new AuditLog(AuditLog.dirFor(ctx.storageRoot, ctx.dataPath), settings);
21
+ const events = log.read({
22
+ days: ctx.options.days,
23
+ kinds: kind ? [kind] : undefined,
24
+ grep: ctx.options.grep,
25
+ });
26
+ if (printJson(ctx, events))
27
+ return 0;
28
+ if (!events.length) {
29
+ console.log(settings.enabled
30
+ ? 'Nothing in the audit log for the last ' + ctx.options.days + ' day(s).'
31
+ : 'The audit log is off. Turn it on in the menu (Settings > Security & privacy > Audit log) or with audit.enabled in your config.');
32
+ return 0;
33
+ }
34
+ for (const e of events) {
35
+ // What the sandbox reported is text from the sandbox: no control codes reach your terminal.
36
+ const [p, cmd, parent, dir, act] = [e.p, e.c, e.pp, e.w, e.a].map((v) => plainText(v ?? ''));
37
+ const what = e.k === 'proc'
38
+ ? (cmd || p) + (parent ? c.dim(' <- ' + path.win32.basename(parent)) : '')
39
+ : e.k === 'file'
40
+ ? act + ' ' + p + c.dim(' in ' + dir)
41
+ : e.k === 'session'
42
+ ? act + ' ' + p + c.dim(' ' + dir + ' ' + cmd)
43
+ : p;
44
+ console.log(c.dim(new Date(e.t).toLocaleString()) +
45
+ ' ' +
46
+ (e.k === 'guard' ? c.yellow(KIND_LABEL[e.k].padEnd(8)) : KIND_LABEL[e.k].padEnd(8)) +
47
+ what +
48
+ (e.n && e.n > 1 ? c.dim(' x' + e.n) : ''));
49
+ }
50
+ console.log(c.dim('\n' +
51
+ events.length +
52
+ ' event(s); the log takes ' +
53
+ humanBytes(log.bytes()) +
54
+ ' (' +
55
+ AuditLog.dirFor(ctx.storageRoot, ctx.dataPath) +
56
+ ').'));
57
+ return 0;
58
+ }
@@ -0,0 +1,2 @@
1
+ import { type Context } from '../context.js';
2
+ export declare function clean(ctx: Context): number;
@@ -0,0 +1,10 @@
1
+ import _ from 'lodash';
2
+ import { describePrune, pruneStorage } from '../../../host/storage/index.js';
3
+ import { isSandboxRunning } from '../../../host/sandbox/index.js';
4
+ import { RunDir } from '../../../shared/channel/index.js';
5
+ export function clean(ctx) {
6
+ const running = isSandboxRunning() ? new RunDir(ctx.dataPath).readSandboxStatus()?.launchId : undefined;
7
+ console.log('Cleanup: ' +
8
+ describePrune(pruneStorage(ctx.storageRoot, { launchDays: ctx.options.days, keep: _.compact([running]) })));
9
+ return 0;
10
+ }
@@ -0,0 +1,2 @@
1
+ import { type Context } from '../context.js';
2
+ export declare function config(ctx: Context): number;
@@ -0,0 +1,145 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { pathToFileURL } from 'node:url';
4
+ import { DEFAULTS, userConfigPath, userDir } from '../../../core/config/index.js';
5
+ import { allowedAnswer, allowStorePath, applyOverrides, describeOverrides, isTrusted, LOCAL_CONFIG_NAME, loosenedRequests, normalizeOverrides, OUTSIDE_FOLDER, outsideKey, outsideMappings, readLocalConfig, trustStorePath, } from '../../../core/local-config/index.js';
6
+ import { guestWorkspaceOf, previewGuest } from '../../../core/run/index.js';
7
+ import { dirExists, fail, safeText, writeJson } from '../../../core/util/index.js';
8
+ import { c, table } from '../../output/index.js';
9
+ function initConfig() {
10
+ const file = userConfigPath();
11
+ if (fs.existsSync(file))
12
+ fail(file + ' already exists.');
13
+ fs.mkdirSync(path.join(userDir(), 'hooks', 'pre-agent'), { recursive: true });
14
+ // The schema sits next to the file (a local path), so editors trust it and show docs and autocomplete.
15
+ writeJson(file, { $schema: './config.schema.json', ...DEFAULTS });
16
+ console.log('Created ' + file + '. It lists every setting with its default; delete the ones you do not change.');
17
+ console.log('Your own hook scripts go in ' + path.join(userDir(), 'hooks') + '\\{pre-provision,pre-agent,post-agent}.');
18
+ console.log("For editor help in every project's .sandbox-config.json, run: sandbox config schema");
19
+ return 0;
20
+ }
21
+ /**
22
+ * VS Code setting that maps every .sandbox-config.json (and the user config) to the local schema files, so project
23
+ * files need no "$schema" line and nothing is fetched from the internet (remote schemas need trusting).
24
+ */
25
+ function printSchemaSettings() {
26
+ const url = (name) => pathToFileURL(path.join(userDir(), name)).href;
27
+ const setting = {
28
+ 'json.schemas': [
29
+ { fileMatch: ['**/.sandbox-config.json'], url: url('sandbox-config.schema.json') },
30
+ { fileMatch: ['**/.agent-sandbox/config.json'], url: url('config.schema.json') },
31
+ ],
32
+ };
33
+ console.log('Add this to your VS Code settings.json (Ctrl+Shift+P > "Preferences: Open User Settings (JSON)"):\n');
34
+ console.log(JSON.stringify(setting, null, 2).slice(2, -2));
35
+ console.log('\nThe schema files live in ' + userDir() + ' and are refreshed whenever the sandbox command runs.');
36
+ return 0;
37
+ }
38
+ /**
39
+ * `sandbox config check`: the folder's .sandbox-config.json validated and described (risky settings flagged, approval
40
+ * state), without launching. Fails with the same message a launch would give when the file is not valid.
41
+ */
42
+ function checkLocalConfig(ctx) {
43
+ const dir = path.resolve(ctx.options.workspace ?? process.cwd());
44
+ const file = readLocalConfig(dir);
45
+ if (!file) {
46
+ console.log('No ' + LOCAL_CONFIG_NAME + ' in ' + dir + '; the sandbox uses your own settings only.');
47
+ return 0;
48
+ }
49
+ const overrides = normalizeOverrides(file.data, dir, file.path);
50
+ const approved = isTrusted(trustStorePath(ctx.storageRoot), file.path, file.hash);
51
+ console.log(file.path +
52
+ ': valid. ' +
53
+ (approved ? 'Approved (this exact version).' : 'Not approved yet: the next launch asks you.') +
54
+ '\n');
55
+ for (const line of describeOverrides(overrides, dir))
56
+ console.log(' ' + safeText(line));
57
+ previewFolders(ctx, dir, file.path, overrides);
58
+ return 0;
59
+ }
60
+ /** What a launch from here would do with each folder and each looser setting, without launching. */
61
+ function previewFolders(ctx, dir, filePath, overrides) {
62
+ const config = ctx.loaded.config;
63
+ const store = allowStorePath(ctx.storageRoot);
64
+ const workspaceGuest = guestWorkspaceOf(applyOverrides(config, overrides), dir).guest;
65
+ const outside = outsideMappings(dir, overrides.mappings);
66
+ const policy = config.projects.allowOutsideMappings;
67
+ const statusOf = (m) => {
68
+ if (!dirExists(m.host))
69
+ return m.optional
70
+ ? 'not on this PC: skipped'
71
+ : c.red('the folder does not exist: create it, fix the path, or add "optional": true');
72
+ if (!outside.includes(m))
73
+ return m.guest ? 'inside the project' : 'inside the project (already in the sandbox there)';
74
+ if (policy === true)
75
+ return 'outside the project, allowed (projects.allowOutsideMappings is true)';
76
+ if (policy === false)
77
+ return c.red('outside the project: refused (projects.allowOutsideMappings is false)');
78
+ return allowedAnswer(store, filePath, OUTSIDE_FOLDER, outsideKey(m)) === true
79
+ ? 'outside the project, allowed (you said yes)'
80
+ : c.yellow('outside the project: the next interactive launch asks you');
81
+ };
82
+ const rows = (overrides.mappings ?? []).map((m) => {
83
+ const where = previewGuest(m, dir, workspaceGuest);
84
+ return [(m.readOnly ? 'ro ' : 'rw ') + safeText(m.host), '-> ' + safeText(where.guest), statusOf(m)];
85
+ });
86
+ if (rows.length) {
87
+ console.log('\nFolders (where they appear in the sandbox):');
88
+ table(rows);
89
+ }
90
+ for (const m of overrides.mappings ?? []) {
91
+ const note = dirExists(m.host) ? previewGuest(m, dir, workspaceGuest).note : null;
92
+ if (note)
93
+ console.log(' ' + safeText(note));
94
+ }
95
+ const looser = loosenedRequests(config, overrides);
96
+ if (looser.length)
97
+ console.log('\nLooser than your settings (used only if you allow it for this project):');
98
+ for (const a of looser) {
99
+ const answer = allowedAnswer(store, filePath, a.key, a.wanted);
100
+ console.log(' ' +
101
+ a.key +
102
+ ' = ' +
103
+ JSON.stringify(a.wanted) +
104
+ ': ' +
105
+ (answer === true
106
+ ? 'allowed (you said yes)'
107
+ : answer === false
108
+ ? 'not used (you said no)'
109
+ : 'the next interactive launch asks you'));
110
+ }
111
+ }
112
+ export function config(ctx) {
113
+ const [action = 'summary'] = ctx.options.positionals;
114
+ switch (action) {
115
+ case 'summary':
116
+ table([
117
+ [
118
+ 'Settings file',
119
+ ctx.loaded.configPath ?? userConfigPath() + ' (does not exist yet; sandbox config init creates it)',
120
+ ],
121
+ ['Default agent', ctx.loaded.config.defaultHarness],
122
+ ['Storage', ctx.storageRoot],
123
+ [
124
+ 'Memory',
125
+ String(ctx.loaded.config.sandbox.memoryMb) + (ctx.loaded.config.sandbox.memoryMb === 'auto' ? '' : ' MB'),
126
+ ],
127
+ ]);
128
+ console.log('\nChange settings in the menu (sandbox > Settings). All of them as JSON: sandbox config show');
129
+ return 0;
130
+ case 'path':
131
+ console.log(ctx.loaded.configPath ?? userConfigPath() + ' (does not exist yet)');
132
+ return 0;
133
+ case 'init':
134
+ return initConfig();
135
+ case 'show':
136
+ console.log(JSON.stringify(ctx.loaded.config, null, 2));
137
+ return 0;
138
+ case 'schema':
139
+ return printSchemaSettings();
140
+ case 'check':
141
+ return checkLocalConfig(ctx);
142
+ default:
143
+ fail('Unknown config action "' + action + '".', 'Use one of: sandbox config show | path | init | schema | check');
144
+ }
145
+ }
@@ -0,0 +1,2 @@
1
+ import { type Context } from '../context.js';
2
+ export declare function doctor(ctx: Context): number;
@@ -0,0 +1,52 @@
1
+ import { expandPath } from '../../../core/util/index.js';
2
+ import { KnownProjects, ProjectRegistry } from '../../../host/projects/index.js';
3
+ import { detectWsb, doctorRows, insideSandbox, isSandboxRunning } from '../../../host/sandbox/index.js';
4
+ import { table } from '../../output/index.js';
5
+ export function doctor(ctx) {
6
+ const rows = doctorRows(ctx.loaded.config, ctx.options.harness ?? ctx.loaded.config.defaultHarness, ctx.storageRoot, ctx.loaded.configPath);
7
+ // Inside a sandbox the feature and "running" rows describe the sandbox itself, and the host rows describe nothing
8
+ // useful.
9
+ if (insideSandbox()) {
10
+ table([
11
+ ['Where', 'inside a Windows Sandbox started by this tool (run doctor on your PC to check the PC)'],
12
+ ...rows.filter(([name]) => name === 'Config file'),
13
+ ]);
14
+ return 0;
15
+ }
16
+ // Several projects: the roots mapped at every start, what the running sandbox has, and whether wsb share is there.
17
+ const p = ctx.loaded.config.projects;
18
+ const registry = isSandboxRunning() ? new ProjectRegistry(ctx.storageRoot).read() : null;
19
+ const wsb = p.wsbShare ? detectWsb() : null;
20
+ table([
21
+ ...rows,
22
+ [
23
+ 'Project roots',
24
+ p.roots.length
25
+ ? p.roots.map((r) => expandPath(r, ctx.loaded.base)).join(', ')
26
+ : 'none (sandbox projects roots add <folder>)',
27
+ ],
28
+ [
29
+ 'All projects',
30
+ p.all
31
+ ? 'on: ' +
32
+ new KnownProjects(ctx.storageRoot).list().length +
33
+ ' known project(s) mapped at every start (' +
34
+ p.exclude.length +
35
+ ' excluded)'
36
+ : 'off',
37
+ ],
38
+ ['Projects running', registry ? registry.projects.map((x) => x.name + ' (' + x.mechanism + ')').join(', ') : '-'],
39
+ [
40
+ 'wsb share',
41
+ !p.wsbShare
42
+ ? 'off (projects.wsbShare)'
43
+ : wsb
44
+ ? 'available: ' +
45
+ wsb.exe +
46
+ (wsb.version ? ' ' + wsb.version : '') +
47
+ ' (untested; a failure offers a restart instead)'
48
+ : 'not on this Windows (needs Windows 11 24H2+ with the updated Windows Sandbox): folders outside your roots need a restart',
49
+ ],
50
+ ]);
51
+ return 0;
52
+ }
@@ -0,0 +1,2 @@
1
+ import { type Context } from '../context.js';
2
+ export declare function claudeHost(ctx: Context): number;
@@ -0,0 +1,4 @@
1
+ import { hostClaude } from '../../../host/sandbox/index.js';
2
+ export function claudeHost(ctx) {
3
+ return hostClaude(ctx.storageRoot, ctx.options.personal, ctx.options.passthrough);
4
+ }
@@ -0,0 +1,8 @@
1
+ export * from './sync.js';
2
+ export * from './logs.js';
3
+ export * from './clean.js';
4
+ export * from './config.js';
5
+ export * from './doctor.js';
6
+ export * from './host-claude.js';
7
+ export * from './watch.js';
8
+ export * from './audit.js';
@@ -0,0 +1,9 @@
1
+ // sync, logs, clean, config, doctor, host-claude and the internal sync watcher.
2
+ export * from './sync.js';
3
+ export * from './logs.js';
4
+ export * from './clean.js';
5
+ export * from './config.js';
6
+ export * from './doctor.js';
7
+ export * from './host-claude.js';
8
+ export * from './watch.js';
9
+ export * from './audit.js';
@@ -0,0 +1,2 @@
1
+ import { type Context } from '../context.js';
2
+ export declare function logs(ctx: Context): Promise<number>;
@@ -0,0 +1,44 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import _ from 'lodash';
4
+ import { assertNoLinks, fail, safeText, sleep } from '../../../core/util/index.js';
5
+ function newestLog(dir) {
6
+ if (!fs.existsSync(dir))
7
+ return null;
8
+ const logs = fs
9
+ .readdirSync(dir)
10
+ .filter((f) => /^(guest|daemon|bootstrap)-.*\.log$/.test(f) && fs.lstatSync(path.join(dir, f)).isFile());
11
+ const newest = _.maxBy(logs, (f) => fs.statSync(path.join(dir, f)).mtimeMs);
12
+ return newest ? path.join(dir, newest) : null;
13
+ }
14
+ export async function logs(ctx) {
15
+ const dir = path.join(ctx.dataPath, 'logs');
16
+ // The sandbox writes this folder: never read through a link it planted there.
17
+ assertNoLinks(ctx.dataPath, dir);
18
+ const file = newestLog(dir) ??
19
+ fail('No sandbox logs yet in ' + dir + '.', 'Logs appear after the first start (sandbox claude).');
20
+ console.log('== ' + file + ' ==');
21
+ let printed = 0;
22
+ // The log is written inside the sandbox: read only its tail, and make it safe for your terminal.
23
+ const print = () => {
24
+ const size = fs.statSync(file).size;
25
+ const from = printed === 0 ? Math.max(0, size - 64 * 1024) : printed;
26
+ if (size <= from)
27
+ return;
28
+ const fd = fs.openSync(file, 'r');
29
+ const buffer = Buffer.alloc(Math.min(size - from, 4 * 1024 * 1024));
30
+ fs.readSync(fd, buffer, 0, buffer.length, from);
31
+ fs.closeSync(fd);
32
+ const text = safeText(buffer.toString('utf8'));
33
+ process.stdout.write(printed === 0 ? text.split('\n').slice(-120).join('\n') : text);
34
+ printed = from + buffer.length;
35
+ };
36
+ print();
37
+ if (ctx.options.follow)
38
+ console.error('(following; Ctrl+C to stop)');
39
+ while (ctx.options.follow) {
40
+ await sleep(1000);
41
+ print();
42
+ }
43
+ return 0;
44
+ }
@@ -0,0 +1,2 @@
1
+ import { type Context } from '../context.js';
2
+ export declare function sync(ctx: Context): number;
@@ -0,0 +1,12 @@
1
+ import { isSandboxRunning } from '../../../host/sandbox/index.js';
2
+ import { syncBack } from '../../../sync/index.js';
3
+ export function sync(ctx) {
4
+ const running = isSandboxRunning();
5
+ const result = syncBack(ctx.dataPath, !running);
6
+ console.log('History: ' +
7
+ result.history +
8
+ ' item(s) synced back. claude-mem: ' +
9
+ result.claudeMem +
10
+ (running ? ' (claude-mem syncs when the sandbox closes)' : ''));
11
+ return 0;
12
+ }
@@ -0,0 +1,3 @@
1
+ import { type Context } from '../context.js';
2
+ /** The watcher process exits as soon as its work is done: nothing it opened may keep it running after the sandbox. */
3
+ export declare function watcher(ctx: Context): Promise<void>;
@@ -0,0 +1,6 @@
1
+ import { watch } from '../../../sync/index.js';
2
+ /** The watcher process exits as soon as its work is done: nothing it opened may keep it running after the sandbox. */
3
+ export async function watcher(ctx) {
4
+ await watch(ctx.dataPath);
5
+ process.exit(0);
6
+ }
@@ -0,0 +1,3 @@
1
+ import type { SessionStatus } from '../../../core/types.js';
2
+ /** "2 sessions (claude in api, codex in web)". */
3
+ export declare function describeSessions(sessions: Pick<SessionStatus, 'harness' | 'cwd' | 'project'>[]): string;
@@ -0,0 +1,15 @@
1
+ import path from 'node:path';
2
+ import { safeText } from '../../../core/util/index.js';
3
+ /** "2 sessions (claude in api, codex in web)". */
4
+ export function describeSessions(sessions) {
5
+ return sessions.length === 0
6
+ ? 'no sessions'
7
+ : sessions.length +
8
+ ' session' +
9
+ (sessions.length === 1 ? '' : 's') +
10
+ ' (' +
11
+ sessions
12
+ .map((s) => safeText(s.harness) + ' in ' + safeText(s.project ?? path.win32.basename(s.cwd)))
13
+ .join(', ') +
14
+ ')';
15
+ }
@@ -0,0 +1,38 @@
1
+ import type { SandboxStatus } from '../../../core/types.js';
2
+ import { type Missing } from '../../../core/local-config/index.js';
3
+ import { type RegistryEntry } from '../../../host/projects/index.js';
4
+ import type { ProjectSpec } from '../../../shared/channel/index.js';
5
+ import { type Context } from '../context.js';
6
+ /** The folder the command is about: --workspace, else the current one. */
7
+ export declare function hereDir(ctx: Context): string;
8
+ export interface Located {
9
+ project: RegistryEntry | null;
10
+ guestDir: string | null;
11
+ }
12
+ /** Where this folder is in the running sandbox, if it is in it at all (nothing is registered). */
13
+ export declare function locateHere(ctx: Context, status: SandboxStatus | null): Located;
14
+ export interface Joined {
15
+ project: RegistryEntry | null;
16
+ guestDir: string;
17
+ spec: ProjectSpec | null;
18
+ harness: string | null;
19
+ notes: string[];
20
+ }
21
+ /** restart.ts: the sandbox was restarted for a project in this command. */
22
+ export declare function markRestarted(): void;
23
+ /**
24
+ * Makes this folder a project of the running sandbox (nothing to do for the launch folder and projects already in
25
+ * it): its .sandbox-config.json is approved like at a launch, its protections are checked, and it is made visible.
26
+ * Throws NeedsRestart (host/projects) when that is impossible without a restart.
27
+ */
28
+ export declare function joinHere(ctx: Context, status: SandboxStatus, o?: {
29
+ noRestart?: boolean;
30
+ }): Promise<Joined>;
31
+ /** The command that restarts the running sandbox with this folder's boot wishes (consent given by --yes). */
32
+ export declare function restartCommand(ctx: Context, host: string): string;
33
+ /** Joined without what it wants at boot: what is missing, how to restart with it, and how to always have it. */
34
+ export declare function missingNotes(ctx: Context, name: string, host: string, missing: Missing, shown?: boolean): string[];
35
+ /** Waits until the sandbox has set a project up, with its progress on a spinner (plain lines without a terminal). */
36
+ export declare function provisionJoined(ctx: Context, joined: Joined): Promise<void>;
37
+ /** joinHere, then (for another project) waits until the sandbox has set it up. */
38
+ export declare function readyHere(ctx: Context, status: SandboxStatus): Promise<Joined>;