@vibesdotdev/applets 0.0.0-stage → 1.0.0-rc.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 (421) hide show
  1. package/LICENSE +18 -0
  2. package/README.md +43 -2
  3. package/dist/applet-gate.d.ts +47 -0
  4. package/dist/applet-gate.d.ts.map +1 -0
  5. package/dist/applet-gate.js +167 -0
  6. package/dist/applet-gate.js.map +1 -0
  7. package/dist/applet-root-surface.d.ts +135 -0
  8. package/dist/applet-root-surface.d.ts.map +1 -0
  9. package/dist/applet-root-surface.js +222 -0
  10. package/dist/applet-root-surface.js.map +1 -0
  11. package/dist/applet-value-bound.d.ts +24 -0
  12. package/dist/applet-value-bound.d.ts.map +1 -0
  13. package/dist/applet-value-bound.js +46 -0
  14. package/dist/applet-value-bound.js.map +1 -0
  15. package/dist/applets.cloud.plugin.d.ts +4 -0
  16. package/dist/applets.cloud.plugin.d.ts.map +1 -0
  17. package/dist/applets.cloud.plugin.js +11 -0
  18. package/dist/applets.cloud.plugin.js.map +1 -0
  19. package/dist/applets.consumer.plugin.d.ts +4 -0
  20. package/dist/applets.consumer.plugin.d.ts.map +1 -0
  21. package/dist/applets.consumer.plugin.js +11 -0
  22. package/dist/applets.consumer.plugin.js.map +1 -0
  23. package/dist/applets.plugin.d.ts +3 -0
  24. package/dist/applets.plugin.d.ts.map +1 -0
  25. package/dist/applets.plugin.js +30 -0
  26. package/dist/applets.plugin.js.map +1 -0
  27. package/dist/authorization.d.ts +87 -0
  28. package/dist/authorization.d.ts.map +1 -0
  29. package/dist/authorization.js +189 -0
  30. package/dist/authorization.js.map +1 -0
  31. package/dist/browser-runtime.d.ts +34 -0
  32. package/dist/browser-runtime.d.ts.map +1 -0
  33. package/dist/browser-runtime.js +5 -0
  34. package/dist/browser-runtime.js.map +1 -0
  35. package/dist/build-definition.d.ts +34 -0
  36. package/dist/build-definition.d.ts.map +1 -0
  37. package/dist/build-definition.js +44 -0
  38. package/dist/build-definition.js.map +1 -0
  39. package/dist/capabilities/capability.kind.d.ts +44 -0
  40. package/dist/capabilities/capability.kind.d.ts.map +1 -0
  41. package/dist/capabilities/capability.kind.js +17 -0
  42. package/dist/capabilities/capability.kind.js.map +1 -0
  43. package/dist/capabilities/runtime-dispatch.d.ts +9 -0
  44. package/dist/capabilities/runtime-dispatch.d.ts.map +1 -0
  45. package/dist/capabilities/runtime-dispatch.js +62 -0
  46. package/dist/capabilities/runtime-dispatch.js.map +1 -0
  47. package/dist/cli/applet-group.descriptor.d.ts +11 -0
  48. package/dist/cli/applet-group.descriptor.d.ts.map +1 -0
  49. package/dist/cli/applet-group.descriptor.js +19 -0
  50. package/dist/cli/applet-group.descriptor.js.map +1 -0
  51. package/dist/cli/applet-local-store.storage.descriptor.d.ts +66 -0
  52. package/dist/cli/applet-local-store.storage.descriptor.d.ts.map +1 -0
  53. package/dist/cli/applet-local-store.storage.descriptor.js +39 -0
  54. package/dist/cli/applet-local-store.storage.descriptor.js.map +1 -0
  55. package/dist/cli/applet-serve.process.descriptor.d.ts +37 -0
  56. package/dist/cli/applet-serve.process.descriptor.d.ts.map +1 -0
  57. package/dist/cli/applet-serve.process.descriptor.js +41 -0
  58. package/dist/cli/applet-serve.process.descriptor.js.map +1 -0
  59. package/dist/cli/commands/build.command.descriptor.d.ts +40 -0
  60. package/dist/cli/commands/build.command.descriptor.d.ts.map +1 -0
  61. package/dist/cli/commands/build.command.descriptor.js +52 -0
  62. package/dist/cli/commands/build.command.descriptor.js.map +1 -0
  63. package/dist/cli/commands/build.command.impl.d.ts +8 -0
  64. package/dist/cli/commands/build.command.impl.d.ts.map +1 -0
  65. package/dist/cli/commands/build.command.impl.js +116 -0
  66. package/dist/cli/commands/build.command.impl.js.map +1 -0
  67. package/dist/cli/commands/init.command.descriptor.d.ts +29 -0
  68. package/dist/cli/commands/init.command.descriptor.d.ts.map +1 -0
  69. package/dist/cli/commands/init.command.descriptor.js +23 -0
  70. package/dist/cli/commands/init.command.descriptor.js.map +1 -0
  71. package/dist/cli/commands/init.command.impl.d.ts +7 -0
  72. package/dist/cli/commands/init.command.impl.d.ts.map +1 -0
  73. package/dist/cli/commands/init.command.impl.js +64 -0
  74. package/dist/cli/commands/init.command.impl.js.map +1 -0
  75. package/dist/cli/commands/list.command.descriptor.d.ts +26 -0
  76. package/dist/cli/commands/list.command.descriptor.d.ts.map +1 -0
  77. package/dist/cli/commands/list.command.descriptor.js +22 -0
  78. package/dist/cli/commands/list.command.descriptor.js.map +1 -0
  79. package/dist/cli/commands/list.command.impl.d.ts +13 -0
  80. package/dist/cli/commands/list.command.impl.d.ts.map +1 -0
  81. package/dist/cli/commands/list.command.impl.js +47 -0
  82. package/dist/cli/commands/list.command.impl.js.map +1 -0
  83. package/dist/cli/commands/serve-stylesheet.d.ts +11 -0
  84. package/dist/cli/commands/serve-stylesheet.d.ts.map +1 -0
  85. package/dist/cli/commands/serve-stylesheet.js +50 -0
  86. package/dist/cli/commands/serve-stylesheet.js.map +1 -0
  87. package/dist/cli/commands/serve-surface.d.ts +36 -0
  88. package/dist/cli/commands/serve-surface.d.ts.map +1 -0
  89. package/dist/cli/commands/serve-surface.js +410 -0
  90. package/dist/cli/commands/serve-surface.js.map +1 -0
  91. package/dist/cli/commands/serve.command.descriptor.d.ts +42 -0
  92. package/dist/cli/commands/serve.command.descriptor.d.ts.map +1 -0
  93. package/dist/cli/commands/serve.command.descriptor.js +46 -0
  94. package/dist/cli/commands/serve.command.descriptor.js.map +1 -0
  95. package/dist/cli/commands/serve.command.impl.d.ts +110 -0
  96. package/dist/cli/commands/serve.command.impl.d.ts.map +1 -0
  97. package/dist/cli/commands/serve.command.impl.js +1105 -0
  98. package/dist/cli/commands/serve.command.impl.js.map +1 -0
  99. package/dist/cli/commands/serve.schemas.d.ts +127 -0
  100. package/dist/cli/commands/serve.schemas.d.ts.map +1 -0
  101. package/dist/cli/commands/serve.schemas.js +85 -0
  102. package/dist/cli/commands/serve.schemas.js.map +1 -0
  103. package/dist/cli/commands/served-applet-browser.d.ts +12 -0
  104. package/dist/cli/commands/served-applet-browser.d.ts.map +1 -0
  105. package/dist/cli/commands/served-applet-browser.js +48 -0
  106. package/dist/cli/commands/served-applet-browser.js.map +1 -0
  107. package/dist/cli/commands/served-applet-connection.d.ts +15 -0
  108. package/dist/cli/commands/served-applet-connection.d.ts.map +1 -0
  109. package/dist/cli/commands/served-applet-connection.js +25 -0
  110. package/dist/cli/commands/served-applet-connection.js.map +1 -0
  111. package/dist/cli/commands/served-applet-rpc.d.ts +16 -0
  112. package/dist/cli/commands/served-applet-rpc.d.ts.map +1 -0
  113. package/dist/cli/commands/served-applet-rpc.js +108 -0
  114. package/dist/cli/commands/served-applet-rpc.js.map +1 -0
  115. package/dist/cli/commands/served-applet-surface.d.ts +14 -0
  116. package/dist/cli/commands/served-applet-surface.d.ts.map +1 -0
  117. package/dist/cli/commands/served-applet-surface.js +99 -0
  118. package/dist/cli/commands/served-applet-surface.js.map +1 -0
  119. package/dist/cli/commands/templates.command.descriptor.d.ts +22 -0
  120. package/dist/cli/commands/templates.command.descriptor.d.ts.map +1 -0
  121. package/dist/cli/commands/templates.command.descriptor.js +21 -0
  122. package/dist/cli/commands/templates.command.descriptor.js.map +1 -0
  123. package/dist/cli/commands/templates.command.impl.d.ts +35 -0
  124. package/dist/cli/commands/templates.command.impl.d.ts.map +1 -0
  125. package/dist/cli/commands/templates.command.impl.js +59 -0
  126. package/dist/cli/commands/templates.command.impl.js.map +1 -0
  127. package/dist/cli/index.d.ts +7 -0
  128. package/dist/cli/index.d.ts.map +1 -0
  129. package/dist/cli/index.js +7 -0
  130. package/dist/cli/index.js.map +1 -0
  131. package/dist/cli/local-serve.authz-policy.descriptor.d.ts +22 -0
  132. package/dist/cli/local-serve.authz-policy.descriptor.d.ts.map +1 -0
  133. package/dist/cli/local-serve.authz-policy.descriptor.js +13 -0
  134. package/dist/cli/local-serve.authz-policy.descriptor.js.map +1 -0
  135. package/dist/cli/plugin.d.ts +19 -0
  136. package/dist/cli/plugin.d.ts.map +1 -0
  137. package/dist/cli/plugin.js +57 -0
  138. package/dist/cli/plugin.js.map +1 -0
  139. package/dist/cli/project-files.d.ts +48 -0
  140. package/dist/cli/project-files.d.ts.map +1 -0
  141. package/dist/cli/project-files.js +130 -0
  142. package/dist/cli/project-files.js.map +1 -0
  143. package/dist/client/contract.d.ts +113 -0
  144. package/dist/client/contract.d.ts.map +1 -0
  145. package/dist/client/contract.js +17 -0
  146. package/dist/client/contract.js.map +1 -0
  147. package/dist/client/index.d.ts +3 -0
  148. package/dist/client/index.d.ts.map +1 -0
  149. package/dist/client/index.js +3 -0
  150. package/dist/client/index.js.map +1 -0
  151. package/dist/client/repository.context.d.ts +113 -0
  152. package/dist/client/repository.context.d.ts.map +1 -0
  153. package/dist/client/repository.context.js +8 -0
  154. package/dist/client/repository.context.js.map +1 -0
  155. package/dist/client/runtime-client.d.ts +22 -0
  156. package/dist/client/runtime-client.d.ts.map +1 -0
  157. package/dist/client/runtime-client.js +200 -0
  158. package/dist/client/runtime-client.js.map +1 -0
  159. package/dist/companion-path.d.ts +25 -0
  160. package/dist/companion-path.d.ts.map +1 -0
  161. package/dist/companion-path.js +90 -0
  162. package/dist/companion-path.js.map +1 -0
  163. package/dist/component-ref.d.ts +12 -0
  164. package/dist/component-ref.d.ts.map +1 -0
  165. package/dist/component-ref.js +45 -0
  166. package/dist/component-ref.js.map +1 -0
  167. package/dist/composition-plan.d.ts +92 -0
  168. package/dist/composition-plan.d.ts.map +1 -0
  169. package/dist/composition-plan.js +44 -0
  170. package/dist/composition-plan.js.map +1 -0
  171. package/dist/composition.d.ts +97 -0
  172. package/dist/composition.d.ts.map +1 -0
  173. package/dist/composition.js +99 -0
  174. package/dist/composition.js.map +1 -0
  175. package/dist/config/applets.config.descriptor.d.ts +55 -0
  176. package/dist/config/applets.config.descriptor.d.ts.map +1 -0
  177. package/dist/config/applets.config.descriptor.js +37 -0
  178. package/dist/config/applets.config.descriptor.js.map +1 -0
  179. package/dist/config/load.d.ts +4 -0
  180. package/dist/config/load.d.ts.map +1 -0
  181. package/dist/config/load.js +12 -0
  182. package/dist/config/load.js.map +1 -0
  183. package/dist/content-path.d.ts +62 -0
  184. package/dist/content-path.d.ts.map +1 -0
  185. package/dist/content-path.js +121 -0
  186. package/dist/content-path.js.map +1 -0
  187. package/dist/contribution-registry.d.ts +270 -0
  188. package/dist/contribution-registry.d.ts.map +1 -0
  189. package/dist/contribution-registry.js +488 -0
  190. package/dist/contribution-registry.js.map +1 -0
  191. package/dist/docs/applets.docs.descriptor.d.ts +4 -0
  192. package/dist/docs/applets.docs.descriptor.d.ts.map +1 -0
  193. package/dist/docs/applets.docs.descriptor.js +74 -0
  194. package/dist/docs/applets.docs.descriptor.js.map +1 -0
  195. package/dist/host/local-host.contract.d.ts +7 -0
  196. package/dist/host/local-host.contract.d.ts.map +1 -0
  197. package/dist/host/local-host.contract.js +2 -0
  198. package/dist/host/local-host.contract.js.map +1 -0
  199. package/dist/host/local-host.impl.d.ts +9 -0
  200. package/dist/host/local-host.impl.d.ts.map +1 -0
  201. package/dist/host/local-host.impl.js +41 -0
  202. package/dist/host/local-host.impl.js.map +1 -0
  203. package/dist/host/local-host.plugin.d.ts +3 -0
  204. package/dist/host/local-host.plugin.d.ts.map +1 -0
  205. package/dist/host/local-host.plugin.js +16 -0
  206. package/dist/host/local-host.plugin.js.map +1 -0
  207. package/dist/index.d.ts +28 -0
  208. package/dist/index.d.ts.map +1 -0
  209. package/dist/index.js +27 -0
  210. package/dist/index.js.map +1 -0
  211. package/dist/local-project.d.ts +106 -0
  212. package/dist/local-project.d.ts.map +1 -0
  213. package/dist/local-project.js +277 -0
  214. package/dist/local-project.js.map +1 -0
  215. package/dist/manifest-hash.d.ts +12 -0
  216. package/dist/manifest-hash.d.ts.map +1 -0
  217. package/dist/manifest-hash.js +76 -0
  218. package/dist/manifest-hash.js.map +1 -0
  219. package/dist/presentation.d.ts +43 -0
  220. package/dist/presentation.d.ts.map +1 -0
  221. package/dist/presentation.js +36 -0
  222. package/dist/presentation.js.map +1 -0
  223. package/dist/retention.d.ts +34 -0
  224. package/dist/retention.d.ts.map +1 -0
  225. package/dist/retention.js +51 -0
  226. package/dist/retention.js.map +1 -0
  227. package/dist/schemas/applet-messages.d.ts +97 -0
  228. package/dist/schemas/applet-messages.d.ts.map +1 -0
  229. package/dist/schemas/applet-messages.js +51 -0
  230. package/dist/schemas/applet-messages.js.map +1 -0
  231. package/dist/schemas/capabilities.d.ts +37 -0
  232. package/dist/schemas/capabilities.d.ts.map +1 -0
  233. package/dist/schemas/capabilities.js +28 -0
  234. package/dist/schemas/capabilities.js.map +1 -0
  235. package/dist/schemas/component-release-ref.d.ts +13 -0
  236. package/dist/schemas/component-release-ref.d.ts.map +1 -0
  237. package/dist/schemas/component-release-ref.js +21 -0
  238. package/dist/schemas/component-release-ref.js.map +1 -0
  239. package/dist/schemas/contributes.d.ts +306 -0
  240. package/dist/schemas/contributes.d.ts.map +1 -0
  241. package/dist/schemas/contributes.js +184 -0
  242. package/dist/schemas/contributes.js.map +1 -0
  243. package/dist/schemas/definition.d.ts +301 -0
  244. package/dist/schemas/definition.d.ts.map +1 -0
  245. package/dist/schemas/definition.js +457 -0
  246. package/dist/schemas/definition.js.map +1 -0
  247. package/dist/schemas/dispatch.d.ts +52 -0
  248. package/dist/schemas/dispatch.d.ts.map +1 -0
  249. package/dist/schemas/dispatch.js +32 -0
  250. package/dist/schemas/dispatch.js.map +1 -0
  251. package/dist/schemas/grants.d.ts +56 -0
  252. package/dist/schemas/grants.d.ts.map +1 -0
  253. package/dist/schemas/grants.js +64 -0
  254. package/dist/schemas/grants.js.map +1 -0
  255. package/dist/schemas/index.d.ts +16 -0
  256. package/dist/schemas/index.d.ts.map +1 -0
  257. package/dist/schemas/index.js +16 -0
  258. package/dist/schemas/index.js.map +1 -0
  259. package/dist/schemas/instance.d.ts +230 -0
  260. package/dist/schemas/instance.d.ts.map +1 -0
  261. package/dist/schemas/instance.js +44 -0
  262. package/dist/schemas/instance.js.map +1 -0
  263. package/dist/schemas/lineage.d.ts +60 -0
  264. package/dist/schemas/lineage.d.ts.map +1 -0
  265. package/dist/schemas/lineage.js +52 -0
  266. package/dist/schemas/lineage.js.map +1 -0
  267. package/dist/schemas/observation.d.ts +70 -0
  268. package/dist/schemas/observation.d.ts.map +1 -0
  269. package/dist/schemas/observation.js +49 -0
  270. package/dist/schemas/observation.js.map +1 -0
  271. package/dist/schemas/patterns.d.ts +24 -0
  272. package/dist/schemas/patterns.d.ts.map +1 -0
  273. package/dist/schemas/patterns.js +24 -0
  274. package/dist/schemas/patterns.js.map +1 -0
  275. package/dist/schemas/publishing.d.ts +27 -0
  276. package/dist/schemas/publishing.d.ts.map +1 -0
  277. package/dist/schemas/publishing.js +20 -0
  278. package/dist/schemas/publishing.js.map +1 -0
  279. package/dist/schemas/run.d.ts +35 -0
  280. package/dist/schemas/run.d.ts.map +1 -0
  281. package/dist/schemas/run.js +26 -0
  282. package/dist/schemas/run.js.map +1 -0
  283. package/dist/schemas/share-link.d.ts +61 -0
  284. package/dist/schemas/share-link.d.ts.map +1 -0
  285. package/dist/schemas/share-link.js +68 -0
  286. package/dist/schemas/share-link.js.map +1 -0
  287. package/dist/schemas/state-events.d.ts +66 -0
  288. package/dist/schemas/state-events.d.ts.map +1 -0
  289. package/dist/schemas/state-events.js +66 -0
  290. package/dist/schemas/state-events.js.map +1 -0
  291. package/dist/schemas/subscription.d.ts +47 -0
  292. package/dist/schemas/subscription.d.ts.map +1 -0
  293. package/dist/schemas/subscription.js +46 -0
  294. package/dist/schemas/subscription.js.map +1 -0
  295. package/dist/schemas/template-revision.d.ts +53 -0
  296. package/dist/schemas/template-revision.d.ts.map +1 -0
  297. package/dist/schemas/template-revision.js +30 -0
  298. package/dist/schemas/template-revision.js.map +1 -0
  299. package/dist/selection.d.ts +22 -0
  300. package/dist/selection.d.ts.map +1 -0
  301. package/dist/selection.js +21 -0
  302. package/dist/selection.js.map +1 -0
  303. package/dist/storage/index.d.ts +27 -0
  304. package/dist/storage/index.d.ts.map +1 -0
  305. package/dist/storage/index.js +27 -0
  306. package/dist/storage/index.js.map +1 -0
  307. package/dist/storage/records.d.ts +28 -0
  308. package/dist/storage/records.d.ts.map +1 -0
  309. package/dist/storage/records.js +272 -0
  310. package/dist/storage/records.js.map +1 -0
  311. package/dist/svelte/applets-svelte.plugin.d.ts +38 -0
  312. package/dist/svelte/applets-svelte.plugin.d.ts.map +1 -0
  313. package/dist/svelte/applets-svelte.plugin.js +25 -0
  314. package/dist/svelte/components/AppletCanvas.svelte +488 -0
  315. package/dist/svelte/components/AppletCanvas.svelte.d.ts +53 -0
  316. package/dist/svelte/components/AppletCanvas.svelte.d.ts.map +1 -0
  317. package/dist/svelte/components/AppletCatalog.svelte +42 -0
  318. package/dist/svelte/components/AppletCatalog.svelte.d.ts +8 -0
  319. package/dist/svelte/components/AppletCatalog.svelte.d.ts.map +1 -0
  320. package/dist/svelte/components/AppletComposition.svelte +128 -0
  321. package/dist/svelte/components/AppletComposition.svelte.d.ts +30 -0
  322. package/dist/svelte/components/AppletComposition.svelte.d.ts.map +1 -0
  323. package/dist/svelte/components/AppletConsent.svelte +143 -0
  324. package/dist/svelte/components/AppletConsent.svelte.d.ts +12 -0
  325. package/dist/svelte/components/AppletConsent.svelte.d.ts.map +1 -0
  326. package/dist/svelte/components/LocalAppletView.svelte +102 -0
  327. package/dist/svelte/components/LocalAppletView.svelte.d.ts +13 -0
  328. package/dist/svelte/components/LocalAppletView.svelte.d.ts.map +1 -0
  329. package/dist/svelte/components/RunnableTracker.svelte +51 -0
  330. package/dist/svelte/components/RunnableTracker.svelte.d.ts +18 -0
  331. package/dist/svelte/components/RunnableTracker.svelte.d.ts.map +1 -0
  332. package/dist/svelte/index.d.ts +11 -0
  333. package/dist/svelte/index.d.ts.map +1 -0
  334. package/dist/svelte/index.js +10 -0
  335. package/dist/svelte/lib/canvas-lifecycle.d.ts +68 -0
  336. package/dist/svelte/lib/canvas-lifecycle.d.ts.map +1 -0
  337. package/dist/svelte/lib/canvas-lifecycle.js +99 -0
  338. package/dist/svelte/lib/capability-review.d.ts +64 -0
  339. package/dist/svelte/lib/capability-review.d.ts.map +1 -0
  340. package/dist/svelte/lib/capability-review.js +77 -0
  341. package/dist/svelte/lib/message-protocol.d.ts +184 -0
  342. package/dist/svelte/lib/message-protocol.d.ts.map +1 -0
  343. package/dist/svelte/lib/message-protocol.js +251 -0
  344. package/dist/svelte/runnable-source.d.ts +5 -0
  345. package/dist/svelte/runnable-source.d.ts.map +1 -0
  346. package/dist/svelte/runnable-source.js +92 -0
  347. package/dist/svelte/serve-index.svelte +39 -0
  348. package/dist/svelte/serve-index.svelte.d.ts +10 -0
  349. package/dist/svelte/serve-index.svelte.d.ts.map +1 -0
  350. package/dist/svelte/state.svelte.d.ts +26 -0
  351. package/dist/svelte/state.svelte.d.ts.map +1 -0
  352. package/dist/svelte/state.svelte.js +74 -0
  353. package/dist/svelte/styles.css +4 -0
  354. package/dist/svelte/tool-widgets/AppletToolCard.svelte +148 -0
  355. package/dist/svelte/tool-widgets/AppletToolCard.svelte.d.ts +5 -0
  356. package/dist/svelte/tool-widgets/AppletToolCard.svelte.d.ts.map +1 -0
  357. package/dist/svelte/tool-widgets/applet-tool-card.d.ts +41 -0
  358. package/dist/svelte/tool-widgets/applet-tool-card.d.ts.map +1 -0
  359. package/dist/svelte/tool-widgets/applet-tool-card.js +167 -0
  360. package/dist/svelte/tool-widgets/index.d.ts +3 -0
  361. package/dist/svelte/tool-widgets/index.d.ts.map +1 -0
  362. package/dist/svelte/tool-widgets/index.js +2 -0
  363. package/dist/templates/index.d.ts +2 -0
  364. package/dist/templates/index.d.ts.map +1 -0
  365. package/dist/templates/index.js +2 -0
  366. package/dist/templates/index.js.map +1 -0
  367. package/dist/templates/template.kind.d.ts +39 -0
  368. package/dist/templates/template.kind.d.ts.map +1 -0
  369. package/dist/templates/template.kind.js +29 -0
  370. package/dist/templates/template.kind.js.map +1 -0
  371. package/dist/tools/applet.descriptor.d.ts +196 -0
  372. package/dist/tools/applet.descriptor.d.ts.map +1 -0
  373. package/dist/tools/applet.descriptor.js +81 -0
  374. package/dist/tools/applet.descriptor.js.map +1 -0
  375. package/dist/tools/applet.impl.d.ts +32 -0
  376. package/dist/tools/applet.impl.d.ts.map +1 -0
  377. package/dist/tools/applet.impl.js +485 -0
  378. package/dist/tools/applet.impl.js.map +1 -0
  379. package/dist/tools/applet.schemas.d.ts +198 -0
  380. package/dist/tools/applet.schemas.d.ts.map +1 -0
  381. package/dist/tools/applet.schemas.js +136 -0
  382. package/dist/tools/applet.schemas.js.map +1 -0
  383. package/dist/tools/index.d.ts +3 -0
  384. package/dist/tools/index.d.ts.map +1 -0
  385. package/dist/tools/index.js +3 -0
  386. package/dist/tools/index.js.map +1 -0
  387. package/dist/upgrade.d.ts +45 -0
  388. package/dist/upgrade.d.ts.map +1 -0
  389. package/dist/upgrade.js +179 -0
  390. package/dist/upgrade.js.map +1 -0
  391. package/dist/vite.d.ts +26 -0
  392. package/dist/vite.d.ts.map +1 -0
  393. package/dist/vite.js +28 -0
  394. package/dist/vite.js.map +1 -0
  395. package/package.json +264 -4
  396. package/templates/applet-tour/Applet.svelte +95 -0
  397. package/templates/applet-tour/applet.descriptor.ts +15 -0
  398. package/templates/assembly-field/Applet.svelte +242 -0
  399. package/templates/assembly-field/applet.descriptor.ts +7 -0
  400. package/templates/assembly-field/applet.storage.json +47 -0
  401. package/templates/assembly-field/schemas/settings.ts +14 -0
  402. package/templates/assembly-field/settings.ts +32 -0
  403. package/templates/benchmark-comparison/Applet.svelte +17 -0
  404. package/templates/benchmark-comparison/applet.descriptor.ts +7 -0
  405. package/templates/file-diff-viewer/Applet.svelte +91 -0
  406. package/templates/file-diff-viewer/applet.descriptor.ts +14 -0
  407. package/templates/file-diff-viewer/diff.ts +63 -0
  408. package/templates/file-viewer/Applet.svelte +80 -0
  409. package/templates/file-viewer/applet.descriptor.ts +14 -0
  410. package/templates/fleet-runs/Applet.svelte +14 -0
  411. package/templates/fleet-runs/applet.descriptor.ts +7 -0
  412. package/templates/graph-runbook-tracker/Applet.svelte +13 -0
  413. package/templates/graph-runbook-tracker/applet.descriptor.ts +7 -0
  414. package/templates/runbook-tracker/Applet.svelte +12 -0
  415. package/templates/runbook-tracker/applet.descriptor.ts +7 -0
  416. package/templates/runnable-tracker/Applet.svelte +16 -0
  417. package/templates/runnable-tracker/applet.descriptor.ts +10 -0
  418. package/templates/storage-viewer/Applet.svelte +90 -0
  419. package/templates/storage-viewer/applet.descriptor.ts +15 -0
  420. package/templates/workspace-graph-runbook-tracker/Applet.svelte +13 -0
  421. package/templates/workspace-graph-runbook-tracker/applet.descriptor.ts +7 -0
