kodelyth-ecc 1.5.10 → 1.7.0

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 (123) hide show
  1. package/.github/workflows/publish.yml +19 -0
  2. package/AGENTS.md +1 -1
  3. package/CHANGELOG.md +447 -0
  4. package/CLAUDE.md +48 -16
  5. package/README.md +265 -81
  6. package/VERSION +1 -1
  7. package/actions/ecc-review/README.md +243 -0
  8. package/actions/ecc-review/action.yml +158 -0
  9. package/actions/ecc-review/post-comment.js +171 -0
  10. package/actions/ecc-review/run-review.js +285 -0
  11. package/agents/backdoor-hunter.md +260 -0
  12. package/agents/chaos-engineer.md +251 -0
  13. package/agents/code-stealer-detector.md +228 -0
  14. package/agents/jailbreak-tester.md +222 -0
  15. package/agents/license-violation-finder.md +212 -0
  16. package/agents/prompt-injection-hunter.md +126 -0
  17. package/agents/secret-hunter.md +209 -0
  18. package/agents/supply-chain-auditor.md +195 -0
  19. package/bin/kodelyth-ecc.js +875 -1
  20. package/bundles/enterprise.md +172 -0
  21. package/bundles/indie-hacker.md +106 -0
  22. package/bundles/red-team.md +138 -0
  23. package/cat +0 -0
  24. package/commands/dashboard.md +67 -0
  25. package/commands/devil-mode.md +121 -0
  26. package/commands/memory-evolve.md +71 -0
  27. package/commands/replay.md +61 -0
  28. package/commands/route-model.md +48 -0
  29. package/commands/swarm.md +68 -0
  30. package/commands/verify-supply-chain.md +59 -0
  31. package/docs/dashboard.md +211 -0
  32. package/docs/evolve.md +303 -0
  33. package/docs/mcp-clients.md +167 -0
  34. package/docs/mcp.md +178 -0
  35. package/docs/replay.md +244 -0
  36. package/docs/supply-chain.md +207 -0
  37. package/docs/swarm.md +243 -0
  38. package/hooks/hooks.json +52 -0
  39. package/hooks/memory/auto-recall.js +29 -1
  40. package/hooks/safety/README.md +124 -0
  41. package/hooks/safety/lib/patterns.js +179 -0
  42. package/hooks/safety/prompt-injection-guard.js +179 -0
  43. package/hooks/safety/token-budget.js +229 -0
  44. package/install.ps1 +199 -2
  45. package/install.sh +285 -3
  46. package/package.json +30 -4
  47. package/rules/common/agent-intent-routing.md +182 -0
  48. package/rules/common/cost-aware-model-routing.md +152 -0
  49. package/scripts/dashboard/data.js +353 -0
  50. package/scripts/dashboard/server.js +324 -0
  51. package/scripts/dashboard/static/index.html +645 -0
  52. package/scripts/evolve/analyze.js +303 -0
  53. package/scripts/evolve/proposals.js +162 -0
  54. package/scripts/evolve/stats.js +219 -0
  55. package/scripts/mcp/catalog.js +244 -0
  56. package/scripts/mcp/client.js +181 -0
  57. package/scripts/mcp/prompts.js +133 -0
  58. package/scripts/mcp/resources.js +94 -0
  59. package/scripts/mcp/server.js +153 -0
  60. package/scripts/mcp/tools.js +465 -0
  61. package/scripts/replay/bundle.js +191 -0
  62. package/scripts/replay/replay.js +107 -0
  63. package/scripts/router/classify.js +232 -0
  64. package/scripts/supply-chain/manifest.js +154 -0
  65. package/scripts/supply-chain/sbom.js +202 -0
  66. package/scripts/supply-chain/verify.js +102 -0
  67. package/scripts/swarm/build-plan.js +193 -0
  68. package/skills/cost-aware-model-routing/SKILL.md +153 -0
  69. package/skills/kodelyth-quickstart/SKILL.md +7 -0
  70. package/skills/observability-dashboard/SKILL.md +119 -0
  71. package/skills/self-evolving-memory/SKILL.md +175 -0
  72. package/skills/session-replay/SKILL.md +199 -0
  73. package/skills/supply-chain-verification/SKILL.md +201 -0
  74. package/skills/swarm-orchestrator/SKILL.md +177 -0
  75. package/social/card-install.svg +1 -1
  76. package/social/facebook-group/POST.md +121 -0
  77. package/social/facebook-group/fb-1-3am-debug.png +0 -0
  78. package/social/facebook-group/fb-1-3am-debug.svg +97 -0
  79. package/social/facebook-group/fb-2-cpu-upgrade.png +0 -0
  80. package/social/facebook-group/fb-2-cpu-upgrade.svg +132 -0
  81. package/social/facebook-group/fb-3-before-after.png +0 -0
  82. package/social/facebook-group/fb-3-before-after.svg +94 -0
  83. package/social/facebook-v150.svg +5 -5
  84. package/social/github-social-preview.svg +119 -100
  85. package/social/readme-hero.svg +11 -11
  86. package/social/section-agents.svg +57 -0
  87. package/social/section-author.svg +54 -0
  88. package/social/section-dashboard.svg +59 -0
  89. package/social/section-devil.svg +54 -0
  90. package/social/section-hooks.svg +51 -0
  91. package/social/section-install.svg +42 -0
  92. package/social/section-learning.svg +52 -0
  93. package/social/section-mcp.svg +46 -0
  94. package/social/section-memory.svg +57 -0
  95. package/social/section-parallel.svg +72 -0
  96. package/social/section-routing.svg +51 -0
  97. package/social/x-card-agents-grid.svg +6 -6
  98. package/tests/dashboard/data.test.js +235 -0
  99. package/tests/dashboard/server.test.js +240 -0
  100. package/tests/evolve/analyze.test.js +169 -0
  101. package/tests/evolve/proposals.test.js +173 -0
  102. package/tests/evolve/stats.test.js +159 -0
  103. package/tests/mcp/catalog.test.js +98 -0
  104. package/tests/mcp/client.test.js +109 -0
  105. package/tests/mcp/resources-prompts.test.js +70 -0
  106. package/tests/mcp/tools.test.js +159 -0
  107. package/tests/replay/bundle.test.js +181 -0
  108. package/tests/replay/replay.test.js +131 -0
  109. package/tests/router/classify.test.js +164 -0
  110. package/tests/safety/patterns.test.js +94 -0
  111. package/tests/safety/prompt-injection-guard.test.js +111 -0
  112. package/tests/safety/token-budget.test.js +119 -0
  113. package/tests/supply-chain/manifest.test.js +147 -0
  114. package/tests/supply-chain/sbom.test.js +170 -0
  115. package/tests/supply-chain/verify.test.js +146 -0
  116. package/tests/swarm/build-plan.test.js +188 -0
  117. package/wiki/Agent-Reference.md +58 -7
  118. package/wiki/FAQ.md +204 -7
  119. package/wiki/Home.md +104 -28
  120. package/wiki/Hook-Reference.md +1 -1
  121. package/wiki/Installation-Guide.md +109 -6
  122. package/wiki/Platform-Support.md +239 -25
  123. package/wiki/Skill-Reference.md +101 -6
@@ -25,33 +25,33 @@
25
25
  <!-- LEFT — Brand block -->
26
26
  <!-- Version badge -->
