happy2 0.0.9 → 0.0.12

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 (286) hide show
  1. package/README.md +29 -0
  2. package/package.json +7 -3
  3. package/packages/happy2-server/PLUGINS.md +402 -0
  4. package/packages/happy2-server/README.md +39 -0
  5. package/packages/happy2-server/dist/daemon.d.ts +39 -0
  6. package/packages/happy2-server/dist/daemon.d.ts.map +1 -0
  7. package/packages/happy2-server/dist/daemon.js +302 -0
  8. package/packages/happy2-server/dist/daemon.js.map +1 -0
  9. package/packages/happy2-server/dist/daemon.test.d.ts +2 -0
  10. package/packages/happy2-server/dist/daemon.test.d.ts.map +1 -0
  11. package/packages/happy2-server/dist/daemon.test.js +245 -0
  12. package/packages/happy2-server/dist/daemon.test.js.map +1 -0
  13. package/packages/happy2-server/dist/index.d.ts +7 -1
  14. package/packages/happy2-server/dist/index.d.ts.map +1 -1
  15. package/packages/happy2-server/dist/index.js +5 -1
  16. package/packages/happy2-server/dist/index.js.map +1 -1
  17. package/packages/happy2-server/dist/modules/agents/daemon.d.ts +10 -13
  18. package/packages/happy2-server/dist/modules/agents/daemon.d.ts.map +1 -1
  19. package/packages/happy2-server/dist/modules/agents/daemon.js +19 -5
  20. package/packages/happy2-server/dist/modules/agents/daemon.js.map +1 -1
  21. package/packages/happy2-server/dist/modules/agents/service.d.ts +9 -1
  22. package/packages/happy2-server/dist/modules/agents/service.d.ts.map +1 -1
  23. package/packages/happy2-server/dist/modules/agents/service.js +59 -2
  24. package/packages/happy2-server/dist/modules/agents/service.js.map +1 -1
  25. package/packages/happy2-server/dist/modules/auth/tokens.d.ts +7 -0
  26. package/packages/happy2-server/dist/modules/auth/tokens.d.ts.map +1 -1
  27. package/packages/happy2-server/dist/modules/auth/tokens.js +33 -0
  28. package/packages/happy2-server/dist/modules/auth/tokens.js.map +1 -1
  29. package/packages/happy2-server/dist/modules/auth/tokens.test.d.ts +2 -0
  30. package/packages/happy2-server/dist/modules/auth/tokens.test.d.ts.map +1 -0
  31. package/packages/happy2-server/dist/modules/auth/tokens.test.js +28 -0
  32. package/packages/happy2-server/dist/modules/auth/tokens.test.js.map +1 -0
  33. package/packages/happy2-server/dist/modules/chat/types.d.ts +1 -1
  34. package/packages/happy2-server/dist/modules/chat/types.d.ts.map +1 -1
  35. package/packages/happy2-server/dist/modules/config/defaults.d.ts.map +1 -1
  36. package/packages/happy2-server/dist/modules/config/defaults.js +5 -0
  37. package/packages/happy2-server/dist/modules/config/defaults.js.map +1 -1
  38. package/packages/happy2-server/dist/modules/config/loader.d.ts.map +1 -1
  39. package/packages/happy2-server/dist/modules/config/loader.js +9 -0
  40. package/packages/happy2-server/dist/modules/config/loader.js.map +1 -1
  41. package/packages/happy2-server/dist/modules/config/loader.test.js +15 -0
  42. package/packages/happy2-server/dist/modules/config/loader.test.js.map +1 -1
  43. package/packages/happy2-server/dist/modules/config/paths.d.ts +1 -0
  44. package/packages/happy2-server/dist/modules/config/paths.d.ts.map +1 -1
  45. package/packages/happy2-server/dist/modules/config/paths.js +1 -0
  46. package/packages/happy2-server/dist/modules/config/paths.js.map +1 -1
  47. package/packages/happy2-server/dist/modules/config/paths.test.js +1 -0
  48. package/packages/happy2-server/dist/modules/config/paths.test.js.map +1 -1
  49. package/packages/happy2-server/dist/modules/config/type.d.ts +5 -0
  50. package/packages/happy2-server/dist/modules/config/type.d.ts.map +1 -1
  51. package/packages/happy2-server/dist/modules/integrations/transport.d.ts.map +1 -1
  52. package/packages/happy2-server/dist/modules/integrations/transport.js +8 -1
  53. package/packages/happy2-server/dist/modules/integrations/transport.js.map +1 -1
  54. package/packages/happy2-server/dist/modules/integrations/types.d.ts +2 -0
  55. package/packages/happy2-server/dist/modules/integrations/types.d.ts.map +1 -1
  56. package/packages/happy2-server/dist/modules/integrations/types.js.map +1 -1
  57. package/packages/happy2-server/dist/modules/plugin/catalog.d.ts +13 -0
  58. package/packages/happy2-server/dist/modules/plugin/catalog.d.ts.map +1 -0
  59. package/packages/happy2-server/dist/modules/plugin/catalog.js +400 -0
  60. package/packages/happy2-server/dist/modules/plugin/catalog.js.map +1 -0
  61. package/packages/happy2-server/dist/modules/plugin/catalog.test.d.ts +2 -0
  62. package/packages/happy2-server/dist/modules/plugin/catalog.test.d.ts.map +1 -0
  63. package/packages/happy2-server/dist/modules/plugin/catalog.test.js +172 -0
  64. package/packages/happy2-server/dist/modules/plugin/catalog.test.js.map +1 -0
  65. package/packages/happy2-server/dist/modules/plugin/functions.test.d.ts +2 -0
  66. package/packages/happy2-server/dist/modules/plugin/functions.test.d.ts.map +1 -0
  67. package/packages/happy2-server/dist/modules/plugin/functions.test.js +123 -0
  68. package/packages/happy2-server/dist/modules/plugin/functions.test.js.map +1 -0
  69. package/packages/happy2-server/dist/modules/plugin/httpBridge.d.ts +19 -0
  70. package/packages/happy2-server/dist/modules/plugin/httpBridge.d.ts.map +1 -0
  71. package/packages/happy2-server/dist/modules/plugin/httpBridge.js +206 -0
  72. package/packages/happy2-server/dist/modules/plugin/httpBridge.js.map +1 -0
  73. package/packages/happy2-server/dist/modules/plugin/impl/asInstallation.d.ts +3 -0
  74. package/packages/happy2-server/dist/modules/plugin/impl/asInstallation.d.ts.map +1 -0
  75. package/packages/happy2-server/dist/modules/plugin/impl/asInstallation.js +47 -0
  76. package/packages/happy2-server/dist/modules/plugin/impl/asInstallation.js.map +1 -0
  77. package/packages/happy2-server/dist/modules/plugin/impl/asPlugin.d.ts +3 -0
  78. package/packages/happy2-server/dist/modules/plugin/impl/asPlugin.d.ts.map +1 -0
  79. package/packages/happy2-server/dist/modules/plugin/impl/asPlugin.js +82 -0
  80. package/packages/happy2-server/dist/modules/plugin/impl/asPlugin.js.map +1 -0
  81. package/packages/happy2-server/dist/modules/plugin/impl/effectiveContainer.d.ts +3 -0
  82. package/packages/happy2-server/dist/modules/plugin/impl/effectiveContainer.d.ts.map +1 -0
  83. package/packages/happy2-server/dist/modules/plugin/impl/effectiveContainer.js +12 -0
  84. package/packages/happy2-server/dist/modules/plugin/impl/effectiveContainer.js.map +1 -0
  85. package/packages/happy2-server/dist/modules/plugin/impl/installationSelection.d.ts +288 -0
  86. package/packages/happy2-server/dist/modules/plugin/impl/installationSelection.d.ts.map +1 -0
  87. package/packages/happy2-server/dist/modules/plugin/impl/installationSelection.js +19 -0
  88. package/packages/happy2-server/dist/modules/plugin/impl/installationSelection.js.map +1 -0
  89. package/packages/happy2-server/dist/modules/plugin/impl/installedManifest.d.ts +3 -0
  90. package/packages/happy2-server/dist/modules/plugin/impl/installedManifest.d.ts.map +1 -0
  91. package/packages/happy2-server/dist/modules/plugin/impl/installedManifest.js +63 -0
  92. package/packages/happy2-server/dist/modules/plugin/impl/installedManifest.js.map +1 -0
  93. package/packages/happy2-server/dist/modules/plugin/impl/installedManifest.test.d.ts +2 -0
  94. package/packages/happy2-server/dist/modules/plugin/impl/installedManifest.test.d.ts.map +1 -0
  95. package/packages/happy2-server/dist/modules/plugin/impl/installedManifest.test.js +17 -0
  96. package/packages/happy2-server/dist/modules/plugin/impl/installedManifest.test.js.map +1 -0
  97. package/packages/happy2-server/dist/modules/plugin/impl/pluginFunctionResult.d.ts +3 -0
  98. package/packages/happy2-server/dist/modules/plugin/impl/pluginFunctionResult.d.ts.map +1 -0
  99. package/packages/happy2-server/dist/modules/plugin/impl/pluginFunctionResult.js +16 -0
  100. package/packages/happy2-server/dist/modules/plugin/impl/pluginFunctionResult.js.map +1 -0
  101. package/packages/happy2-server/dist/modules/plugin/impl/pluginSelection.d.ts +339 -0
  102. package/packages/happy2-server/dist/modules/plugin/impl/pluginSelection.d.ts.map +1 -0
  103. package/packages/happy2-server/dist/modules/plugin/impl/pluginSelection.js +22 -0
  104. package/packages/happy2-server/dist/modules/plugin/impl/pluginSelection.js.map +1 -0
  105. package/packages/happy2-server/dist/modules/plugin/index.d.ts +3 -0
  106. package/packages/happy2-server/dist/modules/plugin/index.d.ts.map +1 -0
  107. package/packages/happy2-server/dist/modules/plugin/index.js +3 -0
  108. package/packages/happy2-server/dist/modules/plugin/index.js.map +1 -0
  109. package/packages/happy2-server/dist/modules/plugin/packageStore.d.ts +15 -0
  110. package/packages/happy2-server/dist/modules/plugin/packageStore.d.ts.map +1 -0
  111. package/packages/happy2-server/dist/modules/plugin/packageStore.js +90 -0
  112. package/packages/happy2-server/dist/modules/plugin/packageStore.js.map +1 -0
  113. package/packages/happy2-server/dist/modules/plugin/pluginAuthorizeManagement.d.ts +7 -0
  114. package/packages/happy2-server/dist/modules/plugin/pluginAuthorizeManagement.d.ts.map +1 -0
  115. package/packages/happy2-server/dist/modules/plugin/pluginAuthorizeManagement.js +9 -0
  116. package/packages/happy2-server/dist/modules/plugin/pluginAuthorizeManagement.js.map +1 -0
  117. package/packages/happy2-server/dist/modules/plugin/pluginCatalogList.d.ts +9 -0
  118. package/packages/happy2-server/dist/modules/plugin/pluginCatalogList.d.ts.map +1 -0
  119. package/packages/happy2-server/dist/modules/plugin/pluginCatalogList.js +64 -0
  120. package/packages/happy2-server/dist/modules/plugin/pluginCatalogList.js.map +1 -0
  121. package/packages/happy2-server/dist/modules/plugin/pluginContainerInstanceAuthorize.d.ts +10 -0
  122. package/packages/happy2-server/dist/modules/plugin/pluginContainerInstanceAuthorize.d.ts.map +1 -0
  123. package/packages/happy2-server/dist/modules/plugin/pluginContainerInstanceAuthorize.js +20 -0
  124. package/packages/happy2-server/dist/modules/plugin/pluginContainerInstanceAuthorize.js.map +1 -0
  125. package/packages/happy2-server/dist/modules/plugin/pluginContainerInstanceInvalidate.d.ts +12 -0
  126. package/packages/happy2-server/dist/modules/plugin/pluginContainerInstanceInvalidate.d.ts.map +1 -0
  127. package/packages/happy2-server/dist/modules/plugin/pluginContainerInstanceInvalidate.js +44 -0
  128. package/packages/happy2-server/dist/modules/plugin/pluginContainerInstanceInvalidate.js.map +1 -0
  129. package/packages/happy2-server/dist/modules/plugin/pluginFindBySource.d.ts +9 -0
  130. package/packages/happy2-server/dist/modules/plugin/pluginFindBySource.d.ts.map +1 -0
  131. package/packages/happy2-server/dist/modules/plugin/pluginFindBySource.js +15 -0
  132. package/packages/happy2-server/dist/modules/plugin/pluginFindBySource.js.map +1 -0
  133. package/packages/happy2-server/dist/modules/plugin/pluginFunctionResultAcquire.d.ts +23 -0
  134. package/packages/happy2-server/dist/modules/plugin/pluginFunctionResultAcquire.d.ts.map +1 -0
  135. package/packages/happy2-server/dist/modules/plugin/pluginFunctionResultAcquire.js +54 -0
  136. package/packages/happy2-server/dist/modules/plugin/pluginFunctionResultAcquire.js.map +1 -0
  137. package/packages/happy2-server/dist/modules/plugin/pluginFunctionResultComplete.d.ts +13 -0
  138. package/packages/happy2-server/dist/modules/plugin/pluginFunctionResultComplete.d.ts.map +1 -0
  139. package/packages/happy2-server/dist/modules/plugin/pluginFunctionResultComplete.js +37 -0
  140. package/packages/happy2-server/dist/modules/plugin/pluginFunctionResultComplete.js.map +1 -0
  141. package/packages/happy2-server/dist/modules/plugin/pluginGetImage.d.ts +17 -0
  142. package/packages/happy2-server/dist/modules/plugin/pluginGetImage.d.ts.map +1 -0
  143. package/packages/happy2-server/dist/modules/plugin/pluginGetImage.js +29 -0
  144. package/packages/happy2-server/dist/modules/plugin/pluginGetImage.js.map +1 -0
  145. package/packages/happy2-server/dist/modules/plugin/pluginInstall.d.ts +27 -0
  146. package/packages/happy2-server/dist/modules/plugin/pluginInstall.d.ts.map +1 -0
  147. package/packages/happy2-server/dist/modules/plugin/pluginInstall.js +180 -0
  148. package/packages/happy2-server/dist/modules/plugin/pluginInstall.js.map +1 -0
  149. package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetRuntimeConfiguration.d.ts +9 -0
  150. package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetRuntimeConfiguration.d.ts.map +1 -0
  151. package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetRuntimeConfiguration.js +122 -0
  152. package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetRuntimeConfiguration.js.map +1 -0
  153. package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetStatus.d.ts +11 -0
  154. package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetStatus.d.ts.map +1 -0
  155. package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetStatus.js +18 -0
  156. package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetStatus.js.map +1 -0
  157. package/packages/happy2-server/dist/modules/plugin/pluginInstallationList.d.ts +8 -0
  158. package/packages/happy2-server/dist/modules/plugin/pluginInstallationList.d.ts.map +1 -0
  159. package/packages/happy2-server/dist/modules/plugin/pluginInstallationList.js +19 -0
  160. package/packages/happy2-server/dist/modules/plugin/pluginInstallationList.js.map +1 -0
  161. package/packages/happy2-server/dist/modules/plugin/pluginInstallationListForHost.d.ts +14 -0
  162. package/packages/happy2-server/dist/modules/plugin/pluginInstallationListForHost.d.ts.map +1 -0
  163. package/packages/happy2-server/dist/modules/plugin/pluginInstallationListForHost.js +20 -0
  164. package/packages/happy2-server/dist/modules/plugin/pluginInstallationListForHost.js.map +1 -0
  165. package/packages/happy2-server/dist/modules/plugin/pluginInstallationListIds.d.ts +7 -0
  166. package/packages/happy2-server/dist/modules/plugin/pluginInstallationListIds.d.ts.map +1 -0
  167. package/packages/happy2-server/dist/modules/plugin/pluginInstallationListIds.js +13 -0
  168. package/packages/happy2-server/dist/modules/plugin/pluginInstallationListIds.js.map +1 -0
  169. package/packages/happy2-server/dist/modules/plugin/pluginInstallationListReadyMcpIds.d.ts +7 -0
  170. package/packages/happy2-server/dist/modules/plugin/pluginInstallationListReadyMcpIds.d.ts.map +1 -0
  171. package/packages/happy2-server/dist/modules/plugin/pluginInstallationListReadyMcpIds.js +16 -0
  172. package/packages/happy2-server/dist/modules/plugin/pluginInstallationListReadyMcpIds.js.map +1 -0
  173. package/packages/happy2-server/dist/modules/plugin/pluginInstallationUpdateStatus.d.ts +16 -0
  174. package/packages/happy2-server/dist/modules/plugin/pluginInstallationUpdateStatus.d.ts.map +1 -0
  175. package/packages/happy2-server/dist/modules/plugin/pluginInstallationUpdateStatus.js +38 -0
  176. package/packages/happy2-server/dist/modules/plugin/pluginInstallationUpdateStatus.js.map +1 -0
  177. package/packages/happy2-server/dist/modules/plugin/pluginList.d.ts +8 -0
  178. package/packages/happy2-server/dist/modules/plugin/pluginList.d.ts.map +1 -0
  179. package/packages/happy2-server/dist/modules/plugin/pluginList.js +17 -0
  180. package/packages/happy2-server/dist/modules/plugin/pluginList.js.map +1 -0
  181. package/packages/happy2-server/dist/modules/plugin/pluginMcpToolsList.d.ts +11 -0
  182. package/packages/happy2-server/dist/modules/plugin/pluginMcpToolsList.d.ts.map +1 -0
  183. package/packages/happy2-server/dist/modules/plugin/pluginMcpToolsList.js +43 -0
  184. package/packages/happy2-server/dist/modules/plugin/pluginMcpToolsList.js.map +1 -0
  185. package/packages/happy2-server/dist/modules/plugin/pluginMcpToolsListReady.d.ts +15 -0
  186. package/packages/happy2-server/dist/modules/plugin/pluginMcpToolsListReady.d.ts.map +1 -0
  187. package/packages/happy2-server/dist/modules/plugin/pluginMcpToolsListReady.js +37 -0
  188. package/packages/happy2-server/dist/modules/plugin/pluginMcpToolsListReady.js.map +1 -0
  189. package/packages/happy2-server/dist/modules/plugin/pluginMcpToolsReplace.d.ts +16 -0
  190. package/packages/happy2-server/dist/modules/plugin/pluginMcpToolsReplace.d.ts.map +1 -0
  191. package/packages/happy2-server/dist/modules/plugin/pluginMcpToolsReplace.js +71 -0
  192. package/packages/happy2-server/dist/modules/plugin/pluginMcpToolsReplace.js.map +1 -0
  193. package/packages/happy2-server/dist/modules/plugin/pluginRemoveMissingBuiltins.d.ts +14 -0
  194. package/packages/happy2-server/dist/modules/plugin/pluginRemoveMissingBuiltins.d.ts.map +1 -0
  195. package/packages/happy2-server/dist/modules/plugin/pluginRemoveMissingBuiltins.js +51 -0
  196. package/packages/happy2-server/dist/modules/plugin/pluginRemoveMissingBuiltins.js.map +1 -0
  197. package/packages/happy2-server/dist/modules/plugin/runtime.d.ts +56 -0
  198. package/packages/happy2-server/dist/modules/plugin/runtime.d.ts.map +1 -0
  199. package/packages/happy2-server/dist/modules/plugin/runtime.js +147 -0
  200. package/packages/happy2-server/dist/modules/plugin/runtime.js.map +1 -0
  201. package/packages/happy2-server/dist/modules/plugin/secrets.d.ts +17 -0
  202. package/packages/happy2-server/dist/modules/plugin/secrets.d.ts.map +1 -0
  203. package/packages/happy2-server/dist/modules/plugin/secrets.js +56 -0
  204. package/packages/happy2-server/dist/modules/plugin/secrets.js.map +1 -0
  205. package/packages/happy2-server/dist/modules/plugin/secrets.test.d.ts +2 -0
  206. package/packages/happy2-server/dist/modules/plugin/secrets.test.d.ts.map +1 -0
  207. package/packages/happy2-server/dist/modules/plugin/secrets.test.js +14 -0
  208. package/packages/happy2-server/dist/modules/plugin/secrets.test.js.map +1 -0
  209. package/packages/happy2-server/dist/modules/plugin/service.d.ts +60 -0
  210. package/packages/happy2-server/dist/modules/plugin/service.d.ts.map +1 -0
  211. package/packages/happy2-server/dist/modules/plugin/service.js +584 -0
  212. package/packages/happy2-server/dist/modules/plugin/service.js.map +1 -0
  213. package/packages/happy2-server/dist/modules/plugin/types.d.ts +194 -0
  214. package/packages/happy2-server/dist/modules/plugin/types.d.ts.map +1 -0
  215. package/packages/happy2-server/dist/modules/plugin/types.js +10 -0
  216. package/packages/happy2-server/dist/modules/plugin/types.js.map +1 -0
  217. package/packages/happy2-server/dist/modules/plugin/utils/ndjsonStreamTransport.d.ts +19 -0
  218. package/packages/happy2-server/dist/modules/plugin/utils/ndjsonStreamTransport.d.ts.map +1 -0
  219. package/packages/happy2-server/dist/modules/plugin/utils/ndjsonStreamTransport.js +97 -0
  220. package/packages/happy2-server/dist/modules/plugin/utils/ndjsonStreamTransport.js.map +1 -0
  221. package/packages/happy2-server/dist/modules/plugin/utils/ndjsonStreamTransport.test.d.ts +2 -0
  222. package/packages/happy2-server/dist/modules/plugin/utils/ndjsonStreamTransport.test.d.ts.map +1 -0
  223. package/packages/happy2-server/dist/modules/plugin/utils/ndjsonStreamTransport.test.js +74 -0
  224. package/packages/happy2-server/dist/modules/plugin/utils/ndjsonStreamTransport.test.js.map +1 -0
  225. package/packages/happy2-server/dist/modules/plugin/utils/remoteMcpTransport.d.ts +29 -0
  226. package/packages/happy2-server/dist/modules/plugin/utils/remoteMcpTransport.d.ts.map +1 -0
  227. package/packages/happy2-server/dist/modules/plugin/utils/remoteMcpTransport.js +126 -0
  228. package/packages/happy2-server/dist/modules/plugin/utils/remoteMcpTransport.js.map +1 -0
  229. package/packages/happy2-server/dist/modules/plugin/utils/remoteMcpTransport.test.d.ts +2 -0
  230. package/packages/happy2-server/dist/modules/plugin/utils/remoteMcpTransport.test.d.ts.map +1 -0
  231. package/packages/happy2-server/dist/modules/plugin/utils/remoteMcpTransport.test.js +75 -0
  232. package/packages/happy2-server/dist/modules/plugin/utils/remoteMcpTransport.test.js.map +1 -0
  233. package/packages/happy2-server/dist/modules/sandbox/index.d.ts +1 -1
  234. package/packages/happy2-server/dist/modules/sandbox/index.d.ts.map +1 -1
  235. package/packages/happy2-server/dist/modules/sandbox/localOciSandboxProvider.d.ts +9 -1
  236. package/packages/happy2-server/dist/modules/sandbox/localOciSandboxProvider.d.ts.map +1 -1
  237. package/packages/happy2-server/dist/modules/sandbox/localOciSandboxProvider.js +218 -4
  238. package/packages/happy2-server/dist/modules/sandbox/localOciSandboxProvider.js.map +1 -1
  239. package/packages/happy2-server/dist/modules/sandbox/localOciSandboxProvider.test.js +157 -2
  240. package/packages/happy2-server/dist/modules/sandbox/localOciSandboxProvider.test.js.map +1 -1
  241. package/packages/happy2-server/dist/modules/sandbox/types.d.ts +24 -0
  242. package/packages/happy2-server/dist/modules/sandbox/types.d.ts.map +1 -1
  243. package/packages/happy2-server/dist/modules/schema.d.ts +7781 -5489
  244. package/packages/happy2-server/dist/modules/schema.d.ts.map +1 -1
  245. package/packages/happy2-server/dist/modules/schema.js +87 -1
  246. package/packages/happy2-server/dist/modules/schema.js.map +1 -1
  247. package/packages/happy2-server/dist/modules/sync/syncGetDifference.d.ts.map +1 -1
  248. package/packages/happy2-server/dist/modules/sync/syncGetDifference.js +2 -0
  249. package/packages/happy2-server/dist/modules/sync/syncGetDifference.js.map +1 -1
  250. package/packages/happy2-server/dist/routes/pluginHost.d.ts +6 -0
  251. package/packages/happy2-server/dist/routes/pluginHost.d.ts.map +1 -0
  252. package/packages/happy2-server/dist/routes/pluginHost.js +37 -0
  253. package/packages/happy2-server/dist/routes/pluginHost.js.map +1 -0
  254. package/packages/happy2-server/dist/routes/plugins.d.ts +8 -0
  255. package/packages/happy2-server/dist/routes/plugins.d.ts.map +1 -0
  256. package/packages/happy2-server/dist/routes/plugins.js +198 -0
  257. package/packages/happy2-server/dist/routes/plugins.js.map +1 -0
  258. package/packages/happy2-server/dist/runner.js +64 -19
  259. package/packages/happy2-server/dist/runner.js.map +1 -1
  260. package/packages/happy2-server/dist/server.d.ts +8 -0
  261. package/packages/happy2-server/dist/server.d.ts.map +1 -1
  262. package/packages/happy2-server/dist/server.js +65 -3
  263. package/packages/happy2-server/dist/server.js.map +1 -1
  264. package/packages/happy2-server/dist/systemService.d.ts +48 -0
  265. package/packages/happy2-server/dist/systemService.d.ts.map +1 -0
  266. package/packages/happy2-server/dist/systemService.js +323 -0
  267. package/packages/happy2-server/dist/systemService.js.map +1 -0
  268. package/packages/happy2-server/dist/systemService.test.d.ts +2 -0
  269. package/packages/happy2-server/dist/systemService.test.d.ts.map +1 -0
  270. package/packages/happy2-server/dist/systemService.test.js +280 -0
  271. package/packages/happy2-server/dist/systemService.test.js.map +1 -0
  272. package/packages/happy2-server/dist/web/assets/index-9SGCQLg7.js +46 -0
  273. package/packages/happy2-server/dist/web/assets/{index-DZ1uRLgV.css → index-DWXBQDJB.css} +1 -1
  274. package/packages/happy2-server/dist/web/index.html +2 -2
  275. package/packages/happy2-server/drizzle/0020_plugins.sql +61 -0
  276. package/packages/happy2-server/drizzle/0021_plugin_function_results.sql +11 -0
  277. package/packages/happy2-server/drizzle/0022_plugin_container_runtime_tools.sql +16 -0
  278. package/packages/happy2-server/drizzle/meta/_journal.json +21 -0
  279. package/packages/happy2-server/happy2.example.toml +13 -0
  280. package/packages/happy2-server/plugins/README.md +7 -0
  281. package/packages/happy2-server/plugins/hello/container/Dockerfile +6 -0
  282. package/packages/happy2-server/plugins/hello/plugin.json +16 -0
  283. package/packages/happy2-server/plugins/hello/plugin.png +0 -0
  284. package/packages/happy2-server/plugins/hello/server.mjs +75 -0
  285. package/packages/happy2-server/plugins/hello/skills/hello/SKILL.md +11 -0
  286. package/packages/happy2-server/dist/web/assets/index-DH1SOwNV.js +0 -46
