windows-development-sandbox 1.11.6 → 1.12.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 (131) hide show
  1. package/README.md +12 -6
  2. package/config.example.json +4 -3
  3. package/dist/app/features/apps/apps-rows.d.ts +4 -1
  4. package/dist/app/features/apps/apps-rows.js +7 -2
  5. package/dist/app/features/apps/apps.def.d.ts +19 -0
  6. package/dist/app/features/apps/apps.def.js +49 -12
  7. package/dist/app/features/apps/apps.run.d.ts +2 -0
  8. package/dist/app/features/apps/apps.run.js +1 -1
  9. package/dist/app/features/audit/audit.def.d.ts +341 -0
  10. package/dist/app/features/audit/audit.def.js +454 -0
  11. package/dist/app/features/audit/audit.run.d.ts +107 -0
  12. package/dist/app/features/audit/audit.run.js +133 -0
  13. package/dist/app/features/audit/index.d.ts +2 -0
  14. package/dist/app/features/audit/index.js +3 -0
  15. package/dist/app/features/defs.d.ts +194 -1
  16. package/dist/app/features/defs.js +4 -0
  17. package/dist/app/features/projects/projects.def.js +1 -1
  18. package/dist/app/features/settings/settings.run.d.ts +3 -0
  19. package/dist/app/features/settings/settings.run.js +16 -2
  20. package/dist/app/features/updates/update-lines.d.ts +1 -1
  21. package/dist/app/features/updates/update-lines.js +3 -7
  22. package/dist/app/features/updates/updates.def.js +1 -1
  23. package/dist/app/kernel/define.d.ts +12 -1
  24. package/dist/app/registry.js +2 -0
  25. package/dist/cli/args.d.ts +0 -3
  26. package/dist/cli/args.js +3 -4
  27. package/dist/cli/commands/index.d.ts +1 -1
  28. package/dist/cli/commands/index.js +1 -1
  29. package/dist/cli/commands/launch/prepare.js +1 -1
  30. package/dist/cli/commands/maintenance/index.d.ts +0 -1
  31. package/dist/cli/commands/maintenance/index.js +0 -1
  32. package/dist/cli/commands/registry.js +1 -2
  33. package/dist/cli/manifest.d.ts +0 -41
  34. package/dist/cli/manifest.js +0 -14
  35. package/dist/cli/menu/pages/apps-page.js +2 -15
  36. package/dist/cli/menu/pages/maintenance-page.d.ts +4 -0
  37. package/dist/cli/menu/pages/maintenance-page.js +51 -8
  38. package/dist/cli/menu/views.js +2 -0
  39. package/dist/core/config/defaults.js +1 -1
  40. package/dist/core/schema/apps.d.ts +9 -0
  41. package/dist/core/schema/apps.js +9 -0
  42. package/dist/core/schema/config.d.ts +1 -0
  43. package/dist/core/schema/config.js +3 -3
  44. package/dist/core/schema/sandbox.d.ts +1 -0
  45. package/dist/core/schema/sandbox.js +11 -3
  46. package/dist/guest/apps/app-installer.js +50 -4
  47. package/dist/guest/apps/index.d.ts +1 -1
  48. package/dist/guest/apps/index.js +1 -1
  49. package/dist/guest/apps/sources.js +1 -1
  50. package/dist/guest/audit/parse.d.ts +32 -2
  51. package/dist/guest/audit/parse.js +43 -5
  52. package/dist/guest/audit/process-audit.d.ts +3 -1
  53. package/dist/guest/audit/process-audit.js +9 -6
  54. package/dist/guest/boot/boot.js +12 -3
  55. package/dist/guest/boot/guide.d.ts +1 -1
  56. package/dist/guest/boot/guide.js +27 -3
  57. package/dist/guest/daemon/sessions.d.ts +7 -0
  58. package/dist/guest/daemon/sessions.js +27 -2
  59. package/dist/guest/entries/daemon.js +2 -1
  60. package/dist/guest/setup/addon-mcp.d.ts +2 -0
  61. package/dist/guest/setup/addon-mcp.js +49 -0
  62. package/dist/guest/setup/agent-addons.d.ts +9 -0
  63. package/dist/guest/setup/agent-addons.js +22 -0
  64. package/dist/guest/setup/headroom.d.ts +7 -0
  65. package/dist/guest/setup/headroom.js +60 -0
  66. package/dist/guest/setup/managed-policy.d.ts +2 -1
  67. package/dist/guest/setup/managed-policy.js +15 -6
  68. package/dist/guest/toolchains/plan.js +8 -3
  69. package/dist/host/audit/attribute.d.ts +46 -0
  70. package/dist/host/audit/attribute.js +76 -0
  71. package/dist/host/audit/collect.d.ts +29 -3
  72. package/dist/host/audit/collect.js +256 -61
  73. package/dist/host/audit/git-commits.d.ts +29 -0
  74. package/dist/host/audit/git-commits.js +157 -0
  75. package/dist/host/audit/index.d.ts +5 -0
  76. package/dist/host/audit/index.js +6 -0
  77. package/dist/host/audit/log.d.ts +44 -7
  78. package/dist/host/audit/log.js +148 -45
  79. package/dist/host/audit/redact.d.ts +2 -0
  80. package/dist/host/audit/redact.js +67 -0
  81. package/dist/host/update/decision.d.ts +3 -2
  82. package/dist/host/update/decision.js +2 -3
  83. package/dist/host/update/updater.d.ts +4 -1
  84. package/dist/host/update/updater.js +11 -6
  85. package/dist/runtime/agent.js +110 -15
  86. package/dist/runtime/daemon.js +569 -316
  87. package/dist/runtime/db.js +110 -15
  88. package/dist/runtime/main.js +1011 -672
  89. package/dist/runtime/netproxy.js +110 -15
  90. package/dist/runtime/view.js +110 -15
  91. package/dist/selftest/app.test.js +25 -1
  92. package/dist/selftest/audit.test.js +354 -47
  93. package/dist/selftest/hcs.test.js +35 -0
  94. package/dist/selftest/menu-screens.js +1 -1
  95. package/dist/selftest/menu.test.js +3 -3
  96. package/dist/selftest/support/engine-golden.js +9 -0
  97. package/dist/selftest/support/fixtures.d.ts +1 -0
  98. package/dist/selftest/support/web-preview.js +94 -0
  99. package/dist/selftest/toolchains.test.js +147 -2
  100. package/dist/selftest/update-service.test.js +0 -7
  101. package/dist/selftest/update.test.js +4 -4
  102. package/dist/shared/apps/agent-addons.d.ts +64 -0
  103. package/dist/shared/apps/agent-addons.js +95 -0
  104. package/dist/shared/apps/catalogue.d.ts +33 -2
  105. package/dist/shared/apps/catalogue.js +102 -11
  106. package/dist/shared/apps/index.d.ts +3 -2
  107. package/dist/shared/apps/index.js +3 -2
  108. package/dist/shared/apps/selection.d.ts +2 -0
  109. package/dist/shared/apps/selection.js +7 -0
  110. package/dist/sync/watcher.js +9 -1
  111. package/dist/web/index.html +2 -2
  112. package/dist/web/{main-RQFN4WBY.css → main-UAQPI5XD.css} +1 -1
  113. package/dist/web/{main-QL7KHCEE.js → main-UD4QCXZR.js} +66 -66
  114. package/native/csharp/HcsHost/AssemblyInfo.cs +5 -3
  115. package/native/csharp/HcsHost/Hcs.cs +9 -0
  116. package/native/csharp/HcsHost/Program.cs +26 -1
  117. package/native/csharp/HcsHost/Share.cs +173 -0
  118. package/native/csharp/HostTools/AssemblyInfo.cs +3 -3
  119. package/package.json +1 -1
  120. package/sandbox/addons/ccusage/package-lock.json +111 -0
  121. package/sandbox/addons/ccusage/package.json +7 -0
  122. package/sandbox/addons/context7/package-lock.json +1313 -0
  123. package/sandbox/addons/context7/package.json +7 -0
  124. package/sandbox/addons/headroom/requirements.in +1 -0
  125. package/sandbox/addons/headroom/requirements.txt +2922 -0
  126. package/sandbox/addons/playwright-mcp/package-lock.json +56 -0
  127. package/sandbox/addons/playwright-mcp/package.json +7 -0
  128. package/schemas/config.schema.json +13 -4
  129. package/schemas/sandbox-config.schema.json +2 -2
  130. package/dist/cli/commands/maintenance/audit.d.ts +0 -3
  131. package/dist/cli/commands/maintenance/audit.js +0 -58
