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 +125 -0
- package/dist/detect.d.ts +2 -2
- package/dist/detect.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/dist/install.d.ts +7 -7
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +35 -45
- package/dist/install.js.map +1 -1
- package/dist/uninstall.d.ts +1 -1
- package/dist/uninstall.js +6 -6
- package/dist/uninstall.js.map +1 -1
- package/dist/wizard.d.ts +1 -1
- package/dist/wizard.js +5 -5
- package/dist/wizard.js.map +1 -1
- package/hooks/hook.js +628 -0
- package/package.json +3 -2
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
|
|
17
|
+
/** Absolute path where governance config is written */
|
|
18
18
|
globalConfigPath: string;
|
|
19
|
-
/** Whether governance
|
|
19
|
+
/** Whether governance is enforced hard or soft */
|
|
20
20
|
enforcement: "mandatory" | "advisory";
|
|
21
21
|
}
|
|
22
22
|
/**
|
package/dist/detect.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
24
|
-
* The
|
|
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
|
|
29
|
-
* Preserves all existing
|
|
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
|
|
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
|
|
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;
|
package/dist/install.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
|
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
|
|
100
|
-
* The
|
|
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
|
-
|
|
118
|
-
|
|
119
|
-
fs.
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
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
|
-
|
|
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
|
|
161
|
-
* Preserves all existing
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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);
|
package/dist/install.js.map
CHANGED
|
@@ -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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"}
|
package/dist/uninstall.d.ts
CHANGED
package/dist/uninstall.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Uninstall Module
|
|
3
3
|
*
|
|
4
|
-
* Cleanly removes all Custodex governance
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
package/dist/uninstall.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../src/uninstall.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,0DAA0D;AAC1D,SAAS,YAAY,CAAC,QAAgB;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,oCAAoC;AACpC,SAAS,aAAa,CAAC,QAAgB,EAAE,IAAa;IACpD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3E,CAAC;AAED,gDAAgD;AAChD,SAAS,OAAO;IACd,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,oBAAoB,CAAC;AAC7C,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CACxB,OAAkB;IAElB,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,OAAO,OAAO;SACX,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,iDAAiD;QACjD,IACE,KAAK,KAAK,IAAI;YACd,OAAO,KAAK,KAAK,QAAQ;YACzB,OAAO,IAAI,KAAK;YAChB,KAAK,CAAC,OAAO,CAAE,KAAiC,CAAC,OAAO,CAAC,CAAC,EAC1D,CAAC;YACD,MAAM,KAAK,GAAI,KAA8B,CAAC,KAAK,CAAC,MAAM,CACxD,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CACC,OAAO,CAAC,KAAK,QAAQ;gBACrB,CAAC,KAAK,IAAI;gBACT,CAA6B,CAAC,SAAS,CAAC,KAAK,GAAG,CAClD,CACJ,CAAC;YACF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC,CAAC,+BAA+B;YACpE,OAAO,EAAE,GAAI,KAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAChD,CAAC;QACD,4CAA4C;QAC5C,IACE,KAAK,KAAK,IAAI;YACd,OAAO,KAAK,KAAK,QAAQ;YACxB,KAAiC,CAAC,SAAS,CAAC,KAAK,GAAG,EACrD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CACxB,QAAiC;IAEjC,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;YAC5B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
278
|
+
print(` ${YELLOW}Restart your IDEs${RESET} to activate governance.`);
|
|
279
279
|
print(` ${DIM}Dashboard: ${CYAN}${baseUrl}${RESET}`);
|
|
280
280
|
print("");
|
|
281
281
|
}
|
package/dist/wizard.js.map
CHANGED
|
@@ -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.
|
|
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
|
-
"
|
|
20
|
+
"homepage": "https://a2agov.com",
|
|
21
|
+
"files": ["dist/", "hooks/", "plugins/", "README.md"]
|
|
21
22
|
}
|