happy2 0.0.13 → 0.0.14

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 (213) hide show
  1. package/package.json +1 -1
  2. package/packages/happy2-server/PLUGINS.md +196 -42
  3. package/packages/happy2-server/dist/index.d.ts +1 -0
  4. package/packages/happy2-server/dist/index.d.ts.map +1 -1
  5. package/packages/happy2-server/dist/index.js +1 -0
  6. package/packages/happy2-server/dist/index.js.map +1 -1
  7. package/packages/happy2-server/dist/modules/agent/agentSkillHomeGet.d.ts +4 -0
  8. package/packages/happy2-server/dist/modules/agent/agentSkillHomeGet.d.ts.map +1 -0
  9. package/packages/happy2-server/dist/modules/agent/agentSkillHomeGet.js +15 -0
  10. package/packages/happy2-server/dist/modules/agent/agentSkillHomeGet.js.map +1 -0
  11. package/packages/happy2-server/dist/modules/agent/agentSkillHomeGet.test.d.ts +2 -0
  12. package/packages/happy2-server/dist/modules/agent/agentSkillHomeGet.test.d.ts.map +1 -0
  13. package/packages/happy2-server/dist/modules/agent/agentSkillHomeGet.test.js +17 -0
  14. package/packages/happy2-server/dist/modules/agent/agentSkillHomeGet.test.js.map +1 -0
  15. package/packages/happy2-server/dist/modules/agent/agentTurnGetPluginContext.d.ts +23 -0
  16. package/packages/happy2-server/dist/modules/agent/agentTurnGetPluginContext.d.ts.map +1 -0
  17. package/packages/happy2-server/dist/modules/agent/agentTurnGetPluginContext.js +70 -0
  18. package/packages/happy2-server/dist/modules/agent/agentTurnGetPluginContext.js.map +1 -0
  19. package/packages/happy2-server/dist/modules/agents/service.d.ts +2 -4
  20. package/packages/happy2-server/dist/modules/agents/service.d.ts.map +1 -1
  21. package/packages/happy2-server/dist/modules/agents/service.js +7 -7
  22. package/packages/happy2-server/dist/modules/agents/service.js.map +1 -1
  23. package/packages/happy2-server/dist/modules/auth/tokens.d.ts +15 -0
  24. package/packages/happy2-server/dist/modules/auth/tokens.d.ts.map +1 -1
  25. package/packages/happy2-server/dist/modules/auth/tokens.js +74 -6
  26. package/packages/happy2-server/dist/modules/auth/tokens.js.map +1 -1
  27. package/packages/happy2-server/dist/modules/auth/tokens.test.js +57 -0
  28. package/packages/happy2-server/dist/modules/auth/tokens.test.js.map +1 -1
  29. package/packages/happy2-server/dist/modules/chat/channelCreateWithMembers.d.ts +19 -0
  30. package/packages/happy2-server/dist/modules/chat/channelCreateWithMembers.d.ts.map +1 -0
  31. package/packages/happy2-server/dist/modules/chat/channelCreateWithMembers.js +87 -0
  32. package/packages/happy2-server/dist/modules/chat/channelCreateWithMembers.js.map +1 -0
  33. package/packages/happy2-server/dist/modules/chat/channelMembersUpdate.d.ts +15 -0
  34. package/packages/happy2-server/dist/modules/chat/channelMembersUpdate.d.ts.map +1 -0
  35. package/packages/happy2-server/dist/modules/chat/channelMembersUpdate.js +38 -0
  36. package/packages/happy2-server/dist/modules/chat/channelMembersUpdate.js.map +1 -0
  37. package/packages/happy2-server/dist/modules/chat/chatAppendAudit.d.ts +1 -1
  38. package/packages/happy2-server/dist/modules/chat/chatAppendAudit.d.ts.map +1 -1
  39. package/packages/happy2-server/dist/modules/plugin/catalog.d.ts.map +1 -1
  40. package/packages/happy2-server/dist/modules/plugin/catalog.js +3 -3
  41. package/packages/happy2-server/dist/modules/plugin/catalog.js.map +1 -1
  42. package/packages/happy2-server/dist/modules/plugin/catalog.test.js +2 -2
  43. package/packages/happy2-server/dist/modules/plugin/catalog.test.js.map +1 -1
  44. package/packages/happy2-server/dist/modules/plugin/impl/apiPermissions.d.ts +5 -0
  45. package/packages/happy2-server/dist/modules/plugin/impl/apiPermissions.d.ts.map +1 -0
  46. package/packages/happy2-server/dist/modules/plugin/impl/apiPermissions.js +106 -0
  47. package/packages/happy2-server/dist/modules/plugin/impl/apiPermissions.js.map +1 -0
  48. package/packages/happy2-server/dist/modules/plugin/impl/asInstallation.d.ts.map +1 -1
  49. package/packages/happy2-server/dist/modules/plugin/impl/asInstallation.js +10 -1
  50. package/packages/happy2-server/dist/modules/plugin/impl/asInstallation.js.map +1 -1
  51. package/packages/happy2-server/dist/modules/plugin/impl/asManagementRequest.d.ts +3 -0
  52. package/packages/happy2-server/dist/modules/plugin/impl/asManagementRequest.d.ts.map +1 -0
  53. package/packages/happy2-server/dist/modules/plugin/impl/asManagementRequest.js +68 -0
  54. package/packages/happy2-server/dist/modules/plugin/impl/asManagementRequest.js.map +1 -0
  55. package/packages/happy2-server/dist/modules/plugin/impl/asPlugin.d.ts.map +1 -1
  56. package/packages/happy2-server/dist/modules/plugin/impl/asPlugin.js +10 -2
  57. package/packages/happy2-server/dist/modules/plugin/impl/asPlugin.js.map +1 -1
  58. package/packages/happy2-server/dist/modules/plugin/impl/installationSelection.d.ts +19 -0
  59. package/packages/happy2-server/dist/modules/plugin/impl/installationSelection.d.ts.map +1 -1
  60. package/packages/happy2-server/dist/modules/plugin/impl/installationSelection.js +1 -0
  61. package/packages/happy2-server/dist/modules/plugin/impl/installationSelection.js.map +1 -1
  62. package/packages/happy2-server/dist/modules/plugin/impl/installedManifest.d.ts.map +1 -1
  63. package/packages/happy2-server/dist/modules/plugin/impl/installedManifest.js +4 -2
  64. package/packages/happy2-server/dist/modules/plugin/impl/installedManifest.js.map +1 -1
  65. package/packages/happy2-server/dist/modules/plugin/impl/installedManifest.test.js +14 -0
  66. package/packages/happy2-server/dist/modules/plugin/impl/installedManifest.test.js.map +1 -1
  67. package/packages/happy2-server/dist/modules/plugin/impl/managementRequestSelection.d.ts +345 -0
  68. package/packages/happy2-server/dist/modules/plugin/impl/managementRequestSelection.d.ts.map +1 -0
  69. package/packages/happy2-server/dist/modules/plugin/impl/managementRequestSelection.js +22 -0
  70. package/packages/happy2-server/dist/modules/plugin/impl/managementRequestSelection.js.map +1 -0
  71. package/packages/happy2-server/dist/modules/plugin/packageLinkDownloader.d.ts +16 -0
  72. package/packages/happy2-server/dist/modules/plugin/packageLinkDownloader.d.ts.map +1 -0
  73. package/packages/happy2-server/dist/modules/plugin/packageLinkDownloader.js +67 -0
  74. package/packages/happy2-server/dist/modules/plugin/packageLinkDownloader.js.map +1 -0
  75. package/packages/happy2-server/dist/modules/plugin/packageStore.d.ts +14 -1
  76. package/packages/happy2-server/dist/modules/plugin/packageStore.d.ts.map +1 -1
  77. package/packages/happy2-server/dist/modules/plugin/packageStore.js +112 -1
  78. package/packages/happy2-server/dist/modules/plugin/packageStore.js.map +1 -1
  79. package/packages/happy2-server/dist/modules/plugin/packageStore.test.d.ts +2 -0
  80. package/packages/happy2-server/dist/modules/plugin/packageStore.test.d.ts.map +1 -0
  81. package/packages/happy2-server/dist/modules/plugin/packageStore.test.js +50 -0
  82. package/packages/happy2-server/dist/modules/plugin/packageStore.test.js.map +1 -0
  83. package/packages/happy2-server/dist/modules/plugin/pluginAgentCallContextGet.d.ts +5 -0
  84. package/packages/happy2-server/dist/modules/plugin/pluginAgentCallContextGet.d.ts.map +1 -0
  85. package/packages/happy2-server/dist/modules/plugin/pluginAgentCallContextGet.js +26 -0
  86. package/packages/happy2-server/dist/modules/plugin/pluginAgentCallContextGet.js.map +1 -0
  87. package/packages/happy2-server/dist/modules/plugin/pluginCatalogList.d.ts.map +1 -1
  88. package/packages/happy2-server/dist/modules/plugin/pluginCatalogList.js +7 -3
  89. package/packages/happy2-server/dist/modules/plugin/pluginCatalogList.js.map +1 -1
  90. package/packages/happy2-server/dist/modules/plugin/pluginDeveloperServer.test.d.ts +2 -0
  91. package/packages/happy2-server/dist/modules/plugin/pluginDeveloperServer.test.d.ts.map +1 -0
  92. package/packages/happy2-server/dist/modules/plugin/pluginDeveloperServer.test.js +44 -0
  93. package/packages/happy2-server/dist/modules/plugin/pluginDeveloperServer.test.js.map +1 -0
  94. package/packages/happy2-server/dist/modules/plugin/pluginInstall.d.ts +4 -2
  95. package/packages/happy2-server/dist/modules/plugin/pluginInstall.d.ts.map +1 -1
  96. package/packages/happy2-server/dist/modules/plugin/pluginInstall.js +19 -2
  97. package/packages/happy2-server/dist/modules/plugin/pluginInstall.js.map +1 -1
  98. package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetContainerName.d.ts +7 -0
  99. package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetContainerName.d.ts.map +1 -0
  100. package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetContainerName.js +18 -0
  101. package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetContainerName.js.map +1 -0
  102. package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetRequestUninstallContext.d.ts +13 -0
  103. package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetRequestUninstallContext.d.ts.map +1 -0
  104. package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetRequestUninstallContext.js +35 -0
  105. package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetRequestUninstallContext.js.map +1 -0
  106. package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetRuntimeConfiguration.d.ts.map +1 -1
  107. package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetRuntimeConfiguration.js +3 -1
  108. package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetRuntimeConfiguration.js.map +1 -1
  109. package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetUninstallContext.d.ts +6 -0
  110. package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetUninstallContext.d.ts.map +1 -0
  111. package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetUninstallContext.js +17 -0
  112. package/packages/happy2-server/dist/modules/plugin/pluginInstallationGetUninstallContext.js.map +1 -0
  113. package/packages/happy2-server/dist/modules/plugin/pluginInstallationPermissionsUpdate.d.ts +18 -0
  114. package/packages/happy2-server/dist/modules/plugin/pluginInstallationPermissionsUpdate.d.ts.map +1 -0
  115. package/packages/happy2-server/dist/modules/plugin/pluginInstallationPermissionsUpdate.js +92 -0
  116. package/packages/happy2-server/dist/modules/plugin/pluginInstallationPermissionsUpdate.js.map +1 -0
  117. package/packages/happy2-server/dist/modules/plugin/pluginInstallationUninstall.d.ts +16 -0
  118. package/packages/happy2-server/dist/modules/plugin/pluginInstallationUninstall.d.ts.map +1 -0
  119. package/packages/happy2-server/dist/modules/plugin/pluginInstallationUninstall.js +71 -0
  120. package/packages/happy2-server/dist/modules/plugin/pluginInstallationUninstall.js.map +1 -0
  121. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestBeginInstall.d.ts +21 -0
  122. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestBeginInstall.d.ts.map +1 -0
  123. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestBeginInstall.js +71 -0
  124. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestBeginInstall.js.map +1 -0
  125. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestBeginUninstall.d.ts +12 -0
  126. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestBeginUninstall.d.ts.map +1 -0
  127. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestBeginUninstall.js +56 -0
  128. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestBeginUninstall.js.map +1 -0
  129. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestCompleteInstall.d.ts +11 -0
  130. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestCompleteInstall.d.ts.map +1 -0
  131. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestCompleteInstall.js +44 -0
  132. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestCompleteInstall.js.map +1 -0
  133. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestCompleteUninstall.d.ts +10 -0
  134. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestCompleteUninstall.d.ts.map +1 -0
  135. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestCompleteUninstall.js +41 -0
  136. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestCompleteUninstall.js.map +1 -0
  137. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestCreateInstall.d.ts +26 -0
  138. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestCreateInstall.d.ts.map +1 -0
  139. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestCreateInstall.js +78 -0
  140. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestCreateInstall.js.map +1 -0
  141. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestCreateUninstall.d.ts +25 -0
  142. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestCreateUninstall.d.ts.map +1 -0
  143. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestCreateUninstall.js +76 -0
  144. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestCreateUninstall.js.map +1 -0
  145. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestDeny.d.ts +11 -0
  146. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestDeny.d.ts.map +1 -0
  147. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestDeny.js +48 -0
  148. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestDeny.js.map +1 -0
  149. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestGetPackage.d.ts +12 -0
  150. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestGetPackage.d.ts.map +1 -0
  151. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestGetPackage.js +42 -0
  152. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestGetPackage.js.map +1 -0
  153. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestList.d.ts +5 -0
  154. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestList.d.ts.map +1 -0
  155. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestList.js +18 -0
  156. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestList.js.map +1 -0
  157. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestListTerminalIds.d.ts +4 -0
  158. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestListTerminalIds.d.ts.map +1 -0
  159. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestListTerminalIds.js +11 -0
  160. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestListTerminalIds.js.map +1 -0
  161. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestRecoverProcessing.d.ts +5 -0
  162. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestRecoverProcessing.d.ts.map +1 -0
  163. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestRecoverProcessing.js +75 -0
  164. package/packages/happy2-server/dist/modules/plugin/pluginManagementRequestRecoverProcessing.js.map +1 -0
  165. package/packages/happy2-server/dist/modules/plugin/pluginSkillPackageListReady.d.ts +12 -0
  166. package/packages/happy2-server/dist/modules/plugin/pluginSkillPackageListReady.d.ts.map +1 -0
  167. package/packages/happy2-server/dist/modules/plugin/pluginSkillPackageListReady.js +33 -0
  168. package/packages/happy2-server/dist/modules/plugin/pluginSkillPackageListReady.js.map +1 -0
  169. package/packages/happy2-server/dist/modules/plugin/service.d.ts +108 -7
  170. package/packages/happy2-server/dist/modules/plugin/service.d.ts.map +1 -1
  171. package/packages/happy2-server/dist/modules/plugin/service.js +463 -26
  172. package/packages/happy2-server/dist/modules/plugin/service.js.map +1 -1
  173. package/packages/happy2-server/dist/modules/plugin/types.d.ts +75 -9
  174. package/packages/happy2-server/dist/modules/plugin/types.d.ts.map +1 -1
  175. package/packages/happy2-server/dist/modules/plugin/types.js +9 -0
  176. package/packages/happy2-server/dist/modules/plugin/types.js.map +1 -1
  177. package/packages/happy2-server/dist/modules/schema.d.ts +4224 -3264
  178. package/packages/happy2-server/dist/modules/schema.d.ts.map +1 -1
  179. package/packages/happy2-server/dist/modules/schema.js +35 -0
  180. package/packages/happy2-server/dist/modules/schema.js.map +1 -1
  181. package/packages/happy2-server/dist/routes/pluginHost.d.ts +2 -1
  182. package/packages/happy2-server/dist/routes/pluginHost.d.ts.map +1 -1
  183. package/packages/happy2-server/dist/routes/pluginHost.js +288 -6
  184. package/packages/happy2-server/dist/routes/pluginHost.js.map +1 -1
  185. package/packages/happy2-server/dist/routes/plugins.d.ts.map +1 -1
  186. package/packages/happy2-server/dist/routes/plugins.js +229 -3
  187. package/packages/happy2-server/dist/routes/plugins.js.map +1 -1
  188. package/packages/happy2-server/dist/server.d.ts +2 -0
  189. package/packages/happy2-server/dist/server.d.ts.map +1 -1
  190. package/packages/happy2-server/dist/server.js +9 -7
  191. package/packages/happy2-server/dist/server.js.map +1 -1
  192. package/packages/happy2-server/dist/web/assets/index-Dn5SZu3y.js +39 -0
  193. package/packages/happy2-server/dist/web/assets/{index-BaPUPGPe.css → index-Dys3sWv8.css} +1 -1
  194. package/packages/happy2-server/dist/web/index.html +2 -2
  195. package/packages/happy2-server/drizzle/0028_plugin_api_permissions.sql +1 -0
  196. package/packages/happy2-server/drizzle/0029_plugin_management_requests.sql +35 -0
  197. package/packages/happy2-server/drizzle/meta/_journal.json +14 -0
  198. package/packages/happy2-server/plugins/README.md +7 -3
  199. package/packages/happy2-server/plugins/chat-management/plugin.json +3 -3
  200. package/packages/happy2-server/plugins/chat-management/server.mjs +184 -17
  201. package/packages/happy2-server/plugins/plugin-developer/container/Dockerfile +6 -0
  202. package/packages/happy2-server/plugins/plugin-developer/plugin.json +17 -0
  203. package/packages/happy2-server/plugins/plugin-developer/plugin.png +0 -0
  204. package/packages/happy2-server/plugins/plugin-developer/server.mjs +155 -0
  205. package/packages/happy2-server/plugins/plugin-developer/skills/happy2-plugin-development/SKILL.md +59 -0
  206. package/packages/happy2-server/plugins/plugin-developer/skills/happy2-plugin-development/references/host-api.md +63 -0
  207. package/packages/happy2-server/plugins/plugin-developer/skills/happy2-plugin-development/references/installing.md +86 -0
  208. package/packages/happy2-server/plugins/plugin-developer/skills/happy2-plugin-development/references/package-format.md +137 -0
  209. package/packages/happy2-server/dist/modules/agent/agentChatGetIdBySession.d.ts +0 -7
  210. package/packages/happy2-server/dist/modules/agent/agentChatGetIdBySession.d.ts.map +0 -1
  211. package/packages/happy2-server/dist/modules/agent/agentChatGetIdBySession.js +0 -15
  212. package/packages/happy2-server/dist/modules/agent/agentChatGetIdBySession.js.map +0 -1
  213. package/packages/happy2-server/dist/web/assets/index-BnhFxR3U.js +0 -39
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "happy2",
3
- "version": "0.0.13",
3
+ "version": "0.0.14",
4
4
  "description": "Happy (2) desktop web app and server bundle",
