custodex 1.0.0 → 1.0.2

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 ADDED
@@ -0,0 +1,125 @@
1
+ # custodex
2
+
3
+ Universal AI agent governance — one command to govern Claude, Cursor, Gemini CLI, and OpenCode.
4
+
5
+ ```bash
6
+ npx custodex
7
+ ```
8
+
9
+ ## What it does
10
+
11
+ Custodex adds a governance layer to your AI coding tools. Every tool call — file writes, shell commands, MCP actions — is verified against your policies before execution.
12
+
13
+ ```
14
+ npx custodex
15
+
16
+ CUSTODEX — Universal AI Governance
17
+ v1.0.0
18
+
19
+ Enter your Custodex API key.
20
+ API key: cus_████████████████████████
21
+
22
+ Validating API key... OK
23
+
24
+ Detecting AI coding tools
25
+
26
+ ✓ Claude Code (1.0.23)
27
+ ✓ Cursor
28
+ ✓ Gemini CLI (0.1.8)
29
+ OpenCode — not found
30
+
31
+ Install Custodex governance into 3 tools?
32
+ Proceed with installation? [Y/n]: y
33
+
34
+ Writing shared config... OK
35
+ Claude Code... OK
36
+ Cursor... OK
37
+ Gemini CLI... OK
38
+ Registering admin agent... OK
39
+
40
+ Custodex is now active. 3/3 tools governed.
41
+ ```
42
+
43
+ ## Supported tools
44
+
45
+ | Tool | Detection | Governance |
46
+ |------|-----------|------------|
47
+ | **Claude Code** | `~/.claude/` or `which claude` | Synchronous — can deny tool calls |
48
+ | **Cursor** | `~/.cursor/` | Synchronous — can deny tool calls |
49
+ | **Gemini CLI** | `~/.gemini/` or `which gemini` | Advisory — logs all actions |
50
+ | **OpenCode** | `~/.config/opencode/` | Plugin — TypeScript Bun plugin |
51
+
52
+ ## Commands
53
+
54
+ ```bash
55
+ npx custodex # Interactive setup wizard
56
+ npx custodex init # Same as above
57
+ npx custodex --api-key <key> # Skip the API key prompt
58
+ npx custodex --yes # Auto-confirm all prompts
59
+ npx custodex --status # Show current configuration
60
+ npx custodex --uninstall # Remove all governance integrations
61
+ ```
62
+
63
+ ## How it works
64
+
65
+ 1. **Detects** which AI coding tools are installed on your machine
66
+ 2. **Validates** your API key against the Custodex backend
67
+ 3. **Installs** governance integrations into each detected tool's configuration
68
+ 4. **Registers** an admin agent with your Custodex dashboard
69
+
70
+ Once installed, every tool call your AI agents make flows through the Custodex governance pipeline:
71
+
72
+ ```
73
+ Agent calls tool → Custodex verifies → Allow / Deny → Log to audit trail
74
+ ```
75
+
76
+ ## What gets governed
77
+
78
+ | Action | Scope | Enforcement |
79
+ |--------|-------|-------------|
80
+ | File writes & edits | `file:write` | Synchronous deny |
81
+ | Shell commands | `shell:execute` | Synchronous deny |
82
+ | MCP tool calls | `mcp:*` | Synchronous deny |
83
+ | Agent spawning | `agent:spawn` | Logged |
84
+ | User prompts | `prompt:submit` | Logged |
85
+
86
+ ## Configuration
87
+
88
+ Custodex stores its configuration at `~/.custodex/config.json`:
89
+
90
+ ```json
91
+ {
92
+ "apiKey": "cus_...",
93
+ "baseUrl": "https://a2agov.com",
94
+ "version": "1.0.0",
95
+ "installedAt": 1710201600000
96
+ }
97
+ ```
98
+
99
+ ## Uninstall
100
+
101
+ ```bash
102
+ npx custodex --uninstall
103
+ ```
104
+
105
+ This cleanly removes all Custodex governance integrations from every configured tool and deletes the `~/.custodex` directory.
106
+
107
+ ## Requirements
108
+
109
+ - Node.js >= 18
110
+ - At least one supported AI coding tool installed
111
+ - A Custodex API key from [a2agov.com](https://a2agov.com)
112
+
113
+ ## Zero dependencies
114
+
115
+ The CLI has **no runtime dependencies** — only Node.js built-ins. The published package is 27 KB.
116
+
117
+ ## Links
118
+
119
+ - **Dashboard:** [a2agov.com](https://a2agov.com)
120
+ - **Docs:** [a2agov.com/docs](https://a2agov.com/docs)
121
+ - **SDK:** [`@custodex/sdk`](https://www.npmjs.com/package/@custodex/sdk)
122
+
123
+ ## License
124
+
125
+ MIT
package/dist/detect.d.ts CHANGED
@@ -14,9 +14,9 @@ export interface DetectedIDE {
14
14
  detected: boolean;
15
15
  /** Version string from CLI --version, if available */
16
16
  version?: string;
17
- /** Absolute path where governance hooks config is written */
17
+ /** Absolute path where governance config is written */
18
18
  globalConfigPath: string;
19
- /** Whether governance hooks are enforced hard or soft */
19
+ /** Whether governance is enforced hard or soft */
20
20
  enforcement: "mandatory" | "advisory";
21
21
  }
22
22
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,6DAA6D;AAC7D,MAAM,WAAW,WAAW;IAC1B,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,EAAE,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;IAChD,gDAAgD;IAChD,QAAQ,EAAE,OAAO,CAAC;IAClB,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,gBAAgB,EAAE,MAAM,CAAC;IACzB,yDAAyD;IACzD,WAAW,EAAE,WAAW,GAAG,UAAU,CAAC;CACvC;AA8BD;;;GAGG;AACH,wBAAgB,UAAU,IAAI,WAAW,EAAE,CA6E1C"}
1
+ {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,6DAA6D;AAC7D,MAAM,WAAW,WAAW;IAC1B,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,EAAE,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;IAChD,gDAAgD;IAChD,QAAQ,EAAE,OAAO,CAAC;IAClB,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,gBAAgB,EAAE,MAAM,CAAC;IACzB,kDAAkD;IAClD,WAAW,EAAE,WAAW,GAAG,UAAU,CAAC;CACvC;AA8BD;;;GAGG;AACH,wBAAgB,UAAU,IAAI,WAAW,EAAE,CA6E1C"}
package/dist/index.d.ts CHANGED
@@ -7,7 +7,7 @@
7
7
  * npx custodex init # same as above
8
8
  * npx custodex --api-key <key> # skip API key prompt
9
9
  * npx custodex --yes # auto-confirm all prompts
10
- * npx custodex --uninstall # remove all governance hooks
10
+ * npx custodex --uninstall # remove all governance integrations
11
11
  * npx custodex --status # show current config
12
12
  * npx custodex --help # show this help
13
13
  * npx custodex --version # show version
package/dist/index.js CHANGED
@@ -7,7 +7,7 @@
7
7
  * npx custodex init # same as above
8
8
  * npx custodex --api-key <key> # skip API key prompt
9
9
  * npx custodex --yes # auto-confirm all prompts
10
- * npx custodex --uninstall # remove all governance hooks
10
+ * npx custodex --uninstall # remove all governance integrations
11
11
  * npx custodex --status # show current config
12
12
  * npx custodex --help # show this help
13
13
  * npx custodex --version # show version
@@ -26,7 +26,7 @@ function printHelp() {
26
26
 
27
27
  Commands:
28
28
  init Run the interactive setup wizard (default)
29
- --uninstall Remove all Custodex governance hooks
29
+ --uninstall Remove all Custodex governance integrations
30
30
  --status Show current configuration and detected tools
31
31
 
32
32
  Options:
package/dist/install.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Installation Module
3
3
  *
4
- * Writes governance hook configs for each detected IDE and registers
4
+ * Writes governance configs for each detected IDE and registers
5
5
  * a Custodex admin agent with the backend.
6
6
  */
7
7
  import type { DetectedIDE } from "./detect.js";
@@ -20,22 +20,22 @@ export interface InstallResult {
20
20
  error?: string;
21
21
  }
22
22
  /**
23
- * Write ~/.custodex/config.json and install the hook script.
24
- * The hook script is copied from the package's hooks/ directory.
23
+ * Write ~/.custodex/config.json and install the governance script.
24
+ * The script is copied from the package's hooks/ directory.
25
25
  */
26
26
  export declare function writeSharedConfig(config: CustodexConfig): void;
27
27
  /**
28
- * Install governance hooks into Claude Code's global settings.json.
29
- * Preserves all existing hook configuration — only appends new entries.
28
+ * Install Custodex governance into Claude Code's global settings.json.
29
+ * Preserves all existing configuration — only appends new entries.
30
30
  */
31
31
  export declare function installClaude(): InstallResult;
32
32
  /**
33
- * Install governance hooks into Cursor's hooks.json.
33
+ * Install Custodex governance into Cursor's configuration.
34
34
  * Creates the file if absent; merges if present.
35
35
  */
36
36
  export declare function installCursor(): InstallResult;
37
37
  /**
38
- * Install governance hooks into Gemini CLI's settings.json.
38
+ * Install Custodex governance into Gemini CLI's settings.json.
39
39
  * Note: Gemini uses milliseconds for timeout values.
40
40
  */
41
41
  export declare function installGemini(): InstallResult;
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,+CAA+C;AAC/C,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,kDAAkD;AAClD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAwGD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAgE9D;AAID;;;GAGG;AACH,wBAAgB,aAAa,IAAI,aAAa,CAgE7C;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,aAAa,CAuD7C;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,aAAa,CAsD7C;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,aAAa,CA6B/C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,WAAW,GAAG,aAAa,CAkB1D;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CA+B1D"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,+CAA+C;AAC/C,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,kDAAkD;AAClD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAwGD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAuC9D;AAID;;;GAGG;AACH,wBAAgB,aAAa,IAAI,aAAa,CAmE7C;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,aAAa,CA0D7C;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,aAAa,CAyD7C;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,aAAa,CA6B/C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,WAAW,GAAG,aAAa,CAkB1D;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CA+B1D"}
package/dist/install.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Installation Module
3
3
  *
4
- * Writes governance hook configs for each detected IDE and registers
4
+ * Writes governance configs for each detected IDE and registers
5
5
  * a Custodex admin agent with the backend.
6
6
  */
7
7
  import * as fs from "fs";
@@ -96,8 +96,8 @@ function httpsPost(url, body, apiKey) {
96
96
  }
97
97
  // ─── Shared config ──────────────────────────────────────────────────────────
98
98
  /**
99
- * Write ~/.custodex/config.json and install the hook script.
100
- * The hook script is copied from the package's hooks/ directory.
99
+ * Write ~/.custodex/config.json and install the governance script.
100
+ * The script is copied from the package's hooks/ directory.
101
101
  */
102
102
  export function writeSharedConfig(config) {
103
103
  const custodexDir = path.join(os.homedir(), ".custodex");
@@ -106,48 +106,29 @@ export function writeSharedConfig(config) {
106
106
  // Write config
107
107
  const configPath = path.join(custodexDir, "config.json");
108
108
  writeJsonFile(configPath, config);
109
- // Copy hook.sh from package hooks/ → ~/.custodex/hook.sh
110
- const hookDst = path.join(custodexDir, "hook.sh");
111
109
  // Compiled output lives in dist/install.js; package root is one level up.
112
110
  const packageRoot = path.resolve(path.dirname(new URL(import.meta.url).pathname), "..");
111
+ // Copy hook.js (Node.js, cross-platform) → ~/.custodex/hook.js
112
+ const hookJsDst = path.join(custodexDir, "hook.js");
113
+ const hookJsSrc = path.join(packageRoot, "hooks", "hook.js");
114
+ if (fs.existsSync(hookJsSrc)) {
115
+ fs.copyFileSync(hookJsSrc, hookJsDst);
116
+ }
117
+ // Copy hook.sh (bash, Unix only) → ~/.custodex/hook.sh
118
+ const hookDst = path.join(custodexDir, "hook.sh");
113
119
  const hookSrc = path.join(packageRoot, "hooks", "hook.sh");
114
120
  if (fs.existsSync(hookSrc)) {
115
121
  fs.copyFileSync(hookSrc, hookDst);
116
122
  }
117
- else {
118
- // Write a minimal hook if the package hook is missing (e.g. dev environment)
119
- fs.writeFileSync(hookDst, `#!/usr/bin/env bash
120
- # Custodex governance hook
121
- # Reads event JSON from stdin and forwards to the Custodex backend.
122
-
123
- set -euo pipefail
124
-
125
- CUSTODEX_CONFIG="${custodexDir}/config.json"
126
- if [ ! -f "$CUSTODEX_CONFIG" ]; then
127
- exit 0
128
- fi
129
-
130
- API_KEY=$(node -e "const c=require('$CUSTODEX_CONFIG');process.stdout.write(c.apiKey||'')" 2>/dev/null || true)
131
- BASE_URL=$(node -e "const c=require('$CUSTODEX_CONFIG');process.stdout.write(c.baseUrl||'')" 2>/dev/null || true)
132
-
133
- if [ -z "$API_KEY" ] || [ -z "$BASE_URL" ]; then
134
- exit 0
135
- fi
136
-
137
- # Read event payload from stdin (Claude Code / Cursor pass JSON here)
138
- PAYLOAD=$(cat -)
139
-
140
- # Fire-and-forget telemetry — never block the IDE
141
- curl -s -X POST "$BASE_URL/api/telemetry" \\
142
- -H "Authorization: Bearer $API_KEY" \\
143
- -H "Content-Type: application/json" \\
144
- -d "$PAYLOAD" \\
145
- --max-time 3 >/dev/null 2>&1 || true
146
-
147
- exit 0
148
- `, { encoding: "utf8" });
123
+ // Make both executable on Unix
124
+ try {
125
+ fs.chmodSync(hookDst, 0o755);
126
+ }
127
+ catch { /* Windows: no chmod needed */ }
128
+ try {
129
+ fs.chmodSync(hookJsDst, 0o755);
149
130
  }
150
- fs.chmodSync(hookDst, 0o755);
131
+ catch { /* Windows: no chmod needed */ }
151
132
  // Copy OpenCode plugin
152
133
  const pluginDst = path.join(custodexDir, "plugins", "custodex-opencode.ts");
153
134
  const pluginSrc = path.join(packageRoot, "plugins", "custodex-opencode.ts");
@@ -157,13 +138,16 @@ exit 0
157
138
  }
158
139
  // ─── Per-IDE installers ──────────────────────────────────────────────────────
159
140
  /**
160
- * Install governance hooks into Claude Code's global settings.json.
161
- * Preserves all existing hook configuration — only appends new entries.
141
+ * Install Custodex governance into Claude Code's global settings.json.
142
+ * Preserves all existing configuration — only appends new entries.
162
143
  */
163
144
  export function installClaude() {
164
145
  try {
165
146
  const home = os.homedir();
166
- const hookCmd = `${home}/.custodex/hook.sh`;
147
+ const isWindows = process.platform === "win32";
148
+ const hookCmd = isWindows
149
+ ? `node "${path.join(home, ".custodex", "hook.js")}"`
150
+ : `${home}/.custodex/hook.sh`;
167
151
  const settingsPath = path.join(home, ".claude", "settings.json");
168
152
  fs.mkdirSync(path.join(home, ".claude"), { recursive: true });
169
153
  const existing = readJsonFile(settingsPath);
@@ -219,13 +203,16 @@ export function installClaude() {
219
203
  }
220
204
  }
221
205
  /**
222
- * Install governance hooks into Cursor's hooks.json.
206
+ * Install Custodex governance into Cursor's configuration.
223
207
  * Creates the file if absent; merges if present.
224
208
  */
225
209
  export function installCursor() {
226
210
  try {
227
211
  const home = os.homedir();
228
- const hookCmd = `${home}/.custodex/hook.sh`;
212
+ const isWindows = process.platform === "win32";
213
+ const hookCmd = isWindows
214
+ ? `node "${path.join(home, ".custodex", "hook.js")}"`
215
+ : `${home}/.custodex/hook.sh`;
229
216
  const hooksPath = path.join(home, ".cursor", "hooks.json");
230
217
  fs.mkdirSync(path.join(home, ".cursor"), { recursive: true });
231
218
  const existing = readJsonFile(hooksPath);
@@ -272,13 +259,16 @@ export function installCursor() {
272
259
  }
273
260
  }
274
261
  /**
275
- * Install governance hooks into Gemini CLI's settings.json.
262
+ * Install Custodex governance into Gemini CLI's settings.json.
276
263
  * Note: Gemini uses milliseconds for timeout values.
277
264
  */
278
265
  export function installGemini() {
279
266
  try {
280
267
  const home = os.homedir();
281
- const hookCmd = `${home}/.custodex/hook.sh`;
268
+ const isWindows = process.platform === "win32";
269
+ const hookCmd = isWindows
270
+ ? `node "${path.join(home, ".custodex", "hook.js")}"`
271
+ : `${home}/.custodex/hook.sh`;
282
272
  const settingsPath = path.join(home, ".gemini", "settings.json");
283
273
  fs.mkdirSync(path.join(home, ".gemini"), { recursive: true });
284
274
  const existing = readJsonFile(settingsPath);
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Uninstall Module
3
3
  *
4
- * Cleanly removes all Custodex governance hooks from each IDE's config
4
+ * Cleanly removes all Custodex governance integrations from each IDE's config
5
5
  * and deletes the ~/.custodex directory.
6
6
  */
7
7
  /**
package/dist/uninstall.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Uninstall Module
3
3
  *
4
- * Cleanly removes all Custodex governance hooks from each IDE's config
4
+ * Cleanly removes all Custodex governance integrations from each IDE's config
5
5
  * and deletes the ~/.custodex directory.
6
6
  */
7
7
  import * as fs from "fs";
@@ -75,7 +75,7 @@ function stripHooksFromMap(hooksMap) {
75
75
  }
76
76
  return cleaned;
77
77
  }
78
- /** Remove Custodex hooks from Claude Code's settings.json */
78
+ /** Remove Custodex governance from Claude Code's settings.json */
79
79
  function removeClaude() {
80
80
  const settingsPath = path.join(os.homedir(), ".claude", "settings.json");
81
81
  if (!fs.existsSync(settingsPath))
@@ -88,7 +88,7 @@ function removeClaude() {
88
88
  }
89
89
  writeJsonFile(settingsPath, settings);
90
90
  }
91
- /** Remove Custodex hooks from Cursor's hooks.json */
91
+ /** Remove Custodex governance from Cursor's configuration */
92
92
  function removeCursor() {
93
93
  const hooksPath = path.join(os.homedir(), ".cursor", "hooks.json");
94
94
  if (!fs.existsSync(hooksPath))
@@ -101,7 +101,7 @@ function removeCursor() {
101
101
  }
102
102
  writeJsonFile(hooksPath, config);
103
103
  }
104
- /** Remove Custodex hooks from Gemini CLI's settings.json */
104
+ /** Remove Custodex governance from Gemini CLI's settings.json */
105
105
  function removeGemini() {
106
106
  const settingsPath = path.join(os.homedir(), ".gemini", "settings.json");
107
107
  if (!fs.existsSync(settingsPath))
@@ -146,7 +146,7 @@ function rmrf(dirPath) {
146
146
  * Remove all Custodex governance configuration from the system.
147
147
  */
148
148
  export function runUninstall() {
149
- process.stdout.write("Removing Custodex governance hooks...\n\n");
149
+ process.stdout.write("Removing Custodex governance...\n\n");
150
150
  const steps = [
151
151
  { label: "Claude Code", fn: removeClaude },
152
152
  { label: "Cursor", fn: removeCursor },
@@ -171,6 +171,6 @@ export function runUninstall() {
171
171
  catch (err) {
172
172
  process.stdout.write(`\n [--] Could not remove ${custodexDir}: ${String(err)}\n`);
173
173
  }
174
- process.stdout.write("\nCustodex governance removed. Restart your IDEs.\n");
174
+ process.stdout.write("\nCustodex governance removed. Restart your IDEs to complete removal.\n");
175
175
  }
176
176
  //# sourceMappingURL=uninstall.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../src/uninstall.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../src/uninstall.ts"],"names":[],"mappings":"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"}
package/dist/wizard.d.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  * Interactive Wizard
3
3
  *
4
4
  * Guides the user through detecting installed AI coding tools and wiring
5
- * Custodex governance hooks into each one. Uses only Node.js built-ins.
5
+ * Custodex governance into each one. Uses only Node.js built-ins.
6
6
  */
7
7
  export interface WizardOptions {
8
8
  apiKey?: string;
package/dist/wizard.js CHANGED
@@ -2,7 +2,7 @@
2
2
  * Interactive Wizard
3
3
  *
4
4
  * Guides the user through detecting installed AI coding tools and wiring
5
- * Custodex governance hooks into each one. Uses only Node.js built-ins.
5
+ * Custodex governance into each one. Uses only Node.js built-ins.
6
6
  */
7
7
  import * as fs from "fs";
8
8
  import * as os from "os";
@@ -208,7 +208,7 @@ export async function runWizard(options = {}) {
208
208
  }
209
209
  // ── Step 5: Confirm ───────────────────────────────────────────────────
210
210
  printSeparator();
211
- print(` ${BOLD}Install governance hooks${RESET} into ${detectedIDEs.length} tool${detectedIDEs.length === 1 ? "" : "s"}?`);
211
+ print(` ${BOLD}Install Custodex governance${RESET} into ${detectedIDEs.length} tool${detectedIDEs.length === 1 ? "" : "s"}?`);
212
212
  printSeparator();
213
213
  print("");
214
214
  const confirmed = options.autoYes
@@ -239,7 +239,7 @@ export async function runWizard(options = {}) {
239
239
  }
240
240
  // ── Step 7: Install per-IDE ───────────────────────────────────────────
241
241
  printSeparator();
242
- print(` ${BOLD}Installing hooks${RESET}`);
242
+ print(` ${BOLD}Installing governance${RESET}`);
243
243
  printSeparator();
244
244
  print("");
245
245
  const results = [];
@@ -265,7 +265,7 @@ export async function runWizard(options = {}) {
265
265
  }
266
266
  else {
267
267
  process.stdout.write(`${YELLOW}SKIPPED${RESET}\n`);
268
- print(` ${DIM}Could not register admin agent — governance hooks are still active.${RESET}`);
268
+ print(` ${DIM}Could not register admin agent — governance is still active.${RESET}`);
269
269
  }
270
270
  print("");
271
271
  // ── Step 9: Summary ───────────────────────────────────────────────────
@@ -275,7 +275,7 @@ export async function runWizard(options = {}) {
275
275
  `${successCount}/${results.length} tool${results.length === 1 ? "" : "s"} governed.`);
276
276
  printSeparator();
277
277
  print("");
278
- print(` ${YELLOW}Restart your IDEs${RESET} to activate governance hooks.`);
278
+ print(` ${YELLOW}Restart your IDEs${RESET} to activate governance.`);
279
279
  print(` ${DIM}Dashboard: ${CYAN}${baseUrl}${RESET}`);
280
280
  print("");
281
281
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wizard.js","sourceRoot":"","sources":["../src/wizard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wizard.js","sourceRoot":"","sources":["../src/wizard.ts"],"names":[],"mappings":"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"}
package/hooks/hook.js ADDED
@@ -0,0 +1,628 @@
1
+ #!/usr/bin/env node
2
+ // ============================================================
3
+ // Custodex Universal Governance Hook (Node.js)
4
+ // Version: 1.0.0
5
+ //
6
+ // Cross-platform equivalent of hook.sh — zero external dependencies.
7
+ // Only Node.js built-ins: fs, path, os, https, http, crypto
8
+ //
9
+ // Supported IDEs (detected in priority order):
10
+ // 1. Gemini CLI — GEMINI_SESSION_ID env var is set
11
+ // 2. Cursor — input JSON has conversation_id but no session_id
12
+ // 3. Claude Code — input JSON has session_id (default fallback)
13
+ // ============================================================
14
+
15
+ 'use strict';
16
+
17
+ const fs = require('fs');
18
+ const path = require('path');
19
+ const os = require('os');
20
+ const https = require('https');
21
+ const http = require('http');
22
+
23
+ // ─── 1. LOAD CONFIG ─────────────────────────────────────────────────────────
24
+
25
+ let CUSTODEX_API_KEY = process.env.CUSTODEX_API_KEY || '';
26
+ let CUSTODEX_BASE_URL = process.env.CUSTODEX_BASE_URL || '';
27
+ const CUSTODEX_PROJECT_FILTER = process.env.CUSTODEX_PROJECT_FILTER || '';
28
+
29
+ const configFile = path.join(os.homedir(), '.custodex', 'config.json');
30
+ try {
31
+ if (fs.existsSync(configFile)) {
32
+ const cfg = JSON.parse(fs.readFileSync(configFile, 'utf8'));
33
+ if (!CUSTODEX_API_KEY && cfg.apiKey) CUSTODEX_API_KEY = cfg.apiKey;
34
+ if (!CUSTODEX_BASE_URL && cfg.baseUrl) CUSTODEX_BASE_URL = cfg.baseUrl.replace(/\/+$/, '');
35
+ }
36
+ } catch (_) { /* ignore config read errors */ }
37
+
38
+ // Bail out silently if not configured — never break the IDE.
39
+ if (!CUSTODEX_API_KEY || !CUSTODEX_BASE_URL) process.exit(0);
40
+
41
+ CUSTODEX_BASE_URL = CUSTODEX_BASE_URL.replace(/\/+$/, '');
42
+
43
+ // ─── 2. STATE DIRECTORY ─────────────────────────────────────────────────────
44
+
45
+ const STATE_DIR = path.join(os.tmpdir(), 'custodex-hooks');
46
+ try { fs.mkdirSync(STATE_DIR, { recursive: true }); } catch (_) { /* ok */ }
47
+
48
+ // ─── 3. READ STDIN (synchronous) ────────────────────────────────────────────
49
+
50
+ let INPUT = '';
51
+ try {
52
+ INPUT = fs.readFileSync(0, 'utf8');
53
+ } catch (_) { /* empty stdin */ }
54
+
55
+ let inputData = {};
56
+ try { inputData = JSON.parse(INPUT); } catch (_) { inputData = {}; }
57
+
58
+ // ─── 4. IDE DETECTION & FIELD NORMALISATION ─────────────────────────────────
59
+
60
+ const geminiSession = process.env.GEMINI_SESSION_ID || '';
61
+ let IDE;
62
+ if (geminiSession) {
63
+ IDE = 'gemini';
64
+ } else if ('conversation_id' in inputData && !('session_id' in inputData)) {
65
+ IDE = 'cursor';
66
+ } else {
67
+ IDE = 'claude';
68
+ }
69
+
70
+ // Raw event name
71
+ const RAW_EVENT = inputData.hook_event_name || '';
72
+
73
+ // Canonical event mapping
74
+ const EVENT_MAP = {
75
+ SessionStart: 'SessionStart', sessionStart: 'SessionStart',
76
+ SubagentStart: 'SubagentStart', subagentStart: 'SubagentStart',
77
+ PreToolUse: 'PreToolUse', preToolUse: 'PreToolUse',
78
+ beforeShellExecution: 'PreToolUse', beforeMCPExecution: 'PreToolUse',
79
+ BeforeTool: 'PreToolUse',
80
+ PostToolUse: 'PostToolUse', postToolUse: 'PostToolUse',
81
+ afterShellExecution: 'PostToolUse', afterFileEdit: 'PostToolUse',
82
+ AfterTool: 'PostToolUse',
83
+ UserPromptSubmit: 'UserPromptSubmit', beforeSubmitPrompt: 'UserPromptSubmit',
84
+ BeforeAgent: 'UserPromptSubmit',
85
+ };
86
+ const EVENT = EVENT_MAP[RAW_EVENT] || RAW_EVENT;
87
+
88
+ // Session ID
89
+ let SESSION_ID;
90
+ if (IDE === 'gemini') {
91
+ SESSION_ID = geminiSession;
92
+ } else if (IDE === 'cursor') {
93
+ SESSION_ID = inputData.conversation_id || inputData.session_id || '';
94
+ } else {
95
+ SESSION_ID = inputData.session_id || '';
96
+ }
97
+
98
+ // Tool name
99
+ let TOOL_NAME;
100
+ if (RAW_EVENT === 'beforeShellExecution' || RAW_EVENT === 'afterShellExecution') {
101
+ TOOL_NAME = 'Bash';
102
+ } else if (RAW_EVENT === 'afterFileEdit') {
103
+ TOOL_NAME = 'Edit';
104
+ } else {
105
+ TOOL_NAME = inputData.tool_name || '';
106
+ }
107
+
108
+ // CWD
109
+ const CWD = inputData.cwd || process.env.PWD || process.cwd();
110
+
111
+ // Subagent fields
112
+ let SUBAGENT_ID, SUBAGENT_TYPE;
113
+ if (IDE === 'cursor') {
114
+ SUBAGENT_ID = inputData.subagent_id || inputData.agent_id || '';
115
+ SUBAGENT_TYPE = inputData.subagent_type || inputData.agent_type || '';
116
+ } else {
117
+ SUBAGENT_ID = inputData.agent_id || '';
118
+ SUBAGENT_TYPE = inputData.agent_type || '';
119
+ }
120
+
121
+ // User prompt
122
+ const USER_PROMPT = String(inputData.user_prompt || inputData.prompt || '').slice(0, 4096);
123
+
124
+ // Tool output (truncated)
125
+ let TOOL_OUTPUT = inputData.tool_output || inputData.output || '';
126
+ if (typeof TOOL_OUTPUT === 'object') {
127
+ TOOL_OUTPUT = JSON.stringify(TOOL_OUTPUT).slice(0, 2048);
128
+ } else {
129
+ TOOL_OUTPUT = String(TOOL_OUTPUT).slice(0, 2048);
130
+ }
131
+
132
+ // Cursor-specific
133
+ const COMPOSER_MODE = String(inputData.composer_mode || '').toLowerCase();
134
+ const IS_BACKGROUND_AGENT = String(inputData.is_background_agent || '').toLowerCase();
135
+ const TOOL_USE_ID = inputData.tool_use_id || '';
136
+
137
+ // ─── 5. PROJECT FILTER ──────────────────────────────────────────────────────
138
+
139
+ if (CUSTODEX_PROJECT_FILTER && !CWD.includes(CUSTODEX_PROJECT_FILTER)) {
140
+ process.exit(0);
141
+ }
142
+
143
+ // ─── 6. UTILITY FUNCTIONS ───────────────────────────────────────────────────
144
+
145
+ function stateFile(name) {
146
+ return path.join(STATE_DIR, name);
147
+ }
148
+
149
+ function readState(name) {
150
+ try { return fs.readFileSync(stateFile(name), 'utf8'); } catch (_) { return ''; }
151
+ }
152
+
153
+ function writeState(name, value) {
154
+ try { fs.writeFileSync(stateFile(name), value, 'utf8'); } catch (_) { /* ignore */ }
155
+ }
156
+
157
+ function getAgentId() {
158
+ if (SUBAGENT_ID) {
159
+ return readState(`subagent-${SESSION_ID}-${SUBAGENT_ID}`);
160
+ }
161
+ return readState(`agent-${SESSION_ID}`);
162
+ }
163
+
164
+ function saveAgentId(id) {
165
+ if (SUBAGENT_ID) {
166
+ writeState(`subagent-${SESSION_ID}-${SUBAGENT_ID}`, id);
167
+ } else {
168
+ writeState(`agent-${SESSION_ID}`, id);
169
+ }
170
+ }
171
+
172
+ function toolToAction(t) {
173
+ if (t === 'Write' || t === 'Edit') return 'file:write';
174
+ if (t === 'Bash' || t === 'shell') return 'shell:execute';
175
+ if (t === 'Read') return 'file:read';
176
+ if (t === 'Agent' || t === 'Task') return 'agent:spawn';
177
+ if (t === 'Glob' || t === 'Grep') return 'file:search';
178
+ if (t === 'WebFetch' || t === 'WebSearch') return 'web:access';
179
+ if (t.startsWith('mcp__')) return 'mcp:call';
180
+ return 'tool:use';
181
+ }
182
+
183
+ function extractScope() {
184
+ const ti = inputData.tool_input;
185
+ if (ti && typeof ti === 'object') {
186
+ const keys = ['file_path', 'command', 'pattern', 'description', 'prompt', 'url', 'query', 'skill'];
187
+ for (const k of keys) {
188
+ if (k in ti) return String(ti[k]).slice(0, 150);
189
+ }
190
+ }
191
+ return TOOL_NAME;
192
+ }
193
+
194
+ function projectName() {
195
+ return path.basename(CWD || 'unknown');
196
+ }
197
+
198
+ // ─── HTTP helpers ────────────────────────────────────────────────────────────
199
+
200
+ function parseUrl(endpoint) {
201
+ const full = CUSTODEX_BASE_URL + endpoint;
202
+ const u = new URL(full);
203
+ return u;
204
+ }
205
+
206
+ /** Synchronous HTTP request — blocks until response or timeout. */
207
+ function httpSync(method, endpoint, body) {
208
+ try {
209
+ const u = parseUrl(endpoint);
210
+ const bodyStr = JSON.stringify(body);
211
+ const isHttps = u.protocol === 'https:';
212
+ const options = {
213
+ hostname: u.hostname,
214
+ port: u.port || (isHttps ? 443 : 80),
215
+ path: u.pathname + u.search,
216
+ method: method,
217
+ headers: {
218
+ 'Authorization': `Bearer ${CUSTODEX_API_KEY}`,
219
+ 'Content-Type': 'application/json',
220
+ 'Content-Length': Buffer.byteLength(bodyStr),
221
+ },
222
+ timeout: 4000,
223
+ };
224
+
225
+ // Use child_process.execFileSync to perform a synchronous HTTP call
226
+ // by spawning a small inline Node script that writes the response to stdout.
227
+ const { execFileSync } = require('child_process');
228
+ const script = `
229
+ const ${isHttps ? 'https' : 'http'} = require('${isHttps ? 'https' : 'http'}');
230
+ const options = ${JSON.stringify(options)};
231
+ const body = ${JSON.stringify(bodyStr)};
232
+ const req = ${isHttps ? 'https' : 'http'}.request(options, (res) => {
233
+ let data = '';
234
+ res.on('data', (c) => { data += c; });
235
+ res.on('end', () => {
236
+ process.stdout.write(data);
237
+ });
238
+ });
239
+ req.on('error', () => { process.exit(0); });
240
+ req.on('timeout', () => { req.destroy(); process.exit(0); });
241
+ req.write(body);
242
+ req.end();
243
+ `;
244
+ const result = execFileSync(process.execPath, ['-e', script], {
245
+ timeout: 5000,
246
+ stdio: ['pipe', 'pipe', 'pipe'],
247
+ env: process.env,
248
+ });
249
+ return result.toString('utf8');
250
+ } catch (_) {
251
+ return '';
252
+ }
253
+ }
254
+
255
+ /** Fire-and-forget HTTP request — spawns detached child, never blocks. */
256
+ function httpFireAndForget(method, endpoint, body) {
257
+ try {
258
+ const u = parseUrl(endpoint);
259
+ const bodyStr = JSON.stringify(body);
260
+ const isHttps = u.protocol === 'https:';
261
+ const options = {
262
+ hostname: u.hostname,
263
+ port: u.port || (isHttps ? 443 : 80),
264
+ path: u.pathname + u.search,
265
+ method: method,
266
+ headers: {
267
+ 'Authorization': `Bearer ${CUSTODEX_API_KEY}`,
268
+ 'Content-Type': 'application/json',
269
+ 'Content-Length': Buffer.byteLength(bodyStr),
270
+ },
271
+ timeout: 4000,
272
+ };
273
+
274
+ const { spawn } = require('child_process');
275
+ const script = `
276
+ const ${isHttps ? 'https' : 'http'} = require('${isHttps ? 'https' : 'http'}');
277
+ const req = ${isHttps ? 'https' : 'http'}.request(${JSON.stringify(options)}, (res) => {
278
+ res.resume();
279
+ res.on('end', () => process.exit(0));
280
+ });
281
+ req.on('error', () => process.exit(0));
282
+ req.on('timeout', () => { req.destroy(); process.exit(0); });
283
+ req.write(${JSON.stringify(bodyStr)});
284
+ req.end();
285
+ `;
286
+ const child = spawn(process.execPath, ['-e', script], {
287
+ detached: true,
288
+ stdio: 'ignore',
289
+ });
290
+ child.unref();
291
+ } catch (_) { /* fail silently */ }
292
+ }
293
+
294
+ // ─── DENY RESPONSE ──────────────────────────────────────────────────────────
295
+
296
+ function denyResponse(reason) {
297
+ if (IDE === 'claude') {
298
+ const resp = {
299
+ hookSpecificOutput: {
300
+ hookEventName: 'PreToolUse',
301
+ permissionDecision: 'deny',
302
+ permissionDecisionReason: `Custodex: ${reason}`,
303
+ },
304
+ };
305
+ process.stdout.write(JSON.stringify(resp) + '\n');
306
+ } else if (IDE === 'cursor') {
307
+ const resp = {
308
+ permission: 'deny',
309
+ user_message: `Custodex: ${reason}`,
310
+ };
311
+ process.stdout.write(JSON.stringify(resp) + '\n');
312
+ } else if (IDE === 'gemini') {
313
+ process.exit(2);
314
+ }
315
+ process.exit(0);
316
+ }
317
+
318
+ // ─── REGISTER AGENT ─────────────────────────────────────────────────────────
319
+
320
+ function registerAgent(name, extraMeta) {
321
+ const metadata = Object.assign({
322
+ project: projectName(),
323
+ source: 'universal-hook',
324
+ ide: IDE,
325
+ sessionId: SESSION_ID,
326
+ }, extraMeta || {});
327
+
328
+ const body = {
329
+ name: name,
330
+ scopes: ['read', 'write', 'execute'],
331
+ metadata: metadata,
332
+ protocol: 'mcp',
333
+ };
334
+
335
+ const responseStr = httpSync('POST', '/api/agents/register', body);
336
+ if (responseStr) {
337
+ try {
338
+ const resp = JSON.parse(responseStr);
339
+ const agentId = resp.agentId || '';
340
+ if (agentId) {
341
+ saveAgentId(agentId);
342
+ return agentId;
343
+ }
344
+ } catch (_) { /* ignore parse errors */ }
345
+ }
346
+ return '';
347
+ }
348
+
349
+ // ─── 7. EVENT HANDLERS ──────────────────────────────────────────────────────
350
+
351
+ function handleSessionStart() {
352
+ const proj = projectName();
353
+ const agentName = `${proj}-orchestrator`;
354
+
355
+ const extraMeta = { role: 'orchestrator', autoDiscovered: true };
356
+ if (IDE === 'cursor') {
357
+ extraMeta.composerMode = COMPOSER_MODE;
358
+ extraMeta.isBackgroundAgent = IS_BACKGROUND_AGENT;
359
+ }
360
+ if (IDE === 'gemini') {
361
+ extraMeta.geminiSessionId = SESSION_ID;
362
+ }
363
+
364
+ const agentId = registerAgent(agentName, extraMeta);
365
+ if (agentId) {
366
+ writeState(`gen-${SESSION_ID}`, '0');
367
+ const out = {
368
+ hookSpecificOutput: {
369
+ additionalContext: `[Custodex] Orchestrator registered: ${agentName} (ID: ${agentId}). Running on ${IDE}.`,
370
+ },
371
+ };
372
+ process.stdout.write(JSON.stringify(out) + '\n');
373
+ }
374
+ process.exit(0);
375
+ }
376
+
377
+ function handleSubagentStart() {
378
+ if (IDE === 'gemini') process.exit(0);
379
+
380
+ const proj = projectName();
381
+ const agentName = SUBAGENT_TYPE
382
+ ? `${proj}-${SUBAGENT_TYPE}`
383
+ : `${proj}-subagent-${Date.now()}`;
384
+
385
+ const parentAgentId = readState(`agent-${SESSION_ID}`);
386
+ const parentGen = parseInt(readState(`gen-${SESSION_ID}`), 10) || 0;
387
+ const childGen = parentGen + 1;
388
+
389
+ const extraMeta = {
390
+ role: 'subagent',
391
+ subagentType: SUBAGENT_TYPE,
392
+ subagentId: SUBAGENT_ID,
393
+ };
394
+
395
+ if (IDE === 'cursor') {
396
+ const cursorTask = String(inputData.task || '').slice(0, 200);
397
+ if (cursorTask) extraMeta.task = cursorTask;
398
+ }
399
+
400
+ const metadata = Object.assign({
401
+ project: proj,
402
+ source: 'universal-hook',
403
+ ide: IDE,
404
+ sessionId: SESSION_ID,
405
+ }, extraMeta);
406
+
407
+ const body = {
408
+ name: agentName,
409
+ scopes: ['read', 'write', 'execute'],
410
+ metadata: metadata,
411
+ protocol: 'mcp',
412
+ parentAgentId: parentAgentId,
413
+ generation: childGen,
414
+ };
415
+
416
+ const responseStr = httpSync('POST', '/api/agents/register', body);
417
+ if (responseStr) {
418
+ try {
419
+ const resp = JSON.parse(responseStr);
420
+ const newId = resp.agentId || '';
421
+ if (newId) {
422
+ saveAgentId(newId);
423
+ writeState(`gen-${SESSION_ID}-${SUBAGENT_ID}`, String(childGen));
424
+ }
425
+ } catch (_) { /* ignore */ }
426
+ }
427
+ process.exit(0);
428
+ }
429
+
430
+ function handleUserPrompt() {
431
+ const custodexAgentId = getAgentId();
432
+ if (!custodexAgentId) process.exit(0);
433
+
434
+ // Persist prompt for subsequent PreToolUse
435
+ writeState(`prompt-${SESSION_ID}`, USER_PROMPT);
436
+
437
+ let callerType = 'user';
438
+ let callerId = '';
439
+ if (SUBAGENT_ID) {
440
+ callerType = 'agent';
441
+ callerId = readState(`agent-${SESSION_ID}`);
442
+ }
443
+
444
+ const metadata = {
445
+ agentId: custodexAgentId,
446
+ hookEvent: 'UserPromptSubmit',
447
+ ide: IDE,
448
+ sessionId: SESSION_ID,
449
+ userPrompt: USER_PROMPT.slice(0, 4096),
450
+ caller: { type: callerType, id: callerId },
451
+ environment: { os: os.platform(), shell: process.env.SHELL || 'unknown', cwd: CWD },
452
+ };
453
+
454
+ if (SUBAGENT_TYPE) {
455
+ metadata.onBehalfOf = `${projectName()}-${SUBAGENT_TYPE}`;
456
+ }
457
+
458
+ httpFireAndForget('POST', '/api/telemetry', {
459
+ action: 'user.prompt',
460
+ scope: 'session:input',
461
+ decision: 'allowed',
462
+ latencyMs: 0,
463
+ metadata: metadata,
464
+ });
465
+
466
+ process.exit(0);
467
+ }
468
+
469
+ // Read-only tools — skip governance checks for these.
470
+ const READONLY_TOOLS = new Set(['Read', 'Glob', 'Grep', 'WebSearch']);
471
+
472
+ function handlePreToolUse() {
473
+ if (READONLY_TOOLS.has(TOOL_NAME)) process.exit(0);
474
+
475
+ let custodexAgentId = getAgentId();
476
+
477
+ // Late-register if no agent ID recorded yet.
478
+ if (!custodexAgentId) {
479
+ const proj = projectName();
480
+ if (SUBAGENT_ID) {
481
+ const lateName = `${proj}-${SUBAGENT_TYPE || 'subagent'}-late`;
482
+ custodexAgentId = registerAgent(lateName, {
483
+ role: 'subagent', subagentType: SUBAGENT_TYPE, lateRegistration: true,
484
+ });
485
+ } else {
486
+ custodexAgentId = registerAgent(`${proj}-orchestrator-late`, {
487
+ role: 'orchestrator', lateRegistration: true,
488
+ });
489
+ }
490
+ }
491
+
492
+ const action = toolToAction(TOOL_NAME);
493
+ const scope = extractScope();
494
+
495
+ // Read last persisted prompt for context.
496
+ const lastPrompt = readState(`prompt-${SESSION_ID}`).slice(0, 2048);
497
+
498
+ const verifyBody = {
499
+ agentId: custodexAgentId,
500
+ action: action,
501
+ scope: scope,
502
+ metadata: {
503
+ toolName: TOOL_NAME,
504
+ ide: IDE,
505
+ sessionId: SESSION_ID,
506
+ userPrompt: lastPrompt,
507
+ environment: { os: os.platform(), cwd: CWD },
508
+ },
509
+ };
510
+
511
+ const responseStr = httpSync('POST', '/api/verify', verifyBody);
512
+
513
+ if (responseStr) {
514
+ try {
515
+ const resp = JSON.parse(responseStr);
516
+ if (resp.decision === 'denied') {
517
+ const reason = resp.reason || resp.message || 'Policy violation';
518
+ denyResponse(reason);
519
+ // denyResponse calls process.exit — never reaches here.
520
+ }
521
+ } catch (_) { /* parse error — allow by default */ }
522
+ }
523
+
524
+ process.exit(0);
525
+ }
526
+
527
+ function handlePostToolUse() {
528
+ const custodexAgentId = getAgentId();
529
+ if (!custodexAgentId) process.exit(0);
530
+
531
+ let action = toolToAction(TOOL_NAME);
532
+ let toolName = TOOL_NAME;
533
+
534
+ // Cursor afterFileEdit — override action and extract file path.
535
+ if (RAW_EVENT === 'afterFileEdit') {
536
+ action = 'file:write';
537
+ const filePath = inputData.file_path || '';
538
+ if (filePath) toolName = `Edit(${filePath})`;
539
+ }
540
+
541
+ // Cursor afterShellExecution — capture duration.
542
+ let durationMs = 0;
543
+ if (RAW_EVENT === 'afterShellExecution') {
544
+ durationMs = Math.round((inputData.duration || 0) * 1000);
545
+ }
546
+
547
+ const scope = extractScope();
548
+
549
+ // Tool output
550
+ const safeToolOutput = TOOL_OUTPUT.slice(0, 2048);
551
+
552
+ // Last prompt
553
+ const lastPrompt = readState(`prompt-${SESSION_ID}`).slice(0, 2048);
554
+
555
+ let actorName = 'orchestrator';
556
+ if (SUBAGENT_TYPE) actorName = SUBAGENT_TYPE;
557
+
558
+ let callerType = 'user';
559
+ let callerId = '';
560
+ let callerName = '';
561
+ if (SUBAGENT_ID) {
562
+ callerType = 'agent';
563
+ callerId = readState(`agent-${SESSION_ID}`);
564
+ callerName = 'orchestrator';
565
+ }
566
+
567
+ // Tool input summary
568
+ let toolSummary = {};
569
+ const ti = inputData.tool_input;
570
+ if (ti && typeof ti === 'object') {
571
+ const summaryKeys = ['command', 'file_path', 'pattern', 'description', 'prompt', 'url', 'query', 'skill', 'name'];
572
+ for (const k of summaryKeys) {
573
+ if (k in ti) toolSummary[k] = String(ti[k]).slice(0, 200);
574
+ }
575
+ }
576
+
577
+ const metadata = {
578
+ agentId: custodexAgentId,
579
+ toolName: toolName,
580
+ hookEvent: 'PostToolUse',
581
+ rawEvent: RAW_EVENT,
582
+ ide: IDE,
583
+ sessionId: SESSION_ID,
584
+ actor: actorName,
585
+ subagentType: SUBAGENT_TYPE,
586
+ subagentId: SUBAGENT_ID,
587
+ project: projectName(),
588
+ toolInput: toolSummary,
589
+ toolOutput: safeToolOutput,
590
+ userPrompt: lastPrompt,
591
+ caller: {
592
+ type: callerType,
593
+ id: callerId,
594
+ name: callerName,
595
+ directive: lastPrompt,
596
+ },
597
+ environment: {
598
+ os: os.platform(),
599
+ shell: process.env.SHELL || 'unknown',
600
+ cwd: CWD,
601
+ },
602
+ };
603
+
604
+ if (SUBAGENT_TYPE) {
605
+ metadata.onBehalfOf = `${projectName()}-${SUBAGENT_TYPE}`;
606
+ }
607
+
608
+ httpFireAndForget('POST', '/api/telemetry', {
609
+ action: action,
610
+ scope: scope,
611
+ decision: 'allowed',
612
+ latencyMs: durationMs,
613
+ metadata: metadata,
614
+ });
615
+
616
+ process.exit(0);
617
+ }
618
+
619
+ // ─── 8. ROUTE ───────────────────────────────────────────────────────────────
620
+
621
+ switch (EVENT) {
622
+ case 'SessionStart': handleSessionStart(); break;
623
+ case 'SubagentStart': handleSubagentStart(); break;
624
+ case 'PreToolUse': handlePreToolUse(); break;
625
+ case 'PostToolUse': handlePostToolUse(); break;
626
+ case 'UserPromptSubmit': handleUserPrompt(); break;
627
+ default: process.exit(0);
628
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "custodex",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Universal AI agent governance — one command to govern Claude, Cursor, Gemini CLI, and OpenCode",
5
5
  "type": "module",
6
6
  "bin": { "custodex": "dist/index.js" },
@@ -17,5 +17,6 @@
17
17
  "typescript": "^5.3.0"
18
18
  },
19
19
  "engines": { "node": ">=18.0.0" },
20
- "files": ["dist/", "hooks/", "plugins/"]
20
+ "homepage": "https://a2agov.com",
21
+ "files": ["dist/", "hooks/", "plugins/", "README.md"]
21
22
  }