@shepai/cli 1.121.0 → 1.122.0

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 (265) hide show
  1. package/apis/json-schema/PhaseTiming.yaml +17 -0
  2. package/dist/packages/core/src/application/ports/output/agents/agent-executor.interface.d.ts +19 -5
  3. package/dist/packages/core/src/application/ports/output/agents/agent-executor.interface.d.ts.map +1 -1
  4. package/dist/packages/core/src/application/ports/output/agents/phase-timing-repository.interface.d.ts +1 -1
  5. package/dist/packages/core/src/application/ports/output/agents/phase-timing-repository.interface.d.ts.map +1 -1
  6. package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.d.ts +3 -1
  7. package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.d.ts.map +1 -1
  8. package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.js +4 -2
  9. package/dist/packages/core/src/domain/generated/output.d.ts +22 -0
  10. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  11. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/039-add-phase-timing-extended-stats.d.ts +11 -0
  12. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/039-add-phase-timing-extended-stats.d.ts.map +1 -0
  13. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/039-add-phase-timing-extended-stats.js +25 -0
  14. package/dist/packages/core/src/infrastructure/repositories/sqlite-phase-timing.repository.d.ts +1 -1
  15. package/dist/packages/core/src/infrastructure/repositories/sqlite-phase-timing.repository.d.ts.map +1 -1
  16. package/dist/packages/core/src/infrastructure/repositories/sqlite-phase-timing.repository.js +42 -2
  17. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.d.ts +5 -0
  18. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.d.ts.map +1 -1
  19. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.js +38 -13
  20. package/dist/packages/core/src/infrastructure/services/agents/common/executors/dev-executor.service.d.ts.map +1 -1
  21. package/dist/packages/core/src/infrastructure/services/agents/common/executors/dev-executor.service.js +23 -2
  22. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence-output-parser.d.ts +21 -0
  23. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence-output-parser.d.ts.map +1 -1
  24. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence-output-parser.js +71 -0
  25. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.d.ts.map +1 -1
  26. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.js +11 -1
  27. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.d.ts.map +1 -1
  28. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.js +34 -1
  29. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.d.ts.map +1 -1
  30. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.js +12 -0
  31. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts.map +1 -1
  32. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js +5 -0
  33. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/evidence-prompts.d.ts.map +1 -1
  34. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/evidence-prompts.js +18 -6
  35. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/fast-implement.prompt.d.ts.map +1 -1
  36. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/fast-implement.prompt.js +4 -1
  37. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/phase-timing-context.d.ts +5 -0
  38. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/phase-timing-context.d.ts.map +1 -1
  39. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/phase-timing-context.js +9 -0
  40. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts +1 -0
  41. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts.map +1 -1
  42. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.js +20 -1
  43. package/dist/src/presentation/tui/prompts/prd-review-question.prompt.d.ts +1 -1
  44. package/dist/src/presentation/tui/prompts/prd-review-question.prompt.d.ts.map +1 -1
  45. package/dist/src/presentation/tui/prompts/prd-review-question.prompt.js +5 -2
  46. package/dist/src/presentation/tui/wizards/prd-review.wizard.d.ts.map +1 -1
  47. package/dist/src/presentation/tui/wizards/prd-review.wizard.js +4 -2
  48. package/dist/src/presentation/web/app/(dashboard)/get-graph-data.d.ts.map +1 -1
  49. package/dist/src/presentation/web/app/(dashboard)/get-graph-data.js +2 -43
  50. package/dist/src/presentation/web/app/actions/approve-feature.d.ts.map +1 -1
  51. package/dist/src/presentation/web/app/actions/approve-feature.js +9 -0
  52. package/dist/src/presentation/web/app/actions/get-feature-phase-timings.d.ts +5 -0
  53. package/dist/src/presentation/web/app/actions/get-feature-phase-timings.d.ts.map +1 -1
  54. package/dist/src/presentation/web/app/actions/get-feature-phase-timings.js +5 -0
  55. package/dist/src/presentation/web/app/actions/reject-feature.d.ts.map +1 -1
  56. package/dist/src/presentation/web/app/actions/reject-feature.js +9 -0
  57. package/dist/src/presentation/web/app/actions/stop-feature.d.ts +5 -0
  58. package/dist/src/presentation/web/app/actions/stop-feature.d.ts.map +1 -0
  59. package/dist/src/presentation/web/app/actions/stop-feature.js +30 -0
  60. package/dist/src/presentation/web/app/api/npm-version/route.d.ts.map +1 -1
  61. package/dist/src/presentation/web/app/api/npm-version/route.js +9 -1
  62. package/dist/src/presentation/web/app/api/sessions/route.d.ts.map +1 -1
  63. package/dist/src/presentation/web/app/api/sessions/route.js +43 -10
  64. package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.d.ts.map +1 -1
  65. package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.js +15 -6
  66. package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.stories.d.ts.map +1 -1
  67. package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.stories.js +35 -0
  68. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.d.ts.map +1 -1
  69. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.js +2 -2
  70. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.d.ts +2 -0
  71. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.d.ts.map +1 -1
  72. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.js +4 -0
  73. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts +1 -0
  74. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts.map +1 -1
  75. package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.js +1 -1
  76. package/dist/src/presentation/web/components/features/control-center/control-center-inner.d.ts.map +1 -1
  77. package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +3 -1
  78. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts +1 -0
  79. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts.map +1 -1
  80. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.js +18 -0
  81. package/dist/src/presentation/web/lib/derive-graph.d.ts +2 -0
  82. package/dist/src/presentation/web/lib/derive-graph.d.ts.map +1 -1
  83. package/dist/src/presentation/web/lib/derive-graph.js +5 -0
  84. package/dist/tsconfig.build.tsbuildinfo +1 -1
  85. package/package.json +3 -5
  86. package/web/.next/BUILD_ID +1 -1
  87. package/web/.next/build-manifest.json +2 -2
  88. package/web/.next/fallback-build-manifest.json +2 -2
  89. package/web/.next/prerender-manifest.json +3 -3
  90. package/web/.next/required-server-files.js +2 -2
  91. package/web/.next/required-server-files.json +2 -2
  92. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +57 -42
  93. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
  94. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  95. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  96. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +69 -54
  97. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +1 -1
  98. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  99. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  100. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +69 -54
  101. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -1
  102. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  103. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  104. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +53 -38
  105. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
  106. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  107. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  108. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +57 -42
  109. package/web/.next/server/app/(dashboard)/create/page.js +1 -1
  110. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  111. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  112. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +69 -54
  113. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +1 -1
  114. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  115. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  116. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +69 -54
  117. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -1
  118. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  119. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  120. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +53 -38
  121. package/web/.next/server/app/(dashboard)/page.js +1 -1
  122. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  123. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  124. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +53 -38
  125. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
  126. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  127. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  128. package/web/.next/server/app/_global-error.html +2 -2
  129. package/web/.next/server/app/_global-error.rsc +1 -1
  130. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  131. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  132. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  133. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  134. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  135. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  136. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  137. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  138. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  139. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  140. package/web/.next/server/app/api/sessions/route.js +1 -1
  141. package/web/.next/server/app/api/sessions/route.js.nft.json +1 -1
  142. package/web/.next/server/app/settings/page/server-reference-manifest.json +6 -6
  143. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  144. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  145. package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  146. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  147. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  148. package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  149. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  150. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  151. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  152. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  153. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js +1 -1
  154. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js.map +1 -1
  155. package/web/.next/server/chunks/[externals]_node:fs_ddf6f167._.js +3 -0
  156. package/web/.next/server/chunks/[externals]_node:fs_ddf6f167._.js.map +1 -0
  157. package/web/.next/server/chunks/[root-of-the-server]__3b72e8b0._.js +1 -1
  158. package/web/.next/server/chunks/[root-of-the-server]__3b72e8b0._.js.map +1 -1
  159. package/web/.next/server/chunks/[root-of-the-server]__42b7ab55._.js +1 -1
  160. package/web/.next/server/chunks/[root-of-the-server]__42b7ab55._.js.map +1 -1
  161. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  162. package/web/.next/server/chunks/[root-of-the-server]__a62bd945._.js +3 -0
  163. package/web/.next/server/chunks/[root-of-the-server]__a62bd945._.js.map +1 -0
  164. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js +1 -1
  165. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
  166. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  167. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  168. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_f30d0343.js +3 -0
  169. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_f30d0343.js.map +1 -0
  170. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_9f1775bb.js +3 -0
  171. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_9f1775bb.js.map +1 -0
  172. package/web/.next/server/chunks/ssr/[root-of-the-server]__06fef644._.js +1 -1
  173. package/web/.next/server/chunks/ssr/[root-of-the-server]__2698e9f4._.js +3 -0
  174. package/web/.next/server/chunks/ssr/[root-of-the-server]__2698e9f4._.js.map +1 -0
  175. package/web/.next/server/chunks/ssr/[root-of-the-server]__545792ab._.js +1 -1
  176. package/web/.next/server/chunks/ssr/[root-of-the-server]__545792ab._.js.map +1 -1
  177. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  178. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js.map +1 -1
  179. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js +2 -2
  180. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js.map +1 -1
  181. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  182. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js.map +1 -1
  183. package/web/.next/server/chunks/ssr/[root-of-the-server]__8c553503._.js +2 -2
  184. package/web/.next/server/chunks/ssr/[root-of-the-server]__8e3bf5d7._.js +3 -0
  185. package/web/.next/server/chunks/ssr/[root-of-the-server]__8e3bf5d7._.js.map +1 -0
  186. package/web/.next/server/chunks/ssr/[root-of-the-server]__a022445f._.js +2 -2
  187. package/web/.next/server/chunks/ssr/[root-of-the-server]__a022445f._.js.map +1 -1
  188. package/web/.next/server/chunks/ssr/[root-of-the-server]__a7de2711._.js +2 -2
  189. package/web/.next/server/chunks/ssr/[root-of-the-server]__a7de2711._.js.map +1 -1
  190. package/web/.next/server/chunks/ssr/[root-of-the-server]__b724df9e._.js +1 -1
  191. package/web/.next/server/chunks/ssr/[root-of-the-server]__b724df9e._.js.map +1 -1
  192. package/web/.next/server/chunks/ssr/[root-of-the-server]__c07f9f79._.js +3 -0
  193. package/web/.next/server/chunks/ssr/[root-of-the-server]__c07f9f79._.js.map +1 -0
  194. package/web/.next/server/chunks/ssr/[root-of-the-server]__c605a375._.js +3 -0
  195. package/web/.next/server/chunks/ssr/[root-of-the-server]__c605a375._.js.map +1 -0
  196. package/web/.next/server/chunks/ssr/_0dc2cfd3._.js +1 -1
  197. package/web/.next/server/chunks/ssr/_0dc2cfd3._.js.map +1 -1
  198. package/web/.next/server/chunks/ssr/_135edb9c._.js +1 -1
  199. package/web/.next/server/chunks/ssr/_135edb9c._.js.map +1 -1
  200. package/web/.next/server/chunks/ssr/_1bb131c4._.js.map +1 -1
  201. package/web/.next/server/chunks/ssr/_2f6f48b8._.js +1 -1
  202. package/web/.next/server/chunks/ssr/_2f6f48b8._.js.map +1 -1
  203. package/web/.next/server/chunks/ssr/{_0314651a._.js → _6e403a1e._.js} +2 -2
  204. package/web/.next/server/chunks/ssr/{_0314651a._.js.map → _6e403a1e._.js.map} +1 -1
  205. package/web/.next/server/chunks/ssr/{_68cc9b82._.js → _9f1ab4ee._.js} +2 -2
  206. package/web/.next/server/chunks/ssr/{_68cc9b82._.js.map → _9f1ab4ee._.js.map} +1 -1
  207. package/web/.next/server/chunks/ssr/_a37f5f18._.js +1 -1
  208. package/web/.next/server/chunks/ssr/_cc77a143._.js +1 -1
  209. package/web/.next/server/chunks/ssr/_cc77a143._.js.map +1 -1
  210. package/web/.next/server/chunks/ssr/_fffd4212._.js +3 -0
  211. package/web/.next/server/chunks/ssr/{_73a34cb2._.js.map → _fffd4212._.js.map} +1 -1
  212. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  213. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  214. package/web/.next/server/chunks/ssr/{src_presentation_web_0835b28e._.js → src_presentation_web_5f039db1._.js} +3 -3
  215. package/web/.next/server/chunks/ssr/{src_presentation_web_0835b28e._.js.map → src_presentation_web_5f039db1._.js.map} +1 -1
  216. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_2a52b697.js +3 -0
  217. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_2a52b697.js.map +1 -0
  218. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js +1 -1
  219. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js.map +1 -1
  220. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js +1 -1
  221. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js.map +1 -1
  222. package/web/.next/server/chunks/ssr/{src_presentation_web_e8034a29._.js → src_presentation_web_c4337169._.js} +3 -3
  223. package/web/.next/server/chunks/ssr/{src_presentation_web_e8034a29._.js.map → src_presentation_web_c4337169._.js.map} +1 -1
  224. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +1 -1
  225. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js.map +1 -1
  226. package/web/.next/server/chunks/ssr/src_presentation_web_components_bf50c527._.js +1 -1
  227. package/web/.next/server/chunks/ssr/src_presentation_web_components_de814675._.js +1 -1
  228. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  229. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  230. package/web/.next/server/pages/500.html +2 -2
  231. package/web/.next/server/server-reference-manifest.js +1 -1
  232. package/web/.next/server/server-reference-manifest.json +311 -240
  233. package/web/.next/static/chunks/0dfc3b1cff4bdcc2.js +2 -0
  234. package/web/.next/static/chunks/{f27e3d3959bf91e6.js → 1c206da59596f056.js} +1 -1
  235. package/web/.next/static/chunks/2429cf8757ddad34.js +1 -0
  236. package/web/.next/static/chunks/{f22c2cdecc7a523b.js → 39dc15636654a1e3.js} +1 -1
  237. package/web/.next/static/chunks/{4c22a50608db401a.js → 3e9320301a0cac8b.js} +1 -1
  238. package/web/.next/static/chunks/447e720f6cf54767.js +1 -0
  239. package/web/.next/static/chunks/{0cc5f5ca1696267a.js → 53e9eda219a7f61c.js} +1 -1
  240. package/web/.next/static/chunks/{5186e2254580afd1.js → 7bc5806d9f82cc79.js} +1 -1
  241. package/web/.next/static/chunks/{4b58ac6e7721f9ea.js → 9076710a2df38d14.js} +1 -1
  242. package/web/.next/static/chunks/{8ded2620c2272c27.js → 9c2f294bf748b4ba.js} +2 -2
  243. package/web/.next/server/chunks/[root-of-the-server]__0fe7788d._.js +0 -3
  244. package/web/.next/server/chunks/[root-of-the-server]__0fe7788d._.js.map +0 -1
  245. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_ed372306.js +0 -3
  246. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_ed372306.js.map +0 -1
  247. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_32e26434.js +0 -3
  248. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_32e26434.js.map +0 -1
  249. package/web/.next/server/chunks/ssr/[root-of-the-server]__3b14e5a0._.js +0 -3
  250. package/web/.next/server/chunks/ssr/[root-of-the-server]__3b14e5a0._.js.map +0 -1
  251. package/web/.next/server/chunks/ssr/[root-of-the-server]__8b59c03e._.js +0 -3
  252. package/web/.next/server/chunks/ssr/[root-of-the-server]__8b59c03e._.js.map +0 -1
  253. package/web/.next/server/chunks/ssr/[root-of-the-server]__994ad9fe._.js +0 -3
  254. package/web/.next/server/chunks/ssr/[root-of-the-server]__994ad9fe._.js.map +0 -1
  255. package/web/.next/server/chunks/ssr/[root-of-the-server]__c9c1cfee._.js +0 -3
  256. package/web/.next/server/chunks/ssr/[root-of-the-server]__c9c1cfee._.js.map +0 -1
  257. package/web/.next/server/chunks/ssr/_73a34cb2._.js +0 -3
  258. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_e99d78dd.js +0 -3
  259. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_e99d78dd.js.map +0 -1
  260. package/web/.next/static/chunks/2132807f96110232.js +0 -1
  261. package/web/.next/static/chunks/9fdfff0a8c69ecd2.js +0 -2
  262. package/web/.next/static/chunks/c6a68bd98c2c0446.js +0 -1
  263. /package/web/.next/static/{Fg0DqzWA5hDmVmj5X9iq- → t8J3jMT2l7HfCuusAPC-b}/_buildManifest.js +0 -0
  264. /package/web/.next/static/{Fg0DqzWA5hDmVmj5X9iq- → t8J3jMT2l7HfCuusAPC-b}/_clientMiddlewareManifest.json +0 -0
  265. /package/web/.next/static/{Fg0DqzWA5hDmVmj5X9iq- → t8J3jMT2l7HfCuusAPC-b}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../src/presentation/web/app/build-feature-node-data.ts","../../../../../../../src/presentation/web/app/actions/approve-feature.ts","../../../../../../../src/presentation/web/app/actions/reject-feature.ts","../../../../../../../src/presentation/web/app/actions/get-feature-artifact.ts","../../../../../../../src/presentation/web/app/actions/get-research-artifact.ts","../../../../../../../src/presentation/web/app/actions/get-merge-review-data.ts","../../../../../../../src/presentation/web/app/actions/get-feature-phase-timings.ts","../../../../../../../src/presentation/web/app/actions/get-feature-plan.ts","../../../../../../../src/presentation/web/app/actions/get-feature-drawer-data.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/%40drawer/feature/%5BfeatureId%5D/%5Btab%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["import type { Feature, AgentRun } from '@shepai/core/domain/generated/output';\nimport { AgentRunStatus } from '@shepai/core/domain/generated/output';\nimport {\n deriveNodeState,\n deriveProgress,\n deriveLifecycle,\n} from '@/components/common/feature-node/derive-feature-state';\nimport { isProcessAlive } from '@shepai/core/infrastructure/services/process/is-process-alive';\nimport type { FeatureNodeData } from '@/components/common/feature-node';\n\nexport interface BuildFeatureNodeDataOptions {\n baseBranch?: string;\n repositoryName?: string;\n /** AI-generated one-liner from FeatureArtifact */\n oneLiner?: string;\n /** Remote URL for the repository (HTTPS) */\n remoteUrl?: string;\n /** Whether evidence collection is enabled (global workflow setting) */\n enableEvidence?: boolean;\n /** Whether evidence is committed to the PR body (global workflow setting) */\n commitEvidence?: boolean;\n /** Whether CI watch/fix loop is enabled (global workflow setting) */\n ciWatchEnabled?: boolean;\n}\n\n/**\n * Builds a FeatureNodeData object from a Feature entity and optional AgentRun.\n * This is the single-feature version of the logic in `buildGraphNodes`.\n */\nexport function buildFeatureNodeData(\n feature: Feature,\n run: AgentRun | null,\n options?: BuildFeatureNodeDataOptions\n): FeatureNodeData {\n // Detect crashed agents: DB says running/pending but PID is dead\n const isActive = run?.status === AgentRunStatus.running || run?.status === AgentRunStatus.pending;\n const pidAlive = isActive && run?.pid ? isProcessAlive(run.pid) : undefined;\n\n return {\n name: feature.name,\n description: feature.description ?? feature.slug,\n featureId: feature.id,\n lifecycle: deriveLifecycle(feature, run),\n repositoryPath: feature.repositoryPath,\n branch: feature.branch,\n specPath: feature.specPath,\n state: deriveNodeState(\n feature,\n run,\n pidAlive !== undefined ? { isPidAlive: pidAlive } : undefined\n ),\n progress: deriveProgress(feature),\n summary: feature.description,\n userQuery: feature.userQuery,\n createdAt: feature.createdAt instanceof Date ? feature.createdAt.getTime() : feature.createdAt,\n ...(feature.fast && { fastMode: true }),\n approvalGates: feature.approvalGates,\n push: feature.push,\n openPr: feature.openPr,\n ...(options?.enableEvidence != null && { enableEvidence: options.enableEvidence }),\n ...(options?.commitEvidence != null && { commitEvidence: options.commitEvidence }),\n ...(options?.ciWatchEnabled != null && { ciWatchEnabled: options.ciWatchEnabled }),\n ...(options?.repositoryName && { repositoryName: options.repositoryName }),\n ...(options?.baseBranch && { baseBranch: options.baseBranch }),\n ...(options?.oneLiner && { oneLiner: options.oneLiner }),\n ...(options?.remoteUrl && { remoteUrl: options.remoteUrl }),\n ...(run?.agentType && { agentType: run.agentType as FeatureNodeData['agentType'] }),\n ...(run?.modelId && { modelId: run.modelId }),\n ...(run?.error && { errorMessage: run.error }),\n ...(feature.plan != null && { hasPlan: true }),\n ...(feature.pr && {\n pr: {\n url: feature.pr.url,\n number: feature.pr.number,\n status: feature.pr.status,\n ciStatus: feature.pr.ciStatus,\n commitHash: feature.pr.commitHash,\n mergeable: feature.pr.mergeable,\n },\n }),\n };\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { ApproveAgentRunUseCase } from '@shepai/core/application/use-cases/agents/approve-agent-run.use-case';\nimport type { ResumeFeatureUseCase } from '@shepai/core/application/use-cases/features/resume-feature.use-case';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { IAgentRunRepository } from '@shepai/core/application/ports/output/agents/agent-run-repository.interface';\nimport type { PrdApprovalPayload } from '@shepai/core/domain/generated/output';\nimport { AgentRunStatus } from '@shepai/core/domain/generated/output';\n\nconst ERROR_STATUSES = new Set<string>([AgentRunStatus.failed, AgentRunStatus.interrupted]);\n\nexport async function approveFeature(\n featureId: string,\n payload?: PrdApprovalPayload\n): Promise<{ approved: boolean; error?: string }> {\n if (!featureId.trim()) {\n return { approved: false, error: 'Feature id is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { approved: false, error: 'Feature not found' };\n }\n\n if (!feature.agentRunId) {\n return { approved: false, error: 'Feature has no agent run' };\n }\n\n const runRepo = resolve<IAgentRunRepository>('IAgentRunRepository');\n const run = await runRepo.findById(feature.agentRunId);\n\n if (run && ERROR_STATUSES.has(run.status)) {\n const resumeUseCase = resolve<ResumeFeatureUseCase>('ResumeFeatureUseCase');\n await resumeUseCase.execute(featureId, { promptPrefix: 'User approved. Please continue.' });\n return { approved: true };\n }\n\n const approveUseCase = resolve<ApproveAgentRunUseCase>('ApproveAgentRunUseCase');\n const result = await approveUseCase.execute(feature.agentRunId, payload);\n\n if (!result.approved) {\n return { approved: false, error: result.reason };\n }\n\n return { approved: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to approve feature';\n return { approved: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { RejectAgentRunUseCase } from '@shepai/core/application/use-cases/agents/reject-agent-run.use-case';\nimport type { ResumeFeatureUseCase } from '@shepai/core/application/use-cases/features/resume-feature.use-case';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { IAgentRunRepository } from '@shepai/core/application/ports/output/agents/agent-run-repository.interface';\nimport { AgentRunStatus } from '@shepai/core/domain/generated/output';\n\nconst ERROR_STATUSES = new Set<string>([AgentRunStatus.failed, AgentRunStatus.interrupted]);\n\nexport async function rejectFeature(\n featureId: string,\n feedback: string,\n attachments?: string[]\n): Promise<{\n rejected: boolean;\n iteration?: number;\n iterationWarning?: boolean;\n error?: string;\n}> {\n if (!featureId.trim()) {\n return { rejected: false, error: 'Feature id is required' };\n }\n\n if (!feedback.trim()) {\n return { rejected: false, error: 'Feedback is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { rejected: false, error: 'Feature not found' };\n }\n\n if (!feature.agentRunId) {\n return { rejected: false, error: 'Feature has no agent run' };\n }\n\n const runRepo = resolve<IAgentRunRepository>('IAgentRunRepository');\n const run = await runRepo.findById(feature.agentRunId);\n\n if (run && ERROR_STATUSES.has(run.status)) {\n const resumeUseCase = resolve<ResumeFeatureUseCase>('ResumeFeatureUseCase');\n await resumeUseCase.execute(featureId, { promptPrefix: feedback });\n return { rejected: true, iteration: 1 };\n }\n\n const rejectUseCase = resolve<RejectAgentRunUseCase>('RejectAgentRunUseCase');\n const result = await rejectUseCase.execute(feature.agentRunId, feedback, attachments);\n\n if (!result.rejected) {\n return { rejected: false, error: result.reason };\n }\n\n return {\n rejected: true,\n iteration: result.iteration,\n iterationWarning: result.iterationWarning,\n };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to reject feature';\n return { rejected: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetFeatureArtifactUseCase } from '@shepai/core/application/use-cases/features/get-feature-artifact.use-case';\nimport type { FeatureArtifact } from '@shepai/core/domain/generated/output';\nimport type { PrdQuestionnaireData } from '@shepai/core/domain/generated/output';\nimport type { ProductDecisionsSummaryData } from '@/components/common/product-decisions-summary';\n\ninterface GetFeatureArtifactResult {\n questionnaire?: PrdQuestionnaireData;\n productDecisions?: ProductDecisionsSummaryData;\n artifact?: FeatureArtifact;\n error?: string;\n}\n\n/**\n * Map FeatureArtifact openQuestions into the PrdQuestionnaireData shape\n * expected by the PrdQuestionnaireDrawer component.\n */\nfunction toQuestionnaireData(artifact: FeatureArtifact): PrdQuestionnaireData {\n return {\n question: 'Goal',\n context: artifact.oneLiner,\n questions: artifact.openQuestions.map((oq, idx) => ({\n id: `q-${idx}`,\n question: oq.question,\n type: 'select' as const,\n options: (oq.options ?? []).map((opt, optIdx) => ({\n id: `q-${idx}-opt-${optIdx}`,\n label: opt.option,\n rationale: opt.description,\n ...(opt.selected ? { recommended: true } : {}),\n })),\n })),\n finalAction: {\n id: 'approve-reqs',\n label: 'Approve Requirements',\n description: 'Finalize and lock the requirements for implementation',\n },\n };\n}\n\n/**\n * Map FeatureArtifact openQuestions into a read-only summary for the\n * Product Decisions tab in the tech review drawer.\n */\nfunction toProductDecisionsData(artifact: FeatureArtifact): ProductDecisionsSummaryData {\n return {\n question: 'Goal',\n context: artifact.oneLiner,\n questions: artifact.openQuestions\n .filter((oq) => oq.resolved)\n .map((oq) => {\n const selected = oq.options?.find((o) => o.selected);\n return {\n question: oq.question,\n selectedOption: selected?.option ?? oq.answer ?? 'N/A',\n rationale: oq.selectionRationale ?? selected?.description ?? '',\n wasRecommended: false,\n };\n }),\n };\n}\n\nexport async function getFeatureArtifact(featureId: string): Promise<GetFeatureArtifactResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<GetFeatureArtifactUseCase>('GetFeatureArtifactUseCase');\n const artifact = await useCase.execute(featureId);\n const questionnaire = toQuestionnaireData(artifact);\n const productDecisions = toProductDecisionsData(artifact);\n return { questionnaire, productDecisions, artifact };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load feature artifact';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetResearchArtifactUseCase } from '@shepai/core/application/use-cases/features/get-research-artifact.use-case';\nimport type { ResearchArtifact, TechDecision } from '@shepai/core/domain/generated/output';\n\nexport interface TechDecisionsReviewData {\n name: string;\n summary: string;\n decisions: TechDecision[];\n technologies: string[];\n}\n\ninterface GetResearchArtifactResult {\n techDecisions?: TechDecisionsReviewData;\n error?: string;\n}\n\nfunction toTechDecisionsData(artifact: ResearchArtifact): TechDecisionsReviewData {\n return {\n name: artifact.name,\n summary: artifact.summary,\n decisions: artifact.decisions,\n technologies: artifact.technologies,\n };\n}\n\nexport async function getResearchArtifact(featureId: string): Promise<GetResearchArtifactResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<GetResearchArtifactUseCase>('GetResearchArtifactUseCase');\n const artifact = await useCase.execute(featureId);\n const techDecisions = toTechDecisionsData(artifact);\n return { techDecisions };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load research artifact';\n return { error: message };\n }\n}\n","'use server';\n\nimport { createHash } from 'node:crypto';\nimport { readFileSync, existsSync } from 'node:fs';\nimport { basename, join, dirname } from 'node:path';\nimport { resolve } from '@/lib/server-container';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { IGitPrService } from '@shepai/core/application/ports/output/services/git-pr-service.interface';\nimport type {\n MergeReviewData,\n MergeReviewEvidence,\n} from '@/components/common/merge-review/merge-review-config';\nimport { computeWorktreePath } from '@shepai/core/infrastructure/services/ide-launchers/compute-worktree-path';\nimport { getShepHomeDir } from '@shepai/core/infrastructure/services/filesystem/shep-directory.service';\n\ntype GetMergeReviewDataResult = MergeReviewData | { error: string };\n\n/**\n * Compute the shep evidence directory for a given repository and feature.\n * Path: ~/.shep/repos/<sha256-hash-prefix>/evidence/<featureId>/\n */\nfunction computeEvidenceDir(repositoryPath: string, featureId: string): string {\n const repoHash = createHash('sha256').update(repositoryPath).digest('hex').slice(0, 16);\n return join(getShepHomeDir(), 'repos', repoHash, 'evidence', featureId).replace(/\\\\/g, '/');\n}\n\n/**\n * Normalize evidence paths so they all point to the shep evidence directory.\n * When commitEvidence was enabled, the manifest may contain relative paths\n * (e.g. \"specs/066-feature/evidence/file.png\"). After merge the worktree is\n * deleted so those paths no longer resolve. The evidence files were also saved\n * to the shep evidence dir with the same filename, so we map relative paths\n * to absolute paths there.\n */\nfunction normalizeEvidencePaths(\n evidence: MergeReviewEvidence[],\n evidenceDir: string\n): MergeReviewEvidence[] {\n return evidence.map((e) => {\n if (e.relativePath.startsWith('/')) {\n // Already absolute — check if the file exists; if not, try the evidence dir\n if (existsSync(e.relativePath)) return e;\n const fallback = join(evidenceDir, basename(e.relativePath)).replace(/\\\\/g, '/');\n if (existsSync(fallback)) return { ...e, relativePath: fallback };\n return e;\n }\n // Relative path — resolve to evidence dir using the filename\n const absolutePath = join(evidenceDir, basename(e.relativePath)).replace(/\\\\/g, '/');\n return { ...e, relativePath: absolutePath };\n });\n}\n\nexport async function getMergeReviewData(featureId: string): Promise<GetMergeReviewDataResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { error: 'Feature not found' };\n }\n\n const pr = feature.pr\n ? {\n url: feature.pr.url,\n number: feature.pr.number,\n status: feature.pr.status,\n commitHash: feature.pr.commitHash,\n ciStatus: feature.pr.ciStatus,\n mergeable: feature.pr.mergeable,\n }\n : undefined;\n\n const branch = feature.branch ? { source: feature.branch, target: 'main' } : undefined;\n\n const worktreePath =\n feature.worktreePath ??\n (feature.repositoryPath && feature.branch\n ? computeWorktreePath(feature.repositoryPath, feature.branch)\n : null);\n\n // Load evidence manifest (best-effort).\n // Evidence is stored independently of the worktree at:\n // ~/.shep/repos/<hash>/evidence/<featureId>/manifest.json\n // We compute this path from repositoryPath so evidence is accessible\n // even after the worktree has been deleted post-merge.\n let evidence: MergeReviewEvidence[] | undefined;\n const evidenceDir = feature.repositoryPath\n ? computeEvidenceDir(feature.repositoryPath, featureId)\n : worktreePath\n ? join(dirname(dirname(worktreePath)), 'evidence', featureId).replace(/\\\\/g, '/')\n : null;\n\n if (evidenceDir) {\n try {\n const manifestPath = join(evidenceDir, 'manifest.json');\n if (existsSync(manifestPath)) {\n const raw: MergeReviewEvidence[] = JSON.parse(readFileSync(manifestPath, 'utf-8'));\n evidence = normalizeEvidencePaths(raw, evidenceDir);\n }\n } catch {\n // Evidence unavailable — not critical\n }\n }\n\n if (!worktreePath) {\n return {\n pr,\n branch,\n evidence,\n warning: pr ? undefined : 'No PR or diff data available',\n };\n }\n\n try {\n const gitPrService = resolve<IGitPrService>('IGitPrService');\n const [diffSummary, fileDiffs] = await Promise.all([\n gitPrService.getPrDiffSummary(worktreePath, 'main'),\n gitPrService.getFileDiffs(worktreePath, 'main').catch(() => undefined),\n ]);\n return { pr, branch, diffSummary, fileDiffs, evidence };\n } catch {\n return {\n pr,\n branch,\n evidence,\n warning: 'Diff statistics unavailable',\n };\n }\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load merge review data';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IPhaseTimingRepository } from '@shepai/core/application/ports/output/agents/phase-timing-repository.interface';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\n\nexport interface PhaseTimingData {\n agentRunId: string;\n phase: string;\n startedAt: string;\n completedAt?: string;\n durationMs?: number;\n waitingApprovalAt?: string;\n approvalWaitMs?: number;\n inputTokens?: number;\n outputTokens?: number;\n cacheCreationInputTokens?: number;\n cacheReadInputTokens?: number;\n costUsd?: number;\n numTurns?: number;\n durationApiMs?: number;\n}\n\nexport interface RejectionFeedbackData {\n iteration: number;\n message: string;\n phase?: string;\n timestamp?: string;\n attachments?: string[];\n}\n\ntype GetPhaseTimingsResult =\n | { timings: PhaseTimingData[]; rejectionFeedback: RejectionFeedbackData[] }\n | { error: string };\n\nexport async function getFeaturePhaseTimings(featureId: string): Promise<GetPhaseTimingsResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const repo = resolve<IPhaseTimingRepository>('IPhaseTimingRepository');\n const phaseTimings = await repo.findByFeatureId(featureId);\n\n const timings: PhaseTimingData[] = phaseTimings.map((t) => ({\n agentRunId: t.agentRunId,\n phase: t.phase,\n startedAt: t.startedAt,\n completedAt: t.completedAt,\n durationMs: t.durationMs != null ? Number(t.durationMs) : undefined,\n waitingApprovalAt: t.waitingApprovalAt,\n approvalWaitMs: t.approvalWaitMs != null ? Number(t.approvalWaitMs) : undefined,\n inputTokens: t.inputTokens != null ? Number(t.inputTokens) : undefined,\n outputTokens: t.outputTokens != null ? Number(t.outputTokens) : undefined,\n cacheCreationInputTokens:\n t.cacheCreationInputTokens != null ? Number(t.cacheCreationInputTokens) : undefined,\n cacheReadInputTokens:\n t.cacheReadInputTokens != null ? Number(t.cacheReadInputTokens) : undefined,\n costUsd: t.costUsd != null ? Number(t.costUsd) : undefined,\n numTurns: t.numTurns ?? undefined,\n durationApiMs: t.durationApiMs != null ? Number(t.durationApiMs) : undefined,\n }));\n\n // Read rejection feedback from spec.yaml\n const rejectionFeedback = await readRejectionFeedback(featureId);\n\n return { timings, rejectionFeedback };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load phase timings';\n return { error: message };\n }\n}\n\nasync function readRejectionFeedback(featureId: string): Promise<RejectionFeedbackData[]> {\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n if (!feature?.specPath) return [];\n\n const { readFileSync } = await import('node:fs');\n const { join } = await import('node:path');\n const yaml = (await import('js-yaml')).default;\n\n const specContent = readFileSync(join(feature.specPath, 'spec.yaml'), 'utf-8');\n const spec = yaml.load(specContent) as Record<string, unknown>;\n\n if (!Array.isArray(spec?.rejectionFeedback)) return [];\n\n return (spec.rejectionFeedback as Record<string, unknown>[]).map((entry) => ({\n iteration: Number(entry.iteration ?? 1),\n message: String(entry.message ?? ''),\n phase: entry.phase ? String(entry.phase) : undefined,\n timestamp: entry.timestamp ? String(entry.timestamp) : undefined,\n attachments: Array.isArray(entry.attachments)\n ? (entry.attachments as unknown[]).map(String)\n : undefined,\n }));\n } catch {\n return [];\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\n\nexport interface AcceptanceCriterionData {\n description: string;\n verified: boolean;\n}\n\nexport interface ActionItemData {\n name: string;\n description: string;\n acceptanceCriteria: AcceptanceCriterionData[];\n}\n\nexport interface PlanTaskData {\n title: string;\n description: string;\n state: string;\n actionItems: ActionItemData[];\n}\n\nexport interface PlanData {\n state: string;\n overview: string;\n tasks: PlanTaskData[];\n}\n\ntype GetPlanResult = { plan: PlanData | undefined } | { error: string };\n\nexport async function getFeaturePlan(featureId: string): Promise<GetPlanResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const repo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await repo.findById(featureId);\n\n if (!feature) {\n return { error: 'Feature not found' };\n }\n\n if (!feature.plan) {\n return { plan: undefined };\n }\n\n const plan: PlanData = {\n state: feature.plan.state,\n overview: feature.plan.overview,\n tasks: feature.plan.tasks.map((t) => ({\n title: t.title ?? '',\n description: t.description ?? '',\n state: t.state,\n actionItems: (t.actionItems ?? []).map((ai) => ({\n name: ai.name,\n description: ai.description,\n acceptanceCriteria: (ai.acceptanceCriteria ?? []).map((ac) => ({\n description: ac.description,\n verified: ac.verified,\n })),\n })),\n })),\n };\n\n return { plan };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load feature plan';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { IAgentRunRepository } from '@shepai/core/application/ports/output/agents/agent-run-repository.interface';\nimport type { IRepositoryRepository } from '@shepai/core/application/ports/output/repositories/repository-repository.interface';\nimport type { IGitPrService } from '@shepai/core/application/ports/output/services/git-pr-service.interface';\nimport type { GetFeatureArtifactUseCase } from '@shepai/core/application/use-cases/features/get-feature-artifact.use-case';\nimport { buildFeatureNodeData } from '@/app/build-feature-node-data';\nimport { getSettings } from '@shepai/core/infrastructure/services/settings.service';\nimport type { FeatureNodeData } from '@/components/common/feature-node';\n\n/**\n * Fetches full FeatureNodeData for a given feature ID.\n * Used by the drawer for targeted data syncing without triggering\n * a full router.refresh() / server component re-render.\n *\n * CI status and mergeable status are read from the DB (already updated\n * by PrSyncWatcherService) instead of making duplicate GitHub API calls.\n */\nexport async function getFeatureDrawerData(featureId: string): Promise<FeatureNodeData | null> {\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const agentRunRepo = resolve<IAgentRunRepository>('IAgentRunRepository');\n const repoRepo = resolve<IRepositoryRepository>('IRepositoryRepository');\n const gitPrService = resolve<IGitPrService>('IGitPrService');\n const getArtifact = resolve<GetFeatureArtifactUseCase>('GetFeatureArtifactUseCase');\n\n const feature = await featureRepo.findById(featureId);\n if (!feature) return null;\n\n const run = feature.agentRunId ? await agentRunRepo.findById(feature.agentRunId) : null;\n\n // CI status and mergeable status are read from the feature record (updated by\n // PrSyncWatcherService every 30s) — no duplicate GitHub API calls needed.\n // Only getDefaultBranch and getRemoteUrl are kept as they are local git operations.\n const [repo, baseBranch, artifact, remoteUrl] = await Promise.all([\n repoRepo.findByPath(feature.repositoryPath).catch(() => null),\n gitPrService.getDefaultBranch(feature.repositoryPath).catch(() => 'main'),\n getArtifact.execute(featureId).catch(() => null),\n gitPrService.getRemoteUrl(feature.repositoryPath).catch(() => null),\n ]);\n\n const { workflow } = getSettings();\n\n return buildFeatureNodeData(feature, run, {\n repositoryName: repo?.name,\n baseBranch,\n oneLiner: artifact?.oneLiner,\n remoteUrl: remoteUrl ?? undefined,\n enableEvidence: workflow.enableEvidence,\n commitEvidence: workflow.commitEvidence,\n });\n } catch {\n return null;\n }\n}\n","export {pickFolder as '00e5c50a1acd5cb247c2d47b1f748006515b79a8f5'} from 'ACTIONS_MODULE0'\nexport {getDeploymentLogs as '40745dc45c42d1ac1bab383e94050cc628ae657174'} from 'ACTIONS_MODULE1'\nexport {deployFeature as '405f97d1157f9defdf16409dedf10f2c1d65b67818'} from 'ACTIONS_MODULE2'\nexport {deployRepository as '401e0fad3a791f383782896ea2b7baebb6b7bda080'} from 'ACTIONS_MODULE3'\nexport {stopDeployment as '407e8c290124d479bc18645f3ba10526c5d74a7bae'} from 'ACTIONS_MODULE4'\nexport {getDeploymentStatus as '40f3cd7d3c3db66f3eb30556bc246c3750b5c6fbc7'} from 'ACTIONS_MODULE5'\nexport {openIde as '406b47af133dcde405c8e04a9ceb219c36bfc02f1f'} from 'ACTIONS_MODULE6'\nexport {openShell as '404a9fca1f5590042fa506bbac7a254639cea4448c'} from 'ACTIONS_MODULE7'\nexport {openFolder as '40a30b9ac76a4676dd0dc8e84f07f5f7710d2bab17'} from 'ACTIONS_MODULE8'\nexport {isAgentSetupComplete as '002d9ac624d8ce45a77b66e9165820044d5ccf8c95'} from 'ACTIONS_MODULE9'\nexport {checkAgentAuth as '00f7a44ec6dc229f1bf6eb1ee4ccc22c7baad7f68c'} from 'ACTIONS_MODULE10'\nexport {getAllAgentModels as '00f1c4f6d5b3dfa75646bf904cd753c7c192f6637b'} from 'ACTIONS_MODULE11'\nexport {updateAgentAndModel as '60f572cd60ad7d4940539f787547dc92a8f9e55dd1'} from 'ACTIONS_MODULE12'\nexport {deleteFeature as '70bebdd10458f205b61f9302f015279a531b5ca51d'} from 'ACTIONS_MODULE13'\nexport {resumeFeature as '4071765c8caef91781db92536f9ddce9c556eb2838'} from 'ACTIONS_MODULE14'\nexport {startFeature as '403976da343996c8716780addeea325f4c17be0ac4'} from 'ACTIONS_MODULE15'\nexport {stopFeature as '409d4bf533f00abf0394061502b1d31aca047581e8'} from 'ACTIONS_MODULE16'\nexport {addRepository as '4054c30b2d71ca084164c0a5346112393fdc41e85f'} from 'ACTIONS_MODULE17'\nexport {deleteRepository as '40fe4bd13fe94c7285f5cc1d1d4abbb7d779d04615'} from 'ACTIONS_MODULE18'\nexport {getFeatureMetadata as '40d80fa463ed1d73b3e35af4bd94d50c374c17e628'} from 'ACTIONS_MODULE19'\nexport {approveFeature as '6026ff2ae0f31bebf9d6fcd8716eb4ec61eb91620c'} from 'ACTIONS_MODULE20'\nexport {rejectFeature as '70ecd12bd629980ec15755af5214592a5e5422578b'} from 'ACTIONS_MODULE21'\nexport {getFeatureArtifact as '404194e964e9d0e48b5c72640be4eb663c61e43726'} from 'ACTIONS_MODULE22'\nexport {getResearchArtifact as '4033a910b35a6cbd72d0d5c21b9478942579744f39'} from 'ACTIONS_MODULE23'\nexport {getMergeReviewData as '408c2c6459a5dc3098cd46a4220e945e9c8ab4fe00'} from 'ACTIONS_MODULE24'\nexport {getFeaturePhaseTimings as '4075042ce1f0cdf951f7a0a908b9a80b5045227898'} from 'ACTIONS_MODULE25'\nexport {getFeaturePlan as '4080400e7e1ba35472418f2b7c805fc0e67c88fff5'} from 'ACTIONS_MODULE26'\nexport {getFeatureDrawerData as '40fd4bcd550e76e3698cad28cec4dade89d23e7b0b'} from 'ACTIONS_MODULE27'\n"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- module.exports=[42642,a=>{"use strict";let b=(0,a.i(25700).default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);a.s(["default",()=>b])},3942,a=>{"use strict";let b=(0,a.i(25700).default)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]);a.s(["Zap",()=>b],3942)},10606,a=>{"use strict";var b=a.i(51969);a.s(["CheckIcon",()=>b.default])},71238,a=>{"use strict";let b=(0,a.i(25700).default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);a.s(["ExternalLink",()=>b],71238)},63698,a=>{"use strict";let b=(0,a.i(25700).default)("terminal",[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]]);a.s(["Terminal",()=>b],63698)},58339,a=>{"use strict";var b=a.i(10973),c=a.i(42261),d=a.i(85536);let e=(0,c.cva)("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-none",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function f({className:a,variant:c,...f}){return(0,b.jsx)("div",{className:(0,d.cn)(e({variant:c}),a),...f})}a.s(["Badge",()=>f])},78454,a=>{"use strict";a.i(24255),a.s([])},3195,a=>{"use strict";let b=(0,a.i(25700).default)("folder-open",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);a.s(["FolderOpen",()=>b],3195)},50488,75928,85656,1052,a=>{"use strict";let b=(0,a.i(25700).default)("code-xml",[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]]);a.s(["Code2",()=>b],50488);var c=a.i(25674);let d=(0,c.createServerReference)("4073c8639af1a69bab0e93b6cd9747c41b3d4922c0",c.callServer,void 0,c.findSourceMapURL,"openIde");a.s(["openIde",()=>d],75928);let e=(0,c.createServerReference)("4008e83fa67452af57da06b9f5cbdabb3923634dc0",c.callServer,void 0,c.findSourceMapURL,"openShell");a.s(["openShell",()=>e],85656);let f=(0,c.createServerReference)("40f68f5addb71f997926bdabf9e8e5e59f93451337",c.callServer,void 0,c.findSourceMapURL,"openFolder");a.s(["openFolder",()=>f],1052)},77127,a=>{"use strict";var b=a.i(96960),c=a.i(59653),d=a.i(63496),e=a.i(6175),f=a.i(7420),g=a.i(5472),h=a.i(66873),i=a.i(79406),j=a.i(17329),k=a.i(48939),l=a.i(10973),m="rovingFocusGroup.onEntryFocus",n={bubbles:!1,cancelable:!0},o="RovingFocusGroup",[p,q,r]=(0,d.createCollection)(o),[s,t]=(0,f.createContextScope)(o,[r]),[u,v]=s(o),w=b.forwardRef((a,b)=>(0,l.jsx)(p.Provider,{scope:a.__scopeRovingFocusGroup,children:(0,l.jsx)(p.Slot,{scope:a.__scopeRovingFocusGroup,children:(0,l.jsx)(x,{...a,ref:b})})}));w.displayName=o;var x=b.forwardRef((a,d)=>{let{__scopeRovingFocusGroup:f,orientation:g,loop:p=!1,dir:r,currentTabStopId:s,defaultCurrentTabStopId:t,onCurrentTabStopIdChange:v,onEntryFocus:w,preventScrollOnEntryFocus:x=!1,...y}=a,z=b.useRef(null),A=(0,e.useComposedRefs)(d,z),C=(0,k.useDirection)(r),[D,E]=(0,j.useControllableState)({prop:s,defaultProp:t??null,onChange:v,caller:o}),[F,G]=b.useState(!1),H=(0,i.useCallbackRef)(w),I=q(f),J=b.useRef(!1),[K,L]=b.useState(0);return b.useEffect(()=>{let a=z.current;if(a)return a.addEventListener(m,H),()=>a.removeEventListener(m,H)},[H]),(0,l.jsx)(u,{scope:f,orientation:g,dir:C,loop:p,currentTabStopId:D,onItemFocus:b.useCallback(a=>E(a),[E]),onItemShiftTab:b.useCallback(()=>G(!0),[]),onFocusableItemAdd:b.useCallback(()=>L(a=>a+1),[]),onFocusableItemRemove:b.useCallback(()=>L(a=>a-1),[]),children:(0,l.jsx)(h.Primitive.div,{tabIndex:F||0===K?-1:0,"data-orientation":g,...y,ref:A,style:{outline:"none",...a.style},onMouseDown:(0,c.composeEventHandlers)(a.onMouseDown,()=>{J.current=!0}),onFocus:(0,c.composeEventHandlers)(a.onFocus,a=>{let b=!J.current;if(a.target===a.currentTarget&&b&&!F){let b=new CustomEvent(m,n);if(a.currentTarget.dispatchEvent(b),!b.defaultPrevented){let a=I().filter(a=>a.focusable);B([a.find(a=>a.active),a.find(a=>a.id===D),...a].filter(Boolean).map(a=>a.ref.current),x)}}J.current=!1}),onBlur:(0,c.composeEventHandlers)(a.onBlur,()=>G(!1))})})}),y="RovingFocusGroupItem",z=b.forwardRef((a,d)=>{let{__scopeRovingFocusGroup:e,focusable:f=!0,active:i=!1,tabStopId:j,children:k,...m}=a,n=(0,g.useId)(),o=j||n,r=v(y,e),s=r.currentTabStopId===o,t=q(e),{onFocusableItemAdd:u,onFocusableItemRemove:w,currentTabStopId:x}=r;return b.useEffect(()=>{if(f)return u(),()=>w()},[f,u,w]),(0,l.jsx)(p.ItemSlot,{scope:e,id:o,focusable:f,active:i,children:(0,l.jsx)(h.Primitive.span,{tabIndex:s?0:-1,"data-orientation":r.orientation,...m,ref:d,onMouseDown:(0,c.composeEventHandlers)(a.onMouseDown,a=>{f?r.onItemFocus(o):a.preventDefault()}),onFocus:(0,c.composeEventHandlers)(a.onFocus,()=>r.onItemFocus(o)),onKeyDown:(0,c.composeEventHandlers)(a.onKeyDown,a=>{if("Tab"===a.key&&a.shiftKey)return void r.onItemShiftTab();if(a.target!==a.currentTarget)return;let b=function(a,b,c){var d;let e=(d=a.key,"rtl"!==c?d:"ArrowLeft"===d?"ArrowRight":"ArrowRight"===d?"ArrowLeft":d);if(!("vertical"===b&&["ArrowLeft","ArrowRight"].includes(e))&&!("horizontal"===b&&["ArrowUp","ArrowDown"].includes(e)))return A[e]}(a,r.orientation,r.dir);if(void 0!==b){if(a.metaKey||a.ctrlKey||a.altKey||a.shiftKey)return;a.preventDefault();let e=t().filter(a=>a.focusable).map(a=>a.ref.current);if("last"===b)e.reverse();else if("prev"===b||"next"===b){var c,d;"prev"===b&&e.reverse();let f=e.indexOf(a.currentTarget);e=r.loop?(c=e,d=f+1,c.map((a,b)=>c[(d+b)%c.length])):e.slice(f+1)}setTimeout(()=>B(e))}}),children:"function"==typeof k?k({isCurrentTabStop:s,hasTabStop:null!=x}):k})})});z.displayName=y;var A={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function B(a,b=!1){let c=document.activeElement;for(let d of a)if(d===c||(d.focus({preventScroll:b}),document.activeElement!==c))return}a.s(["Item",()=>z,"Root",()=>w,"createRovingFocusGroupScope",()=>t])},98410,a=>{"use strict";let b=(0,a.i(25700).default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);a.s(["Copy",()=>b],98410)},4019,67075,a=>{"use strict";let b=(0,a.i(25700).default)("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);a.s(["Circle",()=>b],4019);var c=a.i(2811);a.s(["CheckCircle2",()=>c.default],67075)},96853,71716,a=>{"use strict";var b=a.i(25700);let c=(0,b.default)("minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]);a.s(["default",()=>c],96853);let d=(0,b.default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);a.s(["ChevronDown",()=>d],71716)},64005,a=>{"use strict";var b=a.i(96960);function c(a){let c=b.useRef({value:a,previous:a});return b.useMemo(()=>(c.current.value!==a&&(c.current.previous=c.current.value,c.current.value=a),c.current.previous),[a])}a.s(["usePrevious",()=>c])},584,a=>{"use strict";var b=a.i(10973),c=a.i(96960),d=a.i(66873),e=c.forwardRef((a,c)=>(0,b.jsx)(d.Primitive.label,{...a,ref:c,onMouseDown:b=>{b.target.closest("button, input, select, textarea")||(a.onMouseDown?.(b),!b.defaultPrevented&&b.detail>1&&b.preventDefault())}}));e.displayName="Label",a.s(["Label",()=>e,"Root",()=>e],59967);var f=a.i(59967),f=f,g=a.i(42261),h=a.i(85536);let i=(0,g.cva)("text-sm leading-none font-medium peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),j=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(f.Root,{ref:d,className:(0,h.cn)(i(),a),...c}));j.displayName=f.Root.displayName,a.s(["Label",()=>j],584)},3410,a=>{"use strict";let b=(0,a.i(25700).default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);a.s(["ChevronRight",()=>b],3410)},94132,a=>{"use strict";let b=(0,a.i(25700).default)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);a.s(["ChevronLeft",()=>b],94132)},72016,51969,a=>{"use strict";let b=(0,a.i(25700).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);a.s(["default",()=>b],51969),a.s(["Check",()=>b],72016)},63496,a=>{"use strict";var b=a.i(96960),c=a.i(7420),d=a.i(6175),e=a.i(90986),f=a.i(10973);function g(a){let g=a+"CollectionProvider",[h,i]=(0,c.createContextScope)(g),[j,k]=h(g,{collectionRef:{current:null},itemMap:new Map}),l=a=>{let{scope:c,children:d}=a,e=b.default.useRef(null),g=b.default.useRef(new Map).current;return(0,f.jsx)(j,{scope:c,itemMap:g,collectionRef:e,children:d})};l.displayName=g;let m=a+"CollectionSlot",n=(0,e.createSlot)(m),o=b.default.forwardRef((a,b)=>{let{scope:c,children:e}=a,g=k(m,c),h=(0,d.useComposedRefs)(b,g.collectionRef);return(0,f.jsx)(n,{ref:h,children:e})});o.displayName=m;let p=a+"CollectionItemSlot",q="data-radix-collection-item",r=(0,e.createSlot)(p),s=b.default.forwardRef((a,c)=>{let{scope:e,children:g,...h}=a,i=b.default.useRef(null),j=(0,d.useComposedRefs)(c,i),l=k(p,e);return b.default.useEffect(()=>(l.itemMap.set(i,{ref:i,...h}),()=>void l.itemMap.delete(i))),(0,f.jsx)(r,{...{[q]:""},ref:j,children:g})});return s.displayName=p,[{Provider:l,Slot:o,ItemSlot:s},function(c){let d=k(a+"CollectionConsumer",c);return b.default.useCallback(()=>{let a=d.collectionRef.current;if(!a)return[];let b=Array.from(a.querySelectorAll(`[${q}]`));return Array.from(d.itemMap.values()).sort((a,c)=>b.indexOf(a.ref.current)-b.indexOf(c.ref.current))},[d.collectionRef,d.itemMap])},i]}var h=new WeakMap;function i(a,b){var c,d;let e,f,g;if("at"in Array.prototype)return Array.prototype.at.call(a,b);let h=(c=a,d=b,e=c.length,(g=(f=j(d))>=0?f:e+f)<0||g>=e?-1:g);return -1===h?void 0:a[h]}function j(a){return a!=a||0===a?0:Math.trunc(a)}(class a extends Map{#a;constructor(a){super(a),this.#a=[...super.keys()],h.set(this,!0)}set(a,b){return h.get(this)&&(this.has(a)?this.#a[this.#a.indexOf(a)]=a:this.#a.push(a)),super.set(a,b),this}insert(a,b,c){let d,e=this.has(b),f=this.#a.length,g=j(a),h=g>=0?g:f+g,i=h<0||h>=f?-1:h;if(i===this.size||e&&i===this.size-1||-1===i)return this.set(b,c),this;let k=this.size+ +!e;g<0&&h++;let l=[...this.#a],m=!1;for(let a=h;a<k;a++)if(h===a){let f=l[a];l[a]===b&&(f=l[a+1]),e&&this.delete(b),d=this.get(f),this.set(b,c)}else{m||l[a-1]!==b||(m=!0);let c=l[m?a:a-1],e=d;d=this.get(c),this.delete(c),this.set(c,e)}return this}with(b,c,d){let e=new a(this);return e.insert(b,c,d),e}before(a){let b=this.#a.indexOf(a)-1;if(!(b<0))return this.entryAt(b)}setBefore(a,b,c){let d=this.#a.indexOf(a);return -1===d?this:this.insert(d,b,c)}after(a){let b=this.#a.indexOf(a);if(-1!==(b=-1===b||b===this.size-1?-1:b+1))return this.entryAt(b)}setAfter(a,b,c){let d=this.#a.indexOf(a);return -1===d?this:this.insert(d+1,b,c)}first(){return this.entryAt(0)}last(){return this.entryAt(-1)}clear(){return this.#a=[],super.clear()}delete(a){let b=super.delete(a);return b&&this.#a.splice(this.#a.indexOf(a),1),b}deleteAt(a){let b=this.keyAt(a);return void 0!==b&&this.delete(b)}at(a){let b=i(this.#a,a);if(void 0!==b)return this.get(b)}entryAt(a){let b=i(this.#a,a);if(void 0!==b)return[b,this.get(b)]}indexOf(a){return this.#a.indexOf(a)}keyAt(a){return i(this.#a,a)}from(a,b){let c=this.indexOf(a);if(-1===c)return;let d=c+b;return d<0&&(d=0),d>=this.size&&(d=this.size-1),this.at(d)}keyFrom(a,b){let c=this.indexOf(a);if(-1===c)return;let d=c+b;return d<0&&(d=0),d>=this.size&&(d=this.size-1),this.keyAt(d)}find(a,b){let c=0;for(let d of this){if(Reflect.apply(a,b,[d,c,this]))return d;c++}}findIndex(a,b){let c=0;for(let d of this){if(Reflect.apply(a,b,[d,c,this]))return c;c++}return -1}filter(b,c){let d=[],e=0;for(let a of this)Reflect.apply(b,c,[a,e,this])&&d.push(a),e++;return new a(d)}map(b,c){let d=[],e=0;for(let a of this)d.push([a[0],Reflect.apply(b,c,[a,e,this])]),e++;return new a(d)}reduce(...a){let[b,c]=a,d=0,e=c??this.at(0);for(let c of this)e=0===d&&1===a.length?c:Reflect.apply(b,this,[e,c,d,this]),d++;return e}reduceRight(...a){let[b,c]=a,d=c??this.at(-1);for(let c=this.size-1;c>=0;c--){let e=this.at(c);d=c===this.size-1&&1===a.length?e:Reflect.apply(b,this,[d,e,c,this])}return d}toSorted(b){return new a([...this.entries()].sort(b))}toReversed(){let b=new a;for(let a=this.size-1;a>=0;a--){let c=this.keyAt(a),d=this.get(c);b.set(c,d)}return b}toSpliced(...b){let c=[...this.entries()];return c.splice(...b),new a(c)}slice(b,c){let d=new a,e=this.size-1;if(void 0===b)return d;b<0&&(b+=this.size),void 0!==c&&c>0&&(e=c-1);for(let a=b;a<=e;a++){let b=this.keyAt(a),c=this.get(b);d.set(b,c)}return d}every(a,b){let c=0;for(let d of this){if(!Reflect.apply(a,b,[d,c,this]))return!1;c++}return!0}some(a,b){let c=0;for(let d of this){if(Reflect.apply(a,b,[d,c,this]))return!0;c++}return!1}}),a.s(["createCollection",()=>g])}];
1
+ module.exports=[42642,a=>{"use strict";let b=(0,a.i(25700).default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);a.s(["default",()=>b])},3942,a=>{"use strict";let b=(0,a.i(25700).default)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]);a.s(["Zap",()=>b],3942)},10606,a=>{"use strict";var b=a.i(51969);a.s(["CheckIcon",()=>b.default])},71238,a=>{"use strict";let b=(0,a.i(25700).default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);a.s(["ExternalLink",()=>b],71238)},63698,a=>{"use strict";let b=(0,a.i(25700).default)("terminal",[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]]);a.s(["Terminal",()=>b],63698)},58339,a=>{"use strict";var b=a.i(10973),c=a.i(42261),d=a.i(85536);let e=(0,c.cva)("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-none",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function f({className:a,variant:c,...f}){return(0,b.jsx)("div",{className:(0,d.cn)(e({variant:c}),a),...f})}a.s(["Badge",()=>f])},78454,a=>{"use strict";a.i(24255),a.s([])},3195,a=>{"use strict";let b=(0,a.i(25700).default)("folder-open",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);a.s(["FolderOpen",()=>b],3195)},50488,65615,27110,75396,a=>{"use strict";let b=(0,a.i(25700).default)("code-xml",[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]]);a.s(["Code2",()=>b],50488);var c=a.i(25674);let d=(0,c.createServerReference)("406b47af133dcde405c8e04a9ceb219c36bfc02f1f",c.callServer,void 0,c.findSourceMapURL,"openIde");a.s(["openIde",()=>d],65615);let e=(0,c.createServerReference)("404a9fca1f5590042fa506bbac7a254639cea4448c",c.callServer,void 0,c.findSourceMapURL,"openShell");a.s(["openShell",()=>e],27110);let f=(0,c.createServerReference)("40a30b9ac76a4676dd0dc8e84f07f5f7710d2bab17",c.callServer,void 0,c.findSourceMapURL,"openFolder");a.s(["openFolder",()=>f],75396)},77127,a=>{"use strict";var b=a.i(96960),c=a.i(59653),d=a.i(63496),e=a.i(6175),f=a.i(7420),g=a.i(5472),h=a.i(66873),i=a.i(79406),j=a.i(17329),k=a.i(48939),l=a.i(10973),m="rovingFocusGroup.onEntryFocus",n={bubbles:!1,cancelable:!0},o="RovingFocusGroup",[p,q,r]=(0,d.createCollection)(o),[s,t]=(0,f.createContextScope)(o,[r]),[u,v]=s(o),w=b.forwardRef((a,b)=>(0,l.jsx)(p.Provider,{scope:a.__scopeRovingFocusGroup,children:(0,l.jsx)(p.Slot,{scope:a.__scopeRovingFocusGroup,children:(0,l.jsx)(x,{...a,ref:b})})}));w.displayName=o;var x=b.forwardRef((a,d)=>{let{__scopeRovingFocusGroup:f,orientation:g,loop:p=!1,dir:r,currentTabStopId:s,defaultCurrentTabStopId:t,onCurrentTabStopIdChange:v,onEntryFocus:w,preventScrollOnEntryFocus:x=!1,...y}=a,z=b.useRef(null),A=(0,e.useComposedRefs)(d,z),C=(0,k.useDirection)(r),[D,E]=(0,j.useControllableState)({prop:s,defaultProp:t??null,onChange:v,caller:o}),[F,G]=b.useState(!1),H=(0,i.useCallbackRef)(w),I=q(f),J=b.useRef(!1),[K,L]=b.useState(0);return b.useEffect(()=>{let a=z.current;if(a)return a.addEventListener(m,H),()=>a.removeEventListener(m,H)},[H]),(0,l.jsx)(u,{scope:f,orientation:g,dir:C,loop:p,currentTabStopId:D,onItemFocus:b.useCallback(a=>E(a),[E]),onItemShiftTab:b.useCallback(()=>G(!0),[]),onFocusableItemAdd:b.useCallback(()=>L(a=>a+1),[]),onFocusableItemRemove:b.useCallback(()=>L(a=>a-1),[]),children:(0,l.jsx)(h.Primitive.div,{tabIndex:F||0===K?-1:0,"data-orientation":g,...y,ref:A,style:{outline:"none",...a.style},onMouseDown:(0,c.composeEventHandlers)(a.onMouseDown,()=>{J.current=!0}),onFocus:(0,c.composeEventHandlers)(a.onFocus,a=>{let b=!J.current;if(a.target===a.currentTarget&&b&&!F){let b=new CustomEvent(m,n);if(a.currentTarget.dispatchEvent(b),!b.defaultPrevented){let a=I().filter(a=>a.focusable);B([a.find(a=>a.active),a.find(a=>a.id===D),...a].filter(Boolean).map(a=>a.ref.current),x)}}J.current=!1}),onBlur:(0,c.composeEventHandlers)(a.onBlur,()=>G(!1))})})}),y="RovingFocusGroupItem",z=b.forwardRef((a,d)=>{let{__scopeRovingFocusGroup:e,focusable:f=!0,active:i=!1,tabStopId:j,children:k,...m}=a,n=(0,g.useId)(),o=j||n,r=v(y,e),s=r.currentTabStopId===o,t=q(e),{onFocusableItemAdd:u,onFocusableItemRemove:w,currentTabStopId:x}=r;return b.useEffect(()=>{if(f)return u(),()=>w()},[f,u,w]),(0,l.jsx)(p.ItemSlot,{scope:e,id:o,focusable:f,active:i,children:(0,l.jsx)(h.Primitive.span,{tabIndex:s?0:-1,"data-orientation":r.orientation,...m,ref:d,onMouseDown:(0,c.composeEventHandlers)(a.onMouseDown,a=>{f?r.onItemFocus(o):a.preventDefault()}),onFocus:(0,c.composeEventHandlers)(a.onFocus,()=>r.onItemFocus(o)),onKeyDown:(0,c.composeEventHandlers)(a.onKeyDown,a=>{if("Tab"===a.key&&a.shiftKey)return void r.onItemShiftTab();if(a.target!==a.currentTarget)return;let b=function(a,b,c){var d;let e=(d=a.key,"rtl"!==c?d:"ArrowLeft"===d?"ArrowRight":"ArrowRight"===d?"ArrowLeft":d);if(!("vertical"===b&&["ArrowLeft","ArrowRight"].includes(e))&&!("horizontal"===b&&["ArrowUp","ArrowDown"].includes(e)))return A[e]}(a,r.orientation,r.dir);if(void 0!==b){if(a.metaKey||a.ctrlKey||a.altKey||a.shiftKey)return;a.preventDefault();let e=t().filter(a=>a.focusable).map(a=>a.ref.current);if("last"===b)e.reverse();else if("prev"===b||"next"===b){var c,d;"prev"===b&&e.reverse();let f=e.indexOf(a.currentTarget);e=r.loop?(c=e,d=f+1,c.map((a,b)=>c[(d+b)%c.length])):e.slice(f+1)}setTimeout(()=>B(e))}}),children:"function"==typeof k?k({isCurrentTabStop:s,hasTabStop:null!=x}):k})})});z.displayName=y;var A={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function B(a,b=!1){let c=document.activeElement;for(let d of a)if(d===c||(d.focus({preventScroll:b}),document.activeElement!==c))return}a.s(["Item",()=>z,"Root",()=>w,"createRovingFocusGroupScope",()=>t])},98410,a=>{"use strict";let b=(0,a.i(25700).default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);a.s(["Copy",()=>b],98410)},4019,67075,a=>{"use strict";let b=(0,a.i(25700).default)("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);a.s(["Circle",()=>b],4019);var c=a.i(2811);a.s(["CheckCircle2",()=>c.default],67075)},96853,71716,a=>{"use strict";var b=a.i(25700);let c=(0,b.default)("minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]);a.s(["default",()=>c],96853);let d=(0,b.default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);a.s(["ChevronDown",()=>d],71716)},64005,a=>{"use strict";var b=a.i(96960);function c(a){let c=b.useRef({value:a,previous:a});return b.useMemo(()=>(c.current.value!==a&&(c.current.previous=c.current.value,c.current.value=a),c.current.previous),[a])}a.s(["usePrevious",()=>c])},584,a=>{"use strict";var b=a.i(10973),c=a.i(96960),d=a.i(66873),e=c.forwardRef((a,c)=>(0,b.jsx)(d.Primitive.label,{...a,ref:c,onMouseDown:b=>{b.target.closest("button, input, select, textarea")||(a.onMouseDown?.(b),!b.defaultPrevented&&b.detail>1&&b.preventDefault())}}));e.displayName="Label",a.s(["Label",()=>e,"Root",()=>e],59967);var f=a.i(59967),f=f,g=a.i(42261),h=a.i(85536);let i=(0,g.cva)("text-sm leading-none font-medium peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),j=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(f.Root,{ref:d,className:(0,h.cn)(i(),a),...c}));j.displayName=f.Root.displayName,a.s(["Label",()=>j],584)},3410,a=>{"use strict";let b=(0,a.i(25700).default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);a.s(["ChevronRight",()=>b],3410)},94132,a=>{"use strict";let b=(0,a.i(25700).default)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);a.s(["ChevronLeft",()=>b],94132)},72016,51969,a=>{"use strict";let b=(0,a.i(25700).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);a.s(["default",()=>b],51969),a.s(["Check",()=>b],72016)},63496,a=>{"use strict";var b=a.i(96960),c=a.i(7420),d=a.i(6175),e=a.i(90986),f=a.i(10973);function g(a){let g=a+"CollectionProvider",[h,i]=(0,c.createContextScope)(g),[j,k]=h(g,{collectionRef:{current:null},itemMap:new Map}),l=a=>{let{scope:c,children:d}=a,e=b.default.useRef(null),g=b.default.useRef(new Map).current;return(0,f.jsx)(j,{scope:c,itemMap:g,collectionRef:e,children:d})};l.displayName=g;let m=a+"CollectionSlot",n=(0,e.createSlot)(m),o=b.default.forwardRef((a,b)=>{let{scope:c,children:e}=a,g=k(m,c),h=(0,d.useComposedRefs)(b,g.collectionRef);return(0,f.jsx)(n,{ref:h,children:e})});o.displayName=m;let p=a+"CollectionItemSlot",q="data-radix-collection-item",r=(0,e.createSlot)(p),s=b.default.forwardRef((a,c)=>{let{scope:e,children:g,...h}=a,i=b.default.useRef(null),j=(0,d.useComposedRefs)(c,i),l=k(p,e);return b.default.useEffect(()=>(l.itemMap.set(i,{ref:i,...h}),()=>void l.itemMap.delete(i))),(0,f.jsx)(r,{...{[q]:""},ref:j,children:g})});return s.displayName=p,[{Provider:l,Slot:o,ItemSlot:s},function(c){let d=k(a+"CollectionConsumer",c);return b.default.useCallback(()=>{let a=d.collectionRef.current;if(!a)return[];let b=Array.from(a.querySelectorAll(`[${q}]`));return Array.from(d.itemMap.values()).sort((a,c)=>b.indexOf(a.ref.current)-b.indexOf(c.ref.current))},[d.collectionRef,d.itemMap])},i]}var h=new WeakMap;function i(a,b){var c,d;let e,f,g;if("at"in Array.prototype)return Array.prototype.at.call(a,b);let h=(c=a,d=b,e=c.length,(g=(f=j(d))>=0?f:e+f)<0||g>=e?-1:g);return -1===h?void 0:a[h]}function j(a){return a!=a||0===a?0:Math.trunc(a)}(class a extends Map{#a;constructor(a){super(a),this.#a=[...super.keys()],h.set(this,!0)}set(a,b){return h.get(this)&&(this.has(a)?this.#a[this.#a.indexOf(a)]=a:this.#a.push(a)),super.set(a,b),this}insert(a,b,c){let d,e=this.has(b),f=this.#a.length,g=j(a),h=g>=0?g:f+g,i=h<0||h>=f?-1:h;if(i===this.size||e&&i===this.size-1||-1===i)return this.set(b,c),this;let k=this.size+ +!e;g<0&&h++;let l=[...this.#a],m=!1;for(let a=h;a<k;a++)if(h===a){let f=l[a];l[a]===b&&(f=l[a+1]),e&&this.delete(b),d=this.get(f),this.set(b,c)}else{m||l[a-1]!==b||(m=!0);let c=l[m?a:a-1],e=d;d=this.get(c),this.delete(c),this.set(c,e)}return this}with(b,c,d){let e=new a(this);return e.insert(b,c,d),e}before(a){let b=this.#a.indexOf(a)-1;if(!(b<0))return this.entryAt(b)}setBefore(a,b,c){let d=this.#a.indexOf(a);return -1===d?this:this.insert(d,b,c)}after(a){let b=this.#a.indexOf(a);if(-1!==(b=-1===b||b===this.size-1?-1:b+1))return this.entryAt(b)}setAfter(a,b,c){let d=this.#a.indexOf(a);return -1===d?this:this.insert(d+1,b,c)}first(){return this.entryAt(0)}last(){return this.entryAt(-1)}clear(){return this.#a=[],super.clear()}delete(a){let b=super.delete(a);return b&&this.#a.splice(this.#a.indexOf(a),1),b}deleteAt(a){let b=this.keyAt(a);return void 0!==b&&this.delete(b)}at(a){let b=i(this.#a,a);if(void 0!==b)return this.get(b)}entryAt(a){let b=i(this.#a,a);if(void 0!==b)return[b,this.get(b)]}indexOf(a){return this.#a.indexOf(a)}keyAt(a){return i(this.#a,a)}from(a,b){let c=this.indexOf(a);if(-1===c)return;let d=c+b;return d<0&&(d=0),d>=this.size&&(d=this.size-1),this.at(d)}keyFrom(a,b){let c=this.indexOf(a);if(-1===c)return;let d=c+b;return d<0&&(d=0),d>=this.size&&(d=this.size-1),this.keyAt(d)}find(a,b){let c=0;for(let d of this){if(Reflect.apply(a,b,[d,c,this]))return d;c++}}findIndex(a,b){let c=0;for(let d of this){if(Reflect.apply(a,b,[d,c,this]))return c;c++}return -1}filter(b,c){let d=[],e=0;for(let a of this)Reflect.apply(b,c,[a,e,this])&&d.push(a),e++;return new a(d)}map(b,c){let d=[],e=0;for(let a of this)d.push([a[0],Reflect.apply(b,c,[a,e,this])]),e++;return new a(d)}reduce(...a){let[b,c]=a,d=0,e=c??this.at(0);for(let c of this)e=0===d&&1===a.length?c:Reflect.apply(b,this,[e,c,d,this]),d++;return e}reduceRight(...a){let[b,c]=a,d=c??this.at(-1);for(let c=this.size-1;c>=0;c--){let e=this.at(c);d=c===this.size-1&&1===a.length?e:Reflect.apply(b,this,[d,e,c,this])}return d}toSorted(b){return new a([...this.entries()].sort(b))}toReversed(){let b=new a;for(let a=this.size-1;a>=0;a--){let c=this.keyAt(a),d=this.get(c);b.set(c,d)}return b}toSpliced(...b){let c=[...this.entries()];return c.splice(...b),new a(c)}slice(b,c){let d=new a,e=this.size-1;if(void 0===b)return d;b<0&&(b+=this.size),void 0!==c&&c>0&&(e=c-1);for(let a=b;a<=e;a++){let b=this.keyAt(a),c=this.get(b);d.set(b,c)}return d}every(a,b){let c=0;for(let d of this){if(!Reflect.apply(a,b,[d,c,this]))return!1;c++}return!0}some(a,b){let c=0;for(let d of this){if(Reflect.apply(a,b,[d,c,this]))return!0;c++}return!1}}),a.s(["createCollection",()=>g])}];
2
2
 
3
3
  //# sourceMappingURL=_0dc2cfd3._.js.map