5
5
  "repository": {
6
6
  "type": "git",
@@ -5,20 +5,23 @@ server, or any useful combination of those pieces. Administrators can install a
5
5
  built-in package, upload one ZIP, download one ZIP over HTTPS, or import a GitHub
6
6
  repository. Catalog discovery, verified preparation, durable system plugins,
7
7
  immutable package/image snapshots, writable installation data, and independent
8
- runtime installations remain separate boundaries.
8
+ runtime installations remain separate boundaries. Individual runtime
9
+ installations can be uninstalled without removing the reusable system-plugin
10
+ snapshot.
9
11
 
10
12
  Plugin management is system-wide and administrator-only. The first installation
11
- of a catalog package creates one durable system-plugin record and one immutable
13
+ of a source package creates one durable system-plugin record and one immutable
12
14
  package snapshot; later installations reuse that plugin identity and snapshot.
13
15
  Every installation has its own CUID2, variables, selected image, lifecycle, and
14
16
  dedicated container when it has a local runtime. Remote MCP configuration is
15
17
  persisted and health-checked independently per installation. Ready MCP
16
18
  installations expose their durably cached tools to Rig as external functions on
17
- every agent submission. Happy executes each durable call against the originating
18
- installation and resolves the result back into the paused Rig run. This feature
19
- does not yet inject installed skills or implement in-place upgrade, marketplace
20
- discovery, or OAuth flows. Remote update checks report drift but deliberately do
21
- not replace the installed snapshot.
19
+ every agent submission. Happy also reconciles the skills from ready
20
+ installations into the exact agent sandbox home before each turn. Happy executes
21
+ each durable MCP call against the originating installation and resolves the
22
+ result back into the paused Rig run. Upgrade, marketplace discovery, and OAuth
23
+ flows are not implemented; individual installations can be uninstalled. Remote
24
+ update checks report drift but deliberately do not replace the installed snapshot.
22
25
 
23
26
  MCP tools are discovered during each runtime activation and atomically replace
24
27
  that installation's SQLite cache before it becomes ready. Local discovery runs
@@ -47,7 +50,8 @@ to a ready installation.
47
50
 
48
51
  Each package has this shape. Built-ins live below
49
52
  `packages/happy2-server/plugins`; installed snapshots live below the configured
50
- `plugins.directory`:
53
+ `plugins.directory`. A ZIP may contain this tree at its root or inside one
54
+ top-level folder:
51
55
 
52
56
  ```text
53
57
  example-plugin/
@@ -117,13 +121,15 @@ administrator can choose one.
117
121
  "dockerfile": "container/Dockerfile",
118
122
  "command": "/plugin/bin/indexer",
119
123
  "args": ["--watch"],
120
- "permissions": ["plugins:list"]
124
+ "permissions": ["plugins:list", "plugins:install", "plugins:uninstall"]
121
125
  }
122
126
  }
123
127
  ```
124
128
 
125
- `version` uses `x.y.z` SemVer syntax. `shortName` is the stable catalog/package
126
- link and must match the package directory; it is not an installation identity.
129
+ `version` uses `x.y.z` SemVer syntax. `shortName` is the stable package name and
130
+ must match a built-in package directory. External ZIPs are not required to make
131
+ their enclosing folder match; `shortName` still identifies the validated
132
+ package metadata and is not an installation identity.
127
133
  The durable system plugin and every installation receive separate CUID2 IDs.
128
134
  Variable keys are environment variable names. Every declared variable is
129
135
  required for each installation. Secret values are encrypted with AES-256-GCM
@@ -137,14 +143,37 @@ otherwise it is required. A command and stdio MCP run alongside each other in
137
143
  the same dedicated installation container. Container variables are supplied to
138
144
  each configured process, not persisted in the image or container definition.
139
145
 
140
- `container.permissions` is an exact allowlist of host API capabilities. The
141
- currently supported permission is `plugins:list`. Unknown and duplicate
142
- permissions are rejected when the package is loaded.
143
-
144
- The bundled `hello` package is the minimal skill-plus-MCP example. It declares no
145
- variables or MCP authentication, so an administrator can install it with an
146
- empty POST body; each call still creates a separate installation and bundled
147
- container.
146
+ `container.permissions` declares the exact host API capabilities a package may
147
+ request. Permissions are grouped for presentation by API section:
148
+ `channels:manage` is a mutating permission in `channels`, `chats:update` is a
149
+ mutating permission in `chats`, while `plugins:list` is read-only and
150
+ `plugins:install` and `plugins:uninstall` are mutating permissions in `plugins`.
151
+ `plugins:request-install` and `plugins:request-uninstall` are also mutating
152
+ permissions, but create chat-scoped human approvals instead of granting direct
153
+ install or uninstall authority. Unknown and duplicate permissions are rejected
154
+ when the package is loaded.
155
+ Unknown and duplicate declarations are rejected when the package is loaded.
156
+
157
+ Declarations are not grants. Each install request may include a `permissions`
158
+ array containing any subset of the manifest declaration; omitted permissions
159
+ default to an empty grant. Installation responses expose `grantedPermissions`,
160
+ while catalog permission metadata is returned in `apiPermissions` sections with
161
+ separate `readOnly` and `mutations` arrays. Administrators can replace the grant
162
+ later with `POST /v0/admin/pluginInstallations/:installationId/updatePermissions`.
163
+ Changing a grant invalidates the current runtime token and restarts the local
164
+ container with a new token, so stale tokens cannot retain revoked access.
165
+
166
+ The isolated plugin host listener provides `GET /plugins`, `POST /plugins/install`,
167
+ `POST /plugins/uninstall`, `POST /channels/updateMembers`, and
168
+ `POST /channels/createChannel`, alongside the chat-update route. Each route
169
+ requires its matching capability. Plugin-triggered installs must also choose a
170
+ subset of the target package's declared permissions.
171
+
172
+ The bundled `hello` package is the minimal skill-plus-MCP example. The bundled
173
+ `plugin-developer` package contributes a comprehensive Happy2 plugin-development
174
+ skill and MCP tools for listing installations and requesting linked install or
175
+ uninstall approval from the current chat. Neither format is a Conductor or
176
+ Codex plugin format.
148
177
 
149
178
  ## Stdio MCP with a bundled container
150
179
 
@@ -303,6 +332,15 @@ read-only; a changed package requires an explicit future upgrade flow.
303
332
  The request body may be omitted when the manifest declares no variables and
304
333
  does not require a selected container image.
305
334
 
335
+ `POST /v0/admin/plugins/installPlugin` installs an external package. Send either
336
+ multipart form data with an `archive` ZIP part plus optional JSON `variables`
337
+ and `containerImageId` fields, or JSON with `sourceUrl`, `variables`, and
338
+ `containerImageId`. Link downloads allow public HTTPS only, revalidate every
339
+ redirect and resolved address, and are capped at three redirects, 20 seconds,
340
+ and 20 MiB. ZIP extraction rejects traversal, absolute paths, symlinks,
341
+ encryption, duplicate entries, more than 1,000 entries, files above 5 MiB, and
342
+ uncompressed package data above 20 MiB.
343
+
306
344
  `containerImageId` is required for every local container manifest without a
307
345
  bundled Dockerfile, and it is rejected in every other case. Unknown, missing, empty, or
308
346
  oversized variable values are rejected. The endpoint returns HTTP 202 after the
@@ -310,7 +348,56 @@ durable system plugin (created once), immutable package/image snapshot, new
310
348
  installation, variables, audit entry, initial state, and sync event are durable.
311
349
  Calling it again for the same `shortName` creates another installation with a
312
350
  new CUID2 and its own parameters and runtime. Container preparation continues
313
- asynchronously.
351
+ asynchronously. `shortName` is globally unique across system plugins: a package
352
+ from another source that reuses an existing name is rejected with HTTP 409. An
353
+ agent request with such a collision can be staged for review, but approval
354
+ resolves it to `failed` without replacing the existing plugin.
355
+
356
+ `POST /v0/admin/pluginInstallations/:installationId/uninstallPlugin` removes
357
+ one exact installation. Happy stops and removes that installation's local
358
+ runtime, deletes its variables and tool cache through cascading durable state,
359
+ and removes the system plugin and immutable package snapshot only when no other
360
+ installation references it.
361
+
362
+ ### Agent-requested approval
363
+
364
+ A local plugin container may ask Happy to install a public HTTPS ZIP or
365
+ uninstall an exact installation while its MCP tool is executing for an agent
366
+ turn. The normal long-lived incarnation token cannot make such a request. For
367
+ that MCP call only, Happy injects a five-minute capability token bound to the
368
+ originating Rig session, call ID, human actor, agent, chat, requester
369
+ installation, and live container incarnation.
370
+
371
+ The host API validates and stages the exact package before creating a durable
372
+ chat request. The request stores the package digest, source, display name,
373
+ description, icon, optional reason, and a preallocated installation ID. It does
374
+ not install synchronously and does not use MCP elicitation as authority. Happy's
375
+ own administrator approval is the authority and audit boundary. Agent-requested
376
+ installs reject packages requiring variables or an administrator-selected
377
+ container image, because those values must not be collected through chat.
378
+
379
+ Chat members can list requests and read the staged icon while a request is
380
+ `pending` or `processing`. A server administrator who is also a chat member can
381
+ approve or deny them:
382
+
383
+ - `GET /v0/chats/:chatId/pluginManagementRequests`
384
+ - `GET /v0/chats/:chatId/pluginManagementRequests/:requestId/image`
385
+ - `POST .../:requestId/approvePluginInstall`
386
+ - `POST .../:requestId/denyPluginInstall`
387
+ - `POST .../:requestId/approvePluginUninstall`
388
+ - `POST .../:requestId/denyPluginUninstall`
389
+
390
+ Request creation and every terminal resolution advance the chat's durable
391
+ point, append audit/sync evidence, and publish server and chat realtime hints.
392
+ Approval claims publish their intermediate `processing` state as well. If the
393
+ complete server stops during a claimed operation, startup reconciles the request
394
+ to `approved` only when the deterministic durable installation outcome exists;
395
+ otherwise it records a terminal failure instead of leaving the card stuck.
396
+ Every terminal path removes the staged package, and startup retries that cleanup
397
+ for requests resolved immediately before a process stopped. Terminal projections
398
+ therefore omit `imageUrl`; the UI must reconcile these durable requests and
399
+ render their name, description, optional image, source, reason, status, and
400
+ action controls.
314
401
 
315
402
  If the catalog later advertises an update, additional installations remain
316
403
  pinned to the existing system plugin's immutable manifest and package until an
@@ -365,6 +452,10 @@ Remote endpoints are rechecked.
365
452
  - `POST /v0/admin/plugins/:shortName/installPlugin` performs the durable install
366
453
  and queues lifecycle work. It may be called any number of times; each call
367
454
  creates a distinct installation linked to the same system plugin.
455
+ - `POST /v0/admin/plugins/installPlugin` installs a validated ZIP upload or
456
+ public HTTPS ZIP link.
457
+ - `POST /v0/admin/pluginInstallations/:installationId/uninstallPlugin` removes
458
+ one installation and removes its system plugin only when it was the last one.
368
459
  - `GET|POST /v0/pluginInstallations/:installationId/mcp` is the authenticated
369
460
  Streamable HTTP bridge for one ready local stdio installation. It follows MCP
370
461
  session semantics via `Mcp-Session-Id`. Happy’s existing bearer session is
@@ -384,6 +475,20 @@ Remote endpoints are rechecked.
384
475
  capability in `X-Happy2-Chat-Token`. The endpoint deliberately accepts no
385
476
  chat ID: the signed capability selects the chat, so tool arguments cannot
386
477
  redirect the update to another conversation.
478
+ - `POST /plugin-install-requests` and
479
+ `POST /plugin-uninstall-requests` live only on the dedicated plugin host
480
+ listener. A container must present `HAPPY2_PLUGIN_API_TOKEN` and declare the
481
+ corresponding host permission. The two mutation-request endpoints also
482
+ require an active contextual agent-call token.
483
+ - `POST /channels/updateMembers` adds or removes signed user capabilities from
484
+ the current chat. It requires `channels:manage`, rejects direct messages, and
485
+ applies the triggering user's ordinary channel-manager authorization.
486
+ - `POST /channels/createChannel` creates a private channel owned by the
487
+ triggering user, adds signed user capabilities as initial members, and may
488
+ post either a people-only opening message or an agent-audience prompt that
489
+ starts the calling agent. It also requires `channels:manage` and accepts an
490
+ optional `idempotencyKey` so a retried local request replays the same channel
491
+ and opening message instead of creating duplicates.
387
492
 
388
493
  Container processes receive `HAPPY2_PLUGIN_API_URL` and
389
494
  `HAPPY2_PLUGIN_API_TOKEN`. The URL is always
@@ -397,9 +502,11 @@ expose the host to an untrusted LAN should firewall
397
502
  `plugins.host_api_port`; it is a container capability endpoint, not a public
398
503
  service.
399
504
 
400
- The token is an RS256 capability containing the installation ID, a random CUID2
401
- container-incarnation ID, and the exact manifest permissions. Token bytes are
402
- never stored. The incarnation ID is stored in `plugin_installations` and also
505
+ The ordinary token is an RS256 capability containing the installation ID, a
506
+ random CUID2 container-incarnation ID, and the installation's exact granted
507
+ permissions.
508
+ Token bytes are never stored. The incarnation ID is stored in
509
+ `plugin_installations` and also
403
510
  attached to the OCI container as `dev.happy2.plugin-instance`. On each request,
404
511
  Happy verifies the signature, matches the incarnation against the ready database
405
512
  row, and confirms that the correspondingly labelled container is running. A
@@ -410,7 +517,10 @@ The token intentionally has no time expiration: its lifetime is exactly the
410
517
  database-and-OCI incarnation lifetime, allowing a command to survive arbitrarily
411
518
  many server restarts without persisting or rotating token bytes. Killing,
412
519
  replacing, failing, or removing that incarnation immediately makes the token
413
- unauthorized.
520
+ unauthorized. During one agent MCP call, Happy substitutes the bounded
521
+ contextual token described above; it expires after five minutes and cannot be
522
+ used outside that live container incarnation or after the exact durable external
523
+ tool call stops being in progress.
414
524
  The capability is not a user session and the dedicated listener exposes no
415
525
  ordinary `/v0` APIs.
416
526
 
@@ -422,19 +532,47 @@ request metadata:
422
532
  "_meta": {
423
533
  "happy2/chat": {
424
534
  "id": "current-chat-cuid2",
425
- "token": "signed-chat-capability-jwt"
426
- }
535
+ "token": "signed-chat-capability-jwt",
536
+ "triggeredByUserId": "sender-cuid2"
537
+ },
538
+ "happy2/users": [
539
+ {
540
+ "id": "sender-cuid2",
541
+ "username": "ada",
542
+ "firstName": "Ada",
543
+ "kind": "human",
544
+ "triggeredTurn": true,
545
+ "token": "signed-user-capability-jwt"
546
+ },
547
+ {
548
+ "id": "mentioned-user-cuid2",
549
+ "username": "grace",
550
+ "firstName": "Grace",
551
+ "kind": "human",
552
+ "triggeredTurn": false,
553
+ "token": "signed-user-capability-jwt"
554
+ }
555
+ ]
427
556
  }
