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
package/src/doctor.ts CHANGED
@@ -235,8 +235,8 @@ check(
235
235
  const packageJson = JSON.parse(readFileSync(resolve(process.cwd(), "package.json"), "utf-8"));
236
236
  check("Server version matches package.json", packageJson.version === PATCHWARDEN_VERSION,
237
237
  `${PATCHWARDEN_VERSION} vs ${packageJson.version}`);
238
- check("Manifest preflight script exists", existsSync(resolve(process.cwd(), "scripts/mcp-manifest-check.js")),
239
- "scripts/mcp-manifest-check.js");
238
+ check("Manifest preflight script exists", existsSync(resolve(process.cwd(), "scripts/checks/mcp-manifest-check.js")),
239
+ "scripts/checks/mcp-manifest-check.js");
240
240
 
241
241
  const previousProfile = process.env.PATCHWARDEN_TOOL_PROFILE;
242
242
  try {
@@ -477,9 +477,9 @@ const tunnelFiles = [
477
477
  "examples/openai-tunnel/README.md",
478
478
  "examples/openai-tunnel/tunnel-client.example.yaml",
479
479
  "examples/openai-tunnel/chatgpt-test-prompt.md",
480
- "scripts/patchwarden-mcp-direct.cmd",
480
+ "scripts/mcp/patchwarden-mcp-direct.cmd",
481
481
  "PatchWarden.cmd",
482
- "scripts/manage-patchwarden.ps1",
482
+ "scripts/control/manage-patchwarden.ps1",
483
483
  "scripts/launchers/Start-PatchWarden-Direct-Tunnel.cmd",
484
484
  ];
485
485
  for (const tf of tunnelFiles) {
package/src/version.ts CHANGED
@@ -1,2 +1,2 @@
1
- export const PATCHWARDEN_VERSION = "0.6.1";
1
+ export const PATCHWARDEN_VERSION = "0.6.4";
2
2
  export const TOOL_SCHEMA_EPOCH = "2026-06-24-v7";
@@ -0,0 +1,141 @@
1
+ /* PatchWarden Brand CSS — Dark Security Theme (default) + Light Mode */
2
+ /* Prefix: pw */
3
+
4
+ :root {
5
+ /* ── Primary Palette (Dark — default) ── */
6
+ --pw-bg: #0a0e14;
7
+ --pw-bg-elevated: #111820;
8
+ --pw-bg-surface: #161d27;
9
+ --pw-bg-hover: #1c2533;
10
+ --pw-bg-active: #222d3d;
11
+ --pw-border: #1e2a3a;
12
+ --pw-border-subtle: #172030;
13
+ --pw-border-focus: #2dd4a8;
14
+
15
+ /* ── Text ── */
16
+ --pw-text-primary: #e8edf4;
17
+ --pw-text-secondary: #8b99ad;
18
+ --pw-text-tertiary: #5a6a80;
19
+ --pw-text-inverse: #0a0e14;
20
+ --pw-text-accent: #2dd4a8;
21
+
22
+ /* ── Brand Accent — Security Green ── */
23
+ --pw-accent: #2dd4a8;
24
+ --pw-accent-hover: #34eabc;
25
+ --pw-accent-muted: rgba(45, 212, 168, 0.12);
26
+ --pw-accent-subtle: rgba(45, 212, 168, 0.06);
27
+
28
+ /* ── State Colors ── */
29
+ --pw-state-success: #22c55e;
30
+ --pw-state-success-bg: rgba(34, 197, 94, 0.1);
31
+ --pw-state-warning: #f59e0b;
32
+ --pw-state-warning-bg: rgba(245, 158, 11, 0.1);
33
+ --pw-state-error: #ef4444;
34
+ --pw-state-error-bg: rgba(239, 68, 68, 0.1);
35
+ --pw-state-info: #3b82f6;
36
+ --pw-state-info-bg: rgba(59, 130, 246, 0.1);
37
+
38
+ /* ── Radius ── */
39
+ --pw-radius-sm: 4px;
40
+ --pw-radius-md: 8px;
41
+ --pw-radius-lg: 12px;
42
+ --pw-radius-full: 9999px;
43
+
44
+ /* ── Shadows — static surfaces use border only; floating layers use subtle shadow ── */
45
+ --pw-shadow-float: 0 8px 32px rgba(0, 0, 0, 0.4);
46
+ --pw-shadow-modal: 0 16px 48px rgba(0, 0, 0, 0.5);
47
+
48
+ /* ── Typography ── */
49
+ --pw-font-sans: 'Inter', 'Segoe UI', system-ui, -apple-system, sans-serif;
50
+ --pw-font-mono: 'JetBrains Mono', 'Cascadia Code', 'Consolas', monospace;
51
+
52
+ --pw-text-xs: 0.75rem;
53
+ --pw-text-sm: 0.8125rem;
54
+ --pw-text-base: 0.875rem;
55
+ --pw-text-lg: 1rem;
56
+ --pw-text-xl: 1.25rem;
57
+ --pw-text-2xl: 1.5rem;
58
+ --pw-text-3xl: 2rem;
59
+
60
+ --pw-leading-tight: 1.25;
61
+ --pw-leading-normal: 1.5;
62
+ --pw-leading-relaxed: 1.625;
63
+
64
+ --pw-weight-normal: 400;
65
+ --pw-weight-medium: 500;
66
+ --pw-weight-semibold: 600;
67
+ --pw-weight-bold: 700;
68
+
69
+ /* ── Spacing ── */
70
+ --pw-space-1: 4px;
71
+ --pw-space-2: 8px;
72
+ --pw-space-3: 12px;
73
+ --pw-space-4: 16px;
74
+ --pw-space-5: 20px;
75
+ --pw-space-6: 24px;
76
+ --pw-space-8: 32px;
77
+ --pw-space-10: 40px;
78
+ --pw-space-12: 48px;
79
+
80
+ /* ── Transitions ── */
81
+ --pw-transition-fast: 150ms ease;
82
+ --pw-transition-base: 200ms ease;
83
+ --pw-transition-slow: 300ms ease;
84
+
85
+ /* ── Code block backgrounds ── */
86
+ --pw-code-bg: #0d1117;
87
+ --pw-code-add-bg: rgba(34, 197, 94, 0.1);
88
+ --pw-code-add-text: #3fb950;
89
+ --pw-code-remove-bg: rgba(239, 68, 68, 0.1);
90
+ --pw-code-remove-text: #f85149;
91
+ --pw-code-line-num: #5a6a80;
92
+ }
93
+
94
+ /* ── Dark mode (explicit, same as :root defaults) ── */
95
+ html.dark {
96
+ --pw-bg: #0a0e14;
97
+ --pw-bg-elevated: #111820;
98
+ --pw-bg-surface: #161d27;
99
+ --pw-bg-hover: #1c2533;
100
+ --pw-bg-active: #222d3d;
101
+ --pw-border: #1e2a3a;
102
+ --pw-border-subtle: #172030;
103
+ --pw-text-primary: #e8edf4;
104
+ --pw-text-secondary: #8b99ad;
105
+ --pw-text-tertiary: #5a6a80;
106
+ --pw-code-bg: #0d1117;
107
+ --pw-code-add-bg: rgba(34, 197, 94, 0.1);
108
+ --pw-code-add-text: #3fb950;
109
+ --pw-code-remove-bg: rgba(239, 68, 68, 0.1);
110
+ --pw-code-remove-text: #f85149;
111
+ --pw-code-line-num: #5a6a80;
112
+ }
113
+
114
+ /* ── Light mode ── */
115
+ html.light {
116
+ --pw-bg: #f8fafb;
117
+ --pw-bg-elevated: #ffffff;
118
+ --pw-bg-surface: #f1f5f7;
119
+ --pw-bg-hover: #e8eef2;
120
+ --pw-bg-active: #dde5eb;
121
+ --pw-border: #d1d9e0;
122
+ --pw-border-subtle: #e2e8ee;
123
+ --pw-border-focus: #1a9e7a;
124
+ --pw-text-primary: #1a2332;
125
+ --pw-text-secondary: #5a6a80;
126
+ --pw-text-tertiary: #8b99ad;
127
+ --pw-text-inverse: #ffffff;
128
+ --pw-text-accent: #1a9e7a;
129
+ --pw-accent: #1a9e7a;
130
+ --pw-accent-hover: #158c6c;
131
+ --pw-accent-muted: rgba(26, 158, 122, 0.1);
132
+ --pw-accent-subtle: rgba(26, 158, 122, 0.05);
133
+ --pw-shadow-float: 0 8px 32px rgba(0, 0, 0, 0.08);
134
+ --pw-shadow-modal: 0 16px 48px rgba(0, 0, 0, 0.12);
135
+ --pw-code-bg: #f6f8fa;
136
+ --pw-code-add-bg: rgba(34, 197, 94, 0.08);
137
+ --pw-code-add-text: #1a7f37;
138
+ --pw-code-remove-bg: rgba(239, 68, 68, 0.08);
139
+ --pw-code-remove-text: #cf222e;
140
+ --pw-code-line-num: #8b99ad;
141
+ }