@shepai/cli 1.122.2-pr367.fdba557 → 1.122.2-pr381.7d9e407

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 (387) 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 +187 -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/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts +1 -1
  15. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js +2 -2
  16. package/dist/src/presentation/cli/commands/ui.command.d.ts.map +1 -1
  17. package/dist/src/presentation/cli/commands/ui.command.js +0 -15
  18. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.d.ts.map +1 -1
  19. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.js +2 -2
  20. package/dist/src/presentation/web/dev-server.js +0 -20
  21. package/dist/tsconfig.build.tsbuildinfo +1 -1
  22. package/package.json +1 -3
  23. package/web/.next/BUILD_ID +1 -1
  24. package/web/.next/app-path-routes-manifest.json +1 -5
  25. package/web/.next/build-manifest.json +6 -6
  26. package/web/.next/fallback-build-manifest.json +2 -2
  27. package/web/.next/prerender-manifest.json +3 -3
  28. package/web/.next/required-server-files.js +1 -1
  29. package/web/.next/required-server-files.json +1 -1
  30. package/web/.next/routes-manifest.json +0 -24
  31. package/web/.next/server/app/(dashboard)/@drawer/create/page/build-manifest.json +4 -4
  32. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +22 -22
  33. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
  34. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  35. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  36. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/build-manifest.json +4 -4
  37. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +28 -28
  38. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +1 -1
  39. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  40. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  41. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/build-manifest.json +4 -4
  42. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +28 -28
  43. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -1
  44. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  45. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  46. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/build-manifest.json +4 -4
  47. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +20 -20
  48. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
  49. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  50. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  51. package/web/.next/server/app/(dashboard)/create/page/build-manifest.json +4 -4
  52. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +22 -22
  53. package/web/.next/server/app/(dashboard)/create/page.js +1 -1
  54. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  55. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  56. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/build-manifest.json +4 -4
  57. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +28 -28
  58. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +1 -1
  59. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  60. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  61. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/build-manifest.json +4 -4
  62. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +28 -28
  63. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -1
  64. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  65. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  66. package/web/.next/server/app/(dashboard)/page/build-manifest.json +4 -4
  67. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +20 -20
  68. package/web/.next/server/app/(dashboard)/page.js +1 -1
  69. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  70. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  71. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/build-manifest.json +4 -4
  72. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +20 -20
  73. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
  74. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  75. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  76. package/web/.next/server/app/_global-error/page/build-manifest.json +4 -4
  77. package/web/.next/server/app/_global-error.html +2 -2
  78. package/web/.next/server/app/_global-error.rsc +1 -1
  79. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  80. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  81. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  82. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  83. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  84. package/web/.next/server/app/_not-found/page/build-manifest.json +4 -4
  85. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  86. package/web/.next/server/app/_not-found/page.js +1 -1
  87. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  88. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  89. package/web/.next/server/app/api/attachments/preview/route.js +1 -1
  90. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  91. package/web/.next/server/app/api/evidence/route.js +1 -1
  92. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  93. package/web/.next/server/app/api/graph-data/route.js +1 -1
  94. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  95. package/web/.next/server/app/settings/page/build-manifest.json +4 -4
  96. package/web/.next/server/app/settings/page/server-reference-manifest.json +6 -6
  97. package/web/.next/server/app/settings/page.js +1 -1
  98. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  99. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  100. package/web/.next/server/app/skills/page/build-manifest.json +4 -4
  101. package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  102. package/web/.next/server/app/skills/page.js +1 -1
  103. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  104. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  105. package/web/.next/server/app/tools/page/build-manifest.json +4 -4
  106. package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  107. package/web/.next/server/app/tools/page.js +1 -1
  108. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  109. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  110. package/web/.next/server/app/version/page/build-manifest.json +4 -4
  111. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  112. package/web/.next/server/app/version/page.js +2 -2
  113. package/web/.next/server/app/version/page.js.nft.json +1 -1
  114. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  115. package/web/.next/server/app-paths-manifest.json +1 -5
  116. package/web/.next/server/chunks/{[root-of-the-server]__3baec744._.js → [root-of-the-server]__42b7ab55._.js} +2 -2
  117. package/web/.next/server/chunks/{[root-of-the-server]__3baec744._.js.map → [root-of-the-server]__42b7ab55._.js.map} +1 -1
  118. package/web/.next/server/chunks/{[root-of-the-server]__7d63f9a4._.js → [root-of-the-server]__53013576._.js} +2 -2
  119. package/web/.next/server/chunks/{[root-of-the-server]__a1c7c02a._.js → [root-of-the-server]__92078db6._.js} +2 -2
  120. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  121. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  122. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  123. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_f30d0343.js +1 -1
  124. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_f30d0343.js.map +1 -1
  125. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_9f1775bb.js +1 -1
  126. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_9f1775bb.js.map +1 -1
  127. package/web/.next/server/chunks/ssr/{[root-of-the-server]__12c2ab7d._.js → [root-of-the-server]__06fef644._.js} +2 -2
  128. package/web/.next/server/chunks/ssr/{[root-of-the-server]__12c2ab7d._.js.map → [root-of-the-server]__06fef644._.js.map} +1 -1
  129. package/web/.next/server/chunks/ssr/[root-of-the-server]__2698e9f4._.js +1 -1
  130. package/web/.next/server/chunks/ssr/[root-of-the-server]__2698e9f4._.js.map +1 -1
  131. package/web/.next/server/chunks/ssr/[root-of-the-server]__545792ab._.js +3 -0
  132. package/web/.next/server/chunks/ssr/[root-of-the-server]__545792ab._.js.map +1 -0
  133. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +4 -0
  134. package/web/.next/server/chunks/ssr/{[root-of-the-server]__11033878._.js.map → [root-of-the-server]__6b17a22d._.js.map} +1 -1
  135. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js +2 -2
  136. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js.map +1 -1
  137. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +4 -0
  138. package/web/.next/server/chunks/ssr/{[root-of-the-server]__fdc75809._.js.map → [root-of-the-server]__804c006d._.js.map} +1 -1
  139. package/web/.next/server/chunks/ssr/[root-of-the-server]__8c553503._.js +4 -0
  140. package/web/.next/server/chunks/ssr/{[root-of-the-server]__76915230._.js.map → [root-of-the-server]__8c553503._.js.map} +1 -1
  141. package/web/.next/server/chunks/ssr/[root-of-the-server]__8e3bf5d7._.js +1 -1
  142. package/web/.next/server/chunks/ssr/[root-of-the-server]__8e3bf5d7._.js.map +1 -1
  143. package/web/.next/server/chunks/ssr/[root-of-the-server]__9f155c0e._.js +3 -0
  144. package/web/.next/server/chunks/ssr/[root-of-the-server]__9f155c0e._.js.map +1 -0
  145. package/web/.next/server/chunks/ssr/[root-of-the-server]__a022445f._.js +4 -0
  146. package/web/.next/server/chunks/ssr/{[root-of-the-server]__7a939e4e._.js.map → [root-of-the-server]__a022445f._.js.map} +1 -1
  147. package/web/.next/server/chunks/ssr/[root-of-the-server]__a7de2711._.js +4 -0
  148. package/web/.next/server/chunks/ssr/{[root-of-the-server]__c4dc1b5a._.js.map → [root-of-the-server]__a7de2711._.js.map} +1 -1
  149. package/web/.next/server/chunks/ssr/[root-of-the-server]__c07f9f79._.js +1 -1
  150. package/web/.next/server/chunks/ssr/[root-of-the-server]__c07f9f79._.js.map +1 -1
  151. package/web/.next/server/chunks/ssr/[root-of-the-server]__c605a375._.js +1 -1
  152. package/web/.next/server/chunks/ssr/[root-of-the-server]__c605a375._.js.map +1 -1
  153. package/web/.next/server/chunks/ssr/_0dc2cfd3._.js +3 -0
  154. package/web/.next/server/chunks/ssr/_0dc2cfd3._.js.map +1 -0
  155. package/web/.next/server/chunks/ssr/_135edb9c._.js +1 -1
  156. package/web/.next/server/chunks/ssr/_135edb9c._.js.map +1 -1
  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/_204ecb5a._.js +3 -0
  162. package/web/.next/server/chunks/ssr/_204ecb5a._.js.map +1 -0
  163. package/web/.next/server/chunks/ssr/_2f6f48b8._.js +1 -1
  164. package/web/.next/server/chunks/ssr/_2f6f48b8._.js.map +1 -1
  165. package/web/.next/server/chunks/ssr/{_3d1ed2a7._.js → _434878d3._.js} +2 -2
  166. package/web/.next/server/chunks/ssr/_434878d3._.js.map +1 -0
  167. package/web/.next/server/chunks/ssr/_510be09a._.js +3 -0
  168. package/web/.next/server/chunks/ssr/{_3eca2297._.js.map → _510be09a._.js.map} +1 -1
  169. package/web/.next/server/chunks/ssr/_6d26a08f._.js +3 -0
  170. package/web/.next/server/chunks/ssr/_6d26a08f._.js.map +1 -0
  171. package/web/.next/server/chunks/ssr/_75f4ccb3._.js +3 -0
  172. package/web/.next/server/chunks/ssr/_75f4ccb3._.js.map +1 -0
  173. package/web/.next/server/chunks/ssr/_b5fc318a._.js +3 -0
  174. package/web/.next/server/chunks/ssr/_b5fc318a._.js.map +1 -0
  175. package/web/.next/server/chunks/ssr/_cc77a143._.js +1 -1
  176. package/web/.next/server/chunks/ssr/_cc77a143._.js.map +1 -1
  177. package/web/.next/server/chunks/ssr/_f1a649e3._.js +9 -0
  178. package/web/.next/server/chunks/ssr/_f1a649e3._.js.map +1 -0
  179. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  180. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  181. package/web/.next/server/chunks/ssr/node_modules__pnpm_b59e4b16._.js +3 -0
  182. package/web/.next/server/chunks/ssr/node_modules__pnpm_b59e4b16._.js.map +1 -0
  183. package/web/.next/server/chunks/ssr/src_presentation_web_5f039db1._.js +2 -2
  184. package/web/.next/server/chunks/ssr/src_presentation_web_5f039db1._.js.map +1 -1
  185. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_2a52b697.js +1 -1
  186. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_2a52b697.js.map +1 -1
  187. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js +1 -1
  188. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js.map +1 -1
  189. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js +1 -1
  190. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js.map +1 -1
  191. package/web/.next/server/chunks/ssr/src_presentation_web_c4337169._.js +2 -2
  192. package/web/.next/server/chunks/ssr/src_presentation_web_c4337169._.js.map +1 -1
  193. package/web/.next/server/chunks/ssr/src_presentation_web_components_bf50c527._.js +1 -1
  194. package/web/.next/server/chunks/ssr/src_presentation_web_components_bf50c527._.js.map +1 -1
  195. package/web/.next/server/chunks/ssr/src_presentation_web_components_de814675._.js +1 -1
  196. package/web/.next/server/chunks/ssr/src_presentation_web_components_de814675._.js.map +1 -1
  197. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  198. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  199. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  200. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  201. package/web/.next/server/middleware-build-manifest.js +4 -4
  202. package/web/.next/server/pages/500.html +2 -2
  203. package/web/.next/server/server-reference-manifest.js +1 -1
  204. package/web/.next/server/server-reference-manifest.json +35 -57
  205. package/web/.next/static/chunks/0d2af96e64960ef5.css +1 -0
  206. package/web/.next/static/chunks/19401b65e1298cb0.js +1 -0
  207. package/web/.next/static/chunks/{3f0773d9b56e04a2.js → 2c0191c062d5f7ae.js} +2 -2
  208. package/web/.next/static/chunks/303a1217006489b9.js +1 -0
  209. package/web/.next/static/chunks/4562ee849ea13c3a.js +1 -0
  210. package/web/.next/static/chunks/4da275e6ef808c4d.js +11 -0
  211. package/web/.next/static/chunks/{c3c68de2392a9071.js → 50bf223ed146d4ed.js} +1 -1
  212. package/web/.next/static/chunks/5a9e671eb04de758.js +1 -0
  213. package/web/.next/static/chunks/{98e3a7cf58fc912a.js → 672e3da3ad26005b.js} +1 -1
  214. package/web/.next/static/chunks/6a8fb1992b738cc9.js +1 -0
  215. package/web/.next/static/chunks/845d8e58a91014e6.js +1 -0
  216. package/web/.next/static/chunks/84a181ff3270fd9f.js +1 -0
  217. package/web/.next/static/chunks/{e087f3e5c46c0756.js → 89ffd07cdb158389.js} +1 -1
  218. package/web/.next/static/chunks/96eeeb28e06de78c.js +1 -0
  219. package/web/.next/static/chunks/{293ccfbe777d995a.js → a637e16d364af323.js} +1 -1
  220. package/web/.next/static/chunks/bc1ce100834f414a.js +1 -0
  221. package/web/.next/static/chunks/cca0f5112a9260d8.js +1 -0
  222. package/web/.next/static/chunks/{1b9d34af4064dafe.js → df88f3e08b196bbf.js} +2 -2
  223. package/web/.next/static/chunks/e2ef95d904c360f3.js +1 -0
  224. package/web/.next/static/chunks/ed3a602003bcb31b.js +1 -0
  225. package/web/.next/static/chunks/{turbopack-b1685b5f87ad1d60.js → turbopack-426d9bc2450816ba.js} +1 -1
  226. package/dist/packages/core/src/application/ports/output/services/tunnel-service.interface.d.ts +0 -41
  227. package/dist/packages/core/src/application/ports/output/services/tunnel-service.interface.d.ts.map +0 -1
  228. package/dist/packages/core/src/application/ports/output/services/tunnel-service.interface.js +0 -14
  229. package/dist/packages/core/src/application/ports/output/services/webhook-service.interface.d.ts +0 -65
  230. package/dist/packages/core/src/application/ports/output/services/webhook-service.interface.d.ts.map +0 -1
  231. package/dist/packages/core/src/application/ports/output/services/webhook-service.interface.js +0 -10
  232. package/dist/packages/core/src/infrastructure/services/tunnel/cloudflare-tunnel.service.d.ts +0 -55
  233. package/dist/packages/core/src/infrastructure/services/tunnel/cloudflare-tunnel.service.d.ts.map +0 -1
  234. package/dist/packages/core/src/infrastructure/services/tunnel/cloudflare-tunnel.service.js +0 -203
  235. package/dist/packages/core/src/infrastructure/services/webhook/github-webhook.service.d.ts +0 -75
  236. package/dist/packages/core/src/infrastructure/services/webhook/github-webhook.service.d.ts.map +0 -1
  237. package/dist/packages/core/src/infrastructure/services/webhook/github-webhook.service.js +0 -372
  238. package/dist/packages/core/src/infrastructure/services/webhook/webhook-manager.service.d.ts +0 -82
  239. package/dist/packages/core/src/infrastructure/services/webhook/webhook-manager.service.d.ts.map +0 -1
  240. package/dist/packages/core/src/infrastructure/services/webhook/webhook-manager.service.js +0 -206
  241. package/dist/src/presentation/web/app/actions/load-webhook-status.d.ts +0 -3
  242. package/dist/src/presentation/web/app/actions/load-webhook-status.d.ts.map +0 -1
  243. package/dist/src/presentation/web/app/actions/load-webhook-status.js +0 -19
  244. package/dist/src/presentation/web/app/api/webhooks/deliveries/route.d.ts +0 -9
  245. package/dist/src/presentation/web/app/api/webhooks/deliveries/route.d.ts.map +0 -1
  246. package/dist/src/presentation/web/app/api/webhooks/deliveries/route.js +0 -27
  247. package/dist/src/presentation/web/app/api/webhooks/github/route.d.ts +0 -17
  248. package/dist/src/presentation/web/app/api/webhooks/github/route.d.ts.map +0 -1
  249. package/dist/src/presentation/web/app/api/webhooks/github/route.js +0 -70
  250. package/dist/src/presentation/web/app/api/webhooks/status/route.d.ts +0 -9
  251. package/dist/src/presentation/web/app/api/webhooks/status/route.d.ts.map +0 -1
  252. package/dist/src/presentation/web/app/api/webhooks/status/route.js +0 -26
  253. package/dist/src/presentation/web/app/webhooks/page.d.ts +0 -4
  254. package/dist/src/presentation/web/app/webhooks/page.d.ts.map +0 -1
  255. package/dist/src/presentation/web/app/webhooks/page.js +0 -9
  256. package/dist/src/presentation/web/components/features/webhooks/types.d.ts +0 -32
  257. package/dist/src/presentation/web/components/features/webhooks/types.d.ts.map +0 -1
  258. package/dist/src/presentation/web/components/features/webhooks/types.js +0 -1
  259. package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.d.ts +0 -6
  260. package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.d.ts.map +0 -1
  261. package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.js +0 -38
  262. package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.stories.d.ts +0 -9
  263. package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.stories.d.ts.map +0 -1
  264. package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.stories.js +0 -69
  265. package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.d.ts +0 -7
  266. package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.d.ts.map +0 -1
  267. package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.js +0 -11
  268. package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.stories.d.ts +0 -9
  269. package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.stories.d.ts.map +0 -1
  270. package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.stories.js +0 -31
  271. package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.d.ts +0 -6
  272. package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.d.ts.map +0 -1
  273. package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.js +0 -21
  274. package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.stories.d.ts +0 -9
  275. package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.stories.d.ts.map +0 -1
  276. package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.stories.js +0 -56
  277. package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.d.ts +0 -6
  278. package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.d.ts.map +0 -1
  279. package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.js +0 -39
  280. package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.stories.d.ts +0 -8
  281. package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.stories.d.ts.map +0 -1
  282. package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.stories.js +0 -59
  283. package/web/.next/server/app/api/webhooks/deliveries/route/app-paths-manifest.json +0 -3
  284. package/web/.next/server/app/api/webhooks/deliveries/route/build-manifest.json +0 -11
  285. package/web/.next/server/app/api/webhooks/deliveries/route/server-reference-manifest.json +0 -4
  286. package/web/.next/server/app/api/webhooks/deliveries/route.js +0 -6
  287. package/web/.next/server/app/api/webhooks/deliveries/route.js.map +0 -5
  288. package/web/.next/server/app/api/webhooks/deliveries/route.js.nft.json +0 -1
  289. package/web/.next/server/app/api/webhooks/deliveries/route_client-reference-manifest.js +0 -2
  290. package/web/.next/server/app/api/webhooks/github/route/app-paths-manifest.json +0 -3
  291. package/web/.next/server/app/api/webhooks/github/route/build-manifest.json +0 -11
  292. package/web/.next/server/app/api/webhooks/github/route/server-reference-manifest.json +0 -4
  293. package/web/.next/server/app/api/webhooks/github/route.js +0 -6
  294. package/web/.next/server/app/api/webhooks/github/route.js.map +0 -5
  295. package/web/.next/server/app/api/webhooks/github/route.js.nft.json +0 -1
  296. package/web/.next/server/app/api/webhooks/github/route_client-reference-manifest.js +0 -2
  297. package/web/.next/server/app/api/webhooks/status/route/app-paths-manifest.json +0 -3
  298. package/web/.next/server/app/api/webhooks/status/route/build-manifest.json +0 -11
  299. package/web/.next/server/app/api/webhooks/status/route/server-reference-manifest.json +0 -4
  300. package/web/.next/server/app/api/webhooks/status/route.js +0 -6
  301. package/web/.next/server/app/api/webhooks/status/route.js.map +0 -5
  302. package/web/.next/server/app/api/webhooks/status/route.js.nft.json +0 -1
  303. package/web/.next/server/app/api/webhooks/status/route_client-reference-manifest.js +0 -2
  304. package/web/.next/server/app/webhooks/page/app-paths-manifest.json +0 -3
  305. package/web/.next/server/app/webhooks/page/build-manifest.json +0 -18
  306. package/web/.next/server/app/webhooks/page/next-font-manifest.json +0 -6
  307. package/web/.next/server/app/webhooks/page/react-loadable-manifest.json +0 -1
  308. package/web/.next/server/app/webhooks/page/server-reference-manifest.json +0 -35
  309. package/web/.next/server/app/webhooks/page.js +0 -16
  310. package/web/.next/server/app/webhooks/page.js.map +0 -5
  311. package/web/.next/server/app/webhooks/page.js.nft.json +0 -1
  312. package/web/.next/server/app/webhooks/page_client-reference-manifest.js +0 -2
  313. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_deliveries_route_actions_d9e34c8d.js +0 -3
  314. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_deliveries_route_actions_d9e34c8d.js.map +0 -1
  315. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_github_route_actions_1b0d0c38.js +0 -3
  316. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_github_route_actions_1b0d0c38.js.map +0 -1
  317. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_status_route_actions_1a0d86a1.js +0 -3
  318. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_status_route_actions_1a0d86a1.js.map +0 -1
  319. package/web/.next/server/chunks/[root-of-the-server]__15e5d45c._.js +0 -3
  320. package/web/.next/server/chunks/[root-of-the-server]__15e5d45c._.js.map +0 -1
  321. package/web/.next/server/chunks/[root-of-the-server]__23be381e._.js +0 -3
  322. package/web/.next/server/chunks/[root-of-the-server]__23be381e._.js.map +0 -1
  323. package/web/.next/server/chunks/[root-of-the-server]__9fc760c0._.js +0 -3
  324. package/web/.next/server/chunks/[root-of-the-server]__9fc760c0._.js.map +0 -1
  325. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_activity_22f9667f.js +0 -3
  326. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_activity_22f9667f.js.map +0 -1
  327. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_rocket_1575cd4d.js +0 -3
  328. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_rocket_1575cd4d.js.map +0 -1
  329. package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js +0 -4
  330. package/web/.next/server/chunks/ssr/[root-of-the-server]__3c16bf85._.js +0 -3
  331. package/web/.next/server/chunks/ssr/[root-of-the-server]__3c16bf85._.js.map +0 -1
  332. package/web/.next/server/chunks/ssr/[root-of-the-server]__610f06df._.js +0 -3
  333. package/web/.next/server/chunks/ssr/[root-of-the-server]__610f06df._.js.map +0 -1
  334. package/web/.next/server/chunks/ssr/[root-of-the-server]__76915230._.js +0 -4
  335. package/web/.next/server/chunks/ssr/[root-of-the-server]__7a939e4e._.js +0 -4
  336. package/web/.next/server/chunks/ssr/[root-of-the-server]__87a7ae30._.js +0 -3
  337. package/web/.next/server/chunks/ssr/[root-of-the-server]__87a7ae30._.js.map +0 -1
  338. package/web/.next/server/chunks/ssr/[root-of-the-server]__920dccd5._.js +0 -4
  339. package/web/.next/server/chunks/ssr/[root-of-the-server]__920dccd5._.js.map +0 -1
  340. package/web/.next/server/chunks/ssr/[root-of-the-server]__c4dc1b5a._.js +0 -4
  341. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js +0 -4
  342. package/web/.next/server/chunks/ssr/_07f57bd0._.js +0 -3
  343. package/web/.next/server/chunks/ssr/_07f57bd0._.js.map +0 -1
  344. package/web/.next/server/chunks/ssr/_15a756dd._.js +0 -3
  345. package/web/.next/server/chunks/ssr/_15a756dd._.js.map +0 -1
  346. package/web/.next/server/chunks/ssr/_26b2c311._.js +0 -3
  347. package/web/.next/server/chunks/ssr/_26b2c311._.js.map +0 -1
  348. package/web/.next/server/chunks/ssr/_3d1ed2a7._.js.map +0 -1
  349. package/web/.next/server/chunks/ssr/_3eca2297._.js +0 -3
  350. package/web/.next/server/chunks/ssr/_4470c218._.js +0 -3
  351. package/web/.next/server/chunks/ssr/_4470c218._.js.map +0 -1
  352. package/web/.next/server/chunks/ssr/_462cc3a6._.js +0 -3
  353. package/web/.next/server/chunks/ssr/_462cc3a6._.js.map +0 -1
  354. package/web/.next/server/chunks/ssr/_961cb4b2._.js +0 -3
  355. package/web/.next/server/chunks/ssr/_961cb4b2._.js.map +0 -1
  356. package/web/.next/server/chunks/ssr/_a4899a76._.js +0 -3
  357. package/web/.next/server/chunks/ssr/_a4899a76._.js.map +0 -1
  358. package/web/.next/server/chunks/ssr/_b5babdfc._.js +0 -9
  359. package/web/.next/server/chunks/ssr/_b5babdfc._.js.map +0 -1
  360. package/web/.next/server/chunks/ssr/_b7eb93fc._.js +0 -4
  361. package/web/.next/server/chunks/ssr/_b7eb93fc._.js.map +0 -1
  362. package/web/.next/server/chunks/ssr/_f8b36e2c._.js +0 -3
  363. package/web/.next/server/chunks/ssr/_f8b36e2c._.js.map +0 -1
  364. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_webhooks_webhooks-page-client_tsx_b2662ea3._.js +0 -3
  365. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_webhooks_webhooks-page-client_tsx_b2662ea3._.js.map +0 -1
  366. package/web/.next/server/chunks/ssr/node_modules__pnpm_747b43ac._.js.map +0 -1
  367. package/web/.next/static/chunks/0c76de69325ef923.js +0 -1
  368. package/web/.next/static/chunks/3835a408dbf8d0bb.js +0 -1
  369. package/web/.next/static/chunks/40b6bcf1a2de4a0f.js +0 -1
  370. package/web/.next/static/chunks/4c5b31a2c65d4aa5.js +0 -11
  371. package/web/.next/static/chunks/59a0709f1b080353.js +0 -1
  372. package/web/.next/static/chunks/5f6161ceb4263319.js +0 -1
  373. package/web/.next/static/chunks/77ff1b7b725b7780.js +0 -1
  374. package/web/.next/static/chunks/9af45e885bd4ccef.js +0 -1
  375. package/web/.next/static/chunks/a57dc2afcf67304a.js +0 -1
  376. package/web/.next/static/chunks/b4f502a76ba10e4b.js +0 -1
  377. package/web/.next/static/chunks/b5d8e8100e310d9f.css +0 -1
  378. package/web/.next/static/chunks/b747e59ebdcbd917.js +0 -1
  379. package/web/.next/static/chunks/c04ce6760f349f3e.js +0 -1
  380. package/web/.next/static/chunks/c7e793951b20a67f.js +0 -1
  381. package/web/.next/static/chunks/cf30e300568abf0f.js +0 -1
  382. package/web/.next/static/chunks/d43dff89384fb60a.js +0 -1
  383. /package/web/.next/server/chunks/{[root-of-the-server]__7d63f9a4._.js.map → [root-of-the-server]__53013576._.js.map} +0 -0
  384. /package/web/.next/server/chunks/{[root-of-the-server]__a1c7c02a._.js.map → [root-of-the-server]__92078db6._.js.map} +0 -0
  385. /package/web/.next/static/{svtG6xX1MdaGWkml8eX53 → NKkt3_PEmNxKD_ihRAzNE}/_buildManifest.js +0 -0
  386. /package/web/.next/static/{svtG6xX1MdaGWkml8eX53 → NKkt3_PEmNxKD_ihRAzNE}/_clientMiddlewareManifest.json +0 -0
  387. /package/web/.next/static/{svtG6xX1MdaGWkml8eX53 → NKkt3_PEmNxKD_ihRAzNE}/_ssgManifest.js +0 -0