27
27
  <rect x="32" y="22" width="72" height="20" rx="10" fill="#a78bfa" fill-opacity="0.15" stroke="#a78bfa" stroke-opacity="0.4" stroke-width="1"/>
28
- <text x="68" y="36" font-size="9" fill="#a78bfa" text-anchor="middle" font-weight="700" letter-spacing="0.5">v1.5.8</text>
28
+ <text x="68" y="36" font-size="9" fill="#a78bfa" text-anchor="middle" font-weight="700" letter-spacing="0.5">v1.7.0</text>
29
29
 
30
30
  <!-- Title -->
31
31
  <text x="32" y="78" font-size="36" font-weight="900" letter-spacing="-1.5" fill="#ffffff" filter="url(#glow)">Kodelyth</text>
32
32
  <text x="32" y="118" font-size="36" font-weight="900" letter-spacing="-1.5" fill="url(#accent)">ECC</text>
33
33
 
34
34
  <!-- Tagline -->
35
- <text x="32" y="148" font-size="12" fill="#6e7681" font-weight="400">AI coding toolkit. 6 platforms. Zero cloud.</text>
35
+ <text x="32" y="148" font-size="12" fill="#6e7681" font-weight="400">AI coding toolkit. 12 platforms. Zero cloud.</text>
36
36
 
37
37
  <!-- Separator -->
38
38
  <line x1="32" y1="165" x2="290" y2="165" stroke="#21262d" stroke-width="1"/>
39
39
 
40
40
  <!-- Stats row -->
41
41
  <rect x="32" y="178" width="56" height="54" rx="8" fill="#ffffff" fill-opacity="0.04" stroke="#a78bfa" stroke-opacity="0.25" stroke-width="1"/>
42
- <text x="60" y="202" font-size="20" font-weight="800" fill="#ffffff" text-anchor="middle">62</text>
42
+ <text x="60" y="202" font-size="20" font-weight="800" fill="#ffffff" text-anchor="middle">70</text>
43
43
  <text x="60" y="220" font-size="8" fill="#6b7280" text-anchor="middle" letter-spacing="1.5">AGENTS</text>
44
44
 
45
45
  <rect x="96" y="178" width="56" height="54" rx="8" fill="#ffffff" fill-opacity="0.04" stroke="#2563eb" stroke-opacity="0.25" stroke-width="1"/>
46
- <text x="124" y="202" font-size="20" font-weight="800" fill="#ffffff" text-anchor="middle">188</text>
46
+ <text x="124" y="202" font-size="20" font-weight="800" fill="#ffffff" text-anchor="middle">194</text>
47
47
  <text x="124" y="220" font-size="8" fill="#6b7280" text-anchor="middle" letter-spacing="1.5">SKILLS</text>
48
48
 
49
49
  <rect x="160" y="178" width="56" height="54" rx="8" fill="#ffffff" fill-opacity="0.04" stroke="#059669" stroke-opacity="0.25" stroke-width="1"/>
50
- <text x="188" y="202" font-size="20" font-weight="800" fill="#ffffff" text-anchor="middle">90</text>
50
+ <text x="188" y="202" font-size="20" font-weight="800" fill="#ffffff" text-anchor="middle">97</text>
51
51
  <text x="188" y="220" font-size="8" fill="#6b7280" text-anchor="middle" letter-spacing="1.5">COMMANDS</text>
52
52
 
53
53
  <rect x="224" y="178" width="56" height="54" rx="8" fill="#ffffff" fill-opacity="0.04" stroke="#0891b2" stroke-opacity="0.25" stroke-width="1"/>
54
- <text x="252" y="202" font-size="20" font-weight="800" fill="#ffffff" text-anchor="middle">20+</text>
54
+ <text x="252" y="202" font-size="20" font-weight="800" fill="#ffffff" text-anchor="middle">22+</text>
55
55
  <text x="252" y="220" font-size="8" fill="#6b7280" text-anchor="middle" letter-spacing="1.5">HOOKS</text>
56
56
 
57
57
  <!-- RIGHT — Terminal -->
@@ -61,17 +61,17 @@
61
61
  <circle cx="344" cy="31" r="5" fill="#ff5f57"/>
62
62
  <circle cx="360" cy="31" r="5" fill="#febc2e"/>
63
63
  <circle cx="376" cy="31" r="5" fill="#28c840"/>
64
- <text x="612" y="35" font-size="11" fill="#484f58" text-anchor="middle">kodelyth-ecc v1.5.8</text>
64
+ <text x="612" y="35" font-size="11" fill="#484f58" text-anchor="middle">kodelyth-ecc v1.7.0</text>
65
65
 
66
66
  <text x="348" y="66" font-family="'Courier New', Courier, monospace" font-size="11" fill="#10b981">$</text>
67
67
  <text x="360" y="66" font-family="'Courier New', Courier, monospace" font-size="11" fill="#e6edf3"> npx kodelyth-ecc</text>
68
68
 
69
- <text x="348" y="84" font-family="'Courier New', Courier, monospace" font-size="11" fill="#484f58">Installing Kodelyth ECC v1.5.8...</text>
69
+ <text x="348" y="84" font-family="'Courier New', Courier, monospace" font-size="11" fill="#484f58">Installing Kodelyth ECC v1.7.0...</text>
70
70
 
71
- <text x="348" y="108" font-family="'Courier New', Courier, monospace" font-size="11" fill="#e6edf3"> Agents (62) </text>
71
+ <text x="348" y="108" font-family="'Courier New', Courier, monospace" font-size="11" fill="#e6edf3"> Agents (70) </text>
72
72
  <text x="494" y="108" font-family="'Courier New', Courier, monospace" font-size="11" fill="#484f58">→ ~/.claude/agents/</text>
73
73
 
74
- <text x="348" y="126" font-family="'Courier New', Courier, monospace" font-size="11" fill="#e6edf3"> Skills (188) </text>
74
+ <text x="348" y="126" font-family="'Courier New', Courier, monospace" font-size="11" fill="#e6edf3"> Skills (194) </text>
75
75
  <text x="494" y="126" font-family="'Courier New', Courier, monospace" font-size="11" fill="#484f58">→ ~/.claude/skills/</text>
76
76
 
77
77
  <text x="348" y="144" font-family="'Courier New', Courier, monospace" font-size="11" fill="#e6edf3"> Compound learning </text>
@@ -84,6 +84,6 @@
84
84
  <text x="494" y="180" font-family="'Courier New', Courier, monospace" font-size="11" fill="#484f58">→ ~/.kodelyth/memory/</text>
85
85
 
86
86
  <rect x="348" y="196" width="500" height="36" rx="6" fill="#0d2b1d" stroke="#059669" stroke-opacity="0.3" stroke-width="1"/>
87
- <text x="368" y="212" font-size="9" font-weight="700" fill="#10b981" letter-spacing="1">v1.5.3+ — SEMANTIC INTENT ROUTING</text>
87
+ <text x="368" y="212" font-size="9" font-weight="700" fill="#10b981" letter-spacing="1">v1.7.0 — SEMANTIC INTENT ROUTING</text>
88
88
  <text x="368" y="226" font-size="10" fill="#6b7280">Paste code or a stack trace — AI routes you automatically, no command needed</text>
89
89
  </svg>
