@vib3code/sdk 2.0.1 → 2.0.3-canary.75a3290

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 (136) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/DOCS/AGENT_HARNESS_ARCHITECTURE.md +243 -0
  3. package/DOCS/CLI_ONBOARDING.md +1 -1
  4. package/DOCS/CROSS_SITE_DESIGN_PATTERNS.md +117 -0
  5. package/DOCS/EPIC_SCROLL_EVENTS.md +773 -0
  6. package/DOCS/HANDOFF_LANDING_PAGE.md +154 -0
  7. package/DOCS/HANDOFF_SDK_DEVELOPMENT.md +493 -0
  8. package/DOCS/MULTIVIZ_CHOREOGRAPHY_PATTERNS.md +937 -0
  9. package/DOCS/PRODUCT_STRATEGY.md +63 -0
  10. package/DOCS/README.md +103 -0
  11. package/DOCS/REFERENCE_SCROLL_ANALYSIS.md +97 -0
  12. package/DOCS/ROADMAP.md +111 -0
  13. package/DOCS/SCROLL_TIMELINE_v3.md +269 -0
  14. package/DOCS/SITE_REFACTOR_PLAN.md +100 -0
  15. package/DOCS/STATUS.md +24 -0
  16. package/DOCS/SYSTEM_INVENTORY.md +33 -30
  17. package/DOCS/VISUAL_ANALYSIS_CLICKERSS.md +85 -0
  18. package/DOCS/VISUAL_ANALYSIS_FACETAD.md +133 -0
  19. package/DOCS/VISUAL_ANALYSIS_SIMONE.md +95 -0
  20. package/DOCS/VISUAL_ANALYSIS_TABLESIDE.md +86 -0
  21. package/DOCS/{BLUEPRINT_EXECUTION_PLAN_2026-01-07.md → archive/BLUEPRINT_EXECUTION_PLAN_2026-01-07.md} +1 -1
  22. package/DOCS/{DEV_TRACK_ANALYSIS.md → archive/DEV_TRACK_ANALYSIS.md} +3 -0
  23. package/DOCS/{SYSTEM_AUDIT_2026-01-30.md → archive/SYSTEM_AUDIT_2026-01-30.md} +3 -0
  24. package/DOCS/{DEV_TRACK_SESSION_2026-01-31.md → dev-tracks/DEV_TRACK_SESSION_2026-01-31.md} +1 -1
  25. package/DOCS/dev-tracks/DEV_TRACK_SESSION_2026-02-06.md +231 -0
  26. package/DOCS/dev-tracks/DEV_TRACK_SESSION_2026-02-13.md +127 -0
  27. package/DOCS/dev-tracks/DEV_TRACK_SESSION_2026-02-15.md +142 -0
  28. package/DOCS/dev-tracks/README.md +10 -0
  29. package/README.md +26 -13
  30. package/cpp/CMakeLists.txt +236 -0
  31. package/cpp/bindings/embind.cpp +269 -0
  32. package/cpp/build.sh +129 -0
  33. package/cpp/geometry/Crystal.cpp +103 -0
  34. package/cpp/geometry/Fractal.cpp +136 -0
  35. package/cpp/geometry/GeometryGenerator.cpp +262 -0
  36. package/cpp/geometry/KleinBottle.cpp +71 -0
  37. package/cpp/geometry/Sphere.cpp +134 -0
  38. package/cpp/geometry/Tesseract.cpp +94 -0
  39. package/cpp/geometry/Tetrahedron.cpp +83 -0
  40. package/cpp/geometry/Torus.cpp +65 -0
  41. package/cpp/geometry/WarpFunctions.cpp +238 -0
  42. package/cpp/geometry/Wave.cpp +85 -0
  43. package/cpp/include/vib3_ffi.h +238 -0
  44. package/cpp/math/Mat4x4.cpp +409 -0
  45. package/cpp/math/Mat4x4.hpp +209 -0
  46. package/cpp/math/Projection.cpp +142 -0
  47. package/cpp/math/Projection.hpp +148 -0
  48. package/cpp/math/Rotor4D.cpp +322 -0
  49. package/cpp/math/Rotor4D.hpp +204 -0
  50. package/cpp/math/Vec4.cpp +303 -0
  51. package/cpp/math/Vec4.hpp +225 -0
  52. package/cpp/src/vib3_ffi.cpp +607 -0
  53. package/cpp/tests/Geometry_test.cpp +213 -0
  54. package/cpp/tests/Mat4x4_test.cpp +494 -0
  55. package/cpp/tests/Projection_test.cpp +298 -0
  56. package/cpp/tests/Rotor4D_test.cpp +423 -0
  57. package/cpp/tests/Vec4_test.cpp +489 -0
  58. package/package.json +40 -27
  59. package/src/agent/index.js +1 -3
  60. package/src/agent/mcp/MCPServer.js +918 -0
  61. package/src/agent/mcp/index.js +1 -1
  62. package/src/agent/mcp/stdio-server.js +264 -0
  63. package/src/agent/mcp/tools.js +454 -0
  64. package/src/cli/index.js +374 -44
  65. package/src/core/CanvasManager.js +97 -204
  66. package/src/core/ErrorReporter.js +1 -1
  67. package/src/core/Parameters.js +1 -1
  68. package/src/core/VIB3Engine.js +93 -4
  69. package/src/core/VitalitySystem.js +53 -0
  70. package/src/core/index.js +18 -0
  71. package/src/core/renderers/FacetedRendererAdapter.js +10 -9
  72. package/src/core/renderers/HolographicRendererAdapter.js +13 -9
  73. package/src/core/renderers/QuantumRendererAdapter.js +11 -7
  74. package/src/creative/AestheticMapper.js +628 -0
  75. package/src/creative/ChoreographyPlayer.js +481 -0
  76. package/src/creative/index.js +11 -0
  77. package/src/export/TradingCardManager.js +3 -4
  78. package/src/export/index.js +11 -1
  79. package/src/faceted/FacetedSystem.js +241 -388
  80. package/src/holograms/HolographicVisualizer.js +29 -12
  81. package/src/holograms/RealHolographicSystem.js +194 -43
  82. package/src/math/index.js +7 -7
  83. package/src/polychora/PolychoraSystem.js +77 -0
  84. package/src/quantum/QuantumEngine.js +103 -66
  85. package/src/quantum/QuantumVisualizer.js +7 -2
  86. package/src/reactivity/index.js +3 -5
  87. package/src/render/LayerPresetManager.js +372 -0
  88. package/src/render/LayerReactivityBridge.js +344 -0
  89. package/src/render/LayerRelationshipGraph.js +610 -0
  90. package/src/render/MultiCanvasBridge.js +148 -25
  91. package/src/render/UnifiedRenderBridge.js +3 -0
  92. package/src/render/index.js +27 -2
  93. package/src/scene/index.js +4 -4
  94. package/src/shaders/faceted/faceted.frag.glsl +220 -80
  95. package/src/shaders/faceted/faceted.frag.wgsl +138 -97
  96. package/src/shaders/holographic/holographic.frag.glsl +28 -9
  97. package/src/shaders/holographic/holographic.frag.wgsl +107 -38
  98. package/src/shaders/quantum/quantum.frag.glsl +1 -0
  99. package/src/shaders/quantum/quantum.frag.wgsl +1 -1
  100. package/src/testing/ParallelTestFramework.js +2 -2
  101. package/src/viewer/GalleryUI.js +17 -0
  102. package/src/viewer/ViewerPortal.js +2 -2
  103. package/src/viewer/index.js +1 -1
  104. package/tools/headless-renderer.js +258 -0
  105. package/tools/shader-sync-verify.js +8 -4
  106. package/tools/site-analysis/all-reports.json +32 -0
  107. package/tools/site-analysis/combined-analysis.md +50 -0
  108. package/tools/site-analyzer.mjs +779 -0
  109. package/tools/visual-catalog/capture.js +276 -0
  110. package/tools/visual-catalog/composite.js +138 -0
  111. package/types/adaptive-sdk.d.ts +204 -5
  112. package/types/agent/cli.d.ts +78 -0
  113. package/types/agent/index.d.ts +18 -0
  114. package/types/agent/mcp.d.ts +87 -0
  115. package/types/agent/telemetry.d.ts +190 -0
  116. package/types/core/VIB3Engine.d.ts +26 -0
  117. package/types/core/index.d.ts +261 -0
  118. package/types/creative/AestheticMapper.d.ts +72 -0
  119. package/types/creative/ChoreographyPlayer.d.ts +96 -0
  120. package/types/creative/index.d.ts +17 -0
  121. package/types/export/index.d.ts +243 -0
  122. package/types/geometry/index.d.ts +164 -0
  123. package/types/math/index.d.ts +214 -0
  124. package/types/render/LayerPresetManager.d.ts +78 -0
  125. package/types/render/LayerReactivityBridge.d.ts +85 -0
  126. package/types/render/LayerRelationshipGraph.d.ts +174 -0
  127. package/types/render/index.d.ts +3 -0
  128. package/types/scene/index.d.ts +204 -0
  129. package/types/systems/index.d.ts +244 -0
  130. package/types/variations/index.d.ts +62 -0
  131. package/types/viewer/index.d.ts +225 -0
  132. /package/DOCS/{DEV_TRACK_PLAN_2026-01-07.md → archive/DEV_TRACK_PLAN_2026-01-07.md} +0 -0
  133. /package/DOCS/{SESSION_014_PLAN.md → archive/SESSION_014_PLAN.md} +0 -0
  134. /package/DOCS/{SESSION_LOG_2026-01-07.md → archive/SESSION_LOG_2026-01-07.md} +0 -0
  135. /package/DOCS/{STRATEGIC_BLUEPRINT_2026-01-07.md → archive/STRATEGIC_BLUEPRINT_2026-01-07.md} +0 -0
  136. /package/src/viewer/{ReactivityManager.js → ViewerInputHandler.js} +0 -0
