patchwarden 1.5.1 → 1.6.1
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.cmd +32 -2
- package/README.en.md +152 -25
- package/README.md +120 -23
- package/dist/assessments/agentAssessor.js +21 -12
- package/dist/assessments/assessmentStore.js +42 -34
- package/dist/config.d.ts +15 -0
- package/dist/config.js +66 -13
- package/dist/control/fileManager.d.ts +2 -0
- package/dist/control/fileManager.js +39 -0
- package/dist/control/middleware/auth.d.ts +6 -0
- package/dist/control/middleware/auth.js +14 -5
- package/dist/control/middleware/static.js +16 -3
- package/dist/control/routeTable.d.ts +24 -0
- package/dist/control/routeTable.js +263 -0
- package/dist/control/routes/audit.js +17 -7
- package/dist/control/routes/evidence.js +1 -1
- package/dist/control/routes/lineage.js +1 -1
- package/dist/control/routes/process.d.ts +7 -0
- package/dist/control/routes/process.js +329 -42
- package/dist/control/routes/sessions.d.ts +9 -1
- package/dist/control/routes/sessions.js +84 -21
- package/dist/control/routes/status.d.ts +46 -1
- package/dist/control/routes/status.js +72 -15
- package/dist/control/routes/taskActions.js +24 -60
- package/dist/control/routes/tasks.d.ts +4 -0
- package/dist/control/routes/tasks.js +61 -62
- package/dist/control/routes/workspace.js +50 -23
- package/dist/control/runtime.d.ts +3 -2
- package/dist/control/runtime.js +63 -30
- package/dist/control/server.js +36 -365
- package/dist/control/shared.d.ts +25 -1
- package/dist/control/shared.js +64 -11
- package/dist/direct/directAudit.js +234 -225
- package/dist/direct/directGuards.d.ts +2 -1
- package/dist/direct/directGuards.js +42 -29
- package/dist/direct/directPatch.d.ts +6 -1
- package/dist/direct/directPatch.js +55 -8
- package/dist/direct/directSessionStore.d.ts +16 -6
- package/dist/direct/directSessionStore.js +127 -35
- package/dist/direct/directVerification.js +8 -16
- package/dist/doctor.js +62 -52
- package/dist/goal/acceptanceEngine.d.ts +1 -1
- package/dist/goal/goalProgress.js +75 -69
- package/dist/goal/goalReport.js +5 -12
- package/dist/goal/goalStatus.d.ts +2 -0
- package/dist/goal/goalStatus.js +10 -3
- package/dist/goal/goalStore.d.ts +9 -2
- package/dist/goal/goalStore.js +152 -45
- package/dist/goal/handoffExport.js +6 -6
- package/dist/goal/specKitImport.js +97 -96
- package/dist/goal/subgoalSync.js +11 -9
- package/dist/goal/worktreeManager.d.ts +2 -0
- package/dist/goal/worktreeManager.js +209 -136
- package/dist/httpServer.js +111 -32
- package/dist/logging.js +5 -3
- package/dist/policy/projectPolicy.js +5 -2
- package/dist/release/releaseGate.d.ts +1 -1
- package/dist/release/releaseGate.js +78 -25
- package/dist/runner/agentInvocation.d.ts +14 -0
- package/dist/runner/agentInvocation.js +96 -4
- package/dist/runner/changeCapture.d.ts +13 -5
- package/dist/runner/changeCapture.js +243 -61
- package/dist/runner/postTaskCleanup.js +48 -19
- package/dist/runner/processSecurity.d.ts +56 -0
- package/dist/runner/processSecurity.js +373 -0
- package/dist/runner/runTask.d.ts +1 -1
- package/dist/runner/runTask.js +115 -87
- package/dist/runner/simpleProcess.d.ts +3 -0
- package/dist/runner/simpleProcess.js +50 -36
- package/dist/{taskProgress.d.ts → runner/taskProgress.d.ts} +1 -1
- package/dist/{taskProgress.js → runner/taskProgress.js} +2 -2
- package/dist/{taskRuntime.d.ts → runner/taskRuntime.d.ts} +1 -1
- package/dist/{taskRuntime.js → runner/taskRuntime.js} +3 -2
- package/dist/runner/taskStatusStore.d.ts +11 -0
- package/dist/runner/taskStatusStore.js +24 -0
- package/dist/runner/watch.d.ts +14 -1
- package/dist/runner/watch.js +256 -48
- package/dist/security/contentRedaction.js +2 -2
- package/dist/security/discoveryTokenStore.d.ts +3 -2
- package/dist/security/discoveryTokenStore.js +17 -2
- package/dist/security/loopbackHost.d.ts +2 -0
- package/dist/security/loopbackHost.js +16 -0
- package/dist/security/pathGuard.js +32 -17
- package/dist/security/planGuard.js +2 -1
- package/dist/security/runtimeGuard.js +9 -6
- package/dist/security/secretComparison.d.ts +3 -0
- package/dist/security/secretComparison.js +11 -0
- package/dist/security/sensitiveGuard.d.ts +5 -0
- package/dist/security/sensitiveGuard.js +27 -8
- package/dist/security/toolInvocationGuard.d.ts +2 -2
- package/dist/security/toolInvocationGuard.js +1 -1
- package/dist/security/workspaceRootGuard.d.ts +8 -0
- package/dist/security/workspaceRootGuard.js +47 -0
- package/dist/smoke-test.js +24 -23
- package/dist/tools/catalog/index.d.ts +4 -0
- package/dist/tools/catalog/index.js +4 -0
- package/dist/tools/{toolCatalog.js → catalog/toolCatalog.js} +3 -12
- package/dist/tools/{toolRegistry.d.ts → catalog/toolRegistry.d.ts} +3 -3
- package/dist/tools/{toolRegistry.js → catalog/toolRegistry.js} +6 -15
- package/dist/tools/definitions/toolDefs.d.ts +18 -0
- package/dist/tools/definitions/toolDefs.js +1177 -0
- package/dist/tools/{auditSession.d.ts → diagnostics/auditSession.d.ts} +1 -1
- package/dist/tools/{auditSession.js → diagnostics/auditSession.js} +2 -2
- package/dist/tools/{auditTask.d.ts → diagnostics/auditTask.d.ts} +1 -1
- package/dist/tools/{auditTask.js → diagnostics/auditTask.js} +99 -29
- package/dist/tools/{healthCheck.d.ts → diagnostics/healthCheck.d.ts} +6 -6
- package/dist/tools/{healthCheck.js → diagnostics/healthCheck.js} +7 -7
- package/dist/tools/diagnostics/index.d.ts +6 -0
- package/dist/tools/diagnostics/index.js +6 -0
- package/dist/tools/{safeStatus.d.ts → diagnostics/safeStatus.d.ts} +3 -3
- package/dist/tools/{safeStatus.js → diagnostics/safeStatus.js} +6 -6
- package/dist/tools/{safeViews.d.ts → diagnostics/safeViews.d.ts} +12 -8
- package/dist/tools/{safeViews.js → diagnostics/safeViews.js} +23 -13
- package/dist/tools/{schemaDriftCheck.d.ts → diagnostics/schemaDriftCheck.d.ts} +1 -1
- package/dist/tools/{schemaDriftCheck.js → diagnostics/schemaDriftCheck.js} +2 -2
- package/dist/tools/{createDirectSession.js → direct/createDirectSession.js} +6 -6
- package/dist/tools/{finalizeDirectSession.d.ts → direct/finalizeDirectSession.d.ts} +1 -1
- package/dist/tools/direct/finalizeDirectSession.js +86 -0
- package/dist/tools/direct/index.d.ts +3 -0
- package/dist/tools/direct/index.js +3 -0
- package/dist/tools/{runDirectVerificationBundle.js → direct/runDirectVerificationBundle.js} +2 -2
- package/dist/tools/{discoverTools.d.ts → discovery/discoverTools.d.ts} +2 -2
- package/dist/tools/{discoverTools.js → discovery/discoverTools.js} +5 -5
- package/dist/tools/{explainTool.d.ts → discovery/explainTool.d.ts} +2 -2
- package/dist/tools/{explainTool.js → discovery/explainTool.js} +2 -2
- package/dist/tools/discovery/index.d.ts +3 -0
- package/dist/tools/discovery/index.js +3 -0
- package/dist/tools/{invokeDiscoveredTool.d.ts → discovery/invokeDiscoveredTool.d.ts} +2 -2
- package/dist/tools/{invokeDiscoveredTool.js → discovery/invokeDiscoveredTool.js} +5 -5
- package/dist/tools/dispatch/coreDispatch.js +32 -31
- package/dist/tools/dispatch/diagnosticDispatch.d.ts +3 -5
- package/dist/tools/dispatch/diagnosticDispatch.js +70 -68
- package/dist/tools/dispatch/directDispatch.js +11 -10
- package/dist/tools/dispatch/goalDispatch.js +5 -4
- package/dist/tools/dispatch/releaseDispatch.js +3 -2
- package/dist/tools/dispatch/validation.d.ts +7 -0
- package/dist/tools/dispatch/validation.js +71 -0
- package/dist/tools/{getPlan.js → goals/getPlan.js} +4 -4
- package/dist/tools/{goalSubgoalTask.d.ts → goals/goalSubgoalTask.d.ts} +1 -1
- package/dist/tools/goals/goalSubgoalTask.js +118 -0
- package/dist/tools/goals/index.d.ts +3 -0
- package/dist/tools/goals/index.js +3 -0
- package/dist/tools/{savePlan.js → goals/savePlan.js} +28 -8
- package/dist/tools/registry.d.ts +7 -11
- package/dist/tools/registry.js +17 -1178
- package/dist/tools/{checkReleaseGate.d.ts → release/checkReleaseGate.d.ts} +1 -1
- package/dist/tools/{checkReleaseGate.js → release/checkReleaseGate.js} +3 -3
- package/dist/tools/release/index.d.ts +2 -0
- package/dist/tools/release/index.js +2 -0
- package/dist/tools/{releaseMode.d.ts → release/releaseMode.d.ts} +2 -2
- package/dist/tools/{releaseMode.js → release/releaseMode.js} +46 -26
- package/dist/tools/tasks/cancelTask.d.ts +11 -0
- package/dist/tools/tasks/cancelTask.js +85 -0
- package/dist/tools/{createTask.d.ts → tasks/createTask.d.ts} +10 -2
- package/dist/tools/{createTask.js → tasks/createTask.js} +42 -27
- package/dist/tools/{diagnoseTask.d.ts → tasks/diagnoseTask.d.ts} +1 -1
- package/dist/tools/{diagnoseTask.js → tasks/diagnoseTask.js} +8 -8
- package/dist/tools/{evidencePack.js → tasks/evidencePack.js} +34 -22
- package/dist/tools/{getTaskFile.js → tasks/getTaskFile.js} +4 -4
- package/dist/tools/{getTaskStatus.d.ts → tasks/getTaskStatus.d.ts} +6 -1
- package/dist/tools/{getTaskStatus.js → tasks/getTaskStatus.js} +5 -5
- package/dist/tools/{getTaskStdoutTail.js → tasks/getTaskStdoutTail.js} +13 -11
- package/dist/tools/{getTaskSummary.js → tasks/getTaskSummary.js} +33 -26
- package/dist/tools/tasks/index.d.ts +18 -0
- package/dist/tools/tasks/index.js +18 -0
- package/dist/tools/tasks/killTask.d.ts +1 -0
- package/dist/tools/{listTasks.d.ts → tasks/listTasks.d.ts} +1 -1
- package/dist/tools/{listTasks.js → tasks/listTasks.js} +3 -3
- package/dist/tools/{reconcileTasks.d.ts → tasks/reconcileTasks.d.ts} +1 -1
- package/dist/tools/{reconcileTasks.js → tasks/reconcileTasks.js} +64 -66
- package/dist/tools/tasks/retryTask.js +60 -0
- package/dist/tools/{runTaskLoop.d.ts → tasks/runTaskLoop.d.ts} +6 -6
- package/dist/tools/{runTaskLoop.js → tasks/runTaskLoop.js} +58 -30
- package/dist/tools/tasks/runVerification.js +38 -0
- package/dist/tools/{taskLineage.js → tasks/taskLineage.js} +8 -7
- package/dist/tools/{taskOutputs.js → tasks/taskOutputs.js} +17 -16
- package/dist/tools/{androidDoctor.js → workspace/androidDoctor.js} +16 -10
- package/dist/tools/{applyPatch.d.ts → workspace/applyPatch.d.ts} +1 -1
- package/dist/tools/workspace/applyPatch.js +53 -0
- package/dist/tools/{discardWorktree.js → workspace/discardWorktree.js} +3 -3
- package/dist/tools/workspace/index.d.ts +10 -0
- package/dist/tools/workspace/index.js +10 -0
- package/dist/tools/{listAgents.d.ts → workspace/listAgents.d.ts} +5 -0
- package/dist/tools/{listAgents.js → workspace/listAgents.js} +8 -4
- package/dist/tools/{listWorkspace.js → workspace/listWorkspace.js} +3 -3
- package/dist/tools/{mergeWorktree.js → workspace/mergeWorktree.js} +3 -3
- package/dist/tools/{readWorkspaceFile.js → workspace/readWorkspaceFile.js} +8 -8
- package/dist/tools/{recommendAgentForTask.js → workspace/recommendAgentForTask.js} +3 -3
- package/dist/tools/{searchWorkspace.js → workspace/searchWorkspace.js} +5 -5
- package/dist/tools/{syncFile.d.ts → workspace/syncFile.d.ts} +1 -1
- package/dist/tools/workspace/syncFile.js +134 -0
- package/dist/utils/atomicFile.d.ts +7 -0
- package/dist/utils/atomicFile.js +48 -0
- package/dist/utils/boundedFile.d.ts +8 -0
- package/dist/utils/boundedFile.js +93 -0
- package/dist/utils/lockedJsonFile.d.ts +15 -0
- package/dist/utils/lockedJsonFile.js +224 -0
- package/dist/utils/platform.d.ts +11 -0
- package/dist/utils/platform.js +26 -0
- package/dist/utils/stableJson.d.ts +2 -0
- package/dist/utils/stableJson.js +12 -0
- package/dist/version.d.ts +3 -2
- package/dist/version.js +3 -2
- package/dist/watcherStatus.d.ts +2 -2
- package/dist/watcherStatus.js +18 -0
- package/docs/CODE_WIKI.md +808 -143
- package/docs/architecture.md +15 -55
- package/docs/assets/patchwarden-desktop-onboarding.png +0 -0
- package/docs/control-center/README.md +4 -4
- package/docs/dashboard-overview.md +4 -4
- package/docs/desktop-app.md +175 -0
- package/docs/evidence-pack-schema.md +3 -3
- package/docs/open-source-application.md +17 -11
- package/docs/release-checklist.md +1 -1
- package/docs/release-evidence.md +39 -29
- package/docs/task-safe-review-workflow.md +5 -5
- package/docs/threat-model.md +19 -1
- package/examples/config.example.json +4 -2
- package/package.json +27 -10
- package/scripts/README.md +15 -6
- package/scripts/build.js +11 -0
- package/scripts/checks/brand-check.js +3 -0
- package/scripts/checks/build-output-check.js +37 -0
- package/scripts/checks/control-center-smoke.js +91 -6
- package/scripts/checks/control-smoke.js +19 -8
- package/scripts/checks/http-mcp-smoke.js +82 -4
- package/scripts/checks/lifecycle-smoke.js +10 -10
- package/scripts/checks/mcp-manifest-check.js +1 -1
- package/scripts/checks/mcp-smoke.js +27 -3
- package/scripts/checks/package-manifest-check.js +20 -7
- package/scripts/checks/unit-tests.js +3 -5
- package/scripts/checks/watcher-supervisor-smoke.js +9 -0
- package/scripts/control/get-patchwarden-health.ps1 +1 -1
- package/scripts/control/manage-patchwarden.ps1 +69 -4
- package/scripts/control/provision-patchwarden-tunnel.ps1 +127 -0
- package/scripts/control/run-background-supervisor.ps1 +41 -0
- package/scripts/control/start-patchwarden-tunnel.ps1 +126 -32
- package/{PatchWarden-Control-Tray.cmd → scripts/launchers/PatchWarden-Control-Tray.cmd} +3 -3
- package/scripts/launchers/PatchWarden-Control.cmd +6 -0
- package/{PatchWarden-Desktop.cmd → scripts/launchers/PatchWarden-Desktop.cmd} +2 -2
- package/scripts/launchers/Restart-PatchWarden-Control.cmd +6 -0
- package/{Stop-PatchWarden.cmd → scripts/launchers/Stop-PatchWarden.cmd} +2 -2
- package/scripts/lib/clean-generated-output.js +11 -0
- package/scripts/lib/file-discovery.js +12 -0
- package/scripts/release/desktop-preflight.js +211 -0
- package/scripts/release/pack-clean.js +59 -14
- package/src/assessments/agentAssessor.ts +26 -12
- package/src/assessments/assessmentStore.ts +52 -40
- package/src/config.ts +70 -13
- package/src/control/fileManager.ts +40 -0
- package/src/control/middleware/auth.ts +22 -4
- package/src/control/middleware/static.ts +16 -3
- package/src/control/routeTable.ts +301 -0
- package/src/control/routes/audit.ts +14 -6
- package/src/control/routes/evidence.ts +1 -1
- package/src/control/routes/lineage.ts +1 -1
- package/src/control/routes/process.ts +341 -40
- package/src/control/routes/sessions.ts +88 -25
- package/src/control/routes/status.ts +97 -17
- package/src/control/routes/taskActions.ts +24 -58
- package/src/control/routes/tasks.ts +66 -58
- package/src/control/routes/workspace.ts +56 -25
- package/src/control/runtime.ts +69 -33
- package/src/control/server.ts +36 -342
- package/src/control/shared.ts +77 -11
- package/src/direct/directAudit.ts +17 -9
- package/src/direct/directGuards.ts +72 -44
- package/src/direct/directPatch.ts +95 -8
- package/src/direct/directSessionStore.ts +211 -55
- package/src/direct/directVerification.ts +9 -23
- package/src/doctor.ts +73 -59
- package/src/goal/acceptanceEngine.ts +1 -1
- package/src/goal/goalProgress.ts +17 -13
- package/src/goal/goalReport.ts +5 -13
- package/src/goal/goalStatus.ts +19 -3
- package/src/goal/goalStore.ts +241 -54
- package/src/goal/handoffExport.ts +6 -6
- package/src/goal/specKitImport.ts +12 -12
- package/src/goal/subgoalSync.ts +11 -8
- package/src/goal/worktreeManager.ts +139 -22
- package/src/httpServer.ts +113 -30
- package/src/logging.ts +10 -3
- package/src/policy/projectPolicy.ts +5 -2
- package/src/release/releaseGate.ts +74 -27
- package/src/runner/agentInvocation.ts +126 -4
- package/src/runner/changeCapture.ts +291 -57
- package/src/runner/postTaskCleanup.ts +41 -17
- package/src/runner/processSecurity.ts +433 -0
- package/src/runner/runTask.ts +138 -91
- package/src/runner/simpleProcess.ts +66 -31
- package/src/{taskProgress.ts → runner/taskProgress.ts} +3 -3
- package/src/{taskRuntime.ts → runner/taskRuntime.ts} +4 -3
- package/src/runner/taskStatusStore.ts +54 -0
- package/src/runner/watch.ts +281 -51
- package/src/security/contentRedaction.ts +2 -2
- package/src/security/discoveryTokenStore.ts +18 -4
- package/src/security/loopbackHost.ts +19 -0
- package/src/security/pathGuard.ts +35 -16
- package/src/security/planGuard.ts +2 -1
- package/src/security/runtimeGuard.ts +9 -6
- package/src/security/secretComparison.ts +13 -0
- package/src/security/sensitiveGuard.ts +27 -8
- package/src/security/toolInvocationGuard.ts +2 -2
- package/src/security/workspaceRootGuard.ts +53 -0
- package/src/smoke-test.ts +25 -24
- package/src/tools/catalog/index.ts +4 -0
- package/src/tools/{toolCatalog.ts → catalog/toolCatalog.ts} +3 -12
- package/src/tools/{toolRegistry.ts → catalog/toolRegistry.ts} +7 -16
- package/src/tools/definitions/toolDefs.ts +1264 -0
- package/src/tools/{auditSession.ts → diagnostics/auditSession.ts} +2 -2
- package/src/tools/{auditTask.ts → diagnostics/auditTask.ts} +99 -32
- package/src/tools/{healthCheck.ts → diagnostics/healthCheck.ts} +8 -8
- package/src/tools/diagnostics/index.ts +6 -0
- package/src/tools/{safeStatus.ts → diagnostics/safeStatus.ts} +7 -7
- package/src/tools/{safeViews.ts → diagnostics/safeViews.ts} +27 -17
- package/src/tools/{schemaDriftCheck.ts → diagnostics/schemaDriftCheck.ts} +3 -3
- package/src/tools/{createDirectSession.ts → direct/createDirectSession.ts} +6 -6
- package/src/tools/{finalizeDirectSession.ts → direct/finalizeDirectSession.ts} +7 -5
- package/src/tools/direct/index.ts +3 -0
- package/src/tools/{runDirectVerificationBundle.ts → direct/runDirectVerificationBundle.ts} +2 -2
- package/src/tools/{discoverTools.ts → discovery/discoverTools.ts} +6 -6
- package/src/tools/{explainTool.ts → discovery/explainTool.ts} +3 -3
- package/src/tools/discovery/index.ts +3 -0
- package/src/tools/{invokeDiscoveredTool.ts → discovery/invokeDiscoveredTool.ts} +7 -7
- package/src/tools/dispatch/coreDispatch.ts +36 -31
- package/src/tools/dispatch/diagnosticDispatch.ts +26 -21
- package/src/tools/dispatch/directDispatch.ts +11 -10
- package/src/tools/dispatch/goalDispatch.ts +5 -4
- package/src/tools/dispatch/releaseDispatch.ts +3 -2
- package/src/tools/dispatch/validation.ts +78 -0
- package/src/tools/{getPlan.ts → goals/getPlan.ts} +4 -4
- package/src/tools/{goalSubgoalTask.ts → goals/goalSubgoalTask.ts} +41 -26
- package/src/tools/goals/index.ts +3 -0
- package/src/tools/{savePlan.ts → goals/savePlan.ts} +38 -8
- package/src/tools/registry.ts +17 -1261
- package/src/tools/{checkReleaseGate.ts → release/checkReleaseGate.ts} +3 -3
- package/src/tools/release/index.ts +2 -0
- package/src/tools/{releaseMode.ts → release/releaseMode.ts} +42 -24
- package/src/tools/tasks/cancelTask.ts +109 -0
- package/src/tools/{createTask.ts → tasks/createTask.ts} +49 -26
- package/src/tools/{diagnoseTask.ts → tasks/diagnoseTask.ts} +8 -8
- package/src/tools/{evidencePack.ts → tasks/evidencePack.ts} +36 -22
- package/src/tools/{getTaskFile.ts → tasks/getTaskFile.ts} +4 -4
- package/src/tools/{getTaskStatus.ts → tasks/getTaskStatus.ts} +7 -5
- package/src/tools/{getTaskStdoutTail.ts → tasks/getTaskStdoutTail.ts} +13 -11
- package/src/tools/{getTaskSummary.ts → tasks/getTaskSummary.ts} +44 -33
- package/src/tools/tasks/index.ts +18 -0
- package/src/tools/{listTasks.ts → tasks/listTasks.ts} +4 -4
- package/src/tools/{reconcileTasks.ts → tasks/reconcileTasks.ts} +68 -66
- package/src/tools/tasks/retryTask.ts +69 -0
- package/src/tools/{runTaskLoop.ts → tasks/runTaskLoop.ts} +69 -34
- package/src/tools/{runVerification.ts → tasks/runVerification.ts} +6 -3
- package/src/tools/{taskLineage.ts → tasks/taskLineage.ts} +8 -7
- package/src/tools/{taskOutputs.ts → tasks/taskOutputs.ts} +27 -20
- package/src/tools/{androidDoctor.ts → workspace/androidDoctor.ts} +15 -10
- package/src/tools/{applyPatch.ts → workspace/applyPatch.ts} +38 -16
- package/src/tools/{discardWorktree.ts → workspace/discardWorktree.ts} +3 -3
- package/src/tools/workspace/index.ts +10 -0
- package/src/tools/{listAgents.ts → workspace/listAgents.ts} +11 -4
- package/src/tools/{listWorkspace.ts → workspace/listWorkspace.ts} +3 -3
- package/src/tools/{mergeWorktree.ts → workspace/mergeWorktree.ts} +3 -3
- package/src/tools/{readWorkspaceFile.ts → workspace/readWorkspaceFile.ts} +8 -8
- package/src/tools/{recommendAgentForTask.ts → workspace/recommendAgentForTask.ts} +3 -3
- package/src/tools/{searchWorkspace.ts → workspace/searchWorkspace.ts} +5 -5
- package/src/tools/workspace/syncFile.ts +292 -0
- package/src/utils/atomicFile.ts +58 -0
- package/src/utils/boundedFile.ts +116 -0
- package/src/utils/lockedJsonFile.ts +251 -0
- package/src/utils/platform.ts +31 -0
- package/src/utils/stableJson.ts +12 -0
- package/src/version.ts +3 -2
- package/src/watcherStatus.ts +19 -1
- package/ui/desktop-bootstrap.js +11 -0
- package/ui/desktop-bridge.js +36 -0
- package/ui/desktop.css +160 -0
- package/ui/getting-started.js +93 -0
- package/ui/i18n.js +484 -0
- package/ui/log-parser.js +30 -0
- package/ui/pages/audit.html +12 -0
- package/ui/pages/dashboard.html +90 -147
- package/ui/pages/direct-sessions.html +123 -26
- package/ui/pages/getting-started.html +43 -0
- package/ui/pages/logs.html +105 -22
- package/ui/pages/settings.html +101 -0
- package/ui/pages/task-detail.html +12 -0
- package/ui/pages/tasks.html +54 -8
- package/ui/pages/workspace.html +38 -1
- package/ui/settings.js +245 -0
- package/PatchWarden-Control.cmd +0 -6
- package/Restart-PatchWarden-Control.cmd +0 -6
- package/dist/test/unit/acceptance-engine.test.d.ts +0 -1
- package/dist/test/unit/acceptance-engine.test.js +0 -228
- package/dist/test/unit/agent-router.test.d.ts +0 -1
- package/dist/test/unit/agent-router.test.js +0 -287
- package/dist/test/unit/android-doctor.test.d.ts +0 -1
- package/dist/test/unit/android-doctor.test.js +0 -118
- package/dist/test/unit/apply-patch.test.d.ts +0 -1
- package/dist/test/unit/apply-patch.test.js +0 -225
- package/dist/test/unit/audit-checks.test.d.ts +0 -1
- package/dist/test/unit/audit-checks.test.js +0 -350
- package/dist/test/unit/chinese-path.test.d.ts +0 -1
- package/dist/test/unit/chinese-path.test.js +0 -91
- package/dist/test/unit/command-guard.test.d.ts +0 -1
- package/dist/test/unit/command-guard.test.js +0 -160
- package/dist/test/unit/create-task.test.d.ts +0 -1
- package/dist/test/unit/create-task.test.js +0 -197
- package/dist/test/unit/diagnose-task.test.d.ts +0 -1
- package/dist/test/unit/diagnose-task.test.js +0 -457
- package/dist/test/unit/direct-guards.test.d.ts +0 -1
- package/dist/test/unit/direct-guards.test.js +0 -328
- package/dist/test/unit/discovery-token-store.test.d.ts +0 -1
- package/dist/test/unit/discovery-token-store.test.js +0 -139
- package/dist/test/unit/evidence-pack.test.d.ts +0 -1
- package/dist/test/unit/evidence-pack.test.js +0 -224
- package/dist/test/unit/get-task-status.test.d.ts +0 -1
- package/dist/test/unit/get-task-status.test.js +0 -174
- package/dist/test/unit/get-task-summary.test.d.ts +0 -1
- package/dist/test/unit/get-task-summary.test.js +0 -146
- package/dist/test/unit/goal-graph.test.d.ts +0 -1
- package/dist/test/unit/goal-graph.test.js +0 -298
- package/dist/test/unit/goal-progress.test.d.ts +0 -1
- package/dist/test/unit/goal-progress.test.js +0 -381
- package/dist/test/unit/goal-report.test.d.ts +0 -1
- package/dist/test/unit/goal-report.test.js +0 -159
- package/dist/test/unit/goal-status.test.d.ts +0 -1
- package/dist/test/unit/goal-status.test.js +0 -215
- package/dist/test/unit/goal-store.test.d.ts +0 -1
- package/dist/test/unit/goal-store.test.js +0 -253
- package/dist/test/unit/goal-subgoal-task.test.d.ts +0 -1
- package/dist/test/unit/goal-subgoal-task.test.js +0 -55
- package/dist/test/unit/goal-tools-registry.test.d.ts +0 -1
- package/dist/test/unit/goal-tools-registry.test.js +0 -192
- package/dist/test/unit/handoff-export.test.d.ts +0 -1
- package/dist/test/unit/handoff-export.test.js +0 -263
- package/dist/test/unit/invoke-discovered-tool.test.d.ts +0 -1
- package/dist/test/unit/invoke-discovered-tool.test.js +0 -167
- package/dist/test/unit/logging.test.d.ts +0 -1
- package/dist/test/unit/logging.test.js +0 -397
- package/dist/test/unit/path-guard.test.d.ts +0 -1
- package/dist/test/unit/path-guard.test.js +0 -133
- package/dist/test/unit/post-task-cleanup.test.d.ts +0 -1
- package/dist/test/unit/post-task-cleanup.test.js +0 -48
- package/dist/test/unit/project-policy-release-mode.test.d.ts +0 -1
- package/dist/test/unit/project-policy-release-mode.test.js +0 -125
- package/dist/test/unit/reconcile-tasks.test.d.ts +0 -1
- package/dist/test/unit/reconcile-tasks.test.js +0 -456
- package/dist/test/unit/release-gate.test.d.ts +0 -1
- package/dist/test/unit/release-gate.test.js +0 -242
- package/dist/test/unit/run-task-loop.test.d.ts +0 -1
- package/dist/test/unit/run-task-loop.test.js +0 -380
- package/dist/test/unit/safe-status.test.d.ts +0 -1
- package/dist/test/unit/safe-status.test.js +0 -165
- package/dist/test/unit/safe-views.test.d.ts +0 -1
- package/dist/test/unit/safe-views.test.js +0 -171
- package/dist/test/unit/schema-drift-check.test.d.ts +0 -1
- package/dist/test/unit/schema-drift-check.test.js +0 -176
- package/dist/test/unit/sensitive-guard.test.d.ts +0 -1
- package/dist/test/unit/sensitive-guard.test.js +0 -104
- package/dist/test/unit/spec-kit-import.test.d.ts +0 -1
- package/dist/test/unit/spec-kit-import.test.js +0 -341
- package/dist/test/unit/subgoal-sync.test.d.ts +0 -1
- package/dist/test/unit/subgoal-sync.test.js +0 -183
- package/dist/test/unit/sync-file.test.d.ts +0 -1
- package/dist/test/unit/sync-file.test.js +0 -154
- package/dist/test/unit/tool-invocation-guard.test.d.ts +0 -1
- package/dist/test/unit/tool-invocation-guard.test.js +0 -432
- package/dist/test/unit/tool-usage-stats.test.d.ts +0 -1
- package/dist/test/unit/tool-usage-stats.test.js +0 -300
- package/dist/test/unit/toolSearch.test.d.ts +0 -1
- package/dist/test/unit/toolSearch.test.js +0 -571
- package/dist/test/unit/wait-for-task.test.d.ts +0 -1
- package/dist/test/unit/wait-for-task.test.js +0 -144
- package/dist/test/unit/watcher-status.test.d.ts +0 -1
- package/dist/test/unit/watcher-status.test.js +0 -169
- package/dist/test/unit/worktree-manager.test.d.ts +0 -1
- package/dist/test/unit/worktree-manager.test.js +0 -176
- package/dist/tools/applyPatch.js +0 -41
- package/dist/tools/cancelTask.d.ts +0 -30
- package/dist/tools/cancelTask.js +0 -64
- package/dist/tools/finalizeDirectSession.js +0 -84
- package/dist/tools/goalSubgoalTask.js +0 -110
- package/dist/tools/killTask.d.ts +0 -15
- package/dist/tools/retryTask.js +0 -45
- package/dist/tools/runVerification.js +0 -36
- package/dist/tools/syncFile.js +0 -65
- package/docs/control-center/control-center-daily-driver.md +0 -211
- package/docs/control-center/control-center-mvp.md +0 -205
- package/docs/control-center/control-center-phase2.md +0 -159
- package/docs/execution-plan-2026-07-09.md +0 -315
- package/docs/release-v0.6.0.md +0 -71
- package/docs/release-v0.6.1.md +0 -75
- package/docs/release-v0.6.4.md +0 -45
- package/docs/roadmap-execution-and-acceptance.md +0 -365
- package/src/test/unit/acceptance-engine.test.ts +0 -261
- package/src/test/unit/agent-router.test.ts +0 -342
- package/src/test/unit/android-doctor.test.ts +0 -158
- package/src/test/unit/apply-patch.test.ts +0 -293
- package/src/test/unit/audit-checks.test.ts +0 -567
- package/src/test/unit/chinese-path.test.ts +0 -106
- package/src/test/unit/command-guard.test.ts +0 -221
- package/src/test/unit/create-task.test.ts +0 -255
- package/src/test/unit/diagnose-task.test.ts +0 -544
- package/src/test/unit/direct-guards.test.ts +0 -467
- package/src/test/unit/discovery-token-store.test.ts +0 -181
- package/src/test/unit/evidence-pack.test.ts +0 -251
- package/src/test/unit/get-task-status.test.ts +0 -203
- package/src/test/unit/get-task-summary.test.ts +0 -173
- package/src/test/unit/goal-graph.test.ts +0 -347
- package/src/test/unit/goal-progress.test.ts +0 -538
- package/src/test/unit/goal-report.test.ts +0 -189
- package/src/test/unit/goal-status.test.ts +0 -270
- package/src/test/unit/goal-store.test.ts +0 -318
- package/src/test/unit/goal-subgoal-task.test.ts +0 -72
- package/src/test/unit/goal-tools-registry.test.ts +0 -245
- package/src/test/unit/handoff-export.test.ts +0 -295
- package/src/test/unit/invoke-discovered-tool.test.ts +0 -216
- package/src/test/unit/logging.test.ts +0 -497
- package/src/test/unit/path-guard.test.ts +0 -180
- package/src/test/unit/post-task-cleanup.test.ts +0 -53
- package/src/test/unit/project-policy-release-mode.test.ts +0 -156
- package/src/test/unit/reconcile-tasks.test.ts +0 -551
- package/src/test/unit/release-gate.test.ts +0 -314
- package/src/test/unit/run-task-loop.test.ts +0 -425
- package/src/test/unit/safe-status.test.ts +0 -187
- package/src/test/unit/safe-views.test.ts +0 -184
- package/src/test/unit/schema-drift-check.test.ts +0 -260
- package/src/test/unit/sensitive-guard.test.ts +0 -124
- package/src/test/unit/spec-kit-import.test.ts +0 -429
- package/src/test/unit/subgoal-sync.test.ts +0 -236
- package/src/test/unit/sync-file.test.ts +0 -231
- package/src/test/unit/tool-invocation-guard.test.ts +0 -542
- package/src/test/unit/tool-usage-stats.test.ts +0 -384
- package/src/test/unit/toolSearch.test.ts +0 -756
- package/src/test/unit/wait-for-task.test.ts +0 -176
- package/src/test/unit/watcher-status.test.ts +0 -190
- package/src/test/unit/worktree-manager.test.ts +0 -247
- package/src/tools/cancelTask.ts +0 -70
- package/src/tools/retryTask.ts +0 -53
- package/src/tools/syncFile.ts +0 -122
- /package/dist/tools/{toolCatalog.d.ts → catalog/toolCatalog.d.ts} +0 -0
- /package/dist/tools/{toolSearch.d.ts → catalog/toolSearch.d.ts} +0 -0
- /package/dist/tools/{toolSearch.js → catalog/toolSearch.js} +0 -0
- /package/dist/tools/{toolUsageStats.d.ts → catalog/toolUsageStats.d.ts} +0 -0
- /package/dist/tools/{toolUsageStats.js → catalog/toolUsageStats.js} +0 -0
- /package/dist/tools/{createDirectSession.d.ts → direct/createDirectSession.d.ts} +0 -0
- /package/dist/tools/{runDirectVerificationBundle.d.ts → direct/runDirectVerificationBundle.d.ts} +0 -0
- /package/dist/tools/{getPlan.d.ts → goals/getPlan.d.ts} +0 -0
- /package/dist/tools/{savePlan.d.ts → goals/savePlan.d.ts} +0 -0
- /package/dist/tools/{evidencePack.d.ts → tasks/evidencePack.d.ts} +0 -0
- /package/dist/tools/{getTaskFile.d.ts → tasks/getTaskFile.d.ts} +0 -0
- /package/dist/tools/{getTaskProgress.d.ts → tasks/getTaskProgress.d.ts} +0 -0
- /package/dist/tools/{getTaskProgress.js → tasks/getTaskProgress.js} +0 -0
- /package/dist/tools/{getTaskStdoutTail.d.ts → tasks/getTaskStdoutTail.d.ts} +0 -0
- /package/dist/tools/{getTaskSummary.d.ts → tasks/getTaskSummary.d.ts} +0 -0
- /package/dist/tools/{killTask.js → tasks/killTask.js} +0 -0
- /package/dist/tools/{retryTask.d.ts → tasks/retryTask.d.ts} +0 -0
- /package/dist/tools/{runVerification.d.ts → tasks/runVerification.d.ts} +0 -0
- /package/dist/tools/{taskLineage.d.ts → tasks/taskLineage.d.ts} +0 -0
- /package/dist/tools/{taskOutputs.d.ts → tasks/taskOutputs.d.ts} +0 -0
- /package/dist/tools/{waitForTask.d.ts → tasks/waitForTask.d.ts} +0 -0
- /package/dist/tools/{waitForTask.js → tasks/waitForTask.js} +0 -0
- /package/dist/tools/{androidDoctor.d.ts → workspace/androidDoctor.d.ts} +0 -0
- /package/dist/tools/{discardWorktree.d.ts → workspace/discardWorktree.d.ts} +0 -0
- /package/dist/tools/{listWorkspace.d.ts → workspace/listWorkspace.d.ts} +0 -0
- /package/dist/tools/{mergeWorktree.d.ts → workspace/mergeWorktree.d.ts} +0 -0
- /package/dist/tools/{readWorkspaceFile.d.ts → workspace/readWorkspaceFile.d.ts} +0 -0
- /package/dist/tools/{recommendAgentForTask.d.ts → workspace/recommendAgentForTask.d.ts} +0 -0
- /package/dist/tools/{searchWorkspace.d.ts → workspace/searchWorkspace.d.ts} +0 -0
- /package/src/tools/{toolSearch.ts → catalog/toolSearch.ts} +0 -0
- /package/src/tools/{toolUsageStats.ts → catalog/toolUsageStats.ts} +0 -0
- /package/src/tools/{getTaskProgress.ts → tasks/getTaskProgress.ts} +0 -0
- /package/src/tools/{killTask.ts → tasks/killTask.ts} +0 -0
- /package/src/tools/{waitForTask.ts → tasks/waitForTask.ts} +0 -0
|
@@ -1,315 +0,0 @@
|
|
|
1
|
-
# PatchWarden Execution Plan 2026-07-09
|
|
2
|
-
|
|
3
|
-
> Created: 2026-07-09
|
|
4
|
-
> Base document: `docs/roadmap-execution-and-acceptance.md`
|
|
5
|
-
> Scope: 基于 2026-07-09 实地核验后的细化执行计划,覆盖 P0–P3 全阶段。
|
|
6
|
-
> Codex 负责实现与门禁验证;用户负责 credentialed / external-write 操作(push、merge、release、publish)。
|
|
7
|
-
|
|
8
|
-
## 0. 当前真实状态核验(对 roadmap 文档的修正)
|
|
9
|
-
|
|
10
|
-
| 项目 | roadmap 假设 | 2026-07-09 实地核验 | 影响 |
|
|
11
|
-
| --- | --- | --- | --- |
|
|
12
|
-
| 分支 | `codex/patchwarden-v1.5.0` | 一致 | — |
|
|
13
|
-
| HEAD | `cc27e6a Add OSS application evidence materials` | 一致 | — |
|
|
14
|
-
| 工作区 | dirty,preserve user changes | 34 个 M + 5 个 ??,含 `package.json`、`version.ts`、`src/tools/*`、`ui/pages/*`、4 个新增 docs | P0 前必须逐文件核对并提交 |
|
|
15
|
-
| 本地源码版本 | 1.5.1 | `package.json` = 1.5.1,CHANGELOG v1.5.1 主题为 Dashboard UI 优化 | 一致 |
|
|
16
|
-
| GitHub Release / npm | 仍为 v1.5.0 | 未重新核验(roadmap 已记录) | P0 任务成立 |
|
|
17
|
-
| Evidence Pack 现状 | 仅 `evidence.json` + `EVIDENCE.md` | `src/tools/evidencePack.ts` 确认只写这两个文件 | P1 v2 差距成立 |
|
|
18
|
-
| 已有 docs | 部分缺失 | `lineage-evidence-pack-workflow.md`、`threat-model.md` 已存在(未跟踪);缺 `why-patchwarden.md`、`evidence-pack-schema.md`、`spec-kit-integration.md`、`agentseal-integration.md`、`mcp-inspector-testing.md`、`opencode-worker.md`、`openhands-worker.md` | P1 docs 任务成立 |
|
|
19
|
-
|
|
20
|
-
**关键修正**:roadmap P0 假设"本地源码已就绪,只需发布"。实地发现工作区有大量未提交修改(看起来是 v1.5.1 Dashboard UI 优化的实现)。因此新增 **P0-0 前置步骤:逐文件核对并提交工作区修改**。
|
|
21
|
-
|
|
22
|
-
## 1. 用户决策记录(2026-07-09)
|
|
23
|
-
|
|
24
|
-
1. 工作区 34 个 M + 5 个 ?? 文件:**逐文件核对**后决定纳入范围。
|
|
25
|
-
2. P0 发布的 credentialed / external-write 操作(push、merge、release、publish):**用户手动执行**。Codex 只负责本地门禁与分支准备。
|
|
26
|
-
3. 本计划:**写入 docs 文件存档**,便于后续按阶段跟踪。
|
|
27
|
-
|
|
28
|
-
## 2. P0:v1.5.1 可信发布
|
|
29
|
-
|
|
30
|
-
### P0-0 前置:逐文件核对并提交工作区修改(新增)
|
|
31
|
-
|
|
32
|
-
#### 核对结果(2026-07-09 完成)
|
|
33
|
-
|
|
34
|
-
实际工作区:**41 个 M + 9 个 ??**(非最初预估的 34+5)。
|
|
35
|
-
|
|
36
|
-
**版本号一致性**:`package.json` / `version.ts` / `CHANGELOG.md` 三处均为 1.5.1 ✅;`README.md` 第 11 行 / `README.en.md` 第 11 行仍为 v1.5.0 ❌(发布前必修)。
|
|
37
|
-
|
|
38
|
-
**分类汇总**:
|
|
39
|
-
|
|
40
|
-
| 分类 | 文件数 | 判定 |
|
|
41
|
-
| --- | --- | --- |
|
|
42
|
-
| Dashboard UI 优化本体 | 9 M + 4 ?? | 属于 v1.5.1 |
|
|
43
|
-
| async 重构链(sync→async) | 16 M | **隐性依赖**:controlCenter.ts v1.5.1 端点 `await safeFinalizeDirectSession(...)` 依赖此链,技术上不可简单拆分 |
|
|
44
|
-
| 并发任务执行特性(maxConcurrentTasks) | 8 M | 独立新特性,CHANGELOG 未提及,可拆为下一版本 |
|
|
45
|
-
| 安全加固 / Bug 修复 | 4 M | 独立,建议纳入(含二进制检测窗口 8KB→1MB、Windows fs.rmSync 修复) |
|
|
46
|
-
| 用户本地配置(AGENTS.md Codex Memory) | 1 M | 含本机绝对路径 `D:\ai_agent\CodexMemory`,不应入库 |
|
|
47
|
-
| IDE 状态 / 发布产物 | 3 ?? | `.trae/`、`patchwarden-v1.1.0-SHA256SUMS.txt`、`patchwarden-v1.5.0-SHA256SUMS.txt` → 加入 `.gitignore` |
|
|
48
|
-
| 规划文档 | 2 ?? | `docs/roadmap-execution-and-acceptance.md`、`docs/execution-plan-2026-07-09.md` → 是否入库由用户决定 |
|
|
49
|
-
|
|
50
|
-
**Dashboard UI 本体(9 M)**:`CHANGELOG.md`、`package.json`、`version.ts`、`scripts/checks/control-center-smoke.js`、`ui/pages/audit.html`、`ui/pages/dashboard.html`、`ui/pages/direct-sessions.html`、`ui/pages/task-detail.html`、`ui/pages/tasks.html`
|
|
51
|
-
|
|
52
|
-
**Dashboard docs(4 ??)**:`docs/dashboard-overview.md`、`docs/direct-session-workflow.md`、`docs/lineage-evidence-pack-workflow.md`、`docs/task-safe-review-workflow.md`(均被 README 新章节链接引用)
|
|
53
|
-
|
|
54
|
-
**async 重构链(16 M)**:`changeCapture.ts`、`runTask.ts`、`agentAssessor.ts`、`assessmentStore.ts`、`confirmCli.ts`、`createTask.ts`、`createDirectSession.ts`、`finalizeDirectSession.ts`、`goalSubgoalTask.ts`、`retryTask.ts`、`safeViews.ts`、`registry.ts`、`runTaskLoop.ts`、`smoke-test.ts`、`scripts/checks/lifecycle-smoke.js`、`src/test/unit/goal-subgoal-task.test.ts`
|
|
55
|
-
|
|
56
|
-
**并发任务执行特性(8 M)**:`config.ts`(新增 maxConcurrentTasks)、`watch.ts`(跨进程 lockfile + 并发执行 + executed-tasks.json)、6 个 unit test(command-guard / diagnose-task / reconcile-tasks / safe-status / sync-file / watcher-status,各加 1 行满足新必填字段)
|
|
57
|
-
|
|
58
|
-
**安全加固(4 M)**:`directGuards.ts`、`postTaskCleanup.ts`、`direct-guards.test.ts`、`path-guard.test.ts`
|
|
59
|
-
|
|
60
|
-
#### 关键风险
|
|
61
|
-
|
|
62
|
-
1. **async 重构是 v1.5.1 隐性依赖**:controlCenter.ts 的 v1.5.1 端点调用 async 函数,若排除 async 链则需回退这些端点,否则编译/运行断裂。
|
|
63
|
-
2. **README 版本号漏改**:第 11 行必须从 v1.5.0 改为 v1.5.1。
|
|
64
|
-
3. **AGENTS.md 含本机绝对路径**:`D:\ai_agent\CodexMemory` 不应入库。
|
|
65
|
-
4. **.gitignore 需扩充**:新增 `.trae/` 与 `patchwarden-v*-SHA256SUMS.txt` 通配规则。
|
|
66
|
-
|
|
67
|
-
#### 范围决策(待用户确定)
|
|
68
|
-
|
|
69
|
-
- 方案 A(推荐):v1.5.1 = Dashboard UI(9) + async 重构链(16) + 安全加固(4) + 4 docs + 版本号修正;并发特性(8) 拆为 v1.5.2/v1.6.0;CHANGELOG 补 async 与安全修复说明。
|
|
70
|
-
- 方案 B:回退 controlCenter.ts 中依赖 async 的端点,只发纯 Dashboard UI。
|
|
71
|
-
- 方案 C:全部纳入(含并发特性),CHANGELOG 补全说明。
|
|
72
|
-
|
|
73
|
-
### P0-1 本地全套门禁
|
|
74
|
-
|
|
75
|
-
```powershell
|
|
76
|
-
npm.cmd ci
|
|
77
|
-
npm.cmd run build
|
|
78
|
-
npm.cmd run test:unit
|
|
79
|
-
npm.cmd run test:mcp
|
|
80
|
-
npm.cmd run test:http-mcp
|
|
81
|
-
npm.cmd run doctor:ci
|
|
82
|
-
npm.cmd run verify:package
|
|
83
|
-
npm.cmd test
|
|
84
|
-
npm.cmd run pack:clean
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
### P0-2 提交并推送(用户执行 push)
|
|
88
|
-
|
|
89
|
-
- 提交工作区修改到 `codex/patchwarden-v1.5.0`(或新建 `codex/patchwarden-v1.5.1`)
|
|
90
|
-
- 若 PR #24 落后 main:`git fetch origin main` + `git rebase origin/main`
|
|
91
|
-
- git credential 出错时修复 credential/proxy,**禁止 force-push 或 reset 绕过**
|
|
92
|
-
|
|
93
|
-
### P0-3 PR #24 推进(用户执行 merge)
|
|
94
|
-
|
|
95
|
-
- 标记 ready for review(仅本地门禁全绿后)
|
|
96
|
-
- 监控 GitHub Actions
|
|
97
|
-
- checks 绿时通过 PR 合并
|
|
98
|
-
|
|
99
|
-
### P0-4 发布(用户执行 release + publish)
|
|
100
|
-
|
|
101
|
-
- 创建 `v1.5.1` tag + GitHub Release(非 draft)
|
|
102
|
-
- 确认 npm auth 后发布(不暴露 token)
|
|
103
|
-
|
|
104
|
-
### P0 验收
|
|
105
|
-
|
|
106
|
-
```powershell
|
|
107
|
-
gh pr view 24 --repo jiezeng2004-design/PatchWarden --json state,mergeStateStatus,statusCheckRollup
|
|
108
|
-
gh release view v1.5.1 --repo jiezeng2004-design/PatchWarden --json tagName,name,isDraft,isPrerelease,publishedAt,url
|
|
109
|
-
npm.cmd view patchwarden version dist-tags --json --cache "$env:TEMP\patchwarden-npm-cache"
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
通过标准:PR 已合并 · Release `v1.5.1` 存在且非 draft · npm `version=1.5.1` · `dist-tags.latest=1.5.1` · 发布说明不夸大未验证内容。
|
|
113
|
-
|
|
114
|
-
### P0 风险
|
|
115
|
-
|
|
116
|
-
- 工作区修改可能混入非 v1.5.1 内容 → P0-0 逐文件核对
|
|
117
|
-
- README 第 11 行版本号待更新
|
|
118
|
-
- npm publish 需用户 credentialed 操作
|
|
119
|
-
|
|
120
|
-
## 3. P1-A:Evidence Pack v2
|
|
121
|
-
|
|
122
|
-
### 目标
|
|
123
|
-
|
|
124
|
-
把 Evidence Pack 从 2 文件升级为有界多文件结构,成为项目招牌能力。
|
|
125
|
-
|
|
126
|
-
### 当前差距
|
|
127
|
-
|
|
128
|
-
`src/tools/evidencePack.ts` 当前只写:
|
|
129
|
-
|
|
130
|
-
- `.patchwarden/evidence-packs/<lineage_id>/evidence.json`
|
|
131
|
-
- `.patchwarden/evidence-packs/<lineage_id>/EVIDENCE.md`
|
|
132
|
-
|
|
133
|
-
### v2 目标文件结构
|
|
134
|
-
|
|
135
|
-
| 文件 | 内容 |
|
|
136
|
-
| --- | --- |
|
|
137
|
-
| `risk.json` | 风险项与严重度 |
|
|
138
|
-
| `verify.json` | 每条验证命令的结构化记录 |
|
|
139
|
-
| `diffstat.json` | 文件级增删统计(非完整 diff) |
|
|
140
|
-
| `lineage.json` | lineage 有界摘要 |
|
|
141
|
-
| `attestation.json` | 版本/commit/Node/OS/tool profile/schema epoch |
|
|
142
|
-
| `redactions.json` | 脱敏类别与原因(**不存原始隐藏值**) |
|
|
143
|
-
|
|
144
|
-
### 执行步骤
|
|
145
|
-
|
|
146
|
-
1. 扩展 `SafeEvidencePack` 接口,新增 v2 文件字段
|
|
147
|
-
2. 在 `exportTaskEvidencePack` 中按文件逐个写入,保持有界
|
|
148
|
-
3. 更新 `src/tools/taskLineage.ts`、`src/tools/registry.ts`、`src/tools/toolRegistry.ts` 工具清单
|
|
149
|
-
4. 更新 `src/test/unit/evidence-pack.test.ts` 覆盖 v2 文件
|
|
150
|
-
5. 新增 `docs/evidence-pack-schema.md`(schema 参考)
|
|
151
|
-
6. 更新 `docs/lineage-evidence-pack-workflow.md` 补 v2 文件说明
|
|
152
|
-
|
|
153
|
-
### 实现红线
|
|
154
|
-
|
|
155
|
-
- 不含完整 stdout/stderr/diff/secrets/.env/token/cookie/凭据路径
|
|
156
|
-
- redactions 只存类别+原因,不存原值
|
|
157
|
-
- attestation 含 PatchWarden version、commit、package version、Node version、OS、tool profile、schema epoch
|
|
158
|
-
- `.patchwarden/evidence-packs/` 不得进入 npm 包(`package.json` 已排除 `.patchwarden/`)
|
|
159
|
-
|
|
160
|
-
### P1-A 验收
|
|
161
|
-
|
|
162
|
-
```powershell
|
|
163
|
-
npm.cmd run build
|
|
164
|
-
npm.cmd run test:unit
|
|
165
|
-
npm.cmd run doctor:ci
|
|
166
|
-
npm.cmd run verify:package
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
手动验收:跑一次 `run_task_loop` → `export_task_evidence_pack` → 确认 6 个 v2 文件存在 · `EVIDENCE.md` 可读有界 · `redactions.json` 无原始密钥 · npm 包不含 evidence-packs 输出。
|
|
170
|
-
|
|
171
|
-
## 4. P1-B:README 与公开文档就绪
|
|
172
|
-
|
|
173
|
-
### 目标
|
|
174
|
-
|
|
175
|
-
在外部 PR 引流前,让仓库对外部用户可读。
|
|
176
|
-
|
|
177
|
-
### 待补文档
|
|
178
|
-
|
|
179
|
-
| 文档 | 状态 | 说明 |
|
|
180
|
-
| --- | --- | --- |
|
|
181
|
-
| `docs/why-patchwarden.md` | 新建 | 定位与动机 |
|
|
182
|
-
| `docs/evidence-pack-schema.md` | 新建(与 P1-A 同步) | v2 schema 参考 |
|
|
183
|
-
| `docs/spec-kit-integration.md` | 新建 | Spec Kit 集成 |
|
|
184
|
-
| `docs/agentseal-integration.md` | 新建 | AgentSeal 集成 |
|
|
185
|
-
| `docs/mcp-inspector-testing.md` | 新建 | MCP Inspector 测试 |
|
|
186
|
-
| `docs/opencode-worker.md` | 新建 | OpenCode worker |
|
|
187
|
-
| `docs/openhands-worker.md` | 新建 | OpenHands worker |
|
|
188
|
-
| `docs/threat-model.md` | 已存在,更新 | 不重复创建 |
|
|
189
|
-
|
|
190
|
-
### README 前页需保留的 8 个章节
|
|
191
|
-
|
|
192
|
-
1. 一句定位
|
|
193
|
-
2. 架构图
|
|
194
|
-
3. 为何不是远程 shell
|
|
195
|
-
4. 五分钟 demo
|
|
196
|
-
5. Evidence Pack 样本
|
|
197
|
-
6. 支持的 agent
|
|
198
|
-
7. 安全边界
|
|
199
|
-
8. 生态适配
|
|
200
|
-
|
|
201
|
-
### P1-B 验收
|
|
202
|
-
|
|
203
|
-
```powershell
|
|
204
|
-
npm.cmd run build
|
|
205
|
-
npm.cmd run check:brand
|
|
206
|
-
npm.cmd run doctor:ci
|
|
207
|
-
npm.cmd run verify:package
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
通过标准:README 在 npm/GitHub 确认前不声称 v1.5.1 已发布 · 安全边界在外部集成之前讲解 · 示例用占位版本号除非有发布真相。
|
|
211
|
-
|
|
212
|
-
## 5. P2:外部 PR 批次 1(按风险递增顺序)
|
|
213
|
-
|
|
214
|
-
### P2-1 MCP Inspector(最先,最低风险)
|
|
215
|
-
|
|
216
|
-
- PR 形态:`docs: add CLI smoke testing example for MCP servers`
|
|
217
|
-
- 通用优先,PatchWarden 仅作示例之一
|
|
218
|
-
- 流程:clone inspector → 建 `docs/cli-smoke-testing-example` → 查上游贡献规则 → 仅改 docs → 跑上游 docs/lint/test → 推 fork 分支 → 开 PR → 监控 CI
|
|
219
|
-
- 验收:上游检查通过 · 无营销措辞 · 不依赖 PatchWarden 也能成立
|
|
220
|
-
|
|
221
|
-
### P2-2 AgentSeal(第二)
|
|
222
|
-
|
|
223
|
-
- PR 形态:`feat: detect PatchWarden MCP configs and project policies` 或 `docs: add guarded local agent execution pattern`
|
|
224
|
-
- 流程:clone agentseal → 建 `detect/patchwarden-policy` → 查 CONTRIBUTING + 现有 probes/tests → 选 code 或 docs 范围
|
|
225
|
-
- 验收:detector 识别 `.patchwarden/config.json` 和 `project-policy.json` 但不读密钥 · 正负 fixture 测试 · 描述通用安全模式非营销
|
|
226
|
-
|
|
227
|
-
### P2-3 PatchWarden 兼容文档(第三)
|
|
228
|
-
|
|
229
|
-
- 新增 `docs/mcp-inspector-testing.md`、`docs/agentseal-integration.md`
|
|
230
|
-
- 验收:Windows PowerShell 可运行 · 文档链接到真实上游 PR/issue
|
|
231
|
-
|
|
232
|
-
## 6. P2:外部 PR 批次 2
|
|
233
|
-
|
|
234
|
-
### Spec Kit(在 Evidence Pack v2 之后)
|
|
235
|
-
|
|
236
|
-
- 前置依赖:**P1-A 完成**(需要稳定 evidence schema)
|
|
237
|
-
- PR 形态:`docs: add evidence pack pattern for spec-driven development` 或 `walkthrough: verify implemented tasks with an external MCP safety layer`
|
|
238
|
-
- 流程:clone spec-kit → 建 `docs/evidence-verification-pattern`
|
|
239
|
-
- 验收:PR 映射 spec→tasks→implementation→evidence verification · PatchWarden 仅作示例实现 · 上游 docs 检查通过
|
|
240
|
-
|
|
241
|
-
## 7. P3:外部 PR 批次 3(最后,需已发布 evidence 可引用)
|
|
242
|
-
|
|
243
|
-
### OpenCode / OpenHands / Aider
|
|
244
|
-
|
|
245
|
-
- **OpenCode**:流量大、repo 大,先 docs-only external supervisor pattern
|
|
246
|
-
- **OpenHands**:源码归属在迁移,先查当前 repo 结构再选目标
|
|
247
|
-
- **Aider**:成熟 CLI,safe wrapper pattern 有用但应在 PatchWarden 有发布示例之后
|
|
248
|
-
- 每个 PR 验收:查上游贡献规则 · 不依赖 PatchWarden 也能用 · CI 或文档化本地检查通过 · PatchWarden README 仅在 PR 存在后回链
|
|
249
|
-
|
|
250
|
-
## 8. Issue Backlog(P0 发布真相干净后创建)
|
|
251
|
-
|
|
252
|
-
1. `fix: close v1.5.1 release truth gap`
|
|
253
|
-
2. `feat: add Evidence Pack v2 artifact schema`
|
|
254
|
-
3. `docs: add Evidence Pack v2 schema reference`
|
|
255
|
-
4. `feat: export goal final report`
|
|
256
|
-
5. `feat: import Spec Kit tasks into Goal Session`
|
|
257
|
-
6. `docs: add MCP Inspector CLI smoke testing guide`
|
|
258
|
-
7. `docs: add AgentSeal compatibility guide`
|
|
259
|
-
8. `docs: add OpenCode worker integration guide`
|
|
260
|
-
9. `docs: add OpenHands worker integration guide`
|
|
261
|
-
10. `docs: add external PR roadmap and ecosystem compatibility matrix`
|
|
262
|
-
|
|
263
|
-
## 9. 全局验收规则
|
|
264
|
-
|
|
265
|
-
### 每个内部 PatchWarden PR
|
|
266
|
-
|
|
267
|
-
```powershell
|
|
268
|
-
npm.cmd run build
|
|
269
|
-
npm.cmd run test:unit
|
|
270
|
-
npm.cmd run test:mcp
|
|
271
|
-
npm.cmd run test:http-mcp
|
|
272
|
-
npm.cmd run doctor:ci
|
|
273
|
-
npm.cmd run verify:package
|
|
274
|
-
```
|
|
275
|
-
|
|
276
|
-
### 发布前追加
|
|
277
|
-
|
|
278
|
-
```powershell
|
|
279
|
-
npm.cmd ci
|
|
280
|
-
npm.cmd test
|
|
281
|
-
npm.cmd run pack:clean
|
|
282
|
-
gh pr checks <PR_NUMBER> --repo jiezeng2004-design/PatchWarden --watch
|
|
283
|
-
gh release view v<version> --repo jiezeng2004-design/PatchWarden --json tagName,isDraft,publishedAt,url
|
|
284
|
-
npm.cmd view patchwarden version dist-tags --json --cache "$env:TEMP\patchwarden-npm-cache"
|
|
285
|
-
```
|
|
286
|
-
|
|
287
|
-
**铁律**:GitHub Release 与 npm registry 真相都匹配目标版本前,绝不标记发布完成。
|
|
288
|
-
|
|
289
|
-
## 10. 执行顺序与依赖
|
|
290
|
-
|
|
291
|
-
```
|
|
292
|
-
P0-0 逐文件核对 → P0-1 门禁 → P0-2 提交推送(用户) → P0-3 PR(用户) → P0-4 发布(用户)
|
|
293
|
-
│
|
|
294
|
-
v
|
|
295
|
-
P1-A Evidence Pack v2
|
|
296
|
-
│
|
|
297
|
-
P1-B docs ───┤
|
|
298
|
-
v
|
|
299
|
-
P2-1 Inspector → P2-2 AgentSeal → P2-3 兼容文档
|
|
300
|
-
│
|
|
301
|
-
v
|
|
302
|
-
P2 Spec Kit (依赖 P1-A)
|
|
303
|
-
│
|
|
304
|
-
v
|
|
305
|
-
P3 OpenCode / OpenHands / Aider
|
|
306
|
-
```
|
|
307
|
-
|
|
308
|
-
## 11. 安全边界(贯穿全阶段)
|
|
309
|
-
|
|
310
|
-
- 不暴露通用远程 shell,不弱化精确命令匹配
|
|
311
|
-
- 所有 repo 路径在 `workspaceRoot` 内,阻止敏感名与越界改动
|
|
312
|
-
- 不读取或持久化 token/cookie/浏览器状态/.env/SSH 密钥/凭据文件
|
|
313
|
-
- 不 blanket-kill watcher/tunnel,仅监督 launcher 拥有的进程
|
|
314
|
-
- live tunnel/watcher 切换与本地代码验证分开,不重启 live 服务除非显式要求
|
|
315
|
-
- 保留结构化任务证据、心跳状态、前后 Git 快照、变更文件记录与脱敏
|
package/docs/release-v0.6.0.md
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
# PatchWarden v0.6.0
|
|
2
|
-
|
|
3
|
-
PatchWarden v0.6.0 在保持 `chatgpt_core` 固定 16 工具兼容的同时,加入默认关闭的
|
|
4
|
-
`chatgpt_direct` 安全直接开发模式、本地 assess → confirm → execute 闭环,以及更可靠的
|
|
5
|
-
Windows Core/Direct 双通道运行管理。
|
|
6
|
-
|
|
7
|
-
## 主要更新
|
|
8
|
-
|
|
9
|
-
### ChatGPT Core 安全体验
|
|
10
|
-
|
|
11
|
-
- `assess_only` 返回最小化的结构化 `next_tool_call`;execute 只需
|
|
12
|
-
`execution_mode` 和完整 `assessment_id`,不再重复传输目标、计划和仓库参数。
|
|
13
|
-
- 中风险票据通过本地 `patchwarden-confirm <full_assessment_id>` 确认。该入口不是 MCP
|
|
14
|
-
工具,远程调用者不能自行放行。
|
|
15
|
-
- 确认和执行会重新校验票据时效、工作区、计划、策略和工具 Manifest。
|
|
16
|
-
- `audit_task` 将已确认失败、可能误报和人工核查项分开呈现。
|
|
17
|
-
- `get_task_summary(view: "compact")` 和终态 `wait_for_task` 返回有界验收证据,避免长任务
|
|
18
|
-
结果淹没客户端上下文。
|
|
19
|
-
|
|
20
|
-
### ChatGPT Direct 模式
|
|
21
|
-
|
|
22
|
-
- 默认关闭;启用需设置 `enableDirectProfile: true` 并使用 `chatgpt_direct` Profile。
|
|
23
|
-
- 固定 9 工具:健康检查、工作区列表、会话创建、搜索、文件读取、JSON 补丁、白名单
|
|
24
|
-
验证、会话完成和独立审计。
|
|
25
|
-
- 所有写操作绑定 Direct session 和内容哈希;不支持任意 shell、删除/重命名、Git 推送、
|
|
26
|
-
npm 发布或远程部署。
|
|
27
|
-
|
|
28
|
-
### Windows Core/Direct 控制与可观测性
|
|
29
|
-
|
|
30
|
-
- 根目录统一使用 `PatchWarden.cmd`,支持 Core、Direct 或两者的
|
|
31
|
-
`start`、`stop`、`restart`、`status`、`health` 和受限 `kill`。
|
|
32
|
-
- Core 和 Direct 分别使用 `127.0.0.1:8080` 与 `127.0.0.1:8081`,并自动校正各自
|
|
33
|
-
tunnel profile 的 health 地址。
|
|
34
|
-
- supervisor 将 stdout/stderr 写入各自 runtime 目录;非零退出时显示 stderr 最后 30 行,
|
|
35
|
-
并把退出码、脱敏 tail 和日志路径写入 `tunnel-status.json`。
|
|
36
|
-
- 修复 Core watcher 的 `XDG_CONFIG_HOME` 泄漏到 tunnel-client,导致 Core 错误读取
|
|
37
|
-
`%LOCALAPPDATA%\patchwarden\opencode-config\tunnel-client\patchwarden.yaml` 并反复退出的问题。
|
|
38
|
-
- `stop` / `restart` 可清理 Profile 精确匹配的遗留 tunnel-client;无关端口占用只报告、不误杀。
|
|
39
|
-
- `status` 支持 health endpoint fallback,陈旧 JSON 不再把实际 ready 的实例误报为 stopped。
|
|
40
|
-
- 旧的单用途入口迁入 `scripts/launchers/`;个人 `.local/launchers/`、运行时配置、凭据和日志
|
|
41
|
-
不进入 Git、npm 包或 GitHub 发布资产。
|
|
42
|
-
|
|
43
|
-
## 兼容性
|
|
44
|
-
|
|
45
|
-
- `chatgpt_core` 仍为固定 16 工具;`chatgpt_direct` 为固定 9 工具。
|
|
46
|
-
- schema epoch 为 `2026-06-22-v6`。
|
|
47
|
-
- `assess_only`、`execute`、`assessment_id`、`plan_ref` 和既有任务记录保持兼容。
|
|
48
|
-
- npm 包名保持 `patchwarden`;旧的 `safe-bifrost` 包继续冻结在 v0.3.0。
|
|
49
|
-
|
|
50
|
-
## 验证
|
|
51
|
-
|
|
52
|
-
发布候选通过以下门禁:
|
|
53
|
-
|
|
54
|
-
```powershell
|
|
55
|
-
npm.cmd run build
|
|
56
|
-
npm.cmd test
|
|
57
|
-
npm.cmd run check:tool-manifest
|
|
58
|
-
npm.cmd run check:direct-tool-manifest
|
|
59
|
-
npm.cmd run test:mcp
|
|
60
|
-
npm.cmd run test:http-mcp
|
|
61
|
-
npm.cmd run doctor:ci
|
|
62
|
-
npm.cmd run pack:clean
|
|
63
|
-
npm.cmd run verify:package
|
|
64
|
-
git diff --check
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
本机双通道验收确认 Core 16 工具和 Direct 9 工具均为 `running`、`ready=true`,8080/8081
|
|
68
|
-
由对应 `tunnel-client.exe` 监听,两个 `/readyz` 均返回 `ready`。
|
|
69
|
-
|
|
70
|
-
GitHub Release 与 npm Registry 是独立发布面。创建 Tag/Release 不会自动发布 npm;npm 发布后
|
|
71
|
-
仍需单独核对 `patchwarden@latest`、版本时间、dist-tag 和包完整性。
|
package/docs/release-v0.6.1.md
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
# PatchWarden v0.6.1 Release Notes
|
|
2
|
-
|
|
3
|
-
**Release Date**: 2026-06-25
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
PatchWarden v0.6.1 is a stability and observability release. It addresses watcher heartbeat false positives, adds Chinese path reliability, introduces two new tools (`safe_status` and `sync_file`), and adds comprehensive security guard unit tests.
|
|
8
|
-
|
|
9
|
-
## New Features
|
|
10
|
-
|
|
11
|
-
### safe_status Tool
|
|
12
|
-
|
|
13
|
-
A minimal task lifecycle status tool that returns task state without exposing diff, log content, or file contents. Useful when upper-layer security policies block content-bearing tools.
|
|
14
|
-
|
|
15
|
-
```json
|
|
16
|
-
{
|
|
17
|
-
"task_id": "task-001",
|
|
18
|
-
"status": "running",
|
|
19
|
-
"phase": "executing_agent",
|
|
20
|
-
"last_heartbeat_at": "2026-06-24T10:00:12Z",
|
|
21
|
-
"current_command": "codex exec",
|
|
22
|
-
"watcher_state": "healthy"
|
|
23
|
-
}
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
### sync_file Tool
|
|
27
|
-
|
|
28
|
-
Copy a file from source to target within a Direct session repo. Both paths must be inside the session's `repo_path`. Supports optional sha256 verification for both source and target.
|
|
29
|
-
|
|
30
|
-
### Android Build Doctor
|
|
31
|
-
|
|
32
|
-
When a managed project contains an `android_app` directory, the health check now includes Android build environment diagnostics: Java version, JAVA_HOME, ANDROID_HOME, SDK platform, build-tools, Gradle wrapper, and APK output path.
|
|
33
|
-
|
|
34
|
-
## Bug Fixes
|
|
35
|
-
|
|
36
|
-
- **Watcher stale false positive**: Long-running tasks no longer cause the watcher to be incorrectly reported as stale. The watcher status now falls back to checking running task heartbeats.
|
|
37
|
-
- **Chinese path encoding**: All file I/O operations verified to use UTF-8 encoding. Health check now reports `path_encoding` status.
|
|
38
|
-
- **Tracked external dirty detection**: `captureRepoSnapshot` now correctly identifies tracked-but-modified external files via `dirty_paths` field parsed from `git status --porcelain`. The regex now includes `R` (rename) status, fixing dead code that previously never executed for renamed files.
|
|
39
|
-
- **Release zip path separators**: The packaging script (`pack-clean.js`) now creates zip archives with POSIX `/` path separators instead of Windows backslashes. Linux `unzip` no longer reports `warning: appears to use backslashes as path separators`.
|
|
40
|
-
|
|
41
|
-
## Security
|
|
42
|
-
|
|
43
|
-
- 136 unit tests covering all security guards (path guard, sensitive guard, command guard, direct guards)
|
|
44
|
-
- Tests use Node's built-in `node:test` — zero new dependencies
|
|
45
|
-
|
|
46
|
-
## Observability
|
|
47
|
-
|
|
48
|
-
- Structured JSON logging to stderr (never stdout, to avoid polluting MCP JSON-RPC)
|
|
49
|
-
- Tool call audit logs with duration tracking
|
|
50
|
-
- Global `unhandledRejection` and `uncaughtException` handlers
|
|
51
|
-
|
|
52
|
-
## Tool Profile Changes
|
|
53
|
-
|
|
54
|
-
| Profile | v0.6.0 | v0.6.1 |
|
|
55
|
-
|---------|--------|--------|
|
|
56
|
-
| full | 28 | 30 |
|
|
57
|
-
| chatgpt_core | 16 | 17 |
|
|
58
|
-
| chatgpt_direct | 9 | 10 |
|
|
59
|
-
|
|
60
|
-
## Migration
|
|
61
|
-
|
|
62
|
-
No breaking changes. All new fields are optional. New tools are additive and do not affect existing tools.
|
|
63
|
-
|
|
64
|
-
## Verification
|
|
65
|
-
|
|
66
|
-
- TypeScript compilation: PASS
|
|
67
|
-
- Unit tests: 136 pass, 0 fail, 1 skipped (Windows symlink)
|
|
68
|
-
- Smoke tests: 139 pass, 0 fail
|
|
69
|
-
- Lifecycle tests: 22 pass, 0 fail (includes tracked external file rename regression test)
|
|
70
|
-
- Doctor CI: PASS (81 OK, 0 WARN, 0 FAIL on the release check host)
|
|
71
|
-
- Tool manifest check: PASS
|
|
72
|
-
- Package manifest check: PASS (260 files)
|
|
73
|
-
- Brand check: PASS (128 tracked files)
|
|
74
|
-
- MCP HTTP tests: 13 pass, 0 fail
|
|
75
|
-
- Release zip: POSIX path separators verified (261 entries, no backslashes)
|
package/docs/release-v0.6.4.md
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
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
|
-
```
|