shieldcortex 2.6.2 → 2.6.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dashboard/.next/standalone/dashboard/.next/BUILD_ID +1 -1
- package/dashboard/.next/standalone/dashboard/.next/build-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/prerender-manifest.json +3 -3
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.html +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/index.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/index.rsc +3 -3
- package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/page/react-loadable-manifest.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/pages/404.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/pages/500.html +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/server-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/server-reference-manifest.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/{77cbce7ecfbfed98.js → acf32ffeb20e4854.js} +1 -1
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/{daf6fc6b281ff427.js → d0e13004c4367a98.js} +1 -1
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/ddb21377f32257df.css +3 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/setup/copilot.d.ts +12 -0
- package/dist/setup/copilot.d.ts.map +1 -0
- package/dist/setup/copilot.js +290 -0
- package/dist/setup/copilot.js.map +1 -0
- package/dist/setup/openclaw.d.ts +9 -4
- package/dist/setup/openclaw.d.ts.map +1 -1
- package/dist/setup/openclaw.js +34 -18
- package/dist/setup/openclaw.js.map +1 -1
- package/package.json +1 -1
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/a76a2b1f27c1b548.css +0 -3
- /package/dashboard/.next/standalone/dashboard/.next/static/{F0h91amBhkEzdlFay0a5y → ku0ZhFF_US0fWJ3A7pvJa}/_buildManifest.js +0 -0
- /package/dashboard/.next/standalone/dashboard/.next/static/{F0h91amBhkEzdlFay0a5y → ku0ZhFF_US0fWJ3A7pvJa}/_clientMiddlewareManifest.json +0 -0
- /package/dashboard/.next/standalone/dashboard/.next/static/{F0h91amBhkEzdlFay0a5y → ku0ZhFF_US0fWJ3A7pvJa}/_ssgManifest.js +0 -0
- /package/hooks/openclaw/cortex-memory/{handler.js → handler.ts} +0 -0
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copilot / Cursor MCP server installer.
|
|
3
|
+
*
|
|
4
|
+
* Configures ShieldCortex as an MCP server for:
|
|
5
|
+
* - VS Code (GitHub Copilot) — user-level mcp.json
|
|
6
|
+
* - Cursor — global ~/.cursor/mcp.json
|
|
7
|
+
*/
|
|
8
|
+
import fs from 'fs';
|
|
9
|
+
import path from 'path';
|
|
10
|
+
import os from 'os';
|
|
11
|
+
import { fileURLToPath } from 'url';
|
|
12
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
13
|
+
const __dirname = path.dirname(__filename);
|
|
14
|
+
const SERVER_NAME = 'shieldcortex-memory';
|
|
15
|
+
// MCP entry point: dist/index.js (one level up from dist/setup/)
|
|
16
|
+
const MCP_ENTRY = path.resolve(__dirname, '..', 'index.js');
|
|
17
|
+
/**
|
|
18
|
+
* Read a JSON file, returning {} if it doesn't exist or is invalid.
|
|
19
|
+
*/
|
|
20
|
+
function readJson(filePath) {
|
|
21
|
+
try {
|
|
22
|
+
if (!fs.existsSync(filePath))
|
|
23
|
+
return {};
|
|
24
|
+
const raw = fs.readFileSync(filePath, 'utf-8').trim();
|
|
25
|
+
if (!raw)
|
|
26
|
+
return {};
|
|
27
|
+
return JSON.parse(raw);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return {};
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Write a JSON file, creating parent directories as needed.
|
|
35
|
+
*/
|
|
36
|
+
function writeJson(filePath, data) {
|
|
37
|
+
fs.mkdirSync(path.dirname(filePath), { recursive: true });
|
|
38
|
+
fs.writeFileSync(filePath, JSON.stringify(data, null, 2) + '\n');
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Build the server entry for ShieldCortex MCP.
|
|
42
|
+
*/
|
|
43
|
+
function serverEntry() {
|
|
44
|
+
return {
|
|
45
|
+
type: 'stdio',
|
|
46
|
+
command: 'node',
|
|
47
|
+
args: [MCP_ENTRY],
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
// ── VS Code ──
|
|
51
|
+
/**
|
|
52
|
+
* Find VS Code user config directories (supports standard + Insiders).
|
|
53
|
+
* Returns paths that exist on the filesystem.
|
|
54
|
+
*/
|
|
55
|
+
function findVsCodeDirs() {
|
|
56
|
+
const home = os.homedir();
|
|
57
|
+
const platform = process.platform;
|
|
58
|
+
const dirs = [];
|
|
59
|
+
const variants = ['Code', 'Code - Insiders'];
|
|
60
|
+
for (const variant of variants) {
|
|
61
|
+
let configDir;
|
|
62
|
+
if (platform === 'darwin') {
|
|
63
|
+
configDir = path.join(home, 'Library', 'Application Support', variant, 'User');
|
|
64
|
+
}
|
|
65
|
+
else if (platform === 'win32') {
|
|
66
|
+
configDir = path.join(process.env.APPDATA ?? path.join(home, 'AppData', 'Roaming'), variant, 'User');
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
configDir = path.join(home, '.config', variant, 'User');
|
|
70
|
+
}
|
|
71
|
+
if (fs.existsSync(configDir)) {
|
|
72
|
+
dirs.push(configDir);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return dirs;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Add ShieldCortex to a VS Code mcp.json file.
|
|
79
|
+
* VS Code format: { "servers": { "name": { ... } } }
|
|
80
|
+
*/
|
|
81
|
+
function addToVsCode(configDir) {
|
|
82
|
+
const mcpPath = path.join(configDir, 'mcp.json');
|
|
83
|
+
const config = readJson(mcpPath);
|
|
84
|
+
if (!config.servers || typeof config.servers !== 'object') {
|
|
85
|
+
config.servers = {};
|
|
86
|
+
}
|
|
87
|
+
const servers = config.servers;
|
|
88
|
+
if (servers[SERVER_NAME]) {
|
|
89
|
+
return false; // already configured
|
|
90
|
+
}
|
|
91
|
+
servers[SERVER_NAME] = serverEntry();
|
|
92
|
+
writeJson(mcpPath, config);
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Remove ShieldCortex from a VS Code mcp.json file.
|
|
97
|
+
*/
|
|
98
|
+
function removeFromVsCode(configDir) {
|
|
99
|
+
const mcpPath = path.join(configDir, 'mcp.json');
|
|
100
|
+
const config = readJson(mcpPath);
|
|
101
|
+
if (!config.servers || typeof config.servers !== 'object')
|
|
102
|
+
return false;
|
|
103
|
+
const servers = config.servers;
|
|
104
|
+
if (!servers[SERVER_NAME])
|
|
105
|
+
return false;
|
|
106
|
+
delete servers[SERVER_NAME];
|
|
107
|
+
writeJson(mcpPath, config);
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
// ── Cursor ──
|
|
111
|
+
/**
|
|
112
|
+
* Find Cursor config directory.
|
|
113
|
+
*/
|
|
114
|
+
function findCursorDir() {
|
|
115
|
+
const home = os.homedir();
|
|
116
|
+
const cursorDir = path.join(home, '.cursor');
|
|
117
|
+
return fs.existsSync(cursorDir) ? cursorDir : null;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Add ShieldCortex to Cursor's mcp.json.
|
|
121
|
+
* Cursor format: { "mcpServers": { "name": { ... } } }
|
|
122
|
+
*/
|
|
123
|
+
function addToCursor(cursorDir) {
|
|
124
|
+
const mcpPath = path.join(cursorDir, 'mcp.json');
|
|
125
|
+
const config = readJson(mcpPath);
|
|
126
|
+
if (!config.mcpServers || typeof config.mcpServers !== 'object') {
|
|
127
|
+
config.mcpServers = {};
|
|
128
|
+
}
|
|
129
|
+
const servers = config.mcpServers;
|
|
130
|
+
if (servers[SERVER_NAME]) {
|
|
131
|
+
return false; // already configured
|
|
132
|
+
}
|
|
133
|
+
// Cursor doesn't use "type" field
|
|
134
|
+
servers[SERVER_NAME] = {
|
|
135
|
+
command: 'node',
|
|
136
|
+
args: [MCP_ENTRY],
|
|
137
|
+
};
|
|
138
|
+
writeJson(mcpPath, config);
|
|
139
|
+
return true;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Remove ShieldCortex from Cursor's mcp.json.
|
|
143
|
+
*/
|
|
144
|
+
function removeFromCursor(cursorDir) {
|
|
145
|
+
const mcpPath = path.join(cursorDir, 'mcp.json');
|
|
146
|
+
const config = readJson(mcpPath);
|
|
147
|
+
if (!config.mcpServers || typeof config.mcpServers !== 'object')
|
|
148
|
+
return false;
|
|
149
|
+
const servers = config.mcpServers;
|
|
150
|
+
if (!servers[SERVER_NAME])
|
|
151
|
+
return false;
|
|
152
|
+
delete servers[SERVER_NAME];
|
|
153
|
+
writeJson(mcpPath, config);
|
|
154
|
+
return true;
|
|
155
|
+
}
|
|
156
|
+
// ── Public API ──
|
|
157
|
+
export async function installCopilot() {
|
|
158
|
+
// Verify MCP entry exists
|
|
159
|
+
if (!fs.existsSync(MCP_ENTRY)) {
|
|
160
|
+
console.error('ShieldCortex MCP entry point not found. Package may be corrupted.');
|
|
161
|
+
console.error(`Expected: ${MCP_ENTRY}`);
|
|
162
|
+
process.exit(1);
|
|
163
|
+
}
|
|
164
|
+
let installed = 0;
|
|
165
|
+
// VS Code
|
|
166
|
+
const vscodeDirs = findVsCodeDirs();
|
|
167
|
+
for (const dir of vscodeDirs) {
|
|
168
|
+
const variant = path.basename(path.dirname(dir)); // "Code" or "Code - Insiders"
|
|
169
|
+
if (addToVsCode(dir)) {
|
|
170
|
+
console.log(` ✓ VS Code (${variant}) — added to ${path.join(dir, 'mcp.json')}`);
|
|
171
|
+
installed++;
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
console.log(` · VS Code (${variant}) — already configured`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
if (vscodeDirs.length === 0) {
|
|
178
|
+
console.log(' · VS Code — not found');
|
|
179
|
+
}
|
|
180
|
+
// Cursor
|
|
181
|
+
const cursorDir = findCursorDir();
|
|
182
|
+
if (cursorDir) {
|
|
183
|
+
if (addToCursor(cursorDir)) {
|
|
184
|
+
console.log(` ✓ Cursor — added to ${path.join(cursorDir, 'mcp.json')}`);
|
|
185
|
+
installed++;
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
console.log(' · Cursor — already configured');
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
console.log(' · Cursor — not found');
|
|
193
|
+
}
|
|
194
|
+
console.log();
|
|
195
|
+
if (installed > 0) {
|
|
196
|
+
console.log(`Configured ShieldCortex MCP server (${SERVER_NAME}).`);
|
|
197
|
+
console.log('Restart your editor for changes to take effect.');
|
|
198
|
+
console.log();
|
|
199
|
+
console.log('What it provides:');
|
|
200
|
+
console.log(' • Persistent memory across sessions (remember, recall, forget)');
|
|
201
|
+
console.log(' • Defence pipeline (firewall, trust scoring, audit trail)');
|
|
202
|
+
console.log(' • Knowledge graph queries');
|
|
203
|
+
console.log(' • Memory consolidation');
|
|
204
|
+
}
|
|
205
|
+
else if (vscodeDirs.length === 0 && !cursorDir) {
|
|
206
|
+
console.error('Neither VS Code nor Cursor was found on this system.');
|
|
207
|
+
process.exit(1);
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
console.log('ShieldCortex MCP server was already configured in all detected editors.');
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
export async function uninstallCopilot() {
|
|
214
|
+
let removed = 0;
|
|
215
|
+
// VS Code
|
|
216
|
+
const vscodeDirs = findVsCodeDirs();
|
|
217
|
+
for (const dir of vscodeDirs) {
|
|
218
|
+
const variant = path.basename(path.dirname(dir));
|
|
219
|
+
if (removeFromVsCode(dir)) {
|
|
220
|
+
console.log(` ✓ VS Code (${variant}) — removed`);
|
|
221
|
+
removed++;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
// Cursor
|
|
225
|
+
const cursorDir = findCursorDir();
|
|
226
|
+
if (cursorDir) {
|
|
227
|
+
if (removeFromCursor(cursorDir)) {
|
|
228
|
+
console.log(' ✓ Cursor — removed');
|
|
229
|
+
removed++;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
if (removed === 0) {
|
|
233
|
+
console.log('ShieldCortex MCP server was not configured in any editor.');
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
console.log(`\nRemoved ShieldCortex MCP server from ${removed} editor(s).`);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
export async function copilotStatus() {
|
|
240
|
+
console.log(`MCP entry point: ${MCP_ENTRY}`);
|
|
241
|
+
console.log(` Exists: ${fs.existsSync(MCP_ENTRY) ? 'yes' : 'no'}`);
|
|
242
|
+
console.log();
|
|
243
|
+
// VS Code
|
|
244
|
+
const vscodeDirs = findVsCodeDirs();
|
|
245
|
+
if (vscodeDirs.length === 0) {
|
|
246
|
+
console.log('VS Code: not found');
|
|
247
|
+
}
|
|
248
|
+
for (const dir of vscodeDirs) {
|
|
249
|
+
const variant = path.basename(path.dirname(dir));
|
|
250
|
+
const mcpPath = path.join(dir, 'mcp.json');
|
|
251
|
+
const config = readJson(mcpPath);
|
|
252
|
+
const servers = (config.servers ?? {});
|
|
253
|
+
const installed = !!servers[SERVER_NAME];
|
|
254
|
+
console.log(`VS Code (${variant}): ${installed ? 'configured' : 'not configured'}`);
|
|
255
|
+
}
|
|
256
|
+
// Cursor
|
|
257
|
+
const cursorDir = findCursorDir();
|
|
258
|
+
if (!cursorDir) {
|
|
259
|
+
console.log('Cursor: not found');
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
const mcpPath = path.join(cursorDir, 'mcp.json');
|
|
263
|
+
const config = readJson(mcpPath);
|
|
264
|
+
const servers = (config.mcpServers ?? {});
|
|
265
|
+
const installed = !!servers[SERVER_NAME];
|
|
266
|
+
console.log(`Cursor: ${installed ? 'configured' : 'not configured'}`);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
export async function handleCopilotCommand(subcommand) {
|
|
270
|
+
console.log();
|
|
271
|
+
switch (subcommand) {
|
|
272
|
+
case 'install':
|
|
273
|
+
await installCopilot();
|
|
274
|
+
break;
|
|
275
|
+
case 'uninstall':
|
|
276
|
+
await uninstallCopilot();
|
|
277
|
+
break;
|
|
278
|
+
case 'status':
|
|
279
|
+
await copilotStatus();
|
|
280
|
+
break;
|
|
281
|
+
default:
|
|
282
|
+
console.log('Usage: shieldcortex copilot <install|uninstall|status>');
|
|
283
|
+
console.log();
|
|
284
|
+
console.log(' install Configure ShieldCortex MCP server for VS Code and Cursor');
|
|
285
|
+
console.log(' uninstall Remove ShieldCortex MCP server configuration');
|
|
286
|
+
console.log(' status Check current configuration');
|
|
287
|
+
process.exit(1);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
//# sourceMappingURL=copilot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copilot.js","sourceRoot":"","sources":["../../src/setup/copilot.ts"],"names":[],"mappings":"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"}
|
package/dist/setup/openclaw.d.ts
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* OpenClaw hook installer.
|
|
2
|
+
* Claude Code / OpenClaw hook installer.
|
|
3
3
|
*
|
|
4
|
-
* Copies the cortex-memory hook into
|
|
5
|
-
*
|
|
4
|
+
* Copies the cortex-memory hook into the hooks directory.
|
|
5
|
+
* Supports both Claude Code (native binary) and legacy OpenClaw (Node.js).
|
|
6
6
|
*/
|
|
7
7
|
/**
|
|
8
|
-
* Find
|
|
8
|
+
* Find the hooks directory for Claude Code or OpenClaw.
|
|
9
|
+
*
|
|
10
|
+
* Strategy:
|
|
11
|
+
* 1. Check for ~/.claude/hooks/ (Claude Code)
|
|
12
|
+
* 2. Check for ~/.openclaw/hooks/ (legacy OpenClaw)
|
|
13
|
+
* 3. Fallback: detect binary and walk up to find hooks/bundled/ (old Node.js OpenClaw)
|
|
9
14
|
*/
|
|
10
15
|
export declare function findOpenClawHooksDir(): string | null;
|
|
11
16
|
export declare function installOpenClawHook(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openclaw.d.ts","sourceRoot":"","sources":["../../src/setup/openclaw.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"openclaw.d.ts","sourceRoot":"","sources":["../../src/setup/openclaw.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiBH;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,IAAI,CA8CpD;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAgCzD;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAiB3D;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAcxD;AAED,wBAAsB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAe7E"}
|
package/dist/setup/openclaw.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* OpenClaw hook installer.
|
|
2
|
+
* Claude Code / OpenClaw hook installer.
|
|
3
3
|
*
|
|
4
|
-
* Copies the cortex-memory hook into
|
|
5
|
-
*
|
|
4
|
+
* Copies the cortex-memory hook into the hooks directory.
|
|
5
|
+
* Supports both Claude Code (native binary) and legacy OpenClaw (Node.js).
|
|
6
6
|
*/
|
|
7
7
|
import fs from 'fs';
|
|
8
8
|
import path from 'path';
|
|
9
|
+
import os from 'os';
|
|
9
10
|
import { execSync } from 'child_process';
|
|
10
11
|
import { fileURLToPath } from 'url';
|
|
11
12
|
const __filename = fileURLToPath(import.meta.url);
|
|
@@ -15,32 +16,47 @@ const HOOK_NAME = 'cortex-memory';
|
|
|
15
16
|
// From dist/setup/, go up two levels to project root
|
|
16
17
|
const HOOK_SOURCE = path.resolve(__dirname, '..', '..', 'hooks', 'openclaw', HOOK_NAME);
|
|
17
18
|
/**
|
|
18
|
-
* Find
|
|
19
|
+
* Find the hooks directory for Claude Code or OpenClaw.
|
|
20
|
+
*
|
|
21
|
+
* Strategy:
|
|
22
|
+
* 1. Check for ~/.claude/hooks/ (Claude Code)
|
|
23
|
+
* 2. Check for ~/.openclaw/hooks/ (legacy OpenClaw)
|
|
24
|
+
* 3. Fallback: detect binary and walk up to find hooks/bundled/ (old Node.js OpenClaw)
|
|
19
25
|
*/
|
|
20
26
|
export function findOpenClawHooksDir() {
|
|
27
|
+
const home = os.homedir();
|
|
28
|
+
// Claude Code: ~/.claude/hooks/
|
|
29
|
+
const claudeHooksDir = path.join(home, '.claude', 'hooks');
|
|
30
|
+
if (fs.existsSync(path.join(home, '.claude'))) {
|
|
31
|
+
// Claude Code config dir exists — use it even if hooks/ doesn't exist yet
|
|
32
|
+
return claudeHooksDir;
|
|
33
|
+
}
|
|
34
|
+
// Legacy OpenClaw: ~/.openclaw/hooks/
|
|
35
|
+
const openclawHooksDir = path.join(home, '.openclaw', 'hooks');
|
|
36
|
+
if (fs.existsSync(path.join(home, '.openclaw'))) {
|
|
37
|
+
return openclawHooksDir;
|
|
38
|
+
}
|
|
39
|
+
// Fallback: detect binary and walk up (old Node.js-based OpenClaw installs)
|
|
21
40
|
try {
|
|
22
|
-
const binPath = execSync('which openclaw 2>/dev/null || which clawdbot 2>/dev/null || which moltbot 2>/dev/null', {
|
|
23
|
-
encoding: 'utf-8',
|
|
24
|
-
}).trim();
|
|
41
|
+
const binPath = execSync('which claude 2>/dev/null || which openclaw 2>/dev/null || which clawdbot 2>/dev/null || which moltbot 2>/dev/null', { encoding: 'utf-8' }).trim();
|
|
25
42
|
if (!binPath)
|
|
26
43
|
return null;
|
|
27
|
-
// Resolve symlink — lands in e.g. <prefix>/lib/node_modules/openclaw/dist/entry.js
|
|
28
44
|
const realBin = fs.realpathSync(binPath);
|
|
29
|
-
// Walk up from resolved path to find
|
|
45
|
+
// Walk up from resolved path to find hooks/bundled/
|
|
30
46
|
let dir = path.dirname(realBin);
|
|
31
47
|
for (let i = 0; i < 5; i++) {
|
|
32
48
|
const candidate = path.join(dir, 'hooks', 'bundled');
|
|
33
49
|
if (fs.existsSync(candidate)) {
|
|
34
50
|
return candidate;
|
|
35
51
|
}
|
|
36
|
-
// Also check dist/hooks/bundled from current dir
|
|
37
52
|
const distCandidate = path.join(dir, 'dist', 'hooks', 'bundled');
|
|
38
53
|
if (fs.existsSync(distCandidate)) {
|
|
39
54
|
return distCandidate;
|
|
40
55
|
}
|
|
41
56
|
dir = path.dirname(dir);
|
|
42
57
|
}
|
|
43
|
-
|
|
58
|
+
// Binary found but no hooks/bundled/ — fall back to ~/.claude/hooks/
|
|
59
|
+
return claudeHooksDir;
|
|
44
60
|
}
|
|
45
61
|
catch {
|
|
46
62
|
return null;
|
|
@@ -49,8 +65,8 @@ export function findOpenClawHooksDir() {
|
|
|
49
65
|
export async function installOpenClawHook() {
|
|
50
66
|
const hooksDir = findOpenClawHooksDir();
|
|
51
67
|
if (!hooksDir) {
|
|
52
|
-
console.error('OpenClaw is
|
|
53
|
-
console.log('Install
|
|
68
|
+
console.error('Neither Claude Code nor OpenClaw is installed on this system.');
|
|
69
|
+
console.log('Install Claude Code first: https://claude.ai/claude-code');
|
|
54
70
|
process.exit(1);
|
|
55
71
|
}
|
|
56
72
|
if (!fs.existsSync(HOOK_SOURCE)) {
|
|
@@ -60,13 +76,13 @@ export async function installOpenClawHook() {
|
|
|
60
76
|
const destDir = path.join(hooksDir, HOOK_NAME);
|
|
61
77
|
// Copy hook files
|
|
62
78
|
fs.mkdirSync(destDir, { recursive: true });
|
|
63
|
-
for (const file of ['HOOK.md', 'handler.
|
|
79
|
+
for (const file of ['HOOK.md', 'handler.ts']) {
|
|
64
80
|
const src = path.join(HOOK_SOURCE, file);
|
|
65
81
|
const dest = path.join(destDir, file);
|
|
66
82
|
fs.copyFileSync(src, dest);
|
|
67
83
|
}
|
|
68
84
|
console.log(`✓ Installed cortex-memory hook to ${destDir}`);
|
|
69
|
-
console.log(' The hook will activate on next
|
|
85
|
+
console.log(' The hook will activate on next Claude Code restart.');
|
|
70
86
|
console.log('');
|
|
71
87
|
console.log(' What it does:');
|
|
72
88
|
console.log(' • Auto-saves important session context on /new');
|
|
@@ -76,7 +92,7 @@ export async function installOpenClawHook() {
|
|
|
76
92
|
export async function uninstallOpenClawHook() {
|
|
77
93
|
const hooksDir = findOpenClawHooksDir();
|
|
78
94
|
if (!hooksDir) {
|
|
79
|
-
console.log('OpenClaw is
|
|
95
|
+
console.log('Neither Claude Code nor OpenClaw is installed on this system.');
|
|
80
96
|
return;
|
|
81
97
|
}
|
|
82
98
|
const destDir = path.join(hooksDir, HOOK_NAME);
|
|
@@ -90,12 +106,12 @@ export async function uninstallOpenClawHook() {
|
|
|
90
106
|
export async function openClawHookStatus() {
|
|
91
107
|
const hooksDir = findOpenClawHooksDir();
|
|
92
108
|
if (!hooksDir) {
|
|
93
|
-
console.log('OpenClaw: not installed');
|
|
109
|
+
console.log('Claude Code / OpenClaw: not installed');
|
|
94
110
|
return;
|
|
95
111
|
}
|
|
96
112
|
const destDir = path.join(hooksDir, HOOK_NAME);
|
|
97
113
|
const installed = fs.existsSync(destDir);
|
|
98
|
-
console.log(`OpenClaw:
|
|
114
|
+
console.log(`Claude Code / OpenClaw: detected`);
|
|
99
115
|
console.log(`Hooks directory: ${hooksDir}`);
|
|
100
116
|
console.log(`cortex-memory: ${installed ? 'installed' : 'not installed'}`);
|
|
101
117
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openclaw.js","sourceRoot":"","sources":["../../src/setup/openclaw.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,MAAM,SAAS,GAAG,eAAe,CAAC;AAElC,2EAA2E;AAC3E,qDAAqD;AACrD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;AAExF
|
|
1
|
+
{"version":3,"file":"openclaw.js","sourceRoot":"","sources":["../../src/setup/openclaw.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "shieldcortex",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.4",
|
|
4
4
|
"description": "Complete memory system + security layer for AI agents. Native OpenClaw integration. Persistent storage, semantic search, prompt injection firewall, credential protection, and audit trail. One package, full solution.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|