@@ -0,0 +1,57 @@
1
+ <svg viewBox="0 0 900 210" xmlns="http://www.w3.org/2000/svg" font-family="'Segoe UI', system-ui, -apple-system, sans-serif">
2
+ <defs>
3
+ <linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
4
+ <stop offset="0%" style="stop-color:#0d1117"/>
5
+ <stop offset="100%" style="stop-color:#161b22"/>
6
+ </linearGradient>
7
+ </defs>
8
+ <rect width="900" height="210" fill="url(#bg)" rx="12"/>
9
+ <rect width="900" height="210" fill="none" stroke="#21262d" stroke-width="1" rx="12"/>
10
+
11
+ <!-- Label -->
12
+ <rect x="32" y="20" width="226" height="22" rx="11" fill="#a78bfa" fill-opacity="0.12" stroke="#a78bfa" stroke-opacity="0.35" stroke-width="1"/>
13
+ <text x="145" y="35" font-size="10" fill="#a78bfa" text-anchor="middle" font-weight="700" letter-spacing="1">SPECIALIST AGENT ARSENAL</text>
14
+
15
+ <text x="32" y="72" font-size="20" font-weight="800" fill="#ffffff">70 specialist agents — one for every situation</text>
16
+ <text x="32" y="94" font-size="12" fill="#6e7681">auto-routed by intent · 10 priority tiers · chains fire in sequence · no agent names needed</text>
17
+
18
+ <!-- Row 1 of cards — y=108, h=44 -->
19
+
20
+ <!-- Card 1: Debugging (amber) x=32, w=272 -->
21
+ <rect x="32" y="108" width="272" height="44" rx="6" fill="#f59e0b" fill-opacity="0.08" stroke="#f59e0b" stroke-opacity="0.3" stroke-width="1"/>
22
+ <text x="44" y="122" font-size="9.5" fill="#fbbf24" font-weight="700">Debugging</text>
23
+ <text x="44" y="136" font-size="8" fill="#fbbf24" opacity="0.8">debug-detective · silent-failure-hunter</text>
24
+ <text x="44" y="147" font-size="8" fill="#fbbf24" opacity="0.65">env-debugger · flake-hunter</text>
25
+
26
+ <!-- Card 2: Security (red) x=312, w=272 -->
27
+ <rect x="312" y="108" width="272" height="44" rx="6" fill="#ef4444" fill-opacity="0.08" stroke="#ef4444" stroke-opacity="0.3" stroke-width="1"/>
28
+ <text x="324" y="122" font-size="9.5" fill="#f87171" font-weight="700">Security</text>
29
+ <text x="324" y="136" font-size="8" fill="#f87171" opacity="0.8">security-reviewer · api-guardian</text>
30
+ <text x="324" y="147" font-size="8" fill="#f87171" opacity="0.65">secret-hunter · supply-chain-auditor</text>
31
+
32
+ <!-- Card 3: Code Review (purple) x=592, w=276 -->
33
+ <rect x="592" y="108" width="276" height="44" rx="6" fill="#a78bfa" fill-opacity="0.08" stroke="#a78bfa" stroke-opacity="0.3" stroke-width="1"/>
34
+ <text x="604" y="122" font-size="9.5" fill="#a78bfa" font-weight="700">Code Review</text>
35
+ <text x="604" y="136" font-size="8" fill="#a78bfa" opacity="0.8">code-reviewer · typescript-reviewer</text>
36
+ <text x="604" y="147" font-size="8" fill="#a78bfa" opacity="0.65">python · go · rust · java · kotlin</text>
37
+
38
+ <!-- Row 2 of cards — y=160, h=44 -->
39
+
40
+ <!-- Card 4: Architecture (blue) x=32, w=272 -->
41
+ <rect x="32" y="160" width="272" height="44" rx="6" fill="#2563eb" fill-opacity="0.08" stroke="#2563eb" stroke-opacity="0.3" stroke-width="1"/>
42
+ <text x="44" y="174" font-size="9.5" fill="#60a5fa" font-weight="700">Architecture</text>
43
+ <text x="44" y="188" font-size="8" fill="#60a5fa" opacity="0.8">architect · planner · pair-programmer</text>
44
+ <text x="44" y="199" font-size="8" fill="#60a5fa" opacity="0.65">migration-guide · code-architect</text>
45
+
46
+ <!-- Card 5: Testing (teal) x=312, w=272 -->
47
+ <rect x="312" y="160" width="272" height="44" rx="6" fill="#06b6d4" fill-opacity="0.08" stroke="#06b6d4" stroke-opacity="0.3" stroke-width="1"/>
48
+ <text x="324" y="174" font-size="9.5" fill="#38bdf8" font-weight="700">Testing</text>
49
+ <text x="324" y="188" font-size="8" fill="#38bdf8" opacity="0.8">tdd-guide · e2e-runner · pr-test-analyzer</text>
50
+ <text x="324" y="199" font-size="8" fill="#38bdf8" opacity="0.65">flake-hunter · healthcare-reviewer</text>
51
+
52
+ <!-- Card 6: Release & Ops (green) x=592, w=276 -->
53
+ <rect x="592" y="160" width="276" height="44" rx="6" fill="#059669" fill-opacity="0.08" stroke="#059669" stroke-opacity="0.3" stroke-width="1"/>
54
+ <text x="604" y="174" font-size="9.5" fill="#34d399" font-weight="700">Release &amp; Ops</text>
55
+ <text x="604" y="188" font-size="8" fill="#34d399" opacity="0.8">release-captain · git-rescue</text>
56
+ <text x="604" y="199" font-size="8" fill="#34d399" opacity="0.65">dependency-doctor · incident-commander</text>
57
+ </svg>
@@ -0,0 +1,54 @@
1
+ <svg viewBox="0 0 900 160" xmlns="http://www.w3.org/2000/svg" font-family="'Segoe UI', system-ui, -apple-system, sans-serif">
2
+ <defs>
3
+ <linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
4
+ <stop offset="0%" style="stop-color:#0d1117"/>
5
+ <stop offset="100%" style="stop-color:#161b22"/>
6
+ </linearGradient>
7
+ <linearGradient id="acc" x1="0%" y1="0%" x2="100%" y2="0%">
8
+ <stop offset="0%" style="stop-color:#a78bfa"/>
9
+ <stop offset="100%" style="stop-color:#38bdf8"/>
10
+ </linearGradient>
11
+ <clipPath id="avatar">
12
+ <circle cx="76" cy="90" r="36"/>
13
+ </clipPath>
14
+ </defs>
15
+ <rect width="900" height="160" fill="url(#bg)" rx="12"/>
16
+ <rect width="900" height="160" fill="none" stroke="#21262d" stroke-width="1" rx="12"/>
17
+ <!-- accent top line -->
18
+ <rect x="0" y="0" width="900" height="3" rx="1" fill="url(#acc)"/>
19
+
20
+ <!-- Avatar circle -->
21
+ <circle cx="76" cy="90" r="38" fill="#21262d" stroke="#a78bfa" stroke-opacity="0.4" stroke-width="1.5"/>
22
+ <!-- Stylised "SI" initials -->
23
+ <text x="76" y="98" font-size="26" font-weight="900" fill="url(#acc)" text-anchor="middle">SI</text>
24
+
25
+ <!-- Name + role -->
26
+ <text x="132" y="68" font-size="22" font-weight="800" fill="#ffffff">Shofiqul Islam</text>
27
+ <text x="132" y="88" font-size="12" fill="#6e7681">Creator of Kodelyth ECC · Full-stack engineer · AI tooling</text>
28
+
29
+ <!-- Divider -->
30
+ <line x1="132" y1="98" x2="500" y2="98" stroke="#21262d" stroke-width="1"/>
31
+
32
+ <!-- Social links as pill badges -->
33
+ <rect x="132" y="108" width="72" height="26" rx="13" fill="#1877f2" fill-opacity="0.15" stroke="#1877f2" stroke-opacity="0.4" stroke-width="1"/>
34
+ <text x="168" y="124" font-size="10" fill="#60a5fa" text-anchor="middle" font-weight="700">Facebook</text>
35
+
36
+ <rect x="214" y="108" width="80" height="26" rx="13" fill="#e1306c" fill-opacity="0.12" stroke="#e1306c" stroke-opacity="0.4" stroke-width="1"/>
37
+ <text x="254" y="124" font-size="10" fill="#f472b6" text-anchor="middle" font-weight="700">Instagram</text>
38
+
39
+ <rect x="304" y="108" width="72" height="26" rx="13" fill="#ffffff" fill-opacity="0.06" stroke="#ffffff" stroke-opacity="0.2" stroke-width="1"/>
40
+ <text x="340" y="124" font-size="10" fill="#e6edf3" text-anchor="middle" font-weight="700">GitHub</text>
41
+
42
+ <rect x="386" y="108" width="86" height="26" rx="13" fill="#ffffff" fill-opacity="0.06" stroke="#ffffff" stroke-opacity="0.2" stroke-width="1"/>
43
+ <text x="429" y="124" font-size="10" fill="#e6edf3" text-anchor="middle" font-weight="700">X / Twitter</text>
44
+
45
+ <!-- Handle -->
46
+ <text x="132" y="150" font-size="10" fill="#6e7681">@sifxprime on all platforms</text>
47
+
48
+ <!-- Right: project links -->
49
+ <rect x="600" y="60" width="268" height="80" rx="8" fill="#161b22" stroke="#30363d" stroke-width="1"/>
50
+ <text x="616" y="82" font-size="10" fill="#6e7681" font-weight="600">PROJECT LINKS</text>
51
+ <text x="616" y="100" font-size="10" fill="#a78bfa">github.com/sifxprime/kodelyth-ecc</text>
52
+ <text x="616" y="116" font-size="10" fill="#38bdf8">npmjs.com/package/kodelyth-ecc</text>
53
+ <text x="616" y="132" font-size="10" fill="#34d399">kodelyth.com</text>
54
+ </svg>
@@ -0,0 +1,59 @@
1
+ <svg viewBox="0 0 900 190" xmlns="http://www.w3.org/2000/svg" font-family="'Segoe UI', system-ui, -apple-system, sans-serif">
2
+ <defs>
3
+ <linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
4
+ <stop offset="0%" style="stop-color:#0d1117"/>
5
+ <stop offset="100%" style="stop-color:#161b22"/>
6
+ </linearGradient>
7
+ <linearGradient id="teal" x1="0%" y1="0%" x2="100%" y2="0%">
8
+ <stop offset="0%" style="stop-color:#38bdf8"/>
9
+ <stop offset="100%" style="stop-color:#06b6d4"/>
10
+ </linearGradient>
11
+ </defs>
12
+ <rect width="900" height="190" fill="url(#bg)" rx="12"/>
13
+ <rect width="900" height="190" fill="none" stroke="#21262d" stroke-width="1" rx="12"/>
14
+
15
+ <!-- Label -->
16
+ <rect x="32" y="20" width="174" height="22" rx="11" fill="#06b6d4" fill-opacity="0.12" stroke="#06b6d4" stroke-opacity="0.4" stroke-width="1"/>
17
+ <text x="119" y="35" font-size="10" fill="#38bdf8" text-anchor="middle" font-weight="700" letter-spacing="1">OBSERVABILITY DASHBOARD</text>
18
+
19
+ <text x="32" y="72" font-size="22" font-weight="800" fill="#ffffff">Your AI workspace — one glance, zero telemetry</text>
20
+ <text x="32" y="94" font-size="12" fill="#6e7681">localhost:5747 · SSE real-time push · GET-only · hardened headers · no external calls</text>
21
+
22
+ <!-- Mini browser chrome -->
23
+ <rect x="32" y="108" width="480" height="68" rx="7" fill="#161b22" stroke="#30363d" stroke-width="1"/>
24
+ <!-- browser bar -->
25
+ <rect x="32" y="108" width="480" height="22" rx="7" fill="#21262d"/>
26
+ <rect x="32" y="119" width="480" height="11" fill="#21262d"/>
27
+ <circle cx="50" cy="119" r="4" fill="#ef4444" opacity="0.7"/>
28
+ <circle cx="64" cy="119" r="4" fill="#f59e0b" opacity="0.7"/>
29
+ <circle cx="78" cy="119" r="4" fill="#22c55e" opacity="0.7"/>
30
+ <rect x="96" y="113" width="200" height="12" rx="3" fill="#0d1117"/>
31
+ <text x="196" y="122" font-size="7.5" fill="#6e7681" text-anchor="middle">http://127.0.0.1:5747</text>
32
+ <!-- green dot -->
33
+ <circle cx="468" cy="119" r="4" fill="#22c55e"/>
34
+
35
+ <!-- Tab bar -->
36
+ <rect x="38" y="130" width="58" height="16" rx="3" fill="#38bdf8" fill-opacity="0.2" stroke="#38bdf8" stroke-opacity="0.5" stroke-width="0.5"/>
37
+ <text x="67" y="141" font-size="7.5" fill="#38bdf8" text-anchor="middle" font-weight="700">Overview</text>
38
+ <text x="115" y="141" font-size="7.5" fill="#6e7681" text-anchor="middle">Memory</text>
39
+ <text x="152" y="141" font-size="7.5" fill="#6e7681" text-anchor="middle">Evolve</text>
40
+ <text x="188" y="141" font-size="7.5" fill="#6e7681" text-anchor="middle">Catalog</text>
41
+ <text x="225" y="141" font-size="7.5" fill="#6e7681" text-anchor="middle">Sessions</text>
42
+
43
+ <!-- Stat cards -->
44
+ <rect x="38" y="152" width="50" height="18" rx="3" fill="#a78bfa" fill-opacity="0.12" stroke="#a78bfa" stroke-opacity="0.3" stroke-width="0.5"/>
45
+ <text x="63" y="164" font-size="8" fill="#a78bfa" text-anchor="middle">70 agents</text>
46
+ <rect x="95" y="152" width="50" height="18" rx="3" fill="#2563eb" fill-opacity="0.12" stroke="#2563eb" stroke-opacity="0.3" stroke-width="0.5"/>
47
+ <text x="120" y="164" font-size="8" fill="#60a5fa" text-anchor="middle">194 skills</text>
48
+ <rect x="152" y="152" width="50" height="18" rx="3" fill="#059669" fill-opacity="0.12" stroke="#059669" stroke-opacity="0.3" stroke-width="0.5"/>
49
+ <text x="177" y="164" font-size="8" fill="#34d399" text-anchor="middle">memory ✓</text>
50
+ <rect x="209" y="152" width="60" height="18" rx="3" fill="#f59e0b" fill-opacity="0.12" stroke="#f59e0b" stroke-opacity="0.3" stroke-width="0.5"/>
51
+ <text x="239" y="164" font-size="8" fill="#fbbf24" text-anchor="middle">SSE live ●</text>
52
+
53
+ <!-- Right: launch command -->
54
+ <rect x="540" y="110" width="328" height="66" rx="8" fill="#161b22" stroke="#30363d" stroke-width="1"/>
55
+ <text x="556" y="130" font-size="9.5" fill="#6e7681">Launch the dashboard</text>
56
+ <rect x="556" y="138" width="295" height="26" rx="5" fill="#0d1117"/>
57
+ <text x="570" y="153" font-size="11" fill="#34d399" font-family="'Courier New', monospace">$ npx kodelyth-ecc dashboard</text>
58
+ <text x="556" y="172" font-size="9" fill="#6e7681">Opens automatically at http://127.0.0.1:5747</text>
59
+ </svg>
@@ -0,0 +1,54 @@
1
+ <svg viewBox="0 0 900 170" xmlns="http://www.w3.org/2000/svg" font-family="'Segoe UI', system-ui, -apple-system, sans-serif">
2
+ <defs>
3
+ <linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
4
+ <stop offset="0%" style="stop-color:#0d1117"/>
5
+ <stop offset="100%" style="stop-color:#1a0a0a"/>
6
+ </linearGradient>
7
+ <linearGradient id="redgrad" x1="0%" y1="0%" x2="100%" y2="0%">
8
+ <stop offset="0%" style="stop-color:#ef4444"/>
9
+ <stop offset="100%" style="stop-color:#dc2626"/>
10
+ </linearGradient>
11
+ </defs>
12
+ <rect width="900" height="170" fill="url(#bg)" rx="12"/>
13
+ <rect width="900" height="170" fill="none" stroke="#2d1515" stroke-width="1" rx="12"/>
14
+ <!-- subtle red glow top -->
15
+ <ellipse cx="450" cy="-10" rx="420" ry="60" fill="#ef4444" fill-opacity="0.04"/>
16
+
17
+ <!-- Label -->
18
+ <rect x="32" y="20" width="130" height="22" rx="11" fill="#ef4444" fill-opacity="0.15" stroke="#ef4444" stroke-opacity="0.5" stroke-width="1"/>
19
+ <text x="97" y="35" font-size="10" fill="#f87171" text-anchor="middle" font-weight="700" letter-spacing="1">DEVIL MODE</text>
20
+
21
+ <text x="32" y="70" font-size="22" font-weight="800" fill="#ffffff">8 adversarial agents. Red-team your own code.</text>
22
+ <text x="32" y="92" font-size="12" fill="#9ca3af">Before you go public — full secret, license, supply-chain, prompt-injection sweep in parallel.</text>
23
+
24
+ <!-- 8 agent pills in 2 rows -->
25
+ <rect x="32" y="110" width="148" height="22" rx="6" fill="#ef4444" fill-opacity="0.1" stroke="#ef4444" stroke-opacity="0.35" stroke-width="1"/>
26
+ <text x="106" y="124" font-size="9" fill="#f87171" text-anchor="middle" font-weight="600">prompt-injection-hunter</text>
27
+
28
+ <rect x="188" y="110" width="130" height="22" rx="6" fill="#ef4444" fill-opacity="0.1" stroke="#ef4444" stroke-opacity="0.3" stroke-width="1"/>
29
+ <text x="253" y="124" font-size="9" fill="#f87171" text-anchor="middle" font-weight="600">supply-chain-auditor</text>
30
+
31
+ <rect x="326" y="110" width="110" height="22" rx="6" fill="#ef4444" fill-opacity="0.1" stroke="#ef4444" stroke-opacity="0.3" stroke-width="1"/>
32
+ <text x="381" y="124" font-size="9" fill="#f87171" text-anchor="middle" font-weight="600">secret-hunter</text>
33
+
34
+ <rect x="444" y="110" width="148" height="22" rx="6" fill="#ef4444" fill-opacity="0.1" stroke="#ef4444" stroke-opacity="0.3" stroke-width="1"/>
35
+ <text x="518" y="124" font-size="9" fill="#f87171" text-anchor="middle" font-weight="600">license-violation-finder</text>
36
+
37
+ <rect x="32" y="138" width="110" height="22" rx="6" fill="#dc2626" fill-opacity="0.1" stroke="#dc2626" stroke-opacity="0.3" stroke-width="1"/>
38
+ <text x="87" y="152" font-size="9" fill="#fca5a5" text-anchor="middle" font-weight="600">jailbreak-tester</text>
39
+
40
+ <rect x="150" y="138" width="138" height="22" rx="6" fill="#dc2626" fill-opacity="0.1" stroke="#dc2626" stroke-opacity="0.3" stroke-width="1"/>
41
+ <text x="219" y="152" font-size="9" fill="#fca5a5" text-anchor="middle" font-weight="600">code-stealer-detector</text>
42
+
43
+ <rect x="296" y="138" width="120" height="22" rx="6" fill="#dc2626" fill-opacity="0.1" stroke="#dc2626" stroke-opacity="0.3" stroke-width="1"/>
44
+ <text x="356" y="152" font-size="9" fill="#fca5a5" text-anchor="middle" font-weight="600">backdoor-hunter</text>
45
+
46
+ <rect x="424" y="138" width="116" height="22" rx="6" fill="#dc2626" fill-opacity="0.1" stroke="#dc2626" stroke-opacity="0.3" stroke-width="1"/>
47
+ <text x="482" y="152" font-size="9" fill="#fca5a5" text-anchor="middle" font-weight="600">chaos-engineer</text>
48
+
49
+ <!-- Command right -->
50
+ <rect x="620" y="108" width="248" height="54" rx="8" fill="#1a0505" stroke="#2d1515" stroke-width="1"/>
51
+ <text x="636" y="126" font-size="9" fill="#6b7280"># before open-sourcing</text>
52
+ <text x="636" y="141" font-size="11" fill="#f87171" font-family="'Courier New', monospace">/devil-mode --pre-public</text>
53
+ <text x="636" y="157" font-size="9" fill="#6b7280"># all 8 at once</text>
54
+ </svg>
@@ -0,0 +1,51 @@
1
+ <svg viewBox="0 0 900 185" xmlns="http://www.w3.org/2000/svg" font-family="'Segoe UI', system-ui, -apple-system, sans-serif">
2
+ <defs>
3
+ <linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
4
+ <stop offset="0%" style="stop-color:#0d1117"/>
5
+ <stop offset="100%" style="stop-color:#161b22"/>
6
+ </linearGradient>
7
+ <marker id="arr" markerWidth="7" markerHeight="7" refX="5" refY="3" orient="auto">
8
+ <path d="M0,0 L5,3 L0,6 Z" fill="#6e7681" opacity="0.7"/>
9
+ </marker>
10
+ </defs>
11
+ <rect width="900" height="185" fill="url(#bg)" rx="12"/>
12
+ <rect width="900" height="185" fill="none" stroke="#21262d" stroke-width="1" rx="12"/>
13
+
14
+ <!-- Label -->
15
+ <rect x="32" y="20" width="226" height="22" rx="11" fill="#f59e0b" fill-opacity="0.12" stroke="#f59e0b" stroke-opacity="0.4" stroke-width="1"/>
16
+ <text x="145" y="35" font-size="10" fill="#fbbf24" text-anchor="middle" font-weight="700" letter-spacing="1">AUTOMATED QUALITY HOOKS</text>
17
+
18
+ <text x="32" y="72" font-size="20" font-weight="800" fill="#ffffff">22+ hooks fire silently — before, during, and after</text>
19
+ <text x="32" y="94" font-size="12" fill="#6e7681">PreToolUse gates · PostToolUse auto-fixers · Stop verifiers · memory capture · prompt-injection guard</text>
20
+
21
+ <!-- Col 1: PreToolUse (purple) -->
22
+ <rect x="32" y="110" width="196" height="62" rx="7" fill="#a78bfa" fill-opacity="0.08" stroke="#a78bfa" stroke-opacity="0.35" stroke-width="1"/>
23
+ <text x="130" y="126" font-size="10" fill="#a78bfa" text-anchor="middle" font-weight="700">PreToolUse</text>
24
+ <text x="48" y="140" font-size="9" fill="#a78bfa" opacity="0.85">· secret-guard</text>
25
+ <text x="48" y="153" font-size="9" fill="#a78bfa" opacity="0.85">· injection-guard</text>
26
+ <text x="48" y="166" font-size="9" fill="#a78bfa" opacity="0.85">· file-size-guard · token-limit</text>
27
+
28
+ <line x1="231" y1="140" x2="258" y2="140" stroke="#6e7681" stroke-width="1" marker-end="url(#arr)" opacity="0.5"/>
29
+
30
+ <!-- Col 2: PostToolUse (blue) -->
31
+ <rect x="261" y="110" width="196" height="62" rx="7" fill="#2563eb" fill-opacity="0.08" stroke="#2563eb" stroke-opacity="0.35" stroke-width="1"/>
32
+ <text x="359" y="126" font-size="10" fill="#60a5fa" text-anchor="middle" font-weight="700">PostToolUse</text>
33
+ <text x="277" y="140" font-size="9" fill="#60a5fa" opacity="0.85">· auto-format</text>
34
+ <text x="277" y="153" font-size="9" fill="#60a5fa" opacity="0.85">· eslint-fix · type-check</text>
35
+ <text x="277" y="166" font-size="9" fill="#60a5fa" opacity="0.85">· smart-suggest · test-reminder</text>
36
+
37
+ <line x1="460" y1="140" x2="487" y2="140" stroke="#6e7681" stroke-width="1" marker-end="url(#arr)" opacity="0.5"/>
38
+
39
+ <!-- Col 3: Stop (green) -->
40
+ <rect x="490" y="110" width="196" height="62" rx="7" fill="#059669" fill-opacity="0.08" stroke="#059669" stroke-opacity="0.35" stroke-width="1"/>
41
+ <text x="588" y="126" font-size="10" fill="#34d399" text-anchor="middle" font-weight="700">Stop</text>
42
+ <text x="506" y="140" font-size="9" fill="#34d399" opacity="0.85">· build-verify · test-coverage</text>
43
+ <text x="506" y="153" font-size="9" fill="#34d399" opacity="0.85">· lesson-capture</text>
44
+ <text x="506" y="166" font-size="9" fill="#34d399" opacity="0.85">· memory-capture · cost-tracker</text>
45
+
46
+ <!-- Right stats -->
47
+ <text x="868" y="122" font-size="9" fill="#6e7681" text-anchor="end">22+ hooks total</text>
48
+ <text x="868" y="137" font-size="9" fill="#6e7681" text-anchor="end">async by default</text>
49
+ <text x="868" y="152" font-size="9" fill="#6e7681" text-anchor="end">zero added latency</text>
50
+ <text x="868" y="167" font-size="9" fill="#6e7681" text-anchor="end">project-configurable</text>
51
+ </svg>
@@ -0,0 +1,42 @@
1
+ <svg viewBox="0 0 900 170" xmlns="http://www.w3.org/2000/svg" font-family="'Segoe UI', system-ui, -apple-system, sans-serif">
2
+ <defs>
3
+ <linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
4
+ <stop offset="0%" style="stop-color:#0d1117"/>
5
+ <stop offset="100%" style="stop-color:#161b22"/>
6
+ </linearGradient>
7
+ <linearGradient id="green" x1="0%" y1="0%" x2="100%" y2="0%">
8
+ <stop offset="0%" style="stop-color:#34d399"/>
9
+ <stop offset="100%" style="stop-color:#059669"/>
10
+ </linearGradient>
11
+ </defs>
12
+ <rect width="900" height="170" fill="url(#bg)" rx="12"/>
13
+ <rect width="900" height="170" fill="none" stroke="#21262d" stroke-width="1" rx="12"/>
14
+
15
+ <!-- Label -->
16
+ <rect x="32" y="20" width="88" height="22" rx="11" fill="#059669" fill-opacity="0.15" stroke="#059669" stroke-opacity="0.4" stroke-width="1"/>
17
+ <text x="76" y="35" font-size="10" fill="#34d399" text-anchor="middle" font-weight="700" letter-spacing="1">INSTALL</text>
18
+
19
+ <text x="32" y="70" font-size="22" font-weight="800" fill="#ffffff">One command. 12 platforms. Any OS.</text>
20
+ <text x="32" y="92" font-size="12" fill="#6e7681">Node.js 18+ · macOS · Linux · Windows · no account · no telemetry</text>
21
+
22
+ <!-- 4 install cards -->
23
+ <rect x="32" y="108" width="192" height="50" rx="7" fill="#161b22" stroke="#059669" stroke-opacity="0.4" stroke-width="1"/>
24
+ <text x="48" y="126" font-size="9" fill="#34d399" font-weight="700">npm (recommended)</text>
25
+ <text x="48" y="142" font-size="10" fill="#e6edf3" font-family="'Courier New', monospace">npx kodelyth-ecc</text>
26
+ <text x="48" y="154" font-size="8" fill="#6e7681">any platform, always latest</text>
27
+
28
+ <rect x="234" y="108" width="192" height="50" rx="7" fill="#161b22" stroke="#2563eb" stroke-opacity="0.4" stroke-width="1"/>
29
+ <text x="250" y="126" font-size="9" fill="#60a5fa" font-weight="700">GitHub (latest commit)</text>
30
+ <text x="250" y="142" font-size="9.5" fill="#e6edf3" font-family="'Courier New', monospace">npx github:sifxprime/...</text>
31
+ <text x="250" y="154" font-size="8" fill="#6e7681">always bleeding edge</text>
32
+
33
+ <rect x="436" y="108" width="192" height="50" rx="7" fill="#161b22" stroke="#a78bfa" stroke-opacity="0.4" stroke-width="1"/>
34
+ <text x="452" y="126" font-size="9" fill="#a78bfa" font-weight="700">curl (macOS / Linux)</text>
35
+ <text x="452" y="142" font-size="9.5" fill="#e6edf3" font-family="'Courier New', monospace">curl -fsSL ... | bash</text>
36
+ <text x="452" y="154" font-size="8" fill="#6e7681">no Node required</text>
37
+
38
+ <rect x="638" y="108" width="192" height="50" rx="7" fill="#161b22" stroke="#f59e0b" stroke-opacity="0.4" stroke-width="1"/>
39
+ <text x="654" y="126" font-size="9" fill="#fbbf24" font-weight="700">MCP Server</text>
40
+ <text x="654" y="142" font-size="9.5" fill="#e6edf3" font-family="'Courier New', monospace">npx kodelyth-ecc mcp</text>
41
+ <text x="654" y="154" font-size="8" fill="#6e7681">Claude Desktop · LangGraph</text>
42
+ </svg>
@@ -0,0 +1,52 @@
1
+ <svg viewBox="0 0 900 185" xmlns="http://www.w3.org/2000/svg" font-family="'Segoe UI', system-ui, -apple-system, sans-serif">
2
+ <defs>
3
+ <linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
4
+ <stop offset="0%" style="stop-color:#0d1117"/>
5
+ <stop offset="100%" style="stop-color:#161b22"/>
6
+ </linearGradient>
7
+ <marker id="arr" markerWidth="7" markerHeight="7" refX="5" refY="3" orient="auto">
8
+ <path d="M0,0 L5,3 L0,6 Z" fill="#34d399" opacity="0.8"/>
9
+ </marker>
10
+ </defs>
11
+ <rect width="900" height="185" fill="url(#bg)" rx="12"/>
12
+ <rect width="900" height="185" fill="none" stroke="#21262d" stroke-width="1" rx="12"/>
13
+
14
+ <!-- Label -->
15
+ <rect x="32" y="20" width="224" height="22" rx="11" fill="#059669" fill-opacity="0.15" stroke="#059669" stroke-opacity="0.4" stroke-width="1"/>
16
+ <text x="144" y="35" font-size="10" fill="#34d399" text-anchor="middle" font-weight="700" letter-spacing="1">COMPOUND LEARNING SYSTEM</text>
17
+
18
+ <text x="32" y="72" font-size="20" font-weight="800" fill="#ffffff">Every correction stacks — Claude matches your style</text>
19
+ <text x="32" y="94" font-size="12" fill="#6e7681">corrections auto-encode · injected next session · 3 layers compound · zero setup needed</text>
20
+
21
+ <!-- Session 1 box -->
22
+ <rect x="32" y="108" width="136" height="64" rx="7" fill="#21262d" stroke="#30363d" stroke-width="1"/>
23
+ <text x="100" y="124" font-size="10" fill="#c9d1d9" text-anchor="middle" font-weight="700">Session 1</text>
24
+ <text x="44" y="138" font-size="9" fill="#6e7681">0 rules loaded</text>
25
+ <text x="44" y="151" font-size="9" fill="#6e7681">every question asked</text>
26
+ <text x="44" y="164" font-size="8" fill="#484f58">fresh install</text>
27
+
28
+ <line x1="171" y1="140" x2="185" y2="140" stroke="#34d399" stroke-width="1.5" marker-end="url(#arr)" opacity="0.7"/>
29
+
30
+ <!-- Session 5 box -->
31
+ <rect x="188" y="108" width="136" height="64" rx="7" fill="#059669" fill-opacity="0.1" stroke="#059669" stroke-opacity="0.35" stroke-width="1"/>
32
+ <text x="256" y="124" font-size="10" fill="#34d399" text-anchor="middle" font-weight="700">Week 2</text>
33
+ <text x="200" y="138" font-size="9" fill="#34d399" opacity="0.85">8 rules active</text>
34
+ <text x="200" y="151" font-size="9" fill="#34d399" opacity="0.85">use pnpm · no var</text>
35
+ <text x="200" y="164" font-size="8" fill="#34d399" opacity="0.6">no emoji · immutable</text>
36
+
37
+ <line x1="327" y1="140" x2="341" y2="140" stroke="#34d399" stroke-width="1.5" marker-end="url(#arr)" opacity="0.7"/>
38
+
39
+ <!-- Month 3 box -->
40
+ <rect x="344" y="108" width="136" height="64" rx="7" fill="#059669" fill-opacity="0.18" stroke="#059669" stroke-opacity="0.5" stroke-width="1"/>
41
+ <text x="412" y="124" font-size="10" fill="#34d399" text-anchor="middle" font-weight="700">Month 3+</text>
42
+ <text x="356" y="138" font-size="9" fill="#34d399" opacity="0.9">20+ rules stacked</text>
43
+ <text x="356" y="151" font-size="9" fill="#34d399" opacity="0.9">like a team member</text>
44
+ <text x="356" y="164" font-size="8" fill="#34d399" opacity="0.7">knows your whole style</text>
45
+
46
+ <!-- Right: 3 memory layers panel -->
47
+ <rect x="498" y="108" width="370" height="64" rx="7" fill="#161b22" stroke="#30363d" stroke-width="1"/>
48
+ <text x="514" y="124" font-size="9" fill="#6e7681" font-weight="600">3 MEMORY LAYERS</text>
49
+ <text x="514" y="139" font-size="9" fill="#a78bfa">Layer 1 · Project Lessons · tasks/lessons.md · per-project rules</text>
50
+ <text x="514" y="152" font-size="9" fill="#60a5fa">Layer 2 · Global BM25 · ~/.kodelyth/memory/ · cross-project recall</text>
51
+ <text x="514" y="165" font-size="9" fill="#34d399">Layer 3 · Intent Routing · 70 specialists · auto-routed every session</text>
52
+ </svg>
@@ -0,0 +1,46 @@
1
+ <svg viewBox="0 0 900 170" xmlns="http://www.w3.org/2000/svg" font-family="'Segoe UI', system-ui, -apple-system, sans-serif">
2
+ <defs>
3
+ <linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
4
+ <stop offset="0%" style="stop-color:#0d1117"/>
5
+ <stop offset="100%" style="stop-color:#161b22"/>
6
+ </linearGradient>
7
+ <marker id="arr" markerWidth="7" markerHeight="7" refX="5" refY="3" orient="auto">
8
+ <path d="M0,0 L5,3 L0,6 Z" fill="#38bdf8" opacity="0.8"/>
9
+ </marker>
10
+ </defs>
11
+ <rect width="900" height="170" fill="url(#bg)" rx="12"/>
12
+ <rect width="900" height="170" fill="none" stroke="#21262d" stroke-width="1" rx="12"/>
13
+
14
+ <!-- Label -->
15
+ <rect x="32" y="20" width="138" height="22" rx="11" fill="#38bdf8" fill-opacity="0.12" stroke="#38bdf8" stroke-opacity="0.4" stroke-width="1"/>
16
+ <text x="101" y="35" font-size="10" fill="#38bdf8" text-anchor="middle" font-weight="700" letter-spacing="1">MCP SERVER v1.7.0</text>
17
+
18
+ <text x="32" y="70" font-size="22" font-weight="800" fill="#ffffff">Universal adapter — any agent framework speaks ECC</text>
19
+ <text x="32" y="92" font-size="12" fill="#6e7681">16 tools · 6 prompts · 365 resources · stdio JSON-RPC · zero telemetry</text>
20
+
21
+ <!-- Center hub -->
22
+ <rect x="340" y="108" width="140" height="48" rx="8" fill="#38bdf8" fill-opacity="0.1" stroke="#38bdf8" stroke-opacity="0.5" stroke-width="1.5"/>
23
+ <text x="410" y="129" font-size="11" fill="#38bdf8" text-anchor="middle" font-weight="800">kodelyth-ecc mcp</text>
24
+ <text x="410" y="145" font-size="8.5" fill="#38bdf8" text-anchor="middle" opacity="0.7">npx kodelyth-ecc mcp</text>
25
+
26
+ <!-- Left consumers -->
27
+ <rect x="32" y="108" width="110" height="22" rx="5" fill="#a78bfa" fill-opacity="0.1" stroke="#a78bfa" stroke-opacity="0.35" stroke-width="1"/>
28
+ <text x="87" y="122" font-size="9" fill="#a78bfa" text-anchor="middle" font-weight="600">Claude Desktop</text>
29
+ <rect x="32" y="136" width="110" height="22" rx="5" fill="#2563eb" fill-opacity="0.1" stroke="#2563eb" stroke-opacity="0.35" stroke-width="1"/>
30
+ <text x="87" y="150" font-size="9" fill="#60a5fa" text-anchor="middle" font-weight="600">LangGraph</text>
31
+
32
+ <line x1="144" y1="119" x2="337" y2="125" stroke="#38bdf8" stroke-width="1" marker-end="url(#arr)" opacity="0.5"/>
33
+ <line x1="144" y1="147" x2="337" y2="140" stroke="#38bdf8" stroke-width="1" marker-end="url(#arr)" opacity="0.5"/>
34
+
35
+ <!-- Right consumers -->
36
+ <rect x="684" y="108" width="110" height="22" rx="5" fill="#059669" fill-opacity="0.1" stroke="#059669" stroke-opacity="0.35" stroke-width="1"/>
37
+ <text x="739" y="122" font-size="9" fill="#34d399" text-anchor="middle" font-weight="600">AutoGen / CrewAI</text>
38
+ <rect x="684" y="136" width="110" height="22" rx="5" fill="#f59e0b" fill-opacity="0.1" stroke="#f59e0b" stroke-opacity="0.35" stroke-width="1"/>
39
+ <text x="739" y="150" font-size="9" fill="#fbbf24" text-anchor="middle" font-weight="600">OpenAI Agents SDK</text>
40
+
41
+ <line x1="483" y1="125" x2="681" y2="119" stroke="#38bdf8" stroke-width="1" marker-end="url(#arr)" opacity="0.5"/>
42
+ <line x1="483" y1="140" x2="681" y2="147" stroke="#38bdf8" stroke-width="1" marker-end="url(#arr)" opacity="0.5"/>
43
+
44
+ <!-- Resource counts below hub -->
45
+ <text x="350" y="164" font-size="8" fill="#6e7681">16 tools · 6 prompts · 365 resources</text>
46
+ </svg>
@@ -0,0 +1,57 @@
1
+ <svg viewBox="0 0 900 175" xmlns="http://www.w3.org/2000/svg" font-family="'Segoe UI', system-ui, -apple-system, sans-serif">
2
+ <defs>
3
+ <linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
4
+ <stop offset="0%" style="stop-color:#0d1117"/>
5
+ <stop offset="100%" style="stop-color:#161b22"/>
6
+ </linearGradient>
7
+ <linearGradient id="green" x1="0%" y1="0%" x2="100%" y2="0%">
8
+ <stop offset="0%" style="stop-color:#34d399"/>
9
+ <stop offset="100%" style="stop-color:#059669"/>
10
+ </linearGradient>
11
+ <marker id="arr" markerWidth="8" markerHeight="8" refX="6" refY="3" orient="auto">
12
+ <path d="M0,0 L6,3 L0,6 Z" fill="#34d399" opacity="0.8"/>
13
+ </marker>
14
+ </defs>
15
+ <rect width="900" height="175" fill="url(#bg)" rx="12"/>
16
+ <rect width="900" height="175" fill="none" stroke="#21262d" stroke-width="1" rx="12"/>
17
+
18
+ <!-- Label — widened to fit text properly -->
19
+ <rect x="32" y="20" width="226" height="22" rx="11" fill="#059669" fill-opacity="0.15" stroke="#059669" stroke-opacity="0.4" stroke-width="1"/>
20
+ <text x="145" y="35" font-size="10" fill="#34d399" text-anchor="middle" font-weight="700" letter-spacing="1">LOCAL SELF-LEARNING MEMORY</text>
21
+
22
+ <text x="32" y="72" font-size="22" font-weight="800" fill="#ffffff">Solve once. Remember forever. Zero cloud.</text>
23
+ <text x="32" y="94" font-size="12" fill="#6e7681">BM25 keyword recall · ~/.kodelyth/memory/ · auto-inject on every session · prompt-cache friendly</text>
24
+
25
+ <!-- 4-box flow -->
26
+ <!-- Box 1: Capture -->
27
+ <rect x="32" y="112" width="140" height="44" rx="7" fill="#059669" fill-opacity="0.12" stroke="#059669" stroke-opacity="0.4" stroke-width="1"/>
28
+ <text x="102" y="130" font-size="10" fill="#34d399" text-anchor="middle" font-weight="700">1 · Capture</text>
29
+ <text x="102" y="145" font-size="9" fill="#34d399" text-anchor="middle" opacity="0.75">Stop hook</text>
30
+ <text x="102" y="156" font-size="9" fill="#34d399" text-anchor="middle" opacity="0.75">you confirm</text>
31
+
32
+ <line x1="175" y1="134" x2="210" y2="134" stroke="#34d399" stroke-width="1.5" marker-end="url(#arr)" opacity="0.7"/>
33
+
34
+ <!-- Box 2: BM25 Store -->
35
+ <rect x="213" y="112" width="152" height="44" rx="7" fill="#2563eb" fill-opacity="0.1" stroke="#2563eb" stroke-opacity="0.35" stroke-width="1"/>
36
+ <text x="289" y="130" font-size="10" fill="#60a5fa" text-anchor="middle" font-weight="700">2 · BM25 Store</text>
37
+ <text x="289" y="145" font-size="9" fill="#60a5fa" text-anchor="middle" opacity="0.75">memories.jsonl</text>
38
+ <text x="289" y="156" font-size="9" fill="#60a5fa" text-anchor="middle" opacity="0.75">zero deps · your disk</text>
39
+
40
+ <line x1="368" y1="134" x2="403" y2="134" stroke="#34d399" stroke-width="1.5" marker-end="url(#arr)" opacity="0.7"/>
41
+
42
+ <!-- Box 3: Auto-Inject — text shortened to fit 152px -->
43
+ <rect x="406" y="112" width="152" height="44" rx="7" fill="#a78bfa" fill-opacity="0.1" stroke="#a78bfa" stroke-opacity="0.35" stroke-width="1"/>
44
+ <text x="482" y="130" font-size="10" fill="#a78bfa" text-anchor="middle" font-weight="700">3 · Auto-Inject</text>
45
+ <text x="482" y="145" font-size="9" fill="#a78bfa" text-anchor="middle" opacity="0.75">SessionStart hook</text>
46
+ <text x="482" y="156" font-size="9" fill="#a78bfa" text-anchor="middle" opacity="0.75">before AI responds</text>
47
+
48
+ <line x1="561" y1="134" x2="596" y2="134" stroke="#34d399" stroke-width="1.5" marker-end="url(#arr)" opacity="0.7"/>
49
+
50
+ <!-- Box 4: Result -->
51
+ <rect x="599" y="112" width="152" height="44" rx="7" fill="#f59e0b" fill-opacity="0.1" stroke="#f59e0b" stroke-opacity="0.35" stroke-width="1"/>
52
+ <text x="675" y="130" font-size="10" fill="#fbbf24" text-anchor="middle" font-weight="700">4 · 10× faster</text>
53
+ <text x="675" y="145" font-size="9" fill="#fbbf24" text-anchor="middle" opacity="0.75">past solution</text>
54
+ <text x="675" y="156" font-size="9" fill="#fbbf24" text-anchor="middle" opacity="0.75">surfaced in 3 s</text>
55
+
56
+ <text x="868" y="156" font-size="9" fill="#6e7681" text-anchor="end">cost: 10% on cached tokens (Anthropic / OpenAI)</text>
57
+ </svg>