happy2 0.0.5

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 (373) hide show
  1. package/README.md +82 -0
  2. package/package.json +74 -0
  3. package/packages/happy2-server/Dockerfile +18 -0
  4. package/packages/happy2-server/README.md +418 -0
  5. package/packages/happy2-server/bin/happy2.js +3 -0
  6. package/packages/happy2-server/dist/cli.d.ts +3 -0
  7. package/packages/happy2-server/dist/cli.d.ts.map +1 -0
  8. package/packages/happy2-server/dist/cli.js +44 -0
  9. package/packages/happy2-server/dist/cli.js.map +1 -0
  10. package/packages/happy2-server/dist/index.d.ts +24 -0
  11. package/packages/happy2-server/dist/index.d.ts.map +1 -0
  12. package/packages/happy2-server/dist/index.js +22 -0
  13. package/packages/happy2-server/dist/index.js.map +1 -0
  14. package/packages/happy2-server/dist/modules/agents/builtin-images.d.ts +8 -0
  15. package/packages/happy2-server/dist/modules/agents/builtin-images.d.ts.map +1 -0
  16. package/packages/happy2-server/dist/modules/agents/builtin-images.js +283 -0
  17. package/packages/happy2-server/dist/modules/agents/builtin-images.js.map +1 -0
  18. package/packages/happy2-server/dist/modules/agents/command.d.ts +3 -0
  19. package/packages/happy2-server/dist/modules/agents/command.d.ts.map +1 -0
  20. package/packages/happy2-server/dist/modules/agents/command.js +7 -0
  21. package/packages/happy2-server/dist/modules/agents/command.js.map +1 -0
  22. package/packages/happy2-server/dist/modules/agents/daemon.d.ts +106 -0
  23. package/packages/happy2-server/dist/modules/agents/daemon.d.ts.map +1 -0
  24. package/packages/happy2-server/dist/modules/agents/daemon.js +522 -0
  25. package/packages/happy2-server/dist/modules/agents/daemon.js.map +1 -0
  26. package/packages/happy2-server/dist/modules/agents/docker.d.ts +51 -0
  27. package/packages/happy2-server/dist/modules/agents/docker.d.ts.map +1 -0
  28. package/packages/happy2-server/dist/modules/agents/docker.js +256 -0
  29. package/packages/happy2-server/dist/modules/agents/docker.js.map +1 -0
  30. package/packages/happy2-server/dist/modules/agents/docker.test.d.ts +2 -0
  31. package/packages/happy2-server/dist/modules/agents/docker.test.d.ts.map +1 -0
  32. package/packages/happy2-server/dist/modules/agents/docker.test.js +155 -0
  33. package/packages/happy2-server/dist/modules/agents/docker.test.js.map +1 -0
  34. package/packages/happy2-server/dist/modules/agents/index.d.ts +5 -0
  35. package/packages/happy2-server/dist/modules/agents/index.d.ts.map +1 -0
  36. package/packages/happy2-server/dist/modules/agents/index.js +4 -0
  37. package/packages/happy2-server/dist/modules/agents/index.js.map +1 -0
  38. package/packages/happy2-server/dist/modules/agents/service.d.ts +140 -0
  39. package/packages/happy2-server/dist/modules/agents/service.d.ts.map +1 -0
  40. package/packages/happy2-server/dist/modules/agents/service.js +1283 -0
  41. package/packages/happy2-server/dist/modules/agents/service.js.map +1 -0
  42. package/packages/happy2-server/dist/modules/auth/cloudflare-access.d.ts +15 -0
  43. package/packages/happy2-server/dist/modules/auth/cloudflare-access.d.ts.map +1 -0
  44. package/packages/happy2-server/dist/modules/auth/cloudflare-access.js +49 -0
  45. package/packages/happy2-server/dist/modules/auth/cloudflare-access.js.map +1 -0
  46. package/packages/happy2-server/dist/modules/auth/crypto.d.ts +4 -0
  47. package/packages/happy2-server/dist/modules/auth/crypto.d.ts.map +1 -0
  48. package/packages/happy2-server/dist/modules/auth/crypto.js +31 -0
  49. package/packages/happy2-server/dist/modules/auth/crypto.js.map +1 -0
  50. package/packages/happy2-server/dist/modules/auth/crypto.test.d.ts +2 -0
  51. package/packages/happy2-server/dist/modules/auth/crypto.test.d.ts.map +1 -0
  52. package/packages/happy2-server/dist/modules/auth/crypto.test.js +11 -0
  53. package/packages/happy2-server/dist/modules/auth/crypto.test.js.map +1 -0
  54. package/packages/happy2-server/dist/modules/auth/email.d.ts +3 -0
  55. package/packages/happy2-server/dist/modules/auth/email.d.ts.map +1 -0
  56. package/packages/happy2-server/dist/modules/auth/email.js +22 -0
  57. package/packages/happy2-server/dist/modules/auth/email.js.map +1 -0
  58. package/packages/happy2-server/dist/modules/auth/metadata.d.ts +5 -0
  59. package/packages/happy2-server/dist/modules/auth/metadata.d.ts.map +1 -0
  60. package/packages/happy2-server/dist/modules/auth/metadata.js +28 -0
  61. package/packages/happy2-server/dist/modules/auth/metadata.js.map +1 -0
  62. package/packages/happy2-server/dist/modules/auth/metadata.test.d.ts +2 -0
  63. package/packages/happy2-server/dist/modules/auth/metadata.test.d.ts.map +1 -0
  64. package/packages/happy2-server/dist/modules/auth/metadata.test.js +10 -0
  65. package/packages/happy2-server/dist/modules/auth/metadata.test.js.map +1 -0
  66. package/packages/happy2-server/dist/modules/auth/methods.d.ts +10 -0
  67. package/packages/happy2-server/dist/modules/auth/methods.d.ts.map +1 -0
  68. package/packages/happy2-server/dist/modules/auth/methods.js +21 -0
  69. package/packages/happy2-server/dist/modules/auth/methods.js.map +1 -0
  70. package/packages/happy2-server/dist/modules/auth/methods.test.d.ts +2 -0
  71. package/packages/happy2-server/dist/modules/auth/methods.test.d.ts.map +1 -0
  72. package/packages/happy2-server/dist/modules/auth/methods.test.js +16 -0
  73. package/packages/happy2-server/dist/modules/auth/methods.test.js.map +1 -0
  74. package/packages/happy2-server/dist/modules/auth/oidc.d.ts +9 -0
  75. package/packages/happy2-server/dist/modules/auth/oidc.d.ts.map +1 -0
  76. package/packages/happy2-server/dist/modules/auth/oidc.js +68 -0
  77. package/packages/happy2-server/dist/modules/auth/oidc.js.map +1 -0
  78. package/packages/happy2-server/dist/modules/auth/service.d.ts +44 -0
  79. package/packages/happy2-server/dist/modules/auth/service.d.ts.map +1 -0
  80. package/packages/happy2-server/dist/modules/auth/service.js +208 -0
  81. package/packages/happy2-server/dist/modules/auth/service.js.map +1 -0
  82. package/packages/happy2-server/dist/modules/auth/tokens.d.ts +21 -0
  83. package/packages/happy2-server/dist/modules/auth/tokens.d.ts.map +1 -0
  84. package/packages/happy2-server/dist/modules/auth/tokens.js +79 -0
  85. package/packages/happy2-server/dist/modules/auth/tokens.js.map +1 -0
  86. package/packages/happy2-server/dist/modules/automation/repository.d.ts +127 -0
  87. package/packages/happy2-server/dist/modules/automation/repository.d.ts.map +1 -0
  88. package/packages/happy2-server/dist/modules/automation/repository.js +821 -0
  89. package/packages/happy2-server/dist/modules/automation/repository.js.map +1 -0
  90. package/packages/happy2-server/dist/modules/collaboration/repository.d.ts +839 -0
  91. package/packages/happy2-server/dist/modules/collaboration/repository.d.ts.map +1 -0
  92. package/packages/happy2-server/dist/modules/collaboration/repository.js +5795 -0
  93. package/packages/happy2-server/dist/modules/collaboration/repository.js.map +1 -0
  94. package/packages/happy2-server/dist/modules/collaboration/repository.test.d.ts +2 -0
  95. package/packages/happy2-server/dist/modules/collaboration/repository.test.d.ts.map +1 -0
  96. package/packages/happy2-server/dist/modules/collaboration/repository.test.js +620 -0
  97. package/packages/happy2-server/dist/modules/collaboration/repository.test.js.map +1 -0
  98. package/packages/happy2-server/dist/modules/collaboration/types.d.ts +243 -0
  99. package/packages/happy2-server/dist/modules/collaboration/types.d.ts.map +1 -0
  100. package/packages/happy2-server/dist/modules/collaboration/types.js +8 -0
  101. package/packages/happy2-server/dist/modules/collaboration/types.js.map +1 -0
  102. package/packages/happy2-server/dist/modules/config/defaults.d.ts +8 -0
  103. package/packages/happy2-server/dist/modules/config/defaults.d.ts.map +1 -0
  104. package/packages/happy2-server/dist/modules/config/defaults.js +70 -0
  105. package/packages/happy2-server/dist/modules/config/defaults.js.map +1 -0
  106. package/packages/happy2-server/dist/modules/config/defaults.test.d.ts +2 -0
  107. package/packages/happy2-server/dist/modules/config/defaults.test.d.ts.map +1 -0
  108. package/packages/happy2-server/dist/modules/config/defaults.test.js +27 -0
  109. package/packages/happy2-server/dist/modules/config/defaults.test.js.map +1 -0
  110. package/packages/happy2-server/dist/modules/config/environment.d.ts +4 -0
  111. package/packages/happy2-server/dist/modules/config/environment.d.ts.map +1 -0
  112. package/packages/happy2-server/dist/modules/config/environment.js +92 -0
  113. package/packages/happy2-server/dist/modules/config/environment.js.map +1 -0
  114. package/packages/happy2-server/dist/modules/config/loader.d.ts +5 -0
  115. package/packages/happy2-server/dist/modules/config/loader.d.ts.map +1 -0
  116. package/packages/happy2-server/dist/modules/config/loader.js +251 -0
  117. package/packages/happy2-server/dist/modules/config/loader.js.map +1 -0
  118. package/packages/happy2-server/dist/modules/config/loader.test.d.ts +2 -0
  119. package/packages/happy2-server/dist/modules/config/loader.test.d.ts.map +1 -0
  120. package/packages/happy2-server/dist/modules/config/loader.test.js +108 -0
  121. package/packages/happy2-server/dist/modules/config/loader.test.js.map +1 -0
  122. package/packages/happy2-server/dist/modules/config/paths.d.ts +7 -0
  123. package/packages/happy2-server/dist/modules/config/paths.d.ts.map +1 -0
  124. package/packages/happy2-server/dist/modules/config/paths.js +15 -0
  125. package/packages/happy2-server/dist/modules/config/paths.js.map +1 -0
  126. package/packages/happy2-server/dist/modules/config/paths.test.d.ts +2 -0
  127. package/packages/happy2-server/dist/modules/config/paths.test.d.ts.map +1 -0
  128. package/packages/happy2-server/dist/modules/config/paths.test.js +22 -0
  129. package/packages/happy2-server/dist/modules/config/paths.test.js.map +1 -0
  130. package/packages/happy2-server/dist/modules/config/runtime.d.ts +6 -0
  131. package/packages/happy2-server/dist/modules/config/runtime.d.ts.map +1 -0
  132. package/packages/happy2-server/dist/modules/config/runtime.js +14 -0
  133. package/packages/happy2-server/dist/modules/config/runtime.js.map +1 -0
  134. package/packages/happy2-server/dist/modules/config/type.d.ts +88 -0
  135. package/packages/happy2-server/dist/modules/config/type.d.ts.map +1 -0
  136. package/packages/happy2-server/dist/modules/config/type.js +2 -0
  137. package/packages/happy2-server/dist/modules/config/type.js.map +1 -0
  138. package/packages/happy2-server/dist/modules/database.d.ts +105 -0
  139. package/packages/happy2-server/dist/modules/database.d.ts.map +1 -0
  140. package/packages/happy2-server/dist/modules/database.js +583 -0
  141. package/packages/happy2-server/dist/modules/database.js.map +1 -0
  142. package/packages/happy2-server/dist/modules/drizzle.d.ts +11 -0
  143. package/packages/happy2-server/dist/modules/drizzle.d.ts.map +1 -0
  144. package/packages/happy2-server/dist/modules/drizzle.js +31 -0
  145. package/packages/happy2-server/dist/modules/drizzle.js.map +1 -0
  146. package/packages/happy2-server/dist/modules/files/lock.d.ts +3 -0
  147. package/packages/happy2-server/dist/modules/files/lock.d.ts.map +1 -0
  148. package/packages/happy2-server/dist/modules/files/lock.js +83 -0
  149. package/packages/happy2-server/dist/modules/files/lock.js.map +1 -0
  150. package/packages/happy2-server/dist/modules/files/media.d.ts +18 -0
  151. package/packages/happy2-server/dist/modules/files/media.d.ts.map +1 -0
  152. package/packages/happy2-server/dist/modules/files/media.js +352 -0
  153. package/packages/happy2-server/dist/modules/files/media.js.map +1 -0
  154. package/packages/happy2-server/dist/modules/files/provider.d.ts +130 -0
  155. package/packages/happy2-server/dist/modules/files/provider.d.ts.map +1 -0
  156. package/packages/happy2-server/dist/modules/files/provider.js +448 -0
  157. package/packages/happy2-server/dist/modules/files/provider.js.map +1 -0
  158. package/packages/happy2-server/dist/modules/files/quota.d.ts +58 -0
  159. package/packages/happy2-server/dist/modules/files/quota.d.ts.map +1 -0
  160. package/packages/happy2-server/dist/modules/files/quota.js +180 -0
  161. package/packages/happy2-server/dist/modules/files/quota.js.map +1 -0
  162. package/packages/happy2-server/dist/modules/files/routes.test.d.ts +2 -0
  163. package/packages/happy2-server/dist/modules/files/routes.test.d.ts.map +1 -0
  164. package/packages/happy2-server/dist/modules/files/routes.test.js +163 -0
  165. package/packages/happy2-server/dist/modules/files/routes.test.js.map +1 -0
  166. package/packages/happy2-server/dist/modules/files/scanner.d.ts +27 -0
  167. package/packages/happy2-server/dist/modules/files/scanner.d.ts.map +1 -0
  168. package/packages/happy2-server/dist/modules/files/scanner.js +66 -0
  169. package/packages/happy2-server/dist/modules/files/scanner.js.map +1 -0
  170. package/packages/happy2-server/dist/modules/files/storage.d.ts +95 -0
  171. package/packages/happy2-server/dist/modules/files/storage.d.ts.map +1 -0
  172. package/packages/happy2-server/dist/modules/files/storage.js +855 -0
  173. package/packages/happy2-server/dist/modules/files/storage.js.map +1 -0
  174. package/packages/happy2-server/dist/modules/files/storage.test.d.ts +2 -0
  175. package/packages/happy2-server/dist/modules/files/storage.test.d.ts.map +1 -0
  176. package/packages/happy2-server/dist/modules/files/storage.test.js +170 -0
  177. package/packages/happy2-server/dist/modules/files/storage.test.js.map +1 -0
  178. package/packages/happy2-server/dist/modules/integrations/index.d.ts +6 -0
  179. package/packages/happy2-server/dist/modules/integrations/index.d.ts.map +1 -0
  180. package/packages/happy2-server/dist/modules/integrations/index.js +6 -0
  181. package/packages/happy2-server/dist/modules/integrations/index.js.map +1 -0
  182. package/packages/happy2-server/dist/modules/integrations/repository.d.ts +136 -0
  183. package/packages/happy2-server/dist/modules/integrations/repository.d.ts.map +1 -0
  184. package/packages/happy2-server/dist/modules/integrations/repository.js +1229 -0
  185. package/packages/happy2-server/dist/modules/integrations/repository.js.map +1 -0
  186. package/packages/happy2-server/dist/modules/integrations/repository.test.d.ts +2 -0
  187. package/packages/happy2-server/dist/modules/integrations/repository.test.d.ts.map +1 -0
  188. package/packages/happy2-server/dist/modules/integrations/repository.test.js +345 -0
  189. package/packages/happy2-server/dist/modules/integrations/repository.test.js.map +1 -0
  190. package/packages/happy2-server/dist/modules/integrations/routes.test.d.ts +2 -0
  191. package/packages/happy2-server/dist/modules/integrations/routes.test.d.ts.map +1 -0
  192. package/packages/happy2-server/dist/modules/integrations/routes.test.js +161 -0
  193. package/packages/happy2-server/dist/modules/integrations/routes.test.js.map +1 -0
  194. package/packages/happy2-server/dist/modules/integrations/secrets.d.ts +19 -0
  195. package/packages/happy2-server/dist/modules/integrations/secrets.d.ts.map +1 -0
  196. package/packages/happy2-server/dist/modules/integrations/secrets.js +69 -0
  197. package/packages/happy2-server/dist/modules/integrations/secrets.js.map +1 -0
  198. package/packages/happy2-server/dist/modules/integrations/ssrf.d.ts +32 -0
  199. package/packages/happy2-server/dist/modules/integrations/ssrf.d.ts.map +1 -0
  200. package/packages/happy2-server/dist/modules/integrations/ssrf.js +185 -0
  201. package/packages/happy2-server/dist/modules/integrations/ssrf.js.map +1 -0
  202. package/packages/happy2-server/dist/modules/integrations/ssrf.test.d.ts +2 -0
  203. package/packages/happy2-server/dist/modules/integrations/ssrf.test.d.ts.map +1 -0
  204. package/packages/happy2-server/dist/modules/integrations/ssrf.test.js +56 -0
  205. package/packages/happy2-server/dist/modules/integrations/ssrf.test.js.map +1 -0
  206. package/packages/happy2-server/dist/modules/integrations/transport.d.ts +21 -0
  207. package/packages/happy2-server/dist/modules/integrations/transport.d.ts.map +1 -0
  208. package/packages/happy2-server/dist/modules/integrations/transport.js +108 -0
  209. package/packages/happy2-server/dist/modules/integrations/transport.js.map +1 -0
  210. package/packages/happy2-server/dist/modules/integrations/transport.test.d.ts +2 -0
  211. package/packages/happy2-server/dist/modules/integrations/transport.test.d.ts.map +1 -0
  212. package/packages/happy2-server/dist/modules/integrations/transport.test.js +66 -0
  213. package/packages/happy2-server/dist/modules/integrations/transport.test.js.map +1 -0
  214. package/packages/happy2-server/dist/modules/integrations/types.d.ts +155 -0
  215. package/packages/happy2-server/dist/modules/integrations/types.d.ts.map +1 -0
  216. package/packages/happy2-server/dist/modules/integrations/types.js +26 -0
  217. package/packages/happy2-server/dist/modules/integrations/types.js.map +1 -0
  218. package/packages/happy2-server/dist/modules/operations/export-worker.d.ts +16 -0
  219. package/packages/happy2-server/dist/modules/operations/export-worker.d.ts.map +1 -0
  220. package/packages/happy2-server/dist/modules/operations/export-worker.js +56 -0
  221. package/packages/happy2-server/dist/modules/operations/export-worker.js.map +1 -0
  222. package/packages/happy2-server/dist/modules/operations/repository.d.ts +215 -0
  223. package/packages/happy2-server/dist/modules/operations/repository.d.ts.map +1 -0
  224. package/packages/happy2-server/dist/modules/operations/repository.js +2011 -0
  225. package/packages/happy2-server/dist/modules/operations/repository.js.map +1 -0
  226. package/packages/happy2-server/dist/modules/operations/repository.test.d.ts +2 -0
  227. package/packages/happy2-server/dist/modules/operations/repository.test.d.ts.map +1 -0
  228. package/packages/happy2-server/dist/modules/operations/repository.test.js +610 -0
  229. package/packages/happy2-server/dist/modules/operations/repository.test.js.map +1 -0
  230. package/packages/happy2-server/dist/modules/operations/types.d.ts +144 -0
  231. package/packages/happy2-server/dist/modules/operations/types.d.ts.map +1 -0
  232. package/packages/happy2-server/dist/modules/operations/types.js +9 -0
  233. package/packages/happy2-server/dist/modules/operations/types.js.map +1 -0
  234. package/packages/happy2-server/dist/modules/realtime/events.d.ts +99 -0
  235. package/packages/happy2-server/dist/modules/realtime/events.d.ts.map +1 -0
  236. package/packages/happy2-server/dist/modules/realtime/events.js +173 -0
  237. package/packages/happy2-server/dist/modules/realtime/events.js.map +1 -0
  238. package/packages/happy2-server/dist/modules/realtime/index.d.ts +4 -0
  239. package/packages/happy2-server/dist/modules/realtime/index.d.ts.map +1 -0
  240. package/packages/happy2-server/dist/modules/realtime/index.js +4 -0
  241. package/packages/happy2-server/dist/modules/realtime/index.js.map +1 -0
  242. package/packages/happy2-server/dist/modules/realtime/local.d.ts +37 -0
  243. package/packages/happy2-server/dist/modules/realtime/local.d.ts.map +1 -0
  244. package/packages/happy2-server/dist/modules/realtime/local.js +181 -0
  245. package/packages/happy2-server/dist/modules/realtime/local.js.map +1 -0
  246. package/packages/happy2-server/dist/modules/realtime/local.test.d.ts +2 -0
  247. package/packages/happy2-server/dist/modules/realtime/local.test.d.ts.map +1 -0
  248. package/packages/happy2-server/dist/modules/realtime/local.test.js +186 -0
  249. package/packages/happy2-server/dist/modules/realtime/local.test.js.map +1 -0
  250. package/packages/happy2-server/dist/modules/realtime/pubsub.d.ts +26 -0
  251. package/packages/happy2-server/dist/modules/realtime/pubsub.d.ts.map +1 -0
  252. package/packages/happy2-server/dist/modules/realtime/pubsub.js +7 -0
  253. package/packages/happy2-server/dist/modules/realtime/pubsub.js.map +1 -0
  254. package/packages/happy2-server/dist/modules/request/database-idempotency.d.ts +15 -0
  255. package/packages/happy2-server/dist/modules/request/database-idempotency.d.ts.map +1 -0
  256. package/packages/happy2-server/dist/modules/request/database-idempotency.js +141 -0
  257. package/packages/happy2-server/dist/modules/request/database-idempotency.js.map +1 -0
  258. package/packages/happy2-server/dist/modules/request/idempotency-hook.d.ts +12 -0
  259. package/packages/happy2-server/dist/modules/request/idempotency-hook.d.ts.map +1 -0
  260. package/packages/happy2-server/dist/modules/request/idempotency-hook.js +98 -0
  261. package/packages/happy2-server/dist/modules/request/idempotency-hook.js.map +1 -0
  262. package/packages/happy2-server/dist/modules/request/idempotency.d.ts +146 -0
  263. package/packages/happy2-server/dist/modules/request/idempotency.d.ts.map +1 -0
  264. package/packages/happy2-server/dist/modules/request/idempotency.js +312 -0
  265. package/packages/happy2-server/dist/modules/request/idempotency.js.map +1 -0
  266. package/packages/happy2-server/dist/modules/request/idempotency.test.d.ts +2 -0
  267. package/packages/happy2-server/dist/modules/request/idempotency.test.d.ts.map +1 -0
  268. package/packages/happy2-server/dist/modules/request/idempotency.test.js +191 -0
  269. package/packages/happy2-server/dist/modules/request/idempotency.test.js.map +1 -0
  270. package/packages/happy2-server/dist/modules/request/index.d.ts +5 -0
  271. package/packages/happy2-server/dist/modules/request/index.d.ts.map +1 -0
  272. package/packages/happy2-server/dist/modules/request/index.js +5 -0
  273. package/packages/happy2-server/dist/modules/request/index.js.map +1 -0
  274. package/packages/happy2-server/dist/modules/request/rate-limit.d.ts +100 -0
  275. package/packages/happy2-server/dist/modules/request/rate-limit.d.ts.map +1 -0
  276. package/packages/happy2-server/dist/modules/request/rate-limit.js +239 -0
  277. package/packages/happy2-server/dist/modules/request/rate-limit.js.map +1 -0
  278. package/packages/happy2-server/dist/modules/request/rate-limit.test.d.ts +2 -0
  279. package/packages/happy2-server/dist/modules/request/rate-limit.test.d.ts.map +1 -0
  280. package/packages/happy2-server/dist/modules/request/rate-limit.test.js +123 -0
  281. package/packages/happy2-server/dist/modules/request/rate-limit.test.js.map +1 -0
  282. package/packages/happy2-server/dist/modules/schema.d.ts +31454 -0
  283. package/packages/happy2-server/dist/modules/schema.d.ts.map +1 -0
  284. package/packages/happy2-server/dist/modules/schema.js +1081 -0
  285. package/packages/happy2-server/dist/modules/schema.js.map +1 -0
  286. package/packages/happy2-server/dist/modules/workspace/index.d.ts +3 -0
  287. package/packages/happy2-server/dist/modules/workspace/index.d.ts.map +1 -0
  288. package/packages/happy2-server/dist/modules/workspace/index.js +3 -0
  289. package/packages/happy2-server/dist/modules/workspace/index.js.map +1 -0
  290. package/packages/happy2-server/dist/modules/workspace/service.d.ts +54 -0
  291. package/packages/happy2-server/dist/modules/workspace/service.d.ts.map +1 -0
  292. package/packages/happy2-server/dist/modules/workspace/service.js +997 -0
  293. package/packages/happy2-server/dist/modules/workspace/service.js.map +1 -0
  294. package/packages/happy2-server/dist/modules/workspace/types.d.ts +58 -0
  295. package/packages/happy2-server/dist/modules/workspace/types.d.ts.map +1 -0
  296. package/packages/happy2-server/dist/modules/workspace/types.js +11 -0
  297. package/packages/happy2-server/dist/modules/workspace/types.js.map +1 -0
  298. package/packages/happy2-server/dist/routes/agents.d.ts +5 -0
  299. package/packages/happy2-server/dist/routes/agents.d.ts.map +1 -0
  300. package/packages/happy2-server/dist/routes/agents.js +225 -0
  301. package/packages/happy2-server/dist/routes/agents.js.map +1 -0
  302. package/packages/happy2-server/dist/routes/auth.d.ts +5 -0
  303. package/packages/happy2-server/dist/routes/auth.d.ts.map +1 -0
  304. package/packages/happy2-server/dist/routes/auth.js +128 -0
  305. package/packages/happy2-server/dist/routes/auth.js.map +1 -0
  306. package/packages/happy2-server/dist/routes/automation.d.ts +6 -0
  307. package/packages/happy2-server/dist/routes/automation.d.ts.map +1 -0
  308. package/packages/happy2-server/dist/routes/automation.js +315 -0
  309. package/packages/happy2-server/dist/routes/automation.js.map +1 -0
  310. package/packages/happy2-server/dist/routes/basic.d.ts +3 -0
  311. package/packages/happy2-server/dist/routes/basic.d.ts.map +1 -0
  312. package/packages/happy2-server/dist/routes/basic.js +5 -0
  313. package/packages/happy2-server/dist/routes/basic.js.map +1 -0
  314. package/packages/happy2-server/dist/routes/collaboration.d.ts +7 -0
  315. package/packages/happy2-server/dist/routes/collaboration.d.ts.map +1 -0
  316. package/packages/happy2-server/dist/routes/collaboration.js +1285 -0
  317. package/packages/happy2-server/dist/routes/collaboration.js.map +1 -0
  318. package/packages/happy2-server/dist/routes/files.d.ts +9 -0
  319. package/packages/happy2-server/dist/routes/files.d.ts.map +1 -0
  320. package/packages/happy2-server/dist/routes/files.js +397 -0
  321. package/packages/happy2-server/dist/routes/files.js.map +1 -0
  322. package/packages/happy2-server/dist/routes/integrations.d.ts +6 -0
  323. package/packages/happy2-server/dist/routes/integrations.d.ts.map +1 -0
  324. package/packages/happy2-server/dist/routes/integrations.js +486 -0
  325. package/packages/happy2-server/dist/routes/integrations.js.map +1 -0
  326. package/packages/happy2-server/dist/routes/operations.d.ts +5 -0
  327. package/packages/happy2-server/dist/routes/operations.d.ts.map +1 -0
  328. package/packages/happy2-server/dist/routes/operations.js +588 -0
  329. package/packages/happy2-server/dist/routes/operations.js.map +1 -0
  330. package/packages/happy2-server/dist/routes/operations.test.d.ts +2 -0
  331. package/packages/happy2-server/dist/routes/operations.test.d.ts.map +1 -0
  332. package/packages/happy2-server/dist/routes/operations.test.js +106 -0
  333. package/packages/happy2-server/dist/routes/operations.test.js.map +1 -0
  334. package/packages/happy2-server/dist/routes/sync.d.ts +6 -0
  335. package/packages/happy2-server/dist/routes/sync.d.ts.map +1 -0
  336. package/packages/happy2-server/dist/routes/sync.js +549 -0
  337. package/packages/happy2-server/dist/routes/sync.js.map +1 -0
  338. package/packages/happy2-server/dist/routes/workspace.d.ts +5 -0
  339. package/packages/happy2-server/dist/routes/workspace.d.ts.map +1 -0
  340. package/packages/happy2-server/dist/routes/workspace.js +240 -0
  341. package/packages/happy2-server/dist/routes/workspace.js.map +1 -0
  342. package/packages/happy2-server/dist/runner.d.ts +3 -0
  343. package/packages/happy2-server/dist/runner.d.ts.map +1 -0
  344. package/packages/happy2-server/dist/runner.js +30 -0
  345. package/packages/happy2-server/dist/runner.js.map +1 -0
  346. package/packages/happy2-server/dist/server.d.ts +32 -0
  347. package/packages/happy2-server/dist/server.d.ts.map +1 -0
  348. package/packages/happy2-server/dist/server.js +284 -0
  349. package/packages/happy2-server/dist/server.js.map +1 -0
  350. package/packages/happy2-server/dist/standalone.d.ts +13 -0
  351. package/packages/happy2-server/dist/standalone.d.ts.map +1 -0
  352. package/packages/happy2-server/dist/standalone.js +99 -0
  353. package/packages/happy2-server/dist/standalone.js.map +1 -0
  354. package/packages/happy2-server/dist/web/assets/figtree-latin-wght-normal-D_ZTVpCC.woff2 +0 -0
  355. package/packages/happy2-server/dist/web/assets/happy-otter-Q2O_g-DT.png +0 -0
  356. package/packages/happy2-server/dist/web/assets/index-COvbX8JP.css +2 -0
  357. package/packages/happy2-server/dist/web/assets/index-DdpugxMO.js +57 -0
  358. package/packages/happy2-server/dist/web/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
  359. package/packages/happy2-server/dist/web/assets/onboarding-CRUpq9xl.png +0 -0
  360. package/packages/happy2-server/dist/web/index.html +13 -0
  361. package/packages/happy2-server/drizzle/0000_initial.sql +13 -0
  362. package/packages/happy2-server/drizzle/0001_accounts_profiles_files.sql +42 -0
  363. package/packages/happy2-server/drizzle/0002_file_visibility_and_uploader.sql +5 -0
  364. package/packages/happy2-server/drizzle/0003_collaboration.sql +565 -0
  365. package/packages/happy2-server/drizzle/0004_collaboration_expansion.sql +1099 -0
  366. package/packages/happy2-server/drizzle/0005_ai_agents.sql +85 -0
  367. package/packages/happy2-server/drizzle/0006_rig_global_event_queue.sql +10 -0
  368. package/packages/happy2-server/drizzle/0007_rename_server_identity.sql +3 -0
  369. package/packages/happy2-server/drizzle/0008_agent_message_streaming.sql +47 -0
  370. package/packages/happy2-server/drizzle/0009_chat_workspace_binding_lookup.sql +2 -0
  371. package/packages/happy2-server/drizzle/0010_rig_secret_assignments.sql +21 -0
  372. package/packages/happy2-server/drizzle/meta/_journal.json +83 -0
  373. package/packages/happy2-server/happy2.example.toml +104 -0
