codymaster 4.6.0 → 4.8.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 (127) hide show
  1. package/CHANGELOG.md +19 -1
  2. package/README.md +80 -30
  3. package/dist/browse-server.js +251 -0
  4. package/dist/cli/command-registry.js +26 -0
  5. package/dist/cli/commands/agent.js +120 -0
  6. package/dist/cli/commands/dashboard.js +93 -0
  7. package/dist/cli/commands/design-studio.js +111 -0
  8. package/dist/cli/commands/distro.js +25 -0
  9. package/dist/cli/commands/engineering.js +488 -0
  10. package/dist/cli/commands/project.js +324 -0
  11. package/dist/cli/commands/skill-chain.js +269 -0
  12. package/dist/cli/commands/system.js +89 -0
  13. package/dist/cli/commands/task.js +254 -0
  14. package/dist/cli/update-check.js +83 -0
  15. package/dist/cm-config.js +110 -0
  16. package/dist/cm-suggest.js +77 -0
  17. package/dist/distro-validate.js +54 -0
  18. package/dist/guardian-core.js +74 -0
  19. package/dist/index.js +36 -2759
  20. package/dist/mcp-context-server.js +60 -1
  21. package/dist/mcp-skills-tools.js +81 -0
  22. package/dist/retro-summary.js +70 -0
  23. package/dist/second-opinion-providers.js +79 -0
  24. package/dist/sprint-pipeline.js +228 -0
  25. package/dist/storage-backend.js +5 -60
  26. package/dist/utils/cli-utils.js +76 -0
  27. package/dist/utils/skill-utils.js +32 -0
  28. package/install.sh +274 -50
  29. package/package.json +16 -5
  30. package/scripts/build-skills.mjs +51 -0
  31. package/scripts/gate-0-repo-hygiene.js +75 -0
  32. package/scripts/postinstall.js +55 -0
  33. package/scripts/security-scan.js +1 -1
  34. package/scripts/validate-skills.mjs +42 -0
  35. package/scripts/viking-demo.ts +105 -0
  36. package/skills/CLAUDE.md +2 -2
  37. package/skills/cm-ads-tracker/SKILL.md +3 -6
  38. package/skills/cm-browse/SKILL.md +28 -0
  39. package/skills/cm-conductor-worktrees/SKILL.md +24 -0
  40. package/skills/cm-content-factory/SKILL.md +1 -1
  41. package/skills/cm-content-factory/landing/docs/content/changelog.md +36 -0
  42. package/skills/cm-content-factory/landing/docs/content/deployment.md +46 -0
  43. package/skills/cm-content-factory/landing/docs/content/execution-flow.md +67 -0
  44. package/skills/cm-content-factory/landing/docs/content/openspace.md +27 -0
  45. package/skills/cm-content-factory/landing/docs/content/openviking.md +33 -0
  46. package/skills/cm-content-factory/landing/docs/content/use-cases.md +26 -0
  47. package/skills/cm-content-factory/landing/docs/content/v5-intro.md +28 -0
  48. package/skills/cm-content-factory/landing/docs/index.html +240 -0
  49. package/skills/cm-content-factory/landing/index.html +99 -99
  50. package/skills/cm-content-factory/landing/script.js +42 -0
  51. package/skills/cm-content-factory/landing/translations.js +400 -400
  52. package/skills/cm-design-studio/SKILL.md +30 -0
  53. package/skills/cm-ecosystem-roadmap/SKILL.md +11 -0
  54. package/skills/cm-engineering-meta/SKILL.md +69 -0
  55. package/skills/cm-growth-hacking/SKILL.md +1 -12
  56. package/skills/cm-guardian-runtime/SKILL.md +22 -0
  57. package/skills/cm-mcp-engineering/SKILL.md +18 -0
  58. package/skills/cm-notebooklm/SKILL.md +1 -17
  59. package/skills/cm-post-deploy-canary/SKILL.md +18 -0
  60. package/skills/cm-qa-visual-cli/SKILL.md +18 -0
  61. package/skills/cm-retro-cli/SKILL.md +19 -0
  62. package/skills/cm-second-opinion-cli/SKILL.md +19 -0
  63. package/skills/cm-secret-shield/SKILL.md +2 -2
  64. package/skills/cm-sprint-bus/SKILL.md +29 -0
  65. package/skills/cm-tdd/SKILL.md +61 -74
  66. package/skills/profiles/README.md +21 -0
  67. package/skills/profiles/core.txt +23 -0
  68. package/skills/profiles/design.txt +6 -0
  69. package/skills/profiles/full.txt +58 -0
  70. package/skills/profiles/growth.txt +10 -0
  71. package/skills/profiles/knowledge.txt +7 -0
  72. package/scripts/test-gemini.js +0 -13
  73. package/skills/cm-frappe-agent/SKILL.md +0 -134
  74. package/skills/cm-frappe-agent/agents/doctype-architect.md +0 -596
  75. package/skills/cm-frappe-agent/agents/erpnext-customizer.md +0 -643
  76. package/skills/cm-frappe-agent/agents/frappe-backend.md +0 -814
  77. package/skills/cm-frappe-agent/agents/frappe-custom-frontend.md +0 -557
  78. package/skills/cm-frappe-agent/agents/frappe-debugger.md +0 -625
  79. package/skills/cm-frappe-agent/agents/frappe-fixer.md +0 -275
  80. package/skills/cm-frappe-agent/agents/frappe-frontend.md +0 -660
  81. package/skills/cm-frappe-agent/agents/frappe-installer.md +0 -158
  82. package/skills/cm-frappe-agent/agents/frappe-performance.md +0 -307
  83. package/skills/cm-frappe-agent/agents/frappe-planner.md +0 -419
  84. package/skills/cm-frappe-agent/agents/frappe-remote-ops.md +0 -153
  85. package/skills/cm-frappe-agent/agents/github-workflow.md +0 -286
  86. package/skills/cm-frappe-agent/commands/frappe-app.md +0 -351
  87. package/skills/cm-frappe-agent/commands/frappe-backend.md +0 -162
  88. package/skills/cm-frappe-agent/commands/frappe-bench.md +0 -254
  89. package/skills/cm-frappe-agent/commands/frappe-debug.md +0 -263
  90. package/skills/cm-frappe-agent/commands/frappe-doctype-create.md +0 -272
  91. package/skills/cm-frappe-agent/commands/frappe-doctype-field.md +0 -310
  92. package/skills/cm-frappe-agent/commands/frappe-erpnext.md +0 -210
  93. package/skills/cm-frappe-agent/commands/frappe-fix.md +0 -59
  94. package/skills/cm-frappe-agent/commands/frappe-frontend.md +0 -210
  95. package/skills/cm-frappe-agent/commands/frappe-fullstack.md +0 -243
  96. package/skills/cm-frappe-agent/commands/frappe-github.md +0 -57
  97. package/skills/cm-frappe-agent/commands/frappe-install.md +0 -52
  98. package/skills/cm-frappe-agent/commands/frappe-plan.md +0 -442
  99. package/skills/cm-frappe-agent/commands/frappe-remote.md +0 -58
  100. package/skills/cm-frappe-agent/commands/frappe-test.md +0 -356
  101. package/skills/cm-frappe-agent/docs/README.md +0 -51
  102. package/skills/cm-frappe-agent/docs/agents-catalog.md +0 -113
  103. package/skills/cm-frappe-agent/docs/architecture.md +0 -149
  104. package/skills/cm-frappe-agent/docs/commands-catalog.md +0 -82
  105. package/skills/cm-frappe-agent/docs/resources-catalog.md +0 -66
  106. package/skills/cm-frappe-agent/docs/sitemap-urls.txt +0 -52
  107. package/skills/cm-frappe-agent/docs/sitemap.md +0 -81
  108. package/skills/cm-frappe-agent/docs/sop/user-guide.md +0 -178
  109. package/skills/cm-frappe-agent/docs/sop/vibe-coding-guide.md +0 -122
  110. package/skills/cm-frappe-agent/resources/7-layer-architecture.md +0 -985
  111. package/skills/cm-frappe-agent/resources/bench_commands.md +0 -73
  112. package/skills/cm-frappe-agent/resources/code-patterns-guide.md +0 -948
  113. package/skills/cm-frappe-agent/resources/common_pitfalls.md +0 -266
  114. package/skills/cm-frappe-agent/resources/doctype-registry.md +0 -158
  115. package/skills/cm-frappe-agent/resources/installation-guide.md +0 -289
  116. package/skills/cm-frappe-agent/resources/rest-api-patterns.md +0 -182
  117. package/skills/cm-frappe-agent/resources/scaffold_checklist.md +0 -82
  118. package/skills/cm-frappe-agent/resources/upgrade_patterns.md +0 -113
  119. package/skills/cm-frappe-agent/resources/web-form-patterns.md +0 -252
  120. package/skills/cm-frappe-agent/skills/bench-commands/SKILL.md +0 -621
  121. package/skills/cm-frappe-agent/skills/client-scripts/SKILL.md +0 -642
  122. package/skills/cm-frappe-agent/skills/doctype-patterns/SKILL.md +0 -576
  123. package/skills/cm-frappe-agent/skills/frappe-api/SKILL.md +0 -740
  124. package/skills/cm-frappe-agent/skills/remote-operations/SKILL.md +0 -47
  125. package/skills/cm-frappe-agent/skills/server-scripts/SKILL.md +0 -608
  126. package/skills/cm-frappe-agent/skills/web-forms/SKILL.md +0 -46
  127. package/skills/frappe-app-builder.zip +0 -0
