@datasynx/agentic-ai-cartography 0.2.6 → 0.3.1
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 +6 -59
- package/dist/{chunk-EVJP2FWQ.js → chunk-FFNOC6HF.js} +1 -33
- package/dist/chunk-FFNOC6HF.js.map +1 -0
- package/dist/cli.js +792 -987
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +24 -118
- package/dist/index.js +3 -183
- package/dist/index.js.map +1 -1
- package/dist/{types-NKF6BRMZ.js → types-ROE3Z6HY.js} +2 -8
- package/package.json +1 -2
- package/dist/chunk-EVJP2FWQ.js.map +0 -1
- package/dist/chunk-LNMM7BTH.js +0 -989
- package/dist/chunk-LNMM7BTH.js.map +0 -1
- package/dist/exporter-PWVD7Y6T.js +0 -24
- package/dist/types-NKF6BRMZ.js.map +0 -1
- /package/dist/{exporter-PWVD7Y6T.js.map → types-ROE3Z6HY.js.map} +0 -0
package/README.md
CHANGED
|
@@ -59,7 +59,6 @@ $ datasynx-cartography discover
|
|
|
59
59
|
| **Browser Bookmarks** | Chrome, Firefox, Safari, Brave, Edge — extracts business/SaaS domains automatically |
|
|
60
60
|
| **Cloud Scanning** | AWS (EC2/RDS/EKS/S3), GCP (Compute/GKE/Cloud Run), Azure (AKS/WebApps), Kubernetes |
|
|
61
61
|
| **Human-in-the-Loop** | Chat with the agent mid-discovery: type `"hubspot windsurf"` to search for specific tools |
|
|
62
|
-
| **Shadow Daemon** | Background observer every 30s — detects new services, ports, processes |
|
|
63
62
|
| **SOP Generation** | Automatically generates Standard Operating Procedures from observed workflows |
|
|
64
63
|
| **SOP Dashboard** | HTML dashboard with all SOPs, step details, frequency stats |
|
|
65
64
|
| **Export Formats** | Mermaid topology, D3.js interactive graph, Backstage YAML, JSON, SOP Markdown |
|
|
@@ -107,22 +106,6 @@ datasynx-cartography seed
|
|
|
107
106
|
# View all browser bookmarks
|
|
108
107
|
datasynx-cartography bookmarks
|
|
109
108
|
|
|
110
|
-
# Start background observer (Claude Haiku, every 30s)
|
|
111
|
-
datasynx-cartography shadow start
|
|
112
|
-
|
|
113
|
-
# Attach to live event feed
|
|
114
|
-
datasynx-cartography shadow attach # [P] pause [T] new task [D] detach [Q] stop
|
|
115
|
-
|
|
116
|
-
# Pause / resume the daemon
|
|
117
|
-
datasynx-cartography shadow pause
|
|
118
|
-
datasynx-cartography shadow resume
|
|
119
|
-
|
|
120
|
-
# Stop daemon + generate SOPs + open HTML dashboard
|
|
121
|
-
datasynx-cartography shadow stop
|
|
122
|
-
|
|
123
|
-
# Generate SOPs manually from a session
|
|
124
|
-
datasynx-cartography sops [session-id]
|
|
125
|
-
|
|
126
109
|
# Full feature reference
|
|
127
110
|
datasynx-cartography docs
|
|
128
111
|
```
|
|
@@ -153,29 +136,9 @@ Discovery pipeline (automatic, in order):
|
|
|
153
136
|
5. **Config files** — `.env`, `docker-compose.yml`, etc.
|
|
154
137
|
6. **Human-in-the-loop** — interactive follow-up after initial scan
|
|
155
138
|
|
|
156
|
-
### Shadow Daemon
|
|
157
|
-
|
|
158
|
-
```
|
|
159
|
-
datasynx-cartography shadow start [options]
|
|
160
|
-
|
|
161
|
-
--interval <ms> Poll interval (default: 30000, min: 15000)
|
|
162
|
-
--inactivity <ms> Task boundary gap (default: 300000)
|
|
163
|
-
--model <m> Claude model (default: claude-haiku-4-5-...)
|
|
164
|
-
--track-windows Track window focus (requires xdotool)
|
|
165
|
-
--auto-save Save nodes without prompting
|
|
166
|
-
--foreground Run in foreground (no fork)
|
|
167
|
-
|
|
168
|
-
datasynx-cartography shadow stop # stops + generates SOPs + opens dashboard
|
|
169
|
-
datasynx-cartography shadow pause # SIGUSR1
|
|
170
|
-
datasynx-cartography shadow resume # SIGUSR2
|
|
171
|
-
datasynx-cartography shadow status
|
|
172
|
-
datasynx-cartography shadow attach
|
|
173
|
-
```
|
|
174
|
-
|
|
175
139
|
### Analysis & Export
|
|
176
140
|
|
|
177
141
|
```
|
|
178
|
-
datasynx-cartography sops [session-id] Generate SOPs from observed workflows
|
|
179
142
|
datasynx-cartography export [session-id] [options]
|
|
180
143
|
--format <fmt...> mermaid, json, yaml, html, sops (default: all)
|
|
181
144
|
-o, --output <dir> Output directory
|
|
@@ -213,13 +176,8 @@ datasynx-output/
|
|
|
213
176
|
| Mode | Model | Interval | per Hour | per 8h Day |
|
|
214
177
|
|------|-------|----------|----------|------------|
|
|
215
178
|
| Discover | Sonnet | one-shot | $0.15–0.50 | one-shot |
|
|
216
|
-
| Shadow | Haiku | 30s | $0.12–0.36 | $0.96–2.88 |
|
|
217
|
-
| Shadow | Haiku | 60s | $0.06–0.18 | $0.48–1.44 |
|
|
218
|
-
| Shadow (quiet)* | Haiku | 30s | ~$0.02 | ~$0.16 |
|
|
219
179
|
| SOP generation | Sonnet | one-shot | $0.01–0.03 | one-shot |
|
|
220
180
|
|
|
221
|
-
\* *quiet = diff-check skips ~90% of cycles when the system is idle*
|
|
222
|
-
|
|
223
181
|
---
|
|
224
182
|
|
|
225
183
|
## Architecture
|
|
@@ -228,22 +186,13 @@ datasynx-output/
|
|
|
228
186
|
CLI (Commander.js)
|
|
229
187
|
└── Preflight: Claude CLI + API key + interval validation
|
|
230
188
|
└── Agent Orchestrator (src/agent.ts)
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
├── runShadowCycle() Claude Haiku + MCP Tools only (no Bash)
|
|
238
|
-
└── generateSOPs() Anthropic Messages API (no agent loop)
|
|
189
|
+
└── runDiscovery() Claude Sonnet + Bash + MCP Tools
|
|
190
|
+
├── scan_bookmarks() browser bookmark extraction
|
|
191
|
+
├── scan_installed_apps() /Applications, brew, dpkg, which
|
|
192
|
+
├── scan_k8s_resources() kubectl (readonly)
|
|
193
|
+
├── scan_aws/gcp/azure() cloud CLI scans (readonly)
|
|
194
|
+
└── ask_user() human-in-the-loop questions
|
|
239
195
|
└── Custom MCP Tools → CartographyDB (SQLite WAL)
|
|
240
|
-
|
|
241
|
-
Shadow Daemon (src/daemon.ts)
|
|
242
|
-
├── takeSnapshot() → ss + ps (no Claude!)
|
|
243
|
-
├── Diff-check → calls Claude only when something changed
|
|
244
|
-
├── SIGUSR1/2 → pause / resume
|
|
245
|
-
├── IPC Server → Unix socket ~/.cartography/daemon.sock
|
|
246
|
-
└── Notifications → desktop alerts when no client attached
|
|
247
196
|
```
|
|
248
197
|
|
|
249
198
|
### Safety
|
|
@@ -260,8 +209,6 @@ Every Bash call is guarded by a `PreToolUse` hook that blocks destructive comman
|
|
|
260
209
|
import {
|
|
261
210
|
CartographyDB,
|
|
262
211
|
runDiscovery,
|
|
263
|
-
runShadowCycle,
|
|
264
|
-
generateSOPs,
|
|
265
212
|
exportAll,
|
|
266
213
|
exportSOPDashboard,
|
|
267
214
|
safetyHook,
|
|
@@ -28,14 +28,6 @@ var EDGE_RELATIONSHIPS = [
|
|
|
28
28
|
"contains",
|
|
29
29
|
"depends_on"
|
|
30
30
|
];
|
|
31
|
-
var EVENT_TYPES = [
|
|
32
|
-
"process_start",
|
|
33
|
-
"process_end",
|
|
34
|
-
"connection_open",
|
|
35
|
-
"connection_close",
|
|
36
|
-
"window_focus",
|
|
37
|
-
"tool_switch"
|
|
38
|
-
];
|
|
39
31
|
var NodeSchema = z.object({
|
|
40
32
|
id: z.string().describe('Format: "{type}:{host}:{port}" oder "{type}:{name}"'),
|
|
41
33
|
type: z.enum(NODE_TYPES),
|
|
@@ -52,15 +44,6 @@ var EdgeSchema = z.object({
|
|
|
52
44
|
evidence: z.string(),
|
|
53
45
|
confidence: z.number().min(0).max(1).default(0.5)
|
|
54
46
|
});
|
|
55
|
-
var EventSchema = z.object({
|
|
56
|
-
eventType: z.enum(EVENT_TYPES),
|
|
57
|
-
process: z.string(),
|
|
58
|
-
pid: z.number(),
|
|
59
|
-
target: z.string().optional(),
|
|
60
|
-
targetType: z.enum(NODE_TYPES).optional(),
|
|
61
|
-
protocol: z.string().optional(),
|
|
62
|
-
port: z.number().optional()
|
|
63
|
-
});
|
|
64
47
|
var SOPStepSchema = z.object({
|
|
65
48
|
order: z.number(),
|
|
66
49
|
instruction: z.string(),
|
|
@@ -77,27 +60,15 @@ var SOPSchema = z.object({
|
|
|
77
60
|
frequency: z.string(),
|
|
78
61
|
confidence: z.number().min(0).max(1)
|
|
79
62
|
});
|
|
80
|
-
var MIN_POLL_INTERVAL_MS = 15e3;
|
|
81
63
|
function defaultConfig(overrides = {}) {
|
|
82
64
|
const home = process.env.HOME ?? process.env.USERPROFILE ?? "/tmp";
|
|
83
65
|
return {
|
|
84
|
-
mode: "discover",
|
|
85
66
|
maxDepth: 8,
|
|
86
67
|
maxTurns: 50,
|
|
87
68
|
entryPoints: ["localhost"],
|
|
88
69
|
agentModel: "claude-sonnet-4-5-20250929",
|
|
89
|
-
shadowMode: "daemon",
|
|
90
|
-
pollIntervalMs: 3e4,
|
|
91
|
-
inactivityTimeoutMs: 3e5,
|
|
92
|
-
promptTimeoutMs: 6e4,
|
|
93
|
-
trackWindowFocus: false,
|
|
94
|
-
autoSaveNodes: false,
|
|
95
|
-
enableNotifications: true,
|
|
96
|
-
shadowModel: "claude-haiku-4-5-20251001",
|
|
97
70
|
outputDir: "./cartography-output",
|
|
98
71
|
dbPath: `${home}/.cartography/cartography.db`,
|
|
99
|
-
socketPath: `${home}/.cartography/daemon.sock`,
|
|
100
|
-
pidFile: `${home}/.cartography/daemon.pid`,
|
|
101
72
|
verbose: false,
|
|
102
73
|
...overrides
|
|
103
74
|
};
|
|
@@ -106,13 +77,10 @@ function defaultConfig(overrides = {}) {
|
|
|
106
77
|
export {
|
|
107
78
|
NODE_TYPES,
|
|
108
79
|
EDGE_RELATIONSHIPS,
|
|
109
|
-
EVENT_TYPES,
|
|
110
80
|
NodeSchema,
|
|
111
81
|
EdgeSchema,
|
|
112
|
-
EventSchema,
|
|
113
82
|
SOPStepSchema,
|
|
114
83
|
SOPSchema,
|
|
115
|
-
MIN_POLL_INTERVAL_MS,
|
|
116
84
|
defaultConfig
|
|
117
85
|
};
|
|
118
|
-
//# sourceMappingURL=chunk-
|
|
86
|
+
//# sourceMappingURL=chunk-FFNOC6HF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/types.ts"],"sourcesContent":["import { z } from 'zod';\n\n// ── Enums ────────────────────────────────\n\nexport const NODE_TYPES = [\n 'host', 'database_server', 'database', 'table',\n 'web_service', 'api_endpoint', 'cache_server',\n 'message_broker', 'queue', 'topic',\n 'container', 'pod', 'k8s_cluster',\n 'config_file', 'saas_tool', 'unknown',\n] as const;\nexport type NodeType = typeof NODE_TYPES[number];\n\nexport const EDGE_RELATIONSHIPS = [\n 'connects_to', 'reads_from', 'writes_to',\n 'calls', 'contains', 'depends_on',\n] as const;\nexport type EdgeRelationship = typeof EDGE_RELATIONSHIPS[number];\n\n// ── Zod Schemas ──────────────────────────\n\nexport const NodeSchema = z.object({\n id: z.string().describe('Format: \"{type}:{host}:{port}\" oder \"{type}:{name}\"'),\n type: z.enum(NODE_TYPES),\n name: z.string(),\n discoveredVia: z.string(),\n confidence: z.number().min(0).max(1).default(0.5),\n metadata: z.record(z.unknown()).default({}),\n tags: z.array(z.string()).default([]),\n});\nexport type DiscoveryNode = z.infer<typeof NodeSchema>;\n\nexport const EdgeSchema = z.object({\n sourceId: z.string(),\n targetId: z.string(),\n relationship: z.enum(EDGE_RELATIONSHIPS),\n evidence: z.string(),\n confidence: z.number().min(0).max(1).default(0.5),\n});\nexport type DiscoveryEdge = z.infer<typeof EdgeSchema>;\n\nexport const SOPStepSchema = z.object({\n order: z.number(),\n instruction: z.string(),\n tool: z.string(),\n target: z.string().optional(),\n notes: z.string().optional(),\n});\nexport type SOPStep = z.infer<typeof SOPStepSchema>;\n\nexport const SOPSchema = z.object({\n title: z.string(),\n description: z.string(),\n steps: z.array(SOPStepSchema),\n involvedSystems: z.array(z.string()),\n estimatedDuration: z.string(),\n frequency: z.string(),\n confidence: z.number().min(0).max(1),\n});\nexport type SOP = z.infer<typeof SOPSchema>;\n\n// ── DB Row Types ─────────────────────────\n\nexport interface NodeRow extends DiscoveryNode {\n sessionId: string;\n discoveredAt: string;\n depth: number;\n pathId?: string;\n}\n\nexport interface EdgeRow extends DiscoveryEdge {\n id: string;\n sessionId: string;\n discoveredAt: string;\n pathId?: string;\n}\n\nexport interface SessionRow {\n id: string;\n mode: 'discover';\n startedAt: string;\n completedAt?: string;\n config: string;\n}\n\n// ── Config ───────────────────────────────\n\nexport interface CartographyConfig {\n maxDepth: number;\n maxTurns: number;\n entryPoints: string[];\n agentModel: string;\n organization?: string;\n outputDir: string;\n dbPath: string;\n verbose: boolean;\n}\n\nexport function defaultConfig(overrides: Partial<CartographyConfig> = {}): CartographyConfig {\n const home = process.env.HOME ?? process.env.USERPROFILE ?? '/tmp';\n return {\n maxDepth: 8,\n maxTurns: 50,\n entryPoints: ['localhost'],\n agentModel: 'claude-sonnet-4-5-20250929',\n outputDir: './cartography-output',\n dbPath: `${home}/.cartography/cartography.db`,\n verbose: false,\n ...overrides,\n };\n}\n"],"mappings":";;;AAAA,SAAS,SAAS;AAIX,IAAM,aAAa;AAAA,EACxB;AAAA,EAAQ;AAAA,EAAmB;AAAA,EAAY;AAAA,EACvC;AAAA,EAAe;AAAA,EAAgB;AAAA,EAC/B;AAAA,EAAkB;AAAA,EAAS;AAAA,EAC3B;AAAA,EAAa;AAAA,EAAO;AAAA,EACpB;AAAA,EAAe;AAAA,EAAa;AAC9B;AAGO,IAAM,qBAAqB;AAAA,EAChC;AAAA,EAAe;AAAA,EAAc;AAAA,EAC7B;AAAA,EAAS;AAAA,EAAY;AACvB;AAKO,IAAM,aAAa,EAAE,OAAO;AAAA,EACjC,IAAI,EAAE,OAAO,EAAE,SAAS,qDAAqD;AAAA,EAC7E,MAAM,EAAE,KAAK,UAAU;AAAA,EACvB,MAAM,EAAE,OAAO;AAAA,EACf,eAAe,EAAE,OAAO;AAAA,EACxB,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG;AAAA,EAChD,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,EAC1C,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AACtC,CAAC;AAGM,IAAM,aAAa,EAAE,OAAO;AAAA,EACjC,UAAU,EAAE,OAAO;AAAA,EACnB,UAAU,EAAE,OAAO;AAAA,EACnB,cAAc,EAAE,KAAK,kBAAkB;AAAA,EACvC,UAAU,EAAE,OAAO;AAAA,EACnB,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG;AAClD,CAAC;AAGM,IAAM,gBAAgB,EAAE,OAAO;AAAA,EACpC,OAAO,EAAE,OAAO;AAAA,EAChB,aAAa,EAAE,OAAO;AAAA,EACtB,MAAM,EAAE,OAAO;AAAA,EACf,QAAQ,EAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,OAAO,EAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAGM,IAAM,YAAY,EAAE,OAAO;AAAA,EAChC,OAAO,EAAE,OAAO;AAAA,EAChB,aAAa,EAAE,OAAO;AAAA,EACtB,OAAO,EAAE,MAAM,aAAa;AAAA,EAC5B,iBAAiB,EAAE,MAAM,EAAE,OAAO,CAAC;AAAA,EACnC,mBAAmB,EAAE,OAAO;AAAA,EAC5B,WAAW,EAAE,OAAO;AAAA,EACpB,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AACrC,CAAC;AAwCM,SAAS,cAAc,YAAwC,CAAC,GAAsB;AAC3F,QAAM,OAAO,QAAQ,IAAI,QAAQ,QAAQ,IAAI,eAAe;AAC5D,SAAO;AAAA,IACL,UAAU;AAAA,IACV,UAAU;AAAA,IACV,aAAa,CAAC,WAAW;AAAA,IACzB,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,QAAQ,GAAG,IAAI;AAAA,IACf,SAAS;AAAA,IACT,GAAG;AAAA,EACL;AACF;","names":[]}
|