@shepai/cli 1.122.2-pr367.fdba557 → 1.122.2-pr381.078d7df

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 (383) hide show
  1. package/dist/packages/core/src/application/ports/output/services/index.d.ts +0 -2
  2. package/dist/packages/core/src/application/ports/output/services/index.d.ts.map +1 -1
  3. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  4. package/dist/packages/core/src/infrastructure/di/container.js +0 -14
  5. package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-factory.service.js +1 -1
  6. package/dist/packages/core/src/infrastructure/services/agents/common/executors/cursor-executor.service.d.ts +28 -8
  7. package/dist/packages/core/src/infrastructure/services/agents/common/executors/cursor-executor.service.d.ts.map +1 -1
  8. package/dist/packages/core/src/infrastructure/services/agents/common/executors/cursor-executor.service.js +211 -29
  9. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -1
  10. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +9 -0
  11. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.d.ts +5 -0
  12. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.d.ts.map +1 -1
  13. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.js +82 -54
  14. package/dist/src/presentation/cli/commands/ui.command.d.ts.map +1 -1
  15. package/dist/src/presentation/cli/commands/ui.command.js +0 -15
  16. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.d.ts.map +1 -1
  17. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.js +2 -2
  18. package/dist/src/presentation/web/dev-server.js +0 -20
  19. package/dist/tsconfig.build.tsbuildinfo +1 -1
  20. package/package.json +1 -3
  21. package/web/.next/BUILD_ID +1 -1
  22. package/web/.next/app-path-routes-manifest.json +1 -5
  23. package/web/.next/build-manifest.json +6 -6
  24. package/web/.next/fallback-build-manifest.json +2 -2
  25. package/web/.next/prerender-manifest.json +3 -3
  26. package/web/.next/required-server-files.js +1 -1
  27. package/web/.next/required-server-files.json +1 -1
  28. package/web/.next/routes-manifest.json +0 -24
  29. package/web/.next/server/app/(dashboard)/@drawer/create/page/build-manifest.json +4 -4
  30. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +22 -22
  31. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
  32. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  33. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  34. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/build-manifest.json +4 -4
  35. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +28 -28
  36. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +1 -1
  37. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  38. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  39. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/build-manifest.json +4 -4
  40. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +28 -28
  41. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -1
  42. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  43. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  44. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/build-manifest.json +4 -4
  45. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +20 -20
  46. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
  47. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  48. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  49. package/web/.next/server/app/(dashboard)/create/page/build-manifest.json +4 -4
  50. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +22 -22
  51. package/web/.next/server/app/(dashboard)/create/page.js +1 -1
  52. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  53. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  54. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/build-manifest.json +4 -4
  55. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +28 -28
  56. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +1 -1
  57. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  58. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  59. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/build-manifest.json +4 -4
  60. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +28 -28
  61. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -1
  62. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  63. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  64. package/web/.next/server/app/(dashboard)/page/build-manifest.json +4 -4
  65. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +20 -20
  66. package/web/.next/server/app/(dashboard)/page.js +1 -1
  67. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  68. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  69. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/build-manifest.json +4 -4
  70. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +20 -20
  71. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
  72. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  73. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  74. package/web/.next/server/app/_global-error/page/build-manifest.json +4 -4
  75. package/web/.next/server/app/_global-error.html +2 -2
  76. package/web/.next/server/app/_global-error.rsc +1 -1
  77. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  78. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  79. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  80. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  81. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  82. package/web/.next/server/app/_not-found/page/build-manifest.json +4 -4
  83. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  84. package/web/.next/server/app/_not-found/page.js +1 -1
  85. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  86. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  87. package/web/.next/server/app/api/attachments/preview/route.js +1 -1
  88. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  89. package/web/.next/server/app/api/evidence/route.js +1 -1
  90. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  91. package/web/.next/server/app/api/graph-data/route.js +1 -1
  92. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  93. package/web/.next/server/app/settings/page/build-manifest.json +4 -4
  94. package/web/.next/server/app/settings/page/server-reference-manifest.json +6 -6
  95. package/web/.next/server/app/settings/page.js +1 -1
  96. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  97. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  98. package/web/.next/server/app/skills/page/build-manifest.json +4 -4
  99. package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  100. package/web/.next/server/app/skills/page.js +1 -1
  101. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  102. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  103. package/web/.next/server/app/tools/page/build-manifest.json +4 -4
  104. package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  105. package/web/.next/server/app/tools/page.js +1 -1
  106. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  107. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  108. package/web/.next/server/app/version/page/build-manifest.json +4 -4
  109. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  110. package/web/.next/server/app/version/page.js +2 -2
  111. package/web/.next/server/app/version/page.js.nft.json +1 -1
  112. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  113. package/web/.next/server/app-paths-manifest.json +1 -5
  114. package/web/.next/server/chunks/{[root-of-the-server]__3baec744._.js → [root-of-the-server]__42b7ab55._.js} +2 -2
  115. package/web/.next/server/chunks/{[root-of-the-server]__3baec744._.js.map → [root-of-the-server]__42b7ab55._.js.map} +1 -1
  116. package/web/.next/server/chunks/{[root-of-the-server]__7d63f9a4._.js → [root-of-the-server]__53013576._.js} +2 -2
  117. package/web/.next/server/chunks/{[root-of-the-server]__a1c7c02a._.js → [root-of-the-server]__92078db6._.js} +2 -2
  118. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  119. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  120. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  121. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_f30d0343.js +1 -1
  122. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_f30d0343.js.map +1 -1
  123. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_9f1775bb.js +1 -1
  124. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_9f1775bb.js.map +1 -1
  125. package/web/.next/server/chunks/ssr/{[root-of-the-server]__12c2ab7d._.js → [root-of-the-server]__06fef644._.js} +2 -2
  126. package/web/.next/server/chunks/ssr/{[root-of-the-server]__12c2ab7d._.js.map → [root-of-the-server]__06fef644._.js.map} +1 -1
  127. package/web/.next/server/chunks/ssr/[root-of-the-server]__2698e9f4._.js +1 -1
  128. package/web/.next/server/chunks/ssr/[root-of-the-server]__2698e9f4._.js.map +1 -1
  129. package/web/.next/server/chunks/ssr/[root-of-the-server]__545792ab._.js +3 -0
  130. package/web/.next/server/chunks/ssr/[root-of-the-server]__545792ab._.js.map +1 -0
  131. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +4 -0
  132. package/web/.next/server/chunks/ssr/{[root-of-the-server]__11033878._.js.map → [root-of-the-server]__6b17a22d._.js.map} +1 -1
  133. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js +2 -2
  134. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js.map +1 -1
  135. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +4 -0
  136. package/web/.next/server/chunks/ssr/{[root-of-the-server]__fdc75809._.js.map → [root-of-the-server]__804c006d._.js.map} +1 -1
  137. package/web/.next/server/chunks/ssr/[root-of-the-server]__8c553503._.js +4 -0
  138. package/web/.next/server/chunks/ssr/{[root-of-the-server]__76915230._.js.map → [root-of-the-server]__8c553503._.js.map} +1 -1
  139. package/web/.next/server/chunks/ssr/[root-of-the-server]__8e3bf5d7._.js +1 -1
  140. package/web/.next/server/chunks/ssr/[root-of-the-server]__8e3bf5d7._.js.map +1 -1
  141. package/web/.next/server/chunks/ssr/[root-of-the-server]__9f155c0e._.js +3 -0
  142. package/web/.next/server/chunks/ssr/[root-of-the-server]__9f155c0e._.js.map +1 -0
  143. package/web/.next/server/chunks/ssr/[root-of-the-server]__a022445f._.js +4 -0
  144. package/web/.next/server/chunks/ssr/{[root-of-the-server]__7a939e4e._.js.map → [root-of-the-server]__a022445f._.js.map} +1 -1
  145. package/web/.next/server/chunks/ssr/[root-of-the-server]__a7de2711._.js +4 -0
  146. package/web/.next/server/chunks/ssr/{[root-of-the-server]__c4dc1b5a._.js.map → [root-of-the-server]__a7de2711._.js.map} +1 -1
  147. package/web/.next/server/chunks/ssr/[root-of-the-server]__c07f9f79._.js +1 -1
  148. package/web/.next/server/chunks/ssr/[root-of-the-server]__c07f9f79._.js.map +1 -1
  149. package/web/.next/server/chunks/ssr/[root-of-the-server]__c605a375._.js +1 -1
  150. package/web/.next/server/chunks/ssr/[root-of-the-server]__c605a375._.js.map +1 -1
  151. package/web/.next/server/chunks/ssr/_0dc2cfd3._.js +3 -0
  152. package/web/.next/server/chunks/ssr/_0dc2cfd3._.js.map +1 -0
  153. package/web/.next/server/chunks/ssr/_135edb9c._.js +1 -1
  154. package/web/.next/server/chunks/ssr/_135edb9c._.js.map +1 -1
  155. package/web/.next/server/chunks/ssr/{_3d1ed2a7._.js → _17418e9d._.js} +2 -2
  156. package/web/.next/server/chunks/ssr/_17418e9d._.js.map +1 -0
  157. package/web/.next/server/chunks/ssr/{node_modules__pnpm_747b43ac._.js → _1bb131c4._.js} +2 -2
  158. package/web/.next/server/chunks/ssr/_1bb131c4._.js.map +1 -0
  159. package/web/.next/server/chunks/ssr/_1bb79fe8._.js +3 -0
  160. package/web/.next/server/chunks/ssr/_1bb79fe8._.js.map +1 -0
  161. package/web/.next/server/chunks/ssr/_2f6f48b8._.js +1 -1
  162. package/web/.next/server/chunks/ssr/_2f6f48b8._.js.map +1 -1
  163. package/web/.next/server/chunks/ssr/_4f330b28._.js +3 -0
  164. package/web/.next/server/chunks/ssr/{_3eca2297._.js.map → _4f330b28._.js.map} +1 -1
  165. package/web/.next/server/chunks/ssr/_6d26a08f._.js +3 -0
  166. package/web/.next/server/chunks/ssr/_6d26a08f._.js.map +1 -0
  167. package/web/.next/server/chunks/ssr/_75f4ccb3._.js +3 -0
  168. package/web/.next/server/chunks/ssr/_75f4ccb3._.js.map +1 -0
  169. package/web/.next/server/chunks/ssr/_b5fc318a._.js +3 -0
  170. package/web/.next/server/chunks/ssr/_b5fc318a._.js.map +1 -0
  171. package/web/.next/server/chunks/ssr/_cc77a143._.js +1 -1
  172. package/web/.next/server/chunks/ssr/_cc77a143._.js.map +1 -1
  173. package/web/.next/server/chunks/ssr/_e87cf55c._.js +3 -0
  174. package/web/.next/server/chunks/ssr/_e87cf55c._.js.map +1 -0
  175. package/web/.next/server/chunks/ssr/_f1a649e3._.js +9 -0
  176. package/web/.next/server/chunks/ssr/_f1a649e3._.js.map +1 -0
  177. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  178. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  179. package/web/.next/server/chunks/ssr/node_modules__pnpm_b59e4b16._.js +3 -0
  180. package/web/.next/server/chunks/ssr/node_modules__pnpm_b59e4b16._.js.map +1 -0
  181. package/web/.next/server/chunks/ssr/src_presentation_web_5f039db1._.js +2 -2
  182. package/web/.next/server/chunks/ssr/src_presentation_web_5f039db1._.js.map +1 -1
  183. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_2a52b697.js +1 -1
  184. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_2a52b697.js.map +1 -1
  185. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js +1 -1
  186. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js.map +1 -1
  187. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js +1 -1
  188. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js.map +1 -1
  189. package/web/.next/server/chunks/ssr/src_presentation_web_c4337169._.js +2 -2
  190. package/web/.next/server/chunks/ssr/src_presentation_web_c4337169._.js.map +1 -1
  191. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +1 -1
  192. package/web/.next/server/chunks/ssr/src_presentation_web_components_bf50c527._.js +1 -1
  193. package/web/.next/server/chunks/ssr/src_presentation_web_components_de814675._.js +1 -1
  194. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  195. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  196. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  197. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  198. package/web/.next/server/middleware-build-manifest.js +4 -4
  199. package/web/.next/server/pages/500.html +2 -2
  200. package/web/.next/server/server-reference-manifest.js +1 -1
  201. package/web/.next/server/server-reference-manifest.json +35 -57
  202. package/web/.next/static/chunks/0d2af96e64960ef5.css +1 -0
  203. package/web/.next/static/chunks/303a1217006489b9.js +1 -0
  204. package/web/.next/static/chunks/{b747e59ebdcbd917.js → 3f8b6dfefdcdb086.js} +1 -1
  205. package/web/.next/static/chunks/4562ee849ea13c3a.js +1 -0
  206. package/web/.next/static/chunks/{e087f3e5c46c0756.js → 66f3b3e9ffbdd2e0.js} +1 -1
  207. package/web/.next/static/chunks/{98e3a7cf58fc912a.js → 672e3da3ad26005b.js} +1 -1
  208. package/web/.next/static/chunks/{c3c68de2392a9071.js → 6e519f34ef50afc7.js} +1 -1
  209. package/web/.next/static/chunks/7189532beb0a69ea.js +1 -0
  210. package/web/.next/static/chunks/845d8e58a91014e6.js +1 -0
  211. package/web/.next/static/chunks/84a181ff3270fd9f.js +1 -0
  212. package/web/.next/static/chunks/{3f0773d9b56e04a2.js → 8ace7cc9cdcc4faa.js} +2 -2
  213. package/web/.next/static/chunks/96eeeb28e06de78c.js +1 -0
  214. package/web/.next/static/chunks/cca0f5112a9260d8.js +1 -0
  215. package/web/.next/static/chunks/d193bfaaff210e81.js +11 -0
  216. package/web/.next/static/chunks/d6b6d7807302979b.js +1 -0
  217. package/web/.next/static/chunks/e2ef95d904c360f3.js +1 -0
  218. package/web/.next/static/chunks/{1b9d34af4064dafe.js → e359a6c4b3a3b222.js} +2 -2
  219. package/web/.next/static/chunks/ed3a602003bcb31b.js +1 -0
  220. package/web/.next/static/chunks/eef9532b80f3408a.js +1 -0
  221. package/web/.next/static/chunks/{293ccfbe777d995a.js → f2e7c03fc48a915d.js} +1 -1
  222. package/web/.next/static/chunks/{turbopack-b1685b5f87ad1d60.js → turbopack-426d9bc2450816ba.js} +1 -1
  223. package/dist/packages/core/src/application/ports/output/services/tunnel-service.interface.d.ts +0 -41
  224. package/dist/packages/core/src/application/ports/output/services/tunnel-service.interface.d.ts.map +0 -1
  225. package/dist/packages/core/src/application/ports/output/services/tunnel-service.interface.js +0 -14
  226. package/dist/packages/core/src/application/ports/output/services/webhook-service.interface.d.ts +0 -65
  227. package/dist/packages/core/src/application/ports/output/services/webhook-service.interface.d.ts.map +0 -1
  228. package/dist/packages/core/src/application/ports/output/services/webhook-service.interface.js +0 -10
  229. package/dist/packages/core/src/infrastructure/services/tunnel/cloudflare-tunnel.service.d.ts +0 -55
  230. package/dist/packages/core/src/infrastructure/services/tunnel/cloudflare-tunnel.service.d.ts.map +0 -1
  231. package/dist/packages/core/src/infrastructure/services/tunnel/cloudflare-tunnel.service.js +0 -203
  232. package/dist/packages/core/src/infrastructure/services/webhook/github-webhook.service.d.ts +0 -75
  233. package/dist/packages/core/src/infrastructure/services/webhook/github-webhook.service.d.ts.map +0 -1
  234. package/dist/packages/core/src/infrastructure/services/webhook/github-webhook.service.js +0 -372
  235. package/dist/packages/core/src/infrastructure/services/webhook/webhook-manager.service.d.ts +0 -82
  236. package/dist/packages/core/src/infrastructure/services/webhook/webhook-manager.service.d.ts.map +0 -1
  237. package/dist/packages/core/src/infrastructure/services/webhook/webhook-manager.service.js +0 -206
  238. package/dist/src/presentation/web/app/actions/load-webhook-status.d.ts +0 -3
  239. package/dist/src/presentation/web/app/actions/load-webhook-status.d.ts.map +0 -1
  240. package/dist/src/presentation/web/app/actions/load-webhook-status.js +0 -19
  241. package/dist/src/presentation/web/app/api/webhooks/deliveries/route.d.ts +0 -9
  242. package/dist/src/presentation/web/app/api/webhooks/deliveries/route.d.ts.map +0 -1
  243. package/dist/src/presentation/web/app/api/webhooks/deliveries/route.js +0 -27
  244. package/dist/src/presentation/web/app/api/webhooks/github/route.d.ts +0 -17
  245. package/dist/src/presentation/web/app/api/webhooks/github/route.d.ts.map +0 -1
  246. package/dist/src/presentation/web/app/api/webhooks/github/route.js +0 -70
  247. package/dist/src/presentation/web/app/api/webhooks/status/route.d.ts +0 -9
  248. package/dist/src/presentation/web/app/api/webhooks/status/route.d.ts.map +0 -1
  249. package/dist/src/presentation/web/app/api/webhooks/status/route.js +0 -26
  250. package/dist/src/presentation/web/app/webhooks/page.d.ts +0 -4
  251. package/dist/src/presentation/web/app/webhooks/page.d.ts.map +0 -1
  252. package/dist/src/presentation/web/app/webhooks/page.js +0 -9
  253. package/dist/src/presentation/web/components/features/webhooks/types.d.ts +0 -32
  254. package/dist/src/presentation/web/components/features/webhooks/types.d.ts.map +0 -1
  255. package/dist/src/presentation/web/components/features/webhooks/types.js +0 -1
  256. package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.d.ts +0 -6
  257. package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.d.ts.map +0 -1
  258. package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.js +0 -38
  259. package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.stories.d.ts +0 -9
  260. package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.stories.d.ts.map +0 -1
  261. package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.stories.js +0 -69
  262. package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.d.ts +0 -7
  263. package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.d.ts.map +0 -1
  264. package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.js +0 -11
  265. package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.stories.d.ts +0 -9
  266. package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.stories.d.ts.map +0 -1
  267. package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.stories.js +0 -31
  268. package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.d.ts +0 -6
  269. package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.d.ts.map +0 -1
  270. package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.js +0 -21
  271. package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.stories.d.ts +0 -9
  272. package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.stories.d.ts.map +0 -1
  273. package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.stories.js +0 -56
  274. package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.d.ts +0 -6
  275. package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.d.ts.map +0 -1
  276. package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.js +0 -39
  277. package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.stories.d.ts +0 -8
  278. package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.stories.d.ts.map +0 -1
  279. package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.stories.js +0 -59
  280. package/web/.next/server/app/api/webhooks/deliveries/route/app-paths-manifest.json +0 -3
  281. package/web/.next/server/app/api/webhooks/deliveries/route/build-manifest.json +0 -11
  282. package/web/.next/server/app/api/webhooks/deliveries/route/server-reference-manifest.json +0 -4
  283. package/web/.next/server/app/api/webhooks/deliveries/route.js +0 -6
  284. package/web/.next/server/app/api/webhooks/deliveries/route.js.map +0 -5
  285. package/web/.next/server/app/api/webhooks/deliveries/route.js.nft.json +0 -1
  286. package/web/.next/server/app/api/webhooks/deliveries/route_client-reference-manifest.js +0 -2
  287. package/web/.next/server/app/api/webhooks/github/route/app-paths-manifest.json +0 -3
  288. package/web/.next/server/app/api/webhooks/github/route/build-manifest.json +0 -11
  289. package/web/.next/server/app/api/webhooks/github/route/server-reference-manifest.json +0 -4
  290. package/web/.next/server/app/api/webhooks/github/route.js +0 -6
  291. package/web/.next/server/app/api/webhooks/github/route.js.map +0 -5
  292. package/web/.next/server/app/api/webhooks/github/route.js.nft.json +0 -1
  293. package/web/.next/server/app/api/webhooks/github/route_client-reference-manifest.js +0 -2
  294. package/web/.next/server/app/api/webhooks/status/route/app-paths-manifest.json +0 -3
  295. package/web/.next/server/app/api/webhooks/status/route/build-manifest.json +0 -11
  296. package/web/.next/server/app/api/webhooks/status/route/server-reference-manifest.json +0 -4
  297. package/web/.next/server/app/api/webhooks/status/route.js +0 -6
  298. package/web/.next/server/app/api/webhooks/status/route.js.map +0 -5
  299. package/web/.next/server/app/api/webhooks/status/route.js.nft.json +0 -1
  300. package/web/.next/server/app/api/webhooks/status/route_client-reference-manifest.js +0 -2
  301. package/web/.next/server/app/webhooks/page/app-paths-manifest.json +0 -3
  302. package/web/.next/server/app/webhooks/page/build-manifest.json +0 -18
  303. package/web/.next/server/app/webhooks/page/next-font-manifest.json +0 -6
  304. package/web/.next/server/app/webhooks/page/react-loadable-manifest.json +0 -1
  305. package/web/.next/server/app/webhooks/page/server-reference-manifest.json +0 -35
  306. package/web/.next/server/app/webhooks/page.js +0 -16
  307. package/web/.next/server/app/webhooks/page.js.map +0 -5
  308. package/web/.next/server/app/webhooks/page.js.nft.json +0 -1
  309. package/web/.next/server/app/webhooks/page_client-reference-manifest.js +0 -2
  310. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_deliveries_route_actions_d9e34c8d.js +0 -3
  311. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_deliveries_route_actions_d9e34c8d.js.map +0 -1
  312. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_github_route_actions_1b0d0c38.js +0 -3
  313. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_github_route_actions_1b0d0c38.js.map +0 -1
  314. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_status_route_actions_1a0d86a1.js +0 -3
  315. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_status_route_actions_1a0d86a1.js.map +0 -1
  316. package/web/.next/server/chunks/[root-of-the-server]__15e5d45c._.js +0 -3
  317. package/web/.next/server/chunks/[root-of-the-server]__15e5d45c._.js.map +0 -1
  318. package/web/.next/server/chunks/[root-of-the-server]__23be381e._.js +0 -3
  319. package/web/.next/server/chunks/[root-of-the-server]__23be381e._.js.map +0 -1
  320. package/web/.next/server/chunks/[root-of-the-server]__9fc760c0._.js +0 -3
  321. package/web/.next/server/chunks/[root-of-the-server]__9fc760c0._.js.map +0 -1
  322. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_activity_22f9667f.js +0 -3
  323. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_activity_22f9667f.js.map +0 -1
  324. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_rocket_1575cd4d.js +0 -3
  325. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_rocket_1575cd4d.js.map +0 -1
  326. package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js +0 -4
  327. package/web/.next/server/chunks/ssr/[root-of-the-server]__3c16bf85._.js +0 -3
  328. package/web/.next/server/chunks/ssr/[root-of-the-server]__3c16bf85._.js.map +0 -1
  329. package/web/.next/server/chunks/ssr/[root-of-the-server]__610f06df._.js +0 -3
  330. package/web/.next/server/chunks/ssr/[root-of-the-server]__610f06df._.js.map +0 -1
  331. package/web/.next/server/chunks/ssr/[root-of-the-server]__76915230._.js +0 -4
  332. package/web/.next/server/chunks/ssr/[root-of-the-server]__7a939e4e._.js +0 -4
  333. package/web/.next/server/chunks/ssr/[root-of-the-server]__87a7ae30._.js +0 -3
  334. package/web/.next/server/chunks/ssr/[root-of-the-server]__87a7ae30._.js.map +0 -1
  335. package/web/.next/server/chunks/ssr/[root-of-the-server]__920dccd5._.js +0 -4
  336. package/web/.next/server/chunks/ssr/[root-of-the-server]__920dccd5._.js.map +0 -1
  337. package/web/.next/server/chunks/ssr/[root-of-the-server]__c4dc1b5a._.js +0 -4
  338. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js +0 -4
  339. package/web/.next/server/chunks/ssr/_07f57bd0._.js +0 -3
  340. package/web/.next/server/chunks/ssr/_07f57bd0._.js.map +0 -1
  341. package/web/.next/server/chunks/ssr/_15a756dd._.js +0 -3
  342. package/web/.next/server/chunks/ssr/_15a756dd._.js.map +0 -1
  343. package/web/.next/server/chunks/ssr/_26b2c311._.js +0 -3
  344. package/web/.next/server/chunks/ssr/_26b2c311._.js.map +0 -1
  345. package/web/.next/server/chunks/ssr/_3d1ed2a7._.js.map +0 -1
  346. package/web/.next/server/chunks/ssr/_3eca2297._.js +0 -3
  347. package/web/.next/server/chunks/ssr/_4470c218._.js +0 -3
  348. package/web/.next/server/chunks/ssr/_4470c218._.js.map +0 -1
  349. package/web/.next/server/chunks/ssr/_462cc3a6._.js +0 -3
  350. package/web/.next/server/chunks/ssr/_462cc3a6._.js.map +0 -1
  351. package/web/.next/server/chunks/ssr/_961cb4b2._.js +0 -3
  352. package/web/.next/server/chunks/ssr/_961cb4b2._.js.map +0 -1
  353. package/web/.next/server/chunks/ssr/_a4899a76._.js +0 -3
  354. package/web/.next/server/chunks/ssr/_a4899a76._.js.map +0 -1
  355. package/web/.next/server/chunks/ssr/_b5babdfc._.js +0 -9
  356. package/web/.next/server/chunks/ssr/_b5babdfc._.js.map +0 -1
  357. package/web/.next/server/chunks/ssr/_b7eb93fc._.js +0 -4
  358. package/web/.next/server/chunks/ssr/_b7eb93fc._.js.map +0 -1
  359. package/web/.next/server/chunks/ssr/_f8b36e2c._.js +0 -3
  360. package/web/.next/server/chunks/ssr/_f8b36e2c._.js.map +0 -1
  361. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_webhooks_webhooks-page-client_tsx_b2662ea3._.js +0 -3
  362. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_webhooks_webhooks-page-client_tsx_b2662ea3._.js.map +0 -1
  363. package/web/.next/server/chunks/ssr/node_modules__pnpm_747b43ac._.js.map +0 -1
  364. package/web/.next/static/chunks/0c76de69325ef923.js +0 -1
  365. package/web/.next/static/chunks/3835a408dbf8d0bb.js +0 -1
  366. package/web/.next/static/chunks/40b6bcf1a2de4a0f.js +0 -1
  367. package/web/.next/static/chunks/4c5b31a2c65d4aa5.js +0 -11
  368. package/web/.next/static/chunks/59a0709f1b080353.js +0 -1
  369. package/web/.next/static/chunks/5f6161ceb4263319.js +0 -1
  370. package/web/.next/static/chunks/77ff1b7b725b7780.js +0 -1
  371. package/web/.next/static/chunks/9af45e885bd4ccef.js +0 -1
  372. package/web/.next/static/chunks/a57dc2afcf67304a.js +0 -1
  373. package/web/.next/static/chunks/b4f502a76ba10e4b.js +0 -1
  374. package/web/.next/static/chunks/b5d8e8100e310d9f.css +0 -1
  375. package/web/.next/static/chunks/c04ce6760f349f3e.js +0 -1
  376. package/web/.next/static/chunks/c7e793951b20a67f.js +0 -1
  377. package/web/.next/static/chunks/cf30e300568abf0f.js +0 -1
  378. package/web/.next/static/chunks/d43dff89384fb60a.js +0 -1
  379. /package/web/.next/server/chunks/{[root-of-the-server]__7d63f9a4._.js.map → [root-of-the-server]__53013576._.js.map} +0 -0
  380. /package/web/.next/server/chunks/{[root-of-the-server]__a1c7c02a._.js.map → [root-of-the-server]__92078db6._.js.map} +0 -0
  381. /package/web/.next/static/{svtG6xX1MdaGWkml8eX53 → 6DN4JYeWRmWsCZEUT6dAY}/_buildManifest.js +0 -0
  382. /package/web/.next/static/{svtG6xX1MdaGWkml8eX53 → 6DN4JYeWRmWsCZEUT6dAY}/_clientMiddlewareManifest.json +0 -0
  383. /package/web/.next/static/{svtG6xX1MdaGWkml8eX53 → 6DN4JYeWRmWsCZEUT6dAY}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,{otherChunks:["static/chunks/40b6bcf1a2de4a0f.js","static/chunks/c7e793951b20a67f.js","static/chunks/4b6cc9f65260f2bd.js","static/chunks/cfe4dc9904fcfddb.js","static/chunks/d4d8f0a137bd2eb4.js"],runtimeModuleIds:[80535]}]),(()=>{let e;if(!Array.isArray(globalThis.TURBOPACK))return;let t="/_next/",r=(self.TURBOPACK_CHUNK_SUFFIX??document?.currentScript?.getAttribute?.("src")?.replace(/^(.*(?=\?)|^.*$)/,""))||"",n=new WeakMap;function o(e,t){this.m=e,this.e=t}let l=o.prototype,i=Object.prototype.hasOwnProperty,s="u">typeof Symbol&&Symbol.toStringTag;function u(e,t,r){i.call(e,t)||Object.defineProperty(e,t,r)}function c(e,t){let r=e[t];return r||(r=a(t),e[t]=r),r}function a(e){return{exports:{},error:void 0,id:e,namespaceObject:void 0}}function f(e,t){u(e,"__esModule",{value:!0}),s&&u(e,s,{value:"Module"});let r=0;for(;r<t.length;){let n=t[r++],o=t[r++];if("number"==typeof o)if(0===o)u(e,n,{value:t[r++],enumerable:!0,writable:!1});else throw Error(`unexpected tag: ${o}`);else"function"==typeof t[r]?u(e,n,{get:o,set:t[r++],enumerable:!0}):u(e,n,{get:o,enumerable:!0})}Object.seal(e)}l.s=function(e,t){let r,n;null!=t?n=(r=c(this.c,t)).exports:(r=this.m,n=this.e),r.namespaceObject=n,f(n,e)},l.j=function(e,t){var r,o;let l,s,u;null!=t?s=(l=c(this.c,t)).exports:(l=this.m,s=this.e);let a=(r=l,o=s,(u=n.get(r))||(n.set(r,u=[]),r.exports=r.namespaceObject=new Proxy(o,{get(e,t){if(i.call(e,t)||"default"===t||"__esModule"===t)return Reflect.get(e,t);for(let e of u){let r=Reflect.get(e,t);if(void 0!==r)return r}},ownKeys(e){let t=Reflect.ownKeys(e);for(let e of u)for(let r of Reflect.ownKeys(e))"default"===r||t.includes(r)||t.push(r);return t}})),u);"object"==typeof e&&null!==e&&a.push(e)},l.v=function(e,t){(null!=t?c(this.c,t):this.m).exports=e},l.n=function(e,t){let r;(r=null!=t?c(this.c,t):this.m).exports=r.namespaceObject=e};let p=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,h=[null,p({}),p([]),p(p)];function d(e,t,r){let n=[],o=-1;for(let t=e;("object"==typeof t||"function"==typeof t)&&!h.includes(t);t=p(t))for(let r of Object.getOwnPropertyNames(t))n.push(r,function(e,t){return()=>e[t]}(e,r)),-1===o&&"default"===r&&(o=n.length-1);return r&&o>=0||(o>=0?n.splice(o,1,0,e):n.push("default",0,e)),f(t,n),t}function m(e){let t=B(e,this.m);if(t.namespaceObject)return t.namespaceObject;let r=t.exports;return t.namespaceObject=d(r,"function"==typeof r?function(...e){return r.apply(this,e)}:Object.create(null),r&&r.__esModule)}function b(e){let t=e.indexOf("#");-1!==t&&(e=e.substring(0,t));let r=e.indexOf("?");return -1!==r&&(e=e.substring(0,r)),e}function y(){let e,t;return{promise:new Promise((r,n)=>{t=n,e=r}),resolve:e,reject:t}}l.i=m,l.A=function(e){return this.r(e)(m.bind(this))},l.t="function"==typeof require?require:function(){throw Error("Unexpected use of runtime require")},l.r=function(e){return B(e,this.m).exports},l.f=function(e){function t(t){if(t=b(t),i.call(e,t))return e[t].module();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r}return t.keys=()=>Object.keys(e),t.resolve=t=>{if(t=b(t),i.call(e,t))return e[t].id();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r},t.import=async e=>await t(e),t};let O=Symbol("turbopack queues"),g=Symbol("turbopack exports"),w=Symbol("turbopack error");function C(e){e&&1!==e.status&&(e.status=1,e.forEach(e=>e.queueCount--),e.forEach(e=>e.queueCount--?e.queueCount++:e()))}l.a=function(e,t){let r=this.m,n=t?Object.assign([],{status:-1}):void 0,o=new Set,{resolve:l,reject:i,promise:s}=y(),u=Object.assign(s,{[g]:r.exports,[O]:e=>{n&&e(n),o.forEach(e),u.catch(()=>{})}}),c={get:()=>u,set(e){e!==u&&(u[g]=e)}};Object.defineProperty(r,"exports",c),Object.defineProperty(r,"namespaceObject",c),e(function(e){let t=e.map(e=>{if(null!==e&&"object"==typeof e){if(O in e)return e;if(null!=e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then){let t=Object.assign([],{status:0}),r={[g]:{},[O]:e=>e(t)};return e.then(e=>{r[g]=e,C(t)},e=>{r[w]=e,C(t)}),r}}return{[g]:e,[O]:()=>{}}}),r=()=>t.map(e=>{if(e[w])throw e[w];return e[g]}),{promise:l,resolve:i}=y(),s=Object.assign(()=>i(r),{queueCount:0});function u(e){e!==n&&!o.has(e)&&(o.add(e),e&&0===e.status&&(s.queueCount++,e.push(s)))}return t.map(e=>e[O](u)),s.queueCount?l:r()},function(e){e?i(u[w]=e):l(u[g]),C(n)}),n&&-1===n.status&&(n.status=0)};let U=function(e){let t=new URL(e,"x:/"),r={};for(let e in t)r[e]=t[e];for(let t in r.href=e,r.pathname=e.replace(/[?#].*/,""),r.origin=r.protocol="",r.toString=r.toJSON=(...t)=>e,r)Object.defineProperty(this,t,{enumerable:!0,configurable:!0,value:r[t]})};function j(e,t){throw Error(`Invariant: ${t(e)}`)}U.prototype=URL.prototype,l.U=U,l.z=function(e){throw Error("dynamic usage of require is not supported")},l.g=globalThis;let R=o.prototype;var k,_=((k=_||{})[k.Runtime=0]="Runtime",k[k.Parent=1]="Parent",k[k.Update=2]="Update",k);let v=new Map;l.M=v;let $=new Map,P=new Map;async function S(e,t,r){let n;if("string"==typeof r)return E(e,t,K(r));let o=r.included||[],l=o.map(e=>!!v.has(e)||$.get(e));if(l.length>0&&l.every(e=>e))return void await Promise.all(l);let i=r.moduleChunks||[],s=i.map(e=>P.get(e)).filter(e=>e);if(s.length>0){if(s.length===i.length)return void await Promise.all(s);let r=new Set;for(let e of i)P.has(e)||r.add(e);for(let n of r){let r=E(e,t,K(n));P.set(n,r),s.push(r)}n=Promise.all(s)}else{for(let o of(n=E(e,t,K(r.path)),i))P.has(o)||P.set(o,n)}for(let e of o)$.has(e)||$.set(e,n);await n}R.l=function(e){return S(1,this.m.id,e)};let T=Promise.resolve(void 0),A=new WeakMap;function E(t,r,n){let o=e.loadChunkCached(t,n),l=A.get(o);if(void 0===l){let e=A.set.bind(A,o,T);l=o.then(e).catch(e=>{let o;switch(t){case 0:o=`as a runtime dependency of chunk ${r}`;break;case 1:o=`from module ${r}`;break;case 2:o="from an HMR update";break;default:j(t,e=>`Unknown source type: ${e}`)}let l=Error(`Failed to load chunk ${n} ${o}${e?`: ${e}`:""}`,e?{cause:e}:void 0);throw l.name="ChunkLoadError",l}),A.set(o,l)}return l}function K(e){return`${t}${e.split("/").map(e=>encodeURIComponent(e)).join("/")}${r}`}R.L=function(e){return E(1,this.m.id,e)},R.R=function(e){let t=this.r(e);return t?.default??t},R.P=function(e){return`/ROOT/${e??""}`},R.b=function(e){let t=new Blob([`self.TURBOPACK_WORKER_LOCATION = ${JSON.stringify(location.origin)};
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,{otherChunks:["static/chunks/ed3a602003bcb31b.js","static/chunks/84a181ff3270fd9f.js","static/chunks/cfe4dc9904fcfddb.js","static/chunks/4b6cc9f65260f2bd.js","static/chunks/d4d8f0a137bd2eb4.js"],runtimeModuleIds:[80535]}]),(()=>{let e;if(!Array.isArray(globalThis.TURBOPACK))return;let t="/_next/",r=(self.TURBOPACK_CHUNK_SUFFIX??document?.currentScript?.getAttribute?.("src")?.replace(/^(.*(?=\?)|^.*$)/,""))||"",n=new WeakMap;function o(e,t){this.m=e,this.e=t}let l=o.prototype,i=Object.prototype.hasOwnProperty,s="u">typeof Symbol&&Symbol.toStringTag;function u(e,t,r){i.call(e,t)||Object.defineProperty(e,t,r)}function c(e,t){let r=e[t];return r||(r=a(t),e[t]=r),r}function a(e){return{exports:{},error:void 0,id:e,namespaceObject:void 0}}function f(e,t){u(e,"__esModule",{value:!0}),s&&u(e,s,{value:"Module"});let r=0;for(;r<t.length;){let n=t[r++],o=t[r++];if("number"==typeof o)if(0===o)u(e,n,{value:t[r++],enumerable:!0,writable:!1});else throw Error(`unexpected tag: ${o}`);else"function"==typeof t[r]?u(e,n,{get:o,set:t[r++],enumerable:!0}):u(e,n,{get:o,enumerable:!0})}Object.seal(e)}l.s=function(e,t){let r,n;null!=t?n=(r=c(this.c,t)).exports:(r=this.m,n=this.e),r.namespaceObject=n,f(n,e)},l.j=function(e,t){var r,o;let l,s,u;null!=t?s=(l=c(this.c,t)).exports:(l=this.m,s=this.e);let a=(r=l,o=s,(u=n.get(r))||(n.set(r,u=[]),r.exports=r.namespaceObject=new Proxy(o,{get(e,t){if(i.call(e,t)||"default"===t||"__esModule"===t)return Reflect.get(e,t);for(let e of u){let r=Reflect.get(e,t);if(void 0!==r)return r}},ownKeys(e){let t=Reflect.ownKeys(e);for(let e of u)for(let r of Reflect.ownKeys(e))"default"===r||t.includes(r)||t.push(r);return t}})),u);"object"==typeof e&&null!==e&&a.push(e)},l.v=function(e,t){(null!=t?c(this.c,t):this.m).exports=e},l.n=function(e,t){let r;(r=null!=t?c(this.c,t):this.m).exports=r.namespaceObject=e};let p=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,h=[null,p({}),p([]),p(p)];function d(e,t,r){let n=[],o=-1;for(let t=e;("object"==typeof t||"function"==typeof t)&&!h.includes(t);t=p(t))for(let r of Object.getOwnPropertyNames(t))n.push(r,function(e,t){return()=>e[t]}(e,r)),-1===o&&"default"===r&&(o=n.length-1);return r&&o>=0||(o>=0?n.splice(o,1,0,e):n.push("default",0,e)),f(t,n),t}function m(e){let t=B(e,this.m);if(t.namespaceObject)return t.namespaceObject;let r=t.exports;return t.namespaceObject=d(r,"function"==typeof r?function(...e){return r.apply(this,e)}:Object.create(null),r&&r.__esModule)}function b(e){let t=e.indexOf("#");-1!==t&&(e=e.substring(0,t));let r=e.indexOf("?");return -1!==r&&(e=e.substring(0,r)),e}function y(){let e,t;return{promise:new Promise((r,n)=>{t=n,e=r}),resolve:e,reject:t}}l.i=m,l.A=function(e){return this.r(e)(m.bind(this))},l.t="function"==typeof require?require:function(){throw Error("Unexpected use of runtime require")},l.r=function(e){return B(e,this.m).exports},l.f=function(e){function t(t){if(t=b(t),i.call(e,t))return e[t].module();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r}return t.keys=()=>Object.keys(e),t.resolve=t=>{if(t=b(t),i.call(e,t))return e[t].id();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r},t.import=async e=>await t(e),t};let O=Symbol("turbopack queues"),g=Symbol("turbopack exports"),w=Symbol("turbopack error");function C(e){e&&1!==e.status&&(e.status=1,e.forEach(e=>e.queueCount--),e.forEach(e=>e.queueCount--?e.queueCount++:e()))}l.a=function(e,t){let r=this.m,n=t?Object.assign([],{status:-1}):void 0,o=new Set,{resolve:l,reject:i,promise:s}=y(),u=Object.assign(s,{[g]:r.exports,[O]:e=>{n&&e(n),o.forEach(e),u.catch(()=>{})}}),c={get:()=>u,set(e){e!==u&&(u[g]=e)}};Object.defineProperty(r,"exports",c),Object.defineProperty(r,"namespaceObject",c),e(function(e){let t=e.map(e=>{if(null!==e&&"object"==typeof e){if(O in e)return e;if(null!=e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then){let t=Object.assign([],{status:0}),r={[g]:{},[O]:e=>e(t)};return e.then(e=>{r[g]=e,C(t)},e=>{r[w]=e,C(t)}),r}}return{[g]:e,[O]:()=>{}}}),r=()=>t.map(e=>{if(e[w])throw e[w];return e[g]}),{promise:l,resolve:i}=y(),s=Object.assign(()=>i(r),{queueCount:0});function u(e){e!==n&&!o.has(e)&&(o.add(e),e&&0===e.status&&(s.queueCount++,e.push(s)))}return t.map(e=>e[O](u)),s.queueCount?l:r()},function(e){e?i(u[w]=e):l(u[g]),C(n)}),n&&-1===n.status&&(n.status=0)};let U=function(e){let t=new URL(e,"x:/"),r={};for(let e in t)r[e]=t[e];for(let t in r.href=e,r.pathname=e.replace(/[?#].*/,""),r.origin=r.protocol="",r.toString=r.toJSON=(...t)=>e,r)Object.defineProperty(this,t,{enumerable:!0,configurable:!0,value:r[t]})};function j(e,t){throw Error(`Invariant: ${t(e)}`)}U.prototype=URL.prototype,l.U=U,l.z=function(e){throw Error("dynamic usage of require is not supported")},l.g=globalThis;let R=o.prototype;var k,_=((k=_||{})[k.Runtime=0]="Runtime",k[k.Parent=1]="Parent",k[k.Update=2]="Update",k);let v=new Map;l.M=v;let $=new Map,P=new Map;async function S(e,t,r){let n;if("string"==typeof r)return E(e,t,K(r));let o=r.included||[],l=o.map(e=>!!v.has(e)||$.get(e));if(l.length>0&&l.every(e=>e))return void await Promise.all(l);let i=r.moduleChunks||[],s=i.map(e=>P.get(e)).filter(e=>e);if(s.length>0){if(s.length===i.length)return void await Promise.all(s);let r=new Set;for(let e of i)P.has(e)||r.add(e);for(let n of r){let r=E(e,t,K(n));P.set(n,r),s.push(r)}n=Promise.all(s)}else{for(let o of(n=E(e,t,K(r.path)),i))P.has(o)||P.set(o,n)}for(let e of o)$.has(e)||$.set(e,n);await n}R.l=function(e){return S(1,this.m.id,e)};let T=Promise.resolve(void 0),A=new WeakMap;function E(t,r,n){let o=e.loadChunkCached(t,n),l=A.get(o);if(void 0===l){let e=A.set.bind(A,o,T);l=o.then(e).catch(e=>{let o;switch(t){case 0:o=`as a runtime dependency of chunk ${r}`;break;case 1:o=`from module ${r}`;break;case 2:o="from an HMR update";break;default:j(t,e=>`Unknown source type: ${e}`)}let l=Error(`Failed to load chunk ${n} ${o}${e?`: ${e}`:""}`,e?{cause:e}:void 0);throw l.name="ChunkLoadError",l}),A.set(o,l)}return l}function K(e){return`${t}${e.split("/").map(e=>encodeURIComponent(e)).join("/")}${r}`}R.L=function(e){return E(1,this.m.id,e)},R.R=function(e){let t=this.r(e);return t?.default??t},R.P=function(e){return`/ROOT/${e??""}`},R.b=function(e){let t=new Blob([`self.TURBOPACK_WORKER_LOCATION = ${JSON.stringify(location.origin)};
2
2
  self.TURBOPACK_CHUNK_SUFFIX = ${JSON.stringify(r)};
3
3
  self.TURBOPACK_NEXT_CHUNK_URLS = ${JSON.stringify(e.reverse().map(K),null,2)};
4
4
  importScripts(...self.TURBOPACK_NEXT_CHUNK_URLS.map(c => self.TURBOPACK_WORKER_LOCATION + c).reverse());`],{type:"text/javascript"});return URL.createObjectURL(t)};let x=/\.js(?:\?[^#]*)?(?:#.*)?$/,N=/\.css(?:\?[^#]*)?(?:#.*)?$/;function M(e){return N.test(e)}l.w=function(t,r,n){return e.loadWebAssembly(1,this.m.id,t,r,n)},l.u=function(t,r){return e.loadWebAssemblyModule(1,this.m.id,t,r)};let L={};l.c=L;let B=(e,t)=>{let r=L[e];if(r){if(r.error)throw r.error;return r}return q(e,_.Parent,t.id)};function q(e,t,r){let n=v.get(e);if("function"!=typeof n)throw Error(function(e,t,r){let n;switch(t){case 0:n=`as a runtime entry of chunk ${r}`;break;case 1:n=`because it was required from module ${r}`;break;case 2:n="because of an HMR update";break;default:j(t,e=>`Unknown source type: ${e}`)}return`Module ${e} was instantiated ${n}, but the module factory is not available.`}(e,t,r));let l=a(e),i=l.exports;L[e]=l;let s=new o(l,i);try{n(s,l,i)}catch(e){throw l.error=e,e}return l.namespaceObject&&l.exports!==l.namespaceObject&&d(l.exports,l.namespaceObject),l}function I(r){let n,o=function(e){if("string"==typeof e)return e;let r=decodeURIComponent(("u">typeof TURBOPACK_NEXT_CHUNK_URLS?TURBOPACK_NEXT_CHUNK_URLS.pop():e.getAttribute("src")).replace(/[?#].*$/,""));return r.startsWith(t)?r.slice(t.length):r}(r[0]);return 2===r.length?n=r[1]:(n=void 0,!function(e,t,r,n){let o=1;for(;o<e.length;){let t=e[o],n=o+1;for(;n<e.length&&"function"!=typeof e[n];)n++;if(n===e.length)throw Error("malformed chunk format, expected a factory function");if(!r.has(t)){let l=e[n];for(Object.defineProperty(l,"name",{value:"module evaluation"});o<n;o++)t=e[o],r.set(t,l)}o=n+1}}(r,0,v)),e.registerChunk(o,n)}let W=new Map;function H(e){let t=W.get(e);if(!t){let r,n;t={resolved:!1,loadingStarted:!1,promise:new Promise((e,t)=>{r=e,n=t}),resolve:()=>{t.resolved=!0,r()},reject:n},W.set(e,t)}return t}e={async registerChunk(e,t){if(H(K(e)).resolve(),null!=t){for(let e of t.otherChunks)H(K("string"==typeof e?e:e.path));if(await Promise.all(t.otherChunks.map(t=>S(0,e,t))),t.runtimeModuleIds.length>0)for(let r of t.runtimeModuleIds)!function(e,t){let r=L[t];if(r){if(r.error)throw r.error;return}q(t,_.Runtime,e)}(e,r)}},loadChunkCached:(e,t)=>(function(e,t){let r=H(t);if(r.loadingStarted)return r.promise;if(e===_.Runtime)return r.loadingStarted=!0,M(t)&&r.resolve(),r.promise;if("function"==typeof importScripts)if(M(t));else if(x.test(t))self.TURBOPACK_NEXT_CHUNK_URLS.push(t),importScripts(TURBOPACK_WORKER_LOCATION+t);else throw Error(`can't infer type of chunk from URL ${t} in worker`);else{let e=decodeURI(t);if(M(t))if(document.querySelectorAll(`link[rel=stylesheet][href="${t}"],link[rel=stylesheet][href^="${t}?"],link[rel=stylesheet][href="${e}"],link[rel=stylesheet][href^="${e}?"]`).length>0)r.resolve();else{let e=document.createElement("link");e.rel="stylesheet",e.href=t,e.onerror=()=>{r.reject()},e.onload=()=>{r.resolve()},document.head.appendChild(e)}else if(x.test(t)){let n=document.querySelectorAll(`script[src="${t}"],script[src^="${t}?"],script[src="${e}"],script[src^="${e}?"]`);if(n.length>0)for(let e of Array.from(n))e.addEventListener("error",()=>{r.reject()});else{let e=document.createElement("script");e.src=t,e.onerror=()=>{r.reject()},document.head.appendChild(e)}}else throw Error(`can't infer type of chunk from URL ${t}`)}return r.loadingStarted=!0,r.promise})(e,t),async loadWebAssembly(e,t,r,n,o){let l=fetch(K(r)),{instance:i}=await WebAssembly.instantiateStreaming(l,o);return i.exports},async loadWebAssemblyModule(e,t,r,n){let o=fetch(K(r));return await WebAssembly.compileStreaming(o)}};let F=globalThis.TURBOPACK;globalThis.TURBOPACK={push:I},F.forEach(I)})();
@@ -1,41 +0,0 @@
1
- /**
2
- * Tunnel Service Interface
3
- *
4
- * Output port for managing a reverse tunnel that exposes local endpoints
5
- * to the public internet. Used to receive webhooks from external services
6
- * (e.g., GitHub) when running locally.
7
- *
8
- * Implementations must:
9
- * - Start a tunnel process pointing at a local port
10
- * - Expose only a specific URL path (e.g., /api/webhooks)
11
- * - Detect when the public URL changes (tunnel reconnection)
12
- * - Support graceful shutdown
13
- */
14
- export type TunnelUrlChangeHandler = (newUrl: string) => void | Promise<void>;
15
- export interface ITunnelService {
16
- /**
17
- * Start the tunnel, exposing a local port to the internet.
18
- *
19
- * @param localPort - Local port to tunnel traffic to
20
- * @returns The public URL assigned by the tunnel provider
21
- */
22
- start(localPort: number): Promise<string>;
23
- /**
24
- * Stop the tunnel and clean up the child process.
25
- */
26
- stop(): Promise<void>;
27
- /**
28
- * Get the current public URL, or null if the tunnel is not running.
29
- */
30
- getPublicUrl(): string | null;
31
- /**
32
- * Register a callback that fires when the tunnel URL changes
33
- * (e.g., after a reconnection assigns a new random subdomain).
34
- */
35
- onUrlChange(handler: TunnelUrlChangeHandler): void;
36
- /**
37
- * Whether the tunnel process is currently running.
38
- */
39
- isRunning(): boolean;
40
- }
41
- //# sourceMappingURL=tunnel-service.interface.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tunnel-service.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/tunnel-service.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE9E,MAAM,WAAW,cAAc;IAC7B;;;;;OAKG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE1C;;OAEG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,IAAI,CAAC;IAE9B;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAEnD;;OAEG;IACH,SAAS,IAAI,OAAO,CAAC;CACtB"}
@@ -1,14 +0,0 @@
1
- /**
2
- * Tunnel Service Interface
3
- *
4
- * Output port for managing a reverse tunnel that exposes local endpoints
5
- * to the public internet. Used to receive webhooks from external services
6
- * (e.g., GitHub) when running locally.
7
- *
8
- * Implementations must:
9
- * - Start a tunnel process pointing at a local port
10
- * - Expose only a specific URL path (e.g., /api/webhooks)
11
- * - Detect when the public URL changes (tunnel reconnection)
12
- * - Support graceful shutdown
13
- */
14
- export {};
@@ -1,65 +0,0 @@
1
- /**
2
- * Webhook Service Interface
3
- *
4
- * Output port for managing webhook registrations with external services
5
- * (e.g., GitHub) and processing incoming webhook events.
6
- *
7
- * Works alongside the polling-based PrSyncWatcher to provide near-instant
8
- * event delivery when a tunnel is available, with polling as fallback.
9
- */
10
- /**
11
- * Parsed webhook event from an external service.
12
- */
13
- export interface WebhookEvent {
14
- /** Source service (e.g., 'github') */
15
- source: string;
16
- /** Event type (e.g., 'pull_request', 'check_suite') */
17
- eventType: string;
18
- /** Delivery ID for deduplication */
19
- deliveryId: string;
20
- /** Full event payload */
21
- payload: Record<string, unknown>;
22
- }
23
- /**
24
- * Result of webhook signature validation.
25
- */
26
- export interface WebhookValidationResult {
27
- valid: boolean;
28
- error?: string;
29
- }
30
- export interface IWebhookService {
31
- /**
32
- * Register webhooks for all tracked repositories.
33
- *
34
- * @param publicUrl - The public tunnel URL where webhooks will be received
35
- */
36
- registerWebhooks(publicUrl: string): Promise<void>;
37
- /**
38
- * Update the webhook URL for all registered webhooks.
39
- * Called when the tunnel reconnects with a new URL.
40
- *
41
- * @param newUrl - The new public tunnel URL
42
- */
43
- updateWebhookUrl(newUrl: string): Promise<void>;
44
- /**
45
- * Remove all registered webhooks (cleanup on shutdown).
46
- */
47
- removeWebhooks(): Promise<void>;
48
- /**
49
- * Validate an incoming webhook request signature.
50
- *
51
- * @param payload - Raw request body
52
- * @param signature - Signature header value
53
- * @param secret - The webhook secret used for HMAC
54
- * @returns Validation result
55
- */
56
- validateSignature(payload: string, signature: string, secret: string): WebhookValidationResult;
57
- /**
58
- * Process an incoming webhook event.
59
- * Routes the event to the appropriate handler (e.g., PR status update).
60
- *
61
- * @param event - The parsed webhook event
62
- */
63
- handleEvent(event: WebhookEvent): Promise<void>;
64
- }
65
- //# sourceMappingURL=webhook-service.interface.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webhook-service.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/webhook-service.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnD;;;;;OAKG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhD;;OAEG;IACH,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhC;;;;;;;OAOG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,uBAAuB,CAAC;IAE/F;;;;;OAKG;IACH,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Webhook Service Interface
3
- *
4
- * Output port for managing webhook registrations with external services
5
- * (e.g., GitHub) and processing incoming webhook events.
6
- *
7
- * Works alongside the polling-based PrSyncWatcher to provide near-instant
8
- * event delivery when a tunnel is available, with polling as fallback.
9
- */
10
- export {};
@@ -1,55 +0,0 @@
1
- /**
2
- * Cloudflare Tunnel Service
3
- *
4
- * Manages a `cloudflared` quick-tunnel that exposes ONLY the webhook
5
- * API routes to the public internet via a random *.trycloudflare.com
6
- * subdomain.
7
- *
8
- * Uses the `cloudflared` npm package which handles binary installation
9
- * and provides a typed Tunnel API — no need for the user to install
10
- * cloudflared separately.
11
- *
12
- * Security: A lightweight proxy HTTP server is started on a random port
13
- * that only forwards requests matching the allowed path prefix
14
- * (/api/webhooks) to the main app. The tunnel connects to this proxy,
15
- * not the main app server. All other paths return 404.
16
- */
17
- import type { ITunnelService, TunnelUrlChangeHandler } from '../../../application/ports/output/services/tunnel-service.interface.js';
18
- export interface CloudflareTunnelDeps {
19
- createTunnel: (origin: string) => TunnelLike | Promise<TunnelLike>;
20
- }
21
- export interface TunnelLike {
22
- on(event: 'url', handler: (url: string) => void): void;
23
- on(event: 'connected', handler: (connection: {
24
- id: string;
25
- ip: string;
26
- location: string;
27
- }) => void): void;
28
- on(event: 'error', handler: (error: Error) => void): void;
29
- on(event: 'exit', handler: (code: number | null, signal: string | null) => void): void;
30
- once(event: string, handler: (...args: unknown[]) => void): void;
31
- stop(): void;
32
- }
33
- export declare class CloudflareTunnelService implements ITunnelService {
34
- private tunnel;
35
- private proxyServer;
36
- private publicUrl;
37
- private readonly urlChangeHandlers;
38
- private readonly deps;
39
- constructor(deps?: Partial<CloudflareTunnelDeps>);
40
- start(localPort: number): Promise<string>;
41
- stop(): Promise<void>;
42
- getPublicUrl(): string | null;
43
- onUrlChange(handler: TunnelUrlChangeHandler): void;
44
- isRunning(): boolean;
45
- /**
46
- * Start a lightweight HTTP proxy on a random port that only forwards
47
- * requests with paths starting with ALLOWED_PATH_PREFIX to the main app.
48
- * Everything else gets a 404.
49
- */
50
- private startProxyServer;
51
- private stopProxyServer;
52
- private stopTunnel;
53
- private notifyUrlChange;
54
- }
55
- //# sourceMappingURL=cloudflare-tunnel.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cloudflare-tunnel.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/tunnel/cloudflare-tunnel.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,KAAK,EACV,cAAc,EACd,sBAAsB,EACvB,MAAM,wEAAwE,CAAC;AAMhF,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CACpE;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IACvD,EAAE,CACA,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,CAAC,UAAU,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAC1E,IAAI,CAAC;IACR,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC;IAC1D,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;IACvF,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IACjE,IAAI,IAAI,IAAI,CAAC;CACd;AAWD,qBAAa,uBAAwB,YAAW,cAAc;IAC5D,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgC;IAClE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuB;gBAEhC,IAAI,GAAE,OAAO,CAAC,oBAAoB,CAAM;IAI9C,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAuEzC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,YAAY,IAAI,MAAM,GAAG,IAAI;IAI7B,WAAW,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI;IAIlD,SAAS,IAAI,OAAO;IAIpB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IA0DxB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,eAAe;CAgBxB"}
@@ -1,203 +0,0 @@
1
- /**
2
- * Cloudflare Tunnel Service
3
- *
4
- * Manages a `cloudflared` quick-tunnel that exposes ONLY the webhook
5
- * API routes to the public internet via a random *.trycloudflare.com
6
- * subdomain.
7
- *
8
- * Uses the `cloudflared` npm package which handles binary installation
9
- * and provides a typed Tunnel API — no need for the user to install
10
- * cloudflared separately.
11
- *
12
- * Security: A lightweight proxy HTTP server is started on a random port
13
- * that only forwards requests matching the allowed path prefix
14
- * (/api/webhooks) to the main app. The tunnel connects to this proxy,
15
- * not the main app server. All other paths return 404.
16
- */
17
- import { createServer, request as httpRequest } from 'node:http';
18
- const TAG = '[CloudflareTunnel]';
19
- const STARTUP_TIMEOUT_MS = 30_000;
20
- const ALLOWED_PATH_PREFIX = '/api/webhooks';
21
- async function defaultCreateTunnel(origin) {
22
- const { Tunnel } = await import('cloudflared');
23
- return Tunnel.quick(origin);
24
- }
25
- const defaultDeps = {
26
- createTunnel: defaultCreateTunnel,
27
- };
28
- export class CloudflareTunnelService {
29
- tunnel = null;
30
- proxyServer = null;
31
- publicUrl = null;
32
- urlChangeHandlers = [];
33
- deps;
34
- constructor(deps = {}) {
35
- this.deps = { ...defaultDeps, ...deps };
36
- }
37
- async start(localPort) {
38
- if (this.tunnel) {
39
- throw new Error(`${TAG} Tunnel already running at ${this.publicUrl}`);
40
- }
41
- // Start a proxy server that only forwards webhook routes
42
- const proxyPort = await this.startProxyServer(localPort);
43
- let tunnel;
44
- try {
45
- tunnel = await Promise.resolve(this.deps.createTunnel(`http://localhost:${proxyPort}`));
46
- }
47
- catch (err) {
48
- this.stopProxyServer();
49
- throw new Error(`${TAG} Failed to create tunnel: ${err.message}`);
50
- }
51
- this.tunnel = tunnel;
52
- return new Promise((resolve, reject) => {
53
- const timeout = setTimeout(() => {
54
- this.stopTunnel();
55
- reject(new Error(`${TAG} Timed out waiting for tunnel URL (${STARTUP_TIMEOUT_MS}ms)`));
56
- }, STARTUP_TIMEOUT_MS);
57
- tunnel.on('url', (url) => {
58
- if (!this.publicUrl) {
59
- // First URL — startup complete
60
- this.publicUrl = url;
61
- clearTimeout(timeout);
62
- // eslint-disable-next-line no-console
63
- console.log(`${TAG} Tunnel ready: ${url} (proxying ${ALLOWED_PATH_PREFIX}/* to port ${localPort})`);
64
- resolve(url);
65
- }
66
- else if (url !== this.publicUrl) {
67
- // URL changed — reconnection with new subdomain
68
- const oldUrl = this.publicUrl;
69
- this.publicUrl = url;
70
- // eslint-disable-next-line no-console
71
- console.log(`${TAG} Tunnel URL changed: ${oldUrl} -> ${url}`);
72
- this.notifyUrlChange(url);
73
- }
74
- });
75
- tunnel.on('error', (err) => {
76
- clearTimeout(timeout);
77
- this.tunnel = null;
78
- this.publicUrl = null;
79
- this.stopProxyServer();
80
- reject(new Error(`${TAG} Failed to start tunnel: ${err.message}`));
81
- });
82
- tunnel.on('exit', (code) => {
83
- clearTimeout(timeout);
84
- if (this.tunnel === tunnel) {
85
- this.tunnel = null;
86
- const wasRunning = this.publicUrl !== null;
87
- this.publicUrl = null;
88
- this.stopProxyServer();
89
- if (wasRunning) {
90
- // eslint-disable-next-line no-console
91
- console.log(`${TAG} Tunnel process exited (code ${code})`);
92
- }
93
- else {
94
- reject(new Error(`${TAG} cloudflared exited with code ${code} before producing a URL`));
95
- }
96
- }
97
- });
98
- });
99
- }
100
- async stop() {
101
- this.stopTunnel();
102
- this.publicUrl = null;
103
- }
104
- getPublicUrl() {
105
- return this.publicUrl;
106
- }
107
- onUrlChange(handler) {
108
- this.urlChangeHandlers.push(handler);
109
- }
110
- isRunning() {
111
- return this.tunnel !== null && this.publicUrl !== null;
112
- }
113
- /**
114
- * Start a lightweight HTTP proxy on a random port that only forwards
115
- * requests with paths starting with ALLOWED_PATH_PREFIX to the main app.
116
- * Everything else gets a 404.
117
- */
118
- startProxyServer(targetPort) {
119
- return new Promise((resolve, reject) => {
120
- const server = createServer((req, res) => {
121
- const url = req.url ?? '';
122
- if (!url.startsWith(ALLOWED_PATH_PREFIX)) {
123
- res.writeHead(404, { 'Content-Type': 'application/json' });
124
- res.end(JSON.stringify({ error: 'Not found' }));
125
- return;
126
- }
127
- // Proxy the request to the main app
128
- const proxyReq = httpRequest({
129
- hostname: 'localhost',
130
- port: targetPort,
131
- path: url,
132
- method: req.method,
133
- headers: req.headers,
134
- }, (proxyRes) => {
135
- res.writeHead(proxyRes.statusCode ?? 502, proxyRes.headers);
136
- proxyRes.pipe(res);
137
- });
138
- proxyReq.on('error', (err) => {
139
- // eslint-disable-next-line no-console
140
- console.warn(`${TAG} Proxy error: ${err.message}`);
141
- if (!res.headersSent) {
142
- res.writeHead(502, { 'Content-Type': 'application/json' });
143
- }
144
- res.end(JSON.stringify({ error: 'Bad gateway' }));
145
- });
146
- req.pipe(proxyReq);
147
- });
148
- // Listen on port 0 = OS assigns a random available port
149
- server.listen(0, '127.0.0.1', () => {
150
- const addr = server.address();
151
- if (addr && typeof addr === 'object') {
152
- this.proxyServer = server;
153
- // eslint-disable-next-line no-console
154
- console.log(`${TAG} Webhook proxy listening on port ${addr.port}`);
155
- resolve(addr.port);
156
- }
157
- else {
158
- server.close();
159
- reject(new Error(`${TAG} Failed to start proxy server`));
160
- }
161
- });
162
- server.on('error', (err) => {
163
- reject(new Error(`${TAG} Proxy server error: ${err.message}`));
164
- });
165
- });
166
- }
167
- stopProxyServer() {
168
- if (this.proxyServer) {
169
- this.proxyServer.close();
170
- this.proxyServer = null;
171
- }
172
- }
173
- stopTunnel() {
174
- if (this.tunnel) {
175
- const tunnel = this.tunnel;
176
- this.tunnel = null;
177
- try {
178
- tunnel.stop();
179
- }
180
- catch {
181
- // Tunnel already stopped
182
- }
183
- }
184
- this.stopProxyServer();
185
- }
186
- notifyUrlChange(newUrl) {
187
- for (const handler of this.urlChangeHandlers) {
188
- try {
189
- const result = handler(newUrl);
190
- if (result instanceof Promise) {
191
- result.catch((err) => {
192
- // eslint-disable-next-line no-console
193
- console.warn(`${TAG} URL change handler failed:`, err);
194
- });
195
- }
196
- }
197
- catch (err) {
198
- // eslint-disable-next-line no-console
199
- console.warn(`${TAG} URL change handler threw:`, err);
200
- }
201
- }
202
- }
203
- }
@@ -1,75 +0,0 @@
1
- /**
2
- * GitHub Webhook Service
3
- *
4
- * Manages GitHub webhook registration and incoming event processing.
5
- * Uses the GitHub CLI (`gh api`) for webhook CRUD operations.
6
- *
7
- * Webhook events supplement the existing PR sync polling:
8
- * - Webhooks provide near-instant event delivery
9
- * - Polling remains as a fallback for missed events
10
- *
11
- * Registered events: pull_request, check_suite, check_run
12
- */
13
- import type { IWebhookService, WebhookEvent, WebhookValidationResult } from '../../../application/ports/output/services/webhook-service.interface.js';
14
- import type { IFeatureRepository } from '../../../application/ports/output/repositories/feature-repository.interface.js';
15
- import type { IGitPrService } from '../../../application/ports/output/services/git-pr-service.interface.js';
16
- import type { INotificationService } from '../../../application/ports/output/services/notification-service.interface.js';
17
- export type ExecFunction = (file: string, args: string[], options?: object) => Promise<{
18
- stdout: string;
19
- stderr: string;
20
- }>;
21
- export interface RegisteredWebhook {
22
- repoFullName: string;
23
- webhookId: number;
24
- repositoryPath: string;
25
- }
26
- export type WebhookDeliveryStatus = 'success' | 'ignored' | 'error';
27
- export interface WebhookDeliveryRecord {
28
- deliveryId: string;
29
- eventType: string;
30
- source: string;
31
- receivedAt: string;
32
- status: WebhookDeliveryStatus;
33
- statusMessage: string;
34
- durationMs: number;
35
- payload: Record<string, unknown>;
36
- }
37
- export declare class GitHubWebhookService implements IWebhookService {
38
- private readonly featureRepo;
39
- private readonly gitPrService;
40
- private readonly notificationService;
41
- private readonly execFn;
42
- private readonly registeredWebhooks;
43
- private readonly deliveryHistory;
44
- private webhookSecret;
45
- constructor(featureRepo: IFeatureRepository, gitPrService: IGitPrService, notificationService: INotificationService, execFn: ExecFunction);
46
- /**
47
- * Get the webhook secret for signature validation.
48
- * Exposed so the API route can validate incoming requests.
49
- */
50
- getSecret(): string;
51
- /**
52
- * Get the list of registered webhooks (for dashboard display).
53
- */
54
- getRegisteredWebhooks(): readonly RegisteredWebhook[];
55
- /**
56
- * Get recent delivery history (newest first).
57
- */
58
- getDeliveryHistory(): readonly WebhookDeliveryRecord[];
59
- registerWebhooks(publicUrl: string): Promise<void>;
60
- updateWebhookUrl(newUrl: string): Promise<void>;
61
- removeWebhooks(): Promise<void>;
62
- validateSignature(payload: string, signature: string, secret: string): WebhookValidationResult;
63
- handleEvent(event: WebhookEvent): Promise<void>;
64
- private recordDelivery;
65
- private handlePullRequestEvent;
66
- private handleCheckSuiteEvent;
67
- private handleCheckRunEvent;
68
- private findFeatureByPrOrBranch;
69
- private findFeatureByBranch;
70
- private updateFeaturePrStatus;
71
- private updateFeatureCiStatus;
72
- private registerWebhookForRepo;
73
- private getRepoFullName;
74
- }
75
- //# sourceMappingURL=github-webhook.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"github-webhook.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/webhook/github-webhook.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,uBAAuB,EACxB,MAAM,yEAAyE,CAAC;AACjF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gFAAgF,CAAC;AACzH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wEAAwE,CAAC;AAC5G,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8EAA8E,CAAC;AASzH,MAAM,MAAM,YAAY,GAAG,CACzB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,MAAM,KACb,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEjD,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAEpE,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,qBAAa,oBAAqB,YAAW,eAAe;IAC1D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;IAC7C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAuB;IAC3D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA2B;IAC9D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA+B;IAC/D,OAAO,CAAC,aAAa,CAAS;gBAG5B,WAAW,EAAE,kBAAkB,EAC/B,YAAY,EAAE,aAAa,EAC3B,mBAAmB,EAAE,oBAAoB,EACzC,MAAM,EAAE,YAAY;IAStB;;;OAGG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,qBAAqB,IAAI,SAAS,iBAAiB,EAAE;IAIrD;;OAEG;IACH,kBAAkB,IAAI,SAAS,qBAAqB,EAAE;IAIhD,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBlD,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkC/C,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BrC,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,uBAAuB;IAgCxF,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA4CrD,OAAO,CAAC,cAAc;YAOR,sBAAsB;YAsBtB,qBAAqB;YAiBrB,mBAAmB;YAoBnB,uBAAuB;YAWvB,mBAAmB;YAKnB,qBAAqB;YA6CrB,qBAAqB;YA4BrB,sBAAsB;YAqDtB,eAAe;CAe9B"}