@@ -0,0 +1,27 @@
1
+ # OpenSpace Autonomous Workspace
2
+
3
+ **OpenSpace** is the execution engine of the Neural Spine architecture. It elevates your AI from being merely a static text-generator to an active, real-time engineering participant.
4
+
5
+ ## The Execution Gap
6
+
7
+ Most AI setups lack operational agency. Once an LLM outputs code, a human developer has to copy, paste, save, format, compile, and run tests. This process introduces massive friction and manual error into what should be an automated loop.
8
+
9
+ ## Enter OpenSpace
10
+
11
+ OpenSpace surrounds the agent with a secure execution container (sandbox) tightly coupled with your source control and operational tools.
12
+
13
+ ### Key Capabilities
14
+
15
+ - **Command Line Autonomy**: The agent can run raw terminal commands (`npm i`, `pytest`, `cargo run`) to verify that the code it generates compiles and passes logic tests.
16
+ - **Visual Self-Correction**: Using Playwright/Puppeteer bindings, OpenSpace can take screenshots of running frontends, parse the UI using Vision models, and autonomously adjust CSS alignments or missing padding without human intervention.
17
+ - **The Secret Shield**: OpenSpace filters shell execution to prevent agents from inadvertently deleting local databases, exposing secrets (via `.env` blockades), or committing raw tokens to GitHub.
18
+
19
+ ## Anatomy of a Session
20
+
21
+ When an agent is initialized in OpenSpace, it acts as a headless developer:
22
+ 1. It pulls semantic context from **[OpenViking](#openviking)**.
23
+ 2. It drafts a solution to isolated branch files.
24
+ 3. It spawns an OpenSpace terminal subprocess to run Linters and Unit Tests.
25
+ 4. If a test fails, it captures the `stderr` output within OpenSpace and self-heals the code until all checks pass.
26
+
27
+ This loop ensures that the code pushed to you is robust, tested, and fully autonomous.
@@ -0,0 +1,33 @@
1
+ # OpenViking Semantic Memory
2
+
3
+ **OpenViking** is CodyMaster's high-performance memory backend. It replaces chaotic keyword-based grep searches and blind RAG chunking with a highly structured Semantic Vector Engine.
4
+
5
+ ## The Problem with Standard AI Search
6
+
7
+ Typical AI coding agents use raw text searches or simple AST parsing limits to find context. This causes **Code Amnesia**:
8
+ - The agent forgets standard component library practices.
9
+ - The agent invents (hallucinates) missing variables.
10
+ - Scaling to million-line codebases overflows the token limit, crashing the session.
11
+
12
+ ## The OpenViking Solution
13
+
14
+ OpenViking introduces **L0/L1/L2 Progressive Summarization** coupled with SQLite FTS5 and Vector Embeddings.
15
+
16
+ ### How it works:
17
+
18
+ 1. **L0 (Skeleton Index)**: A fast map of the entire directory structure, capturing file names, exports, and imports.
19
+ 2. **L1 (Symbol Index)**: Extracts function signatures, class interfaces, and variable definitions without the bulky implementation details.
20
+ 3. **L2 (Full Context)**: The heavy vector embeddings (using local or API-driven embedding models) that store actual logic and edge cases.
21
+
22
+ When the agent attempts to refactor a component, OpenViking performs a semantic lookup on L1 and L2 databases, pulling *only* the exact functions and files impacted by the change.
23
+
24
+ ## Native Integration
25
+
26
+ OpenViking works autonomously in the background. When CodyMaster initializes in a project, it creates a `.viking` directory (ignored via `.gitignore`) mapped entirely to a rapid local SQLite store.
27
+
28
+ ```bash
29
+ # Force an on-demand re-index of the OpenViking graph
30
+ cody-master viking index --force
31
+ ```
32
+
33
+ By ensuring agents have a complete layout of the system at all times, OpenViking single-handedly eliminates structural regressions in mature projects.
@@ -0,0 +1,26 @@
1
+ # Neural Spine Use Cases
2
+
3
+ The true power of **CodyMaster v5** is fully realized when integrating semantic memory and autonomous execution together.
4
+
5
+ Here are the optimal scenarios where the Founders Edition architecture outperforms standard tools.
6
+
7
+ ## 1. Full-Stack Monolithic Refactoring
8
+ *The Challenge*: Changing an authentication provider or modifying deeply nested CSS logic across a massive 500,000-line React/Node.js monolith usually incites dozens of cascading regressions.
9
+ *The Spine Solution*:
10
+ - **OpenViking** maps exactly where the legacy authentication logic touches every API router.
11
+ - **OpenSpace** attempts the refactor in an isolated branch and continuously runs the test suite.
12
+ - The outcome is a tightly controlled refactoring PR that didn't miss a single edge case.
13
+
14
+ ## 2. Zero-Drop Multilingual Deployments
15
+ *The Challenge*: Localizing an application across EN, VI, ZH, and RU requires massive JSON string coordination, structural UI checks (text length variances), and routing configuration.
16
+ *The Spine Solution*:
17
+ - A translation skill is dispatched across multiple parallel agents.
18
+ - Instead of manual checks, OpenSpace spins up a staging server and runs Visual Regression Tests using Vision models to verify that the Russian text doesn't break button layouts.
19
+ - It automatically shifts paddings based on the visual output before committing.
20
+
21
+ ## 3. Immediate Tech-Debt Cleanup
22
+ *The Challenge*: Teams accrue dead code, unused imports, and unoptimized queries over years of product pivots.
23
+ *The Spine Solution*:
24
+ - An agent equipped with the `cm-clean-code` skill natively runs over the codebase at midnight via cron job.
25
+ - OpenSpace runs AST (Abstract Syntax Tree) evaluations against OpenViking indexing to guarantee no unused code is actually being referenced dynamically.
26
+ - The agent creates a PR each morning with a detailed breakdown of the removed complexity and the token savings achieved.
@@ -0,0 +1,28 @@
1
+ # The Neural Spine Architecture
2
+
3
+ Welcome to **CodyMaster v5**, the first Senior AI-Native Engineering Workspace designed for complete autonomous development.
4
+
5
+ While standard AI coding assistants excel at generating functions and isolated scripts, they lack the systemic awareness required to build, test, and ship complete applications securely. **CodyMaster v5** introduces the "Neural Spine" architecture to solve this.
6
+
7
+ ## Why a "Spine"?
8
+
9
+ A spine connects the brain to the nervous system, passing critical signals instantly and maintaining the structure of the body. In CodyMaster v5, the **Neural Spine** represents the underlying infrastructure that connects your AI agents to the real world:
10
+
11
+ - **Memory (OpenViking)**: Deep semantic retrieval and code comprehension spanning thousands of files.
12
+ - **Execution (OpenSpace)**: A sandboxed, secure environment for agents to run bash commands, databases, and testing suites.
13
+ - **State (Context Bus)**: A fluid mechanism to exchange parameters between specialized subagents without overflowing token limits.
14
+
15
+ ## Core Capabilities
16
+
17
+ 1. **Eliminating Context Drift**: Your agents no longer guess your architecture. They retrieve the exact semantic structure directly from OpenViking.
18
+ 2. **Zero-Regression Shipping**: OpenSpace guarantees that AI-generated code is thoroughly tested (TDD-first) via automated gates before reaching production.
19
+ 3. **Multi-Agent Orchestration**: Outsource frontend, backend, and security audits to specialized subagents running in parallel.
20
+
21
+ ## Getting Started
22
+
23
+ Explore the backbone technologies driving this paradigm shift:
24
+
25
+ - [Explore OpenViking Memory](#openviking)
26
+ - [Understand OpenSpace Containers](#openspace)
27
+ - [Real-world Use Cases](#use-cases)
28
+ - [Deploy the Framework](#deployment)
@@ -0,0 +1,240 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="UTF-8" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <title>Documentation | CodyMaster v5 Neural Spine</title>
8
+ <!-- Fonts -->
9
+ <link rel="preconnect" href="https://fonts.googleapis.com" />
10
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
11
+ <link
12
+ href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=Inter:wght@400;500;600&display=swap"
13
+ rel="stylesheet" />
14
+ <!-- Markdown & Highlighting -->
15
+ <script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
16
+ <link href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-tomorrow.min.css" rel="stylesheet" />
17
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/prism.min.js"></script>
18
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-javascript.min.js"></script>
19
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-json.min.js"></script>
20
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-markdown.min.js"></script>
21
+ <!-- Icons -->
22
+ <script src="https://unpkg.com/lucide@latest/dist/umd/lucide.js" defer></script>
23
+
24
+ <!-- Mermaid diagrams -->
25
+ <script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
26
+ <script>mermaid.initialize({startOnLoad: false, theme: 'dark'});</script>
27
+
28
+ <style>
29
+ :root {
30
+ --bg: #050505;
31
+ --surface: #0a0a0a;
32
+ --border: rgba(255, 255, 255, 0.08);
33
+ --text: #e0e0e0;
34
+ --text-muted: #999;
35
+ --accent: #3b82f6;
36
+ --nav-width: 280px;
37
+ }
38
+
39
+ * {
40
+ margin: 0;
41
+ padding: 0;
42
+ box-sizing: border-box;
43
+ }
44
+
45
+ body {
46
+ font-family: 'Inter', sans-serif;
47
+ background: var(--bg);
48
+ color: var(--text);
49
+ line-height: 1.6;
50
+ overflow-x: hidden;
51
+ }
52
+
53
+ h1, h2, h3, h4 {
54
+ font-family: 'Plus Jakarta Sans', sans-serif;
55
+ color: #fff;
56
+ margin-bottom: 1rem;
57
+ }
58
+
59
+ /* Layout */
60
+ .docs-layout {
61
+ display: flex;
62
+ min-height: 100vh;
63
+ }
64
+
65
+ /* Sidebar */
66
+ .sidebar {
67
+ width: var(--nav-width);
68
+ background: var(--surface);
69
+ border-right: 1px border var(--border);
70
+ padding: 2rem 1.5rem;
71
+ position: fixed;
72
+ height: 100vh;
73
+ overflow-y: auto;
74
+ backdrop-filter: blur(10px);
75
+ }
76
+
77
+ .logo {
78
+ display: flex;
79
+ align-items: center;
80
+ gap: 10px;
81
+ font-weight: 700;
82
+ font-size: 1.25rem;
83
+ color: #fff;
84
+ text-decoration: none;
85
+ margin-bottom: 2.5rem;
86
+ font-family: 'Plus Jakarta Sans', sans-serif;
87
+ }
88
+
89
+ .nav-group {
90
+ margin-bottom: 2rem;
91
+ }
92
+
93
+ .nav-label {
94
+ font-size: 0.75rem;
95
+ text-transform: uppercase;
96
+ letter-spacing: 0.05em;
97
+ color: var(--text-muted);
98
+ margin-bottom: 0.75rem;
99
+ padding-left: 0.5rem;
100
+ }
101
+
102
+ .nav-link {
103
+ display: block;
104
+ padding: 0.6rem 0.75rem;
105
+ color: var(--text-muted);
106
+ text-decoration: none;
107
+ border-radius: 8px;
108
+ font-size: 0.95rem;
109
+ transition: all 0.2s;
110
+ margin-bottom: 0.2rem;
111
+ }
112
+
113
+ .nav-link:hover, .nav-link.active {
114
+ color: #fff;
115
+ background: rgba(255, 255, 255, 0.05);
116
+ }
117
+
118
+ .nav-link.active {
119
+ color: var(--accent);
120
+ font-weight: 500;
121
+ }
122
+
123
+ /* Main Content */
124
+ .content {
125
+ margin-left: var(--nav-width);
126
+ flex: 1;
127
+ padding: 4rem 6rem;
128
+ max-width: 1000px;
129
+ animation: fadeIn 0.5s ease;
130
+ }
131
+
132
+ @keyframes fadeIn {
133
+ from { opacity: 0; transform: translateY(10px); }
134
+ to { opacity: 1; transform: translateY(0); }
135
+ }
136
+
137
+ /* Markdown Styles */
138
+ .markdown-body h1 { font-size: 2.5rem; margin-bottom: 1.5rem; }
139
+ .markdown-body h2 { font-size: 1.75rem; margin-top: 2.5rem; border-bottom: 1px solid var(--border); padding-bottom: 0.5rem; }
140
+ .markdown-body p { margin-bottom: 1.25rem; font-size: 1.05rem; }
141
+ .markdown-body ul, .markdown-body ol { margin-bottom: 1.25rem; padding-left: 1.5rem; }
142
+ .markdown-body li { margin-bottom: 0.5rem; }
143
+ .markdown-body code { background: rgba(255,255,255,0.05); padding: 0.2rem 0.4rem; border-radius: 4px; font-size: 0.9em; }
144
+ .markdown-body pre { margin-bottom: 1.5rem; padding: 1rem; border-radius: 12px; background: #111 !important; border: 1px solid var(--border); }
145
+ .markdown-body blockquote { border-left: 4px solid var(--accent); padding-left: 1.5rem; font-style: italic; color: var(--text-muted); margin: 2rem 0; }
146
+
147
+ /* Mobile */
148
+ @media (max-width: 900px) {
149
+ .sidebar { transform: translateX(-100%); }
150
+ .content { margin-left: 0; padding: 2rem; }
151
+ }
152
+
153
+ </style>
154
+ </head>
155
+
156
+ <body>
157
+ <div class="docs-layout">
158
+ <aside class="sidebar">
159
+ <a href="../" class="logo">
160
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"
161
+ stroke-linecap="round" stroke-linejoin="round">
162
+ <path d="M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5" />
163
+ </svg>
164
+ CodyMaster v5
165
+ </a>
166
+
167
+ <div class="nav-group">
168
+ <p class="nav-label">Core Architecture</p>
169
+ <a href="#v5-intro" class="nav-link active" onclick="loadDoc('v5-intro')">The Neural Spine</a>
170
+ <a href="#changelog" class="nav-link" onclick="loadDoc('changelog')">What's New in v5</a>
171
+ <a href="#execution-flow" class="nav-link" onclick="loadDoc('execution-flow')">Execution Flow</a>
172
+ <a href="#openviking" class="nav-link" onclick="loadDoc('openviking')">OpenViking Memory</a>
173
+ <a href="#openspace" class="nav-link" onclick="loadDoc('openspace')">OpenSpace Workspace</a>
174
+ </div>
175
+
176
+ <div class="nav-group">
177
+ <p class="nav-label">Engineering Hub</p>
178
+ <a href="#use-cases" class="nav-link" onclick="loadDoc('use-cases')">Use Cases</a>
179
+ <a href="#deployment" class="nav-link" onclick="loadDoc('deployment')">Deployment Guide</a>
180
+ </div>
181
+
182
+ <div style="margin-top:auto; padding-top: 2rem;">
183
+ <a href="../" class="nav-link"><i data-lucide="arrow-left" style="width:14px;height:14px;vertical-align:middle;margin-right:8px;"></i> Back to Home</a>
184
+ </div>
185
+ </aside>
186
+
187
+ <main class="content">
188
+ <div id="doc-container" class="markdown-body">
189
+ Loading documentation...
190
+ </div>
191
+ </main>
192
+ </div>
193
+
194
+ <script>
195
+ async function loadDoc(docId) {
196
+ const container = document.getElementById('doc-container');
197
+ const links = document.querySelectorAll('.nav-link');
198
+
199
+ links.forEach(link => {
200
+ link.classList.toggle('active', link.getAttribute('href') === `#${docId}`);
201
+ });
202
+
203
+ try {
204
+ const response = await fetch(`content/${docId}.md`);
205
+ if (!response.ok) throw new Error('Document not found');
206
+ const text = await response.text();
207
+ container.innerHTML = marked.parse(text);
208
+
209
+ // Trigger Lucide
210
+ if (window.lucide) {
211
+ lucide.createIcons();
212
+ }
213
+
214
+ // Trigger Prism
215
+ Prism.highlightAll();
216
+
217
+ // Trigger Mermaid
218
+ document.querySelectorAll('code.language-mermaid').forEach((block) => {
219
+ const parent = block.parentElement;
220
+ const containerDiv = document.createElement('div');
221
+ containerDiv.className = 'mermaid';
222
+ containerDiv.textContent = block.textContent;
223
+ parent.parentElement.replaceChild(containerDiv, parent);
224
+ });
225
+ mermaid.init(undefined, document.querySelectorAll('.mermaid'));
226
+
227
+ } catch (err) {
228
+ container.innerHTML = `<h1>404</h1><p>The document "${docId}" could not be found.</p>`;
229
+ }
230
+ }
231
+
232
+ // Initial load
233
+ window.onload = () => {
234
+ const hash = window.location.hash.substring(1) || 'v5-intro';
235
+ loadDoc(hash);
236
+ }
237
+ </script>
238
+ </body>
239
+
240
+ </html>