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.
Files changed (91) hide show
  1. package/README.md +35 -26
  2. package/dist/bin/symbiote.js +8 -2
  3. package/dist/bin/symbiote.js.map +1 -1
  4. package/dist/src/commands/dna.d.ts.map +1 -1
  5. package/dist/src/commands/dna.js +292 -78
  6. package/dist/src/commands/dna.js.map +1 -1
  7. package/dist/src/commands/hooks.d.ts.map +1 -1
  8. package/dist/src/commands/hooks.js +54 -45
  9. package/dist/src/commands/hooks.js.map +1 -1
  10. package/dist/src/cortex/stage-7-intelligence.d.ts +1 -1
  11. package/dist/src/cortex/stage-7-intelligence.d.ts.map +1 -1
  12. package/dist/src/cortex/stage-7-intelligence.js +8 -8
  13. package/dist/src/cortex/stage-7-intelligence.js.map +1 -1
  14. package/dist/src/dna/engine.d.ts +26 -11
  15. package/dist/src/dna/engine.d.ts.map +1 -1
  16. package/dist/src/dna/engine.js +106 -92
  17. package/dist/src/dna/engine.js.map +1 -1
  18. package/dist/src/dna/export.d.ts +12 -0
  19. package/dist/src/dna/export.d.ts.map +1 -0
  20. package/dist/src/dna/export.js +39 -0
  21. package/dist/src/dna/export.js.map +1 -0
  22. package/dist/src/dna/index.d.ts +7 -4
  23. package/dist/src/dna/index.d.ts.map +1 -1
  24. package/dist/src/dna/index.js +5 -3
  25. package/dist/src/dna/index.js.map +1 -1
  26. package/dist/src/dna/profile.d.ts +19 -0
  27. package/dist/src/dna/profile.d.ts.map +1 -0
  28. package/dist/src/dna/profile.js +183 -0
  29. package/dist/src/dna/profile.js.map +1 -0
  30. package/dist/src/dna/schema.d.ts +112 -0
  31. package/dist/src/dna/schema.d.ts.map +1 -0
  32. package/dist/src/dna/schema.js +51 -0
  33. package/dist/src/dna/schema.js.map +1 -0
  34. package/dist/src/dna/types.d.ts +0 -37
  35. package/dist/src/dna/types.d.ts.map +1 -1
  36. package/dist/src/dna/types.js +0 -57
  37. package/dist/src/dna/types.js.map +1 -1
  38. package/dist/src/hooks/dna-checker.d.ts +1 -1
  39. package/dist/src/hooks/dna-checker.d.ts.map +1 -1
  40. package/dist/src/hooks/dna-checker.js +11 -10
  41. package/dist/src/hooks/dna-checker.js.map +1 -1
  42. package/dist/src/hooks/handlers/post-tool-use.d.ts +1 -1
  43. package/dist/src/hooks/handlers/post-tool-use.d.ts.map +1 -1
  44. package/dist/src/hooks/handlers/pre-tool-use.js +1 -1
  45. package/dist/src/hooks/handlers/pre-tool-use.js.map +1 -1
  46. package/dist/src/hooks/handlers/session-start.d.ts.map +1 -1
  47. package/dist/src/hooks/handlers/session-start.js +24 -9
  48. package/dist/src/hooks/handlers/session-start.js.map +1 -1
  49. package/dist/src/hooks/handlers/stop.js +5 -1
  50. package/dist/src/hooks/handlers/stop.js.map +1 -1
  51. package/dist/src/hooks/handlers/subagent-start.js +1 -1
  52. package/dist/src/hooks/handlers/subagent-start.js.map +1 -1
  53. package/dist/src/index.d.ts +1 -1
  54. package/dist/src/index.d.ts.map +1 -1
  55. package/dist/src/index.js +1 -1
  56. package/dist/src/index.js.map +1 -1
  57. package/dist/src/mcp/context.d.ts +2 -2
  58. package/dist/src/mcp/context.d.ts.map +1 -1
  59. package/dist/src/mcp/context.js +4 -5
  60. package/dist/src/mcp/context.js.map +1 -1
  61. package/dist/src/mcp/http-api.d.ts.map +1 -1
  62. package/dist/src/mcp/http-api.js +26 -12
  63. package/dist/src/mcp/http-api.js.map +1 -1
  64. package/dist/src/mcp/proxy-handler.d.ts.map +1 -1
  65. package/dist/src/mcp/proxy-handler.js +8 -4
  66. package/dist/src/mcp/proxy-handler.js.map +1 -1
  67. package/dist/src/mcp/resources.d.ts.map +1 -1
  68. package/dist/src/mcp/resources.js +2 -3
  69. package/dist/src/mcp/resources.js.map +1 -1
  70. package/dist/src/mcp/server.d.ts.map +1 -1
  71. package/dist/src/mcp/server.js +39 -16
  72. package/dist/src/mcp/server.js.map +1 -1
  73. package/dist/src/mcp/tools/architecture-tools.d.ts +21 -2
  74. package/dist/src/mcp/tools/architecture-tools.d.ts.map +1 -1
  75. package/dist/src/mcp/tools/architecture-tools.js +4 -1
  76. package/dist/src/mcp/tools/architecture-tools.js.map +1 -1
  77. package/dist/src/mcp/tools/dna-tools.d.ts +3 -7
  78. package/dist/src/mcp/tools/dna-tools.d.ts.map +1 -1
  79. package/dist/src/mcp/tools/dna-tools.js +3 -8
  80. package/dist/src/mcp/tools/dna-tools.js.map +1 -1
  81. package/dist/src/utils/config.d.ts +1 -0
  82. package/dist/src/utils/config.d.ts.map +1 -1
  83. package/dist/src/utils/config.js +1 -10
  84. package/dist/src/utils/config.js.map +1 -1
  85. package/dist/tsconfig.tsbuildinfo +1 -1
  86. package/package.json +1 -1
  87. package/skills/symbiote-init/SKILL.md +127 -55
  88. package/dist/src/dna/storage.d.ts +0 -19
  89. package/dist/src/dna/storage.d.ts.map +0 -1
  90. package/dist/src/dna/storage.js +0 -112
  91. 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: style traits, preferences, anti-patterns
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/dna/`. Follows you across every project.
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 from suggestion to approved trait. Explicit instruction? Approved immediately.
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 human-readable markdown. Review it, edit it, or ignore it:
95
+ Your DNA is a single JSON profile portable, exportable, switchable:
96
96
 
97
97
  ```bash
