patchwarden 0.6.1 → 0.6.4

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 (65) hide show
  1. package/PatchWarden-Control-Tray.cmd +11 -0
  2. package/PatchWarden-Control.cmd +6 -0
  3. package/PatchWarden-Desktop.cmd +5 -0
  4. package/PatchWarden.cmd +1 -1
  5. package/README.en.md +106 -18
  6. package/README.md +30 -19
  7. package/Restart-PatchWarden-Control.cmd +6 -0
  8. package/Stop-PatchWarden.cmd +11 -0
  9. package/dist/controlCenter.d.ts +14 -0
  10. package/dist/controlCenter.js +2002 -0
  11. package/dist/doctor.js +3 -3
  12. package/dist/version.d.ts +1 -1
  13. package/dist/version.js +1 -1
  14. package/docs/control-center/README.md +33 -0
  15. package/docs/control-center/control-center-daily-driver.md +211 -0
  16. package/docs/control-center/control-center-mvp.md +205 -0
  17. package/docs/control-center/control-center-phase2.md +159 -0
  18. package/docs/demo.md +3 -0
  19. package/docs/release-v0.6.4.md +45 -0
  20. package/examples/openai-tunnel/README.md +5 -5
  21. package/examples/openai-tunnel/tunnel-client.example.yaml +3 -3
  22. package/package.json +23 -15
  23. package/scripts/README.md +47 -0
  24. package/scripts/{brand-check.js → checks/brand-check.js} +2 -2
  25. package/scripts/checks/control-center-smoke.js +1098 -0
  26. package/scripts/{control-smoke.js → checks/control-smoke.js} +17 -3
  27. package/scripts/{doctor-smoke.js → checks/doctor-smoke.js} +1 -1
  28. package/scripts/{http-mcp-smoke.js → checks/http-mcp-smoke.js} +2 -2
  29. package/scripts/{lifecycle-smoke.js → checks/lifecycle-smoke.js} +12 -12
  30. package/scripts/{mcp-manifest-check.js → checks/mcp-manifest-check.js} +2 -2
  31. package/scripts/{mcp-smoke.js → checks/mcp-smoke.js} +4 -2
  32. package/scripts/{package-manifest-check.js → checks/package-manifest-check.js} +2 -1
  33. package/scripts/{tunnel-supervisor-smoke.js → checks/tunnel-supervisor-smoke.js} +2 -2
  34. package/scripts/{unit-tests.js → checks/unit-tests.js} +1 -1
  35. package/scripts/{watcher-supervisor-smoke.js → checks/watcher-supervisor-smoke.js} +11 -5
  36. package/scripts/control/control-center-tray.ps1 +281 -0
  37. package/scripts/{get-patchwarden-health.ps1 → control/get-patchwarden-health.ps1} +3 -3
  38. package/scripts/{manage-patchwarden.ps1 → control/manage-patchwarden.ps1} +30 -4
  39. package/scripts/control/restart-control-center.ps1 +173 -0
  40. package/scripts/{restart-patchwarden.ps1 → control/restart-patchwarden.ps1} +1 -1
  41. package/scripts/control/start-control-center.ps1 +263 -0
  42. package/scripts/{start-patchwarden-tunnel.ps1 → control/start-patchwarden-tunnel.ps1} +48 -6
  43. package/scripts/control/stop-patchwarden.ps1 +114 -0
  44. package/scripts/launchers/Check-PatchWarden-Health.cmd +1 -1
  45. package/scripts/launchers/Reset-PatchWarden-Tunnel-Key.cmd +1 -1
  46. package/scripts/launchers/Restart-PatchWarden.cmd +1 -1
  47. package/scripts/launchers/Start-PatchWarden-Direct-Tunnel.cmd +1 -1
  48. package/scripts/launchers/Start-PatchWarden-Tunnel.cmd +1 -1
  49. package/scripts/{patchwarden-mcp-direct.cmd → mcp/patchwarden-mcp-direct.cmd} +1 -1
  50. package/scripts/{patchwarden-mcp-stdio.cmd → mcp/patchwarden-mcp-stdio.cmd} +1 -1
  51. package/scripts/{pack-clean.js → release/pack-clean.js} +9 -1
  52. package/src/controlCenter.ts +2152 -0
  53. package/src/doctor.ts +4 -4
  54. package/src/version.ts +1 -1
  55. package/ui/colors_and_type.css +141 -0
  56. package/ui/pages/audit.html +743 -0
  57. package/ui/pages/dashboard.html +1154 -0
  58. package/ui/pages/direct-sessions.html +652 -0
  59. package/ui/pages/logs.html +502 -0
  60. package/ui/pages/task-detail.html +1229 -0
  61. package/ui/pages/tasks.html +702 -0
  62. package/ui/pages/workspace.html +947 -0
  63. package/ui/partials/project-shell.html +362 -0
  64. package/ui/vendor/lucide.js +12 -0
  65. package/ui/vendor/tailwindcss-browser.js +947 -0