428
557
  }
429
558
  ```
430
559
 
431
- The RS256 chat token has no expiration and is bound to both that chat and the
432
- specific plugin installation receiving the call. Plugin host chat actions also
433
- require the running installation's ordinary runtime token; presenting a chat
434
- token through another installation is rejected. Uninstalling or replacing an
435
- installation therefore prevents its old chat tokens from being used by a new
436
- installation. Chat IDs remain immutable and are supplied in metadata and API
437
- results for correlation, never accepted as mutation input.
560
+ The user list contains the message sender that triggered the exact agent turn,
561
+ followed by every concrete `@username` mention recorded on that message, with
562
+ duplicates removed. Special mentions such as `@here` do not create user
563
+ capabilities. Each RS256 user token has no expiration and is bound to the user
564
+ and the receiving plugin installation. A plugin may persist it; Happy does not
565
+ require or provide persistence by default. Host actions verify that the signed
566
+ user and the supplied user ID match.
567
+
568
+ The RS256 chat token also has no expiration. It is bound to that chat, the
569
+ triggering actor, the executing agent, and the specific plugin installation
570
+ receiving the call. Plugin host chat actions additionally require the running
571
+ installation's ordinary runtime token; presenting a chat or user token through
572
+ another installation is rejected. Uninstalling or replacing an installation
573
+ therefore prevents its old capabilities from being used by a new installation.
574
+ Chat IDs remain immutable and are supplied in metadata and API results for
575
+ correlation, never accepted as mutation input.
438
576
 
439
577
  The bridge allows at most 128 simultaneous sessions server-wide and 16 per
440
578
  authenticated user. Idle sessions close after 15 minutes; inbound requests and
@@ -454,28 +592,44 @@ persist the filesystem storage key, content type, byte size, width, height,
454
592
  thumbhash, and SHA-256 checksum.
455
593
 
456
594
  `plugin_installations` records a separate CUID2 and foreign key to `plugins`,
457
- plus that instance's container/image choice, lifecycle state, error detail,
595
+ plus that instance's container/image choice, granted API permissions, lifecycle state, error detail,
458
596
  installer, tool-sync timestamp, and timestamps. `plugin_mcp_tools` contains the
459
597
  last complete MCP discovery keyed by installation and tool name.
460
598
  `plugin_installation_variables` records each declared
461
599
  value for one installation; secret rows contain authenticated ciphertext rather
462
600
  than plaintext. No installation uses `shortName` as identity.
463
601
 
602
+ `plugin_management_requests` records the chat-scoped install/uninstall action,
603
+ requesting agent call, validated publisher metadata, exact staged package
604
+ coordinates, resolution, audit-related sync sequence, and deterministic target
605
+ or installation ID. Actionable staged packages live beneath the private plugin
606
+ package store and are revalidated by path and digest before image reads or
607
+ approval. They are reclaimed on approval, denial, failure, and restart cleanup;
608
+ terminal history retains metadata and audit evidence rather than package bytes.
609
+
464
610
  The built-in catalog and durable system plugin are deliberately independent.
465
- Persisted rows use `source_kind = 'builtin'` as their built-in marker. During
611
+ Persisted rows use `source_kind = 'builtin'`, `archive`, or `link`. During
466
612
  startup, the server compares those rows with the current built-in catalog. If a
467
613
  bundle was removed from the server, its installations, encrypted variables,
468
614
  system-plugin row, private package/image snapshot, and any named local containers
469
- are removed before the remaining runtimes start. Remotely sourced plugins will
470
- not participate in this catalog-pruning rule.
615
+ are removed before the remaining runtimes start. Archive- and link-sourced
616
+ plugins do not participate in this catalog-pruning rule.
617
+
618
+ Before each agent turn, skills from ready installations are integrity-checked
619
+ against their immutable package digest and reconciled under
620
+ `.agents/skills/happy2-plugins/<pluginId>-<skillName>` in that exact agent home.
621
+ Rig recursively discovers skills below `.agents/skills` on every agent loop, so
622
+ the published frontmatter name and immutable package files stay unchanged.
623
+ Happy owns only the `happy2-plugins` subtree; user and project skills elsewhere
624
+ are left untouched. Uninstalling the final ready installation removes that
625
+ plugin's skills on the next turn.
471
626
 
472
627
  When the catalog contains a different digest for a persisted plugin's
473
628
  `shortName`, reads set `updateAvailable: true`; they do not mutate or restart its
474
- installations. A future upgrade action can download/validate a remote package
475
- into the same package abstraction, stage a new immutable package/image snapshot,
476
- and atomically replace the system plugin version before reconciling all linked
477
- installations. Until that action exists, upgrades are advertised only and the
478
- old snapshot continues to run.
629
+ installations. A future upgrade action can validate a replacement package, stage
630
+ a new immutable package/image snapshot, and atomically replace the system plugin
631
+ version before reconciling all linked installations. Until that action exists,
632
+ upgrades are advertised only and the old snapshot continues to run.
479
633
 
480
634
  Configured installed-package storage:
481
635
 
@@ -15,6 +15,7 @@ export { userCreateProfile } from "./modules/user/userCreateProfile.js";
15
15
  export { syncInitialize } from "./modules/sync/syncInitialize.js";
16
16
  export { AesGcmSecretProtector } from "./modules/integrations/secrets.js";
17
17
  export { NodeWebhookTransport } from "./modules/integrations/transport.js";
18
+ export { NodePluginPackageLinkDownloader, type PluginPackageLinkDownload, type PluginPackageLinkDownloader, } from "./modules/plugin/packageLinkDownloader.js";
18
19
  export * from "./modules/integrations/types.js";
19
20
  export type { ResolvedWebhookUrl, WebhookUrlPolicy } from "./modules/integrations/ssrf.js";
20
21
  export * from "./modules/operations/types.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../sources/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,KAAK,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAC5F,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,YAAY,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,cAAc,iCAAiC,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAC3F,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,KAAK,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACrF,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AACtF,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,YAAY,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EACH,2BAA2B,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,4BAA4B,GACpC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACH,uBAAuB,EACvB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,GACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../sources/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,KAAK,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAC5F,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,YAAY,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EACH,+BAA+B,EAC/B,KAAK,yBAAyB,EAC9B,KAAK,2BAA2B,GACnC,MAAM,2CAA2C,CAAC;AACnD,cAAc,iCAAiC,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAC3F,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,KAAK,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACrF,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AACtF,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,YAAY,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EACH,2BAA2B,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,4BAA4B,GACpC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACH,uBAAuB,EACvB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,GACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
@@ -12,6 +12,7 @@ export { userCreateProfile } from "./modules/user/userCreateProfile.js";
12
12
  export { syncInitialize } from "./modules/sync/syncInitialize.js";
13
13
  export { AesGcmSecretProtector } from "./modules/integrations/secrets.js";
14
14
  export { NodeWebhookTransport } from "./modules/integrations/transport.js";
15
+ export { NodePluginPackageLinkDownloader, } from "./modules/plugin/packageLinkDownloader.js";
15
16
  export * from "./modules/integrations/types.js";
16
17
  export * from "./modules/operations/types.js";
17
18
  export { FileStorage } from "./modules/files/storage.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../sources/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAqB,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAA6B,MAAM,2BAA2B,CAAC;AAC5F,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAyB,MAAM,iBAAiB,CAAC;AAI/E,OAAO,EAAE,cAAc,EAAwB,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,cAAc,iCAAiC,CAAC;AAEhD,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,WAAW,EAA8B,MAAM,4BAA4B,CAAC;AACrF,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AACtF,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAE1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EACH,2BAA2B,GAI9B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACH,uBAAuB,GAK1B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../sources/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAqB,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAA6B,MAAM,2BAA2B,CAAC;AAC5F,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAyB,MAAM,iBAAiB,CAAC;AAI/E,OAAO,EAAE,cAAc,EAAwB,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EACH,+BAA+B,GAGlC,MAAM,2CAA2C,CAAC;AACnD,cAAc,iCAAiC,CAAC;AAEhD,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,WAAW,EAA8B,MAAM,4BAA4B,CAAC;AACrF,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AACtF,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAE1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EACH,2BAA2B,GAI9B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACH,uBAAuB,GAK1B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { DrizzleExecutor } from "../drizzle.js";
2
+ /** Derives one session's host-mounted isolated home from its durable Rig binding cwd and does not mutate durable state. This boundary centralizes the sandbox layout contract used by plugin skill reconciliation. */
3
+ export declare function agentSkillHomeGet(executor: DrizzleExecutor, sessionId: string): Promise<string>;
4
+ //# sourceMappingURL=agentSkillHomeGet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentSkillHomeGet.d.ts","sourceRoot":"","sources":["../../../sources/modules/agent/agentSkillHomeGet.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGrD,sNAAsN;AACtN,wBAAsB,iBAAiB,CACnC,QAAQ,EAAE,eAAe,EACzB,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAQjB"}
@@ -0,0 +1,15 @@
1
+ import { eq } from "drizzle-orm";
2
+ import { dirname, join } from "node:path";
3
+ import { agentRigBindings } from "../schema.js";
4
+ /** Derives one session's host-mounted isolated home from its durable Rig binding cwd and does not mutate durable state. This boundary centralizes the sandbox layout contract used by plugin skill reconciliation. */
5
+ export async function agentSkillHomeGet(executor, sessionId) {
6
+ const [binding] = await executor
7
+ .select({ cwd: agentRigBindings.cwd })
8
+ .from(agentRigBindings)
9
+ .where(eq(agentRigBindings.sessionId, sessionId))
10
+ .limit(1);
11
+ if (!binding)
12
+ throw new Error("Agent Rig binding was not found for skill reconciliation");
13
+ return join(dirname(binding.cwd), "home");
14
+ }
15
+ //# sourceMappingURL=agentSkillHomeGet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentSkillHomeGet.js","sourceRoot":"","sources":["../../../sources/modules/agent/agentSkillHomeGet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,sNAAsN;AACtN,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACnC,QAAyB,EACzB,SAAiB;IAEjB,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,QAAQ;SAC3B,MAAM,CAAC,EAAE,GAAG,EAAE,gBAAgB,CAAC,GAAG,EAAE,CAAC;SACrC,IAAI,CAAC,gBAAgB,CAAC;SACtB,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;SAChD,KAAK,CAAC,CAAC,CAAC,CAAC;IACd,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC1F,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=agentSkillHomeGet.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentSkillHomeGet.test.d.ts","sourceRoot":"","sources":["../../../sources/modules/agent/agentSkillHomeGet.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ import { describe, expect, it, vi } from "vitest";
2
+ import { agentSkillHomeGet } from "./agentSkillHomeGet.js";
3
+ function executorWithBinding(binding) {
4
+ const limit = vi.fn().mockResolvedValue(binding ? [binding] : []);
5
+ const where = vi.fn(() => ({ limit }));
6
+ const from = vi.fn(() => ({ where }));
7
+ return { select: vi.fn(() => ({ from })) };
8
+ }
9
+ describe("agentSkillHomeGet", () => {
10
+ it("derives the isolated home beside the durable Rig working directory", async () => {
11
+ await expect(agentSkillHomeGet(executorWithBinding({ cwd: "/sessions/run/worktree" }), "session-1")).resolves.toBe("/sessions/run/home");
12
+ });
13
+ it("rejects sessions without a durable Rig binding", async () => {
14
+ await expect(agentSkillHomeGet(executorWithBinding(undefined), "missing")).rejects.toThrow("Agent Rig binding was not found for skill reconciliation");
15
+ });
16
+ });
17
+ //# sourceMappingURL=agentSkillHomeGet.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentSkillHomeGet.test.js","sourceRoot":"","sources":["../../../sources/modules/agent/agentSkillHomeGet.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,SAAS,mBAAmB,CAAC,OAAoC;IAC7D,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACtC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAgC,CAAC;AAC7E,CAAC;AAED,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;QAChF,MAAM,MAAM,CACR,iBAAiB,CAAC,mBAAmB,CAAC,EAAE,GAAG,EAAE,wBAAwB,EAAE,CAAC,EAAE,WAAW,CAAC,CACzF,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,MAAM,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACtF,0DAA0D,CAC7D,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { DrizzleExecutor } from "../drizzle.js";
2
+ export interface AgentPluginReferencedUser {
3
+ id: string;
4
+ username: string;
5
+ firstName: string;
6
+ lastName?: string;
7
+ kind: "human" | "agent";
8
+ triggeredTurn: boolean;
9
+ }
10
+ /**
11
+ * Resolves the exact running agent turn, its triggering sender, and every concrete user mention recorded on that message.
12
+ * This read-only boundary keeps plugin capabilities tied to durable turn provenance instead of inferring authority from a reusable Rig session.
13
+ */
14
+ export declare function agentTurnGetPluginContext(executor: DrizzleExecutor, input: {
15
+ runId: string;
16
+ sessionId: string;
17
+ }): Promise<{
18
+ agentUserId: string;
19
+ chatId: string;
20
+ triggeredByUserId: string;
21
+ users: AgentPluginReferencedUser[];
22
+ } | undefined>;
23
+ //# sourceMappingURL=agentTurnGetPluginContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentTurnGetPluginContext.d.ts","sourceRoot":"","sources":["../../../sources/modules/agent/agentTurnGetPluginContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGrD,MAAM,WAAW,yBAAyB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC3C,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC5C,OAAO,CACJ;IACI,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,yBAAyB,EAAE,CAAC;CACtC,GACD,SAAS,CACd,CAuEA"}
@@ -0,0 +1,70 @@
1
+ import { and, eq, isNull, or } from "drizzle-orm";
2
+ import { agentTurns, messageMentions, messages, users } from "../schema.js";
3
+ /**
4
+ * Resolves the exact running agent turn, its triggering sender, and every concrete user mention recorded on that message.
5
+ * This read-only boundary keeps plugin capabilities tied to durable turn provenance instead of inferring authority from a reusable Rig session.
6
+ */
7
+ export async function agentTurnGetPluginContext(executor, input) {
8
+ const turns = await executor
9
+ .select({
10
+ agentUserId: agentTurns.agentUserId,
11
+ chatId: agentTurns.chatId,
12
+ userMessageId: agentTurns.userMessageId,
13
+ triggeredByUserId: messages.senderUserId,
14
+ username: users.username,
15
+ firstName: users.firstName,
16
+ lastName: users.lastName,
17
+ kind: users.kind,
18
+ })
19
+ .from(agentTurns)
20
+ .innerJoin(messages, eq(messages.id, agentTurns.userMessageId))
21
+ .innerJoin(users, eq(users.id, messages.senderUserId))
22
+ .where(and(eq(agentTurns.sessionId, input.sessionId), eq(agentTurns.status, "running"), or(isNull(agentTurns.runId), eq(agentTurns.runId, input.runId))))
23
+ .limit(2);
24
+ if (turns.length !== 1)
25
+ return undefined;
26
+ const turn = turns[0];
27
+ if (!turn.triggeredByUserId || (turn.kind !== "human" && turn.kind !== "agent"))
28
+ return undefined;
29
+ const mentioned = await executor
30
+ .select({
31
+ id: users.id,
32
+ username: users.username,
33
+ firstName: users.firstName,
34
+ lastName: users.lastName,
35
+ kind: users.kind,
36
+ })
37
+ .from(messageMentions)
38
+ .innerJoin(users, eq(users.id, messageMentions.mentionedUserId))
39
+ .where(and(eq(messageMentions.messageId, turn.userMessageId), eq(messageMentions.kind, "user")))
40
+ .orderBy(messageMentions.startOffset, messageMentions.id);
41
+ const referenced = new Map();
42
+ referenced.set(turn.triggeredByUserId, {
43
+ id: turn.triggeredByUserId,
44
+ username: turn.username,
45
+ firstName: turn.firstName,
46
+ ...(turn.lastName ? { lastName: turn.lastName } : {}),
47
+ kind: turn.kind,
48
+ triggeredTurn: true,
49
+ });
50
+ for (const user of mentioned) {
51
+ if (user.kind !== "human" && user.kind !== "agent")
52
+ continue;
53
+ const existing = referenced.get(user.id);
54
+ referenced.set(user.id, {
55
+ id: user.id,
56
+ username: user.username,
57
+ firstName: user.firstName,
58
+ ...(user.lastName ? { lastName: user.lastName } : {}),
59
+ kind: user.kind,
60
+ triggeredTurn: existing?.triggeredTurn ?? false,
61
+ });
62
+ }
63
+ return {
64
+ agentUserId: turn.agentUserId,
65
+ chatId: turn.chatId,
66
+ triggeredByUserId: turn.triggeredByUserId,
67
+ users: [...referenced.values()],
68
+ };
69
+ }
70
+ //# sourceMappingURL=agentTurnGetPluginContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentTurnGetPluginContext.js","sourceRoot":"","sources":["../../../sources/modules/agent/agentTurnGetPluginContext.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { type AgentSecretSummary, type MutationHint, type UserSummary } from "..
3
3
  import { type PubSub } from "../realtime/index.js";
4
4
  import { RigDaemonClient } from "./daemon.js";
5
5
  import type { AgentSandboxRuntimeResolver } from "../sandbox/types.js";
6
- import type { PluginFunctionDefinition, PluginFunctionResult, PluginSkillDefinition } from "../plugin/types.js";
6
+ import type { PluginFunctionDefinition, PluginFunctionResult, PluginCallContext, PluginSkillDefinition } from "../plugin/types.js";
7
7
  interface AgentSecretCreateInput {
8
8
  actorUserId: string;
9
9
  description: string;
@@ -21,9 +21,7 @@ interface AgentSecretChannelInput extends AgentSecretTargetInput {
21
21
  channelId: string;
22
22
  }
23
23
  interface AgentPluginCapabilities {
24
- callFunction(functionName: string, args: unknown, context: {
25
- chatId: string;
26
- }, signal?: AbortSignal): Promise<PluginFunctionResult>;
24
+ callFunction(functionName: string, args: unknown, context: PluginCallContext, signal?: AbortSignal): Promise<PluginFunctionResult>;
27
25
  listFunctions(signal?: AbortSignal): Promise<readonly PluginFunctionDefinition[]>;
28
26
  listSkills(signal?: AbortSignal): Promise<readonly PluginSkillDefinition[]>;
29
27
  readSkill(skill: PluginSkillDefinition, signal?: AbortSignal): Promise<PluginFunctionResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../sources/modules/agents/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../sources/modules/agents/service.ts"],"names":[],"mappings":"AAgDA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAYrD,OAAO,EAEH,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,WAAW,EACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAA2C,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EAEH,eAAe,EAMlB,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAyB,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAC9F,OAAO,KAAK,EACR,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACxB,MAAM,oBAAoB,CAAC;AA4D5B,UAAU,sBAAsB;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,EAAE,EAAE,MAAM,CAAC;CACd;AACD,UAAU,sBAAsB;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CACpB;AACD,UAAU,qBAAsB,SAAQ,sBAAsB;IAC1D,WAAW,EAAE,MAAM,CAAC;CACvB;AACD,UAAU,uBAAwB,SAAQ,sBAAsB;IAC5D,SAAS,EAAE,MAAM,CAAC;CACrB;AA0BD,UAAU,uBAAuB;IAC7B,YAAY,CACR,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,iBAAiB,EAC1B,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACjC,aAAa,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,wBAAwB,EAAE,CAAC,CAAC;IAClF,UAAU,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,qBAAqB,EAAE,CAAC,CAAC;IAC5E,SAAS,CAAC,KAAK,EAAE,qBAAqB,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;CAChG;AACD,qBAAa,YAAY;IAyBjB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO;IA9B5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAc;IACvC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAO7B;IACJ,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoC;IAChE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoD;IACtF,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuC;IACtE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAuC;IACnF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAuC;IACvE,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;IAC3D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA4C;IACxE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA0C;IACzE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA0C;IAC1E,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAClD,OAAO,CAAC,SAAS,CAAC,CAAgB;IAClC,OAAO,CAAC,QAAQ,CAAS;IACzB,YACqB,QAAQ,EAAE,eAAe,EACzB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,eAAe,EACvB,cAAc,EAAE,2BAA2B,EAC3C,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,uBAAuB,GAAG,SAAS,EACvD,OAAO,GAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAsB,EACpE;IACE,WAAW,CAAC,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;;;OA4D/E;IACK,uBAAuB,CAAC,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE;;;OAEhF;IACK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CA4B3B;IACK,YAAY,CAAC,KAAK,EAAE;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;QAChC,MAAM,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CA0D7D;IACD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE9B;IACK,cAAc,CAAC,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;qBA4tBvE,MAAM;gBACX,MAAM;iBACL,MAAM,EAAE;OAttBpB;IACK,iBAAiB,CAAC,KAAK,EAAE;QAC3B,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAClB;;;;;OAkCA;IACD,eAAe,CAAC,WAAW,EAAE,MAAM;;;OAElC;IACD,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,yDAEjD;IACK,gBAAgB,CAAC,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,yDAUtF;IACK,sBAAsB,CAAC,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,yDAK3E;IACK,oBAAoB,CAAC,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,yDAIzE;IACD,kBAAkB,CAAC,WAAW,EAAE,MAAM;;;;;OAErC;IACK,oBAAoB,CAAC,KAAK,EAAE;QAC9B,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EACH;YAAE,UAAU,EAAE,cAAc,GAAG,iBAAiB,CAAC;YAAC,IAAI,EAAE,SAAS,CAAA;SAAE,GACnE;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,QAAQ,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;KAC9D;;;;OAgBA;IACK,mBAAmB,CAAC,WAAW,EAAE,MAAM;;;OAK5C;IACK,gBAAgB,CAAC,KAAK,EAAE;QAC1B,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC;QACR,IAAI,EAAE,WAAW,CAAC;QAClB,IAAI,CAAC,EAAE,YAAY,CAAC;KACvB,CAAC,CAYD;YACa,wBAAwB;IAgGhC,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;QACjD,OAAO,EAAE,kBAAkB,EAAE,CAAC;KACjC,CAAC,CAgBD;IACK,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC;QAC5D,MAAM,EAAE,kBAAkB,CAAC;QAC3B,IAAI,EAAE,YAAY,CAAC;KACtB,CAAC,CAED;YACa,yBAAyB;IA6BjC,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC;QAC5D,OAAO,EAAE,OAAO,CAAC;QACjB,IAAI,EAAE,YAAY,CAAC;KACtB,CAAC,CAID;YACa,yBAAyB;IAmBjC,wBAAwB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC;QAClE,MAAM,EAAE,kBAAkB,CAAC;QAC3B,IAAI,CAAC,EAAE,YAAY,CAAC;KACvB,CAAC,CAID;YACa,gCAAgC;IAmBxC,0BAA0B,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC;QACpE,MAAM,EAAE,kBAAkB,CAAC;QAC3B,IAAI,CAAC,EAAE,YAAY,CAAC;KACvB,CAAC,CAID;YACa,kCAAkC;IAmB1C,0BAA0B,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC;QACtE,MAAM,EAAE,kBAAkB,CAAC;QAC3B,IAAI,CAAC,EAAE,YAAY,CAAC;KACvB,CAAC,CAID;YACa,kCAAkC;IAmB1C,4BAA4B,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC;QACxE,MAAM,EAAE,kBAAkB,CAAC;QAC3B,IAAI,CAAC,EAAE,YAAY,CAAC;KACvB,CAAC,CAID;YACa,oCAAoC;YAmBpC,2BAA2B;YAc3B,oBAAoB;YAWpB,kBAAkB;IA4G1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CA6B3B;IACD,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,oBAAoB;YAiBd,UAAU;IA0FxB,OAAO,CAAC,uBAAuB;YAUjB,qBAAqB;YAUrB,gBAAgB;YAiBhB,wBAAwB;YAwBxB,qBAAqB;YA8BrB,4BAA4B;YAY5B,sBAAsB;YAUtB,kBAAkB;YAMlB,WAAW;YAMX,uBAAuB;YAoCvB,iBAAiB;YAyCjB,qBAAqB;YAWrB,gBAAgB;YAmFhB,yBAAyB;YAkCzB,sBAAsB;YA2BtB,wBAAwB;IAoCtC,OAAO,CAAC,UAAU;YAeJ,SAAS;YAyCT,mBAAmB;IA2HjC,OAAO,CAAC,eAAe;YAwET,iBAAiB;YAwFjB,cAAc;YAMd,qBAAqB;YAwBrB,QAAQ;YAUR,YAAY;YAoBZ,QAAQ;YAoBR,kBAAkB;YAoDlB,mBAAmB;YA2BnB,iBAAiB;IAU/B,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,oBAAoB;YAiCd,WAAW;YAiCX,UAAU;IAQxB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,aAAa;CAexB"}