madarx 2.16.2 → 2.17.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 (1317) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +676 -669
  3. package/.next/standalone/.next/app-path-routes-manifest.json +77 -76
  4. package/.next/standalone/.next/build-manifest.json +5 -5
  5. package/.next/standalone/.next/prerender-manifest.json +21 -21
  6. package/.next/standalone/.next/routes-manifest.json +8 -0
  7. package/.next/standalone/.next/server/app/_not-found/page.js +1 -1
  8. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  9. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  10. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  11. package/.next/standalone/.next/server/app/_not-found.rsc +4 -4
  12. package/.next/standalone/.next/server/app/activity/page.js +1 -1
  13. package/.next/standalone/.next/server/app/activity/page.js.nft.json +1 -1
  14. package/.next/standalone/.next/server/app/activity/page_client-reference-manifest.js +1 -1
  15. package/.next/standalone/.next/server/app/admin/page.js +4 -4
  16. package/.next/standalone/.next/server/app/admin/page.js.nft.json +1 -1
  17. package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  18. package/.next/standalone/.next/server/app/agents/[id]/page.js +5 -5
  19. package/.next/standalone/.next/server/app/agents/[id]/page.js.nft.json +1 -1
  20. package/.next/standalone/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
  21. package/.next/standalone/.next/server/app/agents/page.js +1 -1
  22. package/.next/standalone/.next/server/app/agents/page.js.nft.json +1 -1
  23. package/.next/standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  24. package/.next/standalone/.next/server/app/api/activity/route_client-reference-manifest.js +1 -1
  25. package/.next/standalone/.next/server/app/api/admin/audit-export/route_client-reference-manifest.js +1 -1
  26. package/.next/standalone/.next/server/app/api/admin/share-links/route_client-reference-manifest.js +1 -1
  27. package/.next/standalone/.next/server/app/api/agent-memory/route_client-reference-manifest.js +1 -1
  28. package/.next/standalone/.next/server/app/api/agent-runs/[id]/cancel/route_client-reference-manifest.js +1 -1
  29. package/.next/standalone/.next/server/app/api/agent-runs/[id]/events/route_client-reference-manifest.js +1 -1
  30. package/.next/standalone/.next/server/app/api/agent-runs/[id]/log/route_client-reference-manifest.js +1 -1
  31. package/.next/standalone/.next/server/app/api/agent-runs/[id]/route_client-reference-manifest.js +1 -1
  32. package/.next/standalone/.next/server/app/api/agent-runs/route_client-reference-manifest.js +1 -1
  33. package/.next/standalone/.next/server/app/api/agents/[id]/active-run/route.js +1 -0
  34. package/.next/standalone/.next/server/app/api/agents/[id]/active-run/route.js.nft.json +1 -0
  35. package/.next/standalone/.next/server/app/api/agents/[id]/active-run/route_client-reference-manifest.js +1 -0
  36. package/.next/standalone/.next/server/app/api/agents/[id]/chain/route_client-reference-manifest.js +1 -1
  37. package/.next/standalone/.next/server/app/api/agents/[id]/memory/route_client-reference-manifest.js +1 -1
  38. package/.next/standalone/.next/server/app/api/agents/[id]/reports/route_client-reference-manifest.js +1 -1
  39. package/.next/standalone/.next/server/app/api/agents/[id]/run/route.js +1 -1
  40. package/.next/standalone/.next/server/app/api/agents/[id]/run/route.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/api/agents/[id]/run/route_client-reference-manifest.js +1 -1
  42. package/.next/standalone/.next/server/app/api/agents/[id]/skills/route_client-reference-manifest.js +1 -1
  43. package/.next/standalone/.next/server/app/api/agents/create/route_client-reference-manifest.js +1 -1
  44. package/.next/standalone/.next/server/app/api/agents/ops/route_client-reference-manifest.js +1 -1
  45. package/.next/standalone/.next/server/app/api/approvals/[id]/route_client-reference-manifest.js +1 -1
  46. package/.next/standalone/.next/server/app/api/approvals/route_client-reference-manifest.js +1 -1
  47. package/.next/standalone/.next/server/app/api/artifacts/[id]/acl/route_client-reference-manifest.js +1 -1
  48. package/.next/standalone/.next/server/app/api/artifacts/[id]/protect/route_client-reference-manifest.js +1 -1
  49. package/.next/standalone/.next/server/app/api/artifacts/[id]/raw/route_client-reference-manifest.js +1 -1
  50. package/.next/standalone/.next/server/app/api/artifacts/[id]/route_client-reference-manifest.js +1 -1
  51. package/.next/standalone/.next/server/app/api/artifacts/[id]/share-link/[linkId]/route_client-reference-manifest.js +1 -1
  52. package/.next/standalone/.next/server/app/api/artifacts/[id]/share-link/route_client-reference-manifest.js +1 -1
  53. package/.next/standalone/.next/server/app/api/artifacts/upload/route_client-reference-manifest.js +1 -1
  54. package/.next/standalone/.next/server/app/api/audit/list/route_client-reference-manifest.js +1 -1
  55. package/.next/standalone/.next/server/app/api/audit/search/route_client-reference-manifest.js +1 -1
  56. package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
  57. package/.next/standalone/.next/server/app/api/auth/config/route_client-reference-manifest.js +1 -1
  58. package/.next/standalone/.next/server/app/api/auth/join-bootstrap/route_client-reference-manifest.js +1 -1
  59. package/.next/standalone/.next/server/app/api/auth/session/route_client-reference-manifest.js +1 -1
  60. package/.next/standalone/.next/server/app/api/brand/route_client-reference-manifest.js +1 -1
  61. package/.next/standalone/.next/server/app/api/brand/share/route_client-reference-manifest.js +1 -1
  62. package/.next/standalone/.next/server/app/api/chat/sessions/[id]/route_client-reference-manifest.js +1 -1
  63. package/.next/standalone/.next/server/app/api/chat/sessions/route_client-reference-manifest.js +1 -1
  64. package/.next/standalone/.next/server/app/api/config/env/route_client-reference-manifest.js +1 -1
  65. package/.next/standalone/.next/server/app/api/config/route_client-reference-manifest.js +1 -1
  66. package/.next/standalone/.next/server/app/api/connections/[service]/route_client-reference-manifest.js +1 -1
  67. package/.next/standalone/.next/server/app/api/connections/[service]/verify/route_client-reference-manifest.js +1 -1
  68. package/.next/standalone/.next/server/app/api/connections/route_client-reference-manifest.js +1 -1
  69. package/.next/standalone/.next/server/app/api/cron/tick/route_client-reference-manifest.js +1 -1
  70. package/.next/standalone/.next/server/app/api/dashboard/spaces/[id]/move/route_client-reference-manifest.js +1 -1
  71. package/.next/standalone/.next/server/app/api/dashboard/spaces/[id]/route_client-reference-manifest.js +1 -1
  72. package/.next/standalone/.next/server/app/api/dashboard/spaces/[id]/share-link/[linkId]/route_client-reference-manifest.js +1 -1
  73. package/.next/standalone/.next/server/app/api/dashboard/spaces/[id]/share-link/route_client-reference-manifest.js +1 -1
  74. package/.next/standalone/.next/server/app/api/dashboard/spaces/import/route_client-reference-manifest.js +1 -1
  75. package/.next/standalone/.next/server/app/api/dashboard/spaces/route_client-reference-manifest.js +1 -1
  76. package/.next/standalone/.next/server/app/api/disk/files/[id]/blob/route_client-reference-manifest.js +1 -1
  77. package/.next/standalone/.next/server/app/api/disk/files/[id]/route_client-reference-manifest.js +1 -1
  78. package/.next/standalone/.next/server/app/api/disk/files/[id]/transcribe/route_client-reference-manifest.js +1 -1
  79. package/.next/standalone/.next/server/app/api/disk/files/route_client-reference-manifest.js +1 -1
  80. package/.next/standalone/.next/server/app/api/disk/folders/route_client-reference-manifest.js +1 -1
  81. package/.next/standalone/.next/server/app/api/events/since/[cursor]/route_client-reference-manifest.js +1 -1
  82. package/.next/standalone/.next/server/app/api/events/stream/route_client-reference-manifest.js +1 -1
  83. package/.next/standalone/.next/server/app/api/fs/create-folder/route_client-reference-manifest.js +1 -1
  84. package/.next/standalone/.next/server/app/api/fs/pick-folder/route_client-reference-manifest.js +1 -1
  85. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/blueprint/route_client-reference-manifest.js +1 -1
  86. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/diagnostic/route_client-reference-manifest.js +1 -1
  87. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/governance/route_client-reference-manifest.js +1 -1
  88. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/interview/route_client-reference-manifest.js +1 -1
  89. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/pilot/route_client-reference-manifest.js +1 -1
  90. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/quarterly/route_client-reference-manifest.js +1 -1
  91. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/route_client-reference-manifest.js +1 -1
  92. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/setup-package/route_client-reference-manifest.js +1 -1
  93. package/.next/standalone/.next/server/app/api/hail/engagements/route_client-reference-manifest.js +1 -1
  94. package/.next/standalone/.next/server/app/api/hail/interviews/[id]/responses/route_client-reference-manifest.js +1 -1
  95. package/.next/standalone/.next/server/app/api/hail/interviews/[id]/route_client-reference-manifest.js +1 -1
  96. package/.next/standalone/.next/server/app/api/hail/setup-packages/[id]/apply/route_client-reference-manifest.js +1 -1
  97. package/.next/standalone/.next/server/app/api/hail/setup-packages/validate/route_client-reference-manifest.js +1 -1
  98. package/.next/standalone/.next/server/app/api/heartbeat/tick/route_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
  140. package/.next/standalone/.next/server/app/api/processes/[id]/share-link/route_client-reference-manifest.js +1 -1
  141. package/.next/standalone/.next/server/app/api/processes/[id]/stages/[stageId]/override/route_client-reference-manifest.js +1 -1
  142. package/.next/standalone/.next/server/app/api/processes/[id]/stages/[stageId]/retry/route_client-reference-manifest.js +1 -1
  143. package/.next/standalone/.next/server/app/api/processes/[id]/stages/[stageId]/submit/route_client-reference-manifest.js +1 -1
  144. package/.next/standalone/.next/server/app/api/processes/definitions/[slug]/route_client-reference-manifest.js +1 -1
  145. package/.next/standalone/.next/server/app/api/processes/definitions/[slug]/settings/route_client-reference-manifest.js +1 -1
  146. package/.next/standalone/.next/server/app/api/processes/definitions/route_client-reference-manifest.js +1 -1
  147. package/.next/standalone/.next/server/app/api/processes/definitions/validate/route_client-reference-manifest.js +1 -1
  148. package/.next/standalone/.next/server/app/api/processes/route_client-reference-manifest.js +1 -1
  149. package/.next/standalone/.next/server/app/api/processes/start-and-route/route_client-reference-manifest.js +1 -1
  150. package/.next/standalone/.next/server/app/api/projects/[slug]/library/route_client-reference-manifest.js +1 -1
  151. package/.next/standalone/.next/server/app/api/projects/[slug]/route_client-reference-manifest.js +1 -1
  152. package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  153. package/.next/standalone/.next/server/app/api/runs/approve-claude-run/route_client-reference-manifest.js +1 -1
  154. package/.next/standalone/.next/server/app/api/runs/claude-code-dry-run/route_client-reference-manifest.js +1 -1
  155. package/.next/standalone/.next/server/app/api/runs/competitor-report/route_client-reference-manifest.js +1 -1
  156. package/.next/standalone/.next/server/app/api/runs/engine-ping/route_client-reference-manifest.js +1 -1
  157. package/.next/standalone/.next/server/app/api/runs/marketing-plan/route_client-reference-manifest.js +1 -1
  158. package/.next/standalone/.next/server/app/api/schedules/upsert/route_client-reference-manifest.js +1 -1
  159. package/.next/standalone/.next/server/app/api/secrets/[name]/route_client-reference-manifest.js +1 -1
  160. package/.next/standalone/.next/server/app/api/secrets/route_client-reference-manifest.js +1 -1
  161. package/.next/standalone/.next/server/app/api/settings/trust-mode/route_client-reference-manifest.js +1 -1
  162. package/.next/standalone/.next/server/app/api/share/[token]/otp/route_client-reference-manifest.js +1 -1
  163. package/.next/standalone/.next/server/app/api/share/[token]/route_client-reference-manifest.js +1 -1
  164. package/.next/standalone/.next/server/app/api/share/[token]/verify/route_client-reference-manifest.js +1 -1
  165. package/.next/standalone/.next/server/app/api/share/space/[token]/otp/route_client-reference-manifest.js +1 -1
  166. package/.next/standalone/.next/server/app/api/share/space/[token]/route_client-reference-manifest.js +1 -1
  167. package/.next/standalone/.next/server/app/api/share/space/[token]/verify/route_client-reference-manifest.js +1 -1
  168. package/.next/standalone/.next/server/app/api/shared/spaces/[id]/acl/route_client-reference-manifest.js +1 -1
  169. package/.next/standalone/.next/server/app/api/shared/spaces/publish/route_client-reference-manifest.js +1 -1
  170. package/.next/standalone/.next/server/app/api/shared/spaces/route_client-reference-manifest.js +1 -1
  171. package/.next/standalone/.next/server/app/api/shared/spaces/status/route_client-reference-manifest.js +1 -1
  172. package/.next/standalone/.next/server/app/api/shared/spaces/unpublish/route_client-reference-manifest.js +1 -1
  173. package/.next/standalone/.next/server/app/api/state/route_client-reference-manifest.js +1 -1
  174. package/.next/standalone/.next/server/app/api/system/update/route_client-reference-manifest.js +1 -1
  175. package/.next/standalone/.next/server/app/api/tasks/[id]/active-run/route_client-reference-manifest.js +1 -1
  176. package/.next/standalone/.next/server/app/api/tasks/[id]/attachments/route_client-reference-manifest.js +1 -1
  177. package/.next/standalone/.next/server/app/api/tasks/[id]/checklist/[itemId]/route_client-reference-manifest.js +1 -1
  178. package/.next/standalone/.next/server/app/api/tasks/[id]/checklist/route_client-reference-manifest.js +1 -1
  179. package/.next/standalone/.next/server/app/api/tasks/[id]/checkout/route_client-reference-manifest.js +1 -1
  180. package/.next/standalone/.next/server/app/api/tasks/[id]/children/route_client-reference-manifest.js +1 -1
  181. package/.next/standalone/.next/server/app/api/tasks/[id]/comments/route_client-reference-manifest.js +1 -1
  182. package/.next/standalone/.next/server/app/api/tasks/[id]/events/route_client-reference-manifest.js +1 -1
  183. package/.next/standalone/.next/server/app/api/tasks/[id]/live-runs/route_client-reference-manifest.js +1 -1
  184. package/.next/standalone/.next/server/app/api/tasks/[id]/release/route_client-reference-manifest.js +1 -1
  185. package/.next/standalone/.next/server/app/api/tasks/[id]/route_client-reference-manifest.js +1 -1
  186. package/.next/standalone/.next/server/app/api/tasks/route_client-reference-manifest.js +1 -1
  187. package/.next/standalone/.next/server/app/api/tool-allowlists/[id]/route_client-reference-manifest.js +1 -1
  188. package/.next/standalone/.next/server/app/api/tool-allowlists/route_client-reference-manifest.js +1 -1
  189. package/.next/standalone/.next/server/app/api/tool-egress/route_client-reference-manifest.js +1 -1
  190. package/.next/standalone/.next/server/app/api/tools/[name]/approve/route_client-reference-manifest.js +1 -1
  191. package/.next/standalone/.next/server/app/api/tools/[name]/route_client-reference-manifest.js +1 -1
  192. package/.next/standalone/.next/server/app/api/tools/route_client-reference-manifest.js +1 -1
  193. package/.next/standalone/.next/server/app/api/transcripts/route_client-reference-manifest.js +1 -1
  194. package/.next/standalone/.next/server/app/api/voice/providers/route_client-reference-manifest.js +1 -1
  195. package/.next/standalone/.next/server/app/api/voice/realtime/context/route_client-reference-manifest.js +1 -1
  196. package/.next/standalone/.next/server/app/api/voice/realtime/session/route_client-reference-manifest.js +1 -1
  197. package/.next/standalone/.next/server/app/api/voice/realtime/tool-result/route_client-reference-manifest.js +1 -1
  198. package/.next/standalone/.next/server/app/api/voice/realtime/tools/route_client-reference-manifest.js +1 -1
  199. package/.next/standalone/.next/server/app/api/voice/tts/route_client-reference-manifest.js +1 -1
  200. package/.next/standalone/.next/server/app/api/whatsapp/allowlist/route_client-reference-manifest.js +1 -1
  201. package/.next/standalone/.next/server/app/api/whatsapp/disconnect/route_client-reference-manifest.js +1 -1
  202. package/.next/standalone/.next/server/app/api/whatsapp/messages/route_client-reference-manifest.js +1 -1
  203. package/.next/standalone/.next/server/app/api/whatsapp/qr/route_client-reference-manifest.js +1 -1
  204. package/.next/standalone/.next/server/app/api/whatsapp/send/route_client-reference-manifest.js +1 -1
  205. package/.next/standalone/.next/server/app/api/whatsapp/status/route_client-reference-manifest.js +1 -1
  206. package/.next/standalone/.next/server/app/approvals/page.js +2 -2
  207. package/.next/standalone/.next/server/app/approvals/page.js.nft.json +1 -1
  208. package/.next/standalone/.next/server/app/approvals/page_client-reference-manifest.js +1 -1
  209. package/.next/standalone/.next/server/app/architecture/page.js +1 -1
  210. package/.next/standalone/.next/server/app/architecture/page.js.nft.json +1 -1
  211. package/.next/standalone/.next/server/app/architecture/page_client-reference-manifest.js +1 -1
  212. package/.next/standalone/.next/server/app/architecture.html +2 -2
  213. package/.next/standalone/.next/server/app/architecture.rsc +4 -4
  214. package/.next/standalone/.next/server/app/audit/live/page.js +1 -1
  215. package/.next/standalone/.next/server/app/audit/live/page.js.nft.json +1 -1
  216. package/.next/standalone/.next/server/app/audit/live/page_client-reference-manifest.js +1 -1
  217. package/.next/standalone/.next/server/app/audit/page.js +1 -1
  218. package/.next/standalone/.next/server/app/audit/page.js.nft.json +1 -1
  219. package/.next/standalone/.next/server/app/audit/page_client-reference-manifest.js +1 -1
  220. package/.next/standalone/.next/server/app/brand/page.js +1 -1
  221. package/.next/standalone/.next/server/app/brand/page.js.nft.json +1 -1
  222. package/.next/standalone/.next/server/app/brand/page_client-reference-manifest.js +1 -1
  223. package/.next/standalone/.next/server/app/brand.html +1 -1
  224. package/.next/standalone/.next/server/app/brand.rsc +4 -4
  225. package/.next/standalone/.next/server/app/disk/page.js +1 -1
  226. package/.next/standalone/.next/server/app/disk/page.js.nft.json +1 -1
  227. package/.next/standalone/.next/server/app/disk/page_client-reference-manifest.js +1 -1
  228. package/.next/standalone/.next/server/app/federated-ai/page.js +1 -1
  229. package/.next/standalone/.next/server/app/federated-ai/page.js.nft.json +1 -1
  230. package/.next/standalone/.next/server/app/federated-ai/page_client-reference-manifest.js +1 -1
  231. package/.next/standalone/.next/server/app/federated-ai.html +2 -2
  232. package/.next/standalone/.next/server/app/federated-ai.rsc +4 -4
  233. package/.next/standalone/.next/server/app/hail/[id]/governance/page.js +1 -1
  234. package/.next/standalone/.next/server/app/hail/[id]/governance/page.js.nft.json +1 -1
  235. package/.next/standalone/.next/server/app/hail/[id]/governance/page_client-reference-manifest.js +1 -1
  236. package/.next/standalone/.next/server/app/hail/[id]/interview/page.js +2 -2
  237. package/.next/standalone/.next/server/app/hail/[id]/interview/page.js.nft.json +1 -1
  238. package/.next/standalone/.next/server/app/hail/[id]/interview/page_client-reference-manifest.js +1 -1
  239. package/.next/standalone/.next/server/app/hail/[id]/page.js +1 -1
  240. package/.next/standalone/.next/server/app/hail/[id]/page.js.nft.json +1 -1
  241. package/.next/standalone/.next/server/app/hail/[id]/page_client-reference-manifest.js +1 -1
  242. package/.next/standalone/.next/server/app/hail/[id]/setup/page.js +1 -1
  243. package/.next/standalone/.next/server/app/hail/[id]/setup/page.js.nft.json +1 -1
  244. package/.next/standalone/.next/server/app/hail/[id]/setup/page_client-reference-manifest.js +1 -1
  245. package/.next/standalone/.next/server/app/hail/page.js +3 -3
  246. package/.next/standalone/.next/server/app/hail/page.js.nft.json +1 -1
  247. package/.next/standalone/.next/server/app/hail/page_client-reference-manifest.js +1 -1
  248. package/.next/standalone/.next/server/app/help/[slug]/page.js +1 -1
  249. package/.next/standalone/.next/server/app/help/[slug]/page.js.nft.json +1 -1
  250. package/.next/standalone/.next/server/app/help/[slug]/page_client-reference-manifest.js +1 -1
  251. package/.next/standalone/.next/server/app/help/page.js +1 -1
  252. package/.next/standalone/.next/server/app/help/page.js.nft.json +1 -1
  253. package/.next/standalone/.next/server/app/help/page_client-reference-manifest.js +1 -1
  254. package/.next/standalone/.next/server/app/index.html +2 -2
  255. package/.next/standalone/.next/server/app/index.rsc +5 -5
  256. package/.next/standalone/.next/server/app/join/page.js +1 -1
  257. package/.next/standalone/.next/server/app/join/page.js.nft.json +1 -1
  258. package/.next/standalone/.next/server/app/join/page_client-reference-manifest.js +1 -1
  259. package/.next/standalone/.next/server/app/join.html +1 -1
  260. package/.next/standalone/.next/server/app/join.rsc +4 -4
  261. package/.next/standalone/.next/server/app/login/page.js +1 -1
  262. package/.next/standalone/.next/server/app/login/page.js.nft.json +1 -1
  263. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  264. package/.next/standalone/.next/server/app/marketplace/page.js +2 -2
  265. package/.next/standalone/.next/server/app/marketplace/page.js.nft.json +1 -1
  266. package/.next/standalone/.next/server/app/marketplace/page_client-reference-manifest.js +1 -1
  267. package/.next/standalone/.next/server/app/mines/[projectId]/page.js +1 -1
  268. package/.next/standalone/.next/server/app/mines/[projectId]/page.js.nft.json +1 -1
  269. package/.next/standalone/.next/server/app/mines/[projectId]/page_client-reference-manifest.js +1 -1
  270. package/.next/standalone/.next/server/app/mines/[projectId]/results/page.js +1 -1
  271. package/.next/standalone/.next/server/app/mines/[projectId]/results/page.js.nft.json +1 -1
  272. package/.next/standalone/.next/server/app/mines/[projectId]/results/page_client-reference-manifest.js +1 -1
  273. package/.next/standalone/.next/server/app/mines/page.js +1 -1
  274. package/.next/standalone/.next/server/app/mines/page.js.nft.json +1 -1
  275. package/.next/standalone/.next/server/app/mines/page_client-reference-manifest.js +1 -1
  276. package/.next/standalone/.next/server/app/missions/page.js +2 -2
  277. package/.next/standalone/.next/server/app/missions/page.js.nft.json +1 -1
  278. package/.next/standalone/.next/server/app/missions/page_client-reference-manifest.js +1 -1
  279. package/.next/standalone/.next/server/app/onboarding/org/page.js +1 -1
  280. package/.next/standalone/.next/server/app/onboarding/org/page.js.nft.json +1 -1
  281. package/.next/standalone/.next/server/app/onboarding/org/page_client-reference-manifest.js +1 -1
  282. package/.next/standalone/.next/server/app/onboarding/page.js +1 -1
  283. package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
  284. package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  285. package/.next/standalone/.next/server/app/onboarding.html +2 -2
  286. package/.next/standalone/.next/server/app/onboarding.rsc +4 -4
  287. package/.next/standalone/.next/server/app/org/page.js +1 -1
  288. package/.next/standalone/.next/server/app/org/page.js.nft.json +1 -1
  289. package/.next/standalone/.next/server/app/org/page_client-reference-manifest.js +1 -1
  290. package/.next/standalone/.next/server/app/page.js +2 -2
  291. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  292. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  293. package/.next/standalone/.next/server/app/projects/[slug]/log/page.js +1 -1
  294. package/.next/standalone/.next/server/app/projects/[slug]/log/page.js.nft.json +1 -1
  295. package/.next/standalone/.next/server/app/projects/[slug]/log/page_client-reference-manifest.js +1 -1
  296. package/.next/standalone/.next/server/app/projects/[slug]/page.js +1 -1
  297. package/.next/standalone/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
  298. package/.next/standalone/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  299. package/.next/standalone/.next/server/app/projects/new/page.js +3 -3
  300. package/.next/standalone/.next/server/app/projects/new/page.js.nft.json +1 -1
  301. package/.next/standalone/.next/server/app/projects/new/page_client-reference-manifest.js +1 -1
  302. package/.next/standalone/.next/server/app/projects/new.html +2 -1
  303. package/.next/standalone/.next/server/app/projects/new.rsc +5 -5
  304. package/.next/standalone/.next/server/app/projects/page.js +14 -14
  305. package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
  306. package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  307. package/.next/standalone/.next/server/app/reports/[file]/route_client-reference-manifest.js +1 -1
  308. package/.next/standalone/.next/server/app/reports/page.js +1 -1
  309. package/.next/standalone/.next/server/app/reports/page.js.nft.json +1 -1
  310. package/.next/standalone/.next/server/app/reports/page_client-reference-manifest.js +1 -1
  311. package/.next/standalone/.next/server/app/runtime/page.js +1 -1
  312. package/.next/standalone/.next/server/app/runtime/page.js.nft.json +1 -1
  313. package/.next/standalone/.next/server/app/runtime/page_client-reference-manifest.js +1 -1
  314. package/.next/standalone/.next/server/app/schedules/page.js +2 -2
  315. package/.next/standalone/.next/server/app/schedules/page.js.nft.json +1 -1
  316. package/.next/standalone/.next/server/app/schedules/page_client-reference-manifest.js +1 -1
  317. package/.next/standalone/.next/server/app/settings/account/page.js +1 -1
  318. package/.next/standalone/.next/server/app/settings/account/page.js.nft.json +1 -1
  319. package/.next/standalone/.next/server/app/settings/account/page_client-reference-manifest.js +1 -1
  320. package/.next/standalone/.next/server/app/settings/advanced/page.js +1 -1
  321. package/.next/standalone/.next/server/app/settings/advanced/page.js.nft.json +1 -1
  322. package/.next/standalone/.next/server/app/settings/advanced/page_client-reference-manifest.js +1 -1
  323. package/.next/standalone/.next/server/app/settings/appearance/page.js +1 -1
  324. package/.next/standalone/.next/server/app/settings/appearance/page.js.nft.json +1 -1
  325. package/.next/standalone/.next/server/app/settings/appearance/page_client-reference-manifest.js +1 -1
  326. package/.next/standalone/.next/server/app/settings/brand/page.js +1 -1
  327. package/.next/standalone/.next/server/app/settings/brand/page.js.nft.json +1 -1
  328. package/.next/standalone/.next/server/app/settings/brand/page_client-reference-manifest.js +1 -1
  329. package/.next/standalone/.next/server/app/settings/brand.html +2 -2
  330. package/.next/standalone/.next/server/app/settings/brand.rsc +4 -4
  331. package/.next/standalone/.next/server/app/settings/connectors/page.js +1 -1
  332. package/.next/standalone/.next/server/app/settings/connectors/page.js.nft.json +1 -1
  333. package/.next/standalone/.next/server/app/settings/connectors/page_client-reference-manifest.js +1 -1
  334. package/.next/standalone/.next/server/app/settings/engines/page.js +1 -1
  335. package/.next/standalone/.next/server/app/settings/engines/page.js.nft.json +1 -1
  336. package/.next/standalone/.next/server/app/settings/engines/page_client-reference-manifest.js +1 -1
  337. package/.next/standalone/.next/server/app/settings/onboarding/page.js +1 -1
  338. package/.next/standalone/.next/server/app/settings/onboarding/page.js.nft.json +1 -1
  339. package/.next/standalone/.next/server/app/settings/onboarding/page_client-reference-manifest.js +1 -1
  340. package/.next/standalone/.next/server/app/settings/onboarding.html +2 -2
  341. package/.next/standalone/.next/server/app/settings/onboarding.rsc +4 -4
  342. package/.next/standalone/.next/server/app/settings/organization/page.js +1 -1
  343. package/.next/standalone/.next/server/app/settings/organization/page.js.nft.json +1 -1
  344. package/.next/standalone/.next/server/app/settings/organization/page_client-reference-manifest.js +1 -1
  345. package/.next/standalone/.next/server/app/settings/page.js +1 -1
  346. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  347. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  348. package/.next/standalone/.next/server/app/settings/runtime/page.js +1 -1
  349. package/.next/standalone/.next/server/app/settings/runtime/page.js.nft.json +1 -1
  350. package/.next/standalone/.next/server/app/settings/runtime/page_client-reference-manifest.js +1 -1
  351. package/.next/standalone/.next/server/app/settings/team/page.js +1 -1
  352. package/.next/standalone/.next/server/app/settings/team/page.js.nft.json +1 -1
  353. package/.next/standalone/.next/server/app/settings/team/page_client-reference-manifest.js +1 -1
  354. package/.next/standalone/.next/server/app/settings/tools/page.js +1 -1
  355. package/.next/standalone/.next/server/app/settings/tools/page.js.nft.json +1 -1
  356. package/.next/standalone/.next/server/app/settings/tools/page_client-reference-manifest.js +1 -1
  357. package/.next/standalone/.next/server/app/settings.html +2 -2
  358. package/.next/standalone/.next/server/app/settings.rsc +4 -4
  359. package/.next/standalone/.next/server/app/share/[token]/page.js +1 -1
  360. package/.next/standalone/.next/server/app/share/[token]/page.js.nft.json +1 -1
  361. package/.next/standalone/.next/server/app/share/[token]/page_client-reference-manifest.js +1 -1
  362. package/.next/standalone/.next/server/app/share/space/[token]/page.js +1 -1
  363. package/.next/standalone/.next/server/app/share/space/[token]/page.js.nft.json +1 -1
  364. package/.next/standalone/.next/server/app/share/space/[token]/page_client-reference-manifest.js +1 -1
  365. package/.next/standalone/.next/server/app/tasks/[id]/page.js +2 -2
  366. package/.next/standalone/.next/server/app/tasks/[id]/page.js.nft.json +1 -1
  367. package/.next/standalone/.next/server/app/tasks/[id]/page_client-reference-manifest.js +1 -1
  368. package/.next/standalone/.next/server/app/tasks/page.js +2 -2
  369. package/.next/standalone/.next/server/app/tasks/page.js.nft.json +1 -1
  370. package/.next/standalone/.next/server/app/tasks/page_client-reference-manifest.js +1 -1
  371. package/.next/standalone/.next/server/app/team/[agentId]/page.js +1 -1
  372. package/.next/standalone/.next/server/app/team/[agentId]/page.js.nft.json +1 -1
  373. package/.next/standalone/.next/server/app/team/[agentId]/page_client-reference-manifest.js +1 -1
  374. package/.next/standalone/.next/server/app/team/page.js +1 -1
  375. package/.next/standalone/.next/server/app/team/page.js.nft.json +1 -1
  376. package/.next/standalone/.next/server/app/team/page_client-reference-manifest.js +1 -1
  377. package/.next/standalone/.next/server/app/tools/page.js +1 -1
  378. package/.next/standalone/.next/server/app/tools/page.js.nft.json +1 -1
  379. package/.next/standalone/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  380. package/.next/standalone/.next/server/app/whatsapp/page.js +1 -1
  381. package/.next/standalone/.next/server/app/whatsapp/page.js.nft.json +1 -1
  382. package/.next/standalone/.next/server/app/whatsapp/page_client-reference-manifest.js +1 -1
  383. package/.next/standalone/.next/server/app/whatsapp.html +2 -2
  384. package/.next/standalone/.next/server/app/whatsapp.rsc +4 -4
  385. package/.next/standalone/.next/server/app/workflows/[caseId]/page.js +1 -1
  386. package/.next/standalone/.next/server/app/workflows/[caseId]/page.js.nft.json +1 -1
  387. package/.next/standalone/.next/server/app/workflows/[caseId]/page_client-reference-manifest.js +1 -1
  388. package/.next/standalone/.next/server/app/workflows/new/[caseId]/page.js +1 -1
  389. package/.next/standalone/.next/server/app/workflows/new/[caseId]/page.js.nft.json +1 -1
  390. package/.next/standalone/.next/server/app/workflows/new/[caseId]/page_client-reference-manifest.js +1 -1
  391. package/.next/standalone/.next/server/app/workflows/new/definition/page.js +1 -1
  392. package/.next/standalone/.next/server/app/workflows/new/definition/page.js.nft.json +1 -1
  393. package/.next/standalone/.next/server/app/workflows/new/definition/page_client-reference-manifest.js +1 -1
  394. package/.next/standalone/.next/server/app/workflows/page.js +1 -1
  395. package/.next/standalone/.next/server/app/workflows/page.js.nft.json +1 -1
  396. package/.next/standalone/.next/server/app/workflows/page_client-reference-manifest.js +1 -1
  397. package/.next/standalone/.next/server/app/workflows/share/[caseId]/page.js +1 -1
  398. package/.next/standalone/.next/server/app/workflows/share/[caseId]/page.js.nft.json +1 -1
  399. package/.next/standalone/.next/server/app/workflows/share/[caseId]/page_client-reference-manifest.js +1 -1
  400. package/.next/standalone/.next/server/app-paths-manifest.json +77 -76
  401. package/.next/standalone/.next/server/chunks/1699.js +27 -27
  402. package/.next/standalone/.next/server/chunks/3806.js +1 -0
  403. package/.next/standalone/.next/server/chunks/4740.js +1 -1
  404. package/.next/standalone/.next/server/chunks/6059.js +1 -1
  405. package/.next/standalone/.next/server/chunks/8194.js +1 -0
  406. package/.next/standalone/.next/server/chunks/9195.js +9 -0
  407. package/.next/standalone/.next/server/functions-config-manifest.json +40 -39
  408. package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
  409. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  410. package/.next/standalone/.next/server/pages/404.html +1 -1
  411. package/.next/standalone/.next/server/pages/500.html +1 -1
  412. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  413. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  414. package/.next/standalone/.next/static/chunks/3054-451abdd7b9afc2ac.js +1 -0
  415. package/.next/standalone/.next/static/chunks/app/activity/loading-17ae3509caaa1354.js +1 -0
  416. package/.next/standalone/.next/static/chunks/app/agents/[id]/loading-17ae3509caaa1354.js +1 -0
  417. package/.next/standalone/.next/static/chunks/app/agents/[id]/page-e4bcb0ace2900a11.js +1 -0
  418. package/.next/standalone/.next/static/chunks/app/agents/loading-17ae3509caaa1354.js +1 -0
  419. package/.next/standalone/.next/static/chunks/app/agents/page-47a00aa58327a35e.js +1 -0
  420. package/.next/standalone/.next/static/chunks/app/api/activity/route-17ae3509caaa1354.js +1 -0
  421. package/.next/standalone/.next/static/chunks/app/api/admin/audit-export/route-17ae3509caaa1354.js +1 -0
  422. package/.next/standalone/.next/static/chunks/app/api/admin/share-links/route-17ae3509caaa1354.js +1 -0
  423. package/.next/standalone/.next/static/chunks/app/api/agent-memory/route-17ae3509caaa1354.js +1 -0
  424. package/.next/standalone/.next/static/chunks/app/api/agent-runs/[id]/cancel/route-17ae3509caaa1354.js +1 -0
  425. package/.next/standalone/.next/static/chunks/app/api/agent-runs/[id]/events/route-17ae3509caaa1354.js +1 -0
  426. package/.next/standalone/.next/static/chunks/app/api/agent-runs/[id]/log/route-17ae3509caaa1354.js +1 -0
  427. package/.next/standalone/.next/static/chunks/app/api/agent-runs/[id]/route-17ae3509caaa1354.js +1 -0
  428. package/.next/standalone/.next/static/chunks/app/api/agent-runs/route-17ae3509caaa1354.js +1 -0
  429. package/.next/standalone/.next/static/chunks/app/api/agents/[id]/active-run/route-17ae3509caaa1354.js +1 -0
  430. package/.next/standalone/.next/static/chunks/app/api/agents/[id]/chain/route-17ae3509caaa1354.js +1 -0
  431. package/.next/standalone/.next/static/chunks/app/api/agents/[id]/memory/route-17ae3509caaa1354.js +1 -0
  432. package/.next/standalone/.next/static/chunks/app/api/agents/[id]/reports/route-17ae3509caaa1354.js +1 -0
  433. package/.next/standalone/.next/static/chunks/app/api/agents/[id]/run/route-17ae3509caaa1354.js +1 -0
  434. package/.next/standalone/.next/static/chunks/app/api/agents/[id]/skills/route-17ae3509caaa1354.js +1 -0
  435. package/.next/standalone/.next/static/chunks/app/api/agents/create/route-17ae3509caaa1354.js +1 -0
  436. package/.next/standalone/.next/static/chunks/app/api/agents/ops/route-17ae3509caaa1354.js +1 -0
  437. package/.next/standalone/.next/static/chunks/app/api/approvals/[id]/route-17ae3509caaa1354.js +1 -0
  438. package/.next/standalone/.next/static/chunks/app/api/approvals/route-17ae3509caaa1354.js +1 -0
  439. package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/acl/route-17ae3509caaa1354.js +1 -0
  440. package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/protect/route-17ae3509caaa1354.js +1 -0
  441. package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/raw/route-17ae3509caaa1354.js +1 -0
  442. package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/route-17ae3509caaa1354.js +1 -0
  443. package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/share-link/[linkId]/route-17ae3509caaa1354.js +1 -0
  444. package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/share-link/route-17ae3509caaa1354.js +1 -0
  445. package/.next/standalone/.next/static/chunks/app/api/artifacts/upload/route-17ae3509caaa1354.js +1 -0
  446. package/.next/standalone/.next/static/chunks/app/api/audit/list/route-17ae3509caaa1354.js +1 -0
  447. package/.next/standalone/.next/static/chunks/app/api/audit/search/route-17ae3509caaa1354.js +1 -0
  448. package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-17ae3509caaa1354.js +1 -0
  449. package/.next/standalone/.next/static/chunks/app/api/auth/config/route-17ae3509caaa1354.js +1 -0
  450. package/.next/standalone/.next/static/chunks/app/api/auth/join-bootstrap/route-17ae3509caaa1354.js +1 -0
  451. package/.next/standalone/.next/static/chunks/app/api/auth/session/route-17ae3509caaa1354.js +1 -0
  452. package/.next/standalone/.next/static/chunks/app/api/brand/route-17ae3509caaa1354.js +1 -0
  453. package/.next/standalone/.next/static/chunks/app/api/brand/share/route-17ae3509caaa1354.js +1 -0
  454. package/.next/standalone/.next/static/chunks/app/api/chat/sessions/[id]/route-17ae3509caaa1354.js +1 -0
  455. package/.next/standalone/.next/static/chunks/app/api/chat/sessions/route-17ae3509caaa1354.js +1 -0
  456. package/.next/standalone/.next/static/chunks/app/api/config/env/route-17ae3509caaa1354.js +1 -0
  457. package/.next/standalone/.next/static/chunks/app/api/config/route-17ae3509caaa1354.js +1 -0
  458. package/.next/standalone/.next/static/chunks/app/api/connections/[service]/route-17ae3509caaa1354.js +1 -0
  459. package/.next/standalone/.next/static/chunks/app/api/connections/[service]/verify/route-17ae3509caaa1354.js +1 -0
  460. package/.next/standalone/.next/static/chunks/app/api/connections/route-17ae3509caaa1354.js +1 -0
  461. package/.next/standalone/.next/static/chunks/app/api/cron/tick/route-17ae3509caaa1354.js +1 -0
  462. package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/[id]/move/route-17ae3509caaa1354.js +1 -0
  463. package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/[id]/route-17ae3509caaa1354.js +1 -0
  464. package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/[id]/share-link/[linkId]/route-17ae3509caaa1354.js +1 -0
  465. package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/[id]/share-link/route-17ae3509caaa1354.js +1 -0
  466. package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/import/route-17ae3509caaa1354.js +1 -0
  467. package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/route-17ae3509caaa1354.js +1 -0
  468. package/.next/standalone/.next/static/chunks/app/api/disk/files/[id]/blob/route-17ae3509caaa1354.js +1 -0
  469. package/.next/standalone/.next/static/chunks/app/api/disk/files/[id]/route-17ae3509caaa1354.js +1 -0
  470. package/.next/standalone/.next/static/chunks/app/api/disk/files/[id]/transcribe/route-17ae3509caaa1354.js +1 -0
  471. package/.next/standalone/.next/static/chunks/app/api/disk/files/route-17ae3509caaa1354.js +1 -0
  472. package/.next/standalone/.next/static/chunks/app/api/disk/folders/route-17ae3509caaa1354.js +1 -0
  473. package/.next/standalone/.next/static/chunks/app/api/events/since/[cursor]/route-17ae3509caaa1354.js +1 -0
  474. package/.next/standalone/.next/static/chunks/app/api/events/stream/route-17ae3509caaa1354.js +1 -0
  475. package/.next/standalone/.next/static/chunks/app/api/fs/create-folder/route-17ae3509caaa1354.js +1 -0
  476. package/.next/standalone/.next/static/chunks/app/api/fs/pick-folder/route-17ae3509caaa1354.js +1 -0
  477. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/blueprint/route-17ae3509caaa1354.js +1 -0
  478. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/diagnostic/route-17ae3509caaa1354.js +1 -0
  479. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/governance/route-17ae3509caaa1354.js +1 -0
  480. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/interview/route-17ae3509caaa1354.js +1 -0
  481. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/pilot/route-17ae3509caaa1354.js +1 -0
  482. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/quarterly/route-17ae3509caaa1354.js +1 -0
  483. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/route-17ae3509caaa1354.js +1 -0
  484. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/setup-package/route-17ae3509caaa1354.js +1 -0
  485. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/route-17ae3509caaa1354.js +1 -0
  486. package/.next/standalone/.next/static/chunks/app/api/hail/interviews/[id]/responses/route-17ae3509caaa1354.js +1 -0
  487. package/.next/standalone/.next/static/chunks/app/api/hail/interviews/[id]/route-17ae3509caaa1354.js +1 -0
  488. package/.next/standalone/.next/static/chunks/app/api/hail/setup-packages/[id]/apply/route-17ae3509caaa1354.js +1 -0
  489. package/.next/standalone/.next/static/chunks/app/api/hail/setup-packages/validate/route-17ae3509caaa1354.js +1 -0
  490. package/.next/standalone/.next/static/chunks/app/api/heartbeat/tick/route-17ae3509caaa1354.js +1 -0
  491. package/.next/standalone/.next/static/chunks/app/api/heartbeat/worker/route-17ae3509caaa1354.js +1 -0
  492. package/.next/standalone/.next/static/chunks/app/api/help/route-17ae3509caaa1354.js +1 -0
  493. package/.next/standalone/.next/static/chunks/app/api/hermes/jobs/[id]/events/route-17ae3509caaa1354.js +1 -0
  494. package/.next/standalone/.next/static/chunks/app/api/hermes/jobs/[id]/route-17ae3509caaa1354.js +1 -0
  495. package/.next/standalone/.next/static/chunks/app/api/hermes/jobs/route-17ae3509caaa1354.js +1 -0
  496. package/.next/standalone/.next/static/chunks/app/api/integrations/google/callback/route-17ae3509caaa1354.js +1 -0
  497. package/.next/standalone/.next/static/chunks/app/api/integrations/google/oauth/route-17ae3509caaa1354.js +1 -0
  498. package/.next/standalone/.next/static/chunks/app/api/marketplace/[id]/route-17ae3509caaa1354.js +1 -0
  499. package/.next/standalone/.next/static/chunks/app/api/marketplace/open-design/route-17ae3509caaa1354.js +1 -0
  500. package/.next/standalone/.next/static/chunks/app/api/marketplace/route-17ae3509caaa1354.js +1 -0
  501. package/.next/standalone/.next/static/chunks/app/api/mines/import-roots/route-17ae3509caaa1354.js +1 -0
  502. package/.next/standalone/.next/static/chunks/app/api/mines/portfolio/route-17ae3509caaa1354.js +1 -0
  503. package/.next/standalone/.next/static/chunks/app/api/mines/projects/[id]/chunks/route-17ae3509caaa1354.js +1 -0
  504. package/.next/standalone/.next/static/chunks/app/api/mines/projects/[id]/diligence/route-17ae3509caaa1354.js +1 -0
  505. package/.next/standalone/.next/static/chunks/app/api/mines/projects/[id]/import/route-17ae3509caaa1354.js +1 -0
  506. package/.next/standalone/.next/static/chunks/app/api/mines/projects/[id]/publish/route-17ae3509caaa1354.js +1 -0
  507. package/.next/standalone/.next/static/chunks/app/api/mines/projects/route-17ae3509caaa1354.js +1 -0
  508. package/.next/standalone/.next/static/chunks/app/api/missions/route-17ae3509caaa1354.js +1 -0
  509. package/.next/standalone/.next/static/chunks/app/api/models/route-17ae3509caaa1354.js +1 -0
  510. package/.next/standalone/.next/static/chunks/app/api/onboarding/blueprint/route-17ae3509caaa1354.js +1 -0
  511. package/.next/standalone/.next/static/chunks/app/api/onboarding/launch/route-17ae3509caaa1354.js +1 -0
  512. package/.next/standalone/.next/static/chunks/app/api/orchestrator/command/route-17ae3509caaa1354.js +1 -0
  513. package/.next/standalone/.next/static/chunks/app/api/orchestrator/stream/route-17ae3509caaa1354.js +1 -0
  514. package/.next/standalone/.next/static/chunks/app/api/orchestrator/upload/route-17ae3509caaa1354.js +1 -0
  515. package/.next/standalone/.next/static/chunks/app/api/org/route-17ae3509caaa1354.js +1 -0
  516. package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/invites/[inviteId]/route-17ae3509caaa1354.js +1 -0
  517. package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/invites/route-17ae3509caaa1354.js +1 -0
  518. package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/members/[userId]/role/route-17ae3509caaa1354.js +1 -0
  519. package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/members/[userId]/route-17ae3509caaa1354.js +1 -0
  520. package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/members/route-17ae3509caaa1354.js +1 -0
  521. package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/route-17ae3509caaa1354.js +1 -0
  522. package/.next/standalone/.next/static/chunks/app/api/orgs/invites/pending/route-17ae3509caaa1354.js +1 -0
  523. package/.next/standalone/.next/static/chunks/app/api/orgs/join/route-17ae3509caaa1354.js +1 -0
  524. package/.next/standalone/.next/static/chunks/app/api/orgs/join-complete/route-17ae3509caaa1354.js +1 -0
  525. package/.next/standalone/.next/static/chunks/app/api/orgs/route-17ae3509caaa1354.js +1 -0
  526. package/.next/standalone/.next/static/chunks/app/api/printing-press/clis/route-17ae3509caaa1354.js +1 -0
  527. package/.next/standalone/.next/static/chunks/app/api/printing-press/install/route-17ae3509caaa1354.js +1 -0
  528. package/.next/standalone/.next/static/chunks/app/api/printing-press/security-mode/route-17ae3509caaa1354.js +1 -0
  529. package/.next/standalone/.next/static/chunks/app/api/privacy/config/route-17ae3509caaa1354.js +1 -0
  530. package/.next/standalone/.next/static/chunks/app/api/privacy/verify/route-17ae3509caaa1354.js +1 -0
  531. package/.next/standalone/.next/static/chunks/app/api/processes/[id]/route-17ae3509caaa1354.js +1 -0
  532. package/.next/standalone/.next/static/chunks/app/api/processes/[id]/share-link/route-17ae3509caaa1354.js +1 -0
  533. package/.next/standalone/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/override/route-17ae3509caaa1354.js +1 -0
  534. package/.next/standalone/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/retry/route-17ae3509caaa1354.js +1 -0
  535. package/.next/standalone/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/submit/route-17ae3509caaa1354.js +1 -0
  536. package/.next/standalone/.next/static/chunks/app/api/processes/definitions/[slug]/route-17ae3509caaa1354.js +1 -0
  537. package/.next/standalone/.next/static/chunks/app/api/processes/definitions/[slug]/settings/route-17ae3509caaa1354.js +1 -0
  538. package/.next/standalone/.next/static/chunks/app/api/processes/definitions/route-17ae3509caaa1354.js +1 -0
  539. package/.next/standalone/.next/static/chunks/app/api/processes/definitions/validate/route-17ae3509caaa1354.js +1 -0
  540. package/.next/standalone/.next/static/chunks/app/api/processes/route-17ae3509caaa1354.js +1 -0
  541. package/.next/standalone/.next/static/chunks/app/api/processes/start-and-route/route-17ae3509caaa1354.js +1 -0
  542. package/.next/standalone/.next/static/chunks/app/api/projects/[slug]/library/route-17ae3509caaa1354.js +1 -0
  543. package/.next/standalone/.next/static/chunks/app/api/projects/[slug]/route-17ae3509caaa1354.js +1 -0
  544. package/.next/standalone/.next/static/chunks/app/api/projects/route-17ae3509caaa1354.js +1 -0
  545. package/.next/standalone/.next/static/chunks/app/api/runs/approve-claude-run/route-17ae3509caaa1354.js +1 -0
  546. package/.next/standalone/.next/static/chunks/app/api/runs/claude-code-dry-run/route-17ae3509caaa1354.js +1 -0
  547. package/.next/standalone/.next/static/chunks/app/api/runs/competitor-report/route-17ae3509caaa1354.js +1 -0
  548. package/.next/standalone/.next/static/chunks/app/api/runs/engine-ping/route-17ae3509caaa1354.js +1 -0
  549. package/.next/standalone/.next/static/chunks/app/api/runs/marketing-plan/route-17ae3509caaa1354.js +1 -0
  550. package/.next/standalone/.next/static/chunks/app/api/schedules/upsert/route-17ae3509caaa1354.js +1 -0
  551. package/.next/standalone/.next/static/chunks/app/api/secrets/[name]/route-17ae3509caaa1354.js +1 -0
  552. package/.next/standalone/.next/static/chunks/app/api/secrets/route-17ae3509caaa1354.js +1 -0
  553. package/.next/standalone/.next/static/chunks/app/api/settings/trust-mode/route-17ae3509caaa1354.js +1 -0
  554. package/.next/standalone/.next/static/chunks/app/api/share/[token]/otp/route-17ae3509caaa1354.js +1 -0
  555. package/.next/standalone/.next/static/chunks/app/api/share/[token]/route-17ae3509caaa1354.js +1 -0
  556. package/.next/standalone/.next/static/chunks/app/api/share/[token]/verify/route-17ae3509caaa1354.js +1 -0
  557. package/.next/standalone/.next/static/chunks/app/api/share/space/[token]/otp/route-17ae3509caaa1354.js +1 -0
  558. package/.next/standalone/.next/static/chunks/app/api/share/space/[token]/route-17ae3509caaa1354.js +1 -0
  559. package/.next/standalone/.next/static/chunks/app/api/share/space/[token]/verify/route-17ae3509caaa1354.js +1 -0
  560. package/.next/standalone/.next/static/chunks/app/api/shared/spaces/[id]/acl/route-17ae3509caaa1354.js +1 -0
  561. package/.next/standalone/.next/static/chunks/app/api/shared/spaces/publish/route-17ae3509caaa1354.js +1 -0
  562. package/.next/standalone/.next/static/chunks/app/api/shared/spaces/route-17ae3509caaa1354.js +1 -0
  563. package/.next/standalone/.next/static/chunks/app/api/shared/spaces/status/route-17ae3509caaa1354.js +1 -0
  564. package/.next/standalone/.next/static/chunks/app/api/shared/spaces/unpublish/route-17ae3509caaa1354.js +1 -0
  565. package/.next/standalone/.next/static/chunks/app/api/state/route-17ae3509caaa1354.js +1 -0
  566. package/.next/standalone/.next/static/chunks/app/api/system/update/route-17ae3509caaa1354.js +1 -0
  567. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/active-run/route-17ae3509caaa1354.js +1 -0
  568. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/attachments/route-17ae3509caaa1354.js +1 -0
  569. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/checklist/[itemId]/route-17ae3509caaa1354.js +1 -0
  570. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/checklist/route-17ae3509caaa1354.js +1 -0
  571. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/checkout/route-17ae3509caaa1354.js +1 -0
  572. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/children/route-17ae3509caaa1354.js +1 -0
  573. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/comments/route-17ae3509caaa1354.js +1 -0
  574. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/events/route-17ae3509caaa1354.js +1 -0
  575. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/live-runs/route-17ae3509caaa1354.js +1 -0
  576. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/release/route-17ae3509caaa1354.js +1 -0
  577. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/route-17ae3509caaa1354.js +1 -0
  578. package/.next/standalone/.next/static/chunks/app/api/tasks/route-17ae3509caaa1354.js +1 -0
  579. package/.next/standalone/.next/static/chunks/app/api/tool-allowlists/[id]/route-17ae3509caaa1354.js +1 -0
  580. package/.next/standalone/.next/static/chunks/app/api/tool-allowlists/route-17ae3509caaa1354.js +1 -0
  581. package/.next/standalone/.next/static/chunks/app/api/tool-egress/route-17ae3509caaa1354.js +1 -0
  582. package/.next/standalone/.next/static/chunks/app/api/tools/[name]/approve/route-17ae3509caaa1354.js +1 -0
  583. package/.next/standalone/.next/static/chunks/app/api/tools/[name]/route-17ae3509caaa1354.js +1 -0
  584. package/.next/standalone/.next/static/chunks/app/api/tools/route-17ae3509caaa1354.js +1 -0
  585. package/.next/standalone/.next/static/chunks/app/api/transcripts/route-17ae3509caaa1354.js +1 -0
  586. package/.next/standalone/.next/static/chunks/app/api/voice/providers/route-17ae3509caaa1354.js +1 -0
  587. package/.next/standalone/.next/static/chunks/app/api/voice/realtime/context/route-17ae3509caaa1354.js +1 -0
  588. package/.next/standalone/.next/static/chunks/app/api/voice/realtime/session/route-17ae3509caaa1354.js +1 -0
  589. package/.next/standalone/.next/static/chunks/app/api/voice/realtime/tool-result/route-17ae3509caaa1354.js +1 -0
  590. package/.next/standalone/.next/static/chunks/app/api/voice/realtime/tools/route-17ae3509caaa1354.js +1 -0
  591. package/.next/standalone/.next/static/chunks/app/api/voice/tts/route-17ae3509caaa1354.js +1 -0
  592. package/.next/standalone/.next/static/chunks/app/api/whatsapp/allowlist/route-17ae3509caaa1354.js +1 -0
  593. package/.next/standalone/.next/static/chunks/app/api/whatsapp/disconnect/route-17ae3509caaa1354.js +1 -0
  594. package/.next/standalone/.next/static/chunks/app/api/whatsapp/messages/route-17ae3509caaa1354.js +1 -0
  595. package/.next/standalone/.next/static/chunks/app/api/whatsapp/qr/route-17ae3509caaa1354.js +1 -0
  596. package/.next/standalone/.next/static/chunks/app/api/whatsapp/send/route-17ae3509caaa1354.js +1 -0
  597. package/.next/standalone/.next/static/chunks/app/api/whatsapp/status/route-17ae3509caaa1354.js +1 -0
  598. package/.next/standalone/.next/static/chunks/app/approvals/loading-17ae3509caaa1354.js +1 -0
  599. package/.next/standalone/.next/static/chunks/app/architecture/loading-17ae3509caaa1354.js +1 -0
  600. package/.next/standalone/.next/static/chunks/app/audit/loading-17ae3509caaa1354.js +1 -0
  601. package/.next/standalone/.next/static/chunks/app/brand/loading-17ae3509caaa1354.js +1 -0
  602. package/.next/standalone/.next/static/chunks/app/disk/loading-17ae3509caaa1354.js +1 -0
  603. package/.next/standalone/.next/static/chunks/app/federated-ai/loading-17ae3509caaa1354.js +1 -0
  604. package/.next/standalone/.next/static/chunks/app/help/loading-17ae3509caaa1354.js +1 -0
  605. package/.next/standalone/.next/static/chunks/app/layout-b7e1918b9125641e.js +1 -0
  606. package/.next/standalone/.next/static/chunks/app/loading-17ae3509caaa1354.js +1 -0
  607. package/.next/standalone/.next/static/chunks/app/login/page-d2298bc1803944ae.js +1 -0
  608. package/.next/standalone/.next/static/chunks/app/marketplace/loading-17ae3509caaa1354.js +1 -0
  609. package/.next/standalone/.next/static/chunks/app/missions/loading-17ae3509caaa1354.js +1 -0
  610. package/.next/standalone/.next/static/chunks/app/onboarding/loading-17ae3509caaa1354.js +1 -0
  611. package/.next/standalone/.next/static/chunks/app/org/loading-17ae3509caaa1354.js +1 -0
  612. package/.next/standalone/.next/static/chunks/app/page-887ef6f96897f78a.js +1 -0
  613. package/.next/standalone/.next/static/chunks/app/projects/[slug]/loading-17ae3509caaa1354.js +1 -0
  614. package/.next/standalone/.next/static/chunks/app/projects/loading-17ae3509caaa1354.js +1 -0
  615. package/.next/standalone/.next/static/chunks/app/projects/page-739d4cc74824d336.js +1 -0
  616. package/.next/standalone/.next/static/chunks/app/reports/[file]/route-17ae3509caaa1354.js +1 -0
  617. package/.next/standalone/.next/static/chunks/app/reports/loading-17ae3509caaa1354.js +1 -0
  618. package/.next/standalone/.next/static/chunks/app/runtime/loading-17ae3509caaa1354.js +1 -0
  619. package/.next/standalone/.next/static/chunks/app/schedules/loading-17ae3509caaa1354.js +1 -0
  620. package/.next/standalone/.next/static/chunks/app/settings/loading-17ae3509caaa1354.js +1 -0
  621. package/.next/standalone/.next/static/chunks/app/settings/page-17ae3509caaa1354.js +1 -0
  622. package/.next/standalone/.next/static/chunks/app/tasks/[id]/loading-17ae3509caaa1354.js +1 -0
  623. package/.next/standalone/.next/static/chunks/app/tasks/loading-17ae3509caaa1354.js +1 -0
  624. package/.next/standalone/.next/static/chunks/app/tools/loading-17ae3509caaa1354.js +1 -0
  625. package/.next/standalone/.next/static/chunks/app/tools/page-17ae3509caaa1354.js +1 -0
  626. package/.next/standalone/.next/static/chunks/app/whatsapp/loading-17ae3509caaa1354.js +1 -0
  627. package/.next/standalone/.next/static/chunks/app/workflows/share/[caseId]/page-17ae3509caaa1354.js +1 -0
  628. package/.next/standalone/.next/static/chunks/webpack-f916d679fe38a701.js +1 -0
  629. package/.next/standalone/.next/static/css/2587cd46c922a6d8.css +1 -0
  630. package/.next/standalone/CHANGELOG.md +22 -0
  631. package/.next/standalone/package.json +4 -2
  632. package/.next/static/chunks/3054-451abdd7b9afc2ac.js +1 -0
  633. package/.next/static/chunks/app/activity/loading-17ae3509caaa1354.js +1 -0
  634. package/.next/static/chunks/app/agents/[id]/loading-17ae3509caaa1354.js +1 -0
  635. package/.next/static/chunks/app/agents/[id]/page-e4bcb0ace2900a11.js +1 -0
  636. package/.next/static/chunks/app/agents/loading-17ae3509caaa1354.js +1 -0
  637. package/.next/static/chunks/app/agents/page-47a00aa58327a35e.js +1 -0
  638. package/.next/static/chunks/app/api/activity/route-17ae3509caaa1354.js +1 -0
  639. package/.next/static/chunks/app/api/admin/audit-export/route-17ae3509caaa1354.js +1 -0
  640. package/.next/static/chunks/app/api/admin/share-links/route-17ae3509caaa1354.js +1 -0
  641. package/.next/static/chunks/app/api/agent-memory/route-17ae3509caaa1354.js +1 -0
  642. package/.next/static/chunks/app/api/agent-runs/[id]/cancel/route-17ae3509caaa1354.js +1 -0
  643. package/.next/static/chunks/app/api/agent-runs/[id]/events/route-17ae3509caaa1354.js +1 -0
  644. package/.next/static/chunks/app/api/agent-runs/[id]/log/route-17ae3509caaa1354.js +1 -0
  645. package/.next/static/chunks/app/api/agent-runs/[id]/route-17ae3509caaa1354.js +1 -0
  646. package/.next/static/chunks/app/api/agent-runs/route-17ae3509caaa1354.js +1 -0
  647. package/.next/static/chunks/app/api/agents/[id]/active-run/route-17ae3509caaa1354.js +1 -0
  648. package/.next/static/chunks/app/api/agents/[id]/chain/route-17ae3509caaa1354.js +1 -0
  649. package/.next/static/chunks/app/api/agents/[id]/memory/route-17ae3509caaa1354.js +1 -0
  650. package/.next/static/chunks/app/api/agents/[id]/reports/route-17ae3509caaa1354.js +1 -0
  651. package/.next/static/chunks/app/api/agents/[id]/run/route-17ae3509caaa1354.js +1 -0
  652. package/.next/static/chunks/app/api/agents/[id]/skills/route-17ae3509caaa1354.js +1 -0
  653. package/.next/static/chunks/app/api/agents/create/route-17ae3509caaa1354.js +1 -0
  654. package/.next/static/chunks/app/api/agents/ops/route-17ae3509caaa1354.js +1 -0
  655. package/.next/static/chunks/app/api/approvals/[id]/route-17ae3509caaa1354.js +1 -0
  656. package/.next/static/chunks/app/api/approvals/route-17ae3509caaa1354.js +1 -0
  657. package/.next/static/chunks/app/api/artifacts/[id]/acl/route-17ae3509caaa1354.js +1 -0
  658. package/.next/static/chunks/app/api/artifacts/[id]/protect/route-17ae3509caaa1354.js +1 -0
  659. package/.next/static/chunks/app/api/artifacts/[id]/raw/route-17ae3509caaa1354.js +1 -0
  660. package/.next/static/chunks/app/api/artifacts/[id]/route-17ae3509caaa1354.js +1 -0
  661. package/.next/static/chunks/app/api/artifacts/[id]/share-link/[linkId]/route-17ae3509caaa1354.js +1 -0
  662. package/.next/static/chunks/app/api/artifacts/[id]/share-link/route-17ae3509caaa1354.js +1 -0
  663. package/.next/static/chunks/app/api/artifacts/upload/route-17ae3509caaa1354.js +1 -0
  664. package/.next/static/chunks/app/api/audit/list/route-17ae3509caaa1354.js +1 -0
  665. package/.next/static/chunks/app/api/audit/search/route-17ae3509caaa1354.js +1 -0
  666. package/.next/static/chunks/app/api/auth/callback/route-17ae3509caaa1354.js +1 -0
  667. package/.next/static/chunks/app/api/auth/config/route-17ae3509caaa1354.js +1 -0
  668. package/.next/static/chunks/app/api/auth/join-bootstrap/route-17ae3509caaa1354.js +1 -0
  669. package/.next/static/chunks/app/api/auth/session/route-17ae3509caaa1354.js +1 -0
  670. package/.next/static/chunks/app/api/brand/route-17ae3509caaa1354.js +1 -0
  671. package/.next/static/chunks/app/api/brand/share/route-17ae3509caaa1354.js +1 -0
  672. package/.next/static/chunks/app/api/chat/sessions/[id]/route-17ae3509caaa1354.js +1 -0
  673. package/.next/static/chunks/app/api/chat/sessions/route-17ae3509caaa1354.js +1 -0
  674. package/.next/static/chunks/app/api/config/env/route-17ae3509caaa1354.js +1 -0
  675. package/.next/static/chunks/app/api/config/route-17ae3509caaa1354.js +1 -0
  676. package/.next/static/chunks/app/api/connections/[service]/route-17ae3509caaa1354.js +1 -0
  677. package/.next/static/chunks/app/api/connections/[service]/verify/route-17ae3509caaa1354.js +1 -0
  678. package/.next/static/chunks/app/api/connections/route-17ae3509caaa1354.js +1 -0
  679. package/.next/static/chunks/app/api/cron/tick/route-17ae3509caaa1354.js +1 -0
  680. package/.next/static/chunks/app/api/dashboard/spaces/[id]/move/route-17ae3509caaa1354.js +1 -0
  681. package/.next/static/chunks/app/api/dashboard/spaces/[id]/route-17ae3509caaa1354.js +1 -0
  682. package/.next/static/chunks/app/api/dashboard/spaces/[id]/share-link/[linkId]/route-17ae3509caaa1354.js +1 -0
  683. package/.next/static/chunks/app/api/dashboard/spaces/[id]/share-link/route-17ae3509caaa1354.js +1 -0
  684. package/.next/static/chunks/app/api/dashboard/spaces/import/route-17ae3509caaa1354.js +1 -0
  685. package/.next/static/chunks/app/api/dashboard/spaces/route-17ae3509caaa1354.js +1 -0
  686. package/.next/static/chunks/app/api/disk/files/[id]/blob/route-17ae3509caaa1354.js +1 -0
  687. package/.next/static/chunks/app/api/disk/files/[id]/route-17ae3509caaa1354.js +1 -0
  688. package/.next/static/chunks/app/api/disk/files/[id]/transcribe/route-17ae3509caaa1354.js +1 -0
  689. package/.next/static/chunks/app/api/disk/files/route-17ae3509caaa1354.js +1 -0
  690. package/.next/static/chunks/app/api/disk/folders/route-17ae3509caaa1354.js +1 -0
  691. package/.next/static/chunks/app/api/events/since/[cursor]/route-17ae3509caaa1354.js +1 -0
  692. package/.next/static/chunks/app/api/events/stream/route-17ae3509caaa1354.js +1 -0
  693. package/.next/static/chunks/app/api/fs/create-folder/route-17ae3509caaa1354.js +1 -0
  694. package/.next/static/chunks/app/api/fs/pick-folder/route-17ae3509caaa1354.js +1 -0
  695. package/.next/static/chunks/app/api/hail/engagements/[id]/blueprint/route-17ae3509caaa1354.js +1 -0
  696. package/.next/static/chunks/app/api/hail/engagements/[id]/diagnostic/route-17ae3509caaa1354.js +1 -0
  697. package/.next/static/chunks/app/api/hail/engagements/[id]/governance/route-17ae3509caaa1354.js +1 -0
  698. package/.next/static/chunks/app/api/hail/engagements/[id]/interview/route-17ae3509caaa1354.js +1 -0
  699. package/.next/static/chunks/app/api/hail/engagements/[id]/pilot/route-17ae3509caaa1354.js +1 -0
  700. package/.next/static/chunks/app/api/hail/engagements/[id]/quarterly/route-17ae3509caaa1354.js +1 -0
  701. package/.next/static/chunks/app/api/hail/engagements/[id]/route-17ae3509caaa1354.js +1 -0
  702. package/.next/static/chunks/app/api/hail/engagements/[id]/setup-package/route-17ae3509caaa1354.js +1 -0
  703. package/.next/static/chunks/app/api/hail/engagements/route-17ae3509caaa1354.js +1 -0
  704. package/.next/static/chunks/app/api/hail/interviews/[id]/responses/route-17ae3509caaa1354.js +1 -0
  705. package/.next/static/chunks/app/api/hail/interviews/[id]/route-17ae3509caaa1354.js +1 -0
  706. package/.next/static/chunks/app/api/hail/setup-packages/[id]/apply/route-17ae3509caaa1354.js +1 -0
  707. package/.next/static/chunks/app/api/hail/setup-packages/validate/route-17ae3509caaa1354.js +1 -0
  708. package/.next/static/chunks/app/api/heartbeat/tick/route-17ae3509caaa1354.js +1 -0
  709. package/.next/static/chunks/app/api/heartbeat/worker/route-17ae3509caaa1354.js +1 -0
  710. package/.next/static/chunks/app/api/help/route-17ae3509caaa1354.js +1 -0
  711. package/.next/static/chunks/app/api/hermes/jobs/[id]/events/route-17ae3509caaa1354.js +1 -0
  712. package/.next/static/chunks/app/api/hermes/jobs/[id]/route-17ae3509caaa1354.js +1 -0
  713. package/.next/static/chunks/app/api/hermes/jobs/route-17ae3509caaa1354.js +1 -0
  714. package/.next/static/chunks/app/api/integrations/google/callback/route-17ae3509caaa1354.js +1 -0
  715. package/.next/static/chunks/app/api/integrations/google/oauth/route-17ae3509caaa1354.js +1 -0
  716. package/.next/static/chunks/app/api/marketplace/[id]/route-17ae3509caaa1354.js +1 -0
  717. package/.next/static/chunks/app/api/marketplace/open-design/route-17ae3509caaa1354.js +1 -0
  718. package/.next/static/chunks/app/api/marketplace/route-17ae3509caaa1354.js +1 -0
  719. package/.next/static/chunks/app/api/mines/import-roots/route-17ae3509caaa1354.js +1 -0
  720. package/.next/static/chunks/app/api/mines/portfolio/route-17ae3509caaa1354.js +1 -0
  721. package/.next/static/chunks/app/api/mines/projects/[id]/chunks/route-17ae3509caaa1354.js +1 -0
  722. package/.next/static/chunks/app/api/mines/projects/[id]/diligence/route-17ae3509caaa1354.js +1 -0
  723. package/.next/static/chunks/app/api/mines/projects/[id]/import/route-17ae3509caaa1354.js +1 -0
  724. package/.next/static/chunks/app/api/mines/projects/[id]/publish/route-17ae3509caaa1354.js +1 -0
  725. package/.next/static/chunks/app/api/mines/projects/route-17ae3509caaa1354.js +1 -0
  726. package/.next/static/chunks/app/api/missions/route-17ae3509caaa1354.js +1 -0
  727. package/.next/static/chunks/app/api/models/route-17ae3509caaa1354.js +1 -0
  728. package/.next/static/chunks/app/api/onboarding/blueprint/route-17ae3509caaa1354.js +1 -0
  729. package/.next/static/chunks/app/api/onboarding/launch/route-17ae3509caaa1354.js +1 -0
  730. package/.next/static/chunks/app/api/orchestrator/command/route-17ae3509caaa1354.js +1 -0
  731. package/.next/static/chunks/app/api/orchestrator/stream/route-17ae3509caaa1354.js +1 -0
  732. package/.next/static/chunks/app/api/orchestrator/upload/route-17ae3509caaa1354.js +1 -0
  733. package/.next/static/chunks/app/api/org/route-17ae3509caaa1354.js +1 -0
  734. package/.next/static/chunks/app/api/orgs/[id]/invites/[inviteId]/route-17ae3509caaa1354.js +1 -0
  735. package/.next/static/chunks/app/api/orgs/[id]/invites/route-17ae3509caaa1354.js +1 -0
  736. package/.next/static/chunks/app/api/orgs/[id]/members/[userId]/role/route-17ae3509caaa1354.js +1 -0
  737. package/.next/static/chunks/app/api/orgs/[id]/members/[userId]/route-17ae3509caaa1354.js +1 -0
  738. package/.next/static/chunks/app/api/orgs/[id]/members/route-17ae3509caaa1354.js +1 -0
  739. package/.next/static/chunks/app/api/orgs/[id]/route-17ae3509caaa1354.js +1 -0
  740. package/.next/static/chunks/app/api/orgs/invites/pending/route-17ae3509caaa1354.js +1 -0
  741. package/.next/static/chunks/app/api/orgs/join/route-17ae3509caaa1354.js +1 -0
  742. package/.next/static/chunks/app/api/orgs/join-complete/route-17ae3509caaa1354.js +1 -0
  743. package/.next/static/chunks/app/api/orgs/route-17ae3509caaa1354.js +1 -0
  744. package/.next/static/chunks/app/api/printing-press/clis/route-17ae3509caaa1354.js +1 -0
  745. package/.next/static/chunks/app/api/printing-press/install/route-17ae3509caaa1354.js +1 -0
  746. package/.next/static/chunks/app/api/printing-press/security-mode/route-17ae3509caaa1354.js +1 -0
  747. package/.next/static/chunks/app/api/privacy/config/route-17ae3509caaa1354.js +1 -0
  748. package/.next/static/chunks/app/api/privacy/verify/route-17ae3509caaa1354.js +1 -0
  749. package/.next/static/chunks/app/api/processes/[id]/route-17ae3509caaa1354.js +1 -0
  750. package/.next/static/chunks/app/api/processes/[id]/share-link/route-17ae3509caaa1354.js +1 -0
  751. package/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/override/route-17ae3509caaa1354.js +1 -0
  752. package/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/retry/route-17ae3509caaa1354.js +1 -0
  753. package/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/submit/route-17ae3509caaa1354.js +1 -0
  754. package/.next/static/chunks/app/api/processes/definitions/[slug]/route-17ae3509caaa1354.js +1 -0
  755. package/.next/static/chunks/app/api/processes/definitions/[slug]/settings/route-17ae3509caaa1354.js +1 -0
  756. package/.next/static/chunks/app/api/processes/definitions/route-17ae3509caaa1354.js +1 -0
  757. package/.next/static/chunks/app/api/processes/definitions/validate/route-17ae3509caaa1354.js +1 -0
  758. package/.next/static/chunks/app/api/processes/route-17ae3509caaa1354.js +1 -0
  759. package/.next/static/chunks/app/api/processes/start-and-route/route-17ae3509caaa1354.js +1 -0
  760. package/.next/static/chunks/app/api/projects/[slug]/library/route-17ae3509caaa1354.js +1 -0
  761. package/.next/static/chunks/app/api/projects/[slug]/route-17ae3509caaa1354.js +1 -0
  762. package/.next/static/chunks/app/api/projects/route-17ae3509caaa1354.js +1 -0
  763. package/.next/static/chunks/app/api/runs/approve-claude-run/route-17ae3509caaa1354.js +1 -0
  764. package/.next/static/chunks/app/api/runs/claude-code-dry-run/route-17ae3509caaa1354.js +1 -0
  765. package/.next/static/chunks/app/api/runs/competitor-report/route-17ae3509caaa1354.js +1 -0
  766. package/.next/static/chunks/app/api/runs/engine-ping/route-17ae3509caaa1354.js +1 -0
  767. package/.next/static/chunks/app/api/runs/marketing-plan/route-17ae3509caaa1354.js +1 -0
  768. package/.next/static/chunks/app/api/schedules/upsert/route-17ae3509caaa1354.js +1 -0
  769. package/.next/static/chunks/app/api/secrets/[name]/route-17ae3509caaa1354.js +1 -0
  770. package/.next/static/chunks/app/api/secrets/route-17ae3509caaa1354.js +1 -0
  771. package/.next/static/chunks/app/api/settings/trust-mode/route-17ae3509caaa1354.js +1 -0
  772. package/.next/static/chunks/app/api/share/[token]/otp/route-17ae3509caaa1354.js +1 -0
  773. package/.next/static/chunks/app/api/share/[token]/route-17ae3509caaa1354.js +1 -0
  774. package/.next/static/chunks/app/api/share/[token]/verify/route-17ae3509caaa1354.js +1 -0
  775. package/.next/static/chunks/app/api/share/space/[token]/otp/route-17ae3509caaa1354.js +1 -0
  776. package/.next/static/chunks/app/api/share/space/[token]/route-17ae3509caaa1354.js +1 -0
  777. package/.next/static/chunks/app/api/share/space/[token]/verify/route-17ae3509caaa1354.js +1 -0
  778. package/.next/static/chunks/app/api/shared/spaces/[id]/acl/route-17ae3509caaa1354.js +1 -0
  779. package/.next/static/chunks/app/api/shared/spaces/publish/route-17ae3509caaa1354.js +1 -0
  780. package/.next/static/chunks/app/api/shared/spaces/route-17ae3509caaa1354.js +1 -0
  781. package/.next/static/chunks/app/api/shared/spaces/status/route-17ae3509caaa1354.js +1 -0
  782. package/.next/static/chunks/app/api/shared/spaces/unpublish/route-17ae3509caaa1354.js +1 -0
  783. package/.next/static/chunks/app/api/state/route-17ae3509caaa1354.js +1 -0
  784. package/.next/static/chunks/app/api/system/update/route-17ae3509caaa1354.js +1 -0
  785. package/.next/static/chunks/app/api/tasks/[id]/active-run/route-17ae3509caaa1354.js +1 -0
  786. package/.next/static/chunks/app/api/tasks/[id]/attachments/route-17ae3509caaa1354.js +1 -0
  787. package/.next/static/chunks/app/api/tasks/[id]/checklist/[itemId]/route-17ae3509caaa1354.js +1 -0
  788. package/.next/static/chunks/app/api/tasks/[id]/checklist/route-17ae3509caaa1354.js +1 -0
  789. package/.next/static/chunks/app/api/tasks/[id]/checkout/route-17ae3509caaa1354.js +1 -0
  790. package/.next/static/chunks/app/api/tasks/[id]/children/route-17ae3509caaa1354.js +1 -0
  791. package/.next/static/chunks/app/api/tasks/[id]/comments/route-17ae3509caaa1354.js +1 -0
  792. package/.next/static/chunks/app/api/tasks/[id]/events/route-17ae3509caaa1354.js +1 -0
  793. package/.next/static/chunks/app/api/tasks/[id]/live-runs/route-17ae3509caaa1354.js +1 -0
  794. package/.next/static/chunks/app/api/tasks/[id]/release/route-17ae3509caaa1354.js +1 -0
  795. package/.next/static/chunks/app/api/tasks/[id]/route-17ae3509caaa1354.js +1 -0
  796. package/.next/static/chunks/app/api/tasks/route-17ae3509caaa1354.js +1 -0
  797. package/.next/static/chunks/app/api/tool-allowlists/[id]/route-17ae3509caaa1354.js +1 -0
  798. package/.next/static/chunks/app/api/tool-allowlists/route-17ae3509caaa1354.js +1 -0
  799. package/.next/static/chunks/app/api/tool-egress/route-17ae3509caaa1354.js +1 -0
  800. package/.next/static/chunks/app/api/tools/[name]/approve/route-17ae3509caaa1354.js +1 -0
  801. package/.next/static/chunks/app/api/tools/[name]/route-17ae3509caaa1354.js +1 -0
  802. package/.next/static/chunks/app/api/tools/route-17ae3509caaa1354.js +1 -0
  803. package/.next/static/chunks/app/api/transcripts/route-17ae3509caaa1354.js +1 -0
  804. package/.next/static/chunks/app/api/voice/providers/route-17ae3509caaa1354.js +1 -0
  805. package/.next/static/chunks/app/api/voice/realtime/context/route-17ae3509caaa1354.js +1 -0
  806. package/.next/static/chunks/app/api/voice/realtime/session/route-17ae3509caaa1354.js +1 -0
  807. package/.next/static/chunks/app/api/voice/realtime/tool-result/route-17ae3509caaa1354.js +1 -0
  808. package/.next/static/chunks/app/api/voice/realtime/tools/route-17ae3509caaa1354.js +1 -0
  809. package/.next/static/chunks/app/api/voice/tts/route-17ae3509caaa1354.js +1 -0
  810. package/.next/static/chunks/app/api/whatsapp/allowlist/route-17ae3509caaa1354.js +1 -0
  811. package/.next/static/chunks/app/api/whatsapp/disconnect/route-17ae3509caaa1354.js +1 -0
  812. package/.next/static/chunks/app/api/whatsapp/messages/route-17ae3509caaa1354.js +1 -0
  813. package/.next/static/chunks/app/api/whatsapp/qr/route-17ae3509caaa1354.js +1 -0
  814. package/.next/static/chunks/app/api/whatsapp/send/route-17ae3509caaa1354.js +1 -0
  815. package/.next/static/chunks/app/api/whatsapp/status/route-17ae3509caaa1354.js +1 -0
  816. package/.next/static/chunks/app/approvals/loading-17ae3509caaa1354.js +1 -0
  817. package/.next/static/chunks/app/architecture/loading-17ae3509caaa1354.js +1 -0
  818. package/.next/static/chunks/app/audit/loading-17ae3509caaa1354.js +1 -0
  819. package/.next/static/chunks/app/brand/loading-17ae3509caaa1354.js +1 -0
  820. package/.next/static/chunks/app/disk/loading-17ae3509caaa1354.js +1 -0
  821. package/.next/static/chunks/app/federated-ai/loading-17ae3509caaa1354.js +1 -0
  822. package/.next/static/chunks/app/help/loading-17ae3509caaa1354.js +1 -0
  823. package/.next/static/chunks/app/layout-b7e1918b9125641e.js +1 -0
  824. package/.next/static/chunks/app/loading-17ae3509caaa1354.js +1 -0
  825. package/.next/static/chunks/app/login/page-d2298bc1803944ae.js +1 -0
  826. package/.next/static/chunks/app/marketplace/loading-17ae3509caaa1354.js +1 -0
  827. package/.next/static/chunks/app/missions/loading-17ae3509caaa1354.js +1 -0
  828. package/.next/static/chunks/app/onboarding/loading-17ae3509caaa1354.js +1 -0
  829. package/.next/static/chunks/app/org/loading-17ae3509caaa1354.js +1 -0
  830. package/.next/static/chunks/app/page-887ef6f96897f78a.js +1 -0
  831. package/.next/static/chunks/app/projects/[slug]/loading-17ae3509caaa1354.js +1 -0
  832. package/.next/static/chunks/app/projects/loading-17ae3509caaa1354.js +1 -0
  833. package/.next/static/chunks/app/projects/page-739d4cc74824d336.js +1 -0
  834. package/.next/static/chunks/app/reports/[file]/route-17ae3509caaa1354.js +1 -0
  835. package/.next/static/chunks/app/reports/loading-17ae3509caaa1354.js +1 -0
  836. package/.next/static/chunks/app/runtime/loading-17ae3509caaa1354.js +1 -0
  837. package/.next/static/chunks/app/schedules/loading-17ae3509caaa1354.js +1 -0
  838. package/.next/static/chunks/app/settings/loading-17ae3509caaa1354.js +1 -0
  839. package/.next/static/chunks/app/settings/page-17ae3509caaa1354.js +1 -0
  840. package/.next/static/chunks/app/tasks/[id]/loading-17ae3509caaa1354.js +1 -0
  841. package/.next/static/chunks/app/tasks/loading-17ae3509caaa1354.js +1 -0
  842. package/.next/static/chunks/app/tools/loading-17ae3509caaa1354.js +1 -0
  843. package/.next/static/chunks/app/tools/page-17ae3509caaa1354.js +1 -0
  844. package/.next/static/chunks/app/whatsapp/loading-17ae3509caaa1354.js +1 -0
  845. package/.next/static/chunks/app/workflows/share/[caseId]/page-17ae3509caaa1354.js +1 -0
  846. package/.next/static/chunks/webpack-f916d679fe38a701.js +1 -0
  847. package/.next/static/css/2587cd46c922a6d8.css +1 -0
  848. package/CHANGELOG.md +22 -0
  849. package/ai-docs/api-surface.md +1 -1
  850. package/ai-docs/key-constraints.md +1 -1
  851. package/app/agents/[id]/agent-activity-feed.tsx +43 -7
  852. package/app/agents/[id]/agent-detail-simple.tsx +1 -1
  853. package/app/agents/agent-run-button.jsx +13 -0
  854. package/app/api/agents/[id]/active-run/route.js +23 -0
  855. package/app/api/agents/[id]/run/route.js +27 -8
  856. package/app/components/app-chrome.jsx +2 -0
  857. package/app/components/app-topbar.jsx +100 -0
  858. package/app/components/dashboard/canvas-section.jsx +73 -53
  859. package/app/components/smart-search.jsx +11 -0
  860. package/app/globals.css +119 -9
  861. package/app/login/login-client.jsx +31 -24
  862. package/lib/active-runs.js +33 -0
  863. package/lib/agent-config.js +1 -8
  864. package/lib/agent-engines.js +7 -1
  865. package/lib/agent-runner.js +36 -0
  866. package/lib/auth.js +21 -8
  867. package/lib/heartbeat-worker.js +5 -1
  868. package/lib/tts.js +75 -5
  869. package/package.json +4 -2
  870. package/scripts/misotts-local-server.py +150 -0
  871. package/scripts/prepack-guard.mjs +79 -0
  872. package/.next/standalone/.next/server/chunks/3676.js +0 -9
  873. package/.next/standalone/.next/server/chunks/5093.js +0 -1
  874. package/.next/standalone/.next/server/chunks/5875.js +0 -1
  875. package/.next/standalone/.next/static/chunks/7597-9d44318ae8a6db9b.js +0 -1
  876. package/.next/standalone/.next/static/chunks/app/activity/loading-ac9aed5c6e27d434.js +0 -1
  877. package/.next/standalone/.next/static/chunks/app/agents/[id]/loading-ac9aed5c6e27d434.js +0 -1
  878. package/.next/standalone/.next/static/chunks/app/agents/[id]/page-474f640e84f7b4b5.js +0 -1
  879. package/.next/standalone/.next/static/chunks/app/agents/loading-ac9aed5c6e27d434.js +0 -1
  880. package/.next/standalone/.next/static/chunks/app/agents/page-b79b611acd56712b.js +0 -1
  881. package/.next/standalone/.next/static/chunks/app/api/activity/route-ac9aed5c6e27d434.js +0 -1
  882. package/.next/standalone/.next/static/chunks/app/api/admin/audit-export/route-ac9aed5c6e27d434.js +0 -1
  883. package/.next/standalone/.next/static/chunks/app/api/admin/share-links/route-ac9aed5c6e27d434.js +0 -1
  884. package/.next/standalone/.next/static/chunks/app/api/agent-memory/route-ac9aed5c6e27d434.js +0 -1
  885. package/.next/standalone/.next/static/chunks/app/api/agent-runs/[id]/cancel/route-ac9aed5c6e27d434.js +0 -1
  886. package/.next/standalone/.next/static/chunks/app/api/agent-runs/[id]/events/route-ac9aed5c6e27d434.js +0 -1
  887. package/.next/standalone/.next/static/chunks/app/api/agent-runs/[id]/log/route-ac9aed5c6e27d434.js +0 -1
  888. package/.next/standalone/.next/static/chunks/app/api/agent-runs/[id]/route-ac9aed5c6e27d434.js +0 -1
  889. package/.next/standalone/.next/static/chunks/app/api/agent-runs/route-ac9aed5c6e27d434.js +0 -1
  890. package/.next/standalone/.next/static/chunks/app/api/agents/[id]/chain/route-ac9aed5c6e27d434.js +0 -1
  891. package/.next/standalone/.next/static/chunks/app/api/agents/[id]/memory/route-ac9aed5c6e27d434.js +0 -1
  892. package/.next/standalone/.next/static/chunks/app/api/agents/[id]/reports/route-ac9aed5c6e27d434.js +0 -1
  893. package/.next/standalone/.next/static/chunks/app/api/agents/[id]/run/route-ac9aed5c6e27d434.js +0 -1
  894. package/.next/standalone/.next/static/chunks/app/api/agents/[id]/skills/route-ac9aed5c6e27d434.js +0 -1
  895. package/.next/standalone/.next/static/chunks/app/api/agents/create/route-ac9aed5c6e27d434.js +0 -1
  896. package/.next/standalone/.next/static/chunks/app/api/agents/ops/route-ac9aed5c6e27d434.js +0 -1
  897. package/.next/standalone/.next/static/chunks/app/api/approvals/[id]/route-ac9aed5c6e27d434.js +0 -1
  898. package/.next/standalone/.next/static/chunks/app/api/approvals/route-ac9aed5c6e27d434.js +0 -1
  899. package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/acl/route-ac9aed5c6e27d434.js +0 -1
  900. package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/protect/route-ac9aed5c6e27d434.js +0 -1
  901. package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/raw/route-ac9aed5c6e27d434.js +0 -1
  902. package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/route-ac9aed5c6e27d434.js +0 -1
  903. package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/share-link/[linkId]/route-ac9aed5c6e27d434.js +0 -1
  904. package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/share-link/route-ac9aed5c6e27d434.js +0 -1
  905. package/.next/standalone/.next/static/chunks/app/api/artifacts/upload/route-ac9aed5c6e27d434.js +0 -1
  906. package/.next/standalone/.next/static/chunks/app/api/audit/list/route-ac9aed5c6e27d434.js +0 -1
  907. package/.next/standalone/.next/static/chunks/app/api/audit/search/route-ac9aed5c6e27d434.js +0 -1
  908. package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-ac9aed5c6e27d434.js +0 -1
  909. package/.next/standalone/.next/static/chunks/app/api/auth/config/route-ac9aed5c6e27d434.js +0 -1
  910. package/.next/standalone/.next/static/chunks/app/api/auth/join-bootstrap/route-ac9aed5c6e27d434.js +0 -1
  911. package/.next/standalone/.next/static/chunks/app/api/auth/session/route-ac9aed5c6e27d434.js +0 -1
  912. package/.next/standalone/.next/static/chunks/app/api/brand/route-ac9aed5c6e27d434.js +0 -1
  913. package/.next/standalone/.next/static/chunks/app/api/brand/share/route-ac9aed5c6e27d434.js +0 -1
  914. package/.next/standalone/.next/static/chunks/app/api/chat/sessions/[id]/route-ac9aed5c6e27d434.js +0 -1
  915. package/.next/standalone/.next/static/chunks/app/api/chat/sessions/route-ac9aed5c6e27d434.js +0 -1
  916. package/.next/standalone/.next/static/chunks/app/api/config/env/route-ac9aed5c6e27d434.js +0 -1
  917. package/.next/standalone/.next/static/chunks/app/api/config/route-ac9aed5c6e27d434.js +0 -1
  918. package/.next/standalone/.next/static/chunks/app/api/connections/[service]/route-ac9aed5c6e27d434.js +0 -1
  919. package/.next/standalone/.next/static/chunks/app/api/connections/[service]/verify/route-ac9aed5c6e27d434.js +0 -1
  920. package/.next/standalone/.next/static/chunks/app/api/connections/route-ac9aed5c6e27d434.js +0 -1
  921. package/.next/standalone/.next/static/chunks/app/api/cron/tick/route-ac9aed5c6e27d434.js +0 -1
  922. package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/[id]/move/route-ac9aed5c6e27d434.js +0 -1
  923. package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/[id]/route-ac9aed5c6e27d434.js +0 -1
  924. package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/[id]/share-link/[linkId]/route-ac9aed5c6e27d434.js +0 -1
  925. package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/[id]/share-link/route-ac9aed5c6e27d434.js +0 -1
  926. package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/import/route-ac9aed5c6e27d434.js +0 -1
  927. package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/route-ac9aed5c6e27d434.js +0 -1
  928. package/.next/standalone/.next/static/chunks/app/api/disk/files/[id]/blob/route-ac9aed5c6e27d434.js +0 -1
  929. package/.next/standalone/.next/static/chunks/app/api/disk/files/[id]/route-ac9aed5c6e27d434.js +0 -1
  930. package/.next/standalone/.next/static/chunks/app/api/disk/files/[id]/transcribe/route-ac9aed5c6e27d434.js +0 -1
  931. package/.next/standalone/.next/static/chunks/app/api/disk/files/route-ac9aed5c6e27d434.js +0 -1
  932. package/.next/standalone/.next/static/chunks/app/api/disk/folders/route-ac9aed5c6e27d434.js +0 -1
  933. package/.next/standalone/.next/static/chunks/app/api/events/since/[cursor]/route-ac9aed5c6e27d434.js +0 -1
  934. package/.next/standalone/.next/static/chunks/app/api/events/stream/route-ac9aed5c6e27d434.js +0 -1
  935. package/.next/standalone/.next/static/chunks/app/api/fs/create-folder/route-ac9aed5c6e27d434.js +0 -1
  936. package/.next/standalone/.next/static/chunks/app/api/fs/pick-folder/route-ac9aed5c6e27d434.js +0 -1
  937. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/blueprint/route-ac9aed5c6e27d434.js +0 -1
  938. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/diagnostic/route-ac9aed5c6e27d434.js +0 -1
  939. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/governance/route-ac9aed5c6e27d434.js +0 -1
  940. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/interview/route-ac9aed5c6e27d434.js +0 -1
  941. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/pilot/route-ac9aed5c6e27d434.js +0 -1
  942. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/quarterly/route-ac9aed5c6e27d434.js +0 -1
  943. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/route-ac9aed5c6e27d434.js +0 -1
  944. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/setup-package/route-ac9aed5c6e27d434.js +0 -1
  945. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/route-ac9aed5c6e27d434.js +0 -1
  946. package/.next/standalone/.next/static/chunks/app/api/hail/interviews/[id]/responses/route-ac9aed5c6e27d434.js +0 -1
  947. package/.next/standalone/.next/static/chunks/app/api/hail/interviews/[id]/route-ac9aed5c6e27d434.js +0 -1
  948. package/.next/standalone/.next/static/chunks/app/api/hail/setup-packages/[id]/apply/route-ac9aed5c6e27d434.js +0 -1
  949. package/.next/standalone/.next/static/chunks/app/api/hail/setup-packages/validate/route-ac9aed5c6e27d434.js +0 -1
  950. package/.next/standalone/.next/static/chunks/app/api/heartbeat/tick/route-ac9aed5c6e27d434.js +0 -1
  951. package/.next/standalone/.next/static/chunks/app/api/heartbeat/worker/route-ac9aed5c6e27d434.js +0 -1
  952. package/.next/standalone/.next/static/chunks/app/api/help/route-ac9aed5c6e27d434.js +0 -1
  953. package/.next/standalone/.next/static/chunks/app/api/hermes/jobs/[id]/events/route-ac9aed5c6e27d434.js +0 -1
  954. package/.next/standalone/.next/static/chunks/app/api/hermes/jobs/[id]/route-ac9aed5c6e27d434.js +0 -1
  955. package/.next/standalone/.next/static/chunks/app/api/hermes/jobs/route-ac9aed5c6e27d434.js +0 -1
  956. package/.next/standalone/.next/static/chunks/app/api/integrations/google/callback/route-ac9aed5c6e27d434.js +0 -1
  957. package/.next/standalone/.next/static/chunks/app/api/integrations/google/oauth/route-ac9aed5c6e27d434.js +0 -1
  958. package/.next/standalone/.next/static/chunks/app/api/marketplace/[id]/route-ac9aed5c6e27d434.js +0 -1
  959. package/.next/standalone/.next/static/chunks/app/api/marketplace/open-design/route-ac9aed5c6e27d434.js +0 -1
  960. package/.next/standalone/.next/static/chunks/app/api/marketplace/route-ac9aed5c6e27d434.js +0 -1
  961. package/.next/standalone/.next/static/chunks/app/api/mines/import-roots/route-ac9aed5c6e27d434.js +0 -1
  962. package/.next/standalone/.next/static/chunks/app/api/mines/portfolio/route-ac9aed5c6e27d434.js +0 -1
  963. package/.next/standalone/.next/static/chunks/app/api/mines/projects/[id]/chunks/route-ac9aed5c6e27d434.js +0 -1
  964. package/.next/standalone/.next/static/chunks/app/api/mines/projects/[id]/diligence/route-ac9aed5c6e27d434.js +0 -1
  965. package/.next/standalone/.next/static/chunks/app/api/mines/projects/[id]/import/route-ac9aed5c6e27d434.js +0 -1
  966. package/.next/standalone/.next/static/chunks/app/api/mines/projects/[id]/publish/route-ac9aed5c6e27d434.js +0 -1
  967. package/.next/standalone/.next/static/chunks/app/api/mines/projects/route-ac9aed5c6e27d434.js +0 -1
  968. package/.next/standalone/.next/static/chunks/app/api/missions/route-ac9aed5c6e27d434.js +0 -1
  969. package/.next/standalone/.next/static/chunks/app/api/models/route-ac9aed5c6e27d434.js +0 -1
  970. package/.next/standalone/.next/static/chunks/app/api/onboarding/blueprint/route-ac9aed5c6e27d434.js +0 -1
  971. package/.next/standalone/.next/static/chunks/app/api/onboarding/launch/route-ac9aed5c6e27d434.js +0 -1
  972. package/.next/standalone/.next/static/chunks/app/api/orchestrator/command/route-ac9aed5c6e27d434.js +0 -1
  973. package/.next/standalone/.next/static/chunks/app/api/orchestrator/stream/route-ac9aed5c6e27d434.js +0 -1
  974. package/.next/standalone/.next/static/chunks/app/api/orchestrator/upload/route-ac9aed5c6e27d434.js +0 -1
  975. package/.next/standalone/.next/static/chunks/app/api/org/route-ac9aed5c6e27d434.js +0 -1
  976. package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/invites/[inviteId]/route-ac9aed5c6e27d434.js +0 -1
  977. package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/invites/route-ac9aed5c6e27d434.js +0 -1
  978. package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/members/[userId]/role/route-ac9aed5c6e27d434.js +0 -1
  979. package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/members/[userId]/route-ac9aed5c6e27d434.js +0 -1
  980. package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/members/route-ac9aed5c6e27d434.js +0 -1
  981. package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/route-ac9aed5c6e27d434.js +0 -1
  982. package/.next/standalone/.next/static/chunks/app/api/orgs/invites/pending/route-ac9aed5c6e27d434.js +0 -1
  983. package/.next/standalone/.next/static/chunks/app/api/orgs/join/route-ac9aed5c6e27d434.js +0 -1
  984. package/.next/standalone/.next/static/chunks/app/api/orgs/join-complete/route-ac9aed5c6e27d434.js +0 -1
  985. package/.next/standalone/.next/static/chunks/app/api/orgs/route-ac9aed5c6e27d434.js +0 -1
  986. package/.next/standalone/.next/static/chunks/app/api/printing-press/clis/route-ac9aed5c6e27d434.js +0 -1
  987. package/.next/standalone/.next/static/chunks/app/api/printing-press/install/route-ac9aed5c6e27d434.js +0 -1
  988. package/.next/standalone/.next/static/chunks/app/api/printing-press/security-mode/route-ac9aed5c6e27d434.js +0 -1
  989. package/.next/standalone/.next/static/chunks/app/api/privacy/config/route-ac9aed5c6e27d434.js +0 -1
  990. package/.next/standalone/.next/static/chunks/app/api/privacy/verify/route-ac9aed5c6e27d434.js +0 -1
  991. package/.next/standalone/.next/static/chunks/app/api/processes/[id]/route-ac9aed5c6e27d434.js +0 -1
  992. package/.next/standalone/.next/static/chunks/app/api/processes/[id]/share-link/route-ac9aed5c6e27d434.js +0 -1
  993. package/.next/standalone/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/override/route-ac9aed5c6e27d434.js +0 -1
  994. package/.next/standalone/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/retry/route-ac9aed5c6e27d434.js +0 -1
  995. package/.next/standalone/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/submit/route-ac9aed5c6e27d434.js +0 -1
  996. package/.next/standalone/.next/static/chunks/app/api/processes/definitions/[slug]/route-ac9aed5c6e27d434.js +0 -1
  997. package/.next/standalone/.next/static/chunks/app/api/processes/definitions/[slug]/settings/route-ac9aed5c6e27d434.js +0 -1
  998. package/.next/standalone/.next/static/chunks/app/api/processes/definitions/route-ac9aed5c6e27d434.js +0 -1
  999. package/.next/standalone/.next/static/chunks/app/api/processes/definitions/validate/route-ac9aed5c6e27d434.js +0 -1
  1000. package/.next/standalone/.next/static/chunks/app/api/processes/route-ac9aed5c6e27d434.js +0 -1
  1001. package/.next/standalone/.next/static/chunks/app/api/processes/start-and-route/route-ac9aed5c6e27d434.js +0 -1
  1002. package/.next/standalone/.next/static/chunks/app/api/projects/[slug]/library/route-ac9aed5c6e27d434.js +0 -1
  1003. package/.next/standalone/.next/static/chunks/app/api/projects/[slug]/route-ac9aed5c6e27d434.js +0 -1
  1004. package/.next/standalone/.next/static/chunks/app/api/projects/route-ac9aed5c6e27d434.js +0 -1
  1005. package/.next/standalone/.next/static/chunks/app/api/runs/approve-claude-run/route-ac9aed5c6e27d434.js +0 -1
  1006. package/.next/standalone/.next/static/chunks/app/api/runs/claude-code-dry-run/route-ac9aed5c6e27d434.js +0 -1
  1007. package/.next/standalone/.next/static/chunks/app/api/runs/competitor-report/route-ac9aed5c6e27d434.js +0 -1
  1008. package/.next/standalone/.next/static/chunks/app/api/runs/engine-ping/route-ac9aed5c6e27d434.js +0 -1
  1009. package/.next/standalone/.next/static/chunks/app/api/runs/marketing-plan/route-ac9aed5c6e27d434.js +0 -1
  1010. package/.next/standalone/.next/static/chunks/app/api/schedules/upsert/route-ac9aed5c6e27d434.js +0 -1
  1011. package/.next/standalone/.next/static/chunks/app/api/secrets/[name]/route-ac9aed5c6e27d434.js +0 -1
  1012. package/.next/standalone/.next/static/chunks/app/api/secrets/route-ac9aed5c6e27d434.js +0 -1
  1013. package/.next/standalone/.next/static/chunks/app/api/settings/trust-mode/route-ac9aed5c6e27d434.js +0 -1
  1014. package/.next/standalone/.next/static/chunks/app/api/share/[token]/otp/route-ac9aed5c6e27d434.js +0 -1
  1015. package/.next/standalone/.next/static/chunks/app/api/share/[token]/route-ac9aed5c6e27d434.js +0 -1
  1016. package/.next/standalone/.next/static/chunks/app/api/share/[token]/verify/route-ac9aed5c6e27d434.js +0 -1
  1017. package/.next/standalone/.next/static/chunks/app/api/share/space/[token]/otp/route-ac9aed5c6e27d434.js +0 -1
  1018. package/.next/standalone/.next/static/chunks/app/api/share/space/[token]/route-ac9aed5c6e27d434.js +0 -1
  1019. package/.next/standalone/.next/static/chunks/app/api/share/space/[token]/verify/route-ac9aed5c6e27d434.js +0 -1
  1020. package/.next/standalone/.next/static/chunks/app/api/shared/spaces/[id]/acl/route-ac9aed5c6e27d434.js +0 -1
  1021. package/.next/standalone/.next/static/chunks/app/api/shared/spaces/publish/route-ac9aed5c6e27d434.js +0 -1
  1022. package/.next/standalone/.next/static/chunks/app/api/shared/spaces/route-ac9aed5c6e27d434.js +0 -1
  1023. package/.next/standalone/.next/static/chunks/app/api/shared/spaces/status/route-ac9aed5c6e27d434.js +0 -1
  1024. package/.next/standalone/.next/static/chunks/app/api/shared/spaces/unpublish/route-ac9aed5c6e27d434.js +0 -1
  1025. package/.next/standalone/.next/static/chunks/app/api/state/route-ac9aed5c6e27d434.js +0 -1
  1026. package/.next/standalone/.next/static/chunks/app/api/system/update/route-ac9aed5c6e27d434.js +0 -1
  1027. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/active-run/route-ac9aed5c6e27d434.js +0 -1
  1028. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/attachments/route-ac9aed5c6e27d434.js +0 -1
  1029. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/checklist/[itemId]/route-ac9aed5c6e27d434.js +0 -1
  1030. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/checklist/route-ac9aed5c6e27d434.js +0 -1
  1031. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/checkout/route-ac9aed5c6e27d434.js +0 -1
  1032. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/children/route-ac9aed5c6e27d434.js +0 -1
  1033. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/comments/route-ac9aed5c6e27d434.js +0 -1
  1034. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/events/route-ac9aed5c6e27d434.js +0 -1
  1035. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/live-runs/route-ac9aed5c6e27d434.js +0 -1
  1036. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/release/route-ac9aed5c6e27d434.js +0 -1
  1037. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/route-ac9aed5c6e27d434.js +0 -1
  1038. package/.next/standalone/.next/static/chunks/app/api/tasks/route-ac9aed5c6e27d434.js +0 -1
  1039. package/.next/standalone/.next/static/chunks/app/api/tool-allowlists/[id]/route-ac9aed5c6e27d434.js +0 -1
  1040. package/.next/standalone/.next/static/chunks/app/api/tool-allowlists/route-ac9aed5c6e27d434.js +0 -1
  1041. package/.next/standalone/.next/static/chunks/app/api/tool-egress/route-ac9aed5c6e27d434.js +0 -1
  1042. package/.next/standalone/.next/static/chunks/app/api/tools/[name]/approve/route-ac9aed5c6e27d434.js +0 -1
  1043. package/.next/standalone/.next/static/chunks/app/api/tools/[name]/route-ac9aed5c6e27d434.js +0 -1
  1044. package/.next/standalone/.next/static/chunks/app/api/tools/route-ac9aed5c6e27d434.js +0 -1
  1045. package/.next/standalone/.next/static/chunks/app/api/transcripts/route-ac9aed5c6e27d434.js +0 -1
  1046. package/.next/standalone/.next/static/chunks/app/api/voice/providers/route-ac9aed5c6e27d434.js +0 -1
  1047. package/.next/standalone/.next/static/chunks/app/api/voice/realtime/context/route-ac9aed5c6e27d434.js +0 -1
  1048. package/.next/standalone/.next/static/chunks/app/api/voice/realtime/session/route-ac9aed5c6e27d434.js +0 -1
  1049. package/.next/standalone/.next/static/chunks/app/api/voice/realtime/tool-result/route-ac9aed5c6e27d434.js +0 -1
  1050. package/.next/standalone/.next/static/chunks/app/api/voice/realtime/tools/route-ac9aed5c6e27d434.js +0 -1
  1051. package/.next/standalone/.next/static/chunks/app/api/voice/tts/route-ac9aed5c6e27d434.js +0 -1
  1052. package/.next/standalone/.next/static/chunks/app/api/whatsapp/allowlist/route-ac9aed5c6e27d434.js +0 -1
  1053. package/.next/standalone/.next/static/chunks/app/api/whatsapp/disconnect/route-ac9aed5c6e27d434.js +0 -1
  1054. package/.next/standalone/.next/static/chunks/app/api/whatsapp/messages/route-ac9aed5c6e27d434.js +0 -1
  1055. package/.next/standalone/.next/static/chunks/app/api/whatsapp/qr/route-ac9aed5c6e27d434.js +0 -1
  1056. package/.next/standalone/.next/static/chunks/app/api/whatsapp/send/route-ac9aed5c6e27d434.js +0 -1
  1057. package/.next/standalone/.next/static/chunks/app/api/whatsapp/status/route-ac9aed5c6e27d434.js +0 -1
  1058. package/.next/standalone/.next/static/chunks/app/approvals/loading-ac9aed5c6e27d434.js +0 -1
  1059. package/.next/standalone/.next/static/chunks/app/architecture/loading-ac9aed5c6e27d434.js +0 -1
  1060. package/.next/standalone/.next/static/chunks/app/audit/loading-ac9aed5c6e27d434.js +0 -1
  1061. package/.next/standalone/.next/static/chunks/app/brand/loading-ac9aed5c6e27d434.js +0 -1
  1062. package/.next/standalone/.next/static/chunks/app/disk/loading-ac9aed5c6e27d434.js +0 -1
  1063. package/.next/standalone/.next/static/chunks/app/federated-ai/loading-ac9aed5c6e27d434.js +0 -1
  1064. package/.next/standalone/.next/static/chunks/app/help/loading-ac9aed5c6e27d434.js +0 -1
  1065. package/.next/standalone/.next/static/chunks/app/layout-eaed78b7751b2b5b.js +0 -1
  1066. package/.next/standalone/.next/static/chunks/app/loading-ac9aed5c6e27d434.js +0 -1
  1067. package/.next/standalone/.next/static/chunks/app/login/page-f990dfc0fe6af059.js +0 -1
  1068. package/.next/standalone/.next/static/chunks/app/marketplace/loading-ac9aed5c6e27d434.js +0 -1
  1069. package/.next/standalone/.next/static/chunks/app/missions/loading-ac9aed5c6e27d434.js +0 -1
  1070. package/.next/standalone/.next/static/chunks/app/onboarding/loading-ac9aed5c6e27d434.js +0 -1
  1071. package/.next/standalone/.next/static/chunks/app/org/loading-ac9aed5c6e27d434.js +0 -1
  1072. package/.next/standalone/.next/static/chunks/app/page-a716d81055cfaa16.js +0 -1
  1073. package/.next/standalone/.next/static/chunks/app/projects/[slug]/loading-ac9aed5c6e27d434.js +0 -1
  1074. package/.next/standalone/.next/static/chunks/app/projects/loading-ac9aed5c6e27d434.js +0 -1
  1075. package/.next/standalone/.next/static/chunks/app/projects/page-054a548cf5443c3f.js +0 -1
  1076. package/.next/standalone/.next/static/chunks/app/reports/[file]/route-ac9aed5c6e27d434.js +0 -1
  1077. package/.next/standalone/.next/static/chunks/app/reports/loading-ac9aed5c6e27d434.js +0 -1
  1078. package/.next/standalone/.next/static/chunks/app/runtime/loading-ac9aed5c6e27d434.js +0 -1
  1079. package/.next/standalone/.next/static/chunks/app/schedules/loading-ac9aed5c6e27d434.js +0 -1
  1080. package/.next/standalone/.next/static/chunks/app/settings/loading-ac9aed5c6e27d434.js +0 -1
  1081. package/.next/standalone/.next/static/chunks/app/settings/page-ac9aed5c6e27d434.js +0 -1
  1082. package/.next/standalone/.next/static/chunks/app/tasks/[id]/loading-ac9aed5c6e27d434.js +0 -1
  1083. package/.next/standalone/.next/static/chunks/app/tasks/loading-ac9aed5c6e27d434.js +0 -1
  1084. package/.next/standalone/.next/static/chunks/app/tools/loading-ac9aed5c6e27d434.js +0 -1
  1085. package/.next/standalone/.next/static/chunks/app/tools/page-ac9aed5c6e27d434.js +0 -1
  1086. package/.next/standalone/.next/static/chunks/app/whatsapp/loading-ac9aed5c6e27d434.js +0 -1
  1087. package/.next/standalone/.next/static/chunks/app/workflows/share/[caseId]/page-ac9aed5c6e27d434.js +0 -1
  1088. package/.next/standalone/.next/static/chunks/webpack-e43c507177dcbe32.js +0 -1
  1089. package/.next/standalone/.next/static/css/46782d1598444516.css +0 -1
  1090. package/.next/standalone/data/.artifacts-migrated-v1 +0 -9
  1091. package/.next/standalone/data/.auth-migrated-v1 +0 -1
  1092. package/.next/standalone/data/.default-project-seeded +0 -1
  1093. package/.next/standalone/data/madarx.sqlite +0 -0
  1094. package/.next/standalone/data/madarx.sqlite-shm +0 -0
  1095. package/.next/standalone/data/madarx.sqlite-wal +0 -0
  1096. package/.next/standalone/data/uae-ai-report-2026-05-18.md +0 -103
  1097. package/.next/standalone/workspace/agents/ops-agent/skills.md +0 -35
  1098. package/.next/standalone/workspace/agents/tool-smith-agent/skills.md +0 -35
  1099. package/.next/static/chunks/7597-9d44318ae8a6db9b.js +0 -1
  1100. package/.next/static/chunks/app/activity/loading-ac9aed5c6e27d434.js +0 -1
  1101. package/.next/static/chunks/app/agents/[id]/loading-ac9aed5c6e27d434.js +0 -1
  1102. package/.next/static/chunks/app/agents/[id]/page-474f640e84f7b4b5.js +0 -1
  1103. package/.next/static/chunks/app/agents/loading-ac9aed5c6e27d434.js +0 -1
  1104. package/.next/static/chunks/app/agents/page-b79b611acd56712b.js +0 -1
  1105. package/.next/static/chunks/app/api/activity/route-ac9aed5c6e27d434.js +0 -1
  1106. package/.next/static/chunks/app/api/admin/audit-export/route-ac9aed5c6e27d434.js +0 -1
  1107. package/.next/static/chunks/app/api/admin/share-links/route-ac9aed5c6e27d434.js +0 -1
  1108. package/.next/static/chunks/app/api/agent-memory/route-ac9aed5c6e27d434.js +0 -1
  1109. package/.next/static/chunks/app/api/agent-runs/[id]/cancel/route-ac9aed5c6e27d434.js +0 -1
  1110. package/.next/static/chunks/app/api/agent-runs/[id]/events/route-ac9aed5c6e27d434.js +0 -1
  1111. package/.next/static/chunks/app/api/agent-runs/[id]/log/route-ac9aed5c6e27d434.js +0 -1
  1112. package/.next/static/chunks/app/api/agent-runs/[id]/route-ac9aed5c6e27d434.js +0 -1
  1113. package/.next/static/chunks/app/api/agent-runs/route-ac9aed5c6e27d434.js +0 -1
  1114. package/.next/static/chunks/app/api/agents/[id]/chain/route-ac9aed5c6e27d434.js +0 -1
  1115. package/.next/static/chunks/app/api/agents/[id]/memory/route-ac9aed5c6e27d434.js +0 -1
  1116. package/.next/static/chunks/app/api/agents/[id]/reports/route-ac9aed5c6e27d434.js +0 -1
  1117. package/.next/static/chunks/app/api/agents/[id]/run/route-ac9aed5c6e27d434.js +0 -1
  1118. package/.next/static/chunks/app/api/agents/[id]/skills/route-ac9aed5c6e27d434.js +0 -1
  1119. package/.next/static/chunks/app/api/agents/create/route-ac9aed5c6e27d434.js +0 -1
  1120. package/.next/static/chunks/app/api/agents/ops/route-ac9aed5c6e27d434.js +0 -1
  1121. package/.next/static/chunks/app/api/approvals/[id]/route-ac9aed5c6e27d434.js +0 -1
  1122. package/.next/static/chunks/app/api/approvals/route-ac9aed5c6e27d434.js +0 -1
  1123. package/.next/static/chunks/app/api/artifacts/[id]/acl/route-ac9aed5c6e27d434.js +0 -1
  1124. package/.next/static/chunks/app/api/artifacts/[id]/protect/route-ac9aed5c6e27d434.js +0 -1
  1125. package/.next/static/chunks/app/api/artifacts/[id]/raw/route-ac9aed5c6e27d434.js +0 -1
  1126. package/.next/static/chunks/app/api/artifacts/[id]/route-ac9aed5c6e27d434.js +0 -1
  1127. package/.next/static/chunks/app/api/artifacts/[id]/share-link/[linkId]/route-ac9aed5c6e27d434.js +0 -1
  1128. package/.next/static/chunks/app/api/artifacts/[id]/share-link/route-ac9aed5c6e27d434.js +0 -1
  1129. package/.next/static/chunks/app/api/artifacts/upload/route-ac9aed5c6e27d434.js +0 -1
  1130. package/.next/static/chunks/app/api/audit/list/route-ac9aed5c6e27d434.js +0 -1
  1131. package/.next/static/chunks/app/api/audit/search/route-ac9aed5c6e27d434.js +0 -1
  1132. package/.next/static/chunks/app/api/auth/callback/route-ac9aed5c6e27d434.js +0 -1
  1133. package/.next/static/chunks/app/api/auth/config/route-ac9aed5c6e27d434.js +0 -1
  1134. package/.next/static/chunks/app/api/auth/join-bootstrap/route-ac9aed5c6e27d434.js +0 -1
  1135. package/.next/static/chunks/app/api/auth/session/route-ac9aed5c6e27d434.js +0 -1
  1136. package/.next/static/chunks/app/api/brand/route-ac9aed5c6e27d434.js +0 -1
  1137. package/.next/static/chunks/app/api/brand/share/route-ac9aed5c6e27d434.js +0 -1
  1138. package/.next/static/chunks/app/api/chat/sessions/[id]/route-ac9aed5c6e27d434.js +0 -1
  1139. package/.next/static/chunks/app/api/chat/sessions/route-ac9aed5c6e27d434.js +0 -1
  1140. package/.next/static/chunks/app/api/config/env/route-ac9aed5c6e27d434.js +0 -1
  1141. package/.next/static/chunks/app/api/config/route-ac9aed5c6e27d434.js +0 -1
  1142. package/.next/static/chunks/app/api/connections/[service]/route-ac9aed5c6e27d434.js +0 -1
  1143. package/.next/static/chunks/app/api/connections/[service]/verify/route-ac9aed5c6e27d434.js +0 -1
  1144. package/.next/static/chunks/app/api/connections/route-ac9aed5c6e27d434.js +0 -1
  1145. package/.next/static/chunks/app/api/cron/tick/route-ac9aed5c6e27d434.js +0 -1
  1146. package/.next/static/chunks/app/api/dashboard/spaces/[id]/move/route-ac9aed5c6e27d434.js +0 -1
  1147. package/.next/static/chunks/app/api/dashboard/spaces/[id]/route-ac9aed5c6e27d434.js +0 -1
  1148. package/.next/static/chunks/app/api/dashboard/spaces/[id]/share-link/[linkId]/route-ac9aed5c6e27d434.js +0 -1
  1149. package/.next/static/chunks/app/api/dashboard/spaces/[id]/share-link/route-ac9aed5c6e27d434.js +0 -1
  1150. package/.next/static/chunks/app/api/dashboard/spaces/import/route-ac9aed5c6e27d434.js +0 -1
  1151. package/.next/static/chunks/app/api/dashboard/spaces/route-ac9aed5c6e27d434.js +0 -1
  1152. package/.next/static/chunks/app/api/disk/files/[id]/blob/route-ac9aed5c6e27d434.js +0 -1
  1153. package/.next/static/chunks/app/api/disk/files/[id]/route-ac9aed5c6e27d434.js +0 -1
  1154. package/.next/static/chunks/app/api/disk/files/[id]/transcribe/route-ac9aed5c6e27d434.js +0 -1
  1155. package/.next/static/chunks/app/api/disk/files/route-ac9aed5c6e27d434.js +0 -1
  1156. package/.next/static/chunks/app/api/disk/folders/route-ac9aed5c6e27d434.js +0 -1
  1157. package/.next/static/chunks/app/api/events/since/[cursor]/route-ac9aed5c6e27d434.js +0 -1
  1158. package/.next/static/chunks/app/api/events/stream/route-ac9aed5c6e27d434.js +0 -1
  1159. package/.next/static/chunks/app/api/fs/create-folder/route-ac9aed5c6e27d434.js +0 -1
  1160. package/.next/static/chunks/app/api/fs/pick-folder/route-ac9aed5c6e27d434.js +0 -1
  1161. package/.next/static/chunks/app/api/hail/engagements/[id]/blueprint/route-ac9aed5c6e27d434.js +0 -1
  1162. package/.next/static/chunks/app/api/hail/engagements/[id]/diagnostic/route-ac9aed5c6e27d434.js +0 -1
  1163. package/.next/static/chunks/app/api/hail/engagements/[id]/governance/route-ac9aed5c6e27d434.js +0 -1
  1164. package/.next/static/chunks/app/api/hail/engagements/[id]/interview/route-ac9aed5c6e27d434.js +0 -1
  1165. package/.next/static/chunks/app/api/hail/engagements/[id]/pilot/route-ac9aed5c6e27d434.js +0 -1
  1166. package/.next/static/chunks/app/api/hail/engagements/[id]/quarterly/route-ac9aed5c6e27d434.js +0 -1
  1167. package/.next/static/chunks/app/api/hail/engagements/[id]/route-ac9aed5c6e27d434.js +0 -1
  1168. package/.next/static/chunks/app/api/hail/engagements/[id]/setup-package/route-ac9aed5c6e27d434.js +0 -1
  1169. package/.next/static/chunks/app/api/hail/engagements/route-ac9aed5c6e27d434.js +0 -1
  1170. package/.next/static/chunks/app/api/hail/interviews/[id]/responses/route-ac9aed5c6e27d434.js +0 -1
  1171. package/.next/static/chunks/app/api/hail/interviews/[id]/route-ac9aed5c6e27d434.js +0 -1
  1172. package/.next/static/chunks/app/api/hail/setup-packages/[id]/apply/route-ac9aed5c6e27d434.js +0 -1
  1173. package/.next/static/chunks/app/api/hail/setup-packages/validate/route-ac9aed5c6e27d434.js +0 -1
  1174. package/.next/static/chunks/app/api/heartbeat/tick/route-ac9aed5c6e27d434.js +0 -1
  1175. package/.next/static/chunks/app/api/heartbeat/worker/route-ac9aed5c6e27d434.js +0 -1
  1176. package/.next/static/chunks/app/api/help/route-ac9aed5c6e27d434.js +0 -1
  1177. package/.next/static/chunks/app/api/hermes/jobs/[id]/events/route-ac9aed5c6e27d434.js +0 -1
  1178. package/.next/static/chunks/app/api/hermes/jobs/[id]/route-ac9aed5c6e27d434.js +0 -1
  1179. package/.next/static/chunks/app/api/hermes/jobs/route-ac9aed5c6e27d434.js +0 -1
  1180. package/.next/static/chunks/app/api/integrations/google/callback/route-ac9aed5c6e27d434.js +0 -1
  1181. package/.next/static/chunks/app/api/integrations/google/oauth/route-ac9aed5c6e27d434.js +0 -1
  1182. package/.next/static/chunks/app/api/marketplace/[id]/route-ac9aed5c6e27d434.js +0 -1
  1183. package/.next/static/chunks/app/api/marketplace/open-design/route-ac9aed5c6e27d434.js +0 -1
  1184. package/.next/static/chunks/app/api/marketplace/route-ac9aed5c6e27d434.js +0 -1
  1185. package/.next/static/chunks/app/api/mines/import-roots/route-ac9aed5c6e27d434.js +0 -1
  1186. package/.next/static/chunks/app/api/mines/portfolio/route-ac9aed5c6e27d434.js +0 -1
  1187. package/.next/static/chunks/app/api/mines/projects/[id]/chunks/route-ac9aed5c6e27d434.js +0 -1
  1188. package/.next/static/chunks/app/api/mines/projects/[id]/diligence/route-ac9aed5c6e27d434.js +0 -1
  1189. package/.next/static/chunks/app/api/mines/projects/[id]/import/route-ac9aed5c6e27d434.js +0 -1
  1190. package/.next/static/chunks/app/api/mines/projects/[id]/publish/route-ac9aed5c6e27d434.js +0 -1
  1191. package/.next/static/chunks/app/api/mines/projects/route-ac9aed5c6e27d434.js +0 -1
  1192. package/.next/static/chunks/app/api/missions/route-ac9aed5c6e27d434.js +0 -1
  1193. package/.next/static/chunks/app/api/models/route-ac9aed5c6e27d434.js +0 -1
  1194. package/.next/static/chunks/app/api/onboarding/blueprint/route-ac9aed5c6e27d434.js +0 -1
  1195. package/.next/static/chunks/app/api/onboarding/launch/route-ac9aed5c6e27d434.js +0 -1
  1196. package/.next/static/chunks/app/api/orchestrator/command/route-ac9aed5c6e27d434.js +0 -1
  1197. package/.next/static/chunks/app/api/orchestrator/stream/route-ac9aed5c6e27d434.js +0 -1
  1198. package/.next/static/chunks/app/api/orchestrator/upload/route-ac9aed5c6e27d434.js +0 -1
  1199. package/.next/static/chunks/app/api/org/route-ac9aed5c6e27d434.js +0 -1
  1200. package/.next/static/chunks/app/api/orgs/[id]/invites/[inviteId]/route-ac9aed5c6e27d434.js +0 -1
  1201. package/.next/static/chunks/app/api/orgs/[id]/invites/route-ac9aed5c6e27d434.js +0 -1
  1202. package/.next/static/chunks/app/api/orgs/[id]/members/[userId]/role/route-ac9aed5c6e27d434.js +0 -1
  1203. package/.next/static/chunks/app/api/orgs/[id]/members/[userId]/route-ac9aed5c6e27d434.js +0 -1
  1204. package/.next/static/chunks/app/api/orgs/[id]/members/route-ac9aed5c6e27d434.js +0 -1
  1205. package/.next/static/chunks/app/api/orgs/[id]/route-ac9aed5c6e27d434.js +0 -1
  1206. package/.next/static/chunks/app/api/orgs/invites/pending/route-ac9aed5c6e27d434.js +0 -1
  1207. package/.next/static/chunks/app/api/orgs/join/route-ac9aed5c6e27d434.js +0 -1
  1208. package/.next/static/chunks/app/api/orgs/join-complete/route-ac9aed5c6e27d434.js +0 -1
  1209. package/.next/static/chunks/app/api/orgs/route-ac9aed5c6e27d434.js +0 -1
  1210. package/.next/static/chunks/app/api/printing-press/clis/route-ac9aed5c6e27d434.js +0 -1
  1211. package/.next/static/chunks/app/api/printing-press/install/route-ac9aed5c6e27d434.js +0 -1
  1212. package/.next/static/chunks/app/api/printing-press/security-mode/route-ac9aed5c6e27d434.js +0 -1
  1213. package/.next/static/chunks/app/api/privacy/config/route-ac9aed5c6e27d434.js +0 -1
  1214. package/.next/static/chunks/app/api/privacy/verify/route-ac9aed5c6e27d434.js +0 -1
  1215. package/.next/static/chunks/app/api/processes/[id]/route-ac9aed5c6e27d434.js +0 -1
  1216. package/.next/static/chunks/app/api/processes/[id]/share-link/route-ac9aed5c6e27d434.js +0 -1
  1217. package/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/override/route-ac9aed5c6e27d434.js +0 -1
  1218. package/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/retry/route-ac9aed5c6e27d434.js +0 -1
  1219. package/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/submit/route-ac9aed5c6e27d434.js +0 -1
  1220. package/.next/static/chunks/app/api/processes/definitions/[slug]/route-ac9aed5c6e27d434.js +0 -1
  1221. package/.next/static/chunks/app/api/processes/definitions/[slug]/settings/route-ac9aed5c6e27d434.js +0 -1
  1222. package/.next/static/chunks/app/api/processes/definitions/route-ac9aed5c6e27d434.js +0 -1
  1223. package/.next/static/chunks/app/api/processes/definitions/validate/route-ac9aed5c6e27d434.js +0 -1
  1224. package/.next/static/chunks/app/api/processes/route-ac9aed5c6e27d434.js +0 -1
  1225. package/.next/static/chunks/app/api/processes/start-and-route/route-ac9aed5c6e27d434.js +0 -1
  1226. package/.next/static/chunks/app/api/projects/[slug]/library/route-ac9aed5c6e27d434.js +0 -1
  1227. package/.next/static/chunks/app/api/projects/[slug]/route-ac9aed5c6e27d434.js +0 -1
  1228. package/.next/static/chunks/app/api/projects/route-ac9aed5c6e27d434.js +0 -1
  1229. package/.next/static/chunks/app/api/runs/approve-claude-run/route-ac9aed5c6e27d434.js +0 -1
  1230. package/.next/static/chunks/app/api/runs/claude-code-dry-run/route-ac9aed5c6e27d434.js +0 -1
  1231. package/.next/static/chunks/app/api/runs/competitor-report/route-ac9aed5c6e27d434.js +0 -1
  1232. package/.next/static/chunks/app/api/runs/engine-ping/route-ac9aed5c6e27d434.js +0 -1
  1233. package/.next/static/chunks/app/api/runs/marketing-plan/route-ac9aed5c6e27d434.js +0 -1
  1234. package/.next/static/chunks/app/api/schedules/upsert/route-ac9aed5c6e27d434.js +0 -1
  1235. package/.next/static/chunks/app/api/secrets/[name]/route-ac9aed5c6e27d434.js +0 -1
  1236. package/.next/static/chunks/app/api/secrets/route-ac9aed5c6e27d434.js +0 -1
  1237. package/.next/static/chunks/app/api/settings/trust-mode/route-ac9aed5c6e27d434.js +0 -1
  1238. package/.next/static/chunks/app/api/share/[token]/otp/route-ac9aed5c6e27d434.js +0 -1
  1239. package/.next/static/chunks/app/api/share/[token]/route-ac9aed5c6e27d434.js +0 -1
  1240. package/.next/static/chunks/app/api/share/[token]/verify/route-ac9aed5c6e27d434.js +0 -1
  1241. package/.next/static/chunks/app/api/share/space/[token]/otp/route-ac9aed5c6e27d434.js +0 -1
  1242. package/.next/static/chunks/app/api/share/space/[token]/route-ac9aed5c6e27d434.js +0 -1
  1243. package/.next/static/chunks/app/api/share/space/[token]/verify/route-ac9aed5c6e27d434.js +0 -1
  1244. package/.next/static/chunks/app/api/shared/spaces/[id]/acl/route-ac9aed5c6e27d434.js +0 -1
  1245. package/.next/static/chunks/app/api/shared/spaces/publish/route-ac9aed5c6e27d434.js +0 -1
  1246. package/.next/static/chunks/app/api/shared/spaces/route-ac9aed5c6e27d434.js +0 -1
  1247. package/.next/static/chunks/app/api/shared/spaces/status/route-ac9aed5c6e27d434.js +0 -1
  1248. package/.next/static/chunks/app/api/shared/spaces/unpublish/route-ac9aed5c6e27d434.js +0 -1
  1249. package/.next/static/chunks/app/api/state/route-ac9aed5c6e27d434.js +0 -1
  1250. package/.next/static/chunks/app/api/system/update/route-ac9aed5c6e27d434.js +0 -1
  1251. package/.next/static/chunks/app/api/tasks/[id]/active-run/route-ac9aed5c6e27d434.js +0 -1
  1252. package/.next/static/chunks/app/api/tasks/[id]/attachments/route-ac9aed5c6e27d434.js +0 -1
  1253. package/.next/static/chunks/app/api/tasks/[id]/checklist/[itemId]/route-ac9aed5c6e27d434.js +0 -1
  1254. package/.next/static/chunks/app/api/tasks/[id]/checklist/route-ac9aed5c6e27d434.js +0 -1
  1255. package/.next/static/chunks/app/api/tasks/[id]/checkout/route-ac9aed5c6e27d434.js +0 -1
  1256. package/.next/static/chunks/app/api/tasks/[id]/children/route-ac9aed5c6e27d434.js +0 -1
  1257. package/.next/static/chunks/app/api/tasks/[id]/comments/route-ac9aed5c6e27d434.js +0 -1
  1258. package/.next/static/chunks/app/api/tasks/[id]/events/route-ac9aed5c6e27d434.js +0 -1
  1259. package/.next/static/chunks/app/api/tasks/[id]/live-runs/route-ac9aed5c6e27d434.js +0 -1
  1260. package/.next/static/chunks/app/api/tasks/[id]/release/route-ac9aed5c6e27d434.js +0 -1
  1261. package/.next/static/chunks/app/api/tasks/[id]/route-ac9aed5c6e27d434.js +0 -1
  1262. package/.next/static/chunks/app/api/tasks/route-ac9aed5c6e27d434.js +0 -1
  1263. package/.next/static/chunks/app/api/tool-allowlists/[id]/route-ac9aed5c6e27d434.js +0 -1
  1264. package/.next/static/chunks/app/api/tool-allowlists/route-ac9aed5c6e27d434.js +0 -1
  1265. package/.next/static/chunks/app/api/tool-egress/route-ac9aed5c6e27d434.js +0 -1
  1266. package/.next/static/chunks/app/api/tools/[name]/approve/route-ac9aed5c6e27d434.js +0 -1
  1267. package/.next/static/chunks/app/api/tools/[name]/route-ac9aed5c6e27d434.js +0 -1
  1268. package/.next/static/chunks/app/api/tools/route-ac9aed5c6e27d434.js +0 -1
  1269. package/.next/static/chunks/app/api/transcripts/route-ac9aed5c6e27d434.js +0 -1
  1270. package/.next/static/chunks/app/api/voice/providers/route-ac9aed5c6e27d434.js +0 -1
  1271. package/.next/static/chunks/app/api/voice/realtime/context/route-ac9aed5c6e27d434.js +0 -1
  1272. package/.next/static/chunks/app/api/voice/realtime/session/route-ac9aed5c6e27d434.js +0 -1
  1273. package/.next/static/chunks/app/api/voice/realtime/tool-result/route-ac9aed5c6e27d434.js +0 -1
  1274. package/.next/static/chunks/app/api/voice/realtime/tools/route-ac9aed5c6e27d434.js +0 -1
  1275. package/.next/static/chunks/app/api/voice/tts/route-ac9aed5c6e27d434.js +0 -1
  1276. package/.next/static/chunks/app/api/whatsapp/allowlist/route-ac9aed5c6e27d434.js +0 -1
  1277. package/.next/static/chunks/app/api/whatsapp/disconnect/route-ac9aed5c6e27d434.js +0 -1
  1278. package/.next/static/chunks/app/api/whatsapp/messages/route-ac9aed5c6e27d434.js +0 -1
  1279. package/.next/static/chunks/app/api/whatsapp/qr/route-ac9aed5c6e27d434.js +0 -1
  1280. package/.next/static/chunks/app/api/whatsapp/send/route-ac9aed5c6e27d434.js +0 -1
  1281. package/.next/static/chunks/app/api/whatsapp/status/route-ac9aed5c6e27d434.js +0 -1
  1282. package/.next/static/chunks/app/approvals/loading-ac9aed5c6e27d434.js +0 -1
  1283. package/.next/static/chunks/app/architecture/loading-ac9aed5c6e27d434.js +0 -1
  1284. package/.next/static/chunks/app/audit/loading-ac9aed5c6e27d434.js +0 -1
  1285. package/.next/static/chunks/app/brand/loading-ac9aed5c6e27d434.js +0 -1
  1286. package/.next/static/chunks/app/disk/loading-ac9aed5c6e27d434.js +0 -1
  1287. package/.next/static/chunks/app/federated-ai/loading-ac9aed5c6e27d434.js +0 -1
  1288. package/.next/static/chunks/app/help/loading-ac9aed5c6e27d434.js +0 -1
  1289. package/.next/static/chunks/app/layout-eaed78b7751b2b5b.js +0 -1
  1290. package/.next/static/chunks/app/loading-ac9aed5c6e27d434.js +0 -1
  1291. package/.next/static/chunks/app/login/page-f990dfc0fe6af059.js +0 -1
  1292. package/.next/static/chunks/app/marketplace/loading-ac9aed5c6e27d434.js +0 -1
  1293. package/.next/static/chunks/app/missions/loading-ac9aed5c6e27d434.js +0 -1
  1294. package/.next/static/chunks/app/onboarding/loading-ac9aed5c6e27d434.js +0 -1
  1295. package/.next/static/chunks/app/org/loading-ac9aed5c6e27d434.js +0 -1
  1296. package/.next/static/chunks/app/page-a716d81055cfaa16.js +0 -1
  1297. package/.next/static/chunks/app/projects/[slug]/loading-ac9aed5c6e27d434.js +0 -1
  1298. package/.next/static/chunks/app/projects/loading-ac9aed5c6e27d434.js +0 -1
  1299. package/.next/static/chunks/app/projects/page-054a548cf5443c3f.js +0 -1
  1300. package/.next/static/chunks/app/reports/[file]/route-ac9aed5c6e27d434.js +0 -1
  1301. package/.next/static/chunks/app/reports/loading-ac9aed5c6e27d434.js +0 -1
  1302. package/.next/static/chunks/app/runtime/loading-ac9aed5c6e27d434.js +0 -1
  1303. package/.next/static/chunks/app/schedules/loading-ac9aed5c6e27d434.js +0 -1
  1304. package/.next/static/chunks/app/settings/loading-ac9aed5c6e27d434.js +0 -1
  1305. package/.next/static/chunks/app/settings/page-ac9aed5c6e27d434.js +0 -1
  1306. package/.next/static/chunks/app/tasks/[id]/loading-ac9aed5c6e27d434.js +0 -1
  1307. package/.next/static/chunks/app/tasks/loading-ac9aed5c6e27d434.js +0 -1
  1308. package/.next/static/chunks/app/tools/loading-ac9aed5c6e27d434.js +0 -1
  1309. package/.next/static/chunks/app/tools/page-ac9aed5c6e27d434.js +0 -1
  1310. package/.next/static/chunks/app/whatsapp/loading-ac9aed5c6e27d434.js +0 -1
  1311. package/.next/static/chunks/app/workflows/share/[caseId]/page-ac9aed5c6e27d434.js +0 -1
  1312. package/.next/static/chunks/webpack-e43c507177dcbe32.js +0 -1
  1313. package/.next/static/css/46782d1598444516.css +0 -1
  1314. /package/.next/standalone/.next/static/{FudFirvPoaz8nsaeW6PBB → ZxaTPKGC9lESQlvHfrHgp}/_buildManifest.js +0 -0
  1315. /package/.next/standalone/.next/static/{FudFirvPoaz8nsaeW6PBB → ZxaTPKGC9lESQlvHfrHgp}/_ssgManifest.js +0 -0
  1316. /package/.next/static/{FudFirvPoaz8nsaeW6PBB → ZxaTPKGC9lESQlvHfrHgp}/_buildManifest.js +0 -0
  1317. /package/.next/static/{FudFirvPoaz8nsaeW6PBB → ZxaTPKGC9lESQlvHfrHgp}/_ssgManifest.js +0 -0
@@ -19,7 +19,7 @@ Return ONLY corrected JSON in a \`\`\`json fence that matches the schema. No oth
19
19
  SELECT id, scope_value AS root_path
20
20
  FROM tool_allowlists
21
21
  WHERE id = ? AND tool_name = ? AND scope_key = ? AND COALESCE(org_id, ?) = ?
22
- `).get(String(a||""),s,t,d,d);if(!e)return{status:"error",error:"not_found"};c.prepare("DELETE FROM tool_allowlists WHERE id = ?").run(e.id);try{(0,i.appendComplianceAudit)({user_id:b.acting_on_behalf_of_user_id||b.user_id||"system",org_id:d,action:"mines.import_root.removed",status:"success",summary:"Removed Mines import root: "+e.root_path,action_target_id:e.id,action_target_type:"tool_allowlist",meta:{root_path:e.root_path,org_id:d}})}catch{}return{status:"ok",id:e.id,root_path:e.root_path}}function r(a,b={}){let c=n(g.resolve(String(a||".")));return!k(c)&&o(b).some(a=>{let b=g.resolve(a.root_path),d=g.relative(b,c);return""===d||!!d&&!d.startsWith("..")&&!g.isAbsolute(d)})}d()}catch(a){d(a)}})},1511:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Ht:()=>p,OC:()=>r,aS:()=>u,getAuthMode:()=>h.Im,getLocalDevUser:()=>k,vR:()=>h.vR});var e=c(77598),f=c(77030),g=c(34255),h=c(33446),i=c(36575),j=a([g,h,i]);[g,h,i]=j.then?(await j)():j;let x="phase-production-build"===process.env.NEXT_PHASE;function k(){return{user_id:"local-user-1",email:process.env.MADARX_OWNER_EMAIL||"owner@local.dev",display_name:"Local Owner",org_id:"personal-org",role:"owner",auth_mode:"local"}}"local"!==(process.env.MADARX_AUTH_MODE||"local").toLowerCase()||x||console.error("[auth] WARNING: MADARX_AUTH_MODE is not set to supabase in NODE_ENV=production. Configure Supabase auth (Settings → Account) or set MADARX_AUTH_MODE=supabase before exposing this deployment.");let y=new Map;function l(a){return(0,e.createHash)("sha256").update(a).digest("hex")}let z=null;async function m(a){let b;if(!1===z)throw Error("@supabase/ssr is not installed. Run: npm install @supabase/ssr @supabase/supabase-js");try{b=(await c.e(1658).then(c.bind(c,81658))).createServerClient,z=!0}catch{throw z=!1,Error("@supabase/ssr is not installed. Run: npm install @supabase/ssr @supabase/supabase-js")}let{url:d,anonKey:e}=(0,h.vR)();if(!d||!e)throw Error("Supabase URL and anon key are not configured. Set them in Settings → Account.");return b(d,e,{cookies:{getAll:()=>(a?.headers?.get?.("cookie")||"").split(";").map(a=>a.trim()).filter(Boolean).map(a=>{let b=a.indexOf("=");return{name:a.slice(0,b),value:a.slice(b+1)}}),setAll(){}}})}async function n(a,b){try{if(!a?.email||!a?.email_confirmed_at)return null;try{let{claimEmailInvitesViaCloud:d}=await c.e(6700).then(c.bind(c,66700)),e=await d({user_id:a.id,supabase_access_token:b});if(e.length)return e[0]}catch{}let d=(0,i.XJ)(a.id,a.email);return d.length?d[0]:null}catch(a){return console.warn("[auth] email-invite claim failed:",a.message),null}}let A={owner:0,admin:1,member:2,viewer:3};async function o(a,b){try{let{mirrorCloudMembershipsForUser:d}=await c.e(6700).then(c.bind(c,66700));return await d({user_id:a.id,supabase_access_token:b})}catch(a){return console.warn("[auth] cloud membership mirror failed:",a.message),[]}}async function p(a,{_client:b}={}){let c;if("local"===(0,h.Im)())return k();let d=await q(a),e=function(a){let b=a.match(/sb-[^=]+-auth-token(?:-\d+)?=([^;]+)/);return b?decodeURIComponent(b[1]):null}(d);if(e){let a=function(a){let b=l(a),c=y.get(b);return c?Date.now()>c.expiresAt?(y.delete(b),null):c.session:null}(e);if(a)return a}let f=a||{headers:{get:a=>"cookie"===String(a).toLowerCase()?d:null}},i=b||null;if(!i)try{i=await m(f)}catch(a){return console.error("[auth] getSession: failed to build Supabase client:",a.message),null}try{let a=await Promise.race([i.auth.getUser(),new Promise((a,b)=>setTimeout(()=>b(Error("getUser timed out")),4e3))]);if(a?.error||!a?.data?.user)return null;c=a.data.user}catch(a){return console.error("[auth] getSession: supabase.auth.getUser() failed:",a.message),null}try{var j,r=c;let a=(0,g.getDb)(),b=(0,g.nowIso)();a.prepare(`INSERT INTO users (id, email, display_name, avatar_url, auth_provider, last_sign_in_at, created_at)
22
+ `).get(String(a||""),s,t,d,d);if(!e)return{status:"error",error:"not_found"};c.prepare("DELETE FROM tool_allowlists WHERE id = ?").run(e.id);try{(0,i.appendComplianceAudit)({user_id:b.acting_on_behalf_of_user_id||b.user_id||"system",org_id:d,action:"mines.import_root.removed",status:"success",summary:"Removed Mines import root: "+e.root_path,action_target_id:e.id,action_target_type:"tool_allowlist",meta:{root_path:e.root_path,org_id:d}})}catch{}return{status:"ok",id:e.id,root_path:e.root_path}}function r(a,b={}){let c=n(g.resolve(String(a||".")));return!k(c)&&o(b).some(a=>{let b=g.resolve(a.root_path),d=g.relative(b,c);return""===d||!!d&&!d.startsWith("..")&&!g.isAbsolute(d)})}d()}catch(a){d(a)}})},1511:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Ht:()=>p,OC:()=>r,aS:()=>u,getAuthMode:()=>h.Im,getLocalDevUser:()=>k,vR:()=>h.vR});var e=c(77598),f=c(77030),g=c(34255),h=c(33446),i=c(36575),j=a([g,h,i]);[g,h,i]=j.then?(await j)():j;let x="phase-production-build"===process.env.NEXT_PHASE,y=!1;function k(){return{user_id:"local-user-1",email:process.env.MADARX_OWNER_EMAIL||"owner@local.dev",display_name:"Local Owner",org_id:"personal-org",role:"owner",auth_mode:"local"}}let z=new Map;function l(a){return(0,e.createHash)("sha256").update(a).digest("hex")}let A=null;async function m(a){let b;if(!1===A)throw Error("@supabase/ssr is not installed. Run: npm install @supabase/ssr @supabase/supabase-js");try{b=(await c.e(1658).then(c.bind(c,81658))).createServerClient,A=!0}catch{throw A=!1,Error("@supabase/ssr is not installed. Run: npm install @supabase/ssr @supabase/supabase-js")}let{url:d,anonKey:e}=(0,h.vR)();if(!d||!e)throw Error("Supabase URL and anon key are not configured. Set them in Settings → Account.");return b(d,e,{cookies:{getAll:()=>(a?.headers?.get?.("cookie")||"").split(";").map(a=>a.trim()).filter(Boolean).map(a=>{let b=a.indexOf("=");return{name:a.slice(0,b),value:a.slice(b+1)}}),setAll(){}}})}async function n(a,b){try{if(!a?.email||!a?.email_confirmed_at)return null;try{let{claimEmailInvitesViaCloud:d}=await c.e(6700).then(c.bind(c,66700)),e=await d({user_id:a.id,supabase_access_token:b});if(e.length)return e[0]}catch{}let d=(0,i.XJ)(a.id,a.email);return d.length?d[0]:null}catch(a){return console.warn("[auth] email-invite claim failed:",a.message),null}}let B={owner:0,admin:1,member:2,viewer:3};async function o(a,b){try{let{mirrorCloudMembershipsForUser:d}=await c.e(6700).then(c.bind(c,66700));return await d({user_id:a.id,supabase_access_token:b})}catch(a){return console.warn("[auth] cloud membership mirror failed:",a.message),[]}}async function p(a,{_client:b}={}){let c;if(!function(){let a;if(!y&&(y=!0,!x)){try{a=(0,h.Im)()}catch{a=(process.env.MADARX_AUTH_MODE||"local").toLowerCase()}"local"===a&&console.error("[auth] WARNING: auth mode is local in NODE_ENV=production. Configure Supabase auth (Settings → Account) or set MADARX_AUTH_MODE=supabase before exposing this deployment.")}}(),"local"===(0,h.Im)())return k();let d=await q(a),e=function(a){let b=a.match(/sb-[^=]+-auth-token(?:-\d+)?=([^;]+)/);return b?decodeURIComponent(b[1]):null}(d);if(e){let a=function(a){let b=l(a),c=z.get(b);return c?Date.now()>c.expiresAt?(z.delete(b),null):c.session:null}(e);if(a)return a}let f=a||{headers:{get:a=>"cookie"===String(a).toLowerCase()?d:null}},i=b||null;if(!i)try{i=await m(f)}catch(a){return console.error("[auth] getSession: failed to build Supabase client:",a.message),null}try{let a=await Promise.race([i.auth.getUser(),new Promise((a,b)=>setTimeout(()=>b(Error("getUser timed out")),4e3))]);if(a?.error||!a?.data?.user)return null;c=a.data.user}catch(a){return console.error("[auth] getSession: supabase.auth.getUser() failed:",a.message),null}try{var j,r=c;let a=(0,g.getDb)(),b=(0,g.nowIso)();a.prepare(`INSERT INTO users (id, email, display_name, avatar_url, auth_provider, last_sign_in_at, created_at)
23
23
  VALUES (?, ?, ?, ?, 'supabase', ?, ?)
24
24
  ON CONFLICT(id) DO UPDATE SET
25
25
  email = excluded.email,
@@ -35,14 +35,14 @@ Return ONLY corrected JSON in a \`\`\`json fence that matches the schema. No oth
35
35
  WHEN 'viewer' THEN 3
36
36
  ELSE 4
37
37
  END
38
- LIMIT 1`).get(j)||null);if((0,h.fo)()||!s){let a=await o(c,e);a.length&&(s=(Array.isArray(a)&&0!==a.length?[...a].sort((a,b)=>{let c=A[a.role]??4,d=A[b.role]??4;return c!==d?c-d:String(a.org_id).localeCompare(String(b.org_id))})[0]:null)||s)}if(s||(s=await n(c,e)),s||(s=function(a){try{let b=(0,g.getDb)();if(b.prepare("SELECT COUNT(*) AS c FROM org_memberships WHERE user_id != 'local-user-1'").get().c>0)return null;let c=(0,g.nowIso)(),d=(0,g.newId)("org"),e=(a.email||"owner").split("@")[0].replace(/[^a-z0-9-]/gi,"").toLowerCase()||"owner",f=`${e}-org`.slice(0,60),h=a.user_metadata?.full_name||a.email||"Personal Org";return b.prepare(`INSERT INTO organizations (id, slug, name, plan, created_at, updated_at)
38
+ LIMIT 1`).get(j)||null);if((0,h.fo)()||!s){let a=await o(c,e);a.length&&(s=(Array.isArray(a)&&0!==a.length?[...a].sort((a,b)=>{let c=B[a.role]??4,d=B[b.role]??4;return c!==d?c-d:String(a.org_id).localeCompare(String(b.org_id))})[0]:null)||s)}if(s||(s=await n(c,e)),s||(s=function(a){try{let b=(0,g.getDb)();if(b.prepare("SELECT COUNT(*) AS c FROM org_memberships WHERE user_id != 'local-user-1'").get().c>0)return null;let c=(0,g.nowIso)(),d=(0,g.newId)("org"),e=(a.email||"owner").split("@")[0].replace(/[^a-z0-9-]/gi,"").toLowerCase()||"owner",f=`${e}-org`.slice(0,60),h=a.user_metadata?.full_name||a.email||"Personal Org";return b.prepare(`INSERT INTO organizations (id, slug, name, plan, created_at, updated_at)
39
39
  VALUES (?, ?, ?, 'free', ?, ?)`).run(d,f,h,c,c),b.prepare(`INSERT INTO org_memberships (id, org_id, user_id, role, accepted_at)
40
- VALUES (?, ?, ?, 'owner', ?)`).run((0,g.newId)("mem"),d,a.id,c),{org_id:d,role:"owner"}}catch(a){return console.warn("[auth] first-login org bootstrap failed:",a.message),null}}(c)),!s)return{user_id:c.id,email:c.email,display_name:c.user_metadata?.full_name||null,org_id:null,role:null,auth_mode:"supabase",supabase_access_token:e};let t={user_id:c.id,email:c.email,display_name:c.user_metadata?.full_name||c.user_metadata?.name||null,org_id:s.org_id,role:s.role,auth_mode:"supabase",supabase_access_token:e};return e&&function(a,b){let c=l(a);y.set(c,{session:b,expiresAt:Date.now()+3e4})}(e,t),t}async function q(a,b){if(a?.headers?.get)return a.headers.get("cookie")||"";try{var d;let a=b||(async()=>{let{cookies:a}=await Promise.all([c.e(6802),c.e(8982)]).then(c.bind(c,86802));return a()});return d=await a(),(d?.getAll?.()||[]).map(a=>`${a.name}=${a.value}`).join("; ")}catch{return""}}async function r(a,b){let c=await p(a,b);if(!c)throw{status:401,error:"unauthenticated"};if("local"===(0,h.Im)())return c;if(c.org_id)try{let b=(0,g.getDb)(),e=b.prepare("SELECT ip_allowlist_json, session_timeout_seconds FROM organizations WHERE id = ?").get(c.org_id);if(e){if(e.session_timeout_seconds){let a=b.prepare("SELECT last_sign_in_at FROM users WHERE id = ?").get(c.user_id);if(a?.last_sign_in_at&&(Date.now()-new Date(a.last_sign_in_at).getTime())/1e3>e.session_timeout_seconds)throw{status:401,error:"session_expired"}}if(e.ip_allowlist_json){var d;let h;try{h=JSON.parse(e.ip_allowlist_json)}catch{h=[]}let i=function(a){let b=a?.headers?.get?.("x-forwarded-for")||a?.headers?.["x-forwarded-for"];return b?String(b).split(",")[0].trim():null}(a);if(d=h,!(!Array.isArray(d)||0===d.length||d.some(a=>(function(a,b){if(!a||!b)return!1;let[c,d]=b.split("/");if(!c||void 0===d||!f.isIPv4(a)||!f.isIPv4(c))return!1;let e=""===d?32:parseInt(d,10);if(isNaN(e)||e<0||e>32)return!1;let g=a=>a.split(".").reduce((a,b)=>a<<8|parseInt(b,10),0)>>>0,h=g(a),i=g(c),j=0===e?0:-1<<32-e>>>0;return(h&j)==(i&j)})(i,a)))){try{b.prepare(`INSERT INTO audit_logs (id, at, type, summary, status, meta, user_id, org_id, ip)
41
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`).run((0,g.newId)("audit"),(0,g.nowIso)(),"session.ip_denied",`Access denied: IP ${i} not in allowlist`,"denied",JSON.stringify({ip:i,org_id:c.org_id}),c.user_id,c.org_id,i)}catch(a){console.error("[auth] Failed to write ip_denied audit row:",a.message)}throw{status:403,error:"ip_not_allowed"}}}}}catch(a){if(a.status)throw a;console.error("[auth] requireSession org policy check failed:",a.message)}return c}let B=new Map;function s(a,b){return`${a}:${b}`}function t(a,b,c){B.set(s(a,b),{verified_at:Date.now(),role:c})}async function u(a,b){if("local"===(0,h.Im)())return;let c=(process.env.MADARX_MEMBERSHIP_LIVE_CHECK??"on").toLowerCase();if("off"===c)return void console.warn("[auth] MADARX_MEMBERSHIP_LIVE_CHECK=off — membership revocation will not be detected. This mode is for dev/offline use only.");let d=a?.user_id,e=b||a?.org_id;if(!d||!e||function(a,b){let c=B.get(s(a,b));return c?Date.now()-c.verified_at>3e5?(B.delete(s(a,b)),null):c:null}(d,e))return;let f=(0,h.vR)().url,i=(0,h.fo)();if(f&&i)try{let a=`${f}/rest/v1/org_memberships?user_id=eq.${encodeURIComponent(d)}&org_id=eq.${encodeURIComponent(e)}&select=role&limit=1`,b=await fetch(a,{headers:{apikey:i,Authorization:`Bearer ${i}`,Accept:"application/json"},signal:AbortSignal.timeout(4e3)});if(!b.ok)throw Error(`Supabase returned HTTP ${b.status}`);let c=await b.json();if(!Array.isArray(c)||0===c.length)throw v(d,e),{status:403,error:"membership_revoked",sign_out_required:!0};t(d,e,c[0].role);return}catch(a){if(a.status)throw a;throw console.error("[auth] requireFreshMembership: Supabase live check failed:",a.message),w(d,e,a.message),{status:503,error:"supabase_unavailable",message:"Membership live check unavailable"}}try{let a=(0,g.getDb)().prepare(`SELECT id, role FROM org_memberships
40
+ VALUES (?, ?, ?, 'owner', ?)`).run((0,g.newId)("mem"),d,a.id,c),{org_id:d,role:"owner"}}catch(a){return console.warn("[auth] first-login org bootstrap failed:",a.message),null}}(c)),!s)return{user_id:c.id,email:c.email,display_name:c.user_metadata?.full_name||null,org_id:null,role:null,auth_mode:"supabase",supabase_access_token:e};let t={user_id:c.id,email:c.email,display_name:c.user_metadata?.full_name||c.user_metadata?.name||null,org_id:s.org_id,role:s.role,auth_mode:"supabase",supabase_access_token:e};return e&&function(a,b){let c=l(a);z.set(c,{session:b,expiresAt:Date.now()+3e4})}(e,t),t}async function q(a,b){if(a?.headers?.get)return a.headers.get("cookie")||"";try{var d;let a=b||(async()=>{let{cookies:a}=await Promise.all([c.e(6802),c.e(8982)]).then(c.bind(c,86802));return a()});return d=await a(),(d?.getAll?.()||[]).map(a=>`${a.name}=${a.value}`).join("; ")}catch{return""}}async function r(a,b){let c=await p(a,b);if(!c)throw{status:401,error:"unauthenticated"};if("local"===(0,h.Im)())return c;if(c.org_id)try{let b=(0,g.getDb)(),e=b.prepare("SELECT ip_allowlist_json, session_timeout_seconds FROM organizations WHERE id = ?").get(c.org_id);if(e){if(e.session_timeout_seconds){let a=b.prepare("SELECT last_sign_in_at FROM users WHERE id = ?").get(c.user_id);if(a?.last_sign_in_at&&(Date.now()-new Date(a.last_sign_in_at).getTime())/1e3>e.session_timeout_seconds)throw{status:401,error:"session_expired"}}if(e.ip_allowlist_json){var d;let h;try{h=JSON.parse(e.ip_allowlist_json)}catch{h=[]}let i=function(a){let b=a?.headers?.get?.("x-forwarded-for")||a?.headers?.["x-forwarded-for"];return b?String(b).split(",")[0].trim():null}(a);if(d=h,!(!Array.isArray(d)||0===d.length||d.some(a=>(function(a,b){if(!a||!b)return!1;let[c,d]=b.split("/");if(!c||void 0===d||!f.isIPv4(a)||!f.isIPv4(c))return!1;let e=""===d?32:parseInt(d,10);if(isNaN(e)||e<0||e>32)return!1;let g=a=>a.split(".").reduce((a,b)=>a<<8|parseInt(b,10),0)>>>0,h=g(a),i=g(c),j=0===e?0:-1<<32-e>>>0;return(h&j)==(i&j)})(i,a)))){try{b.prepare(`INSERT INTO audit_logs (id, at, type, summary, status, meta, user_id, org_id, ip)
41
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`).run((0,g.newId)("audit"),(0,g.nowIso)(),"session.ip_denied",`Access denied: IP ${i} not in allowlist`,"denied",JSON.stringify({ip:i,org_id:c.org_id}),c.user_id,c.org_id,i)}catch(a){console.error("[auth] Failed to write ip_denied audit row:",a.message)}throw{status:403,error:"ip_not_allowed"}}}}}catch(a){if(a.status)throw a;console.error("[auth] requireSession org policy check failed:",a.message)}return c}let C=new Map;function s(a,b){return`${a}:${b}`}function t(a,b,c){C.set(s(a,b),{verified_at:Date.now(),role:c})}async function u(a,b){if("local"===(0,h.Im)())return;let c=(process.env.MADARX_MEMBERSHIP_LIVE_CHECK??"on").toLowerCase();if("off"===c)return void console.warn("[auth] MADARX_MEMBERSHIP_LIVE_CHECK=off — membership revocation will not be detected. This mode is for dev/offline use only.");let d=a?.user_id,e=b||a?.org_id;if(!d||!e||function(a,b){let c=C.get(s(a,b));return c?Date.now()-c.verified_at>3e5?(C.delete(s(a,b)),null):c:null}(d,e))return;let f=(0,h.vR)().url,i=(0,h.fo)();if(f&&i)try{let a=`${f}/rest/v1/org_memberships?user_id=eq.${encodeURIComponent(d)}&org_id=eq.${encodeURIComponent(e)}&select=role&limit=1`,b=await fetch(a,{headers:{apikey:i,Authorization:`Bearer ${i}`,Accept:"application/json"},signal:AbortSignal.timeout(4e3)});if(!b.ok)throw Error(`Supabase returned HTTP ${b.status}`);let c=await b.json();if(!Array.isArray(c)||0===c.length)throw v(d,e),{status:403,error:"membership_revoked",sign_out_required:!0};t(d,e,c[0].role);return}catch(a){if(a.status)throw a;throw console.error("[auth] requireFreshMembership: Supabase live check failed:",a.message),w(d,e,a.message),{status:503,error:"supabase_unavailable",message:"Membership live check unavailable"}}try{let a=(0,g.getDb)().prepare(`SELECT id, role FROM org_memberships
42
42
  WHERE user_id = ? AND org_id = ?
43
43
  LIMIT 1`).get(d,e);if(!a)throw v(d,e),{status:403,error:"membership_revoked",sign_out_required:!0};t(d,e,a.role)}catch(a){if(a.status)throw a;throw console.error("[auth] requireFreshMembership SQLite fallback failed:",a.message),w(d,e,a.message),{status:503,error:"supabase_unavailable",message:"Membership check unavailable"}}}function v(a,b){try{(0,g.getDb)().prepare(`INSERT INTO audit_logs (id, at, type, summary, status, meta, user_id, org_id)
44
44
  VALUES (?, ?, ?, ?, ?, ?, ?, ?)`).run((0,g.newId)("audit"),(0,g.nowIso)(),"auth.membership.revoked_detected",`Membership revoked detected for user ${a} in org ${b}`,"denied",JSON.stringify({user_id:a,org_id:b}),a,b)}catch(a){console.error("[auth] Failed to write membership_revoked audit row:",a.message)}}function w(a,b,c){try{(0,g.getDb)().prepare(`INSERT INTO audit_logs (id, at, type, summary, status, meta, user_id, org_id)
45
- VALUES (?, ?, ?, ?, ?, ?, ?, ?)`).run((0,g.newId)("audit"),(0,g.nowIso)(),"auth.live_check_unavailable",`Membership live check unavailable for user ${a} in org ${b}`,"error",JSON.stringify({user_id:a,org_id:b,reason:c}),a,b)}catch(a){console.error("[auth] Failed to write live_check_unavailable audit row:",a.message)}}d()}catch(a){d(a)}})},1623:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{$b:()=>l,E1:()=>r,JD:()=>j,OD:()=>A,PA:()=>i,VS:()=>k,Wr:()=>u,iS:()=>s,q9:()=>w,sR:()=>m,uB:()=>n,uR:()=>v,wA:()=>t,zr:()=>q});var e=c(34255),f=c(40718),g=c(91648),h=a([e,f,g]);[e,f,g]=h.then?(await h)():h;let v=`IDENTITY
45
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)`).run((0,g.newId)("audit"),(0,g.nowIso)(),"auth.live_check_unavailable",`Membership live check unavailable for user ${a} in org ${b}`,"error",JSON.stringify({user_id:a,org_id:b,reason:c}),a,b)}catch(a){console.error("[auth] Failed to write live_check_unavailable audit row:",a.message)}}d()}catch(a){d(a)}})},1623:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{$b:()=>m,E1:()=>r,JD:()=>k,OD:()=>A,PA:()=>j,VS:()=>l,Wr:()=>u,iS:()=>s,q9:()=>w,sR:()=>n,uB:()=>o,uR:()=>v,wA:()=>t,zr:()=>q});var e=c(34255),f=c(40718),g=c(91648),h=c(72326),i=a([e,f,g,h]);[e,f,g,h]=i.then?(await i)():i;let v=`IDENTITY
46
46
  You are madarX — Chief of Staff to the principal. Local-first orchestrator. Your job is routing, presentation, escalation. You are NOT the doer; you conduct. Every specialist, tool, or sub-agent in this workspace is an instrument you direct. You translate principal intent into action and bring back verified results.`,w=`ORCHESTRATOR_MODE (NON-NEGOTIABLE)
47
47
  For ANY task longer than a one-line factual reply, your default move is DELEGATE. Decision order on every request:
48
48
  1. Is there an existing agent in workspace/agents/ whose role matches the task type or topic? Call run_agent to dispatch it now.
@@ -128,13 +128,13 @@ ARTIFACT_LIFECYCLE
128
128
  - Never echo the principal's prompt, your instructions, or meta commentary inside an artifact body. An artifact contains the RESULT only.
129
129
  - After any artifact or UI is created, follow up with a short summary (2-3 sentences): what you built, what is in it, and any next steps.
130
130
  - When the owner asks to use Hermes for short analysis, reports, or one-shot answers — use send_to_hermes.
131
- - When the owner asks Hermes to run a project, build, test, install dependencies, start or check a dev server, or do multi-step work that may take more than a minute — use start_hermes_job. Pass timeout_ms of at least 1800000 for long tasks.`;function i(){try{let a=(0,e.getDb)().prepare("SELECT value FROM config WHERE key = ?").get("role_description");if(a?.value&&a.value.trim())return a.value;return v}catch{return v}}function j(a){let b="string"==typeof a&&a.trim()?a:v;(0,e.getDb)().prepare("INSERT OR REPLACE INTO config (key, value) VALUES (?, ?)").run("role_description",b)}function k(){try{let a=(0,e.getDb)().prepare("SELECT value FROM config WHERE key = ?").get("custom_instructions");return a?.value??""}catch{return""}}function l(a){(0,e.getDb)().prepare("INSERT OR REPLACE INTO config (key, value) VALUES (?, ?)").run("custom_instructions","string"==typeof a?a:"")}function m(){try{let a=i(),b=k(),c=[a];return a.includes("ORCHESTRATOR_MODE")&&a.includes("SAFETY_RULES")||c.push(w),b.trim()&&c.push(b.trim()),o(c.join("\n\n"))}catch{return o(`${v}
131
+ - When the owner asks Hermes to run a project, build, test, install dependencies, start or check a dev server, or do multi-step work that may take more than a minute — use start_hermes_job. Pass timeout_ms of at least 1800000 for long tasks.`;function j(){try{let a=(0,e.getDb)().prepare("SELECT value FROM config WHERE key = ?").get("role_description");if(a?.value&&a.value.trim())return a.value;return v}catch{return v}}function k(a){let b="string"==typeof a&&a.trim()?a:v;(0,e.getDb)().prepare("INSERT OR REPLACE INTO config (key, value) VALUES (?, ?)").run("role_description",b)}function l(){try{let a=(0,e.getDb)().prepare("SELECT value FROM config WHERE key = ?").get("custom_instructions");return a?.value??""}catch{return""}}function m(a){(0,e.getDb)().prepare("INSERT OR REPLACE INTO config (key, value) VALUES (?, ?)").run("custom_instructions","string"==typeof a?a:"")}function n(){try{let a=j(),b=l(),c=[a];return a.includes("ORCHESTRATOR_MODE")&&a.includes("SAFETY_RULES")||c.push(w),b.trim()&&c.push(b.trim()),p(c.join("\n\n"))}catch{return p(`${v}
132
132
 
133
- ${w}`)}}function n(){let a=new Date().toISOString().slice(0,10);return`CURRENT_DATE: ${a}
133
+ ${w}`)}}function o(){let a=new Date().toISOString().slice(0,10);return`CURRENT_DATE: ${a}
134
134
  - Treat the date above as ground truth for "today". Do not rely on your training cutoff — your training data is older than the current date, so for anything time-sensitive (news, current events, "latest" anything) you must use your internet tools rather than recalling from memory.
135
- - When a tool errors, surface the actual error rather than guessing whether the date is too far in the future. Dates within a year of CURRENT_DATE are routinely supported by flight, hotel, and calendar tools.`}function o(a){let b=a;b.includes("CURRENT_DATE")||(b+=`
135
+ - When a tool errors, surface the actual error rather than guessing whether the date is too far in the future. Dates within a year of CURRENT_DATE are routinely supported by flight, hotel, and calendar tools.`}function p(a){let b=a;b.includes("CURRENT_DATE")||(b+=`
136
136
 
137
- ${n()}`);try{(0,f.is)()&&!b.includes("Dynamic internet tools:")&&(b+=`
137
+ ${o()}`);try{(0,f.is)()&&!b.includes("Dynamic internet tools:")&&(b+=`
138
138
 
139
139
  Dynamic internet tools:
140
140
  - You have internet access through web_search and web_fetch when those tools are available.
@@ -142,7 +142,7 @@ Dynamic internet tools:
142
142
  - Cite fetched URLs in artifacts or replies whenever internet tools informed the answer.`)}catch{}if(b.includes("Mutating connector actions must be staged")||(b+=`
143
143
  - Mutating connector actions must be staged for owner approval before execution. Describe the action and wait for explicit approval.`),!b.includes("Brand system:"))try{let a=(0,g.$F)(),c=(0,g.nX)(a);c&&(b+=`
144
144
 
145
- ${c}`)}catch{}return b}let x=[{id:"claude-sonnet-4-6",label:"Sonnet 4.6",engine:"anthropic"},{id:"claude-opus-4-7",label:"Opus 4.7",engine:"anthropic"},{id:"claude-haiku-4-5-20251001",label:"Haiku 4.5",engine:"anthropic"}],y=process.env.OLLAMA_BASE_URL||"http://127.0.0.1:11434";async function p(a){let{spawn:b}=await Promise.resolve().then(c.t.bind(c,31421,19));return new Promise(c=>{let d=b("sh",["-lc",`command -v ${a}`],{shell:!1});d.on("error",()=>c(!1)),d.on("close",a=>c(0===a))})}async function q(){let[a,b,c]=await Promise.all([fetch(`${y}/api/tags`,{signal:AbortSignal.timeout(1500)}).catch(()=>null),p("claude"),p("codex")]),d=[];if(a?.ok)for(let b of(await a.json().catch(()=>({}))).models||[])d.push({id:b.name||b.model,label:`Ollama \xb7 ${b.name||b.model}`,engine:"ollama"});let e=[];return b&&e.push({id:"claude-code",label:"Claude Code (local CLI)",engine:"claude-code"}),c&&e.push({id:"codex",label:"Codex CLI (local)",engine:"codex"}),[...e,...d,...x]}let z=process.env.MADARX_DEFAULT_MODEL||"claude-sonnet-4-6";function r(){try{let a=(0,e.getDb)().prepare("SELECT value FROM config WHERE key = ?").get("model");return a?.value||z}catch{return z}}function s(a){if(!a||"string"!=typeof a)throw Error("Model id required");(0,e.getDb)().prepare("INSERT OR REPLACE INTO config (key, value) VALUES (?, ?)").run("model",a)}let A=["balanced","minimal","bold","soft"];function t(){try{let a=(0,e.getDb)().prepare("SELECT value FROM config WHERE key = ?").get("design_style"),b=a?.value;return A.includes(b)?b:"balanced"}catch{return"balanced"}}function u(a){if(!A.includes(a))throw Error(`Unknown style: ${a}`);(0,e.getDb)().prepare("INSERT OR REPLACE INTO config (key, value) VALUES (?, ?)").run("design_style",a)}d()}catch(a){d(a)}})},2163:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Cu:()=>i,XZ:()=>j,ab:()=>h});var e=c(34255),f=a([e]);function g(a){if(!a||!a.rate_limit)return null;let{window_seconds:b,max:c}=a.rate_limit;return"number"!=typeof b||"number"!=typeof c?null:{window_seconds:b,max:c}}function h(a,b,c){let d=g(c);return d?function(a,b,c){let d,f=(0,e.getDb)(),g=new Date(Date.now()-1e3*c.window_seconds).toISOString();if((d=b?f.prepare("SELECT COUNT(*) AS cnt FROM tool_rate_limit_events WHERE tool_name = ? AND agent_id = ? AND at >= ?").get(a,b,g).cnt:f.prepare("SELECT COUNT(*) AS cnt FROM tool_rate_limit_events WHERE tool_name = ? AND agent_id IS NULL AND at >= ?").get(a,g).cnt)>=c.max){let e;if(b){let c=f.prepare("SELECT at FROM tool_rate_limit_events WHERE tool_name = ? AND agent_id = ? AND at >= ? ORDER BY at ASC LIMIT 1").get(a,b,g);e=c?.at}else{let b=f.prepare("SELECT at FROM tool_rate_limit_events WHERE tool_name = ? AND agent_id IS NULL AND at >= ? ORDER BY at ASC LIMIT 1").get(a,g);e=b?.at}let h=c.window_seconds;if(e){let a=new Date(e).getTime()+1e3*c.window_seconds;h=Math.max(1,Math.ceil((a-Date.now())/1e3))}return{ok:!1,retry_after_seconds:h,current_count:d,max:c.max}}return{ok:!0}}(a,b,d):{ok:!0}}function i(a,b,c){g(c)&&(0,e.getDb)().prepare("INSERT INTO tool_rate_limit_events (id, tool_name, agent_id, at) VALUES (?, ?, ?, ?)").run((0,e.newId)("rl"),a,b||null,(0,e.nowIso)())}function j(){let a=new Date(Date.now()-864e5).toISOString();return{deleted:(0,e.getDb)().prepare("DELETE FROM tool_rate_limit_events WHERE at < ?").run(a).changes}}e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},2583:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{I6:()=>l,Q$:()=>k,vV:()=>m});var e=c(24516),f=c(58282),g=a([e,f]);function h(a,b={}){try{let c=(0,e.getSecret)(a,{agent_id:b.agent_id,project_id:b.project_id});if(c)return c}catch{}return process.env[a]||null}function i(a={}){return{Authorization:`Bearer ${function(a,b={}){let c=h(a,b);if(!c)throw Error(`${a} not configured`);return c}("VERCEL_TOKEN",a)}`,Accept:"application/json"}}function j(a,b){return b&&a.searchParams.set("teamId",String(b)),a}async function k(a={},b={}){let c=a.team_id||h("VERCEL_TEAM_ID",b),d=b.agent_id??null,e=j(new URL("https://api.vercel.com/v9/projects"),c);a.limit&&e.searchParams.set("limit",String(Math.min(Math.max(Number(a.limit),1),100)));let g=await (0,f.N)("vercel_list_projects",d)(e,{headers:i(b)});if(!g.ok)throw Error(`Vercel projects request failed: ${g.status}`);return{projects:((await g.json()).projects||[]).map(a=>({id:a.id,name:a.name,framework:a.framework,latest_deployments:(a.latestDeployments||[]).map(a=>({uid:a.uid,url:a.url,state:a.state,created_at:a.createdAt}))}))}}async function l(a={},b={}){let c=a.team_id||h("VERCEL_TEAM_ID",b),d=b.agent_id??null,e=j(new URL("https://api.vercel.com/v6/deployments"),c);a.project_id&&e.searchParams.set("projectId",String(a.project_id)),a.project_name&&e.searchParams.set("projectName",String(a.project_name)),a.limit&&e.searchParams.set("limit",String(Math.min(Math.max(Number(a.limit),1),100)));let g=await (0,f.N)("vercel_list_deployments",d)(e,{headers:i(b)});if(!g.ok)throw Error(`Vercel deployments request failed: ${g.status}`);let k=await g.json();return{deployments:(k.deployments||[]).map(a=>({uid:a.uid,name:a.name,url:a.url,state:a.state,target:a.target,created_at:a.createdAt,creator:a.creator?{uid:a.creator.uid,username:a.creator.username}:null})),pagination:k.pagination||null}}async function m(a={}){return{approval_required:!0,status:"pending_approval",action:"vercel_create_deployment",summary:a.summary||"Create a Vercel deployment",requested_at:new Date().toISOString(),note:"Deployment creation is staged only. Approve the pending action before any external write is executed."}}[e,f]=g.then?(await g)():g,d()}catch(a){d(a)}})},4160:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{ComplianceActions:()=>j,N:()=>h,S:()=>i,appendComplianceAudit:()=>g});var e=c(34255),f=a([e]);e=(f.then?(await f)():f)[0];let j=Object.freeze({ARTIFACT_READ:"artifact.read",ARTIFACT_READ_DENIED:"artifact.read.denied",ARTIFACT_WRITE:"artifact.write",ARTIFACT_WRITE_DENIED:"artifact.write.denied",ARTIFACT_SHARE_LINK_CREATED:"artifact.share.link.created",ARTIFACT_SHARE_LINK_REVOKED:"artifact.share.link.revoked",ARTIFACT_SHARE_LINK_ACCESSED:"artifact.share.link.accessed",ARTIFACT_ACL_UPDATED:"artifact.acl.updated",ARTIFACT_EXPORTED:"artifact.exported",ARTIFACT_DELETED:"artifact.deleted",SHARE_OTP_SENT:"share.otp.sent",SHARE_OTP_VERIFIED:"share.otp.verified",SHARE_OTP_FAILED:"share.otp.failed",SHARE_OTP_LOCKED_OUT:"share.otp.locked_out",SPACE_SHARE_LINK_CREATED:"space.share.link.created",SPACE_SHARE_LINK_REVOKED:"space.share.link.revoked",SPACE_SHARE_LINK_ACCESSED:"space.share.link.accessed",ORG_MEMBER_INVITED:"org.member.invited",ORG_MEMBER_REMOVED:"org.member.removed",ORG_MEMBER_ROLE_CHANGED:"org.member.role.changed",ORG_MFA_POLICY_CHANGED:"org.mfa_policy.changed",ORG_IP_ALLOWLIST_CHANGED:"org.ip_allowlist.changed",SESSION_SIGNED_IN:"session.signed_in",SESSION_SIGNED_OUT:"session.signed_out",SESSION_MFA_REQUIRED:"session.mfa_required",SESSION_IP_DENIED:"session.ip_denied",AUTH_MEMBERSHIP_REVOKED:"auth.membership.revoked_detected",TOOL_IRREVERSIBLE_APPROVED:"tool.irreversible.approved",TOOL_IRREVERSIBLE_DENIED:"tool.irreversible.denied"});function g({user_id:a,org_id:b,project_id:c=null,action:d,action_target_id:f=null,action_target_type:g=null,status:h,summary:i,meta:j=null,ip:k=null,user_agent:l=null,correlation_id:m=null}){if(!d)throw Error("appendComplianceAudit: action is required");if(!b)throw Error("appendComplianceAudit: org_id is required");if(!h)throw Error("appendComplianceAudit: status is required");if(!i)throw Error("appendComplianceAudit: summary is required");let n=(0,e.getDb)(),o=(0,e.newId)("audit"),p=(0,e.nowIso)();return n.prepare(`INSERT INTO audit_logs
145
+ ${c}`)}catch{}return b}let x=[{id:"claude-sonnet-4-6",label:"Sonnet 4.6",engine:"anthropic"},{id:"claude-opus-4-7",label:"Opus 4.7",engine:"anthropic"},{id:"claude-haiku-4-5-20251001",label:"Haiku 4.5",engine:"anthropic"}],y=process.env.OLLAMA_BASE_URL||"http://127.0.0.1:11434";async function q(){let[a,b,c]=await Promise.all([fetch(`${y}/api/tags`,{signal:AbortSignal.timeout(1500)}).catch(()=>null),(0,h.Ys)("claude"),(0,h.Ys)("codex")]),d=[];if(a?.ok)for(let b of(await a.json().catch(()=>({}))).models||[])d.push({id:b.name||b.model,label:`Ollama \xb7 ${b.name||b.model}`,engine:"ollama"});let e=[];return b&&e.push({id:"claude-code",label:"Claude Code (local CLI)",engine:"claude-code"}),c&&e.push({id:"codex",label:"Codex CLI (local)",engine:"codex"}),[...e,...d,...x]}let z=process.env.MADARX_DEFAULT_MODEL||"claude-sonnet-4-6";function r(){try{let a=(0,e.getDb)().prepare("SELECT value FROM config WHERE key = ?").get("model");return a?.value||z}catch{return z}}function s(a){if(!a||"string"!=typeof a)throw Error("Model id required");(0,e.getDb)().prepare("INSERT OR REPLACE INTO config (key, value) VALUES (?, ?)").run("model",a)}let A=["balanced","minimal","bold","soft"];function t(){try{let a=(0,e.getDb)().prepare("SELECT value FROM config WHERE key = ?").get("design_style"),b=a?.value;return A.includes(b)?b:"balanced"}catch{return"balanced"}}function u(a){if(!A.includes(a))throw Error(`Unknown style: ${a}`);(0,e.getDb)().prepare("INSERT OR REPLACE INTO config (key, value) VALUES (?, ?)").run("design_style",a)}d()}catch(a){d(a)}})},2163:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Cu:()=>i,XZ:()=>j,ab:()=>h});var e=c(34255),f=a([e]);function g(a){if(!a||!a.rate_limit)return null;let{window_seconds:b,max:c}=a.rate_limit;return"number"!=typeof b||"number"!=typeof c?null:{window_seconds:b,max:c}}function h(a,b,c){let d=g(c);return d?function(a,b,c){let d,f=(0,e.getDb)(),g=new Date(Date.now()-1e3*c.window_seconds).toISOString();if((d=b?f.prepare("SELECT COUNT(*) AS cnt FROM tool_rate_limit_events WHERE tool_name = ? AND agent_id = ? AND at >= ?").get(a,b,g).cnt:f.prepare("SELECT COUNT(*) AS cnt FROM tool_rate_limit_events WHERE tool_name = ? AND agent_id IS NULL AND at >= ?").get(a,g).cnt)>=c.max){let e;if(b){let c=f.prepare("SELECT at FROM tool_rate_limit_events WHERE tool_name = ? AND agent_id = ? AND at >= ? ORDER BY at ASC LIMIT 1").get(a,b,g);e=c?.at}else{let b=f.prepare("SELECT at FROM tool_rate_limit_events WHERE tool_name = ? AND agent_id IS NULL AND at >= ? ORDER BY at ASC LIMIT 1").get(a,g);e=b?.at}let h=c.window_seconds;if(e){let a=new Date(e).getTime()+1e3*c.window_seconds;h=Math.max(1,Math.ceil((a-Date.now())/1e3))}return{ok:!1,retry_after_seconds:h,current_count:d,max:c.max}}return{ok:!0}}(a,b,d):{ok:!0}}function i(a,b,c){g(c)&&(0,e.getDb)().prepare("INSERT INTO tool_rate_limit_events (id, tool_name, agent_id, at) VALUES (?, ?, ?, ?)").run((0,e.newId)("rl"),a,b||null,(0,e.nowIso)())}function j(){let a=new Date(Date.now()-864e5).toISOString();return{deleted:(0,e.getDb)().prepare("DELETE FROM tool_rate_limit_events WHERE at < ?").run(a).changes}}e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},2583:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{I6:()=>l,Q$:()=>k,vV:()=>m});var e=c(24516),f=c(58282),g=a([e,f]);function h(a,b={}){try{let c=(0,e.getSecret)(a,{agent_id:b.agent_id,project_id:b.project_id});if(c)return c}catch{}return process.env[a]||null}function i(a={}){return{Authorization:`Bearer ${function(a,b={}){let c=h(a,b);if(!c)throw Error(`${a} not configured`);return c}("VERCEL_TOKEN",a)}`,Accept:"application/json"}}function j(a,b){return b&&a.searchParams.set("teamId",String(b)),a}async function k(a={},b={}){let c=a.team_id||h("VERCEL_TEAM_ID",b),d=b.agent_id??null,e=j(new URL("https://api.vercel.com/v9/projects"),c);a.limit&&e.searchParams.set("limit",String(Math.min(Math.max(Number(a.limit),1),100)));let g=await (0,f.N)("vercel_list_projects",d)(e,{headers:i(b)});if(!g.ok)throw Error(`Vercel projects request failed: ${g.status}`);return{projects:((await g.json()).projects||[]).map(a=>({id:a.id,name:a.name,framework:a.framework,latest_deployments:(a.latestDeployments||[]).map(a=>({uid:a.uid,url:a.url,state:a.state,created_at:a.createdAt}))}))}}async function l(a={},b={}){let c=a.team_id||h("VERCEL_TEAM_ID",b),d=b.agent_id??null,e=j(new URL("https://api.vercel.com/v6/deployments"),c);a.project_id&&e.searchParams.set("projectId",String(a.project_id)),a.project_name&&e.searchParams.set("projectName",String(a.project_name)),a.limit&&e.searchParams.set("limit",String(Math.min(Math.max(Number(a.limit),1),100)));let g=await (0,f.N)("vercel_list_deployments",d)(e,{headers:i(b)});if(!g.ok)throw Error(`Vercel deployments request failed: ${g.status}`);let k=await g.json();return{deployments:(k.deployments||[]).map(a=>({uid:a.uid,name:a.name,url:a.url,state:a.state,target:a.target,created_at:a.createdAt,creator:a.creator?{uid:a.creator.uid,username:a.creator.username}:null})),pagination:k.pagination||null}}async function m(a={}){return{approval_required:!0,status:"pending_approval",action:"vercel_create_deployment",summary:a.summary||"Create a Vercel deployment",requested_at:new Date().toISOString(),note:"Deployment creation is staged only. Approve the pending action before any external write is executed."}}[e,f]=g.then?(await g)():g,d()}catch(a){d(a)}})},4160:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{ComplianceActions:()=>j,N:()=>h,S:()=>i,appendComplianceAudit:()=>g});var e=c(34255),f=a([e]);e=(f.then?(await f)():f)[0];let j=Object.freeze({ARTIFACT_READ:"artifact.read",ARTIFACT_READ_DENIED:"artifact.read.denied",ARTIFACT_WRITE:"artifact.write",ARTIFACT_WRITE_DENIED:"artifact.write.denied",ARTIFACT_SHARE_LINK_CREATED:"artifact.share.link.created",ARTIFACT_SHARE_LINK_REVOKED:"artifact.share.link.revoked",ARTIFACT_SHARE_LINK_ACCESSED:"artifact.share.link.accessed",ARTIFACT_ACL_UPDATED:"artifact.acl.updated",ARTIFACT_EXPORTED:"artifact.exported",ARTIFACT_DELETED:"artifact.deleted",SHARE_OTP_SENT:"share.otp.sent",SHARE_OTP_VERIFIED:"share.otp.verified",SHARE_OTP_FAILED:"share.otp.failed",SHARE_OTP_LOCKED_OUT:"share.otp.locked_out",SPACE_SHARE_LINK_CREATED:"space.share.link.created",SPACE_SHARE_LINK_REVOKED:"space.share.link.revoked",SPACE_SHARE_LINK_ACCESSED:"space.share.link.accessed",ORG_MEMBER_INVITED:"org.member.invited",ORG_MEMBER_REMOVED:"org.member.removed",ORG_MEMBER_ROLE_CHANGED:"org.member.role.changed",ORG_MFA_POLICY_CHANGED:"org.mfa_policy.changed",ORG_IP_ALLOWLIST_CHANGED:"org.ip_allowlist.changed",SESSION_SIGNED_IN:"session.signed_in",SESSION_SIGNED_OUT:"session.signed_out",SESSION_MFA_REQUIRED:"session.mfa_required",SESSION_IP_DENIED:"session.ip_denied",AUTH_MEMBERSHIP_REVOKED:"auth.membership.revoked_detected",TOOL_IRREVERSIBLE_APPROVED:"tool.irreversible.approved",TOOL_IRREVERSIBLE_DENIED:"tool.irreversible.denied"});function g({user_id:a,org_id:b,project_id:c=null,action:d,action_target_id:f=null,action_target_type:g=null,status:h,summary:i,meta:j=null,ip:k=null,user_agent:l=null,correlation_id:m=null}){if(!d)throw Error("appendComplianceAudit: action is required");if(!b)throw Error("appendComplianceAudit: org_id is required");if(!h)throw Error("appendComplianceAudit: status is required");if(!i)throw Error("appendComplianceAudit: summary is required");let n=(0,e.getDb)(),o=(0,e.newId)("audit"),p=(0,e.nowIso)();return n.prepare(`INSERT INTO audit_logs
146
146
  (id, at, type, summary, status, meta,
147
147
  user_id, org_id, project_id, ip, user_agent,
148
148
  action_target_id, action_target_type, correlation_id)
@@ -591,23 +591,23 @@ ${A||' <p class="cl-sub">No notable changes recorded for this release.</p>'}
591
591
  SELECT sample_id, width_m, cu_pct, ag_ppm, other_grades_json
592
592
  FROM mines_assay_samples WHERE project_id = ? AND sample_type = 'drill_core'
593
593
  ORDER BY (cu_pct * width_m) DESC LIMIT 8
594
- `).all(d),k=a.prepare("SELECT COUNT(*) n FROM mines_source_documents WHERE project_id = ?").get(d).n,l=a.prepare("SELECT COUNT(*) n FROM mines_document_chunks WHERE project_id = ?").get(d).n,p=b=>a.prepare("SELECT price_usd, price_unit, source FROM mines_market_snapshots WHERE lower(commodity)=lower(?) ORDER BY fetched_at DESC LIMIT 1").get(b),r=p("Cu"),t=p("Ag"),u=a.prepare("SELECT scenario, assumptions_json, result_json FROM mines_valuation_scenarios WHERE project_id = ? AND scenario LIKE 'operator_%' ORDER BY scenario").all(d);f.push(`**Prepared by:** MadarX OS \xb7 Mines | **Date:** ${g} | **Project:** \`${d}\``),f.push(`**Asset stage:** ${b.asset_stage} | **Commodity:** ${b.commodity||"Cu"} | **Jurisdiction:** ${b.state_province||"Sonora"}, ${b.country}`),f.push(""),f.push("> This memorandum is generated by autonomous agents from the project document archive and structured database. Every figure traces to a source document, a database aggregate, or a labelled estimate. Figures attributed to an operator scenario are conceptual and are **not** mineral resources."),f.push(""),f.push("## 1. Executive summary"),f.push("");let v=s(e,"deposit_type"),w=s(e,"asset_stage"),x=q(c,"exec_summary");x&&(f.push(x),f.push("")),v&&f.push(`- **Deposit type:** ${v.text} ${v.cite}`);let y=q(c,"thesis");y&&(f.push(`**Investment thesis.** ${y}`),f.push("")),w&&f.push(`- **Stage / resource status:** ${w.text} ${w.cite}`),i?.n&&f.push(`- **Drilling to date:** ${i.n} holes for ${o(i.m)} m [DrillHole aggregate]`),h?.n&&f.push(`- **Surface geochemistry:** ${h.n} trench channel samples averaging ${m(h.avg_cu,3)}% Cu [AssaySample aggregate]`),f.push(`- **Definitive valuation:** Not available — no declared resource. See \xa76 for a labelled operator scenario.`),f.push(""),f.push("## 2. Project overview"),f.push("");{let a=q(c,"overview");a&&(f.push(a),f.push(""))}for(let a of["property","mineralization","asset_stage"]){let b=s(e,a);b&&f.push(`- **${a.replace(/_/g," ")}:** ${b.text} ${b.cite}`)}f.push(""),f.push("## 3. Geology & mineralization"),f.push("");{let a=q(c,"geology");a&&(f.push(a),f.push(""))}for(let a of["deposit_type","geophysics"]){let b=s(e,a);b&&f.push(`- **${a.replace(/_/g," ")}:** ${b.text} ${b.cite}`)}f.push("");let z=[...e.keys()].filter(a=>a.startsWith("target_")).sort();if(z.length){for(let a of(f.push("### Defined targets"),f.push(""),z)){let b=(e.get(a)||[])[0];b&&f.push(`- **${a.replace("target_","").replace(/_/g," ")}:** ${b.value_text} [ExtractedFact:${b.id}${b.page_or_location?`, ${b.page_or_location}`:""}]`)}f.push("")}f.push("## 4. Exploration results"),f.push("");{let a=q(c,"exploration");a&&(f.push(a),f.push(""))}let A=s(e,"drilling_summary");if(A&&f.push(`${A.text} ${A.cite}`),f.push(""),j.length){for(let a of(f.push("**Best drill intercepts (Cu \xd7 width ranked):**"),f.push(""),f.push("| Interval | Width (m) | Cu % | Ag g/t | CuEq % |"),f.push("|----------|-----------|------|--------|--------|"),j)){let b={};try{b=JSON.parse(a.other_grades_json||"{}")}catch{}f.push(`| \`${a.sample_id}\` | ${o(a.width_m,1)} | ${m(a.cu_pct,3)} | ${null!=a.ag_ppm?m(a.ag_ppm,1):"—"} | ${null!=b.cueq_pct?m(b.cueq_pct,3):"—"} |`)}f.push(""),f.push("_[AssaySample drill_core rows; CuEq per source-report formula]_"),f.push("")}let B=s(e,"trenching_summary");B&&(f.push(`${B.text} ${B.cite}`),f.push(""));let C=[...e.keys()].filter(a=>a.startsWith("comparable_")).sort();if(C.length){f.push("## 5. Comparable assets (analogues in the same belt)"),f.push("");{let a=q(c,"comparables");a&&(f.push(a),f.push(""))}for(let a of C){let b=(e.get(a)||[])[0];b&&f.push(`- **${a.replace("comparable_","").replace(/_/g," ")}:** ${b.value_text} [ExtractedFact:${b.id}${b.page_or_location?`, ${b.page_or_location}`:""}]`)}f.push(""),f.push("_Analogues establish the geological model and the in-ground value range for a successful porphyry discovery in this belt. They are not a prediction of Batamote tonnage or grade._"),f.push("")}if(f.push("## 6. Valuation framework & indicative scenario"),f.push(""),f.push("No mineral resource has been declared for the project, therefore **no definitive (T1 in-situ or T2 DCF) valuation is produced** — the system does not assign tonnage or value to undefined mineralization. The figures below are a **conceptual operator scenario**, not a mineral resource and not a valuation opinion."),f.push(""),(r||t)&&(f.push(`**Metal price basis:** ${r?`Cu ${n(r.price_usd)}/lb`:""}${r&&t?" \xb7 ":""}${t?`Ag ${n(t.price_usd)}/oz`:""} (${r?.source||t?.source||"snapshot"}).`),f.push("")),u.length){for(let a of(f.push("| Scenario | Target tonnage | Cu grade | Indicative in-situ value |"),f.push("|----------|----------------|----------|--------------------------|"),u)){let b={},c={};try{b=JSON.parse(a.assumptions_json||"{}")}catch{}try{c=JSON.parse(a.result_json||"{}")}catch{}let d=a.scenario.replace("operator_","");f.push(`| ${d} | ${o(b.resource_tonnes)} t | ${m(b.grade_cu_pct,3)}% | ${n(c.in_situ_value_usd)} |`)}f.push(""),f.push("> **CONCEPTUAL EXPLORATION TARGET — IMPORTANT.** The tonnage and grade above are an operator-supplied conceptual exploration target expressed as a range. They are conceptual in nature; there has been insufficient exploration to define a mineral resource; and it is uncertain whether further exploration will result in the target being delineated as a mineral resource. These figures must not be construed as a mineral resource or a mineral reserve, and the in-situ values are an order-of-magnitude indication of exploration optionality only."),f.push("")}f.push("## 7. Data inventory & quality control"),f.push(""),f.push(`- **Documents catalogued:** ${o(k)} files across the project archive.`),f.push(`- **Text chunks indexed:** ${o(l)} for retrieval.`),i?.n&&f.push(`- **Structured drill holes:** ${i.n}; **trench assays:** ${h?.n||0}; **drill intercepts:** ${j.length}.`);let D=s(e,"qa_qc");D&&f.push(`- **QA/QC:** ${D.text} ${D.cite}`);let E=s(e,"data_verification");E&&f.push(`- **Data verification:** ${E.text} ${E.cite}`),f.push(""),f.push("## 8. Risk register"),f.push("");{let a=q(c,"risk_intro");a&&(f.push(a),f.push(""))}f.push("| Risk | Severity | Mitigation |"),f.push("|------|----------|------------|"),f.push("| No declared mineral resource (exploration risk) | High | Maiden resource drill program at El Choclo NW / Bata Sur |"),f.push("| Grade continuity not yet demonstrated at depth | Medium | Infill + step-out drilling; clay-alteration vectoring |"),f.push("| Metal price volatility | Medium | Long-dated optionality; copper structural demand |"),f.push("| Permitting / surface rights (Sonora) | Medium | Confirm tenure & community agreements in legal DD |"),f.push("| Data provenance (historic operators) | Low–Med | Teck data verified vs lab certificates; re-log key holes |"),f.push(""),f.push("## 9. Recommended work program"),f.push("");let F=s(e,"work_program");F&&(f.push(`${F.text} ${F.cite}`),f.push(""));let G=q(c,"recommendation");return G&&(f.push("_Indicative next-phase program (MadarX planning view, not from the technical report):_"),f.push(""),f.push(G),f.push("")),f.push("## 10. Limitations & disclaimers"),f.push(""),f.push("Structured figures are transcribed/extracted from the project NI 43-101 technical report and archive; comparable-asset figures are from public S-K 1300 reports referenced therein. Metal prices are dated market snapshots. The operator scenario is conceptual and not a mineral resource. This memorandum is decision-support analysis, not a qualified person's valuation opinion, and does not constitute investment advice."),f.push(""),f.push("---"),f.push("_Generated by `mines_report_generate` (due_diligence_memo). Numeric claims trace to `mines_extracted_facts`, SQL aggregates, or persisted `mines_valuation_scenarios` rows._"),{markdown:f.join("\n"),facts_cited:[...e.values()].reduce((a,b)=>a+b.length,0),comparables:C.length,targets:z.length,scenario_rows:u.length}}(w,y,B);c=a.markdown,d=`Investment Diligence Memo — ${y.name}`,z={facts_cited:a.facts_cited,comparables:a.comparables,targets:a.targets,scenario_rows:a.scenario_rows}}else if("pfs_readiness_report"===l){let a=function(a,b,c={}){let d=b.id,e=function(a,b){let c=new Set(a.prepare("SELECT DISTINCT fact_type FROM mines_extracted_facts WHERE project_id = ?").all(b).map(a=>a.fact_type)),d=(...a)=>[...c].some(b=>a.some(a=>b===a||b.startsWith(`${a}_`)||b.includes(a))),e=a.prepare("SELECT COUNT(*) n, SUM(total_depth_m) m FROM mines_drill_holes WHERE project_id = ?").get(b),f=a.prepare("SELECT COUNT(*) n FROM mines_assay_samples WHERE project_id = ?").get(b),g=a.prepare("SELECT COUNT(*) n FROM mines_source_documents WHERE project_id = ?").get(b).n,h=a.prepare("SELECT COUNT(*) n FROM mines_document_chunks WHERE project_id = ?").get(b).n,i=[...c].filter(a=>a.startsWith("target_")).length,j=[...c].filter(a=>a.startsWith("comparable_")).length,k=a.prepare("SELECT COUNT(*) n FROM mines_valuation_scenarios WHERE project_id = ? AND scenario NOT LIKE 'operator_%'").get(b).n,l=a.prepare("SELECT COUNT(*) n FROM mines_valuation_scenarios WHERE project_id = ? AND scenario LIKE 'operator_%'").get(b).n,m=d("mineral_resource","resource_estimate","resource_statement","resource_classification","measured_indicated"),n=d("mineral_reserve","reserve_estimate","proven","probable"),o=d("metallurg","recovery","met_testwork","processing"),p=d("mine_plan","production_schedule","mining_method","pit","geotech"),q=d("capex","opex","cost_estimate","aisc"),r=d("market","price_deck","offtake")||a.prepare("SELECT COUNT(*) n FROM mines_market_snapshots").get().n>0,s=c.has("qa_qc"),t=c.has("data_verification"),u=d("deposit_type","mineralization","geophysics","property")||i>0,v=(e?.n||0)>0||d("drilling_summary","trenching_summary");return{factTypes:c,drill:e,assay:f,docCount:g,chunkCount:h,targets:i,comparables:j,indicativeScenarios:k,conceptualScenarios:l,hasResource:m,hasReserve:n,hasMetTestwork:o,hasMinePlan:p,hasCostEstimate:q,hasMarket:r,hasQaQc:s,hasDataVerification:t,hasGeology:u,hasDrilling:v}}(a,d),f=[],g=new Date().toISOString().slice(0,10),h=e.hasResource&&e.hasReserve;f.push(`**Prepared by:** MadarX OS \xb7 Mines | **Date:** ${g} | **Project:** \`${d}\``),f.push(`**Asset stage:** ${b.asset_stage} | **Commodity:** ${b.commodity||"n/a"} | **Jurisdiction:** ${b.state_province||"n/a"}, ${b.country||"n/a"}`),f.push(""),f.push("> **This is a PFS-READINESS ASSESSMENT, not a Pre-Feasibility Study.** A PFS requires a Mineral Reserve converted from Measured & Indicated Resources (no Inferred), with Modifying Factors, a mine plan, recovery testwork, and capex/opex to \xb125% (AACE Class 4), each signed off by a competent QP/CP. This report measures the asset against that standard, inventories the data that exists (every count traces to a database row), and lists the gaps and work program required to reach PFS confidence. It does **not** declare a resource, a reserve, or any figure the source data does not contain."),f.push(""),f.push("## 1. Readiness verdict"),f.push("");{let a=q(c,"verdict");a&&(f.push(a),f.push(""))}h?f.push("**A Mineral Reserve appears to exist in the dataset.** A PFS may be supportable — proceed to the section-by-section coverage below to confirm each discipline meets PFS confidence, then route reserve/economics work to the valuation analyst and a competent QP."):e.hasResource&&!e.hasReserve?f.push("**A Mineral Resource is present but no Mineral Reserve has been declared.** A PFS is **not yet supportable**. The defining PFS step — conversion of Measured & Indicated Resources to a Proven/Probable Reserve via Modifying Factors (template \xa715) — has not been done. This is the critical path."):(f.push("**No Mineral Resource is declared for this asset.** A PFS is **not supportable and must not be produced.** Per the PFS contract (template \xa71, checklist gate G3) reserves derive from Measured & Indicated Resources only — and there is no resource to convert. The asset sits at an **exploration / scoping** confidence level. The work below maps a path from exploration data to a maiden resource, and from there toward PFS."),e.conceptualScenarios>0&&(f.push(""),f.push(`> The project carries ${e.conceptualScenarios} conceptual operator scenario(s) in \`mines_valuation_scenarios\`. These are exploration-target order-of-magnitude figures, **not** a mineral resource, and cannot seed a reserve or a PFS economic case.`))),f.push("");let i=e.hasResource?x.ready:e.hasDrilling&&(e.hasQaQc||e.hasDataVerification)||e.hasGeology?x.partial:x.gap,j=e.hasMinePlan&&e.hasMetTestwork?x.ready:e.hasMinePlan||e.hasMetTestwork?x.partial:x.gap,k=e.hasReserve?x.ready:e.hasResource?x.gap:x.blocked,l=e.hasReserve&&e.hasCostEstimate?x.ready:e.hasReserve?x.partial:x.blocked,m=h?x.partial:x.blocked;f.push("## 2. Decision-gate status"),f.push(""),f.push("_Gates are sequential (template \xa72). A downstream gate is `Blocked` until its prerequisite passes — no amount of work on a later gate substitutes for the gate before it._"),f.push(""),f.push("| Gate | Requirement | Status |"),f.push("|------|-------------|--------|"),f.push(`| **G0** Study launch | Charter, code, scope, QPs, budget, gates fixed | ${x.gap} (no study charter in dataset) |`),f.push(`| **G1** Geological foundation | DB validated; QA/QC documented; M/I/I classified; RPEEE shown | ${i} |`),f.push(`| **G2** Options / trade-off | Mining method, process route, tailings, power/water selected | ${j} |`),f.push(`| **G3** Reserve declaration | M&I only; no Inferred; dilution & losses; Modifying Factors | ${k} |`),f.push(`| **G4** Estimate & economics | Capex/opex \xb125%; ~15% contingency; reserve-based model | ${l} |`),f.push(`| **G5** Assurance & disclosure | Risk register, fatal-flaw + independent review, QP sign-offs | ${m} |`),f.push("");let n=a=>a?x.partial:x.gap,p=[["1–3 \xb7 Summary / Introduction / Reliance",e.docCount>0,`${o(e.docCount)} source documents catalogued`],["4 \xb7 Property Description & Location",e.factTypes.has("property"),e.factTypes.has("property")?"property fact present":"no tenure/location fact extracted"],["5 \xb7 Accessibility, Climate, Infrastructure",!1,"not extracted — requires site/infrastructure data"],["6 \xb7 History",e.factTypes.has("deposit_type")||e.docCount>0,"historic archive present"],["7 \xb7 Geological Setting & Mineralization",e.hasGeology,e.hasGeology?`geology facts + ${e.targets} target(s)`:"no geology facts"],["8 \xb7 Deposit Types",e.factTypes.has("deposit_type"),e.factTypes.has("deposit_type")?"deposit_type fact present":"no deposit_type fact"],["9–10 \xb7 Exploration & Drilling",e.hasDrilling,`${e.drill?.n||0} drill holes; drilling/trenching summaries`],["11–12 \xb7 Sampling, Analyses, Data Verification",e.hasQaQc||e.hasDataVerification,`${e.assay?.n||0} assay samples; QA/QC=${e.hasQaQc}; verification=${e.hasDataVerification}`],["13 \xb7 Mineral Processing & Metallurgical Testing",e.hasMetTestwork,e.hasMetTestwork?"testwork present":"no metallurgical testwork — required for recovery model"],["14 \xb7 Mineral Resource Estimate",e.hasResource,e.hasResource?"resource present":"NO RESOURCE — blocks reserve & economics"],["15 \xb7 Mineral Reserve Estimate (defining PFS section)",e.hasReserve,e.hasReserve?"reserve present":"NO RESERVE — the PFS cannot exist without this"],["16 \xb7 Mining Methods",e.hasMinePlan,e.hasMinePlan?"mine-plan/geotech facts present":"no mine plan / geotechnical model"],["17 \xb7 Recovery Methods",e.hasMetTestwork,e.hasMetTestwork?"derived from testwork":"blocked on metallurgical testwork"],["18 \xb7 Project Infrastructure",!1,"not extracted — power/water/tailings/access required"],["19 \xb7 Market Studies & Contracts",e.hasMarket,e.hasMarket?"market snapshots/facts present":"no price deck / offtake"],["20 \xb7 Environmental, Permitting, Social",!1,"not extracted — baseline/permitting register required"],["21 \xb7 Capital & Operating Costs",e.hasCostEstimate,e.hasCostEstimate?"cost facts present":"no capex/opex estimate (need AACE Class 4)"],["22 \xb7 Economic Analysis",e.hasReserve&&e.hasCostEstimate,"requires a reserve-based model"],["23 \xb7 Adjacent Properties",e.comparables>0,`${e.comparables} comparable asset(s)`],["25–26 \xb7 Interpretation, Conclusions & Recommendations",e.docCount>0,"authored from the above"]];for(let[a,b,c]of(f.push("## 3. PFS section coverage (NI 43-101 body)"),f.push(""),f.push("| Section | Status | Evidence in dataset |"),f.push("|---------|--------|---------------------|"),p)){let d=a.startsWith("14 ")?e.hasResource?x.ready:x.gap:a.startsWith("15 ")?e.hasReserve?x.ready:e.hasResource?x.gap:x.blocked:n(b);f.push(`| ${a} | ${d} | ${c} |`)}for(let[a,b]of(f.push(""),f.push("_Status is computed from `mines_extracted_facts` types and SQL aggregates — a `Gap` means the data type is absent from the database, not that it was judged inadequate._"),f.push(""),f.push("## 4. The PFS contract (must all hold to declare a PFS)"),f.push(""),[["Reserves from Measured & Indicated only (no Inferred)",e.hasReserve],["Dilution & mining losses incorporated",e.hasReserve&&e.hasMinePlan],["Modifying Factors formally applied & documented",e.hasReserve],["Capex/opex \xb125%, ~15% contingency, AACE Class 4",e.hasCostEstimate],["Reserve-based financial model, positive across a downside",e.hasReserve&&e.hasCostEstimate],["Each discipline signed off by a competent QP/CP",h]]))f.push(`- [${b?"x":" "}] ${a}`);f.push(""),h||f.push("Until every box is checked, the asset is **pre-PFS**. The earliest unchecked box on the critical path is where work must start (see \xa76)."),f.push(""),f.push("## 5. Data inventory"),f.push(""),f.push(`- **Documents catalogued:** ${o(e.docCount)} \xb7 **text chunks indexed:** ${o(e.chunkCount)}`),f.push(`- **Structured drill holes:** ${e.drill?.n||0}${e.drill?.m?` for ${o(e.drill.m)} m`:""} \xb7 **assay samples:** ${e.assay?.n||0}`),f.push(`- **Extracted fact types:** ${e.factTypes.size} \xb7 **defined targets:** ${e.targets} \xb7 **comparables:** ${e.comparables}`),f.push(`- **Valuation scenarios:** ${e.indicativeScenarios} indicative (T1/T2 runs) \xb7 ${e.conceptualScenarios} conceptual operator-target — neither is a declared resource`),f.push(""),f.push("_Counts are read directly from `mines_source_documents`, `mines_document_chunks`, `mines_drill_holes`, `mines_assay_samples`, `mines_extracted_facts`, and `mines_valuation_scenarios`._"),f.push(""),f.push("## 6. Critical-path gaps (ordered)"),f.push("");{let a=q(c,"gap_intro");a&&(f.push(a),f.push(""))}let r=[];e.hasResource||r.push("**Maiden Mineral Resource estimate** — the single hard blocker. Requires sufficient drill density, QA/QC-validated assays, density data, domaining, a block model, classification (M/I/I), and RPEEE within a constraining shape. Until this exists, no reserve, no economics, no PFS."),e.hasMetTestwork||r.push("**Metallurgical testwork** — representative samples across lithology/alteration/oxidation/depth/grade; a recovery model by domain (not a single point). Blocks \xa713/\xa717."),e.hasResource&&!e.hasMinePlan&&r.push("**Mine plan & geotechnical model** — method/pit-configuration trade-off, slope/support parameters, production schedule. Required before reserve conversion."),e.hasResource&&!e.hasReserve&&r.push("**Reserve conversion (\xa715)** — apply Modifying Factors to M&I, incorporate dilution & mining losses, derive Proven/Probable. This is the defining PFS step."),e.hasCostEstimate||r.push("**Capex/opex estimate to \xb125% (AACE Class 4)** — formal Basis of Estimate, vendor budget quotes on major items, ~15% risk-based contingency. Blocks \xa721/\xa722."),r.push("**Infrastructure, water & tailings study** — power/water/access; site water balance; tailings option + GISTM alignment; confirm no fatal flaw."),r.push("**Environmental / permitting / social baseline** — multi-season baseline, permitting register on the critical path, closure cost flowed to the model."),r.push("**Competent QP/CP sign-off per discipline** — and an independent / peer technical review before any disclosure."),r.forEach((a,b)=>f.push(`${b+1}. ${a}`)),f.push(""),f.push("## 7. Recommended work program to reach PFS"),f.push("");let s=a.prepare("SELECT id, value_text, page_or_location FROM mines_extracted_facts WHERE project_id = ? AND fact_type = 'work_program' LIMIT 1").get(d);s&&(f.push(`${s.value_text} [ExtractedFact:${s.id}${s.page_or_location?`, ${s.page_or_location}`:""}]`),f.push(""));let t=q(c,"work_program")||q(c,"recommendation");return t?(f.push("_Indicative phased program (MadarX planning view, not from the technical report):_"),f.push(""),f.push(t),f.push("")):s||(f.push("Phase the program to the gate sequence above: (1) resource-definition drilling → maiden resource (G1); (2) metallurgical testwork + mining/geotech trade-off (G2); (3) reserve conversion with Modifying Factors (G3); (4) Class 4 cost estimate + reserve-based model (G4); (5) risk, independent review, QP sign-off (G5). Budget and schedule each phase before launch."),f.push("")),f.push("## 8. Limitations & disclaimers"),f.push(""),f.push("This is a readiness assessment generated by autonomous agents from the project database and document archive. Statuses reflect the **presence** of data types, not a competent person's judgement of their adequacy. The absence of a resource/reserve in the database is reported as a gap, never filled with an estimate. This document is decision-support analysis; it is not a Pre-Feasibility Study, not a qualified person's opinion, and does not constitute investment advice. Producing an actual PFS requires the work program above and competent-person sign-off under the applicable reporting code (NI 43-101 / S-K 1300 / JORC)."),f.push(""),f.push("---"),f.push("_Generated by `mines_report_generate` (pfs_readiness_report). Gate/section statuses derive from `mines_extracted_facts` types and SQL aggregates; no figure is asserted that the source data does not contain. Rubric: `docs/mines/pfs-best-practice-template.md` + `pfs-best-practice-checklist.md`._"),{markdown:f.join("\n"),pfs_feasible:h,has_resource:e.hasResource,has_reserve:e.hasReserve,gaps_count:r.length,fact_types:e.factTypes.size,documents:e.docCount}}(w,y,B);c=a.markdown,d=`PFS-Readiness Assessment — ${y.name}`,z={pfs_feasible:a.pfs_feasible,has_resource:a.has_resource,has_reserve:a.has_reserve,gaps_count:a.gaps_count,fact_types:a.fact_types,documents:a.documents}}else{let a=await r(w,y,B);c=a.markdown,d=`Interpretation Memo — ${y.name}`,z={numeric_claims_count:a.numeric_claims_count,chunk_citations_count:a.chunk_citations_count,retrieval_mode:a.retrieval_mode}}let C=(0,k.Om)([a?.space_id,y.default_space_id],{fallback:null}),D=function(a,b){let c=a.prepare("SELECT os_project_id FROM mines_projects WHERE id = ?").get(b);return c?.os_project_id||null}(w,h);try{for(let a of C?w.prepare("SELECT id FROM artifacts WHERE title = ? AND space_id = ?").all(d,C):w.prepare("SELECT id FROM artifacts WHERE title = ? AND project_id = ?").all(d,D||"personal"))try{(0,f.CM)(a.id)}catch{}}catch{}let E=(0,f.Dg)({title:d,kind:A,content:c,project_id:D,agent_id:b.agent_id||null,space_id:C,dedupe_key:""});if(C&&!E.deduped)try{(0,k.h5)(E.artifact_id,C)}catch{}try{(0,i.appendComplianceAudit)({user_id:b.acting_on_behalf_of_user_id||b.user_id||"system",org_id:"personal-org",action:"mines.report.generated",status:"success",summary:`Generated ${l} for ${y.name}`,action_target_id:E.artifact_id,action_target_type:"artifact",meta:{project_id:h,report_kind:l,artifact_id:E.artifact_id,...z}})}catch{}return{status:"ok",artifact_id:E.artifact_id,report_kind:l,space_id:C,chunk_citations_count:z.chunk_citations_count??0,...z}}d()}catch(a){d(a)}})},14207:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{xI:()=>j});var e=c(73024),f=c(76760),g=c(26531),h=c(1441),i=a([h]);h=(i.then?(await i)():i)[0];let k=new Set(["node_modules",".git",".ssh"]),l=new Set([".ssh"]);function j({org_id:a}={}){function b(b){let c=f.resolve(String(b||""));if(!b)throw Error("allowlist_violation: empty path");if(function(a){if(a.split(f.sep).filter(Boolean).some(a=>l.has(a)))return!0;let b=f.basename(a);return".env.local"===b||/^\.env($|\.)/.test(b)}(c))throw Error("allowlist_violation: path is a secret/system path: "+c);if(!(0,g.wn)(c)&&!(0,h.RB)(c,{org_id:a}))throw Error("allowlist_violation: path is outside the OS-allowed or approved Mines import roots: "+c);return c}return{listFolder(a){let c=b(a),d=[],g=[c];for(;g.length;){let a,b=g.pop();try{a=e.readdirSync(b,{withFileTypes:!0})}catch{continue}for(let c of a){let a=c.name;if(a.startsWith("."))continue;let e=f.join(b,a);if(!c.isSymbolicLink())if(c.isDirectory()){if(k.has(a))continue;g.push(e)}else c.isFile()&&d.push(e)}}return d},readDocument(a){let c=b(a);return e.readFileSync(c)},statFile(a){let c,d=b(a);try{c=e.statSync(d)}catch{return null}return{size:c.size,mtimeMs:c.mtimeMs,isDirectory:c.isDirectory(),isFile:c.isFile()}}}}j(),d()}catch(a){d(a)}})},14743:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{G:()=>w});var e=c(73024),f=c(76760),g=c(19151),h=c(72326),i=c(1623),j=c(8727),k=c(34255),l=c(9381),m=c(40718),n=c(16494),o=c(63289),p=c(9001),q=c(83963),r=a([g,h,i,j,k,m,n,p,q]);function s(a,b){if(!a)return b;try{return JSON.parse(a)}catch{return b}}function t(a){return String(a||"agent").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,80)||"agent"}async function u({agent:a,artifactTitle:b,renderedHtml:d,runId:e,triggeredBy:f,appendAudit:g}){let h,i,j=function(a){if(!a?.metadata_json)return null;let b=a.metadata_json;if("string"==typeof b)try{b=JSON.parse(b)}catch{return null}let c=b?.whatsapp_notify_chat_id;return"string"==typeof c&&c.trim()?c.trim():null}(a);if(!j||!d||!String(d).trim())return;try{({getBridgeHealth:h,sendWhatsAppDocument:i}=await c.e(4143).then(c.bind(c,64143)))}catch(b){g({type:"agent.whatsapp_notify.skipped",summary:`WhatsApp module unavailable for ${a.name}: ${b.message}`,status:"skipped",meta:{agent_id:a.id,run_id:e,chat_id:j}});return}let k=await h();if(!k||!1===k.ok||"paired"!==k.pairing_state)return void g({type:"agent.whatsapp_notify.skipped",summary:`WhatsApp bridge not paired — skipped artifact notify for ${a.name}`,status:"skipped",meta:{agent_id:a.id,run_id:e,chat_id:j,pairing_state:k?.pairing_state||null,bridge_error:k?.error||null}});try{let c=await i({chat_id:j,content:d,filename:function(a){let b=String(a||"agent-report").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,60)||"agent-report";return`${b}.html`}(b),mimetype:"text/html",caption:`${b} (${f||"scheduled"})`});g({type:"agent.whatsapp_notify.sent",summary:`Sent "${b}" to ${j} via WhatsApp`,status:"sent",meta:{agent_id:a.id,run_id:e,chat_id:j,message_id:c?.message_id||null}}),(0,p.AC)({type:"agent_tool_result",agent_id:a.id,agent_name:a.name,tool:"whatsapp_notify",status:"done"})}catch(b){g({type:"agent.whatsapp_notify.failed",summary:`Failed to WhatsApp artifact for ${a.name}: ${b.message}`,status:"error",meta:{agent_id:a.id,run_id:e,chat_id:j}})}}async function v({agent:a,systemPrompt:b,userMessage:c,onToolStart:d,onToolResult:e,onToolError:f,acting_on_behalf_of_user_id:i,heartbeat_task_id:j}){if(process.env.MADARX_MOCK_CLAUDE_TICK)return{output:process.env.MADARX_MOCK_CLAUDE_TICK,toolEvents:[]};let k=Math.max(256,Math.min(8192,Number(process.env.MAX_TOKENS_PER_TICK||1024)||1024)),l=(0,m.IC)(a.id),n=[{role:"user",content:c}],o=[],q="";for(let c=0;c<4;c+=1){let c=await (0,g.chatWithClaude)(n,b,l,{max_tokens:k,model:a.model}),h=(c?.content||[]).filter(a=>a?.type==="text"||"string"==typeof a?.text).map(a=>a.text||"").join("\n").trim();h&&(q=h);let r=(c?.content||[]).filter(a=>a?.type==="tool_use"&&a.name&&a.id);if(!r.length)break;n.push({role:"assistant",content:c.content});let s=[];for(let b of r){let c={name:b.name,input:b.input||{},status:"pending"},g=function(a,b){if(!b||"object"!=typeof b)return null;let c={};if("web_search"===a&&"string"==typeof b.query)c.query=b.query.slice(0,80);else if("web_fetch"===a&&"string"==typeof b.url)try{c.host=new URL(b.url).hostname}catch{}else"create_artifact"===a&&"string"==typeof b.title?c.title=b.title.slice(0,60):"create_agent"===a&&"string"==typeof b.name&&(c.name=b.name.slice(0,60));return Object.keys(c).length?c:null}(b.name,b.input);(0,p.AC)({type:"agent_tool_start",agent_id:a.id,agent_name:a.name,tool:b.name,input_summary:g}),await d?.({toolUse:b,inputSummary:g});try{let d=await (0,m.executeRegistryTool)(b.name,b.input||{},{agent_id:a.id,acting_on_behalf_of_user_id:i||null,heartbeat_task_id:j||null});c.status=d?.status||"complete",c.result=d,s.push({type:"tool_result",tool_use_id:b.id,content:function(a){try{return JSON.stringify(a).slice(0,4e3)}catch{return String(a).slice(0,4e3)}}(d),is_error:d?.ok===!1&&d?.status!=="approval_required"}),(0,p.AC)({type:"agent_tool_result",agent_id:a.id,agent_name:a.name,tool:b.name,status:c.status,isError:d?.ok===!1&&d?.status!=="approval_required"}),await e?.({toolUse:b,result:d,inputSummary:g,event:c})}catch(d){c.status="failed",c.error=d.message,s.push({type:"tool_result",tool_use_id:b.id,content:d.message,is_error:!0}),(0,p.AC)({type:"agent_tool_result",agent_id:a.id,agent_name:a.name,tool:b.name,status:"failed",isError:!0,message:d.message}),await f?.({toolUse:b,error:d,inputSummary:g,event:c})}o.push(c)}n.push({role:"user",content:s})}if(!q)throw Error("Claude returned no text for scheduled agent tick");return{output:q,toolEvents:o,engine:"anthropic",model:a.model||(0,h.Qp)("anthropic")}}async function w(a,{triggered_by:b="cron",task_id:d=null,agent_run_id:g=null,wake_reason:m=null,instruction:r=null,expected_output:x=null,acting_on_behalf_of_user_id:y=null,heartbeat_task_id:z=null}={}){(0,l.Jh)();let A=(0,k.getDb)(),B="object"==typeof a&&a?.id?a:(0,k.getDb)().prepare("SELECT * FROM agents WHERE id = ?").get(String(a||""));if(!B)return null;let C=d?g?(0,q.rN)(g):(0,q.n5)({task_id:d,agent_id:B.id,trigger_source:b,trigger_detail:m||b}):null;C&&((0,q.V0)(C.id),(0,q.lC)(d,{status:"in_progress",actor_type:"agent",actor_id:B.id})),(0,p.AC)({type:"agent_run_start",agent_id:B.id,agent_name:B.name,triggered_by:b,run_id:C?.id||null,task_id:d});try{let a=s(B.memory,[]),g=a.slice(-10),m=function(a){let b=f.join(l.bo,a,"skills.md");try{return e.readFileSync(b,"utf8").trim()}catch{return""}}(B.id),w=new Date().toISOString().slice(0,10),D=B.system_prompt||`You are ${B.name}, a scheduled madarX OS worker.
594
+ `).all(d),k=a.prepare("SELECT COUNT(*) n FROM mines_source_documents WHERE project_id = ?").get(d).n,l=a.prepare("SELECT COUNT(*) n FROM mines_document_chunks WHERE project_id = ?").get(d).n,p=b=>a.prepare("SELECT price_usd, price_unit, source FROM mines_market_snapshots WHERE lower(commodity)=lower(?) ORDER BY fetched_at DESC LIMIT 1").get(b),r=p("Cu"),t=p("Ag"),u=a.prepare("SELECT scenario, assumptions_json, result_json FROM mines_valuation_scenarios WHERE project_id = ? AND scenario LIKE 'operator_%' ORDER BY scenario").all(d);f.push(`**Prepared by:** MadarX OS \xb7 Mines | **Date:** ${g} | **Project:** \`${d}\``),f.push(`**Asset stage:** ${b.asset_stage} | **Commodity:** ${b.commodity||"Cu"} | **Jurisdiction:** ${b.state_province||"Sonora"}, ${b.country}`),f.push(""),f.push("> This memorandum is generated by autonomous agents from the project document archive and structured database. Every figure traces to a source document, a database aggregate, or a labelled estimate. Figures attributed to an operator scenario are conceptual and are **not** mineral resources."),f.push(""),f.push("## 1. Executive summary"),f.push("");let v=s(e,"deposit_type"),w=s(e,"asset_stage"),x=q(c,"exec_summary");x&&(f.push(x),f.push("")),v&&f.push(`- **Deposit type:** ${v.text} ${v.cite}`);let y=q(c,"thesis");y&&(f.push(`**Investment thesis.** ${y}`),f.push("")),w&&f.push(`- **Stage / resource status:** ${w.text} ${w.cite}`),i?.n&&f.push(`- **Drilling to date:** ${i.n} holes for ${o(i.m)} m [DrillHole aggregate]`),h?.n&&f.push(`- **Surface geochemistry:** ${h.n} trench channel samples averaging ${m(h.avg_cu,3)}% Cu [AssaySample aggregate]`),f.push(`- **Definitive valuation:** Not available — no declared resource. See \xa76 for a labelled operator scenario.`),f.push(""),f.push("## 2. Project overview"),f.push("");{let a=q(c,"overview");a&&(f.push(a),f.push(""))}for(let a of["property","mineralization","asset_stage"]){let b=s(e,a);b&&f.push(`- **${a.replace(/_/g," ")}:** ${b.text} ${b.cite}`)}f.push(""),f.push("## 3. Geology & mineralization"),f.push("");{let a=q(c,"geology");a&&(f.push(a),f.push(""))}for(let a of["deposit_type","geophysics"]){let b=s(e,a);b&&f.push(`- **${a.replace(/_/g," ")}:** ${b.text} ${b.cite}`)}f.push("");let z=[...e.keys()].filter(a=>a.startsWith("target_")).sort();if(z.length){for(let a of(f.push("### Defined targets"),f.push(""),z)){let b=(e.get(a)||[])[0];b&&f.push(`- **${a.replace("target_","").replace(/_/g," ")}:** ${b.value_text} [ExtractedFact:${b.id}${b.page_or_location?`, ${b.page_or_location}`:""}]`)}f.push("")}f.push("## 4. Exploration results"),f.push("");{let a=q(c,"exploration");a&&(f.push(a),f.push(""))}let A=s(e,"drilling_summary");if(A&&f.push(`${A.text} ${A.cite}`),f.push(""),j.length){for(let a of(f.push("**Best drill intercepts (Cu \xd7 width ranked):**"),f.push(""),f.push("| Interval | Width (m) | Cu % | Ag g/t | CuEq % |"),f.push("|----------|-----------|------|--------|--------|"),j)){let b={};try{b=JSON.parse(a.other_grades_json||"{}")}catch{}f.push(`| \`${a.sample_id}\` | ${o(a.width_m,1)} | ${m(a.cu_pct,3)} | ${null!=a.ag_ppm?m(a.ag_ppm,1):"—"} | ${null!=b.cueq_pct?m(b.cueq_pct,3):"—"} |`)}f.push(""),f.push("_[AssaySample drill_core rows; CuEq per source-report formula]_"),f.push("")}let B=s(e,"trenching_summary");B&&(f.push(`${B.text} ${B.cite}`),f.push(""));let C=[...e.keys()].filter(a=>a.startsWith("comparable_")).sort();if(C.length){f.push("## 5. Comparable assets (analogues in the same belt)"),f.push("");{let a=q(c,"comparables");a&&(f.push(a),f.push(""))}for(let a of C){let b=(e.get(a)||[])[0];b&&f.push(`- **${a.replace("comparable_","").replace(/_/g," ")}:** ${b.value_text} [ExtractedFact:${b.id}${b.page_or_location?`, ${b.page_or_location}`:""}]`)}f.push(""),f.push("_Analogues establish the geological model and the in-ground value range for a successful porphyry discovery in this belt. They are not a prediction of Batamote tonnage or grade._"),f.push("")}if(f.push("## 6. Valuation framework & indicative scenario"),f.push(""),f.push("No mineral resource has been declared for the project, therefore **no definitive (T1 in-situ or T2 DCF) valuation is produced** — the system does not assign tonnage or value to undefined mineralization. The figures below are a **conceptual operator scenario**, not a mineral resource and not a valuation opinion."),f.push(""),(r||t)&&(f.push(`**Metal price basis:** ${r?`Cu ${n(r.price_usd)}/lb`:""}${r&&t?" \xb7 ":""}${t?`Ag ${n(t.price_usd)}/oz`:""} (${r?.source||t?.source||"snapshot"}).`),f.push("")),u.length){for(let a of(f.push("| Scenario | Target tonnage | Cu grade | Indicative in-situ value |"),f.push("|----------|----------------|----------|--------------------------|"),u)){let b={},c={};try{b=JSON.parse(a.assumptions_json||"{}")}catch{}try{c=JSON.parse(a.result_json||"{}")}catch{}let d=a.scenario.replace("operator_","");f.push(`| ${d} | ${o(b.resource_tonnes)} t | ${m(b.grade_cu_pct,3)}% | ${n(c.in_situ_value_usd)} |`)}f.push(""),f.push("> **CONCEPTUAL EXPLORATION TARGET — IMPORTANT.** The tonnage and grade above are an operator-supplied conceptual exploration target expressed as a range. They are conceptual in nature; there has been insufficient exploration to define a mineral resource; and it is uncertain whether further exploration will result in the target being delineated as a mineral resource. These figures must not be construed as a mineral resource or a mineral reserve, and the in-situ values are an order-of-magnitude indication of exploration optionality only."),f.push("")}f.push("## 7. Data inventory & quality control"),f.push(""),f.push(`- **Documents catalogued:** ${o(k)} files across the project archive.`),f.push(`- **Text chunks indexed:** ${o(l)} for retrieval.`),i?.n&&f.push(`- **Structured drill holes:** ${i.n}; **trench assays:** ${h?.n||0}; **drill intercepts:** ${j.length}.`);let D=s(e,"qa_qc");D&&f.push(`- **QA/QC:** ${D.text} ${D.cite}`);let E=s(e,"data_verification");E&&f.push(`- **Data verification:** ${E.text} ${E.cite}`),f.push(""),f.push("## 8. Risk register"),f.push("");{let a=q(c,"risk_intro");a&&(f.push(a),f.push(""))}f.push("| Risk | Severity | Mitigation |"),f.push("|------|----------|------------|"),f.push("| No declared mineral resource (exploration risk) | High | Maiden resource drill program at El Choclo NW / Bata Sur |"),f.push("| Grade continuity not yet demonstrated at depth | Medium | Infill + step-out drilling; clay-alteration vectoring |"),f.push("| Metal price volatility | Medium | Long-dated optionality; copper structural demand |"),f.push("| Permitting / surface rights (Sonora) | Medium | Confirm tenure & community agreements in legal DD |"),f.push("| Data provenance (historic operators) | Low–Med | Teck data verified vs lab certificates; re-log key holes |"),f.push(""),f.push("## 9. Recommended work program"),f.push("");let F=s(e,"work_program");F&&(f.push(`${F.text} ${F.cite}`),f.push(""));let G=q(c,"recommendation");return G&&(f.push("_Indicative next-phase program (MadarX planning view, not from the technical report):_"),f.push(""),f.push(G),f.push("")),f.push("## 10. Limitations & disclaimers"),f.push(""),f.push("Structured figures are transcribed/extracted from the project NI 43-101 technical report and archive; comparable-asset figures are from public S-K 1300 reports referenced therein. Metal prices are dated market snapshots. The operator scenario is conceptual and not a mineral resource. This memorandum is decision-support analysis, not a qualified person's valuation opinion, and does not constitute investment advice."),f.push(""),f.push("---"),f.push("_Generated by `mines_report_generate` (due_diligence_memo). Numeric claims trace to `mines_extracted_facts`, SQL aggregates, or persisted `mines_valuation_scenarios` rows._"),{markdown:f.join("\n"),facts_cited:[...e.values()].reduce((a,b)=>a+b.length,0),comparables:C.length,targets:z.length,scenario_rows:u.length}}(w,y,B);c=a.markdown,d=`Investment Diligence Memo — ${y.name}`,z={facts_cited:a.facts_cited,comparables:a.comparables,targets:a.targets,scenario_rows:a.scenario_rows}}else if("pfs_readiness_report"===l){let a=function(a,b,c={}){let d=b.id,e=function(a,b){let c=new Set(a.prepare("SELECT DISTINCT fact_type FROM mines_extracted_facts WHERE project_id = ?").all(b).map(a=>a.fact_type)),d=(...a)=>[...c].some(b=>a.some(a=>b===a||b.startsWith(`${a}_`)||b.includes(a))),e=a.prepare("SELECT COUNT(*) n, SUM(total_depth_m) m FROM mines_drill_holes WHERE project_id = ?").get(b),f=a.prepare("SELECT COUNT(*) n FROM mines_assay_samples WHERE project_id = ?").get(b),g=a.prepare("SELECT COUNT(*) n FROM mines_source_documents WHERE project_id = ?").get(b).n,h=a.prepare("SELECT COUNT(*) n FROM mines_document_chunks WHERE project_id = ?").get(b).n,i=[...c].filter(a=>a.startsWith("target_")).length,j=[...c].filter(a=>a.startsWith("comparable_")).length,k=a.prepare("SELECT COUNT(*) n FROM mines_valuation_scenarios WHERE project_id = ? AND scenario NOT LIKE 'operator_%'").get(b).n,l=a.prepare("SELECT COUNT(*) n FROM mines_valuation_scenarios WHERE project_id = ? AND scenario LIKE 'operator_%'").get(b).n,m=d("mineral_resource","resource_estimate","resource_statement","resource_classification","measured_indicated"),n=d("mineral_reserve","reserve_estimate","proven","probable"),o=d("metallurg","recovery","met_testwork","processing"),p=d("mine_plan","production_schedule","mining_method","pit","geotech"),q=d("capex","opex","cost_estimate","aisc"),r=d("market","price_deck","offtake")||a.prepare("SELECT COUNT(*) n FROM mines_market_snapshots").get().n>0,s=c.has("qa_qc"),t=c.has("data_verification"),u=d("deposit_type","mineralization","geophysics","property")||i>0,v=(e?.n||0)>0||d("drilling_summary","trenching_summary");return{factTypes:c,drill:e,assay:f,docCount:g,chunkCount:h,targets:i,comparables:j,indicativeScenarios:k,conceptualScenarios:l,hasResource:m,hasReserve:n,hasMetTestwork:o,hasMinePlan:p,hasCostEstimate:q,hasMarket:r,hasQaQc:s,hasDataVerification:t,hasGeology:u,hasDrilling:v}}(a,d),f=[],g=new Date().toISOString().slice(0,10),h=e.hasResource&&e.hasReserve;f.push(`**Prepared by:** MadarX OS \xb7 Mines | **Date:** ${g} | **Project:** \`${d}\``),f.push(`**Asset stage:** ${b.asset_stage} | **Commodity:** ${b.commodity||"n/a"} | **Jurisdiction:** ${b.state_province||"n/a"}, ${b.country||"n/a"}`),f.push(""),f.push("> **This is a PFS-READINESS ASSESSMENT, not a Pre-Feasibility Study.** A PFS requires a Mineral Reserve converted from Measured & Indicated Resources (no Inferred), with Modifying Factors, a mine plan, recovery testwork, and capex/opex to \xb125% (AACE Class 4), each signed off by a competent QP/CP. This report measures the asset against that standard, inventories the data that exists (every count traces to a database row), and lists the gaps and work program required to reach PFS confidence. It does **not** declare a resource, a reserve, or any figure the source data does not contain."),f.push(""),f.push("## 1. Readiness verdict"),f.push("");{let a=q(c,"verdict");a&&(f.push(a),f.push(""))}h?f.push("**A Mineral Reserve appears to exist in the dataset.** A PFS may be supportable — proceed to the section-by-section coverage below to confirm each discipline meets PFS confidence, then route reserve/economics work to the valuation analyst and a competent QP."):e.hasResource&&!e.hasReserve?f.push("**A Mineral Resource is present but no Mineral Reserve has been declared.** A PFS is **not yet supportable**. The defining PFS step — conversion of Measured & Indicated Resources to a Proven/Probable Reserve via Modifying Factors (template \xa715) — has not been done. This is the critical path."):(f.push("**No Mineral Resource is declared for this asset.** A PFS is **not supportable and must not be produced.** Per the PFS contract (template \xa71, checklist gate G3) reserves derive from Measured & Indicated Resources only — and there is no resource to convert. The asset sits at an **exploration / scoping** confidence level. The work below maps a path from exploration data to a maiden resource, and from there toward PFS."),e.conceptualScenarios>0&&(f.push(""),f.push(`> The project carries ${e.conceptualScenarios} conceptual operator scenario(s) in \`mines_valuation_scenarios\`. These are exploration-target order-of-magnitude figures, **not** a mineral resource, and cannot seed a reserve or a PFS economic case.`))),f.push("");let i=e.hasResource?x.ready:e.hasDrilling&&(e.hasQaQc||e.hasDataVerification)||e.hasGeology?x.partial:x.gap,j=e.hasMinePlan&&e.hasMetTestwork?x.ready:e.hasMinePlan||e.hasMetTestwork?x.partial:x.gap,k=e.hasReserve?x.ready:e.hasResource?x.gap:x.blocked,l=e.hasReserve&&e.hasCostEstimate?x.ready:e.hasReserve?x.partial:x.blocked,m=h?x.partial:x.blocked;f.push("## 2. Decision-gate status"),f.push(""),f.push("_Gates are sequential (template \xa72). A downstream gate is `Blocked` until its prerequisite passes — no amount of work on a later gate substitutes for the gate before it._"),f.push(""),f.push("| Gate | Requirement | Status |"),f.push("|------|-------------|--------|"),f.push(`| **G0** Study launch | Charter, code, scope, QPs, budget, gates fixed | ${x.gap} (no study charter in dataset) |`),f.push(`| **G1** Geological foundation | DB validated; QA/QC documented; M/I/I classified; RPEEE shown | ${i} |`),f.push(`| **G2** Options / trade-off | Mining method, process route, tailings, power/water selected | ${j} |`),f.push(`| **G3** Reserve declaration | M&I only; no Inferred; dilution & losses; Modifying Factors | ${k} |`),f.push(`| **G4** Estimate & economics | Capex/opex \xb125%; ~15% contingency; reserve-based model | ${l} |`),f.push(`| **G5** Assurance & disclosure | Risk register, fatal-flaw + independent review, QP sign-offs | ${m} |`),f.push("");let n=a=>a?x.partial:x.gap,p=[["1–3 \xb7 Summary / Introduction / Reliance",e.docCount>0,`${o(e.docCount)} source documents catalogued`],["4 \xb7 Property Description & Location",e.factTypes.has("property"),e.factTypes.has("property")?"property fact present":"no tenure/location fact extracted"],["5 \xb7 Accessibility, Climate, Infrastructure",!1,"not extracted — requires site/infrastructure data"],["6 \xb7 History",e.factTypes.has("deposit_type")||e.docCount>0,"historic archive present"],["7 \xb7 Geological Setting & Mineralization",e.hasGeology,e.hasGeology?`geology facts + ${e.targets} target(s)`:"no geology facts"],["8 \xb7 Deposit Types",e.factTypes.has("deposit_type"),e.factTypes.has("deposit_type")?"deposit_type fact present":"no deposit_type fact"],["9–10 \xb7 Exploration & Drilling",e.hasDrilling,`${e.drill?.n||0} drill holes; drilling/trenching summaries`],["11–12 \xb7 Sampling, Analyses, Data Verification",e.hasQaQc||e.hasDataVerification,`${e.assay?.n||0} assay samples; QA/QC=${e.hasQaQc}; verification=${e.hasDataVerification}`],["13 \xb7 Mineral Processing & Metallurgical Testing",e.hasMetTestwork,e.hasMetTestwork?"testwork present":"no metallurgical testwork — required for recovery model"],["14 \xb7 Mineral Resource Estimate",e.hasResource,e.hasResource?"resource present":"NO RESOURCE — blocks reserve & economics"],["15 \xb7 Mineral Reserve Estimate (defining PFS section)",e.hasReserve,e.hasReserve?"reserve present":"NO RESERVE — the PFS cannot exist without this"],["16 \xb7 Mining Methods",e.hasMinePlan,e.hasMinePlan?"mine-plan/geotech facts present":"no mine plan / geotechnical model"],["17 \xb7 Recovery Methods",e.hasMetTestwork,e.hasMetTestwork?"derived from testwork":"blocked on metallurgical testwork"],["18 \xb7 Project Infrastructure",!1,"not extracted — power/water/tailings/access required"],["19 \xb7 Market Studies & Contracts",e.hasMarket,e.hasMarket?"market snapshots/facts present":"no price deck / offtake"],["20 \xb7 Environmental, Permitting, Social",!1,"not extracted — baseline/permitting register required"],["21 \xb7 Capital & Operating Costs",e.hasCostEstimate,e.hasCostEstimate?"cost facts present":"no capex/opex estimate (need AACE Class 4)"],["22 \xb7 Economic Analysis",e.hasReserve&&e.hasCostEstimate,"requires a reserve-based model"],["23 \xb7 Adjacent Properties",e.comparables>0,`${e.comparables} comparable asset(s)`],["25–26 \xb7 Interpretation, Conclusions & Recommendations",e.docCount>0,"authored from the above"]];for(let[a,b,c]of(f.push("## 3. PFS section coverage (NI 43-101 body)"),f.push(""),f.push("| Section | Status | Evidence in dataset |"),f.push("|---------|--------|---------------------|"),p)){let d=a.startsWith("14 ")?e.hasResource?x.ready:x.gap:a.startsWith("15 ")?e.hasReserve?x.ready:e.hasResource?x.gap:x.blocked:n(b);f.push(`| ${a} | ${d} | ${c} |`)}for(let[a,b]of(f.push(""),f.push("_Status is computed from `mines_extracted_facts` types and SQL aggregates — a `Gap` means the data type is absent from the database, not that it was judged inadequate._"),f.push(""),f.push("## 4. The PFS contract (must all hold to declare a PFS)"),f.push(""),[["Reserves from Measured & Indicated only (no Inferred)",e.hasReserve],["Dilution & mining losses incorporated",e.hasReserve&&e.hasMinePlan],["Modifying Factors formally applied & documented",e.hasReserve],["Capex/opex \xb125%, ~15% contingency, AACE Class 4",e.hasCostEstimate],["Reserve-based financial model, positive across a downside",e.hasReserve&&e.hasCostEstimate],["Each discipline signed off by a competent QP/CP",h]]))f.push(`- [${b?"x":" "}] ${a}`);f.push(""),h||f.push("Until every box is checked, the asset is **pre-PFS**. The earliest unchecked box on the critical path is where work must start (see \xa76)."),f.push(""),f.push("## 5. Data inventory"),f.push(""),f.push(`- **Documents catalogued:** ${o(e.docCount)} \xb7 **text chunks indexed:** ${o(e.chunkCount)}`),f.push(`- **Structured drill holes:** ${e.drill?.n||0}${e.drill?.m?` for ${o(e.drill.m)} m`:""} \xb7 **assay samples:** ${e.assay?.n||0}`),f.push(`- **Extracted fact types:** ${e.factTypes.size} \xb7 **defined targets:** ${e.targets} \xb7 **comparables:** ${e.comparables}`),f.push(`- **Valuation scenarios:** ${e.indicativeScenarios} indicative (T1/T2 runs) \xb7 ${e.conceptualScenarios} conceptual operator-target — neither is a declared resource`),f.push(""),f.push("_Counts are read directly from `mines_source_documents`, `mines_document_chunks`, `mines_drill_holes`, `mines_assay_samples`, `mines_extracted_facts`, and `mines_valuation_scenarios`._"),f.push(""),f.push("## 6. Critical-path gaps (ordered)"),f.push("");{let a=q(c,"gap_intro");a&&(f.push(a),f.push(""))}let r=[];e.hasResource||r.push("**Maiden Mineral Resource estimate** — the single hard blocker. Requires sufficient drill density, QA/QC-validated assays, density data, domaining, a block model, classification (M/I/I), and RPEEE within a constraining shape. Until this exists, no reserve, no economics, no PFS."),e.hasMetTestwork||r.push("**Metallurgical testwork** — representative samples across lithology/alteration/oxidation/depth/grade; a recovery model by domain (not a single point). Blocks \xa713/\xa717."),e.hasResource&&!e.hasMinePlan&&r.push("**Mine plan & geotechnical model** — method/pit-configuration trade-off, slope/support parameters, production schedule. Required before reserve conversion."),e.hasResource&&!e.hasReserve&&r.push("**Reserve conversion (\xa715)** — apply Modifying Factors to M&I, incorporate dilution & mining losses, derive Proven/Probable. This is the defining PFS step."),e.hasCostEstimate||r.push("**Capex/opex estimate to \xb125% (AACE Class 4)** — formal Basis of Estimate, vendor budget quotes on major items, ~15% risk-based contingency. Blocks \xa721/\xa722."),r.push("**Infrastructure, water & tailings study** — power/water/access; site water balance; tailings option + GISTM alignment; confirm no fatal flaw."),r.push("**Environmental / permitting / social baseline** — multi-season baseline, permitting register on the critical path, closure cost flowed to the model."),r.push("**Competent QP/CP sign-off per discipline** — and an independent / peer technical review before any disclosure."),r.forEach((a,b)=>f.push(`${b+1}. ${a}`)),f.push(""),f.push("## 7. Recommended work program to reach PFS"),f.push("");let s=a.prepare("SELECT id, value_text, page_or_location FROM mines_extracted_facts WHERE project_id = ? AND fact_type = 'work_program' LIMIT 1").get(d);s&&(f.push(`${s.value_text} [ExtractedFact:${s.id}${s.page_or_location?`, ${s.page_or_location}`:""}]`),f.push(""));let t=q(c,"work_program")||q(c,"recommendation");return t?(f.push("_Indicative phased program (MadarX planning view, not from the technical report):_"),f.push(""),f.push(t),f.push("")):s||(f.push("Phase the program to the gate sequence above: (1) resource-definition drilling → maiden resource (G1); (2) metallurgical testwork + mining/geotech trade-off (G2); (3) reserve conversion with Modifying Factors (G3); (4) Class 4 cost estimate + reserve-based model (G4); (5) risk, independent review, QP sign-off (G5). Budget and schedule each phase before launch."),f.push("")),f.push("## 8. Limitations & disclaimers"),f.push(""),f.push("This is a readiness assessment generated by autonomous agents from the project database and document archive. Statuses reflect the **presence** of data types, not a competent person's judgement of their adequacy. The absence of a resource/reserve in the database is reported as a gap, never filled with an estimate. This document is decision-support analysis; it is not a Pre-Feasibility Study, not a qualified person's opinion, and does not constitute investment advice. Producing an actual PFS requires the work program above and competent-person sign-off under the applicable reporting code (NI 43-101 / S-K 1300 / JORC)."),f.push(""),f.push("---"),f.push("_Generated by `mines_report_generate` (pfs_readiness_report). Gate/section statuses derive from `mines_extracted_facts` types and SQL aggregates; no figure is asserted that the source data does not contain. Rubric: `docs/mines/pfs-best-practice-template.md` + `pfs-best-practice-checklist.md`._"),{markdown:f.join("\n"),pfs_feasible:h,has_resource:e.hasResource,has_reserve:e.hasReserve,gaps_count:r.length,fact_types:e.factTypes.size,documents:e.docCount}}(w,y,B);c=a.markdown,d=`PFS-Readiness Assessment — ${y.name}`,z={pfs_feasible:a.pfs_feasible,has_resource:a.has_resource,has_reserve:a.has_reserve,gaps_count:a.gaps_count,fact_types:a.fact_types,documents:a.documents}}else{let a=await r(w,y,B);c=a.markdown,d=`Interpretation Memo — ${y.name}`,z={numeric_claims_count:a.numeric_claims_count,chunk_citations_count:a.chunk_citations_count,retrieval_mode:a.retrieval_mode}}let C=(0,k.Om)([a?.space_id,y.default_space_id],{fallback:null}),D=function(a,b){let c=a.prepare("SELECT os_project_id FROM mines_projects WHERE id = ?").get(b);return c?.os_project_id||null}(w,h);try{for(let a of C?w.prepare("SELECT id FROM artifacts WHERE title = ? AND space_id = ?").all(d,C):w.prepare("SELECT id FROM artifacts WHERE title = ? AND project_id = ?").all(d,D||"personal"))try{(0,f.CM)(a.id)}catch{}}catch{}let E=(0,f.Dg)({title:d,kind:A,content:c,project_id:D,agent_id:b.agent_id||null,space_id:C,dedupe_key:""});if(C&&!E.deduped)try{(0,k.h5)(E.artifact_id,C)}catch{}try{(0,i.appendComplianceAudit)({user_id:b.acting_on_behalf_of_user_id||b.user_id||"system",org_id:"personal-org",action:"mines.report.generated",status:"success",summary:`Generated ${l} for ${y.name}`,action_target_id:E.artifact_id,action_target_type:"artifact",meta:{project_id:h,report_kind:l,artifact_id:E.artifact_id,...z}})}catch{}return{status:"ok",artifact_id:E.artifact_id,report_kind:l,space_id:C,chunk_citations_count:z.chunk_citations_count??0,...z}}d()}catch(a){d(a)}})},14207:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{xI:()=>j});var e=c(73024),f=c(76760),g=c(26531),h=c(1441),i=a([h]);h=(i.then?(await i)():i)[0];let k=new Set(["node_modules",".git",".ssh"]),l=new Set([".ssh"]);function j({org_id:a}={}){function b(b){let c=f.resolve(String(b||""));if(!b)throw Error("allowlist_violation: empty path");if(function(a){if(a.split(f.sep).filter(Boolean).some(a=>l.has(a)))return!0;let b=f.basename(a);return".env.local"===b||/^\.env($|\.)/.test(b)}(c))throw Error("allowlist_violation: path is a secret/system path: "+c);if(!(0,g.wn)(c)&&!(0,h.RB)(c,{org_id:a}))throw Error("allowlist_violation: path is outside the OS-allowed or approved Mines import roots: "+c);return c}return{listFolder(a){let c=b(a),d=[],g=[c];for(;g.length;){let a,b=g.pop();try{a=e.readdirSync(b,{withFileTypes:!0})}catch{continue}for(let c of a){let a=c.name;if(a.startsWith("."))continue;let e=f.join(b,a);if(!c.isSymbolicLink())if(c.isDirectory()){if(k.has(a))continue;g.push(e)}else c.isFile()&&d.push(e)}}return d},readDocument(a){let c=b(a);return e.readFileSync(c)},statFile(a){let c,d=b(a);try{c=e.statSync(d)}catch{return null}return{size:c.size,mtimeMs:c.mtimeMs,isDirectory:c.isDirectory(),isFile:c.isFile()}}}}j(),d()}catch(a){d(a)}})},14743:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{G:()=>x});var e=c(73024),f=c(76760),g=c(19151),h=c(72326),i=c(1623),j=c(8727),k=c(34255),l=c(9381),m=c(40718),n=c(16494),o=c(63289),p=c(9001),q=c(69286),r=c(83963),s=a([g,h,i,j,k,m,n,p,r]);function t(a,b){if(!a)return b;try{return JSON.parse(a)}catch{return b}}function u(a){return String(a||"agent").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,80)||"agent"}async function v({agent:a,artifactTitle:b,renderedHtml:d,runId:e,triggeredBy:f,appendAudit:g}){let h,i,j=function(a){if(!a?.metadata_json)return null;let b=a.metadata_json;if("string"==typeof b)try{b=JSON.parse(b)}catch{return null}let c=b?.whatsapp_notify_chat_id;return"string"==typeof c&&c.trim()?c.trim():null}(a);if(!j||!d||!String(d).trim())return;try{({getBridgeHealth:h,sendWhatsAppDocument:i}=await c.e(4143).then(c.bind(c,64143)))}catch(b){g({type:"agent.whatsapp_notify.skipped",summary:`WhatsApp module unavailable for ${a.name}: ${b.message}`,status:"skipped",meta:{agent_id:a.id,run_id:e,chat_id:j}});return}let k=await h();if(!k||!1===k.ok||"paired"!==k.pairing_state)return void g({type:"agent.whatsapp_notify.skipped",summary:`WhatsApp bridge not paired — skipped artifact notify for ${a.name}`,status:"skipped",meta:{agent_id:a.id,run_id:e,chat_id:j,pairing_state:k?.pairing_state||null,bridge_error:k?.error||null}});try{let c=await i({chat_id:j,content:d,filename:function(a){let b=String(a||"agent-report").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,60)||"agent-report";return`${b}.html`}(b),mimetype:"text/html",caption:`${b} (${f||"scheduled"})`});g({type:"agent.whatsapp_notify.sent",summary:`Sent "${b}" to ${j} via WhatsApp`,status:"sent",meta:{agent_id:a.id,run_id:e,chat_id:j,message_id:c?.message_id||null}}),(0,p.AC)({type:"agent_tool_result",agent_id:a.id,agent_name:a.name,tool:"whatsapp_notify",status:"done"})}catch(b){g({type:"agent.whatsapp_notify.failed",summary:`Failed to WhatsApp artifact for ${a.name}: ${b.message}`,status:"error",meta:{agent_id:a.id,run_id:e,chat_id:j}})}}async function w({agent:a,systemPrompt:b,userMessage:c,onToolStart:d,onToolResult:e,onToolError:f,acting_on_behalf_of_user_id:i,heartbeat_task_id:j}){if(process.env.MADARX_MOCK_CLAUDE_TICK)return{output:process.env.MADARX_MOCK_CLAUDE_TICK,toolEvents:[]};let k=Math.max(256,Math.min(8192,Number(process.env.MAX_TOKENS_PER_TICK||1024)||1024)),l=(0,m.IC)(a.id),n=[{role:"user",content:c}],o=[],q="";for(let c=0;c<4;c+=1){let c=await (0,g.chatWithClaude)(n,b,l,{max_tokens:k,model:a.model}),h=(c?.content||[]).filter(a=>a?.type==="text"||"string"==typeof a?.text).map(a=>a.text||"").join("\n").trim();h&&(q=h);let r=(c?.content||[]).filter(a=>a?.type==="tool_use"&&a.name&&a.id);if(!r.length)break;n.push({role:"assistant",content:c.content});let s=[];for(let b of r){let c={name:b.name,input:b.input||{},status:"pending"},g=function(a,b){if(!b||"object"!=typeof b)return null;let c={};if("web_search"===a&&"string"==typeof b.query)c.query=b.query.slice(0,80);else if("web_fetch"===a&&"string"==typeof b.url)try{c.host=new URL(b.url).hostname}catch{}else"create_artifact"===a&&"string"==typeof b.title?c.title=b.title.slice(0,60):"create_agent"===a&&"string"==typeof b.name&&(c.name=b.name.slice(0,60));return Object.keys(c).length?c:null}(b.name,b.input);(0,p.AC)({type:"agent_tool_start",agent_id:a.id,agent_name:a.name,tool:b.name,input_summary:g}),await d?.({toolUse:b,inputSummary:g});try{let d=await (0,m.executeRegistryTool)(b.name,b.input||{},{agent_id:a.id,acting_on_behalf_of_user_id:i||null,heartbeat_task_id:j||null});c.status=d?.status||"complete",c.result=d,s.push({type:"tool_result",tool_use_id:b.id,content:function(a){try{return JSON.stringify(a).slice(0,4e3)}catch{return String(a).slice(0,4e3)}}(d),is_error:d?.ok===!1&&d?.status!=="approval_required"}),(0,p.AC)({type:"agent_tool_result",agent_id:a.id,agent_name:a.name,tool:b.name,status:c.status,isError:d?.ok===!1&&d?.status!=="approval_required"}),await e?.({toolUse:b,result:d,inputSummary:g,event:c})}catch(d){c.status="failed",c.error=d.message,s.push({type:"tool_result",tool_use_id:b.id,content:d.message,is_error:!0}),(0,p.AC)({type:"agent_tool_result",agent_id:a.id,agent_name:a.name,tool:b.name,status:"failed",isError:!0,message:d.message}),await f?.({toolUse:b,error:d,inputSummary:g,event:c})}o.push(c)}n.push({role:"user",content:s})}if(!q)throw Error("Claude returned no text for scheduled agent tick");return{output:q,toolEvents:o,engine:"anthropic",model:a.model||(0,h.Qp)("anthropic")}}async function x(a,{triggered_by:b="cron",task_id:d=null,agent_run_id:g=null,wake_reason:m=null,instruction:s=null,expected_output:y=null,acting_on_behalf_of_user_id:z=null,heartbeat_task_id:A=null}={}){(0,l.Jh)();let B=(0,k.getDb)(),C="object"==typeof a&&a?.id?a:(0,k.getDb)().prepare("SELECT * FROM agents WHERE id = ?").get(String(a||""));if(!C)return null;let D=d?g?(0,r.rN)(g):(0,r.n5)({task_id:d,agent_id:C.id,trigger_source:b,trigger_detail:m||b}):null;D&&((0,r.V0)(D.id),(0,r.lC)(d,{status:"in_progress",actor_type:"agent",actor_id:C.id})),(0,q.XI)(C.id),(0,p.AC)({type:"agent_run_start",agent_id:C.id,agent_name:C.name,triggered_by:b,run_id:D?.id||null,task_id:d});try{let a=t(C.memory,[]),g=a.slice(-10),m=function(a){let b=f.join(l.bo,a,"skills.md");try{return e.readFileSync(b,"utf8").trim()}catch{return""}}(C.id),q=new Date().toISOString().slice(0,10),x=C.system_prompt||`You are ${C.name}, a scheduled madarX OS worker.
595
595
 
596
596
  <agent_mission>
597
- ${B.mission||"Support the user with useful scheduled work."}
597
+ ${C.mission||"Support the user with useful scheduled work."}
598
598
  </agent_mission>
599
599
 
600
- Approval mode: ${B.approval||"human-in-loop"}.
600
+ Approval mode: ${C.approval||"human-in-loop"}.
601
601
 
602
- Produce a structured markdown report. Never perform external sends, posts, deployments, purchases, or destructive operations.`,E=(0,h.$k)(B.engine),F=B.model||(0,h.Qp)(E);process.env.MADARX_MOCK_AGENT_TICK||process.env.MADARX_MOCK_CLAUDE_TICK||(0,n.W1)({...B,engine:E});let G=`${D.includes("CURRENT_DATE")?D:`${(0,i.uB)()}
602
+ Produce a structured markdown report. Never perform external sends, posts, deployments, purchases, or destructive operations.`,E=(0,h.$k)(C.engine),F=C.model||(0,h.Qp)(E);process.env.MADARX_MOCK_AGENT_TICK||process.env.MADARX_MOCK_CLAUDE_TICK||(0,n.W1)({...C,engine:E});let G=`${x.includes("CURRENT_DATE")?x:`${(0,i.uB)()}
603
603
 
604
- ${D}`}
604
+ ${x}`}
605
605
 
606
606
  ${m?`<skills>
607
607
  ${m}
608
608
  </skills>
609
609
  `:""}
610
- You are running as a scheduled cron tick. Your FINAL message is saved verbatim as the deliverable the owner sees — make it the complete result in clean markdown, not a status summary, progress recap, or "what I did" note. Reproduce the full content in your final message even if a prior version already exists on disk.`,H=d?(0,q.gg)(d):null,{instruction:I,expected_output:J}=function({instruction:a,expected_output:b,task:c,agent:d}={}){let e=a=>"string"==typeof a&&a.trim()?a.trim():null;return{instruction:e(a)||c&&(e(c.description)||e(c.title))||e(d?.mission)||"Execute your mission.",expected_output:e(b)||c&&e(c.acceptance_criteria)||e(d?.expected_output)||"A complete, structured markdown report covering the full result — not a status summary."}}({instruction:r,expected_output:x,task:H,agent:B}),K=`Scheduled tick - today is ${w}. Carry out the instruction below and deliver exactly what the expected-output contract requires.
610
+ You are running as a scheduled cron tick. Your FINAL message is saved verbatim as the deliverable the owner sees — make it the complete result in clean markdown, not a status summary, progress recap, or "what I did" note. Reproduce the full content in your final message even if a prior version already exists on disk.`,H=d?(0,r.gg)(d):null,{instruction:I,expected_output:J}=function({instruction:a,expected_output:b,task:c,agent:d}={}){let e=a=>"string"==typeof a&&a.trim()?a.trim():null;return{instruction:e(a)||c&&(e(c.description)||e(c.title))||e(d?.mission)||"Execute your mission.",expected_output:e(b)||c&&e(c.acceptance_criteria)||e(d?.expected_output)||"A complete, structured markdown report covering the full result — not a status summary."}}({instruction:s,expected_output:y,task:H,agent:C}),K=`Scheduled tick - today is ${q}. Carry out the instruction below and deliver exactly what the expected-output contract requires.
611
611
 
612
612
  <task_instruction>
613
613
  ${I}
@@ -618,20 +618,20 @@ ${J}
618
618
  </expected_output>
619
619
 
620
620
  <agent>
621
- Name: ${B.name}
622
- Mission: ${B.mission||""}
623
- Schedule: ${B.schedule||""}
624
- Tools: ${s(B.tools,[]).join(", ")||"none listed"}
621
+ Name: ${C.name}
622
+ Mission: ${C.mission||""}
623
+ Schedule: ${C.schedule||""}
624
+ Tools: ${t(C.tools,[]).join(", ")||"none listed"}
625
625
  </agent>
626
626
 
627
627
  <recent_memory>
628
628
  ${g.length?g.map((a,b)=>`${b+1}. ${a}`).join("\n"):"No prior memory."}
629
- </recent_memory>`,{output:L,toolEvents:M,engine:N,model:O}=process.env.MADARX_MOCK_AGENT_TICK||process.env.MADARX_MOCK_CLAUDE_TICK?{output:process.env.MADARX_MOCK_AGENT_TICK||process.env.MADARX_MOCK_CLAUDE_TICK,toolEvents:[],engine:E,model:F}:"anthropic"===E?await v({agent:{...B,engine:E,model:F},systemPrompt:G,userMessage:K,acting_on_behalf_of_user_id:y,heartbeat_task_id:z,onToolStart:({toolUse:a,inputSummary:b})=>{C&&(0,q.Dn)(C.id,{agent_id:B.id,task_id:d,event_type:"tool_start",stream:"tool",message:a.name,payload:{tool:a.name,input_summary:b}})},onToolResult:({toolUse:a,result:b,event:c})=>{if(C){if(b?.status==="approval_required")return void(0,q.qt)(C.id,{message:`Approval required for ${a.name}`,payload:{tool:a.name,approval_request_id:b.approval_request_id}});(0,q.Dn)(C.id,{agent_id:B.id,task_id:d,event_type:"tool_result",stream:"tool",level:b?.ok===!1&&b?.status!=="approval_required"?"error":"info",message:`${a.name} ${c.status}`,payload:{tool:a.name,status:c.status,approval_request_id:b?.approval_request_id||null}})}},onToolError:({toolUse:a,error:b})=>{C&&(0,q.Dn)(C.id,{agent_id:B.id,task_id:d,event_type:"error",stream:"tool",level:"error",message:b.message,payload:{tool:a.name}})}}):{output:await (0,h.d)({agent:{...B,engine:E,model:F},systemPrompt:G,userMessage:K}),toolEvents:[],engine:E,model:F};if(!M.length&&!process.env.MADARX_MOCK_AGENT_TICK&&!process.env.MADARX_MOCK_CLAUDE_TICK&&(0,o.S)(L)){let a=Error(`${B.name} produced a fabricated tool transcript (it role-played tool calls and invented results) instead of running real tools — nothing actually executed, so no deliverable was saved. Switch this agent's engine to "Anthropic API" so madarX dispatches its tools for real.`);throw a.code="fabricated_tool_output",a}let P=M.length?`${L}
629
+ </recent_memory>`,{output:L,toolEvents:M,engine:N,model:O}=process.env.MADARX_MOCK_AGENT_TICK||process.env.MADARX_MOCK_CLAUDE_TICK?{output:process.env.MADARX_MOCK_AGENT_TICK||process.env.MADARX_MOCK_CLAUDE_TICK,toolEvents:[],engine:E,model:F}:"anthropic"===E?await w({agent:{...C,engine:E,model:F},systemPrompt:G,userMessage:K,acting_on_behalf_of_user_id:z,heartbeat_task_id:A,onToolStart:({toolUse:a,inputSummary:b})=>{D&&(0,r.Dn)(D.id,{agent_id:C.id,task_id:d,event_type:"tool_start",stream:"tool",message:a.name,payload:{tool:a.name,input_summary:b}})},onToolResult:({toolUse:a,result:b,event:c})=>{if(D){if(b?.status==="approval_required")return void(0,r.qt)(D.id,{message:`Approval required for ${a.name}`,payload:{tool:a.name,approval_request_id:b.approval_request_id}});(0,r.Dn)(D.id,{agent_id:C.id,task_id:d,event_type:"tool_result",stream:"tool",level:b?.ok===!1&&b?.status!=="approval_required"?"error":"info",message:`${a.name} ${c.status}`,payload:{tool:a.name,status:c.status,approval_request_id:b?.approval_request_id||null}})}},onToolError:({toolUse:a,error:b})=>{D&&(0,r.Dn)(D.id,{agent_id:C.id,task_id:d,event_type:"error",stream:"tool",level:"error",message:b.message,payload:{tool:a.name}})}}):{output:await (0,h.d)({agent:{...C,engine:E,model:F},systemPrompt:G,userMessage:K}),toolEvents:[],engine:E,model:F};if(!M.length&&!process.env.MADARX_MOCK_AGENT_TICK&&!process.env.MADARX_MOCK_CLAUDE_TICK&&(0,o.S)(L)){let a=Error(`${C.name} produced a fabricated tool transcript (it role-played tool calls and invented results) instead of running real tools — nothing actually executed, so no deliverable was saved. Switch this agent's engine to "Anthropic API" so madarX dispatches its tools for real.`);throw a.code="fabricated_tool_output",a}let P=M.length?`${L}
630
630
 
631
631
  ## Tool events
632
- ${M.map(a=>`- ${a.name}: ${a.status}`).join("\n")}`:L,Q=function({agentId:a,today:b,fallback:c}){let d=c||"",g=Buffer.byteLength(d,"utf8");try{let c=t(a),h=null;for(let a of e.readdirSync(l.m4)){if(!a.endsWith(".md")||!a.startsWith(c)||!a.includes(b))continue;let d=f.join(l.m4,a),g=0;try{g=e.statSync(d).size}catch{continue}(!h||g>h.size)&&(h={full:d,size:g})}if(h&&h.size>Math.max(2048,1.5*g)){let a=e.readFileSync(h.full,"utf8");if(a.trim().length>d.trim().length)return a}}catch{}return d}({agentId:B.id,today:w,fallback:P}),R=new Date().toISOString().replace(/[:.]/g,"-"),S=f.join(l.m4,`${t(B.id)}-${w}-${R}.md`);e.writeFileSync(S,Q,"utf8");let T=(0,l.z9)(S),U=`${B.name} scheduled report`,V=(0,j.vr)(Q),W=(0,j.j7)({title:U,markdown:V}),{recordRun:X,recordArtifact:Y,appendAudit:Z}=await Promise.resolve().then(c.bind(c,60105)),$=X({kind:"agent-tick",title:`${B.name} scheduled tick`,agent:B.name,agent_id:B.id,status:"complete",artifact:T,preview:P.slice(0,1e3),output:P,engine:N,model:O,triggered_by:b}),_=Y({run_id:$.id,agent_id:B.id,file_path:T,kind:"document",title:U,content:W,source_md:V,project_id:B.project_id||null});$.artifact_id=_,$.artifact_title=U,await u({agent:B,artifactTitle:U,renderedHtml:W,runId:$.id,triggeredBy:b,appendAudit:Z});let aa=Math.max(1,Math.min(500,Number(process.env.MEMORY_MAX_ENTRIES||50)||50)),ab=[...a,`${(0,k.nowIso)()} - ${(String(P||"").split(/\r?\n/).map(a=>a.replace(/^#+\s*/,"").trim()).find(a=>a&&!a.startsWith("-"))||"Completed a scheduled tick and saved a report.").slice(0,240)}`].slice(-aa),ac=(0,k.nowIso)();A.prepare("UPDATE agents SET memory = ?, last_run_at = ?, status = ? WHERE id = ?").run(JSON.stringify(ab),ac,"last cron tick complete",B.id);let ad=f.join(l.bo,B.id,"heartbeat.json");try{let a=s(e.readFileSync(ad,"utf8"),{});a.status="last cron tick complete",a.last_run=ac,a.last_artifact=T,e.writeFileSync(ad,JSON.stringify(a,null,2),"utf8")}catch{Z({type:"agent.heartbeat.missing",summary:`Heartbeat file missing for ${B.name}`,status:"warning",meta:{agent_id:B.id}})}if((0,p.AC)({type:"agent_run_complete",agent_id:B.id,agent_name:B.name,status:"complete",triggered_by:b,run_id:C?.id||null,task_id:d}),C){let a=P.replace(/\s+/g," ").slice(0,800);(0,q.WH)(d,{body:`Execution update from ${B.name}:
632
+ ${M.map(a=>`- ${a.name}: ${a.status}`).join("\n")}`:L,Q=function({agentId:a,today:b,fallback:c}){let d=c||"",g=Buffer.byteLength(d,"utf8");try{let c=u(a),h=null;for(let a of e.readdirSync(l.m4)){if(!a.endsWith(".md")||!a.startsWith(c)||!a.includes(b))continue;let d=f.join(l.m4,a),g=0;try{g=e.statSync(d).size}catch{continue}(!h||g>h.size)&&(h={full:d,size:g})}if(h&&h.size>Math.max(2048,1.5*g)){let a=e.readFileSync(h.full,"utf8");if(a.trim().length>d.trim().length)return a}}catch{}return d}({agentId:C.id,today:q,fallback:P}),R=new Date().toISOString().replace(/[:.]/g,"-"),S=f.join(l.m4,`${u(C.id)}-${q}-${R}.md`);e.writeFileSync(S,Q,"utf8");let T=(0,l.z9)(S),U=`${C.name} scheduled report`,V=(0,j.vr)(Q),W=(0,j.j7)({title:U,markdown:V}),{recordRun:X,recordArtifact:Y,appendAudit:Z}=await Promise.resolve().then(c.bind(c,60105)),$=X({kind:"agent-tick",title:`${C.name} scheduled tick`,agent:C.name,agent_id:C.id,status:"complete",artifact:T,preview:P.slice(0,1e3),output:P,engine:N,model:O,triggered_by:b}),_=Y({run_id:$.id,agent_id:C.id,file_path:T,kind:"document",title:U,content:W,source_md:V,project_id:C.project_id||null});$.artifact_id=_,$.artifact_title=U,await v({agent:C,artifactTitle:U,renderedHtml:W,runId:$.id,triggeredBy:b,appendAudit:Z});let aa=Math.max(1,Math.min(500,Number(process.env.MEMORY_MAX_ENTRIES||50)||50)),ab=[...a,`${(0,k.nowIso)()} - ${(String(P||"").split(/\r?\n/).map(a=>a.replace(/^#+\s*/,"").trim()).find(a=>a&&!a.startsWith("-"))||"Completed a scheduled tick and saved a report.").slice(0,240)}`].slice(-aa),ac=(0,k.nowIso)();B.prepare("UPDATE agents SET memory = ?, last_run_at = ?, status = ? WHERE id = ?").run(JSON.stringify(ab),ac,"last cron tick complete",C.id);let ad=f.join(l.bo,C.id,"heartbeat.json");try{let a=t(e.readFileSync(ad,"utf8"),{});a.status="last cron tick complete",a.last_run=ac,a.last_artifact=T,e.writeFileSync(ad,JSON.stringify(a,null,2),"utf8")}catch{Z({type:"agent.heartbeat.missing",summary:`Heartbeat file missing for ${C.name}`,status:"warning",meta:{agent_id:C.id}})}if((0,p.AC)({type:"agent_run_complete",agent_id:C.id,agent_name:C.name,status:"complete",triggered_by:b,run_id:D?.id||null,task_id:d}),D){let a=P.replace(/\s+/g," ").slice(0,800);(0,r.WH)(d,{body:`Execution update from ${C.name}:
633
633
 
634
- ${a}`,author_agent_id:B.id,created_by_run_id:C.id}),(0,q.G)(C.id,{status:"succeeded",result:{report_path:T,legacy_run_id:$.id},stdout_excerpt:a}),(0,q.lC)(d,{status:"in_review",actor_type:"agent",actor_id:B.id}),(0,q.ij)(B.id,{last_run_id:C.id,last_run_status:"succeeded",state:{last_task_id:d,last_report:T}})}return $}catch(c){let a=(c?.message||String(c)).slice(0,1e3);if(C)try{(0,q.G)(C.id,{status:"failed",error:a})}catch{}throw(0,p.AC)({type:"agent_run_complete",agent_id:B.id,agent_name:B.name,status:"failed",isError:!0,triggered_by:b,run_id:C?.id||null,task_id:d,error:a}),c}}[g,h,i,j,k,m,n,p,q]=r.then?(await r)():r,d()}catch(a){d(a)}})},14972:(a,b,c)=>{"use strict";function d(a){let b=String(a||"").toLowerCase();return"cu"===b||"copper"===b?.85:"ag"===b||"silver"===b?.75:.9}function e(a){let b=Number(a);return Number.isFinite(b)?b:null}function f(a,b=2){if(null==a||!Number.isFinite(a))return null;let c=10**b;return Math.round(a*c)/c}function g(a={}){let b=e(a.resource_tonnes),c=e(a.grade_au_gpt??a.au_gpt),h=e(a.grade_ag_gpt??a.ag_gpt),i=e(a.grade_cu_pct??a.cu_pct),j=e(a.recovery_au)??d("Au"),k=e(a.recovery_ag)??d("Ag"),l=e(a.recovery_cu)??d("Cu"),m=e(a.price_au_usd_oz),n=e(a.price_ag_usd_oz),o=e(a.price_cu_usd_lb),p=e(a.in_situ_factor)??function(a="exploration"){let b=String(a||"").toLowerCase();return b.includes("production")?.12:b.includes("development")||b.includes("resource")?.06:.03}(a.asset_stage);if(null==b||b<=0)return{valuation_tier:"t1_in_situ",resource_tonnes:null,contained_au_oz:null,contained_ag_oz:null,contained_cu_lb:null,gross_metal_value_usd:null,in_situ_value_usd:null,recovery_au_used:j,recovery_ag_used:k,recovery_cu_used:l,in_situ_factor_used:p,usd_per_oz_au:null,usd_per_lb_cu:null,usd_per_tonne:null};let q=null==c?null:b*c/1e6*32150.7466*j,r=null==h?null:b*h/1e6*32150.7466*k,s=null==i?null:i/100*b*2204.62*l,t=(null==q||null==m?0:q*m)+(null==r||null==n?0:r*n)+(null==s||null==o?0:s*o),u=t>0,v=u?t*p:null;return{valuation_tier:"t1_in_situ",resource_tonnes:f(b,3),contained_au_oz:f(q,3),contained_ag_oz:f(r,3),contained_cu_lb:f(s,3),gross_metal_value_usd:u?t:null,in_situ_value_usd:v,recovery_au_used:j,recovery_ag_used:k,recovery_cu_used:l,in_situ_factor_used:p,usd_per_oz_au:f(null!=v&&q?v/q:null,3),usd_per_lb_cu:f(null!=v&&s?v/s:null,3),usd_per_tonne:f(null!=v?v/b:null,3)}}c.d(b,{uX:()=>g})},15709:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{r1:()=>j});var e=c(73024),f=c(73136),g=c(76760),h=c(9013),i=a([h]);h=(i.then?(await i)():i)[0];let k=(0,g.dirname)((0,f.fileURLToPath)("file:///home/runner/work/madarx-os/madarx-os/lib/process/seeds/hail-quarterly-review.js")),l=null;function j(){let a=(l||(l=JSON.parse((0,e.readFileSync)((0,g.join)(k,"specs","hail-quarterly-review.json"),"utf8"))),l);return(0,h.R1)(a,{source_spec_json:JSON.stringify(a)})}d()}catch(a){d(a)}})},15769:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{W:()=>j});var e=c(73024),f=c(73136),g=c(76760),h=c(9013),i=a([h]);h=(i.then?(await i)():i)[0];let k=(0,g.dirname)((0,f.fileURLToPath)("file:///home/runner/work/madarx-os/madarx-os/lib/process/seeds/mines-workflows.js")),l=["mine-project-intake","mine-valuation","mine-market-trend-monitor","mine-portfolio-screen"];function j(){for(let a of l)try{let b=function(a){let b=(0,g.join)(k,"specs",`${a}.json`);return JSON.parse((0,e.readFileSync)(b,"utf8"))}(a);(0,h.R1)(b,{source_spec_json:JSON.stringify(b),created_by_user_id:null,skipValidation:!0})}catch(b){console.warn(`[mines-workflows] failed to seed ${a}:`,b?.message||b)}}d()}catch(a){d(a)}})},16494:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{W1:()=>h});var e=c(72326),f=c(40718),g=a([e,f]);[e,f]=g.then?(await g)():g;let i=new Set(["anthropic","claude-code","codex"]);function h(a){let b=(0,e.$k)(a?.engine),c=i.has((0,e.$k)(b)),d=function(a){if(!a?.id)return!1;try{return(0,f.IC)(a.id).length>0}catch{return!1}}(a);if(!d||c)return{needsTools:d,engineCanExecuteTools:c};let g=Error(`This agent has live tools enabled but its engine (${b}) cannot run tools — it only completes text, so it would fabricate a tool transcript instead of doing real work. The run was stopped. Fix: switch this agent's engine to "Anthropic API" (governed tools) or "Claude Code" in its Details view.`);throw g.code="engine_cannot_run_tools",g.engine=b,g}d()}catch(a){d(a)}})},16838:(a,b,c)=>{"use strict";c.d(b,{Z:()=>k});let d=[{name:"La Caridad",status:"Producing",dist:"~25 km SE",tonnes:"2,100 Mt",cu:"0.21% Cu",note:"9,737 Mlb contained Cu"},{name:"Cananea / Buenavista",status:"Producing",dist:"Same belt",tonnes:"2,413 Mt",cu:"0.44% Cu",note:"one of the largest Cu mines on earth"},{name:"La Colorada breccia",status:"Historic",dist:"Same belt",tonnes:"7 Mt",cu:"6.0% Cu",note:"high-grade breccia analogue"}];function e(a){return String(a??"").replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&#39;")}function f(a,b=0){return null!=a&&Number.isFinite(Number(a))?new Intl.NumberFormat("en-US",{maximumFractionDigits:b}).format(Number(a)):"—"}function g(a){if(null==a||!Number.isFinite(Number(a)))return"—";let b=Number(a);return b>=1e9?`$${(b/1e9).toFixed(2)}B`:b>=1e6?`$${Math.round(b/1e6)}M`:b>=1e3?`$${Math.round(b/1e3)}k`:`$${Math.round(b)}`}function h(a){try{return JSON.parse(a)||{}}catch{return{}}}function i(a,b){let c=b.scen[0]?.r?.in_situ_value_usd,d=b.scen[b.scen.length-1]?.r?.in_situ_value_usd;return{hero_headline:"District-scale copper optionality, next to two world-class mines.",hero_subhead:`${a.name} sits in the Cananea–La Caridad porphyry belt of Sonora, Mexico — one of the most productive copper districts on earth. Four drill-confirmed targets, one untested high-priority blanket, and no resource yet declared: the value today is exploration optionality.`,opportunity:[`The case for ${a.name} is location and evidence. It lies in the same belt — and within ~25 km — of La Caridad and Cananea, two of the largest copper mines in the world. The same geology that built them runs through this ground.`,`Teck drilled it. Their 2011–2012 program returned copper across multiple targets and walked away mid-story, leaving the highest-priority target (a chalcocite blanket at El Choclo NW) untested. That is the optionality a partner is buying.`,`No mineral resource has been declared, and we do not pretend one exists. What follows is the evidence on the ground and a clearly-labelled conceptual scenario — not a valuation opinion.`],findings_lead:"The asset is not a concept on a map. There is drilled copper, surface geochemistry, and a geological model anchored to producing neighbours.",upside_lead:"Four defined targets, each a distinct shot on goal. El Choclo NW — a leached-capping blanket target — was proposed for drilling but never tested before Teck withdrew.",risk_lead:"We lead with the risk because credibility is the point. This is exploration: no declared resource, grade continuity at depth unproven. The mitigation is a focused, sequenced work program.",the_ask:`${a.name}'s operator (Grupo Factor) is seeking an incoming partner under NDA. The near-term path: re-interpret the geophysics, vector with clay-alteration (SWIR) core analysis, then drill the untested El Choclo NW blanket — and, if it confirms, define a maiden resource.`,value_range_label:null!=c&&null!=d?`${g(c)} – ${g(d)}`:"—"}}function j(a){return`<span class="kick"><svg class="kick-mark" width="22" height="8" viewBox="0 0 22 8" aria-hidden="true"><path d="M0 4h14" stroke="currentColor" stroke-width="1.4"/><circle cx="19" cy="4" r="2.4" fill="currentColor"/></svg>${e(a)}</span>`}function k(a,b,c={}){let l=function(a,b){let c=b.id,d=(b,...c)=>a.prepare(b).all(...c),e=(b,...c)=>a.prepare(b).get(...c),f=d("SELECT fact_type, value_text, page_or_location FROM mines_extracted_facts WHERE project_id = ?",c),g=new Map;for(let a of f)g.has(a.fact_type)||g.set(a.fact_type,a);let i=d("SELECT scenario, assumptions_json, result_json FROM mines_valuation_scenarios WHERE project_id = ? AND scenario LIKE 'operator_%'",c).map(a=>({key:a.scenario.replace("operator_",""),a:h(a.assumptions_json),r:h(a.result_json)})),j=["low","base","high"];i.sort((a,b)=>j.indexOf(a.key)-j.indexOf(b.key));let k=d(`SELECT sample_id, width_m, cu_pct, ag_ppm, other_grades_json
634
+ ${a}`,author_agent_id:C.id,created_by_run_id:D.id}),(0,r.G)(D.id,{status:"succeeded",result:{report_path:T,legacy_run_id:$.id},stdout_excerpt:a}),(0,r.lC)(d,{status:"in_review",actor_type:"agent",actor_id:C.id}),(0,r.ij)(C.id,{last_run_id:D.id,last_run_status:"succeeded",state:{last_task_id:d,last_report:T}})}return $}catch(e){let a=(e?.message||String(e)).slice(0,1e3);if(D)try{(0,r.G)(D.id,{status:"failed",error:a})}catch{}else try{let{recordRun:d,appendAudit:f}=await Promise.resolve().then(c.bind(c,60105));d({kind:"agent-tick",title:`${C.name} run failed`,agent:C.name,agent_id:C.id,status:"failed",preview:a,output:a,triggered_by:b}),f({type:"agent.run.failed",summary:`${C.name} run failed: ${a}`,status:"error",meta:{agent_id:C.id,code:e?.code||null,triggered_by:b}})}catch{}throw(0,p.AC)({type:"agent_run_complete",agent_id:C.id,agent_name:C.name,status:"failed",isError:!0,triggered_by:b,run_id:D?.id||null,task_id:d,error:a}),e}finally{(0,q.fd)(C.id)}}[g,h,i,j,k,m,n,p,r]=s.then?(await s)():s,d()}catch(a){d(a)}})},14972:(a,b,c)=>{"use strict";function d(a){let b=String(a||"").toLowerCase();return"cu"===b||"copper"===b?.85:"ag"===b||"silver"===b?.75:.9}function e(a){let b=Number(a);return Number.isFinite(b)?b:null}function f(a,b=2){if(null==a||!Number.isFinite(a))return null;let c=10**b;return Math.round(a*c)/c}function g(a={}){let b=e(a.resource_tonnes),c=e(a.grade_au_gpt??a.au_gpt),h=e(a.grade_ag_gpt??a.ag_gpt),i=e(a.grade_cu_pct??a.cu_pct),j=e(a.recovery_au)??d("Au"),k=e(a.recovery_ag)??d("Ag"),l=e(a.recovery_cu)??d("Cu"),m=e(a.price_au_usd_oz),n=e(a.price_ag_usd_oz),o=e(a.price_cu_usd_lb),p=e(a.in_situ_factor)??function(a="exploration"){let b=String(a||"").toLowerCase();return b.includes("production")?.12:b.includes("development")||b.includes("resource")?.06:.03}(a.asset_stage);if(null==b||b<=0)return{valuation_tier:"t1_in_situ",resource_tonnes:null,contained_au_oz:null,contained_ag_oz:null,contained_cu_lb:null,gross_metal_value_usd:null,in_situ_value_usd:null,recovery_au_used:j,recovery_ag_used:k,recovery_cu_used:l,in_situ_factor_used:p,usd_per_oz_au:null,usd_per_lb_cu:null,usd_per_tonne:null};let q=null==c?null:b*c/1e6*32150.7466*j,r=null==h?null:b*h/1e6*32150.7466*k,s=null==i?null:i/100*b*2204.62*l,t=(null==q||null==m?0:q*m)+(null==r||null==n?0:r*n)+(null==s||null==o?0:s*o),u=t>0,v=u?t*p:null;return{valuation_tier:"t1_in_situ",resource_tonnes:f(b,3),contained_au_oz:f(q,3),contained_ag_oz:f(r,3),contained_cu_lb:f(s,3),gross_metal_value_usd:u?t:null,in_situ_value_usd:v,recovery_au_used:j,recovery_ag_used:k,recovery_cu_used:l,in_situ_factor_used:p,usd_per_oz_au:f(null!=v&&q?v/q:null,3),usd_per_lb_cu:f(null!=v&&s?v/s:null,3),usd_per_tonne:f(null!=v?v/b:null,3)}}c.d(b,{uX:()=>g})},15709:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{r1:()=>j});var e=c(73024),f=c(73136),g=c(76760),h=c(9013),i=a([h]);h=(i.then?(await i)():i)[0];let k=(0,g.dirname)((0,f.fileURLToPath)("file:///home/runner/work/madarx-os/madarx-os/lib/process/seeds/hail-quarterly-review.js")),l=null;function j(){let a=(l||(l=JSON.parse((0,e.readFileSync)((0,g.join)(k,"specs","hail-quarterly-review.json"),"utf8"))),l);return(0,h.R1)(a,{source_spec_json:JSON.stringify(a)})}d()}catch(a){d(a)}})},15769:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{W:()=>j});var e=c(73024),f=c(73136),g=c(76760),h=c(9013),i=a([h]);h=(i.then?(await i)():i)[0];let k=(0,g.dirname)((0,f.fileURLToPath)("file:///home/runner/work/madarx-os/madarx-os/lib/process/seeds/mines-workflows.js")),l=["mine-project-intake","mine-valuation","mine-market-trend-monitor","mine-portfolio-screen"];function j(){for(let a of l)try{let b=function(a){let b=(0,g.join)(k,"specs",`${a}.json`);return JSON.parse((0,e.readFileSync)(b,"utf8"))}(a);(0,h.R1)(b,{source_spec_json:JSON.stringify(b),created_by_user_id:null,skipValidation:!0})}catch(b){console.warn(`[mines-workflows] failed to seed ${a}:`,b?.message||b)}}d()}catch(a){d(a)}})},16494:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{W1:()=>h});var e=c(72326),f=c(40718),g=a([e,f]);[e,f]=g.then?(await g)():g;let i=new Set(["anthropic","claude-code","codex"]);function h(a){let b=(0,e.$k)(a?.engine),c=i.has((0,e.$k)(b)),d=function(a){if(!a?.id)return!1;try{return(0,f.IC)(a.id).length>0}catch{return!1}}(a);if(!d||c)return{needsTools:d,engineCanExecuteTools:c};let g=Error(`This agent has live tools enabled but its engine (${b}) cannot run tools — it only completes text, so it would fabricate a tool transcript instead of doing real work. The run was stopped. Fix: switch this agent's engine to "Anthropic API" (governed tools) or "Claude Code" in its Details view.`);throw g.code="engine_cannot_run_tools",g.engine=b,g}d()}catch(a){d(a)}})},16838:(a,b,c)=>{"use strict";c.d(b,{Z:()=>k});let d=[{name:"La Caridad",status:"Producing",dist:"~25 km SE",tonnes:"2,100 Mt",cu:"0.21% Cu",note:"9,737 Mlb contained Cu"},{name:"Cananea / Buenavista",status:"Producing",dist:"Same belt",tonnes:"2,413 Mt",cu:"0.44% Cu",note:"one of the largest Cu mines on earth"},{name:"La Colorada breccia",status:"Historic",dist:"Same belt",tonnes:"7 Mt",cu:"6.0% Cu",note:"high-grade breccia analogue"}];function e(a){return String(a??"").replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&#39;")}function f(a,b=0){return null!=a&&Number.isFinite(Number(a))?new Intl.NumberFormat("en-US",{maximumFractionDigits:b}).format(Number(a)):"—"}function g(a){if(null==a||!Number.isFinite(Number(a)))return"—";let b=Number(a);return b>=1e9?`$${(b/1e9).toFixed(2)}B`:b>=1e6?`$${Math.round(b/1e6)}M`:b>=1e3?`$${Math.round(b/1e3)}k`:`$${Math.round(b)}`}function h(a){try{return JSON.parse(a)||{}}catch{return{}}}function i(a,b){let c=b.scen[0]?.r?.in_situ_value_usd,d=b.scen[b.scen.length-1]?.r?.in_situ_value_usd;return{hero_headline:"District-scale copper optionality, next to two world-class mines.",hero_subhead:`${a.name} sits in the Cananea–La Caridad porphyry belt of Sonora, Mexico — one of the most productive copper districts on earth. Four drill-confirmed targets, one untested high-priority blanket, and no resource yet declared: the value today is exploration optionality.`,opportunity:[`The case for ${a.name} is location and evidence. It lies in the same belt — and within ~25 km — of La Caridad and Cananea, two of the largest copper mines in the world. The same geology that built them runs through this ground.`,`Teck drilled it. Their 2011–2012 program returned copper across multiple targets and walked away mid-story, leaving the highest-priority target (a chalcocite blanket at El Choclo NW) untested. That is the optionality a partner is buying.`,`No mineral resource has been declared, and we do not pretend one exists. What follows is the evidence on the ground and a clearly-labelled conceptual scenario — not a valuation opinion.`],findings_lead:"The asset is not a concept on a map. There is drilled copper, surface geochemistry, and a geological model anchored to producing neighbours.",upside_lead:"Four defined targets, each a distinct shot on goal. El Choclo NW — a leached-capping blanket target — was proposed for drilling but never tested before Teck withdrew.",risk_lead:"We lead with the risk because credibility is the point. This is exploration: no declared resource, grade continuity at depth unproven. The mitigation is a focused, sequenced work program.",the_ask:`${a.name}'s operator (Grupo Factor) is seeking an incoming partner under NDA. The near-term path: re-interpret the geophysics, vector with clay-alteration (SWIR) core analysis, then drill the untested El Choclo NW blanket — and, if it confirms, define a maiden resource.`,value_range_label:null!=c&&null!=d?`${g(c)} – ${g(d)}`:"—"}}function j(a){return`<span class="kick"><svg class="kick-mark" width="22" height="8" viewBox="0 0 22 8" aria-hidden="true"><path d="M0 4h14" stroke="currentColor" stroke-width="1.4"/><circle cx="19" cy="4" r="2.4" fill="currentColor"/></svg>${e(a)}</span>`}function k(a,b,c={}){let l=function(a,b){let c=b.id,d=(b,...c)=>a.prepare(b).all(...c),e=(b,...c)=>a.prepare(b).get(...c),f=d("SELECT fact_type, value_text, page_or_location FROM mines_extracted_facts WHERE project_id = ?",c),g=new Map;for(let a of f)g.has(a.fact_type)||g.set(a.fact_type,a);let i=d("SELECT scenario, assumptions_json, result_json FROM mines_valuation_scenarios WHERE project_id = ? AND scenario LIKE 'operator_%'",c).map(a=>({key:a.scenario.replace("operator_",""),a:h(a.assumptions_json),r:h(a.result_json)})),j=["low","base","high"];i.sort((a,b)=>j.indexOf(a.key)-j.indexOf(b.key));let k=d(`SELECT sample_id, width_m, cu_pct, ag_ppm, other_grades_json
635
635
  FROM mines_assay_samples WHERE project_id = ? AND sample_type = 'drill_core'
636
636
  ORDER BY (cu_pct * width_m) DESC LIMIT 5`,c),l=e(`SELECT COUNT(*) n, AVG(cu_pct) avg_cu, MAX(cu_pct) max_cu, AVG(ag_ppm) avg_ag
637
637
  FROM mines_assay_samples WHERE project_id = ? AND sample_type = 'trench_channel'`,c),m=e("SELECT COUNT(*) n, SUM(total_depth_m) m FROM mines_drill_holes WHERE project_id = ? AND extracted_by_agent_id = ?",c,"mines-geo-analyst"),n=f.filter(a=>a.fact_type.startsWith("target_")).map(a=>({name:a.fact_type.replace("target_","").replace(/_/g," "),text:a.value_text})),o=a=>e("SELECT price_usd, source FROM mines_market_snapshots WHERE lower(commodity)=lower(?) ORDER BY fetched_at DESC LIMIT 1",a);return{factBy:g,scen:i,intercepts:k,trench:l,drill:m,targets:n,priceCu:o("Cu"),priceAg:o("Ag"),base:i.find(a=>"base"===a.key)||i[0]||null}}(a,b),m={...i(b,l),...c||{}};m.value_range_label=i(b,l).value_range_label;let n=[function(a,b,c){let d=[a.deposit_type||"Porphyry copper (\xb1Ag)",`${a.asset_stage||"exploration"} stage`,`${a.state_province||"Sonora"}, ${a.country||"Mexico"}`].map(a=>`<span class="chip">${e(a)}</span>`).join("");return`
@@ -852,10 +852,10 @@ ${b}
852
852
  els.forEach(function(e){ e.style.transitionDelay=Math.min(i*40,160)+'ms'; i++; io.observe(e); });
853
853
  })();
854
854
  </script>
855
- </body></html>`}(b,n),meta:{scenario_rows:l.scen.length,intercepts:l.intercepts.length,targets:l.targets.length,comparables:d.length,narrative_authored:Object.keys(c||{}).length>0}}}},17607:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{B:()=>n,M:()=>m});var e=c(58282),f=c(26531),g=a([e]);e=(g.then?(await g)():g)[0];let o={"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",Accept:"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8","Accept-Language":"en-US,en;q=0.9","Sec-Fetch-Mode":"navigate","Sec-Fetch-Site":"none","Sec-Fetch-User":"?1","Sec-Ch-Ua":'"Chromium";v="124", "Not(A:Brand";v="24"',"Upgrade-Insecure-Requests":"1"},p=new Map;function h(a){try{return new URL(a).hostname}catch{return a}}function i(a,b){let c=b.headers.get("set-cookie");if(!c)return;let d=c.split(/,(?=[^;]+=[^;]+)/).map(a=>a.trim().split(";")[0].trim()).filter(Boolean),e=p.get(a)||"",f=e?[...e.split("; "),...d].filter(Boolean).join("; "):d.join("; ");p.set(a,f)}function j(a){let b=h(a),c={...o},d=p.get(b);return d&&(c.Cookie=d),c}async function k(a,b){let c=a,d=[];for(let a=0;a<5;a++){d.push(c);let e=h(c),f=await b(c,{method:"GET",redirect:"manual",headers:j(c),signal:AbortSignal.timeout(2e4)});if(i(e,f),f.status>=300&&f.status<400){let a=f.headers.get("location");if(!a)break;c=new URL(a,c).href;continue}let g=await f.text(),k=function(a){let b=a.match(/<meta[^>]+http-equiv=["']?refresh["']?[^>]+content=["']?\d+;\s*url=([^"'\s>]+)/i);return b?b[1]:null}(g);if(k&&a<4){c=new URL(k,c).href;continue}return{res:f,html:g,finalUrl:c,redirects:d.length>1?d:void 0}}let e=h(c),f=await b(c,{method:"GET",redirect:"follow",headers:j(c),signal:AbortSignal.timeout(2e4)});i(e,f);let g=await f.text();return{res:f,html:g,finalUrl:c,redirects:d}}function l(a){let b=a.replace(/<(script|style|nav|header|footer|noscript)[\s\S]*?<\/\1>/gi,"");return b=(b=(b=(b=b.replace(/<\/?(p|div|br|h[1-6]|li|tr|td|th|section|article|main|aside|blockquote)[^>]*>/gi,"\n")).replace(/<[^>]+>/g," ")).replace(/&amp;/g,"&").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&#39;/g,"'").replace(/&nbsp;/g," ")).replace(/[ \t]+/g," ").replace(/\n{3,}/g,"\n\n").trim()}async function m({url:a,extract:b="text",selector:c,wait_for:d,max_chars:g=12e3}={}){let h,i,j,n,o,p=Math.min(Number(g)||12e3,5e4),q=(0,e.N)("browser_navigate",null);try{({res:h,html:i,finalUrl:j,redirects:n}=await k(a,q))}catch(b){return{status:"error",url:a,final_url:a,content_type:null,content:"Fetch error: "+String(b&&b.message?b.message:b).slice(0,512),length:0}}let r=h.headers.get("content-type")||"";if(d&&!i.includes(d))return{status:"incomplete",url:a,final_url:j,content_type:r,hint:"Substring not found, site may need JS rendering",length:i.length,...n?{redirects:n}:{}};let s=i;if(c){let a=function(a,b){if(!b)return null;try{let c;if(b.startsWith("#")){let a=b.slice(1).replace(/[.*+?^${}()|[\]\\]/g,"\\$&");c=RegExp("<[a-z][^>]+id=[\"']"+a+"[\"'][^>]*>([\\s\\S]*?)<\\/[a-z]+>","i")}else if(b.startsWith(".")){let a=b.slice(1).replace(/[.*+?^${}()|[\]\\]/g,"\\$&");c=RegExp("<[a-z][^>]+class=[\"'][^\"']*"+a+"[^\"']*[\"'][^>]*>([\\s\\S]*?)<\\/[a-z]+>","i")}else{let a=b.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");c=RegExp("<"+a+"[^>]*>([\\s\\S]*?)<\\/"+a+">","i")}let d=a.match(c);return d?d[0]:null}catch{return null}}(i,c);a&&(s=a)}try{if("text"===b)o=l(s).slice(0,p);else if("markdown"===b)o=s.replace(/<(script|style|noscript)[\s\S]*?<\/\1>/gi,"").replace(/<h1[^>]*>([\s\S]*?)<\/h1>/gi,(a,b)=>"\n# "+l(b)+"\n").replace(/<h2[^>]*>([\s\S]*?)<\/h2>/gi,(a,b)=>"\n## "+l(b)+"\n").replace(/<h3[^>]*>([\s\S]*?)<\/h3>/gi,(a,b)=>"\n### "+l(b)+"\n").replace(/<h[4-6][^>]*>([\s\S]*?)<\/h[4-6]>/gi,(a,b)=>"\n#### "+l(b)+"\n").replace(/<a[^>]+href=["']([^"']+)["'][^>]*>([\s\S]*?)<\/a>/gi,(a,b,c)=>"["+l(c)+"]("+b+")").replace(/<code[^>]*>([\s\S]*?)<\/code>/gi,(a,b)=>"`"+b+"`").replace(/<pre[^>]*>([\s\S]*?)<\/pre>/gi,(a,b)=>"\n```\n"+l(b)+"\n```\n").replace(/<li[^>]*>([\s\S]*?)<\/li>/gi,(a,b)=>"\n- "+l(b)).replace(/<\/?(p|div|br)[^>]*>/gi,"\n").replace(/<[^>]+>/g," ").replace(/&amp;/g,"&").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&#39;/g,"'").replace(/&nbsp;/g," ").replace(/[ \t]+/g," ").replace(/\n{3,}/g,"\n\n").trim().slice(0,p);else o="json-ld"===b?function(a){let b,c=[],d=/<script[^>]+type=["']application\/ld\+json["'][^>]*>([\s\S]*?)<\/script>/gi;for(;null!==(b=d.exec(a));)try{c.push(JSON.parse(b[1]))}catch{}return c}(s):"metadata"===b?function(a){let b,c={},d=a.match(/<title[^>]*>([\s\S]*?)<\/title>/i);d&&(c.title=d[1].replace(/<[^>]+>/g,"").trim());let e=/<meta[^>]+(?:name|property)=["']([^"']+)["'][^>]+content=["']([^"']*)["'][^>]*>/gi;for(;null!==(b=e.exec(a));)c[b[1]]=b[2];let f=/<meta[^>]+content=["']([^"']*)["'][^>]+(?:name|property)=["']([^"']+)["'][^>]*>/gi;for(;null!==(b=f.exec(a));)c[b[2]]||(c[b[2]]=b[1]);return c}(s):s.slice(0,p)}catch{o=s.slice(0,p)}let t=o;return"string"==typeof o&&(t=(0,f.nc)(o)),{status:"ok",url:a,final_url:j,content_type:r,content:t,length:"string"==typeof i?i.length:0,...n?{redirects:n}:{}}}async function n(a){let[b,c]=await Promise.all([m({url:a,extract:"json-ld",max_chars:5e4}),m({url:a,extract:"metadata",max_chars:5e4})]);return{json_ld:Array.isArray(b.content)?b.content:[],metadata:"object"==typeof c.content&&null!==c.content?c.content:{}}}d()}catch(a){d(a)}})},18313:(a,b,c)=>{"use strict";c.d(b,{Hb:()=>n,MK:()=>l,NV:()=>m,Ny:()=>g,_d:()=>p,ab:()=>q,eh:()=>i,rb:()=>h,uB:()=>k,vI:()=>o});let d=["backlog","todo","in_progress","in_review","blocked","done","cancelled"],e=["low","medium","high","urgent"],f=["queued","running","waiting_approval","succeeded","failed","cancelled","timed_out"],g=["task.created","task.updated","task.assigned","task.reassigned","task.status_changed","task.comment_added","task.blocked","task.unblocked","task.completed","task.cancelled","task.child_created"],h=["lifecycle","tool_start","tool_result","log","warning","error","approval_required","delegation_proposed","delegation_completed"],i=["activity.logged","task.updated","task.comment.added","task.assigned","task.reassigned","agent.status","agent.run.queued","agent.run.status","agent.run.event","agent.run.log"],j={backlog:["todo","cancelled"],todo:["in_progress","blocked","cancelled","done"],in_progress:["in_review","blocked","todo","done","cancelled"],in_review:["in_progress","done","blocked","cancelled"],blocked:["todo","in_progress","cancelled"],done:["in_review"],cancelled:["todo"]};function k(a){return"done"===a||"cancelled"===a}function l(a){return["queued","running","waiting_approval"].includes(a)}function m(a,b="todo"){return d.includes(a)?a:b}function n(a,b="medium"){return e.includes(a)?a:b}function o(a,b="queued"){return f.includes(a)?a:b}function p(a,b="activity.logged"){return i.includes(a)?a:b}function q(a,b){if(!(!a||a===b||j[a]?.includes(b)))throw Error(`Illegal task transition: ${a} -> ${b}`)}},18530:a=>{"use strict";a.exports=JSON.parse('{"schema_version":1,"slug":"vendor-onboarding","name":"Vendor Onboarding","version":1,"description":"Standard intake for new vendors. Captures contact + services, runs an automated risk review, gates on buyer sign-off, and packages the onboarding pack.","category":"procurement","source":"marketplace","status":"published","stages":[{"slug":"intake","name":"Vendor intake","kind":"intake_form","config":{"form_schema":{"title":"Vendor Onboarding — Intake","description":"Tell us about the vendor. The risk reviewer will use this to score them.","fields":[{"name":"vendor_name","label":"Vendor company name","type":"text","required":true,"placeholder":"Legal entity name"},{"name":"primary_contact_name","label":"Primary contact name","type":"text","required":true},{"name":"primary_contact_email","label":"Primary contact email","type":"email","required":true},{"name":"country","label":"Headquarters country","type":"select","required":true,"options":["United States","United Kingdom","United Arab Emirates","Singapore","Germany","India","Other"]},{"name":"services","label":"Services offered","type":"textarea","required":true,"placeholder":"Short list of services / products this vendor will deliver."},{"name":"annual_value_usd","label":"Estimated annual contract value (USD)","type":"number","required":true,"min":0},{"name":"references","label":"References (names + companies)","type":"textarea","required":false,"placeholder":"Optional. One reference per line."}]}}},{"slug":"risk-review","name":"Automated risk review","kind":"agent_run","config":{"agent_template_slug":"vendor-risk-reviewer","prompt":"You are a vendor risk reviewer. Given the intake payload, produce a structured risk report. Do not call external services — work from the intake alone. Return strict JSON only, no surrounding prose: { \\"outcome\\": \\"pass\\" | \\"reject\\", \\"overall_risk\\": \\"low\\" | \\"medium\\" | \\"high\\", \\"concerns\\": [string], \\"references_summary\\": string, \\"recommended_action\\": \\"auto_approve\\" | \\"manual_review\\" | \\"reject\\", \\"rationale\\": string }. Set outcome=\\"reject\\" when recommended_action is \\"reject\\" (sanctioned region, missing critical info). Set outcome=\\"pass\\" otherwise — the human-approval stage that follows is the real decision point. Risk tiers: low = clear references + reasonable value, medium = thin references OR value > $250k, high = sanctioned region OR missing services OR value > $1M.","output_schema":"vendor_risk_v1","timeout_ms":60000,"on_outcome":{"pass":"buyer-signoff","reject":"fail"}},"on_pass_stage_slug":"buyer-signoff","on_fail_stage_slug":null},{"slug":"buyer-signoff","name":"Buyer sign-off","kind":"human_approval","config":{"action_type":"process.stage.approve","risk":"medium","summary_template":"Approve onboarding for {{intake.vendor_name}} ({{intake.country}}) — risk {{risk-review.overall_risk}}"},"on_pass_stage_slug":"final-package","on_fail_stage_slug":null},{"slug":"final-package","name":"Onboarding pack","kind":"package","config":{"title_template":"Vendor onboarding pack — {{intake.vendor_name}}","include_stages":["intake","risk-review","buyer-signoff"]}}]}')},18630:(a,b,c)=>{"use strict";c.d(b,{m:()=>f});var d=c(1303),e=c(81553);async function f(a={}){let b=await (0,e.runUpdateCheck)({});if(!b.reachable)return{ok:!1,from:(0,e.YO)(),to:null,applied:!1,message:"npm registry unreachable"};if(!b.behind)return{ok:!0,from:b.current,to:b.latest,applied:!1,message:"already up to date"};let c=await (0,d.applyUpdate)({initiatedBy:"self_update_tool"});return{ok:c.ok,from:c.from,to:b.latest,applied:c.ok,message:c.ok?`updated ${c.from} → v${b.latest}; restart required`:`update failed (exit ${c.code})`}}},19151:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{A:()=>n,chatWithClaude:()=>j,x:()=>k});var e=c(50832),f=c(65451),g=a([e,f]);[e,f]=g.then?(await g)():g;let l=Number(process.env.MADARX_ANTHROPIC_MAX_RETRIES??4),m=Number(process.env.MADARX_ANTHROPIC_OUTER_RETRIES??3);function h(){let a=(0,f.resolveAnthropicApiKey)();if(!a)throw Error("ANTHROPIC_API_KEY not configured");return new e.default({apiKey:a,maxRetries:l})}let n="claude-sonnet-4-6",o=a=>new Promise(b=>setTimeout(b,a));async function i(a,b){let c;for(let d=0;d<m;d+=1)try{return await a()}catch(e){if(c=e,!function(a){let b=a?.status;return!!(429===b||408===b||409===b||"number"==typeof b&&b>=500||null==b&&(a?.name==="APIConnectionError"||a?.name==="APIConnectionTimeoutError"||/timeout|ECONNRESET|ENOTFOUND|EAI_AGAIN|socket hang up/i.test(String(a?.message||""))))}(e)||d===m-1)throw e;let a=function(a,b){let c=a?.headers?.get?.("retry-after"),d=null!=c?Number(c):NaN;return Number.isFinite(d)&&d>=0?Math.min(1e3*d,3e4):Math.min(500*2**b,8e3)+Math.floor(250*Math.random())}(e,d);console.warn(`[claude] ${b} transient ${e?.status||e?.name||"error"} — retry ${d+1}/${m-1} in ${a}ms`),await o(a)}throw c}async function j(a,b,c=[],d={}){let e=h(),f={model:d.model||n,max_tokens:d.max_tokens||8192,system:b,messages:a};return c.length&&(f.tools=c),d.tool_choice&&(f.tool_choice=d.tool_choice),"number"==typeof d.temperature&&(f.temperature=d.temperature),i(()=>e.messages.create(f),`chat(${f.model})`)}async function k(a,b,c=[],d=n){let e=h(),f={model:d,max_tokens:8192,system:b,messages:a};return c.length&&(f.tools=c),i(()=>e.messages.stream(f),`stream(${d})`)}d()}catch(a){d(a)}})},19348:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{D4:()=>n,It:()=>o,JF:()=>p}),c(73024);var e=c(34255),f=c(24516),g=c(58282),h=c(73912),i=c(61423),j=a([e,f,g,h,i]);[e,f,g,h,i]=j.then?(await j)():j;let p=["openai","elevenlabs"],q="alloy",r=new Set(["alloy","echo","fable","onyx","nova","shimmer"]);function k(a,...b){let c=String(a??"");for(let a of b){if(!a)continue;let b=String(a).slice(-4);c=c.split(String(a)).join(`***${b}`)}return c}async function l({text:a,voice:b,model:c,format:d,fetchFn:e}){let g,h=(0,f.getSecret)("OPENAI_API_KEY")||process.env.OPENAI_API_KEY;if(!h)throw Error("OPENAI_API_KEY missing for OpenAI TTS");let i=b&&r.has(b)?b:q,j=c||"tts-1",l=d||"mp3";try{g=await e("https://api.openai.com/v1/audio/speech",{method:"POST",headers:{Authorization:`Bearer ${h}`,"Content-Type":"application/json"},body:JSON.stringify({model:j,voice:i,input:a,format:l})})}catch(a){throw Error(`openai tts failed: ${k(a?.message,h)}`)}if(!g.ok){let a="";try{a=(await g.text()).slice(0,256)}catch{}throw Error(`openai tts http ${g.status}: ${k(a,h)}`)}return{audio_buffer:Buffer.from(await g.arrayBuffer()),mime_type:"wav"===l?"audio/wav":"audio/mpeg",extension:"wav"===l?"wav":"mp3",provider:"openai",voice:i,model:j}}async function m({text:a,voice:b,model:c,format:d,fetchFn:e}){let g,h=(0,f.getSecret)("ELEVENLABS_API_KEY")||process.env.ELEVENLABS_API_KEY;if(!h)throw Error("ELEVENLABS_API_KEY missing for ElevenLabs TTS");let i=b||(0,f.getSecret)("ELEVENLABS_VOICE_ID")||process.env.ELEVENLABS_VOICE_ID||"21m00Tcm4TlvDq8ikWAM",j=c||"eleven_multilingual_v2",l="wav"===d?"pcm_16000":"mp3_44100_128";try{g=await e(`https://api.elevenlabs.io/v1/text-to-speech/${encodeURIComponent(i)}?output_format=${l}`,{method:"POST",headers:{"xi-api-key":h,"Content-Type":"application/json",Accept:"audio/mpeg"},body:JSON.stringify({text:a,model_id:j})})}catch(a){throw Error(`elevenlabs tts failed: ${k(a?.message,h)}`)}if(!g.ok){let a="";try{a=(await g.text()).slice(0,256)}catch{}throw Error(`elevenlabs tts http ${g.status}: ${k(a,h)}`)}return{audio_buffer:Buffer.from(await g.arrayBuffer()),mime_type:l.startsWith("pcm_")?"audio/wav":"audio/mpeg",extension:l.startsWith("pcm_")?"wav":"mp3",provider:"elevenlabs",voice:i,model:j}}async function n(a={}){let b=String(a.text||"").trim();if(!b)throw Error("text is required");if(b.length>4e3)throw Error("text too long: max 4000 characters");let c=String(a.provider||process.env.TTS_DEFAULT_PROVIDER||"openai").toLowerCase(),d=p.includes(c)?c:"openai",f=(0,g.N)("voice_speak",a.agent_id??null,a.fetch||fetch),j=await ("elevenlabs"===d?m:l)({text:b,voice:a.voice,model:a.model,format:a.format,fetchFn:f}),k=Math.max(500,Math.round(b.length/14*1e3)),o=null;if(a.save_to_disk&&a.project_id){let c=(0,i.U1)(a.project_id);if(c){let a=function(a){let b=(0,e.getDb)(),c=(0,h.dh)(a),d=b.prepare("SELECT * FROM disk_folders WHERE project_id = ? AND parent_id = ? AND name = ? LIMIT 1").get(a,c.id,"voice");return d||(0,h.vV)(a,c.id,"voice")}(c.id),d=b.slice(0,40).replace(/[^A-Za-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"tts";o=(0,h.QM)(c.id,a.id,{name:`${d}-${Date.now()}.${j.extension}`,buffer:j.audio_buffer,type:j.mime_type},{local_only:!1})}}try{(0,e.getDb)().prepare(`
855
+ </body></html>`}(b,n),meta:{scenario_rows:l.scen.length,intercepts:l.intercepts.length,targets:l.targets.length,comparables:d.length,narrative_authored:Object.keys(c||{}).length>0}}}},17607:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{B:()=>n,M:()=>m});var e=c(58282),f=c(26531),g=a([e]);e=(g.then?(await g)():g)[0];let o={"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",Accept:"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8","Accept-Language":"en-US,en;q=0.9","Sec-Fetch-Mode":"navigate","Sec-Fetch-Site":"none","Sec-Fetch-User":"?1","Sec-Ch-Ua":'"Chromium";v="124", "Not(A:Brand";v="24"',"Upgrade-Insecure-Requests":"1"},p=new Map;function h(a){try{return new URL(a).hostname}catch{return a}}function i(a,b){let c=b.headers.get("set-cookie");if(!c)return;let d=c.split(/,(?=[^;]+=[^;]+)/).map(a=>a.trim().split(";")[0].trim()).filter(Boolean),e=p.get(a)||"",f=e?[...e.split("; "),...d].filter(Boolean).join("; "):d.join("; ");p.set(a,f)}function j(a){let b=h(a),c={...o},d=p.get(b);return d&&(c.Cookie=d),c}async function k(a,b){let c=a,d=[];for(let a=0;a<5;a++){d.push(c);let e=h(c),f=await b(c,{method:"GET",redirect:"manual",headers:j(c),signal:AbortSignal.timeout(2e4)});if(i(e,f),f.status>=300&&f.status<400){let a=f.headers.get("location");if(!a)break;c=new URL(a,c).href;continue}let g=await f.text(),k=function(a){let b=a.match(/<meta[^>]+http-equiv=["']?refresh["']?[^>]+content=["']?\d+;\s*url=([^"'\s>]+)/i);return b?b[1]:null}(g);if(k&&a<4){c=new URL(k,c).href;continue}return{res:f,html:g,finalUrl:c,redirects:d.length>1?d:void 0}}let e=h(c),f=await b(c,{method:"GET",redirect:"follow",headers:j(c),signal:AbortSignal.timeout(2e4)});i(e,f);let g=await f.text();return{res:f,html:g,finalUrl:c,redirects:d}}function l(a){let b=a.replace(/<(script|style|nav|header|footer|noscript)[\s\S]*?<\/\1>/gi,"");return b=(b=(b=(b=b.replace(/<\/?(p|div|br|h[1-6]|li|tr|td|th|section|article|main|aside|blockquote)[^>]*>/gi,"\n")).replace(/<[^>]+>/g," ")).replace(/&amp;/g,"&").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&#39;/g,"'").replace(/&nbsp;/g," ")).replace(/[ \t]+/g," ").replace(/\n{3,}/g,"\n\n").trim()}async function m({url:a,extract:b="text",selector:c,wait_for:d,max_chars:g=12e3}={}){let h,i,j,n,o,p=Math.min(Number(g)||12e3,5e4),q=(0,e.N)("browser_navigate",null);try{({res:h,html:i,finalUrl:j,redirects:n}=await k(a,q))}catch(b){return{status:"error",url:a,final_url:a,content_type:null,content:"Fetch error: "+String(b&&b.message?b.message:b).slice(0,512),length:0}}let r=h.headers.get("content-type")||"";if(d&&!i.includes(d))return{status:"incomplete",url:a,final_url:j,content_type:r,hint:"Substring not found, site may need JS rendering",length:i.length,...n?{redirects:n}:{}};let s=i;if(c){let a=function(a,b){if(!b)return null;try{let c;if(b.startsWith("#")){let a=b.slice(1).replace(/[.*+?^${}()|[\]\\]/g,"\\$&");c=RegExp("<[a-z][^>]+id=[\"']"+a+"[\"'][^>]*>([\\s\\S]*?)<\\/[a-z]+>","i")}else if(b.startsWith(".")){let a=b.slice(1).replace(/[.*+?^${}()|[\]\\]/g,"\\$&");c=RegExp("<[a-z][^>]+class=[\"'][^\"']*"+a+"[^\"']*[\"'][^>]*>([\\s\\S]*?)<\\/[a-z]+>","i")}else{let a=b.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");c=RegExp("<"+a+"[^>]*>([\\s\\S]*?)<\\/"+a+">","i")}let d=a.match(c);return d?d[0]:null}catch{return null}}(i,c);a&&(s=a)}try{if("text"===b)o=l(s).slice(0,p);else if("markdown"===b)o=s.replace(/<(script|style|noscript)[\s\S]*?<\/\1>/gi,"").replace(/<h1[^>]*>([\s\S]*?)<\/h1>/gi,(a,b)=>"\n# "+l(b)+"\n").replace(/<h2[^>]*>([\s\S]*?)<\/h2>/gi,(a,b)=>"\n## "+l(b)+"\n").replace(/<h3[^>]*>([\s\S]*?)<\/h3>/gi,(a,b)=>"\n### "+l(b)+"\n").replace(/<h[4-6][^>]*>([\s\S]*?)<\/h[4-6]>/gi,(a,b)=>"\n#### "+l(b)+"\n").replace(/<a[^>]+href=["']([^"']+)["'][^>]*>([\s\S]*?)<\/a>/gi,(a,b,c)=>"["+l(c)+"]("+b+")").replace(/<code[^>]*>([\s\S]*?)<\/code>/gi,(a,b)=>"`"+b+"`").replace(/<pre[^>]*>([\s\S]*?)<\/pre>/gi,(a,b)=>"\n```\n"+l(b)+"\n```\n").replace(/<li[^>]*>([\s\S]*?)<\/li>/gi,(a,b)=>"\n- "+l(b)).replace(/<\/?(p|div|br)[^>]*>/gi,"\n").replace(/<[^>]+>/g," ").replace(/&amp;/g,"&").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&#39;/g,"'").replace(/&nbsp;/g," ").replace(/[ \t]+/g," ").replace(/\n{3,}/g,"\n\n").trim().slice(0,p);else o="json-ld"===b?function(a){let b,c=[],d=/<script[^>]+type=["']application\/ld\+json["'][^>]*>([\s\S]*?)<\/script>/gi;for(;null!==(b=d.exec(a));)try{c.push(JSON.parse(b[1]))}catch{}return c}(s):"metadata"===b?function(a){let b,c={},d=a.match(/<title[^>]*>([\s\S]*?)<\/title>/i);d&&(c.title=d[1].replace(/<[^>]+>/g,"").trim());let e=/<meta[^>]+(?:name|property)=["']([^"']+)["'][^>]+content=["']([^"']*)["'][^>]*>/gi;for(;null!==(b=e.exec(a));)c[b[1]]=b[2];let f=/<meta[^>]+content=["']([^"']*)["'][^>]+(?:name|property)=["']([^"']+)["'][^>]*>/gi;for(;null!==(b=f.exec(a));)c[b[2]]||(c[b[2]]=b[1]);return c}(s):s.slice(0,p)}catch{o=s.slice(0,p)}let t=o;return"string"==typeof o&&(t=(0,f.nc)(o)),{status:"ok",url:a,final_url:j,content_type:r,content:t,length:"string"==typeof i?i.length:0,...n?{redirects:n}:{}}}async function n(a){let[b,c]=await Promise.all([m({url:a,extract:"json-ld",max_chars:5e4}),m({url:a,extract:"metadata",max_chars:5e4})]);return{json_ld:Array.isArray(b.content)?b.content:[],metadata:"object"==typeof c.content&&null!==c.content?c.content:{}}}d()}catch(a){d(a)}})},18313:(a,b,c)=>{"use strict";c.d(b,{Hb:()=>n,MK:()=>l,NV:()=>m,Ny:()=>g,_d:()=>p,ab:()=>q,eh:()=>i,rb:()=>h,uB:()=>k,vI:()=>o});let d=["backlog","todo","in_progress","in_review","blocked","done","cancelled"],e=["low","medium","high","urgent"],f=["queued","running","waiting_approval","succeeded","failed","cancelled","timed_out"],g=["task.created","task.updated","task.assigned","task.reassigned","task.status_changed","task.comment_added","task.blocked","task.unblocked","task.completed","task.cancelled","task.child_created"],h=["lifecycle","tool_start","tool_result","log","warning","error","approval_required","delegation_proposed","delegation_completed"],i=["activity.logged","task.updated","task.comment.added","task.assigned","task.reassigned","agent.status","agent.run.queued","agent.run.status","agent.run.event","agent.run.log"],j={backlog:["todo","cancelled"],todo:["in_progress","blocked","cancelled","done"],in_progress:["in_review","blocked","todo","done","cancelled"],in_review:["in_progress","done","blocked","cancelled"],blocked:["todo","in_progress","cancelled"],done:["in_review"],cancelled:["todo"]};function k(a){return"done"===a||"cancelled"===a}function l(a){return["queued","running","waiting_approval"].includes(a)}function m(a,b="todo"){return d.includes(a)?a:b}function n(a,b="medium"){return e.includes(a)?a:b}function o(a,b="queued"){return f.includes(a)?a:b}function p(a,b="activity.logged"){return i.includes(a)?a:b}function q(a,b){if(!(!a||a===b||j[a]?.includes(b)))throw Error(`Illegal task transition: ${a} -> ${b}`)}},18530:a=>{"use strict";a.exports=JSON.parse('{"schema_version":1,"slug":"vendor-onboarding","name":"Vendor Onboarding","version":1,"description":"Standard intake for new vendors. Captures contact + services, runs an automated risk review, gates on buyer sign-off, and packages the onboarding pack.","category":"procurement","source":"marketplace","status":"published","stages":[{"slug":"intake","name":"Vendor intake","kind":"intake_form","config":{"form_schema":{"title":"Vendor Onboarding — Intake","description":"Tell us about the vendor. The risk reviewer will use this to score them.","fields":[{"name":"vendor_name","label":"Vendor company name","type":"text","required":true,"placeholder":"Legal entity name"},{"name":"primary_contact_name","label":"Primary contact name","type":"text","required":true},{"name":"primary_contact_email","label":"Primary contact email","type":"email","required":true},{"name":"country","label":"Headquarters country","type":"select","required":true,"options":["United States","United Kingdom","United Arab Emirates","Singapore","Germany","India","Other"]},{"name":"services","label":"Services offered","type":"textarea","required":true,"placeholder":"Short list of services / products this vendor will deliver."},{"name":"annual_value_usd","label":"Estimated annual contract value (USD)","type":"number","required":true,"min":0},{"name":"references","label":"References (names + companies)","type":"textarea","required":false,"placeholder":"Optional. One reference per line."}]}}},{"slug":"risk-review","name":"Automated risk review","kind":"agent_run","config":{"agent_template_slug":"vendor-risk-reviewer","prompt":"You are a vendor risk reviewer. Given the intake payload, produce a structured risk report. Do not call external services — work from the intake alone. Return strict JSON only, no surrounding prose: { \\"outcome\\": \\"pass\\" | \\"reject\\", \\"overall_risk\\": \\"low\\" | \\"medium\\" | \\"high\\", \\"concerns\\": [string], \\"references_summary\\": string, \\"recommended_action\\": \\"auto_approve\\" | \\"manual_review\\" | \\"reject\\", \\"rationale\\": string }. Set outcome=\\"reject\\" when recommended_action is \\"reject\\" (sanctioned region, missing critical info). Set outcome=\\"pass\\" otherwise — the human-approval stage that follows is the real decision point. Risk tiers: low = clear references + reasonable value, medium = thin references OR value > $250k, high = sanctioned region OR missing services OR value > $1M.","output_schema":"vendor_risk_v1","timeout_ms":60000,"on_outcome":{"pass":"buyer-signoff","reject":"fail"}},"on_pass_stage_slug":"buyer-signoff","on_fail_stage_slug":null},{"slug":"buyer-signoff","name":"Buyer sign-off","kind":"human_approval","config":{"action_type":"process.stage.approve","risk":"medium","summary_template":"Approve onboarding for {{intake.vendor_name}} ({{intake.country}}) — risk {{risk-review.overall_risk}}"},"on_pass_stage_slug":"final-package","on_fail_stage_slug":null},{"slug":"final-package","name":"Onboarding pack","kind":"package","config":{"title_template":"Vendor onboarding pack — {{intake.vendor_name}}","include_stages":["intake","risk-review","buyer-signoff"]}}]}')},18630:(a,b,c)=>{"use strict";c.d(b,{m:()=>f});var d=c(1303),e=c(81553);async function f(a={}){let b=await (0,e.runUpdateCheck)({});if(!b.reachable)return{ok:!1,from:(0,e.YO)(),to:null,applied:!1,message:"npm registry unreachable"};if(!b.behind)return{ok:!0,from:b.current,to:b.latest,applied:!1,message:"already up to date"};let c=await (0,d.applyUpdate)({initiatedBy:"self_update_tool"});return{ok:c.ok,from:c.from,to:b.latest,applied:c.ok,message:c.ok?`updated ${c.from} → v${b.latest}; restart required`:`update failed (exit ${c.code})`}}},19151:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{A:()=>n,chatWithClaude:()=>j,x:()=>k});var e=c(50832),f=c(65451),g=a([e,f]);[e,f]=g.then?(await g)():g;let l=Number(process.env.MADARX_ANTHROPIC_MAX_RETRIES??4),m=Number(process.env.MADARX_ANTHROPIC_OUTER_RETRIES??3);function h(){let a=(0,f.resolveAnthropicApiKey)();if(!a)throw Error("ANTHROPIC_API_KEY not configured");return new e.default({apiKey:a,maxRetries:l})}let n="claude-sonnet-4-6",o=a=>new Promise(b=>setTimeout(b,a));async function i(a,b){let c;for(let d=0;d<m;d+=1)try{return await a()}catch(e){if(c=e,!function(a){let b=a?.status;return!!(429===b||408===b||409===b||"number"==typeof b&&b>=500||null==b&&(a?.name==="APIConnectionError"||a?.name==="APIConnectionTimeoutError"||/timeout|ECONNRESET|ENOTFOUND|EAI_AGAIN|socket hang up/i.test(String(a?.message||""))))}(e)||d===m-1)throw e;let a=function(a,b){let c=a?.headers?.get?.("retry-after"),d=null!=c?Number(c):NaN;return Number.isFinite(d)&&d>=0?Math.min(1e3*d,3e4):Math.min(500*2**b,8e3)+Math.floor(250*Math.random())}(e,d);console.warn(`[claude] ${b} transient ${e?.status||e?.name||"error"} — retry ${d+1}/${m-1} in ${a}ms`),await o(a)}throw c}async function j(a,b,c=[],d={}){let e=h(),f={model:d.model||n,max_tokens:d.max_tokens||8192,system:b,messages:a};return c.length&&(f.tools=c),d.tool_choice&&(f.tool_choice=d.tool_choice),"number"==typeof d.temperature&&(f.temperature=d.temperature),i(()=>e.messages.create(f),`chat(${f.model})`)}async function k(a,b,c=[],d=n){let e=h(),f={model:d,max_tokens:8192,system:b,messages:a};return c.length&&(f.tools=c),i(()=>e.messages.stream(f),`stream(${d})`)}d()}catch(a){d(a)}})},19348:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{D4:()=>p,It:()=>q,JF:()=>r}),c(73024);var e=c(34255),f=c(24516),g=c(58282),h=c(73912),i=c(61423),j=a([e,f,g,h,i]);[e,f,g,h,i]=j.then?(await j)():j;let r=["openai","elevenlabs","local"],s="alloy",t=new Set(["alloy","echo","fable","onyx","nova","shimmer"]);function k(){let a=process.env.MADARX_LOCAL_TTS_URL;return a&&/^https?:\/\//i.test(a.trim())?a.trim():null}function l(a,...b){let c=String(a??"");for(let a of b){if(!a)continue;let b=String(a).slice(-4);c=c.split(String(a)).join(`***${b}`)}return c}async function m({text:a,voice:b,model:c,format:d,fetchFn:e}){let g,h=(0,f.getSecret)("OPENAI_API_KEY")||process.env.OPENAI_API_KEY;if(!h)throw Error("OPENAI_API_KEY missing for OpenAI TTS");let i=b&&t.has(b)?b:s,j=c||"tts-1",k=d||"mp3";try{g=await e("https://api.openai.com/v1/audio/speech",{method:"POST",headers:{Authorization:`Bearer ${h}`,"Content-Type":"application/json"},body:JSON.stringify({model:j,voice:i,input:a,format:k})})}catch(a){throw Error(`openai tts failed: ${l(a?.message,h)}`)}if(!g.ok){let a="";try{a=(await g.text()).slice(0,256)}catch{}throw Error(`openai tts http ${g.status}: ${l(a,h)}`)}return{audio_buffer:Buffer.from(await g.arrayBuffer()),mime_type:"wav"===k?"audio/wav":"audio/mpeg",extension:"wav"===k?"wav":"mp3",provider:"openai",voice:i,model:j}}async function n({text:a,voice:b,model:c,format:d,fetchFn:e}){let g,h=(0,f.getSecret)("ELEVENLABS_API_KEY")||process.env.ELEVENLABS_API_KEY;if(!h)throw Error("ELEVENLABS_API_KEY missing for ElevenLabs TTS");let i=b||(0,f.getSecret)("ELEVENLABS_VOICE_ID")||process.env.ELEVENLABS_VOICE_ID||"21m00Tcm4TlvDq8ikWAM",j=c||"eleven_multilingual_v2",k="wav"===d?"pcm_16000":"mp3_44100_128";try{g=await e(`https://api.elevenlabs.io/v1/text-to-speech/${encodeURIComponent(i)}?output_format=${k}`,{method:"POST",headers:{"xi-api-key":h,"Content-Type":"application/json",Accept:"audio/mpeg"},body:JSON.stringify({text:a,model_id:j})})}catch(a){throw Error(`elevenlabs tts failed: ${l(a?.message,h)}`)}if(!g.ok){let a="";try{a=(await g.text()).slice(0,256)}catch{}throw Error(`elevenlabs tts http ${g.status}: ${l(a,h)}`)}return{audio_buffer:Buffer.from(await g.arrayBuffer()),mime_type:k.startsWith("pcm_")?"audio/wav":"audio/mpeg",extension:k.startsWith("pcm_")?"wav":"mp3",provider:"elevenlabs",voice:i,model:j}}async function o({text:a,voice:b,model:c,format:d,fetchFn:e}){let f,g=k();if(!g)throw Error("MADARX_LOCAL_TTS_URL missing for local TTS");let h=d||"wav",i=c||process.env.MADARX_LOCAL_TTS_MODEL||"local",j=b||process.env.MADARX_LOCAL_TTS_VOICE||"default";try{f=await e(g,{method:"POST",headers:{"Content-Type":"application/json",Accept:"mp3"===h?"audio/mpeg,application/json":"audio/wav,audio/*,application/json"},body:JSON.stringify({text:a,voice:j,model:i,format:h})})}catch(a){throw Error(`local tts failed: ${l(a?.message)}`)}if(!f.ok){let a="";try{a=(await f.text()).slice(0,256)}catch{}throw Error(`local tts http ${f.status}: ${a}`)}let m=String(f.headers.get("content-type")||"").toLowerCase();if(m.includes("application/json")){let a;try{a=await f.json()}catch{throw Error("local tts returned invalid JSON")}let b=a?.audio_base64||a?.audio;if(!b)throw Error("local tts JSON must include audio_base64");let c=a.mime_type||a.content_type||("mp3"===h?"audio/mpeg":"audio/wav"),d=a.extension||(String(c).includes("mpeg")||String(c).includes("mp3")?"mp3":"wav");return{audio_buffer:Buffer.from(String(b),"base64"),mime_type:c,extension:d,provider:"local",voice:a.voice||j,model:a.model||i}}let n=Buffer.from(await f.arrayBuffer()),o=m.includes("mpeg")||m.includes("mp3")||"mp3"===h;return{audio_buffer:n,mime_type:m||(o?"audio/mpeg":"audio/wav"),extension:o?"mp3":"wav",provider:"local",voice:j,model:i}}async function p(a={}){let b=String(a.text||"").trim();if(!b)throw Error("text is required");if(b.length>4e3)throw Error("text too long: max 4000 characters");let c=String(a.provider||process.env.MADARX_VOICE_DEFAULT_PROVIDER||process.env.TTS_DEFAULT_PROVIDER||"openai").toLowerCase(),d=r.includes(c)?c:"openai",f=(0,g.N)("voice_speak",a.agent_id??null,a.fetch||fetch),j=await ("elevenlabs"===d?n:"local"===d?o:m)({text:b,voice:a.voice,model:a.model,format:a.format,fetchFn:f}),k=Math.max(500,Math.round(b.length/14*1e3)),l=null;if(a.save_to_disk&&a.project_id){let c=(0,i.U1)(a.project_id);if(c){let a=function(a){let b=(0,e.getDb)(),c=(0,h.dh)(a),d=b.prepare("SELECT * FROM disk_folders WHERE project_id = ? AND parent_id = ? AND name = ? LIMIT 1").get(a,c.id,"voice");return d||(0,h.vV)(a,c.id,"voice")}(c.id),d=b.slice(0,40).replace(/[^A-Za-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"tts";l=(0,h.QM)(c.id,a.id,{name:`${d}-${Date.now()}.${j.extension}`,buffer:j.audio_buffer,type:j.mime_type},{local_only:!1})}}try{(0,e.getDb)().prepare(`
856
856
  INSERT INTO audit_logs (id, at, type, summary, status, meta)
857
857
  VALUES (?, ?, ?, ?, ?, ?)
858
- `).run((0,e.newId)("audit"),(0,e.nowIso)(),"voice.tts",`TTS ${d} voice=${j.voice} chars=${b.length}`,"complete",JSON.stringify({provider:d,voice:j.voice,model:j.model,text_chars:b.length,audio_bytes:j.audio_buffer.length,disk_file_id:o?.id||null,agent_id:a.agent_id||null}))}catch(a){console.warn("[tts] audit write failed:",a?.message||a)}return{audio_buffer:j.audio_buffer,mime_type:j.mime_type,extension:j.extension,provider:d,voice:j.voice,model:j.model,duration_estimate_ms:k,disk_file:o}}function o(){return{openai:!!((0,f.getSecret)("OPENAI_API_KEY")||process.env.OPENAI_API_KEY),elevenlabs:!!((0,f.getSecret)("ELEVENLABS_API_KEY")||process.env.ELEVENLABS_API_KEY)}}d()}catch(a){d(a)}})},20086:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{An:()=>h,Bs:()=>g,_w:()=>j,b4:()=>i});var e=c(34255),f=a([e]);function g(a,{scope_key:b,scope_value:c},d={}){let f=(0,e.getDb)(),h=!!d.default_allow,i=f.prepare("SELECT id FROM tool_allowlists WHERE tool_name = ? AND scope_key = ?").all(a,b);return 0===i.length?h?{ok:!0}:{ok:!1,missing_entry:{tool_name:a,scope_key:b,scope_value:c}}:f.prepare("SELECT id FROM tool_allowlists WHERE tool_name = ? AND scope_key = ? AND scope_value = ?").get(a,b,String(c))?{ok:!0}:{ok:!1,missing_entry:{tool_name:a,scope_key:b,scope_value:c}}}function h({tool_name:a,scope_key:b,scope_value:c,label:d}){if(!a)throw Error("tool_name is required");if(!b)throw Error("scope_key is required");if(!c&&0!==c)throw Error("scope_value is required");let f=(0,e.getDb)(),g=(0,e.newId)("tal"),h=(0,e.nowIso)(),i=d?String(d).trim():null;return f.prepare(`
858
+ `).run((0,e.newId)("audit"),(0,e.nowIso)(),"voice.tts",`TTS ${d} voice=${j.voice} chars=${b.length}`,"complete",JSON.stringify({provider:d,voice:j.voice,model:j.model,text_chars:b.length,audio_bytes:j.audio_buffer.length,disk_file_id:l?.id||null,agent_id:a.agent_id||null}))}catch(a){console.warn("[tts] audit write failed:",a?.message||a)}return{audio_buffer:j.audio_buffer,mime_type:j.mime_type,extension:j.extension,provider:d,voice:j.voice,model:j.model,duration_estimate_ms:k,disk_file:l}}function q(){return{openai:!!((0,f.getSecret)("OPENAI_API_KEY")||process.env.OPENAI_API_KEY),elevenlabs:!!((0,f.getSecret)("ELEVENLABS_API_KEY")||process.env.ELEVENLABS_API_KEY),local:!!k()}}d()}catch(a){d(a)}})},20086:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{An:()=>h,Bs:()=>g,_w:()=>j,b4:()=>i});var e=c(34255),f=a([e]);function g(a,{scope_key:b,scope_value:c},d={}){let f=(0,e.getDb)(),h=!!d.default_allow,i=f.prepare("SELECT id FROM tool_allowlists WHERE tool_name = ? AND scope_key = ?").all(a,b);return 0===i.length?h?{ok:!0}:{ok:!1,missing_entry:{tool_name:a,scope_key:b,scope_value:c}}:f.prepare("SELECT id FROM tool_allowlists WHERE tool_name = ? AND scope_key = ? AND scope_value = ?").get(a,b,String(c))?{ok:!0}:{ok:!1,missing_entry:{tool_name:a,scope_key:b,scope_value:c}}}function h({tool_name:a,scope_key:b,scope_value:c,label:d}){if(!a)throw Error("tool_name is required");if(!b)throw Error("scope_key is required");if(!c&&0!==c)throw Error("scope_value is required");let f=(0,e.getDb)(),g=(0,e.newId)("tal"),h=(0,e.nowIso)(),i=d?String(d).trim():null;return f.prepare(`
859
859
  INSERT INTO tool_allowlists (id, tool_name, scope_key, scope_value, label, created_at)
860
860
  VALUES (?, ?, ?, ?, ?, ?)
861
861
  `).run(g,String(a),String(b),String(c),i,h),f.prepare(`
@@ -3286,7 +3286,7 @@ Next action: choose a specialized agent, create a local run folder, keep human-i
3286
3286
  `).run(i,h,b,a.color||"#111318",a.description||null,a.status||"active",k,m),y(i,h),s(h)}function r(a={}){let b=(0,g.getDb)(),c=a.status||"active";return"all"===c?b.prepare("SELECT * FROM projects ORDER BY status ASC, created_at ASC").all().map(k):b.prepare("SELECT * FROM projects WHERE status = ? ORDER BY created_at ASC").all(c).map(k)}function s(a){let b=(0,g.getDb)();return k(b.prepare("SELECT * FROM projects WHERE id = ? OR slug = ? LIMIT 1").get(a,a))}function t(a,b={}){let c=s(a);if(!c)return null;let d=["name","color","description","status","folder_path"],e=Object.entries(b).filter(([a,b])=>d.includes(a)&&void 0!==b);if(!e.length)return c;let f=e.map(([a])=>`${a} = ?`).join(", "),h=e.map(([,a])=>a);return(0,g.getDb)().prepare(`UPDATE projects SET ${f} WHERE id = ?`).run(...h,c.id),s(c.id)}function u(a){let b=s(a);if(!b)return null;if(b.id===B){let a=Error("The Personal project is the default scope and cannot be archived.");throw a.code="PROJECT_PROTECTED",a}return t(a,{status:"archived"})}function v(a=(0,g.getDb)()){try{return a.prepare("UPDATE artifacts SET project_id = ? WHERE project_id IS NULL OR project_id = ''").run(B).changes||0}catch{return 0}}function w(a){let b=s(a);if(!b)return{deleted:!1,reason:"not_found"};if(b.id===B){let a=Error("The Personal project is the default scope and cannot be deleted.");throw a.code="PROJECT_PROTECTED",a}let c=(0,g.getDb)();c.exec("BEGIN");try{for(let a of C)try{c.prepare(`DELETE FROM ${a} WHERE project_id = ?`).run(b.id)}catch(a){if(!/no such (table|column)/i.test(String(a?.message||a)))throw a}c.prepare("DELETE FROM projects WHERE id = ?").run(b.id),c.exec("COMMIT")}catch(a){try{c.exec("ROLLBACK")}catch{}throw a}try{let a=f.join(z,b.slug);e.rmSync(a,{recursive:!0,force:!0})}catch{}return{deleted:!0,project:b}}function x(a=(0,g.getDb)()){let b=a.prepare("SELECT * FROM projects WHERE id = 'personal' OR slug = 'personal'").get();if(b){if(!b.folder_path){let c=l(b.slug);try{e.mkdirSync(c,{recursive:!0})}catch{}a.prepare("UPDATE projects SET folder_path = ? WHERE id = ?").run(c,b.id)}return y(b.id,b.slug,a),v(a),k(a.prepare("SELECT * FROM projects WHERE id = 'personal'").get())}let c=(()=>{try{return e.existsSync(A)}catch{return!1}})(),d=a.prepare("SELECT 1 FROM projects LIMIT 1").get();if(c||d)return null;let f=(0,g.nowIso)(),h=l(B);try{e.mkdirSync(h,{recursive:!0})}catch{}a.prepare("INSERT INTO projects (id, slug, name, color, description, status, folder_path, created_at) VALUES (?, ?, ?, ?, ?, 'active', ?, ?)").run(B,B,"Personal","#c2452a","Your personal project — keep agents, files, memory, and integrations scoped to you.",h,f),y(B,B,a),v(a);try{e.writeFileSync(A,f)}catch{}return k(a.prepare("SELECT * FROM projects WHERE id = ?").get(B))}function y(a,b,c=(0,g.getDb)()){try{let d=c.prepare("SELECT id FROM disk_folders WHERE project_id = ? AND parent_id IS NULL LIMIT 1").get(a);if(d)return d.id;let e=`df-root-${a}`.replace(/[^a-zA-Z0-9_-]/g,"-"),f=(0,g.nowIso)();return c.prepare("INSERT INTO disk_folders (id, project_id, parent_id, name, path, created_at, updated_at) VALUES (?, ?, NULL, ?, ?, ?, ?)").run(e,a,b||a,`/${b||a}/`,f,f),e}catch{return null}}d()}catch(a){d(a)}})},63289:(a,b,c)=>{"use strict";c.d(b,{S:()=>g});let d=/<\s*tool_(call|response)\s*>/i,e=/\{\s*"name"\s*:\s*"[a-z0-9._-]+"\s*,\s*"(parameters|arguments)"\s*:/i,f=/"(snippet|tool_response)"\s*:/i;function g(a){let b=String(a||"").replace(/```[\s\S]*?```/g," ").replace(/~~~[\s\S]*?~~~/g," ").replace(/`[^`\n]*`/g," ");return!!b.trim()&&(!!(d.test(b)||e.test(b)&&((b.match(/\{\s*"name"\s*:\s*"[a-z0-9._-]+"\s*,\s*"(parameters|arguments)"\s*:/gi)||[]).length>=2||f.test(b)))||!1)}},65451:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{resolveAnthropicApiKey:()=>g});var e=c(24516),f=a([e]);function g(){try{let a=(0,e.getSecret)("ANTHROPIC_API_KEY");if(a)return a}catch{}return process.env.ANTHROPIC_API_KEY||null}e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},67179:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{getConfig:()=>g,setConfig:()=>h});var e=c(34255),f=a([e]);function g(a,b=null){if(!a)return b;let c=(0,e.getDb)().prepare("SELECT value FROM config WHERE key = ?").get(String(a));return c?c.value:b}function h(a,b){if(!a)throw Error("config key is required");let c=null==b?"":String(b);return(0,e.getDb)().prepare(`
3287
3287
  INSERT INTO config (key, value) VALUES (?, ?)
3288
3288
  ON CONFLICT(key) DO UPDATE SET value = excluded.value
3289
- `).run(String(a),c),c}e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},68732:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{x:()=>k,y:()=>l});var e=c(31421),f=c(60105),g=c(8437),h=c(26531),i=a([f,g]);function j(a){return(0,h.nc)(String(a||"").slice(0,Number(process.env.MADARX_TOOL_OUTPUT_MAX_BYTES||5e4)))}function k(a={}){let b=String(a.command||""),c=Array.isArray(a.args)?a.args.map(String):[],{path:d}=(0,h.hC)(a.cwd||"."),e=(0,h.IB)(b,c);if(e.blocked)throw Error(e.reason);return{command:b,args:c,cwd:d,classified:e}}async function l(a={},b={}){let{command:c,args:d,cwd:h,classified:i}=k(a);if(i.approval_required&&!b.owner_trusted&&!(0,g.v)(a.approval_id,{action_type:"terminal_run",matches:a=>{var b;return a.command===c&&(b=a.args,JSON.stringify(b||[])===JSON.stringify(d||[]))&&a.cwd===h}})){let a=(0,g.D6)({action_type:"terminal_run",risk:i.risk,summary:`Run ${c} ${d.join(" ")}`.trim(),payload:{command:c,args:d,cwd:h,reason:i.reason}});return{ok:!1,status:"approval_required",approval_request_id:a.id,reason:i.reason}}let m=Math.max(1,Math.min(6e5,Number(a.timeout_ms||process.env.MADARX_TERMINAL_TIMEOUT_MS||18e4))),n=Date.now();return await new Promise(a=>{let b="",g="",i=(0,e.spawn)(c,d,{cwd:h,shell:!1,stdio:["ignore","pipe","pipe"]}),k=setTimeout(()=>i.kill("SIGTERM"),m);i.stdout.on("data",a=>{b+=a}),i.stderr.on("data",a=>{g+=a}),i.on("error",e=>{clearTimeout(k),(0,f.appendAudit)({type:"local.terminal_run",summary:`terminal_run failed: ${c}`,status:"failed",meta:{command:c,args:d,cwd:h,error:e.message}}),a({ok:!1,tool:"terminal_run",status:"failed",command:c,args:d,cwd:h,error:e.message,stdout:j(b),stderr:j(g)})}),i.on("close",(e,i)=>{clearTimeout(k);let l=i?"timeout":0===e?"complete":"failed";(0,f.appendAudit)({type:"local.terminal_run",summary:`terminal_run ${l}: ${c}`,status:l,meta:{command:c,args:d,cwd:h,exit_code:e,signal:i,duration_ms:Date.now()-n,stdout_preview:j(b),stderr_preview:j(g)}}),a({ok:0===e&&!i,tool:"terminal_run",status:l,command:c,args:d,cwd:h,exit_code:e,signal:i,stdout:j(b),stderr:j(g),duration_ms:Date.now()-n})})})}[f,g]=i.then?(await i)():i,d()}catch(a){d(a)}})},69102:(a,b,c)=>{"use strict";let d,e;c.d(b,{K3:()=>f,rU:()=>l,tj:()=>j});let f=Number(process.env.MINES_OCR_THRESHOLD_CHARS_PER_PAGE)||80,g=process.env.MINES_OCR_LANGS||"spa+eng";async function h(){return void 0===d&&(d=(async()=>{try{return await import("tesseract.js")}catch{return null}})().catch(()=>null)),d}async function i(){return void 0===e&&(e=(async()=>{try{let a=await import("pdf-to-png-converter");if("function"==typeof a?.pdfToPng)return async b=>(await a.pdfToPng(b,{viewportScale:2})).map((a,b)=>({page:a.pageNumber||b+1,buffer:a.content}))}catch{}return null})().catch(()=>null)),e}function j(a,b){let c=b;return(null==c||Number.isNaN(Number(c)))&&(c=String(a??"").trim().length),Number(c)<f}async function k(a,b=g){let c=await h(),d=c?.recognize||c?.default?.recognize;if("function"!=typeof d)return null;try{let{data:c}=await d(a,b);return{text:String(c?.text||""),confidence:Number(c?.confidence??0)}}catch{return null}}async function l(a,b){let c,d=await i(),e=await h();if(!d||!e)return{available:!1,pages:[]};try{c=await d(a)}catch{return{available:!1,pages:[]}}let[f,g]=Array.isArray(b)?b:[null,null],j=[];for(let a of c){if(null!=f&&a.page<f||null!=g&&a.page>g)continue;let b=await k(a.buffer);j.push({page:a.page,text:b?.text||"",confidence:b?.confidence??0})}return{available:!0,pages:j}}},69143:a=>{"use strict";a.exports=JSON.parse('{"schema_version":1,"slug":"contract-review","name":"Contract Review","version":1,"description":"Paste a contract draft and route it through an automated clause review, then counsel approval, then a packaged review report.","category":"legal","source":"marketplace","status":"published","stages":[{"slug":"intake","name":"Contract intake","kind":"intake_form","config":{"form_schema":{"title":"Contract Review — Intake","description":"Paste the contract text and a few details for the reviewer.","fields":[{"name":"counterparty","label":"Counterparty name","type":"text","required":true},{"name":"contract_title","label":"Contract title","type":"text","required":true},{"name":"contract_type","label":"Contract type","type":"select","required":true,"options":["MSA","SOW","NDA","DPA","Order Form","Other"]},{"name":"value_usd","label":"Contract value (USD)","type":"number","required":false,"min":0},{"name":"contract_text","label":"Contract text","type":"textarea","required":true,"min_length":200,"placeholder":"Paste the full contract text here. Minimum 200 characters."},{"name":"notes","label":"Reviewer notes","type":"textarea","required":false}]}}},{"slug":"clause-review","name":"Automated clause review","kind":"agent_run","config":{"agent_template_slug":"contract-reviewer","prompt":"You are a contract reviewer. Read the contract text in the intake payload and produce a structured review. Return strict JSON only, no surrounding prose: { \\"outcome\\": \\"pass\\" | \\"reject\\", \\"flags\\": [{ \\"clause\\": string, \\"severity\\": \\"low\\" | \\"medium\\" | \\"high\\", \\"concern\\": string, \\"suggested_edit\\": string }], \\"overall_recommendation\\": \\"approve\\" | \\"amend\\" | \\"reject\\", \\"summary\\": \\"one paragraph\\" }. Set outcome=\\"reject\\" only when the contract is so broken counsel cannot fix it (corrupted text, wrong document, illegal clauses). Set outcome=\\"pass\\" otherwise — counsel approval is the real gate. Focus on: indemnity scope, liability cap, IP assignment, auto-renewal, termination for convenience, data-processing addendum, governing law. If a clause is missing entirely from the contract, list it as severity high with concern \\"missing\\".","output_schema":"contract_review_v1","timeout_ms":90000,"on_outcome":{"pass":"counsel-approval","reject":"fail"}},"on_pass_stage_slug":"counsel-approval","on_fail_stage_slug":null},{"slug":"counsel-approval","name":"Counsel approval","kind":"human_approval","config":{"action_type":"process.stage.approve","risk":"high","summary_template":"Approve contract review for {{intake.contract_title}} with {{intake.counterparty}} — recommendation {{clause-review.overall_recommendation}}"},"on_pass_stage_slug":"final-package","on_fail_stage_slug":null},{"slug":"final-package","name":"Review report","kind":"package","config":{"title_template":"Contract review — {{intake.contract_title}}","include_stages":["intake","clause-review","counsel-approval"]}}]}')},69635:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{f:()=>l,x:()=>k});var e=c(24516),f=c(58282),g=a([e,f]);[e,f]=g.then?(await g)():g;let m="https://api.resend.com";function h(a,b={}){try{let c=(0,e.getSecret)(a,{agent_id:b.agent_id,project_id:b.project_id});if(c)return c}catch{}return process.env[a]||null}function i(a,b={}){let c=h(a,b);if(!c)throw Error(`${a} not configured`);return c}async function j(a){try{let b=await a.json();return b?.message||b?.name||`HTTP ${a.status}`}catch{return`HTTP ${a.status}`}}async function k(a={},b={}){let c=String(a.to||"").trim();if(!c)throw Error('"to" is required');let d=String(a.subject||"").trim();if(!d)throw Error('"subject" is required');if(!a.text&&!a.html)throw Error('Either "text" or "html" body content is required');let e=function(a){let b=String(a||"").trim(),c=b.lastIndexOf("@");return c<0?null:b.slice(c+1).toLowerCase().trim()}(c);if(!e)throw Error(`"to" must be a valid email address containing "@"; got: ${c}`);let g=a.recipient_domain?String(a.recipient_domain).toLowerCase().trim():null;if(!g)throw Error(`"recipient_domain" is required and must be set to "${e}" (the domain of the "to" address). Retry with: { ..., recipient_domain: "${e}" }`);if(g!==e)throw Error(`"recipient_domain" mismatch: declared "${g}" but "to" address "${c}" has domain "${e}". Set recipient_domain: "${e}" and retry.`);let l=i("RESEND_API_KEY",b),n=b.agent_id??null,o=a.from?String(a.from).trim():null;if(o||(o=h("RESEND_FROM_EMAIL",b)),!o)throw Error('Sender address not configured. Set RESEND_FROM_EMAIL via the secrets vault or pass "from" explicitly in the input. Resend\'s test sender (onboarding@resend.dev) requires a verified account.');let p={from:o,to:c,subject:d,...a.text?{text:String(a.text)}:{},...a.html?{html:String(a.html)}:{},...a.reply_to?{reply_to:String(a.reply_to)}:{}},q=(0,f.N)("email_send",n),r=await q(`${m}/emails`,{method:"POST",headers:{Authorization:`Bearer ${l}`,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(p)});if(!r.ok){let a=await j(r);throw Error(`Resend API error (${r.status}): ${a}`)}let s=await r.json();return{ok:!0,id:s.id,to:c,recipient_domain:e}}async function l(a={},b={}){let c=String(a.email_id||"").trim();if(!c)throw Error('"email_id" is required');let d=i("RESEND_API_KEY",b),e=b.agent_id??null,g=(0,f.N)("email_status_lookup",e),h=await g(`${m}/emails/${encodeURIComponent(c)}`,{headers:{Authorization:`Bearer ${d}`,Accept:"application/json"}});if(!h.ok){let a=await j(h);throw Error(`Resend API error (${h.status}): ${a}`)}let k=await h.json();return{id:k.id,to:k.to,from:k.from,subject:k.subject,last_event:k.last_event,created_at:k.created_at}}d()}catch(a){d(a)}})},69722:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{zc:()=>j});var e=c(34255),f=c(18530),g=c(69143),h=c(4249),i=a([e]);e=(i.then?(await i)():i)[0];let k={"vendor-onboarding":f,"contract-review":g,"support-escalation":h},l=[{slug:"vendor-onboarding",title:"Vendor Onboarding",category:"procurement",tags:["workflow","procurement","starter"],risk_summary:"Intake → automated risk review → buyer sign-off → onboarding pack. All write actions are gated by human_approval."},{slug:"contract-review",title:"Contract Review",category:"legal",tags:["workflow","legal","starter"],risk_summary:"Intake → automated clause review → counsel approval (high-risk gate) → review report. Drafts only; no signature step."},{slug:"support-escalation",title:"Support Escalation",category:"support",tags:["workflow","support","starter"],risk_summary:"Intake → automated triage → supervisor sign-off → resolution pack. Customer-visible copy never sent without human approval."}].map(a=>{let b=k[a.slug];return{...a,description:b.description,author:"madarx",source_kind:"builtin",source_url:null,version:"1.0",spec:b}});function j(a){try{for(let b of l)!function(a,b){let c=`workflow:${b.slug}`,d=JSON.stringify({summary:b.description,source_spec_json:b.spec}),f=JSON.stringify(b.tags||[]),g=a.prepare("SELECT id FROM marketplace_items WHERE kind='workflow' AND slug=?").get(b.slug),h=[b.title,b.description,b.category,b.author,b.source_kind,b.source_url,b.version,d,b.risk_summary,f];if(g)return a.prepare("UPDATE marketplace_items SET title=?, description=?, category=?, author=?, source_kind=?, source_url=?, version=?, manifest_json=?, risk_summary=?, tags=? WHERE id=?").run(...h,c);a.prepare("INSERT INTO marketplace_items (id, kind, slug, title, description, category, author, source_kind, source_url, version, manifest_json, risk_summary, tags, created_at) VALUES (?, 'workflow', ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)").run(c,b.slug,...h,(0,e.nowIso)()),a.prepare("INSERT OR IGNORE INTO marketplace_installations (item_id, installed) VALUES (?, 0)").run(c)}(a,b)}catch(a){console.warn("[marketplace-workflows] seed failed:",a?.message||a)}}l.map(a=>a.slug),d()}catch(a){d(a)}})},70845:(a,b,c)=>{"use strict";c.d(b,{H:()=>f});var d=c(14972);function e(a,b,c){var e;let f=(0,d.uX)(b);return{label:a,value_usd:f.in_situ_value_usd,delta_pct:(e=f.in_situ_value_usd,null==e||null==c||0===c?null:Math.round((e-c)/c*1e4)/100),assumptions:b}}function f(a={},b={}){let c=(0,d.uX)(a),g=c.in_situ_value_usd,h=Number(b.grade_std_au_gpt??a.grade_std_au_gpt??0)||0,i=Number(b.grade_std_cu_pct??a.grade_std_cu_pct??0)||0,j=Number(b.grade_std_ag_gpt??a.grade_std_ag_gpt??0)||0,k=[["-20%",.8],["-10%",.9],["base",1],["+10%",1.1],["+20%",1.2]].map(([b,c])=>e(b,{...{...a},price_au_usd_oz:null==a.price_au_usd_oz?a.price_au_usd_oz:a.price_au_usd_oz*c,price_ag_usd_oz:null==a.price_ag_usd_oz?a.price_ag_usd_oz:a.price_ag_usd_oz*c,price_cu_usd_lb:null==a.price_cu_usd_lb?a.price_cu_usd_lb:a.price_cu_usd_lb*c},g)),l=[["-2σ",-2],["-1σ",-1],["base",0],["+1σ",1],["+2σ",2]].map(([b,c])=>e(b,{...{...a},grade_au_gpt:null==a.grade_au_gpt?a.grade_au_gpt:Math.max(0,a.grade_au_gpt+c*h),grade_ag_gpt:null==a.grade_ag_gpt?a.grade_ag_gpt:Math.max(0,a.grade_ag_gpt+c*j),grade_cu_pct:null==a.grade_cu_pct?a.grade_cu_pct:Math.max(0,a.grade_cu_pct+c*i)},g)),m=[["-20%",.8],["-10%",.9],["base",1],["+10%",1.1],["+20%",1.2]].map(([b,c])=>e(b,{...{...a},recovery_au:null==a.recovery_au?a.recovery_au:Math.min(1,Math.max(0,a.recovery_au*c)),recovery_ag:null==a.recovery_ag?a.recovery_ag:Math.min(1,Math.max(0,a.recovery_ag*c)),recovery_cu:null==a.recovery_cu?a.recovery_cu:Math.min(1,Math.max(0,a.recovery_cu*c))},g)),n=[["-20%",.8],["-10%",.9],["base",1],["+10%",1.1],["+20%",1.2]].map(([b,c])=>e(b,{...{...a},in_situ_factor:null==a.in_situ_factor?a.in_situ_factor:a.in_situ_factor*c},g));return{base_value_usd:g,base_result:c,drivers:{commodity_price:k,grade:l,recovery:m,in_situ_factor:n}}}},70952:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{f:()=>n});var e=c(34255),f=c(44986),g=c(69102),h=c(14207),i=a([e,h]);[e,h]=i.then?(await i)():i;let o=Number(process.env.MINES_CHUNK_TOKENS)||600,p=Number(process.env.MINES_CHUNK_OVERLAP_TOKENS)||100;async function j(a){try{switch(a){case"pdf-parse":return await import("pdf-parse");case"mammoth":return await import("mammoth");case"officeparser":return await import("officeparser");default:return null}}catch{return null}}function k(a){return Math.ceil(String(a||"").length/4)}let q=["de","la","el","que","en","los","para","con","del","una","por","se","su"],r=["the","of","and","to","in","for","is","that","with","from","this","are"];function l(a){let b=String(a||"").toLowerCase().split(/[^a-záéíóúñ]+/i).filter(Boolean).slice(0,400);if(b.length<5)return"es";let c=0,d=0;for(let a of b)q.includes(a)&&c++,r.includes(a)&&d++;return d>1.2*c?"en":"es"}async function m(a,b,c,d){if("pdf"===b){let b=await j("pdf-parse"),e="function"==typeof b?b:"function"==typeof b?.default?b.default:null,f=b?.PDFParse||b?.default?.PDFParse||null;if(!e&&!f)return{available:!1,error:"parser_unavailable:pdf",pages:[]};let h=d.readDocument(a),i="",k=1,l=null;try{if(f){let a=new f({data:h}),b=await a.getText();try{a.destroy?.()}catch{}i=String(b?.text||""),k=Number(b?.total)||(Array.isArray(b?.pages)?b.pages.length:1)||1,Array.isArray(b?.pages)&&(l=b.pages.map((a,b)=>({page:Number(a?.num??a?.page??b+1),text:String(a?.text||"")})))}else{let a=await e(h);i=String(a?.text||""),k=Number(a?.numpages)||1}}catch(a){return{available:!0,error:"parse_error:"+(a?.message||"pdf"),pages:[]}}let m=i.length/k;if(c||(0,g.tj)(i,m)){let b=await (0,g.rU)(a);return b.available?{available:!0,isScanned:!0,ocrApplied:!0,pageCount:b.pages.length||k,pages:b.pages.map(a=>({page:a.page,text:a.text}))}:{available:!0,isScanned:!0,ocrApplied:!1,ocrSkipped:!0,pageCount:k,pages:[]}}if(l)return{available:!0,isScanned:!1,ocrApplied:!1,pageCount:k,pages:l};let n=i.includes("\f")?i.split("\f"):[i];return{available:!0,isScanned:!1,ocrApplied:!1,pageCount:k,pages:n.map((a,b)=>({page:b+1,text:a}))}}if("docx"===b){let b=await j("mammoth"),c=b?.extractRawText||b?.default?.extractRawText;if("function"!=typeof c)return{available:!1,error:"parser_unavailable:docx",pages:[]};try{let b=await c({path:a});return{available:!0,isScanned:!1,ocrApplied:!1,pageCount:1,pages:[{page:1,text:b?.value||""}]}}catch(a){return{available:!0,error:"parse_error:"+(a?.message||"docx"),pages:[]}}}if("pptx"===b){let b=await j("officeparser"),c=b?.parseOfficeAsync||b?.default?.parseOfficeAsync||b?.parseOffice||b?.default?.parseOffice;if("function"!=typeof c)return{available:!1,error:"parser_unavailable:pptx",pages:[]};try{let b=await c(a);return{available:!0,isScanned:!1,ocrApplied:!1,pageCount:1,pages:[{page:1,text:String(b||"")}]}}catch(a){return{available:!0,error:"parse_error:"+(a?.message||"pptx"),pages:[]}}}return{available:!1,error:"unsupported_file_type:"+b,pages:[]}}async function n(a,b={}){let c=a?.source_document_id;if(!c)return{status:"error",error:"source_document_id_required"};let d=(0,e.getDb)(),i=d.prepare("SELECT id, project_id, document_category, original_path, file_type FROM mines_source_documents WHERE id = ?").get(c);if(!i)return{status:"error",error:"source_document_not_found"};let j=d.prepare(`
3289
+ `).run(String(a),c),c}e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},68732:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{x:()=>k,y:()=>l});var e=c(31421),f=c(60105),g=c(8437),h=c(26531),i=a([f,g]);function j(a){return(0,h.nc)(String(a||"").slice(0,Number(process.env.MADARX_TOOL_OUTPUT_MAX_BYTES||5e4)))}function k(a={}){let b=String(a.command||""),c=Array.isArray(a.args)?a.args.map(String):[],{path:d}=(0,h.hC)(a.cwd||"."),e=(0,h.IB)(b,c);if(e.blocked)throw Error(e.reason);return{command:b,args:c,cwd:d,classified:e}}async function l(a={},b={}){let{command:c,args:d,cwd:h,classified:i}=k(a);if(i.approval_required&&!b.owner_trusted&&!(0,g.v)(a.approval_id,{action_type:"terminal_run",matches:a=>{var b;return a.command===c&&(b=a.args,JSON.stringify(b||[])===JSON.stringify(d||[]))&&a.cwd===h}})){let a=(0,g.D6)({action_type:"terminal_run",risk:i.risk,summary:`Run ${c} ${d.join(" ")}`.trim(),payload:{command:c,args:d,cwd:h,reason:i.reason}});return{ok:!1,status:"approval_required",approval_request_id:a.id,reason:i.reason}}let m=Math.max(1,Math.min(6e5,Number(a.timeout_ms||process.env.MADARX_TERMINAL_TIMEOUT_MS||18e4))),n=Date.now();return await new Promise(a=>{let b="",g="",i=(0,e.spawn)(c,d,{cwd:h,shell:!1,stdio:["ignore","pipe","pipe"]}),k=setTimeout(()=>i.kill("SIGTERM"),m);i.stdout.on("data",a=>{b+=a}),i.stderr.on("data",a=>{g+=a}),i.on("error",e=>{clearTimeout(k),(0,f.appendAudit)({type:"local.terminal_run",summary:`terminal_run failed: ${c}`,status:"failed",meta:{command:c,args:d,cwd:h,error:e.message}}),a({ok:!1,tool:"terminal_run",status:"failed",command:c,args:d,cwd:h,error:e.message,stdout:j(b),stderr:j(g)})}),i.on("close",(e,i)=>{clearTimeout(k);let l=i?"timeout":0===e?"complete":"failed";(0,f.appendAudit)({type:"local.terminal_run",summary:`terminal_run ${l}: ${c}`,status:l,meta:{command:c,args:d,cwd:h,exit_code:e,signal:i,duration_ms:Date.now()-n,stdout_preview:j(b),stderr_preview:j(g)}}),a({ok:0===e&&!i,tool:"terminal_run",status:l,command:c,args:d,cwd:h,exit_code:e,signal:i,stdout:j(b),stderr:j(g),duration_ms:Date.now()-n})})})}[f,g]=i.then?(await i)():i,d()}catch(a){d(a)}})},69102:(a,b,c)=>{"use strict";let d,e;c.d(b,{K3:()=>f,rU:()=>l,tj:()=>j});let f=Number(process.env.MINES_OCR_THRESHOLD_CHARS_PER_PAGE)||80,g=process.env.MINES_OCR_LANGS||"spa+eng";async function h(){return void 0===d&&(d=(async()=>{try{return await import("tesseract.js")}catch{return null}})().catch(()=>null)),d}async function i(){return void 0===e&&(e=(async()=>{try{let a=await import("pdf-to-png-converter");if("function"==typeof a?.pdfToPng)return async b=>(await a.pdfToPng(b,{viewportScale:2})).map((a,b)=>({page:a.pageNumber||b+1,buffer:a.content}))}catch{}return null})().catch(()=>null)),e}function j(a,b){let c=b;return(null==c||Number.isNaN(Number(c)))&&(c=String(a??"").trim().length),Number(c)<f}async function k(a,b=g){let c=await h(),d=c?.recognize||c?.default?.recognize;if("function"!=typeof d)return null;try{let{data:c}=await d(a,b);return{text:String(c?.text||""),confidence:Number(c?.confidence??0)}}catch{return null}}async function l(a,b){let c,d=await i(),e=await h();if(!d||!e)return{available:!1,pages:[]};try{c=await d(a)}catch{return{available:!1,pages:[]}}let[f,g]=Array.isArray(b)?b:[null,null],j=[];for(let a of c){if(null!=f&&a.page<f||null!=g&&a.page>g)continue;let b=await k(a.buffer);j.push({page:a.page,text:b?.text||"",confidence:b?.confidence??0})}return{available:!0,pages:j}}},69143:a=>{"use strict";a.exports=JSON.parse('{"schema_version":1,"slug":"contract-review","name":"Contract Review","version":1,"description":"Paste a contract draft and route it through an automated clause review, then counsel approval, then a packaged review report.","category":"legal","source":"marketplace","status":"published","stages":[{"slug":"intake","name":"Contract intake","kind":"intake_form","config":{"form_schema":{"title":"Contract Review — Intake","description":"Paste the contract text and a few details for the reviewer.","fields":[{"name":"counterparty","label":"Counterparty name","type":"text","required":true},{"name":"contract_title","label":"Contract title","type":"text","required":true},{"name":"contract_type","label":"Contract type","type":"select","required":true,"options":["MSA","SOW","NDA","DPA","Order Form","Other"]},{"name":"value_usd","label":"Contract value (USD)","type":"number","required":false,"min":0},{"name":"contract_text","label":"Contract text","type":"textarea","required":true,"min_length":200,"placeholder":"Paste the full contract text here. Minimum 200 characters."},{"name":"notes","label":"Reviewer notes","type":"textarea","required":false}]}}},{"slug":"clause-review","name":"Automated clause review","kind":"agent_run","config":{"agent_template_slug":"contract-reviewer","prompt":"You are a contract reviewer. Read the contract text in the intake payload and produce a structured review. Return strict JSON only, no surrounding prose: { \\"outcome\\": \\"pass\\" | \\"reject\\", \\"flags\\": [{ \\"clause\\": string, \\"severity\\": \\"low\\" | \\"medium\\" | \\"high\\", \\"concern\\": string, \\"suggested_edit\\": string }], \\"overall_recommendation\\": \\"approve\\" | \\"amend\\" | \\"reject\\", \\"summary\\": \\"one paragraph\\" }. Set outcome=\\"reject\\" only when the contract is so broken counsel cannot fix it (corrupted text, wrong document, illegal clauses). Set outcome=\\"pass\\" otherwise — counsel approval is the real gate. Focus on: indemnity scope, liability cap, IP assignment, auto-renewal, termination for convenience, data-processing addendum, governing law. If a clause is missing entirely from the contract, list it as severity high with concern \\"missing\\".","output_schema":"contract_review_v1","timeout_ms":90000,"on_outcome":{"pass":"counsel-approval","reject":"fail"}},"on_pass_stage_slug":"counsel-approval","on_fail_stage_slug":null},{"slug":"counsel-approval","name":"Counsel approval","kind":"human_approval","config":{"action_type":"process.stage.approve","risk":"high","summary_template":"Approve contract review for {{intake.contract_title}} with {{intake.counterparty}} — recommendation {{clause-review.overall_recommendation}}"},"on_pass_stage_slug":"final-package","on_fail_stage_slug":null},{"slug":"final-package","name":"Review report","kind":"package","config":{"title_template":"Contract review — {{intake.contract_title}}","include_stages":["intake","clause-review","counsel-approval"]}}]}')},69286:(a,b,c)=>{"use strict";c.d(b,{XI:()=>e,fd:()=>f,yQ:()=>g});let d=new Map;function e(a){let b=String(a||"");b&&d.set(b,(d.get(b)||0)+1)}function f(a){let b=String(a||"");if(!b)return;let c=(d.get(b)||0)-1;c<=0?d.delete(b):d.set(b,c)}function g(a){return(d.get(String(a||""))||0)>0}},69635:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{f:()=>l,x:()=>k});var e=c(24516),f=c(58282),g=a([e,f]);[e,f]=g.then?(await g)():g;let m="https://api.resend.com";function h(a,b={}){try{let c=(0,e.getSecret)(a,{agent_id:b.agent_id,project_id:b.project_id});if(c)return c}catch{}return process.env[a]||null}function i(a,b={}){let c=h(a,b);if(!c)throw Error(`${a} not configured`);return c}async function j(a){try{let b=await a.json();return b?.message||b?.name||`HTTP ${a.status}`}catch{return`HTTP ${a.status}`}}async function k(a={},b={}){let c=String(a.to||"").trim();if(!c)throw Error('"to" is required');let d=String(a.subject||"").trim();if(!d)throw Error('"subject" is required');if(!a.text&&!a.html)throw Error('Either "text" or "html" body content is required');let e=function(a){let b=String(a||"").trim(),c=b.lastIndexOf("@");return c<0?null:b.slice(c+1).toLowerCase().trim()}(c);if(!e)throw Error(`"to" must be a valid email address containing "@"; got: ${c}`);let g=a.recipient_domain?String(a.recipient_domain).toLowerCase().trim():null;if(!g)throw Error(`"recipient_domain" is required and must be set to "${e}" (the domain of the "to" address). Retry with: { ..., recipient_domain: "${e}" }`);if(g!==e)throw Error(`"recipient_domain" mismatch: declared "${g}" but "to" address "${c}" has domain "${e}". Set recipient_domain: "${e}" and retry.`);let l=i("RESEND_API_KEY",b),n=b.agent_id??null,o=a.from?String(a.from).trim():null;if(o||(o=h("RESEND_FROM_EMAIL",b)),!o)throw Error('Sender address not configured. Set RESEND_FROM_EMAIL via the secrets vault or pass "from" explicitly in the input. Resend\'s test sender (onboarding@resend.dev) requires a verified account.');let p={from:o,to:c,subject:d,...a.text?{text:String(a.text)}:{},...a.html?{html:String(a.html)}:{},...a.reply_to?{reply_to:String(a.reply_to)}:{}},q=(0,f.N)("email_send",n),r=await q(`${m}/emails`,{method:"POST",headers:{Authorization:`Bearer ${l}`,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(p)});if(!r.ok){let a=await j(r);throw Error(`Resend API error (${r.status}): ${a}`)}let s=await r.json();return{ok:!0,id:s.id,to:c,recipient_domain:e}}async function l(a={},b={}){let c=String(a.email_id||"").trim();if(!c)throw Error('"email_id" is required');let d=i("RESEND_API_KEY",b),e=b.agent_id??null,g=(0,f.N)("email_status_lookup",e),h=await g(`${m}/emails/${encodeURIComponent(c)}`,{headers:{Authorization:`Bearer ${d}`,Accept:"application/json"}});if(!h.ok){let a=await j(h);throw Error(`Resend API error (${h.status}): ${a}`)}let k=await h.json();return{id:k.id,to:k.to,from:k.from,subject:k.subject,last_event:k.last_event,created_at:k.created_at}}d()}catch(a){d(a)}})},69722:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{zc:()=>j});var e=c(34255),f=c(18530),g=c(69143),h=c(4249),i=a([e]);e=(i.then?(await i)():i)[0];let k={"vendor-onboarding":f,"contract-review":g,"support-escalation":h},l=[{slug:"vendor-onboarding",title:"Vendor Onboarding",category:"procurement",tags:["workflow","procurement","starter"],risk_summary:"Intake → automated risk review → buyer sign-off → onboarding pack. All write actions are gated by human_approval."},{slug:"contract-review",title:"Contract Review",category:"legal",tags:["workflow","legal","starter"],risk_summary:"Intake → automated clause review → counsel approval (high-risk gate) → review report. Drafts only; no signature step."},{slug:"support-escalation",title:"Support Escalation",category:"support",tags:["workflow","support","starter"],risk_summary:"Intake → automated triage → supervisor sign-off → resolution pack. Customer-visible copy never sent without human approval."}].map(a=>{let b=k[a.slug];return{...a,description:b.description,author:"madarx",source_kind:"builtin",source_url:null,version:"1.0",spec:b}});function j(a){try{for(let b of l)!function(a,b){let c=`workflow:${b.slug}`,d=JSON.stringify({summary:b.description,source_spec_json:b.spec}),f=JSON.stringify(b.tags||[]),g=a.prepare("SELECT id FROM marketplace_items WHERE kind='workflow' AND slug=?").get(b.slug),h=[b.title,b.description,b.category,b.author,b.source_kind,b.source_url,b.version,d,b.risk_summary,f];if(g)return a.prepare("UPDATE marketplace_items SET title=?, description=?, category=?, author=?, source_kind=?, source_url=?, version=?, manifest_json=?, risk_summary=?, tags=? WHERE id=?").run(...h,c);a.prepare("INSERT INTO marketplace_items (id, kind, slug, title, description, category, author, source_kind, source_url, version, manifest_json, risk_summary, tags, created_at) VALUES (?, 'workflow', ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)").run(c,b.slug,...h,(0,e.nowIso)()),a.prepare("INSERT OR IGNORE INTO marketplace_installations (item_id, installed) VALUES (?, 0)").run(c)}(a,b)}catch(a){console.warn("[marketplace-workflows] seed failed:",a?.message||a)}}l.map(a=>a.slug),d()}catch(a){d(a)}})},70845:(a,b,c)=>{"use strict";c.d(b,{H:()=>f});var d=c(14972);function e(a,b,c){var e;let f=(0,d.uX)(b);return{label:a,value_usd:f.in_situ_value_usd,delta_pct:(e=f.in_situ_value_usd,null==e||null==c||0===c?null:Math.round((e-c)/c*1e4)/100),assumptions:b}}function f(a={},b={}){let c=(0,d.uX)(a),g=c.in_situ_value_usd,h=Number(b.grade_std_au_gpt??a.grade_std_au_gpt??0)||0,i=Number(b.grade_std_cu_pct??a.grade_std_cu_pct??0)||0,j=Number(b.grade_std_ag_gpt??a.grade_std_ag_gpt??0)||0,k=[["-20%",.8],["-10%",.9],["base",1],["+10%",1.1],["+20%",1.2]].map(([b,c])=>e(b,{...{...a},price_au_usd_oz:null==a.price_au_usd_oz?a.price_au_usd_oz:a.price_au_usd_oz*c,price_ag_usd_oz:null==a.price_ag_usd_oz?a.price_ag_usd_oz:a.price_ag_usd_oz*c,price_cu_usd_lb:null==a.price_cu_usd_lb?a.price_cu_usd_lb:a.price_cu_usd_lb*c},g)),l=[["-2σ",-2],["-1σ",-1],["base",0],["+1σ",1],["+2σ",2]].map(([b,c])=>e(b,{...{...a},grade_au_gpt:null==a.grade_au_gpt?a.grade_au_gpt:Math.max(0,a.grade_au_gpt+c*h),grade_ag_gpt:null==a.grade_ag_gpt?a.grade_ag_gpt:Math.max(0,a.grade_ag_gpt+c*j),grade_cu_pct:null==a.grade_cu_pct?a.grade_cu_pct:Math.max(0,a.grade_cu_pct+c*i)},g)),m=[["-20%",.8],["-10%",.9],["base",1],["+10%",1.1],["+20%",1.2]].map(([b,c])=>e(b,{...{...a},recovery_au:null==a.recovery_au?a.recovery_au:Math.min(1,Math.max(0,a.recovery_au*c)),recovery_ag:null==a.recovery_ag?a.recovery_ag:Math.min(1,Math.max(0,a.recovery_ag*c)),recovery_cu:null==a.recovery_cu?a.recovery_cu:Math.min(1,Math.max(0,a.recovery_cu*c))},g)),n=[["-20%",.8],["-10%",.9],["base",1],["+10%",1.1],["+20%",1.2]].map(([b,c])=>e(b,{...{...a},in_situ_factor:null==a.in_situ_factor?a.in_situ_factor:a.in_situ_factor*c},g));return{base_value_usd:g,base_result:c,drivers:{commodity_price:k,grade:l,recovery:m,in_situ_factor:n}}}},70952:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{f:()=>n});var e=c(34255),f=c(44986),g=c(69102),h=c(14207),i=a([e,h]);[e,h]=i.then?(await i)():i;let o=Number(process.env.MINES_CHUNK_TOKENS)||600,p=Number(process.env.MINES_CHUNK_OVERLAP_TOKENS)||100;async function j(a){try{switch(a){case"pdf-parse":return await import("pdf-parse");case"mammoth":return await import("mammoth");case"officeparser":return await import("officeparser");default:return null}}catch{return null}}function k(a){return Math.ceil(String(a||"").length/4)}let q=["de","la","el","que","en","los","para","con","del","una","por","se","su"],r=["the","of","and","to","in","for","is","that","with","from","this","are"];function l(a){let b=String(a||"").toLowerCase().split(/[^a-záéíóúñ]+/i).filter(Boolean).slice(0,400);if(b.length<5)return"es";let c=0,d=0;for(let a of b)q.includes(a)&&c++,r.includes(a)&&d++;return d>1.2*c?"en":"es"}async function m(a,b,c,d){if("pdf"===b){let b=await j("pdf-parse"),e="function"==typeof b?b:"function"==typeof b?.default?b.default:null,f=b?.PDFParse||b?.default?.PDFParse||null;if(!e&&!f)return{available:!1,error:"parser_unavailable:pdf",pages:[]};let h=d.readDocument(a),i="",k=1,l=null;try{if(f){let a=new f({data:h}),b=await a.getText();try{a.destroy?.()}catch{}i=String(b?.text||""),k=Number(b?.total)||(Array.isArray(b?.pages)?b.pages.length:1)||1,Array.isArray(b?.pages)&&(l=b.pages.map((a,b)=>({page:Number(a?.num??a?.page??b+1),text:String(a?.text||"")})))}else{let a=await e(h);i=String(a?.text||""),k=Number(a?.numpages)||1}}catch(a){return{available:!0,error:"parse_error:"+(a?.message||"pdf"),pages:[]}}let m=i.length/k;if(c||(0,g.tj)(i,m)){let b=await (0,g.rU)(a);return b.available?{available:!0,isScanned:!0,ocrApplied:!0,pageCount:b.pages.length||k,pages:b.pages.map(a=>({page:a.page,text:a.text}))}:{available:!0,isScanned:!0,ocrApplied:!1,ocrSkipped:!0,pageCount:k,pages:[]}}if(l)return{available:!0,isScanned:!1,ocrApplied:!1,pageCount:k,pages:l};let n=i.includes("\f")?i.split("\f"):[i];return{available:!0,isScanned:!1,ocrApplied:!1,pageCount:k,pages:n.map((a,b)=>({page:b+1,text:a}))}}if("docx"===b){let b=await j("mammoth"),c=b?.extractRawText||b?.default?.extractRawText;if("function"!=typeof c)return{available:!1,error:"parser_unavailable:docx",pages:[]};try{let b=await c({path:a});return{available:!0,isScanned:!1,ocrApplied:!1,pageCount:1,pages:[{page:1,text:b?.value||""}]}}catch(a){return{available:!0,error:"parse_error:"+(a?.message||"docx"),pages:[]}}}if("pptx"===b){let b=await j("officeparser"),c=b?.parseOfficeAsync||b?.default?.parseOfficeAsync||b?.parseOffice||b?.default?.parseOffice;if("function"!=typeof c)return{available:!1,error:"parser_unavailable:pptx",pages:[]};try{let b=await c(a);return{available:!0,isScanned:!1,ocrApplied:!1,pageCount:1,pages:[{page:1,text:String(b||"")}]}}catch(a){return{available:!0,error:"parse_error:"+(a?.message||"pptx"),pages:[]}}}return{available:!1,error:"unsupported_file_type:"+b,pages:[]}}async function n(a,b={}){let c=a?.source_document_id;if(!c)return{status:"error",error:"source_document_id_required"};let d=(0,e.getDb)(),i=d.prepare("SELECT id, project_id, document_category, original_path, file_type FROM mines_source_documents WHERE id = ?").get(c);if(!i)return{status:"error",error:"source_document_not_found"};let j=d.prepare(`
3290
3290
  UPDATE mines_source_documents
3291
3291
  SET extraction_status = ?, extraction_error = ?, language = ?, is_scanned = ?,
3292
3292
  ocr_applied = ?, page_count = ?, avg_chars_per_page = ?, updated_at = ?
@@ -3309,7 +3309,7 @@ Next action: choose a specialized agent, create a local run folder, keep human-i
3309
3309
  SELECT COUNT(*) AS n,
3310
3310
  SUM(CASE WHEN au_ppm IS NOT NULL OR ag_ppm IS NOT NULL OR cu_pct IS NOT NULL THEN 1 ELSE 0 END) AS grade_n
3311
3311
  FROM mines_assay_samples WHERE project_id = ?
3312
- `).get(a)||{n:0,grade_n:0}).grade_n||0)>0,i=d.has("resource_estimate");d.has("reserve_estimate"),d.has("opex"),d.has("production_schedule");let j=h.filter(a=>!d.has(a)),k=0===j.length,l=i||f,m=String(c.asset_stage||"").toLowerCase(),n=m.includes("exploration")||m.includes("prospect")||m.includes("early");if("t1_in_situ"===b.force_tier)return{status:"ok",project_id:a,tier:"t1_in_situ",t1_ready:l,t2_ready:k,t2_blocked:!0,blocking_inputs_missing:j,t2_blocking_reason:j.length?`T2 DCF blocked: missing ${j.join(", ")}.`:"T1 was explicitly requested.",confidence:i?"moderate":"indicative",reason:"T1 in-situ valuation explicitly requested."};if(k&&!n)return{status:"ok",project_id:a,tier:"t2_dcf",t1_ready:l,t2_ready:!0,t2_blocked:!1,blocking_inputs_missing:[],t2_blocking_reason:null,confidence:"modelled",reason:"Reserve estimate, production schedule, and operating-cost facts are present; DCF is allowed."};let o="t2_dcf"===b.force_tier,p=[...new Set([...j,...k&&n?["asset_stage_not_dcf_ready"]:[]])];return{status:"ok",project_id:a,tier:"t1_in_situ",t1_ready:l,t2_ready:!1,t2_blocked:!0,blocking_inputs_missing:p,t2_blocking_reason:p.length?`T2 DCF blocked: missing or unsuitable inputs (${p.join(", ")}).`:"T2 DCF blocked by exploration-stage policy.",confidence:i?"moderate":"indicative",reason:o?"Forced T2 request was rejected because DCF prerequisites are incomplete or the asset stage is not DCF-ready; using T1 in-situ instead.":"Exploration/resource-stage projects use T1 in-situ until reserve, production schedule, and cost inputs are present."}}d()}catch(a){d(a)}})},72189:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{X:()=>t,Z6:()=>p,dd:()=>n,mr:()=>r,sq:()=>q,sv:()=>o,vO:()=>s});var e=c(73024),f=c(76760),g=c(60105),h=c(8437),i=c(26531),j=a([g,h]);[g,h]=j.then?(await j)():j;let u=new Set([".git","node_modules",".next","data"]);function k(a,b,c={}){(0,g.appendAudit)({type:`local.${a}`,summary:`${a} ${b}`,status:b,meta:c})}function l(a,b,c){return(0,h.D6)({action_type:a,risk:"medium",summary:`${a} requested for ${c}`,payload:{input:{...b,content:b.content?`[${String(b.content).length} chars]`:void 0},path:c}})}function m(a){return b=>b.path===a}async function n(a={}){let{path:b}=(0,i.hC)(a.path),c=Number(process.env.MADARX_FILE_READ_MAX_BYTES||1e5),d=e.statSync(b);if(!d.isFile())throw Error("Path is not a file");if(d.size>c)throw Error(`File too large: ${d.size} bytes`);let f=e.readFileSync(b,"utf8").split(/\r?\n/),g=Math.max(1,Number(a.offset||1)),h=Math.max(1,Math.min(2e3,Number(a.limit||500))),j=f.slice(g-1,g-1+h).join("\n");return k("file_read","complete",{path:b,bytes:Buffer.byteLength(j)}),{ok:!0,tool:"file_read",path:b,content:(0,i.nc)(j),metadata:{line_count:f.length,offset:g,limit:h}}}async function o(a={}){let{path:b}=(0,i.hC)(a.path||"."),c=Math.max(1,Math.min(500,Number(a.limit||100))),d=[];for(let a of e.readdirSync(b,{withFileTypes:!0})){if(d.length>=c)break;try{(0,i.hC)(f.join(b,a.name))}catch{continue}u.has(a.name)||d.push({name:a.name,type:a.isDirectory()?"directory":a.isFile()?"file":"other"})}return k("directory_list","complete",{path:b,count:d.length}),{ok:!0,tool:"directory_list",path:b,entries:d,metadata:{count:d.length}}}function p(a={}){let{path:b}=(0,i.hC)(a.path);if((0,i.Oe)(b))throw Error(`Write access denied: path is under a read-only root: ${a.path}`);return{absPath:b}}async function q(a={},b={}){let{absPath:c}=p(a);if(!b.owner_trusted&&!(0,h.v)(a.approval_id,{action_type:"file_write",matches:m(c)})){let b=l("file_write",a,c);return{ok:!1,status:"approval_required",approval_request_id:b.id,reason:"File writes require approval"}}return!1!==a.create_dirs&&e.mkdirSync(f.dirname(c),{recursive:!0}),e.writeFileSync(c,String(a.content??""),"utf8"),k("file_write","complete",{path:c}),{ok:!0,tool:"file_write",path:c,metadata:{bytes:Buffer.byteLength(String(a.content??""))}}}function r(a={}){let{path:b}=(0,i.hC)(a.path);if((0,i.Oe)(b))throw Error(`Write access denied: path is under a read-only root: ${a.path}`);let c=String(a.old_string??"");if(!c)throw Error("old_string is required");let d=e.readFileSync(b,"utf8"),f=d.split(c).length-1;if(!f)throw Error("old_string not found");if(f>1&&!a.replace_all)throw Error("old_string is ambiguous");return{absPath:b,content:d,matches:f,oldString:c}}async function s(a={},b={}){let{absPath:c,content:d,matches:f,oldString:g}=r(a),i=String(a.new_string??"");if(!b.owner_trusted&&!(0,h.v)(a.approval_id,{action_type:"file_patch",matches:m(c)})){let b=l("file_patch",{...a,new_string:`[${i.length} chars]`},c);return{ok:!1,status:"approval_required",approval_request_id:b.id,reason:"File patches require approval"}}return e.writeFileSync(c,a.replace_all?d.split(g).join(i):d.replace(g,i),"utf8"),k("file_patch","complete",{path:c,replacements:a.replace_all?f:1}),{ok:!0,tool:"file_patch",path:c,metadata:{replacements:a.replace_all?f:1}}}async function t(a={}){let{path:b}=(0,i.hC)(a.path||"."),c=String(a.pattern||"");if(!c)throw Error("pattern is required");let d=Math.max(1,Math.min(200,Number(a.limit||50))),g=RegExp(c.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"i"),h=a.target||"content",j=a.file_glob?String(a.file_glob):null,l=j?RegExp("^"+j.split("*").map(a=>a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join(".*")+"$","i"):null,m=[];for(let a of function a(b,c=[],d=1e3){if(c.length>=d)return c;for(let g of e.readdirSync(b,{withFileTypes:!0})){if(u.has(g.name))continue;let e=f.join(b,g.name);if(g.isDirectory()?a(e,c,d):g.isFile()&&c.push(e),c.length>=d)break}return c}(b,[],5e3)){if(m.length>=d)break;try{(0,i.hC)(a)}catch{continue}if(!l||l.test(f.basename(a))){if("path"===h||"name"===h){g.test("name"===h?f.basename(a):a)&&m.push({path:a});continue}e.statSync(a).size>25e4||/\.sqlite/.test(a)||/^\.env/.test(f.basename(a))||e.readFileSync(a,"utf8").split(/\r?\n/).forEach((b,c)=>{m.length<d&&g.test(b)&&m.push({path:a,line:c+1,text:(0,i.nc)(b)})})}}return k("file_search","complete",{path:b,count:m.length}),{ok:!0,tool:"file_search",path:b,results:m,metadata:{count:m.length}}}d()}catch(a){d(a)}})},72326:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{$k:()=>n,GK:()=>p,Iu:()=>y,M2:()=>x,No:()=>u,Qp:()=>o,bD:()=>w,d:()=>B});var e=c(76760),f=c(73024),g=c(48161),h=c(31421),i=c(73136),j=c(19151),k=c(9001),l=c(9381),m=a([j,k]);[j,k]=m.then?(await m)():m;let C=e.resolve(e.dirname((0,i.fileURLToPath)("file:///home/runner/work/madarx-os/madarx-os/lib/agent-engines.js")),".."),D=process.env.OLLAMA_BASE_URL||"http://127.0.0.1:11434",E=[{id:"anthropic",label:"Anthropic API",description:"Server-native Claude Messages API brain with madarX governed tool_use.",default_model:"claude-sonnet-4-6",mode:"api"},{id:"claude-code",label:"Claude Code CLI",description:"Local Claude Code runner for developer/repo agents using the authenticated CLI.",default_model:"sonnet",mode:"local-cli"},{id:"ollama",label:"Ollama Local LLM",description:"Local or Ollama-hosted models through the Ollama chat API.",default_model:process.env.OLLAMA_MODEL||"",mode:"local-llm"},{id:"hermes",label:"Hermes",description:"Hermes as a meta-agent/router. Available through governed Hermes job tools.",default_model:"",mode:"orchestrator"},{id:"codex",label:"Codex CLI",description:"Local Codex CLI coding runner. Available through approval-gated terminal/tool workflows.",default_model:"",mode:"local-cli"}];function n(a){let b=String(a||"").trim().toLowerCase();return b?["anthropic","anthropic-api","claude-api","api"].includes(b)?"anthropic":["claude-code","claude code","claude_cli","claude-cli"].includes(b)?"claude-code":b.includes("hermes")&&b.includes("claude code")?"anthropic":["ollama","local","local-llm","local llm"].includes(b)?"ollama":["hermes","hermes-agent"].includes(b)?"hermes":["codex","codex-cli","openai-codex"].includes(b)?"codex":b:"claude-code"}function o(a){let b=n(a);return E.find(a=>a.id===b)?.default_model||""}async function p(a){let b=n(a);if("anthropic"===b){let{resolveAnthropicApiKey:a}=await Promise.resolve().then(c.bind(c,65451));if(!a()){let a=Error("The Anthropic API engine is selected but no API key is configured. Add ANTHROPIC_API_KEY to the secrets vault or .env.local, or switch to the Claude Code CLI engine.");throw a.code="engine_unavailable",a.engine=b,a}return!0}if("claude-code"===b){if(process.env.MADARX_MOCK_CLAUDE_CODE_RESPONSE)return!0;if(!await s("claude")){let a=Error("The Claude Code CLI engine is selected but the `claude` binary is not installed or not on PATH. Install Claude Code and sign in, or switch to the Anthropic API engine.");throw a.code="engine_unavailable",a.engine=b,a}return!0}if("codex"===b){if(process.env.MADARX_MOCK_CODEX_RESPONSE)return!0;if(!await s("codex")){let a=Error("The Codex CLI engine is selected but the `codex` binary is not installed or not on PATH.");throw a.code="engine_unavailable",a.engine=b,a}}return!0}let F=new Map;function q(a){if(F.has(a))return F.get(a);for(let b of[process.env[`MADARX_${a.toUpperCase()}_BIN`],e.join(g.homedir(),".local","bin",a),`/opt/homebrew/bin/${a}`,`/usr/local/bin/${a}`,e.join(g.homedir(),".npm-global","bin",a)].filter(Boolean))try{return f.accessSync(b,f.constants.X_OK),F.set(a,b),b}catch{}return null}function r(a){return F.get(a)||q(a)||a}async function s(a){return!!q(a)||new Promise(b=>{let c=(0,h.spawn)("sh",["-lc",`command -v ${a}`],{shell:!1}),d="";c.stdout.on("data",a=>{d+=a.toString()}),c.on("error",()=>b(!1)),c.on("close",c=>{let f=0===c?d.trim().split("\n").pop()?.trim():"";f&&e.isAbsolute(f)&&F.set(a,f),b(0===c)})})}async function t(){try{let a=await fetch(`${D}/api/tags`,{signal:AbortSignal.timeout(1500)});if(!a.ok)return[];return((await a.json()).models||[]).map(a=>({name:a.name||a.model,model:a.model||a.name,size:a.size||0,details:a.details||{},local:!a.remote_host,remote_host:a.remote_host||null})).filter(a=>a.name)}catch{return[]}}async function u(){let[a,b,c]=await Promise.all([t(),s("claude"),s("codex")]),d=process.env.OLLAMA_MODEL||(process.env.MADARX_MOCK_OLLAMA_RESPONSE?"qwen3.5:latest":""),e=a[0]?.name||d;return E.map(f=>({...f,default_model:"ollama"===f.id?e:f.default_model,available:"claude-code"===f.id?b:"codex"===f.id?c:"ollama"!==f.id||!!(a.length||process.env.MADARX_MOCK_OLLAMA_RESPONSE),models:"ollama"===f.id?a.length?a:d?[{name:d,model:d,local:!0,fallback:!0}]:[]:f.default_model?[{name:f.default_model,model:f.default_model}]:[]}))}function v(a,b,{cwd:c=process.cwd(),timeoutMs:d=12e4,closeStdin:e=!1,onChunk:f,env:g}={}){return new Promise((i,j)=>{let k=(0,h.spawn)(a,b,{shell:!1,cwd:c,env:g??{...process.env}});e&&k.stdin.end();let l="",m="",n=setTimeout(()=>{k.kill("SIGTERM"),j(Error(`${a} timed out after ${d}ms`))},d);k.stdout.on("data",a=>{let b=a.toString();l+=b,f?.(b)}),k.stderr.on("data",a=>{m+=a.toString()}),k.on("error",a=>{clearTimeout(n),j(a)}),k.on("close",b=>{if(clearTimeout(n),0===b||1===b&&l.trim())return void i(l.trim());j(Error(`${a} exited ${b}: ${m.trim()||l.trim()}`))})})}async function w({model:a,systemPrompt:b,userMessage:c,maxTokens:d=2048}){if(process.env.MADARX_MOCK_OLLAMA_RESPONSE)return process.env.MADARX_MOCK_OLLAMA_RESPONSE;let e=await fetch(`${D}/api/chat`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:a||process.env.OLLAMA_MODEL,stream:!1,options:{num_predict:d},messages:[{role:"system",content:b},{role:"user",content:c}]})});if(!e.ok)throw Error(`Ollama chat failed: HTTP ${e.status}`);let f=await e.json(),g=f.message?.content||f.response||"";if(!g.trim())throw Error("Ollama returned no text");return g.trim()}async function x({model:a,systemPrompt:b,userMessage:c,maxTurns:d,allowedTools:e=[],timeoutMs:f,onChunk:g,onAssistantText:h,onToolStart:i,onToolResult:j,cwd:l,addDirs:m=[],agentId:n,agentName:o}={}){if(process.env.MADARX_MOCK_CLAUDE_CODE_RESPONSE)return process.env.MADARX_MOCK_CLAUDE_CODE_RESPONSE;let p=`${b}
3312
+ `).get(a)||{n:0,grade_n:0}).grade_n||0)>0,i=d.has("resource_estimate");d.has("reserve_estimate"),d.has("opex"),d.has("production_schedule");let j=h.filter(a=>!d.has(a)),k=0===j.length,l=i||f,m=String(c.asset_stage||"").toLowerCase(),n=m.includes("exploration")||m.includes("prospect")||m.includes("early");if("t1_in_situ"===b.force_tier)return{status:"ok",project_id:a,tier:"t1_in_situ",t1_ready:l,t2_ready:k,t2_blocked:!0,blocking_inputs_missing:j,t2_blocking_reason:j.length?`T2 DCF blocked: missing ${j.join(", ")}.`:"T1 was explicitly requested.",confidence:i?"moderate":"indicative",reason:"T1 in-situ valuation explicitly requested."};if(k&&!n)return{status:"ok",project_id:a,tier:"t2_dcf",t1_ready:l,t2_ready:!0,t2_blocked:!1,blocking_inputs_missing:[],t2_blocking_reason:null,confidence:"modelled",reason:"Reserve estimate, production schedule, and operating-cost facts are present; DCF is allowed."};let o="t2_dcf"===b.force_tier,p=[...new Set([...j,...k&&n?["asset_stage_not_dcf_ready"]:[]])];return{status:"ok",project_id:a,tier:"t1_in_situ",t1_ready:l,t2_ready:!1,t2_blocked:!0,blocking_inputs_missing:p,t2_blocking_reason:p.length?`T2 DCF blocked: missing or unsuitable inputs (${p.join(", ")}).`:"T2 DCF blocked by exploration-stage policy.",confidence:i?"moderate":"indicative",reason:o?"Forced T2 request was rejected because DCF prerequisites are incomplete or the asset stage is not DCF-ready; using T1 in-situ instead.":"Exploration/resource-stage projects use T1 in-situ until reserve, production schedule, and cost inputs are present."}}d()}catch(a){d(a)}})},72189:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{X:()=>t,Z6:()=>p,dd:()=>n,mr:()=>r,sq:()=>q,sv:()=>o,vO:()=>s});var e=c(73024),f=c(76760),g=c(60105),h=c(8437),i=c(26531),j=a([g,h]);[g,h]=j.then?(await j)():j;let u=new Set([".git","node_modules",".next","data"]);function k(a,b,c={}){(0,g.appendAudit)({type:`local.${a}`,summary:`${a} ${b}`,status:b,meta:c})}function l(a,b,c){return(0,h.D6)({action_type:a,risk:"medium",summary:`${a} requested for ${c}`,payload:{input:{...b,content:b.content?`[${String(b.content).length} chars]`:void 0},path:c}})}function m(a){return b=>b.path===a}async function n(a={}){let{path:b}=(0,i.hC)(a.path),c=Number(process.env.MADARX_FILE_READ_MAX_BYTES||1e5),d=e.statSync(b);if(!d.isFile())throw Error("Path is not a file");if(d.size>c)throw Error(`File too large: ${d.size} bytes`);let f=e.readFileSync(b,"utf8").split(/\r?\n/),g=Math.max(1,Number(a.offset||1)),h=Math.max(1,Math.min(2e3,Number(a.limit||500))),j=f.slice(g-1,g-1+h).join("\n");return k("file_read","complete",{path:b,bytes:Buffer.byteLength(j)}),{ok:!0,tool:"file_read",path:b,content:(0,i.nc)(j),metadata:{line_count:f.length,offset:g,limit:h}}}async function o(a={}){let{path:b}=(0,i.hC)(a.path||"."),c=Math.max(1,Math.min(500,Number(a.limit||100))),d=[];for(let a of e.readdirSync(b,{withFileTypes:!0})){if(d.length>=c)break;try{(0,i.hC)(f.join(b,a.name))}catch{continue}u.has(a.name)||d.push({name:a.name,type:a.isDirectory()?"directory":a.isFile()?"file":"other"})}return k("directory_list","complete",{path:b,count:d.length}),{ok:!0,tool:"directory_list",path:b,entries:d,metadata:{count:d.length}}}function p(a={}){let{path:b}=(0,i.hC)(a.path);if((0,i.Oe)(b))throw Error(`Write access denied: path is under a read-only root: ${a.path}`);return{absPath:b}}async function q(a={},b={}){let{absPath:c}=p(a);if(!b.owner_trusted&&!(0,h.v)(a.approval_id,{action_type:"file_write",matches:m(c)})){let b=l("file_write",a,c);return{ok:!1,status:"approval_required",approval_request_id:b.id,reason:"File writes require approval"}}return!1!==a.create_dirs&&e.mkdirSync(f.dirname(c),{recursive:!0}),e.writeFileSync(c,String(a.content??""),"utf8"),k("file_write","complete",{path:c}),{ok:!0,tool:"file_write",path:c,metadata:{bytes:Buffer.byteLength(String(a.content??""))}}}function r(a={}){let{path:b}=(0,i.hC)(a.path);if((0,i.Oe)(b))throw Error(`Write access denied: path is under a read-only root: ${a.path}`);let c=String(a.old_string??"");if(!c)throw Error("old_string is required");let d=e.readFileSync(b,"utf8"),f=d.split(c).length-1;if(!f)throw Error("old_string not found");if(f>1&&!a.replace_all)throw Error("old_string is ambiguous");return{absPath:b,content:d,matches:f,oldString:c}}async function s(a={},b={}){let{absPath:c,content:d,matches:f,oldString:g}=r(a),i=String(a.new_string??"");if(!b.owner_trusted&&!(0,h.v)(a.approval_id,{action_type:"file_patch",matches:m(c)})){let b=l("file_patch",{...a,new_string:`[${i.length} chars]`},c);return{ok:!1,status:"approval_required",approval_request_id:b.id,reason:"File patches require approval"}}return e.writeFileSync(c,a.replace_all?d.split(g).join(i):d.replace(g,i),"utf8"),k("file_patch","complete",{path:c,replacements:a.replace_all?f:1}),{ok:!0,tool:"file_patch",path:c,metadata:{replacements:a.replace_all?f:1}}}async function t(a={}){let{path:b}=(0,i.hC)(a.path||"."),c=String(a.pattern||"");if(!c)throw Error("pattern is required");let d=Math.max(1,Math.min(200,Number(a.limit||50))),g=RegExp(c.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"i"),h=a.target||"content",j=a.file_glob?String(a.file_glob):null,l=j?RegExp("^"+j.split("*").map(a=>a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join(".*")+"$","i"):null,m=[];for(let a of function a(b,c=[],d=1e3){if(c.length>=d)return c;for(let g of e.readdirSync(b,{withFileTypes:!0})){if(u.has(g.name))continue;let e=f.join(b,g.name);if(g.isDirectory()?a(e,c,d):g.isFile()&&c.push(e),c.length>=d)break}return c}(b,[],5e3)){if(m.length>=d)break;try{(0,i.hC)(a)}catch{continue}if(!l||l.test(f.basename(a))){if("path"===h||"name"===h){g.test("name"===h?f.basename(a):a)&&m.push({path:a});continue}e.statSync(a).size>25e4||/\.sqlite/.test(a)||/^\.env/.test(f.basename(a))||e.readFileSync(a,"utf8").split(/\r?\n/).forEach((b,c)=>{m.length<d&&g.test(b)&&m.push({path:a,line:c+1,text:(0,i.nc)(b)})})}}return k("file_search","complete",{path:b,count:m.length}),{ok:!0,tool:"file_search",path:b,results:m,metadata:{count:m.length}}}d()}catch(a){d(a)}})},72326:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{$k:()=>n,GK:()=>p,Iu:()=>y,M2:()=>x,No:()=>u,Qp:()=>o,Ys:()=>s,bD:()=>w,d:()=>B});var e=c(76760),f=c(73024),g=c(48161),h=c(31421),i=c(73136),j=c(19151),k=c(9001),l=c(9381),m=a([j,k]);[j,k]=m.then?(await m)():m;let C=e.resolve(e.dirname((0,i.fileURLToPath)("file:///home/runner/work/madarx-os/madarx-os/lib/agent-engines.js")),".."),D=process.env.OLLAMA_BASE_URL||"http://127.0.0.1:11434",E=[{id:"anthropic",label:"Anthropic API",description:"Server-native Claude Messages API brain with madarX governed tool_use.",default_model:"claude-sonnet-4-6",mode:"api"},{id:"claude-code",label:"Claude Code CLI",description:"Local Claude Code runner for developer/repo agents using the authenticated CLI.",default_model:"sonnet",mode:"local-cli"},{id:"ollama",label:"Ollama Local LLM",description:"Local or Ollama-hosted models through the Ollama chat API.",default_model:process.env.OLLAMA_MODEL||"",mode:"local-llm"},{id:"hermes",label:"Hermes",description:"Hermes as a meta-agent/router. Available through governed Hermes job tools.",default_model:"",mode:"orchestrator"},{id:"codex",label:"Codex CLI",description:"Local Codex CLI coding runner. Available through approval-gated terminal/tool workflows.",default_model:"",mode:"local-cli"}];function n(a){let b=String(a||"").trim().toLowerCase();return b?["anthropic","anthropic-api","claude-api","api"].includes(b)?"anthropic":["claude-code","claude code","claude_cli","claude-cli"].includes(b)?"claude-code":b.includes("hermes")&&b.includes("claude code")?"anthropic":["ollama","local","local-llm","local llm"].includes(b)?"ollama":["hermes","hermes-agent"].includes(b)?"hermes":["codex","codex-cli","openai-codex"].includes(b)?"codex":b:"claude-code"}function o(a){let b=n(a);return E.find(a=>a.id===b)?.default_model||""}async function p(a){let b=n(a);if("anthropic"===b){let{resolveAnthropicApiKey:a}=await Promise.resolve().then(c.bind(c,65451));if(!a()){let a=Error("The Anthropic API engine is selected but no API key is configured. Add ANTHROPIC_API_KEY to the secrets vault or .env.local, or switch to the Claude Code CLI engine.");throw a.code="engine_unavailable",a.engine=b,a}return!0}if("claude-code"===b){if(process.env.MADARX_MOCK_CLAUDE_CODE_RESPONSE)return!0;if(!await s("claude")){let a=Error("The Claude Code CLI engine is selected but the `claude` binary is not installed or not on PATH. Install Claude Code and sign in, or switch to the Anthropic API engine.");throw a.code="engine_unavailable",a.engine=b,a}return!0}if("codex"===b){if(process.env.MADARX_MOCK_CODEX_RESPONSE)return!0;if(!await s("codex")){let a=Error("The Codex CLI engine is selected but the `codex` binary is not installed or not on PATH.");throw a.code="engine_unavailable",a.engine=b,a}}return!0}let F=new Map;function q(a){if(F.has(a))return F.get(a);for(let b of[process.env[`MADARX_${a.toUpperCase()}_BIN`],e.join(g.homedir(),".local","bin",a),`/opt/homebrew/bin/${a}`,`/usr/local/bin/${a}`,e.join(g.homedir(),".npm-global","bin",a)].filter(Boolean))try{return f.accessSync(b,f.constants.X_OK),F.set(a,b),b}catch{}return null}function r(a){return F.get(a)||q(a)||a}async function s(a){return!!q(a)||new Promise(b=>{let c=(0,h.spawn)("sh",["-lc",`command -v ${a}`],{shell:!1}),d="";c.stdout.on("data",a=>{d+=a.toString()}),c.on("error",()=>b(!1)),c.on("close",c=>{let f=0===c?d.trim().split("\n").pop()?.trim():"";f&&e.isAbsolute(f)&&F.set(a,f),b(0===c)})})}async function t(){try{let a=await fetch(`${D}/api/tags`,{signal:AbortSignal.timeout(1500)});if(!a.ok)return[];return((await a.json()).models||[]).map(a=>({name:a.name||a.model,model:a.model||a.name,size:a.size||0,details:a.details||{},local:!a.remote_host,remote_host:a.remote_host||null})).filter(a=>a.name)}catch{return[]}}async function u(){let[a,b,c]=await Promise.all([t(),s("claude"),s("codex")]),d=process.env.OLLAMA_MODEL||(process.env.MADARX_MOCK_OLLAMA_RESPONSE?"qwen3.5:latest":""),e=a[0]?.name||d;return E.map(f=>({...f,default_model:"ollama"===f.id?e:f.default_model,available:"claude-code"===f.id?b:"codex"===f.id?c:"ollama"!==f.id||!!(a.length||process.env.MADARX_MOCK_OLLAMA_RESPONSE),models:"ollama"===f.id?a.length?a:d?[{name:d,model:d,local:!0,fallback:!0}]:[]:f.default_model?[{name:f.default_model,model:f.default_model}]:[]}))}function v(a,b,{cwd:c=process.cwd(),timeoutMs:d=12e4,closeStdin:e=!1,onChunk:f,env:g}={}){return new Promise((i,j)=>{let k=(0,h.spawn)(a,b,{shell:!1,cwd:c,env:g??{...process.env}});e&&k.stdin.end();let l="",m="",n=setTimeout(()=>{k.kill("SIGTERM"),j(Error(`${a} timed out after ${d}ms`))},d);k.stdout.on("data",a=>{let b=a.toString();l+=b,f?.(b)}),k.stderr.on("data",a=>{m+=a.toString()}),k.on("error",a=>{clearTimeout(n),j(a)}),k.on("close",b=>{if(clearTimeout(n),0===b||1===b&&l.trim())return void i(l.trim());j(Error(`${a} exited ${b}: ${m.trim()||l.trim()}`))})})}async function w({model:a,systemPrompt:b,userMessage:c,maxTokens:d=2048}){if(process.env.MADARX_MOCK_OLLAMA_RESPONSE)return process.env.MADARX_MOCK_OLLAMA_RESPONSE;let e=await fetch(`${D}/api/chat`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:a||process.env.OLLAMA_MODEL,stream:!1,options:{num_predict:d},messages:[{role:"system",content:b},{role:"user",content:c}]})});if(!e.ok)throw Error(`Ollama chat failed: HTTP ${e.status}`);let f=await e.json(),g=f.message?.content||f.response||"";if(!g.trim())throw Error("Ollama returned no text");return g.trim()}async function x({model:a,systemPrompt:b,userMessage:c,maxTurns:d,allowedTools:e=[],timeoutMs:f,onChunk:g,onAssistantText:h,onToolStart:i,onToolResult:j,cwd:l,addDirs:m=[],agentId:n,agentName:o}={}){if(process.env.MADARX_MOCK_CLAUDE_CODE_RESPONSE)return process.env.MADARX_MOCK_CLAUDE_CODE_RESPONSE;let p=`${b}
3313
3313
 
3314
3314
  ${c}`,q=Number(d||process.env.CLAUDE_CODE_MAX_TURNS||30),s=["-p",p,"--max-turns",String(q),"--output-format","stream-json","--verbose","--permission-mode","bypassPermissions","--setting-sources","project,local,user"];for(let a of m)a&&s.push("--add-dir",a);e.length&&s.push("--allowedTools",e.join(",")),a&&"claude-code"!==a&&s.splice(2,0,"--model",a);let t=[],u=[],w="",y="",z=function({agentId:a,agentName:b,onText:c,onToolStart:d,onToolResult:e,onResult:f}){let g="",h=new Map;return function(i){let j;for(g+=i;(j=g.indexOf("\n"))>=0;){let i,l=g.slice(0,j).trim();if(g=g.slice(j+1),!l||"{"!==l[0])continue;try{i=JSON.parse(l)}catch{continue}if(!i||"object"!=typeof i)continue;if("result"===i.type){"string"==typeof i.result&&i.result.trim()&&f?.(i.result.trim());continue}let m=i.message?.content;if(Array.isArray(m)){if("assistant"===i.type){let e=m.some(a=>a?.type==="tool_use"),f=m.filter(a=>a?.type==="text"&&"string"==typeof a.text).map(a=>a.text).join("");for(let g of(f&&c?.(f,{isFinal:!e}),m))g?.type==="tool_use"&&(g.id&&h.set(g.id,g.name||"tool"),d?.({id:g.id,name:g.name||"tool",input:g.input}),a&&(0,k.AC)({type:"agent_tool_start",agent_id:a,agent_name:b||a,tool:g.name||"tool",input_summary:function(a,b){if(!b||"object"!=typeof b)return"";if("Bash"===a)return String(b.command||"").slice(0,120);if("WebSearch"===a)return String(b.query||"").slice(0,120);if("WebFetch"===a)return String(b.url||"").slice(0,120);if("Read"===a||"Glob"===a||"Grep"===a||"LS"===a)return String(b.file_path||b.pattern||b.path||"").slice(0,120);if("Write"===a||"Edit"===a||"MultiEdit"===a)return String(b.file_path||"").slice(0,120);if("TodoWrite"===a)return Array.isArray(b.todos)?`${b.todos.length} todos`:"";try{return JSON.stringify(b).slice(0,120)}catch{return""}}(g.name,g.input)}))}else if("user"===i.type){for(let c of m)if(c?.type==="tool_result"){let d=h.get(c.tool_use_id)||"tool";e?.({tool_use_id:c.tool_use_id,name:d,isError:!!c.is_error}),a&&(0,k.AC)({type:"agent_tool_result",agent_id:a,agent_name:b||a,tool:d,status:c.is_error?"error":"done",isError:!!c.is_error}),h.delete(c.tool_use_id)}}}}}}({agentId:n,agentName:o,onText:(a,b={})=>{t.push(a),b.isFinal?u.push(a):w=a,h?.(t.join("").trim())},onResult:a=>{y=a},onToolStart:i,onToolResult:j});await v(r("claude"),s,{cwd:l,timeoutMs:f??Number(process.env.CLAUDE_CODE_TICK_TIMEOUT_MS||6e5),closeStdin:!0,env:function(){let a={...process.env};return"1"===process.env.MADARX_CLI_USE_API_KEY||(delete a.ANTHROPIC_API_KEY,delete a.ANTHROPIC_AUTH_TOKEN),a}(),onChunk:a=>{z(a),g?.(a)}});let A=u.join("").trim()||w.trim()||t.join("").trim()||y.trim();if(!A)throw Error("Claude Code returned no assistant text");return A}async function y({systemPrompt:a,userMessage:b,onChunk:c}){if(process.env.MADARX_MOCK_CODEX_RESPONSE)return process.env.MADARX_MOCK_CODEX_RESPONSE;let d=a?`${a}
3315
3315