@@ -0,0 +1,45 @@
1
+ # PatchWarden v0.6.4 Release Notes
2
+
3
+ **Release Date**: 2026-06-26
4
+
5
+ ## Overview
6
+
7
+ PatchWarden v0.6.4 is a desktop experience release. It keeps the existing CLI and script surface, but makes the normal Windows workflow feel like a lightweight local application: start one desktop entry, control Core/Direct from the tray or Web dashboard, and shut everything down from one stop command.
8
+
9
+ ## Desktop Entry
10
+
11
+ - Added `PatchWarden-Desktop.cmd` as the recommended daily entry point.
12
+ - The desktop entry starts the tray in a hidden PowerShell host and ensures the local Control Center is available.
13
+ - It does not automatically open a browser window. Use **Open Dashboard** from the tray or `PatchWarden-Control.cmd` when you want the full Web console.
14
+ - `PatchWarden-Control-Tray.cmd --foreground` remains available for tray debugging.
15
+
16
+ ## Tray Improvements
17
+
18
+ - Added single-instance protection for the tray process.
19
+ - Replaced the generic system icon path with a small PatchWarden-styled shield icon drawn through WinForms/System.Drawing.
20
+ - Kept the tray as a lightweight switch layer: Open Dashboard, Status, Start All, Stop All, Restart All, Open Logs, and Quit Tray.
21
+ - Added clearer balloon/status feedback for startup and lifecycle actions.
22
+ - Clarified action semantics: **Stop All** stops Core/Direct and leaves tray/dashboard available; **Quit Tray** exits only the tray; `Stop-PatchWarden.cmd` performs full shutdown.
23
+
24
+ ## Background Lifecycle
25
+
26
+ - Control Center now invokes `manage-patchwarden.ps1` with `-Background` and `windowsHide: true` for lifecycle API calls.
27
+ - The manager starts Core/Direct supervisors hidden for desktop/Web flows, while preserving visible launcher windows for explicit CLI/debug usage.
28
+ - Added `-NoTunnelWebUi` to `start-patchwarden-tunnel.ps1` so background starts do not open tunnel-client Web UI tabs.
29
+
30
+ ## Verification
31
+
32
+ - TypeScript build: PASS
33
+ - Control smoke: PASS
34
+ - Control Center smoke: PASS (23 passed, 0 failed)
35
+ - Package manifest check: PASS
36
+ - PowerShell control script parse check: PASS
37
+ - Manual desktop-flow evidence: desktop entry starts only tray + Control Center; Start/Restart uses hidden supervisors; Stop-PatchWarden closes Core/Direct, Control Center, and tray.
38
+
39
+ ## Migration
40
+
41
+ No breaking changes. Existing CLI commands and compatibility launchers remain available. For daily Windows use, prefer:
42
+
43
+ ```powershell
44
+ .\PatchWarden-Desktop.cmd
45
+ ```
@@ -15,7 +15,7 @@ or local private paths.
15
15
 
