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,280 @@
1
+ import { execFile } from "node:child_process";
2
+ import { mkdtemp, readFile, rm } from "node:fs/promises";
3
+ import { tmpdir } from "node:os";
4
+ import { join } from "node:path";
5
+ import { promisify } from "node:util";
6
+ import { describe, expect, it } from "vitest";
7
+ import { createSystemServiceHost, isNpxInvocation, parseSystemServiceCommand, renderLaunchdPlist, renderSystemdUnit, systemServiceStart, systemServiceStop, systemServiceUsage, } from "./systemService.js";
8
+ const execute = promisify(execFile);
9
+ class FakeHost {
10
+ platform = "darwin";
11
+ cwd = "/Users/ada/Happy & Work";
12
+ home = "/Users/ada";
13
+ username = "ada";
14
+ uid = 501;
15
+ euid = 501;
16
+ environment = {
17
+ PATH: "/opt/homebrew/bin:/usr/bin",
18
+ RIG_HOME: "/Users/ada/Rig & State",
19
+ };
20
+ nodePath = "/opt/node 25/bin/node";
21
+ existing = new Set();
22
+ directories = [];
23
+ userWrites = [];
24
+ userRemovals = [];
25
+ commands = [];
26
+ logs = [];
27
+ async fileExists(path) {
28
+ return this.existing.has(path);
29
+ }
30
+ async directoryCreate(path) {
31
+ this.directories.push(path);
32
+ }
33
+ async userFileWrite(path, contents, mode) {
34
+ this.userWrites.push({ contents, mode, path });
35
+ }
36
+ async userFileRemove(path) {
37
+ this.userRemovals.push(path);
38
+ }
39
+ async commandRun(command, arguments_, options) {
40
+ this.commands.push({ command, arguments_, options });
41
+ }
42
+ log(message) {
43
+ this.logs.push(message);
44
+ }
45
+ }
46
+ describe("automatic operating-system service", () => {
47
+ it("installs and starts a macOS LaunchAgent without privileged commands", async () => {
48
+ const host = new FakeHost();
49
+ host.existing.add("/Users/ada/Happy & Work/config/happy2.toml");
50
+ await systemServiceStart({
51
+ configPath: "config/happy2.toml",
52
+ npx: false,
53
+ }, host);
54
+ expect(host.directories).toEqual([
55
+ "/Users/ada/Library/LaunchAgents",
56
+ "/Users/ada/Library/Logs/Happy2",
57
+ ]);
58
+ expect(host.commands).toEqual([
59
+ {
60
+ command: "launchctl",
61
+ arguments_: ["bootout", "gui/501/com.slopus.happy2"],
62
+ options: { allowFailure: true },
63
+ },
64
+ {
65
+ command: "launchctl",
66
+ arguments_: [
67
+ "bootstrap",
68
+ "gui/501",
69
+ "/Users/ada/Library/LaunchAgents/com.slopus.happy2.plist",
70
+ ],
71
+ options: undefined,
72
+ },
73
+ ]);
74
+ expect(host.userWrites).toHaveLength(1);
75
+ expect(host.userWrites[0]).toMatchObject({
76
+ mode: 0o600,
77
+ path: "/Users/ada/Library/LaunchAgents/com.slopus.happy2.plist",
78
+ });
79
+ expect(host.userWrites[0].contents).toContain("<string>/Users/ada/Happy &amp; Work/config/happy2.toml</string>");
80
+ expect(host.userWrites[0].contents).toContain("<string>/Users/ada/Rig &amp; State</string>");
81
+ expect(host.userWrites[0].contents).toContain("<string>/usr/bin/env</string>");
82
+ expect(host.userWrites[0].contents).toContain("<string>happy2</string>");
83
+ expect(host.logs).toEqual([
84
+ "Happy (2) is running and will start automatically when you log in.",
85
+ "Logs: /Users/ada/Library/Logs/Happy2",
86
+ ]);
87
+ });
88
+ it("stops and unregisters an installed macOS LaunchAgent", async () => {
89
+ const host = new FakeHost();
90
+ const plist = "/Users/ada/Library/LaunchAgents/com.slopus.happy2.plist";
91
+ host.existing.add(plist);
92
+ await systemServiceStop(host);
93
+ expect(host.userRemovals).toEqual([plist]);
94
+ expect(host.commands[0]).toEqual({
95
+ command: "launchctl",
96
+ arguments_: ["bootout", "gui/501/com.slopus.happy2"],
97
+ options: { allowFailure: true },
98
+ });
99
+ expect(host.logs).toEqual([
100
+ "Happy (2) was stopped and removed from automatic login startup.",
101
+ ]);
102
+ });
103
+ it("makes macOS stop idempotent when no plist is installed", async () => {
104
+ const host = new FakeHost();
105
+ await systemServiceStop(host);
106
+ expect(host.userRemovals).toEqual([]);
107
+ expect(host.logs).toEqual(["Happy (2) is not installed as a login service."]);
108
+ });
109
+ it("writes and prints an npx-safe Linux unit with exact sudo installation commands", async () => {
110
+ const host = new FakeHost();
111
+ host.platform = "linux";
112
+ host.cwd = "/home/ada/happy % workspace";
113
+ host.home = "/home/ada";
114
+ host.nodePath = "/home/ada/.nvm/node";
115
+ host.environment = { PATH: "/home/ada/.nvm:/usr/bin" };
116
+ await systemServiceStart({ npx: true }, host);
117
+ expect(host.userWrites).toHaveLength(1);
118
+ expect(host.userWrites[0]).toMatchObject({
119
+ mode: 0o644,
120
+ path: "/home/ada/happy % workspace/happy2.service",
121
+ });
122
+ expect(host.userWrites[0].contents).toContain("User=ada");
123
+ expect(host.userWrites[0].contents).toContain("WorkingDirectory=/home/ada/happy %% workspace");
124
+ expect(host.userWrites[0].contents).toContain('ExecStart="/usr/bin/env" "npx" "--yes" "happy2"');
125
+ expect(host.commands).toEqual([]);
126
+ expect(host.logs).toContain(host.userWrites[0].contents.trimEnd());
127
+ expect(host.logs).toContain(" sudo install -m 0644 '/home/ada/happy % workspace/happy2.service' /etc/systemd/system/happy2.service");
128
+ expect(host.logs).toContain(" sudo systemctl enable --now happy2.service");
129
+ expect(host.logs).toContain("Logs: sudo journalctl -u happy2.service");
130
+ });
131
+ it("writes a Linux global-install unit that resolves happy2 from the saved PATH", async () => {
132
+ const host = new FakeHost();
133
+ host.platform = "linux";
134
+ host.cwd = "/home/ada/happy";
135
+ host.home = "/home/ada";
136
+ await systemServiceStart({ npx: false }, host);
137
+ expect(host.userWrites[0].contents).toContain('ExecStart="/usr/bin/env" "happy2"');
138
+ expect(host.userWrites[0].contents).not.toContain('"npx"');
139
+ });
140
+ it("prints Linux stop and unregister commands without invoking sudo", async () => {
141
+ const host = new FakeHost();
142
+ host.platform = "linux";
143
+ await systemServiceStop(host);
144
+ expect(host.commands).toEqual([]);
145
+ expect(host.logs).toEqual([
146
+ "Stop Happy (2) and remove automatic boot startup with:",
147
+ " sudo systemctl disable --now happy2.service",
148
+ " sudo rm -f /etc/systemd/system/happy2.service",
149
+ " sudo systemctl daemon-reload",
150
+ ]);
151
+ });
152
+ it("rejects unsupported systems, direct sudo, and missing configs", async () => {
153
+ const host = new FakeHost();
154
+ host.platform = "win32";
155
+ await expect(systemServiceStop(host)).rejects.toThrow("supported on macOS and Linux only");
156
+ host.platform = "darwin";
157
+ host.euid = 0;
158
+ await expect(systemServiceStop(host)).rejects.toThrow("without sudo on macOS");
159
+ host.platform = "linux";
160
+ host.euid = 501;
161
+ host.environment.SUDO_USER = "ada";
162
+ await expect(systemServiceStop(host)).rejects.toThrow("Run this command without sudo");
163
+ delete host.environment.SUDO_USER;
164
+ await expect(systemServiceStart({ configPath: "missing.toml", npx: false }, host)).rejects.toThrow("config does not exist: /Users/ada/Happy & Work/missing.toml");
165
+ });
166
+ it("escapes launchd XML and systemd command values without invoking a shell", () => {
167
+ const plist = renderLaunchdPlist({
168
+ arguments_: ["node", `a<&>'"`],
169
+ cwd: "/tmp/work",
170
+ environment: {},
171
+ standardErrorPath: "/tmp/error",
172
+ standardOutPath: "/tmp/out",
173
+ });
174
+ expect(plist).toContain("a&lt;&amp;&gt;&apos;&quot;");
175
+ const unit = renderSystemdUnit({
176
+ arguments_: ["/node", 'path with \\ and "quote"'],
177
+ cwd: "/work",
178
+ environment: {},
179
+ username: "happy-user",
180
+ });
181
+ expect(unit).toContain('ExecStart="/node" "path with \\\\ and \\"quote\\""');
182
+ expect(unit).toContain("WorkingDirectory=/work");
183
+ expect(unit).not.toContain('WorkingDirectory="/work"');
184
+ expect(() => renderSystemdUnit({
185
+ arguments_: ["bad\nvalue"],
186
+ cwd: "/work",
187
+ environment: {},
188
+ username: "ada",
189
+ })).toThrow("cannot contain line breaks");
190
+ expect(() => renderSystemdUnit({
191
+ arguments_: ["node"],
192
+ cwd: "/work",
193
+ environment: {},
194
+ username: "bad user",
195
+ })).toThrow("Cannot install a systemd service");
196
+ expect(() => renderSystemdUnit({
197
+ arguments_: ["node"],
198
+ cwd: "/work/ends-with-space ",
199
+ environment: {},
200
+ username: "ada",
201
+ })).toThrow("cannot end with whitespace");
202
+ expect(() => renderSystemdUnit({
203
+ arguments_: ["node"],
204
+ cwd: "/work/ends-with-backslash\\",
205
+ environment: {},
206
+ username: "ada",
207
+ })).toThrow("cannot end with a backslash");
208
+ });
209
+ it("documents start, stop, sudo, login, and boot behavior in CLI help", () => {
210
+ const usage = systemServiceUsage();
211
+ expect(usage).toContain("happy2 service start");
212
+ expect(usage).toContain("happy2 service stop");
213
+ expect(usage).toContain("does not use sudo");
214
+ expect(usage).toContain("install it for boot");
215
+ });
216
+ it("parses every service CLI action and rejects ambiguous arguments", () => {
217
+ expect(parseSystemServiceCommand(["start"])).toEqual({
218
+ action: "start",
219
+ configPath: undefined,
220
+ });
221
+ expect(parseSystemServiceCommand(["start", "--config", "happy2.toml"])).toEqual({
222
+ action: "start",
223
+ configPath: "happy2.toml",
224
+ });
225
+ expect(parseSystemServiceCommand(["stop"])).toEqual({ action: "stop" });
226
+ expect(parseSystemServiceCommand(["help"])).toEqual({ action: "help" });
227
+ expect(parseSystemServiceCommand(["-h"])).toEqual({ action: "help" });
228
+ expect(parseSystemServiceCommand([])).toEqual({ action: "invalid" });
229
+ expect(parseSystemServiceCommand(["unknown"])).toEqual({ action: "invalid" });
230
+ expect(parseSystemServiceCommand(["start", "extra"])).toEqual({ action: "invalid" });
231
+ expect(parseSystemServiceCommand(["start", "--unknown"])).toEqual({ action: "invalid" });
232
+ expect(parseSystemServiceCommand(["start", "--config"])).toEqual({ action: "invalid" });
233
+ expect(parseSystemServiceCommand(["stop", "--config", "happy2.toml"])).toEqual({
234
+ action: "invalid",
235
+ });
236
+ });
237
+ it("recognizes cross-platform _npx cache invocations", () => {
238
+ expect(isNpxInvocation("/home/ada/.npm/_npx/hash/happy2.js")).toBe(true);
239
+ expect(isNpxInvocation(String.raw `C:\Users\ada\npm-cache\_npx\hash\happy2.js`)).toBe(true);
240
+ expect(isNpxInvocation("/usr/local/lib/node_modules/happy2/bin/happy2.js")).toBe(false);
241
+ expect(isNpxInvocation(undefined)).toBe(false);
242
+ });
243
+ it("wires help and invalid service arguments through the executable CLI", async () => {
244
+ const runner = join(import.meta.dirname, "runner.ts");
245
+ const help = await execute(process.execPath, ["--import=tsx", runner, "service", "--help"]);
246
+ expect(help.stdout).toContain("happy2 service start");
247
+ expect(help.stderr).toBe("");
248
+ try {
249
+ await execute(process.execPath, ["--import=tsx", runner, "service", "--unknown"]);
250
+ throw new Error("Expected invalid service arguments to fail.");
251
+ }
252
+ catch (error) {
253
+ expect(error).toMatchObject({ code: 1, stdout: "" });
254
+ expect(error.stderr).toContain("happy2 service start");
255
+ expect(error.stderr).not.toContain("Error:");
256
+ }
257
+ });
258
+ it("provides a real host with atomic user file operations and command failures", async () => {
259
+ const directory = await mkdtemp(join(tmpdir(), "happy2-system-service-test-"));
260
+ try {
261
+ const host = createSystemServiceHost();
262
+ const nested = join(directory, "nested");
263
+ const file = join(nested, "service.plist");
264
+ await host.directoryCreate(nested);
265
+ await host.userFileWrite(file, "service definition\n", 0o600);
266
+ expect(await host.fileExists(file)).toBe(true);
267
+ expect(await readFile(file, "utf8")).toBe("service definition\n");
268
+ await host.userFileRemove(file);
269
+ expect(await host.fileExists(file)).toBe(false);
270
+ await host.commandRun(host.nodePath, ["-e", "process.exit(3)"], {
271
+ allowFailure: true,
272
+ });
273
+ await expect(host.commandRun(host.nodePath, ["-e", "process.exit(4)"])).rejects.toThrow("exited with status 4");
274
+ }
275
+ finally {
276
+ await rm(directory, { force: true, recursive: true });
277
+ }
278
+ });
279
+ });
280
+ //# sourceMappingURL=systemService.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"systemService.test.js","sourceRoot":"","sources":["../sources/systemService.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACH,uBAAuB,EACvB,eAAe,EACf,yBAAyB,EACzB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,GAErB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAQpC,MAAM,QAAQ;IACV,QAAQ,GAAoB,QAAQ,CAAC;IACrC,GAAG,GAAG,yBAAyB,CAAC;IAChC,IAAI,GAAG,YAAY,CAAC;IACpB,QAAQ,GAAG,KAAK,CAAC;IACjB,GAAG,GAAG,GAAG,CAAC;IACV,IAAI,GAAG,GAAG,CAAC;IACX,WAAW,GAAsB;QAC7B,IAAI,EAAE,4BAA4B;QAClC,QAAQ,EAAE,wBAAwB;KACrC,CAAC;IACF,QAAQ,GAAG,uBAAuB,CAAC;IACnC,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IAC7B,WAAW,GAAa,EAAE,CAAC;IAC3B,UAAU,GAAuD,EAAE,CAAC;IACpE,YAAY,GAAa,EAAE,CAAC;IAC5B,QAAQ,GAAwB,EAAE,CAAC;IACnC,IAAI,GAAa,EAAE,CAAC;IAEpB,KAAK,CAAC,UAAU,CAAC,IAAY;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IACD,KAAK,CAAC,eAAe,CAAC,IAAY;QAC9B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IACD,KAAK,CAAC,aAAa,CAAC,IAAY,EAAE,QAAgB,EAAE,IAAY;QAC5D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,KAAK,CAAC,cAAc,CAAC,IAAY;QAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IACD,KAAK,CAAC,UAAU,CACZ,OAAe,EACf,UAA6B,EAC7B,OAAoC;QAEpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,GAAG,CAAC,OAAe;QACf,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;CACJ;AAED,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAChD,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACjF,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAEhE,MAAM,kBAAkB,CACpB;YACI,UAAU,EAAE,oBAAoB;YAChC,GAAG,EAAE,KAAK;SACb,EACD,IAAI,CACP,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC;YAC7B,iCAAiC;YACjC,gCAAgC;SACnC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;YAC1B;gBACI,OAAO,EAAE,WAAW;gBACpB,UAAU,EAAE,CAAC,SAAS,EAAE,2BAA2B,CAAC;gBACpD,OAAO,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;aAClC;YACD;gBACI,OAAO,EAAE,WAAW;gBACpB,UAAU,EAAE;oBACR,WAAW;oBACX,SAAS;oBACT,yDAAyD;iBAC5D;gBACD,OAAO,EAAE,SAAS;aACrB;SACJ,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YACrC,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,yDAAyD;SAClE,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,CAAC,SAAS,CAC1C,iEAAiE,CACpE,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,CAAC,SAAS,CAC1C,6CAA6C,CAChD,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;QAChF,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;QAC1E,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;YACtB,oEAAoE;YACpE,sCAAsC;SACzC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,yDAAyD,CAAC;QACxE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEzB,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAE9B,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC7B,OAAO,EAAE,WAAW;YACpB,UAAU,EAAE,CAAC,SAAS,EAAE,2BAA2B,CAAC;YACpD,OAAO,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;SAClC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;YACtB,iEAAiE;SACpE,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,gDAAgD,CAAC,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;QAC5F,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,6BAA6B,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC;QACtC,IAAI,CAAC,WAAW,GAAG,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC;QAEvD,MAAM,kBAAkB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;QAE9C,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YACrC,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,4CAA4C;SACrD,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC3D,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,CAAC,SAAS,CAC1C,+CAA+C,CAClD,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,CAAC,SAAS,CAC1C,iDAAiD,CACpD,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QACpE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CACvB,wGAAwG,CAC3G,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,8CAA8C,CAAC,CAAC;QAC5E,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,yCAAyC,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;QACzF,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,iBAAiB,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QAExB,MAAM,kBAAkB,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;QAE/C,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,mCAAmC,CAAC,CAAC;QACpF,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QAExB,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAE9B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;YACtB,wDAAwD;YACxD,+CAA+C;YAC/C,iDAAiD;YACjD,gCAAgC;SACnC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,MAAM,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;QAE3F,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,MAAM,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QAE/E,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,KAAK,CAAC;QACnC,MAAM,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;QAEvF,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;QAClC,MAAM,MAAM,CACR,kBAAkB,CAAC,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,CACvE,CAAC,OAAO,CAAC,OAAO,CAAC,6DAA6D,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QAC/E,MAAM,KAAK,GAAG,kBAAkB,CAAC;YAC7B,UAAU,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;YAC9B,GAAG,EAAE,WAAW;YAChB,WAAW,EAAE,EAAE;YACf,iBAAiB,EAAE,YAAY;YAC/B,eAAe,EAAE,UAAU;SAC9B,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC;QAEtD,MAAM,IAAI,GAAG,iBAAiB,CAAC;YAC3B,UAAU,EAAE,CAAC,OAAO,EAAE,0BAA0B,CAAC;YACjD,GAAG,EAAE,OAAO;YACZ,WAAW,EAAE,EAAE;YACf,QAAQ,EAAE,YAAY;SACzB,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,oDAAoD,CAAC,CAAC;QAC7E,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;QACvD,MAAM,CAAC,GAAG,EAAE,CACR,iBAAiB,CAAC;YACd,UAAU,EAAE,CAAC,YAAY,CAAC;YAC1B,GAAG,EAAE,OAAO;YACZ,WAAW,EAAE,EAAE;YACf,QAAQ,EAAE,KAAK;SAClB,CAAC,CACL,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,EAAE,CACR,iBAAiB,CAAC;YACd,UAAU,EAAE,CAAC,MAAM,CAAC;YACpB,GAAG,EAAE,OAAO;YACZ,WAAW,EAAE,EAAE;YACf,QAAQ,EAAE,UAAU;SACvB,CAAC,CACL,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC;QAC9C,MAAM,CAAC,GAAG,EAAE,CACR,iBAAiB,CAAC;YACd,UAAU,EAAE,CAAC,MAAM,CAAC;YACpB,GAAG,EAAE,wBAAwB;YAC7B,WAAW,EAAE,EAAE;YACf,QAAQ,EAAE,KAAK;SAClB,CAAC,CACL,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,EAAE,CACR,iBAAiB,CAAC;YACd,UAAU,EAAE,CAAC,MAAM,CAAC;YACpB,GAAG,EAAE,6BAA6B;YAClC,WAAW,EAAE,EAAE;YACf,QAAQ,EAAE,KAAK;SAClB,CAAC,CACL,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QACzE,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;QACnC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QAChD,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAC7C,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACvE,MAAM,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACjD,MAAM,EAAE,OAAO;YACf,UAAU,EAAE,SAAS;SACxB,CAAC,CAAC;QACH,MAAM,CAAC,yBAAyB,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC5E,MAAM,EAAE,OAAO;YACf,UAAU,EAAE,aAAa;SAC5B,CAAC,CAAC;QACH,MAAM,CAAC,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACxE,MAAM,CAAC,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACxE,MAAM,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACtE,MAAM,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACrE,MAAM,CAAC,yBAAyB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAC9E,MAAM,CAAC,yBAAyB,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACrF,MAAM,CAAC,yBAAyB,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACzF,MAAM,CAAC,yBAAyB,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACxF,MAAM,CAAC,yBAAyB,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC3E,MAAM,EAAE,SAAS;SACpB,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,eAAe,CAAC,oCAAoC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzE,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAA,4CAA4C,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3F,MAAM,CAAC,eAAe,CAAC,kDAAkD,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxF,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACjF,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC5F,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QACtD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE7B,IAAI,CAAC;YACD,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;YAClF,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;YACrD,MAAM,CAAE,KAA4B,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;YAC/E,MAAM,CAAE,KAA4B,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACzE,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;QACxF,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,6BAA6B,CAAC,CAAC,CAAC;QAC/E,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,uBAAuB,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACzC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;YAC3C,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,sBAAsB,EAAE,KAAK,CAAC,CAAC;YAC9D,MAAM,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAClE,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEhD,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,iBAAiB,CAAC,EAAE;gBAC5D,YAAY,EAAE,IAAI;aACrB,CAAC,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACnF,sBAAsB,CACzB,CAAC;QACN,CAAC;gBAAS,CAAC;YACP,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}