@@ -0,0 +1,486 @@
1
+ import { IntegrationError, integrationScopes, } from "../modules/integrations/types.js";
2
+ const MAX_ID = 128;
3
+ export function registerIntegrationRoutes(app, auth, integrations, callbacks) {
4
+ app.get("/v0/admin/bots", async (request, reply) => {
5
+ const userId = await actor(auth, request, reply);
6
+ if (!userId)
7
+ return;
8
+ try {
9
+ return { bots: await integrations.listBots(userId) };
10
+ }
11
+ catch (error) {
12
+ return handled(reply, error) ?? Promise.reject(error);
13
+ }
14
+ });
15
+ app.post("/v0/admin/bots/createBot", async (request, reply) => {
16
+ const userId = await actor(auth, request, reply);
17
+ if (!userId)
18
+ return;
19
+ try {
20
+ const body = object(request.body);
21
+ only(body, ["name", "username", "description", "photoFileId", "ownerUserId"]);
22
+ const result = await integrations.createBot({
23
+ actorUserId: userId,
24
+ name: requiredString(body.name, "name", 200),
25
+ username: requiredString(body.username, "username", 32),
26
+ description: optionalString(body.description, "description", 2_000),
27
+ photoFileId: optionalId(body.photoFileId, "photoFileId"),
28
+ ownerUserId: optionalId(body.ownerUserId, "ownerUserId"),
29
+ });
30
+ await notify(request, callbacks, result.change);
31
+ return reply.code(201).send({ bot: result.value, sync: result.change });
32
+ }
33
+ catch (error) {
34
+ return handled(reply, error) ?? Promise.reject(error);
35
+ }
36
+ });
37
+ app.post("/v0/admin/bots/:botId/updateBot", async (request, reply) => {
38
+ const userId = await actor(auth, request, reply);
39
+ if (!userId)
40
+ return;
41
+ try {
42
+ const body = object(request.body);
43
+ only(body, ["name", "username", "description", "photoFileId", "ownerUserId"]);
44
+ const result = await integrations.updateBot({
45
+ actorUserId: userId,
46
+ botId: routeId(request, "botId"),
47
+ name: optionalString(body.name, "name", 200),
48
+ username: optionalString(body.username, "username", 32),
49
+ description: nullableString(body.description, "description", 2_000),
50
+ photoFileId: nullableId(body.photoFileId, "photoFileId"),
51
+ ownerUserId: nullableId(body.ownerUserId, "ownerUserId"),
52
+ });
53
+ await notify(request, callbacks, result.change);
54
+ return { bot: result.value, sync: result.change };
55
+ }
56
+ catch (error) {
57
+ return handled(reply, error) ?? Promise.reject(error);
58
+ }
59
+ });
60
+ app.post("/v0/admin/bots/:botId/revokeBot", async (request, reply) => {
61
+ const userId = await actor(auth, request, reply);
62
+ if (!userId)
63
+ return;
64
+ try {
65
+ emptyBody(request.body);
66
+ const change = await integrations.revokeBot(userId, routeId(request, "botId"));
67
+ await notify(request, callbacks, change);
68
+ return { revoked: true, sync: change };
69
+ }
70
+ catch (error) {
71
+ return handled(reply, error) ?? Promise.reject(error);
72
+ }
73
+ });
74
+ app.get("/v0/admin/integrations", async (request, reply) => {
75
+ const userId = await actor(auth, request, reply);
76
+ if (!userId)
77
+ return;
78
+ try {
79
+ return { integrations: await integrations.listIntegrations(userId) };
80
+ }
81
+ catch (error) {
82
+ return handled(reply, error) ?? Promise.reject(error);
83
+ }
84
+ });
85
+ app.post("/v0/admin/integrations/createIntegration", async (request, reply) => {
86
+ const userId = await actor(auth, request, reply);
87
+ if (!userId)
88
+ return;
89
+ try {
90
+ const body = object(request.body);
91
+ only(body, ["kind", "name", "description", "botId", "scopes"]);
92
+ const kind = enumeration(body.kind, "kind", ["app", "service_account"]);
93
+ const result = await integrations.createIntegration({
94
+ actorUserId: userId,
95
+ kind,
96
+ name: requiredString(body.name, "name", 200),
97
+ description: optionalString(body.description, "description", 2_000),
98
+ botId: optionalId(body.botId, "botId"),
99
+ scopes: scopes(body.scopes),
100
+ });
101
+ await notify(request, callbacks, result.change);
102
+ return reply.code(201).send({ integration: result.value, sync: result.change });
103
+ }
104
+ catch (error) {
105
+ return handled(reply, error) ?? Promise.reject(error);
106
+ }
107
+ });
108
+ app.post("/v0/admin/integrations/:integrationId/revokeIntegration", async (request, reply) => {
109
+ const userId = await actor(auth, request, reply);
110
+ if (!userId)
111
+ return;
112
+ try {
113
+ emptyBody(request.body);
114
+ const change = await integrations.revokeIntegration(userId, routeId(request, "integrationId"));
115
+ await notify(request, callbacks, change);
116
+ return { revoked: true, sync: change };
117
+ }
118
+ catch (error) {
119
+ return handled(reply, error) ?? Promise.reject(error);
120
+ }
121
+ });
122
+ app.get("/v0/admin/integrations/:integrationId/credentials", async (request, reply) => {
123
+ const userId = await actor(auth, request, reply);
124
+ if (!userId)
125
+ return;
126
+ try {
127
+ return {
128
+ credentials: await integrations.listApiCredentials(userId, routeId(request, "integrationId")),
129
+ };
130
+ }
131
+ catch (error) {
132
+ return handled(reply, error) ?? Promise.reject(error);
133
+ }
134
+ });
135
+ app.post("/v0/admin/integrations/:integrationId/createCredential", async (request, reply) => {
136
+ const userId = await actor(auth, request, reply);
137
+ if (!userId)
138
+ return;
139
+ try {
140
+ rejectIdempotencyForSecretIssuance(request);
141
+ const body = object(request.body);
142
+ only(body, ["name", "scopes", "expiresAt"]);
143
+ const credential = await integrations.createApiCredential({
144
+ actorUserId: userId,
145
+ integrationId: routeId(request, "integrationId"),
146
+ name: requiredString(body.name, "name", 200),
147
+ scopes: body.scopes === undefined ? undefined : scopes(body.scopes),
148
+ expiresAt: optionalDate(body.expiresAt, "expiresAt"),
149
+ });
150
+ return reply.code(201).send(credential);
151
+ }
152
+ catch (error) {
153
+ return handled(reply, error) ?? Promise.reject(error);
154
+ }
155
+ });
156
+ app.post("/v0/admin/credentials/:credentialId/revokeCredential", async (request, reply) => {
157
+ const userId = await actor(auth, request, reply);
158
+ if (!userId)
159
+ return;
160
+ try {
161
+ emptyBody(request.body);
162
+ await integrations.revokeApiCredential(userId, routeId(request, "credentialId"));
163
+ return { revoked: true };
164
+ }
165
+ catch (error) {
166
+ return handled(reply, error) ?? Promise.reject(error);
167
+ }
168
+ });
169
+ app.post("/v0/admin/integrations/createIncomingWebhook", async (request, reply) => {
170
+ const userId = await actor(auth, request, reply);
171
+ if (!userId)
172
+ return;
173
+ try {
174
+ rejectIdempotencyForSecretIssuance(request);
175
+ const body = object(request.body);
176
+ only(body, ["name", "description", "botId", "chatId"]);
177
+ const result = await integrations.createIncomingWebhook({
178
+ actorUserId: userId,
179
+ name: requiredString(body.name, "name", 200),
180
+ description: optionalString(body.description, "description", 2_000),
181
+ botId: id(body.botId, "botId"),
182
+ chatId: id(body.chatId, "chatId"),
183
+ });
184
+ await notify(request, callbacks, result.change);
185
+ return reply.code(201).send({ ...result.value, sync: result.change });
186
+ }
187
+ catch (error) {
188
+ return handled(reply, error) ?? Promise.reject(error);
189
+ }
190
+ });
191
+ app.post("/v0/admin/integrations/createOutgoingWebhook", async (request, reply) => {
192
+ const userId = await actor(auth, request, reply);
193
+ if (!userId)
194
+ return;
195
+ try {
196
+ rejectIdempotencyForSecretIssuance(request);
197
+ const body = object(request.body);
198
+ only(body, ["name", "description", "url", "eventTypes", "chatId"]);
199
+ const result = await integrations.createOutgoingWebhook({
200
+ actorUserId: userId,
201
+ name: requiredString(body.name, "name", 200),
202
+ description: optionalString(body.description, "description", 2_000),
203
+ url: requiredString(body.url, "url", 2_048),
204
+ eventTypes: stringArray(body.eventTypes, "eventTypes", 50, 128),
205
+ chatId: optionalId(body.chatId, "chatId"),
206
+ });
207
+ await notify(request, callbacks, result.change);
208
+ return reply.code(201).send({ ...result.value, sync: result.change });
209
+ }
210
+ catch (error) {
211
+ return handled(reply, error) ?? Promise.reject(error);
212
+ }
213
+ });
214
+ app.get("/v0/admin/integrations/:integrationId/webhookSubscriptions", async (request, reply) => {
215
+ const userId = await actor(auth, request, reply);
216
+ if (!userId)
217
+ return;
218
+ try {
219
+ return {
220
+ subscriptions: await integrations.listWebhookSubscriptions(userId, routeId(request, "integrationId")),
221
+ };
222
+ }
223
+ catch (error) {
224
+ return handled(reply, error) ?? Promise.reject(error);
225
+ }
226
+ });
227
+ app.get("/v0/admin/integrations/:integrationId/webhookDeliveries", async (request, reply) => {
228
+ const userId = await actor(auth, request, reply);
229
+ if (!userId)
230
+ return;
231
+ try {
232
+ return {
233
+ deliveries: await integrations.listWebhookDeliveries(userId, routeId(request, "integrationId"), queryLimit(request)),
234
+ };
235
+ }
236
+ catch (error) {
237
+ return handled(reply, error) ?? Promise.reject(error);
238
+ }
239
+ });
240
+ app.post("/v0/admin/integrations/createSlashCommand", async (request, reply) => {
241
+ const userId = await actor(auth, request, reply);
242
+ if (!userId)
243
+ return;
244
+ try {
245
+ rejectIdempotencyForSecretIssuance(request);
246
+ const body = object(request.body);
247
+ only(body, ["name", "description", "command", "usageHint", "handlerUrl", "botId"]);
248
+ const result = await integrations.createSlashCommand({
249
+ actorUserId: userId,
250
+ name: requiredString(body.name, "name", 200),
251
+ description: optionalString(body.description, "description", 500),
252
+ command: requiredString(body.command, "command", 65),
253
+ usageHint: optionalString(body.usageHint, "usageHint", 500),
254
+ handlerUrl: requiredString(body.handlerUrl, "handlerUrl", 2_048),
255
+ botId: optionalId(body.botId, "botId"),
256
+ });
257
+ await notify(request, callbacks, result.change);
258
+ return reply.code(201).send({ ...result.value, sync: result.change });
259
+ }
260
+ catch (error) {
261
+ return handled(reply, error) ?? Promise.reject(error);
262
+ }
263
+ });
264
+ app.get("/v0/slashCommands", async (request, reply) => {
265
+ const userId = await actor(auth, request, reply);
266
+ if (!userId)
267
+ return;
268
+ try {
269
+ return { commands: await integrations.listSlashCommands(userId) };
270
+ }
271
+ catch (error) {
272
+ return handled(reply, error) ?? Promise.reject(error);
273
+ }
274
+ });
275
+ app.post("/v0/slashCommands/invoke", async (request, reply) => {
276
+ const userId = await actor(auth, request, reply);
277
+ if (!userId)
278
+ return;
279
+ try {
280
+ const body = object(request.body);
281
+ only(body, ["chatId", "command", "text"]);
282
+ const delivery = await integrations.invokeSlashCommand({
283
+ actorUserId: userId,
284
+ chatId: id(body.chatId, "chatId"),
285
+ command: requiredString(body.command, "command", 65),
286
+ text: optionalString(body.text, "text", 20_000),
287
+ });
288
+ return reply.code(202).send({ delivery });
289
+ }
290
+ catch (error) {
291
+ return handled(reply, error) ?? Promise.reject(error);
292
+ }
293
+ });
294
+ app.post("/v0/integrations/incomingWebhook", async (request, reply) => {
295
+ try {
296
+ const body = object(request.body);
297
+ only(body, ["text"]);
298
+ const result = await integrations.invokeIncomingWebhook(incomingWebhookToken(request), requiredString(body.text, "text", 40_000, false), callbacks.incomingWebhook, incomingIdempotencyKey(request));
299
+ return reply.code(201).send(result);
300
+ }
301
+ catch (error) {
302
+ return handled(reply, error) ?? Promise.reject(error);
303
+ }
304
+ });
305
+ app.post("/v0/integrations/sendMessage", async (request, reply) => {
306
+ try {
307
+ const credential = await integrations.authenticateApiCredential(bearerToken(request), [
308
+ "messages:write",
309
+ ]);
310
+ if (!credential)
311
+ throw new IntegrationError("unauthorized", "API credential is invalid");
312
+ if (!credential.botId)
313
+ throw new IntegrationError("forbidden", "Integration must have an active bot to send messages");
314
+ const body = object(request.body);
315
+ only(body, ["chatId", "text", "attachmentFileIds"]);
316
+ const text = optionalString(body.text, "text", 40_000) ?? "";
317
+ const attachmentFileIds = body.attachmentFileIds === undefined
318
+ ? []
319
+ : stringArray(body.attachmentFileIds, "attachmentFileIds", 20, MAX_ID);
320
+ if (!text.trim() && attachmentFileIds.length === 0)
321
+ throw new RequestError("A message requires text or an attachment");
322
+ const result = await callbacks.incomingWebhook.sendMessage({
323
+ actorUserId: credential.actorUserId,
324
+ integrationId: credential.integrationId,
325
+ subscriptionId: `api:${credential.credentialId}`,
326
+ botId: credential.botId,
327
+ chatId: id(body.chatId, "chatId"),
328
+ text,
329
+ attachmentFileIds,
330
+ idempotencyKey: incomingIdempotencyKey(request),
331
+ });
332
+ return reply.code(201).send(result);
333
+ }
334
+ catch (error) {
335
+ return handled(reply, error) ?? Promise.reject(error);
336
+ }
337
+ });
338
+ }
339
+ async function actor(auth, request, reply) {
340
+ const current = await auth.authenticate(request);
341
+ if (!current) {
342
+ reply.code(401).send({ error: "unauthorized" });
343
+ return undefined;
344
+ }
345
+ return current.user.id;
346
+ }
347
+ async function notify(request, callbacks, change) {
348
+ if (!callbacks.onChange)
349
+ return;
350
+ try {
351
+ await callbacks.onChange(change);
352
+ }
353
+ catch (error) {
354
+ request.log.error(error, "Could not publish integration change");
355
+ }
356
+ }
357
+ function handled(reply, error) {
358
+ if (error instanceof RequestError)
359
+ return reply.code(400).send({ error: "invalid_request", message: error.message });
360
+ if (!(error instanceof IntegrationError))
361
+ return undefined;
362
+ const status = {
363
+ invalid: 400,
364
+ unauthorized: 401,
365
+ forbidden: 403,
366
+ not_found: 404,
367
+ conflict: 409,
368
+ }[error.code];
369
+ return reply.code(status).send({ error: error.code, message: error.message });
370
+ }
371
+ function object(value) {
372
+ if (!value || typeof value !== "object" || Array.isArray(value))
373
+ throw new RequestError("Request body must be an object");
374
+ return value;
375
+ }
376
+ function only(body, allowed) {
377
+ const unexpected = Object.keys(body).find((key) => !allowed.includes(key));
378
+ if (unexpected)
379
+ throw new RequestError(`Unexpected request field: ${unexpected}`);
380
+ }
381
+ function emptyBody(value) {
382
+ if (value === undefined || value === null)
383
+ return;
384
+ const body = object(value);
385
+ if (Object.keys(body).length)
386
+ throw new RequestError("Request body must be empty");
387
+ }
388
+ function routeId(request, key) {
389
+ return id(request.params[key], key);
390
+ }
391
+ function id(value, name) {
392
+ if (typeof value !== "string" || !value || value.length > MAX_ID || value.trim() !== value)
393
+ throw new RequestError(`${name} must be a valid identifier`);
394
+ return value;
395
+ }
396
+ function optionalId(value, name) {
397
+ return value === undefined ? undefined : id(value, name);
398
+ }
399
+ function nullableId(value, name) {
400
+ return value === null ? null : optionalId(value, name);
401
+ }
402
+ function requiredString(value, name, maximum, trim = true) {
403
+ if (typeof value !== "string" || value.length > maximum)
404
+ throw new RequestError(`${name} must be a string of at most ${maximum} characters`);
405
+ const result = trim ? value.trim() : value;
406
+ if (!result.trim())
407
+ throw new RequestError(`${name} is required`);
408
+ return result;
409
+ }
410
+ function optionalString(value, name, maximum) {
411
+ if (value === undefined)
412
+ return undefined;
413
+ if (typeof value !== "string" || value.length > maximum)
414
+ throw new RequestError(`${name} must be a string of at most ${maximum} characters`);
415
+ return value;
416
+ }
417
+ function nullableString(value, name, maximum) {
418
+ return value === null ? null : optionalString(value, name, maximum);
419
+ }
420
+ function optionalDate(value, name) {
421
+ if (value === undefined)
422
+ return undefined;
423
+ if (typeof value !== "string" || !Number.isFinite(Date.parse(value)))
424
+ throw new RequestError(`${name} must be an ISO date-time`);
425
+ return new Date(value).toISOString();
426
+ }
427
+ function stringArray(value, name, maximum, itemMaximum) {
428
+ if (!Array.isArray(value) ||
429
+ value.length > maximum ||
430
+ value.some((item) => typeof item !== "string" || item.length > itemMaximum))
431
+ throw new RequestError(`${name} must contain at most ${maximum} strings`);
432
+ return value;
433
+ }
434
+ function scopes(value) {
435
+ const values = stringArray(value, "scopes", integrationScopes.length, 64);
436
+ if (values.some((scope) => !integrationScopes.includes(scope)))
437
+ throw new RequestError("scopes contains an unsupported scope");
438
+ if (new Set(values).size !== values.length)
439
+ throw new RequestError("scopes must not contain duplicates");
440
+ return values;
441
+ }
442
+ function enumeration(value, name, values) {
443
+ if (typeof value !== "string" || !values.includes(value))
444
+ throw new RequestError(`${name} must be one of: ${values.join(", ")}`);
445
+ return value;
446
+ }
447
+ function queryLimit(request) {
448
+ const value = request.query.limit;
449
+ if (value === undefined)
450
+ return 100;
451
+ const parsed = typeof value === "string" && /^\d+$/.test(value) ? Number(value) : Number.NaN;
452
+ if (!Number.isSafeInteger(parsed) || parsed < 1 || parsed > 200)
453
+ throw new RequestError("limit must be an integer between 1 and 200");
454
+ return parsed;
455
+ }
456
+ function incomingWebhookToken(request) {
457
+ const value = request.headers["x-happy2-webhook-token"];
458
+ if (typeof value !== "string" || !value)
459
+ throw new IntegrationError("unauthorized", "Incoming webhook token is invalid");
460
+ return value;
461
+ }
462
+ function bearerToken(request) {
463
+ const value = request.headers.authorization;
464
+ const match = typeof value === "string" ? /^Bearer ([^\s]+)$/.exec(value) : null;
465
+ if (!match)
466
+ throw new IntegrationError("unauthorized", "API credential is invalid");
467
+ return match[1];
468
+ }
469
+ function incomingIdempotencyKey(request) {
470
+ const value = request.headers["idempotency-key"];
471
+ if (value === undefined)
472
+ return undefined;
473
+ if (typeof value !== "string" ||
474
+ value.length === 0 ||
475
+ value.length > 200 ||
476
+ !/^[\x21-\x7e]+$/.test(value))
477
+ throw new RequestError("Idempotency-Key must contain 1-200 visible ASCII characters");
478
+ return value;
479
+ }
480
+ function rejectIdempotencyForSecretIssuance(request) {
481
+ if (request.headers["idempotency-key"] !== undefined)
482
+ throw new RequestError("Idempotency-Key is not accepted when a one-time secret is issued");
483
+ }
484
+ class RequestError extends Error {
485
+ }
486
+ //# sourceMappingURL=integrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrations.js","sourceRoot":"","sources":["../../sources/routes/integrations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { FastifyInstance } from "fastify";
2
+ import type { AuthService } from "../modules/auth/service.js";
3
+ import type { OperationsRepository } from "../modules/operations/repository.js";
4
+ export declare function registerOperationsRoutes(app: FastifyInstance, auth: AuthService, repository: OperationsRepository): void;
5
+ //# sourceMappingURL=operations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../sources/routes/operations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAiBhF,wBAAgB,wBAAwB,CACpC,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,WAAW,EACjB,UAAU,EAAE,oBAAoB,GACjC,IAAI,CAidN"}