16
16
  1. Configure `patchwarden.config.json`.
17
17
  2. Run `npm.cmd run build`.
18
- 3. Use `scripts/patchwarden-mcp-stdio.cmd` as the tunnel MCP command.
18
+ 3. Use `scripts/mcp/patchwarden-mcp-stdio.cmd` as the tunnel MCP command.
19
19
  4. Start `npm.cmd run watch` in a separate terminal.
20
20
  5. Start `tunnel-client run` or use `PatchWarden.cmd start core`.
21
21
  6. Create a ChatGPT Connector using the tunnel channel.
@@ -25,10 +25,10 @@ or local private paths.
25
25
 
26
26
  For ChatGPT Direct editing, set `enableDirectProfile: true` in the trusted
27
27
  local config and run `PatchWarden.cmd start direct`. It uses
28
- `scripts/patchwarden-mcp-direct.cmd`, the separate `patchwarden-direct` Tunnel
28
+ `scripts/mcp/patchwarden-mcp-direct.cmd`, the separate `patchwarden-direct` Tunnel
29
29
  Client profile, no Watcher, and an isolated `runtime-direct` status directory.
30
- Use a separate Direct Connector/Tunnel ID so the fixed 16-tool Core catalog and
31
- the 9-tool Direct catalog never overwrite each other's cached schema.
30
+ Use a separate Direct Connector/Tunnel ID so the fixed 17-tool Core catalog and
31
+ the 10-tool Direct catalog never overwrite each other's cached schema.
32
32
 
33
33
  The Windows launcher prompts for the runtime API key once and stores only a
34
34
  Windows DPAPI-encrypted value under `%APPDATA%\patchwarden`. Use
@@ -38,7 +38,7 @@ Before the launcher starts the tunnel it performs a real MCP stdio handshake
38
38
  and requires the exact `chatgpt_core` manifest. Run
39
39
  `PatchWarden.cmd health` to see the version, profile, tool names, schema
40
40
  hash, process sources, and any mixed-version warnings. The check is read-only.
41
- The v0.4.1 core manifest contains 16 tools. A different count or schema hash
41
+ The v0.6.1 core manifest contains 17 tools. A different count or schema hash
42
42
  requires a Connector refresh and validation from a new ChatGPT conversation.
43
43
 
44
44
  ## Architecture
@@ -12,7 +12,7 @@
12
12
  # --sample sample_mcp_stdio_local \
13
13
  # --profile patchwarden \
14
14
  # --tunnel-id tunnel_xxx \
15
- # --mcp-command "C:/path/to/patchwarden/scripts/patchwarden-mcp-stdio.cmd"
15
+ # --mcp-command "C:/path/to/patchwarden/scripts/mcp/patchwarden-mcp-stdio.cmd"
16
16
 
17
17
  # Direct mode uses a separate profile and command:
18
18
  #
@@ -20,12 +20,12 @@
20
20
  # --sample sample_mcp_stdio_local \
21
21
  # --profile patchwarden-direct \
22
22
  # --tunnel-id tunnel_xxx \
23
- # --mcp-command "C:/path/to/patchwarden/scripts/patchwarden-mcp-direct.cmd"
23
+ # --mcp-command "C:/path/to/patchwarden/scripts/mcp/patchwarden-mcp-direct.cmd"
24
24
 
25
25
  mcp:
26
26
  commands:
27
27
  - channel: main
28
- command: "C:/path/to/patchwarden/scripts/patchwarden-mcp-stdio.cmd"
28
+ command: "C:/path/to/patchwarden/scripts/mcp/patchwarden-mcp-stdio.cmd"
29
29
 
30
30
  # Mode B: HTTP
