shieldcortex 2.4.1 → 2.4.3
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 +174 -102
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -7
- package/dist/index.js.map +1 -1
- package/dist/setup/claude-md.d.ts +1 -1
- package/dist/setup/claude-md.js +6 -6
- package/dist/setup/claude-md.js.map +1 -1
- package/dist/setup/openclaw.d.ts +15 -0
- package/dist/setup/{clawdbot.d.ts.map → openclaw.d.ts.map} +1 -1
- package/dist/setup/{clawdbot.js → openclaw.js} +23 -23
- package/dist/setup/{clawdbot.js.map → openclaw.js.map} +1 -1
- package/dist/setup/status.d.ts +5 -0
- package/dist/setup/status.d.ts.map +1 -0
- package/dist/setup/status.js +124 -0
- package/dist/setup/status.js.map +1 -0
- package/dist/setup/uninstall.d.ts +1 -1
- package/dist/setup/uninstall.js +5 -5
- package/hooks/{clawdbot → openclaw}/cortex-memory/HOOK.md +3 -3
- package/hooks/{clawdbot → openclaw}/cortex-memory/handler.js +6 -6
- package/package.json +1 -1
- package/dist/setup/clawdbot.d.ts +0 -15
package/README.md
CHANGED
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
[](https://www.npmjs.com/package/shieldcortex)
|
|
4
4
|
[](https://www.npmjs.com/package/shieldcortex)
|
|
5
5
|
[](https://opensource.org/licenses/MIT)
|
|
6
|
+
[](https://github.com/Drakon-Systems-Ltd/ShieldCortex)
|
|
7
|
+
[](https://nodejs.org/)
|
|
6
8
|
|
|
7
|
-
##
|
|
9
|
+
## Complete Memory & Security for AI Agents
|
|
8
10
|
|
|
9
11
|
**ShieldCortex gives your AI agent persistent memory AND protects it from attack. One package. Full solution.**
|
|
10
12
|
|
|
@@ -14,7 +16,7 @@ Most AI agents are stateless — they forget everything between sessions. Shield
|
|
|
14
16
|
┌─────────────────────────────────────────────────────────────┐
|
|
15
17
|
│ ShieldCortex │
|
|
16
18
|
├─────────────────────────────┬───────────────────────────────┤
|
|
17
|
-
│
|
|
19
|
+
│ MEMORY SYSTEM │ SECURITY LAYER │
|
|
18
20
|
├─────────────────────────────┼───────────────────────────────┤
|
|
19
21
|
│ • Persistent storage │ • Memory firewall │
|
|
20
22
|
│ • Semantic search │ • Prompt injection detection │
|
|
@@ -31,7 +33,7 @@ Most AI agents are stateless — they forget everything between sessions. Shield
|
|
|
31
33
|
|
|
32
34
|
## What You Get
|
|
33
35
|
|
|
34
|
-
###
|
|
36
|
+
### Memory System (Production-Ready)
|
|
35
37
|
- **Persistent storage** — SQLite-backed, survives restarts
|
|
36
38
|
- **Semantic search** — Find memories by meaning, not just keywords
|
|
37
39
|
- **Project scoping** — Isolate memories per project/context
|
|
@@ -40,7 +42,7 @@ Most AI agents are stateless — they forget everything between sessions. Shield
|
|
|
40
42
|
- **Auto-cleanup** — Configurable retention, importance-based expiry
|
|
41
43
|
- **Full MCP support** — Works with any MCP-compatible agent
|
|
42
44
|
|
|
43
|
-
###
|
|
45
|
+
### Security Layer (5 Defence Layers)
|
|
44
46
|
| Layer | What It Does | Tier |
|
|
45
47
|
|-------|-------------|------|
|
|
46
48
|
| **Memory Firewall** | Blocks prompt injection, encoding tricks, hidden instructions | Free |
|
|
@@ -50,16 +52,37 @@ Most AI agents are stateless — they forget everything between sessions. Shield
|
|
|
50
52
|
| **Sensitivity Classifier** | Detects & redacts passwords, API keys, PII | Pro |
|
|
51
53
|
| **Fragmentation Detector** | Catches slow-burn assembly attacks | Pro |
|
|
52
54
|
|
|
53
|
-
###
|
|
55
|
+
### Attack Vectors Blocked
|
|
54
56
|
- **Direct injection** — `[SYSTEM: ignore previous]` hidden in content
|
|
55
57
|
- **Credential harvesting** — Attempts to exfiltrate secrets
|
|
56
58
|
- **Encoding tricks** — Base64/hex/unicode payloads
|
|
57
59
|
- **Slow-burn assembly** — Attack fragments planted over days
|
|
58
60
|
- **Privilege escalation** — System command references
|
|
59
61
|
|
|
62
|
+
### 🤖 Multi-Agent Security
|
|
63
|
+
|
|
64
|
+
Running multiple agents or sub-agents? ShieldCortex prevents rogue agents from accessing sensitive data:
|
|
65
|
+
|
|
66
|
+
| Feature | What It Does |
|
|
67
|
+
|---------|--------------|
|
|
68
|
+
| **Hierarchical Trust Decay** | Sub-agents get lower trust: `user-spawned` (0.9) → `>task-1` (0.63) → `>subtask-2` (0.44) |
|
|
69
|
+
| **Origin-Based Scoring** | Different trust by source: user (0.9), cron (0.5), agent-spawned (0.3), web (0.2) |
|
|
70
|
+
| **Credential Isolation** | RESTRICTED memories blocked below trust 0.7 — sub-agents can't access secrets |
|
|
71
|
+
| **Depth Circuit Breaker** | Agents beyond depth 5 get trust = 0 (blocked entirely) |
|
|
72
|
+
| **Auto-Quarantine** | Low-trust writes go to quarantine for human review |
|
|
73
|
+
| **Environment Detection** | Auto-detects sub-agents from `CLAUDE_CODE_ENTRYPOINT` — zero config |
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
Trust ≥0.7 → Read all, write direct, delete own
|
|
77
|
+
Trust 0.5–0.7 → Read own + non-restricted, quarantine writes
|
|
78
|
+
Trust <0.5 → Read own only, quarantine only, no delete
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**Result:** A sub-agent spawning another sub-agent that tries to read your API keys? **Blocked.**
|
|
82
|
+
|
|
60
83
|
---
|
|
61
84
|
|
|
62
|
-
## Quick Start
|
|
85
|
+
## Quick Start
|
|
63
86
|
|
|
64
87
|
```bash
|
|
65
88
|
# Install globally
|
|
@@ -76,6 +99,11 @@ npx shieldcortex setup
|
|
|
76
99
|
npx shieldcortex migrate
|
|
77
100
|
```
|
|
78
101
|
|
|
102
|
+
**Verify installation:**
|
|
103
|
+
```bash
|
|
104
|
+
npx shieldcortex doctor
|
|
105
|
+
```
|
|
106
|
+
|
|
79
107
|
---
|
|
80
108
|
|
|
81
109
|
## Supported Agents
|
|
@@ -85,7 +113,7 @@ ShieldCortex is agent-agnostic middleware:
|
|
|
85
113
|
| Agent | Integration |
|
|
86
114
|
|-------|-------------|
|
|
87
115
|
| **[Claude Code](https://claude.ai)** | `npx shieldcortex setup` — Native MCP server |
|
|
88
|
-
| **[OpenClaw](https://openclaw.
|
|
116
|
+
| **[OpenClaw / Moltbot](https://openclaw.dev)** | `npx shieldcortex openclaw install` — Native hooks |
|
|
89
117
|
| **[LangChain JS](https://js.langchain.com)** | `import { ShieldCortexMemory } from 'shieldcortex/integrations/langchain'` |
|
|
90
118
|
| **Python (CrewAI, AutoGPT)** | REST API — `POST /api/v1/scan` |
|
|
91
119
|
| **Any MCP agent** | Via MCP protocol or `@langchain/mcp-adapters` |
|
|
@@ -94,6 +122,18 @@ If your agent stores memories, ShieldCortex can power and protect them.
|
|
|
94
122
|
|
|
95
123
|
---
|
|
96
124
|
|
|
125
|
+
## Requirements
|
|
126
|
+
|
|
127
|
+
| Requirement | Version |
|
|
128
|
+
|-------------|---------|
|
|
129
|
+
| **Node.js** | >= 18.0.0 |
|
|
130
|
+
| **Platform** | macOS, Linux, or Windows |
|
|
131
|
+
| **Storage** | ~50MB for SQLite database |
|
|
132
|
+
|
|
133
|
+
No external dependencies. No Docker required. Just `npm install` and go.
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
97
137
|
## Is Your AI Agent Already Compromised?
|
|
98
138
|
|
|
99
139
|
Find out in 30 seconds:
|
|
@@ -115,100 +155,144 @@ ShieldCortex will scan every stored memory and report:
|
|
|
115
155
|
|
|
116
156
|
---
|
|
117
157
|
|
|
118
|
-
##
|
|
158
|
+
## LangChain Integration
|
|
159
|
+
|
|
160
|
+
```javascript
|
|
161
|
+
import { ShieldCortexMemory, ShieldCortexGuard } from 'shieldcortex/integrations/langchain';
|
|
119
162
|
|
|
163
|
+
// As a LangChain memory backend (scans before storing)
|
|
164
|
+
const memory = new ShieldCortexMemory({ mode: 'balanced' });
|
|
165
|
+
const vars = await memory.loadMemoryVariables({ input: 'deployment config' });
|
|
166
|
+
await memory.saveContext({ input: 'hello' }, { output: 'hi' });
|
|
167
|
+
|
|
168
|
+
// As standalone middleware (scan without storing)
|
|
169
|
+
const guard = new ShieldCortexGuard();
|
|
170
|
+
const result = guard.scan('some content to check');
|
|
171
|
+
if (!result.allowed) {
|
|
172
|
+
console.warn('Blocked:', result.firewall.reason);
|
|
173
|
+
}
|
|
120
174
|
```
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## REST API (Any Agent)
|
|
179
|
+
|
|
180
|
+
Start the API server, then scan content from any language or framework:
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
npm run dev:api # Starts on http://localhost:3001
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
# Scan content
|
|
188
|
+
curl -X POST http://localhost:3001/api/v1/scan \
|
|
189
|
+
-H 'Content-Type: application/json' \
|
|
190
|
+
-d '{"content": "memory to scan", "title": "test"}'
|
|
191
|
+
|
|
192
|
+
# Batch scan
|
|
193
|
+
curl -X POST http://localhost:3001/api/v1/scan/batch \
|
|
194
|
+
-H 'Content-Type: application/json' \
|
|
195
|
+
-d '{"items": [{"content": "item 1"}, {"content": "item 2"}]}'
|
|
196
|
+
|
|
197
|
+
# Query audit logs
|
|
198
|
+
curl http://localhost:3001/api/v1/audit?firewallResult=BLOCK
|
|
199
|
+
|
|
200
|
+
# List quarantined items
|
|
201
|
+
curl http://localhost:3001/api/v1/quarantine
|
|
202
|
+
|
|
203
|
+
# Approve/reject quarantined items
|
|
204
|
+
curl -X POST http://localhost:3001/api/v1/quarantine/1/approve
|
|
205
|
+
curl -X POST http://localhost:3001/api/v1/quarantine/1/reject
|
|
143
206
|
```
|
|
144
207
|
|
|
145
208
|
---
|
|
146
209
|
|
|
147
|
-
##
|
|
148
|
-
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
"memory": {
|
|
152
|
-
"database": "~/.shieldcortex/memory.db",
|
|
153
|
-
"maxMemories": 10000,
|
|
154
|
-
"defaultImportance": "normal",
|
|
155
|
-
"decayEnabled": true,
|
|
156
|
-
"decayHalfLifeDays": 30
|
|
157
|
-
},
|
|
158
|
-
"security": {
|
|
159
|
-
"enableFirewall": true,
|
|
160
|
-
"enableAudit": true,
|
|
161
|
-
"trustThreshold": 0.5,
|
|
162
|
-
"quarantineOnThreat": true
|
|
163
|
-
},
|
|
164
|
-
"search": {
|
|
165
|
-
"semanticEnabled": true,
|
|
166
|
-
"maxResults": 20
|
|
167
|
-
}
|
|
168
|
-
}
|
|
210
|
+
## OpenClaw Integration
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
npx shieldcortex openclaw install
|
|
169
214
|
```
|
|
170
215
|
|
|
216
|
+
The **cortex-memory** hook provides:
|
|
217
|
+
- Auto-save on `/new` command
|
|
218
|
+
- Context injection on bootstrap
|
|
219
|
+
- Keyword triggers ("remember this...")
|
|
220
|
+
|
|
171
221
|
---
|
|
172
222
|
|
|
173
|
-
##
|
|
223
|
+
## Dashboard
|
|
174
224
|
|
|
175
225
|
```bash
|
|
176
|
-
|
|
177
|
-
shieldcortex setup # Auto-configure for your agent
|
|
178
|
-
shieldcortex migrate # Migrate from Claude Cortex
|
|
179
|
-
|
|
180
|
-
# Memory Operations
|
|
181
|
-
shieldcortex remember "fact" # Store a memory
|
|
182
|
-
shieldcortex recall "query" # Search memories
|
|
183
|
-
shieldcortex forget <id> # Delete a memory
|
|
184
|
-
shieldcortex list # List recent memories
|
|
185
|
-
|
|
186
|
-
# Security Operations
|
|
187
|
-
shieldcortex scan # Scan all memories for threats
|
|
188
|
-
shieldcortex audit # View audit log
|
|
189
|
-
shieldcortex quarantine list # View quarantined memories
|
|
190
|
-
shieldcortex trust <id> <score> # Manually set trust score
|
|
191
|
-
|
|
192
|
-
# Dashboard
|
|
193
|
-
shieldcortex dashboard # Open web dashboard (Pro)
|
|
226
|
+
npx shieldcortex --dashboard
|
|
194
227
|
```
|
|
195
228
|
|
|
229
|
+
- **Dashboard**: http://localhost:3030
|
|
230
|
+
- **API**: http://localhost:3001
|
|
231
|
+
|
|
232
|
+
Views: Shield (defence overview), Audit Log, Quarantine, Memories, 3D Brain, Knowledge Graph.
|
|
233
|
+
|
|
234
|
+
### Auto-start on login
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
npx shieldcortex service install # Enable
|
|
238
|
+
npx shieldcortex service uninstall # Disable
|
|
239
|
+
npx shieldcortex service status # Check
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
Works on macOS (launchd), Linux (systemd), and Windows.
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
## CLI Reference
|
|
247
|
+
|
|
248
|
+
```bash
|
|
249
|
+
npx shieldcortex setup # Auto-detect agent + configure hooks
|
|
250
|
+
npx shieldcortex migrate # Migrate from Claude Cortex
|
|
251
|
+
npx shieldcortex doctor # Check installation health
|
|
252
|
+
npx shieldcortex --dashboard # Start dashboard + API
|
|
253
|
+
npx shieldcortex --version # Show version
|
|
254
|
+
npx shieldcortex service install # Auto-start on login
|
|
255
|
+
npx shieldcortex graph backfill # Extract entities from existing memories
|
|
256
|
+
npx shieldcortex openclaw install # Install OpenClaw hook
|
|
257
|
+
npx shieldcortex uninstall # Full uninstall (requires confirmation)
|
|
258
|
+
npx shieldcortex uninstall --confirm # Non-interactive uninstall
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
## MCP Tools
|
|
264
|
+
|
|
265
|
+
| Tool | Description |
|
|
266
|
+
|------|-------------|
|
|
267
|
+
| `remember` | Store a memory (optional — hooks do this automatically) |
|
|
268
|
+
| `recall` | Search memories by query, category, or tags |
|
|
269
|
+
| `forget` | Delete memories |
|
|
270
|
+
| `get_context` | Get relevant project context |
|
|
271
|
+
| `memory_stats` | View memory statistics |
|
|
272
|
+
| `scan_memories` | Scan existing memories for threats |
|
|
273
|
+
| `audit_query` | Query the defence audit trail |
|
|
274
|
+
| `quarantine_review` | Review quarantined memories |
|
|
275
|
+
| `defence_stats` | Threat counts, trust distribution |
|
|
276
|
+
| `graph_query` | Traverse the knowledge graph |
|
|
277
|
+
| `graph_entities` | List known entities |
|
|
278
|
+
| `graph_explain` | Find paths between entities |
|
|
279
|
+
|
|
196
280
|
---
|
|
197
281
|
|
|
198
282
|
## Why ShieldCortex?
|
|
199
283
|
|
|
200
284
|
| Feature | Claude Cortex | Mem0 | Zep | **ShieldCortex** |
|
|
201
285
|
|---------|---------------|------|-----|------------------|
|
|
202
|
-
| Persistent Memory |
|
|
203
|
-
| Semantic Search |
|
|
204
|
-
| Prompt Injection Detection |
|
|
205
|
-
| Memory Firewall |
|
|
206
|
-
| Sub-Agent Access Control |
|
|
207
|
-
| Audit Trail |
|
|
208
|
-
| Credential Protection |
|
|
209
|
-
| MCP Native |
|
|
210
|
-
| Self-Hosted |
|
|
211
|
-
| Open Source |
|
|
286
|
+
| Persistent Memory | Yes | Yes | Yes | Yes |
|
|
287
|
+
| Semantic Search | Yes | Yes | Yes | Yes |
|
|
288
|
+
| Prompt Injection Detection | No | No | No | **Yes** |
|
|
289
|
+
| Memory Firewall | No | No | No | **Yes** |
|
|
290
|
+
| Sub-Agent Access Control | No | No | No | **Yes** |
|
|
291
|
+
| Audit Trail | No | No | Partial | **Yes** |
|
|
292
|
+
| Credential Protection | No | No | No | **Yes** |
|
|
293
|
+
| MCP Native | Yes | No | No | **Yes** |
|
|
294
|
+
| Self-Hosted | Yes | No | Partial | **Yes** |
|
|
295
|
+
| Open Source | Yes | Partial | Partial | **Yes** |
|
|
212
296
|
|
|
213
297
|
**ShieldCortex is the only memory system built for adversarial conditions.**
|
|
214
298
|
|
|
@@ -218,36 +302,24 @@ shieldcortex dashboard # Open web dashboard (Pro)
|
|
|
218
302
|
|
|
219
303
|
| Tier | What You Get | Price |
|
|
220
304
|
|------|--------------|-------|
|
|
221
|
-
| **Free** | Full memory system + core security (firewall, audit, trust scoring) |
|
|
222
|
-
| **Pro** | + Sensitivity classifier, fragmentation detector, web dashboard |
|
|
223
|
-
| **Team** | + Multi-agent coordination, shared memory pools, team audit | £99/mo |
|
|
224
|
-
| **Enterprise** | + SSO, SLA, dedicated support, custom integrations | Contact us |
|
|
305
|
+
| **Free** | Full memory system + core security (firewall, audit, trust scoring) | Free |
|
|
306
|
+
| **Pro** | + Sensitivity classifier, fragmentation detector, web dashboard | Coming soon |
|
|
225
307
|
|
|
226
|
-
|
|
308
|
+
Free tier is fully functional for individual developers.
|
|
227
309
|
|
|
228
310
|
---
|
|
229
311
|
|
|
230
312
|
## Links
|
|
231
313
|
|
|
232
|
-
-
|
|
233
|
-
-
|
|
234
|
-
-
|
|
235
|
-
-
|
|
236
|
-
- 🏢 **By:** [Drakon Systems](https://drakonsystems.com)
|
|
314
|
+
- **Website:** [shieldcortex.ai](https://shieldcortex.ai)
|
|
315
|
+
- **npm:** [npmjs.com/package/shieldcortex](https://www.npmjs.com/package/shieldcortex)
|
|
316
|
+
- **GitHub:** [github.com/Drakon-Systems-Ltd/ShieldCortex](https://github.com/Drakon-Systems-Ltd/ShieldCortex)
|
|
317
|
+
- **Architecture:** [ARCHITECTURE.md](ARCHITECTURE.md)
|
|
237
318
|
|
|
238
319
|
---
|
|
239
320
|
|
|
240
|
-
## Contributing
|
|
241
|
-
|
|
242
|
-
We welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
243
|
-
|
|
244
321
|
## License
|
|
245
322
|
|
|
246
|
-
MIT
|
|
247
|
-
|
|
248
|
-
---
|
|
323
|
+
MIT
|
|
249
324
|
|
|
250
|
-
|
|
251
|
-
<strong>Give your AI agent a brain that fights back.</strong><br>
|
|
252
|
-
<a href="https://shieldcortex.ai">shieldcortex.ai</a>
|
|
253
|
-
</p>
|
|
325
|
+
**Built by [Drakon Systems](https://github.com/Drakon-Systems-Ltd)**
|
package/dist/index.d.ts
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* npx shieldcortex --mode both # Start both servers
|
|
13
13
|
* npx shieldcortex --dashboard # Start API + Dashboard (admin panel)
|
|
14
14
|
* npx shieldcortex --db /path/to.db # Custom database path
|
|
15
|
+
* npx shieldcortex status # Show database and system status
|
|
15
16
|
* npx shieldcortex setup # Configure Claude for proactive memory use
|
|
16
17
|
* npx shieldcortex hook pre-compact # Run pre-compact hook (for settings.json)
|
|
17
18
|
* npx shieldcortex hook session-start # Run session-start hook (for settings.json)
|
|
@@ -19,9 +20,9 @@
|
|
|
19
20
|
* npx shieldcortex service install # Auto-start dashboard on login
|
|
20
21
|
* npx shieldcortex service uninstall # Remove auto-start
|
|
21
22
|
* npx shieldcortex service status # Check service status
|
|
22
|
-
* npx shieldcortex
|
|
23
|
-
* npx shieldcortex
|
|
24
|
-
* npx shieldcortex
|
|
23
|
+
* npx shieldcortex openclaw install # Install OpenClaw hook
|
|
24
|
+
* npx shieldcortex openclaw uninstall # Remove OpenClaw hook
|
|
25
|
+
* npx shieldcortex openclaw status # Check OpenClaw hook status
|
|
25
26
|
* npx shieldcortex migrate # Migrate from Claude Cortex
|
|
26
27
|
* npx shieldcortex setup uninstall # Remove hooks + CLAUDE.md block (requires confirmation)
|
|
27
28
|
* npx shieldcortex uninstall # Full uninstall (requires confirmation)
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG"}
|
package/dist/index.js
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* npx shieldcortex --mode both # Start both servers
|
|
13
13
|
* npx shieldcortex --dashboard # Start API + Dashboard (admin panel)
|
|
14
14
|
* npx shieldcortex --db /path/to.db # Custom database path
|
|
15
|
+
* npx shieldcortex status # Show database and system status
|
|
15
16
|
* npx shieldcortex setup # Configure Claude for proactive memory use
|
|
16
17
|
* npx shieldcortex hook pre-compact # Run pre-compact hook (for settings.json)
|
|
17
18
|
* npx shieldcortex hook session-start # Run session-start hook (for settings.json)
|
|
@@ -19,9 +20,9 @@
|
|
|
19
20
|
* npx shieldcortex service install # Auto-start dashboard on login
|
|
20
21
|
* npx shieldcortex service uninstall # Remove auto-start
|
|
21
22
|
* npx shieldcortex service status # Check service status
|
|
22
|
-
* npx shieldcortex
|
|
23
|
-
* npx shieldcortex
|
|
24
|
-
* npx shieldcortex
|
|
23
|
+
* npx shieldcortex openclaw install # Install OpenClaw hook
|
|
24
|
+
* npx shieldcortex openclaw uninstall # Remove OpenClaw hook
|
|
25
|
+
* npx shieldcortex openclaw status # Check OpenClaw hook status
|
|
25
26
|
* npx shieldcortex migrate # Migrate from Claude Cortex
|
|
26
27
|
* npx shieldcortex setup uninstall # Remove hooks + CLAUDE.md block (requires confirmation)
|
|
27
28
|
* npx shieldcortex uninstall # Full uninstall (requires confirmation)
|
|
@@ -37,7 +38,7 @@ import { startVisualizationServer } from './api/visualization-server.js';
|
|
|
37
38
|
import { handleServiceCommand } from './service/install.js';
|
|
38
39
|
import { setupClaudeMd } from './setup/claude-md.js';
|
|
39
40
|
import { handleHookCommand } from './setup/hooks.js';
|
|
40
|
-
import {
|
|
41
|
+
import { handleOpenClawCommand } from './setup/openclaw.js';
|
|
41
42
|
import { createRequire } from 'module';
|
|
42
43
|
const require = createRequire(import.meta.url);
|
|
43
44
|
const pkg = require('../package.json');
|
|
@@ -177,9 +178,9 @@ async function main() {
|
|
|
177
178
|
await handleHookCommand(process.argv[3] || '');
|
|
178
179
|
return;
|
|
179
180
|
}
|
|
180
|
-
// Handle "clawdbot"
|
|
181
|
-
if (process.argv[2] === 'clawdbot') {
|
|
182
|
-
await
|
|
181
|
+
// Handle "openclaw" subcommand (backward compat: "clawdbot" also accepted)
|
|
182
|
+
if (process.argv[2] === 'openclaw' || process.argv[2] === 'clawdbot') {
|
|
183
|
+
await handleOpenClawCommand(process.argv[3] || '');
|
|
183
184
|
return;
|
|
184
185
|
}
|
|
185
186
|
// Handle "service" subcommand before normal mode parsing
|
|
@@ -187,6 +188,12 @@ async function main() {
|
|
|
187
188
|
await handleServiceCommand(process.argv[3] || '');
|
|
188
189
|
return;
|
|
189
190
|
}
|
|
191
|
+
// Handle "status" subcommand
|
|
192
|
+
if (process.argv[2] === 'status') {
|
|
193
|
+
const { handleStatusCommand } = await import('./setup/status.js');
|
|
194
|
+
await handleStatusCommand();
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
190
197
|
// Handle "graph" subcommand
|
|
191
198
|
if (process.argv[2] === 'graph') {
|
|
192
199
|
const action = process.argv[3];
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* 1. Injects proactive memory instructions into ~/.claude/CLAUDE.md (Claude Code)
|
|
5
5
|
* 2. Creates global MCP server config at ~/.claude.json (user scope)
|
|
6
6
|
* 3. Installs hooks into ~/.claude/settings.json
|
|
7
|
-
* 4. Installs cortex-memory hook into OpenClaw
|
|
7
|
+
* 4. Installs cortex-memory hook into OpenClaw if detected
|
|
8
8
|
*
|
|
9
9
|
* Both steps are idempotent.
|
|
10
10
|
*/
|
package/dist/setup/claude-md.js
CHANGED
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
* 1. Injects proactive memory instructions into ~/.claude/CLAUDE.md (Claude Code)
|
|
5
5
|
* 2. Creates global MCP server config at ~/.claude.json (user scope)
|
|
6
6
|
* 3. Installs hooks into ~/.claude/settings.json
|
|
7
|
-
* 4. Installs cortex-memory hook into OpenClaw
|
|
7
|
+
* 4. Installs cortex-memory hook into OpenClaw if detected
|
|
8
8
|
*
|
|
9
9
|
* Both steps are idempotent.
|
|
10
10
|
*/
|
|
11
11
|
import fs from 'fs';
|
|
12
12
|
import path from 'path';
|
|
13
13
|
import os from 'os';
|
|
14
|
-
import {
|
|
14
|
+
import { installOpenClawHook, findOpenClawHooksDir } from './openclaw.js';
|
|
15
15
|
import { setupHooks } from './settings-hooks.js';
|
|
16
16
|
const MARKER = '# ShieldCortex — Memory System';
|
|
17
17
|
const INSTRUCTIONS = `
|
|
@@ -93,19 +93,19 @@ export async function setupClaudeMd(options) {
|
|
|
93
93
|
setupGlobalMcp();
|
|
94
94
|
// 3. Hooks in settings.json
|
|
95
95
|
setupHooks(options);
|
|
96
|
-
// 4. OpenClaw
|
|
97
|
-
const hooksDir =
|
|
96
|
+
// 4. OpenClaw — if detected
|
|
97
|
+
const hooksDir = findOpenClawHooksDir();
|
|
98
98
|
if (hooksDir) {
|
|
99
99
|
const hookExists = fs.existsSync(path.join(hooksDir, 'cortex-memory'));
|
|
100
100
|
if (hookExists) {
|
|
101
101
|
console.log('✓ OpenClaw: cortex-memory hook already installed');
|
|
102
102
|
}
|
|
103
103
|
else {
|
|
104
|
-
await
|
|
104
|
+
await installOpenClawHook();
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
107
|
else {
|
|
108
|
-
console.log('- OpenClaw
|
|
108
|
+
console.log('- OpenClaw: not detected (skipped)');
|
|
109
109
|
}
|
|
110
110
|
console.log('\nSetup complete.');
|
|
111
111
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-md.js","sourceRoot":"","sources":["../../src/setup/claude-md.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"claude-md.js","sourceRoot":"","sources":["../../src/setup/claude-md.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenClaw hook installer.
|
|
3
|
+
*
|
|
4
|
+
* Copies the cortex-memory hook into OpenClaw's bundled hooks directory.
|
|
5
|
+
* Only works if OpenClaw is installed on the system.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Find OpenClaw's bundled hooks directory by locating the binary
|
|
9
|
+
*/
|
|
10
|
+
export declare function findOpenClawHooksDir(): string | null;
|
|
11
|
+
export declare function installOpenClawHook(): Promise<void>;
|
|
12
|
+
export declare function uninstallOpenClawHook(): Promise<void>;
|
|
13
|
+
export declare function openClawHookStatus(): Promise<void>;
|
|
14
|
+
export declare function handleOpenClawCommand(subcommand: string): Promise<void>;
|
|
15
|
+
//# sourceMappingURL=openclaw.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"openclaw.d.ts","sourceRoot":"","sources":["../../src/setup/openclaw.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,IAAI,CA8BpD;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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* OpenClaw
|
|
2
|
+
* OpenClaw hook installer.
|
|
3
3
|
*
|
|
4
|
-
* Copies the cortex-memory hook into
|
|
4
|
+
* Copies the cortex-memory hook into OpenClaw's bundled hooks directory.
|
|
5
5
|
* Only works if OpenClaw is installed on the system.
|
|
6
6
|
*/
|
|
7
7
|
import fs from 'fs';
|
|
@@ -11,20 +11,20 @@ import { fileURLToPath } from 'url';
|
|
|
11
11
|
const __filename = fileURLToPath(import.meta.url);
|
|
12
12
|
const __dirname = path.dirname(__filename);
|
|
13
13
|
const HOOK_NAME = 'cortex-memory';
|
|
14
|
-
// Hook source is in hooks/
|
|
14
|
+
// Hook source is in hooks/openclaw/cortex-memory/ relative to project root
|
|
15
15
|
// From dist/setup/, go up two levels to project root
|
|
16
|
-
const HOOK_SOURCE = path.resolve(__dirname, '..', '..', 'hooks', '
|
|
16
|
+
const HOOK_SOURCE = path.resolve(__dirname, '..', '..', 'hooks', 'openclaw', HOOK_NAME);
|
|
17
17
|
/**
|
|
18
|
-
* Find
|
|
18
|
+
* Find OpenClaw's bundled hooks directory by locating the binary
|
|
19
19
|
*/
|
|
20
|
-
export function
|
|
20
|
+
export function findOpenClawHooksDir() {
|
|
21
21
|
try {
|
|
22
22
|
const binPath = execSync('which openclaw 2>/dev/null || which clawdbot 2>/dev/null || which moltbot 2>/dev/null', {
|
|
23
23
|
encoding: 'utf-8',
|
|
24
24
|
}).trim();
|
|
25
25
|
if (!binPath)
|
|
26
26
|
return null;
|
|
27
|
-
// Resolve symlink — lands in e.g. <prefix>/lib/node_modules/
|
|
27
|
+
// Resolve symlink — lands in e.g. <prefix>/lib/node_modules/openclaw/dist/entry.js
|
|
28
28
|
const realBin = fs.realpathSync(binPath);
|
|
29
29
|
// Walk up from resolved path to find dist/hooks/bundled/
|
|
30
30
|
let dir = path.dirname(realBin);
|
|
@@ -46,10 +46,10 @@ export function findClawdbotHooksDir() {
|
|
|
46
46
|
return null;
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
|
-
export async function
|
|
50
|
-
const hooksDir =
|
|
49
|
+
export async function installOpenClawHook() {
|
|
50
|
+
const hooksDir = findOpenClawHooksDir();
|
|
51
51
|
if (!hooksDir) {
|
|
52
|
-
console.error('OpenClaw
|
|
52
|
+
console.error('OpenClaw is not installed on this system.');
|
|
53
53
|
console.log('Install it first: npm install -g openclaw');
|
|
54
54
|
process.exit(1);
|
|
55
55
|
}
|
|
@@ -73,10 +73,10 @@ export async function installClawdbotHook() {
|
|
|
73
73
|
console.log(' • Injects past memories on session start');
|
|
74
74
|
console.log(' • "remember this: ..." keyword trigger');
|
|
75
75
|
}
|
|
76
|
-
export async function
|
|
77
|
-
const hooksDir =
|
|
76
|
+
export async function uninstallOpenClawHook() {
|
|
77
|
+
const hooksDir = findOpenClawHooksDir();
|
|
78
78
|
if (!hooksDir) {
|
|
79
|
-
console.log('OpenClaw
|
|
79
|
+
console.log('OpenClaw is not installed on this system.');
|
|
80
80
|
return;
|
|
81
81
|
}
|
|
82
82
|
const destDir = path.join(hooksDir, HOOK_NAME);
|
|
@@ -87,32 +87,32 @@ export async function uninstallClawdbotHook() {
|
|
|
87
87
|
fs.rmSync(destDir, { recursive: true });
|
|
88
88
|
console.log(`✓ Removed cortex-memory hook from ${destDir}`);
|
|
89
89
|
}
|
|
90
|
-
export async function
|
|
91
|
-
const hooksDir =
|
|
90
|
+
export async function openClawHookStatus() {
|
|
91
|
+
const hooksDir = findOpenClawHooksDir();
|
|
92
92
|
if (!hooksDir) {
|
|
93
|
-
console.log('OpenClaw
|
|
93
|
+
console.log('OpenClaw: not installed');
|
|
94
94
|
return;
|
|
95
95
|
}
|
|
96
96
|
const destDir = path.join(hooksDir, HOOK_NAME);
|
|
97
97
|
const installed = fs.existsSync(destDir);
|
|
98
|
-
console.log(`OpenClaw
|
|
98
|
+
console.log(`OpenClaw: installed`);
|
|
99
99
|
console.log(`Hooks directory: ${hooksDir}`);
|
|
100
100
|
console.log(`cortex-memory: ${installed ? 'installed' : 'not installed'}`);
|
|
101
101
|
}
|
|
102
|
-
export async function
|
|
102
|
+
export async function handleOpenClawCommand(subcommand) {
|
|
103
103
|
switch (subcommand) {
|
|
104
104
|
case 'install':
|
|
105
|
-
await
|
|
105
|
+
await installOpenClawHook();
|
|
106
106
|
break;
|
|
107
107
|
case 'uninstall':
|
|
108
|
-
await
|
|
108
|
+
await uninstallOpenClawHook();
|
|
109
109
|
break;
|
|
110
110
|
case 'status':
|
|
111
|
-
await
|
|
111
|
+
await openClawHookStatus();
|
|
112
112
|
break;
|
|
113
113
|
default:
|
|
114
|
-
console.log('Usage: shieldcortex
|
|
114
|
+
console.log('Usage: shieldcortex openclaw <install|uninstall|status>');
|
|
115
115
|
process.exit(1);
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
|
-
//# sourceMappingURL=
|
|
118
|
+
//# sourceMappingURL=openclaw.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
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;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,QAAQ,CAAC,uFAAuF,EAAE;YAChH,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC,IAAI,EAAE,CAAC;QAEV,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAE1B,mFAAmF;QACnF,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAEzC,yDAAyD;QACzD,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;YACrD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,iDAAiD;YACjD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;YACjE,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBACjC,OAAO,aAAa,CAAC;YACvB,CAAC;YACD,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC;IAExC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAE/C,kBAAkB;IAClB,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3C,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,CAAC;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACtC,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,qCAAqC,OAAO,EAAE,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC/B,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC;IAExC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QACzD,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAE/C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QACpD,OAAO;IACT,CAAC;IAED,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,qCAAqC,OAAO,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC;IAExC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACvC,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAEzC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,qBAAqB,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,UAAkB;IAC5D,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,SAAS;YACZ,MAAM,mBAAmB,EAAE,CAAC;YAC5B,MAAM;QACR,KAAK,WAAW;YACd,MAAM,qBAAqB,EAAE,CAAC;YAC9B,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,kBAAkB,EAAE,CAAC;YAC3B,MAAM;QACR;YACE,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;YACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/setup/status.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiGH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CA4CzD"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Status command - Display ShieldCortex database and system status
|
|
3
|
+
*/
|
|
4
|
+
import path from 'path';
|
|
5
|
+
import os from 'os';
|
|
6
|
+
import fs from 'fs';
|
|
7
|
+
import { initDatabase, getDatabase } from '../database/init.js';
|
|
8
|
+
function formatBytes(bytes) {
|
|
9
|
+
if (bytes === 0)
|
|
10
|
+
return '0 B';
|
|
11
|
+
const k = 1024;
|
|
12
|
+
const sizes = ['B', 'KB', 'MB', 'GB'];
|
|
13
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
14
|
+
return parseFloat((bytes / Math.pow(k, i)).toFixed(1)) + ' ' + sizes[i];
|
|
15
|
+
}
|
|
16
|
+
function formatRelativeTime(dateStr) {
|
|
17
|
+
const date = new Date(dateStr);
|
|
18
|
+
const now = new Date();
|
|
19
|
+
const diffMs = now.getTime() - date.getTime();
|
|
20
|
+
const diffMins = Math.floor(diffMs / 60000);
|
|
21
|
+
const diffHours = Math.floor(diffMins / 60);
|
|
22
|
+
const diffDays = Math.floor(diffHours / 24);
|
|
23
|
+
if (diffMins < 1)
|
|
24
|
+
return 'just now';
|
|
25
|
+
if (diffMins < 60)
|
|
26
|
+
return `${diffMins} minute${diffMins === 1 ? '' : 's'} ago`;
|
|
27
|
+
if (diffHours < 24)
|
|
28
|
+
return `${diffHours} hour${diffHours === 1 ? '' : 's'} ago`;
|
|
29
|
+
if (diffDays < 7)
|
|
30
|
+
return `${diffDays} day${diffDays === 1 ? '' : 's'} ago`;
|
|
31
|
+
return date.toLocaleDateString();
|
|
32
|
+
}
|
|
33
|
+
function getStatusInfo(dbPath) {
|
|
34
|
+
// Initialize database
|
|
35
|
+
initDatabase(dbPath);
|
|
36
|
+
const db = getDatabase();
|
|
37
|
+
// Get database file size
|
|
38
|
+
let dbSize = '0 B';
|
|
39
|
+
try {
|
|
40
|
+
const stats = fs.statSync(dbPath);
|
|
41
|
+
dbSize = formatBytes(stats.size);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
dbSize = 'unknown';
|
|
45
|
+
}
|
|
46
|
+
// Count memories by type
|
|
47
|
+
const totalRow = db.prepare('SELECT COUNT(*) as count FROM memories').get();
|
|
48
|
+
const longTermRow = db.prepare("SELECT COUNT(*) as count FROM memories WHERE type = 'long_term'").get();
|
|
49
|
+
const shortTermRow = db.prepare("SELECT COUNT(*) as count FROM memories WHERE type = 'short_term'").get();
|
|
50
|
+
const episodicRow = db.prepare("SELECT COUNT(*) as count FROM memories WHERE type = 'episodic'").get();
|
|
51
|
+
// Get unique projects
|
|
52
|
+
const projectRows = db.prepare("SELECT DISTINCT project FROM memories WHERE project IS NOT NULL AND project != ''").all();
|
|
53
|
+
const projects = projectRows.map(r => r.project);
|
|
54
|
+
// Get last activity
|
|
55
|
+
const lastRow = db.prepare('SELECT last_accessed FROM memories ORDER BY last_accessed DESC LIMIT 1').get();
|
|
56
|
+
const lastActivity = lastRow ? formatRelativeTime(lastRow.last_accessed) : null;
|
|
57
|
+
// Get defence stats (quarantine table might not exist in older DBs)
|
|
58
|
+
let quarantined = 0;
|
|
59
|
+
let threatsBlocked = 0;
|
|
60
|
+
try {
|
|
61
|
+
const quarantineRow = db.prepare("SELECT COUNT(*) as count FROM quarantine WHERE status = 'pending'").get();
|
|
62
|
+
quarantined = quarantineRow.count;
|
|
63
|
+
const blockedRow = db.prepare("SELECT COUNT(*) as count FROM quarantine WHERE status = 'rejected'").get();
|
|
64
|
+
threatsBlocked = blockedRow.count;
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
// Quarantine table doesn't exist - that's fine
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
dbPath,
|
|
71
|
+
dbSize,
|
|
72
|
+
memoriesTotal: totalRow.count,
|
|
73
|
+
memoriesLongTerm: longTermRow.count,
|
|
74
|
+
memoriesShortTerm: shortTermRow.count,
|
|
75
|
+
memoriesEpisodic: episodicRow.count,
|
|
76
|
+
projects,
|
|
77
|
+
lastActivity,
|
|
78
|
+
quarantined,
|
|
79
|
+
threatsBlocked,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
export async function handleStatusCommand() {
|
|
83
|
+
// Determine database path
|
|
84
|
+
const dbPath = process.env.CLAUDE_MEMORY_DB || path.join(os.homedir(), '.shieldcortex', 'memories.db');
|
|
85
|
+
// Check if database exists
|
|
86
|
+
if (!fs.existsSync(dbPath)) {
|
|
87
|
+
console.log(`
|
|
88
|
+
🧠 ShieldCortex Status
|
|
89
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
90
|
+
|
|
91
|
+
⚠️ No database found at: ${dbPath}
|
|
92
|
+
|
|
93
|
+
Run 'npx shieldcortex setup' to get started.
|
|
94
|
+
`);
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
try {
|
|
98
|
+
const info = getStatusInfo(dbPath);
|
|
99
|
+
const projectList = info.projects.length > 0
|
|
100
|
+
? info.projects.slice(0, 5).join(', ') + (info.projects.length > 5 ? ` (+${info.projects.length - 5} more)` : '')
|
|
101
|
+
: 'none';
|
|
102
|
+
console.log(`
|
|
103
|
+
🧠 ShieldCortex Status
|
|
104
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
105
|
+
|
|
106
|
+
Database: ${info.dbPath}
|
|
107
|
+
Size: ${info.dbSize}
|
|
108
|
+
|
|
109
|
+
Memories: ${info.memoriesTotal} total
|
|
110
|
+
├─ ${info.memoriesLongTerm} long-term
|
|
111
|
+
├─ ${info.memoriesShortTerm} short-term
|
|
112
|
+
└─ ${info.memoriesEpisodic} episodic
|
|
113
|
+
Projects: ${info.projects.length} (${projectList})
|
|
114
|
+
Last activity: ${info.lastActivity || 'never'}
|
|
115
|
+
|
|
116
|
+
Defence: ${info.quarantined} quarantined, ${info.threatsBlocked} threats blocked
|
|
117
|
+
`);
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
console.error('Failed to get status:', error);
|
|
121
|
+
process.exit(1);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/setup/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Uninstall utilities for ShieldCortex.
|
|
3
3
|
*
|
|
4
|
-
* Removes hooks from settings.json, CLAUDE.md block, service, and
|
|
4
|
+
* Removes hooks from settings.json, CLAUDE.md block, service, and OpenClaw hook.
|
|
5
5
|
*
|
|
6
6
|
* SECURITY: Requires --confirm flag or interactive TTY confirmation.
|
|
7
7
|
* This prevents automated/bot-initiated uninstalls.
|
package/dist/setup/uninstall.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Uninstall utilities for ShieldCortex.
|
|
3
3
|
*
|
|
4
|
-
* Removes hooks from settings.json, CLAUDE.md block, service, and
|
|
4
|
+
* Removes hooks from settings.json, CLAUDE.md block, service, and OpenClaw hook.
|
|
5
5
|
*
|
|
6
6
|
* SECURITY: Requires --confirm flag or interactive TTY confirmation.
|
|
7
7
|
* This prevents automated/bot-initiated uninstalls.
|
|
@@ -11,7 +11,7 @@ import path from 'path';
|
|
|
11
11
|
import os from 'os';
|
|
12
12
|
import readline from 'readline';
|
|
13
13
|
import { uninstallService } from '../service/install.js';
|
|
14
|
-
import {
|
|
14
|
+
import { uninstallOpenClawHook } from './openclaw.js';
|
|
15
15
|
/**
|
|
16
16
|
* Check if the current process is running in an agent context.
|
|
17
17
|
* Agents (sub-agents) should not be able to uninstall ShieldCortex.
|
|
@@ -167,12 +167,12 @@ export async function uninstallAll(options) {
|
|
|
167
167
|
catch (err) {
|
|
168
168
|
console.error(`Failed to uninstall service: ${err.message}`);
|
|
169
169
|
}
|
|
170
|
-
// 2. Uninstall
|
|
170
|
+
// 2. Uninstall OpenClaw hook
|
|
171
171
|
try {
|
|
172
|
-
await
|
|
172
|
+
await uninstallOpenClawHook();
|
|
173
173
|
}
|
|
174
174
|
catch (err) {
|
|
175
|
-
console.error(`Failed to uninstall
|
|
175
|
+
console.error(`Failed to uninstall OpenClaw hook: ${err.message}`);
|
|
176
176
|
}
|
|
177
177
|
// 3. Remove hooks from settings.json
|
|
178
178
|
try {
|
|
@@ -4,7 +4,7 @@ description: "Persistent brain-like memory via ShieldCortex — auto-saves sessi
|
|
|
4
4
|
homepage: https://github.com/Drakon-Systems-Ltd/ShieldCortex
|
|
5
5
|
metadata:
|
|
6
6
|
{
|
|
7
|
-
"
|
|
7
|
+
"openclaw":
|
|
8
8
|
{
|
|
9
9
|
"emoji": "🧠",
|
|
10
10
|
"events": ["command:new", "agent:bootstrap", "command"],
|
|
@@ -47,13 +47,13 @@ Memories stored in `~/.shieldcortex/memories.db` (SQLite). Shared with Claude Co
|
|
|
47
47
|
## Install
|
|
48
48
|
|
|
49
49
|
```bash
|
|
50
|
-
npx shieldcortex
|
|
50
|
+
npx shieldcortex openclaw install
|
|
51
51
|
```
|
|
52
52
|
|
|
53
53
|
## Uninstall
|
|
54
54
|
|
|
55
55
|
```bash
|
|
56
|
-
npx shieldcortex
|
|
56
|
+
npx shieldcortex openclaw uninstall
|
|
57
57
|
```
|
|
58
58
|
|
|
59
59
|
Or disable without removing:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Cortex Memory Hook — Persistent brain-like memory for
|
|
2
|
+
* Cortex Memory Hook — Persistent brain-like memory for OpenClaw
|
|
3
3
|
*
|
|
4
4
|
* Integrates ShieldCortex MCP server via mcporter to provide:
|
|
5
5
|
* - Auto-extraction of important session content on /new
|
|
@@ -176,10 +176,10 @@ async function onSessionEnd(event) {
|
|
|
176
176
|
title: mem.title,
|
|
177
177
|
content: mem.content,
|
|
178
178
|
category: mem.category,
|
|
179
|
-
project: "
|
|
179
|
+
project: "openclaw",
|
|
180
180
|
scope: "global",
|
|
181
181
|
importance: "high",
|
|
182
|
-
tags: "auto-extracted,
|
|
182
|
+
tags: "auto-extracted,openclaw-hook",
|
|
183
183
|
});
|
|
184
184
|
if (result) saved++;
|
|
185
185
|
}
|
|
@@ -195,7 +195,7 @@ async function onBootstrap(event) {
|
|
|
195
195
|
if (!Array.isArray(context.bootstrapFiles)) return;
|
|
196
196
|
|
|
197
197
|
const result = await callCortex("get_context", {
|
|
198
|
-
query: "
|
|
198
|
+
query: "openclaw session context",
|
|
199
199
|
format: "summary",
|
|
200
200
|
});
|
|
201
201
|
|
|
@@ -245,10 +245,10 @@ async function onKeywordTrigger(event) {
|
|
|
245
245
|
title,
|
|
246
246
|
content: content.slice(0, 500),
|
|
247
247
|
category: "note",
|
|
248
|
-
project: "
|
|
248
|
+
project: "openclaw",
|
|
249
249
|
scope: "global",
|
|
250
250
|
importance: "critical",
|
|
251
|
-
tags: "keyword-trigger,
|
|
251
|
+
tags: "keyword-trigger,openclaw-hook",
|
|
252
252
|
});
|
|
253
253
|
|
|
254
254
|
if (result) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "shieldcortex",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.3",
|
|
4
4
|
"description": "Complete memory system + security layer for AI agents. 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",
|
package/dist/setup/clawdbot.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OpenClaw/Clawdbot hook installer.
|
|
3
|
-
*
|
|
4
|
-
* Copies the cortex-memory hook into Clawdbot's bundled hooks directory.
|
|
5
|
-
* Only works if OpenClaw is installed on the system.
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Find Clawdbot's bundled hooks directory by locating the binary
|
|
9
|
-
*/
|
|
10
|
-
export declare function findClawdbotHooksDir(): string | null;
|
|
11
|
-
export declare function installClawdbotHook(): Promise<void>;
|
|
12
|
-
export declare function uninstallClawdbotHook(): Promise<void>;
|
|
13
|
-
export declare function clawdbotHookStatus(): Promise<void>;
|
|
14
|
-
export declare function handleClawdbotCommand(subcommand: string): Promise<void>;
|
|
15
|
-
//# sourceMappingURL=clawdbot.d.ts.map
|