98
- symbiote dna # Summary: 34 traits, 2 pending review
99
- symbiote dna list # All traits with confidence scores
100
- symbiote dna approve <id> # Promote a suggestion
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 traitsapprove, reject, edit |
220
+ | **DNA Lab** | Your profilesrules, 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
- └── dna/
326
- ├── style/ # "Use early returns, not nested else"
327
- ├── preferences/ # "Drizzle over Prisma"
328
- ├── anti-patterns/ # "No nested ternaries"
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 # Auto-generated project summary
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 | What it does |
368
- | ----------------------- | ---------------------------------------------- |
369
- | `symbiote install` | One-time global setup for all detected editors |
370
- | `symbiote scan` | Rescan codebase (incremental) |
371
- | `symbiote scan --force` | Full rescan, ignore cache |
372
- | `symbiote serve` | MCP server + web UI (port auto-assigned) |
373
- | `symbiote mcp` | MCP server only (stdio, for editors) |
374
- | `symbiote dna` | View and manage developer DNA |
375
- | `symbiote impact` | Analyze impact of working changes |
376
- | `symbiote unbond` | Detach from all AI hosts |
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 (799 tests across 85 files) |
402
+ | **Testing** | Vitest (842 tests across 86 files) |
394
403
 
395
404
  ---
396
405
 
@@ -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')} View your developer 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
  };
@@ -1 +1 @@
1
- {"version":3,"file":"symbiote.js","sourceRoot":"","sources":["../../bin/symbiote.ts"],"names":[],"mappings":"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"}
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":"AAOA,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,CA+Jf"}
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"}
@@ -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 { DnaStorage } from '#dna/storage.js';
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 dnaDir = path.join(symbioteHome, 'dna');
10
- const storage = new DnaStorage(dnaDir);
11
- storage.ensureDirectories();
254
+ const storage = new ProfileStorage(symbioteHome);
12
255
  if (!subcommand || subcommand === 'dna') {
13
- const all = storage.listEntries();
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
- const entries = storage.listEntries({
35
- status: (typeof flags.status === 'string' ? flags.status : undefined),
36
- category: (typeof flags.category === 'string' ? flags.category : undefined),
37
- });
38
- if (entries.length === 0) {
39
- p.log.info('No DNA entries found.');
40
- return;
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
- const entry = storage.readEntry(id);
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
- const engine = new DnaEngine(storage);
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
- const engine = new DnaEngine(storage);
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.deleteEntry(id);
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, show, approve, reject, delete'));
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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"}