@@ -6,4 +6,4 @@
6
6
  export { MCPServer, mcpServer } from './MCPServer.js';
7
7
  export { toolDefinitions, getToolList, getToolNames, getTool, validateToolInput } from './tools.js';
8
8
 
9
- export default mcpServer from './MCPServer.js';
9
+ export { mcpServer as default } from './MCPServer.js';
@@ -0,0 +1,264 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * VIB3+ MCP Server — JSON-RPC 2.0 over stdio
4
+ *
5
+ * Implements the Model Context Protocol so any MCP client (Claude Desktop,
6
+ * Cursor, custom agents) can control VIB3+ programmatically.
7
+ *
8
+ * Usage:
9
+ * node src/agent/mcp/stdio-server.js
10
+ *
11
+ * Or via package.json bin:
12
+ * vib3-mcp
13
+ */
14
+
15
+ import { createInterface } from 'readline';
16
+ import { MCPServer } from './MCPServer.js';
17
+ import { getToolList } from './tools.js';
18
+
19
+ const SERVER_INFO = {
20
+ name: 'vib3-mcp',
21
+ version: '2.0.3',
22
+ description: 'VIB3+ 4D Visualization MCP Server — 3 systems, 24 geometries, 6D rotation'
23
+ };
24
+
25
+ // ── JSON-RPC helpers ──
26
+
27
+ function jsonrpc(id, result) {
28
+ return JSON.stringify({ jsonrpc: '2.0', id, result });
29
+ }
30
+
31
+ function jsonrpcError(id, code, message, data) {
32
+ const err = { jsonrpc: '2.0', id, error: { code, message } };
33
+ if (data !== undefined) err.error.data = data;
34
+ return JSON.stringify(err);
35
+ }
36
+
37
+ function jsonrpcNotification(method, params) {
38
+ return JSON.stringify({ jsonrpc: '2.0', method, params });
39
+ }
40
+
41
+ // ── MCP Protocol implementation ──
42
+
43
+ class VIB3StdioMCP {
44
+ constructor() {
45
+ this.server = new MCPServer();
46
+ this.initialized = false;
47
+ }
48
+
49
+ async handleMessage(raw) {
50
+ let msg;
51
+ try {
52
+ msg = JSON.parse(raw);
53
+ } catch {
54
+ return jsonrpcError(null, -32700, 'Parse error');
55
+ }
56
+
57
+ if (msg.jsonrpc !== '2.0') {
58
+ return jsonrpcError(msg.id ?? null, -32600, 'Invalid Request: missing jsonrpc 2.0');
59
+ }
60
+
61
+ const { id, method, params } = msg;
62
+
63
+ switch (method) {
64
+ case 'initialize':
65
+ return this.handleInitialize(id, params);
66
+ case 'initialized':
67
+ return null; // Notification, no response
68
+ case 'tools/list':
69
+ return this.handleToolsList(id);
70
+ case 'tools/call':
71
+ return await this.handleToolsCall(id, params);
72
+ case 'resources/list':
73
+ return this.handleResourcesList(id);
74
+ case 'resources/read':
75
+ return await this.handleResourcesRead(id, params);
76
+ case 'ping':
77
+ return jsonrpc(id, {});
78
+ default:
79
+ return jsonrpcError(id, -32601, `Method not found: ${method}`);
80
+ }
81
+ }
82
+
83
+ handleInitialize(id, params) {
84
+ this.initialized = true;
85
+
86
+ return jsonrpc(id, {
87
+ protocolVersion: '2024-11-05',
88
+ capabilities: {
89
+ tools: {},
90
+ resources: { subscribe: false, listChanged: false }
91
+ },
92
+ serverInfo: SERVER_INFO
93
+ });
94
+ }
95
+
96
+ handleToolsList(id) {
97
+ const tools = getToolList().map(t => ({
98
+ name: t.name,
99
+ description: t.description,
100
+ inputSchema: t.inputSchema
101
+ }));
102
+
103
+ return jsonrpc(id, { tools });
104
+ }
105
+
106
+ async handleToolsCall(id, params) {
107
+ if (!params?.name) {
108
+ return jsonrpcError(id, -32602, 'Invalid params: missing tool name');
109
+ }
110
+
111
+ const { name, arguments: args = {} } = params;
112
+
113
+ try {
114
+ const result = await this.server.handleToolCall(name, args);
115
+
116
+ return jsonrpc(id, {
117
+ content: [
118
+ {
119
+ type: 'text',
120
+ text: JSON.stringify(result, null, 2)
121
+ }
122
+ ],
123
+ isError: !result.success
124
+ });
125
+ } catch (error) {
126
+ return jsonrpc(id, {
127
+ content: [
128
+ {
129
+ type: 'text',
130
+ text: JSON.stringify({
131
+ success: false,
132
+ error: error.message
133
+ })
134
+ }
135
+ ],
136
+ isError: true
137
+ });
138
+ }
139
+ }
140
+
141
+ handleResourcesList(id) {
142
+ return jsonrpc(id, {
143
+ resources: [
144
+ {
145
+ uri: 'vib3://docs/claude-md',
146
+ name: 'CLAUDE.md',
147
+ description: 'Full VIB3+ SDK technical reference for AI agents',
148
+ mimeType: 'text/markdown'
149
+ },
150
+ {
151
+ uri: 'vib3://docs/geometry-summary',
152
+ name: '24 Geometry + 6D Rotation Summary',
153
+ description: 'Complete geometry encoding and rotation plane reference',
154
+ mimeType: 'text/markdown'
155
+ },
156
+ {
157
+ uri: 'vib3://docs/control-reference',
158
+ name: 'Control Reference',
159
+ description: 'Parameter ranges, keyboard shortcuts, API reference',
160
+ mimeType: 'text/markdown'
161
+ },
162
+ {
163
+ uri: 'vib3://state/current',
164
+ name: 'Current Engine State',
165
+ description: 'Live engine state (system, geometry, parameters, rotation)',
166
+ mimeType: 'application/json'
167
+ }
168
+ ]
169
+ });
170
+ }
171
+
172
+ async handleResourcesRead(id, params) {
173
+ if (!params?.uri) {
174
+ return jsonrpcError(id, -32602, 'Invalid params: missing uri');
175
+ }
176
+
177
+ const { uri } = params;
178
+
179
+ try {
180
+ let content;
181
+ let mimeType = 'text/markdown';
182
+
183
+ switch (uri) {
184
+ case 'vib3://docs/claude-md':
185
+ content = await this._readFile('CLAUDE.md');
186
+ break;
187
+ case 'vib3://docs/geometry-summary':
188
+ content = await this._readFile('24-GEOMETRY-6D-ROTATION-SUMMARY.md');
189
+ break;
190
+ case 'vib3://docs/control-reference':
191
+ content = await this._readFile('DOCS/CONTROL_REFERENCE.md');
192
+ break;
193
+ case 'vib3://state/current':
194
+ content = JSON.stringify(this.server.getState(), null, 2);
195
+ mimeType = 'application/json';
196
+ break;
197
+ default:
198
+ return jsonrpcError(id, -32602, `Unknown resource: ${uri}`);
199
+ }
200
+
201
+ return jsonrpc(id, {
202
+ contents: [{ uri, mimeType, text: content }]
203
+ });
204
+ } catch (error) {
205
+ return jsonrpcError(id, -32603, `Resource read failed: ${error.message}`);
206
+ }
207
+ }
208
+
209
+ async _readFile(relativePath) {
210
+ const { readFile } = await import('fs/promises');
211
+ const { resolve, dirname } = await import('path');
212
+ const { fileURLToPath } = await import('url');
213
+
214
+ // Resolve relative to project root (3 levels up from src/agent/mcp/)
215
+ const __dirname = dirname(fileURLToPath(import.meta.url));
216
+ const projectRoot = resolve(__dirname, '..', '..', '..');
217
+ const filePath = resolve(projectRoot, relativePath);
218
+
219
+ return readFile(filePath, 'utf-8');
220
+ }
221
+ }
222
+
223
+ // ── Main: stdio transport ──
224
+
225
+ async function main() {
226
+ const mcp = new VIB3StdioMCP();
227
+
228
+ const rl = createInterface({
229
+ input: process.stdin,
230
+ terminal: false
231
+ });
232
+
233
+ // Log to stderr so stdout stays clean for JSON-RPC
234
+ const log = (msg) => process.stderr.write(`[vib3-mcp] ${msg}\n`);
235
+
236
+ log(`VIB3+ MCP Server v${SERVER_INFO.version} starting on stdio`);
237
+
238
+ rl.on('line', async (line) => {
239
+ const trimmed = line.trim();
240
+ if (!trimmed) return;
241
+
242
+ try {
243
+ const response = await mcp.handleMessage(trimmed);
244
+ if (response !== null) {
245
+ process.stdout.write(response + '\n');
246
+ }
247
+ } catch (error) {
248
+ log(`Error: ${error.message}`);
249
+ process.stdout.write(
250
+ jsonrpcError(null, -32603, `Internal error: ${error.message}`) + '\n'
251
+ );
252
+ }
253
+ });
254
+
255
+ rl.on('close', () => {
256
+ log('stdin closed, shutting down');
257
+ process.exit(0);
258
+ });
259
+ }
260
+
261
+ main().catch((err) => {
262
+ process.stderr.write(`[vib3-mcp] Fatal: ${err.message}\n`);
263
+ process.exit(1);
264
+ });