package/LICENSE ADDED
@@ -0,0 +1,18 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 VIBES DEV LLC
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
6
+ associated documentation files (the "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the
9
+ following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be included in all copies or substantial
12
+ portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
15
+ LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
16
+ EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
17
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
18
+ USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,44 @@
1
- # Temporary Holding Version
1
+ # @vibesdotdev/applets
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ Applet definitions, instances, capability grants, launch leases, subscriptions,
4
+ and the unified `applet` tool. An Applet is an installable web application
5
+ pinned to one exact Platform Component release; this package owns instances,
6
+ state, grants, and provenance, never source or compilation.
7
+
8
+ The contract is [SPEC.md](./SPEC.md), including the full public entrypoint
9
+ list. The Svelte canvas, consent UI, and lifecycle projection are described in
10
+ [SPEC.svelte.md](./SPEC.svelte.md).
11
+
12
+ This package is part of the public Vibes framework.
13
+
14
+ The Assembly Field template saves its controls through the supplied applet
15
+ surface and its declared settings store. Reset restores schema defaults;
16
+ loading and saving failures appear in the template.
17
+
18
+ ## Install
19
+
20
+ ```sh
21
+ bun add @vibesdotdev/applets
22
+ # or
23
+ npm install @vibesdotdev/applets
24
+ ```
25
+
26
+ ## Runtime and verification
27
+
28
+ Compose `@vibesdotdev/applets/plugin` and resolve
29
+ `getVibesAppletsClient(runtime)`; bind owner scope with `forRequest(scope)`.
30
+ The root exports the semantic contract. The compatible `./client` subpath
31
+ also exports `RuntimeAppletsClient` for explicit implementation consumers.
32
+ Compose CLI and Svelte plugins through their explicit subpaths.
33
+
34
+ Run `bun run check`, `bun test`, and `bun run build`.
35
+ The build emits production TypeScript and retains the packaged Svelte surface.
36
+
37
+ ## Documentation
38
+
39
+ - Package guide: https://docs.vibes.dev/applets
40
+ - Vibes docs: https://docs.vibes.dev
41
+
42
+ ## License
43
+
44
+ BUSL-1.1 (see LICENSE)
@@ -0,0 +1,47 @@
1
+ /**
2
+ * The applet gate — grant enforcement as an `authz` interceptor.
3
+ *
4
+ * This replaces a bespoke decision function. `runtime-rpc` already routes every
5
+ * arriving invoke through L1's `authz -> friction` pipeline with `origin:
6
+ * 'remote'` and the peer's identity attached, so an applet's calls gate through
7
+ * the same chain as every other call in the system. A second gate chain for the
8
+ * least trusted peer in the product was the wrong shape.
9
+ *
10
+ * What this adds is the applet-specific RULE, not a parallel mechanism:
11
+ *
12
+ * storage.* needs a DECLARATION. The applets SPEC is explicit that
13
+ * "Applet-owned storage is not a browsing-user capability" — the
14
+ * host derives instance, viewer partition, descriptor, and adapter
15
+ * itself, so what it checks is that the consented release actually
16
+ * declared the store.
17
+ * assets the same: a declared reference, bound to the pinned revision.
18
+ * everything else needs the capability on the LIVE grant.
19
+ *
20
+ * A veto is a THROW, which is the pipeline's contract. `dispatchRequest` turns
21
+ * it into an `RPC_INVOKE_FAILED` response, so applet code sees a rejected call
22
+ * rather than a silent null.
23
+ */
24
+ import { CapabilityError, type InvokeInterceptor } from '@vibesdotdev/kernel';
25
+ import type { AppletCapabilityGrant, AppletLaunchLease } from './schemas/grants.ts';
26
+ import type { AppletDefinitionManifest } from './schemas/definition.ts';
27
+ import type { ComponentReleaseRef } from './schemas/component-release-ref.ts';
28
+ /** What the host knows about one live applet connection. */
29
+ export interface AppletGateBinding {
30
+ readonly instanceId: string;
31
+ /** The exact release running. A grant for any other release is refused. */
32
+ readonly release: ComponentReleaseRef;
33
+ readonly manifest: AppletDefinitionManifest;
34
+ readonly grant: AppletCapabilityGrant;
35
+ readonly lease: AppletLaunchLease;
36
+ }
37
+ export declare class AppletGateDenied extends CapabilityError {
38
+ constructor(reason: string, detail: string);
39
+ }
40
+ export declare function createAppletInvokeGate(input: {
41
+ /** Resolve the live binding for the connection an invoke arrived on. */
42
+ bindingFor: (connectionId: string) => AppletGateBinding | undefined;
43
+ /** Consult current trusted host implementations on each call. Missing fails closed. */
44
+ supportsCapability?: (capability: string) => boolean;
45
+ now?: () => Date;
46
+ }): InvokeInterceptor;
47
+ //# sourceMappingURL=applet-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applet-gate.d.ts","sourceRoot":"","sources":["../src/applet-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,eAAe,EAAsB,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAElG,OAAO,KAAK,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACpF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAE9E,4DAA4D;AAC5D,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,CAAC;IAC5C,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;CAClC;AAED,qBAAa,gBAAiB,SAAQ,eAAe;gBACxC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAI1C;AAuCD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC7C,wEAAwE;IACxE,UAAU,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,iBAAiB,GAAG,SAAS,CAAC;IACpE,uFAAuF;IACvF,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;IACrD,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CACjB,GAAG,iBAAiB,CAmIpB"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * The applet gate — grant enforcement as an `authz` interceptor.
3
+ *
4
+ * This replaces a bespoke decision function. `runtime-rpc` already routes every
5
+ * arriving invoke through L1's `authz -> friction` pipeline with `origin:
6
+ * 'remote'` and the peer's identity attached, so an applet's calls gate through
7
+ * the same chain as every other call in the system. A second gate chain for the
8
+ * least trusted peer in the product was the wrong shape.
9
+ *
10
+ * What this adds is the applet-specific RULE, not a parallel mechanism:
11
+ *
12
+ * storage.* needs a DECLARATION. The applets SPEC is explicit that
13
+ * "Applet-owned storage is not a browsing-user capability" — the
14
+ * host derives instance, viewer partition, descriptor, and adapter
15
+ * itself, so what it checks is that the consented release actually
16
+ * declared the store.
17
+ * assets the same: a declared reference, bound to the pinned revision.
18
+ * everything else needs the capability on the LIVE grant.
19
+ *
20
+ * A veto is a THROW, which is the pipeline's contract. `dispatchRequest` turns
21
+ * it into an `RPC_INVOKE_FAILED` response, so applet code sees a rejected call
22
+ * rather than a silent null.
23
+ */
24
+ import { CapabilityError } from '@vibesdotdev/kernel';
25
+ import * as z from 'zod/v4';
26
+ export class AppletGateDenied extends CapabilityError {
27
+ constructor(reason, detail) {
28
+ super(detail, 'PERMISSION_DENIED', { reason, retryable: false });
29
+ this.name = 'AppletGateDenied';
30
+ }
31
+ }
32
+ /*
33
+ * There is deliberately NO target-ref check here.
34
+ *
35
+ * A previous version required a `rootRefId` on the binding and compared it to
36
+ * `ctx.implId`, documented as "the ONE ref this connection may invoke". Nothing
37
+ * read it, and wiring it would have added ceremony rather than safety: the ref
38
+ * is not a secret. `DefaultReferenceTable` mints `${prefix}:${kind}:${seq}`, so
39
+ * every connection's root is the same string, and it is broadcast to the frame
40
+ * anyway.
41
+ *
42
+ * The real containment is the PER-CONNECTION reference table: a ref the table
43
+ * never minted derefs to nothing, whatever it says. Claiming a second control
44
+ * that the id cannot provide was worse than having one control that works.
45
+ */
46
+ /**
47
+ * Methods on the applet root that read or write a DECLARED store rather than
48
+ * exercising a capability. Kept as data so the rule is legible, and so adding a
49
+ * method cannot silently inherit "no capability required".
50
+ */
51
+ const STORAGE_METHODS = new Set(['storageGet', 'storageList', 'storagePut', 'storageDelete']);
52
+ const ASSET_METHODS = new Set(['assetUrl']);
53
+ /**
54
+ * A2 runtime parity: the principal-bound runtime handle. No manifest
55
+ * declaration and no capability tag gate it — Drew's rule is no brittle
56
+ * per-source exposure. The handle acts AS the principal the host bound, so the
57
+ * runtime's own authz decides each call; the gate still proves the connection
58
+ * is live (grant, lease, instance, release) before anything reaches it.
59
+ */
60
+ const RUNTIME_METHODS = new Set(['runtimeQuery', 'runtimeCall', 'runtimeToolCall']);
61
+ /**
62
+ * `call` on a FUNCTION ref the host handed the applet (an unsubscribe a runtime call answered,
63
+ * runtime-rpc SPEC rule 11). The transport admits `call` only on a ref it advertised as a function,
64
+ * never on the root, so this grants nothing beyond the function the host itself returned.
65
+ */
66
+ const CALLBACK_METHODS = new Set(['call']);
67
+ export function createAppletInvokeGate(input) {
68
+ const now = input.now ?? (() => new Date());
69
+ return {
70
+ id: 'applets.grant',
71
+ phase: 'authz',
72
+ async intercept(ctx, next) {
73
+ // Local calls are not applet calls. This gate only speaks for invokes
74
+ // that arrived over an applet connection.
75
+ if (ctx.origin !== 'remote') {
76
+ return next();
77
+ }
78
+ const binding = ctx.remotePeer ? input.bindingFor(ctx.remotePeer.connectionId) : undefined;
79
+ if (!binding) {
80
+ throw new AppletGateDenied('no-binding', 'No live applet binding for this connection; the lease may have been revoked.');
81
+ }
82
+ // Liveness first, for EVERY method including storage. Consent to run
83
+ // this release is what makes its declared stores addressable at all, so
84
+ // a revoked grant stops a read as surely as it stops a capability.
85
+ const at = now();
86
+ if (binding.grant.revokedAt !== null) {
87
+ throw new AppletGateDenied('grant-revoked', 'Capability grant was revoked.');
88
+ }
89
+ if (binding.lease.revokedAt !== null) {
90
+ throw new AppletGateDenied('lease-revoked', 'Launch lease was revoked.');
91
+ }
92
+ if (binding.lease.expiresAt.getTime() <= at.getTime()) {
93
+ throw new AppletGateDenied('lease-expired', 'Launch lease has expired.');
94
+ }
95
+ if (binding.lease.instanceId !== binding.instanceId ||
96
+ binding.grant.instanceId !== binding.instanceId) {
97
+ throw new AppletGateDenied('instance-mismatched', 'Grant or lease belongs to a different applet instance.');
98
+ }
99
+ // THE GRANT MUST BE FOR THE RELEASE BEING GATED.
100
+ //
101
+ // Instance identity alone stopped being sufficient once a composed CHILD
102
+ // could hold its own grant: a child grant carries the SAME instance id
103
+ // and a different release, so `instance-mismatched` waves it through.
104
+ // Nothing selects one today — the page picks the parent grant by release
105
+ // — but "nothing currently does" is not a control, and this is the one
106
+ // place that can say so for every caller.
107
+ if (binding.grant.release.componentId !== binding.release.componentId ||
108
+ binding.grant.release.version !== binding.release.version ||
109
+ binding.grant.release.bundleHash !== binding.release.bundleHash ||
110
+ // FOUR fields, like every other release comparator in this codebase.
111
+ //
112
+ // VACUOUS TODAY, and worth saying so in the house style: nothing in
113
+ // this repository computes a `manifestHash`, so both sides are null on
114
+ // every product path and this term never decides anything. It is here
115
+ // because two releases with identical bytes and different manifests
116
+ // ARE different consent, and because a comparator that omits it would
117
+ // be the one place in the codebase that does.
118
+ //
119
+ // Distinct from dead code deleted elsewhere on this branch: a
120
+ // duplicated runner gate could never fire in ANY future, while this
121
+ // fires the moment a producer exists.
122
+ (binding.grant.release.manifestHash ?? null) !== (binding.release.manifestHash ?? null)) {
123
+ throw new AppletGateDenied('release-mismatched', 'Capability grant was consented for a different release.');
124
+ }
125
+ if (STORAGE_METHODS.has(ctx.method)) {
126
+ const parsed = z.string().safeParse(ctx.args[0]);
127
+ const descriptorId = parsed.success ? parsed.data : '';
128
+ const declared = binding.manifest.storage.some((store) => store.id === descriptorId);
129
+ if (!declared) {
130
+ throw new AppletGateDenied('storage-undeclared', `Store "${descriptorId}" is not declared by this release.`);
131
+ }
132
+ return next();
133
+ }
134
+ if (ASSET_METHODS.has(ctx.method)) {
135
+ const parsed = z.string().safeParse(ctx.args[0]);
136
+ const assetId = parsed.success ? parsed.data : '';
137
+ const referenced = binding.manifest.assets.some((asset) => asset.assetId === assetId);
138
+ if (!referenced) {
139
+ throw new AppletGateDenied('asset-undeclared', `Asset "${assetId}" is not referenced by this release.`);
140
+ }
141
+ return next();
142
+ }
143
+ if (RUNTIME_METHODS.has(ctx.method) || CALLBACK_METHODS.has(ctx.method)) {
144
+ return next();
145
+ }
146
+ // Anything else is authority. An unknown method reaching here is denied
147
+ // rather than allowed: a method added to the root without a rule should
148
+ // fail closed, not inherit one.
149
+ const parsedCap = z.string().safeParse(ctx.args[0]);
150
+ const capability = parsedCap.success ? parsedCap.data : '';
151
+ if (ctx.method !== 'capabilityInvoke') {
152
+ throw new AppletGateDenied('method-ungoverned', `Method "${ctx.method}" has no applet authority rule; refusing rather than assuming one.`);
153
+ }
154
+ if (!binding.grant.capabilities.includes(capability)) {
155
+ throw new AppletGateDenied('capability-not-granted', `Capability "${capability}" is not on the live grant.`);
156
+ }
157
+ if (!binding.manifest.capabilities.some(({ tag }) => tag === capability)) {
158
+ throw new AppletGateDenied('capability-not-declared', 'Capability was not declared by this release.');
159
+ }
160
+ if (!input.supportsCapability?.(capability)) {
161
+ throw new AppletGateDenied('capability-not-supported', 'Capability has no current host implementation.');
162
+ }
163
+ return next();
164
+ }
165
+ };
166
+ }
167
+ //# sourceMappingURL=applet-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applet-gate.js","sourceRoot":"","sources":["../src/applet-gate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * The one object an applet connection can reach.
3
+ *
4
+ * The host puts exactly this in its reference table for a connection, and
5
+ * `dispatchRequest` derefs `targetRef` through that table — so a frame cannot
6
+ * fabricate a ref and reach anything else. The surface here IS the attack
7
+ * surface, which is why it is small and why every method is named in the gate.
8
+ *
9
+ * Authorization is NOT re-done here; `createAppletInvokeGate` runs first on the
10
+ * `authz` phase. What this does is BIND: it reads scope and authority from the
11
+ * manifest and hands the backend a binding the caller could not have chosen.
12
+ * The gate proves a store was declared; this decides what that declaration
13
+ * MEANS. A caller that could name its own scope could read another viewer's
14
+ * rows.
15
+ *
16
+ * A2 runtime parity: the surface also carries a PRINCIPAL-BOUND runtime handle
17
+ * (`runtimeQuery`, `runtimeCall`, `runtimeToolCall`). The host binds the
18
+ * principal (local: the user; cloud: the viewer); the applet can never name it,
19
+ * and every call runs through the host's invoke pipeline so the same authz
20
+ * chain gates it as any other remote peer.
21
+ */
22
+ import * as z from 'zod/v4';
23
+ import type { JsonValue } from '@vibesdotdev/shared/types';
24
+ import type { AppletDefinitionManifest, AppletOwnStorageDescriptor } from './schemas/definition.ts';
25
+ export interface AppletStorageBinding {
26
+ readonly descriptorId: string;
27
+ readonly scope: AppletOwnStorageDescriptor['scope'];
28
+ readonly authority: AppletOwnStorageDescriptor['authority'];
29
+ readonly instanceId: string;
30
+ }
31
+ /** One enabled descriptor, projected for an applet: identity and description only. */
32
+ export interface AppletRuntimeDescriptorView {
33
+ readonly id: string;
34
+ readonly name: string;
35
+ readonly description?: string;
36
+ readonly enabled: boolean;
37
+ }
38
+ /**
39
+ * A callback an applet hands to a runtime call (`subscribe(listener)`): over runtime-rpc it crosses
40
+ * as a callback ref, so the host can call it back across the boundary. The host never sees the
41
+ * applet's function, only a ref it can invoke until the ref is released.
42
+ */
43
+ export type AppletRuntimeCallback = AppletRuntimeFunction;
44
+ /** A function that crosses the applet boundary as a `call`-only ref: JSON in, JSON (or nothing) out. */
45
+ export type AppletRuntimeFunction = (...values: JsonValue[]) => JsonValue | void | Promise<JsonValue | void>;
46
+ /** One positional argument of a runtime call: bounded JSON, or a callback. */
47
+ export type AppletRuntimeArg = JsonValue | AppletRuntimeCallback;
48
+ /** What a runtime call answers: bounded JSON, or a function (an unsubscribe) that crosses back as a ref. */
49
+ export type AppletRuntimeAnswer = JsonValue | AppletRuntimeFunction;
50
+ /** What a host hands the surface before the surface checks it crosses: an answer, or nothing. */
51
+ export type AppletRuntimeHostValue = AppletRuntimeAnswer | undefined;
52
+ /** What one `runtimeQuery` answers: a bounded page of enabled descriptors. */
53
+ export interface AppletRuntimeQueryView {
54
+ readonly kind: string;
55
+ readonly total: number;
56
+ readonly truncated: boolean;
57
+ readonly descriptors: readonly AppletRuntimeDescriptorView[];
58
+ }
59
+ /** What the host must implement to make an applet's declarations real. */
60
+ export interface AppletSurfaceBackend {
61
+ storageGet: (binding: AppletStorageBinding, key: string) => Promise<JsonValue>;
62
+ storageList: (binding: AppletStorageBinding, query: {
63
+ limit?: number;
64
+ cursor?: string;
65
+ }) => Promise<{
66
+ results: JsonValue[];
67
+ nextCursor: string | null;
68
+ }>;
69
+ storagePut: (binding: AppletStorageBinding, key: string, value: JsonValue) => Promise<void>;
70
+ storageDelete: (binding: AppletStorageBinding, key: string) => Promise<void>;
71
+ assetUrl: (assetId: string, revision: string, digest: string) => Promise<string | null>;
72
+ capabilityInvoke: (capability: string, input: JsonValue) => Promise<JsonValue>;
73
+ /** Enabled descriptors of one kind, already projected; the surface bounds the answer. Absent: this host binds no runtime handle. */
74
+ runtimeQuery?: (kind: string) => Promise<AppletRuntimeQueryView>;
75
+ /** One method call on a resolved runtime asset, through the host's invoke pipeline. Absent: no runtime handle. */
76
+ runtimeCall?: (kind: string, id: string, method: string, args: readonly AppletRuntimeArg[]) => Promise<AppletRuntimeHostValue>;
77
+ /** One tool call, on the runtime the host bound to the principal. Absent: no runtime handle. */
78
+ runtimeToolCall?: (toolId: string, input: JsonValue) => Promise<AppletRuntimeHostValue>;
79
+ }
80
+ export interface AppletRootSurface {
81
+ storageGet: (descriptorId: string, key: string) => Promise<JsonValue>;
82
+ storageList: (descriptorId: string, query?: {
83
+ limit?: number;
84
+ cursor?: string;
85
+ }) => Promise<{
86
+ results: JsonValue[];
87
+ nextCursor: string | null;
88
+ }>;
89
+ storagePut: (descriptorId: string, key: string, value: JsonValue) => Promise<void>;
90
+ storageDelete: (descriptorId: string, key: string) => Promise<void>;
91
+ assetUrl: (assetId: string) => Promise<string | null>;
92
+ capabilityInvoke: (capability: string, input?: JsonValue) => Promise<JsonValue>;
93
+ /** Enabled descriptors of `kind` on the principal-bound runtime, bounded. */
94
+ runtimeQuery: (kind: string) => Promise<AppletRuntimeQueryView>;
95
+ /**
96
+ * One method call on a runtime asset of `kind`/`id`, as the bound principal. Arguments may be
97
+ * callbacks and the answer may be a function: `runtimeCall(kind, id, 'subscribe', listener)`
98
+ * subscribes to an existing store or hook and answers its unsubscribe. No subscribe method exists.
99
+ */
100
+ runtimeCall: (kind: string, id: string, method: string, ...args: AppletRuntimeArg[]) => Promise<AppletRuntimeAnswer>;
101
+ /** One tool call on the principal-bound runtime, bounded. */
102
+ runtimeToolCall: (toolId: string, input?: JsonValue) => Promise<JsonValue>;
103
+ }
104
+ /**
105
+ * Every method an applet connection may call on its root surface. A host that
106
+ * serves the surface over runtime-rpc advertises exactly these as the listen
107
+ * target's `rootMethods`; an unadvertised method is refused before dispatch.
108
+ */
109
+ export declare const APPLET_ROOT_SURFACE_METHODS: readonly ["storageGet", "storageList", "storagePut", "storageDelete", "assetUrl", "capabilityInvoke", "runtimeQuery", "runtimeCall", "runtimeToolCall"];
110
+ /** A function value: a callback argument or an unsubscribe answer, carried by the wire as a ref. */
111
+ export declare const appletRuntimeCallbackSchema: z.ZodCustom<AppletRuntimeFunction, AppletRuntimeFunction>;
112
+ /** A host's raw runtime answer, parsed where it enters the surface: a function, bounded JSON, or nothing. */
113
+ export declare const appletRuntimeHostValueSchema: z.ZodOptional<z.ZodUnion<readonly [z.ZodCustom<AppletRuntimeFunction, AppletRuntimeFunction>, z.ZodPipe<z.ZodCustom<import("@vibesdotdev/kernel/bootstrap").JsonValue, import("@vibesdotdev/kernel/bootstrap").JsonValue>, z.ZodTransform<string | number | boolean | import("@vibesdotdev/kernel/schemas/json").JsonObject | import("@vibesdotdev/kernel/schemas/json").JsonArray | null, import("@vibesdotdev/kernel/bootstrap").JsonValue>>]>>;
114
+ /** Most descriptors one runtime query answers. */
115
+ export declare const MAX_RUNTIME_DESCRIPTORS = 100;
116
+ /** Longest description the descriptor projection carries. */
117
+ export declare const MAX_RUNTIME_DESCRIPTION = 280;
118
+ /** What one `runtimeQuery` answers, checked at the surface before it crosses. */
119
+ export declare const appletRuntimeQueryViewSchema: z.ZodObject<{
120
+ kind: z.ZodString;
121
+ total: z.ZodNumber;
122
+ truncated: z.ZodBoolean;
123
+ descriptors: z.ZodArray<z.ZodObject<{
124
+ id: z.ZodString;
125
+ name: z.ZodString;
126
+ description: z.ZodOptional<z.ZodString>;
127
+ enabled: z.ZodBoolean;
128
+ }, z.core.$strip>>;
129
+ }, z.core.$strip>;
130
+ export declare function createAppletRootSurface(input: {
131
+ instanceId: string;
132
+ manifest: AppletDefinitionManifest;
133
+ backend: AppletSurfaceBackend;
134
+ }): AppletRootSurface;
135
+ //# sourceMappingURL=applet-root-surface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applet-root-surface.d.ts","sourceRoot":"","sources":["../src/applet-root-surface.ts"],"names":[],"mappings":"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"}