@@ -0,0 +1,12 @@
1
+ import type { DrizzleExecutor } from "../drizzle.js";
2
+ import type { MutationHint } from "../chat/types.js";
3
+ /**
4
+ * Revokes one missing container incarnation in pluginInstallations only if it is still the installation's current authority.
5
+ * The guarded transaction prevents an old health check from invalidating a replacement and publishes the resulting failed lifecycle state.
6
+ */
7
+ export declare function pluginContainerInstanceInvalidate(executor: DrizzleExecutor, input: {
8
+ installationId: string;
9
+ containerInstanceId: string;
10
+ detail: string;
11
+ }): Promise<MutationHint | undefined>;
12
+ //# sourceMappingURL=pluginContainerInstanceInvalidate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginContainerInstanceInvalidate.d.ts","sourceRoot":"","sources":["../../../sources/modules/plugin/pluginContainerInstanceInvalidate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAMrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD;;;GAGG;AACH,wBAAsB,iCAAiC,CACnD,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC/E,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAwCnC"}
@@ -0,0 +1,44 @@
1
+ import { and, eq, sql } from "drizzle-orm";
2
+ import { withTransaction } from "../drizzle.js";
3
+ import { pluginInstallations } from "../schema.js";
4
+ import { syncSequenceNext } from "../sync/syncSequenceNext.js";
5
+ import { syncEventInsert } from "../sync/syncEventInsert.js";
6
+ import { areaHint } from "../chat/areaHint.js";
7
+ /**
8
+ * Revokes one missing container incarnation in pluginInstallations only if it is still the installation's current authority.
9
+ * The guarded transaction prevents an old health check from invalidating a replacement and publishes the resulting failed lifecycle state.
10
+ */
11
+ export async function pluginContainerInstanceInvalidate(executor, input) {
12
+ return withTransaction(executor, async (tx) => {
13
+ const [current] = await tx
14
+ .select({ id: pluginInstallations.id })
15
+ .from(pluginInstallations)
16
+ .where(and(eq(pluginInstallations.id, input.installationId), eq(pluginInstallations.containerInstanceId, input.containerInstanceId)))
17
+ .limit(1);
18
+ if (!current)
19
+ return undefined;
20
+ const sequence = await syncSequenceNext(tx);
21
+ const [updated] = await tx
22
+ .update(pluginInstallations)
23
+ .set({
24
+ containerInstanceId: null,
25
+ status: "failed",
26
+ statusDetail: input.detail,
27
+ lastError: "The recorded plugin container is not running.",
28
+ readyAt: null,
29
+ syncSequence: sequence,
30
+ updatedAt: sql `CURRENT_TIMESTAMP`,
31
+ })
32
+ .where(and(eq(pluginInstallations.id, input.installationId), eq(pluginInstallations.containerInstanceId, input.containerInstanceId)))
33
+ .returning({ id: pluginInstallations.id });
34
+ if (!updated)
35
+ return undefined;
36
+ await syncEventInsert(tx, {
37
+ sequence,
38
+ kind: "plugin.failed",
39
+ entityId: input.installationId,
40
+ });
41
+ return areaHint(sequence, "plugins");
42
+ });
43
+ }
44
+ //# sourceMappingURL=pluginContainerInstanceInvalidate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginContainerInstanceInvalidate.js","sourceRoot":"","sources":["../../../sources/modules/plugin/pluginContainerInstanceInvalidate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAG/C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iCAAiC,CACnD,QAAyB,EACzB,KAA8E;IAE9E,OAAO,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;QAC1C,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE;aACrB,MAAM,CAAC,EAAE,EAAE,EAAE,mBAAmB,CAAC,EAAE,EAAE,CAAC;aACtC,IAAI,CAAC,mBAAmB,CAAC;aACzB,KAAK,CACF,GAAG,CACC,EAAE,CAAC,mBAAmB,CAAC,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,EAChD,EAAE,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,CAAC,CACzE,CACJ;aACA,KAAK,CAAC,CAAC,CAAC,CAAC;QACd,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAC/B,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAC5C,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE;aACrB,MAAM,CAAC,mBAAmB,CAAC;aAC3B,GAAG,CAAC;YACD,mBAAmB,EAAE,IAAI;YACzB,MAAM,EAAE,QAAQ;YAChB,YAAY,EAAE,KAAK,CAAC,MAAM;YAC1B,SAAS,EAAE,+CAA+C;YAC1D,OAAO,EAAE,IAAI;YACb,YAAY,EAAE,QAAQ;YACtB,SAAS,EAAE,GAAG,CAAA,mBAAmB;SACpC,CAAC;aACD,KAAK,CACF,GAAG,CACC,EAAE,CAAC,mBAAmB,CAAC,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,EAChD,EAAE,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,CAAC,CACzE,CACJ;aACA,SAAS,CAAC,EAAE,EAAE,EAAE,mBAAmB,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAC/B,MAAM,eAAe,CAAC,EAAE,EAAE;YACtB,QAAQ;YACR,IAAI,EAAE,eAAe;YACrB,QAAQ,EAAE,KAAK,CAAC,cAAc;SACjC,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { DrizzleExecutor } from "../drizzle.js";
2
+ /**
3
+ * Finds the durable system plugin for one catalog source so installation orchestration can reuse its immutable package snapshot.
4
+ * This read-only lookup does not mutate durable state and exists to avoid copying package files for ordinary additional installations.
5
+ */
6
+ export declare function pluginFindBySource(executor: DrizzleExecutor, sourceKind: "builtin", sourceReference: string): Promise<{
7
+ id: string;
8
+ } | undefined>;
9
+ //# sourceMappingURL=pluginFindBySource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginFindBySource.d.ts","sourceRoot":"","sources":["../../../sources/modules/plugin/pluginFindBySource.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGrD;;;GAGG;AACH,wBAAsB,kBAAkB,CACpC,QAAQ,EAAE,eAAe,EACzB,UAAU,EAAE,SAAS,EACrB,eAAe,EAAE,MAAM,GACxB,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,CASrC"}
@@ -0,0 +1,15 @@
1
+ import { and, eq } from "drizzle-orm";
2
+ import { plugins } from "../schema.js";
3
+ /**
4
+ * Finds the durable system plugin for one catalog source so installation orchestration can reuse its immutable package snapshot.
5
+ * This read-only lookup does not mutate durable state and exists to avoid copying package files for ordinary additional installations.
6
+ */
7
+ export async function pluginFindBySource(executor, sourceKind, sourceReference) {
8
+ const [row] = await executor
9
+ .select({ id: plugins.id })
10
+ .from(plugins)
11
+ .where(and(eq(plugins.sourceKind, sourceKind), eq(plugins.sourceReference, sourceReference)))
12
+ .limit(1);
13
+ return row;
14
+ }
15
+ //# sourceMappingURL=pluginFindBySource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginFindBySource.js","sourceRoot":"","sources":["../../../sources/modules/plugin/pluginFindBySource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEtC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACpC,QAAyB,EACzB,UAAqB,EACrB,eAAuB;IAEvB,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,QAAQ;SACvB,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;SAC1B,IAAI,CAAC,OAAO,CAAC;SACb,KAAK,CACF,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC,CACxF;SACA,KAAK,CAAC,CAAC,CAAC,CAAC;IACd,OAAO,GAAG,CAAC;AACf,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { type DrizzleExecutor } from "../drizzle.js";
2
+ import type { PluginFunctionResult } from "./types.js";
3
+ export type PluginFunctionResultAcquireResult = {
4
+ kind: "acquired";
5
+ } | {
6
+ kind: "in_progress";
7
+ retryAt: number;
8
+ } | {
9
+ kind: "replay";
10
+ result: PluginFunctionResult;
11
+ };
12
+ /**
13
+ * Creates, replays, waits for, or conditionally takes over the durable pluginFunctionResults lease for one Rig call.
14
+ * The transaction admits one live MCP executor at a time while retaining a completed outcome indefinitely for event redelivery and restart recovery.
15
+ */
16
+ export declare function pluginFunctionResultAcquire(executor: DrizzleExecutor, input: {
17
+ callId: string;
18
+ leaseExpiresAt: number;
19
+ leaseToken: string;
20
+ now: number;
21
+ sessionId: string;
22
+ }): Promise<PluginFunctionResultAcquireResult>;
23
+ //# sourceMappingURL=pluginFunctionResultAcquire.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginFunctionResultAcquire.d.ts","sourceRoot":"","sources":["../../../sources/modules/plugin/pluginFunctionResultAcquire.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,eAAe,EAAmB,MAAM,eAAe,CAAC;AAGtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD,MAAM,MAAM,iCAAiC,GACvC;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,oBAAoB,CAAA;CAAE,CAAC;AAEvD;;;GAGG;AACH,wBAAsB,2BAA2B,CAC7C,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE;IACH,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACrB,GACF,OAAO,CAAC,iCAAiC,CAAC,CAoD5C"}
@@ -0,0 +1,54 @@
1
+ import { and, eq, sql } from "drizzle-orm";
2
+ import { withTransaction } from "../drizzle.js";
3
+ import { pluginFunctionResults } from "../schema.js";
4
+ import { parsePluginFunctionResult } from "./impl/pluginFunctionResult.js";
5
+ /**
6
+ * Creates, replays, waits for, or conditionally takes over the durable pluginFunctionResults lease for one Rig call.
7
+ * The transaction admits one live MCP executor at a time while retaining a completed outcome indefinitely for event redelivery and restart recovery.
8
+ */
9
+ export async function pluginFunctionResultAcquire(executor, input) {
10
+ return withTransaction(executor, async (tx) => {
11
+ const lockedUntil = new Date(input.leaseExpiresAt).toISOString();
12
+ const [inserted] = await tx
13
+ .insert(pluginFunctionResults)
14
+ .values({
15
+ sessionId: input.sessionId,
16
+ callId: input.callId,
17
+ leaseToken: input.leaseToken,
18
+ lockedUntil,
19
+ })
20
+ .onConflictDoNothing()
21
+ .returning({ callId: pluginFunctionResults.callId });
22
+ if (inserted)
23
+ return { kind: "acquired" };
24
+ const [row] = await tx
25
+ .select({
26
+ lockedUntil: pluginFunctionResults.lockedUntil,
27
+ resolutionJson: pluginFunctionResults.resolutionJson,
28
+ status: pluginFunctionResults.status,
29
+ })
30
+ .from(pluginFunctionResults)
31
+ .where(and(eq(pluginFunctionResults.sessionId, input.sessionId), eq(pluginFunctionResults.callId, input.callId)))
32
+ .limit(1);
33
+ if (!row)
34
+ throw new Error("Plugin function result disappeared during acquisition");
35
+ if (row?.status === "completed") {
36
+ if (row.resolutionJson === null)
37
+ throw new Error("Completed plugin function result is missing its resolution");
38
+ return { kind: "replay", result: parsePluginFunctionResult(row.resolutionJson) };
39
+ }
40
+ if (row?.lockedUntil && Date.parse(row.lockedUntil) > input.now)
41
+ return { kind: "in_progress", retryAt: Date.parse(row.lockedUntil) };
42
+ await tx
43
+ .update(pluginFunctionResults)
44
+ .set({
45
+ leaseToken: input.leaseToken,
46
+ lockedUntil,
47
+ status: "in_progress",
48
+ updatedAt: sql `CURRENT_TIMESTAMP`,
49
+ })
50
+ .where(and(eq(pluginFunctionResults.sessionId, input.sessionId), eq(pluginFunctionResults.callId, input.callId)));
51
+ return { kind: "acquired" };
52
+ });
53
+ }
54
+ //# sourceMappingURL=pluginFunctionResultAcquire.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginFunctionResultAcquire.js","sourceRoot":"","sources":["../../../sources/modules/plugin/pluginFunctionResultAcquire.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAwB,eAAe,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAQ3E;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC7C,QAAyB,EACzB,KAMC;IAED,OAAO,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;QAC1C,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;QACjE,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,EAAE;aACtB,MAAM,CAAC,qBAAqB,CAAC;aAC7B,MAAM,CAAC;YACJ,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,WAAW;SACd,CAAC;aACD,mBAAmB,EAAE;aACrB,SAAS,CAAC,EAAE,MAAM,EAAE,qBAAqB,CAAC,MAAM,EAAE,CAAC,CAAC;QACzD,IAAI,QAAQ;YAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE;aACjB,MAAM,CAAC;YACJ,WAAW,EAAE,qBAAqB,CAAC,WAAW;YAC9C,cAAc,EAAE,qBAAqB,CAAC,cAAc;YACpD,MAAM,EAAE,qBAAqB,CAAC,MAAM;SACvC,CAAC;aACD,IAAI,CAAC,qBAAqB,CAAC;aAC3B,KAAK,CACF,GAAG,CACC,EAAE,CAAC,qBAAqB,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,EACpD,EAAE,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CACjD,CACJ;aACA,KAAK,CAAC,CAAC,CAAC,CAAC;QACd,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACnF,IAAI,GAAG,EAAE,MAAM,KAAK,WAAW,EAAE,CAAC;YAC9B,IAAI,GAAG,CAAC,cAAc,KAAK,IAAI;gBAC3B,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;YAClF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,yBAAyB,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;QACrF,CAAC;QACD,IAAI,GAAG,EAAE,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,GAAG;YAC3D,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QACzE,MAAM,EAAE;aACH,MAAM,CAAC,qBAAqB,CAAC;aAC7B,GAAG,CAAC;YACD,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,WAAW;YACX,MAAM,EAAE,aAAa;YACrB,SAAS,EAAE,GAAG,CAAA,mBAAmB;SACpC,CAAC;aACD,KAAK,CACF,GAAG,CACC,EAAE,CAAC,qBAAqB,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,EACpD,EAAE,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CACjD,CACJ,CAAC;QACN,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { type DrizzleExecutor } from "../drizzle.js";
2
+ import type { PluginFunctionResult } from "./types.js";
3
+ /**
4
+ * Stores the terminal MCP outcome only while the caller owns the pluginFunctionResults lease for the Rig call.
5
+ * Lease fencing prevents a late or superseded executor from replacing the first durable resolution that Rig and every redelivery must observe.
6
+ */
7
+ export declare function pluginFunctionResultComplete(executor: DrizzleExecutor, input: {
8
+ callId: string;
9
+ leaseToken: string;
10
+ result: PluginFunctionResult;
11
+ sessionId: string;
12
+ }): Promise<PluginFunctionResult>;
13
+ //# sourceMappingURL=pluginFunctionResultComplete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginFunctionResultComplete.d.ts","sourceRoot":"","sources":["../../../sources/modules/plugin/pluginFunctionResultComplete.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,eAAe,EAAmB,MAAM,eAAe,CAAC;AAGtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD;;;GAGG;AACH,wBAAsB,4BAA4B,CAC9C,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE;IACH,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CACrB,GACF,OAAO,CAAC,oBAAoB,CAAC,CAsC/B"}
@@ -0,0 +1,37 @@
1
+ import { and, eq, sql } from "drizzle-orm";
2
+ import { withTransaction } from "../drizzle.js";
3
+ import { pluginFunctionResults } from "../schema.js";
4
+ import { parsePluginFunctionResult } from "./impl/pluginFunctionResult.js";
5
+ /**
6
+ * Stores the terminal MCP outcome only while the caller owns the pluginFunctionResults lease for the Rig call.
7
+ * Lease fencing prevents a late or superseded executor from replacing the first durable resolution that Rig and every redelivery must observe.
8
+ */
9
+ export async function pluginFunctionResultComplete(executor, input) {
10
+ return withTransaction(executor, async (tx) => {
11
+ const [completed] = await tx
12
+ .update(pluginFunctionResults)
13
+ .set({
14
+ leaseToken: null,
15
+ lockedUntil: null,
16
+ resolutionJson: JSON.stringify(input.result),
17
+ status: "completed",
18
+ updatedAt: sql `CURRENT_TIMESTAMP`,
19
+ })
20
+ .where(and(eq(pluginFunctionResults.sessionId, input.sessionId), eq(pluginFunctionResults.callId, input.callId), eq(pluginFunctionResults.status, "in_progress"), eq(pluginFunctionResults.leaseToken, input.leaseToken)))
21
+ .returning({ resolutionJson: pluginFunctionResults.resolutionJson });
22
+ if (completed?.resolutionJson)
23
+ return parsePluginFunctionResult(completed.resolutionJson);
24
+ const [winner] = await tx
25
+ .select({
26
+ resolutionJson: pluginFunctionResults.resolutionJson,
27
+ status: pluginFunctionResults.status,
28
+ })
29
+ .from(pluginFunctionResults)
30
+ .where(and(eq(pluginFunctionResults.sessionId, input.sessionId), eq(pluginFunctionResults.callId, input.callId)))
31
+ .limit(1);
32
+ if (winner?.status === "completed" && winner.resolutionJson)
33
+ return parsePluginFunctionResult(winner.resolutionJson);
34
+ throw new Error("Plugin function result lease was lost before completion");
35
+ });
36
+ }
37
+ //# sourceMappingURL=pluginFunctionResultComplete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginFunctionResultComplete.js","sourceRoot":"","sources":["../../../sources/modules/plugin/pluginFunctionResultComplete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAwB,eAAe,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAG3E;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAC9C,QAAyB,EACzB,KAKC;IAED,OAAO,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;QAC1C,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,EAAE;aACvB,MAAM,CAAC,qBAAqB,CAAC;aAC7B,GAAG,CAAC;YACD,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,IAAI;YACjB,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;YAC5C,MAAM,EAAE,WAAW;YACnB,SAAS,EAAE,GAAG,CAAA,mBAAmB;SACpC,CAAC;aACD,KAAK,CACF,GAAG,CACC,EAAE,CAAC,qBAAqB,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,EACpD,EAAE,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAC9C,EAAE,CAAC,qBAAqB,CAAC,MAAM,EAAE,aAAa,CAAC,EAC/C,EAAE,CAAC,qBAAqB,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CACzD,CACJ;aACA,SAAS,CAAC,EAAE,cAAc,EAAE,qBAAqB,CAAC,cAAc,EAAE,CAAC,CAAC;QACzE,IAAI,SAAS,EAAE,cAAc;YAAE,OAAO,yBAAyB,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC1F,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE;aACpB,MAAM,CAAC;YACJ,cAAc,EAAE,qBAAqB,CAAC,cAAc;YACpD,MAAM,EAAE,qBAAqB,CAAC,MAAM;SACvC,CAAC;aACD,IAAI,CAAC,qBAAqB,CAAC;aAC3B,KAAK,CACF,GAAG,CACC,EAAE,CAAC,qBAAqB,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,EACpD,EAAE,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CACjD,CACJ;aACA,KAAK,CAAC,CAAC,CAAC,CAAC;QACd,IAAI,MAAM,EAAE,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,cAAc;YACvD,OAAO,yBAAyB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { DrizzleExecutor } from "../drizzle.js";
2
+ export interface StoredPluginImage {
3
+ pluginId: string;
4
+ shortName: string;
5
+ packageDigest: string;
6
+ packageDirectory: string;
7
+ storageKey: string;
8
+ contentType: string;
9
+ size: number;
10
+ checksumSha256: string;
11
+ }
12
+ /**
13
+ * Returns the private filesystem locator and public response metadata for one persisted plugin image after administrator authorization.
14
+ * This read-only boundary does not mutate durable state and prevents routes from reading package paths without a durable plugin record.
15
+ */
16
+ export declare function pluginGetImage(executor: DrizzleExecutor, actorUserId: string, pluginId: string): Promise<StoredPluginImage>;
17
+ //# sourceMappingURL=pluginGetImage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginGetImage.d.ts","sourceRoot":"","sources":["../../../sources/modules/plugin/pluginGetImage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAKrD,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAChC,QAAQ,EAAE,eAAe,EACzB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,iBAAiB,CAAC,CAkB5B"}
@@ -0,0 +1,29 @@
1
+ import { eq } from "drizzle-orm";
2
+ import { plugins } from "../schema.js";
3
+ import { userRequireServerAdmin } from "../chat/userRequireServerAdmin.js";
4
+ import { PluginError } from "./types.js";
5
+ /**
6
+ * Returns the private filesystem locator and public response metadata for one persisted plugin image after administrator authorization.
7
+ * This read-only boundary does not mutate durable state and prevents routes from reading package paths without a durable plugin record.
8
+ */
9
+ export async function pluginGetImage(executor, actorUserId, pluginId) {
10
+ await userRequireServerAdmin(executor, actorUserId);
11
+ const [row] = await executor
12
+ .select({
13
+ pluginId: plugins.id,
14
+ shortName: plugins.shortName,
15
+ packageDigest: plugins.packageDigest,
16
+ packageDirectory: plugins.packageDirectory,
17
+ storageKey: plugins.imageStorageKey,
18
+ contentType: plugins.imageContentType,
19
+ size: plugins.imageSize,
20
+ checksumSha256: plugins.imageChecksumSha256,
21
+ })
22
+ .from(plugins)
23
+ .where(eq(plugins.id, pluginId))
24
+ .limit(1);
25
+ if (!row)
26
+ throw new PluginError("not_found", "System plugin was not found");
27
+ return row;
28
+ }
29
+ //# sourceMappingURL=pluginGetImage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginGetImage.js","sourceRoot":"","sources":["../../../sources/modules/plugin/pluginGetImage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEjC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAazC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAChC,QAAyB,EACzB,WAAmB,EACnB,QAAgB;IAEhB,MAAM,sBAAsB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACpD,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,QAAQ;SACvB,MAAM,CAAC;QACJ,QAAQ,EAAE,OAAO,CAAC,EAAE;QACpB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,UAAU,EAAE,OAAO,CAAC,eAAe;QACnC,WAAW,EAAE,OAAO,CAAC,gBAAgB;QACrC,IAAI,EAAE,OAAO,CAAC,SAAS;QACvB,cAAc,EAAE,OAAO,CAAC,mBAAmB;KAC9C,CAAC;SACD,IAAI,CAAC,OAAO,CAAC;SACb,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;SAC/B,KAAK,CAAC,CAAC,CAAC,CAAC;IACd,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,WAAW,CAAC,WAAW,EAAE,6BAA6B,CAAC,CAAC;IAC5E,OAAO,GAAG,CAAC;AACf,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { DrizzleExecutor } from "../drizzle.js";
2
+ import type { MutationHint } from "../chat/types.js";
3
+ import type { PluginSecretProtector } from "./secrets.js";
4
+ import { type PluginInstallationSummary, type PluginPackage } from "./types.js";
5
+ export interface PluginPackageCandidate {
6
+ pluginId: string;
7
+ packageDirectory: string;
8
+ imageStorageKey: string;
9
+ }
10
+ /**
11
+ * Ensures one catalog package has a durable system plugin, then creates an independent installation with its own encrypted variables and container choice.
12
+ * The transaction commits plugins, pluginInstallations, pluginInstallationVariables, audit, and sync evidence together so no installation can reference a partial plugin record.
13
+ */
14
+ export declare function pluginInstall(executor: DrizzleExecutor, secretProtector: PluginSecretProtector, input: {
15
+ actorUserId: string;
16
+ installationId: string;
17
+ plugin: PluginPackage;
18
+ candidate?: PluginPackageCandidate;
19
+ variables: Readonly<Record<string, string>>;
20
+ containerImageId?: string;
21
+ }): Promise<{
22
+ hint: MutationHint;
23
+ installation: PluginInstallationSummary;
24
+ pluginCreated: boolean;
25
+ pluginId: string;
26
+ }>;
27
+ //# sourceMappingURL=pluginInstall.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginInstall.d.ts","sourceRoot":"","sources":["../../../sources/modules/plugin/pluginInstall.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAarD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAEH,KAAK,yBAAyB,EAE9B,KAAK,aAAa,EACrB,MAAM,YAAY,CAAC;AAQpB,MAAM,WAAW,sBAAsB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAC/B,QAAQ,EAAE,eAAe,EACzB,eAAe,EAAE,qBAAqB,EACtC,KAAK,EAAE;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,CAAC,EAAE,sBAAsB,CAAC;IACnC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B,GACF,OAAO,CAAC;IACP,IAAI,EAAE,YAAY,CAAC;IACnB,YAAY,EAAE,yBAAyB,CAAC;IACxC,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC,CAmKD"}
@@ -0,0 +1,180 @@
1
+ import { and, eq } from "drizzle-orm";
2
+ import { withTransaction } from "../drizzle.js";
3
+ import { agentImages, pluginInstallations, pluginInstallationVariables, plugins, } from "../schema.js";
4
+ import { userRequireServerAdmin } from "../chat/userRequireServerAdmin.js";
5
+ import { chatAppendAudit } from "../chat/chatAppendAudit.js";
6
+ import { syncSequenceNext } from "../sync/syncSequenceNext.js";
7
+ import { syncEventInsert } from "../sync/syncEventInsert.js";
8
+ import { areaHint } from "../chat/areaHint.js";
9
+ import { PluginError, } from "./types.js";
10
+ import { pluginInstallationSelection } from "./impl/installationSelection.js";
11
+ import { asPluginInstallation } from "./impl/asInstallation.js";
12
+ import { installedManifest } from "./impl/installedManifest.js";
13
+ import { effectiveContainer } from "./impl/effectiveContainer.js";
14
+ const MAX_VARIABLE_BYTES = 64 * 1024;
15
+ /**
16
+ * Ensures one catalog package has a durable system plugin, then creates an independent installation with its own encrypted variables and container choice.
17
+ * The transaction commits plugins, pluginInstallations, pluginInstallationVariables, audit, and sync evidence together so no installation can reference a partial plugin record.
18
+ */
19
+ export async function pluginInstall(executor, secretProtector, input) {
20
+ return withTransaction(executor, async (tx) => {
21
+ await userRequireServerAdmin(tx, input.actorUserId);
22
+ const [existing] = await tx
23
+ .select({ id: plugins.id, manifestJson: plugins.manifestJson })
24
+ .from(plugins)
25
+ .where(and(eq(plugins.sourceKind, input.plugin.source.kind), eq(plugins.sourceReference, input.plugin.source.reference)))
26
+ .limit(1);
27
+ let pluginId;
28
+ let manifest;
29
+ let pluginCreated = false;
30
+ if (existing) {
31
+ pluginId = existing.id;
32
+ manifest = installedManifest(existing.manifestJson);
33
+ }
34
+ else {
35
+ if (!input.candidate)
36
+ throw new Error("A new system plugin requires a persisted package candidate");
37
+ pluginId = input.candidate.pluginId;
38
+ manifest = input.plugin.manifest;
39
+ await tx.insert(plugins).values({
40
+ id: pluginId,
41
+ displayName: manifest.displayName,
42
+ shortName: manifest.shortName,
43
+ description: manifest.description,
44
+ sourceKind: input.plugin.source.kind,
45
+ sourceReference: input.plugin.source.reference,
46
+ sourceVersion: manifest.version,
47
+ packageDigest: input.plugin.packageDigest,
48
+ manifestJson: JSON.stringify(manifest),
49
+ packageDirectory: input.candidate.packageDirectory,
50
+ imageStorageKey: input.candidate.imageStorageKey,
51
+ imageContentType: input.plugin.image.contentType,
52
+ imageSize: input.plugin.image.size,
53
+ imageWidth: input.plugin.image.width,
54
+ imageHeight: input.plugin.image.height,
55
+ imageThumbhash: input.plugin.image.thumbhash,
56
+ imageChecksumSha256: input.plugin.image.checksumSha256,
57
+ installedByUserId: input.actorUserId,
58
+ });
59
+ pluginCreated = true;
60
+ }
61
+ const definitions = manifest.variables;
62
+ const mcp = manifest.mcp;
63
+ const localContainer = effectiveContainer(manifest);
64
+ validateVariables(definitions, input.variables);
65
+ const selectionRequired = Boolean(localContainer && !localContainer.dockerfile);
66
+ if (selectionRequired && !input.containerImageId)
67
+ throw new PluginError("broken_configuration", "containerImageId is required for this stdio MCP plugin");
68
+ if (!selectionRequired && input.containerImageId)
69
+ throw new PluginError("broken_configuration", "containerImageId is not accepted for this plugin");
70
+ if (input.containerImageId) {
71
+ const [image] = await tx
72
+ .select({ id: agentImages.id })
73
+ .from(agentImages)
74
+ .where(and(eq(agentImages.id, input.containerImageId), eq(agentImages.status, "ready")))
75
+ .limit(1);
76
+ if (!image)
77
+ throw new PluginError("broken_configuration", "The selected container image does not exist or is not ready");
78
+ }
79
+ const id = input.installationId;
80
+ const hasRuntime = Boolean(localContainer || mcp?.type === "remote");
81
+ const status = hasRuntime ? "preparing" : "ready";
82
+ const [created] = await tx
83
+ .insert(pluginInstallations)
84
+ .values({
85
+ id,
86
+ pluginId,
87
+ containerImageId: input.containerImageId,
88
+ containerName: localContainer ? `happy2-plugin-${id}` : null,
89
+ status,
90
+ statusDetail: hasRuntime
91
+ ? "Plugin runtime is queued for preparation."
92
+ : "Plugin skills are installed.",
93
+ installedByUserId: input.actorUserId,
94
+ readyAt: hasRuntime ? null : new Date().toISOString(),
95
+ })
96
+ .returning({ id: pluginInstallations.id });
97
+ if (!created)
98
+ throw new Error("Plugin installation was not created");
99
+ for (const definition of definitions) {
100
+ const value = input.variables[definition.key];
101
+ await tx.insert(pluginInstallationVariables).values({
102
+ installationId: id,
103
+ key: definition.key,
104
+ kind: definition.kind,
105
+ ...(definition.kind === "secret"
106
+ ? {
107
+ secretCiphertext: await secretProtector.protect(value, {
108
+ installationId: id,
109
+ key: definition.key,
110
+ }),
111
+ }
112
+ : { textValue: value }),
113
+ });
114
+ }
115
+ await chatAppendAudit(tx, {
116
+ actorUserId: input.actorUserId,
117
+ action: "plugin.installed",
118
+ targetType: "plugin_installation",
119
+ targetId: id,
120
+ after: {
121
+ pluginId,
122
+ shortName: manifest.shortName,
123
+ version: manifest.version,
124
+ mcpType: mcp?.type,
125
+ container: Boolean(localContainer),
126
+ containerPermissions: localContainer?.permissions ?? [],
127
+ variableKeys: definitions.map(({ key }) => key),
128
+ containerImageId: input.containerImageId,
129
+ },
130
+ });
131
+ const sequence = await syncSequenceNext(tx);
132
+ if (pluginCreated)
133
+ await tx
134
+ .update(plugins)
135
+ .set({ syncSequence: sequence })
136
+ .where(eq(plugins.id, pluginId));
137
+ const [updated] = await tx
138
+ .update(pluginInstallations)
139
+ .set({ syncSequence: sequence })
140
+ .where(eq(pluginInstallations.id, id))
141
+ .returning({ id: pluginInstallations.id });
142
+ if (!updated)
143
+ throw new Error("Plugin installation was not updated");
144
+ await syncEventInsert(tx, {
145
+ sequence,
146
+ kind: "plugin.installed",
147
+ entityId: id,
148
+ actorUserId: input.actorUserId,
149
+ });
150
+ const [projection] = await tx
151
+ .select(pluginInstallationSelection)
152
+ .from(pluginInstallations)
153
+ .innerJoin(plugins, eq(pluginInstallations.pluginId, plugins.id))
154
+ .where(eq(pluginInstallations.id, id))
155
+ .limit(1);
156
+ if (!projection)
157
+ throw new Error("Plugin installation projection was not found");
158
+ return {
159
+ hint: areaHint(sequence, "plugins"),
160
+ installation: asPluginInstallation(projection),
161
+ pluginCreated,
162
+ pluginId,
163
+ };
164
+ });
165
+ }
166
+ function validateVariables(definitions, values) {
167
+ const expected = new Set(definitions.map(({ key }) => key));
168
+ const unexpected = Object.keys(values).find((key) => !expected.has(key));
169
+ if (unexpected)
170
+ throw new PluginError("broken_configuration", `Unexpected plugin variable ${unexpected}`);
171
+ for (const definition of definitions) {
172
+ const value = values[definition.key];
173
+ if (typeof value !== "string" ||
174
+ !value ||
175
+ value.includes("\u0000") ||
176
+ Buffer.byteLength(value, "utf8") > MAX_VARIABLE_BYTES)
177
+ throw new PluginError("broken_configuration", `${definition.key} must be a valid environment value between 1 byte and 64 KiB`);
178
+ }
179
+ }
180
+ //# sourceMappingURL=pluginInstall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginInstall.js","sourceRoot":"","sources":["../../../sources/modules/plugin/pluginInstall.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { DrizzleExecutor } from "../drizzle.js";
2
+ import type { PluginSecretProtector } from "./secrets.js";
3
+ import { type PluginRuntimeConfiguration } from "./types.js";
4
+ /**
5
+ * Resolves one installed manifest into its private runtime configuration, revealing encrypted values only for process environment or remote header materialization.
6
+ * This read-only boundary does not mutate durable state and keeps secret recovery out of routes, catalog projections, and lifecycle orchestration.
7
+ */
8
+ export declare function pluginInstallationGetRuntimeConfiguration(executor: DrizzleExecutor, secretProtector: PluginSecretProtector, installationId: string): Promise<PluginRuntimeConfiguration>;
9
+ //# sourceMappingURL=pluginInstallationGetRuntimeConfiguration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginInstallationGetRuntimeConfiguration.d.ts","sourceRoot":"","sources":["../../../sources/modules/plugin/pluginInstallationGetRuntimeConfiguration.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAOrD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAe,KAAK,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAI1E;;;GAGG;AACH,wBAAsB,yCAAyC,CAC3D,QAAQ,EAAE,eAAe,EACzB,eAAe,EAAE,qBAAqB,EACtC,cAAc,EAAE,MAAM,GACvB,OAAO,CAAC,0BAA0B,CAAC,CAoIrC"}