@@ -1,82 +0,0 @@
1
- /**
2
- * Webhook Manager Service
3
- *
4
- * Orchestrates the Cloudflare Tunnel and GitHub Webhook lifecycle.
5
- * Follows the singleton pattern used by NotificationWatcherService
6
- * and PrSyncWatcherService.
7
- *
8
- * Lifecycle:
9
- * 1. Start Cloudflare Tunnel to get a public URL
10
- * 2. Register GitHub webhooks pointing to the tunnel URL
11
- * 3. Monitor for tunnel URL changes → update webhooks
12
- * 4. On shutdown → remove webhooks → stop tunnel
13
- *
14
- * The manager is optional — if cloudflared is not installed or webhook
15
- * registration fails, the system falls back to polling gracefully.
16
- */
17
- import type { ITunnelService } from '../../../application/ports/output/services/tunnel-service.interface.js';
18
- import type { IWebhookService } from '../../../application/ports/output/services/webhook-service.interface.js';
19
- import type { RegisteredWebhook, WebhookDeliveryRecord } from './github-webhook.service.js';
20
- export interface WebhookSystemStatus {
21
- running: boolean;
22
- tunnel: {
23
- connected: boolean;
24
- publicUrl: string | null;
25
- };
26
- webhooks: {
27
- registered: readonly RegisteredWebhook[];
28
- totalDeliveries: number;
29
- successCount: number;
30
- errorCount: number;
31
- ignoredCount: number;
32
- };
33
- startedAt: string | null;
34
- }
35
- export declare class WebhookManagerService {
36
- private readonly tunnelService;
37
- private readonly webhookService;
38
- private running;
39
- private startedAt;
40
- constructor(tunnelService: ITunnelService, webhookService: IWebhookService);
41
- /**
42
- * Start the tunnel and register webhooks.
43
- * Fails gracefully — logs warnings but does not throw.
44
- *
45
- * @param localPort - The local web server port to tunnel
46
- */
47
- start(localPort: number): Promise<void>;
48
- /**
49
- * Stop the webhook system — remove webhooks, then stop the tunnel.
50
- */
51
- stop(): Promise<void>;
52
- isRunning(): boolean;
53
- getTunnelUrl(): string | null;
54
- getStatus(): WebhookSystemStatus;
55
- getDeliveryHistory(): readonly WebhookDeliveryRecord[];
56
- }
57
- /**
58
- * Initialize the webhook manager singleton.
59
- * Must be called once during web server startup.
60
- *
61
- * @throws Error if the manager is already initialized
62
- */
63
- export declare function initializeWebhookManager(tunnelService: ITunnelService, webhookService: IWebhookService): void;
64
- /**
65
- * Get the webhook manager singleton.
66
- *
67
- * @returns The webhook manager service
68
- * @throws Error if the manager hasn't been initialized yet
69
- */
70
- export declare function getWebhookManager(): WebhookManagerService;
71
- /**
72
- * Check if the webhook manager has been initialized.
73
- */
74
- export declare function hasWebhookManager(): boolean;
75
- /**
76
- * Reset the webhook manager singleton (for testing purposes only).
77
- * Stops the manager if running before resetting.
78
- *
79
- * @internal
80
- */
81
- export declare function resetWebhookManager(): void;
82
- //# sourceMappingURL=webhook-manager.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webhook-manager.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/webhook/webhook-manager.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wEAAwE,CAAC;AAC7G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yEAAyE,CAAC;AAC/G,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EAEtB,MAAM,6BAA6B,CAAC;AAErC,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE;QACN,SAAS,EAAE,OAAO,CAAC;QACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,CAAC;IACF,QAAQ,EAAE;QACR,UAAU,EAAE,SAAS,iBAAiB,EAAE,CAAC;QACzC,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAID,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiB;IAC/C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAkB;IACjD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAuB;gBAE5B,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe;IAK1E;;;;;OAKG;IACG,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2C7C;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B3B,SAAS,IAAI,OAAO;IAIpB,YAAY,IAAI,MAAM,GAAG,IAAI;IAI7B,SAAS,IAAI,mBAAmB;IAoChC,kBAAkB,IAAI,SAAS,qBAAqB,EAAE;CAOvD;AAoBD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,cAAc,EAC7B,cAAc,EAAE,eAAe,GAC9B,IAAI,CAMN;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,qBAAqB,CASzD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAM1C"}
@@ -1,206 +0,0 @@
1
- /**
2
- * Webhook Manager Service
3
- *
4
- * Orchestrates the Cloudflare Tunnel and GitHub Webhook lifecycle.
5
- * Follows the singleton pattern used by NotificationWatcherService
6
- * and PrSyncWatcherService.
7
- *
8
- * Lifecycle:
9
- * 1. Start Cloudflare Tunnel to get a public URL
10
- * 2. Register GitHub webhooks pointing to the tunnel URL
11
- * 3. Monitor for tunnel URL changes → update webhooks
12
- * 4. On shutdown → remove webhooks → stop tunnel
13
- *
14
- * The manager is optional — if cloudflared is not installed or webhook
15
- * registration fails, the system falls back to polling gracefully.
16
- */
17
- const TAG = '[WebhookManager]';
18
- export class WebhookManagerService {
19
- tunnelService;
20
- webhookService;
21
- running = false;
22
- startedAt = null;
23
- constructor(tunnelService, webhookService) {
24
- this.tunnelService = tunnelService;
25
- this.webhookService = webhookService;
26
- }
27
- /**
28
- * Start the tunnel and register webhooks.
29
- * Fails gracefully — logs warnings but does not throw.
30
- *
31
- * @param localPort - The local web server port to tunnel
32
- */
33
- async start(localPort) {
34
- if (this.running)
35
- return;
36
- try {
37
- // Step 1: Start the tunnel
38
- // eslint-disable-next-line no-console
39
- console.log(`${TAG} Starting Cloudflare Tunnel for port ${localPort}...`);
40
- const publicUrl = await this.tunnelService.start(localPort);
41
- // Step 2: Listen for URL changes
42
- this.tunnelService.onUrlChange(async (newUrl) => {
43
- // eslint-disable-next-line no-console
44
- console.log(`${TAG} Tunnel URL changed, updating webhooks...`);
45
- try {
46
- await this.webhookService.updateWebhookUrl(newUrl);
47
- }
48
- catch (error) {
49
- const msg = error instanceof Error ? error.message : String(error);
50
- // eslint-disable-next-line no-console
51
- console.warn(`${TAG} Failed to update webhooks after URL change: ${msg}`);
52
- }
53
- });
54
- // Step 3: Register webhooks with external services
55
- await this.webhookService.registerWebhooks(publicUrl);
56
- this.running = true;
57
- this.startedAt = new Date().toISOString();
58
- // eslint-disable-next-line no-console
59
- console.log(`${TAG} Webhook system ready (tunnel: ${publicUrl})`);
60
- }
61
- catch (error) {
62
- const msg = error instanceof Error ? error.message : String(error);
63
- // eslint-disable-next-line no-console
64
- console.warn(`${TAG} Failed to start webhook system (falling back to polling): ${msg}`);
65
- // Clean up partial state
66
- try {
67
- await this.tunnelService.stop();
68
- }
69
- catch {
70
- // Already stopped or never started
71
- }
72
- }
73
- }
74
- /**
75
- * Stop the webhook system — remove webhooks, then stop the tunnel.
76
- */
77
- async stop() {
78
- if (!this.running)
79
- return;
80
- // eslint-disable-next-line no-console
81
- console.log(`${TAG} Shutting down webhook system...`);
82
- try {
83
- await this.webhookService.removeWebhooks();
84
- }
85
- catch (error) {
86
- const msg = error instanceof Error ? error.message : String(error);
87
- // eslint-disable-next-line no-console
88
- console.warn(`${TAG} Failed to remove webhooks during shutdown: ${msg}`);
89
- }
90
- try {
91
- await this.tunnelService.stop();
92
- }
93
- catch (error) {
94
- const msg = error instanceof Error ? error.message : String(error);
95
- // eslint-disable-next-line no-console
96
- console.warn(`${TAG} Failed to stop tunnel during shutdown: ${msg}`);
97
- }
98
- this.running = false;
99
- // eslint-disable-next-line no-console
100
- console.log(`${TAG} Webhook system stopped`);
101
- }
102
- isRunning() {
103
- return this.running;
104
- }
105
- getTunnelUrl() {
106
- return this.tunnelService.getPublicUrl();
107
- }
108
- getStatus() {
109
- const ghService = this.webhookService;
110
- const deliveries = typeof ghService.getDeliveryHistory === 'function' ? ghService.getDeliveryHistory() : [];
111
- const registered = typeof ghService.getRegisteredWebhooks === 'function'
112
- ? ghService.getRegisteredWebhooks()
113
- : [];
114
- let successCount = 0;
115
- let errorCount = 0;
116
- let ignoredCount = 0;
117
- for (const d of deliveries) {
118
- if (d.status === 'success')
119
- successCount++;
120
- else if (d.status === 'error')
121
- errorCount++;
122
- else
123
- ignoredCount++;
124
- }
125
- return {
126
- running: this.running,
127
- tunnel: {
128
- connected: this.tunnelService.isRunning(),
129
- publicUrl: this.tunnelService.getPublicUrl(),
130
- },
131
- webhooks: {
132
- registered,
133
- totalDeliveries: deliveries.length,
134
- successCount,
135
- errorCount,
136
- ignoredCount,
137
- },
138
- startedAt: this.startedAt,
139
- };
140
- }
141
- getDeliveryHistory() {
142
- const ghService = this.webhookService;
143
- if (typeof ghService.getDeliveryHistory === 'function') {
144
- return ghService.getDeliveryHistory();
145
- }
146
- return [];
147
- }
148
- }
149
- // --- Singleton accessors ---
150
- //
151
- // The singleton is stored on globalThis so that it survives module duplication
152
- // across bundler contexts (e.g. Next.js Turbopack bundles API routes separately
153
- // from the dev-server entry point, giving each its own copy of module-level
154
- // variables). By using globalThis, the same manager instance is visible to both
155
- // the initializer (dev-server.ts / CLI) and the API route handlers.
156
- const GLOBAL_KEY = '__shepWebhookManager';
157
- function getInstance() {
158
- return globalThis[GLOBAL_KEY] ?? null;
159
- }
160
- function setInstance(instance) {
161
- globalThis[GLOBAL_KEY] = instance;
162
- }
163
- /**
164
- * Initialize the webhook manager singleton.
165
- * Must be called once during web server startup.
166
- *
167
- * @throws Error if the manager is already initialized
168
- */
169
- export function initializeWebhookManager(tunnelService, webhookService) {
170
- if (getInstance() !== null) {
171
- throw new Error('Webhook manager already initialized. Cannot re-initialize.');
172
- }
173
- setInstance(new WebhookManagerService(tunnelService, webhookService));
174
- }
175
- /**
176
- * Get the webhook manager singleton.
177
- *
178
- * @returns The webhook manager service
179
- * @throws Error if the manager hasn't been initialized yet
180
- */
181
- export function getWebhookManager() {
182
- const instance = getInstance();
183
- if (instance === null) {
184
- throw new Error('Webhook manager not initialized. Call initializeWebhookManager() during web server startup.');
185
- }
186
- return instance;
187
- }
188
- /**
189
- * Check if the webhook manager has been initialized.
190
- */
191
- export function hasWebhookManager() {
192
- return getInstance() !== null;
193
- }
194
- /**
195
- * Reset the webhook manager singleton (for testing purposes only).
196
- * Stops the manager if running before resetting.
197
- *
198
- * @internal
199
- */
200
- export function resetWebhookManager() {
201
- const instance = getInstance();
202
- if (instance !== null) {
203
- void instance.stop();
204
- }
205
- setInstance(null);
206
- }
@@ -1,3 +0,0 @@
1
- import type { WebhookSystemStatus } from '../../../../../packages/core/src/infrastructure/services/webhook/webhook-manager.service.js';
2
- export declare function loadWebhookStatus(): Promise<WebhookSystemStatus>;
3
- //# sourceMappingURL=load-webhook-status.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"load-webhook-status.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/load-webhook-status.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sEAAsE,CAAC;AAEhH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAiBtE"}
@@ -1,19 +0,0 @@
1
- 'use server';
2
- import { hasWebhookManager, getWebhookManager, } from '../../../../../packages/core/src/infrastructure/services/webhook/webhook-manager.service.js';
3
- export async function loadWebhookStatus() {
4
- if (!hasWebhookManager()) {
5
- return {
6
- running: false,
7
- tunnel: { connected: false, publicUrl: null },
8
- webhooks: {
9
- registered: [],
10
- totalDeliveries: 0,
11
- successCount: 0,
12
- errorCount: 0,
13
- ignoredCount: 0,
14
- },
15
- startedAt: null,
16
- };
17
- }
18
- return getWebhookManager().getStatus();
19
- }
@@ -1,9 +0,0 @@
1
- /**
2
- * Webhook Delivery History: GET /api/webhooks/deliveries
3
- *
4
- * Returns recent webhook delivery records with optional filtering.
5
- * Query params: ?status=success|error|ignored&eventType=pull_request&limit=50
6
- */
7
- export declare const dynamic = "force-dynamic";
8
- export declare function GET(request: Request): Promise<Response>;
9
- //# sourceMappingURL=route.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../../src/presentation/web/app/api/webhooks/deliveries/route.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,eAAO,MAAM,OAAO,kBAAkB,CAAC;AAEvC,wBAAsB,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAsB7D"}
@@ -1,27 +0,0 @@
1
- /**
2
- * Webhook Delivery History: GET /api/webhooks/deliveries
3
- *
4
- * Returns recent webhook delivery records with optional filtering.
5
- * Query params: ?status=success|error|ignored&eventType=pull_request&limit=50
6
- */
7
- import { hasWebhookManager, getWebhookManager, } from '../../../../../../../packages/core/src/infrastructure/services/webhook/webhook-manager.service.js';
8
- export const dynamic = 'force-dynamic';
9
- export async function GET(request) {
10
- if (!hasWebhookManager()) {
11
- return Response.json({ deliveries: [] });
12
- }
13
- const url = new URL(request.url);
14
- const statusFilter = url.searchParams.get('status');
15
- const eventTypeFilter = url.searchParams.get('eventType');
16
- const limitParam = url.searchParams.get('limit');
17
- const limit = limitParam ? Math.min(parseInt(limitParam, 10) || 50, 200) : 50;
18
- const manager = getWebhookManager();
19
- let deliveries = [...manager.getDeliveryHistory()];
20
- if (statusFilter) {
21
- deliveries = deliveries.filter((d) => d.status === statusFilter);
22
- }
23
- if (eventTypeFilter) {
24
- deliveries = deliveries.filter((d) => d.eventType === eventTypeFilter);
25
- }
26
- return Response.json({ deliveries: deliveries.slice(0, limit) });
27
- }
@@ -1,17 +0,0 @@
1
- /**
2
- * GitHub Webhook Receiver: POST /api/webhooks/github
3
- *
4
- * Receives webhook events from GitHub, validates the HMAC-SHA256 signature,
5
- * and routes the event to the GitHubWebhookService for processing.
6
- *
7
- * This endpoint is exposed via a Cloudflare Tunnel so GitHub can reach it.
8
- * Only POST requests are accepted; all other methods return 405.
9
- */
10
- export declare const dynamic = "force-dynamic";
11
- export declare function POST(request: Request): Promise<Response>;
12
- /**
13
- * Health check: GET /api/webhooks/github
14
- * Returns whether the webhook system is active.
15
- */
16
- export declare function GET(): Promise<Response>;
17
- //# sourceMappingURL=route.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../../src/presentation/web/app/api/webhooks/github/route.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,eAAO,MAAM,OAAO,kBAAkB,CAAC;AAEvC,wBAAsB,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAsD9D;AAED;;;GAGG;AACH,wBAAsB,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAS7C"}
@@ -1,70 +0,0 @@
1
- /**
2
- * GitHub Webhook Receiver: POST /api/webhooks/github
3
- *
4
- * Receives webhook events from GitHub, validates the HMAC-SHA256 signature,
5
- * and routes the event to the GitHubWebhookService for processing.
6
- *
7
- * This endpoint is exposed via a Cloudflare Tunnel so GitHub can reach it.
8
- * Only POST requests are accepted; all other methods return 405.
9
- */
10
- import { resolve } from '../../../../lib/server-container.js';
11
- import { hasWebhookManager } from '../../../../../../../packages/core/src/infrastructure/services/webhook/webhook-manager.service.js';
12
- export const dynamic = 'force-dynamic';
13
- export async function POST(request) {
14
- // Verify webhook system is running
15
- if (!hasWebhookManager()) {
16
- return Response.json({ error: 'Webhook system not initialized' }, { status: 503 });
17
- }
18
- // Read raw body for signature validation
19
- const rawBody = await request.text();
20
- if (!rawBody) {
21
- return Response.json({ error: 'Empty request body' }, { status: 400 });
22
- }
23
- // Get the webhook service from DI container
24
- let webhookService;
25
- try {
26
- webhookService = resolve('IWebhookService');
27
- }
28
- catch {
29
- return Response.json({ error: 'Webhook service not available' }, { status: 503 });
30
- }
31
- // Validate GitHub signature
32
- const signature = request.headers.get('x-hub-signature-256') ?? '';
33
- const validation = webhookService.validateSignature(rawBody, signature, webhookService.getSecret());
34
- if (!validation.valid) {
35
- // eslint-disable-next-line no-console
36
- console.warn(`[WebhookRoute] Invalid signature: ${validation.error}`);
37
- return Response.json({ error: `Invalid signature: ${validation.error}` }, { status: 401 });
38
- }
39
- // Parse the event
40
- const eventType = request.headers.get('x-github-event') ?? 'unknown';
41
- const deliveryId = request.headers.get('x-github-delivery') ?? 'unknown';
42
- let payload;
43
- try {
44
- payload = JSON.parse(rawBody);
45
- }
46
- catch {
47
- return Response.json({ error: 'Invalid JSON payload' }, { status: 400 });
48
- }
49
- // Process the event asynchronously (respond immediately to GitHub)
50
- void webhookService.handleEvent({
51
- source: 'github',
52
- eventType,
53
- deliveryId,
54
- payload,
55
- });
56
- return Response.json({ received: true, deliveryId });
57
- }
58
- /**
59
- * Health check: GET /api/webhooks/github
60
- * Returns whether the webhook system is active.
61
- */
62
- export async function GET() {
63
- const active = hasWebhookManager();
64
- return Response.json({
65
- active,
66
- message: active
67
- ? 'Webhook receiver is active'
68
- : 'Webhook system not initialized (cloudflared may not be installed)',
69
- });
70
- }
@@ -1,9 +0,0 @@
1
- /**
2
- * Webhook System Status: GET /api/webhooks/status
3
- *
4
- * Returns the full webhook system status including tunnel state,
5
- * registered webhooks, and delivery statistics.
6
- */
7
- export declare const dynamic = "force-dynamic";
8
- export declare function GET(): Promise<Response>;
9
- //# sourceMappingURL=route.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../../src/presentation/web/app/api/webhooks/status/route.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,eAAO,MAAM,OAAO,kBAAkB,CAAC;AAEvC,wBAAsB,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAkB7C"}
@@ -1,26 +0,0 @@
1
- /**
2
- * Webhook System Status: GET /api/webhooks/status
3
- *
4
- * Returns the full webhook system status including tunnel state,
5
- * registered webhooks, and delivery statistics.
6
- */
7
- import { hasWebhookManager, getWebhookManager, } from '../../../../../../../packages/core/src/infrastructure/services/webhook/webhook-manager.service.js';
8
- export const dynamic = 'force-dynamic';
9
- export async function GET() {
10
- if (!hasWebhookManager()) {
11
- return Response.json({
12
- running: false,
13
- tunnel: { connected: false, publicUrl: null },
14
- webhooks: {
15
- registered: [],
16
- totalDeliveries: 0,
17
- successCount: 0,
18
- errorCount: 0,
19
- ignoredCount: 0,
20
- },
21
- startedAt: null,
22
- });
23
- }
24
- const manager = getWebhookManager();
25
- return Response.json(manager.getStatus());
26
- }
@@ -1,4 +0,0 @@
1
- /** Skip static pre-rendering since we need runtime webhook manager. */
2
- export declare const dynamic = "force-dynamic";
3
- export default function WebhooksPage(): Promise<import("react/jsx-runtime").JSX.Element>;
4
- //# sourceMappingURL=page.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/webhooks/page.tsx"],"names":[],"mappings":"AAGA,uEAAuE;AACvE,eAAO,MAAM,OAAO,kBAAkB,CAAC;AAEvC,wBAA8B,YAAY,qDAQzC"}
@@ -1,9 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { loadWebhookStatus } from '../actions/load-webhook-status.js';
3
- import { WebhooksPageClient } from '../../components/features/webhooks/webhooks-page-client.js';
4
- /** Skip static pre-rendering since we need runtime webhook manager. */
5
- export const dynamic = 'force-dynamic';
6
- export default async function WebhooksPage() {
7
- const status = await loadWebhookStatus();
8
- return (_jsx("div", { className: "flex h-full flex-col px-6 pb-6", children: _jsx(WebhooksPageClient, { initialStatus: status }) }));
9
- }
@@ -1,32 +0,0 @@
1
- export type WebhookDeliveryStatus = 'success' | 'ignored' | 'error';
2
- export interface WebhookDeliveryRecord {
3
- deliveryId: string;
4
- eventType: string;
5
- source: string;
6
- receivedAt: string;
7
- status: WebhookDeliveryStatus;
8
- statusMessage: string;
9
- durationMs: number;
10
- payload: Record<string, unknown>;
11
- }
12
- export interface RegisteredWebhookInfo {
13
- repoFullName: string;
14
- webhookId: number;
15
- repositoryPath: string;
16
- }
17
- export interface WebhookSystemStatus {
18
- running: boolean;
19
- tunnel: {
20
- connected: boolean;
21
- publicUrl: string | null;
22
- };
23
- webhooks: {
24
- registered: readonly RegisteredWebhookInfo[];
25
- totalDeliveries: number;
26
- successCount: number;
27
- errorCount: number;
28
- ignoredCount: number;
29
- };
30
- startedAt: string | null;
31
- }
32
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/webhooks/types.ts"],"names":[],"mappings":"AAAA,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,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE;QACN,SAAS,EAAE,OAAO,CAAC;QACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,CAAC;IACF,QAAQ,EAAE;QACR,UAAU,EAAE,SAAS,qBAAqB,EAAE,CAAC;QAC7C,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B"}
@@ -1,6 +0,0 @@
1
- import type { WebhookDeliveryRecord } from './types.js';
2
- export interface WebhookDeliveryTableProps {
3
- deliveries: WebhookDeliveryRecord[];
4
- }
5
- export declare function WebhookDeliveryTable({ deliveries }: WebhookDeliveryTableProps): import("react/jsx-runtime").JSX.Element;
6
- //# sourceMappingURL=webhook-delivery-table.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webhook-delivery-table.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/webhooks/webhook-delivery-table.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,qBAAqB,EAAyB,MAAM,SAAS,CAAC;AAE5E,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,qBAAqB,EAAE,CAAC;CACrC;AAcD,wBAAgB,oBAAoB,CAAC,EAAE,UAAU,EAAE,EAAE,yBAAyB,2CAsE7E"}
@@ -1,38 +0,0 @@
1
- 'use client';
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useState } from 'react';
4
- import { CheckCircle, XCircle, MinusCircle, ChevronDown, ChevronRight } from 'lucide-react';
5
- import { Card, CardContent, CardHeader, CardTitle } from '../../ui/card.js';
6
- import { Badge } from '../../ui/badge.js';
7
- import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '../../ui/select.js';
8
- import { cn } from '../../../lib/utils.js';
9
- const STATUS_ICON = {
10
- success: _jsx(CheckCircle, { className: "h-4 w-4 text-green-500" }),
11
- error: _jsx(XCircle, { className: "h-4 w-4 text-red-500" }),
12
- ignored: _jsx(MinusCircle, { className: "h-4 w-4 text-yellow-500" }),
13
- };
14
- const STATUS_LABEL = {
15
- success: 'Success',
16
- error: 'Error',
17
- ignored: 'Ignored',
18
- };
19
- export function WebhookDeliveryTable({ deliveries }) {
20
- const [statusFilter, setStatusFilter] = useState('all');
21
- const [eventTypeFilter, setEventTypeFilter] = useState('all');
22
- const [expandedId, setExpandedId] = useState(null);
23
- const eventTypes = [...new Set(deliveries.map((d) => d.eventType))];
24
- const filtered = deliveries.filter((d) => {
25
- if (statusFilter !== 'all' && d.status !== statusFilter)
26
- return false;
27
- if (eventTypeFilter !== 'all' && d.eventType !== eventTypeFilter)
28
- return false;
29
- return true;
30
- });
31
- return (_jsxs(Card, { children: [_jsx(CardHeader, { children: _jsxs("div", { className: "flex items-center justify-between", children: [_jsxs(CardTitle, { className: "text-sm font-medium", children: ["Delivery History (", filtered.length, ")"] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsxs(Select, { value: statusFilter, onValueChange: setStatusFilter, children: [_jsx(SelectTrigger, { className: "h-8 w-[120px]", children: _jsx(SelectValue, { placeholder: "Status" }) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "all", children: "All Status" }), _jsx(SelectItem, { value: "success", children: "Success" }), _jsx(SelectItem, { value: "error", children: "Error" }), _jsx(SelectItem, { value: "ignored", children: "Ignored" })] })] }), _jsxs(Select, { value: eventTypeFilter, onValueChange: setEventTypeFilter, children: [_jsx(SelectTrigger, { className: "h-8 w-[150px]", children: _jsx(SelectValue, { placeholder: "Event Type" }) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "all", children: "All Events" }), eventTypes.map((type) => (_jsx(SelectItem, { value: type, children: type }, type)))] })] })] })] }) }), _jsx(CardContent, { children: filtered.length === 0 ? (_jsx("p", { className: "text-muted-foreground py-8 text-center text-sm", children: "No delivery records yet. Webhook events will appear here when received." })) : (_jsx("div", { className: "space-y-1", children: filtered.map((delivery) => (_jsx(DeliveryRow, { delivery: delivery, expanded: expandedId === delivery.deliveryId, onToggle: () => setExpandedId(expandedId === delivery.deliveryId ? null : delivery.deliveryId) }, delivery.deliveryId))) })) })] }));
32
- }
33
- function DeliveryRow({ delivery, expanded, onToggle, }) {
34
- const time = new Date(delivery.receivedAt);
35
- const timeStr = time.toLocaleTimeString();
36
- const dateStr = time.toLocaleDateString();
37
- return (_jsxs("div", { className: cn('rounded-lg border', expanded && 'bg-muted/50'), children: [_jsxs("button", { type: "button", className: "flex w-full items-center gap-3 px-3 py-2 text-left text-sm", onClick: onToggle, children: [expanded ? (_jsx(ChevronDown, { className: "h-4 w-4 shrink-0" })) : (_jsx(ChevronRight, { className: "h-4 w-4 shrink-0" })), STATUS_ICON[delivery.status], _jsx(Badge, { variant: "outline", className: "text-xs", children: delivery.eventType }), _jsx("span", { className: "text-muted-foreground min-w-0 flex-1 truncate text-xs", children: delivery.deliveryId }), _jsxs("span", { className: "text-muted-foreground shrink-0 text-xs", children: [delivery.durationMs, "ms"] }), _jsx("span", { className: "text-muted-foreground shrink-0 text-xs", children: timeStr })] }), expanded ? (_jsxs("div", { className: "border-t px-3 py-3", children: [_jsxs("div", { className: "mb-2 grid grid-cols-2 gap-2 text-xs", children: [_jsxs("div", { children: [_jsx("span", { className: "text-muted-foreground", children: "Status:" }), ' ', _jsx(Badge, { variant: delivery.status === 'error' ? 'destructive' : 'secondary', className: "text-xs", children: STATUS_LABEL[delivery.status] })] }), _jsxs("div", { children: [_jsx("span", { className: "text-muted-foreground", children: "Date:" }), " ", dateStr, " ", timeStr] }), _jsxs("div", { children: [_jsx("span", { className: "text-muted-foreground", children: "Duration:" }), " ", delivery.durationMs, "ms"] }), _jsxs("div", { children: [_jsx("span", { className: "text-muted-foreground", children: "Source:" }), " ", delivery.source] })] }), _jsxs("div", { className: "mb-2", children: [_jsx("span", { className: "text-muted-foreground text-xs", children: "Message:" }), _jsx("p", { className: "text-sm", children: delivery.statusMessage })] }), _jsxs("div", { children: [_jsx("span", { className: "text-muted-foreground text-xs", children: "Payload:" }), _jsx("pre", { className: "bg-muted mt-1 max-h-60 overflow-auto rounded-md p-2 text-xs", children: JSON.stringify(delivery.payload, null, 2) })] })] })) : null] }));
38
- }
@@ -1,9 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/react';
2
- import { WebhookDeliveryTable } from './webhook-delivery-table.js';
3
- declare const meta: Meta<typeof WebhookDeliveryTable>;
4
- export default meta;
5
- type Story = StoryObj<typeof meta>;
6
- export declare const WithDeliveries: Story;
7
- export declare const Empty: Story;
8
- export declare const OnlyErrors: Story;
9
- //# sourceMappingURL=webhook-delivery-table.stories.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webhook-delivery-table.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/webhooks/webhook-delivery-table.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAwDhE,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,oBAAoB,CAK3C,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,cAAc,EAAE,KAE5B,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAEnB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAExB,CAAC"}