@@ -0,0 +1,56 @@
1
+ {
2
+ "name": "sandbox-addon-playwright-mcp",
3
+ "lockfileVersion": 3,
4
+ "requires": true,
5
+ "packages": {
6
+ "": {
7
+ "name": "sandbox-addon-playwright-mcp",
8
+ "dependencies": {
9
+ "@playwright/mcp": "0.0.83"
10
+ }
11
+ },
12
+ "node_modules/@playwright/mcp": {
13
+ "version": "0.0.83",
14
+ "resolved": "https://registry.npmjs.org/@playwright/mcp/-/mcp-0.0.83.tgz",
15
+ "integrity": "sha512-oNcl+Ae2/IAjhfPeP46BfIkSakfmprY+aOtkv5MjrQ4lPav4/yNtPhL0iq8SlIM90oApWgBDUxaNKvktazUKOg==",
16
+ "license": "Apache-2.0",
17
+ "dependencies": {
18
+ "playwright": "1.64.0-alpha-1790635538000",
19
+ "playwright-core": "1.64.0-alpha-1790635538000"
20
+ },
21
+ "bin": {
22
+ "playwright-mcp": "cli.js"
23
+ },
24
+ "engines": {
25
+ "node": ">=18"
26
+ }
27
+ },
28
+ "node_modules/playwright": {
29
+ "version": "1.64.0-alpha-1790635538000",
30
+ "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.64.0-alpha-1790635538000.tgz",
31
+ "integrity": "sha512-/5XDUMxpOd/9AojJtWDFIRV3EJZNQ0AwvK69wgt3CPzy8wTgiBG9pX45VfxtqtvIRGwfWzMhrvawNKreG69Snw==",
32
+ "license": "Apache-2.0",
33
+ "dependencies": {
34
+ "playwright-core": "1.64.0-alpha-1790635538000"
35
+ },
36
+ "bin": {
37
+ "playwright": "cli.js"
38
+ },
39
+ "engines": {
40
+ "node": ">=20"
41
+ }
42
+ },
43
+ "node_modules/playwright-core": {
44
+ "version": "1.64.0-alpha-1790635538000",
45
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.64.0-alpha-1790635538000.tgz",
46
+ "integrity": "sha512-pNwaXirhXMRLaRQs4NQ18EpTdtDoFwyPH9FOaaDC7YXG4hpwE2xmwCic/1srbuExVQC7zT9LJSJpDBAru+Vo9A==",
47
+ "license": "Apache-2.0",
48
+ "bin": {
49
+ "playwright-core": "cli.js"
50
+ },
51
+ "engines": {
52
+ "node": ">=20"
53
+ }
54
+ }
55
+ }
56
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "name": "sandbox-addon-playwright-mcp",
3
+ "private": true,
4
+ "dependencies": {
5
+ "@playwright/mcp": "0.0.83"
6
+ }
7
+ }
@@ -63,13 +63,13 @@
63
63
  "properties": {
64
64
  "enabled": {
65
65
  "type": "boolean",
66
- "description": "Keep an audit log on this PC of what happened in your sandboxes: programs started (with their command lines), files changed in the project, sessions, and what the repo guard caught. The sandbox cannot change it. Read it with sandbox audit."
66
+ "description": "Keep an audit log on this PC of what your agents did: programs started (with their command lines, secrets hidden), files changed in the projects, git commits, sessions, and what the repo guard caught, each linked to the agent session that did it where that can be known. The sandbox cannot change it. Read it with sandbox audit or on the Activity page."
67
67
  },
68
68
  "days": {
69
69
  "type": "integer",
70
70
  "minimum": 1,
71
71
  "maximum": 365,
72
- "description": "Days the audit log is kept."
72
+ "description": "Days the audit log is kept (1 to 30; a larger number keeps 30); older days are deleted when a sandbox starts and once a day."
73
73
  },
74
74
  "maxMb": {
75
75
  "type": "integer",
@@ -83,7 +83,11 @@
83
83
  },
84
84
  "files": {
85
85
  "type": "boolean",
86
- "description": "Record the files changed in the project while the sandbox runs."
86
+ "description": "Record the files changed in the projects while the sandbox runs."
87
+ },
88
+ "commits": {
89
+ "type": "boolean",
90
+ "description": "Record the git commits made in the projects while the sandbox runs (read from each project's .git folder on this PC)."
87
91
  }
88
92
  },
