@tpitre/story-ui 2.7.1 → 2.8.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 (292) hide show
  1. package/README.md +40 -9
  2. package/dist/cli/deploy.d.ts +1 -1
  3. package/dist/cli/deploy.d.ts.map +1 -1
  4. package/dist/cli/deploy.js +5 -115
  5. package/dist/cli/index.js +0 -0
  6. package/dist/cli/setup.js +3 -3
  7. package/dist/templates/StoryUI/StoryUIPanel.d.ts.map +1 -1
  8. package/dist/templates/StoryUI/StoryUIPanel.js +30 -2
  9. package/package.json +1 -1
  10. package/templates/StoryUI/StoryUIPanel.tsx +35 -2
  11. package/dist/cli/index.js.map +0 -1
  12. package/dist/cli/setup.js.map +0 -1
  13. package/dist/cloudflare-edge/src/mcp-session.js +0 -462
  14. package/dist/cloudflare-edge/src/types.js +0 -4
  15. package/dist/cloudflare-edge/src/worker.js +0 -106
  16. package/dist/cloudflare-pages/vite.config.js +0 -14
  17. package/dist/index.d.ts +0 -13
  18. package/dist/index.d.ts.map +0 -1
  19. package/dist/index.js +0 -12
  20. package/dist/index.js.map +0 -1
  21. package/dist/mcp-server/index.js.map +0 -1
  22. package/dist/mcp-server/mcp-stdio-server.js.map +0 -1
  23. package/dist/mcp-server/routes/claude.js.map +0 -1
  24. package/dist/mcp-server/routes/components.js.map +0 -1
  25. package/dist/mcp-server/routes/generateStory.js.map +0 -1
  26. package/dist/mcp-server/routes/hybridStories.js.map +0 -1
  27. package/dist/mcp-server/routes/memoryStories.js.map +0 -1
  28. package/dist/mcp-server/routes/storySync.js.map +0 -1
  29. package/dist/mcp-server/routes/updateStory.js +0 -246
  30. package/dist/mcp-server/sessionManager.js.map +0 -1
  31. package/dist/playground/components/AIAssistant/AIAssistant.d.ts +0 -6
  32. package/dist/playground/components/AIAssistant/AIAssistant.d.ts.map +0 -1
  33. package/dist/playground/components/AIAssistant/AIAssistant.js +0 -109
  34. package/dist/playground/components/AIAssistant/AIAssistant.js.map +0 -1
  35. package/dist/playground/components/AIAssistant/AIAssistant.module.css +0 -166
  36. package/dist/playground/components/Canvas/Canvas.d.ts +0 -9
  37. package/dist/playground/components/Canvas/Canvas.d.ts.map +0 -1
  38. package/dist/playground/components/Canvas/Canvas.js +0 -58
  39. package/dist/playground/components/Canvas/Canvas.js.map +0 -1
  40. package/dist/playground/components/Canvas/Canvas.module.css +0 -189
  41. package/dist/playground/components/Canvas/CanvasWithDnd.d.ts +0 -9
  42. package/dist/playground/components/Canvas/CanvasWithDnd.d.ts.map +0 -1
  43. package/dist/playground/components/Canvas/CanvasWithDnd.js +0 -158
  44. package/dist/playground/components/Canvas/CanvasWithDnd.js.map +0 -1
  45. package/dist/playground/components/Canvas/ComponentRenderer.d.ts +0 -15
  46. package/dist/playground/components/Canvas/ComponentRenderer.d.ts.map +0 -1
  47. package/dist/playground/components/Canvas/ComponentRenderer.js +0 -177
  48. package/dist/playground/components/Canvas/ComponentRenderer.js.map +0 -1
  49. package/dist/playground/components/Canvas/DraggableComponent.d.ts +0 -15
  50. package/dist/playground/components/Canvas/DraggableComponent.d.ts.map +0 -1
  51. package/dist/playground/components/Canvas/DraggableComponent.js +0 -49
  52. package/dist/playground/components/Canvas/DraggableComponent.js.map +0 -1
  53. package/dist/playground/components/Canvas/index.d.ts +0 -9
  54. package/dist/playground/components/Canvas/index.d.ts.map +0 -1
  55. package/dist/playground/components/Canvas/index.js +0 -5
  56. package/dist/playground/components/Canvas/index.js.map +0 -1
  57. package/dist/playground/components/CodeView/CodeView.d.ts +0 -12
  58. package/dist/playground/components/CodeView/CodeView.d.ts.map +0 -1
  59. package/dist/playground/components/CodeView/CodeView.js +0 -77
  60. package/dist/playground/components/CodeView/CodeView.js.map +0 -1
  61. package/dist/playground/components/CodeView/CodeView.module.css +0 -178
  62. package/dist/playground/components/ComponentPalette/ComponentPalette.d.ts +0 -17
  63. package/dist/playground/components/ComponentPalette/ComponentPalette.d.ts.map +0 -1
  64. package/dist/playground/components/ComponentPalette/ComponentPalette.js +0 -138
  65. package/dist/playground/components/ComponentPalette/ComponentPalette.js.map +0 -1
  66. package/dist/playground/components/ComponentPalette/ComponentPalette.module.css +0 -217
  67. package/dist/playground/components/ComponentPalette/index.d.ts +0 -3
  68. package/dist/playground/components/ComponentPalette/index.d.ts.map +0 -1
  69. package/dist/playground/components/ComponentPalette/index.js +0 -2
  70. package/dist/playground/components/ComponentPalette/index.js.map +0 -1
  71. package/dist/playground/components/DropZone/DropZone.d.ts +0 -17
  72. package/dist/playground/components/DropZone/DropZone.d.ts.map +0 -1
  73. package/dist/playground/components/DropZone/DropZone.js +0 -73
  74. package/dist/playground/components/DropZone/DropZone.js.map +0 -1
  75. package/dist/playground/components/DropZone/DropZone.module.css +0 -86
  76. package/dist/playground/components/ExportDialog/ExportDialog.d.ts +0 -10
  77. package/dist/playground/components/ExportDialog/ExportDialog.d.ts.map +0 -1
  78. package/dist/playground/components/ExportDialog/ExportDialog.js +0 -57
  79. package/dist/playground/components/ExportDialog/ExportDialog.js.map +0 -1
  80. package/dist/playground/components/ExportDialog/ExportDialog.module.css +0 -328
  81. package/dist/playground/components/LayoutHelpers/LayoutHelpers.d.ts +0 -134
  82. package/dist/playground/components/LayoutHelpers/LayoutHelpers.d.ts.map +0 -1
  83. package/dist/playground/components/LayoutHelpers/LayoutHelpers.js +0 -254
  84. package/dist/playground/components/LayoutHelpers/LayoutHelpers.js.map +0 -1
  85. package/dist/playground/components/LayoutHelpers/index.d.ts +0 -3
  86. package/dist/playground/components/LayoutHelpers/index.d.ts.map +0 -1
  87. package/dist/playground/components/LayoutHelpers/index.js +0 -2
  88. package/dist/playground/components/LayoutHelpers/index.js.map +0 -1
  89. package/dist/playground/components/Playground/Playground.d.ts +0 -10
  90. package/dist/playground/components/Playground/Playground.d.ts.map +0 -1
  91. package/dist/playground/components/Playground/Playground.js +0 -128
  92. package/dist/playground/components/Playground/Playground.js.map +0 -1
  93. package/dist/playground/components/Playground/Playground.module.css +0 -308
  94. package/dist/playground/components/PropertiesPanel/PropertiesPanel.d.ts +0 -10
  95. package/dist/playground/components/PropertiesPanel/PropertiesPanel.d.ts.map +0 -1
  96. package/dist/playground/components/PropertiesPanel/PropertiesPanel.js +0 -150
  97. package/dist/playground/components/PropertiesPanel/PropertiesPanel.js.map +0 -1
  98. package/dist/playground/components/PropertiesPanel/PropertiesPanel.module.css +0 -155
  99. package/dist/playground/components/PropertiesPanel/index.d.ts +0 -3
  100. package/dist/playground/components/PropertiesPanel/index.d.ts.map +0 -1
  101. package/dist/playground/components/PropertiesPanel/index.js +0 -2
  102. package/dist/playground/components/PropertiesPanel/index.js.map +0 -1
  103. package/dist/playground/components/PropertyEditors/BooleanEditor.d.ts +0 -12
  104. package/dist/playground/components/PropertyEditors/BooleanEditor.d.ts.map +0 -1
  105. package/dist/playground/components/PropertyEditors/BooleanEditor.js +0 -14
  106. package/dist/playground/components/PropertyEditors/BooleanEditor.js.map +0 -1
  107. package/dist/playground/components/PropertyEditors/ColorEditor.d.ts +0 -12
  108. package/dist/playground/components/PropertyEditors/ColorEditor.d.ts.map +0 -1
  109. package/dist/playground/components/PropertyEditors/ColorEditor.js +0 -62
  110. package/dist/playground/components/PropertyEditors/ColorEditor.js.map +0 -1
  111. package/dist/playground/components/PropertyEditors/IconEditor.d.ts +0 -12
  112. package/dist/playground/components/PropertyEditors/IconEditor.d.ts.map +0 -1
  113. package/dist/playground/components/PropertyEditors/IconEditor.js +0 -123
  114. package/dist/playground/components/PropertyEditors/IconEditor.js.map +0 -1
  115. package/dist/playground/components/PropertyEditors/NumberEditor.d.ts +0 -15
  116. package/dist/playground/components/PropertyEditors/NumberEditor.d.ts.map +0 -1
  117. package/dist/playground/components/PropertyEditors/NumberEditor.js +0 -46
  118. package/dist/playground/components/PropertyEditors/NumberEditor.js.map +0 -1
  119. package/dist/playground/components/PropertyEditors/PropertyEditors.module.css +0 -432
  120. package/dist/playground/components/PropertyEditors/SelectEditor.d.ts +0 -19
  121. package/dist/playground/components/PropertyEditors/SelectEditor.d.ts.map +0 -1
  122. package/dist/playground/components/PropertyEditors/SelectEditor.js +0 -17
  123. package/dist/playground/components/PropertyEditors/SelectEditor.js.map +0 -1
  124. package/dist/playground/components/PropertyEditors/SpacingEditor.d.ts +0 -19
  125. package/dist/playground/components/PropertyEditors/SpacingEditor.d.ts.map +0 -1
  126. package/dist/playground/components/PropertyEditors/SpacingEditor.js +0 -162
  127. package/dist/playground/components/PropertyEditors/SpacingEditor.js.map +0 -1
  128. package/dist/playground/components/PropertyEditors/SpacingEditor.module.css +0 -214
  129. package/dist/playground/components/PropertyEditors/TextEditor.d.ts +0 -14
  130. package/dist/playground/components/PropertyEditors/TextEditor.d.ts.map +0 -1
  131. package/dist/playground/components/PropertyEditors/TextEditor.js +0 -38
  132. package/dist/playground/components/PropertyEditors/TextEditor.js.map +0 -1
  133. package/dist/playground/components/PropertyEditors/TokenEditor.d.ts +0 -23
  134. package/dist/playground/components/PropertyEditors/TokenEditor.d.ts.map +0 -1
  135. package/dist/playground/components/PropertyEditors/TokenEditor.js +0 -50
  136. package/dist/playground/components/PropertyEditors/TokenEditor.js.map +0 -1
  137. package/dist/playground/components/PropertyEditors/index.d.ts +0 -20
  138. package/dist/playground/components/PropertyEditors/index.d.ts.map +0 -1
  139. package/dist/playground/components/PropertyEditors/index.js +0 -12
  140. package/dist/playground/components/PropertyEditors/index.js.map +0 -1
  141. package/dist/playground/components/TreeView/TreeView.d.ts +0 -10
  142. package/dist/playground/components/TreeView/TreeView.d.ts.map +0 -1
  143. package/dist/playground/components/TreeView/TreeView.js +0 -146
  144. package/dist/playground/components/TreeView/TreeView.js.map +0 -1
  145. package/dist/playground/components/TreeView/TreeView.module.css +0 -214
  146. package/dist/playground/components/TreeView/index.d.ts +0 -3
  147. package/dist/playground/components/TreeView/index.d.ts.map +0 -1
  148. package/dist/playground/components/TreeView/index.js +0 -2
  149. package/dist/playground/components/TreeView/index.js.map +0 -1
  150. package/dist/playground/config/propertyDefinitions.d.ts +0 -73
  151. package/dist/playground/config/propertyDefinitions.d.ts.map +0 -1
  152. package/dist/playground/config/propertyDefinitions.js +0 -809
  153. package/dist/playground/config/propertyDefinitions.js.map +0 -1
  154. package/dist/playground/hooks/useKeyboardShortcuts.d.ts +0 -38
  155. package/dist/playground/hooks/useKeyboardShortcuts.d.ts.map +0 -1
  156. package/dist/playground/hooks/useKeyboardShortcuts.js +0 -191
  157. package/dist/playground/hooks/useKeyboardShortcuts.js.map +0 -1
  158. package/dist/playground/index.d.ts +0 -21
  159. package/dist/playground/index.d.ts.map +0 -1
  160. package/dist/playground/index.js +0 -23
  161. package/dist/playground/index.js.map +0 -1
  162. package/dist/playground/services/CodeGenerator.d.ts +0 -73
  163. package/dist/playground/services/CodeGenerator.d.ts.map +0 -1
  164. package/dist/playground/services/CodeGenerator.js +0 -359
  165. package/dist/playground/services/CodeGenerator.js.map +0 -1
  166. package/dist/playground/services/DragDropManager.d.ts +0 -95
  167. package/dist/playground/services/DragDropManager.d.ts.map +0 -1
  168. package/dist/playground/services/DragDropManager.js +0 -408
  169. package/dist/playground/services/DragDropManager.js.map +0 -1
  170. package/dist/playground/services/StoryParser.d.ts +0 -73
  171. package/dist/playground/services/StoryParser.d.ts.map +0 -1
  172. package/dist/playground/services/StoryParser.js +0 -419
  173. package/dist/playground/services/StoryParser.js.map +0 -1
  174. package/dist/playground/store/playgroundStore.d.ts +0 -86
  175. package/dist/playground/store/playgroundStore.d.ts.map +0 -1
  176. package/dist/playground/store/playgroundStore.js +0 -337
  177. package/dist/playground/store/playgroundStore.js.map +0 -1
  178. package/dist/playground/stories/PlaygroundDragDrop.stories.d.ts +0 -13
  179. package/dist/playground/stories/PlaygroundDragDrop.stories.d.ts.map +0 -1
  180. package/dist/playground/stories/PlaygroundDragDrop.stories.js +0 -227
  181. package/dist/playground/stories/PlaygroundDragDrop.stories.js.map +0 -1
  182. package/dist/playground/stories/PlaygroundPhase4.stories.d.ts +0 -13
  183. package/dist/playground/stories/PlaygroundPhase4.stories.d.ts.map +0 -1
  184. package/dist/playground/stories/PlaygroundPhase4.stories.js +0 -334
  185. package/dist/playground/stories/PlaygroundPhase4.stories.js.map +0 -1
  186. package/dist/playground/stories/PlaygroundPhase5.stories.d.ts +0 -14
  187. package/dist/playground/stories/PlaygroundPhase5.stories.d.ts.map +0 -1
  188. package/dist/playground/stories/PlaygroundPhase5.stories.js +0 -512
  189. package/dist/playground/stories/PlaygroundPhase5.stories.js.map +0 -1
  190. package/dist/playground/stories/PlaygroundProperties.stories.d.ts +0 -13
  191. package/dist/playground/stories/PlaygroundProperties.stories.d.ts.map +0 -1
  192. package/dist/playground/stories/PlaygroundProperties.stories.js +0 -342
  193. package/dist/playground/stories/PlaygroundProperties.stories.js.map +0 -1
  194. package/dist/playground/types/index.d.ts +0 -251
  195. package/dist/playground/types/index.d.ts.map +0 -1
  196. package/dist/playground/types/index.js +0 -5
  197. package/dist/playground/types/index.js.map +0 -1
  198. package/dist/scripts/verify-framework-adapters.js +0 -105
  199. package/dist/story-generator/componentBlacklist.js.map +0 -1
  200. package/dist/story-generator/componentDiscovery.js.map +0 -1
  201. package/dist/story-generator/configLoader.js.map +0 -1
  202. package/dist/story-generator/considerationsLoader.js.map +0 -1
  203. package/dist/story-generator/documentation-sources.js.map +0 -1
  204. package/dist/story-generator/documentationLoader.js.map +0 -1
  205. package/dist/story-generator/dynamicPackageDiscovery.js.map +0 -1
  206. package/dist/story-generator/enhancedComponentDiscovery.js.map +0 -1
  207. package/dist/story-generator/generateStory.js.map +0 -1
  208. package/dist/story-generator/gitignoreManager.js.map +0 -1
  209. package/dist/story-generator/inMemoryStoryService.js.map +0 -1
  210. package/dist/story-generator/logger.js.map +0 -1
  211. package/dist/story-generator/postProcessStory.js.map +0 -1
  212. package/dist/story-generator/productionGitignoreManager.js.map +0 -1
  213. package/dist/story-generator/promptGenerator.js.map +0 -1
  214. package/dist/story-generator/providerPresets.d.ts +0 -54
  215. package/dist/story-generator/providerPresets.d.ts.map +0 -1
  216. package/dist/story-generator/providerPresets.js +0 -214
  217. package/dist/story-generator/storyHistory.js.map +0 -1
  218. package/dist/story-generator/storySync.js.map +0 -1
  219. package/dist/story-generator/storyTracker.js.map +0 -1
  220. package/dist/story-generator/storyValidator.js.map +0 -1
  221. package/dist/story-generator/test_validation.d.ts +0 -2
  222. package/dist/story-generator/test_validation.d.ts.map +0 -1
  223. package/dist/story-generator/test_validation.js +0 -51
  224. package/dist/story-generator/universalDesignSystemAdapter.js.map +0 -1
  225. package/dist/story-generator/urlRedirectService.js.map +0 -1
  226. package/dist/story-generator/validateStory.js.map +0 -1
  227. package/dist/story-ui.config.js.map +0 -1
  228. package/dist/story-ui.config.loader.d.ts +0 -36
  229. package/dist/story-ui.config.loader.d.ts.map +0 -1
  230. package/dist/story-ui.config.loader.js +0 -205
  231. package/dist/story-ui.config.loader.js.map +0 -1
  232. package/dist/temp/package/templates/StoryUI/StoryUIPanel.js +0 -807
  233. package/dist/temp/package/templates/StoryUI/StoryUIPanel.stories.js +0 -37
  234. package/dist/temp/package/templates/StoryUI/index.js +0 -2
  235. package/dist/templates/StoryUI/StoryUIPanel.js.map +0 -1
  236. package/dist/templates/StoryUI/StoryUIPanel.stories.js.map +0 -1
  237. package/dist/templates/StoryUI/index.js.map +0 -1
  238. package/dist/templates/StoryUI/manager.d.ts +0 -14
  239. package/dist/templates/StoryUI/manager.d.ts.map +0 -1
  240. package/dist/templates/production-app/src/App.d.ts +0 -10
  241. package/dist/templates/production-app/src/App.d.ts.map +0 -1
  242. package/dist/templates/production-app/src/App.js +0 -653
  243. package/dist/templates/production-app/src/LivePreviewRenderer.d.ts +0 -24
  244. package/dist/templates/production-app/src/LivePreviewRenderer.d.ts.map +0 -1
  245. package/dist/templates/production-app/src/LivePreviewRenderer.js +0 -199
  246. package/dist/templates/production-app/src/componentRegistry.d.ts +0 -20
  247. package/dist/templates/production-app/src/componentRegistry.d.ts.map +0 -1
  248. package/dist/templates/production-app/src/componentRegistry.js +0 -316
  249. package/dist/templates/production-app/src/main.d.ts +0 -9
  250. package/dist/templates/production-app/src/main.d.ts.map +0 -1
  251. package/dist/templates/production-app/src/main.js +0 -18
  252. package/dist/templates/production-app/vite.config.d.ts +0 -3
  253. package/dist/templates/production-app/vite.config.d.ts.map +0 -1
  254. package/dist/templates/production-app/vite.config.js +0 -71
  255. package/dist/test-storybooks/angular-material-storybook/src/main.js +0 -66
  256. package/dist/test-storybooks/chakra-storybook/vite.config.js +0 -6
  257. package/dist/test-storybooks/mantine-storybook/vite.config.js +0 -93
  258. package/dist/test-storybooks/web-components-shoelace/vite.config.js +0 -9
  259. package/dist/tsconfig.tsbuildinfo +0 -1
  260. package/dist/visual-builder/components/Canvas/Canvas.js +0 -70
  261. package/dist/visual-builder/components/Canvas/ComponentRenderer.js +0 -545
  262. package/dist/visual-builder/components/CodeExporter/CodeExporter.js +0 -25
  263. package/dist/visual-builder/components/CodeExporter/codeGenerator.js +0 -99
  264. package/dist/visual-builder/components/ComponentPalette/ComponentPalette.js +0 -8
  265. package/dist/visual-builder/components/ComponentPalette/ComponentPaletteItem.js +0 -51
  266. package/dist/visual-builder/components/EmbeddedVisualBuilder.js +0 -107
  267. package/dist/visual-builder/components/PropertyEditor/PropertyEditor.js +0 -16
  268. package/dist/visual-builder/components/PropertyEditor/PropertyForm.js +0 -88
  269. package/dist/visual-builder/components/PropertyEditor/SpacingControl.js +0 -145
  270. package/dist/visual-builder/components/PropertyEditor/SpacingEditor.js +0 -32
  271. package/dist/visual-builder/components/StoryManager/SaveOnlyManager.js +0 -94
  272. package/dist/visual-builder/components/StoryManager/StoryManager.js +0 -68
  273. package/dist/visual-builder/components/StoryManager/index.js +0 -1
  274. package/dist/visual-builder/components/VisualBuilder.js +0 -256
  275. package/dist/visual-builder/config/componentRegistry.js +0 -1758
  276. package/dist/visual-builder/decorators/VisualBuilderDecorator.js +0 -184
  277. package/dist/visual-builder/example-integration.js +0 -59
  278. package/dist/visual-builder/example.js +0 -23
  279. package/dist/visual-builder/hooks/useDragAndDrop.js +0 -137
  280. package/dist/visual-builder/hooks/useSelection.js +0 -27
  281. package/dist/visual-builder/index.js +0 -7
  282. package/dist/visual-builder/store/visualBuilderStore.js +0 -305
  283. package/dist/visual-builder/types/index.js +0 -1
  284. package/dist/visual-builder/utils/__tests__/storyFileUpdater.test.js +0 -145
  285. package/dist/visual-builder/utils/aiParser.js +0 -336
  286. package/dist/visual-builder/utils/componentTreeUtils.js +0 -111
  287. package/dist/visual-builder/utils/parserValidation.js +0 -122
  288. package/dist/visual-builder/utils/storyFileManager.js +0 -73
  289. package/dist/visual-builder/utils/storyFileUpdater.js +0 -326
  290. package/dist/visual-builder/utils/storyNameExtraction.test.js +0 -211
  291. package/dist/visual-builder/utils/storyPersistence.js +0 -180
  292. package/dist/visual-builder/utils/storyToBuilder.js +0 -813