31
31
  #
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "patchwarden",
3
- "version": "0.6.1",
3
+ "version": "0.6.4",
4
4
  "description": "A secure local MCP bridge: clients save plans, local agents execute tasks, and results are returned through workspace-scoped files.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -17,9 +17,16 @@
17
17
  "src/",
18
18
  "examples/",
19
19
  "scripts/",
20
- "!scripts/kill-patchwarden.ps1",
20
+ "!scripts/control/kill-patchwarden.ps1",
21
21
  "!scripts/launchers/Kill-PatchWarden.cmd",
22
+ "!.local/",
23
+ "ui/",
22
24
  "PatchWarden.cmd",
25
+ "PatchWarden-Control.cmd",
26
+ "PatchWarden-Control-Tray.cmd",
27
+ "PatchWarden-Desktop.cmd",
28
+ "Restart-PatchWarden-Control.cmd",
29
+ "Stop-PatchWarden.cmd",
23
30
  "README.md",
24
31
  "README.en.md",
25
32
  "LICENSE",
@@ -29,25 +36,26 @@
29
36
  "build": "node ./node_modules/typescript/bin/tsc",
30
37
  "start": "node dist/index.js",
31
38
  "start:http": "node dist/httpServer.js",
39
+ "start:control": "node dist/controlCenter.js",
32
40
  "dev": "npm run build && node dist/index.js",
33
41
  "runner": "node dist/runner/cli.js",
34
42
  "watch": "node dist/runner/watch.js",
35
43
  "doctor": "node dist/doctor.js",
36
44
  "doctor:ci": "node dist/doctor.js --allow-default-config",
37
- "test:unit": "node scripts/unit-tests.js",
38
- "test": "node dist/smoke-test.js && node scripts/unit-tests.js && node scripts/lifecycle-smoke.js && node scripts/doctor-smoke.js && node scripts/tunnel-supervisor-smoke.js && node scripts/watcher-supervisor-smoke.js && node scripts/control-smoke.js && node scripts/mcp-manifest-check.js && node scripts/brand-check.js",
39
- "test:lifecycle": "npm run build && node scripts/lifecycle-smoke.js",
40
- "test:doctor": "npm run build && node scripts/doctor-smoke.js",
41
- "test:tunnel-supervisor": "npm run build && node scripts/tunnel-supervisor-smoke.js",
42
- "test:watcher-supervisor": "npm run build && node scripts/watcher-supervisor-smoke.js",
43
- "check:tool-manifest": "npm run build && node scripts/mcp-manifest-check.js",
44
- "check:direct-tool-manifest": "npm run build && node scripts/mcp-manifest-check.js --profile chatgpt_direct",
45
- "check:brand": "node scripts/brand-check.js",
46
- "test:mcp": "npm run build && node scripts/mcp-smoke.js",
47
- "test:http-mcp": "npm run build && node scripts/http-mcp-smoke.js",
45
+ "test:unit": "node scripts/checks/unit-tests.js",
46
+ "test": "node dist/smoke-test.js && node scripts/checks/unit-tests.js && node scripts/checks/lifecycle-smoke.js && node scripts/checks/doctor-smoke.js && node scripts/checks/tunnel-supervisor-smoke.js && node scripts/checks/watcher-supervisor-smoke.js && node scripts/checks/control-smoke.js && node scripts/checks/mcp-manifest-check.js && node scripts/checks/brand-check.js && node scripts/checks/control-center-smoke.js",
47
+ "test:lifecycle": "npm run build && node scripts/checks/lifecycle-smoke.js",
48
+ "test:doctor": "npm run build && node scripts/checks/doctor-smoke.js",
49
+ "test:tunnel-supervisor": "npm run build && node scripts/checks/tunnel-supervisor-smoke.js",
50
+ "test:watcher-supervisor": "npm run build && node scripts/checks/watcher-supervisor-smoke.js",
51
+ "check:tool-manifest": "npm run build && node scripts/checks/mcp-manifest-check.js",
52
+ "check:direct-tool-manifest": "npm run build && node scripts/checks/mcp-manifest-check.js --profile chatgpt_direct",
53
+ "check:brand": "node scripts/checks/brand-check.js",
54
+ "test:mcp": "npm run build && node scripts/checks/mcp-smoke.js",
55
+ "test:http-mcp": "npm run build && node scripts/checks/http-mcp-smoke.js",
48
56
  "pretest": "npm run build",
