patchwarden 0.6.0 → 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.
- package/PatchWarden-Control-Tray.cmd +11 -0
- package/PatchWarden-Control.cmd +6 -0
- package/PatchWarden-Desktop.cmd +5 -0
- package/PatchWarden.cmd +1 -1
- package/README.en.md +106 -18
- package/README.md +30 -19
- package/Restart-PatchWarden-Control.cmd +6 -0
- package/Stop-PatchWarden.cmd +11 -0
- package/dist/controlCenter.d.ts +14 -0
- package/dist/controlCenter.js +2002 -0
- package/dist/doctor.js +4 -4
- package/dist/logging.d.ts +52 -0
- package/dist/logging.js +123 -0
- package/dist/runner/changeCapture.d.ts +41 -0
- package/dist/runner/changeCapture.js +171 -1
- package/dist/runner/runTask.js +204 -24
- package/dist/smoke-test.js +8 -8
- package/dist/test/unit/android-doctor.test.d.ts +1 -0
- package/dist/test/unit/android-doctor.test.js +118 -0
- package/dist/test/unit/chinese-path.test.d.ts +1 -0
- package/dist/test/unit/chinese-path.test.js +91 -0
- package/dist/test/unit/command-guard.test.d.ts +1 -0
- package/dist/test/unit/command-guard.test.js +160 -0
- package/dist/test/unit/direct-guards.test.d.ts +1 -0
- package/dist/test/unit/direct-guards.test.js +213 -0
- package/dist/test/unit/logging.test.d.ts +1 -0
- package/dist/test/unit/logging.test.js +275 -0
- package/dist/test/unit/path-guard.test.d.ts +1 -0
- package/dist/test/unit/path-guard.test.js +109 -0
- package/dist/test/unit/safe-status.test.d.ts +1 -0
- package/dist/test/unit/safe-status.test.js +165 -0
- package/dist/test/unit/sensitive-guard.test.d.ts +1 -0
- package/dist/test/unit/sensitive-guard.test.js +104 -0
- package/dist/test/unit/sync-file.test.d.ts +1 -0
- package/dist/test/unit/sync-file.test.js +154 -0
- package/dist/test/unit/watcher-status.test.d.ts +1 -0
- package/dist/test/unit/watcher-status.test.js +169 -0
- package/dist/tools/androidDoctor.d.ts +38 -0
- package/dist/tools/androidDoctor.js +391 -0
- package/dist/tools/auditTask.js +11 -5
- package/dist/tools/getTaskSummary.d.ts +3 -0
- package/dist/tools/getTaskSummary.js +15 -1
- package/dist/tools/healthCheck.d.ts +5 -0
- package/dist/tools/healthCheck.js +21 -0
- package/dist/tools/registry.js +53 -0
- package/dist/tools/safeStatus.d.ts +19 -0
- package/dist/tools/safeStatus.js +72 -0
- package/dist/tools/syncFile.d.ts +18 -0
- package/dist/tools/syncFile.js +65 -0
- package/dist/tools/taskOutputs.d.ts +2 -2
- package/dist/tools/toolCatalog.d.ts +2 -2
- package/dist/tools/toolCatalog.js +2 -0
- package/dist/version.d.ts +2 -2
- package/dist/version.js +2 -2
- package/dist/watcherStatus.d.ts +1 -0
- package/dist/watcherStatus.js +96 -4
- package/docs/control-center/README.md +33 -0
- package/docs/control-center/control-center-daily-driver.md +211 -0
- package/docs/control-center/control-center-mvp.md +205 -0
- package/docs/control-center/control-center-phase2.md +159 -0
- package/docs/demo.md +3 -0
- package/docs/performance-notes.md +55 -0
- package/docs/release-v0.6.1.md +75 -0
- package/docs/release-v0.6.4.md +45 -0
- package/examples/openai-tunnel/README.md +5 -5
- package/examples/openai-tunnel/tunnel-client.example.yaml +3 -3
- package/package.json +23 -14
- package/scripts/README.md +47 -0
- package/scripts/{brand-check.js → checks/brand-check.js} +2 -2
- package/scripts/checks/control-center-smoke.js +1098 -0
- package/scripts/{control-smoke.js → checks/control-smoke.js} +17 -3
- package/scripts/{doctor-smoke.js → checks/doctor-smoke.js} +1 -1
- package/scripts/{http-mcp-smoke.js → checks/http-mcp-smoke.js} +12 -4
- package/scripts/{lifecycle-smoke.js → checks/lifecycle-smoke.js} +347 -13
- package/scripts/{mcp-manifest-check.js → checks/mcp-manifest-check.js} +32 -9
- package/scripts/{mcp-smoke.js → checks/mcp-smoke.js} +14 -9
- package/scripts/{package-manifest-check.js → checks/package-manifest-check.js} +2 -1
- package/scripts/{tunnel-supervisor-smoke.js → checks/tunnel-supervisor-smoke.js} +2 -2
- package/scripts/checks/unit-tests.js +36 -0
- package/scripts/{watcher-supervisor-smoke.js → checks/watcher-supervisor-smoke.js} +11 -5
- package/scripts/control/control-center-tray.ps1 +281 -0
- package/scripts/{get-patchwarden-health.ps1 → control/get-patchwarden-health.ps1} +3 -3
- package/scripts/{manage-patchwarden.ps1 → control/manage-patchwarden.ps1} +30 -4
- package/scripts/control/restart-control-center.ps1 +173 -0
- package/scripts/{restart-patchwarden.ps1 → control/restart-patchwarden.ps1} +1 -1
- package/scripts/control/start-control-center.ps1 +263 -0
- package/scripts/{start-patchwarden-tunnel.ps1 → control/start-patchwarden-tunnel.ps1} +48 -6
- package/scripts/control/stop-patchwarden.ps1 +114 -0
- package/scripts/launchers/Check-PatchWarden-Health.cmd +1 -1
- package/scripts/launchers/Reset-PatchWarden-Tunnel-Key.cmd +1 -1
- package/scripts/launchers/Restart-PatchWarden.cmd +1 -1
- package/scripts/launchers/Start-PatchWarden-Direct-Tunnel.cmd +1 -1
- package/scripts/launchers/Start-PatchWarden-Tunnel.cmd +1 -1
- package/scripts/{patchwarden-mcp-direct.cmd → mcp/patchwarden-mcp-direct.cmd} +1 -1
- package/scripts/{patchwarden-mcp-stdio.cmd → mcp/patchwarden-mcp-stdio.cmd} +1 -1
- package/scripts/release/pack-clean.js +305 -0
- package/src/controlCenter.ts +2152 -0
- package/src/doctor.ts +5 -5
- package/src/logging.ts +152 -0
- package/src/runner/changeCapture.ts +212 -1
- package/src/runner/runTask.ts +220 -22
- package/src/smoke-test.ts +5 -5
- package/src/test/unit/android-doctor.test.ts +158 -0
- package/src/test/unit/chinese-path.test.ts +106 -0
- package/src/test/unit/command-guard.test.ts +221 -0
- package/src/test/unit/direct-guards.test.ts +297 -0
- package/src/test/unit/logging.test.ts +325 -0
- package/src/test/unit/path-guard.test.ts +150 -0
- package/src/test/unit/safe-status.test.ts +187 -0
- package/src/test/unit/sensitive-guard.test.ts +124 -0
- package/src/test/unit/sync-file.test.ts +231 -0
- package/src/test/unit/watcher-status.test.ts +190 -0
- package/src/tools/androidDoctor.ts +424 -0
- package/src/tools/auditTask.ts +11 -5
- package/src/tools/getTaskSummary.ts +22 -1
- package/src/tools/healthCheck.ts +22 -0
- package/src/tools/registry.ts +63 -0
- package/src/tools/safeStatus.ts +96 -0
- package/src/tools/syncFile.ts +122 -0
- package/src/tools/toolCatalog.ts +2 -0
- package/src/version.ts +2 -2
- package/src/watcherStatus.ts +101 -4
- package/ui/colors_and_type.css +141 -0
- package/ui/pages/audit.html +743 -0
- package/ui/pages/dashboard.html +1154 -0
- package/ui/pages/direct-sessions.html +652 -0
- package/ui/pages/logs.html +502 -0
- package/ui/pages/task-detail.html +1229 -0
- package/ui/pages/tasks.html +702 -0
- package/ui/pages/workspace.html +947 -0
- package/ui/partials/project-shell.html +362 -0
- package/ui/vendor/lucide.js +12 -0
- package/ui/vendor/tailwindcss-browser.js +947 -0
- package/scripts/pack-clean.js +0 -141
package/scripts/pack-clean.js
DELETED
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
cpSync,
|
|
4
|
-
existsSync,
|
|
5
|
-
mkdirSync,
|
|
6
|
-
readdirSync,
|
|
7
|
-
rmSync,
|
|
8
|
-
statSync,
|
|
9
|
-
} from "node:fs";
|
|
10
|
-
import { execFileSync } from "node:child_process";
|
|
11
|
-
import { join, relative, resolve } from "node:path";
|
|
12
|
-
import { fileURLToPath } from "node:url";
|
|
13
|
-
|
|
14
|
-
const scriptDir = resolve(fileURLToPath(new URL(".", import.meta.url)));
|
|
15
|
-
const root = resolve(scriptDir, "..");
|
|
16
|
-
const releaseDir = resolve(root, "release");
|
|
17
|
-
const archivePath = resolve(root, "patchwarden-release.tar.gz");
|
|
18
|
-
|
|
19
|
-
const include = [
|
|
20
|
-
"dist",
|
|
21
|
-
"docs",
|
|
22
|
-
"examples",
|
|
23
|
-
"scripts",
|
|
24
|
-
"src",
|
|
25
|
-
"PatchWarden.cmd",
|
|
26
|
-
".gitignore",
|
|
27
|
-
"LICENSE",
|
|
28
|
-
"README.md",
|
|
29
|
-
"package-lock.json",
|
|
30
|
-
"package.json",
|
|
31
|
-
"tsconfig.json",
|
|
32
|
-
];
|
|
33
|
-
|
|
34
|
-
const forbidden = [
|
|
35
|
-
/(^|[\\/])node_modules([\\/]|$)/,
|
|
36
|
-
/(^|[\\/])\.patchwarden([\\/]|$)/,
|
|
37
|
-
/(^|[\\/])\.safe-bifrost([\\/]|$)/,
|
|
38
|
-
/(^|[\\/])patchwarden\.config\.json$/,
|
|
39
|
-
/(^|[\\/])safe-bifrost\.config\.json$/,
|
|
40
|
-
/\.local\.(cmd|ps1)$/i,
|
|
41
|
-
/\.dpapi$/i,
|
|
42
|
-
/(^|[\\/])\.env$/,
|
|
43
|
-
/\.log$/,
|
|
44
|
-
/^docs[\\/]optimization-proposal\.md$/i,
|
|
45
|
-
/(^|[\\/])kill-patchwarden\.(cmd|ps1)$/i,
|
|
46
|
-
];
|
|
47
|
-
|
|
48
|
-
console.log("[pack-clean] Preparing clean release directory...");
|
|
49
|
-
rmSync(releaseDir, { recursive: true, force: true });
|
|
50
|
-
rmSync(archivePath, { force: true });
|
|
51
|
-
mkdirSync(releaseDir, { recursive: true });
|
|
52
|
-
|
|
53
|
-
for (const item of include) {
|
|
54
|
-
const source = resolve(root, item);
|
|
55
|
-
const target = resolve(releaseDir, item);
|
|
56
|
-
if (!existsSync(source)) {
|
|
57
|
-
console.log(` skip missing: ${item}`);
|
|
58
|
-
continue;
|
|
59
|
-
}
|
|
60
|
-
cpSync(source, target, {
|
|
61
|
-
recursive: true,
|
|
62
|
-
filter(sourcePath) {
|
|
63
|
-
const rel = toPosix(relative(root, sourcePath));
|
|
64
|
-
return !isForbidden(rel);
|
|
65
|
-
},
|
|
66
|
-
});
|
|
67
|
-
console.log(` copied: ${item}`);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
const releaseFiles = listFiles(releaseDir);
|
|
71
|
-
const badReleaseEntries = releaseFiles.filter((file) =>
|
|
72
|
-
isForbidden(toPosix(relative(releaseDir, file)))
|
|
73
|
-
);
|
|
74
|
-
if (badReleaseEntries.length > 0) {
|
|
75
|
-
console.error("[pack-clean] Forbidden files in release directory:");
|
|
76
|
-
for (const file of badReleaseEntries) {
|
|
77
|
-
console.error(` ${relative(releaseDir, file)}`);
|
|
78
|
-
}
|
|
79
|
-
process.exit(1);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
console.log("[pack-clean] Creating tar.gz archive...");
|
|
83
|
-
|
|
84
|
-
// Convert Windows paths to WSL/Linux paths when tar is a Unix binary
|
|
85
|
-
function toTarPath(p) {
|
|
86
|
-
if (process.platform === "win32") {
|
|
87
|
-
return p;
|
|
88
|
-
}
|
|
89
|
-
return p.replace(/^([A-Za-z]):/, (_, d) => `/${d.toLowerCase()}`).replace(/\\/g, "/");
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
const tarArchivePath = toTarPath(archivePath);
|
|
93
|
-
const tarReleaseDir = toTarPath(releaseDir);
|
|
94
|
-
|
|
95
|
-
execFileSync("tar", ["-czf", tarArchivePath, "-C", tarReleaseDir, "."], {
|
|
96
|
-
stdio: "inherit",
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
const archiveEntries = execFileSync("tar", ["-tzf", tarArchivePath], {
|
|
100
|
-
encoding: "utf-8",
|
|
101
|
-
})
|
|
102
|
-
.split(/\r?\n/)
|
|
103
|
-
.filter(Boolean)
|
|
104
|
-
.map((entry) => toPosix(entry.replace(/^\.\//, "")));
|
|
105
|
-
|
|
106
|
-
const badArchiveEntries = archiveEntries.filter(isForbidden);
|
|
107
|
-
if (badArchiveEntries.length > 0) {
|
|
108
|
-
console.error("[pack-clean] Forbidden files in archive:");
|
|
109
|
-
for (const entry of badArchiveEntries) {
|
|
110
|
-
console.error(` ${entry}`);
|
|
111
|
-
}
|
|
112
|
-
rmSync(archivePath, { force: true });
|
|
113
|
-
process.exit(1);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
const sizeKb = (statSync(archivePath).size / 1024).toFixed(1);
|
|
117
|
-
console.log(`[pack-clean] Release directory: ${releaseFiles.length} files`);
|
|
118
|
-
console.log(`[pack-clean] Archive: ${archivePath} (${sizeKb} KB)`);
|
|
119
|
-
console.log("[pack-clean] OK");
|
|
120
|
-
|
|
121
|
-
function listFiles(dir) {
|
|
122
|
-
const entries = [];
|
|
123
|
-
for (const name of readdirSync(dir)) {
|
|
124
|
-
const fullPath = join(dir, name);
|
|
125
|
-
const stat = statSync(fullPath);
|
|
126
|
-
if (stat.isDirectory()) {
|
|
127
|
-
entries.push(...listFiles(fullPath));
|
|
128
|
-
} else {
|
|
129
|
-
entries.push(fullPath);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
return entries;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
function isForbidden(value) {
|
|
136
|
-
return forbidden.some((pattern) => pattern.test(value));
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
function toPosix(value) {
|
|
140
|
-
return value.replace(/\\/g, "/");
|
|
141
|
-
}
|