@cybedefend/vibedefend 1.4.4 → 1.4.6
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/README.md +39 -3
- package/dist/auth/auth.js +15 -2
- package/dist/auth/auth.js.map +1 -1
- package/dist/clients/claude-code.js +108 -30
- package/dist/clients/claude-code.js.map +1 -1
- package/dist/clients/codex.js +117 -18
- package/dist/clients/codex.js.map +1 -1
- package/dist/clients/cursor-guards-rules.js +26 -1
- package/dist/clients/cursor-guards-rules.js.map +1 -1
- package/dist/clients/cursor.js +24 -14
- package/dist/clients/cursor.js.map +1 -1
- package/dist/clients/mcp-url.js +42 -0
- package/dist/clients/mcp-url.js.map +1 -0
- package/dist/clients/unwire.js +57 -0
- package/dist/clients/unwire.js.map +1 -0
- package/dist/clients/vscode.js +38 -16
- package/dist/clients/vscode.js.map +1 -1
- package/dist/clients/windsurf.js +32 -14
- package/dist/clients/windsurf.js.map +1 -1
- package/dist/config.js +7 -0
- package/dist/config.js.map +1 -1
- package/dist/diagnostics.js +4 -2
- package/dist/diagnostics.js.map +1 -1
- package/dist/doctor.js +15 -3
- package/dist/doctor.js.map +1 -1
- package/dist/global-cli.js +138 -0
- package/dist/global-cli.js.map +1 -0
- package/dist/hook-runner.js +196 -85
- package/dist/hooks/install.js +3 -1
- package/dist/hooks/install.js.map +1 -1
- package/dist/hooks/runtime/pre-compact.js +9 -2
- package/dist/hooks/runtime/pre-compact.js.map +1 -1
- package/dist/hooks/runtime/proposal-mode.js +75 -0
- package/dist/hooks/runtime/proposal-mode.js.map +1 -0
- package/dist/hooks/runtime/resolve.js +12 -5
- package/dist/hooks/runtime/resolve.js.map +1 -1
- package/dist/hooks/runtime/session-review.js +40 -20
- package/dist/hooks/runtime/session-review.js.map +1 -1
- package/dist/hooks/runtime/session-start.js +7 -1
- package/dist/hooks/runtime/session-start.js.map +1 -1
- package/dist/hooks/runtime/shell-writes.js +3 -2
- package/dist/hooks/runtime/shell-writes.js.map +1 -1
- package/dist/hooks/runtime/user-prompt-submit.js +12 -2
- package/dist/hooks/runtime/user-prompt-submit.js.map +1 -1
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/dist/install.js +118 -23
- package/dist/install.js.map +1 -1
- package/dist/json-file.js +115 -0
- package/dist/json-file.js.map +1 -0
- package/dist/link.js +5 -2
- package/dist/link.js.map +1 -1
- package/dist/login.js +12 -4
- package/dist/login.js.map +1 -1
- package/dist/prompts.js +18 -3
- package/dist/prompts.js.map +1 -1
- package/dist/refresh-hooks.js +1 -1
- package/dist/refresh-hooks.js.map +1 -1
- package/dist/self-update.js +5 -0
- package/dist/self-update.js.map +1 -1
- package/dist/status.js +5 -1
- package/dist/status.js.map +1 -1
- package/dist/uninstall.js +166 -0
- package/dist/uninstall.js.map +1 -0
- package/dist/utils.js +1 -20
- package/dist/utils.js.map +1 -1
- package/package.json +6 -4
package/dist/prompts.js
CHANGED
|
@@ -37,6 +37,11 @@ export async function askRegion() {
|
|
|
37
37
|
* - auto-update ON → hooks self-refresh in the background so users
|
|
38
38
|
* don't have to re-run install; opt out here if
|
|
39
39
|
* you pin versions or run in a locked-down env.
|
|
40
|
+
* - non-blocking OFF → the agent pauses for Accept/Reject on proposals.
|
|
41
|
+
* Turn it on for autonomous agents (Cyrus, CI…)
|
|
42
|
+
* that have no human in the chat: proposals are
|
|
43
|
+
* then reviewed in the dashboard instead. When ON,
|
|
44
|
+
* the auto-propose question is skipped (moot).
|
|
40
45
|
* - auto-propose OFF → policy mutations require a chat-side "yes" by
|
|
41
46
|
* default. Power users can flip this on if they
|
|
42
47
|
* trust the agent to draft + push proposals
|
|
@@ -76,14 +81,24 @@ export async function askHookConfig() {
|
|
|
76
81
|
message: `Enable automatic background updates (keep hooks current without re-running install)? ${kleur.dim('(recommended)')}`,
|
|
77
82
|
default: HOOK_DEFAULTS.autoUpdate,
|
|
78
83
|
});
|
|
79
|
-
const
|
|
80
|
-
message: `Enable
|
|
81
|
-
default: HOOK_DEFAULTS.
|
|
84
|
+
const nonBlockingMode = await confirm({
|
|
85
|
+
message: `Enable non-blocking mode (for autonomous agents like Cyrus — never pause for an Accept/Reject on business-rule proposals)? ${kleur.dim('(default off — proposals are then reviewed in the CybeDefend dashboard instead of the chat)')}`,
|
|
86
|
+
default: HOOK_DEFAULTS.nonBlockingMode,
|
|
82
87
|
});
|
|
88
|
+
// Non-blocking already pushes proposals without asking, so the auto-propose
|
|
89
|
+
// question would be moot — skip it and keep the default.
|
|
90
|
+
let autoProposeMode = HOOK_DEFAULTS.autoProposeMode;
|
|
91
|
+
if (!nonBlockingMode) {
|
|
92
|
+
autoProposeMode = await confirm({
|
|
93
|
+
message: `Enable auto-propose mode (agent proposes rules WITHOUT asking you first)? ${kleur.dim('(NOT recommended; default off — proposals normally require an explicit chat-side "yes")')}`,
|
|
94
|
+
default: HOOK_DEFAULTS.autoProposeMode,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
83
97
|
return {
|
|
84
98
|
enableSessionReview,
|
|
85
99
|
reviewThreshold,
|
|
86
100
|
autoProposeMode,
|
|
101
|
+
nonBlockingMode,
|
|
87
102
|
autoUpdate,
|
|
88
103
|
enableDiffScan,
|
|
89
104
|
};
|
package/dist/prompts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,aAAa,EAAE,OAAO,EAAqB,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,aAAa,GAAG,iBAAiB,EAAE,CAAC;IAC1C,MAAM,UAAU,GAAG,CAAC,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC,CAAC;IAElD,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrC,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE;QAChD,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,CAAC,CAAC,KAAK;KACf,CAAC,CAAC,CAAC;IAEJ,OAAO,MAAM,MAAM,CAAe;QAChC,OAAO,EAAE,gBAAgB;QACzB,OAAO;KACR,CAAC,CAAC;AACL,CAAC;
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
|
package/dist/refresh-hooks.js
CHANGED
|
@@ -19,7 +19,7 @@ import { join } from 'node:path';
|
|
|
19
19
|
import { ALL_ADAPTERS } from './clients/registry.js';
|
|
20
20
|
import { resolveHookConfigFrom } from './doctor.js';
|
|
21
21
|
import { VIBEDEFEND_DIR } from './hooks/install.js';
|
|
22
|
-
import { writeJson } from './
|
|
22
|
+
import { writeJson } from './json-file.js';
|
|
23
23
|
import { pkg } from './version.js';
|
|
24
24
|
export function refreshWiredHooks(deps = {}) {
|
|
25
25
|
const configPath = deps.configPath ?? join(VIBEDEFEND_DIR, 'runtime-config.json');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh-hooks.js","sourceRoot":"","sources":["../src/refresh-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"refresh-hooks.js","sourceRoot":"","sources":["../src/refresh-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAkBnC,MAAM,UAAU,iBAAiB,CAAC,OAA8B,EAAE;IAChE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC;IAClF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,YAAY,CAAC;IAC/C,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,GAAG,CAAC,OAAO,CAAC;IAC1D,MAAM,MAAM,GAAkB,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAE5E,2EAA2E;IAC3E,mEAAmE;IACnE,IAAI,GAA4B,CAAC;IACjC,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,OAAO,MAAM,CAAC;QAC3C,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAA4B,CAAC;IAChF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,MAAM,GAAG,GAA+B,CAAC;IAC/C,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC;IAElC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAsB,CAAC;IAC7C,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAElD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU;gBAAE,SAAS;YAClD,OAAO,CAAC,aAAa,CAAC;gBACpB,OAAO,EAAE,EAAE;gBACX,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;gBAC9C,MAAM;gBACN,KAAK;aACN,CAAC,CAAC;YACH,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,qDAAqD;IACrD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,SAAS,CAAC,UAAU,EAAE,EAAE,GAAG,GAAG,EAAE,gBAAgB,EAAE,cAAc,EAAE,CAAC,CAAC;YACpE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,kEAAkE;QACpE,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/self-update.js
CHANGED
|
@@ -52,6 +52,11 @@ export function detectInstallMode(scriptPath) {
|
|
|
52
52
|
// npx cache (ephemeral; npm `~/.npm/_npx/<hash>` or pnpm `.../pnpm/_npx`).
|
|
53
53
|
if (/[\\/]_npx[\\/]/i.test(scriptPath))
|
|
54
54
|
return 'npx-cache';
|
|
55
|
+
// `pnpm dlx` (`<cache>/pnpm/dlx/<hash>/…`, older pnpm `<tmp>/dlx-<pid>/…`) and
|
|
56
|
+
// `yarn dlx` (`<tmp>/xfs-<hash>/dlx-<pid>/…`) are just as ephemeral — checked
|
|
57
|
+
// before the generic `node_modules` match that would call them project-local.
|
|
58
|
+
if (/[\\/]dlx(?:-\d+)?[\\/]/i.test(scriptPath))
|
|
59
|
+
return 'npx-cache';
|
|
55
60
|
// pnpm global: Unix `~/.local/share/pnpm` / `~/Library/pnpm`;
|
|
56
61
|
// Windows `%LOCALAPPDATA%\pnpm\global`.
|
|
57
62
|
if (/[\\/]pnpm(?:[\\/]global|[\\/]nodejs|[\\/]node_modules)/i.test(scriptPath)) {
|
package/dist/self-update.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"self-update.js","sourceRoot":"","sources":["../src/self-update.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEnD,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAUjC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,YAAY,GAA6B,IAAI,GAAG,CAAC;IAC5D,YAAY;IACZ,aAAa;IACb,aAAa;CACd,CAAC,CAAC;AAcH;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAkB;IAClD,yEAAyE;IACzE,wEAAwE;IACxE,oEAAoE;IAEpE,2EAA2E;IAC3E,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"self-update.js","sourceRoot":"","sources":["../src/self-update.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEnD,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAUjC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,YAAY,GAA6B,IAAI,GAAG,CAAC;IAC5D,YAAY;IACZ,aAAa;IACb,aAAa;CACd,CAAC,CAAC;AAcH;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAkB;IAClD,yEAAyE;IACzE,wEAAwE;IACxE,oEAAoE;IAEpE,2EAA2E;IAC3E,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,WAAW,CAAC;IAC3D,+EAA+E;IAC/E,8EAA8E;IAC9E,8EAA8E;IAC9E,IAAI,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,WAAW,CAAC;IAEnE,8DAA8D;IAC9D,wCAAwC;IACxC,IAAI,yDAAyD,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/E,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,IAAI,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,aAAa,CAAC;IAEtE,qDAAqD;IACrD,8EAA8E;IAC9E,IAAI,6CAA6C,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACnE,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,sDAAsD;IACtD,gGAAgG;IAChG,iFAAiF;IACjF,6DAA6D;IAC7D,yDAAyD;IACzD,IAAI,iCAAiC,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,YAAY,CAAC;IAC5E,IAAI,4CAA4C,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAClE,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,IAAI,6CAA6C,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACnE,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,mEAAmE;IACnE,IAAI,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,eAAe,CAAC;IAEvE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,QAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxC,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CACvB,IAAiB,EACjB,WAAmB;IAEnB,yEAAyE;IACzE,2EAA2E;IAC3E,wBAAwB;IACxB,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;IAC3C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,YAAY;YACf,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/D,KAAK,aAAa;YAChB,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5D,KAAK,aAAa;YAChB,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAWD;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,UAA6B,EAAE;IACxD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC;IAC5C,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,wBAAwB,CAAC;IACpE,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,IAAI,iBAAiB,EAAE,CAAC;IAC/D,MAAM,IAAI,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC7C,MAAM,WAAW,GAAG,GAAG,WAAW,IAAI,OAAO,EAAE,CAAC;IAEhD,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,OAAO;YACL,IAAI;YACJ,YAAY;YACZ,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,IAAI;YACd,OAAO,EACL,yEAAyE;gBACzE,+CAA+C;gBAC/C,SAAS,WAAW,uBAAuB;SAC9C,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;QAC7B,OAAO;YACL,IAAI;YACJ,YAAY;YACZ,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,IAAI;YACd,OAAO,EACL,sEAAsE;gBACtE,uDAAuD,WAAW,KAAK;gBACvE,cAAc,WAAW,YAAY;SACxC,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO;YACL,IAAI;YACJ,YAAY;YACZ,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,IAAI;YACd,OAAO,EACL,+DAA+D,YAAY,KAAK;gBAChF,+BAA+B,WAAW,+BAA+B;SAC5E,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GACP,IAAI,KAAK,YAAY;QACnB,CAAC,CAAC,gBAAgB;QAClB,CAAC,CAAC,IAAI,KAAK,aAAa;YACtB,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,iBAAiB,CAAC;IAE1B,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACjD,OAAO;QACL,IAAI;QACJ,YAAY;QACZ,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,IAAI;QACd,OAAO,EACL,IAAI,KAAK,CAAC;YACR,CAAC,CAAC,KAAK,GAAG,IAAI,WAAW,+DAA+D;YACxF,CAAC,CAAC,KAAK,GAAG,IAAI,WAAW,kBAAkB,IAAI,IAAI,GAAG,IAAI;gBACxD,kEAAkE;KACzE,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,WAAW,GAAG,wBAAwB,EACtC,YAA0B,KAAK;IAE/B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB,8BAA8B,WAAW,SAAS,EAClD,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CACtC,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QACzB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA0B,CAAC;QACzD,OAAO,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAoC;IACnE,OAAO,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;AAC5C,CAAC;AAED,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,kEAAkE;AAClE,MAAM,UAAU,qBAAqB,CACnC,QAAoC,EACpC,OAAe;IAEf,MAAM,IAAI,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACxC,YAAY,CAAC,IAAI,CAAC,CAAC;IACnB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC;IACpC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,4EAA4E;AAC5E,qEAAqE;AACrE,KAAK,OAAO,CAAC;AACb,KAAK,GAAG,CAAC"}
|
package/dist/status.js
CHANGED
|
@@ -21,7 +21,11 @@ export function renderStatus(state) {
|
|
|
21
21
|
}
|
|
22
22
|
lines.push(kleur.bold(' Agents'));
|
|
23
23
|
for (const c of state.clients) {
|
|
24
|
-
|
|
24
|
+
// Registered under our name but on another URL: left on another region.
|
|
25
|
+
const mcp = !c.mcpRegistered && c.mcpUrl !== null
|
|
26
|
+
? kleur.yellow(`other region (${c.mcpUrl})`)
|
|
27
|
+
: yn(c.mcpRegistered);
|
|
28
|
+
lines.push(` ${c.id.padEnd(12)} detected:${yn(c.detected)} hooks:${yn(c.hooksWired)} mcp:${mcp}`);
|
|
25
29
|
}
|
|
26
30
|
lines.push(kleur.bold(' Live check'));
|
|
27
31
|
if (!state.live) {
|
package/dist/status.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAqB,MAAM,kBAAkB,CAAC;AAEzE,uEAAuE;AACvE,MAAM,UAAU,YAAY,CAAC,KAAmB;IAC9C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,EAAE,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAEtE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,gCAAgC,CAAC,CAAC;QAC5E,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAC5E,MAAM,KAAK,GAAG,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,KAAK,KAAK,CAAC,cAAc,CAAC;IACpF,KAAK,CAAC,IAAI,CACR,cAAc,KAAK,CAAC,cAAc,IAAI,GAAG,EAAE;QACzC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAC5E,CAAC;IACF,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;IACtF,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACnC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAC9B,
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `vibedefend uninstall` — remove what `vibedefend install` put on this
|
|
3
|
+
* machine:
|
|
4
|
+
*
|
|
5
|
+
* 1. every agent's hook entries + MCP server registration (each adapter's
|
|
6
|
+
* `uninstall()`; third-party hooks and servers are never touched);
|
|
7
|
+
* 2. VibeDefend's own stored credentials (keychain / file fallback);
|
|
8
|
+
* 3. `~/.cybedefend/` — runner, runtime config, caches, logs.
|
|
9
|
+
*
|
|
10
|
+
* Deliberately left in place:
|
|
11
|
+
* - `~/.cybedefend/regions.json` — written by the user, not by the installer;
|
|
12
|
+
* - repositories' committed `.cybedefend/config.json` links;
|
|
13
|
+
* - the CLI package itself: a running binary should not delete itself, so we
|
|
14
|
+
* print the matching `npm uninstall -g` (pnpm / yarn) command instead.
|
|
15
|
+
*
|
|
16
|
+
* Order matters: the MCP names come from `~/.cybedefend/runtime-config.json`
|
|
17
|
+
* and `regions.json`, so they are resolved before the directory goes.
|
|
18
|
+
*/
|
|
19
|
+
import { confirm as confirmImpl } from '@inquirer/prompts';
|
|
20
|
+
import { existsSync, readdirSync, readFileSync, rmSync } from 'node:fs';
|
|
21
|
+
import { join } from 'node:path';
|
|
22
|
+
import kleur from 'kleur';
|
|
23
|
+
import { clearAuth } from './auth/auth-store.js';
|
|
24
|
+
import { ALL_ADAPTERS } from './clients/registry.js';
|
|
25
|
+
import { REGIONS } from './config.js';
|
|
26
|
+
import { detectInstallMode, GLOBAL_MODES, resolveScriptPath, } from './self-update.js';
|
|
27
|
+
import { home, log } from './utils.js';
|
|
28
|
+
import { pkg } from './version.js';
|
|
29
|
+
/** Files under `~/.cybedefend/` the user wrote themselves — never deleted. */
|
|
30
|
+
const USER_OWNED_FILES = new Set(['regions.json']);
|
|
31
|
+
/**
|
|
32
|
+
* MCP server names end up in client config keys AND in a CLI argv
|
|
33
|
+
* (`claude mcp remove <name>`, through a shell on Windows) — so anything
|
|
34
|
+
* outside this charset is dropped, not escaped.
|
|
35
|
+
*/
|
|
36
|
+
const MCP_NAME_RE = /^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/;
|
|
37
|
+
/**
|
|
38
|
+
* MCP server names VibeDefend may have registered, from USER-trusted sources
|
|
39
|
+
* only: the built-in regions, the region recorded at install time
|
|
40
|
+
* (`runtime-config.json`) and the user-global `regions.json`. The cwd
|
|
41
|
+
* `vibedefend.regions.json` (which `loadCustomRegions` also reads) is
|
|
42
|
+
* deliberately excluded — a cloned repository could otherwise name ANY of the
|
|
43
|
+
* user's MCP servers for removal. See `hooks/runtime/trusted-api-base.ts`.
|
|
44
|
+
*/
|
|
45
|
+
export function trustedMcpNames(cybeDir = home('.cybedefend')) {
|
|
46
|
+
const names = REGIONS.map((r) => r.mcpName);
|
|
47
|
+
const runtime = readJsonQuiet(join(cybeDir, 'runtime-config.json'));
|
|
48
|
+
if (runtime && typeof runtime === 'object') {
|
|
49
|
+
names.push(runtime.region?.mcpName);
|
|
50
|
+
}
|
|
51
|
+
const userRegions = readJsonQuiet(join(cybeDir, 'regions.json'));
|
|
52
|
+
if (Array.isArray(userRegions)) {
|
|
53
|
+
for (const r of userRegions) {
|
|
54
|
+
if (r && typeof r === 'object')
|
|
55
|
+
names.push(r.mcpName);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const valid = names.filter((n) => typeof n === 'string' && MCP_NAME_RE.test(n));
|
|
59
|
+
return [...new Set(valid)];
|
|
60
|
+
}
|
|
61
|
+
export async function runUninstall(opts = {}, deps = {}) {
|
|
62
|
+
const adapters = deps.adapters ?? ALL_ADAPTERS;
|
|
63
|
+
const confirm = deps.confirm ?? confirmImpl;
|
|
64
|
+
const cybeDir = deps.cybeDir ?? home('.cybedefend');
|
|
65
|
+
const clearAuthFn = deps.clearAuth ?? clearAuth;
|
|
66
|
+
log.step('Uninstall VibeDefend');
|
|
67
|
+
log.hint('Removes, from every supported agent: the VibeDefend hooks and the CybeDefend MCP server.');
|
|
68
|
+
log.hint(`Also signs you out and deletes ${cybeDir} (your regions.json is kept).`);
|
|
69
|
+
if (!opts.yes) {
|
|
70
|
+
const ok = await confirm({ message: 'Remove VibeDefend from this machine?', default: false });
|
|
71
|
+
if (!ok) {
|
|
72
|
+
log.info('Nothing removed.');
|
|
73
|
+
return { cancelled: true, clients: [], removedPaths: [] };
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// Resolve the names BEFORE ~/.cybedefend (which records them) is deleted.
|
|
77
|
+
const mcpNames = trustedMcpNames(cybeDir);
|
|
78
|
+
const clients = [];
|
|
79
|
+
for (const adapter of adapters) {
|
|
80
|
+
try {
|
|
81
|
+
const result = adapter.uninstall({ mcpNames });
|
|
82
|
+
clients.push({ label: adapter.label, result });
|
|
83
|
+
reportClient(adapter.label, result);
|
|
84
|
+
}
|
|
85
|
+
catch (e) {
|
|
86
|
+
const error = e instanceof Error ? e.message : String(e);
|
|
87
|
+
clients.push({ label: adapter.label, error });
|
|
88
|
+
log.warn(`${adapter.label}: could not clean up — ${error}`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
for (const name of mcpNames) {
|
|
92
|
+
try {
|
|
93
|
+
clearAuthFn(name);
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
// Best-effort: a stale keychain entry is not worth failing the uninstall.
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
log.ok('Signed out (VibeDefend credentials cleared).');
|
|
100
|
+
const removedPaths = removeCybeDir(cybeDir);
|
|
101
|
+
if (removedPaths.length > 0) {
|
|
102
|
+
log.ok(`Removed ${cybeDir}`);
|
|
103
|
+
if (existsSync(join(cybeDir, 'regions.json'))) {
|
|
104
|
+
log.hint(`Kept your custom regions: ${join(cybeDir, 'regions.json')}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
printFooter(deps.installMode ?? detectInstallMode(resolveScriptPath()));
|
|
108
|
+
return { cancelled: false, clients, removedPaths };
|
|
109
|
+
}
|
|
110
|
+
function reportClient(label, result) {
|
|
111
|
+
if (result.hookFiles.length === 0 && result.mcpRemoved.length === 0) {
|
|
112
|
+
log.hint(`${label}: nothing to remove.`);
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
const parts = [];
|
|
116
|
+
if (result.hookFiles.length > 0)
|
|
117
|
+
parts.push(`hooks removed from ${result.hookFiles.join(', ')}`);
|
|
118
|
+
if (result.mcpRemoved.length > 0)
|
|
119
|
+
parts.push(`MCP ${result.mcpRemoved.join(', ')} unregistered`);
|
|
120
|
+
log.ok(`${label}: ${parts.join('; ')}.`);
|
|
121
|
+
}
|
|
122
|
+
/** Delete everything under `dir` but the user-owned files; drop `dir` once empty. */
|
|
123
|
+
function removeCybeDir(dir) {
|
|
124
|
+
if (!existsSync(dir))
|
|
125
|
+
return [];
|
|
126
|
+
const removed = [];
|
|
127
|
+
for (const entry of readdirSync(dir)) {
|
|
128
|
+
if (USER_OWNED_FILES.has(entry))
|
|
129
|
+
continue;
|
|
130
|
+
const path = join(dir, entry);
|
|
131
|
+
rmSync(path, { recursive: true, force: true });
|
|
132
|
+
removed.push(path);
|
|
133
|
+
}
|
|
134
|
+
if (readdirSync(dir).length === 0) {
|
|
135
|
+
rmSync(dir, { recursive: true, force: true });
|
|
136
|
+
removed.push(dir);
|
|
137
|
+
}
|
|
138
|
+
return removed;
|
|
139
|
+
}
|
|
140
|
+
function printFooter(mode) {
|
|
141
|
+
console.log();
|
|
142
|
+
log.ok('VibeDefend uninstalled.');
|
|
143
|
+
const remove = mode === 'pnpm-global'
|
|
144
|
+
? 'pnpm remove -g'
|
|
145
|
+
: mode === 'yarn-global'
|
|
146
|
+
? 'yarn global remove'
|
|
147
|
+
: 'npm uninstall -g';
|
|
148
|
+
if (GLOBAL_MODES.has(mode)) {
|
|
149
|
+
log.info(`Last step — remove the CLI itself: ${kleur.bold(`${remove} ${pkg.name}`)}`);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
log.hint(`If the CLI is installed globally (\`npx … install\` does that), remove it with: ${remove} ${pkg.name}`);
|
|
153
|
+
}
|
|
154
|
+
log.hint('Repositories keep their committed `.cybedefend/config.json`, and any other repo ' +
|
|
155
|
+
'wired for Windsurf keeps its `.windsurfrules` block — delete those by hand if unwanted.');
|
|
156
|
+
console.log();
|
|
157
|
+
}
|
|
158
|
+
function readJsonQuiet(path) {
|
|
159
|
+
try {
|
|
160
|
+
return existsSync(path) ? JSON.parse(readFileSync(path, 'utf8')) : null;
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=uninstall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../src/uninstall.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { execSync, spawnSync } from 'node:child_process';
|
|
2
|
-
import { existsSync, mkdirSync
|
|
2
|
+
import { existsSync, mkdirSync } from 'node:fs';
|
|
3
3
|
import { dirname, join } from 'node:path';
|
|
4
4
|
import { homedir, platform } from 'node:os';
|
|
5
5
|
import kleur from 'kleur';
|
|
@@ -20,25 +20,6 @@ export function ensureDirFor(filePath) {
|
|
|
20
20
|
if (!existsSync(dir))
|
|
21
21
|
mkdirSync(dir, { recursive: true });
|
|
22
22
|
}
|
|
23
|
-
/** Read JSON, defaulting to `{}` if absent. Surfaces parse errors. */
|
|
24
|
-
export function readJson(filePath, fallback) {
|
|
25
|
-
if (!existsSync(filePath))
|
|
26
|
-
return fallback;
|
|
27
|
-
const raw = readFileSync(filePath, 'utf8');
|
|
28
|
-
if (!raw.trim())
|
|
29
|
-
return fallback;
|
|
30
|
-
try {
|
|
31
|
-
return JSON.parse(raw);
|
|
32
|
-
}
|
|
33
|
-
catch (err) {
|
|
34
|
-
throw new Error(`Failed to parse JSON at ${filePath}: ${err.message}`);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
/** Write JSON with two-space indent + trailing newline. */
|
|
38
|
-
export function writeJson(filePath, data) {
|
|
39
|
-
ensureDirFor(filePath);
|
|
40
|
-
writeFileSync(filePath, JSON.stringify(data, null, 2) + '\n');
|
|
41
|
-
}
|
|
42
23
|
/**
|
|
43
24
|
* Best-effort `which`. Returns the absolute path or `null` if the binary
|
|
44
25
|
* isn't on PATH. Used to detect Claude Code's `claude` CLI before we try
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cybedefend/vibedefend",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.6",
|
|
4
4
|
"description": "VibeDefend — one-shot installer for CybeDefend's MCP server and Claude Code / Cursor / Codex / Windsurf hooks (for AI coding agents).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -28,9 +28,10 @@
|
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"@inquirer/prompts": "^7.10.1",
|
|
30
30
|
"commander": "^12.1.0",
|
|
31
|
+
"jsonc-parser": "^3.3.1",
|
|
31
32
|
"kleur": "^4.1.5",
|
|
32
33
|
"re2-wasm": "^1.0.2",
|
|
33
|
-
"shell-quote": "^1.
|
|
34
|
+
"shell-quote": "^1.12.0",
|
|
34
35
|
"update-notifier": "^7.3.1",
|
|
35
36
|
"zod": "^3.25.76"
|
|
36
37
|
},
|
|
@@ -39,9 +40,10 @@
|
|
|
39
40
|
"@types/shell-quote": "^1.7.5",
|
|
40
41
|
"@types/update-notifier": "^6.0.8",
|
|
41
42
|
"esbuild": "^0.28.2",
|
|
42
|
-
"tsx": "^4.23.
|
|
43
|
+
"tsx": "^4.23.15",
|
|
43
44
|
"typescript": "^5.9.3",
|
|
44
|
-
"
|
|
45
|
+
"vite": "^7.3.7",
|
|
46
|
+
"vitest": "^4.1.12"
|
|
45
47
|
},
|
|
46
48
|
"pnpm": {
|
|
47
49
|
"overrides": {
|