@practicalkit/plugin-sdk 0.0.2

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 (310) hide show
  1. package/README.md +5 -0
  2. package/dist/src/PracticalKitSdk.d.ts +184 -0
  3. package/dist/src/PracticalKitSdk.d.ts.map +1 -0
  4. package/dist/src/PracticalKitSdk.js +230 -0
  5. package/dist/src/PracticalKitSdk.js.map +1 -0
  6. package/dist/src/index.d.ts +5 -0
  7. package/dist/src/index.d.ts.map +1 -0
  8. package/dist/src/index.js +6 -0
  9. package/dist/src/index.js.map +1 -0
  10. package/dist/src/keyboard/KeyboardShortcutForwarder.d.ts +18 -0
  11. package/dist/src/keyboard/KeyboardShortcutForwarder.d.ts.map +1 -0
  12. package/dist/src/keyboard/KeyboardShortcutForwarder.js +36 -0
  13. package/dist/src/keyboard/KeyboardShortcutForwarder.js.map +1 -0
  14. package/dist/src/keyboard/index.d.ts +2 -0
  15. package/dist/src/keyboard/index.d.ts.map +1 -0
  16. package/dist/src/keyboard/index.js +2 -0
  17. package/dist/src/keyboard/index.js.map +1 -0
  18. package/dist/src/llm/ToolRegistry.d.ts +49 -0
  19. package/dist/src/llm/ToolRegistry.d.ts.map +1 -0
  20. package/dist/src/llm/ToolRegistry.js +126 -0
  21. package/dist/src/llm/ToolRegistry.js.map +1 -0
  22. package/dist/src/logs/channel/IFrameLogChannelAdapter.d.ts +8 -0
  23. package/dist/src/logs/channel/IFrameLogChannelAdapter.d.ts.map +1 -0
  24. package/dist/src/logs/channel/IFrameLogChannelAdapter.js +34 -0
  25. package/dist/src/logs/channel/IFrameLogChannelAdapter.js.map +1 -0
  26. package/dist/src/logs/channel/ILogChannelAdapter.d.ts +5 -0
  27. package/dist/src/logs/channel/ILogChannelAdapter.d.ts.map +1 -0
  28. package/dist/src/logs/channel/ILogChannelAdapter.js +2 -0
  29. package/dist/src/logs/channel/ILogChannelAdapter.js.map +1 -0
  30. package/dist/src/logs/channel/LogChannel.d.ts +21 -0
  31. package/dist/src/logs/channel/LogChannel.d.ts.map +1 -0
  32. package/dist/src/logs/channel/LogChannel.js +41 -0
  33. package/dist/src/logs/channel/LogChannel.js.map +1 -0
  34. package/dist/src/logs/outputs/types.d.ts +18 -0
  35. package/dist/src/logs/outputs/types.d.ts.map +1 -0
  36. package/dist/src/logs/outputs/types.js +2 -0
  37. package/dist/src/logs/outputs/types.js.map +1 -0
  38. package/dist/src/messages/IFrameClient.d.ts +33 -0
  39. package/dist/src/messages/IFrameClient.d.ts.map +1 -0
  40. package/dist/src/messages/IFrameClient.js +88 -0
  41. package/dist/src/messages/IFrameClient.js.map +1 -0
  42. package/dist/src/messages/IFrameMessageBus.d.ts +10 -0
  43. package/dist/src/messages/IFrameMessageBus.d.ts.map +1 -0
  44. package/dist/src/messages/IFrameMessageBus.js +24 -0
  45. package/dist/src/messages/IFrameMessageBus.js.map +1 -0
  46. package/dist/src/messages/base/index.d.ts +8 -0
  47. package/dist/src/messages/base/index.d.ts.map +1 -0
  48. package/dist/src/messages/base/index.js +9 -0
  49. package/dist/src/messages/base/index.js.map +1 -0
  50. package/dist/src/messages/document/index.d.ts +5 -0
  51. package/dist/src/messages/document/index.d.ts.map +1 -0
  52. package/dist/src/messages/document/index.js +5 -0
  53. package/dist/src/messages/document/index.js.map +1 -0
  54. package/dist/src/messages/document/requestContent/message.schemas.d.ts +34 -0
  55. package/dist/src/messages/document/requestContent/message.schemas.d.ts.map +1 -0
  56. package/dist/src/messages/document/requestContent/message.schemas.js +21 -0
  57. package/dist/src/messages/document/requestContent/message.schemas.js.map +1 -0
  58. package/dist/src/messages/document/save/index.d.ts +2 -0
  59. package/dist/src/messages/document/save/index.d.ts.map +1 -0
  60. package/dist/src/messages/document/save/index.js +2 -0
  61. package/dist/src/messages/document/save/index.js.map +1 -0
  62. package/dist/src/messages/document/save/message.schemas.d.ts +34 -0
  63. package/dist/src/messages/document/save/message.schemas.d.ts.map +1 -0
  64. package/dist/src/messages/document/save/message.schemas.js +21 -0
  65. package/dist/src/messages/document/save/message.schemas.js.map +1 -0
  66. package/dist/src/messages/document/saveRequested/message.schemas.d.ts +41 -0
  67. package/dist/src/messages/document/saveRequested/message.schemas.d.ts.map +1 -0
  68. package/dist/src/messages/document/saveRequested/message.schemas.js +28 -0
  69. package/dist/src/messages/document/saveRequested/message.schemas.js.map +1 -0
  70. package/dist/src/messages/document/saved/message.schemas.d.ts +39 -0
  71. package/dist/src/messages/document/saved/message.schemas.d.ts.map +1 -0
  72. package/dist/src/messages/document/saved/message.schemas.js +26 -0
  73. package/dist/src/messages/document/saved/message.schemas.js.map +1 -0
  74. package/dist/src/messages/editor/index.d.ts +2 -0
  75. package/dist/src/messages/editor/index.d.ts.map +1 -0
  76. package/dist/src/messages/editor/index.js +2 -0
  77. package/dist/src/messages/editor/index.js.map +1 -0
  78. package/dist/src/messages/editor/openFile/message.schemas.d.ts +30 -0
  79. package/dist/src/messages/editor/openFile/message.schemas.d.ts.map +1 -0
  80. package/dist/src/messages/editor/openFile/message.schemas.js +17 -0
  81. package/dist/src/messages/editor/openFile/message.schemas.js.map +1 -0
  82. package/dist/src/messages/fs/fileChanged/message.schemas.d.ts +10 -0
  83. package/dist/src/messages/fs/fileChanged/message.schemas.d.ts.map +1 -0
  84. package/dist/src/messages/fs/fileChanged/message.schemas.js +10 -0
  85. package/dist/src/messages/fs/fileChanged/message.schemas.js.map +1 -0
  86. package/dist/src/messages/fs/index.d.ts +3 -0
  87. package/dist/src/messages/fs/index.d.ts.map +1 -0
  88. package/dist/src/messages/fs/index.js +3 -0
  89. package/dist/src/messages/fs/index.js.map +1 -0
  90. package/dist/src/messages/fs/subscribe/message.schemas.d.ts +54 -0
  91. package/dist/src/messages/fs/subscribe/message.schemas.d.ts.map +1 -0
  92. package/dist/src/messages/fs/subscribe/message.schemas.js +27 -0
  93. package/dist/src/messages/fs/subscribe/message.schemas.js.map +1 -0
  94. package/dist/src/messages/index.d.ts +15 -0
  95. package/dist/src/messages/index.d.ts.map +1 -0
  96. package/dist/src/messages/index.js +29 -0
  97. package/dist/src/messages/index.js.map +1 -0
  98. package/dist/src/messages/llm/index.d.ts +148 -0
  99. package/dist/src/messages/llm/index.d.ts.map +1 -0
  100. package/dist/src/messages/llm/index.js +124 -0
  101. package/dist/src/messages/llm/index.js.map +1 -0
  102. package/dist/src/messages/logs/index.d.ts +26 -0
  103. package/dist/src/messages/logs/index.d.ts.map +1 -0
  104. package/dist/src/messages/logs/index.js +24 -0
  105. package/dist/src/messages/logs/index.js.map +1 -0
  106. package/dist/src/messages/native/call/message.schemas.d.ts +34 -0
  107. package/dist/src/messages/native/call/message.schemas.d.ts.map +1 -0
  108. package/dist/src/messages/native/call/message.schemas.js +22 -0
  109. package/dist/src/messages/native/call/message.schemas.js.map +1 -0
  110. package/dist/src/messages/native/index.d.ts +2 -0
  111. package/dist/src/messages/native/index.d.ts.map +1 -0
  112. package/dist/src/messages/native/index.js +2 -0
  113. package/dist/src/messages/native/index.js.map +1 -0
  114. package/dist/src/messages/plugin/index.d.ts +78 -0
  115. package/dist/src/messages/plugin/index.d.ts.map +1 -0
  116. package/dist/src/messages/plugin/index.js +72 -0
  117. package/dist/src/messages/plugin/index.js.map +1 -0
  118. package/dist/src/messages/storage/index.d.ts +126 -0
  119. package/dist/src/messages/storage/index.d.ts.map +1 -0
  120. package/dist/src/messages/storage/index.js +109 -0
  121. package/dist/src/messages/storage/index.js.map +1 -0
  122. package/dist/src/messages/ui/UiChannel.d.ts +68 -0
  123. package/dist/src/messages/ui/UiChannel.d.ts.map +1 -0
  124. package/dist/src/messages/ui/UiChannel.js +81 -0
  125. package/dist/src/messages/ui/UiChannel.js.map +1 -0
  126. package/dist/src/messages/ui/confirm/index.d.ts +2 -0
  127. package/dist/src/messages/ui/confirm/index.d.ts.map +1 -0
  128. package/dist/src/messages/ui/confirm/index.js +2 -0
  129. package/dist/src/messages/ui/confirm/index.js.map +1 -0
  130. package/dist/src/messages/ui/confirm/message.schemas.d.ts +39 -0
  131. package/dist/src/messages/ui/confirm/message.schemas.d.ts.map +1 -0
  132. package/dist/src/messages/ui/confirm/message.schemas.js +25 -0
  133. package/dist/src/messages/ui/confirm/message.schemas.js.map +1 -0
  134. package/dist/src/messages/ui/getState/message.schemas.d.ts +38 -0
  135. package/dist/src/messages/ui/getState/message.schemas.d.ts.map +1 -0
  136. package/dist/src/messages/ui/getState/message.schemas.js +21 -0
  137. package/dist/src/messages/ui/getState/message.schemas.js.map +1 -0
  138. package/dist/src/messages/ui/index.d.ts +8 -0
  139. package/dist/src/messages/ui/index.d.ts.map +1 -0
  140. package/dist/src/messages/ui/index.js +8 -0
  141. package/dist/src/messages/ui/index.js.map +1 -0
  142. package/dist/src/messages/ui/setCollapseState/message.schemas.d.ts +33 -0
  143. package/dist/src/messages/ui/setCollapseState/message.schemas.d.ts.map +1 -0
  144. package/dist/src/messages/ui/setCollapseState/message.schemas.js +19 -0
  145. package/dist/src/messages/ui/setCollapseState/message.schemas.js.map +1 -0
  146. package/dist/src/messages/ui/showContextMenu/message.schemas.d.ts +61 -0
  147. package/dist/src/messages/ui/showContextMenu/message.schemas.d.ts.map +1 -0
  148. package/dist/src/messages/ui/showContextMenu/message.schemas.js +37 -0
  149. package/dist/src/messages/ui/showContextMenu/message.schemas.js.map +1 -0
  150. package/dist/src/messages/ui/showNotification/message.schemas.d.ts +38 -0
  151. package/dist/src/messages/ui/showNotification/message.schemas.d.ts.map +1 -0
  152. package/dist/src/messages/ui/showNotification/message.schemas.js +29 -0
  153. package/dist/src/messages/ui/showNotification/message.schemas.js.map +1 -0
  154. package/dist/src/messages/ui/tabsChanged/message.schemas.d.ts +24 -0
  155. package/dist/src/messages/ui/tabsChanged/message.schemas.d.ts.map +1 -0
  156. package/dist/src/messages/ui/tabsChanged/message.schemas.js +15 -0
  157. package/dist/src/messages/ui/tabsChanged/message.schemas.js.map +1 -0
  158. package/dist/src/messages/vfs/createDir/message.schemas.d.ts +30 -0
  159. package/dist/src/messages/vfs/createDir/message.schemas.d.ts.map +1 -0
  160. package/dist/src/messages/vfs/createDir/message.schemas.js +17 -0
  161. package/dist/src/messages/vfs/createDir/message.schemas.js.map +1 -0
  162. package/dist/src/messages/vfs/delete/message.schemas.d.ts +30 -0
  163. package/dist/src/messages/vfs/delete/message.schemas.d.ts.map +1 -0
  164. package/dist/src/messages/vfs/delete/message.schemas.js +17 -0
  165. package/dist/src/messages/vfs/delete/message.schemas.js.map +1 -0
  166. package/dist/src/messages/vfs/exists/message.schemas.d.ts +34 -0
  167. package/dist/src/messages/vfs/exists/message.schemas.d.ts.map +1 -0
  168. package/dist/src/messages/vfs/exists/message.schemas.js +21 -0
  169. package/dist/src/messages/vfs/exists/message.schemas.js.map +1 -0
  170. package/dist/src/messages/vfs/getAbsolutePath/message.schemas.d.ts +33 -0
  171. package/dist/src/messages/vfs/getAbsolutePath/message.schemas.d.ts.map +1 -0
  172. package/dist/src/messages/vfs/getAbsolutePath/message.schemas.js +20 -0
  173. package/dist/src/messages/vfs/getAbsolutePath/message.schemas.js.map +1 -0
  174. package/dist/src/messages/vfs/index.d.ts +9 -0
  175. package/dist/src/messages/vfs/index.d.ts.map +1 -0
  176. package/dist/src/messages/vfs/index.js +9 -0
  177. package/dist/src/messages/vfs/index.js.map +1 -0
  178. package/dist/src/messages/vfs/readDir/message.schemas.d.ts +41 -0
  179. package/dist/src/messages/vfs/readDir/message.schemas.d.ts.map +1 -0
  180. package/dist/src/messages/vfs/readDir/message.schemas.js +23 -0
  181. package/dist/src/messages/vfs/readDir/message.schemas.js.map +1 -0
  182. package/dist/src/messages/vfs/readFile/message.schemas.d.ts +31 -0
  183. package/dist/src/messages/vfs/readFile/message.schemas.d.ts.map +1 -0
  184. package/dist/src/messages/vfs/readFile/message.schemas.js +18 -0
  185. package/dist/src/messages/vfs/readFile/message.schemas.js.map +1 -0
  186. package/dist/src/messages/vfs/rename/message.schemas.d.ts +31 -0
  187. package/dist/src/messages/vfs/rename/message.schemas.d.ts.map +1 -0
  188. package/dist/src/messages/vfs/rename/message.schemas.js +18 -0
  189. package/dist/src/messages/vfs/rename/message.schemas.js.map +1 -0
  190. package/dist/src/messages/vfs/writeFile/message.schemas.d.ts +31 -0
  191. package/dist/src/messages/vfs/writeFile/message.schemas.d.ts.map +1 -0
  192. package/dist/src/messages/vfs/writeFile/message.schemas.js +18 -0
  193. package/dist/src/messages/vfs/writeFile/message.schemas.js.map +1 -0
  194. package/dist/src/messages/workspace/changed/message.schemas.d.ts +9 -0
  195. package/dist/src/messages/workspace/changed/message.schemas.d.ts.map +1 -0
  196. package/dist/src/messages/workspace/changed/message.schemas.js +9 -0
  197. package/dist/src/messages/workspace/changed/message.schemas.js.map +1 -0
  198. package/dist/src/messages/workspace/getDetails/message.schemas.d.ts +39 -0
  199. package/dist/src/messages/workspace/getDetails/message.schemas.d.ts.map +1 -0
  200. package/dist/src/messages/workspace/getDetails/message.schemas.js +22 -0
  201. package/dist/src/messages/workspace/getDetails/message.schemas.js.map +1 -0
  202. package/dist/src/messages/workspace/index.d.ts +4 -0
  203. package/dist/src/messages/workspace/index.d.ts.map +1 -0
  204. package/dist/src/messages/workspace/index.js +4 -0
  205. package/dist/src/messages/workspace/index.js.map +1 -0
  206. package/dist/src/messages/workspace/open/message.schemas.d.ts +29 -0
  207. package/dist/src/messages/workspace/open/message.schemas.d.ts.map +1 -0
  208. package/dist/src/messages/workspace/open/message.schemas.js +16 -0
  209. package/dist/src/messages/workspace/open/message.schemas.js.map +1 -0
  210. package/dist/src/namespaces/DocumentNamespace.d.ts +56 -0
  211. package/dist/src/namespaces/DocumentNamespace.d.ts.map +1 -0
  212. package/dist/src/namespaces/DocumentNamespace.js +129 -0
  213. package/dist/src/namespaces/DocumentNamespace.js.map +1 -0
  214. package/dist/src/namespaces/EditorNamespace.d.ts +11 -0
  215. package/dist/src/namespaces/EditorNamespace.d.ts.map +1 -0
  216. package/dist/src/namespaces/EditorNamespace.js +18 -0
  217. package/dist/src/namespaces/EditorNamespace.js.map +1 -0
  218. package/dist/src/namespaces/FsNamespace.d.ts +27 -0
  219. package/dist/src/namespaces/FsNamespace.d.ts.map +1 -0
  220. package/dist/src/namespaces/FsNamespace.js +52 -0
  221. package/dist/src/namespaces/FsNamespace.js.map +1 -0
  222. package/dist/src/namespaces/NativeNamespace.d.ts +11 -0
  223. package/dist/src/namespaces/NativeNamespace.d.ts.map +1 -0
  224. package/dist/src/namespaces/NativeNamespace.js +19 -0
  225. package/dist/src/namespaces/NativeNamespace.js.map +1 -0
  226. package/dist/src/namespaces/PluginNamespace.d.ts +56 -0
  227. package/dist/src/namespaces/PluginNamespace.d.ts.map +1 -0
  228. package/dist/src/namespaces/PluginNamespace.js +116 -0
  229. package/dist/src/namespaces/PluginNamespace.js.map +1 -0
  230. package/dist/src/namespaces/StorageNamespace.d.ts +56 -0
  231. package/dist/src/namespaces/StorageNamespace.d.ts.map +1 -0
  232. package/dist/src/namespaces/StorageNamespace.js +127 -0
  233. package/dist/src/namespaces/StorageNamespace.js.map +1 -0
  234. package/dist/src/namespaces/VfsNamespace.d.ts +25 -0
  235. package/dist/src/namespaces/VfsNamespace.d.ts.map +1 -0
  236. package/dist/src/namespaces/VfsNamespace.js +64 -0
  237. package/dist/src/namespaces/VfsNamespace.js.map +1 -0
  238. package/dist/src/namespaces/WorkspaceNamespace.d.ts +18 -0
  239. package/dist/src/namespaces/WorkspaceNamespace.d.ts.map +1 -0
  240. package/dist/src/namespaces/WorkspaceNamespace.js +48 -0
  241. package/dist/src/namespaces/WorkspaceNamespace.js.map +1 -0
  242. package/dist/src/namespaces/index.d.ts +9 -0
  243. package/dist/src/namespaces/index.d.ts.map +1 -0
  244. package/dist/src/namespaces/index.js +9 -0
  245. package/dist/src/namespaces/index.js.map +1 -0
  246. package/dist/tsconfig.tsbuildinfo +1 -0
  247. package/eslint.config.js +25 -0
  248. package/package.json +28 -0
  249. package/src/PracticalKitSdk.ts +325 -0
  250. package/src/index.ts +10 -0
  251. package/src/keyboard/KeyboardShortcutForwarder.ts +35 -0
  252. package/src/keyboard/index.ts +1 -0
  253. package/src/llm/ToolRegistry.ts +186 -0
  254. package/src/logs/channel/IFrameLogChannelAdapter.ts +44 -0
  255. package/src/logs/channel/ILogChannelAdapter.ts +5 -0
  256. package/src/logs/channel/LogChannel.ts +49 -0
  257. package/src/logs/outputs/types.ts +21 -0
  258. package/src/messages/IFrameClient.ts +113 -0
  259. package/src/messages/IFrameMessageBus.ts +28 -0
  260. package/src/messages/base/index.ts +16 -0
  261. package/src/messages/document/index.ts +4 -0
  262. package/src/messages/document/requestContent/message.schemas.ts +28 -0
  263. package/src/messages/document/save/index.ts +1 -0
  264. package/src/messages/document/save/message.schemas.ts +24 -0
  265. package/src/messages/document/saveRequested/message.schemas.ts +35 -0
  266. package/src/messages/document/saved/message.schemas.ts +29 -0
  267. package/src/messages/editor/index.ts +1 -0
  268. package/src/messages/editor/openFile/message.schemas.ts +22 -0
  269. package/src/messages/fs/fileChanged/message.schemas.ts +12 -0
  270. package/src/messages/fs/index.ts +2 -0
  271. package/src/messages/fs/subscribe/message.schemas.ts +33 -0
  272. package/src/messages/index.ts +41 -0
  273. package/src/messages/llm/index.ts +158 -0
  274. package/src/messages/logs/index.ts +39 -0
  275. package/src/messages/native/call/message.schemas.ts +25 -0
  276. package/src/messages/native/index.ts +1 -0
  277. package/src/messages/plugin/index.ts +95 -0
  278. package/src/messages/storage/index.ts +140 -0
  279. package/src/messages/ui/UiChannel.ts +156 -0
  280. package/src/messages/ui/confirm/index.ts +1 -0
  281. package/src/messages/ui/confirm/message.schemas.ts +36 -0
  282. package/src/messages/ui/getState/message.schemas.ts +33 -0
  283. package/src/messages/ui/index.ts +7 -0
  284. package/src/messages/ui/setCollapseState/message.schemas.ts +34 -0
  285. package/src/messages/ui/showContextMenu/message.schemas.ts +64 -0
  286. package/src/messages/ui/showNotification/message.schemas.ts +41 -0
  287. package/src/messages/ui/tabsChanged/message.schemas.ts +25 -0
  288. package/src/messages/vfs/createDir/message.schemas.ts +20 -0
  289. package/src/messages/vfs/delete/message.schemas.ts +20 -0
  290. package/src/messages/vfs/exists/message.schemas.ts +32 -0
  291. package/src/messages/vfs/getAbsolutePath/message.schemas.ts +27 -0
  292. package/src/messages/vfs/index.ts +8 -0
  293. package/src/messages/vfs/readDir/message.schemas.ts +36 -0
  294. package/src/messages/vfs/readFile/message.schemas.ts +21 -0
  295. package/src/messages/vfs/rename/message.schemas.ts +21 -0
  296. package/src/messages/vfs/writeFile/message.schemas.ts +21 -0
  297. package/src/messages/workspace/changed/message.schemas.ts +18 -0
  298. package/src/messages/workspace/getDetails/message.schemas.ts +39 -0
  299. package/src/messages/workspace/index.ts +3 -0
  300. package/src/messages/workspace/open/message.schemas.ts +27 -0
  301. package/src/namespaces/DocumentNamespace.ts +164 -0
  302. package/src/namespaces/EditorNamespace.ts +27 -0
  303. package/src/namespaces/FsNamespace.ts +77 -0
  304. package/src/namespaces/NativeNamespace.ts +34 -0
  305. package/src/namespaces/PluginNamespace.ts +156 -0
  306. package/src/namespaces/StorageNamespace.ts +186 -0
  307. package/src/namespaces/VfsNamespace.ts +135 -0
  308. package/src/namespaces/WorkspaceNamespace.ts +80 -0
  309. package/src/namespaces/index.ts +8 -0
  310. package/tsconfig.json +41 -0
