@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 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
- ├── runDiscovery() Claude Sonnet + Bash + MCP Tools
232
- ├── scan_bookmarks() browser bookmark extraction
233
- ├── scan_installed_apps() /Applications, brew, dpkg, which
234
- ├── scan_k8s_resources() kubectl (readonly)
235
- ├── scan_aws/gcp/azure() cloud CLI scans (readonly)
236
- └── ask_user() human-in-the-loop questions
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-EVJP2FWQ.js.map
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":[]}