@nocturnium/svelte-ide 1.0.0-rc.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 (330) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +251 -0
  3. package/dist/components/agents/AgentActivityPanel.svelte +565 -0
  4. package/dist/components/agents/AgentActivityPanel.svelte.d.ts +24 -0
  5. package/dist/components/agents/AgentAvatar.svelte +417 -0
  6. package/dist/components/agents/AgentAvatar.svelte.d.ts +23 -0
  7. package/dist/components/agents/AgentCursor.svelte +224 -0
  8. package/dist/components/agents/AgentCursor.svelte.d.ts +35 -0
  9. package/dist/components/agents/AgentPresenceBar.svelte +261 -0
  10. package/dist/components/agents/AgentPresenceBar.svelte.d.ts +20 -0
  11. package/dist/components/agents/index.d.ts +4 -0
  12. package/dist/components/agents/index.js +5 -0
  13. package/dist/components/ai/AIConversationList.svelte +524 -0
  14. package/dist/components/ai/AIConversationList.svelte.d.ts +17 -0
  15. package/dist/components/ai/AIEditPreview.svelte +132 -0
  16. package/dist/components/ai/AIEditPreview.svelte.d.ts +8 -0
  17. package/dist/components/ai/AIInlineEdit.svelte +155 -0
  18. package/dist/components/ai/AIInlineEdit.svelte.d.ts +10 -0
  19. package/dist/components/ai/AIMessage.svelte +239 -0
  20. package/dist/components/ai/AIMessage.svelte.d.ts +13 -0
  21. package/dist/components/ai/AIMessageActions.svelte +176 -0
  22. package/dist/components/ai/AIMessageActions.svelte.d.ts +12 -0
  23. package/dist/components/ai/AIMessageContent.svelte +355 -0
  24. package/dist/components/ai/AIMessageContent.svelte.d.ts +7 -0
  25. package/dist/components/ai/AIPanel.svelte +561 -0
  26. package/dist/components/ai/AIPanel.svelte.d.ts +7 -0
  27. package/dist/components/ai/AISuggestionWidget.svelte +132 -0
  28. package/dist/components/ai/AISuggestionWidget.svelte.d.ts +10 -0
  29. package/dist/components/ai/AIToolCallDisplay.svelte +317 -0
  30. package/dist/components/ai/AIToolCallDisplay.svelte.d.ts +12 -0
  31. package/dist/components/ai/index.d.ts +9 -0
  32. package/dist/components/ai/index.js +10 -0
  33. package/dist/components/core/Avatar.svelte +110 -0
  34. package/dist/components/core/Avatar.svelte.d.ts +12 -0
  35. package/dist/components/core/Badge.svelte +98 -0
  36. package/dist/components/core/Badge.svelte.d.ts +11 -0
  37. package/dist/components/core/Button.svelte +175 -0
  38. package/dist/components/core/Button.svelte.d.ts +18 -0
  39. package/dist/components/core/ConnectionStatus.svelte +294 -0
  40. package/dist/components/core/ConnectionStatus.svelte.d.ts +20 -0
  41. package/dist/components/core/ContextMenu.svelte +176 -0
  42. package/dist/components/core/ContextMenu.svelte.d.ts +19 -0
  43. package/dist/components/core/ErrorBoundary.svelte +277 -0
  44. package/dist/components/core/ErrorBoundary.svelte.d.ts +23 -0
  45. package/dist/components/core/Icon.svelte +107 -0
  46. package/dist/components/core/Icon.svelte.d.ts +8 -0
  47. package/dist/components/core/Input.svelte +138 -0
  48. package/dist/components/core/Input.svelte.d.ts +20 -0
  49. package/dist/components/core/Kbd.svelte +34 -0
  50. package/dist/components/core/Kbd.svelte.d.ts +7 -0
  51. package/dist/components/core/ResizeHandle.svelte +200 -0
  52. package/dist/components/core/ResizeHandle.svelte.d.ts +23 -0
  53. package/dist/components/core/Spinner.svelte +35 -0
  54. package/dist/components/core/Spinner.svelte.d.ts +7 -0
  55. package/dist/components/core/Textarea.svelte +112 -0
  56. package/dist/components/core/Textarea.svelte.d.ts +18 -0
  57. package/dist/components/core/Tooltip.svelte +103 -0
  58. package/dist/components/core/Tooltip.svelte.d.ts +11 -0
  59. package/dist/components/core/index.d.ts +13 -0
  60. package/dist/components/core/index.js +14 -0
  61. package/dist/components/editor/AIFocusLayer.svelte +430 -0
  62. package/dist/components/editor/AIFocusLayer.svelte.d.ts +32 -0
  63. package/dist/components/editor/Breadcrumbs.svelte +435 -0
  64. package/dist/components/editor/Breadcrumbs.svelte.d.ts +33 -0
  65. package/dist/components/editor/BreakpointLayer.svelte +642 -0
  66. package/dist/components/editor/BreakpointLayer.svelte.d.ts +20 -0
  67. package/dist/components/editor/CognitiveLoadMeter.svelte +324 -0
  68. package/dist/components/editor/CognitiveLoadMeter.svelte.d.ts +18 -0
  69. package/dist/components/editor/CollaborativeEditor.svelte +218 -0
  70. package/dist/components/editor/CollaborativeEditor.svelte.d.ts +32 -0
  71. package/dist/components/editor/CommandPalette.svelte +434 -0
  72. package/dist/components/editor/CommandPalette.svelte.d.ts +11 -0
  73. package/dist/components/editor/ComplexityLayer.svelte +293 -0
  74. package/dist/components/editor/ComplexityLayer.svelte.d.ts +23 -0
  75. package/dist/components/editor/ConflictZoneLayer.svelte +441 -0
  76. package/dist/components/editor/ConflictZoneLayer.svelte.d.ts +25 -0
  77. package/dist/components/editor/ContextLens.svelte +262 -0
  78. package/dist/components/editor/ContextLens.svelte.d.ts +27 -0
  79. package/dist/components/editor/CustomEditor.svelte +1242 -0
  80. package/dist/components/editor/CustomEditor.svelte.d.ts +37 -0
  81. package/dist/components/editor/DebugConsole.svelte +646 -0
  82. package/dist/components/editor/DebugConsole.svelte.d.ts +41 -0
  83. package/dist/components/editor/EchoCursorLayer.svelte +363 -0
  84. package/dist/components/editor/EchoCursorLayer.svelte.d.ts +24 -0
  85. package/dist/components/editor/Editor.svelte +61 -0
  86. package/dist/components/editor/Editor.svelte.d.ts +22 -0
  87. package/dist/components/editor/EditorGutter.svelte +119 -0
  88. package/dist/components/editor/EditorGutter.svelte.d.ts +19 -0
  89. package/dist/components/editor/EditorLines.svelte +182 -0
  90. package/dist/components/editor/EditorLines.svelte.d.ts +43 -0
  91. package/dist/components/editor/EditorPane.svelte +134 -0
  92. package/dist/components/editor/EditorPane.svelte.d.ts +9 -0
  93. package/dist/components/editor/EditorSelections.svelte +186 -0
  94. package/dist/components/editor/EditorSelections.svelte.d.ts +25 -0
  95. package/dist/components/editor/EditorTabs.svelte +170 -0
  96. package/dist/components/editor/EditorTabs.svelte.d.ts +12 -0
  97. package/dist/components/editor/FileExplorer.svelte +811 -0
  98. package/dist/components/editor/FileExplorer.svelte.d.ts +67 -0
  99. package/dist/components/editor/FileIcon.svelte +110 -0
  100. package/dist/components/editor/FileIcon.svelte.d.ts +10 -0
  101. package/dist/components/editor/FindReplace.svelte +448 -0
  102. package/dist/components/editor/FindReplace.svelte.d.ts +40 -0
  103. package/dist/components/editor/GhostBracketLayer.svelte +391 -0
  104. package/dist/components/editor/GhostBracketLayer.svelte.d.ts +24 -0
  105. package/dist/components/editor/GitBlameLayer.svelte +436 -0
  106. package/dist/components/editor/GitBlameLayer.svelte.d.ts +18 -0
  107. package/dist/components/editor/InlineDiagnosticsLayer.svelte +540 -0
  108. package/dist/components/editor/InlineDiagnosticsLayer.svelte.d.ts +35 -0
  109. package/dist/components/editor/InlineDiffLayer.svelte +337 -0
  110. package/dist/components/editor/InlineDiffLayer.svelte.d.ts +31 -0
  111. package/dist/components/editor/MinimalEditor.svelte +75 -0
  112. package/dist/components/editor/MinimalEditor.svelte.d.ts +6 -0
  113. package/dist/components/editor/MinimalEditor2.svelte +84 -0
  114. package/dist/components/editor/MinimalEditor2.svelte.d.ts +6 -0
  115. package/dist/components/editor/Minimap.svelte +327 -0
  116. package/dist/components/editor/Minimap.svelte.d.ts +34 -0
  117. package/dist/components/editor/PluginPreviewSandbox.svelte +793 -0
  118. package/dist/components/editor/PluginPreviewSandbox.svelte.d.ts +49 -0
  119. package/dist/components/editor/ProblemsPanel.svelte +628 -0
  120. package/dist/components/editor/ProblemsPanel.svelte.d.ts +25 -0
  121. package/dist/components/editor/QuickActionsMenu.svelte +403 -0
  122. package/dist/components/editor/QuickActionsMenu.svelte.d.ts +18 -0
  123. package/dist/components/editor/SnippetPalette.svelte +530 -0
  124. package/dist/components/editor/SnippetPalette.svelte.d.ts +16 -0
  125. package/dist/components/editor/StructureMap.svelte +431 -0
  126. package/dist/components/editor/StructureMap.svelte.d.ts +37 -0
  127. package/dist/components/editor/SymbolOutline.svelte +722 -0
  128. package/dist/components/editor/SymbolOutline.svelte.d.ts +44 -0
  129. package/dist/components/editor/TimelineScrubber.svelte +470 -0
  130. package/dist/components/editor/TimelineScrubber.svelte.d.ts +40 -0
  131. package/dist/components/editor/TokenRenderer.svelte +69 -0
  132. package/dist/components/editor/TokenRenderer.svelte.d.ts +15 -0
  133. package/dist/components/editor/constants.d.ts +32 -0
  134. package/dist/components/editor/constants.js +36 -0
  135. package/dist/components/editor/core/ai-awareness.d.ts +176 -0
  136. package/dist/components/editor/core/ai-awareness.js +210 -0
  137. package/dist/components/editor/core/bracket-healer.d.ts +189 -0
  138. package/dist/components/editor/core/bracket-healer.js +406 -0
  139. package/dist/components/editor/core/breakpoints.d.ts +203 -0
  140. package/dist/components/editor/core/breakpoints.js +414 -0
  141. package/dist/components/editor/core/commands.d.ts +108 -0
  142. package/dist/components/editor/core/commands.js +246 -0
  143. package/dist/components/editor/core/complexity-analyzer.d.ts +123 -0
  144. package/dist/components/editor/core/complexity-analyzer.js +376 -0
  145. package/dist/components/editor/core/conflict-predictor.d.ts +135 -0
  146. package/dist/components/editor/core/conflict-predictor.js +316 -0
  147. package/dist/components/editor/core/crdt-binding.d.ts +118 -0
  148. package/dist/components/editor/core/crdt-binding.js +286 -0
  149. package/dist/components/editor/core/diagnostics.d.ts +210 -0
  150. package/dist/components/editor/core/diagnostics.js +335 -0
  151. package/dist/components/editor/core/echo-cursor.d.ts +201 -0
  152. package/dist/components/editor/core/echo-cursor.js +267 -0
  153. package/dist/components/editor/core/folding.d.ts +124 -0
  154. package/dist/components/editor/core/folding.js +672 -0
  155. package/dist/components/editor/core/ghost-pair.d.ts +122 -0
  156. package/dist/components/editor/core/ghost-pair.js +221 -0
  157. package/dist/components/editor/core/git-blame.d.ts +170 -0
  158. package/dist/components/editor/core/git-blame.js +324 -0
  159. package/dist/components/editor/core/index.d.ts +26 -0
  160. package/dist/components/editor/core/index.js +24 -0
  161. package/dist/components/editor/core/keybindings.d.ts +79 -0
  162. package/dist/components/editor/core/keybindings.js +357 -0
  163. package/dist/components/editor/core/multi-cursor.d.ts +196 -0
  164. package/dist/components/editor/core/multi-cursor.js +521 -0
  165. package/dist/components/editor/core/navigation.d.ts +107 -0
  166. package/dist/components/editor/core/navigation.js +408 -0
  167. package/dist/components/editor/core/quick-actions.d.ts +189 -0
  168. package/dist/components/editor/core/quick-actions.js +427 -0
  169. package/dist/components/editor/core/search.d.ts +88 -0
  170. package/dist/components/editor/core/search.js +192 -0
  171. package/dist/components/editor/core/semantic-analyzer.d.ts +77 -0
  172. package/dist/components/editor/core/semantic-analyzer.js +424 -0
  173. package/dist/components/editor/core/snippet-manager.d.ts +202 -0
  174. package/dist/components/editor/core/snippet-manager.js +565 -0
  175. package/dist/components/editor/core/state.d.ts +367 -0
  176. package/dist/components/editor/core/state.js +900 -0
  177. package/dist/components/editor/core/timeline.d.ts +204 -0
  178. package/dist/components/editor/core/timeline.js +349 -0
  179. package/dist/components/editor/editor-find.d.ts +56 -0
  180. package/dist/components/editor/editor-find.js +148 -0
  181. package/dist/components/editor/editor-input.d.ts +77 -0
  182. package/dist/components/editor/editor-input.js +445 -0
  183. package/dist/components/editor/editor-multicursor.d.ts +21 -0
  184. package/dist/components/editor/editor-multicursor.js +196 -0
  185. package/dist/components/editor/editor-scroll.d.ts +14 -0
  186. package/dist/components/editor/editor-scroll.js +34 -0
  187. package/dist/components/editor/index.d.ts +15 -0
  188. package/dist/components/editor/index.js +21 -0
  189. package/dist/components/editor/languages.d.ts +62 -0
  190. package/dist/components/editor/languages.js +285 -0
  191. package/dist/components/editor/theme.d.ts +88 -0
  192. package/dist/components/editor/theme.js +139 -0
  193. package/dist/components/editor/tokenizer/base.d.ts +40 -0
  194. package/dist/components/editor/tokenizer/base.js +203 -0
  195. package/dist/components/editor/tokenizer/index.d.ts +56 -0
  196. package/dist/components/editor/tokenizer/index.js +215 -0
  197. package/dist/components/editor/tokenizer/languages/css.d.ts +17 -0
  198. package/dist/components/editor/tokenizer/languages/css.js +194 -0
  199. package/dist/components/editor/tokenizer/languages/go.d.ts +17 -0
  200. package/dist/components/editor/tokenizer/languages/go.js +220 -0
  201. package/dist/components/editor/tokenizer/languages/html.d.ts +24 -0
  202. package/dist/components/editor/tokenizer/languages/html.js +145 -0
  203. package/dist/components/editor/tokenizer/languages/javascript.d.ts +56 -0
  204. package/dist/components/editor/tokenizer/languages/javascript.js +452 -0
  205. package/dist/components/editor/tokenizer/languages/json.d.ts +12 -0
  206. package/dist/components/editor/tokenizer/languages/json.js +91 -0
  207. package/dist/components/editor/tokenizer/languages/markdown.d.ts +16 -0
  208. package/dist/components/editor/tokenizer/languages/markdown.js +156 -0
  209. package/dist/components/editor/tokenizer/languages/python.d.ts +20 -0
  210. package/dist/components/editor/tokenizer/languages/python.js +227 -0
  211. package/dist/components/editor/tokenizer/languages/svelte.d.ts +40 -0
  212. package/dist/components/editor/tokenizer/languages/svelte.js +326 -0
  213. package/dist/components/editor/tokenizer/types.d.ts +86 -0
  214. package/dist/components/editor/tokenizer/types.js +4 -0
  215. package/dist/components/layout/IDELayout.svelte +274 -0
  216. package/dist/components/layout/IDELayout.svelte.d.ts +29 -0
  217. package/dist/components/layout/StatusBar.svelte +511 -0
  218. package/dist/components/layout/StatusBar.svelte.d.ts +47 -0
  219. package/dist/components/layout/index.d.ts +2 -0
  220. package/dist/components/layout/index.js +3 -0
  221. package/dist/components/lsp/AutocompleteWidget.svelte +364 -0
  222. package/dist/components/lsp/AutocompleteWidget.svelte.d.ts +33 -0
  223. package/dist/components/lsp/DiagnosticMarker.svelte +166 -0
  224. package/dist/components/lsp/DiagnosticMarker.svelte.d.ts +19 -0
  225. package/dist/components/lsp/DiagnosticsPanel.svelte +388 -0
  226. package/dist/components/lsp/DiagnosticsPanel.svelte.d.ts +21 -0
  227. package/dist/components/lsp/HoverTooltip.svelte +274 -0
  228. package/dist/components/lsp/HoverTooltip.svelte.d.ts +24 -0
  229. package/dist/components/lsp/LSPEditor.svelte +486 -0
  230. package/dist/components/lsp/LSPEditor.svelte.d.ts +39 -0
  231. package/dist/components/lsp/SignatureHelpWidget.svelte +216 -0
  232. package/dist/components/lsp/SignatureHelpWidget.svelte.d.ts +22 -0
  233. package/dist/components/lsp/index.d.ts +6 -0
  234. package/dist/components/lsp/index.js +7 -0
  235. package/dist/components/plugins/PluginCard.svelte +153 -0
  236. package/dist/components/plugins/PluginCard.svelte.d.ts +19 -0
  237. package/dist/components/plugins/PluginPanel.svelte +280 -0
  238. package/dist/components/plugins/PluginPanel.svelte.d.ts +8 -0
  239. package/dist/components/plugins/PluginProposalForm.svelte +250 -0
  240. package/dist/components/plugins/PluginProposalForm.svelte.d.ts +6 -0
  241. package/dist/components/plugins/PluginStatusBadge.svelte +14 -0
  242. package/dist/components/plugins/PluginStatusBadge.svelte.d.ts +8 -0
  243. package/dist/components/plugins/index.d.ts +4 -0
  244. package/dist/components/plugins/index.js +5 -0
  245. package/dist/components/vfs/LockConflictDialog.svelte +705 -0
  246. package/dist/components/vfs/LockConflictDialog.svelte.d.ts +21 -0
  247. package/dist/components/vfs/LockIndicator.svelte +194 -0
  248. package/dist/components/vfs/LockIndicator.svelte.d.ts +29 -0
  249. package/dist/components/vfs/LockOverlay.svelte +344 -0
  250. package/dist/components/vfs/LockOverlay.svelte.d.ts +17 -0
  251. package/dist/components/vfs/VersionConflictDialog.svelte +549 -0
  252. package/dist/components/vfs/VersionConflictDialog.svelte.d.ts +24 -0
  253. package/dist/components/vfs/index.d.ts +4 -0
  254. package/dist/components/vfs/index.js +5 -0
  255. package/dist/crdt/awareness.d.ts +42 -0
  256. package/dist/crdt/awareness.js +109 -0
  257. package/dist/crdt/document.d.ts +101 -0
  258. package/dist/crdt/document.js +187 -0
  259. package/dist/crdt/index.d.ts +9 -0
  260. package/dist/crdt/index.js +8 -0
  261. package/dist/crdt/provider.d.ts +85 -0
  262. package/dist/crdt/provider.js +150 -0
  263. package/dist/crdt/types.d.ts +61 -0
  264. package/dist/crdt/types.js +4 -0
  265. package/dist/crdt/undo.d.ts +34 -0
  266. package/dist/crdt/undo.js +70 -0
  267. package/dist/index.d.ts +277 -0
  268. package/dist/index.js +280 -0
  269. package/dist/plugins/index.d.ts +103 -0
  270. package/dist/plugins/index.js +153 -0
  271. package/dist/services/error-handling.d.ts +95 -0
  272. package/dist/services/error-handling.js +413 -0
  273. package/dist/services/ide-integration.d.ts +83 -0
  274. package/dist/services/ide-integration.js +367 -0
  275. package/dist/services/lsp-client.d.ts +69 -0
  276. package/dist/services/lsp-client.js +667 -0
  277. package/dist/services/mock-ai.d.ts +37 -0
  278. package/dist/services/mock-ai.js +318 -0
  279. package/dist/services/optimistic.d.ts +141 -0
  280. package/dist/services/optimistic.js +367 -0
  281. package/dist/services/vfs-client.d.ts +81 -0
  282. package/dist/services/vfs-client.js +348 -0
  283. package/dist/stores/agents.svelte.d.ts +85 -0
  284. package/dist/stores/agents.svelte.js +459 -0
  285. package/dist/stores/ai-persistence.svelte.d.ts +76 -0
  286. package/dist/stores/ai-persistence.svelte.js +334 -0
  287. package/dist/stores/ai.svelte.d.ts +140 -0
  288. package/dist/stores/ai.svelte.js +383 -0
  289. package/dist/stores/collaboration.svelte.d.ts +164 -0
  290. package/dist/stores/collaboration.svelte.js +334 -0
  291. package/dist/stores/editor.svelte.d.ts +131 -0
  292. package/dist/stores/editor.svelte.js +250 -0
  293. package/dist/stores/index.d.ts +10 -0
  294. package/dist/stores/index.js +29 -0
  295. package/dist/stores/layout.svelte.d.ts +171 -0
  296. package/dist/stores/layout.svelte.js +351 -0
  297. package/dist/stores/plugin.svelte.d.ts +121 -0
  298. package/dist/stores/plugin.svelte.js +410 -0
  299. package/dist/stores/vfs.svelte.d.ts +123 -0
  300. package/dist/stores/vfs.svelte.js +680 -0
  301. package/dist/styles/theme.css +623 -0
  302. package/dist/types/agents.d.ts +127 -0
  303. package/dist/types/agents.js +5 -0
  304. package/dist/types/ai.d.ts +137 -0
  305. package/dist/types/ai.js +4 -0
  306. package/dist/types/crdt.d.ts +222 -0
  307. package/dist/types/crdt.js +5 -0
  308. package/dist/types/editor.d.ts +52 -0
  309. package/dist/types/editor.js +18 -0
  310. package/dist/types/events.d.ts +133 -0
  311. package/dist/types/events.js +4 -0
  312. package/dist/types/filesystem.d.ts +77 -0
  313. package/dist/types/filesystem.js +4 -0
  314. package/dist/types/index.d.ts +9 -0
  315. package/dist/types/index.js +12 -0
  316. package/dist/types/lsp.d.ts +691 -0
  317. package/dist/types/lsp.js +108 -0
  318. package/dist/types/plugin.d.ts +239 -0
  319. package/dist/types/plugin.js +5 -0
  320. package/dist/types/vfs.d.ts +191 -0
  321. package/dist/types/vfs.js +18 -0
  322. package/dist/utils/format.d.ts +55 -0
  323. package/dist/utils/format.js +152 -0
  324. package/dist/utils/index.d.ts +3 -0
  325. package/dist/utils/index.js +4 -0
  326. package/dist/utils/keybindings.d.ts +33 -0
  327. package/dist/utils/keybindings.js +171 -0
  328. package/dist/utils/language.d.ts +27 -0
  329. package/dist/utils/language.js +222 -0
  330. package/package.json +178 -0
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Plugin System API
3
+ *
4
+ * A proposal-based plugin/extension system. Plugins move through a
5
+ * lifecycle (draft → review → testing → deployed) coordinated by a backend
6
+ * "plugin host" that you provide. See {@link createPluginLoader} and the
7
+ * plugin store for the HTTP/SSE contract the host is expected to implement.
8
+ *
9
+ * Plugins can be:
10
+ * 1. UI Components (server-rendered by the plugin host)
11
+ * 2. JS Modules (executed by the plugin host, out of band)
12
+ * 3. Actions (commands that can be invoked)
13
+ * 4. Providers (services that provide data/functionality)
14
+ */
15
+ import type { PluginManifest, PluginInstance, PluginCommand, PluginPanel } from '../types';
16
+ /**
17
+ * Plugin registry for managing loaded plugins
18
+ */
19
+ declare class PluginRegistry {
20
+ private plugins;
21
+ private commands;
22
+ private panels;
23
+ /**
24
+ * Register a plugin instance
25
+ */
26
+ register(plugin: PluginInstance): void;
27
+ /**
28
+ * Unregister a plugin
29
+ */
30
+ unregister(pluginId: string): void;
31
+ /**
32
+ * Get a plugin by ID
33
+ */
34
+ get(pluginId: string): PluginInstance | undefined;
35
+ /**
36
+ * Get all plugins
37
+ */
38
+ getAll(): PluginInstance[];
39
+ /**
40
+ * Register a command
41
+ */
42
+ registerCommand(pluginId: string, command: PluginCommand): void;
43
+ /**
44
+ * Execute a command
45
+ */
46
+ executeCommand(commandId: string): Promise<void>;
47
+ /**
48
+ * Get all commands
49
+ */
50
+ getCommands(): PluginCommand[];
51
+ /**
52
+ * Register a panel
53
+ */
54
+ registerPanel(pluginId: string, panel: PluginPanel): void;
55
+ /**
56
+ * Get all panels
57
+ */
58
+ getPanels(): PluginPanel[];
59
+ /**
60
+ * Get panels by position
61
+ */
62
+ getPanelsByPosition(position: 'left' | 'right' | 'bottom'): PluginPanel[];
63
+ }
64
+ export declare const pluginRegistry: PluginRegistry;
65
+ /**
66
+ * Plugin loader for server-rendered components served by the plugin host
67
+ */
68
+ export interface PluginLoader {
69
+ /**
70
+ * Load a plugin component from the server
71
+ */
72
+ loadComponent(proposalId: string, componentPath: string): Promise<{
73
+ default: unknown;
74
+ }>;
75
+ /**
76
+ * Load a plugin module from the server
77
+ */
78
+ loadModule(proposalId: string, entryPoint: string): Promise<Record<string, unknown>>;
79
+ }
80
+ /**
81
+ * Create a plugin loader bound to a plugin-host HTTP API.
82
+ *
83
+ * @param apiBase - Base path of the plugin host's REST API (same-origin).
84
+ * Defaults to `/api/plugins`.
85
+ */
86
+ export declare function createPluginLoader(apiBase?: string): PluginLoader;
87
+ /**
88
+ * Define a plugin manifest
89
+ */
90
+ export declare function definePlugin(manifest: PluginManifest): PluginManifest;
91
+ /**
92
+ * Define a plugin command
93
+ */
94
+ export declare function defineCommand(command: Omit<PluginCommand, 'id'> & {
95
+ id: string;
96
+ }): PluginCommand;
97
+ /**
98
+ * Define a plugin panel
99
+ */
100
+ export declare function definePanel(panel: Omit<PluginPanel, 'id'> & {
101
+ id: string;
102
+ }): PluginPanel;
103
+ export {};
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Plugin System API
3
+ *
4
+ * A proposal-based plugin/extension system. Plugins move through a
5
+ * lifecycle (draft → review → testing → deployed) coordinated by a backend
6
+ * "plugin host" that you provide. See {@link createPluginLoader} and the
7
+ * plugin store for the HTTP/SSE contract the host is expected to implement.
8
+ *
9
+ * Plugins can be:
10
+ * 1. UI Components (server-rendered by the plugin host)
11
+ * 2. JS Modules (executed by the plugin host, out of band)
12
+ * 3. Actions (commands that can be invoked)
13
+ * 4. Providers (services that provide data/functionality)
14
+ */
15
+ /**
16
+ * Plugin registry for managing loaded plugins
17
+ */
18
+ class PluginRegistry {
19
+ plugins = new Map();
20
+ commands = new Map();
21
+ panels = new Map();
22
+ /**
23
+ * Register a plugin instance
24
+ */
25
+ register(plugin) {
26
+ this.plugins.set(plugin.id, plugin);
27
+ }
28
+ /**
29
+ * Unregister a plugin
30
+ */
31
+ unregister(pluginId) {
32
+ const plugin = this.plugins.get(pluginId);
33
+ if (plugin) {
34
+ plugin.dispose?.();
35
+ this.plugins.delete(pluginId);
36
+ // Remove associated commands and panels
37
+ for (const [id] of this.commands) {
38
+ if (id.startsWith(`${pluginId}:`)) {
39
+ this.commands.delete(id);
40
+ }
41
+ }
42
+ for (const [id] of this.panels) {
43
+ if (id.startsWith(`${pluginId}:`)) {
44
+ this.panels.delete(id);
45
+ }
46
+ }
47
+ }
48
+ }
49
+ /**
50
+ * Get a plugin by ID
51
+ */
52
+ get(pluginId) {
53
+ return this.plugins.get(pluginId);
54
+ }
55
+ /**
56
+ * Get all plugins
57
+ */
58
+ getAll() {
59
+ return Array.from(this.plugins.values());
60
+ }
61
+ /**
62
+ * Register a command
63
+ */
64
+ registerCommand(pluginId, command) {
65
+ const fullId = `${pluginId}:${command.id}`;
66
+ this.commands.set(fullId, { ...command, id: fullId });
67
+ }
68
+ /**
69
+ * Execute a command
70
+ */
71
+ async executeCommand(commandId) {
72
+ const command = this.commands.get(commandId);
73
+ if (command) {
74
+ await command.handler();
75
+ }
76
+ }
77
+ /**
78
+ * Get all commands
79
+ */
80
+ getCommands() {
81
+ return Array.from(this.commands.values());
82
+ }
83
+ /**
84
+ * Register a panel
85
+ */
86
+ registerPanel(pluginId, panel) {
87
+ const fullId = `${pluginId}:${panel.id}`;
88
+ this.panels.set(fullId, { ...panel, id: fullId });
89
+ }
90
+ /**
91
+ * Get all panels
92
+ */
93
+ getPanels() {
94
+ return Array.from(this.panels.values());
95
+ }
96
+ /**
97
+ * Get panels by position
98
+ */
99
+ getPanelsByPosition(position) {
100
+ return this.getPanels().filter((p) => p.position === position);
101
+ }
102
+ }
103
+ // Global plugin registry
104
+ export const pluginRegistry = new PluginRegistry();
105
+ /**
106
+ * Create a plugin loader bound to a plugin-host HTTP API.
107
+ *
108
+ * @param apiBase - Base path of the plugin host's REST API (same-origin).
109
+ * Defaults to `/api/plugins`.
110
+ */
111
+ export function createPluginLoader(apiBase = '/api/plugins') {
112
+ return {
113
+ async loadComponent(proposalId, componentPath) {
114
+ const url = `${apiBase}/plugins/${proposalId}/component?path=${encodeURIComponent(componentPath)}`;
115
+ const response = await fetch(url);
116
+ if (!response.ok) {
117
+ throw new Error(`Failed to load component: ${response.status}`);
118
+ }
119
+ // The server returns a compiled Svelte component
120
+ // (the plugin host compiles and returns the component)
121
+ const module = await response.json();
122
+ return module;
123
+ },
124
+ async loadModule(proposalId, entryPoint) {
125
+ const url = `${apiBase}/plugins/${proposalId}/module?entry=${encodeURIComponent(entryPoint)}`;
126
+ const response = await fetch(url);
127
+ if (!response.ok) {
128
+ throw new Error(`Failed to load module: ${response.status}`);
129
+ }
130
+ // The server executes the module in a sandbox and returns the exports
131
+ const exports = await response.json();
132
+ return exports;
133
+ }
134
+ };
135
+ }
136
+ /**
137
+ * Define a plugin manifest
138
+ */
139
+ export function definePlugin(manifest) {
140
+ return manifest;
141
+ }
142
+ /**
143
+ * Define a plugin command
144
+ */
145
+ export function defineCommand(command) {
146
+ return command;
147
+ }
148
+ /**
149
+ * Define a plugin panel
150
+ */
151
+ export function definePanel(panel) {
152
+ return panel;
153
+ }
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Error Handling Service
3
+ *
4
+ * Provides structured error types, recovery strategies, and user-friendly error messages.
5
+ */
6
+ export type VFSErrorCode = 'NETWORK_ERROR' | 'CONNECTION_LOST' | 'TIMEOUT' | 'FILE_LOCKED' | 'LOCK_EXPIRED' | 'LOCK_CONFLICT' | 'VERSION_CONFLICT' | 'FILE_NOT_FOUND' | 'PERMISSION_DENIED' | 'WORKSPACE_NOT_FOUND' | 'INVALID_OPERATION' | 'SERVER_ERROR' | 'RATE_LIMITED' | 'UNKNOWN';
7
+ export interface VFSError extends Error {
8
+ code: VFSErrorCode;
9
+ statusCode?: number;
10
+ path?: string;
11
+ workspaceId?: string;
12
+ retryable: boolean;
13
+ userMessage: string;
14
+ technicalDetails?: string;
15
+ recoveryOptions: RecoveryOption[];
16
+ }
17
+ export interface RecoveryOption {
18
+ id: string;
19
+ label: string;
20
+ description: string;
21
+ action: 'retry' | 'force' | 'merge' | 'discard' | 'refresh' | 'wait' | 'cancel';
22
+ recommended?: boolean;
23
+ dangerous?: boolean;
24
+ }
25
+ /**
26
+ * Create a structured VFS error
27
+ */
28
+ export declare function createVFSError(code: VFSErrorCode, message: string, options?: {
29
+ statusCode?: number;
30
+ path?: string;
31
+ workspaceId?: string;
32
+ cause?: Error;
33
+ }): VFSError;
34
+ /**
35
+ * Parse an error response into a VFSError
36
+ */
37
+ export declare function parseError(error: unknown, context?: {
38
+ path?: string;
39
+ workspaceId?: string;
40
+ }): VFSError;
41
+ /**
42
+ * Check if error is a VFSError
43
+ */
44
+ export declare function isVFSError(error: unknown): error is VFSError;
45
+ /**
46
+ * Check if error is a conflict that needs user resolution
47
+ */
48
+ export declare function isConflictError(error: VFSError): boolean;
49
+ /**
50
+ * Check if error is recoverable with user action
51
+ */
52
+ export declare function isRecoverableError(error: VFSError): boolean;
53
+ export interface ErrorRecoveryHandler {
54
+ onRetry: () => Promise<void>;
55
+ onForce: () => Promise<void>;
56
+ onMerge: () => Promise<void>;
57
+ onDiscard: () => Promise<void>;
58
+ onRefresh: () => Promise<void>;
59
+ onWait: () => Promise<void>;
60
+ onCancel: () => void;
61
+ }
62
+ /**
63
+ * Execute a recovery action
64
+ */
65
+ export declare function executeRecovery(option: RecoveryOption, handlers: Partial<ErrorRecoveryHandler>): Promise<void>;
66
+ export interface AggregatedErrors {
67
+ total: number;
68
+ byCode: Map<VFSErrorCode, VFSError[]>;
69
+ retryable: VFSError[];
70
+ needsUserAction: VFSError[];
71
+ fatal: VFSError[];
72
+ }
73
+ /**
74
+ * Aggregate multiple errors for batch operations
75
+ */
76
+ export declare function aggregateErrors(errors: VFSError[]): AggregatedErrors;
77
+ export type ErrorLogLevel = 'error' | 'warn' | 'info' | 'debug';
78
+ export interface ErrorLogEntry {
79
+ timestamp: number;
80
+ error: VFSError;
81
+ level: ErrorLogLevel;
82
+ context?: Record<string, unknown>;
83
+ }
84
+ /**
85
+ * Log an error
86
+ */
87
+ export declare function logError(error: VFSError, level?: ErrorLogLevel, context?: Record<string, unknown>): void;
88
+ /**
89
+ * Get recent errors
90
+ */
91
+ export declare function getRecentErrors(limit?: number): ErrorLogEntry[];
92
+ /**
93
+ * Clear error log
94
+ */
95
+ export declare function clearErrorLog(): void;