@@ -1,462 +0,0 @@
1
- /**
2
- * Story UI MCP Session Durable Object
3
- *
4
- * Handles per-session MCP protocol communication with:
5
- * - SSE transport (legacy)
6
- * - Streamable HTTP transport (new)
7
- * - WebSocket hibernation for cost optimization
8
- */
9
- // MCP Protocol Constants
10
- const MCP_VERSION = '2024-11-05';
11
- const SERVER_NAME = 'story-ui-mcp-edge';
12
- const SERVER_VERSION = '3.0.0';
13
- // Story UI Tools Definition
14
- const STORY_UI_TOOLS = [
15
- {
16
- name: 'test-connection',
17
- description: 'Test the MCP connection to Story UI edge server',
18
- inputSchema: {
19
- type: 'object',
20
- properties: {},
21
- },
22
- },
23
- {
24
- name: 'generate-story',
25
- description: 'Generate a Storybook story for a component using AI',
26
- inputSchema: {
27
- type: 'object',
28
- properties: {
29
- prompt: {
30
- type: 'string',
31
- description: 'Description of the story to generate',
32
- },
33
- componentPath: {
34
- type: 'string',
35
- description: 'Path to the component file (optional)',
36
- },
37
- framework: {
38
- type: 'string',
39
- description: 'UI framework',
40
- enum: ['react', 'vue', 'angular', 'svelte'],
41
- },
42
- },
43
- required: ['prompt'],
44
- },
45
- },
46
- {
47
- name: 'list-stories',
48
- description: 'List all generated stories in this session',
49
- inputSchema: {
50
- type: 'object',
51
- properties: {
52
- limit: {
53
- type: 'number',
54
- description: 'Maximum number of stories to return',
55
- default: 50,
56
- },
57
- },
58
- },
59
- },
60
- {
61
- name: 'get-story',
62
- description: 'Get the content of a specific story',
63
- inputSchema: {
64
- type: 'object',
65
- properties: {
66
- id: {
67
- type: 'string',
68
- description: 'Story ID',
69
- },
70
- },
71
- required: ['id'],
72
- },
73
- },
74
- {
75
- name: 'delete-story',
76
- description: 'Delete a generated story',
77
- inputSchema: {
78
- type: 'object',
79
- properties: {
80
- id: {
81
- type: 'string',
82
- description: 'Story ID',
83
- },
84
- },
85
- required: ['id'],
86
- },
87
- },
88
- ];
89
- export class MCPSessionDO {
90
- constructor(state, env) {
91
- this.sessions = new Map();
92
- this.sseWriters = new Map();
93
- this.state = state;
94
- this._env = env;
95
- }
96
- async fetch(request) {
97
- const url = new URL(request.url);
98
- try {
99
- switch (url.pathname) {
100
- case '/sse':
101
- return this.handleSSE(request);
102
- case '/messages':
103
- return this.handleMessages(request, url);
104
- case '/mcp':
105
- return this.handleStreamableHTTP(request);
106
- case '/health':
107
- return this.handleHealth();
108
- default:
109
- return new Response('Not Found', { status: 404 });
110
- }
111
- }
112
- catch (error) {
113
- console.error('MCPSessionDO error:', error);
114
- return new Response(JSON.stringify({ error: 'Internal Server Error' }), { status: 500, headers: { 'Content-Type': 'application/json' } });
115
- }
116
- }
117
- /**
118
- * Handle SSE connection (legacy transport)
119
- */
120
- async handleSSE(request) {
121
- const sessionId = crypto.randomUUID();
122
- // Create transform stream for SSE
123
- const { readable, writable } = new TransformStream();
124
- const writer = writable.getWriter();
125
- const encoder = new TextEncoder();
126
- // Store session
127
- const session = {
128
- id: sessionId,
129
- createdAt: Date.now(),
130
- lastActive: Date.now(),
131
- };
132
- this.sessions.set(sessionId, session);
133
- this.sseWriters.set(sessionId, writer);
134
- // Save to durable storage
135
- await this.state.storage.put(`session:${sessionId}`, session);
136
- // Send endpoint event
137
- const endpointUrl = `/mcp-remote/messages?sessionId=${sessionId}`;
138
- await writer.write(encoder.encode(`event: endpoint\ndata: ${endpointUrl}\n\n`));
139
- // Clean up on close
140
- request.signal.addEventListener('abort', async () => {
141
- this.sessions.delete(sessionId);
142
- this.sseWriters.delete(sessionId);
143
- await this.state.storage.delete(`session:${sessionId}`);
144
- console.log(`Session ${sessionId} closed`);
145
- });
146
- console.log(`SSE session ${sessionId} created`);
147
- return new Response(readable, {
148
- headers: {
149
- 'Content-Type': 'text/event-stream',
150
- 'Cache-Control': 'no-cache',
151
- 'Connection': 'keep-alive',
152
- 'Access-Control-Allow-Origin': '*',
153
- },
154
- });
155
- }
156
- /**
157
- * Handle POST messages for SSE transport
158
- */
159
- async handleMessages(request, url) {
160
- if (request.method !== 'POST') {
161
- return new Response('Method Not Allowed', { status: 405 });
162
- }
163
- const sessionId = url.searchParams.get('sessionId');
164
- if (!sessionId) {
165
- return new Response(JSON.stringify({ error: 'Missing sessionId' }), { status: 400, headers: { 'Content-Type': 'application/json' } });
166
- }
167
- const session = this.sessions.get(sessionId);
168
- if (!session) {
169
- return new Response(JSON.stringify({ error: 'Session not found' }), { status: 404, headers: { 'Content-Type': 'application/json' } });
170
- }
171
- // Update last active
172
- session.lastActive = Date.now();
173
- // Parse message
174
- const message = await request.json();
175
- // Process and get response
176
- const response = await this.processMessage(message);
177
- // Send response via SSE
178
- const writer = this.sseWriters.get(sessionId);
179
- if (writer) {
180
- const encoder = new TextEncoder();
181
- await writer.write(encoder.encode(`event: message\ndata: ${JSON.stringify(response)}\n\n`));
182
- }
183
- return new Response(null, { status: 202 });
184
- }
185
- /**
186
- * Handle Streamable HTTP transport (new MCP standard)
187
- */
188
- async handleStreamableHTTP(request) {
189
- if (request.method !== 'POST') {
190
- return new Response('Method Not Allowed', { status: 405 });
191
- }
192
- const message = await request.json();
193
- const response = await this.processMessage(message);
194
- return new Response(JSON.stringify(response), {
195
- headers: {
196
- 'Content-Type': 'application/json',
197
- 'Access-Control-Allow-Origin': '*',
198
- },
199
- });
200
- }
201
- /**
202
- * Process MCP JSON-RPC message
203
- */
204
- async processMessage(message) {
205
- const { method, params, id } = message;
206
- try {
207
- switch (method) {
208
- case 'initialize':
209
- return this.handleInitialize(id, params);
210
- case 'tools/list':
211
- return this.handleListTools(id);
212
- case 'tools/call':
213
- return this.handleCallTool(id, params);
214
- case 'ping':
215
- return { jsonrpc: '2.0', id, result: {} };
216
- default:
217
- return {
218
- jsonrpc: '2.0',
219
- id,
220
- error: { code: -32601, message: `Method not found: ${method}` },
221
- };
222
- }
223
- }
224
- catch (error) {
225
- console.error(`Error processing ${method}:`, error);
226
- return {
227
- jsonrpc: '2.0',
228
- id,
229
- error: {
230
- code: -32603,
231
- message: error instanceof Error ? error.message : 'Internal error'
232
- },
233
- };
234
- }
235
- }
236
- /**
237
- * Handle MCP initialize
238
- */
239
- handleInitialize(id, params) {
240
- // Store client info for potential future session tracking
241
- const _clientInfo = params?.clientInfo;
242
- return {
243
- jsonrpc: '2.0',
244
- id,
245
- result: {
246
- protocolVersion: MCP_VERSION,
247
- capabilities: {
248
- tools: {},
249
- },
250
- serverInfo: {
251
- name: SERVER_NAME,
252
- version: SERVER_VERSION,
253
- },
254
- },
255
- };
256
- }
257
- /**
258
- * Handle tools/list
259
- */
260
- handleListTools(id) {
261
- return {
262
- jsonrpc: '2.0',
263
- id,
264
- result: {
265
- tools: STORY_UI_TOOLS,
266
- },
267
- };
268
- }
269
- /**
270
- * Handle tools/call
271
- */
272
- async handleCallTool(id, params) {
273
- const toolName = params?.name;
274
- const toolArgs = params?.arguments;
275
- const result = await this.executeTool(toolName, toolArgs || {});
276
- return {
277
- jsonrpc: '2.0',
278
- id,
279
- result,
280
- };
281
- }
282
- /**
283
- * Execute a tool
284
- */
285
- async executeTool(name, args) {
286
- switch (name) {
287
- case 'test-connection':
288
- return {
289
- content: [{
290
- type: 'text',
291
- text: JSON.stringify({
292
- status: 'connected',
293
- server: SERVER_NAME,
294
- version: SERVER_VERSION,
295
- transport: 'cloudflare-edge',
296
- timestamp: new Date().toISOString(),
297
- }, null, 2),
298
- }],
299
- };
300
- case 'generate-story':
301
- return this.generateStory(args);
302
- case 'list-stories':
303
- return this.listStories(args);
304
- case 'get-story':
305
- return this.getStory(args);
306
- case 'delete-story':
307
- return this.deleteStory(args);
308
- default:
309
- return {
310
- content: [{ type: 'text', text: `Unknown tool: ${name}` }],
311
- isError: true,
312
- };
313
- }
314
- }
315
- /**
316
- * Generate a story (placeholder - needs LLM integration)
317
- */
318
- async generateStory(args) {
319
- const prompt = args.prompt;
320
- const componentPath = args.componentPath;
321
- const framework = args.framework || 'react';
322
- // Generate a unique story ID
323
- const storyId = `story-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
324
- // Create placeholder story content
325
- const storyContent = `import type { Meta, StoryObj } from '@storybook/react';
326
-
327
- // Generated by Story UI MCP Edge
328
- // Prompt: ${prompt}
329
- // Framework: ${framework}
330
- ${componentPath ? `// Component: ${componentPath}` : ''}
331
-
332
- const meta = {
333
- title: 'Generated/${storyId}',
334
- parameters: {
335
- layout: 'centered',
336
- },
337
- } satisfies Meta;
338
-
339
- export default meta;
340
- type Story = StoryObj<typeof meta>;
341
-
342
- export const Default: Story = {
343
- render: () => (
344
- <div>
345
- {/* TODO: Implement based on prompt: ${prompt} */}
346
- <p>Story generated on Cloudflare Edge</p>
347
- </div>
348
- ),
349
- };
350
- `;
351
- // Store story
352
- const story = {
353
- id: storyId,
354
- title: `Generated Story - ${prompt.substring(0, 50)}`,
355
- componentPath,
356
- createdAt: Date.now(),
357
- framework,
358
- };
359
- await this.state.storage.put(`story:${storyId}`, { ...story, content: storyContent });
360
- return {
361
- content: [{
362
- type: 'text',
363
- text: JSON.stringify({
364
- success: true,
365
- storyId,
366
- message: 'Story generated successfully on Cloudflare Edge',
367
- note: 'Full LLM integration pending - this is a placeholder story',
368
- content: storyContent,
369
- }, null, 2),
370
- }],
371
- };
372
- }
373
- /**
374
- * List stories in this session
375
- */
376
- async listStories(args) {
377
- const limit = args.limit || 50;
378
- const stories = [];
379
- const storageMap = await this.state.storage.list({ prefix: 'story:' });
380
- for (const [, value] of storageMap) {
381
- const story = value;
382
- stories.push({
383
- id: story.id,
384
- title: story.title,
385
- componentPath: story.componentPath,
386
- createdAt: story.createdAt,
387
- framework: story.framework,
388
- });
389
- if (stories.length >= limit)
390
- break;
391
- }
392
- return {
393
- content: [{
394
- type: 'text',
395
- text: JSON.stringify({
396
- stories,
397
- count: stories.length,
398
- }, null, 2),
399
- }],
400
- };
401
- }
402
- /**
403
- * Get a specific story
404
- */
405
- async getStory(args) {
406
- const id = args.id;
407
- const story = await this.state.storage.get(`story:${id}`);
408
- if (!story) {
409
- return {
410
- content: [{ type: 'text', text: `Story not found: ${id}` }],
411
- isError: true,
412
- };
413
- }
414
- return {
415
- content: [{
416
- type: 'text',
417
- text: JSON.stringify(story, null, 2),
418
- }],
419
- };
420
- }
421
- /**
422
- * Delete a story
423
- */
424
- async deleteStory(args) {
425
- const id = args.id;
426
- const existed = await this.state.storage.get(`story:${id}`);
427
- if (!existed) {
428
- return {
429
- content: [{ type: 'text', text: `Story not found: ${id}` }],
430
- isError: true,
431
- };
432
- }
433
- await this.state.storage.delete(`story:${id}`);
434
- return {
435
- content: [{
436
- type: 'text',
437
- text: JSON.stringify({
438
- success: true,
439
- message: `Story ${id} deleted`,
440
- }, null, 2),
441
- }],
442
- };
443
- }
444
- /**
445
- * Health check
446
- */
447
- handleHealth() {
448
- return new Response(JSON.stringify({
449
- status: 'ok',
450
- service: SERVER_NAME,
451
- version: SERVER_VERSION,
452
- transport: 'cloudflare-edge',
453
- activeSessions: this.sessions.size,
454
- timestamp: new Date().toISOString(),
455
- }), {
456
- headers: {
457
- 'Content-Type': 'application/json',
458
- 'Access-Control-Allow-Origin': '*',
459
- },
460
- });
461
- }
462
- }
@@ -1,4 +0,0 @@
1
- /**
2
- * Story UI MCP Edge - Type Definitions
3
- */
4
- export {};
@@ -1,106 +0,0 @@
1
- /**
2
- * Story UI MCP Edge Worker
3
- *
4
- * Entry point for Cloudflare Workers deployment.
5
- * Routes requests to Durable Objects for session management.
6
- */
7
- // Re-export Durable Object
8
- export { MCPSessionDO } from './mcp-session.js';
9
- export default {
10
- async fetch(request, env, _ctx) {
11
- const url = new URL(request.url);
12
- // Handle CORS preflight
13
- if (request.method === 'OPTIONS') {
14
- return handleCORS();
15
- }
16
- try {
17
- // Route based on path
18
- if (url.pathname === '/mcp-remote/health' || url.pathname === '/health') {
19
- return handleHealthCheck(env);
20
- }
21
- if (url.pathname.startsWith('/mcp-remote/')) {
22
- return handleMCPRequest(request, env, url);
23
- }
24
- // Default response
25
- return new Response(JSON.stringify({
26
- service: 'story-ui-mcp-edge',
27
- version: env.STORY_UI_VERSION,
28
- endpoints: {
29
- health: '/mcp-remote/health',
30
- sse: '/mcp-remote/sse',
31
- messages: '/mcp-remote/messages',
32
- streamable: '/mcp-remote/mcp',
33
- },
34
- }), {
35
- headers: {
36
- 'Content-Type': 'application/json',
37
- 'Access-Control-Allow-Origin': '*',
38
- },
39
- });
40
- }
41
- catch (error) {
42
- console.error('Worker error:', error);
43
- return new Response(JSON.stringify({ error: 'Internal Server Error' }), {
44
- status: 500,
45
- headers: {
46
- 'Content-Type': 'application/json',
47
- 'Access-Control-Allow-Origin': '*',
48
- }
49
- });
50
- }
51
- },
52
- };
53
- /**
54
- * Handle CORS preflight requests
55
- */
56
- function handleCORS() {
57
- return new Response(null, {
58
- status: 204,
59
- headers: {
60
- 'Access-Control-Allow-Origin': '*',
61
- 'Access-Control-Allow-Methods': 'GET, POST, DELETE, OPTIONS',
62
- 'Access-Control-Allow-Headers': 'Content-Type, Authorization',
63
- 'Access-Control-Max-Age': '86400',
64
- },
65
- });
66
- }
67
- /**
68
- * Handle health check at gateway level
69
- */
70
- function handleHealthCheck(env) {
71
- const health = {
72
- status: 'ok',
73
- service: 'story-ui-mcp-edge',
74
- version: env.STORY_UI_VERSION,
75
- transport: 'cloudflare-workers',
76
- activeSessions: 0, // Gateway doesn't track sessions
77
- timestamp: new Date().toISOString(),
78
- };
79
- return new Response(JSON.stringify(health), {
80
- headers: {
81
- 'Content-Type': 'application/json',
82
- 'Access-Control-Allow-Origin': '*',
83
- },
84
- });
85
- }
86
- /**
87
- * Route MCP requests to Durable Object
88
- */
89
- async function handleMCPRequest(request, env, url) {
90
- // Determine session ID for DO routing
91
- // For SSE, use a fixed ID per client (could be from auth token)
92
- // For messages, extract from query string
93
- const sessionId = url.searchParams.get('sessionId') || 'default-session';
94
- // Get Durable Object stub
95
- const doId = env.MCP_SESSIONS.idFromName(sessionId);
96
- const stub = env.MCP_SESSIONS.get(doId);
97
- // Map URL path for DO
98
- const doPath = url.pathname.replace('/mcp-remote', '');
99
- const doUrl = new URL(doPath + url.search, 'http://internal');
100
- // Forward request to Durable Object
101
- return stub.fetch(new Request(doUrl.toString(), {
102
- method: request.method,
103
- headers: request.headers,
104
- body: request.body,
105
- }));
106
- }
@@ -1,14 +0,0 @@
1
- import { defineConfig } from 'vite';
2
- import react from '@vitejs/plugin-react';
3
- export default defineConfig({
4
- plugins: [react()],
5
- define: {
6
- // Edge MCP URL - REQUIRED: Set via VITE_EDGE_MCP_URL environment variable
7
- // Example: VITE_EDGE_MCP_URL=https://your-worker.your-account.workers.dev npm run build
8
- 'import.meta.env.VITE_EDGE_MCP_URL': JSON.stringify(process.env.VITE_EDGE_MCP_URL || ''),
9
- },
10
- build: {
11
- outDir: 'dist',
12
- sourcemap: true,
13
- },
14
- });
package/dist/index.d.ts DELETED
@@ -1,13 +0,0 @@
1
- export * from './story-ui.config.js';
2
- export * from './story-ui.config.loader.js';
3
- export * from './story-generator/componentDiscovery.js';
4
- export * from './story-generator/promptGenerator.js';
5
- export type { StoryUIConfig, ComponentConfig, LayoutRules } from './story-ui.config.js';
6
- export { createStoryUIConfig, DEFAULT_CONFIG, GENERIC_CONFIG_TEMPLATE } from './story-ui.config.js';
7
- export { configLoader, loadStoryUIConfig } from './story-ui.config.loader.js';
8
- export { discoverComponents, discoverComponentsFromDirectory, discoverComponentsFromCustomElements, discoverComponentsFromPackage } from './story-generator/componentDiscovery.js';
9
- export { generatePrompt, buildClaudePrompt } from './story-generator/promptGenerator.js';
10
- export { ProductionGitignoreManager, setupProductionGitignore } from './story-generator/productionGitignoreManager.js';
11
- export { InMemoryStoryService, getInMemoryStoryService, GeneratedStory, StoryMetadata, MemoryStats } from './story-generator/inMemoryStoryService.js';
12
- export { StorySyncService, getStorySyncService, SyncedStory, ChatSyncResult } from './story-generator/storySync.js';
13
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yCAAyC,CAAC;AACxD,cAAc,sCAAsC,CAAC;AAGrD,YAAY,EACV,aAAa,EACb,eAAe,EACf,WAAW,EACZ,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,uBAAuB,EACxB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,YAAY,EACZ,iBAAiB,EAClB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,kBAAkB,EAClB,+BAA+B,EAC/B,oCAAoC,EACpC,6BAA6B,EAC9B,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EACL,cAAc,EACd,iBAAiB,EAClB,MAAM,sCAAsC,CAAC;AAG9C,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACzB,MAAM,iDAAiD,CAAC;AAEzD,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,cAAc,EACd,aAAa,EACb,WAAW,EACZ,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,WAAW,EACX,cAAc,EACf,MAAM,gCAAgC,CAAC"}
package/dist/index.js DELETED
@@ -1,12 +0,0 @@
1
- // Main exports for Story UI package
2
- export * from './story-ui.config.js';
3
- export * from './story-ui.config.loader.js';
4
- export * from './story-generator/componentDiscovery.js';
5
- export * from './story-generator/promptGenerator.js';
6
- export { createStoryUIConfig, DEFAULT_CONFIG, GENERIC_CONFIG_TEMPLATE } from './story-ui.config.js';
7
- export { configLoader, loadStoryUIConfig } from './story-ui.config.loader.js';
8
- export { discoverComponents, discoverComponentsFromDirectory, discoverComponentsFromCustomElements, discoverComponentsFromPackage } from './story-generator/componentDiscovery.js';
9
- export { generatePrompt, buildClaudePrompt } from './story-generator/promptGenerator.js';
10
- export { ProductionGitignoreManager, setupProductionGitignore } from './story-generator/productionGitignoreManager.js';
11
- export { InMemoryStoryService, getInMemoryStoryService } from './story-generator/inMemoryStoryService.js';
12
- export { StorySyncService, getStorySyncService } from './story-generator/storySync.js';
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yCAAyC,CAAC;AACxD,cAAc,sCAAsC,CAAC;AASrD,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,uBAAuB,EACxB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,YAAY,EACZ,iBAAiB,EAClB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,kBAAkB,EAClB,+BAA+B,EAC/B,oCAAoC,EACpC,6BAA6B,EAC9B,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EACL,cAAc,EACd,iBAAiB,EAClB,MAAM,sCAAsC,CAAC;AAG9C,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACzB,MAAM,iDAAiD,CAAC;AAEzD,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EAIxB,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EAGpB,MAAM,gCAAgC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../mcp-server/index.ts"],"names":[],"mappings":"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"}