89
93
  "additionalProperties": false
@@ -1337,6 +1341,12 @@
1337
1341
  "items": {
1338
1342
  "type": "string",
1339
1343
  "enum": [
1344
+ "rtk",
1345
+ "headroom",
1346
+ "ccusage",
1347
+ "playwright-mcp",
1348
+ "context7",
1349
+ "rea",
1340
1350
  "notepadpp",
1341
1351
  "sublime",
1342
1352
  "neovim",
@@ -1381,7 +1391,6 @@
1381
1391
  "xh",
1382
1392
  "grpcurl",
1383
1393
  "k6",
1384
- "rea",
1385
1394
  "ghidra",
1386
1395
  "x64dbg",
1387
1396
  "ilspy",
@@ -1037,6 +1037,7 @@
1037
1037
  "items": {
1038
1038
  "type": "string",
1039
1039
  "enum": [
1040
+ "rea",
1040
1041
  "notepadpp",
1041
1042
  "sublime",
1042
1043
  "neovim",
@@ -1081,7 +1082,6 @@
1081
1082
  "xh",
1082
1083
  "grpcurl",
1083
1084
  "k6",
1084
- "rea",
1085
1085
  "ghidra",
1086
1086
  "x64dbg",
1087
1087
  "ilspy",
@@ -1112,7 +1112,7 @@
1112
1112
  "rust-analyzer"
1113
1113
  ]
1114
1114
  },
1115
- "description": "Apps from the catalogue to install in every sandbox (the Apps screen in the menu lists them by category). Each is downloaded once and kept."
1115
+ "description": "Apps from the catalogue this project adds to yours (agent add-ons such as rtk, Headroom and the MCP servers are set in your own settings only)."
1116
1116
  }
1117
1117
  },
1118
1118
  "additionalProperties": false
@@ -1,3 +0,0 @@
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>;
@@ -1,58 +0,0 @@
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: sandbox config set audit.enabled true');
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
- }