@duckmind/deepquark-darwin-arm64 0.9.83 → 0.9.90
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/.deepquark/skills/bundled/knowledge-graph/SKILL.md +385 -0
- package/.deepquark/skills/bundled/knowledge-graph/STANDARDS.md +461 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/cli.ts +588 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/config.ts +630 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/connection-profile.ts +629 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/container.ts +756 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/mcp-client.ts +1310 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/output-formatter.ts +997 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/token-metrics.ts +335 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/transformation-log.ts +137 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/wrapper-config.ts +113 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/.env.example +129 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/compare-embeddings.ts +175 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/config-falkordb.yaml +108 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/config-neo4j.yaml +111 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/diagnose.ts +483 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-falkordb-dev.yml +146 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-falkordb.yml +151 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-neo4j-dev-local.yml +161 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-neo4j-dev.yml +161 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-neo4j.yml +169 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-production.yml +128 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-test.yml +10 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose.yml +84 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/entrypoint.sh +40 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/install.ts +2054 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/podman-compose-falkordb.yml +78 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/podman-compose-neo4j.yml +88 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/podman-compose.yml +83 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-all-llms-mcp.ts +387 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-embedding-models.ts +201 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-embedding-providers.ts +641 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-graphiti-model.ts +217 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-grok-correct.ts +141 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-grok-llms-mcp.ts +386 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-grok-models.ts +173 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-llama-extraction.ts +188 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-mcp-final.ts +240 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-mcp-live.ts +187 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-mcp-session.ts +127 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-model-combinations.ts +316 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-ollama-models.ts +228 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-openrouter-models.ts +460 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-real-life-mcp.ts +311 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-search-debug.ts +199 -0
- package/.deepquark/skills/bundled/knowledge-graph/tools/Install.md +104 -0
- package/.deepquark/skills/bundled/knowledge-graph/tools/README.md +120 -0
- package/.deepquark/skills/bundled/knowledge-graph/tools/knowledge-cli.ts +996 -0
- package/.deepquark/skills/bundled/knowledge-graph/tools/server-cli.ts +531 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/BulkImport.md +514 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/CaptureEpisode.md +242 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/ClearGraph.md +392 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/GetRecent.md +352 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/GetStatus.md +373 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/HealthReport.md +212 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/InvestigateEntity.md +142 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/OntologyManagement.md +201 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/RunMaintenance.md +302 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/SearchByDate.md +255 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/SearchFacts.md +382 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/SearchKnowledge.md +374 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/StixImport.md +212 -0
- package/bin/deepquark +0 -0
- package/package.json +1 -1
- package/.deepquark/skills/bundled/ge-payroll/SKILL.md +0 -153
- package/.deepquark/skills/bundled/ge-payroll/evals/evals.json +0 -23
- package/.deepquark/skills/bundled/ge-payroll/references/pain-points-improvements.md +0 -106
- package/.deepquark/skills/bundled/ge-payroll/references/process-detail.md +0 -217
- package/.deepquark/skills/bundled/ge-payroll/references/raci-stakeholders.md +0 -85
- package/.deepquark/skills/bundled/ge-payroll/references/timeline-mandays.md +0 -64
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
# Search Knowledge Workflow
|
|
2
|
+
|
|
3
|
+
**Objective:** Retrieve relevant knowledge from the Graphiti knowledge graph using semantic search across entity summaries.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Step 1: Announce Workflow
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
~/.claude/Tools/SkillWorkflowNotification SearchKnowledge MadeinozKnowledgeSystem
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
**Output to user:**
|
|
14
|
+
```
|
|
15
|
+
Running the **SearchKnowledge** workflow from the **MadeinozKnowledgeSystem** skill...
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Step 2: Parse Search Query
|
|
21
|
+
|
|
22
|
+
**Extract search intent from user request:**
|
|
23
|
+
|
|
24
|
+
**Direct Questions:**
|
|
25
|
+
- "What do I know about X?"
|
|
26
|
+
- "Find information on Y"
|
|
27
|
+
- "Search my knowledge base for Z"
|
|
28
|
+
|
|
29
|
+
**Implicit Requests:**
|
|
30
|
+
- "Tell me about X" (implies searching personal knowledge first)
|
|
31
|
+
- "Recall what we discussed about Y"
|
|
32
|
+
- "What have I learned about Z?"
|
|
33
|
+
|
|
34
|
+
**Extract key concepts:**
|
|
35
|
+
- Identify main topic/keywords
|
|
36
|
+
- Note related concepts
|
|
37
|
+
- Preserve context clues
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Step 3: Build Search Query
|
|
42
|
+
|
|
43
|
+
**Construct effective query:**
|
|
44
|
+
|
|
45
|
+
> **MCP Tool:** `search_memory_nodes` (searches entity "nodes" in the graph)
|
|
46
|
+
|
|
47
|
+
```typescript
|
|
48
|
+
// TypeScript: searchNodes() → calls MCP tool "search_memory_nodes"
|
|
49
|
+
{
|
|
50
|
+
query: "user's search terms here",
|
|
51
|
+
limit: 10 // Number of results to return
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
**Query Construction Tips:**
|
|
56
|
+
- Use natural language queries
|
|
57
|
+
- Include specific domain terms
|
|
58
|
+
- Add context if search is ambiguous
|
|
59
|
+
- Keep queries focused on one main topic
|
|
60
|
+
|
|
61
|
+
**Examples:**
|
|
62
|
+
- "Podman volume mounting" → Good
|
|
63
|
+
- "how do I mount volumes in Podman containers" → Better (more specific)
|
|
64
|
+
- "Podman" → Too broad (may return too many results)
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Step 4: Execute Semantic Search (CLI-First, MCP-Fallback)
|
|
69
|
+
|
|
70
|
+
### Primary: Knowledge CLI (via Bash)
|
|
71
|
+
|
|
72
|
+
**ALWAYS try CLI first - it's more reliable and token-efficient (30%+ savings):**
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
bun run ~/.claude/skills/Knowledge/tools/knowledge-cli.ts search_nodes "search query" 10
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**Parameters:**
|
|
79
|
+
- First argument (required) - Natural language search query
|
|
80
|
+
- Second argument (optional) - Number of results (default: 5)
|
|
81
|
+
|
|
82
|
+
**Options:**
|
|
83
|
+
- `--raw` - Output raw JSON instead of compact format
|
|
84
|
+
- `--metrics` - Display token metrics after operation
|
|
85
|
+
|
|
86
|
+
### Fallback: MCP Tool (Only if CLI fails)
|
|
87
|
+
|
|
88
|
+
**⚠️ Only use MCP if CLI returns connection/execution errors.**
|
|
89
|
+
|
|
90
|
+
```typescript
|
|
91
|
+
search_nodes({
|
|
92
|
+
query: searchQuery,
|
|
93
|
+
limit: 10
|
|
94
|
+
})
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**Entity type filters (when using direct MCP):**
|
|
98
|
+
- `Preference` - User preferences and settings
|
|
99
|
+
- `Procedure` - How-to guides and processes
|
|
100
|
+
- `Learning` - Knowledge from learning sessions
|
|
101
|
+
- `Research` - Findings from research
|
|
102
|
+
- `Decision` - Architectural and strategic decisions
|
|
103
|
+
- `Feature` - Feature implementations
|
|
104
|
+
- `Person`, `Organization`, `Location`, `Concept`, `Event`, `Document`
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Step 5: Present Results
|
|
109
|
+
|
|
110
|
+
**Format knowledge for user:**
|
|
111
|
+
|
|
112
|
+
```markdown
|
|
113
|
+
📚 **Knowledge Found: [Topic]**
|
|
114
|
+
|
|
115
|
+
Based on your knowledge graph, here's what you know:
|
|
116
|
+
|
|
117
|
+
**Key Entities:**
|
|
118
|
+
1. **[Entity Name]** ([Type])
|
|
119
|
+
- Summary: [Brief description]
|
|
120
|
+
- Related to: [Related entities]
|
|
121
|
+
|
|
122
|
+
2. **[Entity Name]** ([Type])
|
|
123
|
+
- Summary: [Brief description]
|
|
124
|
+
- Related to: [Related entities]
|
|
125
|
+
|
|
126
|
+
**Relationships:**
|
|
127
|
+
- [Entity A] → [relationship] → [Entity B]
|
|
128
|
+
- [Entity C] → [relationship] → [Entity D]
|
|
129
|
+
|
|
130
|
+
**Episodes Containing This Knowledge:**
|
|
131
|
+
- [Episode name] ([date])
|
|
132
|
+
- [Episode name] ([date])
|
|
133
|
+
|
|
134
|
+
💡 **Insights:**
|
|
135
|
+
[Synthesize connections and patterns from the results]
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**If no results found:**
|
|
139
|
+
```markdown
|
|
140
|
+
❌ **No Knowledge Found**
|
|
141
|
+
|
|
142
|
+
I couldn't find any information about "[query]" in your knowledge graph.
|
|
143
|
+
|
|
144
|
+
Suggestions:
|
|
145
|
+
1. Try different search terms
|
|
146
|
+
2. Use broader concepts
|
|
147
|
+
3. Check if this knowledge has been captured yet
|
|
148
|
+
|
|
149
|
+
Want to capture this information now?
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## Best Practices
|
|
155
|
+
|
|
156
|
+
**Search Query Construction:**
|
|
157
|
+
- Use domain-specific terminology
|
|
158
|
+
- Include related concepts in query
|
|
159
|
+
- Think about how entities might be described
|
|
160
|
+
- Try synonyms if initial search fails
|
|
161
|
+
|
|
162
|
+
**Result Interpretation:**
|
|
163
|
+
- Look for entity types (Preferences, Procedures, etc.)
|
|
164
|
+
- Note relationship types between entities
|
|
165
|
+
- Consider temporal context (when was this learned?)
|
|
166
|
+
- Check confidence scores if provided
|
|
167
|
+
|
|
168
|
+
**When to Use vs General Search:**
|
|
169
|
+
- Use knowledge search first for personal information
|
|
170
|
+
- Fall back to web search if no knowledge found
|
|
171
|
+
- Combine both for comprehensive research
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## Examples
|
|
176
|
+
|
|
177
|
+
**Example 1: Direct Topic Search**
|
|
178
|
+
|
|
179
|
+
User: "What do I know about Graphiti?"
|
|
180
|
+
|
|
181
|
+
Query: "Graphiti knowledge graph framework"
|
|
182
|
+
|
|
183
|
+
```typescript
|
|
184
|
+
search_nodes({
|
|
185
|
+
query: "Graphiti knowledge graph framework temporal context",
|
|
186
|
+
limit: 10
|
|
187
|
+
})
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
Returns entities about Graphiti, FalkorDB, knowledge management, MCP, etc.
|
|
191
|
+
|
|
192
|
+
**Example 2: Procedural Search**
|
|
193
|
+
|
|
194
|
+
User: "How do I set up PAI skills?"
|
|
195
|
+
|
|
196
|
+
Query: "PAI skill creation setup configuration"
|
|
197
|
+
|
|
198
|
+
```typescript
|
|
199
|
+
search_nodes({
|
|
200
|
+
query: "PAI skill creation canonical structure setup",
|
|
201
|
+
limit: 10
|
|
202
|
+
})
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
Returns procedure entities related to skill creation, SKILL.md format, workflows.
|
|
206
|
+
|
|
207
|
+
**Example 3: Preference Retrieval**
|
|
208
|
+
|
|
209
|
+
User: "What are my VS Code settings?"
|
|
210
|
+
|
|
211
|
+
Query: "VS Code preferences configuration settings"
|
|
212
|
+
|
|
213
|
+
```typescript
|
|
214
|
+
search_nodes({
|
|
215
|
+
query: "VS Code preferences theme tab size configuration",
|
|
216
|
+
limit: 10
|
|
217
|
+
})
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
Returns preference entities about development environment setup.
|
|
221
|
+
|
|
222
|
+
**Example 4: Decision Recall**
|
|
223
|
+
|
|
224
|
+
User: "Why did we choose Graphiti over other options?"
|
|
225
|
+
|
|
226
|
+
Query: "Graphiti selection decision reasoning architecture"
|
|
227
|
+
|
|
228
|
+
```typescript
|
|
229
|
+
search_nodes({
|
|
230
|
+
query: "Graphiti architecture decision rationale advantages",
|
|
231
|
+
limit: 10
|
|
232
|
+
})
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
Returns event/procedure entities documenting the decision-making process.
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## Advanced Search Patterns
|
|
240
|
+
|
|
241
|
+
**Filter by Entity Type:**
|
|
242
|
+
```typescript
|
|
243
|
+
// Find only procedures
|
|
244
|
+
search_nodes({
|
|
245
|
+
query: "PAI skill creation",
|
|
246
|
+
entity: "Procedure",
|
|
247
|
+
limit: 10
|
|
248
|
+
})
|
|
249
|
+
|
|
250
|
+
// Find only learnings
|
|
251
|
+
search_nodes({
|
|
252
|
+
query: "containerization",
|
|
253
|
+
entity: "Learning",
|
|
254
|
+
limit: 10
|
|
255
|
+
})
|
|
256
|
+
|
|
257
|
+
// Find only preferences
|
|
258
|
+
search_nodes({
|
|
259
|
+
query: "VS Code settings",
|
|
260
|
+
entity: "Preference",
|
|
261
|
+
limit: 10
|
|
262
|
+
})
|
|
263
|
+
|
|
264
|
+
// Find only research
|
|
265
|
+
search_nodes({
|
|
266
|
+
query: "knowledge graph architecture",
|
|
267
|
+
entity: "Research",
|
|
268
|
+
limit: 10
|
|
269
|
+
})
|
|
270
|
+
|
|
271
|
+
// Find only decisions
|
|
272
|
+
search_nodes({
|
|
273
|
+
query: "database selection",
|
|
274
|
+
entity: "Decision",
|
|
275
|
+
limit: 10
|
|
276
|
+
})
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
**Combine Concepts:**
|
|
280
|
+
```typescript
|
|
281
|
+
// Search for intersection of topics
|
|
282
|
+
query: "Podman container networking troubleshooting"
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
**Temporal Searches (with date filters):**
|
|
286
|
+
```bash
|
|
287
|
+
# Search from today
|
|
288
|
+
bun run ~/.claude/skills/Knowledge/tools/knowledge-cli.ts search_nodes "PAI skills" --since today
|
|
289
|
+
|
|
290
|
+
# Search from last 7 days
|
|
291
|
+
bun run ~/.claude/skills/Knowledge/tools/knowledge-cli.ts search_nodes "PAI skills" --since 7d
|
|
292
|
+
|
|
293
|
+
# Search within date range
|
|
294
|
+
bun run ~/.claude/skills/Knowledge/tools/knowledge-cli.ts search_nodes "PAI skills" --since 2026-01-01 --until 2026-01-15
|
|
295
|
+
|
|
296
|
+
# Yesterday only
|
|
297
|
+
bun run ~/.claude/skills/Knowledge/tools/knowledge-cli.ts search_nodes "PAI skills" --since yesterday --until today
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
**Temporal filter options:**
|
|
301
|
+
- `--since <date>` - Filter to nodes created after this date
|
|
302
|
+
- `--until <date>` - Filter to nodes created before this date
|
|
303
|
+
|
|
304
|
+
**Date formats:** `today`, `yesterday`, `7d`, `1w`, `1m`, `2026-01-26`
|
|
305
|
+
|
|
306
|
+
**Relationship-Focused:**
|
|
307
|
+
```typescript
|
|
308
|
+
// Find connections
|
|
309
|
+
query: "how FalkorDB integrates with Graphiti"
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
**Procedure Retrieval:**
|
|
313
|
+
```typescript
|
|
314
|
+
// Find how-to knowledge
|
|
315
|
+
search_nodes({
|
|
316
|
+
query: "creating PAI skill workflows",
|
|
317
|
+
entity: "Procedure",
|
|
318
|
+
limit: 10
|
|
319
|
+
})
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
## Troubleshooting
|
|
325
|
+
|
|
326
|
+
**No Results Found:**
|
|
327
|
+
- Query may be too specific → Try broader terms
|
|
328
|
+
- Knowledge may not be captured → Check with GetRecent workflow
|
|
329
|
+
- Different terminology used → Try synonyms
|
|
330
|
+
- Search may be in wrong group → Verify `group_id`
|
|
331
|
+
|
|
332
|
+
**Too Many Results:**
|
|
333
|
+
- Query too broad → Add specific constraints
|
|
334
|
+
- Refine with additional context
|
|
335
|
+
- Increase result specificity
|
|
336
|
+
- Use relationship type filters
|
|
337
|
+
|
|
338
|
+
**Irrelevant Results:**
|
|
339
|
+
- Query terms may have multiple meanings → Add domain context
|
|
340
|
+
- Consider different entity types
|
|
341
|
+
- Use SearchFacts for relationships instead
|
|
342
|
+
|
|
343
|
+
**Connection Issues:**
|
|
344
|
+
```bash
|
|
345
|
+
# Check server health
|
|
346
|
+
curl http://localhost:8000/health
|
|
347
|
+
|
|
348
|
+
# View server logs
|
|
349
|
+
podman logs graphiti-knowledge-graph-mcp
|
|
350
|
+
|
|
351
|
+
# Restart if needed
|
|
352
|
+
podman restart graphiti-knowledge-graph-mcp
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
## Integration with Other Workflows
|
|
358
|
+
|
|
359
|
+
**Before Searching:**
|
|
360
|
+
- Use `GetRecent` to see what's been captured lately
|
|
361
|
+
- Use `GetStatus` to verify graph is operational
|
|
362
|
+
|
|
363
|
+
**After Searching:**
|
|
364
|
+
- Use `SearchFacts` to explore relationships between found entities
|
|
365
|
+
- Use `CaptureEpisode` to add new insights discovered during search
|
|
366
|
+
- Use `GetRecent` to see related knowledge added around the same time
|
|
367
|
+
|
|
368
|
+
---
|
|
369
|
+
|
|
370
|
+
**Related Workflows:**
|
|
371
|
+
- `SearchFacts.md` - Find relationships and connections
|
|
372
|
+
- `GetRecent.md` - Browse recent knowledge additions
|
|
373
|
+
- `CaptureEpisode.md` - Add new knowledge discovered
|
|
374
|
+
- `GetStatus.md` - Verify knowledge graph is operational
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
# STIX Import Workflow
|
|
2
|
+
|
|
3
|
+
**Feature 018**: Import STIX 2.1 bundles for threat intelligence
|
|
4
|
+
|
|
5
|
+
## Triggers
|
|
6
|
+
|
|
7
|
+
- "import STIX", "STIX bundle", "threat intel import", "CTI data"
|
|
8
|
+
- "import threat intelligence", "load STIX file", "MITRE ATT&CK"
|
|
9
|
+
|
|
10
|
+
## Purpose
|
|
11
|
+
|
|
12
|
+
Import cyber threat intelligence from STIX 2.1 (Structured Threat Information Expression) bundles into the knowledge graph, enabling:
|
|
13
|
+
- **MITRE ATT&CK Integration**: Import techniques, tactics, and actor data
|
|
14
|
+
- **Threat Intel Feeds**: Commercial CTI feeds (Recorded Future, Flashpoint, etc.)
|
|
15
|
+
- **Vulnerability Data**: CVE records in STIX format
|
|
16
|
+
- **Indicator Sharing**: IoC exchange between teams and tools
|
|
17
|
+
|
|
18
|
+
## Supported STIX Objects
|
|
19
|
+
|
|
20
|
+
| STIX Type | Mapped To | Description |
|
|
21
|
+
|-----------|-----------|-------------|
|
|
22
|
+
| `threat-actor` | ThreatActor | APT groups, malicious actors |
|
|
23
|
+
| `malware` | Malware | Malicious software families |
|
|
24
|
+
| `vulnerability` | Vulnerability | CVE records, security flaws |
|
|
25
|
+
| `indicator` | Indicator | IoCs (IPs, domains, hashes, emails) |
|
|
26
|
+
| `attack-pattern` | TTP | MITRE ATT&CK techniques |
|
|
27
|
+
| `infrastructure` | Infrastructure | C2 servers, attack infrastructure |
|
|
28
|
+
| `campaign` | Campaign | Coordinated threat activities |
|
|
29
|
+
| `identity` | Organization/Organization | Companies, agencies |
|
|
30
|
+
| `location` | Location | Countries, regions |
|
|
31
|
+
| `relationship` | Custom Relationship | STIX relationships |
|
|
32
|
+
|
|
33
|
+
## CLI Commands
|
|
34
|
+
|
|
35
|
+
### Import STIX Bundle
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# Import from local file
|
|
39
|
+
bun run tools/knowledge-cli.ts stix:import ./apt28-stix.json
|
|
40
|
+
|
|
41
|
+
# Import from URL
|
|
42
|
+
bun run tools/knowledge-cli.ts stix:import https://attack.mitre.org/docs/APT28-STIX.json
|
|
43
|
+
|
|
44
|
+
# Import with group_id specified
|
|
45
|
+
bun run tools/knowledge-cli.ts stix:import ./threat-intel.json --group-id cti-feed
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Check Import Status
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# Get latest import status
|
|
52
|
+
bun run tools/knowledge-cli.ts stix:status
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Output:
|
|
56
|
+
```
|
|
57
|
+
STIX Import Status:
|
|
58
|
+
Last Import: 2026-02-04T12:00:00Z
|
|
59
|
+
Source: apt28-stix.json
|
|
60
|
+
Status: SUCCESS
|
|
61
|
+
Objects Processed: 47
|
|
62
|
+
- threat-actor: 1
|
|
63
|
+
- malware: 3
|
|
64
|
+
- indicator: 28
|
|
65
|
+
- attack-pattern: 8
|
|
66
|
+
- relationship: 7
|
|
67
|
+
Errors: 0
|
|
68
|
+
Duration: 2.3s
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Import Process
|
|
72
|
+
|
|
73
|
+
1. **Parse STIX Bundle** - Validate JSON and STIX 2.1 schema
|
|
74
|
+
2. **Map Object Types** - Convert STIX types to ontology entities
|
|
75
|
+
3. **Extract Relationships** - Create edges between entities
|
|
76
|
+
4. **Store Episodes** - Each bundle becomes an episode with source tracking
|
|
77
|
+
5. **Report Results** - Summary of objects processed and any errors
|
|
78
|
+
|
|
79
|
+
## STIX to Knowledge Graph Mapping
|
|
80
|
+
|
|
81
|
+
### Entity Mapping
|
|
82
|
+
|
|
83
|
+
| STIX Object | Knowledge Entity | Example |
|
|
84
|
+
|-------------|------------------|---------|
|
|
85
|
+
| `threat-actor` | ThreatActor | APT28, Sandworm |
|
|
86
|
+
| `malware` | Malware | TrickBot, LockBit |
|
|
87
|
+
| `vulnerability` | Vulnerability | CVE-2023-23397 |
|
|
88
|
+
| `indicator` | Indicator | IP, domain, hash |
|
|
89
|
+
| `attack-pattern` | TTP | Phishing, Lateral Movement |
|
|
90
|
+
| `infrastructure` | Infrastructure | C2 servers |
|
|
91
|
+
| `campaign` | Campaign | Operation names |
|
|
92
|
+
| `identity` (class=organization) | Organization | Target companies |
|
|
93
|
+
|
|
94
|
+
### Relationship Mapping
|
|
95
|
+
|
|
96
|
+
| STIX Relationship | Knowledge Relationship |
|
|
97
|
+
|-------------------|----------------------|
|
|
98
|
+
| `uses` | uses |
|
|
99
|
+
| `targets` | targets |
|
|
100
|
+
| `attributed-to` | attributed_to |
|
|
101
|
+
| `exploits` | exploits |
|
|
102
|
+
| `related-to` | associated_with |
|
|
103
|
+
| `located-at` | located_at |
|
|
104
|
+
| `communicates-with` | communicates_with |
|
|
105
|
+
|
|
106
|
+
## Examples
|
|
107
|
+
|
|
108
|
+
### Example 1: Import MITRE ATT&CK Data
|
|
109
|
+
|
|
110
|
+
User: "Import APT28 from MITRE ATT&CK"
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
bun run tools/knowledge-cli.ts stix:import https://attack.mitre.org/docs/APT28-STIX.json
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Result:
|
|
117
|
+
```
|
|
118
|
+
✓ Importing from: https://attack.mitre.org/docs/APT28-STIX.json
|
|
119
|
+
Processing STIX 2.1 bundle...
|
|
120
|
+
✓ Parsed 47 STIX objects
|
|
121
|
+
✓ Created 1 ThreatActor: APT28
|
|
122
|
+
✓ Created 3 Malware: X-Agent, X-Tunnel, Sedreco
|
|
123
|
+
✓ Created 28 Indicators: IPs, domains, hashes
|
|
124
|
+
✓ Created 8 TTPs: attack techniques
|
|
125
|
+
✓ Created 7 relationships
|
|
126
|
+
|
|
127
|
+
Import complete: 47 objects in 2.3s
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Example 2: Import Vulnerability Feed
|
|
131
|
+
|
|
132
|
+
User: "Import CVE data from STIX file"
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
bun run tools/knowledge-cli.ts stix:import ./cve-feed-2024.json --group-id vulnerabilities
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Example 3: Import Commercial CTI Feed
|
|
139
|
+
|
|
140
|
+
User: "Load Recorded Future export"
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
bun run tools/knowledge-cli.ts stix:import ./recorded-future-export.json
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Example 4: Check Import Results
|
|
147
|
+
|
|
148
|
+
User: "Did the last import work?"
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
bun run tools/knowledge-cli.ts stix:status
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## Input Formats
|
|
155
|
+
|
|
156
|
+
**Local Files:**
|
|
157
|
+
- JSON files with `.json` extension
|
|
158
|
+
- STIX 2.1 bundle format
|
|
159
|
+
|
|
160
|
+
**URLs:**
|
|
161
|
+
- HTTP/HTTPS URLs
|
|
162
|
+
- Must return valid STIX 2.1 JSON
|
|
163
|
+
|
|
164
|
+
## Error Handling
|
|
165
|
+
|
|
166
|
+
| Error | Cause | Resolution |
|
|
167
|
+
|-------|-------|------------|
|
|
168
|
+
| `Invalid STIX format` | Not STIX 2.1 JSON | Validate file format |
|
|
169
|
+
| `Unknown object type` | Unsupported STIX type | Check object mapping |
|
|
170
|
+
| `Missing required field` | Malformed STIX object | Fix source data |
|
|
171
|
+
| `Network error` | URL unreachable | Check URL or download first |
|
|
172
|
+
|
|
173
|
+
## Best Practices
|
|
174
|
+
|
|
175
|
+
1. **Validate First** - Check STIX files with online validator before import
|
|
176
|
+
2. **Use Groups** - Separate feeds by `--group-id` for better organization
|
|
177
|
+
3. **Check Status** - Run `stix:status` after import to verify results
|
|
178
|
+
4. **Investigate After** - Use `investigate` command to explore imported entities
|
|
179
|
+
|
|
180
|
+
## Investigation After Import
|
|
181
|
+
|
|
182
|
+
After importing STIX data, use investigative search:
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
# Explore imported threat actor
|
|
186
|
+
bun run tools/knowledge-cli.ts investigate "APT28" --depth 2
|
|
187
|
+
|
|
188
|
+
# Find all malware used by actor
|
|
189
|
+
bun run tools/knowledge-cli.ts investigate "APT28" --relationship-type uses
|
|
190
|
+
|
|
191
|
+
# Trace indicators to infrastructure
|
|
192
|
+
bun run tools/knowledge-cli.ts investigate "192.168.1.1" --depth 2 --relationship-type hosted_on
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
## Related Workflows
|
|
196
|
+
|
|
197
|
+
- **InvestigateEntity** - Explore imported threat intel relationships
|
|
198
|
+
- **OntologyManagement** - Configure STIX object type mappings
|
|
199
|
+
- **SearchKnowledge** - Find imported entities by semantic search
|
|
200
|
+
|
|
201
|
+
## STIX Resources
|
|
202
|
+
|
|
203
|
+
- **STIX 2.1 Specification**: https://oasis-tcs.github.io/cti-documentation/
|
|
204
|
+
- **MITRE ATT&CK STIX**: https://attack.mitre.org/docs/
|
|
205
|
+
- **STIX Validator**: https://github.com/oasis-tcs/cti-python-stix2
|
|
206
|
+
|
|
207
|
+
## MCP Tools
|
|
208
|
+
|
|
209
|
+
| Tool | Description |
|
|
210
|
+
|------|-------------|
|
|
211
|
+
| `import_stix_bundle` | Import STIX 2.1 bundle from file or URL |
|
|
212
|
+
| `get_stix_import_status` | Get status of most recent import |
|
package/bin/deepquark
CHANGED
|
Binary file
|