49
- "pack:clean": "npm run build && node scripts/pack-clean.js",
50
- "verify:package": "npm run build && node scripts/package-manifest-check.js"
57
+ "pack:clean": "npm run build && node scripts/release/pack-clean.js",
58
+ "verify:package": "npm run build && node scripts/checks/package-manifest-check.js"
51
59
  },
52
60
  "dependencies": {
53
61
  "@modelcontextprotocol/sdk": "^1.0.0"
@@ -0,0 +1,47 @@
1
+ # PatchWarden Scripts
2
+
3
+ This directory keeps implementation scripts out of the root folder. Normal
4
+ desktop use should start from the root entrypoints:
5
+
6
+ ```powershell
7
+ .\PatchWarden-Desktop.cmd
8
+ .\PatchWarden-Control.cmd
9
+ .\PatchWarden-Control-Tray.cmd --foreground
10
+ .\Stop-PatchWarden.cmd
11
+ .\PatchWarden.cmd status all
12
+ ```
13
+
14
+ ## Control Scripts
15
+
16
+ - `control/manage-patchwarden.ps1`: backing implementation for `PatchWarden.cmd`.
17
+ - `control/start-control-center.ps1`: starts the local Web dashboard.
18
+ - `control/restart-control-center.ps1`: restarts the local Web dashboard.
19
+ - `control/control-center-tray.ps1`: Windows tray quick controls.
20
+ - `control/stop-patchwarden.ps1`: one-click shutdown for Core/Direct,
21
+ Control Center, and tray.
22
+ - `control/start-patchwarden-tunnel.ps1`: starts Core or Direct tunnel supervision.
23
+ - `control/restart-patchwarden.ps1`: compatibility restart helper.
24
+
25
+ ## MCP Entrypoints
26
+
27
+ - `mcp/patchwarden-mcp-stdio.cmd`: Core stdio MCP launcher.
28
+ - `mcp/patchwarden-mcp-direct.cmd`: Direct stdio MCP launcher.
29
+
30
+ ## Smoke Tests And Checks
31
+
32
+ - `checks/*-smoke.js`: targeted smoke tests.
33
+ - `checks/unit-tests.js`: Node unit test entry.
34
+ - `checks/mcp-manifest-check.js`: validates MCP manifest expectations.
35
+ - `brand-check.js`: checks public brand strings.
36
+ - `checks/package-manifest-check.js`: verifies package contents.
37
+
38
+ ## Release Helpers
39
+
40
+ - `release/pack-clean.js`: rebuilds `release/`, `patchwarden-release.tar.gz`, and the
41
+ versioned `PatchWarden-v*.zip` artifact.
42
+
43
+ ## Compatibility Launchers
44
+
45
+ Compatibility `.cmd` files live under `scripts/launchers/`. User-private local
46
+ launchers belong under `.local/` and must stay out of Git and release packages.
47
+
@@ -12,8 +12,8 @@ const allowedLegacyFiles = new Set([
12
12
  "docs/release-v0.3.0.md",
13
13
  "docs/release-v0.4.0.md",
14
14
  "docs/release-v0.6.0.md",
15
- "scripts/brand-check.js",
16
- "scripts/pack-clean.js",
15
+ "scripts/checks/brand-check.js",
16
+ "scripts/release/pack-clean.js",
17
17
  ]);
18
18
  const legacyPattern = /safe-bifrost|Safe-Bifrost|SAFE_BIFROST|SafeBifrost|safe_bifrost/;
19
19