symbiote-cli 0.1.4 → 0.2.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 +35 -26
- package/dist/bin/symbiote.js +8 -2
- package/dist/bin/symbiote.js.map +1 -1
- package/dist/src/commands/dna.d.ts.map +1 -1
- package/dist/src/commands/dna.js +292 -78
- package/dist/src/commands/dna.js.map +1 -1
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +54 -45
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/cortex/stage-7-intelligence.d.ts +1 -1
- package/dist/src/cortex/stage-7-intelligence.d.ts.map +1 -1
- package/dist/src/cortex/stage-7-intelligence.js +8 -8
- package/dist/src/cortex/stage-7-intelligence.js.map +1 -1
- package/dist/src/dna/engine.d.ts +26 -11
- package/dist/src/dna/engine.d.ts.map +1 -1
- package/dist/src/dna/engine.js +106 -92
- package/dist/src/dna/engine.js.map +1 -1
- package/dist/src/dna/export.d.ts +12 -0
- package/dist/src/dna/export.d.ts.map +1 -0
- package/dist/src/dna/export.js +39 -0
- package/dist/src/dna/export.js.map +1 -0
- package/dist/src/dna/index.d.ts +7 -4
- package/dist/src/dna/index.d.ts.map +1 -1
- package/dist/src/dna/index.js +5 -3
- package/dist/src/dna/index.js.map +1 -1
- package/dist/src/dna/profile.d.ts +19 -0
- package/dist/src/dna/profile.d.ts.map +1 -0
- package/dist/src/dna/profile.js +183 -0
- package/dist/src/dna/profile.js.map +1 -0
- package/dist/src/dna/schema.d.ts +112 -0
- package/dist/src/dna/schema.d.ts.map +1 -0
- package/dist/src/dna/schema.js +51 -0
- package/dist/src/dna/schema.js.map +1 -0
- package/dist/src/dna/types.d.ts +0 -37
- package/dist/src/dna/types.d.ts.map +1 -1
- package/dist/src/dna/types.js +0 -57
- package/dist/src/dna/types.js.map +1 -1
- package/dist/src/hooks/dna-checker.d.ts +1 -1
- package/dist/src/hooks/dna-checker.d.ts.map +1 -1
- package/dist/src/hooks/dna-checker.js +11 -10
- package/dist/src/hooks/dna-checker.js.map +1 -1
- package/dist/src/hooks/handlers/post-tool-use.d.ts +1 -1
- package/dist/src/hooks/handlers/post-tool-use.d.ts.map +1 -1
- package/dist/src/hooks/handlers/pre-tool-use.js +1 -1
- package/dist/src/hooks/handlers/pre-tool-use.js.map +1 -1
- package/dist/src/hooks/handlers/session-start.d.ts.map +1 -1
- package/dist/src/hooks/handlers/session-start.js +24 -9
- package/dist/src/hooks/handlers/session-start.js.map +1 -1
- package/dist/src/hooks/handlers/stop.js +5 -1
- package/dist/src/hooks/handlers/stop.js.map +1 -1
- package/dist/src/hooks/handlers/subagent-start.js +1 -1
- package/dist/src/hooks/handlers/subagent-start.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/context.d.ts +2 -2
- package/dist/src/mcp/context.d.ts.map +1 -1
- package/dist/src/mcp/context.js +4 -5
- package/dist/src/mcp/context.js.map +1 -1
- package/dist/src/mcp/http-api.d.ts.map +1 -1
- package/dist/src/mcp/http-api.js +26 -12
- package/dist/src/mcp/http-api.js.map +1 -1
- package/dist/src/mcp/proxy-handler.d.ts.map +1 -1
- package/dist/src/mcp/proxy-handler.js +8 -4
- package/dist/src/mcp/proxy-handler.js.map +1 -1
- package/dist/src/mcp/resources.d.ts.map +1 -1
- package/dist/src/mcp/resources.js +2 -3
- package/dist/src/mcp/resources.js.map +1 -1
- package/dist/src/mcp/server.d.ts.map +1 -1
- package/dist/src/mcp/server.js +39 -16
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/mcp/tools/architecture-tools.d.ts +21 -2
- package/dist/src/mcp/tools/architecture-tools.d.ts.map +1 -1
- package/dist/src/mcp/tools/architecture-tools.js +4 -1
- package/dist/src/mcp/tools/architecture-tools.js.map +1 -1
- package/dist/src/mcp/tools/dna-tools.d.ts +3 -7
- package/dist/src/mcp/tools/dna-tools.d.ts.map +1 -1
- package/dist/src/mcp/tools/dna-tools.js +3 -8
- package/dist/src/mcp/tools/dna-tools.js.map +1 -1
- package/dist/src/utils/config.d.ts +1 -0
- package/dist/src/utils/config.d.ts.map +1 -1
- package/dist/src/utils/config.js +1 -10
- package/dist/src/utils/config.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/skills/symbiote-init/SKILL.md +127 -55
- package/dist/src/dna/storage.d.ts +0 -19
- package/dist/src/dna/storage.d.ts.map +0 -1
- package/dist/src/dna/storage.js +0 -112
- package/dist/src/dna/storage.js.map +0 -1
package/README.md
CHANGED
|
@@ -74,7 +74,7 @@ sequenceDiagram
|
|
|
74
74
|
participant DNA as ~/.symbiote/<br>Developer DNA
|
|
75
75
|
|
|
76
76
|
Brain->>Sym: project structure, dependencies, health
|
|
77
|
-
DNA->>Sym:
|
|
77
|
+
DNA->>Sym: coding rules, reasons, scoping
|
|
78
78
|
|
|
79
79
|
loop Every interaction
|
|
80
80
|
Sym->>AI: injects context (MCP + hooks)
|
|
@@ -88,18 +88,21 @@ sequenceDiagram
|
|
|
88
88
|
|
|
89
89
|
### Developer DNA — Your Coding Identity
|
|
90
90
|
|
|
91
|
-
Lives at `~/.symbiote/
|
|
91
|
+
Lives at `~/.symbiote/profiles/`. Follows you across every project. **Shareable.**
|
|
92
92
|
|
|
93
|
-
When you correct your AI — _"no, use early returns"_ — Symbiote captures it. Same correction across three sessions? Auto-promoted
|
|
93
|
+
When you correct your AI — _"no, use early returns"_ — Symbiote captures it with the rule, the reason why, and which languages it applies to. Same correction across three sessions? Auto-promoted. Explicit instruction? Approved immediately at full confidence.
|
|
94
94
|
|
|
95
|
-
Your DNA is
|
|
95
|
+
Your DNA is a single JSON profile — portable, exportable, switchable:
|
|
96
96
|
|
|
97
97
|
```bash
|
|
98
|
-
symbiote dna #
|
|
99
|
-
symbiote dna
|
|
100
|
-
symbiote dna
|
|
98
|
+
symbiote dna # Active profile summary
|
|
99
|
+
symbiote dna export # Export to .dna.json — share it anywhere
|
|
100
|
+
symbiote dna import <file|url> # Load someone else's DNA
|
|
101
|
+
symbiote dna switch <name> # Swap profiles instantly
|
|
101
102
|
```
|
|
102
103
|
|
|
104
|
+
Import a senior developer's DNA and your AI immediately codes in their style. Switch back to yours anytime. Your DNA is never lost.
|
|
105
|
+
|
|
103
106
|
### Project Brain — Your Codebase's Nervous System
|
|
104
107
|
|
|
105
108
|
Lives at `.brain/` in each repo. Auto-generated, optionally enriched.
|
|
@@ -214,7 +217,7 @@ Open the URL printed in your terminal. Your project's brain — a 3D neural grap
|
|
|
214
217
|
| ---------------- | ------------------------------------------------ |
|
|
215
218
|
| **Brain Graph** | 3D neural visualization — the hero, always alive |
|
|
216
219
|
| **Health Pulse** | Code health score (0-100) with actionable issues |
|
|
217
|
-
| **DNA Lab** | Your
|
|
220
|
+
| **DNA Lab** | Your profiles — rules, reasons, export, switch |
|
|
218
221
|
|
|
219
222
|
---
|
|
220
223
|
|
|
@@ -321,21 +324,22 @@ Every issue links to a file and line number. The Health Pulse view in the web UI
|
|
|
321
324
|
|
|
322
325
|
```
|
|
323
326
|
~/.symbiote/ # Global — your coding identity
|
|
324
|
-
├── config.json
|
|
325
|
-
└──
|
|
326
|
-
├──
|
|
327
|
-
├──
|
|
328
|
-
|
|
329
|
-
└── decisions/ # "Composition over inheritance"
|
|
327
|
+
├── config.json # { "active_profile": "personal" }
|
|
328
|
+
└── profiles/
|
|
329
|
+
├── personal.json # Your DNA — always exists
|
|
330
|
+
├── theprime.json # Imported from someone else
|
|
331
|
+
└── kent-react.json # Another imported profile
|
|
330
332
|
|
|
331
333
|
your-project/.brain/ # Per-project — the brain
|
|
332
334
|
├── symbiote.db # Code graph + embeddings (gitignored)
|
|
333
335
|
└── intent/ # Committed to git — shared with team
|
|
334
|
-
├── overview.md #
|
|
336
|
+
├── overview.md # AI-generated project summary
|
|
335
337
|
├── decisions/ # "Why we chose X over Y"
|
|
336
338
|
└── constraints/ # "No raw SQL in application code"
|
|
337
339
|
```
|
|
338
340
|
|
|
341
|
+
Each DNA profile is a single `.dna.json` file containing rich entries — rule, reason, category, language scoping, and evidence. Export yours, share it on Twitter, import someone else's with one command.
|
|
342
|
+
|
|
339
343
|
The intent layer is committed to git. New team member runs `/symbiote-init` — they get the full project brain plus their personal DNA on top. Same project understanding, individual style.
|
|
340
344
|
|
|
341
345
|
---
|
|
@@ -364,16 +368,21 @@ Symbiote uses Tree-sitter for precise code parsing. **Bundled** languages ship w
|
|
|
364
368
|
|
|
365
369
|
## CLI Reference
|
|
366
370
|
|
|
367
|
-
| Command
|
|
368
|
-
|
|
|
369
|
-
| `symbiote install`
|
|
370
|
-
| `symbiote scan`
|
|
371
|
-
| `symbiote scan --force`
|
|
372
|
-
| `symbiote serve`
|
|
373
|
-
| `symbiote mcp`
|
|
374
|
-
| `symbiote dna`
|
|
375
|
-
| `symbiote
|
|
376
|
-
| `symbiote
|
|
371
|
+
| Command | What it does |
|
|
372
|
+
| ---------------------------- | ---------------------------------------------- |
|
|
373
|
+
| `symbiote install` | One-time global setup for all detected editors |
|
|
374
|
+
| `symbiote scan` | Rescan codebase (incremental) |
|
|
375
|
+
| `symbiote scan --force` | Full rescan, ignore cache |
|
|
376
|
+
| `symbiote serve` | MCP server + web UI (port auto-assigned) |
|
|
377
|
+
| `symbiote mcp` | MCP server only (stdio, for editors) |
|
|
378
|
+
| `symbiote dna` | Active profile summary |
|
|
379
|
+
| `symbiote dna list` | List all DNA profiles |
|
|
380
|
+
| `symbiote dna switch <name>` | Switch active profile |
|
|
381
|
+
| `symbiote dna export` | Export profile to `.dna.json` |
|
|
382
|
+
| `symbiote dna import <file>` | Import a shared profile |
|
|
383
|
+
| `symbiote dna diff <name>` | Compare two profiles |
|
|
384
|
+
| `symbiote impact` | Analyze impact of working changes |
|
|
385
|
+
| `symbiote unbond` | Detach from all AI hosts |
|
|
377
386
|
|
|
378
387
|
---
|
|
379
388
|
|
|
@@ -390,7 +399,7 @@ Symbiote uses Tree-sitter for precise code parsing. **Bundled** languages ship w
|
|
|
390
399
|
| **Graph** | Graphology (Louvain, PageRank, betweenness) |
|
|
391
400
|
| **Web UI** | Vite + React 19 + react-three-fiber + Three.js + custom GLSL |
|
|
392
401
|
| **Styling** | Tailwind CSS v4 (dark theme) |
|
|
393
|
-
| **Testing** | Vitest (
|
|
402
|
+
| **Testing** | Vitest (842 tests across 86 files) |
|
|
394
403
|
|
|
395
404
|
---
|
|
396
405
|
|
package/dist/bin/symbiote.js
CHANGED
|
@@ -34,7 +34,12 @@ function showHelp() {
|
|
|
34
34
|
console.log(` ${pc.bold('$')} ${pc.cyan('symbiote scan')} Rescan codebase`);
|
|
35
35
|
console.log(` ${pc.bold('$')} ${pc.cyan('symbiote serve')} Start MCP server + web UI`);
|
|
36
36
|
console.log(` ${pc.bold('$')} ${pc.cyan('symbiote mcp')} MCP server only (for editors)`);
|
|
37
|
-
console.log(` ${pc.bold('$')} ${pc.cyan('symbiote dna')}
|
|
37
|
+
console.log(` ${pc.bold('$')} ${pc.cyan('symbiote dna')} Active profile summary`);
|
|
38
|
+
console.log(` ${pc.bold('$')} ${pc.cyan('symbiote dna list')} List all DNA profiles`);
|
|
39
|
+
console.log(` ${pc.bold('$')} ${pc.cyan('symbiote dna switch')} Switch active profile`);
|
|
40
|
+
console.log(` ${pc.bold('$')} ${pc.cyan('symbiote dna export')} Export profile to .dna.json`);
|
|
41
|
+
console.log(` ${pc.bold('$')} ${pc.cyan('symbiote dna import')} Import a shared profile`);
|
|
42
|
+
console.log(` ${pc.bold('$')} ${pc.cyan('symbiote dna diff')} Compare two profiles`);
|
|
38
43
|
console.log(` ${pc.bold('$')} ${pc.cyan('symbiote impact')} Analyze impact of working changes`);
|
|
39
44
|
console.log(` ${pc.bold('$')} ${pc.cyan('symbiote unbond')} Detach from all AI agents`);
|
|
40
45
|
console.log();
|
|
@@ -46,7 +51,7 @@ function showHelp() {
|
|
|
46
51
|
console.log(` ${pc.dim('claude mcp add symbiote -- npx symbiote-cli mcp')}`);
|
|
47
52
|
console.log();
|
|
48
53
|
}
|
|
49
|
-
const VALUE_FLAGS = new Set(['port', 'status', 'category']);
|
|
54
|
+
const VALUE_FLAGS = new Set(['port', 'status', 'category', 'output']);
|
|
50
55
|
function parseArgs(argv) {
|
|
51
56
|
const raw = argv.slice(2);
|
|
52
57
|
const command = raw.find((a) => !a.startsWith('-')) ?? '';
|
|
@@ -86,6 +91,7 @@ function parseArgs(argv) {
|
|
|
86
91
|
p: 'port',
|
|
87
92
|
s: 'status',
|
|
88
93
|
c: 'category',
|
|
94
|
+
o: 'output',
|
|
89
95
|
h: 'help',
|
|
90
96
|
v: 'version',
|
|
91
97
|
};
|
package/dist/bin/symbiote.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbiote.js","sourceRoot":"","sources":["../../bin/symbiote.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EACH,UAAU,EACV,OAAO,EACP,QAAQ,EACR,MAAM,EACN,MAAM,EACN,SAAS,EACT,UAAU,EACV,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,SAAS,GACZ,MAAM,oBAAoB,CAAC;AAE5B,MAAM,KAAK,GAAG,SAAS,CAAC;AAExB,MAAM,UAAU,GAAG;IACf,mEAAmE;IACnE,mEAAmE;IACnE,mEAAmE;IACnE,mEAAmE;IACnE,mEAAmE;IACnE,mEAAmE;CACtE,CAAC;AAEF,MAAM,KAAK,GAAG;IACV,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;CACnB,CAAC;AAEF,SAAS,QAAQ;IACb,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QAC3B,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,QAAQ;IACb,QAAQ,EAAE,CAAC;IACX,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC,CAAC;IACxF,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CACP,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,yCAAyC,CAC5F,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,2BAA2B,CAAC,CAAC;IACtF,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,oCAAoC,CAAC,CAAC;IAChG,OAAO,CAAC,GAAG,CACP,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,0CAA0C,CACzF,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"symbiote.js","sourceRoot":"","sources":["../../bin/symbiote.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dna.d.ts","sourceRoot":"","sources":["../../../src/commands/dna.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dna.d.ts","sourceRoot":"","sources":["../../../src/commands/dna.ts"],"names":[],"mappings":"AA8TA,wBAAsB,MAAM,CACxB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GACxC,OAAO,CAAC,IAAI,CAAC,CAyGf"}
|
package/dist/src/commands/dna.js
CHANGED
|
@@ -1,57 +1,301 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
1
2
|
import path from 'node:path';
|
|
2
3
|
import * as p from '@clack/prompts';
|
|
3
4
|
import pc from 'picocolors';
|
|
4
5
|
import { ensureSymbioteHome } from '#utils/config.js';
|
|
5
|
-
import {
|
|
6
|
+
import { ProfileStorage } from '#dna/profile.js';
|
|
6
7
|
import { DnaEngine } from '#dna/engine.js';
|
|
8
|
+
import { exportProfile, importProfile, importFromUrl } from '#dna/export.js';
|
|
9
|
+
function statusIcon(status) {
|
|
10
|
+
if (status === 'approved')
|
|
11
|
+
return pc.green('[+]');
|
|
12
|
+
if (status === 'rejected')
|
|
13
|
+
return pc.red('[-]');
|
|
14
|
+
return pc.yellow('[?]');
|
|
15
|
+
}
|
|
16
|
+
function categorySummary(entries) {
|
|
17
|
+
const counts = new Map();
|
|
18
|
+
for (const e of entries) {
|
|
19
|
+
counts.set(e.category, (counts.get(e.category) ?? 0) + 1);
|
|
20
|
+
}
|
|
21
|
+
return [...counts.entries()]
|
|
22
|
+
.sort((a, b) => b[1] - a[1])
|
|
23
|
+
.map(([cat, n]) => `${cat} (${n})`)
|
|
24
|
+
.join(', ');
|
|
25
|
+
}
|
|
26
|
+
async function cmdDnaShow(storage) {
|
|
27
|
+
const name = storage.getActiveProfileName();
|
|
28
|
+
const profile = storage.readActiveProfile();
|
|
29
|
+
const entries = profile.entries;
|
|
30
|
+
const approved = entries.filter((e) => e.status === 'approved');
|
|
31
|
+
const suggested = entries.filter((e) => e.status === 'suggested');
|
|
32
|
+
const rejected = entries.filter((e) => e.status === 'rejected');
|
|
33
|
+
p.intro(pc.bold(`Developer DNA ${pc.dim(`(${name})`)}`));
|
|
34
|
+
p.log.info(`${pc.dim('Total:')} ${entries.length}\n` +
|
|
35
|
+
`${pc.dim('Approved:')} ${approved.length}\n` +
|
|
36
|
+
`${pc.dim('Suggested:')} ${suggested.length}\n` +
|
|
37
|
+
`${pc.dim('Rejected:')} ${rejected.length}`);
|
|
38
|
+
if (entries.length > 0) {
|
|
39
|
+
p.log.info(`${pc.dim('Categories:')} ${categorySummary(entries)}`);
|
|
40
|
+
}
|
|
41
|
+
if (suggested.length > 0) {
|
|
42
|
+
p.log.warn('Pending review:');
|
|
43
|
+
for (const entry of suggested) {
|
|
44
|
+
console.log(` ${pc.yellow('[?]')} ${entry.id} ` +
|
|
45
|
+
pc.dim(`(confidence: ${entry.confidence})`));
|
|
46
|
+
}
|
|
47
|
+
console.log();
|
|
48
|
+
console.log(pc.dim(" Run 'symbiote dna approve <id>' or " +
|
|
49
|
+
"'symbiote dna reject <id>' to review."));
|
|
50
|
+
}
|
|
51
|
+
p.outro('');
|
|
52
|
+
}
|
|
53
|
+
function cmdDnaList(storage) {
|
|
54
|
+
const profiles = storage.listProfiles();
|
|
55
|
+
const active = storage.getActiveProfileName();
|
|
56
|
+
if (profiles.length === 0) {
|
|
57
|
+
p.log.info('No profiles found.');
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
console.log(`\n${pc.bold('DNA Profiles')}\n`);
|
|
61
|
+
for (const name of profiles) {
|
|
62
|
+
const profile = storage.readProfile(name);
|
|
63
|
+
const count = profile?.entries.length ?? 0;
|
|
64
|
+
const marker = name === active ? pc.green(' *') : ' ';
|
|
65
|
+
console.log(`${marker} ${pc.bold(name)} ${pc.dim(`(${count} entries)`)}`);
|
|
66
|
+
}
|
|
67
|
+
console.log();
|
|
68
|
+
}
|
|
69
|
+
function cmdDnaSwitch(storage, name) {
|
|
70
|
+
try {
|
|
71
|
+
storage.switchProfile(name);
|
|
72
|
+
p.log.success(`Switched to profile: ${pc.bold(name)}`);
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
p.log.error(`Profile "${name}" does not exist.`);
|
|
76
|
+
const profiles = storage.listProfiles();
|
|
77
|
+
if (profiles.length > 0) {
|
|
78
|
+
console.log(pc.dim(` Available: ${profiles.join(', ')}`));
|
|
79
|
+
}
|
|
80
|
+
process.exit(1);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function cmdDnaExport(storage, outputPath) {
|
|
84
|
+
const profile = exportProfile(storage);
|
|
85
|
+
const handle = profile.profile.handle || 'profile';
|
|
86
|
+
const filename = outputPath ?? `${handle}.dna.json`;
|
|
87
|
+
const resolved = path.resolve(filename);
|
|
88
|
+
fs.writeFileSync(resolved, JSON.stringify(profile, null, 4) + '\n');
|
|
89
|
+
p.log.success(`Exported ${profile.entries.length} entries to ${pc.bold(resolved)}`);
|
|
90
|
+
}
|
|
91
|
+
async function cmdDnaImport(storage, target) {
|
|
92
|
+
try {
|
|
93
|
+
let result;
|
|
94
|
+
if (target.startsWith('http://') || target.startsWith('https://')) {
|
|
95
|
+
p.log.info(`Fetching profile from ${pc.dim(target)}...`);
|
|
96
|
+
result = await importFromUrl(storage, target);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
const resolved = path.resolve(target);
|
|
100
|
+
if (!fs.existsSync(resolved)) {
|
|
101
|
+
p.log.error(`File not found: ${resolved}`);
|
|
102
|
+
process.exit(1);
|
|
103
|
+
}
|
|
104
|
+
const raw = fs.readFileSync(resolved, 'utf-8');
|
|
105
|
+
result = importProfile(storage, raw);
|
|
106
|
+
}
|
|
107
|
+
p.log.success(`Imported profile ${pc.bold(result.name)} ` +
|
|
108
|
+
`with ${result.entryCount} entries`);
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
112
|
+
p.log.error(`Import failed: ${msg}`);
|
|
113
|
+
process.exit(1);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
function cmdDnaDiff(storage, otherName) {
|
|
117
|
+
const activeName = storage.getActiveProfileName();
|
|
118
|
+
const activeProfile = storage.readActiveProfile();
|
|
119
|
+
const otherProfile = storage.readProfile(otherName);
|
|
120
|
+
if (!otherProfile) {
|
|
121
|
+
p.log.error(`Profile "${otherName}" not found.`);
|
|
122
|
+
const profiles = storage.listProfiles();
|
|
123
|
+
if (profiles.length > 0) {
|
|
124
|
+
console.log(pc.dim(` Available: ${profiles.join(', ')}`));
|
|
125
|
+
}
|
|
126
|
+
process.exit(1);
|
|
127
|
+
}
|
|
128
|
+
const activeMap = new Map(activeProfile.entries.map((e) => [e.id, e]));
|
|
129
|
+
const otherMap = new Map(otherProfile.entries.map((e) => [e.id, e]));
|
|
130
|
+
const onlyActive = [];
|
|
131
|
+
const onlyOther = [];
|
|
132
|
+
const diverged = [];
|
|
133
|
+
for (const [id, entry] of activeMap) {
|
|
134
|
+
const other = otherMap.get(id);
|
|
135
|
+
if (!other) {
|
|
136
|
+
onlyActive.push(entry);
|
|
137
|
+
}
|
|
138
|
+
else if (entry.rule !== other.rule) {
|
|
139
|
+
diverged.push({ id, activeRule: entry.rule, otherRule: other.rule });
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
for (const [id, entry] of otherMap) {
|
|
143
|
+
if (!activeMap.has(id)) {
|
|
144
|
+
onlyOther.push(entry);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
console.log(`\n${pc.bold('DNA Diff:')} ` +
|
|
148
|
+
`${pc.green(activeName)} vs ${pc.cyan(otherName)}\n`);
|
|
149
|
+
if (onlyActive.length === 0 && onlyOther.length === 0 && diverged.length === 0) {
|
|
150
|
+
p.log.info('Profiles are identical.');
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
if (onlyActive.length > 0) {
|
|
154
|
+
console.log(pc.green(` Only in ${activeName} (${onlyActive.length}):`));
|
|
155
|
+
for (const e of onlyActive) {
|
|
156
|
+
console.log(` ${pc.green('+')} ${e.id}`);
|
|
157
|
+
console.log(` ${pc.dim(truncate(e.rule, 90))}`);
|
|
158
|
+
}
|
|
159
|
+
console.log();
|
|
160
|
+
}
|
|
161
|
+
if (onlyOther.length > 0) {
|
|
162
|
+
console.log(pc.cyan(` Only in ${otherName} (${onlyOther.length}):`));
|
|
163
|
+
for (const e of onlyOther) {
|
|
164
|
+
console.log(` ${pc.cyan('+')} ${e.id}`);
|
|
165
|
+
console.log(` ${pc.dim(truncate(e.rule, 90))}`);
|
|
166
|
+
}
|
|
167
|
+
console.log();
|
|
168
|
+
}
|
|
169
|
+
if (diverged.length > 0) {
|
|
170
|
+
console.log(pc.yellow(` Different rules (${diverged.length}):`));
|
|
171
|
+
for (const d of diverged) {
|
|
172
|
+
console.log(` ${pc.bold(d.id)}`);
|
|
173
|
+
console.log(` ${pc.green(activeName)}: ${pc.dim(truncate(d.activeRule, 80))}`);
|
|
174
|
+
console.log(` ${pc.cyan(otherName)}: ${pc.dim(truncate(d.otherRule, 80))}`);
|
|
175
|
+
}
|
|
176
|
+
console.log();
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
function cmdDnaEntryList(storage, flags) {
|
|
180
|
+
const profile = storage.readActiveProfile();
|
|
181
|
+
let entries = profile.entries;
|
|
182
|
+
if (typeof flags.status === 'string') {
|
|
183
|
+
entries = entries.filter((e) => e.status === flags.status);
|
|
184
|
+
}
|
|
185
|
+
if (typeof flags.category === 'string') {
|
|
186
|
+
entries = entries.filter((e) => e.category === flags.category);
|
|
187
|
+
}
|
|
188
|
+
if (entries.length === 0) {
|
|
189
|
+
p.log.info('No DNA entries found.');
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
console.log(`\n${pc.bold('Developer DNA')} ${pc.dim(`\u2014 ${entries.length} entries`)}\n`);
|
|
193
|
+
console.log(pc.dim('\u2500'.repeat(70)));
|
|
194
|
+
for (const entry of entries) {
|
|
195
|
+
console.log(`${statusIcon(entry.status)} ${pc.bold(entry.id)} ` +
|
|
196
|
+
pc.dim(`(${entry.category}, confidence: ${entry.confidence}, ` +
|
|
197
|
+
`occurrences: ${entry.evidence.occurrences})`));
|
|
198
|
+
console.log(` ${truncate(entry.rule, 100)}`);
|
|
199
|
+
console.log(pc.dim('\u2500'.repeat(70)));
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
function cmdDnaEntryShow(storage, id) {
|
|
203
|
+
const entry = storage.readEntry(id);
|
|
204
|
+
if (!entry) {
|
|
205
|
+
p.log.error(`Entry not found: ${id}`);
|
|
206
|
+
process.exit(1);
|
|
207
|
+
}
|
|
208
|
+
console.log();
|
|
209
|
+
console.log(`${pc.dim('ID:')} ${pc.bold(entry.id)}`);
|
|
210
|
+
console.log(`${pc.dim('Rule:')} ${entry.rule}`);
|
|
211
|
+
console.log(`${pc.dim('Reason:')} ${entry.reason || pc.dim('(none)')}`);
|
|
212
|
+
console.log(`${pc.dim('Category:')} ${entry.category}`);
|
|
213
|
+
console.log(`${pc.dim('Status:')} ${entry.status}`);
|
|
214
|
+
console.log(`${pc.dim('Confidence:')} ${entry.confidence}`);
|
|
215
|
+
console.log(`${pc.dim('Source:')} ${entry.source}`);
|
|
216
|
+
console.log(`${pc.dim('Applies to:')} ${entry.applies_to.join(', ') || pc.dim('(all)')}`);
|
|
217
|
+
console.log(`${pc.dim('First seen:')} ${entry.evidence.first_seen}`);
|
|
218
|
+
console.log(`${pc.dim('Last seen:')} ${entry.evidence.last_seen}`);
|
|
219
|
+
console.log(`${pc.dim('Occurrences:')} ${entry.evidence.occurrences}`);
|
|
220
|
+
console.log(`${pc.dim('Sessions:')} ${entry.evidence.sessions}`);
|
|
221
|
+
console.log();
|
|
222
|
+
}
|
|
223
|
+
function cmdDnaApprove(storage, id) {
|
|
224
|
+
const engine = new DnaEngine(storage);
|
|
225
|
+
const entry = engine.approveEntry(id);
|
|
226
|
+
if (entry) {
|
|
227
|
+
p.log.success(`Approved: ${entry.id}`);
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
p.log.error(`Entry not found: ${id}`);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
function cmdDnaReject(storage, id) {
|
|
234
|
+
const engine = new DnaEngine(storage);
|
|
235
|
+
const entry = engine.rejectEntry(id);
|
|
236
|
+
if (entry) {
|
|
237
|
+
p.log.success(`Rejected: ${entry.id}`);
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
p.log.error(`Entry not found: ${id}`);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
function cmdDnaDelete(storage, id) {
|
|
244
|
+
storage.deleteEntry(id);
|
|
245
|
+
p.log.success(`Deleted: ${id}`);
|
|
246
|
+
}
|
|
247
|
+
function truncate(text, max) {
|
|
248
|
+
if (text.length <= max)
|
|
249
|
+
return text;
|
|
250
|
+
return text.slice(0, max) + '...';
|
|
251
|
+
}
|
|
7
252
|
export async function cmdDna(subcommand, args, flags) {
|
|
8
253
|
const symbioteHome = ensureSymbioteHome();
|
|
9
|
-
const
|
|
10
|
-
const storage = new DnaStorage(dnaDir);
|
|
11
|
-
storage.ensureDirectories();
|
|
254
|
+
const storage = new ProfileStorage(symbioteHome);
|
|
12
255
|
if (!subcommand || subcommand === 'dna') {
|
|
13
|
-
|
|
14
|
-
const approved = all.filter((e) => e.frontmatter.status === 'approved');
|
|
15
|
-
const suggested = all.filter((e) => e.frontmatter.status === 'suggested');
|
|
16
|
-
const rejected = all.filter((e) => e.frontmatter.status === 'rejected');
|
|
17
|
-
p.intro(pc.bold('Developer DNA'));
|
|
18
|
-
p.log.info(`${pc.dim('Total:')} ${all.length}\n` +
|
|
19
|
-
`${pc.dim('Approved:')} ${approved.length}\n` +
|
|
20
|
-
`${pc.dim('Suggested:')} ${suggested.length}\n` +
|
|
21
|
-
`${pc.dim('Rejected:')} ${rejected.length}`);
|
|
22
|
-
if (suggested.length > 0) {
|
|
23
|
-
p.log.warn('Pending review:');
|
|
24
|
-
for (const entry of suggested) {
|
|
25
|
-
console.log(` ${pc.yellow('[?]')} ${entry.frontmatter.id} ${pc.dim(`(confidence: ${entry.frontmatter.confidence})`)}`);
|
|
26
|
-
}
|
|
27
|
-
console.log();
|
|
28
|
-
console.log(pc.dim(" Run 'symbiote dna approve <id>' or 'symbiote dna reject <id>' to review."));
|
|
29
|
-
}
|
|
30
|
-
p.outro('');
|
|
256
|
+
await cmdDnaShow(storage);
|
|
31
257
|
return;
|
|
32
258
|
}
|
|
33
259
|
if (subcommand === 'list') {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
console.log(`\n${pc.bold('Developer DNA')} ${pc.dim(`— ${entries.length} entries`)}\n`);
|
|
43
|
-
console.log(pc.dim('\u2500'.repeat(70)));
|
|
44
|
-
for (const entry of entries) {
|
|
45
|
-
const fm = entry.frontmatter;
|
|
46
|
-
const statusIcon = fm.status === 'approved'
|
|
47
|
-
? pc.green('[+]')
|
|
48
|
-
: fm.status === 'rejected'
|
|
49
|
-
? pc.red('[-]')
|
|
50
|
-
: pc.yellow('[?]');
|
|
51
|
-
console.log(`${statusIcon} ${pc.bold(fm.id)} ${pc.dim(`(${fm.category}, confidence: ${fm.confidence}, occurrences: ${fm.occurrences})`)}`);
|
|
52
|
-
console.log(` ${entry.content.slice(0, 100)}${entry.content.length > 100 ? '...' : ''}`);
|
|
53
|
-
console.log(pc.dim('\u2500'.repeat(70)));
|
|
260
|
+
cmdDnaList(storage);
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
if (subcommand === 'switch') {
|
|
264
|
+
const name = args[0];
|
|
265
|
+
if (!name) {
|
|
266
|
+
p.log.error('Usage: symbiote dna switch <name>');
|
|
267
|
+
process.exit(1);
|
|
54
268
|
}
|
|
269
|
+
cmdDnaSwitch(storage, name);
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
272
|
+
if (subcommand === 'export') {
|
|
273
|
+
const outputPath = typeof flags.output === 'string'
|
|
274
|
+
? flags.output
|
|
275
|
+
: undefined;
|
|
276
|
+
cmdDnaExport(storage, outputPath);
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
if (subcommand === 'import') {
|
|
280
|
+
const target = args[0];
|
|
281
|
+
if (!target) {
|
|
282
|
+
p.log.error('Usage: symbiote dna import <file|url>');
|
|
283
|
+
process.exit(1);
|
|
284
|
+
}
|
|
285
|
+
await cmdDnaImport(storage, target);
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
if (subcommand === 'diff') {
|
|
289
|
+
const name = args[0];
|
|
290
|
+
if (!name) {
|
|
291
|
+
p.log.error('Usage: symbiote dna diff <name>');
|
|
292
|
+
process.exit(1);
|
|
293
|
+
}
|
|
294
|
+
cmdDnaDiff(storage, name);
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
if (subcommand === 'entries') {
|
|
298
|
+
cmdDnaEntryList(storage, flags);
|
|
55
299
|
return;
|
|
56
300
|
}
|
|
57
301
|
if (subcommand === 'show') {
|
|
@@ -60,23 +304,7 @@ export async function cmdDna(subcommand, args, flags) {
|
|
|
60
304
|
p.log.error('Usage: symbiote dna show <id>');
|
|
61
305
|
process.exit(1);
|
|
62
306
|
}
|
|
63
|
-
|
|
64
|
-
if (!entry) {
|
|
65
|
-
p.log.error(`Entry not found: ${id}`);
|
|
66
|
-
process.exit(1);
|
|
67
|
-
}
|
|
68
|
-
const fm = entry.frontmatter;
|
|
69
|
-
console.log();
|
|
70
|
-
console.log(`${pc.dim('ID:')} ${pc.bold(fm.id)}`);
|
|
71
|
-
console.log(`${pc.dim('Category:')} ${fm.category}`);
|
|
72
|
-
console.log(`${pc.dim('Status:')} ${fm.status}`);
|
|
73
|
-
console.log(`${pc.dim('Confidence:')} ${fm.confidence}`);
|
|
74
|
-
console.log(`${pc.dim('Source:')} ${fm.source}`);
|
|
75
|
-
console.log(`${pc.dim('First seen:')} ${fm.firstSeen}`);
|
|
76
|
-
console.log(`${pc.dim('Last seen:')} ${fm.lastSeen}`);
|
|
77
|
-
console.log(`${pc.dim('Occurrences:')} ${fm.occurrences}`);
|
|
78
|
-
console.log(`${pc.dim('Sessions:')} ${fm.sessionIds.length}`);
|
|
79
|
-
console.log(`\n${entry.content}\n`);
|
|
307
|
+
cmdDnaEntryShow(storage, id);
|
|
80
308
|
return;
|
|
81
309
|
}
|
|
82
310
|
if (subcommand === 'approve') {
|
|
@@ -85,14 +313,7 @@ export async function cmdDna(subcommand, args, flags) {
|
|
|
85
313
|
p.log.error('Usage: symbiote dna approve <id>');
|
|
86
314
|
process.exit(1);
|
|
87
315
|
}
|
|
88
|
-
|
|
89
|
-
const entry = engine.approveEntry(id);
|
|
90
|
-
if (entry) {
|
|
91
|
-
p.log.success(`Approved: ${entry.frontmatter.id}`);
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
p.log.error(`Entry not found: ${id}`);
|
|
95
|
-
}
|
|
316
|
+
cmdDnaApprove(storage, id);
|
|
96
317
|
return;
|
|
97
318
|
}
|
|
98
319
|
if (subcommand === 'reject') {
|
|
@@ -101,14 +322,7 @@ export async function cmdDna(subcommand, args, flags) {
|
|
|
101
322
|
p.log.error('Usage: symbiote dna reject <id>');
|
|
102
323
|
process.exit(1);
|
|
103
324
|
}
|
|
104
|
-
|
|
105
|
-
const entry = engine.rejectEntry(id);
|
|
106
|
-
if (entry) {
|
|
107
|
-
p.log.success(`Rejected: ${entry.frontmatter.id}`);
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
p.log.error(`Entry not found: ${id}`);
|
|
111
|
-
}
|
|
325
|
+
cmdDnaReject(storage, id);
|
|
112
326
|
return;
|
|
113
327
|
}
|
|
114
328
|
if (subcommand === 'delete') {
|
|
@@ -117,12 +331,12 @@ export async function cmdDna(subcommand, args, flags) {
|
|
|
117
331
|
p.log.error('Usage: symbiote dna delete <id>');
|
|
118
332
|
process.exit(1);
|
|
119
333
|
}
|
|
120
|
-
storage
|
|
121
|
-
p.log.success(`Deleted: ${id}`);
|
|
334
|
+
cmdDnaDelete(storage, id);
|
|
122
335
|
return;
|
|
123
336
|
}
|
|
124
337
|
p.log.error(`Unknown DNA subcommand: ${subcommand}`);
|
|
125
|
-
console.log(pc.dim(' Available: list,
|
|
338
|
+
console.log(pc.dim(' Available: list, switch, export, import, diff, ' +
|
|
339
|
+
'entries, show, approve, reject, delete'));
|
|
126
340
|
process.exit(1);
|
|
127
341
|
}
|
|
128
342
|
//# sourceMappingURL=dna.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dna.js","sourceRoot":"","sources":["../../../src/commands/dna.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dna.js","sourceRoot":"","sources":["../../../src/commands/dna.ts"],"names":[],"mappings":"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"}
|