madarx 2.12.1 → 2.14.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 (398) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +277 -284
  3. package/.next/standalone/.next/app-path-routes-manifest.json +67 -68
  4. package/.next/standalone/.next/build-manifest.json +2 -2
  5. package/.next/standalone/.next/prerender-manifest.json +3 -3
  6. package/.next/standalone/.next/routes-manifest.json +0 -6
  7. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  8. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  9. package/.next/standalone/.next/server/app/_not-found.rsc +1 -1
  10. package/.next/standalone/.next/server/app/activity/page_client-reference-manifest.js +1 -1
  11. package/.next/standalone/.next/server/app/admin/page.js +2 -2
  12. package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  13. package/.next/standalone/.next/server/app/agents/[id]/page.js +4 -4
  14. package/.next/standalone/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
  15. package/.next/standalone/.next/server/app/agents/page.js +1 -1
  16. package/.next/standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  17. package/.next/standalone/.next/server/app/api/activity/route_client-reference-manifest.js +1 -1
  18. package/.next/standalone/.next/server/app/api/admin/audit-export/route_client-reference-manifest.js +1 -1
  19. package/.next/standalone/.next/server/app/api/admin/share-links/route_client-reference-manifest.js +1 -1
  20. package/.next/standalone/.next/server/app/api/agent-memory/route_client-reference-manifest.js +1 -1
  21. package/.next/standalone/.next/server/app/api/agent-runs/[id]/cancel/route_client-reference-manifest.js +1 -1
  22. package/.next/standalone/.next/server/app/api/agent-runs/[id]/events/route_client-reference-manifest.js +1 -1
  23. package/.next/standalone/.next/server/app/api/agent-runs/[id]/log/route_client-reference-manifest.js +1 -1
  24. package/.next/standalone/.next/server/app/api/agent-runs/[id]/route_client-reference-manifest.js +1 -1
  25. package/.next/standalone/.next/server/app/api/agent-runs/route_client-reference-manifest.js +1 -1
  26. package/.next/standalone/.next/server/app/api/agents/[id]/chain/route_client-reference-manifest.js +1 -1
  27. package/.next/standalone/.next/server/app/api/agents/[id]/memory/route_client-reference-manifest.js +1 -1
  28. package/.next/standalone/.next/server/app/api/agents/[id]/reports/route_client-reference-manifest.js +1 -1
  29. package/.next/standalone/.next/server/app/api/agents/[id]/run/route_client-reference-manifest.js +1 -1
  30. package/.next/standalone/.next/server/app/api/agents/[id]/skills/route_client-reference-manifest.js +1 -1
  31. package/.next/standalone/.next/server/app/api/agents/create/route_client-reference-manifest.js +1 -1
  32. package/.next/standalone/.next/server/app/api/agents/ops/route_client-reference-manifest.js +1 -1
  33. package/.next/standalone/.next/server/app/api/approvals/[id]/route_client-reference-manifest.js +1 -1
  34. package/.next/standalone/.next/server/app/api/approvals/route_client-reference-manifest.js +1 -1
  35. package/.next/standalone/.next/server/app/api/artifacts/[id]/acl/route_client-reference-manifest.js +1 -1
  36. package/.next/standalone/.next/server/app/api/artifacts/[id]/protect/route_client-reference-manifest.js +1 -1
  37. package/.next/standalone/.next/server/app/api/artifacts/[id]/raw/route_client-reference-manifest.js +1 -1
  38. package/.next/standalone/.next/server/app/api/artifacts/[id]/route_client-reference-manifest.js +1 -1
  39. package/.next/standalone/.next/server/app/api/artifacts/[id]/share-link/[linkId]/route_client-reference-manifest.js +1 -1
  40. package/.next/standalone/.next/server/app/api/artifacts/[id]/share-link/route_client-reference-manifest.js +1 -1
  41. package/.next/standalone/.next/server/app/api/artifacts/upload/route_client-reference-manifest.js +1 -1
  42. package/.next/standalone/.next/server/app/api/audit/list/route_client-reference-manifest.js +1 -1
  43. package/.next/standalone/.next/server/app/api/audit/search/route_client-reference-manifest.js +1 -1
  44. package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
  45. package/.next/standalone/.next/server/app/api/auth/config/route_client-reference-manifest.js +1 -1
  46. package/.next/standalone/.next/server/app/api/auth/join-bootstrap/route_client-reference-manifest.js +1 -1
  47. package/.next/standalone/.next/server/app/api/auth/session/route_client-reference-manifest.js +1 -1
  48. package/.next/standalone/.next/server/app/api/brand/route_client-reference-manifest.js +1 -1
  49. package/.next/standalone/.next/server/app/api/chat/sessions/[id]/route_client-reference-manifest.js +1 -1
  50. package/.next/standalone/.next/server/app/api/chat/sessions/route_client-reference-manifest.js +1 -1
  51. package/.next/standalone/.next/server/app/api/config/env/route_client-reference-manifest.js +1 -1
  52. package/.next/standalone/.next/server/app/api/config/route_client-reference-manifest.js +1 -1
  53. package/.next/standalone/.next/server/app/api/connections/[service]/route_client-reference-manifest.js +1 -1
  54. package/.next/standalone/.next/server/app/api/connections/[service]/verify/route_client-reference-manifest.js +1 -1
  55. package/.next/standalone/.next/server/app/api/connections/route_client-reference-manifest.js +1 -1
  56. package/.next/standalone/.next/server/app/api/cron/tick/route_client-reference-manifest.js +1 -1
  57. package/.next/standalone/.next/server/app/api/dashboard/spaces/[id]/move/route_client-reference-manifest.js +1 -1
  58. package/.next/standalone/.next/server/app/api/dashboard/spaces/[id]/route_client-reference-manifest.js +1 -1
  59. package/.next/standalone/.next/server/app/api/dashboard/spaces/[id]/share-link/[linkId]/route_client-reference-manifest.js +1 -1
  60. package/.next/standalone/.next/server/app/api/dashboard/spaces/[id]/share-link/route_client-reference-manifest.js +1 -1
  61. package/.next/standalone/.next/server/app/api/dashboard/spaces/import/route_client-reference-manifest.js +1 -1
  62. package/.next/standalone/.next/server/app/api/dashboard/spaces/route_client-reference-manifest.js +1 -1
  63. package/.next/standalone/.next/server/app/api/disk/files/[id]/blob/route_client-reference-manifest.js +1 -1
  64. package/.next/standalone/.next/server/app/api/disk/files/[id]/route_client-reference-manifest.js +1 -1
  65. package/.next/standalone/.next/server/app/api/disk/files/[id]/transcribe/route_client-reference-manifest.js +1 -1
  66. package/.next/standalone/.next/server/app/api/disk/files/route_client-reference-manifest.js +1 -1
  67. package/.next/standalone/.next/server/app/api/disk/folders/route_client-reference-manifest.js +1 -1
  68. package/.next/standalone/.next/server/app/api/events/since/[cursor]/route_client-reference-manifest.js +1 -1
  69. package/.next/standalone/.next/server/app/api/events/stream/route_client-reference-manifest.js +1 -1
  70. package/.next/standalone/.next/server/app/api/fs/create-folder/route_client-reference-manifest.js +1 -1
  71. package/.next/standalone/.next/server/app/api/fs/pick-folder/route_client-reference-manifest.js +1 -1
  72. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/blueprint/route.js.nft.json +1 -1
  73. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/blueprint/route_client-reference-manifest.js +1 -1
  74. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/diagnostic/route.js.nft.json +1 -1
  75. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/diagnostic/route_client-reference-manifest.js +1 -1
  76. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/governance/route.js.nft.json +1 -1
  77. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/governance/route_client-reference-manifest.js +1 -1
  78. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/interview/route.js.nft.json +1 -1
  79. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/interview/route_client-reference-manifest.js +1 -1
  80. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/pilot/route.js.nft.json +1 -1
  81. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/pilot/route_client-reference-manifest.js +1 -1
  82. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/quarterly/route.js.nft.json +1 -1
  83. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/quarterly/route_client-reference-manifest.js +1 -1
  84. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/route.js.nft.json +1 -1
  85. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/route_client-reference-manifest.js +1 -1
  86. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/setup-package/route.js.nft.json +1 -1
  87. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/setup-package/route_client-reference-manifest.js +1 -1
  88. package/.next/standalone/.next/server/app/api/hail/engagements/route.js.nft.json +1 -1
  89. package/.next/standalone/.next/server/app/api/hail/engagements/route_client-reference-manifest.js +1 -1
  90. package/.next/standalone/.next/server/app/api/hail/interviews/[id]/responses/route.js.nft.json +1 -1
  91. package/.next/standalone/.next/server/app/api/hail/interviews/[id]/responses/route_client-reference-manifest.js +1 -1
  92. package/.next/standalone/.next/server/app/api/hail/interviews/[id]/route.js.nft.json +1 -1
  93. package/.next/standalone/.next/server/app/api/hail/interviews/[id]/route_client-reference-manifest.js +1 -1
  94. package/.next/standalone/.next/server/app/api/hail/setup-packages/[id]/apply/route.js.nft.json +1 -1
  95. package/.next/standalone/.next/server/app/api/hail/setup-packages/[id]/apply/route_client-reference-manifest.js +1 -1
  96. package/.next/standalone/.next/server/app/api/hail/setup-packages/validate/route_client-reference-manifest.js +1 -1
  97. package/.next/standalone/.next/server/app/api/heartbeat/tick/route_client-reference-manifest.js +1 -1
  98. package/.next/standalone/.next/server/app/api/heartbeat/worker/route.js.nft.json +1 -1
  99. package/.next/standalone/.next/server/app/api/heartbeat/worker/route_client-reference-manifest.js +1 -1
  100. package/.next/standalone/.next/server/app/api/help/route_client-reference-manifest.js +1 -1
  101. package/.next/standalone/.next/server/app/api/hermes/jobs/[id]/events/route_client-reference-manifest.js +1 -1
  102. package/.next/standalone/.next/server/app/api/hermes/jobs/[id]/route_client-reference-manifest.js +1 -1
  103. package/.next/standalone/.next/server/app/api/hermes/jobs/route_client-reference-manifest.js +1 -1
  104. package/.next/standalone/.next/server/app/api/integrations/google/callback/route_client-reference-manifest.js +1 -1
  105. package/.next/standalone/.next/server/app/api/integrations/google/oauth/route_client-reference-manifest.js +1 -1
  106. package/.next/standalone/.next/server/app/api/marketplace/[id]/route_client-reference-manifest.js +1 -1
  107. package/.next/standalone/.next/server/app/api/marketplace/open-design/route_client-reference-manifest.js +1 -1
  108. package/.next/standalone/.next/server/app/api/marketplace/route_client-reference-manifest.js +1 -1
  109. package/.next/standalone/.next/server/app/api/mines/import-roots/route_client-reference-manifest.js +1 -1
  110. package/.next/standalone/.next/server/app/api/mines/portfolio/route_client-reference-manifest.js +1 -1
  111. package/.next/standalone/.next/server/app/api/mines/projects/[id]/chunks/route_client-reference-manifest.js +1 -1
  112. package/.next/standalone/.next/server/app/api/mines/projects/[id]/diligence/route_client-reference-manifest.js +1 -1
  113. package/.next/standalone/.next/server/app/api/mines/projects/[id]/import/route_client-reference-manifest.js +1 -1
  114. package/.next/standalone/.next/server/app/api/mines/projects/[id]/publish/route_client-reference-manifest.js +1 -1
  115. package/.next/standalone/.next/server/app/api/mines/projects/route_client-reference-manifest.js +1 -1
  116. package/.next/standalone/.next/server/app/api/missions/route_client-reference-manifest.js +1 -1
  117. package/.next/standalone/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  118. package/.next/standalone/.next/server/app/api/onboarding/blueprint/route_client-reference-manifest.js +1 -1
  119. package/.next/standalone/.next/server/app/api/onboarding/launch/route_client-reference-manifest.js +1 -1
  120. package/.next/standalone/.next/server/app/api/orchestrator/command/route_client-reference-manifest.js +1 -1
  121. package/.next/standalone/.next/server/app/api/orchestrator/stream/route_client-reference-manifest.js +1 -1
  122. package/.next/standalone/.next/server/app/api/orchestrator/upload/route_client-reference-manifest.js +1 -1
  123. package/.next/standalone/.next/server/app/api/org/route_client-reference-manifest.js +1 -1
  124. package/.next/standalone/.next/server/app/api/orgs/[id]/invites/[inviteId]/route_client-reference-manifest.js +1 -1
  125. package/.next/standalone/.next/server/app/api/orgs/[id]/invites/route_client-reference-manifest.js +1 -1
  126. package/.next/standalone/.next/server/app/api/orgs/[id]/members/[userId]/role/route_client-reference-manifest.js +1 -1
  127. package/.next/standalone/.next/server/app/api/orgs/[id]/members/[userId]/route_client-reference-manifest.js +1 -1
  128. package/.next/standalone/.next/server/app/api/orgs/[id]/members/route_client-reference-manifest.js +1 -1
  129. package/.next/standalone/.next/server/app/api/orgs/[id]/route_client-reference-manifest.js +1 -1
  130. package/.next/standalone/.next/server/app/api/orgs/invites/pending/route_client-reference-manifest.js +1 -1
  131. package/.next/standalone/.next/server/app/api/orgs/join/route_client-reference-manifest.js +1 -1
  132. package/.next/standalone/.next/server/app/api/orgs/join-complete/route_client-reference-manifest.js +1 -1
  133. package/.next/standalone/.next/server/app/api/orgs/route_client-reference-manifest.js +1 -1
  134. package/.next/standalone/.next/server/app/api/printing-press/clis/route_client-reference-manifest.js +1 -1
  135. package/.next/standalone/.next/server/app/api/printing-press/install/route_client-reference-manifest.js +1 -1
  136. package/.next/standalone/.next/server/app/api/printing-press/security-mode/route_client-reference-manifest.js +1 -1
  137. package/.next/standalone/.next/server/app/api/privacy/config/route_client-reference-manifest.js +1 -1
  138. package/.next/standalone/.next/server/app/api/privacy/verify/route_client-reference-manifest.js +1 -1
  139. package/.next/standalone/.next/server/app/api/processes/[id]/route.js.nft.json +1 -1
  140. package/.next/standalone/.next/server/app/api/processes/[id]/route_client-reference-manifest.js +1 -1
  141. package/.next/standalone/.next/server/app/api/processes/[id]/share-link/route.js.nft.json +1 -1
  142. package/.next/standalone/.next/server/app/api/processes/[id]/share-link/route_client-reference-manifest.js +1 -1
  143. package/.next/standalone/.next/server/app/api/processes/[id]/stages/[stageId]/override/route.js.nft.json +1 -1
  144. package/.next/standalone/.next/server/app/api/processes/[id]/stages/[stageId]/override/route_client-reference-manifest.js +1 -1
  145. package/.next/standalone/.next/server/app/api/processes/[id]/stages/[stageId]/retry/route.js.nft.json +1 -1
  146. package/.next/standalone/.next/server/app/api/processes/[id]/stages/[stageId]/retry/route_client-reference-manifest.js +1 -1
  147. package/.next/standalone/.next/server/app/api/processes/[id]/stages/[stageId]/submit/route.js.nft.json +1 -1
  148. package/.next/standalone/.next/server/app/api/processes/[id]/stages/[stageId]/submit/route_client-reference-manifest.js +1 -1
  149. package/.next/standalone/.next/server/app/api/processes/definitions/[slug]/route_client-reference-manifest.js +1 -1
  150. package/.next/standalone/.next/server/app/api/processes/definitions/[slug]/settings/route_client-reference-manifest.js +1 -1
  151. package/.next/standalone/.next/server/app/api/processes/definitions/route_client-reference-manifest.js +1 -1
  152. package/.next/standalone/.next/server/app/api/processes/definitions/validate/route_client-reference-manifest.js +1 -1
  153. package/.next/standalone/.next/server/app/api/processes/route.js.nft.json +1 -1
  154. package/.next/standalone/.next/server/app/api/processes/route_client-reference-manifest.js +1 -1
  155. package/.next/standalone/.next/server/app/api/processes/start-and-route/route.js +1 -1
  156. package/.next/standalone/.next/server/app/api/processes/start-and-route/route.js.nft.json +1 -1
  157. package/.next/standalone/.next/server/app/api/processes/start-and-route/route_client-reference-manifest.js +1 -1
  158. package/.next/standalone/.next/server/app/api/projects/[slug]/library/route_client-reference-manifest.js +1 -1
  159. package/.next/standalone/.next/server/app/api/projects/[slug]/route_client-reference-manifest.js +1 -1
  160. package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  161. package/.next/standalone/.next/server/app/api/runs/approve-claude-run/route_client-reference-manifest.js +1 -1
  162. package/.next/standalone/.next/server/app/api/runs/claude-code-dry-run/route_client-reference-manifest.js +1 -1
  163. package/.next/standalone/.next/server/app/api/runs/competitor-report/route_client-reference-manifest.js +1 -1
  164. package/.next/standalone/.next/server/app/api/runs/engine-ping/route_client-reference-manifest.js +1 -1
  165. package/.next/standalone/.next/server/app/api/runs/marketing-plan/route_client-reference-manifest.js +1 -1
  166. package/.next/standalone/.next/server/app/api/schedules/upsert/route_client-reference-manifest.js +1 -1
  167. package/.next/standalone/.next/server/app/api/secrets/[name]/route_client-reference-manifest.js +1 -1
  168. package/.next/standalone/.next/server/app/api/secrets/route_client-reference-manifest.js +1 -1
  169. package/.next/standalone/.next/server/app/api/settings/trust-mode/route_client-reference-manifest.js +1 -1
  170. package/.next/standalone/.next/server/app/api/share/[token]/otp/route_client-reference-manifest.js +1 -1
  171. package/.next/standalone/.next/server/app/api/share/[token]/route_client-reference-manifest.js +1 -1
  172. package/.next/standalone/.next/server/app/api/share/[token]/verify/route_client-reference-manifest.js +1 -1
  173. package/.next/standalone/.next/server/app/api/share/space/[token]/otp/route_client-reference-manifest.js +1 -1
  174. package/.next/standalone/.next/server/app/api/share/space/[token]/route_client-reference-manifest.js +1 -1
  175. package/.next/standalone/.next/server/app/api/share/space/[token]/verify/route_client-reference-manifest.js +1 -1
  176. package/.next/standalone/.next/server/app/api/shared/spaces/[id]/acl/route_client-reference-manifest.js +1 -1
  177. package/.next/standalone/.next/server/app/api/shared/spaces/publish/route_client-reference-manifest.js +1 -1
  178. package/.next/standalone/.next/server/app/api/shared/spaces/route_client-reference-manifest.js +1 -1
  179. package/.next/standalone/.next/server/app/api/shared/spaces/status/route_client-reference-manifest.js +1 -1
  180. package/.next/standalone/.next/server/app/api/shared/spaces/unpublish/route_client-reference-manifest.js +1 -1
  181. package/.next/standalone/.next/server/app/api/state/route_client-reference-manifest.js +1 -1
  182. package/.next/standalone/.next/server/app/api/system/update/route_client-reference-manifest.js +1 -1
  183. package/.next/standalone/.next/server/app/api/tasks/[id]/active-run/route_client-reference-manifest.js +1 -1
  184. package/.next/standalone/.next/server/app/api/tasks/[id]/attachments/route_client-reference-manifest.js +1 -1
  185. package/.next/standalone/.next/server/app/api/tasks/[id]/checklist/[itemId]/route_client-reference-manifest.js +1 -1
  186. package/.next/standalone/.next/server/app/api/tasks/[id]/checklist/route_client-reference-manifest.js +1 -1
  187. package/.next/standalone/.next/server/app/api/tasks/[id]/checkout/route_client-reference-manifest.js +1 -1
  188. package/.next/standalone/.next/server/app/api/tasks/[id]/children/route_client-reference-manifest.js +1 -1
  189. package/.next/standalone/.next/server/app/api/tasks/[id]/comments/route_client-reference-manifest.js +1 -1
  190. package/.next/standalone/.next/server/app/api/tasks/[id]/events/route_client-reference-manifest.js +1 -1
  191. package/.next/standalone/.next/server/app/api/tasks/[id]/live-runs/route_client-reference-manifest.js +1 -1
  192. package/.next/standalone/.next/server/app/api/tasks/[id]/release/route_client-reference-manifest.js +1 -1
  193. package/.next/standalone/.next/server/app/api/tasks/[id]/route_client-reference-manifest.js +1 -1
  194. package/.next/standalone/.next/server/app/api/tasks/route_client-reference-manifest.js +1 -1
  195. package/.next/standalone/.next/server/app/api/tool-allowlists/[id]/route_client-reference-manifest.js +1 -1
  196. package/.next/standalone/.next/server/app/api/tool-allowlists/route_client-reference-manifest.js +1 -1
  197. package/.next/standalone/.next/server/app/api/tool-egress/route_client-reference-manifest.js +1 -1
  198. package/.next/standalone/.next/server/app/api/tools/[name]/approve/route_client-reference-manifest.js +1 -1
  199. package/.next/standalone/.next/server/app/api/tools/[name]/route_client-reference-manifest.js +1 -1
  200. package/.next/standalone/.next/server/app/api/tools/route_client-reference-manifest.js +1 -1
  201. package/.next/standalone/.next/server/app/api/transcripts/route_client-reference-manifest.js +1 -1
  202. package/.next/standalone/.next/server/app/api/voice/providers/route_client-reference-manifest.js +1 -1
  203. package/.next/standalone/.next/server/app/api/voice/realtime/context/route_client-reference-manifest.js +1 -1
  204. package/.next/standalone/.next/server/app/api/voice/realtime/session/route_client-reference-manifest.js +1 -1
  205. package/.next/standalone/.next/server/app/api/voice/realtime/tool-result/route_client-reference-manifest.js +1 -1
  206. package/.next/standalone/.next/server/app/api/voice/realtime/tools/route_client-reference-manifest.js +1 -1
  207. package/.next/standalone/.next/server/app/api/voice/tts/route_client-reference-manifest.js +1 -1
  208. package/.next/standalone/.next/server/app/api/whatsapp/allowlist/route_client-reference-manifest.js +1 -1
  209. package/.next/standalone/.next/server/app/api/whatsapp/disconnect/route_client-reference-manifest.js +1 -1
  210. package/.next/standalone/.next/server/app/api/whatsapp/messages/route_client-reference-manifest.js +1 -1
  211. package/.next/standalone/.next/server/app/api/whatsapp/qr/route_client-reference-manifest.js +1 -1
  212. package/.next/standalone/.next/server/app/api/whatsapp/send/route_client-reference-manifest.js +1 -1
  213. package/.next/standalone/.next/server/app/api/whatsapp/status/route_client-reference-manifest.js +1 -1
  214. package/.next/standalone/.next/server/app/approvals/page.js +2 -2
  215. package/.next/standalone/.next/server/app/approvals/page_client-reference-manifest.js +1 -1
  216. package/.next/standalone/.next/server/app/architecture/page_client-reference-manifest.js +1 -1
  217. package/.next/standalone/.next/server/app/architecture.html +2 -2
  218. package/.next/standalone/.next/server/app/architecture.rsc +1 -1
  219. package/.next/standalone/.next/server/app/audit/live/page_client-reference-manifest.js +1 -1
  220. package/.next/standalone/.next/server/app/audit/page_client-reference-manifest.js +1 -1
  221. package/.next/standalone/.next/server/app/brand/page_client-reference-manifest.js +1 -1
  222. package/.next/standalone/.next/server/app/brand.html +1 -1
  223. package/.next/standalone/.next/server/app/brand.rsc +1 -1
  224. package/.next/standalone/.next/server/app/disk/page_client-reference-manifest.js +1 -1
  225. package/.next/standalone/.next/server/app/federated-ai/page_client-reference-manifest.js +1 -1
  226. package/.next/standalone/.next/server/app/federated-ai.html +2 -2
  227. package/.next/standalone/.next/server/app/federated-ai.rsc +1 -1
  228. package/.next/standalone/.next/server/app/hail/[id]/governance/page.js.nft.json +1 -1
  229. package/.next/standalone/.next/server/app/hail/[id]/governance/page_client-reference-manifest.js +1 -1
  230. package/.next/standalone/.next/server/app/hail/[id]/interview/page.js +1 -1
  231. package/.next/standalone/.next/server/app/hail/[id]/interview/page.js.nft.json +1 -1
  232. package/.next/standalone/.next/server/app/hail/[id]/interview/page_client-reference-manifest.js +1 -1
  233. package/.next/standalone/.next/server/app/hail/[id]/page.js +2 -2
  234. package/.next/standalone/.next/server/app/hail/[id]/page.js.nft.json +1 -1
  235. package/.next/standalone/.next/server/app/hail/[id]/page_client-reference-manifest.js +1 -1
  236. package/.next/standalone/.next/server/app/hail/[id]/setup/page.js +1 -1
  237. package/.next/standalone/.next/server/app/hail/[id]/setup/page.js.nft.json +1 -1
  238. package/.next/standalone/.next/server/app/hail/[id]/setup/page_client-reference-manifest.js +1 -1
  239. package/.next/standalone/.next/server/app/hail/page.js +3 -3
  240. package/.next/standalone/.next/server/app/hail/page.js.nft.json +1 -1
  241. package/.next/standalone/.next/server/app/hail/page_client-reference-manifest.js +1 -1
  242. package/.next/standalone/.next/server/app/help/[slug]/page_client-reference-manifest.js +1 -1
  243. package/.next/standalone/.next/server/app/help/page_client-reference-manifest.js +1 -1
  244. package/.next/standalone/.next/server/app/index.html +2 -2
  245. package/.next/standalone/.next/server/app/index.rsc +1 -1
  246. package/.next/standalone/.next/server/app/join/page_client-reference-manifest.js +1 -1
  247. package/.next/standalone/.next/server/app/join.html +1 -1
  248. package/.next/standalone/.next/server/app/join.rsc +1 -1
  249. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  250. package/.next/standalone/.next/server/app/marketplace/page.js +2 -2
  251. package/.next/standalone/.next/server/app/marketplace/page_client-reference-manifest.js +1 -1
  252. package/.next/standalone/.next/server/app/mines/[projectId]/page_client-reference-manifest.js +1 -1
  253. package/.next/standalone/.next/server/app/mines/[projectId]/results/page_client-reference-manifest.js +1 -1
  254. package/.next/standalone/.next/server/app/mines/page_client-reference-manifest.js +1 -1
  255. package/.next/standalone/.next/server/app/missions/page.js +2 -2
  256. package/.next/standalone/.next/server/app/missions/page_client-reference-manifest.js +1 -1
  257. package/.next/standalone/.next/server/app/onboarding/org/page_client-reference-manifest.js +1 -1
  258. package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  259. package/.next/standalone/.next/server/app/onboarding.html +2 -2
  260. package/.next/standalone/.next/server/app/onboarding.rsc +1 -1
  261. package/.next/standalone/.next/server/app/org/page.js +1 -1
  262. package/.next/standalone/.next/server/app/org/page.js.nft.json +1 -1
  263. package/.next/standalone/.next/server/app/org/page_client-reference-manifest.js +1 -1
  264. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  265. package/.next/standalone/.next/server/app/projects/[slug]/log/page_client-reference-manifest.js +1 -1
  266. package/.next/standalone/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  267. package/.next/standalone/.next/server/app/projects/new/page.js +1 -1
  268. package/.next/standalone/.next/server/app/projects/new/page_client-reference-manifest.js +1 -1
  269. package/.next/standalone/.next/server/app/projects/new.html +1 -1
  270. package/.next/standalone/.next/server/app/projects/new.rsc +2 -2
  271. package/.next/standalone/.next/server/app/projects/page.js +28 -28
  272. package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  273. package/.next/standalone/.next/server/app/reports/[file]/route_client-reference-manifest.js +1 -1
  274. package/.next/standalone/.next/server/app/reports/page_client-reference-manifest.js +1 -1
  275. package/.next/standalone/.next/server/app/runtime/page_client-reference-manifest.js +1 -1
  276. package/.next/standalone/.next/server/app/schedules/page.js +1 -1
  277. package/.next/standalone/.next/server/app/schedules/page.js.nft.json +1 -1
  278. package/.next/standalone/.next/server/app/schedules/page_client-reference-manifest.js +1 -1
  279. package/.next/standalone/.next/server/app/settings/account/page_client-reference-manifest.js +1 -1
  280. package/.next/standalone/.next/server/app/settings/advanced/page_client-reference-manifest.js +1 -1
  281. package/.next/standalone/.next/server/app/settings/appearance/page_client-reference-manifest.js +1 -1
  282. package/.next/standalone/.next/server/app/settings/brand/page_client-reference-manifest.js +1 -1
  283. package/.next/standalone/.next/server/app/settings/brand.html +2 -2
  284. package/.next/standalone/.next/server/app/settings/brand.rsc +1 -1
  285. package/.next/standalone/.next/server/app/settings/connectors/page_client-reference-manifest.js +1 -1
  286. package/.next/standalone/.next/server/app/settings/engines/page_client-reference-manifest.js +1 -1
  287. package/.next/standalone/.next/server/app/settings/onboarding/page_client-reference-manifest.js +1 -1
  288. package/.next/standalone/.next/server/app/settings/onboarding.html +2 -2
  289. package/.next/standalone/.next/server/app/settings/onboarding.rsc +1 -1
  290. package/.next/standalone/.next/server/app/settings/organization/page.js +1 -1
  291. package/.next/standalone/.next/server/app/settings/organization/page.js.nft.json +1 -1
  292. package/.next/standalone/.next/server/app/settings/organization/page_client-reference-manifest.js +1 -1
  293. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  294. package/.next/standalone/.next/server/app/settings/runtime/page_client-reference-manifest.js +1 -1
  295. package/.next/standalone/.next/server/app/settings/team/page_client-reference-manifest.js +1 -1
  296. package/.next/standalone/.next/server/app/settings/tools/page_client-reference-manifest.js +1 -1
  297. package/.next/standalone/.next/server/app/settings.html +2 -2
  298. package/.next/standalone/.next/server/app/settings.rsc +1 -1
  299. package/.next/standalone/.next/server/app/share/[token]/page_client-reference-manifest.js +1 -1
  300. package/.next/standalone/.next/server/app/share/space/[token]/page_client-reference-manifest.js +1 -1
  301. package/.next/standalone/.next/server/app/tasks/[id]/page.js +2 -2
  302. package/.next/standalone/.next/server/app/tasks/[id]/page_client-reference-manifest.js +1 -1
  303. package/.next/standalone/.next/server/app/tasks/page.js +2 -2
  304. package/.next/standalone/.next/server/app/tasks/page_client-reference-manifest.js +1 -1
  305. package/.next/standalone/.next/server/app/team/[agentId]/page_client-reference-manifest.js +1 -1
  306. package/.next/standalone/.next/server/app/team/page_client-reference-manifest.js +1 -1
  307. package/.next/standalone/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  308. package/.next/standalone/.next/server/app/whatsapp/page_client-reference-manifest.js +1 -1
  309. package/.next/standalone/.next/server/app/whatsapp.html +1 -1
  310. package/.next/standalone/.next/server/app/whatsapp.rsc +1 -1
  311. package/.next/standalone/.next/server/app/workflows/[caseId]/page.js +1 -1
  312. package/.next/standalone/.next/server/app/workflows/[caseId]/page.js.nft.json +1 -1
  313. package/.next/standalone/.next/server/app/workflows/[caseId]/page_client-reference-manifest.js +1 -1
  314. package/.next/standalone/.next/server/app/workflows/new/[caseId]/page.js +1 -1
  315. package/.next/standalone/.next/server/app/workflows/new/[caseId]/page.js.nft.json +1 -1
  316. package/.next/standalone/.next/server/app/workflows/new/[caseId]/page_client-reference-manifest.js +1 -1
  317. package/.next/standalone/.next/server/app/workflows/new/definition/page_client-reference-manifest.js +1 -1
  318. package/.next/standalone/.next/server/app/workflows/page.js +1 -1
  319. package/.next/standalone/.next/server/app/workflows/page.js.nft.json +1 -1
  320. package/.next/standalone/.next/server/app/workflows/page_client-reference-manifest.js +1 -1
  321. package/.next/standalone/.next/server/app/workflows/share/[caseId]/page.js +1 -1
  322. package/.next/standalone/.next/server/app/workflows/share/[caseId]/page.js.nft.json +1 -1
  323. package/.next/standalone/.next/server/app/workflows/share/[caseId]/page_client-reference-manifest.js +1 -1
  324. package/.next/standalone/.next/server/app-paths-manifest.json +67 -68
  325. package/.next/standalone/.next/server/chunks/1699.js +28 -28
  326. package/.next/standalone/.next/server/chunks/5185.js +4 -27
  327. package/.next/standalone/.next/server/chunks/5257.js +1 -1
  328. package/.next/standalone/.next/server/chunks/6355.js +1 -0
  329. package/.next/standalone/.next/server/chunks/{3784.js → 6474.js} +1 -1
  330. package/.next/standalone/.next/server/functions-config-manifest.json +24 -24
  331. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  332. package/.next/standalone/.next/server/pages/404.html +1 -1
  333. package/.next/standalone/.next/server/pages/500.html +1 -1
  334. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  335. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  336. package/.next/standalone/.next/static/-LlttjOnKZXGqZXDKcj-4/_buildManifest.js +1 -0
  337. package/.next/standalone/.next/static/chunks/app/projects/page-09e5c527e3ba83e2.js +1 -0
  338. package/.next/standalone/.next/static/chunks/app/workflows/[caseId]/page-9949ff1c223e771d.js +1 -0
  339. package/.next/{static/chunks/app/workflows/page-25cb2c4cb90273a8.js → standalone/.next/static/chunks/app/workflows/page-d0484521369bce4c.js} +1 -1
  340. package/.next/standalone/CHANGELOG.md +31 -0
  341. package/.next/standalone/data/.artifacts-migrated-v1 +1 -1
  342. package/.next/standalone/data/.default-project-seeded +1 -1
  343. package/.next/standalone/data/madarx.sqlite +0 -0
  344. package/.next/standalone/data/madarx.sqlite-shm +0 -0
  345. package/.next/standalone/data/madarx.sqlite-wal +0 -0
  346. package/.next/standalone/lib/process/seeds/specs/mine-project-intake.json +12 -4
  347. package/.next/standalone/lib/process/seeds/specs/mine-valuation.json +6 -2
  348. package/.next/standalone/lib/process/stages/policy-dsl-legacy.js +178 -0
  349. package/.next/standalone/lib/process/stages/policy-gate.js +24 -168
  350. package/.next/standalone/package.json +4 -1
  351. package/.next/standalone/workspace/agents/ops-agent/skills.md +24 -0
  352. package/.next/standalone/workspace/agents/tool-smith-agent/skills.md +24 -0
  353. package/.next/static/-LlttjOnKZXGqZXDKcj-4/_buildManifest.js +1 -0
  354. package/.next/static/chunks/app/projects/page-09e5c527e3ba83e2.js +1 -0
  355. package/.next/static/chunks/app/workflows/[caseId]/page-9949ff1c223e771d.js +1 -0
  356. package/.next/{standalone/.next/static/chunks/app/workflows/page-25cb2c4cb90273a8.js → static/chunks/app/workflows/page-d0484521369bce4c.js} +1 -1
  357. package/CHANGELOG.md +31 -0
  358. package/ai-docs/process-engine.md +33 -1
  359. package/app/api/processes/start-and-route/route.js +5 -3
  360. package/app/workflows/[caseId]/case-detail-client.jsx +2 -2
  361. package/app/workflows/definition-card.jsx +12 -18
  362. package/app/workflows/new/[caseId]/page.js +8 -8
  363. package/app/workflows/page.js +0 -5
  364. package/app/workflows/share/[caseId]/page.js +0 -1
  365. package/lib/cli/banner.js +200 -21
  366. package/lib/cli/run.js +33 -11
  367. package/lib/cli/splash.js +120 -0
  368. package/lib/marketplace-seeds.js +141 -3
  369. package/lib/process/artifacts.js +12 -60
  370. package/lib/process/engine.js +5 -5
  371. package/lib/process/policy-predicates.js +116 -0
  372. package/lib/process/seeds/specs/mine-project-intake.json +12 -4
  373. package/lib/process/seeds/specs/mine-valuation.json +6 -2
  374. package/lib/process/spec-validator.js +46 -1
  375. package/lib/process/stages/policy-dsl-legacy.js +178 -0
  376. package/lib/process/stages/policy-gate.js +24 -168
  377. package/lib/runtime.js +52 -3
  378. package/lib/seeds.js +5 -1
  379. package/lib/tools/registry.js +20 -0
  380. package/package.json +4 -1
  381. package/scripts/postbuild-standalone.mjs +9 -0
  382. package/scripts/postinstall-splash.mjs +81 -0
  383. package/scripts/preview-banner.mjs +24 -0
  384. package/.next/standalone/.next/server/app/workflows/new/page.js +0 -2
  385. package/.next/standalone/.next/server/app/workflows/new/page.js.nft.json +0 -1
  386. package/.next/standalone/.next/server/app/workflows/new/page_client-reference-manifest.js +0 -1
  387. package/.next/standalone/.next/static/BTzAhaVl8-xEC5Te-d7Ns/_buildManifest.js +0 -1
  388. package/.next/standalone/.next/static/chunks/app/projects/page-7b6c6e010183e070.js +0 -1
  389. package/.next/standalone/.next/static/chunks/app/workflows/[caseId]/page-423e4c194c7f5bf5.js +0 -1
  390. package/.next/standalone/.next/static/chunks/app/workflows/new/page-1eda41616cbfc4f3.js +0 -1
  391. package/.next/static/BTzAhaVl8-xEC5Te-d7Ns/_buildManifest.js +0 -1
  392. package/.next/static/chunks/app/projects/page-7b6c6e010183e070.js +0 -1
  393. package/.next/static/chunks/app/workflows/[caseId]/page-423e4c194c7f5bf5.js +0 -1
  394. package/.next/static/chunks/app/workflows/new/page-1eda41616cbfc4f3.js +0 -1
  395. package/app/workflows/new/new-case-flow.jsx +0 -256
  396. package/app/workflows/new/page.js +0 -27
  397. /package/.next/standalone/.next/static/{BTzAhaVl8-xEC5Te-d7Ns → -LlttjOnKZXGqZXDKcj-4}/_ssgManifest.js +0 -0
  398. /package/.next/static/{BTzAhaVl8-xEC5Te-d7Ns → -LlttjOnKZXGqZXDKcj-4}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- self.__BUILD_MANIFEST=function(e,r,t,_){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:141,errorRate:1e-4,numBits:2703,numHashes:14,bitArray:[1,0,1,0,r,e,r,r,e,r,e,e,e,r,e,r,e,e,e,r,r,r,r,r,r,e,e,r,e,r,e,r,e,e,r,r,r,e,r,r,r,e,e,r,r,e,e,e,r,r,r,r,r,e,e,e,e,e,e,e,r,e,r,e,e,r,r,e,e,r,r,r,e,r,r,r,e,r,r,r,e,e,e,r,r,r,e,r,e,r,e,e,r,r,e,r,e,e,r,e,e,e,r,e,e,e,e,r,r,r,e,e,e,e,r,r,r,r,r,e,r,r,e,r,r,e,r,e,e,e,e,e,r,r,e,e,e,e,e,e,e,r,r,r,e,e,r,e,e,e,r,r,r,e,r,e,e,e,e,r,r,e,e,r,r,r,e,r,r,r,r,r,e,r,r,e,e,e,e,r,r,e,r,e,r,e,e,e,r,e,e,r,r,r,r,r,r,r,e,e,e,r,e,r,r,r,r,e,r,e,r,e,e,r,e,e,e,r,r,r,e,r,e,r,r,r,r,e,e,e,r,e,e,r,e,e,r,e,r,e,r,r,e,r,e,r,r,r,r,e,r,e,e,e,e,r,e,e,e,e,e,r,r,e,r,r,e,r,r,r,e,e,e,r,r,e,r,e,e,e,r,e,e,e,e,e,e,e,r,e,e,e,r,e,r,r,r,r,e,e,r,r,r,r,r,e,r,e,r,e,r,r,e,r,r,e,r,e,e,r,e,e,e,r,r,e,e,e,r,r,e,e,e,e,r,r,e,e,e,r,r,r,e,r,r,r,e,r,r,r,r,e,e,e,e,r,r,e,r,r,r,e,e,e,e,e,e,e,e,r,e,e,r,e,r,e,e,e,e,e,r,r,r,r,r,e,e,r,e,r,e,e,e,r,e,r,e,r,r,e,r,e,r,r,e,r,r,r,r,r,e,e,r,e,e,e,e,e,e,r,e,e,r,r,e,r,e,r,e,e,r,e,e,r,e,r,e,e,e,e,r,e,r,e,e,e,r,r,r,r,e,r,r,r,e,r,e,r,r,e,e,e,e,e,e,r,e,e,e,e,r,r,r,e,e,e,e,e,e,r,e,r,e,e,r,e,e,e,e,e,r,r,e,r,r,e,r,r,e,e,r,e,e,r,e,r,r,e,r,e,e,e,e,e,e,e,e,r,e,e,e,r,e,e,e,e,r,r,e,r,r,e,r,r,r,r,r,r,r,e,r,e,e,e,r,e,r,e,e,r,e,r,e,r,r,r,e,r,r,e,e,e,r,r,e,r,r,e,r,r,e,e,e,r,r,e,e,e,r,r,e,e,e,r,r,r,e,r,r,r,e,e,r,r,r,e,r,e,e,r,e,r,e,r,r,r,r,r,e,e,r,e,r,e,r,r,r,r,r,r,e,e,e,e,r,r,r,r,r,e,r,r,e,r,e,r,r,r,e,r,e,r,e,r,e,e,e,e,r,r,e,r,e,e,e,e,e,r,e,r,e,e,e,r,e,e,r,e,r,e,e,e,r,e,r,e,e,r,e,r,e,e,e,e,e,r,r,e,r,r,e,r,r,r,r,e,r,e,e,r,r,e,r,e,e,e,e,e,r,e,r,r,e,e,e,r,r,e,r,r,r,e,e,e,e,e,e,e,e,e,e,e,e,e,e,e,r,r,r,r,r,r,r,r,r,r,e,e,e,e,r,e,r,r,e,e,r,e,e,r,e,e,e,e,e,e,e,r,e,r,r,e,r,e,r,e,r,e,r,r,r,e,e,e,e,r,e,r,r,e,e,e,e,r,e,r,e,e,r,r,e,e,e,r,e,e,r,e,e,r,e,e,e,e,r,r,e,e,r,r,r,r,r,r,r,e,e,e,e,r,r,r,r,r,r,r,e,e,r,r,e,r,e,r,e,r,r,r,e,e,e,e,r,e,e,e,r,r,r,r,e,e,e,e,e,e,r,e,r,e,r,e,r,r,e,e,r,r,r,e,e,r,e,e,r,r,e,r,r,r,r,e,e,e,r,r,r,r,e,r,e,r,e,e,r,e,e,r,r,e,e,r,r,e,e,r,r,r,r,r,r,e,e,e,e,r,r,r,r,r,e,r,e,e,e,e,e,e,r,e,r,e,e,e,e,r,r,e,r,e,r,r,r,e,e,r,r,e,r,r,e,r,e,e,r,r,r,e,r,e,r,r,r,e,e,r,r,e,r,e,e,e,r,r,r,r,e,e,e,r,r,e,e,r,e,r,e,e,e,r,r,r,e,e,e,e,e,r,e,e,e,e,r,e,e,e,r,e,r,r,e,e,e,r,r,r,r,r,r,r,e,r,r,r,e,e,e,r,r,e,e,r,r,e,r,r,e,r,r,e,r,r,e,e,r,r,e,e,e,e,r,e,r,r,r,r,e,e,e,r,r,r,e,r,e,e,r,e,r,e,e,r,r,r,e,e,e,r,r,r,r,r,e,r,e,r,r,e,r,e,e,r,r,r,r,e,r,e,r,r,r,r,e,r,e,e,e,r,r,r,r,e,e,e,r,e,e,e,e,r,r,e,e,r,e,e,e,r,r,r,r,e,e,e,e,e,r,r,r,e,e,r,r,e,r,r,e,r,e,e,e,r,e,e,r,e,e,e,r,r,r,e,r,e,r,e,r,r,e,e,r,r,e,r,r,e,r,r,r,e,r,r,r,e,r,r,r,r,e,e,e,e,r,e,e,r,e,e,r,r,r,e,r,r,r,e,e,e,r,e,e,r,r,r,r,r,r,r,r,r,r,r,e,r,r,r,e,e,e,e,e,r,e,e,e,r,e,e,e,e,e,e,e,r,e,e,r,r,e,r,r,r,e,r,e,e,e,r,r,r,e,e,r,e,r,r,r,r,r,r,r,e,e,r,r,r,e,e,r,e,e,e,r,e,e,e,e,e,e,e,r,e,e,r,e,e,r,r,e,r,r,e,r,e,e,r,e,r,e,r,e,e,r,e,r,e,r,r,e,e,r,e,r,e,r,e,e,e,e,e,r,r,e,r,e,r,r,e,e,r,r,r,e,e,e,e,e,e,r,e,e,r,r,e,r,r,r,e,e,e,e,r,e,e,r,r,r,r,r,e,e,r,r,e,e,e,r,e,r,e,r,e,e,e,r,e,r,r,e,e,e,r,e,r,e,e,r,e,e,e,e,r,r,r,r,e,e,r,e,r,r,e,e,e,r,r,r,r,e,r,r,r,e,e,r,r,e,e,r,e,e,r,r,r,e,r,r,r,r,r,r,e,e,r,r,e,e,e,r,r,r,e,r,e,r,r,e,e,e,e,e,e,e,e,e,r,e,e,r,e,e,r,r,r,r,e,e,r,e,e,r,e,e,e,e,e,r,e,e,e,e,e,e,e,r,r,e,r,r,e,r,r,r,r,e,e,r,r,r,e,r,e,e,e,r,e,r,r,e,r,e,r,e,r,r,r,r,e,e,r,e,e,e,r,e,r,r,r,e,e,r,e,r,e,e,r,e,e,e,r,e,r,r,e,r,r,r,e,e,r,e,e,e,e,e,r,e,e,r,r,r,e,e,e,e,r,e,e,r,e,r,r,e,e,e,e,e,r,e,r,r,e,r,e,e,r,e,r,e,r,e,e,e,r,e,e,r,e,e,e,e,e,e,r,r,e,r,r,e,e,r,e,e,e,e,e,r,e,r,e,e,r,r,r,r,e,e,e,e,r,e,e,r,e,r,r,r,r,r,r,r,r,r,e,e,e,e,r,e,r,r,r,e,e,r,r,r,r,r,r,r,e,r,r,e,e,e,e,r,e,r,r,e,r,e,e,e,e,e,r,r,e,r,e,e,e,r,e,e,e,e,r,e,e,r,e,e,r,e,r,r,e,r,e,e,e,e,e,r,e,e,r,e,e,e,r,e,r,e,e,e,e,e,e,r,r,r,e,r,e,e,e,e,r,e,r,e,e,r,r,r,e,r,r,r,r,e,e,r,r,r,e,e,e,e,r,e,e,r,r,e,e,e,r,r,e,r,e,r,r,e,r,r,e,r,e,e,r,e,r,r,e,e,e,r,e,e,r,r,e,e,e,e,r,r,e,r,r,e,e,r,r,e,r,r,e,e,r,e,e,e,r,e,r,e,e,e,e,r,r,r,e,e,r,e,r,r,e,e,r,r,e,r,e,e,e,r,e,r,r,e,e,e,r,e,r,r,r,e,r,e,e,e,e,e,r,e,e,e,e,r,r,r,e,r,r,e,e,r,e,e,e,r,r,r,r,e,e,e,r,e,e,e,e,r,r,e,r,e,e,r,r,e,e,r,r,e,r,e,e,e,e,e,e,r,r,e,e,r,r,e,r,e,r,r,e,e,e,e,r,e,e,r,r,e,e,r,e,r,r,e,r,e,e,r,e,r,e,e,r,r,e,r,e,r,e,e,r,e,r,e,e,r,e,r,e,r,e,r,r,r,e,r,r,e,e,r,r,e,r,e,r,r,r,r,r,r,r,e,r,r,e,r,r,r,e,r,r,e,r,e,r,r,r,r,e,e,e,e,r,r,r,r,r,r,r,r,r,r,e,r,r,e,r,r,e,e,e,r,r,e,r,r,r,e,r,e,e,e,e,r,e,r,e,e,e,e,e,r,e,e,e,e,e,e,r,e,e,r,r,r,r,r,e,r,e,r,e,e,r,e,r,r,e,e,e,e,r,r,r,e,e,r,e,e,e,r,e,r,e,r,r,r,r,r,r,r,e,r,e,e,e,r,e,e,r,e,e,e,r,r,r,e,r,r,r,e,r,r,r,e,r,e,r,r,r,r,r,e,e,r,e,r,r,e,r,e,e,e,r,r,e,e,r,r,e,e,r,e,r,r,e,r,e,e,e,e,r,e,r,r,e,r,r,e,e,r,r,e,r,r,r,e,r,r,e,r,e,r,e,e,r,e,r,e,r,e,r,e,r,r,r,r,e,e,e,e,r,r,r,e,e,r,e,r,r,r,e,r,e,e,r,e,r,e,e,r,r,r,e,e,e,r,r,r,r,r,r,r,e,e,r,r,e,r,e,r,e,e,r,e,e,r,e,r,r,r,r,r,r,r,r,r,r,e,e,r,r,e,e,e,e,r,r,e,e,e,r,e,e,r,r,r,r,r,r,e,e,e,r,r,r,e,e,r,r,e,e,e,r,e,r,e,e,e,r,e,e,r,e,r,r,e,r,e,e,r,e,r,e,e,r,e,r,e,e,e,r,r,e,e,r,r,r,r,e,e,e,r,r,e,r,r,r,e,e,r,e,e,e,e,e,e,e,r,r,e,r,e,r,r,e,r,r,e,r,e,e,r,e,r,e,e,e,r,r,r,r,r,e,e,r,r,e,r,r,r,e,r,e,e,r,e,e,e,e,e,r,e,r,r,e,e,r,e,e,r,r,r,r,e,e,r,e,e,e,r,r,e,e,r,e,e,e,e,e,e,r,r,e,e,r,r,e,r,r,e,e,e,e,e,r,r,r,e,r,r,e,r,e,e,r,r,r,r,e,r,e,e,e,r,e,e,r,r,e,e,r,r,r,e,e,e,r,r,e,e,r,e,e,e,r,r,r,r,r,e,r,r,e,r,e,r,e,r,r,r,r,r,r,e,r,r,e,r,e,e,r,e,e,r,e,r,r,e,e,e,e,e,r,r,r,r,e,r,e,e,r,e,r,e,e,r,e,r,e,r,e,r,e,r,e,r,r,r,r,r,e,r,e,e,e,r,r,r,r,e,r,r,e,r,r,e,e,e,e,e,e,e,r,r,e,e,r,e,e,r,r,r,r,e,e,e,e,e,e,e,e,r,e,r,r,r,e,r,r,e,r,e,e,e,r,r,e,e,r,r,e,r,r,e,r,r,e,r,e,e,e,e,e,e,r,r,r,e,r,e,e,e,r,r,r,r,e,r,e,r,e,e,e,r,e,r,e,e,e,r,e,e,r,r,e,r,r,e,r,e,r,r,e,e,e,r,e,r,r,r,r,r,r,r,r,e,e,e,r,r,e,e,r,e,e,e,r,e,r,e,r,e,r,e,e,e,e,r,e,r,e,e,r,e,r,r]},__routerFilterDynamic:{numItems:39,errorRate:1e-4,numBits:748,numHashes:14,bitArray:[r,e,r,r,e,e,e,e,r,r,r,e,r,r,e,r,e,r,e,r,e,e,r,e,e,r,e,e,e,e,r,r,e,r,e,r,e,r,e,r,e,e,e,r,r,r,r,r,e,r,r,r,e,e,r,e,e,r,r,r,r,r,e,e,r,r,r,e,e,r,r,e,r,e,e,r,r,e,r,e,e,e,e,e,e,r,e,e,r,r,r,e,e,e,r,e,r,e,r,r,e,r,e,r,e,e,e,r,e,e,e,e,r,r,e,e,r,r,e,r,r,r,r,e,e,r,e,e,e,r,e,e,e,r,r,r,r,r,e,r,r,r,r,e,r,e,e,r,r,e,e,r,e,r,e,r,r,r,r,r,e,r,r,e,r,e,r,r,e,r,r,e,e,e,e,e,r,r,r,e,r,r,e,e,r,r,e,e,e,r,r,e,r,e,e,e,r,r,e,e,r,e,r,r,e,r,e,e,e,e,e,r,r,r,e,r,r,r,e,r,e,e,e,r,e,e,e,e,r,e,r,e,e,r,e,e,r,e,e,r,r,r,r,e,e,r,e,r,r,r,e,e,r,r,r,r,e,e,r,r,e,r,r,r,e,e,e,r,r,e,e,r,e,e,e,e,e,e,e,r,r,e,r,e,r,e,e,r,r,r,r,r,r,r,e,r,r,e,r,r,e,r,e,e,r,e,e,e,e,r,r,e,r,e,e,r,r,r,e,e,e,r,e,e,r,r,e,r,e,r,r,r,r,r,r,e,r,e,e,e,r,r,e,r,e,r,r,e,r,e,r,e,e,e,r,e,e,r,r,r,r,r,r,r,r,e,e,e,e,r,r,e,r,e,e,r,r,e,e,r,e,e,r,e,e,e,e,e,e,e,r,r,e,e,e,r,r,e,e,r,r,e,e,r,r,r,r,r,r,r,r,e,e,r,r,r,e,e,r,r,e,e,e,e,r,r,e,r,r,r,r,r,r,e,r,e,r,e,e,e,e,e,e,r,e,r,r,e,r,r,e,e,r,e,e,r,e,e,r,r,r,r,e,r,r,e,r,r,r,e,e,e,e,r,e,e,e,e,r,r,r,r,r,e,e,e,r,e,e,e,e,r,r,e,r,r,r,e,r,r,e,e,r,r,r,e,e,e,r,r,r,e,r,e,r,r,e,r,e,e,e,e,e,r,r,e,r,r,e,r,e,r,e,r,e,r,e,r,r,r,e,r,e,e,r,r,e,e,r,r,e,e,e,e,r,r,r,e,r,r,e,e,e,e,e,e,e,r,e,r,e,e,r,e,r,e,r,r,e,r,e,e,e,e,e,e,r,r,e,e,r,r,e,e,e,e,e,e,r,e,r,e,e,r,r,r,r,e,r,e,e,e,e,r,r,r,r,e,e,e,r,e,r,r,r,r,e,e,r,e,r,r,r,e,r,e,e,r,e,r,r,e,e,e,r,r,r,r,e,r,r,r,e,r,e,e,r,e,e,r,e,r,r,r,e,r,r,e,e,e,r,e,r,e,e,e,e,r,e,e,e,e,e,e,e,e,r,e,e,r,r,r,r,e,r,e,e,e,r,r,e,r,e,e,r,e,e,e,e,r,e,r,e,e,r,e,e,e,e,e,r,e,e,e,r,e,r,r,e,r,e,e,e,e,r,r,r,e,e,r,e,e,r,e,r,e,r,r]},"/_error":["static/chunks/pages/_error-c970d8b55ace1b48.js"],sortedPages:["/_app","/_error"]}}(1,0,1e-4,14),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[893],{45:(e,a,t)=>{"use strict";t.d(a,{default:()=>o});var s=t(12115),n={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"},l=t(64250);let r=(0,s.createContext)({}),o=(0,s.forwardRef)((e,a)=>{var t,o,c;let{color:i,size:d,strokeWidth:u,absoluteStrokeWidth:m,className:h="",children:p,iconNode:f,...j}=e,{size:x=24,strokeWidth:g=2,absoluteStrokeWidth:v=!1,color:b="currentColor",className:y=""}=null!=(t=(0,s.useContext)(r))?t:{},k=(null!=m?m:v)?24*Number(null!=u?u:g)/Number(null!=d?d:x):null!=u?u:g;return(0,s.createElement)("svg",{ref:a,...n,width:null!=(o=null!=d?d:x)?o:n.width,height:null!=(c=null!=d?d:x)?c:n.height,stroke:null!=i?i:b,strokeWidth:k,className:(0,l.z)("lucide",y,h),...!p&&!(e=>{for(let a in e)if(a.startsWith("aria-")||"role"===a||"title"===a)return!0;return!1})(j)&&{"aria-hidden":"true"},...j},[...f.map(e=>{let[a,t]=e;return(0,s.createElement)(a,t)}),...Array.isArray(p)?p:[p]])})},10677:(e,a,t)=>{"use strict";t.d(a,{default:()=>l});var s=t(95155),n=t(12115);function l(){let[e,a]=(0,n.useState)([]),[t,l]=(0,n.useState)("");return(0,n.useEffect)(()=>{l(localStorage.getItem("madarx.activeProjectId")||""),fetch("/api/projects").then(e=>e.json()).then(e=>a(e.projects||[])).catch(()=>{})},[]),(0,s.jsx)("div",{className:"project-switcher","data-project-switcher":!0,children:(0,s.jsxs)("select",{value:t,onChange:e=>{var a;l(a=e.target.value),a?localStorage.setItem("madarx.activeProjectId",a):localStorage.removeItem("madarx.activeProjectId"),window.dispatchEvent(new CustomEvent("madarx:project-change",{detail:{project_id:a||null}}))},"aria-label":"Active project",children:[(0,s.jsx)("option",{value:"",children:"All projects"}),e.map(e=>(0,s.jsx)("option",{value:e.id,children:e.name},e.id))]})})}},13185:(e,a,t)=>{"use strict";t.d(a,{A:()=>o});var s=t(12115),n=t(64250);let l=e=>{let a=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,a,t)=>t?t.toUpperCase():a.toLowerCase());return a.charAt(0).toUpperCase()+a.slice(1)};var r=t(45);let o=(e,a)=>{let t=(0,s.forwardRef)((t,o)=>{let{className:c,...i}=t;return(0,s.createElement)(r.default,{ref:o,iconNode:a,className:(0,n.z)("lucide-".concat(l(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()),"lucide-".concat(e),c),...i})});return t.displayName=l(e),t}},20271:(e,a,t)=>{"use strict";t.d(a,{default:()=>m});var s=t(95155),n=t(12115),l=t(47650),r=t(85649),o=t(30926);let c=(0,o.createServerReference)("40192c916432262eb73b11ee4de3472a498182cc86",o.callServer,void 0,o.findSourceMapURL,"updateProjectAction");var i=t(59097);let d=[{value:"#c2452a",name:"Mars Red"},{value:"#a83a22",name:"Deep Red"},{value:"#7c2b19",name:"Dark Red"},{value:"#111318",name:"Charcoal"},{value:"#3f3a30",name:"Warm Black"},{value:"#68707b",name:"Slate"},{value:"#cdb78a",name:"Warm Sand"},{value:"#1f6c9f",name:"Skill Blue"}];function u(){let{pending:e}=(0,l.useFormStatus)();return(0,s.jsx)("button",{type:"submit",className:"admin-button",disabled:e,"aria-busy":e?"true":void 0,children:e?"Saving…":"Save changes"})}function m(e){let{projectId:a,projectName:t,projectColor:l,projectDescription:o,projectFolderPath:m}=e,[h,p]=n.useState(!1),[f,j]=n.useState("keep"),[x,g]=n.useState(m||""),v=n.useRef(null);return n.useEffect(()=>{h&&(j("keep"),g(m||""))},[h,m]),n.useEffect(()=>{var e;"custom"===f&&(null==(e=v.current)||e.focus())},[f]),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("button",{type:"button",className:"admin-button secondary project-edit",onClick:()=>p(!0),"aria-label":"Edit ".concat(t),children:"Edit"}),(0,s.jsx)(r.A,{open:h,onClose:()=>p(!1),eyebrow:"Edit project",title:"Edit ".concat(t),children:(0,s.jsxs)("form",{className:"agents-modal-form",action:c,children:[(0,s.jsx)("input",{type:"hidden",name:"project_id",value:a}),(0,s.jsx)("section",{className:"agents-modal-section",children:(0,s.jsxs)("label",{className:"agents-modal-field wide",children:[(0,s.jsx)("span",{children:"Name"}),(0,s.jsx)("input",{name:"name",type:"text",defaultValue:t,autoComplete:"off",required:!0})]})}),(0,s.jsxs)("section",{className:"agents-modal-section",children:[(0,s.jsxs)("div",{className:"agents-modal-section-head",children:[(0,s.jsx)("span",{children:"Folder location"}),(0,s.jsx)("small",{children:"Where project files live on disk. Move only if you've already moved the folder yourself."})]}),(0,s.jsxs)("div",{className:"agents-modal-radio-group",children:[(0,s.jsxs)("label",{className:"agents-modal-radio ".concat("keep"===f?"on":""),children:[(0,s.jsx)("input",{type:"radio",name:"folder_mode",value:"keep",checked:"keep"===f,onChange:()=>j("keep")}),(0,s.jsxs)("span",{className:"agents-modal-radio-body",children:[(0,s.jsx)("b",{children:"Keep current"}),(0,s.jsx)("code",{title:m||"",children:function(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:48;if(!e||e.length<=a)return e;let t=e.slice(0,Math.floor(a/2)-1),s=e.slice(e.length-Math.floor(a/2)+2);return"".concat(t,"…").concat(s)}(m)||"(not set)"})]})]}),(0,s.jsxs)("label",{className:"agents-modal-radio ".concat("custom"===f?"on":""),children:[(0,s.jsx)("input",{type:"radio",name:"folder_mode",value:"custom",checked:"custom"===f,onChange:()=>j("custom")}),(0,s.jsxs)("span",{className:"agents-modal-radio-body",children:[(0,s.jsx)("b",{children:"Change to…"}),(0,s.jsx)("small",{children:"Absolute path. Must already exist or be writable."})]})]})]}),"custom"===f?(0,s.jsx)(i.A,{inputRef:v,value:x,onChange:g}):(0,s.jsx)("input",{type:"hidden",name:"folder_path",value:""})]}),(0,s.jsxs)("section",{className:"agents-modal-section",children:[(0,s.jsxs)("div",{className:"agents-modal-section-head",children:[(0,s.jsx)("span",{children:"Color"}),(0,s.jsx)("small",{children:"Tile color across the app."})]}),(0,s.jsxs)("fieldset",{className:"agents-modal-swatches",children:[(0,s.jsx)("legend",{className:"visually-hidden",children:"Project color"}),d.map(e=>(0,s.jsxs)("label",{className:"agents-modal-swatch",style:{"--swatch":e.value},children:[(0,s.jsx)("input",{type:"radio",name:"color",value:e.value,defaultChecked:e.value===(l||"#c2452a")}),(0,s.jsx)("span",{className:"agents-modal-swatch-ring","aria-hidden":"true"}),(0,s.jsx)("span",{className:"visually-hidden",children:e.name})]},e.value))]})]}),(0,s.jsxs)("section",{className:"agents-modal-section",children:[(0,s.jsxs)("div",{className:"agents-modal-section-head",children:[(0,s.jsx)("span",{children:"Description"}),(0,s.jsx)("small",{children:"Used as context for agents working in this project."})]}),(0,s.jsx)("label",{className:"agents-modal-field wide",children:(0,s.jsx)("textarea",{name:"description",rows:3,defaultValue:o||"",placeholder:"What is this project for? Goals, audience, voice, constraints."})})]}),(0,s.jsxs)("footer",{className:"agents-modal-foot",children:[(0,s.jsx)("button",{type:"button",className:"admin-button secondary",onClick:()=>p(!1),children:"Cancel"}),(0,s.jsx)(u,{})]})]})})]})}},30926:(e,a,t)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),!function(e,a){for(var t in a)Object.defineProperty(e,t,{enumerable:!0,get:a[t]})}(a,{callServer:function(){return s.callServer},createServerReference:function(){return l.createServerReference},findSourceMapURL:function(){return n.findSourceMapURL}});let s=t(41209),n=t(85153),l=t(77197)},34788:(e,a,t)=>{"use strict";t.d(a,{A:()=>s});let s=(0,t(13185).A)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},59097:(e,a,t)=>{"use strict";t.d(a,{A:()=>l});var s=t(95155),n=t(12115);function l(e){let{name:a="folder_path",value:t,onChange:l,inputRef:r,placeholder:o="/Users/you/Documents/my-project"}=e,[c,i]=n.useState(null),[d,u]=n.useState(!1),[m,h]=n.useState(""),[p,f]=n.useState(""),[j,x]=n.useState(null);async function g(){var e;let a;if(i(null),!(null==(e=navigator.clipboard)?void 0:e.readText))return void i({kind:"error",message:"Clipboard not available."});try{a=await navigator.clipboard.readText()}catch(e){i({kind:"error",message:"Allow clipboard access."});return}let t=(a||"").trim();if((t.startsWith('"')&&t.endsWith('"')||t.startsWith("'")&&t.endsWith("'"))&&(t=t.slice(1,-1)),t.startsWith("file://"))try{t=decodeURI(t.slice(7))}catch(e){}return t?t.startsWith("/")||t.startsWith("~")?void(l(t),i({kind:"success",message:"Pasted."})):void i({kind:"error",message:"Path must be absolute."}):void i({kind:"error",message:"Clipboard is empty."})}async function v(){i(null),x("pick");try{let e=await fetch("/api/fs/pick-folder",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({title:"Choose project folder",start_path:t&&t.startsWith("/")?t:void 0})});if(499===e.status)return void i({kind:"error",message:"Cancelled."});let a=await e.json();if(!e.ok)return void i({kind:"error",message:a.error||"Picker failed."});l(a.folder_path),i({kind:"success",message:"Selected ".concat(a.folder_path)})}catch(e){i({kind:"error",message:String((null==e?void 0:e.message)||e)})}finally{x(null)}}async function b(){if(i(null),!m.trim()||!p.trim())return void i({kind:"error",message:"Parent and name required."});x("create");try{let e=await fetch("/api/fs/create-folder",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({parent:m.trim(),name:p.trim()})}),a=await e.json();if(!e.ok)return void i({kind:"error",message:a.error||"Create failed."});l(a.folder_path),u(!1),f(""),i({kind:"success",message:"Created ".concat(a.folder_path)})}catch(e){i({kind:"error",message:String((null==e?void 0:e.message)||e)})}finally{x(null)}}return n.useEffect(()=>{d&&!m&&h(t||"~/Documents")},[d,t,m]),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"agents-modal-paste-row",children:[(0,s.jsx)("input",{ref:r,name:a,type:"text",placeholder:o,autoComplete:"off",spellCheck:!1,value:t||"",onChange:e=>{l(e.target.value),c&&i(null)},required:!0}),(0,s.jsx)("button",{type:"button",className:"admin-button secondary",onClick:v,disabled:"pick"===j,children:"pick"===j?"Opening…":"Choose folder…"})]}),(0,s.jsxs)("div",{className:"agents-modal-folder-tools",children:[(0,s.jsx)("button",{type:"button",className:"admin-button secondary",onClick:g,children:"Paste from clipboard"}),(0,s.jsx)("button",{type:"button",className:"admin-button secondary",onClick:()=>l("~/Documents"),children:"~/Documents"}),(0,s.jsx)("button",{type:"button",className:"admin-button secondary",onClick:()=>l("~/Desktop"),children:"~/Desktop"}),(0,s.jsx)("button",{type:"button",className:"admin-button secondary",onClick:()=>u(e=>!e),children:d?"Cancel new folder":"+ New folder"})]}),d?(0,s.jsxs)("div",{className:"agents-modal-create-folder",children:[(0,s.jsx)("small",{children:"Create a folder anywhere outside system directories. Parent must exist."}),(0,s.jsx)("div",{className:"agents-modal-create-row",children:(0,s.jsx)("input",{type:"text",placeholder:"Parent (e.g. ~/Documents)",value:m,onChange:e=>h(e.target.value),spellCheck:!1,autoComplete:"off"})}),(0,s.jsxs)("div",{className:"agents-modal-create-row",children:[(0,s.jsx)("input",{type:"text",placeholder:"New folder name",value:p,onChange:e=>f(e.target.value),spellCheck:!1,autoComplete:"off"}),(0,s.jsx)("button",{type:"button",className:"admin-button",onClick:b,disabled:"create"===j,children:"create"===j?"Creating…":"Create"})]})]}):null,c?(0,s.jsx)("p",{className:"agents-modal-feedback ".concat(c.kind),role:"status","aria-live":"polite",children:c.message}):null]})}},64250:(e,a,t)=>{"use strict";t.d(a,{z:()=>s});let s=function(){for(var e=arguments.length,a=Array(e),t=0;t<e;t++)a[t]=arguments[t];return a.filter((e,a,t)=>!!e&&""!==e.trim()&&t.indexOf(e)===a).join(" ").trim()}},65532:(e,a,t)=>{"use strict";t.d(a,{default:()=>m});var s=t(95155),n=t(12115),l=t(47650),r=t(85649),o=t(30926);let c=(0,o.createServerReference)("40814e919729e8daf63bbef638909fff463dfe4799",o.callServer,void 0,o.findSourceMapURL,"createProjectAction");var i=t(59097);let d=[{value:"#c2452a",name:"Mars Red"},{value:"#a83a22",name:"Deep Red"},{value:"#7c2b19",name:"Dark Red"},{value:"#111318",name:"Charcoal"},{value:"#3f3a30",name:"Warm Black"},{value:"#68707b",name:"Slate"},{value:"#cdb78a",name:"Warm Sand"},{value:"#1f6c9f",name:"Skill Blue"}];function u(){let{pending:e}=(0,l.useFormStatus)();return(0,s.jsx)("button",{type:"submit",className:"admin-button",disabled:e,"aria-busy":e?"true":void 0,children:e?"Creating…":"Create project"})}function m(e){let{workspaceRoot:a="~/workspace/projects"}=e,[t,l]=n.useState(!1),[o,m]=n.useState(""),[h,p]=n.useState("workspace"),[f,j]=n.useState(""),x=n.useRef(null),g=n.useMemo(()=>"".concat(a.replace(/\/$/,""),"/").concat(String(o||"").toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,64)||"project"),[a,o]);return n.useEffect(()=>{var e;"custom"===h&&(null==(e=x.current)||e.focus())},[h]),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("button",{type:"button",className:"admin-button agents-new-cta",onClick:()=>l(!0),children:[(0,s.jsx)("span",{"aria-hidden":!0,className:"agents-new-cta-glyph",children:"+"}),"New project"]}),(0,s.jsx)(r.A,{open:t,onClose:()=>l(!1),eyebrow:"New project",title:"Create a project",children:(0,s.jsxs)("form",{className:"agents-modal-form",action:c,children:[(0,s.jsx)("p",{className:"agents-modal-help",children:"Scope agents, documents, memory, and integrations together."}),(0,s.jsx)("section",{className:"agents-modal-section",children:(0,s.jsxs)("label",{className:"agents-modal-field wide",children:[(0,s.jsx)("span",{children:"Name"}),(0,s.jsx)("input",{name:"name",type:"text",required:!0,placeholder:"Acme Co.",autoComplete:"off",value:o,onChange:e=>m(e.target.value),autoFocus:!0})]})}),(0,s.jsxs)("section",{className:"agents-modal-section",children:[(0,s.jsxs)("div",{className:"agents-modal-section-head",children:[(0,s.jsx)("span",{children:"Folder location"}),(0,s.jsx)("small",{children:"Where this project lives on disk."})]}),(0,s.jsxs)("div",{className:"agents-modal-radio-group",children:[(0,s.jsxs)("label",{className:"agents-modal-radio ".concat("workspace"===h?"on":""),children:[(0,s.jsx)("input",{type:"radio",name:"folder_mode",value:"workspace",checked:"workspace"===h,onChange:()=>p("workspace")}),(0,s.jsxs)("span",{className:"agents-modal-radio-body",children:[(0,s.jsx)("b",{children:"madarX workspace"}),(0,s.jsx)("code",{title:g,children:function(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:48;if(!e||e.length<=a)return e;let t=e.slice(0,Math.floor(a/2)-1),s=e.slice(e.length-Math.floor(a/2)+2);return"".concat(t,"…").concat(s)}(g)})]})]}),(0,s.jsxs)("label",{className:"agents-modal-radio ".concat("custom"===h?"on":""),children:[(0,s.jsx)("input",{type:"radio",name:"folder_mode",value:"custom",checked:"custom"===h,onChange:()=>p("custom")}),(0,s.jsxs)("span",{className:"agents-modal-radio-body",children:[(0,s.jsx)("b",{children:"Custom path"}),(0,s.jsx)("small",{children:"Any absolute folder. Created if missing."})]})]})]}),"custom"===h?(0,s.jsx)(i.A,{inputRef:x,value:f,onChange:j}):(0,s.jsx)("input",{type:"hidden",name:"folder_path",value:""})]}),(0,s.jsxs)("section",{className:"agents-modal-section",children:[(0,s.jsxs)("div",{className:"agents-modal-section-head",children:[(0,s.jsx)("span",{children:"Color"}),(0,s.jsx)("small",{children:"Used for the project tile across the app."})]}),(0,s.jsxs)("fieldset",{className:"agents-modal-swatches",children:[(0,s.jsx)("legend",{className:"visually-hidden",children:"Project color"}),d.map(e=>(0,s.jsxs)("label",{className:"agents-modal-swatch",style:{"--swatch":e.value},children:[(0,s.jsx)("input",{type:"radio",name:"color",value:e.value,defaultChecked:"#c2452a"===e.value}),(0,s.jsx)("span",{className:"agents-modal-swatch-ring","aria-hidden":"true"}),(0,s.jsx)("span",{className:"visually-hidden",children:e.name})]},e.value))]})]}),(0,s.jsxs)("section",{className:"agents-modal-section",children:[(0,s.jsxs)("div",{className:"agents-modal-section-head",children:[(0,s.jsx)("span",{children:"Description"}),(0,s.jsx)("small",{children:"Used as context for agents working in this project."})]}),(0,s.jsx)("label",{className:"agents-modal-field wide",children:(0,s.jsx)("textarea",{name:"description",rows:3,placeholder:"What is this project for? Goals, audience, voice, constraints."})})]}),(0,s.jsxs)("footer",{className:"agents-modal-foot",children:[(0,s.jsx)("button",{type:"button",className:"admin-button secondary",onClick:()=>l(!1),children:"Cancel"}),(0,s.jsx)(u,{})]})]})})]})}},85649:(e,a,t)=>{"use strict";t.d(a,{A:()=>r});var s=t(95155),n=t(12115),l=t(34788);function r(e){let{open:a,onClose:t,eyebrow:r,title:o,tone:c="default",size:i="default",children:d}=e,u=n.useRef(null);return n.useEffect(()=>{let e=u.current;e&&(a&&!e.open&&("function"==typeof e.showModal?e.showModal():e.setAttribute("open","")),!a&&e.open&&e.close())},[a]),n.useEffect(()=>{let e=u.current;if(!e)return;let a=e=>{e.preventDefault(),t()};return e.addEventListener("cancel",a),()=>e.removeEventListener("cancel",a)},[t]),(0,s.jsx)("dialog",{ref:u,className:"agents-modal".concat("wide"===i?" agents-modal--wide":""),onClick:e=>{e.target===u.current&&t()},children:a?(0,s.jsxs)("div",{className:"agents-modal-card".concat("danger"===c?" agents-modal-card--danger":""),onClick:e=>e.stopPropagation(),children:[(0,s.jsxs)("header",{className:"agents-modal-head",children:[(0,s.jsxs)("div",{children:[r?(0,s.jsx)("span",{className:"admin-kicker",children:r}):null,(0,s.jsx)("h2",{children:o})]}),(0,s.jsx)("button",{type:"button",className:"agents-modal-close",onClick:t,"aria-label":"Close",children:(0,s.jsx)(l.A,{size:14})})]}),d]}):null})}},86910:(e,a,t)=>{"use strict";t.d(a,{default:()=>d});var s=t(95155),n=t(12115),l=t(47650),r=t(85649),o=t(30926);let c=(0,o.createServerReference)("40a51617a5582d2d9bcfefb8ec17a0a7e41c176c14",o.callServer,void 0,o.findSourceMapURL,"deleteProjectAction");function i(e){let{disabled:a}=e,{pending:t}=(0,l.useFormStatus)();return(0,s.jsx)("button",{type:"submit",className:"admin-button danger",disabled:t||a,"aria-busy":t?"true":void 0,children:t?"Deleting…":"Delete project"})}function d(e){let{projectId:a,projectName:t,projectSlug:l,isProtected:o}=e,[d,u]=n.useState(!1),[m,h]=n.useState("");if(o)return(0,s.jsxs)("span",{className:"admin-button secondary project-delete is-locked","aria-disabled":"true",title:"The Personal project is the default scope and cannot be deleted.",children:[(0,s.jsxs)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",style:{marginRight:6,verticalAlign:"-1px"},children:[(0,s.jsx)("rect",{x:"3",y:"11",width:"18",height:"11",rx:"2"}),(0,s.jsx)("path",{d:"M7 11V7a5 5 0 0 1 10 0v4"})]}),"Protected"]});n.useEffect(()=>{d||h("")},[d]);let p=m.trim()===l;return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("button",{type:"button",className:"admin-button secondary project-delete",onClick:()=>u(!0),"aria-label":"Delete ".concat(t),children:"Delete"}),(0,s.jsx)(r.A,{open:d,onClose:()=>u(!1),eyebrow:"Delete project",title:"Delete ".concat(t,"?"),tone:"danger",children:(0,s.jsxs)("form",{className:"agents-modal-form",action:c,children:[(0,s.jsx)("input",{type:"hidden",name:"project_id",value:a}),(0,s.jsx)("p",{className:"agents-modal-help",children:"This removes the project, its agents, Disk files, memory, secrets, and audit history. The folder on your local drive is left untouched."}),(0,s.jsx)("section",{className:"agents-modal-section",children:(0,s.jsxs)("label",{className:"agents-modal-field wide",children:[(0,s.jsxs)("span",{children:["Type ",(0,s.jsx)("code",{className:"agents-modal-inline-code",children:l})," to confirm"]}),(0,s.jsx)("input",{type:"text",autoComplete:"off",spellCheck:!1,value:m,onChange:e=>h(e.target.value),placeholder:l,autoFocus:!0})]})}),(0,s.jsxs)("footer",{className:"agents-modal-foot",children:[(0,s.jsx)("button",{type:"button",className:"admin-button secondary",onClick:()=>u(!1),children:"Cancel"}),(0,s.jsx)(i,{disabled:!p})]})]})})]})}},99168:(e,a,t)=>{Promise.resolve().then(t.bind(t,10677)),Promise.resolve().then(t.bind(t,86910)),Promise.resolve().then(t.bind(t,20271)),Promise.resolve().then(t.bind(t,65532)),Promise.resolve().then(t.t.bind(t,52619,23))}},e=>{e.O(0,[2619,8441,1255,7358],()=>e(e.s=99168)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3427],{10677:(e,a,t)=>{"use strict";t.d(a,{default:()=>l});var s=t(95155),n=t(12115);function l(){let[e,a]=(0,n.useState)([]),[t,l]=(0,n.useState)("");return(0,n.useEffect)(()=>{l(localStorage.getItem("madarx.activeProjectId")||""),fetch("/api/projects").then(e=>e.json()).then(e=>a(e.projects||[])).catch(()=>{})},[]),(0,s.jsx)("div",{className:"project-switcher","data-project-switcher":!0,children:(0,s.jsxs)("select",{value:t,onChange:e=>{var a;l(a=e.target.value),a?localStorage.setItem("madarx.activeProjectId",a):localStorage.removeItem("madarx.activeProjectId"),window.dispatchEvent(new CustomEvent("madarx:project-change",{detail:{project_id:a||null}}))},"aria-label":"Active project",children:[(0,s.jsx)("option",{value:"",children:"All projects"}),e.map(e=>(0,s.jsx)("option",{value:e.id,children:e.name},e.id))]})})}},20063:(e,a,t)=>{"use strict";var s=t(47260);t.o(s,"usePathname")&&t.d(a,{usePathname:function(){return s.usePathname}}),t.o(s,"useRouter")&&t.d(a,{useRouter:function(){return s.useRouter}}),t.o(s,"useSearchParams")&&t.d(a,{useSearchParams:function(){return s.useSearchParams}})},22157:(e,a,t)=>{"use strict";t.d(a,{default:()=>j});var s=t(95155),n=t(12115),l=t(20063),i=t(55799);let r={intake:"neutral",running:"info",awaiting_approval:"warning",complete:"success",rejected:"danger",failed:"danger",cancelled:"neutral"},c={intake:"Intake",running:"Running",awaiting_approval:"Awaiting approval",complete:"Complete",rejected:"Rejected",failed:"Failed",cancelled:"Cancelled"},d={queued:"neutral",running:"info",awaiting_approval:"warning",pass:"success",fail:"danger",skipped:"neutral",cancelled:"neutral"},o=new Set(["complete","rejected","failed","cancelled"]);function u(e){return e?new Date(e).toLocaleString():"—"}function h(e){let{artifact:a}=e;if(!a)return null;let t="html"===a.kind;return(0,s.jsxs)("li",{className:"case-artifact-card",children:[(0,s.jsxs)("div",{className:"case-artifact-card-meta",children:[(0,s.jsx)("span",{className:"case-artifact-title",children:a.title||a.path}),(0,s.jsxs)("span",{className:"muted",children:[" \xb7 ",a.kind]})]}),t?(0,s.jsx)("iframe",{title:a.title||a.id,src:"/api/artifacts/".concat(a.id,"/raw"),sandbox:"allow-scripts",loading:"lazy"}):null]})}function m(e){let{title:a,label:t,artifact:n,helpText:l}=e,i=(null==n?void 0:n.kind)==="html";return(0,s.jsxs)("div",{className:"intake-artifact-card",children:[(0,s.jsxs)("header",{children:[(0,s.jsx)("h4",{children:t}),(0,s.jsx)("span",{className:"muted",children:(null==n?void 0:n.title)||""})]}),i?(0,s.jsx)("iframe",{title:a,src:"/api/artifacts/".concat(n.id,"/raw"),sandbox:"allow-scripts",loading:"lazy"}):(0,s.jsx)("p",{className:"muted",children:"Artifact content unavailable."}),l?(0,s.jsx)("small",{className:"muted",children:l}):null]})}function p(e){var a;let{caseRow:t,artifacts:n,latestExec:l}=e,i=null==t||null==(a=t.context)?void 0:a.intake_form_artifact_id,r=(null==l?void 0:l.artifact_ids)||[],c=n.find(e=>e.id===i),d=n.find(e=>r.includes(e.id)&&e.id!==i);return(0,s.jsxs)(s.Fragment,{children:[c?(0,s.jsx)(m,{title:"Intake form artifact",label:"Intake form artifact",artifact:c,helpText:"Artifact-first intake page \xb7 canonical presentation record for this case."}):null,t.intake_payload?null:(0,s.jsxs)("p",{children:["Intake form not submitted yet. Submit via"," ",(0,s.jsx)("a",{href:"/workflows/new?definition=".concat(t.definition_slug),children:"the new-case page"})," ","for this definition."]}),d?(0,s.jsx)(m,{title:"Intake submission",label:"Intake submission",artifact:d,helpText:"Sensitive identifiers (passport / national IDs) are redacted in this artifact."}):null,t.intake_payload?(0,s.jsxs)("details",{className:"payload-card",children:[(0,s.jsx)("summary",{children:"Raw intake payload (engine state)"}),(0,s.jsx)("pre",{children:JSON.stringify(t.intake_payload,null,2)})]}):null]})}function f(e){let{artifacts:a}=e;return a&&0!==a.length?(0,s.jsxs)("section",{className:"case-artifacts-gallery",children:[(0,s.jsx)("h3",{children:"Case artifacts"}),(0,s.jsx)("p",{className:"muted",children:"Every workflow touchpoint is rendered as an HTML artifact. These artifacts are also visible in the project library."}),(0,s.jsx)("ul",{className:"case-artifact-list",children:a.map(e=>(0,s.jsx)(h,{artifact:e},e.id))})]}):null}function j(e){var a,t;let{caseRow:h,definition:m,stages:j,executions:x,approvals:g,artifacts:v}=e,N=(0,l.useRouter)(),[y,k]=(0,n.useState)(h),[w,_]=(0,n.useState)(x),[b,S]=(0,n.useState)(g),[P,C]=(0,n.useState)(v),[I,E]=(0,n.useState)(y.current_stage_slug||(null==(a=j[0])?void 0:a.slug)),[A,R]=(0,n.useState)(!1),[O,T]=(0,n.useState)(null);(0,n.useEffect)(()=>{if(o.has(y.status))return;let e=!1,a=setInterval(async()=>{try{var a;let t=await fetch("/api/processes/".concat(y.id));if(!t.ok)return;let s=await t.json();if(e)return;k(s.case),_(s.executions||[]),S(s.approvals||[]),C(s.artifacts||[]),(null==(a=s.case)?void 0:a.current_stage_slug)&&E(s.case.current_stage_slug)}catch(e){}},4e3);return()=>{e=!0,clearInterval(a)}},[y.id,y.status]);let q=(0,n.useMemo)(()=>(function(e){let a=new Map;for(let t of e){let e=a.get(t.stage_slug)||[];e.push(t),a.set(t.stage_slug,e)}return a})(w),[w]),J=(0,n.useMemo)(()=>j.find(e=>e.slug===I)||j[0],[j,I]);async function H(e){R(!0),T(null);try{let a=await fetch("/api/approvals/".concat(e),{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify({decision:"approved"})});if(!a.ok){let e=await a.json().catch(()=>({}));throw Error((null==e?void 0:e.error)||"approve failed")}}catch(e){T((null==e?void 0:e.message)||String(e))}finally{R(!1)}}async function M(e){R(!0),T(null);try{let a=await fetch("/api/approvals/".concat(e),{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify({decision:"denied"})});if(!a.ok){let e=await a.json().catch(()=>({}));throw Error((null==e?void 0:e.error)||"deny failed")}}catch(e){T((null==e?void 0:e.message)||String(e))}finally{R(!1)}}async function D(e){R(!0),T(null);try{let a=await fetch("/api/processes/".concat(y.id,"/stages/").concat(e,"/retry"),{method:"POST"});if(!a.ok){let e=await a.json().catch(()=>({}));throw Error((null==e?void 0:e.error)||"retry failed")}}catch(e){T((null==e?void 0:e.message)||String(e))}finally{R(!1)}}async function F(){if(confirm("Cancel this case?")){R(!0);try{let e=await fetch("/api/processes/".concat(y.id),{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify({status:"cancelled"})});if(!e.ok){let a=await e.json().catch(()=>({}));throw Error((null==a?void 0:a.error)||"cancel failed")}N.refresh()}catch(e){T((null==e?void 0:e.message)||String(e))}finally{R(!1)}}}let L=q.get(null==J?void 0:J.slug)||[],z=L[L.length-1],U=b.find(e=>{var a;return"pending"===e.status&&(null==(a=e.payload)?void 0:a.stage_slug)===(null==J?void 0:J.slug)});return(0,s.jsxs)("div",{className:"case-detail","data-page":"case",children:[(0,s.jsxs)("header",{className:"case-header",children:[(0,s.jsx)(i.qs,{tone:r[y.status]||"neutral",children:c[y.status]||y.status}),(0,s.jsxs)("div",{className:"case-header-meta",children:[(0,s.jsxs)("span",{className:"muted",children:["Project: ",y.project_id]}),(0,s.jsxs)("span",{className:"muted",children:["Updated: ",u(y.updated_at)]})]}),o.has(y.status)?null:(0,s.jsx)("button",{className:"btn-tertiary",onClick:F,disabled:A,children:"Cancel case"})]}),O?(0,s.jsx)("p",{className:"form-error",role:"alert",children:O}):null,(0,s.jsxs)("div",{className:"case-grid",children:[(0,s.jsxs)("aside",{className:"case-timeline",children:[(0,s.jsx)("h3",{children:"Stages"}),(0,s.jsx)("ol",{children:j.map(e=>{let a=q.get(e.slug)||[],t=a[a.length-1],n=e.slug===(null==J?void 0:J.slug),l=e.slug===y.current_stage_slug,r=(null==t?void 0:t.status)||(l?"running":"pending");return(0,s.jsx)("li",{className:"stage-node ".concat(n?"active":""," ").concat(l?"current":""),"data-status":r,children:(0,s.jsxs)("button",{type:"button",onClick:()=>E(e.slug),children:[(0,s.jsx)("span",{className:"stage-name",children:e.name}),(0,s.jsx)("span",{className:"stage-kind muted",children:e.kind.replace("_"," ")}),(0,s.jsx)(i.qs,{tone:d[r]||"neutral",children:r})]})},e.id)})})]}),(0,s.jsx)("section",{className:"case-stage-panel",children:J?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("header",{children:[(0,s.jsx)("h3",{children:J.name}),(0,s.jsx)("span",{className:"muted",children:J.kind})]}),"intake_form"===J.kind?(0,s.jsx)(p,{caseRow:y,artifacts:P,latestExec:z}):null,"human_approval"===J.kind&&U?(0,s.jsxs)("div",{className:"approval-card",children:[(0,s.jsxs)("p",{children:[(0,s.jsx)("strong",{children:"Approval requested:"})," ",U.summary]}),(0,s.jsxs)("div",{className:"approval-actions",children:[(0,s.jsx)("button",{className:"btn-primary",onClick:()=>H(U.id),disabled:A,children:"Approve"}),(0,s.jsx)("button",{className:"btn-danger",onClick:()=>M(U.id),disabled:A,children:"Deny"})]}),(0,s.jsxs)("small",{className:"muted",children:["Risk: ",U.risk," \xb7 created ",u(U.created_at)]})]}):null,z?(0,s.jsxs)("div",{className:"exec-card",children:[(0,s.jsxs)("header",{children:[(0,s.jsx)("h4",{children:"Latest execution"}),(0,s.jsx)(i.qs,{tone:d[z.status]||"neutral",children:z.status}),z.attempt>1?(0,s.jsxs)("span",{className:"muted",children:["Attempt ",z.attempt]}):null]}),z.output?(0,s.jsxs)("details",{open:!0,children:[(0,s.jsx)("summary",{children:"Structured output"}),(0,s.jsx)("pre",{children:JSON.stringify(z.output,null,2)})]}):null,z.error?(0,s.jsxs)("p",{className:"form-error",children:["Error: ",z.error]}):null,"fail"===z.status?(0,s.jsx)("button",{className:"btn-secondary",onClick:()=>D(J.id),disabled:A,children:"Retry stage"}):null]}):(0,s.jsx)("p",{className:"muted",children:"No execution recorded yet."}),P.length&&((null==z||null==(t=z.artifact_ids)?void 0:t.length)||"package"===J.kind)?(0,s.jsxs)("div",{className:"artifacts-card",children:[(0,s.jsx)("h4",{children:"Stage artifacts"}),(0,s.jsx)("ul",{children:P.filter(e=>((null==z?void 0:z.artifact_ids)||[]).includes(e.id)).map(e=>(0,s.jsxs)("li",{children:[(0,s.jsx)("span",{className:"case-artifact-title",children:e.title||e.path}),(0,s.jsxs)("span",{className:"muted",children:[" \xb7 ",e.kind]})]},e.id))})]}):null]}):(0,s.jsx)("p",{children:"Pick a stage from the timeline."})})]}),(0,s.jsx)(f,{artifacts:P})]})}},55799:(e,a,t)=>{"use strict";t.d(a,{iN:()=>l,qs:()=>i});var s=t(95155),n=t(10677);function l(e){let{kicker:a="madarX OS v1.0",title:t,description:l,actions:i,hideProjectSwitcher:r,children:c}=e;return(0,s.jsxs)("main",{className:"admin-shell",children:[(0,s.jsxs)("header",{className:"admin-header",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("span",{className:"admin-kicker",children:a}),(0,s.jsx)("h1",{children:t}),l?(0,s.jsx)("p",{children:l}):null]}),(0,s.jsxs)("div",{className:"admin-header-actions",children:[r?null:(0,s.jsx)(n.default,{}),i]})]}),c]})}function i(e){let{children:a,tone:t="neutral"}=e;return(0,s.jsx)("span",{className:"admin-pill ".concat(t),children:a})}},59531:(e,a,t)=>{Promise.resolve().then(t.bind(t,10677)),Promise.resolve().then(t.bind(t,22157)),Promise.resolve().then(t.t.bind(t,52619,23))}},e=>{e.O(0,[2619,8441,1255,7358],()=>e(e.s=59531)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[106],{10677:(e,a,t)=>{"use strict";t.d(a,{default:()=>r});var l=t(95155),n=t(12115);function r(){let[e,a]=(0,n.useState)([]),[t,r]=(0,n.useState)("");return(0,n.useEffect)(()=>{r(localStorage.getItem("madarx.activeProjectId")||""),fetch("/api/projects").then(e=>e.json()).then(e=>a(e.projects||[])).catch(()=>{})},[]),(0,l.jsx)("div",{className:"project-switcher","data-project-switcher":!0,children:(0,l.jsxs)("select",{value:t,onChange:e=>{var a;r(a=e.target.value),a?localStorage.setItem("madarx.activeProjectId",a):localStorage.removeItem("madarx.activeProjectId"),window.dispatchEvent(new CustomEvent("madarx:project-change",{detail:{project_id:a||null}}))},"aria-label":"Active project",children:[(0,l.jsx)("option",{value:"",children:"All projects"}),e.map(e=>(0,l.jsx)("option",{value:e.id,children:e.name},e.id))]})})}},20063:(e,a,t)=>{"use strict";var l=t(47260);t.o(l,"usePathname")&&t.d(a,{usePathname:function(){return l.usePathname}}),t.o(l,"useRouter")&&t.d(a,{useRouter:function(){return l.useRouter}}),t.o(l,"useSearchParams")&&t.d(a,{useSearchParams:function(){return l.useSearchParams}})},69663:(e,a,t)=>{"use strict";t.d(a,{default:()=>o});var l=t(95155),n=t(12115),r=t(20063);function s(e){let{value:a,onChange:t}=e,n=Array.isArray(a)?a:[],r=n.reduce((e,a)=>e+Number(a.percentage||0),0);return(0,l.jsxs)("div",{className:"shareholders-field",children:[n.map((e,a)=>(0,l.jsxs)("div",{className:"shareholder-row",children:[(0,l.jsx)("input",{type:"text",value:e.name,placeholder:"Shareholder name",onChange:e=>t(n.map((t,l)=>l===a?{...t,name:e.target.value}:t))}),(0,l.jsx)("input",{type:"number",value:e.percentage,min:0,max:100,step:.01,onChange:e=>t(n.map((t,l)=>l===a?{...t,percentage:Number(e.target.value)}:t))}),(0,l.jsx)("span",{children:"%"}),n.length>1?(0,l.jsx)("button",{type:"button",className:"btn-tertiary",onClick:()=>t(n.filter((e,t)=>t!==a)),children:"Remove"}):null]},a)),(0,l.jsxs)("div",{className:"shareholder-actions",children:[(0,l.jsx)("button",{type:"button",className:"btn-secondary",onClick:()=>t([...n,{name:"",percentage:0}]),children:"Add shareholder"}),(0,l.jsxs)("span",{className:"muted",children:["Total: ",r,"%"]})]})]})}function i(e){let{field:a,value:t,error:n,onChange:r}=e,i={id:"f-".concat(a.name),name:a.name,required:a.required,"aria-invalid":n?"true":void 0};return(0,l.jsxs)("label",{className:"form-field".concat(n?" has-error":""),children:[(0,l.jsxs)("span",{className:"form-field-label",children:[a.label,a.required?(0,l.jsx)("span",{className:"req",children:" *"}):null]}),"textarea"===a.type?(0,l.jsx)("textarea",{...i,value:t||"",rows:5,placeholder:a.placeholder||"",onChange:e=>r(e.target.value)}):"select"===a.type?(0,l.jsxs)("select",{...i,value:t||"",onChange:e=>r(e.target.value),children:[(0,l.jsx)("option",{value:"",disabled:!0,children:"Pick one…"}),(a.options||[]).map(e=>(0,l.jsx)("option",{value:e,children:e},e))]}):"shareholders"===a.type?(0,l.jsx)(s,{value:t,onChange:r}):(0,l.jsx)("input",{...i,type:"number"===a.type?"number":"email"===a.type?"email":"text",value:t||"",placeholder:a.placeholder||"",min:a.min,onChange:e=>r((a.type,e.target.value))}),a.help?(0,l.jsx)("small",{className:"form-help",children:a.help}):null,n?(0,l.jsx)("small",{className:"form-error",children:n}):null]})}function o(e){var a,t;let{definitions:s,projects:o,initialDefinitionSlug:c}=e,u=(0,r.useRouter)(),[d,m]=(0,n.useState)(c||(null==(a=s[0])?void 0:a.slug)||""),[h,p]=(0,n.useState)((null==(t=o[0])?void 0:t.id)||"personal"),[f,j]=(0,n.useState)(""),[v,x]=(0,n.useState)(null),[g,b]=(0,n.useState)({}),[N,y]=(0,n.useState)({}),[S,_]=(0,n.useState)(!1),[w,C]=(0,n.useState)(null);(0,n.useEffect)(()=>{if(!d)return;let e=!1;return fetch("/api/processes/definitions/".concat(d)).then(e=>e.json()).then(a=>{var t;if(e)return;let l=(null==a?void 0:a.intake_form_schema)||null;x(l),b(function(e){let a={};for(let t of(null==e?void 0:e.fields)||[])"shareholders"===t.type?a[t.name]=[{name:"",percentage:100}]:(t.type,a[t.name]="");return a}(l)),y({}),!f&&(null==a||null==(t=a.definition)?void 0:t.name)&&j("".concat(a.definition.name," — ").concat(new Date().toISOString().slice(0,10)))}).catch(()=>{e||x(null)}),()=>{e=!0}},[d]);let P=(0,n.useMemo)(()=>(null==v?void 0:v.fields)||[],[v]);async function k(e){e.preventDefault(),C(null);let a=function(e,a){let t={};for(let l of(null==e?void 0:e.fields)||[]){let e=a[l.name];if(l.required)if("shareholders"===l.type){let a=Array.isArray(e)?e:[];0===a.length&&(t[l.name]="At least one shareholder required.");let n=a.reduce((e,a)=>e+Number(a.percentage||0),0);Math.abs(n-100)>.01&&(t[l.name]="Shareholder percentages must total 100. Got ".concat(n,".")),a.some(e=>!String(e.name||"").trim())&&(t[l.name]="Each shareholder needs a name.")}else(null==e||""===String(e).trim())&&(t[l.name]="Required.");if("number"===l.type&&""!==e&&null!=e){let a=Number(e);Number.isFinite(a)?"number"==typeof l.min&&a<l.min&&(t[l.name]="Must be at least ".concat(l.min,".")):t[l.name]="Must be a number."}l.min_length&&"string"==typeof e&&e.length<l.min_length&&(t[l.name]="Must be at least ".concat(l.min_length," characters."))}return t}(v,g);if(y(a),!(Object.keys(a).length>0)){_(!0);try{let e=await fetch("/api/processes",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({definition_slug:d,project_id:h,title:f||null,intake_payload:{...g,share_capital_usd:Number(g.share_capital_usd)||0}})}),a=await e.json();if(!e.ok)throw Error((null==a?void 0:a.error)||"Failed to start case");u.push("/workflows/".concat(a.case.id))}catch(e){C((null==e?void 0:e.message)||String(e))}finally{_(!1)}}}return(0,l.jsxs)("form",{className:"new-case-form",onSubmit:k,children:[(0,l.jsxs)("section",{className:"form-section",children:[(0,l.jsx)("h2",{children:"Process and project"}),(0,l.jsxs)("div",{className:"form-row",children:[(0,l.jsxs)("label",{className:"form-field",children:[(0,l.jsx)("span",{className:"form-field-label",children:"Process definition"}),(0,l.jsx)("select",{value:d,onChange:e=>m(e.target.value),children:s.map(e=>(0,l.jsx)("option",{value:e.slug,children:e.name},e.slug))})]}),(0,l.jsxs)("label",{className:"form-field",children:[(0,l.jsx)("span",{className:"form-field-label",children:"Project"}),(0,l.jsx)("select",{value:h,onChange:e=>p(e.target.value),children:o.map(e=>(0,l.jsx)("option",{value:e.id,children:e.name},e.id))})]})]}),(0,l.jsxs)("label",{className:"form-field",children:[(0,l.jsx)("span",{className:"form-field-label",children:"Case title"}),(0,l.jsx)("input",{type:"text",value:f,onChange:e=>j(e.target.value),placeholder:"e.g. ADGM setup — Acme Holdings Ltd"})]})]}),(0,l.jsxs)("section",{className:"form-section",children:[(0,l.jsx)("h2",{children:(null==v?void 0:v.title)||"Intake form"}),(null==v?void 0:v.description)?(0,l.jsx)("p",{className:"muted",children:v.description}):null,P.map(e=>(0,l.jsx)(i,{field:e,value:g[e.name],error:N[e.name],onChange:a=>b(t=>({...t,[e.name]:a}))},e.name))]}),w?(0,l.jsx)("p",{className:"form-error",role:"alert",children:w}):null,(0,l.jsx)("div",{className:"form-actions",children:(0,l.jsx)("button",{type:"submit",className:"btn-primary",disabled:S,children:S?"Starting case…":"Start case"})})]})}},79855:(e,a,t)=>{Promise.resolve().then(t.bind(t,10677)),Promise.resolve().then(t.bind(t,69663))}},e=>{e.O(0,[8441,1255,7358],()=>e(e.s=79855)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- self.__BUILD_MANIFEST=function(e,r,t,_){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:141,errorRate:1e-4,numBits:2703,numHashes:14,bitArray:[1,0,1,0,r,e,r,r,e,r,e,e,e,r,e,r,e,e,e,r,r,r,r,r,r,e,e,r,e,r,e,r,e,e,r,r,r,e,r,r,r,e,e,r,r,e,e,e,r,r,r,r,r,e,e,e,e,e,e,e,r,e,r,e,e,r,r,e,e,r,r,r,e,r,r,r,e,r,r,r,e,e,e,r,r,r,e,r,e,r,e,e,r,r,e,r,e,e,r,e,e,e,r,e,e,e,e,r,r,r,e,e,e,e,r,r,r,r,r,e,r,r,e,r,r,e,r,e,e,e,e,e,r,r,e,e,e,e,e,e,e,r,r,r,e,e,r,e,e,e,r,r,r,e,r,e,e,e,e,r,r,e,e,r,r,r,e,r,r,r,r,r,e,r,r,e,e,e,e,r,r,e,r,e,r,e,e,e,r,e,e,r,r,r,r,r,r,r,e,e,e,r,e,r,r,r,r,e,r,e,r,e,e,r,e,e,e,r,r,r,e,r,e,r,r,r,r,e,e,e,r,e,e,r,e,e,r,e,r,e,r,r,e,r,e,r,r,r,r,e,r,e,e,e,e,r,e,e,e,e,e,r,r,e,r,r,e,r,r,r,e,e,e,r,r,e,r,e,e,e,r,e,e,e,e,e,e,e,r,e,e,e,r,e,r,r,r,r,e,e,r,r,r,r,r,e,r,e,r,e,r,r,e,r,r,e,r,e,e,r,e,e,e,r,r,e,e,e,r,r,e,e,e,e,r,r,e,e,e,r,r,r,e,r,r,r,e,r,r,r,r,e,e,e,e,r,r,e,r,r,r,e,e,e,e,e,e,e,e,r,e,e,r,e,r,e,e,e,e,e,r,r,r,r,r,e,e,r,e,r,e,e,e,r,e,r,e,r,r,e,r,e,r,r,e,r,r,r,r,r,e,e,r,e,e,e,e,e,e,r,e,e,r,r,e,r,e,r,e,e,r,e,e,r,e,r,e,e,e,e,r,e,r,e,e,e,r,r,r,r,e,r,r,r,e,r,e,r,r,e,e,e,e,e,e,r,e,e,e,e,r,r,r,e,e,e,e,e,e,r,e,r,e,e,r,e,e,e,e,e,r,r,e,r,r,e,r,r,e,e,r,e,e,r,e,r,r,e,r,e,e,e,e,e,e,e,e,r,e,e,e,r,e,e,e,e,r,r,e,r,r,e,r,r,r,r,r,r,r,e,r,e,e,e,r,e,r,e,e,r,e,r,e,r,r,r,e,r,r,e,e,e,r,r,e,r,r,e,r,r,e,e,e,r,r,e,e,e,r,r,e,e,e,r,r,r,e,r,r,r,e,e,r,r,r,e,r,e,e,r,e,r,e,r,r,r,r,r,e,e,r,e,r,e,r,r,r,r,r,r,e,e,e,e,r,r,r,r,r,e,r,r,e,r,e,r,r,r,e,r,e,r,e,r,e,e,e,e,r,r,e,r,e,e,e,e,e,r,e,r,e,e,e,r,e,e,r,e,r,e,e,e,r,e,r,e,e,r,e,r,e,e,e,e,e,r,r,e,r,r,e,r,r,r,r,e,r,e,e,r,r,e,r,e,e,e,e,e,r,e,r,r,e,e,e,r,r,e,r,r,r,e,e,e,e,e,e,e,e,e,e,e,e,e,e,e,r,r,r,r,r,r,r,r,r,r,e,e,e,e,r,e,r,r,e,e,r,e,e,r,e,e,e,e,e,e,e,r,e,r,r,e,r,e,r,e,r,e,r,r,r,e,e,e,e,r,e,r,r,e,e,e,e,r,e,r,e,e,r,r,e,e,e,r,e,e,r,e,e,r,e,e,e,e,r,r,e,e,r,r,r,r,r,r,r,e,e,e,e,r,r,r,r,r,r,r,e,e,r,r,e,r,e,r,e,r,r,r,e,e,e,e,r,e,e,e,r,r,r,r,e,e,e,e,e,e,r,e,r,e,r,e,r,r,e,e,r,r,r,e,e,r,e,e,r,r,e,r,r,r,r,e,e,e,r,r,r,r,e,r,e,r,e,e,r,e,e,r,r,e,e,r,r,e,e,r,r,r,r,r,r,e,e,e,e,r,r,r,r,r,e,r,e,e,e,e,e,e,r,e,r,e,e,e,e,r,r,e,r,e,r,r,r,e,e,r,r,e,r,r,e,r,e,e,r,r,r,e,r,e,r,r,r,e,e,r,r,e,r,e,e,e,r,r,r,r,e,e,e,r,r,e,e,r,e,r,e,e,e,r,r,r,e,e,e,e,e,r,e,e,e,e,r,e,e,e,r,e,r,r,e,e,e,r,r,r,r,r,r,r,e,r,r,r,e,e,e,r,r,e,e,r,r,e,r,r,e,r,r,e,r,r,e,e,r,r,e,e,e,e,r,e,r,r,r,r,e,e,e,r,r,r,e,r,e,e,r,e,r,e,e,r,r,r,e,e,e,r,r,r,r,r,e,r,e,r,r,e,r,e,e,r,r,r,r,e,r,e,r,r,r,r,e,r,e,e,e,r,r,r,r,e,e,e,r,e,e,e,e,r,r,e,e,r,e,e,e,r,r,r,r,e,e,e,e,e,r,r,r,e,e,r,r,e,r,r,e,r,e,e,e,r,e,e,r,e,e,e,r,r,r,e,r,e,r,e,r,r,e,e,r,r,e,r,r,e,r,r,r,e,r,r,r,e,r,r,r,r,e,e,e,e,r,e,e,r,e,e,r,r,r,e,r,r,r,e,e,e,r,e,e,r,r,r,r,r,r,r,r,r,r,r,e,r,r,r,e,e,e,e,e,r,e,e,e,r,e,e,e,e,e,e,e,r,e,e,r,r,e,r,r,r,e,r,e,e,e,r,r,r,e,e,r,e,r,r,r,r,r,r,r,e,e,r,r,r,e,e,r,e,e,e,r,e,e,e,e,e,e,e,r,e,e,r,e,e,r,r,e,r,r,e,r,e,e,r,e,r,e,r,e,e,r,e,r,e,r,r,e,e,r,e,r,e,r,e,e,e,e,e,r,r,e,r,e,r,r,e,e,r,r,r,e,e,e,e,e,e,r,e,e,r,r,e,r,r,r,e,e,e,e,r,e,e,r,r,r,r,r,e,e,r,r,e,e,e,r,e,r,e,r,e,e,e,r,e,r,r,e,e,e,r,e,r,e,e,r,e,e,e,e,r,r,r,r,e,e,r,e,r,r,e,e,e,r,r,r,r,e,r,r,r,e,e,r,r,e,e,r,e,e,r,r,r,e,r,r,r,r,r,r,e,e,r,r,e,e,e,r,r,r,e,r,e,r,r,e,e,e,e,e,e,e,e,e,r,e,e,r,e,e,r,r,r,r,e,e,r,e,e,r,e,e,e,e,e,r,e,e,e,e,e,e,e,r,r,e,r,r,e,r,r,r,r,e,e,r,r,r,e,r,e,e,e,r,e,r,r,e,r,e,r,e,r,r,r,r,e,e,r,e,e,e,r,e,r,r,r,e,e,r,e,r,e,e,r,e,e,e,r,e,r,r,e,r,r,r,e,e,r,e,e,e,e,e,r,e,e,r,r,r,e,e,e,e,r,e,e,r,e,r,r,e,e,e,e,e,r,e,r,r,e,r,e,e,r,e,r,e,r,e,e,e,r,e,e,r,e,e,e,e,e,e,r,r,e,r,r,e,e,r,e,e,e,e,e,r,e,r,e,e,r,r,r,r,e,e,e,e,r,e,e,r,e,r,r,r,r,r,r,r,r,r,e,e,e,e,r,e,r,r,r,e,e,r,r,r,r,r,r,r,e,r,r,e,e,e,e,r,e,r,r,e,r,e,e,e,e,e,r,r,e,r,e,e,e,r,e,e,e,e,r,e,e,r,e,e,r,e,r,r,e,r,e,e,e,e,e,r,e,e,r,e,e,e,r,e,r,e,e,e,e,e,e,r,r,r,e,r,e,e,e,e,r,e,r,e,e,r,r,r,e,r,r,r,r,e,e,r,r,r,e,e,e,e,r,e,e,r,r,e,e,e,r,r,e,r,e,r,r,e,r,r,e,r,e,e,r,e,r,r,e,e,e,r,e,e,r,r,e,e,e,e,r,r,e,r,r,e,e,r,r,e,r,r,e,e,r,e,e,e,r,e,r,e,e,e,e,r,r,r,e,e,r,e,r,r,e,e,r,r,e,r,e,e,e,r,e,r,r,e,e,e,r,e,r,r,r,e,r,e,e,e,e,e,r,e,e,e,e,r,r,r,e,r,r,e,e,r,e,e,e,r,r,r,r,e,e,e,r,e,e,e,e,r,r,e,r,e,e,r,r,e,e,r,r,e,r,e,e,e,e,e,e,r,r,e,e,r,r,e,r,e,r,r,e,e,e,e,r,e,e,r,r,e,e,r,e,r,r,e,r,e,e,r,e,r,e,e,r,r,e,r,e,r,e,e,r,e,r,e,e,r,e,r,e,r,e,r,r,r,e,r,r,e,e,r,r,e,r,e,r,r,r,r,r,r,r,e,r,r,e,r,r,r,e,r,r,e,r,e,r,r,r,r,e,e,e,e,r,r,r,r,r,r,r,r,r,r,e,r,r,e,r,r,e,e,e,r,r,e,r,r,r,e,r,e,e,e,e,r,e,r,e,e,e,e,e,r,e,e,e,e,e,e,r,e,e,r,r,r,r,r,e,r,e,r,e,e,r,e,r,r,e,e,e,e,r,r,r,e,e,r,e,e,e,r,e,r,e,r,r,r,r,r,r,r,e,r,e,e,e,r,e,e,r,e,e,e,r,r,r,e,r,r,r,e,r,r,r,e,r,e,r,r,r,r,r,e,e,r,e,r,r,e,r,e,e,e,r,r,e,e,r,r,e,e,r,e,r,r,e,r,e,e,e,e,r,e,r,r,e,r,r,e,e,r,r,e,r,r,r,e,r,r,e,r,e,r,e,e,r,e,r,e,r,e,r,e,r,r,r,r,e,e,e,e,r,r,r,e,e,r,e,r,r,r,e,r,e,e,r,e,r,e,e,r,r,r,e,e,e,r,r,r,r,r,r,r,e,e,r,r,e,r,e,r,e,e,r,e,e,r,e,r,r,r,r,r,r,r,r,r,r,e,e,r,r,e,e,e,e,r,r,e,e,e,r,e,e,r,r,r,r,r,r,e,e,e,r,r,r,e,e,r,r,e,e,e,r,e,r,e,e,e,r,e,e,r,e,r,r,e,r,e,e,r,e,r,e,e,r,e,r,e,e,e,r,r,e,e,r,r,r,r,e,e,e,r,r,e,r,r,r,e,e,r,e,e,e,e,e,e,e,r,r,e,r,e,r,r,e,r,r,e,r,e,e,r,e,r,e,e,e,r,r,r,r,r,e,e,r,r,e,r,r,r,e,r,e,e,r,e,e,e,e,e,r,e,r,r,e,e,r,e,e,r,r,r,r,e,e,r,e,e,e,r,r,e,e,r,e,e,e,e,e,e,r,r,e,e,r,r,e,r,r,e,e,e,e,e,r,r,r,e,r,r,e,r,e,e,r,r,r,r,e,r,e,e,e,r,e,e,r,r,e,e,r,r,r,e,e,e,r,r,e,e,r,e,e,e,r,r,r,r,r,e,r,r,e,r,e,r,e,r,r,r,r,r,r,e,r,r,e,r,e,e,r,e,e,r,e,r,r,e,e,e,e,e,r,r,r,r,e,r,e,e,r,e,r,e,e,r,e,r,e,r,e,r,e,r,e,r,r,r,r,r,e,r,e,e,e,r,r,r,r,e,r,r,e,r,r,e,e,e,e,e,e,e,r,r,e,e,r,e,e,r,r,r,r,e,e,e,e,e,e,e,e,r,e,r,r,r,e,r,r,e,r,e,e,e,r,r,e,e,r,r,e,r,r,e,r,r,e,r,e,e,e,e,e,e,r,r,r,e,r,e,e,e,r,r,r,r,e,r,e,r,e,e,e,r,e,r,e,e,e,r,e,e,r,r,e,r,r,e,r,e,r,r,e,e,e,r,e,r,r,r,r,r,r,r,r,e,e,e,r,r,e,e,r,e,e,e,r,e,r,e,r,e,r,e,e,e,e,r,e,r,e,e,r,e,r,r]},__routerFilterDynamic:{numItems:39,errorRate:1e-4,numBits:748,numHashes:14,bitArray:[r,e,r,r,e,e,e,e,r,r,r,e,r,r,e,r,e,r,e,r,e,e,r,e,e,r,e,e,e,e,r,r,e,r,e,r,e,r,e,r,e,e,e,r,r,r,r,r,e,r,r,r,e,e,r,e,e,r,r,r,r,r,e,e,r,r,r,e,e,r,r,e,r,e,e,r,r,e,r,e,e,e,e,e,e,r,e,e,r,r,r,e,e,e,r,e,r,e,r,r,e,r,e,r,e,e,e,r,e,e,e,e,r,r,e,e,r,r,e,r,r,r,r,e,e,r,e,e,e,r,e,e,e,r,r,r,r,r,e,r,r,r,r,e,r,e,e,r,r,e,e,r,e,r,e,r,r,r,r,r,e,r,r,e,r,e,r,r,e,r,r,e,e,e,e,e,r,r,r,e,r,r,e,e,r,r,e,e,e,r,r,e,r,e,e,e,r,r,e,e,r,e,r,r,e,r,e,e,e,e,e,r,r,r,e,r,r,r,e,r,e,e,e,r,e,e,e,e,r,e,r,e,e,r,e,e,r,e,e,r,r,r,r,e,e,r,e,r,r,r,e,e,r,r,r,r,e,e,r,r,e,r,r,r,e,e,e,r,r,e,e,r,e,e,e,e,e,e,e,r,r,e,r,e,r,e,e,r,r,r,r,r,r,r,e,r,r,e,r,r,e,r,e,e,r,e,e,e,e,r,r,e,r,e,e,r,r,r,e,e,e,r,e,e,r,r,e,r,e,r,r,r,r,r,r,e,r,e,e,e,r,r,e,r,e,r,r,e,r,e,r,e,e,e,r,e,e,r,r,r,r,r,r,r,r,e,e,e,e,r,r,e,r,e,e,r,r,e,e,r,e,e,r,e,e,e,e,e,e,e,r,r,e,e,e,r,r,e,e,r,r,e,e,r,r,r,r,r,r,r,r,e,e,r,r,r,e,e,r,r,e,e,e,e,r,r,e,r,r,r,r,r,r,e,r,e,r,e,e,e,e,e,e,r,e,r,r,e,r,r,e,e,r,e,e,r,e,e,r,r,r,r,e,r,r,e,r,r,r,e,e,e,e,r,e,e,e,e,r,r,r,r,r,e,e,e,r,e,e,e,e,r,r,e,r,r,r,e,r,r,e,e,r,r,r,e,e,e,r,r,r,e,r,e,r,r,e,r,e,e,e,e,e,r,r,e,r,r,e,r,e,r,e,r,e,r,e,r,r,r,e,r,e,e,r,r,e,e,r,r,e,e,e,e,r,r,r,e,r,r,e,e,e,e,e,e,e,r,e,r,e,e,r,e,r,e,r,r,e,r,e,e,e,e,e,e,r,r,e,e,r,r,e,e,e,e,e,e,r,e,r,e,e,r,r,r,r,e,r,e,e,e,e,r,r,r,r,e,e,e,r,e,r,r,r,r,e,e,r,e,r,r,r,e,r,e,e,r,e,r,r,e,e,e,r,r,r,r,e,r,r,r,e,r,e,e,r,e,e,r,e,r,r,r,e,r,r,e,e,e,r,e,r,e,e,e,e,r,e,e,e,e,e,e,e,e,r,e,e,r,r,r,r,e,r,e,e,e,r,r,e,r,e,e,r,e,e,e,e,r,e,r,e,e,r,e,e,e,e,e,r,e,e,e,r,e,r,r,e,r,e,e,e,e,r,r,r,e,e,r,e,e,r,e,r,e,r,r]},"/_error":["static/chunks/pages/_error-c970d8b55ace1b48.js"],sortedPages:["/_app","/_error"]}}(1,0,1e-4,14),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[893],{45:(e,a,t)=>{"use strict";t.d(a,{default:()=>o});var s=t(12115),n={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"},l=t(64250);let r=(0,s.createContext)({}),o=(0,s.forwardRef)((e,a)=>{var t,o,c;let{color:i,size:d,strokeWidth:u,absoluteStrokeWidth:m,className:h="",children:p,iconNode:f,...j}=e,{size:x=24,strokeWidth:g=2,absoluteStrokeWidth:v=!1,color:b="currentColor",className:y=""}=null!=(t=(0,s.useContext)(r))?t:{},k=(null!=m?m:v)?24*Number(null!=u?u:g)/Number(null!=d?d:x):null!=u?u:g;return(0,s.createElement)("svg",{ref:a,...n,width:null!=(o=null!=d?d:x)?o:n.width,height:null!=(c=null!=d?d:x)?c:n.height,stroke:null!=i?i:b,strokeWidth:k,className:(0,l.z)("lucide",y,h),...!p&&!(e=>{for(let a in e)if(a.startsWith("aria-")||"role"===a||"title"===a)return!0;return!1})(j)&&{"aria-hidden":"true"},...j},[...f.map(e=>{let[a,t]=e;return(0,s.createElement)(a,t)}),...Array.isArray(p)?p:[p]])})},10677:(e,a,t)=>{"use strict";t.d(a,{default:()=>l});var s=t(95155),n=t(12115);function l(){let[e,a]=(0,n.useState)([]),[t,l]=(0,n.useState)("");return(0,n.useEffect)(()=>{l(localStorage.getItem("madarx.activeProjectId")||""),fetch("/api/projects").then(e=>e.json()).then(e=>a(e.projects||[])).catch(()=>{})},[]),(0,s.jsx)("div",{className:"project-switcher","data-project-switcher":!0,children:(0,s.jsxs)("select",{value:t,onChange:e=>{var a;l(a=e.target.value),a?localStorage.setItem("madarx.activeProjectId",a):localStorage.removeItem("madarx.activeProjectId"),window.dispatchEvent(new CustomEvent("madarx:project-change",{detail:{project_id:a||null}}))},"aria-label":"Active project",children:[(0,s.jsx)("option",{value:"",children:"All projects"}),e.map(e=>(0,s.jsx)("option",{value:e.id,children:e.name},e.id))]})})}},13185:(e,a,t)=>{"use strict";t.d(a,{A:()=>o});var s=t(12115),n=t(64250);let l=e=>{let a=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,a,t)=>t?t.toUpperCase():a.toLowerCase());return a.charAt(0).toUpperCase()+a.slice(1)};var r=t(45);let o=(e,a)=>{let t=(0,s.forwardRef)((t,o)=>{let{className:c,...i}=t;return(0,s.createElement)(r.default,{ref:o,iconNode:a,className:(0,n.z)("lucide-".concat(l(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()),"lucide-".concat(e),c),...i})});return t.displayName=l(e),t}},20271:(e,a,t)=>{"use strict";t.d(a,{default:()=>m});var s=t(95155),n=t(12115),l=t(47650),r=t(85649),o=t(30926);let c=(0,o.createServerReference)("40192c916432262eb73b11ee4de3472a498182cc86",o.callServer,void 0,o.findSourceMapURL,"updateProjectAction");var i=t(59097);let d=[{value:"#c2452a",name:"Mars Red"},{value:"#a83a22",name:"Deep Red"},{value:"#7c2b19",name:"Dark Red"},{value:"#111318",name:"Charcoal"},{value:"#3f3a30",name:"Warm Black"},{value:"#68707b",name:"Slate"},{value:"#cdb78a",name:"Warm Sand"},{value:"#1f6c9f",name:"Skill Blue"}];function u(){let{pending:e}=(0,l.useFormStatus)();return(0,s.jsx)("button",{type:"submit",className:"admin-button",disabled:e,"aria-busy":e?"true":void 0,children:e?"Saving…":"Save changes"})}function m(e){let{projectId:a,projectName:t,projectColor:l,projectDescription:o,projectFolderPath:m}=e,[h,p]=n.useState(!1),[f,j]=n.useState("keep"),[x,g]=n.useState(m||""),v=n.useRef(null);return n.useEffect(()=>{h&&(j("keep"),g(m||""))},[h,m]),n.useEffect(()=>{var e;"custom"===f&&(null==(e=v.current)||e.focus())},[f]),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("button",{type:"button",className:"admin-button secondary project-edit",onClick:()=>p(!0),"aria-label":"Edit ".concat(t),children:"Edit"}),(0,s.jsx)(r.A,{open:h,onClose:()=>p(!1),eyebrow:"Edit project",title:"Edit ".concat(t),children:(0,s.jsxs)("form",{className:"agents-modal-form",action:c,children:[(0,s.jsx)("input",{type:"hidden",name:"project_id",value:a}),(0,s.jsx)("section",{className:"agents-modal-section",children:(0,s.jsxs)("label",{className:"agents-modal-field wide",children:[(0,s.jsx)("span",{children:"Name"}),(0,s.jsx)("input",{name:"name",type:"text",defaultValue:t,autoComplete:"off",required:!0})]})}),(0,s.jsxs)("section",{className:"agents-modal-section",children:[(0,s.jsxs)("div",{className:"agents-modal-section-head",children:[(0,s.jsx)("span",{children:"Folder location"}),(0,s.jsx)("small",{children:"Where project files live on disk. Move only if you've already moved the folder yourself."})]}),(0,s.jsxs)("div",{className:"agents-modal-radio-group",children:[(0,s.jsxs)("label",{className:"agents-modal-radio ".concat("keep"===f?"on":""),children:[(0,s.jsx)("input",{type:"radio",name:"folder_mode",value:"keep",checked:"keep"===f,onChange:()=>j("keep")}),(0,s.jsxs)("span",{className:"agents-modal-radio-body",children:[(0,s.jsx)("b",{children:"Keep current"}),(0,s.jsx)("code",{title:m||"",children:function(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:48;if(!e||e.length<=a)return e;let t=e.slice(0,Math.floor(a/2)-1),s=e.slice(e.length-Math.floor(a/2)+2);return"".concat(t,"…").concat(s)}(m)||"(not set)"})]})]}),(0,s.jsxs)("label",{className:"agents-modal-radio ".concat("custom"===f?"on":""),children:[(0,s.jsx)("input",{type:"radio",name:"folder_mode",value:"custom",checked:"custom"===f,onChange:()=>j("custom")}),(0,s.jsxs)("span",{className:"agents-modal-radio-body",children:[(0,s.jsx)("b",{children:"Change to…"}),(0,s.jsx)("small",{children:"Absolute path. Must already exist or be writable."})]})]})]}),"custom"===f?(0,s.jsx)(i.A,{inputRef:v,value:x,onChange:g}):(0,s.jsx)("input",{type:"hidden",name:"folder_path",value:""})]}),(0,s.jsxs)("section",{className:"agents-modal-section",children:[(0,s.jsxs)("div",{className:"agents-modal-section-head",children:[(0,s.jsx)("span",{children:"Color"}),(0,s.jsx)("small",{children:"Tile color across the app."})]}),(0,s.jsxs)("fieldset",{className:"agents-modal-swatches",children:[(0,s.jsx)("legend",{className:"visually-hidden",children:"Project color"}),d.map(e=>(0,s.jsxs)("label",{className:"agents-modal-swatch",style:{"--swatch":e.value},children:[(0,s.jsx)("input",{type:"radio",name:"color",value:e.value,defaultChecked:e.value===(l||"#c2452a")}),(0,s.jsx)("span",{className:"agents-modal-swatch-ring","aria-hidden":"true"}),(0,s.jsx)("span",{className:"visually-hidden",children:e.name})]},e.value))]})]}),(0,s.jsxs)("section",{className:"agents-modal-section",children:[(0,s.jsxs)("div",{className:"agents-modal-section-head",children:[(0,s.jsx)("span",{children:"Description"}),(0,s.jsx)("small",{children:"Used as context for agents working in this project."})]}),(0,s.jsx)("label",{className:"agents-modal-field wide",children:(0,s.jsx)("textarea",{name:"description",rows:3,defaultValue:o||"",placeholder:"What is this project for? Goals, audience, voice, constraints."})})]}),(0,s.jsxs)("footer",{className:"agents-modal-foot",children:[(0,s.jsx)("button",{type:"button",className:"admin-button secondary",onClick:()=>p(!1),children:"Cancel"}),(0,s.jsx)(u,{})]})]})})]})}},30926:(e,a,t)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),!function(e,a){for(var t in a)Object.defineProperty(e,t,{enumerable:!0,get:a[t]})}(a,{callServer:function(){return s.callServer},createServerReference:function(){return l.createServerReference},findSourceMapURL:function(){return n.findSourceMapURL}});let s=t(41209),n=t(85153),l=t(77197)},34788:(e,a,t)=>{"use strict";t.d(a,{A:()=>s});let s=(0,t(13185).A)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},59097:(e,a,t)=>{"use strict";t.d(a,{A:()=>l});var s=t(95155),n=t(12115);function l(e){let{name:a="folder_path",value:t,onChange:l,inputRef:r,placeholder:o="/Users/you/Documents/my-project"}=e,[c,i]=n.useState(null),[d,u]=n.useState(!1),[m,h]=n.useState(""),[p,f]=n.useState(""),[j,x]=n.useState(null);async function g(){var e;let a;if(i(null),!(null==(e=navigator.clipboard)?void 0:e.readText))return void i({kind:"error",message:"Clipboard not available."});try{a=await navigator.clipboard.readText()}catch(e){i({kind:"error",message:"Allow clipboard access."});return}let t=(a||"").trim();if((t.startsWith('"')&&t.endsWith('"')||t.startsWith("'")&&t.endsWith("'"))&&(t=t.slice(1,-1)),t.startsWith("file://"))try{t=decodeURI(t.slice(7))}catch(e){}return t?t.startsWith("/")||t.startsWith("~")?void(l(t),i({kind:"success",message:"Pasted."})):void i({kind:"error",message:"Path must be absolute."}):void i({kind:"error",message:"Clipboard is empty."})}async function v(){i(null),x("pick");try{let e=await fetch("/api/fs/pick-folder",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({title:"Choose project folder",start_path:t&&t.startsWith("/")?t:void 0})});if(499===e.status)return void i({kind:"error",message:"Cancelled."});let a=await e.json();if(!e.ok)return void i({kind:"error",message:a.error||"Picker failed."});l(a.folder_path),i({kind:"success",message:"Selected ".concat(a.folder_path)})}catch(e){i({kind:"error",message:String((null==e?void 0:e.message)||e)})}finally{x(null)}}async function b(){if(i(null),!m.trim()||!p.trim())return void i({kind:"error",message:"Parent and name required."});x("create");try{let e=await fetch("/api/fs/create-folder",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({parent:m.trim(),name:p.trim()})}),a=await e.json();if(!e.ok)return void i({kind:"error",message:a.error||"Create failed."});l(a.folder_path),u(!1),f(""),i({kind:"success",message:"Created ".concat(a.folder_path)})}catch(e){i({kind:"error",message:String((null==e?void 0:e.message)||e)})}finally{x(null)}}return n.useEffect(()=>{d&&!m&&h(t||"~/Documents")},[d,t,m]),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"agents-modal-paste-row",children:[(0,s.jsx)("input",{ref:r,name:a,type:"text",placeholder:o,autoComplete:"off",spellCheck:!1,value:t||"",onChange:e=>{l(e.target.value),c&&i(null)},required:!0}),(0,s.jsx)("button",{type:"button",className:"admin-button secondary",onClick:v,disabled:"pick"===j,children:"pick"===j?"Opening…":"Choose folder…"})]}),(0,s.jsxs)("div",{className:"agents-modal-folder-tools",children:[(0,s.jsx)("button",{type:"button",className:"admin-button secondary",onClick:g,children:"Paste from clipboard"}),(0,s.jsx)("button",{type:"button",className:"admin-button secondary",onClick:()=>l("~/Documents"),children:"~/Documents"}),(0,s.jsx)("button",{type:"button",className:"admin-button secondary",onClick:()=>l("~/Desktop"),children:"~/Desktop"}),(0,s.jsx)("button",{type:"button",className:"admin-button secondary",onClick:()=>u(e=>!e),children:d?"Cancel new folder":"+ New folder"})]}),d?(0,s.jsxs)("div",{className:"agents-modal-create-folder",children:[(0,s.jsx)("small",{children:"Create a folder anywhere outside system directories. Parent must exist."}),(0,s.jsx)("div",{className:"agents-modal-create-row",children:(0,s.jsx)("input",{type:"text",placeholder:"Parent (e.g. ~/Documents)",value:m,onChange:e=>h(e.target.value),spellCheck:!1,autoComplete:"off"})}),(0,s.jsxs)("div",{className:"agents-modal-create-row",children:[(0,s.jsx)("input",{type:"text",placeholder:"New folder name",value:p,onChange:e=>f(e.target.value),spellCheck:!1,autoComplete:"off"}),(0,s.jsx)("button",{type:"button",className:"admin-button",onClick:b,disabled:"create"===j,children:"create"===j?"Creating…":"Create"})]})]}):null,c?(0,s.jsx)("p",{className:"agents-modal-feedback ".concat(c.kind),role:"status","aria-live":"polite",children:c.message}):null]})}},64250:(e,a,t)=>{"use strict";t.d(a,{z:()=>s});let s=function(){for(var e=arguments.length,a=Array(e),t=0;t<e;t++)a[t]=arguments[t];return a.filter((e,a,t)=>!!e&&""!==e.trim()&&t.indexOf(e)===a).join(" ").trim()}},65532:(e,a,t)=>{"use strict";t.d(a,{default:()=>m});var s=t(95155),n=t(12115),l=t(47650),r=t(85649),o=t(30926);let c=(0,o.createServerReference)("40814e919729e8daf63bbef638909fff463dfe4799",o.callServer,void 0,o.findSourceMapURL,"createProjectAction");var i=t(59097);let d=[{value:"#c2452a",name:"Mars Red"},{value:"#a83a22",name:"Deep Red"},{value:"#7c2b19",name:"Dark Red"},{value:"#111318",name:"Charcoal"},{value:"#3f3a30",name:"Warm Black"},{value:"#68707b",name:"Slate"},{value:"#cdb78a",name:"Warm Sand"},{value:"#1f6c9f",name:"Skill Blue"}];function u(){let{pending:e}=(0,l.useFormStatus)();return(0,s.jsx)("button",{type:"submit",className:"admin-button",disabled:e,"aria-busy":e?"true":void 0,children:e?"Creating…":"Create project"})}function m(e){let{workspaceRoot:a="~/workspace/projects"}=e,[t,l]=n.useState(!1),[o,m]=n.useState(""),[h,p]=n.useState("workspace"),[f,j]=n.useState(""),x=n.useRef(null),g=n.useMemo(()=>"".concat(a.replace(/\/$/,""),"/").concat(String(o||"").toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,64)||"project"),[a,o]);return n.useEffect(()=>{var e;"custom"===h&&(null==(e=x.current)||e.focus())},[h]),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("button",{type:"button",className:"admin-button agents-new-cta",onClick:()=>l(!0),children:[(0,s.jsx)("span",{"aria-hidden":!0,className:"agents-new-cta-glyph",children:"+"}),"New project"]}),(0,s.jsx)(r.A,{open:t,onClose:()=>l(!1),eyebrow:"New project",title:"Create a project",children:(0,s.jsxs)("form",{className:"agents-modal-form",action:c,children:[(0,s.jsx)("p",{className:"agents-modal-help",children:"Scope agents, documents, memory, and integrations together."}),(0,s.jsx)("section",{className:"agents-modal-section",children:(0,s.jsxs)("label",{className:"agents-modal-field wide",children:[(0,s.jsx)("span",{children:"Name"}),(0,s.jsx)("input",{name:"name",type:"text",required:!0,placeholder:"Acme Co.",autoComplete:"off",value:o,onChange:e=>m(e.target.value),autoFocus:!0})]})}),(0,s.jsxs)("section",{className:"agents-modal-section",children:[(0,s.jsxs)("div",{className:"agents-modal-section-head",children:[(0,s.jsx)("span",{children:"Folder location"}),(0,s.jsx)("small",{children:"Where this project lives on disk."})]}),(0,s.jsxs)("div",{className:"agents-modal-radio-group",children:[(0,s.jsxs)("label",{className:"agents-modal-radio ".concat("workspace"===h?"on":""),children:[(0,s.jsx)("input",{type:"radio",name:"folder_mode",value:"workspace",checked:"workspace"===h,onChange:()=>p("workspace")}),(0,s.jsxs)("span",{className:"agents-modal-radio-body",children:[(0,s.jsx)("b",{children:"madarX workspace"}),(0,s.jsx)("code",{title:g,children:function(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:48;if(!e||e.length<=a)return e;let t=e.slice(0,Math.floor(a/2)-1),s=e.slice(e.length-Math.floor(a/2)+2);return"".concat(t,"…").concat(s)}(g)})]})]}),(0,s.jsxs)("label",{className:"agents-modal-radio ".concat("custom"===h?"on":""),children:[(0,s.jsx)("input",{type:"radio",name:"folder_mode",value:"custom",checked:"custom"===h,onChange:()=>p("custom")}),(0,s.jsxs)("span",{className:"agents-modal-radio-body",children:[(0,s.jsx)("b",{children:"Custom path"}),(0,s.jsx)("small",{children:"Any absolute folder. Created if missing."})]})]})]}),"custom"===h?(0,s.jsx)(i.A,{inputRef:x,value:f,onChange:j}):(0,s.jsx)("input",{type:"hidden",name:"folder_path",value:""})]}),(0,s.jsxs)("section",{className:"agents-modal-section",children:[(0,s.jsxs)("div",{className:"agents-modal-section-head",children:[(0,s.jsx)("span",{children:"Color"}),(0,s.jsx)("small",{children:"Used for the project tile across the app."})]}),(0,s.jsxs)("fieldset",{className:"agents-modal-swatches",children:[(0,s.jsx)("legend",{className:"visually-hidden",children:"Project color"}),d.map(e=>(0,s.jsxs)("label",{className:"agents-modal-swatch",style:{"--swatch":e.value},children:[(0,s.jsx)("input",{type:"radio",name:"color",value:e.value,defaultChecked:"#c2452a"===e.value}),(0,s.jsx)("span",{className:"agents-modal-swatch-ring","aria-hidden":"true"}),(0,s.jsx)("span",{className:"visually-hidden",children:e.name})]},e.value))]})]}),(0,s.jsxs)("section",{className:"agents-modal-section",children:[(0,s.jsxs)("div",{className:"agents-modal-section-head",children:[(0,s.jsx)("span",{children:"Description"}),(0,s.jsx)("small",{children:"Used as context for agents working in this project."})]}),(0,s.jsx)("label",{className:"agents-modal-field wide",children:(0,s.jsx)("textarea",{name:"description",rows:3,placeholder:"What is this project for? Goals, audience, voice, constraints."})})]}),(0,s.jsxs)("footer",{className:"agents-modal-foot",children:[(0,s.jsx)("button",{type:"button",className:"admin-button secondary",onClick:()=>l(!1),children:"Cancel"}),(0,s.jsx)(u,{})]})]})})]})}},85649:(e,a,t)=>{"use strict";t.d(a,{A:()=>r});var s=t(95155),n=t(12115),l=t(34788);function r(e){let{open:a,onClose:t,eyebrow:r,title:o,tone:c="default",size:i="default",children:d}=e,u=n.useRef(null);return n.useEffect(()=>{let e=u.current;e&&(a&&!e.open&&("function"==typeof e.showModal?e.showModal():e.setAttribute("open","")),!a&&e.open&&e.close())},[a]),n.useEffect(()=>{let e=u.current;if(!e)return;let a=e=>{e.preventDefault(),t()};return e.addEventListener("cancel",a),()=>e.removeEventListener("cancel",a)},[t]),(0,s.jsx)("dialog",{ref:u,className:"agents-modal".concat("wide"===i?" agents-modal--wide":""),onClick:e=>{e.target===u.current&&t()},children:a?(0,s.jsxs)("div",{className:"agents-modal-card".concat("danger"===c?" agents-modal-card--danger":""),onClick:e=>e.stopPropagation(),children:[(0,s.jsxs)("header",{className:"agents-modal-head",children:[(0,s.jsxs)("div",{children:[r?(0,s.jsx)("span",{className:"admin-kicker",children:r}):null,(0,s.jsx)("h2",{children:o})]}),(0,s.jsx)("button",{type:"button",className:"agents-modal-close",onClick:t,"aria-label":"Close",children:(0,s.jsx)(l.A,{size:14})})]}),d]}):null})}},86910:(e,a,t)=>{"use strict";t.d(a,{default:()=>d});var s=t(95155),n=t(12115),l=t(47650),r=t(85649),o=t(30926);let c=(0,o.createServerReference)("40a51617a5582d2d9bcfefb8ec17a0a7e41c176c14",o.callServer,void 0,o.findSourceMapURL,"deleteProjectAction");function i(e){let{disabled:a}=e,{pending:t}=(0,l.useFormStatus)();return(0,s.jsx)("button",{type:"submit",className:"admin-button danger",disabled:t||a,"aria-busy":t?"true":void 0,children:t?"Deleting…":"Delete project"})}function d(e){let{projectId:a,projectName:t,projectSlug:l,isProtected:o}=e,[d,u]=n.useState(!1),[m,h]=n.useState("");if(o)return(0,s.jsxs)("span",{className:"admin-button secondary project-delete is-locked","aria-disabled":"true",title:"The Personal project is the default scope and cannot be deleted.",children:[(0,s.jsxs)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",style:{marginRight:6,verticalAlign:"-1px"},children:[(0,s.jsx)("rect",{x:"3",y:"11",width:"18",height:"11",rx:"2"}),(0,s.jsx)("path",{d:"M7 11V7a5 5 0 0 1 10 0v4"})]}),"Protected"]});n.useEffect(()=>{d||h("")},[d]);let p=m.trim()===l;return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("button",{type:"button",className:"admin-button secondary project-delete",onClick:()=>u(!0),"aria-label":"Delete ".concat(t),children:"Delete"}),(0,s.jsx)(r.A,{open:d,onClose:()=>u(!1),eyebrow:"Delete project",title:"Delete ".concat(t,"?"),tone:"danger",children:(0,s.jsxs)("form",{className:"agents-modal-form",action:c,children:[(0,s.jsx)("input",{type:"hidden",name:"project_id",value:a}),(0,s.jsx)("p",{className:"agents-modal-help",children:"This removes the project, its agents, Disk files, memory, secrets, and audit history. The folder on your local drive is left untouched."}),(0,s.jsx)("section",{className:"agents-modal-section",children:(0,s.jsxs)("label",{className:"agents-modal-field wide",children:[(0,s.jsxs)("span",{children:["Type ",(0,s.jsx)("code",{className:"agents-modal-inline-code",children:l})," to confirm"]}),(0,s.jsx)("input",{type:"text",autoComplete:"off",spellCheck:!1,value:m,onChange:e=>h(e.target.value),placeholder:l,autoFocus:!0})]})}),(0,s.jsxs)("footer",{className:"agents-modal-foot",children:[(0,s.jsx)("button",{type:"button",className:"admin-button secondary",onClick:()=>u(!1),children:"Cancel"}),(0,s.jsx)(i,{disabled:!p})]})]})})]})}},99168:(e,a,t)=>{Promise.resolve().then(t.bind(t,10677)),Promise.resolve().then(t.bind(t,86910)),Promise.resolve().then(t.bind(t,20271)),Promise.resolve().then(t.bind(t,65532)),Promise.resolve().then(t.t.bind(t,52619,23))}},e=>{e.O(0,[2619,8441,1255,7358],()=>e(e.s=99168)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3427],{10677:(e,a,t)=>{"use strict";t.d(a,{default:()=>l});var s=t(95155),n=t(12115);function l(){let[e,a]=(0,n.useState)([]),[t,l]=(0,n.useState)("");return(0,n.useEffect)(()=>{l(localStorage.getItem("madarx.activeProjectId")||""),fetch("/api/projects").then(e=>e.json()).then(e=>a(e.projects||[])).catch(()=>{})},[]),(0,s.jsx)("div",{className:"project-switcher","data-project-switcher":!0,children:(0,s.jsxs)("select",{value:t,onChange:e=>{var a;l(a=e.target.value),a?localStorage.setItem("madarx.activeProjectId",a):localStorage.removeItem("madarx.activeProjectId"),window.dispatchEvent(new CustomEvent("madarx:project-change",{detail:{project_id:a||null}}))},"aria-label":"Active project",children:[(0,s.jsx)("option",{value:"",children:"All projects"}),e.map(e=>(0,s.jsx)("option",{value:e.id,children:e.name},e.id))]})})}},20063:(e,a,t)=>{"use strict";var s=t(47260);t.o(s,"usePathname")&&t.d(a,{usePathname:function(){return s.usePathname}}),t.o(s,"useRouter")&&t.d(a,{useRouter:function(){return s.useRouter}}),t.o(s,"useSearchParams")&&t.d(a,{useSearchParams:function(){return s.useSearchParams}})},22157:(e,a,t)=>{"use strict";t.d(a,{default:()=>j});var s=t(95155),n=t(12115),l=t(20063),i=t(55799);let r={intake:"neutral",running:"info",awaiting_approval:"warning",complete:"success",rejected:"danger",failed:"danger",cancelled:"neutral"},c={intake:"Intake",running:"Running",awaiting_approval:"Awaiting approval",complete:"Complete",rejected:"Rejected",failed:"Failed",cancelled:"Cancelled"},d={queued:"neutral",running:"info",awaiting_approval:"warning",pass:"success",fail:"danger",skipped:"neutral",cancelled:"neutral"},o=new Set(["complete","rejected","failed","cancelled"]);function u(e){return e?new Date(e).toLocaleString():"—"}function h(e){let{artifact:a}=e;if(!a)return null;let t="html"===a.kind;return(0,s.jsxs)("li",{className:"case-artifact-card",children:[(0,s.jsxs)("div",{className:"case-artifact-card-meta",children:[(0,s.jsx)("span",{className:"case-artifact-title",children:a.title||a.path}),(0,s.jsxs)("span",{className:"muted",children:[" \xb7 ",a.kind]})]}),t?(0,s.jsx)("iframe",{title:a.title||a.id,src:"/api/artifacts/".concat(a.id,"/raw"),sandbox:"allow-scripts",loading:"lazy"}):null]})}function m(e){let{title:a,label:t,artifact:n,helpText:l}=e,i=(null==n?void 0:n.kind)==="html";return(0,s.jsxs)("div",{className:"intake-artifact-card",children:[(0,s.jsxs)("header",{children:[(0,s.jsx)("h4",{children:t}),(0,s.jsx)("span",{className:"muted",children:(null==n?void 0:n.title)||""})]}),i?(0,s.jsx)("iframe",{title:a,src:"/api/artifacts/".concat(n.id,"/raw"),sandbox:"allow-scripts",loading:"lazy"}):(0,s.jsx)("p",{className:"muted",children:"Artifact content unavailable."}),l?(0,s.jsx)("small",{className:"muted",children:l}):null]})}function p(e){var a;let{caseRow:t,artifacts:n,latestExec:l}=e,i=null==t||null==(a=t.context)?void 0:a.intake_form_artifact_id,r=(null==l?void 0:l.artifact_ids)||[],c=n.find(e=>e.id===i),d=n.find(e=>r.includes(e.id)&&e.id!==i);return(0,s.jsxs)(s.Fragment,{children:[c?(0,s.jsx)(m,{title:"Intake form artifact",label:"Intake form artifact",artifact:c,helpText:"Artifact-first intake page \xb7 canonical presentation record for this case."}):null,t.intake_payload?null:(0,s.jsxs)("p",{children:["Intake form not submitted yet. Submit via"," ",(0,s.jsx)("a",{href:"/workflows/new?definition=".concat(t.definition_slug),children:"the new-case page"})," ","for this definition."]}),d?(0,s.jsx)(m,{title:"Intake submission",label:"Intake submission",artifact:d,helpText:"Sensitive identifiers (passport / national IDs) are redacted in this artifact."}):null,t.intake_payload?(0,s.jsxs)("details",{className:"payload-card",children:[(0,s.jsx)("summary",{children:"Raw intake payload (engine state)"}),(0,s.jsx)("pre",{children:JSON.stringify(t.intake_payload,null,2)})]}):null]})}function f(e){let{artifacts:a}=e;return a&&0!==a.length?(0,s.jsxs)("section",{className:"case-artifacts-gallery",children:[(0,s.jsx)("h3",{children:"Case artifacts"}),(0,s.jsx)("p",{className:"muted",children:"Every workflow touchpoint is rendered as an HTML artifact. These artifacts are also visible in the project library."}),(0,s.jsx)("ul",{className:"case-artifact-list",children:a.map(e=>(0,s.jsx)(h,{artifact:e},e.id))})]}):null}function j(e){var a,t;let{caseRow:h,definition:m,stages:j,executions:x,approvals:g,artifacts:v}=e,N=(0,l.useRouter)(),[y,k]=(0,n.useState)(h),[w,_]=(0,n.useState)(x),[b,S]=(0,n.useState)(g),[P,C]=(0,n.useState)(v),[I,E]=(0,n.useState)(y.current_stage_slug||(null==(a=j[0])?void 0:a.slug)),[A,R]=(0,n.useState)(!1),[O,T]=(0,n.useState)(null);(0,n.useEffect)(()=>{if(o.has(y.status))return;let e=!1,a=setInterval(async()=>{try{var a;let t=await fetch("/api/processes/".concat(y.id));if(!t.ok)return;let s=await t.json();if(e)return;k(s.case),_(s.executions||[]),S(s.approvals||[]),C(s.artifacts||[]),(null==(a=s.case)?void 0:a.current_stage_slug)&&E(s.case.current_stage_slug)}catch(e){}},4e3);return()=>{e=!0,clearInterval(a)}},[y.id,y.status]);let q=(0,n.useMemo)(()=>(function(e){let a=new Map;for(let t of e){let e=a.get(t.stage_slug)||[];e.push(t),a.set(t.stage_slug,e)}return a})(w),[w]),J=(0,n.useMemo)(()=>j.find(e=>e.slug===I)||j[0],[j,I]);async function H(e){R(!0),T(null);try{let a=await fetch("/api/approvals/".concat(e),{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify({decision:"approved"})});if(!a.ok){let e=await a.json().catch(()=>({}));throw Error((null==e?void 0:e.error)||"approve failed")}}catch(e){T((null==e?void 0:e.message)||String(e))}finally{R(!1)}}async function M(e){R(!0),T(null);try{let a=await fetch("/api/approvals/".concat(e),{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify({decision:"denied"})});if(!a.ok){let e=await a.json().catch(()=>({}));throw Error((null==e?void 0:e.error)||"deny failed")}}catch(e){T((null==e?void 0:e.message)||String(e))}finally{R(!1)}}async function D(e){R(!0),T(null);try{let a=await fetch("/api/processes/".concat(y.id,"/stages/").concat(e,"/retry"),{method:"POST"});if(!a.ok){let e=await a.json().catch(()=>({}));throw Error((null==e?void 0:e.error)||"retry failed")}}catch(e){T((null==e?void 0:e.message)||String(e))}finally{R(!1)}}async function F(){if(confirm("Cancel this case?")){R(!0);try{let e=await fetch("/api/processes/".concat(y.id),{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify({status:"cancelled"})});if(!e.ok){let a=await e.json().catch(()=>({}));throw Error((null==a?void 0:a.error)||"cancel failed")}N.refresh()}catch(e){T((null==e?void 0:e.message)||String(e))}finally{R(!1)}}}let L=q.get(null==J?void 0:J.slug)||[],z=L[L.length-1],U=b.find(e=>{var a;return"pending"===e.status&&(null==(a=e.payload)?void 0:a.stage_slug)===(null==J?void 0:J.slug)});return(0,s.jsxs)("div",{className:"case-detail","data-page":"case",children:[(0,s.jsxs)("header",{className:"case-header",children:[(0,s.jsx)(i.qs,{tone:r[y.status]||"neutral",children:c[y.status]||y.status}),(0,s.jsxs)("div",{className:"case-header-meta",children:[(0,s.jsxs)("span",{className:"muted",children:["Project: ",y.project_id]}),(0,s.jsxs)("span",{className:"muted",children:["Updated: ",u(y.updated_at)]})]}),o.has(y.status)?null:(0,s.jsx)("button",{className:"btn-tertiary",onClick:F,disabled:A,children:"Cancel case"})]}),O?(0,s.jsx)("p",{className:"form-error",role:"alert",children:O}):null,(0,s.jsxs)("div",{className:"case-grid",children:[(0,s.jsxs)("aside",{className:"case-timeline",children:[(0,s.jsx)("h3",{children:"Stages"}),(0,s.jsx)("ol",{children:j.map(e=>{let a=q.get(e.slug)||[],t=a[a.length-1],n=e.slug===(null==J?void 0:J.slug),l=e.slug===y.current_stage_slug,r=(null==t?void 0:t.status)||(l?"running":"pending");return(0,s.jsx)("li",{className:"stage-node ".concat(n?"active":""," ").concat(l?"current":""),"data-status":r,children:(0,s.jsxs)("button",{type:"button",onClick:()=>E(e.slug),children:[(0,s.jsx)("span",{className:"stage-name",children:e.name}),(0,s.jsx)("span",{className:"stage-kind muted",children:e.kind.replace("_"," ")}),(0,s.jsx)(i.qs,{tone:d[r]||"neutral",children:r})]})},e.id)})})]}),(0,s.jsx)("section",{className:"case-stage-panel",children:J?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("header",{children:[(0,s.jsx)("h3",{children:J.name}),(0,s.jsx)("span",{className:"muted",children:J.kind})]}),"intake_form"===J.kind?(0,s.jsx)(p,{caseRow:y,artifacts:P,latestExec:z}):null,"human_approval"===J.kind&&U?(0,s.jsxs)("div",{className:"approval-card",children:[(0,s.jsxs)("p",{children:[(0,s.jsx)("strong",{children:"Approval requested:"})," ",U.summary]}),(0,s.jsxs)("div",{className:"approval-actions",children:[(0,s.jsx)("button",{className:"btn-primary",onClick:()=>H(U.id),disabled:A,children:"Approve"}),(0,s.jsx)("button",{className:"btn-danger",onClick:()=>M(U.id),disabled:A,children:"Deny"})]}),(0,s.jsxs)("small",{className:"muted",children:["Risk: ",U.risk," \xb7 created ",u(U.created_at)]})]}):null,z?(0,s.jsxs)("div",{className:"exec-card",children:[(0,s.jsxs)("header",{children:[(0,s.jsx)("h4",{children:"Latest execution"}),(0,s.jsx)(i.qs,{tone:d[z.status]||"neutral",children:z.status}),z.attempt>1?(0,s.jsxs)("span",{className:"muted",children:["Attempt ",z.attempt]}):null]}),z.output?(0,s.jsxs)("details",{open:!0,children:[(0,s.jsx)("summary",{children:"Structured output"}),(0,s.jsx)("pre",{children:JSON.stringify(z.output,null,2)})]}):null,z.error?(0,s.jsxs)("p",{className:"form-error",children:["Error: ",z.error]}):null,"fail"===z.status?(0,s.jsx)("button",{className:"btn-secondary",onClick:()=>D(J.id),disabled:A,children:"Retry stage"}):null]}):(0,s.jsx)("p",{className:"muted",children:"No execution recorded yet."}),P.length&&((null==z||null==(t=z.artifact_ids)?void 0:t.length)||"package"===J.kind)?(0,s.jsxs)("div",{className:"artifacts-card",children:[(0,s.jsx)("h4",{children:"Stage artifacts"}),(0,s.jsx)("ul",{children:P.filter(e=>((null==z?void 0:z.artifact_ids)||[]).includes(e.id)).map(e=>(0,s.jsxs)("li",{children:[(0,s.jsx)("span",{className:"case-artifact-title",children:e.title||e.path}),(0,s.jsxs)("span",{className:"muted",children:[" \xb7 ",e.kind]})]},e.id))})]}):null]}):(0,s.jsx)("p",{children:"Pick a stage from the timeline."})})]}),(0,s.jsx)(f,{artifacts:P})]})}},55799:(e,a,t)=>{"use strict";t.d(a,{iN:()=>l,qs:()=>i});var s=t(95155),n=t(10677);function l(e){let{kicker:a="madarX OS v1.0",title:t,description:l,actions:i,hideProjectSwitcher:r,children:c}=e;return(0,s.jsxs)("main",{className:"admin-shell",children:[(0,s.jsxs)("header",{className:"admin-header",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("span",{className:"admin-kicker",children:a}),(0,s.jsx)("h1",{children:t}),l?(0,s.jsx)("p",{children:l}):null]}),(0,s.jsxs)("div",{className:"admin-header-actions",children:[r?null:(0,s.jsx)(n.default,{}),i]})]}),c]})}function i(e){let{children:a,tone:t="neutral"}=e;return(0,s.jsx)("span",{className:"admin-pill ".concat(t),children:a})}},59531:(e,a,t)=>{Promise.resolve().then(t.bind(t,10677)),Promise.resolve().then(t.bind(t,22157)),Promise.resolve().then(t.t.bind(t,52619,23))}},e=>{e.O(0,[2619,8441,1255,7358],()=>e(e.s=59531)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[106],{10677:(e,a,t)=>{"use strict";t.d(a,{default:()=>r});var l=t(95155),n=t(12115);function r(){let[e,a]=(0,n.useState)([]),[t,r]=(0,n.useState)("");return(0,n.useEffect)(()=>{r(localStorage.getItem("madarx.activeProjectId")||""),fetch("/api/projects").then(e=>e.json()).then(e=>a(e.projects||[])).catch(()=>{})},[]),(0,l.jsx)("div",{className:"project-switcher","data-project-switcher":!0,children:(0,l.jsxs)("select",{value:t,onChange:e=>{var a;r(a=e.target.value),a?localStorage.setItem("madarx.activeProjectId",a):localStorage.removeItem("madarx.activeProjectId"),window.dispatchEvent(new CustomEvent("madarx:project-change",{detail:{project_id:a||null}}))},"aria-label":"Active project",children:[(0,l.jsx)("option",{value:"",children:"All projects"}),e.map(e=>(0,l.jsx)("option",{value:e.id,children:e.name},e.id))]})})}},20063:(e,a,t)=>{"use strict";var l=t(47260);t.o(l,"usePathname")&&t.d(a,{usePathname:function(){return l.usePathname}}),t.o(l,"useRouter")&&t.d(a,{useRouter:function(){return l.useRouter}}),t.o(l,"useSearchParams")&&t.d(a,{useSearchParams:function(){return l.useSearchParams}})},69663:(e,a,t)=>{"use strict";t.d(a,{default:()=>o});var l=t(95155),n=t(12115),r=t(20063);function s(e){let{value:a,onChange:t}=e,n=Array.isArray(a)?a:[],r=n.reduce((e,a)=>e+Number(a.percentage||0),0);return(0,l.jsxs)("div",{className:"shareholders-field",children:[n.map((e,a)=>(0,l.jsxs)("div",{className:"shareholder-row",children:[(0,l.jsx)("input",{type:"text",value:e.name,placeholder:"Shareholder name",onChange:e=>t(n.map((t,l)=>l===a?{...t,name:e.target.value}:t))}),(0,l.jsx)("input",{type:"number",value:e.percentage,min:0,max:100,step:.01,onChange:e=>t(n.map((t,l)=>l===a?{...t,percentage:Number(e.target.value)}:t))}),(0,l.jsx)("span",{children:"%"}),n.length>1?(0,l.jsx)("button",{type:"button",className:"btn-tertiary",onClick:()=>t(n.filter((e,t)=>t!==a)),children:"Remove"}):null]},a)),(0,l.jsxs)("div",{className:"shareholder-actions",children:[(0,l.jsx)("button",{type:"button",className:"btn-secondary",onClick:()=>t([...n,{name:"",percentage:0}]),children:"Add shareholder"}),(0,l.jsxs)("span",{className:"muted",children:["Total: ",r,"%"]})]})]})}function i(e){let{field:a,value:t,error:n,onChange:r}=e,i={id:"f-".concat(a.name),name:a.name,required:a.required,"aria-invalid":n?"true":void 0};return(0,l.jsxs)("label",{className:"form-field".concat(n?" has-error":""),children:[(0,l.jsxs)("span",{className:"form-field-label",children:[a.label,a.required?(0,l.jsx)("span",{className:"req",children:" *"}):null]}),"textarea"===a.type?(0,l.jsx)("textarea",{...i,value:t||"",rows:5,placeholder:a.placeholder||"",onChange:e=>r(e.target.value)}):"select"===a.type?(0,l.jsxs)("select",{...i,value:t||"",onChange:e=>r(e.target.value),children:[(0,l.jsx)("option",{value:"",disabled:!0,children:"Pick one…"}),(a.options||[]).map(e=>(0,l.jsx)("option",{value:e,children:e},e))]}):"shareholders"===a.type?(0,l.jsx)(s,{value:t,onChange:r}):(0,l.jsx)("input",{...i,type:"number"===a.type?"number":"email"===a.type?"email":"text",value:t||"",placeholder:a.placeholder||"",min:a.min,onChange:e=>r((a.type,e.target.value))}),a.help?(0,l.jsx)("small",{className:"form-help",children:a.help}):null,n?(0,l.jsx)("small",{className:"form-error",children:n}):null]})}function o(e){var a,t;let{definitions:s,projects:o,initialDefinitionSlug:c}=e,u=(0,r.useRouter)(),[d,m]=(0,n.useState)(c||(null==(a=s[0])?void 0:a.slug)||""),[h,p]=(0,n.useState)((null==(t=o[0])?void 0:t.id)||"personal"),[f,j]=(0,n.useState)(""),[v,x]=(0,n.useState)(null),[g,b]=(0,n.useState)({}),[N,y]=(0,n.useState)({}),[S,_]=(0,n.useState)(!1),[w,C]=(0,n.useState)(null);(0,n.useEffect)(()=>{if(!d)return;let e=!1;return fetch("/api/processes/definitions/".concat(d)).then(e=>e.json()).then(a=>{var t;if(e)return;let l=(null==a?void 0:a.intake_form_schema)||null;x(l),b(function(e){let a={};for(let t of(null==e?void 0:e.fields)||[])"shareholders"===t.type?a[t.name]=[{name:"",percentage:100}]:(t.type,a[t.name]="");return a}(l)),y({}),!f&&(null==a||null==(t=a.definition)?void 0:t.name)&&j("".concat(a.definition.name," — ").concat(new Date().toISOString().slice(0,10)))}).catch(()=>{e||x(null)}),()=>{e=!0}},[d]);let P=(0,n.useMemo)(()=>(null==v?void 0:v.fields)||[],[v]);async function k(e){e.preventDefault(),C(null);let a=function(e,a){let t={};for(let l of(null==e?void 0:e.fields)||[]){let e=a[l.name];if(l.required)if("shareholders"===l.type){let a=Array.isArray(e)?e:[];0===a.length&&(t[l.name]="At least one shareholder required.");let n=a.reduce((e,a)=>e+Number(a.percentage||0),0);Math.abs(n-100)>.01&&(t[l.name]="Shareholder percentages must total 100. Got ".concat(n,".")),a.some(e=>!String(e.name||"").trim())&&(t[l.name]="Each shareholder needs a name.")}else(null==e||""===String(e).trim())&&(t[l.name]="Required.");if("number"===l.type&&""!==e&&null!=e){let a=Number(e);Number.isFinite(a)?"number"==typeof l.min&&a<l.min&&(t[l.name]="Must be at least ".concat(l.min,".")):t[l.name]="Must be a number."}l.min_length&&"string"==typeof e&&e.length<l.min_length&&(t[l.name]="Must be at least ".concat(l.min_length," characters."))}return t}(v,g);if(y(a),!(Object.keys(a).length>0)){_(!0);try{let e=await fetch("/api/processes",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({definition_slug:d,project_id:h,title:f||null,intake_payload:{...g,share_capital_usd:Number(g.share_capital_usd)||0}})}),a=await e.json();if(!e.ok)throw Error((null==a?void 0:a.error)||"Failed to start case");u.push("/workflows/".concat(a.case.id))}catch(e){C((null==e?void 0:e.message)||String(e))}finally{_(!1)}}}return(0,l.jsxs)("form",{className:"new-case-form",onSubmit:k,children:[(0,l.jsxs)("section",{className:"form-section",children:[(0,l.jsx)("h2",{children:"Process and project"}),(0,l.jsxs)("div",{className:"form-row",children:[(0,l.jsxs)("label",{className:"form-field",children:[(0,l.jsx)("span",{className:"form-field-label",children:"Process definition"}),(0,l.jsx)("select",{value:d,onChange:e=>m(e.target.value),children:s.map(e=>(0,l.jsx)("option",{value:e.slug,children:e.name},e.slug))})]}),(0,l.jsxs)("label",{className:"form-field",children:[(0,l.jsx)("span",{className:"form-field-label",children:"Project"}),(0,l.jsx)("select",{value:h,onChange:e=>p(e.target.value),children:o.map(e=>(0,l.jsx)("option",{value:e.id,children:e.name},e.id))})]})]}),(0,l.jsxs)("label",{className:"form-field",children:[(0,l.jsx)("span",{className:"form-field-label",children:"Case title"}),(0,l.jsx)("input",{type:"text",value:f,onChange:e=>j(e.target.value),placeholder:"e.g. ADGM setup — Acme Holdings Ltd"})]})]}),(0,l.jsxs)("section",{className:"form-section",children:[(0,l.jsx)("h2",{children:(null==v?void 0:v.title)||"Intake form"}),(null==v?void 0:v.description)?(0,l.jsx)("p",{className:"muted",children:v.description}):null,P.map(e=>(0,l.jsx)(i,{field:e,value:g[e.name],error:N[e.name],onChange:a=>b(t=>({...t,[e.name]:a}))},e.name))]}),w?(0,l.jsx)("p",{className:"form-error",role:"alert",children:w}):null,(0,l.jsx)("div",{className:"form-actions",children:(0,l.jsx)("button",{type:"submit",className:"btn-primary",disabled:S,children:S?"Starting case…":"Start case"})})]})}},79855:(e,a,t)=>{Promise.resolve().then(t.bind(t,10677)),Promise.resolve().then(t.bind(t,69663))}},e=>{e.O(0,[8441,1255,7358],()=>e(e.s=79855)),_N_E=e.O()}]);
@@ -1,256 +0,0 @@
1
- "use client";
2
-
3
- import { useEffect, useMemo, useState } from "react";
4
- import { useRouter } from "next/navigation";
5
-
6
- function blankPayload(schema) {
7
- const out = {};
8
- for (const f of schema?.fields || []) {
9
- if (f.type === 'shareholders') {
10
- out[f.name] = [{ name: '', percentage: 100 }];
11
- } else if (f.type === 'number') {
12
- out[f.name] = '';
13
- } else {
14
- out[f.name] = '';
15
- }
16
- }
17
- return out;
18
- }
19
-
20
- function validatePayload(schema, payload) {
21
- const errors = {};
22
- for (const f of schema?.fields || []) {
23
- const v = payload[f.name];
24
- if (f.required) {
25
- if (f.type === 'shareholders') {
26
- const list = Array.isArray(v) ? v : [];
27
- if (list.length === 0) errors[f.name] = 'At least one shareholder required.';
28
- const total = list.reduce((sum, s) => sum + Number(s.percentage || 0), 0);
29
- if (Math.abs(total - 100) > 0.01) errors[f.name] = `Shareholder percentages must total 100. Got ${total}.`;
30
- if (list.some((s) => !String(s.name || '').trim())) errors[f.name] = 'Each shareholder needs a name.';
31
- } else if (v == null || String(v).trim() === '') {
32
- errors[f.name] = 'Required.';
33
- }
34
- }
35
- if (f.type === 'number' && v !== '' && v != null) {
36
- const n = Number(v);
37
- if (!Number.isFinite(n)) errors[f.name] = 'Must be a number.';
38
- else if (typeof f.min === 'number' && n < f.min) errors[f.name] = `Must be at least ${f.min}.`;
39
- }
40
- if (f.min_length && typeof v === 'string' && v.length < f.min_length) {
41
- errors[f.name] = `Must be at least ${f.min_length} characters.`;
42
- }
43
- }
44
- return errors;
45
- }
46
-
47
- function ShareholdersField({ value, onChange }) {
48
- const list = Array.isArray(value) ? value : [];
49
- const total = list.reduce((sum, s) => sum + Number(s.percentage || 0), 0);
50
- return (
51
- <div className="shareholders-field">
52
- {list.map((s, i) => (
53
- <div key={i} className="shareholder-row">
54
- <input
55
- type="text"
56
- value={s.name}
57
- placeholder="Shareholder name"
58
- onChange={(e) => onChange(list.map((x, j) => j === i ? { ...x, name: e.target.value } : x))}
59
- />
60
- <input
61
- type="number"
62
- value={s.percentage}
63
- min={0}
64
- max={100}
65
- step={0.01}
66
- onChange={(e) => onChange(list.map((x, j) => j === i ? { ...x, percentage: Number(e.target.value) } : x))}
67
- />
68
- <span>%</span>
69
- {list.length > 1 ? (
70
- <button
71
- type="button"
72
- className="btn-tertiary"
73
- onClick={() => onChange(list.filter((_, j) => j !== i))}
74
- >
75
- Remove
76
- </button>
77
- ) : null}
78
- </div>
79
- ))}
80
- <div className="shareholder-actions">
81
- <button
82
- type="button"
83
- className="btn-secondary"
84
- onClick={() => onChange([...list, { name: '', percentage: 0 }])}
85
- >
86
- Add shareholder
87
- </button>
88
- <span className="muted">Total: {total}%</span>
89
- </div>
90
- </div>
91
- );
92
- }
93
-
94
- function Field({ field, value, error, onChange }) {
95
- const common = {
96
- id: `f-${field.name}`,
97
- name: field.name,
98
- required: field.required,
99
- 'aria-invalid': error ? 'true' : undefined,
100
- };
101
- return (
102
- <label className={`form-field${error ? ' has-error' : ''}`}>
103
- <span className="form-field-label">
104
- {field.label}
105
- {field.required ? <span className="req"> *</span> : null}
106
- </span>
107
- {field.type === 'textarea' ? (
108
- <textarea
109
- {...common}
110
- value={value || ''}
111
- rows={5}
112
- placeholder={field.placeholder || ''}
113
- onChange={(e) => onChange(e.target.value)}
114
- />
115
- ) : field.type === 'select' ? (
116
- <select {...common} value={value || ''} onChange={(e) => onChange(e.target.value)}>
117
- <option value="" disabled>Pick one…</option>
118
- {(field.options || []).map((opt) => (
119
- <option key={opt} value={opt}>{opt}</option>
120
- ))}
121
- </select>
122
- ) : field.type === 'shareholders' ? (
123
- <ShareholdersField value={value} onChange={onChange} />
124
- ) : (
125
- <input
126
- {...common}
127
- type={field.type === 'number' ? 'number' : field.type === 'email' ? 'email' : 'text'}
128
- value={value || ''}
129
- placeholder={field.placeholder || ''}
130
- min={field.min}
131
- onChange={(e) => onChange(field.type === 'number' ? e.target.value : e.target.value)}
132
- />
133
- )}
134
- {field.help ? <small className="form-help">{field.help}</small> : null}
135
- {error ? <small className="form-error">{error}</small> : null}
136
- </label>
137
- );
138
- }
139
-
140
- export default function NewCaseFlow({ definitions, projects, initialDefinitionSlug }) {
141
- const router = useRouter();
142
- const [definitionSlug, setDefinitionSlug] = useState(initialDefinitionSlug || definitions[0]?.slug || '');
143
- const [projectId, setProjectId] = useState(projects[0]?.id || 'personal');
144
- const [title, setTitle] = useState('');
145
- const [schema, setSchema] = useState(null);
146
- const [payload, setPayload] = useState({});
147
- const [errors, setErrors] = useState({});
148
- const [busy, setBusy] = useState(false);
149
- const [submitError, setSubmitError] = useState(null);
150
-
151
- useEffect(() => {
152
- if (!definitionSlug) return;
153
- let cancelled = false;
154
- fetch(`/api/processes/definitions/${definitionSlug}`)
155
- .then((r) => r.json())
156
- .then((data) => {
157
- if (cancelled) return;
158
- const s = data?.intake_form_schema || null;
159
- setSchema(s);
160
- setPayload(blankPayload(s));
161
- setErrors({});
162
- if (!title && data?.definition?.name) {
163
- setTitle(`${data.definition.name} — ${new Date().toISOString().slice(0, 10)}`);
164
- }
165
- })
166
- .catch(() => {
167
- if (cancelled) return;
168
- setSchema(null);
169
- });
170
- return () => { cancelled = true; };
171
- }, [definitionSlug]);
172
-
173
- const fields = useMemo(() => schema?.fields || [], [schema]);
174
-
175
- async function handleSubmit(e) {
176
- e.preventDefault();
177
- setSubmitError(null);
178
- const v = validatePayload(schema, payload);
179
- setErrors(v);
180
- if (Object.keys(v).length > 0) return;
181
-
182
- setBusy(true);
183
- try {
184
- const res = await fetch('/api/processes', {
185
- method: 'POST',
186
- headers: { 'content-type': 'application/json' },
187
- body: JSON.stringify({
188
- definition_slug: definitionSlug,
189
- project_id: projectId,
190
- title: title || null,
191
- intake_payload: { ...payload, share_capital_usd: Number(payload.share_capital_usd) || 0 },
192
- }),
193
- });
194
- const data = await res.json();
195
- if (!res.ok) throw new Error(data?.error || 'Failed to start case');
196
- router.push(`/workflows/${data.case.id}`);
197
- } catch (err) {
198
- setSubmitError(err?.message || String(err));
199
- } finally {
200
- setBusy(false);
201
- }
202
- }
203
-
204
- return (
205
- <form className="new-case-form" onSubmit={handleSubmit}>
206
- <section className="form-section">
207
- <h2>Process and project</h2>
208
- <div className="form-row">
209
- <label className="form-field">
210
- <span className="form-field-label">Process definition</span>
211
- <select value={definitionSlug} onChange={(e) => setDefinitionSlug(e.target.value)}>
212
- {definitions.map((d) => <option key={d.slug} value={d.slug}>{d.name}</option>)}
213
- </select>
214
- </label>
215
- <label className="form-field">
216
- <span className="form-field-label">Project</span>
217
- <select value={projectId} onChange={(e) => setProjectId(e.target.value)}>
218
- {projects.map((p) => <option key={p.id} value={p.id}>{p.name}</option>)}
219
- </select>
220
- </label>
221
- </div>
222
- <label className="form-field">
223
- <span className="form-field-label">Case title</span>
224
- <input
225
- type="text"
226
- value={title}
227
- onChange={(e) => setTitle(e.target.value)}
228
- placeholder="e.g. ADGM setup — Acme Holdings Ltd"
229
- />
230
- </label>
231
- </section>
232
-
233
- <section className="form-section">
234
- <h2>{schema?.title || 'Intake form'}</h2>
235
- {schema?.description ? <p className="muted">{schema.description}</p> : null}
236
- {fields.map((f) => (
237
- <Field
238
- key={f.name}
239
- field={f}
240
- value={payload[f.name]}
241
- error={errors[f.name]}
242
- onChange={(v) => setPayload((prev) => ({ ...prev, [f.name]: v }))}
243
- />
244
- ))}
245
- </section>
246
-
247
- {submitError ? <p className="form-error" role="alert">{submitError}</p> : null}
248
-
249
- <div className="form-actions">
250
- <button type="submit" className="btn-primary" disabled={busy}>
251
- {busy ? 'Starting case…' : 'Start case'}
252
- </button>
253
- </div>
254
- </form>
255
- );
256
- }
@@ -1,27 +0,0 @@
1
- import { AdminShell } from '../../components/admin/admin-page.jsx';
2
- import { listDefinitions } from '../../../lib/process/definitions.js';
3
- import { listProjects } from '../../../lib/projects.js';
4
- import NewCaseFlow from './new-case-flow.jsx';
5
-
6
- export const dynamic = 'force-dynamic';
7
-
8
- export default async function NewWorkflowCasePage({ searchParams }) {
9
- const params = (await searchParams) || {};
10
- const initialDefinitionSlug = typeof params.definition === 'string' ? params.definition : null;
11
- const definitions = listDefinitions();
12
- const projects = listProjects({ status: 'active' });
13
-
14
- return (
15
- <AdminShell
16
- kicker="Workflows"
17
- title="Start a new case"
18
- description="Pick a process, the project it belongs to, and fill out the intake form."
19
- >
20
- <NewCaseFlow
21
- definitions={definitions}
22
- projects={projects}
23
- initialDefinitionSlug={initialDefinitionSlug}
24
- />
25
- </AdminShell>
26
- );
27
- }