@@ -0,0 +1,41 @@
1
+ // Base
2
+ export * from "./base/index.js";
3
+
4
+ // VFS
5
+ export * from "./vfs/index.js";
6
+
7
+ // Editor
8
+ export * from "./editor/index.js";
9
+
10
+ // Document
11
+ export * from "./document/index.js";
12
+
13
+ // Workspace
14
+ export * from "./workspace/index.js";
15
+
16
+ // Native
17
+ export * from "./native/index.js";
18
+
19
+ // FS (file system subscriptions)
20
+ export * from "./fs/index.js";
21
+
22
+ // Plugin (intra-plugin messaging)
23
+ export * from "./plugin/index.js";
24
+
25
+ // Storage (secrets management)
26
+ export * from "./storage/index.js";
27
+
28
+ // Logs
29
+ export * from "./logs/index.js";
30
+
31
+ // LLM (tool registry)
32
+ export * from "./llm/index.js";
33
+
34
+ // UI (state)
35
+ export * from "./ui/index.js";
36
+
37
+ // Message Bus
38
+ export * from "./IFrameMessageBus.js";
39
+
40
+ // Client
41
+ export * from "./IFrameClient.js";
@@ -0,0 +1,158 @@
1
+ import {
2
+ object,
3
+ string,
4
+ literal,
5
+ boolean,
6
+ optional,
7
+ number,
8
+ array,
9
+ unknown,
10
+ record,
11
+ type InferOutput,
12
+ } from "valibot";
13
+ import { respondableMessage } from "../base/index.js";
14
+
15
+ // ============================================================================
16
+ // JSON Schema type for tool parameters
17
+ // Using 'record' for properties to match JSONSchema7's structure
18
+ // ============================================================================
19
+ export const JsonSchemaObject = object({
20
+ type: literal("object"),
21
+ properties: record(string(), unknown()),
22
+ required: optional(array(string())),
23
+ });
24
+
25
+ // ============================================================================
26
+ // Tool definition as stored in the registry
27
+ // ============================================================================
28
+ export const LlmToolDefinition = object({
29
+ // Unique ID: "{pluginId}.{toolName}"
30
+ id: string(),
31
+ // Tool name (unique within plugin)
32
+ name: string(),
33
+ // Description for LLM
34
+ description: string(),
35
+ // JSON Schema for parameters
36
+ parameters: JsonSchemaObject,
37
+ // Provider info
38
+ provider: object({
39
+ pluginId: string(),
40
+ moduleId: string(),
41
+ }),
42
+ // Timeout in ms (default 30000, max 300000)
43
+ timeoutMs: optional(number()),
44
+ });
45
+
46
+ export type LlmToolDefinitionType = InferOutput<typeof LlmToolDefinition>;
47
+
48
+ // ============================================================================
49
+ // llm.tool.list - Get all registered tools
50
+ // ============================================================================
51
+ export namespace LlmToolList {
52
+ export const Request = respondableMessage("llm.tool.list", {});
53
+
54
+ export const Response = object({
55
+ type: literal("llm.tool.list.response"),
56
+ payload: object({
57
+ requestId: string(),
58
+ success: boolean(),
59
+ tools: array(LlmToolDefinition),
60
+ error: optional(string()),
61
+ }),
62
+ });
63
+
64
+ export type RequestType = InferOutput<typeof Request>;
65
+ export type ResponseType = InferOutput<typeof Response>;
66
+ }
67
+
68
+ // ============================================================================
69
+ // llm.tool.execute - Execute a tool (called by chat plugin)
70
+ // ============================================================================
71
+ export namespace LlmToolExecute {
72
+ export const Request = respondableMessage("llm.tool.execute", {
73
+ toolId: string(), // "{pluginId}.{toolName}"
74
+ arguments: unknown(),
75
+ });
76
+
77
+ export const Response = object({
78
+ type: literal("llm.tool.execute.response"),
79
+ payload: object({
80
+ requestId: string(),
81
+ success: boolean(),
82
+ result: optional(unknown()),
83
+ error: optional(string()),
84
+ }),
85
+ });
86
+
87
+ export type RequestType = InferOutput<typeof Request>;
88
+ export type ResponseType = InferOutput<typeof Response>;
89
+ }
90
+
91
+ // ============================================================================
92
+ // llm.tool.register - Register a tool (plugin -> host)
93
+ // ============================================================================
94
+ export namespace LlmToolRegister {
95
+ export const Request = respondableMessage("llm.tool.register", {
96
+ name: string(),
97
+ description: string(),
98
+ parameters: JsonSchemaObject,
99
+ timeoutMs: optional(number()),
100
+ });
101
+
102
+ export const Response = object({
103
+ type: literal("llm.tool.register.response"),
104
+ payload: object({
105
+ requestId: string(),
106
+ success: boolean(),
107
+ toolId: optional(string()), // Full tool ID assigned by host
108
+ error: optional(string()),
109
+ }),
110
+ });
111
+
112
+ export type RequestType = InferOutput<typeof Request>;
113
+ export type ResponseType = InferOutput<typeof Response>;
114
+ }
115
+
116
+ // ============================================================================
117
+ // llm.tool.unregister - Unregister a tool (plugin -> host)
118
+ // ============================================================================
119
+ export namespace LlmToolUnregister {
120
+ export const Request = respondableMessage("llm.tool.unregister", {
121
+ name: string(),
122
+ });
123
+
124
+ export const Response = object({
125
+ type: literal("llm.tool.unregister.response"),
126
+ payload: object({
127
+ requestId: string(),
128
+ success: boolean(),
129
+ error: optional(string()),
130
+ }),
131
+ });
132
+
133
+ export type RequestType = InferOutput<typeof Request>;
134
+ export type ResponseType = InferOutput<typeof Response>;
135
+ }
136
+
137
+ // ============================================================================
138
+ // llm.tool.call - Call a tool handler (host -> plugin)
139
+ // ============================================================================
140
+ export namespace LlmToolCall {
141
+ export const Request = respondableMessage("llm.tool.call", {
142
+ toolName: string(), // Just the name, not full ID
143
+ arguments: unknown(),
144
+ });
145
+
146
+ export const Response = object({
147
+ type: literal("llm.tool.call.response"),
148
+ payload: object({
149
+ requestId: string(),
150
+ success: boolean(),
151
+ result: optional(unknown()),
152
+ error: optional(string()),
153
+ }),
154
+ });
155
+
156
+ export type RequestType = InferOutput<typeof Request>;
157
+ export type ResponseType = InferOutput<typeof Response>;
158
+ }
@@ -0,0 +1,39 @@
1
+ import {
2
+ object,
3
+ string,
4
+ literal,
5
+ boolean,
6
+ optional,
7
+ picklist,
8
+ type InferOutput,
9
+ array,
10
+ unknown,
11
+ } from "valibot";
12
+ import { respondableMessage } from "../base/index.js";
13
+
14
+ // Log levels matching Rust LogLevel enum
15
+ export const LogLevelSchema = picklist(["debug", "info", "warn", "error"]);
16
+ export type LogLevel = InferOutput<typeof LogLevelSchema>;
17
+
18
+ // ============================================================================
19
+ // logs.write - Write a log entry from a plugin
20
+ // ============================================================================
21
+ export namespace LogsWrite {
22
+ export const Request = respondableMessage("logs.write", {
23
+ level: LogLevelSchema,
24
+ channelName: string(),
25
+ args: array(unknown()),
26
+ });
27
+
28
+ export const Response = object({
29
+ type: literal("logs.write.response"),
30
+ payload: object({
31
+ requestId: string(),
32
+ success: boolean(),
33
+ error: optional(string()),
34
+ }),
35
+ });
36
+
37
+ export type RequestType = InferOutput<typeof Request>;
38
+ export type ResponseType = InferOutput<typeof Response>;
39
+ }
@@ -0,0 +1,25 @@
1
+ import { string, type InferOutput, literal, union, unknown } from "valibot";
2
+ import { respondableMessage } from "../../base/index.js";
3
+ import { ModuleIdSchema, PluginIdSchema } from "@practicalkit/commons";
4
+
5
+ export const NativeCall = {
6
+ Request: respondableMessage("native.call", {
7
+ pluginId: PluginIdSchema,
8
+ moduleId: ModuleIdSchema,
9
+ command: string(),
10
+ args: unknown(),
11
+ }),
12
+ Response: union([
13
+ respondableMessage("native.call.response", {
14
+ success: literal(true),
15
+ data: unknown(),
16
+ }),
17
+ respondableMessage("native.call.response", {
18
+ success: literal(false),
19
+ error: string(),
20
+ }),
21
+ ]),
22
+ };
23
+
24
+ export type NativeCallRequest = InferOutput<typeof NativeCall.Request>;
25
+ export type NativeCallResponse = InferOutput<typeof NativeCall.Response>;
@@ -0,0 +1 @@
1
+ export * from "./call/message.schemas.js";
@@ -0,0 +1,95 @@
1
+ import {
2
+ object,
3
+ string,
4
+ literal,
5
+ boolean,
6
+ unknown,
7
+ optional,
8
+ type InferOutput,
9
+ } from "valibot";
10
+ import { respondableMessage } from "../base/index.js";
11
+
12
+ // ============================================================================
13
+ // plugin.sendMessage - Send a message to a specific sibling module
14
+ // ============================================================================
15
+ export namespace PluginSendMessage {
16
+ export const Request = respondableMessage("plugin.sendMessage", {
17
+ targetModuleId: string(),
18
+ message: unknown(),
19
+ });
20
+
21
+ export const Response = object({
22
+ type: literal("plugin.sendMessage.response"),
23
+ payload: object({
24
+ requestId: string(),
25
+ success: boolean(),
26
+ data: optional(unknown()),
27
+ error: optional(string()),
28
+ }),
29
+ });
30
+
31
+ export type RequestType = InferOutput<typeof Request>;
32
+ export type ResponseType = InferOutput<typeof Response>;
33
+ }
34
+
35
+ // ============================================================================
36
+ // plugin.message - Incoming message from a sibling module (forwarded by host)
37
+ // ============================================================================
38
+ export namespace PluginMessage {
39
+ export const Request = respondableMessage("plugin.message", {
40
+ fromModuleId: string(),
41
+ message: unknown(),
42
+ });
43
+
44
+ export const Response = object({
45
+ type: literal("plugin.message.response"),
46
+ payload: object({
47
+ requestId: string(),
48
+ success: boolean(),
49
+ data: optional(unknown()),
50
+ error: optional(string()),
51
+ }),
52
+ });
53
+
54
+ export type RequestType = InferOutput<typeof Request>;
55
+ export type ResponseType = InferOutput<typeof Response>;
56
+ /** Payload type without requestId, for public API handlers */
57
+ export type HandlerPayload = Omit<RequestType["payload"], "requestId">;
58
+ }
59
+
60
+ // ============================================================================
61
+ // plugin.sendBroadcast - Broadcast a message to all sibling modules
62
+ // ============================================================================
63
+ export namespace PluginSendBroadcast {
64
+ export const Request = respondableMessage("plugin.sendBroadcast", {
65
+ message: unknown(),
66
+ });
67
+
68
+ export const Response = object({
69
+ type: literal("plugin.sendBroadcast.response"),
70
+ payload: object({
71
+ requestId: string(),
72
+ success: boolean(),
73
+ error: optional(string()),
74
+ }),
75
+ });
76
+
77
+ export type RequestType = InferOutput<typeof Request>;
78
+ export type ResponseType = InferOutput<typeof Response>;
79
+ }
80
+
81
+ // ============================================================================
82
+ // plugin.broadcast - Incoming broadcast from a sibling module (forwarded by host)
83
+ // This is fire-and-forget, no response expected
84
+ // ============================================================================
85
+ export namespace PluginBroadcast {
86
+ export const Event = object({
87
+ type: literal("plugin.broadcast"),
88
+ payload: object({
89
+ fromModuleId: string(),
90
+ message: unknown(),
91
+ }),
92
+ });
93
+
94
+ export type EventType = InferOutput<typeof Event>;
95
+ }
@@ -0,0 +1,140 @@
1
+ import {
2
+ object,
3
+ string,
4
+ literal,
5
+ boolean,
6
+ optional,
7
+ nullable,
8
+ type InferOutput,
9
+ } from "valibot";
10
+ import { respondableMessage } from "../base/index.js";
11
+
12
+ // ============================================================================
13
+ // storage.get - Get a value for this plugin (base64-encoded bytes)
14
+ // ============================================================================
15
+ export namespace StorageGet {
16
+ export const Request = respondableMessage("storage.get", {
17
+ key: string(),
18
+ });
19
+
20
+ export const Response = object({
21
+ type: literal("storage.get.response"),
22
+ payload: object({
23
+ requestId: string(),
24
+ success: boolean(),
25
+ value: nullable(string()), // base64-encoded bytes or null
26
+ error: optional(string()),
27
+ }),
28
+ });
29
+
30
+ export type RequestType = InferOutput<typeof Request>;
31
+ export type ResponseType = InferOutput<typeof Response>;
32
+ }
33
+
34
+ // ============================================================================
35
+ // storage.set - Set a value for this plugin (base64-encoded bytes)
36
+ // ============================================================================
37
+ export namespace StorageSet {
38
+ export const Request = respondableMessage("storage.set", {
39
+ key: string(),
40
+ value: string(), // base64-encoded bytes
41
+ });
42
+
43
+ export const Response = object({
44
+ type: literal("storage.set.response"),
45
+ payload: object({
46
+ requestId: string(),
47
+ success: boolean(),
48
+ error: optional(string()),
49
+ }),
50
+ });
51
+
52
+ export type RequestType = InferOutput<typeof Request>;
53
+ export type ResponseType = InferOutput<typeof Response>;
54
+ }
55
+
56
+ // ============================================================================
57
+ // storage.delete - Delete a value for this plugin
58
+ // ============================================================================
59
+ export namespace StorageDelete {
60
+ export const Request = respondableMessage("storage.delete", {
61
+ key: string(),
62
+ });
63
+
64
+ export const Response = object({
65
+ type: literal("storage.delete.response"),
66
+ payload: object({
67
+ requestId: string(),
68
+ success: boolean(),
69
+ error: optional(string()),
70
+ }),
71
+ });
72
+
73
+ export type RequestType = InferOutput<typeof Request>;
74
+ export type ResponseType = InferOutput<typeof Response>;
75
+ }
76
+
77
+ // ============================================================================
78
+ // storage.getSecret - Get a secret value for this plugin (base64-encoded bytes)
79
+ // ============================================================================
80
+ export namespace StorageGetSecret {
81
+ export const Request = respondableMessage("storage.getSecret", {
82
+ key: string(),
83
+ });
84
+
85
+ export const Response = object({
86
+ type: literal("storage.getSecret.response"),
87
+ payload: object({
88
+ requestId: string(),
89
+ success: boolean(),
90
+ value: nullable(string()), // base64-encoded bytes or null
91
+ error: optional(string()),
92
+ }),
93
+ });
94
+
95
+ export type RequestType = InferOutput<typeof Request>;
96
+ export type ResponseType = InferOutput<typeof Response>;
97
+ }
98
+
99
+ // ============================================================================
100
+ // storage.setSecret - Set a secret value for this plugin (base64-encoded bytes)
101
+ // ============================================================================
102
+ export namespace StorageSetSecret {
103
+ export const Request = respondableMessage("storage.setSecret", {
104
+ key: string(),
105
+ value: string(), // base64-encoded bytes
106
+ });
107
+
108
+ export const Response = object({
109
+ type: literal("storage.setSecret.response"),
110
+ payload: object({
111
+ requestId: string(),
112
+ success: boolean(),
113
+ error: optional(string()),
114
+ }),
115
+ });
116
+
117
+ export type RequestType = InferOutput<typeof Request>;
118
+ export type ResponseType = InferOutput<typeof Response>;
119
+ }
120
+
121
+ // ============================================================================
122
+ // storage.deleteSecret - Delete a secret value for this plugin
123
+ // ============================================================================
124
+ export namespace StorageDeleteSecret {
125
+ export const Request = respondableMessage("storage.deleteSecret", {
126
+ key: string(),
127
+ });
128
+
129
+ export const Response = object({
130
+ type: literal("storage.deleteSecret.response"),
131
+ payload: object({
132
+ requestId: string(),
133
+ success: boolean(),
134
+ error: optional(string()),
135
+ }),
136
+ });
137
+
138
+ export type RequestType = InferOutput<typeof Request>;
139
+ export type ResponseType = InferOutput<typeof Response>;
140
+ }
@@ -0,0 +1,156 @@
1
+ import { IFrameClient } from "../IFrameClient.js";
2
+ import { safeParse } from "valibot";
3
+ import type { UiTabsChangedEventPayload } from "../index.js";
4
+ import {
5
+ UI_TABS_CHANGED_EVENT,
6
+ UiConfirm,
7
+ UiGetState,
8
+ UiSetCollapseState,
9
+ UiShowContextMenu,
10
+ UiShowNotification,
11
+ UiTabsChangedEventSchema,
12
+ } from "../index.js";
13
+
14
+ export interface TabInfo {
15
+ id: string;
16
+ title: string;
17
+ isActive: boolean;
18
+ }
19
+
20
+ export interface UiState {
21
+ openTabs: TabInfo[];
22
+ }
23
+
24
+ export class UiChannel {
25
+ constructor(private client: IFrameClient) {}
26
+
27
+ /**
28
+ * Get the current UI state including open tabs.
29
+ * Requires 'ui:read' permission.
30
+ */
31
+ async getState(): Promise<UiState> {
32
+ const response = await this.client.sendAndWait<
33
+ typeof UiGetState.Request,
34
+ typeof UiGetState.Response
35
+ >("ui.getState", {}, UiGetState.Request, UiGetState.Response);
36
+
37
+ return {
38
+ openTabs: response.openTabs,
39
+ };
40
+ }
41
+
42
+ /**
43
+ * Set the collapse state of this panel.
44
+ * @param collapsed - true to collapse the panel, false to expand it
45
+ */
46
+ async setCollapseState(collapsed: boolean): Promise<void> {
47
+ const response = await this.client.sendAndWait<
48
+ typeof UiSetCollapseState.Request,
49
+ typeof UiSetCollapseState.Response
50
+ >(
51
+ "ui.setCollapseState",
52
+ { collapsed },
53
+ UiSetCollapseState.Request,
54
+ UiSetCollapseState.Response
55
+ );
56
+
57
+ if (!response.success) {
58
+ throw new Error("Failed to set panel collapse state");
59
+ }
60
+ }
61
+
62
+ /**
63
+ * Show a context menu at the specified position.
64
+ * @param options - Menu configuration including position and items
65
+ * @returns The ID of the selected menu item, or null if cancelled
66
+ */
67
+ async showContextMenu(options: {
68
+ x: number;
69
+ y: number;
70
+ items: Array<
71
+ { type?: "item"; id: string; label: string } | { type: "separator" }
72
+ >;
73
+ }): Promise<{ selectedItemId: string | null }> {
74
+ const response = await this.client.sendAndWait<
75
+ typeof UiShowContextMenu.Request,
76
+ typeof UiShowContextMenu.Response
77
+ >(
78
+ "ui.showContextMenu",
79
+ options,
80
+ UiShowContextMenu.Request,
81
+ UiShowContextMenu.Response
82
+ );
83
+
84
+ return { selectedItemId: response.selectedItemId };
85
+ }
86
+
87
+ /**
88
+ * Show a notification message to the user.
89
+ * @param message - The message to display
90
+ * @param type - The type of notification (info, success, warning, error)
91
+ */
92
+ async showNotification(
93
+ message: string,
94
+ type: "info" | "success" | "warning" | "error" = "info"
95
+ ): Promise<void> {
96
+ const response = await this.client.sendAndWait<
97
+ typeof UiShowNotification.Request,
98
+ typeof UiShowNotification.Response
99
+ >(
100
+ "ui.showNotification",
101
+ { message, type },
102
+ UiShowNotification.Request,
103
+ UiShowNotification.Response
104
+ );
105
+
106
+ if (!response.success) {
107
+ throw new Error(response.error);
108
+ }
109
+ }
110
+
111
+ /**
112
+ * Show a native confirmation dialog.
113
+ * @param options - Dialog configuration
114
+ * @returns true if user confirmed, false if cancelled
115
+ */
116
+ async confirm(options: {
117
+ title: string;
118
+ message: string;
119
+ okLabel?: string;
120
+ cancelLabel?: string;
121
+ }): Promise<boolean> {
122
+ const response = await this.client.sendAndWait<
123
+ typeof UiConfirm.Request,
124
+ typeof UiConfirm.Response
125
+ >("ui.confirm", options, UiConfirm.Request, UiConfirm.Response);
126
+
127
+ return response.confirmed;
128
+ }
129
+
130
+ /**
131
+ * Listen for tab changes (tabs opened, closed, or switched).
132
+ * @param handler - Callback function that receives tab change events
133
+ * @returns Unsubscribe function
134
+ */
135
+ onTabsChanged(
136
+ handler: (event: { payload: UiTabsChangedEventPayload }) => void
137
+ ): () => void {
138
+ return this.client.subscribe((evt) => {
139
+ const { type, payload } = evt.data || {};
140
+ if (type === UI_TABS_CHANGED_EVENT) {
141
+ const result = safeParse(UiTabsChangedEventSchema, {
142
+ type,
143
+ payload,
144
+ });
145
+ if (result.success) {
146
+ handler({ payload: result.output.payload });
147
+ } else {
148
+ console.error(
149
+ `[SDK] Invalid ${UI_TABS_CHANGED_EVENT} payload:`,
150
+ result.issues
151
+ );
152
+ }
153
+ }
154
+ });
155
+ }
156
+ }
@@ -0,0 +1 @@
1
+ export * from "./message.schemas.js";
@@ -0,0 +1,36 @@
1
+ import { string, object, type InferOutput, optional, boolean } from "valibot";
2
+ import { respondableMessage } from "../../base/index.js";
3
+
4
+ const UiConfirmRequestPayloadSchema = object({
5
+ requestId: string(),
6
+ title: string(),
7
+ message: string(),
8
+ okLabel: optional(string()),
9
+ cancelLabel: optional(string()),
10
+ });
11
+
12
+ const UiConfirmResponsePayloadSchema = object({
13
+ requestId: string(),
14
+ confirmed: boolean(),
15
+ });
16
+
17
+ export const UiConfirm = {
18
+ Request: respondableMessage("ui.confirm", {
19
+ title: string(),
20
+ message: string(),
21
+ okLabel: optional(string()),
22
+ cancelLabel: optional(string()),
23
+ }),
24
+ Response: respondableMessage("ui.confirm.response", {
25
+ confirmed: boolean(),
26
+ }),
27
+ };
28
+
29
+ export type UiConfirmRequest = InferOutput<typeof UiConfirm.Request>;
30
+ export type UiConfirmResponse = InferOutput<typeof UiConfirm.Response>;
31
+ export type UiConfirmRequestPayload = InferOutput<
32
+ typeof UiConfirmRequestPayloadSchema
33
+ >;
34
+ export type UiConfirmResponsePayload = InferOutput<
35
+ typeof UiConfirmResponsePayloadSchema
36
+ >;