madarx 2.15.1 → 2.16.1

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 (1242) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +415 -407
  3. package/.next/standalone/.next/app-path-routes-manifest.json +77 -76
  4. package/.next/standalone/.next/build-manifest.json +2 -2
  5. package/.next/standalone/.next/prerender-manifest.json +3 -3
  6. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  7. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  8. package/.next/standalone/.next/server/app/_not-found.rsc +4 -4
  9. package/.next/standalone/.next/server/app/activity/page_client-reference-manifest.js +1 -1
  10. package/.next/standalone/.next/server/app/admin/page.js +2 -2
  11. package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  12. package/.next/standalone/.next/server/app/agents/[id]/page.js +6 -6
  13. package/.next/standalone/.next/server/app/agents/[id]/page.js.nft.json +1 -1
  14. package/.next/standalone/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
  15. package/.next/standalone/.next/server/app/agents/page.js +1 -1
  16. package/.next/standalone/.next/server/app/agents/page.js.nft.json +1 -1
  17. package/.next/standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  18. package/.next/standalone/.next/server/app/api/activity/route_client-reference-manifest.js +1 -1
  19. package/.next/standalone/.next/server/app/api/admin/audit-export/route_client-reference-manifest.js +1 -1
  20. package/.next/standalone/.next/server/app/api/admin/share-links/route_client-reference-manifest.js +1 -1
  21. package/.next/standalone/.next/server/app/api/agent-memory/route_client-reference-manifest.js +1 -1
  22. package/.next/standalone/.next/server/app/api/agent-runs/[id]/cancel/route_client-reference-manifest.js +1 -1
  23. package/.next/standalone/.next/server/app/api/agent-runs/[id]/events/route_client-reference-manifest.js +1 -1
  24. package/.next/standalone/.next/server/app/api/agent-runs/[id]/log/route_client-reference-manifest.js +1 -1
  25. package/.next/standalone/.next/server/app/api/agent-runs/[id]/route_client-reference-manifest.js +1 -1
  26. package/.next/standalone/.next/server/app/api/agent-runs/route_client-reference-manifest.js +1 -1
  27. package/.next/standalone/.next/server/app/api/agents/[id]/chain/route_client-reference-manifest.js +1 -1
  28. package/.next/standalone/.next/server/app/api/agents/[id]/memory/route_client-reference-manifest.js +1 -1
  29. package/.next/standalone/.next/server/app/api/agents/[id]/reports/route_client-reference-manifest.js +1 -1
  30. package/.next/standalone/.next/server/app/api/agents/[id]/run/route_client-reference-manifest.js +1 -1
  31. package/.next/standalone/.next/server/app/api/agents/[id]/skills/route_client-reference-manifest.js +1 -1
  32. package/.next/standalone/.next/server/app/api/agents/create/route_client-reference-manifest.js +1 -1
  33. package/.next/standalone/.next/server/app/api/agents/ops/route_client-reference-manifest.js +1 -1
  34. package/.next/standalone/.next/server/app/api/approvals/[id]/route_client-reference-manifest.js +1 -1
  35. package/.next/standalone/.next/server/app/api/approvals/route_client-reference-manifest.js +1 -1
  36. package/.next/standalone/.next/server/app/api/artifacts/[id]/acl/route_client-reference-manifest.js +1 -1
  37. package/.next/standalone/.next/server/app/api/artifacts/[id]/protect/route_client-reference-manifest.js +1 -1
  38. package/.next/standalone/.next/server/app/api/artifacts/[id]/raw/route_client-reference-manifest.js +1 -1
  39. package/.next/standalone/.next/server/app/api/artifacts/[id]/route_client-reference-manifest.js +1 -1
  40. package/.next/standalone/.next/server/app/api/artifacts/[id]/share-link/[linkId]/route_client-reference-manifest.js +1 -1
  41. package/.next/standalone/.next/server/app/api/artifacts/[id]/share-link/route_client-reference-manifest.js +1 -1
  42. package/.next/standalone/.next/server/app/api/artifacts/upload/route_client-reference-manifest.js +1 -1
  43. package/.next/standalone/.next/server/app/api/audit/list/route_client-reference-manifest.js +1 -1
  44. package/.next/standalone/.next/server/app/api/audit/search/route_client-reference-manifest.js +1 -1
  45. package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
  46. package/.next/standalone/.next/server/app/api/auth/config/route_client-reference-manifest.js +1 -1
  47. package/.next/standalone/.next/server/app/api/auth/join-bootstrap/route_client-reference-manifest.js +1 -1
  48. package/.next/standalone/.next/server/app/api/auth/session/route_client-reference-manifest.js +1 -1
  49. package/.next/standalone/.next/server/app/api/brand/route_client-reference-manifest.js +1 -1
  50. package/.next/standalone/.next/server/app/api/brand/share/route.js +1 -0
  51. package/.next/standalone/.next/server/app/api/brand/share/route.js.nft.json +1 -0
  52. package/.next/standalone/.next/server/app/api/brand/share/route_client-reference-manifest.js +1 -0
  53. package/.next/standalone/.next/server/app/api/chat/sessions/[id]/route_client-reference-manifest.js +1 -1
  54. package/.next/standalone/.next/server/app/api/chat/sessions/route_client-reference-manifest.js +1 -1
  55. package/.next/standalone/.next/server/app/api/config/env/route_client-reference-manifest.js +1 -1
  56. package/.next/standalone/.next/server/app/api/config/route_client-reference-manifest.js +1 -1
  57. package/.next/standalone/.next/server/app/api/connections/[service]/route_client-reference-manifest.js +1 -1
  58. package/.next/standalone/.next/server/app/api/connections/[service]/verify/route.js +2 -2
  59. package/.next/standalone/.next/server/app/api/connections/[service]/verify/route_client-reference-manifest.js +1 -1
  60. package/.next/standalone/.next/server/app/api/connections/route_client-reference-manifest.js +1 -1
  61. package/.next/standalone/.next/server/app/api/cron/tick/route_client-reference-manifest.js +1 -1
  62. package/.next/standalone/.next/server/app/api/dashboard/spaces/[id]/move/route_client-reference-manifest.js +1 -1
  63. package/.next/standalone/.next/server/app/api/dashboard/spaces/[id]/route_client-reference-manifest.js +1 -1
  64. package/.next/standalone/.next/server/app/api/dashboard/spaces/[id]/share-link/[linkId]/route_client-reference-manifest.js +1 -1
  65. package/.next/standalone/.next/server/app/api/dashboard/spaces/[id]/share-link/route_client-reference-manifest.js +1 -1
  66. package/.next/standalone/.next/server/app/api/dashboard/spaces/import/route_client-reference-manifest.js +1 -1
  67. package/.next/standalone/.next/server/app/api/dashboard/spaces/route_client-reference-manifest.js +1 -1
  68. package/.next/standalone/.next/server/app/api/disk/files/[id]/blob/route_client-reference-manifest.js +1 -1
  69. package/.next/standalone/.next/server/app/api/disk/files/[id]/route_client-reference-manifest.js +1 -1
  70. package/.next/standalone/.next/server/app/api/disk/files/[id]/transcribe/route_client-reference-manifest.js +1 -1
  71. package/.next/standalone/.next/server/app/api/disk/files/route_client-reference-manifest.js +1 -1
  72. package/.next/standalone/.next/server/app/api/disk/folders/route_client-reference-manifest.js +1 -1
  73. package/.next/standalone/.next/server/app/api/events/since/[cursor]/route_client-reference-manifest.js +1 -1
  74. package/.next/standalone/.next/server/app/api/events/stream/route_client-reference-manifest.js +1 -1
  75. package/.next/standalone/.next/server/app/api/fs/create-folder/route_client-reference-manifest.js +1 -1
  76. package/.next/standalone/.next/server/app/api/fs/pick-folder/route_client-reference-manifest.js +1 -1
  77. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/blueprint/route_client-reference-manifest.js +1 -1
  78. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/diagnostic/route_client-reference-manifest.js +1 -1
  79. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/governance/route_client-reference-manifest.js +1 -1
  80. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/interview/route_client-reference-manifest.js +1 -1
  81. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/pilot/route_client-reference-manifest.js +1 -1
  82. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/quarterly/route_client-reference-manifest.js +1 -1
  83. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/route_client-reference-manifest.js +1 -1
  84. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/setup-package/route_client-reference-manifest.js +1 -1
  85. package/.next/standalone/.next/server/app/api/hail/engagements/route_client-reference-manifest.js +1 -1
  86. package/.next/standalone/.next/server/app/api/hail/interviews/[id]/responses/route_client-reference-manifest.js +1 -1
  87. package/.next/standalone/.next/server/app/api/hail/interviews/[id]/route_client-reference-manifest.js +1 -1
  88. package/.next/standalone/.next/server/app/api/hail/setup-packages/[id]/apply/route_client-reference-manifest.js +1 -1
  89. package/.next/standalone/.next/server/app/api/hail/setup-packages/validate/route_client-reference-manifest.js +1 -1
  90. package/.next/standalone/.next/server/app/api/heartbeat/tick/route_client-reference-manifest.js +1 -1
  91. package/.next/standalone/.next/server/app/api/heartbeat/worker/route_client-reference-manifest.js +1 -1
  92. package/.next/standalone/.next/server/app/api/help/route_client-reference-manifest.js +1 -1
  93. package/.next/standalone/.next/server/app/api/hermes/jobs/[id]/events/route_client-reference-manifest.js +1 -1
  94. package/.next/standalone/.next/server/app/api/hermes/jobs/[id]/route_client-reference-manifest.js +1 -1
  95. package/.next/standalone/.next/server/app/api/hermes/jobs/route_client-reference-manifest.js +1 -1
  96. package/.next/standalone/.next/server/app/api/integrations/google/callback/route_client-reference-manifest.js +1 -1
  97. package/.next/standalone/.next/server/app/api/integrations/google/oauth/route_client-reference-manifest.js +1 -1
  98. package/.next/standalone/.next/server/app/api/marketplace/[id]/route_client-reference-manifest.js +1 -1
  99. package/.next/standalone/.next/server/app/api/marketplace/open-design/route_client-reference-manifest.js +1 -1
  100. package/.next/standalone/.next/server/app/api/marketplace/route_client-reference-manifest.js +1 -1
  101. package/.next/standalone/.next/server/app/api/mines/import-roots/route_client-reference-manifest.js +1 -1
  102. package/.next/standalone/.next/server/app/api/mines/portfolio/route_client-reference-manifest.js +1 -1
  103. package/.next/standalone/.next/server/app/api/mines/projects/[id]/chunks/route_client-reference-manifest.js +1 -1
  104. package/.next/standalone/.next/server/app/api/mines/projects/[id]/diligence/route_client-reference-manifest.js +1 -1
  105. package/.next/standalone/.next/server/app/api/mines/projects/[id]/import/route_client-reference-manifest.js +1 -1
  106. package/.next/standalone/.next/server/app/api/mines/projects/[id]/publish/route_client-reference-manifest.js +1 -1
  107. package/.next/standalone/.next/server/app/api/mines/projects/route_client-reference-manifest.js +1 -1
  108. package/.next/standalone/.next/server/app/api/missions/route_client-reference-manifest.js +1 -1
  109. package/.next/standalone/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  110. package/.next/standalone/.next/server/app/api/onboarding/blueprint/route_client-reference-manifest.js +1 -1
  111. package/.next/standalone/.next/server/app/api/onboarding/launch/route_client-reference-manifest.js +1 -1
  112. package/.next/standalone/.next/server/app/api/orchestrator/command/route_client-reference-manifest.js +1 -1
  113. package/.next/standalone/.next/server/app/api/orchestrator/stream/route_client-reference-manifest.js +1 -1
  114. package/.next/standalone/.next/server/app/api/orchestrator/upload/route_client-reference-manifest.js +1 -1
  115. package/.next/standalone/.next/server/app/api/org/route_client-reference-manifest.js +1 -1
  116. package/.next/standalone/.next/server/app/api/orgs/[id]/invites/[inviteId]/route_client-reference-manifest.js +1 -1
  117. package/.next/standalone/.next/server/app/api/orgs/[id]/invites/route_client-reference-manifest.js +1 -1
  118. package/.next/standalone/.next/server/app/api/orgs/[id]/members/[userId]/role/route_client-reference-manifest.js +1 -1
  119. package/.next/standalone/.next/server/app/api/orgs/[id]/members/[userId]/route_client-reference-manifest.js +1 -1
  120. package/.next/standalone/.next/server/app/api/orgs/[id]/members/route_client-reference-manifest.js +1 -1
  121. package/.next/standalone/.next/server/app/api/orgs/[id]/route_client-reference-manifest.js +1 -1
  122. package/.next/standalone/.next/server/app/api/orgs/invites/pending/route_client-reference-manifest.js +1 -1
  123. package/.next/standalone/.next/server/app/api/orgs/join/route_client-reference-manifest.js +1 -1
  124. package/.next/standalone/.next/server/app/api/orgs/join-complete/route_client-reference-manifest.js +1 -1
  125. package/.next/standalone/.next/server/app/api/orgs/route_client-reference-manifest.js +1 -1
  126. package/.next/standalone/.next/server/app/api/printing-press/clis/route_client-reference-manifest.js +1 -1
  127. package/.next/standalone/.next/server/app/api/printing-press/install/route_client-reference-manifest.js +1 -1
  128. package/.next/standalone/.next/server/app/api/printing-press/security-mode/route_client-reference-manifest.js +1 -1
  129. package/.next/standalone/.next/server/app/api/privacy/config/route_client-reference-manifest.js +1 -1
  130. package/.next/standalone/.next/server/app/api/privacy/verify/route_client-reference-manifest.js +1 -1
  131. package/.next/standalone/.next/server/app/api/processes/[id]/route_client-reference-manifest.js +1 -1
  132. package/.next/standalone/.next/server/app/api/processes/[id]/share-link/route_client-reference-manifest.js +1 -1
  133. package/.next/standalone/.next/server/app/api/processes/[id]/stages/[stageId]/override/route_client-reference-manifest.js +1 -1
  134. package/.next/standalone/.next/server/app/api/processes/[id]/stages/[stageId]/retry/route_client-reference-manifest.js +1 -1
  135. package/.next/standalone/.next/server/app/api/processes/[id]/stages/[stageId]/submit/route_client-reference-manifest.js +1 -1
  136. package/.next/standalone/.next/server/app/api/processes/definitions/[slug]/route_client-reference-manifest.js +1 -1
  137. package/.next/standalone/.next/server/app/api/processes/definitions/[slug]/settings/route_client-reference-manifest.js +1 -1
  138. package/.next/standalone/.next/server/app/api/processes/definitions/route_client-reference-manifest.js +1 -1
  139. package/.next/standalone/.next/server/app/api/processes/definitions/validate/route_client-reference-manifest.js +1 -1
  140. package/.next/standalone/.next/server/app/api/processes/route_client-reference-manifest.js +1 -1
  141. package/.next/standalone/.next/server/app/api/processes/start-and-route/route_client-reference-manifest.js +1 -1
  142. package/.next/standalone/.next/server/app/api/projects/[slug]/library/route_client-reference-manifest.js +1 -1
  143. package/.next/standalone/.next/server/app/api/projects/[slug]/route_client-reference-manifest.js +1 -1
  144. package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  145. package/.next/standalone/.next/server/app/api/runs/approve-claude-run/route_client-reference-manifest.js +1 -1
  146. package/.next/standalone/.next/server/app/api/runs/claude-code-dry-run/route_client-reference-manifest.js +1 -1
  147. package/.next/standalone/.next/server/app/api/runs/competitor-report/route_client-reference-manifest.js +1 -1
  148. package/.next/standalone/.next/server/app/api/runs/engine-ping/route_client-reference-manifest.js +1 -1
  149. package/.next/standalone/.next/server/app/api/runs/marketing-plan/route_client-reference-manifest.js +1 -1
  150. package/.next/standalone/.next/server/app/api/schedules/upsert/route_client-reference-manifest.js +1 -1
  151. package/.next/standalone/.next/server/app/api/secrets/[name]/route_client-reference-manifest.js +1 -1
  152. package/.next/standalone/.next/server/app/api/secrets/route_client-reference-manifest.js +1 -1
  153. package/.next/standalone/.next/server/app/api/settings/trust-mode/route_client-reference-manifest.js +1 -1
  154. package/.next/standalone/.next/server/app/api/share/[token]/otp/route_client-reference-manifest.js +1 -1
  155. package/.next/standalone/.next/server/app/api/share/[token]/route_client-reference-manifest.js +1 -1
  156. package/.next/standalone/.next/server/app/api/share/[token]/verify/route_client-reference-manifest.js +1 -1
  157. package/.next/standalone/.next/server/app/api/share/space/[token]/otp/route_client-reference-manifest.js +1 -1
  158. package/.next/standalone/.next/server/app/api/share/space/[token]/route_client-reference-manifest.js +1 -1
  159. package/.next/standalone/.next/server/app/api/share/space/[token]/verify/route_client-reference-manifest.js +1 -1
  160. package/.next/standalone/.next/server/app/api/shared/spaces/[id]/acl/route_client-reference-manifest.js +1 -1
  161. package/.next/standalone/.next/server/app/api/shared/spaces/publish/route_client-reference-manifest.js +1 -1
  162. package/.next/standalone/.next/server/app/api/shared/spaces/route_client-reference-manifest.js +1 -1
  163. package/.next/standalone/.next/server/app/api/shared/spaces/status/route_client-reference-manifest.js +1 -1
  164. package/.next/standalone/.next/server/app/api/shared/spaces/unpublish/route_client-reference-manifest.js +1 -1
  165. package/.next/standalone/.next/server/app/api/state/route_client-reference-manifest.js +1 -1
  166. package/.next/standalone/.next/server/app/api/system/update/route_client-reference-manifest.js +1 -1
  167. package/.next/standalone/.next/server/app/api/tasks/[id]/active-run/route_client-reference-manifest.js +1 -1
  168. package/.next/standalone/.next/server/app/api/tasks/[id]/attachments/route_client-reference-manifest.js +1 -1
  169. package/.next/standalone/.next/server/app/api/tasks/[id]/checklist/[itemId]/route_client-reference-manifest.js +1 -1
  170. package/.next/standalone/.next/server/app/api/tasks/[id]/checklist/route_client-reference-manifest.js +1 -1
  171. package/.next/standalone/.next/server/app/api/tasks/[id]/checkout/route_client-reference-manifest.js +1 -1
  172. package/.next/standalone/.next/server/app/api/tasks/[id]/children/route_client-reference-manifest.js +1 -1
  173. package/.next/standalone/.next/server/app/api/tasks/[id]/comments/route_client-reference-manifest.js +1 -1
  174. package/.next/standalone/.next/server/app/api/tasks/[id]/events/route_client-reference-manifest.js +1 -1
  175. package/.next/standalone/.next/server/app/api/tasks/[id]/live-runs/route_client-reference-manifest.js +1 -1
  176. package/.next/standalone/.next/server/app/api/tasks/[id]/release/route_client-reference-manifest.js +1 -1
  177. package/.next/standalone/.next/server/app/api/tasks/[id]/route_client-reference-manifest.js +1 -1
  178. package/.next/standalone/.next/server/app/api/tasks/route_client-reference-manifest.js +1 -1
  179. package/.next/standalone/.next/server/app/api/tool-allowlists/[id]/route_client-reference-manifest.js +1 -1
  180. package/.next/standalone/.next/server/app/api/tool-allowlists/route_client-reference-manifest.js +1 -1
  181. package/.next/standalone/.next/server/app/api/tool-egress/route_client-reference-manifest.js +1 -1
  182. package/.next/standalone/.next/server/app/api/tools/[name]/approve/route_client-reference-manifest.js +1 -1
  183. package/.next/standalone/.next/server/app/api/tools/[name]/route_client-reference-manifest.js +1 -1
  184. package/.next/standalone/.next/server/app/api/tools/route_client-reference-manifest.js +1 -1
  185. package/.next/standalone/.next/server/app/api/transcripts/route_client-reference-manifest.js +1 -1
  186. package/.next/standalone/.next/server/app/api/voice/providers/route_client-reference-manifest.js +1 -1
  187. package/.next/standalone/.next/server/app/api/voice/realtime/context/route_client-reference-manifest.js +1 -1
  188. package/.next/standalone/.next/server/app/api/voice/realtime/session/route_client-reference-manifest.js +1 -1
  189. package/.next/standalone/.next/server/app/api/voice/realtime/tool-result/route_client-reference-manifest.js +1 -1
  190. package/.next/standalone/.next/server/app/api/voice/realtime/tools/route_client-reference-manifest.js +1 -1
  191. package/.next/standalone/.next/server/app/api/voice/tts/route_client-reference-manifest.js +1 -1
  192. package/.next/standalone/.next/server/app/api/whatsapp/allowlist/route_client-reference-manifest.js +1 -1
  193. package/.next/standalone/.next/server/app/api/whatsapp/disconnect/route_client-reference-manifest.js +1 -1
  194. package/.next/standalone/.next/server/app/api/whatsapp/messages/route_client-reference-manifest.js +1 -1
  195. package/.next/standalone/.next/server/app/api/whatsapp/qr/route_client-reference-manifest.js +1 -1
  196. package/.next/standalone/.next/server/app/api/whatsapp/send/route_client-reference-manifest.js +1 -1
  197. package/.next/standalone/.next/server/app/api/whatsapp/status/route_client-reference-manifest.js +1 -1
  198. package/.next/standalone/.next/server/app/approvals/page.js +1 -1
  199. package/.next/standalone/.next/server/app/approvals/page_client-reference-manifest.js +1 -1
  200. package/.next/standalone/.next/server/app/architecture/page_client-reference-manifest.js +1 -1
  201. package/.next/standalone/.next/server/app/architecture.html +2 -2
  202. package/.next/standalone/.next/server/app/architecture.rsc +4 -4
  203. package/.next/standalone/.next/server/app/audit/live/page_client-reference-manifest.js +1 -1
  204. package/.next/standalone/.next/server/app/audit/page_client-reference-manifest.js +1 -1
  205. package/.next/standalone/.next/server/app/brand/page_client-reference-manifest.js +1 -1
  206. package/.next/standalone/.next/server/app/brand.html +1 -1
  207. package/.next/standalone/.next/server/app/brand.rsc +5 -5
  208. package/.next/standalone/.next/server/app/disk/page_client-reference-manifest.js +1 -1
  209. package/.next/standalone/.next/server/app/federated-ai/page_client-reference-manifest.js +1 -1
  210. package/.next/standalone/.next/server/app/federated-ai.html +2 -2
  211. package/.next/standalone/.next/server/app/federated-ai.rsc +4 -4
  212. package/.next/standalone/.next/server/app/hail/[id]/governance/page_client-reference-manifest.js +1 -1
  213. package/.next/standalone/.next/server/app/hail/[id]/interview/page.js +1 -1
  214. package/.next/standalone/.next/server/app/hail/[id]/interview/page_client-reference-manifest.js +1 -1
  215. package/.next/standalone/.next/server/app/hail/[id]/page.js +1 -1
  216. package/.next/standalone/.next/server/app/hail/[id]/page_client-reference-manifest.js +1 -1
  217. package/.next/standalone/.next/server/app/hail/[id]/setup/page.js +1 -1
  218. package/.next/standalone/.next/server/app/hail/[id]/setup/page_client-reference-manifest.js +1 -1
  219. package/.next/standalone/.next/server/app/hail/page.js +2 -2
  220. package/.next/standalone/.next/server/app/hail/page_client-reference-manifest.js +1 -1
  221. package/.next/standalone/.next/server/app/help/[slug]/page_client-reference-manifest.js +1 -1
  222. package/.next/standalone/.next/server/app/help/page_client-reference-manifest.js +1 -1
  223. package/.next/standalone/.next/server/app/index.html +2 -2
  224. package/.next/standalone/.next/server/app/index.rsc +5 -5
  225. package/.next/standalone/.next/server/app/join/page_client-reference-manifest.js +1 -1
  226. package/.next/standalone/.next/server/app/join.html +1 -1
  227. package/.next/standalone/.next/server/app/join.rsc +4 -4
  228. package/.next/standalone/.next/server/app/login/page.js +1 -1
  229. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  230. package/.next/standalone/.next/server/app/marketplace/page.js +4 -3
  231. package/.next/standalone/.next/server/app/marketplace/page.js.nft.json +1 -1
  232. package/.next/standalone/.next/server/app/marketplace/page_client-reference-manifest.js +1 -1
  233. package/.next/standalone/.next/server/app/mines/[projectId]/page_client-reference-manifest.js +1 -1
  234. package/.next/standalone/.next/server/app/mines/[projectId]/results/page_client-reference-manifest.js +1 -1
  235. package/.next/standalone/.next/server/app/mines/page_client-reference-manifest.js +1 -1
  236. package/.next/standalone/.next/server/app/missions/page.js +2 -2
  237. package/.next/standalone/.next/server/app/missions/page_client-reference-manifest.js +1 -1
  238. package/.next/standalone/.next/server/app/onboarding/org/page_client-reference-manifest.js +1 -1
  239. package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  240. package/.next/standalone/.next/server/app/onboarding.html +2 -2
  241. package/.next/standalone/.next/server/app/onboarding.rsc +4 -4
  242. package/.next/standalone/.next/server/app/org/page.js +1 -1
  243. package/.next/standalone/.next/server/app/org/page.js.nft.json +1 -1
  244. package/.next/standalone/.next/server/app/org/page_client-reference-manifest.js +1 -1
  245. package/.next/standalone/.next/server/app/page.js +2 -2
  246. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  247. package/.next/standalone/.next/server/app/projects/[slug]/log/page_client-reference-manifest.js +1 -1
  248. package/.next/standalone/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  249. package/.next/standalone/.next/server/app/projects/new/page.js +3 -2
  250. package/.next/standalone/.next/server/app/projects/new/page.js.nft.json +1 -1
  251. package/.next/standalone/.next/server/app/projects/new/page_client-reference-manifest.js +1 -1
  252. package/.next/standalone/.next/server/app/projects/new.html +1 -1
  253. package/.next/standalone/.next/server/app/projects/new.rsc +5 -5
  254. package/.next/standalone/.next/server/app/projects/page.js +62 -18
  255. package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  256. package/.next/standalone/.next/server/app/reports/[file]/route_client-reference-manifest.js +1 -1
  257. package/.next/standalone/.next/server/app/reports/page_client-reference-manifest.js +1 -1
  258. package/.next/standalone/.next/server/app/runtime/page_client-reference-manifest.js +1 -1
  259. package/.next/standalone/.next/server/app/schedules/page.js +2 -2
  260. package/.next/standalone/.next/server/app/schedules/page_client-reference-manifest.js +1 -1
  261. package/.next/standalone/.next/server/app/settings/account/page_client-reference-manifest.js +1 -1
  262. package/.next/standalone/.next/server/app/settings/advanced/page_client-reference-manifest.js +1 -1
  263. package/.next/standalone/.next/server/app/settings/appearance/page.js +1 -1
  264. package/.next/standalone/.next/server/app/settings/appearance/page_client-reference-manifest.js +1 -1
  265. package/.next/standalone/.next/server/app/settings/brand/page.js +1 -1
  266. package/.next/standalone/.next/server/app/settings/brand/page_client-reference-manifest.js +1 -1
  267. package/.next/standalone/.next/server/app/settings/brand.html +2 -2
  268. package/.next/standalone/.next/server/app/settings/brand.rsc +6 -6
  269. package/.next/standalone/.next/server/app/settings/connectors/page_client-reference-manifest.js +1 -1
  270. package/.next/standalone/.next/server/app/settings/engines/page_client-reference-manifest.js +1 -1
  271. package/.next/standalone/.next/server/app/settings/onboarding/page.js +1 -1
  272. package/.next/standalone/.next/server/app/settings/onboarding/page_client-reference-manifest.js +1 -1
  273. package/.next/standalone/.next/server/app/settings/onboarding.html +2 -2
  274. package/.next/standalone/.next/server/app/settings/onboarding.rsc +5 -5
  275. package/.next/standalone/.next/server/app/settings/organization/page.js +2 -2
  276. package/.next/standalone/.next/server/app/settings/organization/page.js.nft.json +1 -1
  277. package/.next/standalone/.next/server/app/settings/organization/page_client-reference-manifest.js +1 -1
  278. package/.next/standalone/.next/server/app/settings/page.js +1 -1
  279. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  280. package/.next/standalone/.next/server/app/settings/runtime/page.js +1 -1
  281. package/.next/standalone/.next/server/app/settings/runtime/page_client-reference-manifest.js +1 -1
  282. package/.next/standalone/.next/server/app/settings/team/page.js +1 -1
  283. package/.next/standalone/.next/server/app/settings/team/page_client-reference-manifest.js +1 -1
  284. package/.next/standalone/.next/server/app/settings/tools/page_client-reference-manifest.js +1 -1
  285. package/.next/standalone/.next/server/app/settings.html +2 -2
  286. package/.next/standalone/.next/server/app/settings.rsc +5 -5
  287. package/.next/standalone/.next/server/app/share/[token]/page_client-reference-manifest.js +1 -1
  288. package/.next/standalone/.next/server/app/share/space/[token]/page_client-reference-manifest.js +1 -1
  289. package/.next/standalone/.next/server/app/tasks/[id]/page.js +2 -2
  290. package/.next/standalone/.next/server/app/tasks/[id]/page_client-reference-manifest.js +1 -1
  291. package/.next/standalone/.next/server/app/tasks/page.js +2 -2
  292. package/.next/standalone/.next/server/app/tasks/page_client-reference-manifest.js +1 -1
  293. package/.next/standalone/.next/server/app/team/[agentId]/page_client-reference-manifest.js +1 -1
  294. package/.next/standalone/.next/server/app/team/page_client-reference-manifest.js +1 -1
  295. package/.next/standalone/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  296. package/.next/standalone/.next/server/app/whatsapp/page_client-reference-manifest.js +1 -1
  297. package/.next/standalone/.next/server/app/whatsapp.html +2 -1
  298. package/.next/standalone/.next/server/app/whatsapp.rsc +4 -4
  299. package/.next/standalone/.next/server/app/workflows/[caseId]/page_client-reference-manifest.js +1 -1
  300. package/.next/standalone/.next/server/app/workflows/new/[caseId]/page.js +2 -2
  301. package/.next/standalone/.next/server/app/workflows/new/[caseId]/page_client-reference-manifest.js +1 -1
  302. package/.next/standalone/.next/server/app/workflows/new/definition/page_client-reference-manifest.js +1 -1
  303. package/.next/standalone/.next/server/app/workflows/page_client-reference-manifest.js +1 -1
  304. package/.next/standalone/.next/server/app/workflows/share/[caseId]/page_client-reference-manifest.js +1 -1
  305. package/.next/standalone/.next/server/app-paths-manifest.json +77 -76
  306. package/.next/standalone/.next/server/chunks/1648.js +1 -1
  307. package/.next/standalone/.next/server/chunks/1699.js +69 -25
  308. package/.next/standalone/.next/server/chunks/3066.js +1 -0
  309. package/.next/standalone/.next/server/chunks/3230.js +2 -2
  310. package/.next/standalone/.next/server/chunks/5093.js +1 -0
  311. package/.next/standalone/.next/server/chunks/5864.js +1 -0
  312. package/.next/standalone/.next/server/chunks/6059.js +1 -1
  313. package/.next/standalone/.next/server/chunks/6700.js +16 -3
  314. package/.next/standalone/.next/server/chunks/8003.js +1 -1
  315. package/.next/standalone/.next/server/functions-config-manifest.json +38 -37
  316. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  317. package/.next/standalone/.next/server/pages/404.html +1 -1
  318. package/.next/standalone/.next/server/pages/500.html +1 -1
  319. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  320. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  321. package/.next/standalone/.next/static/chunks/566-570a4f3feb2e9539.js +1 -0
  322. package/.next/standalone/.next/static/chunks/7695-04c7f1a5233de027.js +1 -0
  323. package/.next/standalone/.next/static/chunks/app/activity/loading-ac9aed5c6e27d434.js +1 -0
  324. package/.next/standalone/.next/static/chunks/app/agents/[id]/loading-ac9aed5c6e27d434.js +1 -0
  325. package/.next/standalone/.next/static/chunks/app/agents/[id]/page-474f640e84f7b4b5.js +1 -0
  326. package/.next/standalone/.next/static/chunks/app/agents/loading-ac9aed5c6e27d434.js +1 -0
  327. package/.next/standalone/.next/static/chunks/app/agents/page-b79b611acd56712b.js +1 -0
  328. package/.next/standalone/.next/static/chunks/app/api/activity/route-ac9aed5c6e27d434.js +1 -0
  329. package/.next/standalone/.next/static/chunks/app/api/admin/audit-export/route-ac9aed5c6e27d434.js +1 -0
  330. package/.next/standalone/.next/static/chunks/app/api/admin/share-links/route-ac9aed5c6e27d434.js +1 -0
  331. package/.next/standalone/.next/static/chunks/app/api/agent-memory/route-ac9aed5c6e27d434.js +1 -0
  332. package/.next/standalone/.next/static/chunks/app/api/agent-runs/[id]/cancel/route-ac9aed5c6e27d434.js +1 -0
  333. package/.next/standalone/.next/static/chunks/app/api/agent-runs/[id]/events/route-ac9aed5c6e27d434.js +1 -0
  334. package/.next/standalone/.next/static/chunks/app/api/agent-runs/[id]/log/route-ac9aed5c6e27d434.js +1 -0
  335. package/.next/standalone/.next/static/chunks/app/api/agent-runs/[id]/route-ac9aed5c6e27d434.js +1 -0
  336. package/.next/standalone/.next/static/chunks/app/api/agent-runs/route-ac9aed5c6e27d434.js +1 -0
  337. package/.next/standalone/.next/static/chunks/app/api/agents/[id]/chain/route-ac9aed5c6e27d434.js +1 -0
  338. package/.next/standalone/.next/static/chunks/app/api/agents/[id]/memory/route-ac9aed5c6e27d434.js +1 -0
  339. package/.next/standalone/.next/static/chunks/app/api/agents/[id]/reports/route-ac9aed5c6e27d434.js +1 -0
  340. package/.next/standalone/.next/static/chunks/app/api/agents/[id]/run/route-ac9aed5c6e27d434.js +1 -0
  341. package/.next/standalone/.next/static/chunks/app/api/agents/[id]/skills/route-ac9aed5c6e27d434.js +1 -0
  342. package/.next/standalone/.next/static/chunks/app/api/agents/create/route-ac9aed5c6e27d434.js +1 -0
  343. package/.next/standalone/.next/static/chunks/app/api/agents/ops/route-ac9aed5c6e27d434.js +1 -0
  344. package/.next/standalone/.next/static/chunks/app/api/approvals/[id]/route-ac9aed5c6e27d434.js +1 -0
  345. package/.next/standalone/.next/static/chunks/app/api/approvals/route-ac9aed5c6e27d434.js +1 -0
  346. package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/acl/route-ac9aed5c6e27d434.js +1 -0
  347. package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/protect/route-ac9aed5c6e27d434.js +1 -0
  348. package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/raw/route-ac9aed5c6e27d434.js +1 -0
  349. package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/route-ac9aed5c6e27d434.js +1 -0
  350. package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/share-link/[linkId]/route-ac9aed5c6e27d434.js +1 -0
  351. package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/share-link/route-ac9aed5c6e27d434.js +1 -0
  352. package/.next/standalone/.next/static/chunks/app/api/artifacts/upload/route-ac9aed5c6e27d434.js +1 -0
  353. package/.next/standalone/.next/static/chunks/app/api/audit/list/route-ac9aed5c6e27d434.js +1 -0
  354. package/.next/standalone/.next/static/chunks/app/api/audit/search/route-ac9aed5c6e27d434.js +1 -0
  355. package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-ac9aed5c6e27d434.js +1 -0
  356. package/.next/standalone/.next/static/chunks/app/api/auth/config/route-ac9aed5c6e27d434.js +1 -0
  357. package/.next/standalone/.next/static/chunks/app/api/auth/join-bootstrap/route-ac9aed5c6e27d434.js +1 -0
  358. package/.next/standalone/.next/static/chunks/app/api/auth/session/route-ac9aed5c6e27d434.js +1 -0
  359. package/.next/standalone/.next/static/chunks/app/api/brand/route-ac9aed5c6e27d434.js +1 -0
  360. package/.next/standalone/.next/static/chunks/app/api/brand/share/route-ac9aed5c6e27d434.js +1 -0
  361. package/.next/standalone/.next/static/chunks/app/api/chat/sessions/[id]/route-ac9aed5c6e27d434.js +1 -0
  362. package/.next/standalone/.next/static/chunks/app/api/chat/sessions/route-ac9aed5c6e27d434.js +1 -0
  363. package/.next/standalone/.next/static/chunks/app/api/config/env/route-ac9aed5c6e27d434.js +1 -0
  364. package/.next/standalone/.next/static/chunks/app/api/config/route-ac9aed5c6e27d434.js +1 -0
  365. package/.next/standalone/.next/static/chunks/app/api/connections/[service]/route-ac9aed5c6e27d434.js +1 -0
  366. package/.next/standalone/.next/static/chunks/app/api/connections/[service]/verify/route-ac9aed5c6e27d434.js +1 -0
  367. package/.next/standalone/.next/static/chunks/app/api/connections/route-ac9aed5c6e27d434.js +1 -0
  368. package/.next/standalone/.next/static/chunks/app/api/cron/tick/route-ac9aed5c6e27d434.js +1 -0
  369. package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/[id]/move/route-ac9aed5c6e27d434.js +1 -0
  370. package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/[id]/route-ac9aed5c6e27d434.js +1 -0
  371. package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/[id]/share-link/[linkId]/route-ac9aed5c6e27d434.js +1 -0
  372. package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/[id]/share-link/route-ac9aed5c6e27d434.js +1 -0
  373. package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/import/route-ac9aed5c6e27d434.js +1 -0
  374. package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/route-ac9aed5c6e27d434.js +1 -0
  375. package/.next/standalone/.next/static/chunks/app/api/disk/files/[id]/blob/route-ac9aed5c6e27d434.js +1 -0
  376. package/.next/standalone/.next/static/chunks/app/api/disk/files/[id]/route-ac9aed5c6e27d434.js +1 -0
  377. package/.next/standalone/.next/static/chunks/app/api/disk/files/[id]/transcribe/route-ac9aed5c6e27d434.js +1 -0
  378. package/.next/standalone/.next/static/chunks/app/api/disk/files/route-ac9aed5c6e27d434.js +1 -0
  379. package/.next/standalone/.next/static/chunks/app/api/disk/folders/route-ac9aed5c6e27d434.js +1 -0
  380. package/.next/standalone/.next/static/chunks/app/api/events/since/[cursor]/route-ac9aed5c6e27d434.js +1 -0
  381. package/.next/standalone/.next/static/chunks/app/api/events/stream/route-ac9aed5c6e27d434.js +1 -0
  382. package/.next/standalone/.next/static/chunks/app/api/fs/create-folder/route-ac9aed5c6e27d434.js +1 -0
  383. package/.next/standalone/.next/static/chunks/app/api/fs/pick-folder/route-ac9aed5c6e27d434.js +1 -0
  384. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/blueprint/route-ac9aed5c6e27d434.js +1 -0
  385. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/diagnostic/route-ac9aed5c6e27d434.js +1 -0
  386. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/governance/route-ac9aed5c6e27d434.js +1 -0
  387. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/interview/route-ac9aed5c6e27d434.js +1 -0
  388. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/pilot/route-ac9aed5c6e27d434.js +1 -0
  389. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/quarterly/route-ac9aed5c6e27d434.js +1 -0
  390. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/route-ac9aed5c6e27d434.js +1 -0
  391. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/setup-package/route-ac9aed5c6e27d434.js +1 -0
  392. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/route-ac9aed5c6e27d434.js +1 -0
  393. package/.next/standalone/.next/static/chunks/app/api/hail/interviews/[id]/responses/route-ac9aed5c6e27d434.js +1 -0
  394. package/.next/standalone/.next/static/chunks/app/api/hail/interviews/[id]/route-ac9aed5c6e27d434.js +1 -0
  395. package/.next/standalone/.next/static/chunks/app/api/hail/setup-packages/[id]/apply/route-ac9aed5c6e27d434.js +1 -0
  396. package/.next/standalone/.next/static/chunks/app/api/hail/setup-packages/validate/route-ac9aed5c6e27d434.js +1 -0
  397. package/.next/standalone/.next/static/chunks/app/api/heartbeat/tick/route-ac9aed5c6e27d434.js +1 -0
  398. package/.next/standalone/.next/static/chunks/app/api/heartbeat/worker/route-ac9aed5c6e27d434.js +1 -0
  399. package/.next/standalone/.next/static/chunks/app/api/help/route-ac9aed5c6e27d434.js +1 -0
  400. package/.next/standalone/.next/static/chunks/app/api/hermes/jobs/[id]/events/route-ac9aed5c6e27d434.js +1 -0
  401. package/.next/standalone/.next/static/chunks/app/api/hermes/jobs/[id]/route-ac9aed5c6e27d434.js +1 -0
  402. package/.next/standalone/.next/static/chunks/app/api/hermes/jobs/route-ac9aed5c6e27d434.js +1 -0
  403. package/.next/standalone/.next/static/chunks/app/api/integrations/google/callback/route-ac9aed5c6e27d434.js +1 -0
  404. package/.next/standalone/.next/static/chunks/app/api/integrations/google/oauth/route-ac9aed5c6e27d434.js +1 -0
  405. package/.next/standalone/.next/static/chunks/app/api/marketplace/[id]/route-ac9aed5c6e27d434.js +1 -0
  406. package/.next/standalone/.next/static/chunks/app/api/marketplace/open-design/route-ac9aed5c6e27d434.js +1 -0
  407. package/.next/standalone/.next/static/chunks/app/api/marketplace/route-ac9aed5c6e27d434.js +1 -0
  408. package/.next/standalone/.next/static/chunks/app/api/mines/import-roots/route-ac9aed5c6e27d434.js +1 -0
  409. package/.next/standalone/.next/static/chunks/app/api/mines/portfolio/route-ac9aed5c6e27d434.js +1 -0
  410. package/.next/standalone/.next/static/chunks/app/api/mines/projects/[id]/chunks/route-ac9aed5c6e27d434.js +1 -0
  411. package/.next/standalone/.next/static/chunks/app/api/mines/projects/[id]/diligence/route-ac9aed5c6e27d434.js +1 -0
  412. package/.next/standalone/.next/static/chunks/app/api/mines/projects/[id]/import/route-ac9aed5c6e27d434.js +1 -0
  413. package/.next/standalone/.next/static/chunks/app/api/mines/projects/[id]/publish/route-ac9aed5c6e27d434.js +1 -0
  414. package/.next/standalone/.next/static/chunks/app/api/mines/projects/route-ac9aed5c6e27d434.js +1 -0
  415. package/.next/standalone/.next/static/chunks/app/api/missions/route-ac9aed5c6e27d434.js +1 -0
  416. package/.next/standalone/.next/static/chunks/app/api/models/route-ac9aed5c6e27d434.js +1 -0
  417. package/.next/standalone/.next/static/chunks/app/api/onboarding/blueprint/route-ac9aed5c6e27d434.js +1 -0
  418. package/.next/standalone/.next/static/chunks/app/api/onboarding/launch/route-ac9aed5c6e27d434.js +1 -0
  419. package/.next/standalone/.next/static/chunks/app/api/orchestrator/command/route-ac9aed5c6e27d434.js +1 -0
  420. package/.next/standalone/.next/static/chunks/app/api/orchestrator/stream/route-ac9aed5c6e27d434.js +1 -0
  421. package/.next/standalone/.next/static/chunks/app/api/orchestrator/upload/route-ac9aed5c6e27d434.js +1 -0
  422. package/.next/standalone/.next/static/chunks/app/api/org/route-ac9aed5c6e27d434.js +1 -0
  423. package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/invites/[inviteId]/route-ac9aed5c6e27d434.js +1 -0
  424. package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/invites/route-ac9aed5c6e27d434.js +1 -0
  425. package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/members/[userId]/role/route-ac9aed5c6e27d434.js +1 -0
  426. package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/members/[userId]/route-ac9aed5c6e27d434.js +1 -0
  427. package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/members/route-ac9aed5c6e27d434.js +1 -0
  428. package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/route-ac9aed5c6e27d434.js +1 -0
  429. package/.next/standalone/.next/static/chunks/app/api/orgs/invites/pending/route-ac9aed5c6e27d434.js +1 -0
  430. package/.next/standalone/.next/static/chunks/app/api/orgs/join/route-ac9aed5c6e27d434.js +1 -0
  431. package/.next/standalone/.next/static/chunks/app/api/orgs/join-complete/route-ac9aed5c6e27d434.js +1 -0
  432. package/.next/standalone/.next/static/chunks/app/api/orgs/route-ac9aed5c6e27d434.js +1 -0
  433. package/.next/standalone/.next/static/chunks/app/api/printing-press/clis/route-ac9aed5c6e27d434.js +1 -0
  434. package/.next/standalone/.next/static/chunks/app/api/printing-press/install/route-ac9aed5c6e27d434.js +1 -0
  435. package/.next/standalone/.next/static/chunks/app/api/printing-press/security-mode/route-ac9aed5c6e27d434.js +1 -0
  436. package/.next/standalone/.next/static/chunks/app/api/privacy/config/route-ac9aed5c6e27d434.js +1 -0
  437. package/.next/standalone/.next/static/chunks/app/api/privacy/verify/route-ac9aed5c6e27d434.js +1 -0
  438. package/.next/standalone/.next/static/chunks/app/api/processes/[id]/route-ac9aed5c6e27d434.js +1 -0
  439. package/.next/standalone/.next/static/chunks/app/api/processes/[id]/share-link/route-ac9aed5c6e27d434.js +1 -0
  440. package/.next/standalone/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/override/route-ac9aed5c6e27d434.js +1 -0
  441. package/.next/standalone/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/retry/route-ac9aed5c6e27d434.js +1 -0
  442. package/.next/standalone/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/submit/route-ac9aed5c6e27d434.js +1 -0
  443. package/.next/standalone/.next/static/chunks/app/api/processes/definitions/[slug]/route-ac9aed5c6e27d434.js +1 -0
  444. package/.next/standalone/.next/static/chunks/app/api/processes/definitions/[slug]/settings/route-ac9aed5c6e27d434.js +1 -0
  445. package/.next/standalone/.next/static/chunks/app/api/processes/definitions/route-ac9aed5c6e27d434.js +1 -0
  446. package/.next/standalone/.next/static/chunks/app/api/processes/definitions/validate/route-ac9aed5c6e27d434.js +1 -0
  447. package/.next/standalone/.next/static/chunks/app/api/processes/route-ac9aed5c6e27d434.js +1 -0
  448. package/.next/standalone/.next/static/chunks/app/api/processes/start-and-route/route-ac9aed5c6e27d434.js +1 -0
  449. package/.next/standalone/.next/static/chunks/app/api/projects/[slug]/library/route-ac9aed5c6e27d434.js +1 -0
  450. package/.next/standalone/.next/static/chunks/app/api/projects/[slug]/route-ac9aed5c6e27d434.js +1 -0
  451. package/.next/standalone/.next/static/chunks/app/api/projects/route-ac9aed5c6e27d434.js +1 -0
  452. package/.next/standalone/.next/static/chunks/app/api/runs/approve-claude-run/route-ac9aed5c6e27d434.js +1 -0
  453. package/.next/standalone/.next/static/chunks/app/api/runs/claude-code-dry-run/route-ac9aed5c6e27d434.js +1 -0
  454. package/.next/standalone/.next/static/chunks/app/api/runs/competitor-report/route-ac9aed5c6e27d434.js +1 -0
  455. package/.next/standalone/.next/static/chunks/app/api/runs/engine-ping/route-ac9aed5c6e27d434.js +1 -0
  456. package/.next/standalone/.next/static/chunks/app/api/runs/marketing-plan/route-ac9aed5c6e27d434.js +1 -0
  457. package/.next/standalone/.next/static/chunks/app/api/schedules/upsert/route-ac9aed5c6e27d434.js +1 -0
  458. package/.next/standalone/.next/static/chunks/app/api/secrets/[name]/route-ac9aed5c6e27d434.js +1 -0
  459. package/.next/standalone/.next/static/chunks/app/api/secrets/route-ac9aed5c6e27d434.js +1 -0
  460. package/.next/standalone/.next/static/chunks/app/api/settings/trust-mode/route-ac9aed5c6e27d434.js +1 -0
  461. package/.next/standalone/.next/static/chunks/app/api/share/[token]/otp/route-ac9aed5c6e27d434.js +1 -0
  462. package/.next/standalone/.next/static/chunks/app/api/share/[token]/route-ac9aed5c6e27d434.js +1 -0
  463. package/.next/standalone/.next/static/chunks/app/api/share/[token]/verify/route-ac9aed5c6e27d434.js +1 -0
  464. package/.next/standalone/.next/static/chunks/app/api/share/space/[token]/otp/route-ac9aed5c6e27d434.js +1 -0
  465. package/.next/standalone/.next/static/chunks/app/api/share/space/[token]/route-ac9aed5c6e27d434.js +1 -0
  466. package/.next/standalone/.next/static/chunks/app/api/share/space/[token]/verify/route-ac9aed5c6e27d434.js +1 -0
  467. package/.next/standalone/.next/static/chunks/app/api/shared/spaces/[id]/acl/route-ac9aed5c6e27d434.js +1 -0
  468. package/.next/standalone/.next/static/chunks/app/api/shared/spaces/publish/route-ac9aed5c6e27d434.js +1 -0
  469. package/.next/standalone/.next/static/chunks/app/api/shared/spaces/route-ac9aed5c6e27d434.js +1 -0
  470. package/.next/standalone/.next/static/chunks/app/api/shared/spaces/status/route-ac9aed5c6e27d434.js +1 -0
  471. package/.next/standalone/.next/static/chunks/app/api/shared/spaces/unpublish/route-ac9aed5c6e27d434.js +1 -0
  472. package/.next/standalone/.next/static/chunks/app/api/state/route-ac9aed5c6e27d434.js +1 -0
  473. package/.next/standalone/.next/static/chunks/app/api/system/update/route-ac9aed5c6e27d434.js +1 -0
  474. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/active-run/route-ac9aed5c6e27d434.js +1 -0
  475. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/attachments/route-ac9aed5c6e27d434.js +1 -0
  476. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/checklist/[itemId]/route-ac9aed5c6e27d434.js +1 -0
  477. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/checklist/route-ac9aed5c6e27d434.js +1 -0
  478. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/checkout/route-ac9aed5c6e27d434.js +1 -0
  479. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/children/route-ac9aed5c6e27d434.js +1 -0
  480. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/comments/route-ac9aed5c6e27d434.js +1 -0
  481. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/events/route-ac9aed5c6e27d434.js +1 -0
  482. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/live-runs/route-ac9aed5c6e27d434.js +1 -0
  483. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/release/route-ac9aed5c6e27d434.js +1 -0
  484. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/route-ac9aed5c6e27d434.js +1 -0
  485. package/.next/standalone/.next/static/chunks/app/api/tasks/route-ac9aed5c6e27d434.js +1 -0
  486. package/.next/standalone/.next/static/chunks/app/api/tool-allowlists/[id]/route-ac9aed5c6e27d434.js +1 -0
  487. package/.next/standalone/.next/static/chunks/app/api/tool-allowlists/route-ac9aed5c6e27d434.js +1 -0
  488. package/.next/standalone/.next/static/chunks/app/api/tool-egress/route-ac9aed5c6e27d434.js +1 -0
  489. package/.next/standalone/.next/static/chunks/app/api/tools/[name]/approve/route-ac9aed5c6e27d434.js +1 -0
  490. package/.next/standalone/.next/static/chunks/app/api/tools/[name]/route-ac9aed5c6e27d434.js +1 -0
  491. package/.next/standalone/.next/static/chunks/app/api/tools/route-ac9aed5c6e27d434.js +1 -0
  492. package/.next/standalone/.next/static/chunks/app/api/transcripts/route-ac9aed5c6e27d434.js +1 -0
  493. package/.next/standalone/.next/static/chunks/app/api/voice/providers/route-ac9aed5c6e27d434.js +1 -0
  494. package/.next/standalone/.next/static/chunks/app/api/voice/realtime/context/route-ac9aed5c6e27d434.js +1 -0
  495. package/.next/standalone/.next/static/chunks/app/api/voice/realtime/session/route-ac9aed5c6e27d434.js +1 -0
  496. package/.next/standalone/.next/static/chunks/app/api/voice/realtime/tool-result/route-ac9aed5c6e27d434.js +1 -0
  497. package/.next/standalone/.next/static/chunks/app/api/voice/realtime/tools/route-ac9aed5c6e27d434.js +1 -0
  498. package/.next/standalone/.next/static/chunks/app/api/voice/tts/route-ac9aed5c6e27d434.js +1 -0
  499. package/.next/standalone/.next/static/chunks/app/api/whatsapp/allowlist/route-ac9aed5c6e27d434.js +1 -0
  500. package/.next/standalone/.next/static/chunks/app/api/whatsapp/disconnect/route-ac9aed5c6e27d434.js +1 -0
  501. package/.next/standalone/.next/static/chunks/app/api/whatsapp/messages/route-ac9aed5c6e27d434.js +1 -0
  502. package/.next/standalone/.next/static/chunks/app/api/whatsapp/qr/route-ac9aed5c6e27d434.js +1 -0
  503. package/.next/standalone/.next/static/chunks/app/api/whatsapp/send/route-ac9aed5c6e27d434.js +1 -0
  504. package/.next/standalone/.next/static/chunks/app/api/whatsapp/status/route-ac9aed5c6e27d434.js +1 -0
  505. package/.next/standalone/.next/static/chunks/app/approvals/loading-ac9aed5c6e27d434.js +1 -0
  506. package/.next/standalone/.next/static/chunks/app/architecture/loading-ac9aed5c6e27d434.js +1 -0
  507. package/.next/standalone/.next/static/chunks/app/audit/loading-ac9aed5c6e27d434.js +1 -0
  508. package/.next/standalone/.next/static/chunks/app/brand/loading-ac9aed5c6e27d434.js +1 -0
  509. package/.next/standalone/.next/static/chunks/app/disk/loading-ac9aed5c6e27d434.js +1 -0
  510. package/.next/standalone/.next/static/chunks/app/federated-ai/loading-ac9aed5c6e27d434.js +1 -0
  511. package/.next/standalone/.next/static/chunks/app/help/loading-ac9aed5c6e27d434.js +1 -0
  512. package/.next/standalone/.next/static/chunks/app/layout-eaed78b7751b2b5b.js +1 -0
  513. package/.next/standalone/.next/static/chunks/app/loading-ac9aed5c6e27d434.js +1 -0
  514. package/.next/standalone/.next/static/chunks/app/login/page-a2344c0b1ef6d31a.js +1 -0
  515. package/.next/standalone/.next/static/chunks/app/marketplace/loading-ac9aed5c6e27d434.js +1 -0
  516. package/.next/standalone/.next/static/chunks/app/marketplace/page-0b7d3a6309302de3.js +1 -0
  517. package/.next/standalone/.next/static/chunks/app/missions/loading-ac9aed5c6e27d434.js +1 -0
  518. package/.next/standalone/.next/static/chunks/app/onboarding/loading-ac9aed5c6e27d434.js +1 -0
  519. package/.next/standalone/.next/static/chunks/app/org/loading-ac9aed5c6e27d434.js +1 -0
  520. package/.next/standalone/.next/static/chunks/app/page-a716d81055cfaa16.js +1 -0
  521. package/.next/standalone/.next/static/chunks/app/projects/[slug]/loading-ac9aed5c6e27d434.js +1 -0
  522. package/.next/standalone/.next/static/chunks/app/projects/loading-ac9aed5c6e27d434.js +1 -0
  523. package/.next/standalone/.next/static/chunks/app/projects/page-8c8e47863c240ec7.js +1 -0
  524. package/.next/standalone/.next/static/chunks/app/reports/[file]/route-ac9aed5c6e27d434.js +1 -0
  525. package/.next/standalone/.next/static/chunks/app/reports/loading-ac9aed5c6e27d434.js +1 -0
  526. package/.next/standalone/.next/static/chunks/app/runtime/loading-ac9aed5c6e27d434.js +1 -0
  527. package/.next/standalone/.next/static/chunks/app/schedules/loading-ac9aed5c6e27d434.js +1 -0
  528. package/.next/standalone/.next/static/chunks/app/settings/layout-08f6b30132b26dd1.js +1 -0
  529. package/.next/standalone/.next/static/chunks/app/settings/loading-ac9aed5c6e27d434.js +1 -0
  530. package/.next/standalone/.next/static/chunks/app/settings/page-ac9aed5c6e27d434.js +1 -0
  531. package/.next/standalone/.next/static/chunks/app/settings/team/page-9a2e675124de6aac.js +1 -0
  532. package/.next/standalone/.next/static/chunks/app/tasks/[id]/loading-ac9aed5c6e27d434.js +1 -0
  533. package/.next/standalone/.next/static/chunks/app/tasks/loading-ac9aed5c6e27d434.js +1 -0
  534. package/.next/standalone/.next/static/chunks/app/tools/loading-ac9aed5c6e27d434.js +1 -0
  535. package/.next/standalone/.next/static/chunks/app/tools/page-ac9aed5c6e27d434.js +1 -0
  536. package/.next/standalone/.next/static/chunks/app/whatsapp/loading-ac9aed5c6e27d434.js +1 -0
  537. package/.next/standalone/.next/static/chunks/app/workflows/share/[caseId]/page-ac9aed5c6e27d434.js +1 -0
  538. package/.next/standalone/.next/static/css/3d77d4b95ab1c602.css +1 -0
  539. package/.next/standalone/.next/static/rhk5TnKsJ_4Rj__U8e3JH/_buildManifest.js +1 -0
  540. package/.next/standalone/CHANGELOG.md +26 -0
  541. package/.next/standalone/data/.artifacts-migrated-v1 +1 -1
  542. package/.next/standalone/data/.default-project-seeded +1 -1
  543. package/.next/standalone/data/madarx.sqlite +0 -0
  544. package/.next/standalone/data/madarx.sqlite-shm +0 -0
  545. package/.next/standalone/data/madarx.sqlite-wal +0 -0
  546. package/.next/standalone/package.json +1 -1
  547. package/.next/static/chunks/566-570a4f3feb2e9539.js +1 -0
  548. package/.next/static/chunks/7695-04c7f1a5233de027.js +1 -0
  549. package/.next/static/chunks/app/activity/loading-ac9aed5c6e27d434.js +1 -0
  550. package/.next/static/chunks/app/agents/[id]/loading-ac9aed5c6e27d434.js +1 -0
  551. package/.next/static/chunks/app/agents/[id]/page-474f640e84f7b4b5.js +1 -0
  552. package/.next/static/chunks/app/agents/loading-ac9aed5c6e27d434.js +1 -0
  553. package/.next/static/chunks/app/agents/page-b79b611acd56712b.js +1 -0
  554. package/.next/static/chunks/app/api/activity/route-ac9aed5c6e27d434.js +1 -0
  555. package/.next/static/chunks/app/api/admin/audit-export/route-ac9aed5c6e27d434.js +1 -0
  556. package/.next/static/chunks/app/api/admin/share-links/route-ac9aed5c6e27d434.js +1 -0
  557. package/.next/static/chunks/app/api/agent-memory/route-ac9aed5c6e27d434.js +1 -0
  558. package/.next/static/chunks/app/api/agent-runs/[id]/cancel/route-ac9aed5c6e27d434.js +1 -0
  559. package/.next/static/chunks/app/api/agent-runs/[id]/events/route-ac9aed5c6e27d434.js +1 -0
  560. package/.next/static/chunks/app/api/agent-runs/[id]/log/route-ac9aed5c6e27d434.js +1 -0
  561. package/.next/static/chunks/app/api/agent-runs/[id]/route-ac9aed5c6e27d434.js +1 -0
  562. package/.next/static/chunks/app/api/agent-runs/route-ac9aed5c6e27d434.js +1 -0
  563. package/.next/static/chunks/app/api/agents/[id]/chain/route-ac9aed5c6e27d434.js +1 -0
  564. package/.next/static/chunks/app/api/agents/[id]/memory/route-ac9aed5c6e27d434.js +1 -0
  565. package/.next/static/chunks/app/api/agents/[id]/reports/route-ac9aed5c6e27d434.js +1 -0
  566. package/.next/static/chunks/app/api/agents/[id]/run/route-ac9aed5c6e27d434.js +1 -0
  567. package/.next/static/chunks/app/api/agents/[id]/skills/route-ac9aed5c6e27d434.js +1 -0
  568. package/.next/static/chunks/app/api/agents/create/route-ac9aed5c6e27d434.js +1 -0
  569. package/.next/static/chunks/app/api/agents/ops/route-ac9aed5c6e27d434.js +1 -0
  570. package/.next/static/chunks/app/api/approvals/[id]/route-ac9aed5c6e27d434.js +1 -0
  571. package/.next/static/chunks/app/api/approvals/route-ac9aed5c6e27d434.js +1 -0
  572. package/.next/static/chunks/app/api/artifacts/[id]/acl/route-ac9aed5c6e27d434.js +1 -0
  573. package/.next/static/chunks/app/api/artifacts/[id]/protect/route-ac9aed5c6e27d434.js +1 -0
  574. package/.next/static/chunks/app/api/artifacts/[id]/raw/route-ac9aed5c6e27d434.js +1 -0
  575. package/.next/static/chunks/app/api/artifacts/[id]/route-ac9aed5c6e27d434.js +1 -0
  576. package/.next/static/chunks/app/api/artifacts/[id]/share-link/[linkId]/route-ac9aed5c6e27d434.js +1 -0
  577. package/.next/static/chunks/app/api/artifacts/[id]/share-link/route-ac9aed5c6e27d434.js +1 -0
  578. package/.next/static/chunks/app/api/artifacts/upload/route-ac9aed5c6e27d434.js +1 -0
  579. package/.next/static/chunks/app/api/audit/list/route-ac9aed5c6e27d434.js +1 -0
  580. package/.next/static/chunks/app/api/audit/search/route-ac9aed5c6e27d434.js +1 -0
  581. package/.next/static/chunks/app/api/auth/callback/route-ac9aed5c6e27d434.js +1 -0
  582. package/.next/static/chunks/app/api/auth/config/route-ac9aed5c6e27d434.js +1 -0
  583. package/.next/static/chunks/app/api/auth/join-bootstrap/route-ac9aed5c6e27d434.js +1 -0
  584. package/.next/static/chunks/app/api/auth/session/route-ac9aed5c6e27d434.js +1 -0
  585. package/.next/static/chunks/app/api/brand/route-ac9aed5c6e27d434.js +1 -0
  586. package/.next/static/chunks/app/api/brand/share/route-ac9aed5c6e27d434.js +1 -0
  587. package/.next/static/chunks/app/api/chat/sessions/[id]/route-ac9aed5c6e27d434.js +1 -0
  588. package/.next/static/chunks/app/api/chat/sessions/route-ac9aed5c6e27d434.js +1 -0
  589. package/.next/static/chunks/app/api/config/env/route-ac9aed5c6e27d434.js +1 -0
  590. package/.next/static/chunks/app/api/config/route-ac9aed5c6e27d434.js +1 -0
  591. package/.next/static/chunks/app/api/connections/[service]/route-ac9aed5c6e27d434.js +1 -0
  592. package/.next/static/chunks/app/api/connections/[service]/verify/route-ac9aed5c6e27d434.js +1 -0
  593. package/.next/static/chunks/app/api/connections/route-ac9aed5c6e27d434.js +1 -0
  594. package/.next/static/chunks/app/api/cron/tick/route-ac9aed5c6e27d434.js +1 -0
  595. package/.next/static/chunks/app/api/dashboard/spaces/[id]/move/route-ac9aed5c6e27d434.js +1 -0
  596. package/.next/static/chunks/app/api/dashboard/spaces/[id]/route-ac9aed5c6e27d434.js +1 -0
  597. package/.next/static/chunks/app/api/dashboard/spaces/[id]/share-link/[linkId]/route-ac9aed5c6e27d434.js +1 -0
  598. package/.next/static/chunks/app/api/dashboard/spaces/[id]/share-link/route-ac9aed5c6e27d434.js +1 -0
  599. package/.next/static/chunks/app/api/dashboard/spaces/import/route-ac9aed5c6e27d434.js +1 -0
  600. package/.next/static/chunks/app/api/dashboard/spaces/route-ac9aed5c6e27d434.js +1 -0
  601. package/.next/static/chunks/app/api/disk/files/[id]/blob/route-ac9aed5c6e27d434.js +1 -0
  602. package/.next/static/chunks/app/api/disk/files/[id]/route-ac9aed5c6e27d434.js +1 -0
  603. package/.next/static/chunks/app/api/disk/files/[id]/transcribe/route-ac9aed5c6e27d434.js +1 -0
  604. package/.next/static/chunks/app/api/disk/files/route-ac9aed5c6e27d434.js +1 -0
  605. package/.next/static/chunks/app/api/disk/folders/route-ac9aed5c6e27d434.js +1 -0
  606. package/.next/static/chunks/app/api/events/since/[cursor]/route-ac9aed5c6e27d434.js +1 -0
  607. package/.next/static/chunks/app/api/events/stream/route-ac9aed5c6e27d434.js +1 -0
  608. package/.next/static/chunks/app/api/fs/create-folder/route-ac9aed5c6e27d434.js +1 -0
  609. package/.next/static/chunks/app/api/fs/pick-folder/route-ac9aed5c6e27d434.js +1 -0
  610. package/.next/static/chunks/app/api/hail/engagements/[id]/blueprint/route-ac9aed5c6e27d434.js +1 -0
  611. package/.next/static/chunks/app/api/hail/engagements/[id]/diagnostic/route-ac9aed5c6e27d434.js +1 -0
  612. package/.next/static/chunks/app/api/hail/engagements/[id]/governance/route-ac9aed5c6e27d434.js +1 -0
  613. package/.next/static/chunks/app/api/hail/engagements/[id]/interview/route-ac9aed5c6e27d434.js +1 -0
  614. package/.next/static/chunks/app/api/hail/engagements/[id]/pilot/route-ac9aed5c6e27d434.js +1 -0
  615. package/.next/static/chunks/app/api/hail/engagements/[id]/quarterly/route-ac9aed5c6e27d434.js +1 -0
  616. package/.next/static/chunks/app/api/hail/engagements/[id]/route-ac9aed5c6e27d434.js +1 -0
  617. package/.next/static/chunks/app/api/hail/engagements/[id]/setup-package/route-ac9aed5c6e27d434.js +1 -0
  618. package/.next/static/chunks/app/api/hail/engagements/route-ac9aed5c6e27d434.js +1 -0
  619. package/.next/static/chunks/app/api/hail/interviews/[id]/responses/route-ac9aed5c6e27d434.js +1 -0
  620. package/.next/static/chunks/app/api/hail/interviews/[id]/route-ac9aed5c6e27d434.js +1 -0
  621. package/.next/static/chunks/app/api/hail/setup-packages/[id]/apply/route-ac9aed5c6e27d434.js +1 -0
  622. package/.next/static/chunks/app/api/hail/setup-packages/validate/route-ac9aed5c6e27d434.js +1 -0
  623. package/.next/static/chunks/app/api/heartbeat/tick/route-ac9aed5c6e27d434.js +1 -0
  624. package/.next/static/chunks/app/api/heartbeat/worker/route-ac9aed5c6e27d434.js +1 -0
  625. package/.next/static/chunks/app/api/help/route-ac9aed5c6e27d434.js +1 -0
  626. package/.next/static/chunks/app/api/hermes/jobs/[id]/events/route-ac9aed5c6e27d434.js +1 -0
  627. package/.next/static/chunks/app/api/hermes/jobs/[id]/route-ac9aed5c6e27d434.js +1 -0
  628. package/.next/static/chunks/app/api/hermes/jobs/route-ac9aed5c6e27d434.js +1 -0
  629. package/.next/static/chunks/app/api/integrations/google/callback/route-ac9aed5c6e27d434.js +1 -0
  630. package/.next/static/chunks/app/api/integrations/google/oauth/route-ac9aed5c6e27d434.js +1 -0
  631. package/.next/static/chunks/app/api/marketplace/[id]/route-ac9aed5c6e27d434.js +1 -0
  632. package/.next/static/chunks/app/api/marketplace/open-design/route-ac9aed5c6e27d434.js +1 -0
  633. package/.next/static/chunks/app/api/marketplace/route-ac9aed5c6e27d434.js +1 -0
  634. package/.next/static/chunks/app/api/mines/import-roots/route-ac9aed5c6e27d434.js +1 -0
  635. package/.next/static/chunks/app/api/mines/portfolio/route-ac9aed5c6e27d434.js +1 -0
  636. package/.next/static/chunks/app/api/mines/projects/[id]/chunks/route-ac9aed5c6e27d434.js +1 -0
  637. package/.next/static/chunks/app/api/mines/projects/[id]/diligence/route-ac9aed5c6e27d434.js +1 -0
  638. package/.next/static/chunks/app/api/mines/projects/[id]/import/route-ac9aed5c6e27d434.js +1 -0
  639. package/.next/static/chunks/app/api/mines/projects/[id]/publish/route-ac9aed5c6e27d434.js +1 -0
  640. package/.next/static/chunks/app/api/mines/projects/route-ac9aed5c6e27d434.js +1 -0
  641. package/.next/static/chunks/app/api/missions/route-ac9aed5c6e27d434.js +1 -0
  642. package/.next/static/chunks/app/api/models/route-ac9aed5c6e27d434.js +1 -0
  643. package/.next/static/chunks/app/api/onboarding/blueprint/route-ac9aed5c6e27d434.js +1 -0
  644. package/.next/static/chunks/app/api/onboarding/launch/route-ac9aed5c6e27d434.js +1 -0
  645. package/.next/static/chunks/app/api/orchestrator/command/route-ac9aed5c6e27d434.js +1 -0
  646. package/.next/static/chunks/app/api/orchestrator/stream/route-ac9aed5c6e27d434.js +1 -0
  647. package/.next/static/chunks/app/api/orchestrator/upload/route-ac9aed5c6e27d434.js +1 -0
  648. package/.next/static/chunks/app/api/org/route-ac9aed5c6e27d434.js +1 -0
  649. package/.next/static/chunks/app/api/orgs/[id]/invites/[inviteId]/route-ac9aed5c6e27d434.js +1 -0
  650. package/.next/static/chunks/app/api/orgs/[id]/invites/route-ac9aed5c6e27d434.js +1 -0
  651. package/.next/static/chunks/app/api/orgs/[id]/members/[userId]/role/route-ac9aed5c6e27d434.js +1 -0
  652. package/.next/static/chunks/app/api/orgs/[id]/members/[userId]/route-ac9aed5c6e27d434.js +1 -0
  653. package/.next/static/chunks/app/api/orgs/[id]/members/route-ac9aed5c6e27d434.js +1 -0
  654. package/.next/static/chunks/app/api/orgs/[id]/route-ac9aed5c6e27d434.js +1 -0
  655. package/.next/static/chunks/app/api/orgs/invites/pending/route-ac9aed5c6e27d434.js +1 -0
  656. package/.next/static/chunks/app/api/orgs/join/route-ac9aed5c6e27d434.js +1 -0
  657. package/.next/static/chunks/app/api/orgs/join-complete/route-ac9aed5c6e27d434.js +1 -0
  658. package/.next/static/chunks/app/api/orgs/route-ac9aed5c6e27d434.js +1 -0
  659. package/.next/static/chunks/app/api/printing-press/clis/route-ac9aed5c6e27d434.js +1 -0
  660. package/.next/static/chunks/app/api/printing-press/install/route-ac9aed5c6e27d434.js +1 -0
  661. package/.next/static/chunks/app/api/printing-press/security-mode/route-ac9aed5c6e27d434.js +1 -0
  662. package/.next/static/chunks/app/api/privacy/config/route-ac9aed5c6e27d434.js +1 -0
  663. package/.next/static/chunks/app/api/privacy/verify/route-ac9aed5c6e27d434.js +1 -0
  664. package/.next/static/chunks/app/api/processes/[id]/route-ac9aed5c6e27d434.js +1 -0
  665. package/.next/static/chunks/app/api/processes/[id]/share-link/route-ac9aed5c6e27d434.js +1 -0
  666. package/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/override/route-ac9aed5c6e27d434.js +1 -0
  667. package/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/retry/route-ac9aed5c6e27d434.js +1 -0
  668. package/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/submit/route-ac9aed5c6e27d434.js +1 -0
  669. package/.next/static/chunks/app/api/processes/definitions/[slug]/route-ac9aed5c6e27d434.js +1 -0
  670. package/.next/static/chunks/app/api/processes/definitions/[slug]/settings/route-ac9aed5c6e27d434.js +1 -0
  671. package/.next/static/chunks/app/api/processes/definitions/route-ac9aed5c6e27d434.js +1 -0
  672. package/.next/static/chunks/app/api/processes/definitions/validate/route-ac9aed5c6e27d434.js +1 -0
  673. package/.next/static/chunks/app/api/processes/route-ac9aed5c6e27d434.js +1 -0
  674. package/.next/static/chunks/app/api/processes/start-and-route/route-ac9aed5c6e27d434.js +1 -0
  675. package/.next/static/chunks/app/api/projects/[slug]/library/route-ac9aed5c6e27d434.js +1 -0
  676. package/.next/static/chunks/app/api/projects/[slug]/route-ac9aed5c6e27d434.js +1 -0
  677. package/.next/static/chunks/app/api/projects/route-ac9aed5c6e27d434.js +1 -0
  678. package/.next/static/chunks/app/api/runs/approve-claude-run/route-ac9aed5c6e27d434.js +1 -0
  679. package/.next/static/chunks/app/api/runs/claude-code-dry-run/route-ac9aed5c6e27d434.js +1 -0
  680. package/.next/static/chunks/app/api/runs/competitor-report/route-ac9aed5c6e27d434.js +1 -0
  681. package/.next/static/chunks/app/api/runs/engine-ping/route-ac9aed5c6e27d434.js +1 -0
  682. package/.next/static/chunks/app/api/runs/marketing-plan/route-ac9aed5c6e27d434.js +1 -0
  683. package/.next/static/chunks/app/api/schedules/upsert/route-ac9aed5c6e27d434.js +1 -0
  684. package/.next/static/chunks/app/api/secrets/[name]/route-ac9aed5c6e27d434.js +1 -0
  685. package/.next/static/chunks/app/api/secrets/route-ac9aed5c6e27d434.js +1 -0
  686. package/.next/static/chunks/app/api/settings/trust-mode/route-ac9aed5c6e27d434.js +1 -0
  687. package/.next/static/chunks/app/api/share/[token]/otp/route-ac9aed5c6e27d434.js +1 -0
  688. package/.next/static/chunks/app/api/share/[token]/route-ac9aed5c6e27d434.js +1 -0
  689. package/.next/static/chunks/app/api/share/[token]/verify/route-ac9aed5c6e27d434.js +1 -0
  690. package/.next/static/chunks/app/api/share/space/[token]/otp/route-ac9aed5c6e27d434.js +1 -0
  691. package/.next/static/chunks/app/api/share/space/[token]/route-ac9aed5c6e27d434.js +1 -0
  692. package/.next/static/chunks/app/api/share/space/[token]/verify/route-ac9aed5c6e27d434.js +1 -0
  693. package/.next/static/chunks/app/api/shared/spaces/[id]/acl/route-ac9aed5c6e27d434.js +1 -0
  694. package/.next/static/chunks/app/api/shared/spaces/publish/route-ac9aed5c6e27d434.js +1 -0
  695. package/.next/static/chunks/app/api/shared/spaces/route-ac9aed5c6e27d434.js +1 -0
  696. package/.next/static/chunks/app/api/shared/spaces/status/route-ac9aed5c6e27d434.js +1 -0
  697. package/.next/static/chunks/app/api/shared/spaces/unpublish/route-ac9aed5c6e27d434.js +1 -0
  698. package/.next/static/chunks/app/api/state/route-ac9aed5c6e27d434.js +1 -0
  699. package/.next/static/chunks/app/api/system/update/route-ac9aed5c6e27d434.js +1 -0
  700. package/.next/static/chunks/app/api/tasks/[id]/active-run/route-ac9aed5c6e27d434.js +1 -0
  701. package/.next/static/chunks/app/api/tasks/[id]/attachments/route-ac9aed5c6e27d434.js +1 -0
  702. package/.next/static/chunks/app/api/tasks/[id]/checklist/[itemId]/route-ac9aed5c6e27d434.js +1 -0
  703. package/.next/static/chunks/app/api/tasks/[id]/checklist/route-ac9aed5c6e27d434.js +1 -0
  704. package/.next/static/chunks/app/api/tasks/[id]/checkout/route-ac9aed5c6e27d434.js +1 -0
  705. package/.next/static/chunks/app/api/tasks/[id]/children/route-ac9aed5c6e27d434.js +1 -0
  706. package/.next/static/chunks/app/api/tasks/[id]/comments/route-ac9aed5c6e27d434.js +1 -0
  707. package/.next/static/chunks/app/api/tasks/[id]/events/route-ac9aed5c6e27d434.js +1 -0
  708. package/.next/static/chunks/app/api/tasks/[id]/live-runs/route-ac9aed5c6e27d434.js +1 -0
  709. package/.next/static/chunks/app/api/tasks/[id]/release/route-ac9aed5c6e27d434.js +1 -0
  710. package/.next/static/chunks/app/api/tasks/[id]/route-ac9aed5c6e27d434.js +1 -0
  711. package/.next/static/chunks/app/api/tasks/route-ac9aed5c6e27d434.js +1 -0
  712. package/.next/static/chunks/app/api/tool-allowlists/[id]/route-ac9aed5c6e27d434.js +1 -0
  713. package/.next/static/chunks/app/api/tool-allowlists/route-ac9aed5c6e27d434.js +1 -0
  714. package/.next/static/chunks/app/api/tool-egress/route-ac9aed5c6e27d434.js +1 -0
  715. package/.next/static/chunks/app/api/tools/[name]/approve/route-ac9aed5c6e27d434.js +1 -0
  716. package/.next/static/chunks/app/api/tools/[name]/route-ac9aed5c6e27d434.js +1 -0
  717. package/.next/static/chunks/app/api/tools/route-ac9aed5c6e27d434.js +1 -0
  718. package/.next/static/chunks/app/api/transcripts/route-ac9aed5c6e27d434.js +1 -0
  719. package/.next/static/chunks/app/api/voice/providers/route-ac9aed5c6e27d434.js +1 -0
  720. package/.next/static/chunks/app/api/voice/realtime/context/route-ac9aed5c6e27d434.js +1 -0
  721. package/.next/static/chunks/app/api/voice/realtime/session/route-ac9aed5c6e27d434.js +1 -0
  722. package/.next/static/chunks/app/api/voice/realtime/tool-result/route-ac9aed5c6e27d434.js +1 -0
  723. package/.next/static/chunks/app/api/voice/realtime/tools/route-ac9aed5c6e27d434.js +1 -0
  724. package/.next/static/chunks/app/api/voice/tts/route-ac9aed5c6e27d434.js +1 -0
  725. package/.next/static/chunks/app/api/whatsapp/allowlist/route-ac9aed5c6e27d434.js +1 -0
  726. package/.next/static/chunks/app/api/whatsapp/disconnect/route-ac9aed5c6e27d434.js +1 -0
  727. package/.next/static/chunks/app/api/whatsapp/messages/route-ac9aed5c6e27d434.js +1 -0
  728. package/.next/static/chunks/app/api/whatsapp/qr/route-ac9aed5c6e27d434.js +1 -0
  729. package/.next/static/chunks/app/api/whatsapp/send/route-ac9aed5c6e27d434.js +1 -0
  730. package/.next/static/chunks/app/api/whatsapp/status/route-ac9aed5c6e27d434.js +1 -0
  731. package/.next/static/chunks/app/approvals/loading-ac9aed5c6e27d434.js +1 -0
  732. package/.next/static/chunks/app/architecture/loading-ac9aed5c6e27d434.js +1 -0
  733. package/.next/static/chunks/app/audit/loading-ac9aed5c6e27d434.js +1 -0
  734. package/.next/static/chunks/app/brand/loading-ac9aed5c6e27d434.js +1 -0
  735. package/.next/static/chunks/app/disk/loading-ac9aed5c6e27d434.js +1 -0
  736. package/.next/static/chunks/app/federated-ai/loading-ac9aed5c6e27d434.js +1 -0
  737. package/.next/static/chunks/app/help/loading-ac9aed5c6e27d434.js +1 -0
  738. package/.next/static/chunks/app/layout-eaed78b7751b2b5b.js +1 -0
  739. package/.next/static/chunks/app/loading-ac9aed5c6e27d434.js +1 -0
  740. package/.next/static/chunks/app/login/page-a2344c0b1ef6d31a.js +1 -0
  741. package/.next/static/chunks/app/marketplace/loading-ac9aed5c6e27d434.js +1 -0
  742. package/.next/static/chunks/app/marketplace/page-0b7d3a6309302de3.js +1 -0
  743. package/.next/static/chunks/app/missions/loading-ac9aed5c6e27d434.js +1 -0
  744. package/.next/static/chunks/app/onboarding/loading-ac9aed5c6e27d434.js +1 -0
  745. package/.next/static/chunks/app/org/loading-ac9aed5c6e27d434.js +1 -0
  746. package/.next/static/chunks/app/page-a716d81055cfaa16.js +1 -0
  747. package/.next/static/chunks/app/projects/[slug]/loading-ac9aed5c6e27d434.js +1 -0
  748. package/.next/static/chunks/app/projects/loading-ac9aed5c6e27d434.js +1 -0
  749. package/.next/static/chunks/app/projects/page-8c8e47863c240ec7.js +1 -0
  750. package/.next/static/chunks/app/reports/[file]/route-ac9aed5c6e27d434.js +1 -0
  751. package/.next/static/chunks/app/reports/loading-ac9aed5c6e27d434.js +1 -0
  752. package/.next/static/chunks/app/runtime/loading-ac9aed5c6e27d434.js +1 -0
  753. package/.next/static/chunks/app/schedules/loading-ac9aed5c6e27d434.js +1 -0
  754. package/.next/static/chunks/app/settings/layout-08f6b30132b26dd1.js +1 -0
  755. package/.next/static/chunks/app/settings/loading-ac9aed5c6e27d434.js +1 -0
  756. package/.next/static/chunks/app/settings/page-ac9aed5c6e27d434.js +1 -0
  757. package/.next/static/chunks/app/settings/team/page-9a2e675124de6aac.js +1 -0
  758. package/.next/static/chunks/app/tasks/[id]/loading-ac9aed5c6e27d434.js +1 -0
  759. package/.next/static/chunks/app/tasks/loading-ac9aed5c6e27d434.js +1 -0
  760. package/.next/static/chunks/app/tools/loading-ac9aed5c6e27d434.js +1 -0
  761. package/.next/static/chunks/app/tools/page-ac9aed5c6e27d434.js +1 -0
  762. package/.next/static/chunks/app/whatsapp/loading-ac9aed5c6e27d434.js +1 -0
  763. package/.next/static/chunks/app/workflows/share/[caseId]/page-ac9aed5c6e27d434.js +1 -0
  764. package/.next/static/css/3d77d4b95ab1c602.css +1 -0
  765. package/.next/static/rhk5TnKsJ_4Rj__U8e3JH/_buildManifest.js +1 -0
  766. package/CHANGELOG.md +26 -0
  767. package/app/agents/[id]/agent-activity-feed.tsx +96 -0
  768. package/app/agents/[id]/agent-detail-simple.tsx +71 -83
  769. package/app/agents/[id]/agent-quick-controls.tsx +497 -0
  770. package/app/agents/[id]/page.js +90 -2
  771. package/app/api/brand/share/route.js +147 -0
  772. package/app/api/connections/[service]/verify/route.js +17 -2
  773. package/app/brand/page.js +131 -0
  774. package/app/components/dashboard/chat-panel.jsx +121 -28
  775. package/app/components/ui/button.tsx +56 -0
  776. package/app/components/ui/prompt-input.tsx +1 -0
  777. package/app/components/ui/sidebar-avatar.jsx +78 -0
  778. package/app/components/ui/sidebar-with-submenu.jsx +5 -12
  779. package/app/components/ui/textarea.tsx +24 -0
  780. package/app/components/ui/tooltip.tsx +1 -0
  781. package/app/globals.css +422 -45
  782. package/app/login/login-client.jsx +198 -85
  783. package/app/login/page.js +1 -0
  784. package/lib/agent-templates.js +12 -0
  785. package/lib/artifact-format.js +22 -4
  786. package/lib/connection-grant.js +106 -0
  787. package/lib/connection-seeds.js +126 -0
  788. package/lib/connections/health-check-verify.js +114 -0
  789. package/lib/connections/manifest-validator.js +161 -0
  790. package/lib/marketplace-modules.js +45 -0
  791. package/lib/marketplace-seeds.js +105 -0
  792. package/lib/marketplace.js +1 -0
  793. package/lib/oauth/flow.js +204 -0
  794. package/lib/oauth/provider-registry.js +102 -0
  795. package/lib/runtime.js +74 -1
  796. package/lib/schema.js +43 -0
  797. package/lib/shared-cloud.js +250 -0
  798. package/lib/tools/adapters/http-api-call.js +92 -28
  799. package/lib/tools/connectors/connector-validator.js +27 -1
  800. package/package.json +1 -1
  801. package/.next/standalone/.next/server/chunks/1887.js +0 -2
  802. package/.next/standalone/.next/server/chunks/3711.js +0 -1
  803. package/.next/standalone/.next/server/chunks/6098.js +0 -1
  804. package/.next/standalone/.next/server/chunks/9801.js +0 -1
  805. package/.next/standalone/.next/static/JcJc6PlL89SQvtZvP-LnU/_buildManifest.js +0 -1
  806. package/.next/standalone/.next/static/chunks/566-cec91060c32a22d6.js +0 -1
  807. package/.next/standalone/.next/static/chunks/9077-f54ea987eb597e43.js +0 -1
  808. package/.next/standalone/.next/static/chunks/app/activity/loading-c619e04ba7b0ad20.js +0 -1
  809. package/.next/standalone/.next/static/chunks/app/agents/[id]/loading-c619e04ba7b0ad20.js +0 -1
  810. package/.next/standalone/.next/static/chunks/app/agents/[id]/page-66477263de089865.js +0 -1
  811. package/.next/standalone/.next/static/chunks/app/agents/loading-c619e04ba7b0ad20.js +0 -1
  812. package/.next/standalone/.next/static/chunks/app/agents/page-64d6bdc6ba3ad4d7.js +0 -1
  813. package/.next/standalone/.next/static/chunks/app/api/activity/route-c619e04ba7b0ad20.js +0 -1
  814. package/.next/standalone/.next/static/chunks/app/api/admin/audit-export/route-c619e04ba7b0ad20.js +0 -1
  815. package/.next/standalone/.next/static/chunks/app/api/admin/share-links/route-c619e04ba7b0ad20.js +0 -1
  816. package/.next/standalone/.next/static/chunks/app/api/agent-memory/route-c619e04ba7b0ad20.js +0 -1
  817. package/.next/standalone/.next/static/chunks/app/api/agent-runs/[id]/cancel/route-c619e04ba7b0ad20.js +0 -1
  818. package/.next/standalone/.next/static/chunks/app/api/agent-runs/[id]/events/route-c619e04ba7b0ad20.js +0 -1
  819. package/.next/standalone/.next/static/chunks/app/api/agent-runs/[id]/log/route-c619e04ba7b0ad20.js +0 -1
  820. package/.next/standalone/.next/static/chunks/app/api/agent-runs/[id]/route-c619e04ba7b0ad20.js +0 -1
  821. package/.next/standalone/.next/static/chunks/app/api/agent-runs/route-c619e04ba7b0ad20.js +0 -1
  822. package/.next/standalone/.next/static/chunks/app/api/agents/[id]/chain/route-c619e04ba7b0ad20.js +0 -1
  823. package/.next/standalone/.next/static/chunks/app/api/agents/[id]/memory/route-c619e04ba7b0ad20.js +0 -1
  824. package/.next/standalone/.next/static/chunks/app/api/agents/[id]/reports/route-c619e04ba7b0ad20.js +0 -1
  825. package/.next/standalone/.next/static/chunks/app/api/agents/[id]/run/route-c619e04ba7b0ad20.js +0 -1
  826. package/.next/standalone/.next/static/chunks/app/api/agents/[id]/skills/route-c619e04ba7b0ad20.js +0 -1
  827. package/.next/standalone/.next/static/chunks/app/api/agents/create/route-c619e04ba7b0ad20.js +0 -1
  828. package/.next/standalone/.next/static/chunks/app/api/agents/ops/route-c619e04ba7b0ad20.js +0 -1
  829. package/.next/standalone/.next/static/chunks/app/api/approvals/[id]/route-c619e04ba7b0ad20.js +0 -1
  830. package/.next/standalone/.next/static/chunks/app/api/approvals/route-c619e04ba7b0ad20.js +0 -1
  831. package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/acl/route-c619e04ba7b0ad20.js +0 -1
  832. package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/protect/route-c619e04ba7b0ad20.js +0 -1
  833. package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/raw/route-c619e04ba7b0ad20.js +0 -1
  834. package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/route-c619e04ba7b0ad20.js +0 -1
  835. package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/share-link/[linkId]/route-c619e04ba7b0ad20.js +0 -1
  836. package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/share-link/route-c619e04ba7b0ad20.js +0 -1
  837. package/.next/standalone/.next/static/chunks/app/api/artifacts/upload/route-c619e04ba7b0ad20.js +0 -1
  838. package/.next/standalone/.next/static/chunks/app/api/audit/list/route-c619e04ba7b0ad20.js +0 -1
  839. package/.next/standalone/.next/static/chunks/app/api/audit/search/route-c619e04ba7b0ad20.js +0 -1
  840. package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-c619e04ba7b0ad20.js +0 -1
  841. package/.next/standalone/.next/static/chunks/app/api/auth/config/route-c619e04ba7b0ad20.js +0 -1
  842. package/.next/standalone/.next/static/chunks/app/api/auth/join-bootstrap/route-c619e04ba7b0ad20.js +0 -1
  843. package/.next/standalone/.next/static/chunks/app/api/auth/session/route-c619e04ba7b0ad20.js +0 -1
  844. package/.next/standalone/.next/static/chunks/app/api/brand/route-c619e04ba7b0ad20.js +0 -1
  845. package/.next/standalone/.next/static/chunks/app/api/chat/sessions/[id]/route-c619e04ba7b0ad20.js +0 -1
  846. package/.next/standalone/.next/static/chunks/app/api/chat/sessions/route-c619e04ba7b0ad20.js +0 -1
  847. package/.next/standalone/.next/static/chunks/app/api/config/env/route-c619e04ba7b0ad20.js +0 -1
  848. package/.next/standalone/.next/static/chunks/app/api/config/route-c619e04ba7b0ad20.js +0 -1
  849. package/.next/standalone/.next/static/chunks/app/api/connections/[service]/route-c619e04ba7b0ad20.js +0 -1
  850. package/.next/standalone/.next/static/chunks/app/api/connections/[service]/verify/route-c619e04ba7b0ad20.js +0 -1
  851. package/.next/standalone/.next/static/chunks/app/api/connections/route-c619e04ba7b0ad20.js +0 -1
  852. package/.next/standalone/.next/static/chunks/app/api/cron/tick/route-c619e04ba7b0ad20.js +0 -1
  853. package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/[id]/move/route-c619e04ba7b0ad20.js +0 -1
  854. package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/[id]/route-c619e04ba7b0ad20.js +0 -1
  855. package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/[id]/share-link/[linkId]/route-c619e04ba7b0ad20.js +0 -1
  856. package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/[id]/share-link/route-c619e04ba7b0ad20.js +0 -1
  857. package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/import/route-c619e04ba7b0ad20.js +0 -1
  858. package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/route-c619e04ba7b0ad20.js +0 -1
  859. package/.next/standalone/.next/static/chunks/app/api/disk/files/[id]/blob/route-c619e04ba7b0ad20.js +0 -1
  860. package/.next/standalone/.next/static/chunks/app/api/disk/files/[id]/route-c619e04ba7b0ad20.js +0 -1
  861. package/.next/standalone/.next/static/chunks/app/api/disk/files/[id]/transcribe/route-c619e04ba7b0ad20.js +0 -1
  862. package/.next/standalone/.next/static/chunks/app/api/disk/files/route-c619e04ba7b0ad20.js +0 -1
  863. package/.next/standalone/.next/static/chunks/app/api/disk/folders/route-c619e04ba7b0ad20.js +0 -1
  864. package/.next/standalone/.next/static/chunks/app/api/events/since/[cursor]/route-c619e04ba7b0ad20.js +0 -1
  865. package/.next/standalone/.next/static/chunks/app/api/events/stream/route-c619e04ba7b0ad20.js +0 -1
  866. package/.next/standalone/.next/static/chunks/app/api/fs/create-folder/route-c619e04ba7b0ad20.js +0 -1
  867. package/.next/standalone/.next/static/chunks/app/api/fs/pick-folder/route-c619e04ba7b0ad20.js +0 -1
  868. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/blueprint/route-c619e04ba7b0ad20.js +0 -1
  869. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/diagnostic/route-c619e04ba7b0ad20.js +0 -1
  870. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/governance/route-c619e04ba7b0ad20.js +0 -1
  871. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/interview/route-c619e04ba7b0ad20.js +0 -1
  872. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/pilot/route-c619e04ba7b0ad20.js +0 -1
  873. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/quarterly/route-c619e04ba7b0ad20.js +0 -1
  874. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/route-c619e04ba7b0ad20.js +0 -1
  875. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/setup-package/route-c619e04ba7b0ad20.js +0 -1
  876. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/route-c619e04ba7b0ad20.js +0 -1
  877. package/.next/standalone/.next/static/chunks/app/api/hail/interviews/[id]/responses/route-c619e04ba7b0ad20.js +0 -1
  878. package/.next/standalone/.next/static/chunks/app/api/hail/interviews/[id]/route-c619e04ba7b0ad20.js +0 -1
  879. package/.next/standalone/.next/static/chunks/app/api/hail/setup-packages/[id]/apply/route-c619e04ba7b0ad20.js +0 -1
  880. package/.next/standalone/.next/static/chunks/app/api/hail/setup-packages/validate/route-c619e04ba7b0ad20.js +0 -1
  881. package/.next/standalone/.next/static/chunks/app/api/heartbeat/tick/route-c619e04ba7b0ad20.js +0 -1
  882. package/.next/standalone/.next/static/chunks/app/api/heartbeat/worker/route-c619e04ba7b0ad20.js +0 -1
  883. package/.next/standalone/.next/static/chunks/app/api/help/route-c619e04ba7b0ad20.js +0 -1
  884. package/.next/standalone/.next/static/chunks/app/api/hermes/jobs/[id]/events/route-c619e04ba7b0ad20.js +0 -1
  885. package/.next/standalone/.next/static/chunks/app/api/hermes/jobs/[id]/route-c619e04ba7b0ad20.js +0 -1
  886. package/.next/standalone/.next/static/chunks/app/api/hermes/jobs/route-c619e04ba7b0ad20.js +0 -1
  887. package/.next/standalone/.next/static/chunks/app/api/integrations/google/callback/route-c619e04ba7b0ad20.js +0 -1
  888. package/.next/standalone/.next/static/chunks/app/api/integrations/google/oauth/route-c619e04ba7b0ad20.js +0 -1
  889. package/.next/standalone/.next/static/chunks/app/api/marketplace/[id]/route-c619e04ba7b0ad20.js +0 -1
  890. package/.next/standalone/.next/static/chunks/app/api/marketplace/open-design/route-c619e04ba7b0ad20.js +0 -1
  891. package/.next/standalone/.next/static/chunks/app/api/marketplace/route-c619e04ba7b0ad20.js +0 -1
  892. package/.next/standalone/.next/static/chunks/app/api/mines/import-roots/route-c619e04ba7b0ad20.js +0 -1
  893. package/.next/standalone/.next/static/chunks/app/api/mines/portfolio/route-c619e04ba7b0ad20.js +0 -1
  894. package/.next/standalone/.next/static/chunks/app/api/mines/projects/[id]/chunks/route-c619e04ba7b0ad20.js +0 -1
  895. package/.next/standalone/.next/static/chunks/app/api/mines/projects/[id]/diligence/route-c619e04ba7b0ad20.js +0 -1
  896. package/.next/standalone/.next/static/chunks/app/api/mines/projects/[id]/import/route-c619e04ba7b0ad20.js +0 -1
  897. package/.next/standalone/.next/static/chunks/app/api/mines/projects/[id]/publish/route-c619e04ba7b0ad20.js +0 -1
  898. package/.next/standalone/.next/static/chunks/app/api/mines/projects/route-c619e04ba7b0ad20.js +0 -1
  899. package/.next/standalone/.next/static/chunks/app/api/missions/route-c619e04ba7b0ad20.js +0 -1
  900. package/.next/standalone/.next/static/chunks/app/api/models/route-c619e04ba7b0ad20.js +0 -1
  901. package/.next/standalone/.next/static/chunks/app/api/onboarding/blueprint/route-c619e04ba7b0ad20.js +0 -1
  902. package/.next/standalone/.next/static/chunks/app/api/onboarding/launch/route-c619e04ba7b0ad20.js +0 -1
  903. package/.next/standalone/.next/static/chunks/app/api/orchestrator/command/route-c619e04ba7b0ad20.js +0 -1
  904. package/.next/standalone/.next/static/chunks/app/api/orchestrator/stream/route-c619e04ba7b0ad20.js +0 -1
  905. package/.next/standalone/.next/static/chunks/app/api/orchestrator/upload/route-c619e04ba7b0ad20.js +0 -1
  906. package/.next/standalone/.next/static/chunks/app/api/org/route-c619e04ba7b0ad20.js +0 -1
  907. package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/invites/[inviteId]/route-c619e04ba7b0ad20.js +0 -1
  908. package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/invites/route-c619e04ba7b0ad20.js +0 -1
  909. package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/members/[userId]/role/route-c619e04ba7b0ad20.js +0 -1
  910. package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/members/[userId]/route-c619e04ba7b0ad20.js +0 -1
  911. package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/members/route-c619e04ba7b0ad20.js +0 -1
  912. package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/route-c619e04ba7b0ad20.js +0 -1
  913. package/.next/standalone/.next/static/chunks/app/api/orgs/invites/pending/route-c619e04ba7b0ad20.js +0 -1
  914. package/.next/standalone/.next/static/chunks/app/api/orgs/join/route-c619e04ba7b0ad20.js +0 -1
  915. package/.next/standalone/.next/static/chunks/app/api/orgs/join-complete/route-c619e04ba7b0ad20.js +0 -1
  916. package/.next/standalone/.next/static/chunks/app/api/orgs/route-c619e04ba7b0ad20.js +0 -1
  917. package/.next/standalone/.next/static/chunks/app/api/printing-press/clis/route-c619e04ba7b0ad20.js +0 -1
  918. package/.next/standalone/.next/static/chunks/app/api/printing-press/install/route-c619e04ba7b0ad20.js +0 -1
  919. package/.next/standalone/.next/static/chunks/app/api/printing-press/security-mode/route-c619e04ba7b0ad20.js +0 -1
  920. package/.next/standalone/.next/static/chunks/app/api/privacy/config/route-c619e04ba7b0ad20.js +0 -1
  921. package/.next/standalone/.next/static/chunks/app/api/privacy/verify/route-c619e04ba7b0ad20.js +0 -1
  922. package/.next/standalone/.next/static/chunks/app/api/processes/[id]/route-c619e04ba7b0ad20.js +0 -1
  923. package/.next/standalone/.next/static/chunks/app/api/processes/[id]/share-link/route-c619e04ba7b0ad20.js +0 -1
  924. package/.next/standalone/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/override/route-c619e04ba7b0ad20.js +0 -1
  925. package/.next/standalone/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/retry/route-c619e04ba7b0ad20.js +0 -1
  926. package/.next/standalone/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/submit/route-c619e04ba7b0ad20.js +0 -1
  927. package/.next/standalone/.next/static/chunks/app/api/processes/definitions/[slug]/route-c619e04ba7b0ad20.js +0 -1
  928. package/.next/standalone/.next/static/chunks/app/api/processes/definitions/[slug]/settings/route-c619e04ba7b0ad20.js +0 -1
  929. package/.next/standalone/.next/static/chunks/app/api/processes/definitions/route-c619e04ba7b0ad20.js +0 -1
  930. package/.next/standalone/.next/static/chunks/app/api/processes/definitions/validate/route-c619e04ba7b0ad20.js +0 -1
  931. package/.next/standalone/.next/static/chunks/app/api/processes/route-c619e04ba7b0ad20.js +0 -1
  932. package/.next/standalone/.next/static/chunks/app/api/processes/start-and-route/route-c619e04ba7b0ad20.js +0 -1
  933. package/.next/standalone/.next/static/chunks/app/api/projects/[slug]/library/route-c619e04ba7b0ad20.js +0 -1
  934. package/.next/standalone/.next/static/chunks/app/api/projects/[slug]/route-c619e04ba7b0ad20.js +0 -1
  935. package/.next/standalone/.next/static/chunks/app/api/projects/route-c619e04ba7b0ad20.js +0 -1
  936. package/.next/standalone/.next/static/chunks/app/api/runs/approve-claude-run/route-c619e04ba7b0ad20.js +0 -1
  937. package/.next/standalone/.next/static/chunks/app/api/runs/claude-code-dry-run/route-c619e04ba7b0ad20.js +0 -1
  938. package/.next/standalone/.next/static/chunks/app/api/runs/competitor-report/route-c619e04ba7b0ad20.js +0 -1
  939. package/.next/standalone/.next/static/chunks/app/api/runs/engine-ping/route-c619e04ba7b0ad20.js +0 -1
  940. package/.next/standalone/.next/static/chunks/app/api/runs/marketing-plan/route-c619e04ba7b0ad20.js +0 -1
  941. package/.next/standalone/.next/static/chunks/app/api/schedules/upsert/route-c619e04ba7b0ad20.js +0 -1
  942. package/.next/standalone/.next/static/chunks/app/api/secrets/[name]/route-c619e04ba7b0ad20.js +0 -1
  943. package/.next/standalone/.next/static/chunks/app/api/secrets/route-c619e04ba7b0ad20.js +0 -1
  944. package/.next/standalone/.next/static/chunks/app/api/settings/trust-mode/route-c619e04ba7b0ad20.js +0 -1
  945. package/.next/standalone/.next/static/chunks/app/api/share/[token]/otp/route-c619e04ba7b0ad20.js +0 -1
  946. package/.next/standalone/.next/static/chunks/app/api/share/[token]/route-c619e04ba7b0ad20.js +0 -1
  947. package/.next/standalone/.next/static/chunks/app/api/share/[token]/verify/route-c619e04ba7b0ad20.js +0 -1
  948. package/.next/standalone/.next/static/chunks/app/api/share/space/[token]/otp/route-c619e04ba7b0ad20.js +0 -1
  949. package/.next/standalone/.next/static/chunks/app/api/share/space/[token]/route-c619e04ba7b0ad20.js +0 -1
  950. package/.next/standalone/.next/static/chunks/app/api/share/space/[token]/verify/route-c619e04ba7b0ad20.js +0 -1
  951. package/.next/standalone/.next/static/chunks/app/api/shared/spaces/[id]/acl/route-c619e04ba7b0ad20.js +0 -1
  952. package/.next/standalone/.next/static/chunks/app/api/shared/spaces/publish/route-c619e04ba7b0ad20.js +0 -1
  953. package/.next/standalone/.next/static/chunks/app/api/shared/spaces/route-c619e04ba7b0ad20.js +0 -1
  954. package/.next/standalone/.next/static/chunks/app/api/shared/spaces/status/route-c619e04ba7b0ad20.js +0 -1
  955. package/.next/standalone/.next/static/chunks/app/api/shared/spaces/unpublish/route-c619e04ba7b0ad20.js +0 -1
  956. package/.next/standalone/.next/static/chunks/app/api/state/route-c619e04ba7b0ad20.js +0 -1
  957. package/.next/standalone/.next/static/chunks/app/api/system/update/route-c619e04ba7b0ad20.js +0 -1
  958. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/active-run/route-c619e04ba7b0ad20.js +0 -1
  959. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/attachments/route-c619e04ba7b0ad20.js +0 -1
  960. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/checklist/[itemId]/route-c619e04ba7b0ad20.js +0 -1
  961. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/checklist/route-c619e04ba7b0ad20.js +0 -1
  962. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/checkout/route-c619e04ba7b0ad20.js +0 -1
  963. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/children/route-c619e04ba7b0ad20.js +0 -1
  964. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/comments/route-c619e04ba7b0ad20.js +0 -1
  965. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/events/route-c619e04ba7b0ad20.js +0 -1
  966. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/live-runs/route-c619e04ba7b0ad20.js +0 -1
  967. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/release/route-c619e04ba7b0ad20.js +0 -1
  968. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/route-c619e04ba7b0ad20.js +0 -1
  969. package/.next/standalone/.next/static/chunks/app/api/tasks/route-c619e04ba7b0ad20.js +0 -1
  970. package/.next/standalone/.next/static/chunks/app/api/tool-allowlists/[id]/route-c619e04ba7b0ad20.js +0 -1
  971. package/.next/standalone/.next/static/chunks/app/api/tool-allowlists/route-c619e04ba7b0ad20.js +0 -1
  972. package/.next/standalone/.next/static/chunks/app/api/tool-egress/route-c619e04ba7b0ad20.js +0 -1
  973. package/.next/standalone/.next/static/chunks/app/api/tools/[name]/approve/route-c619e04ba7b0ad20.js +0 -1
  974. package/.next/standalone/.next/static/chunks/app/api/tools/[name]/route-c619e04ba7b0ad20.js +0 -1
  975. package/.next/standalone/.next/static/chunks/app/api/tools/route-c619e04ba7b0ad20.js +0 -1
  976. package/.next/standalone/.next/static/chunks/app/api/transcripts/route-c619e04ba7b0ad20.js +0 -1
  977. package/.next/standalone/.next/static/chunks/app/api/voice/providers/route-c619e04ba7b0ad20.js +0 -1
  978. package/.next/standalone/.next/static/chunks/app/api/voice/realtime/context/route-c619e04ba7b0ad20.js +0 -1
  979. package/.next/standalone/.next/static/chunks/app/api/voice/realtime/session/route-c619e04ba7b0ad20.js +0 -1
  980. package/.next/standalone/.next/static/chunks/app/api/voice/realtime/tool-result/route-c619e04ba7b0ad20.js +0 -1
  981. package/.next/standalone/.next/static/chunks/app/api/voice/realtime/tools/route-c619e04ba7b0ad20.js +0 -1
  982. package/.next/standalone/.next/static/chunks/app/api/voice/tts/route-c619e04ba7b0ad20.js +0 -1
  983. package/.next/standalone/.next/static/chunks/app/api/whatsapp/allowlist/route-c619e04ba7b0ad20.js +0 -1
  984. package/.next/standalone/.next/static/chunks/app/api/whatsapp/disconnect/route-c619e04ba7b0ad20.js +0 -1
  985. package/.next/standalone/.next/static/chunks/app/api/whatsapp/messages/route-c619e04ba7b0ad20.js +0 -1
  986. package/.next/standalone/.next/static/chunks/app/api/whatsapp/qr/route-c619e04ba7b0ad20.js +0 -1
  987. package/.next/standalone/.next/static/chunks/app/api/whatsapp/send/route-c619e04ba7b0ad20.js +0 -1
  988. package/.next/standalone/.next/static/chunks/app/api/whatsapp/status/route-c619e04ba7b0ad20.js +0 -1
  989. package/.next/standalone/.next/static/chunks/app/approvals/loading-c619e04ba7b0ad20.js +0 -1
  990. package/.next/standalone/.next/static/chunks/app/architecture/loading-c619e04ba7b0ad20.js +0 -1
  991. package/.next/standalone/.next/static/chunks/app/audit/loading-c619e04ba7b0ad20.js +0 -1
  992. package/.next/standalone/.next/static/chunks/app/brand/loading-c619e04ba7b0ad20.js +0 -1
  993. package/.next/standalone/.next/static/chunks/app/disk/loading-c619e04ba7b0ad20.js +0 -1
  994. package/.next/standalone/.next/static/chunks/app/federated-ai/loading-c619e04ba7b0ad20.js +0 -1
  995. package/.next/standalone/.next/static/chunks/app/help/loading-c619e04ba7b0ad20.js +0 -1
  996. package/.next/standalone/.next/static/chunks/app/layout-1c06759f770a8768.js +0 -1
  997. package/.next/standalone/.next/static/chunks/app/loading-c619e04ba7b0ad20.js +0 -1
  998. package/.next/standalone/.next/static/chunks/app/login/page-40932c4c23cafee8.js +0 -1
  999. package/.next/standalone/.next/static/chunks/app/marketplace/loading-c619e04ba7b0ad20.js +0 -1
  1000. package/.next/standalone/.next/static/chunks/app/marketplace/page-45c6d49f8eddad67.js +0 -1
  1001. package/.next/standalone/.next/static/chunks/app/missions/loading-c619e04ba7b0ad20.js +0 -1
  1002. package/.next/standalone/.next/static/chunks/app/onboarding/loading-c619e04ba7b0ad20.js +0 -1
  1003. package/.next/standalone/.next/static/chunks/app/org/loading-c619e04ba7b0ad20.js +0 -1
  1004. package/.next/standalone/.next/static/chunks/app/page-5c57989fbbcbbf3d.js +0 -1
  1005. package/.next/standalone/.next/static/chunks/app/projects/[slug]/loading-c619e04ba7b0ad20.js +0 -1
  1006. package/.next/standalone/.next/static/chunks/app/projects/loading-c619e04ba7b0ad20.js +0 -1
  1007. package/.next/standalone/.next/static/chunks/app/projects/page-15a7a85fa216b575.js +0 -1
  1008. package/.next/standalone/.next/static/chunks/app/reports/[file]/route-c619e04ba7b0ad20.js +0 -1
  1009. package/.next/standalone/.next/static/chunks/app/reports/loading-c619e04ba7b0ad20.js +0 -1
  1010. package/.next/standalone/.next/static/chunks/app/runtime/loading-c619e04ba7b0ad20.js +0 -1
  1011. package/.next/standalone/.next/static/chunks/app/schedules/loading-c619e04ba7b0ad20.js +0 -1
  1012. package/.next/standalone/.next/static/chunks/app/settings/layout-2c1e6807acb6fdad.js +0 -1
  1013. package/.next/standalone/.next/static/chunks/app/settings/loading-c619e04ba7b0ad20.js +0 -1
  1014. package/.next/standalone/.next/static/chunks/app/settings/page-c619e04ba7b0ad20.js +0 -1
  1015. package/.next/standalone/.next/static/chunks/app/settings/team/page-0aee40dfa9e7a430.js +0 -1
  1016. package/.next/standalone/.next/static/chunks/app/tasks/[id]/loading-c619e04ba7b0ad20.js +0 -1
  1017. package/.next/standalone/.next/static/chunks/app/tasks/loading-c619e04ba7b0ad20.js +0 -1
  1018. package/.next/standalone/.next/static/chunks/app/tools/loading-c619e04ba7b0ad20.js +0 -1
  1019. package/.next/standalone/.next/static/chunks/app/tools/page-c619e04ba7b0ad20.js +0 -1
  1020. package/.next/standalone/.next/static/chunks/app/whatsapp/loading-c619e04ba7b0ad20.js +0 -1
  1021. package/.next/standalone/.next/static/chunks/app/workflows/share/[caseId]/page-c619e04ba7b0ad20.js +0 -1
  1022. package/.next/standalone/.next/static/css/65c472079b6fd086.css +0 -1
  1023. package/.next/static/JcJc6PlL89SQvtZvP-LnU/_buildManifest.js +0 -1
  1024. package/.next/static/chunks/566-cec91060c32a22d6.js +0 -1
  1025. package/.next/static/chunks/9077-f54ea987eb597e43.js +0 -1
  1026. package/.next/static/chunks/app/activity/loading-c619e04ba7b0ad20.js +0 -1
  1027. package/.next/static/chunks/app/agents/[id]/loading-c619e04ba7b0ad20.js +0 -1
  1028. package/.next/static/chunks/app/agents/[id]/page-66477263de089865.js +0 -1
  1029. package/.next/static/chunks/app/agents/loading-c619e04ba7b0ad20.js +0 -1
  1030. package/.next/static/chunks/app/agents/page-64d6bdc6ba3ad4d7.js +0 -1
  1031. package/.next/static/chunks/app/api/activity/route-c619e04ba7b0ad20.js +0 -1
  1032. package/.next/static/chunks/app/api/admin/audit-export/route-c619e04ba7b0ad20.js +0 -1
  1033. package/.next/static/chunks/app/api/admin/share-links/route-c619e04ba7b0ad20.js +0 -1
  1034. package/.next/static/chunks/app/api/agent-memory/route-c619e04ba7b0ad20.js +0 -1
  1035. package/.next/static/chunks/app/api/agent-runs/[id]/cancel/route-c619e04ba7b0ad20.js +0 -1
  1036. package/.next/static/chunks/app/api/agent-runs/[id]/events/route-c619e04ba7b0ad20.js +0 -1
  1037. package/.next/static/chunks/app/api/agent-runs/[id]/log/route-c619e04ba7b0ad20.js +0 -1
  1038. package/.next/static/chunks/app/api/agent-runs/[id]/route-c619e04ba7b0ad20.js +0 -1
  1039. package/.next/static/chunks/app/api/agent-runs/route-c619e04ba7b0ad20.js +0 -1
  1040. package/.next/static/chunks/app/api/agents/[id]/chain/route-c619e04ba7b0ad20.js +0 -1
  1041. package/.next/static/chunks/app/api/agents/[id]/memory/route-c619e04ba7b0ad20.js +0 -1
  1042. package/.next/static/chunks/app/api/agents/[id]/reports/route-c619e04ba7b0ad20.js +0 -1
  1043. package/.next/static/chunks/app/api/agents/[id]/run/route-c619e04ba7b0ad20.js +0 -1
  1044. package/.next/static/chunks/app/api/agents/[id]/skills/route-c619e04ba7b0ad20.js +0 -1
  1045. package/.next/static/chunks/app/api/agents/create/route-c619e04ba7b0ad20.js +0 -1
  1046. package/.next/static/chunks/app/api/agents/ops/route-c619e04ba7b0ad20.js +0 -1
  1047. package/.next/static/chunks/app/api/approvals/[id]/route-c619e04ba7b0ad20.js +0 -1
  1048. package/.next/static/chunks/app/api/approvals/route-c619e04ba7b0ad20.js +0 -1
  1049. package/.next/static/chunks/app/api/artifacts/[id]/acl/route-c619e04ba7b0ad20.js +0 -1
  1050. package/.next/static/chunks/app/api/artifacts/[id]/protect/route-c619e04ba7b0ad20.js +0 -1
  1051. package/.next/static/chunks/app/api/artifacts/[id]/raw/route-c619e04ba7b0ad20.js +0 -1
  1052. package/.next/static/chunks/app/api/artifacts/[id]/route-c619e04ba7b0ad20.js +0 -1
  1053. package/.next/static/chunks/app/api/artifacts/[id]/share-link/[linkId]/route-c619e04ba7b0ad20.js +0 -1
  1054. package/.next/static/chunks/app/api/artifacts/[id]/share-link/route-c619e04ba7b0ad20.js +0 -1
  1055. package/.next/static/chunks/app/api/artifacts/upload/route-c619e04ba7b0ad20.js +0 -1
  1056. package/.next/static/chunks/app/api/audit/list/route-c619e04ba7b0ad20.js +0 -1
  1057. package/.next/static/chunks/app/api/audit/search/route-c619e04ba7b0ad20.js +0 -1
  1058. package/.next/static/chunks/app/api/auth/callback/route-c619e04ba7b0ad20.js +0 -1
  1059. package/.next/static/chunks/app/api/auth/config/route-c619e04ba7b0ad20.js +0 -1
  1060. package/.next/static/chunks/app/api/auth/join-bootstrap/route-c619e04ba7b0ad20.js +0 -1
  1061. package/.next/static/chunks/app/api/auth/session/route-c619e04ba7b0ad20.js +0 -1
  1062. package/.next/static/chunks/app/api/brand/route-c619e04ba7b0ad20.js +0 -1
  1063. package/.next/static/chunks/app/api/chat/sessions/[id]/route-c619e04ba7b0ad20.js +0 -1
  1064. package/.next/static/chunks/app/api/chat/sessions/route-c619e04ba7b0ad20.js +0 -1
  1065. package/.next/static/chunks/app/api/config/env/route-c619e04ba7b0ad20.js +0 -1
  1066. package/.next/static/chunks/app/api/config/route-c619e04ba7b0ad20.js +0 -1
  1067. package/.next/static/chunks/app/api/connections/[service]/route-c619e04ba7b0ad20.js +0 -1
  1068. package/.next/static/chunks/app/api/connections/[service]/verify/route-c619e04ba7b0ad20.js +0 -1
  1069. package/.next/static/chunks/app/api/connections/route-c619e04ba7b0ad20.js +0 -1
  1070. package/.next/static/chunks/app/api/cron/tick/route-c619e04ba7b0ad20.js +0 -1
  1071. package/.next/static/chunks/app/api/dashboard/spaces/[id]/move/route-c619e04ba7b0ad20.js +0 -1
  1072. package/.next/static/chunks/app/api/dashboard/spaces/[id]/route-c619e04ba7b0ad20.js +0 -1
  1073. package/.next/static/chunks/app/api/dashboard/spaces/[id]/share-link/[linkId]/route-c619e04ba7b0ad20.js +0 -1
  1074. package/.next/static/chunks/app/api/dashboard/spaces/[id]/share-link/route-c619e04ba7b0ad20.js +0 -1
  1075. package/.next/static/chunks/app/api/dashboard/spaces/import/route-c619e04ba7b0ad20.js +0 -1
  1076. package/.next/static/chunks/app/api/dashboard/spaces/route-c619e04ba7b0ad20.js +0 -1
  1077. package/.next/static/chunks/app/api/disk/files/[id]/blob/route-c619e04ba7b0ad20.js +0 -1
  1078. package/.next/static/chunks/app/api/disk/files/[id]/route-c619e04ba7b0ad20.js +0 -1
  1079. package/.next/static/chunks/app/api/disk/files/[id]/transcribe/route-c619e04ba7b0ad20.js +0 -1
  1080. package/.next/static/chunks/app/api/disk/files/route-c619e04ba7b0ad20.js +0 -1
  1081. package/.next/static/chunks/app/api/disk/folders/route-c619e04ba7b0ad20.js +0 -1
  1082. package/.next/static/chunks/app/api/events/since/[cursor]/route-c619e04ba7b0ad20.js +0 -1
  1083. package/.next/static/chunks/app/api/events/stream/route-c619e04ba7b0ad20.js +0 -1
  1084. package/.next/static/chunks/app/api/fs/create-folder/route-c619e04ba7b0ad20.js +0 -1
  1085. package/.next/static/chunks/app/api/fs/pick-folder/route-c619e04ba7b0ad20.js +0 -1
  1086. package/.next/static/chunks/app/api/hail/engagements/[id]/blueprint/route-c619e04ba7b0ad20.js +0 -1
  1087. package/.next/static/chunks/app/api/hail/engagements/[id]/diagnostic/route-c619e04ba7b0ad20.js +0 -1
  1088. package/.next/static/chunks/app/api/hail/engagements/[id]/governance/route-c619e04ba7b0ad20.js +0 -1
  1089. package/.next/static/chunks/app/api/hail/engagements/[id]/interview/route-c619e04ba7b0ad20.js +0 -1
  1090. package/.next/static/chunks/app/api/hail/engagements/[id]/pilot/route-c619e04ba7b0ad20.js +0 -1
  1091. package/.next/static/chunks/app/api/hail/engagements/[id]/quarterly/route-c619e04ba7b0ad20.js +0 -1
  1092. package/.next/static/chunks/app/api/hail/engagements/[id]/route-c619e04ba7b0ad20.js +0 -1
  1093. package/.next/static/chunks/app/api/hail/engagements/[id]/setup-package/route-c619e04ba7b0ad20.js +0 -1
  1094. package/.next/static/chunks/app/api/hail/engagements/route-c619e04ba7b0ad20.js +0 -1
  1095. package/.next/static/chunks/app/api/hail/interviews/[id]/responses/route-c619e04ba7b0ad20.js +0 -1
  1096. package/.next/static/chunks/app/api/hail/interviews/[id]/route-c619e04ba7b0ad20.js +0 -1
  1097. package/.next/static/chunks/app/api/hail/setup-packages/[id]/apply/route-c619e04ba7b0ad20.js +0 -1
  1098. package/.next/static/chunks/app/api/hail/setup-packages/validate/route-c619e04ba7b0ad20.js +0 -1
  1099. package/.next/static/chunks/app/api/heartbeat/tick/route-c619e04ba7b0ad20.js +0 -1
  1100. package/.next/static/chunks/app/api/heartbeat/worker/route-c619e04ba7b0ad20.js +0 -1
  1101. package/.next/static/chunks/app/api/help/route-c619e04ba7b0ad20.js +0 -1
  1102. package/.next/static/chunks/app/api/hermes/jobs/[id]/events/route-c619e04ba7b0ad20.js +0 -1
  1103. package/.next/static/chunks/app/api/hermes/jobs/[id]/route-c619e04ba7b0ad20.js +0 -1
  1104. package/.next/static/chunks/app/api/hermes/jobs/route-c619e04ba7b0ad20.js +0 -1
  1105. package/.next/static/chunks/app/api/integrations/google/callback/route-c619e04ba7b0ad20.js +0 -1
  1106. package/.next/static/chunks/app/api/integrations/google/oauth/route-c619e04ba7b0ad20.js +0 -1
  1107. package/.next/static/chunks/app/api/marketplace/[id]/route-c619e04ba7b0ad20.js +0 -1
  1108. package/.next/static/chunks/app/api/marketplace/open-design/route-c619e04ba7b0ad20.js +0 -1
  1109. package/.next/static/chunks/app/api/marketplace/route-c619e04ba7b0ad20.js +0 -1
  1110. package/.next/static/chunks/app/api/mines/import-roots/route-c619e04ba7b0ad20.js +0 -1
  1111. package/.next/static/chunks/app/api/mines/portfolio/route-c619e04ba7b0ad20.js +0 -1
  1112. package/.next/static/chunks/app/api/mines/projects/[id]/chunks/route-c619e04ba7b0ad20.js +0 -1
  1113. package/.next/static/chunks/app/api/mines/projects/[id]/diligence/route-c619e04ba7b0ad20.js +0 -1
  1114. package/.next/static/chunks/app/api/mines/projects/[id]/import/route-c619e04ba7b0ad20.js +0 -1
  1115. package/.next/static/chunks/app/api/mines/projects/[id]/publish/route-c619e04ba7b0ad20.js +0 -1
  1116. package/.next/static/chunks/app/api/mines/projects/route-c619e04ba7b0ad20.js +0 -1
  1117. package/.next/static/chunks/app/api/missions/route-c619e04ba7b0ad20.js +0 -1
  1118. package/.next/static/chunks/app/api/models/route-c619e04ba7b0ad20.js +0 -1
  1119. package/.next/static/chunks/app/api/onboarding/blueprint/route-c619e04ba7b0ad20.js +0 -1
  1120. package/.next/static/chunks/app/api/onboarding/launch/route-c619e04ba7b0ad20.js +0 -1
  1121. package/.next/static/chunks/app/api/orchestrator/command/route-c619e04ba7b0ad20.js +0 -1
  1122. package/.next/static/chunks/app/api/orchestrator/stream/route-c619e04ba7b0ad20.js +0 -1
  1123. package/.next/static/chunks/app/api/orchestrator/upload/route-c619e04ba7b0ad20.js +0 -1
  1124. package/.next/static/chunks/app/api/org/route-c619e04ba7b0ad20.js +0 -1
  1125. package/.next/static/chunks/app/api/orgs/[id]/invites/[inviteId]/route-c619e04ba7b0ad20.js +0 -1
  1126. package/.next/static/chunks/app/api/orgs/[id]/invites/route-c619e04ba7b0ad20.js +0 -1
  1127. package/.next/static/chunks/app/api/orgs/[id]/members/[userId]/role/route-c619e04ba7b0ad20.js +0 -1
  1128. package/.next/static/chunks/app/api/orgs/[id]/members/[userId]/route-c619e04ba7b0ad20.js +0 -1
  1129. package/.next/static/chunks/app/api/orgs/[id]/members/route-c619e04ba7b0ad20.js +0 -1
  1130. package/.next/static/chunks/app/api/orgs/[id]/route-c619e04ba7b0ad20.js +0 -1
  1131. package/.next/static/chunks/app/api/orgs/invites/pending/route-c619e04ba7b0ad20.js +0 -1
  1132. package/.next/static/chunks/app/api/orgs/join/route-c619e04ba7b0ad20.js +0 -1
  1133. package/.next/static/chunks/app/api/orgs/join-complete/route-c619e04ba7b0ad20.js +0 -1
  1134. package/.next/static/chunks/app/api/orgs/route-c619e04ba7b0ad20.js +0 -1
  1135. package/.next/static/chunks/app/api/printing-press/clis/route-c619e04ba7b0ad20.js +0 -1
  1136. package/.next/static/chunks/app/api/printing-press/install/route-c619e04ba7b0ad20.js +0 -1
  1137. package/.next/static/chunks/app/api/printing-press/security-mode/route-c619e04ba7b0ad20.js +0 -1
  1138. package/.next/static/chunks/app/api/privacy/config/route-c619e04ba7b0ad20.js +0 -1
  1139. package/.next/static/chunks/app/api/privacy/verify/route-c619e04ba7b0ad20.js +0 -1
  1140. package/.next/static/chunks/app/api/processes/[id]/route-c619e04ba7b0ad20.js +0 -1
  1141. package/.next/static/chunks/app/api/processes/[id]/share-link/route-c619e04ba7b0ad20.js +0 -1
  1142. package/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/override/route-c619e04ba7b0ad20.js +0 -1
  1143. package/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/retry/route-c619e04ba7b0ad20.js +0 -1
  1144. package/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/submit/route-c619e04ba7b0ad20.js +0 -1
  1145. package/.next/static/chunks/app/api/processes/definitions/[slug]/route-c619e04ba7b0ad20.js +0 -1
  1146. package/.next/static/chunks/app/api/processes/definitions/[slug]/settings/route-c619e04ba7b0ad20.js +0 -1
  1147. package/.next/static/chunks/app/api/processes/definitions/route-c619e04ba7b0ad20.js +0 -1
  1148. package/.next/static/chunks/app/api/processes/definitions/validate/route-c619e04ba7b0ad20.js +0 -1
  1149. package/.next/static/chunks/app/api/processes/route-c619e04ba7b0ad20.js +0 -1
  1150. package/.next/static/chunks/app/api/processes/start-and-route/route-c619e04ba7b0ad20.js +0 -1
  1151. package/.next/static/chunks/app/api/projects/[slug]/library/route-c619e04ba7b0ad20.js +0 -1
  1152. package/.next/static/chunks/app/api/projects/[slug]/route-c619e04ba7b0ad20.js +0 -1
  1153. package/.next/static/chunks/app/api/projects/route-c619e04ba7b0ad20.js +0 -1
  1154. package/.next/static/chunks/app/api/runs/approve-claude-run/route-c619e04ba7b0ad20.js +0 -1
  1155. package/.next/static/chunks/app/api/runs/claude-code-dry-run/route-c619e04ba7b0ad20.js +0 -1
  1156. package/.next/static/chunks/app/api/runs/competitor-report/route-c619e04ba7b0ad20.js +0 -1
  1157. package/.next/static/chunks/app/api/runs/engine-ping/route-c619e04ba7b0ad20.js +0 -1
  1158. package/.next/static/chunks/app/api/runs/marketing-plan/route-c619e04ba7b0ad20.js +0 -1
  1159. package/.next/static/chunks/app/api/schedules/upsert/route-c619e04ba7b0ad20.js +0 -1
  1160. package/.next/static/chunks/app/api/secrets/[name]/route-c619e04ba7b0ad20.js +0 -1
  1161. package/.next/static/chunks/app/api/secrets/route-c619e04ba7b0ad20.js +0 -1
  1162. package/.next/static/chunks/app/api/settings/trust-mode/route-c619e04ba7b0ad20.js +0 -1
  1163. package/.next/static/chunks/app/api/share/[token]/otp/route-c619e04ba7b0ad20.js +0 -1
  1164. package/.next/static/chunks/app/api/share/[token]/route-c619e04ba7b0ad20.js +0 -1
  1165. package/.next/static/chunks/app/api/share/[token]/verify/route-c619e04ba7b0ad20.js +0 -1
  1166. package/.next/static/chunks/app/api/share/space/[token]/otp/route-c619e04ba7b0ad20.js +0 -1
  1167. package/.next/static/chunks/app/api/share/space/[token]/route-c619e04ba7b0ad20.js +0 -1
  1168. package/.next/static/chunks/app/api/share/space/[token]/verify/route-c619e04ba7b0ad20.js +0 -1
  1169. package/.next/static/chunks/app/api/shared/spaces/[id]/acl/route-c619e04ba7b0ad20.js +0 -1
  1170. package/.next/static/chunks/app/api/shared/spaces/publish/route-c619e04ba7b0ad20.js +0 -1
  1171. package/.next/static/chunks/app/api/shared/spaces/route-c619e04ba7b0ad20.js +0 -1
  1172. package/.next/static/chunks/app/api/shared/spaces/status/route-c619e04ba7b0ad20.js +0 -1
  1173. package/.next/static/chunks/app/api/shared/spaces/unpublish/route-c619e04ba7b0ad20.js +0 -1
  1174. package/.next/static/chunks/app/api/state/route-c619e04ba7b0ad20.js +0 -1
  1175. package/.next/static/chunks/app/api/system/update/route-c619e04ba7b0ad20.js +0 -1
  1176. package/.next/static/chunks/app/api/tasks/[id]/active-run/route-c619e04ba7b0ad20.js +0 -1
  1177. package/.next/static/chunks/app/api/tasks/[id]/attachments/route-c619e04ba7b0ad20.js +0 -1
  1178. package/.next/static/chunks/app/api/tasks/[id]/checklist/[itemId]/route-c619e04ba7b0ad20.js +0 -1
  1179. package/.next/static/chunks/app/api/tasks/[id]/checklist/route-c619e04ba7b0ad20.js +0 -1
  1180. package/.next/static/chunks/app/api/tasks/[id]/checkout/route-c619e04ba7b0ad20.js +0 -1
  1181. package/.next/static/chunks/app/api/tasks/[id]/children/route-c619e04ba7b0ad20.js +0 -1
  1182. package/.next/static/chunks/app/api/tasks/[id]/comments/route-c619e04ba7b0ad20.js +0 -1
  1183. package/.next/static/chunks/app/api/tasks/[id]/events/route-c619e04ba7b0ad20.js +0 -1
  1184. package/.next/static/chunks/app/api/tasks/[id]/live-runs/route-c619e04ba7b0ad20.js +0 -1
  1185. package/.next/static/chunks/app/api/tasks/[id]/release/route-c619e04ba7b0ad20.js +0 -1
  1186. package/.next/static/chunks/app/api/tasks/[id]/route-c619e04ba7b0ad20.js +0 -1
  1187. package/.next/static/chunks/app/api/tasks/route-c619e04ba7b0ad20.js +0 -1
  1188. package/.next/static/chunks/app/api/tool-allowlists/[id]/route-c619e04ba7b0ad20.js +0 -1
  1189. package/.next/static/chunks/app/api/tool-allowlists/route-c619e04ba7b0ad20.js +0 -1
  1190. package/.next/static/chunks/app/api/tool-egress/route-c619e04ba7b0ad20.js +0 -1
  1191. package/.next/static/chunks/app/api/tools/[name]/approve/route-c619e04ba7b0ad20.js +0 -1
  1192. package/.next/static/chunks/app/api/tools/[name]/route-c619e04ba7b0ad20.js +0 -1
  1193. package/.next/static/chunks/app/api/tools/route-c619e04ba7b0ad20.js +0 -1
  1194. package/.next/static/chunks/app/api/transcripts/route-c619e04ba7b0ad20.js +0 -1
  1195. package/.next/static/chunks/app/api/voice/providers/route-c619e04ba7b0ad20.js +0 -1
  1196. package/.next/static/chunks/app/api/voice/realtime/context/route-c619e04ba7b0ad20.js +0 -1
  1197. package/.next/static/chunks/app/api/voice/realtime/session/route-c619e04ba7b0ad20.js +0 -1
  1198. package/.next/static/chunks/app/api/voice/realtime/tool-result/route-c619e04ba7b0ad20.js +0 -1
  1199. package/.next/static/chunks/app/api/voice/realtime/tools/route-c619e04ba7b0ad20.js +0 -1
  1200. package/.next/static/chunks/app/api/voice/tts/route-c619e04ba7b0ad20.js +0 -1
  1201. package/.next/static/chunks/app/api/whatsapp/allowlist/route-c619e04ba7b0ad20.js +0 -1
  1202. package/.next/static/chunks/app/api/whatsapp/disconnect/route-c619e04ba7b0ad20.js +0 -1
  1203. package/.next/static/chunks/app/api/whatsapp/messages/route-c619e04ba7b0ad20.js +0 -1
  1204. package/.next/static/chunks/app/api/whatsapp/qr/route-c619e04ba7b0ad20.js +0 -1
  1205. package/.next/static/chunks/app/api/whatsapp/send/route-c619e04ba7b0ad20.js +0 -1
  1206. package/.next/static/chunks/app/api/whatsapp/status/route-c619e04ba7b0ad20.js +0 -1
  1207. package/.next/static/chunks/app/approvals/loading-c619e04ba7b0ad20.js +0 -1
  1208. package/.next/static/chunks/app/architecture/loading-c619e04ba7b0ad20.js +0 -1
  1209. package/.next/static/chunks/app/audit/loading-c619e04ba7b0ad20.js +0 -1
  1210. package/.next/static/chunks/app/brand/loading-c619e04ba7b0ad20.js +0 -1
  1211. package/.next/static/chunks/app/disk/loading-c619e04ba7b0ad20.js +0 -1
  1212. package/.next/static/chunks/app/federated-ai/loading-c619e04ba7b0ad20.js +0 -1
  1213. package/.next/static/chunks/app/help/loading-c619e04ba7b0ad20.js +0 -1
  1214. package/.next/static/chunks/app/layout-1c06759f770a8768.js +0 -1
  1215. package/.next/static/chunks/app/loading-c619e04ba7b0ad20.js +0 -1
  1216. package/.next/static/chunks/app/login/page-40932c4c23cafee8.js +0 -1
  1217. package/.next/static/chunks/app/marketplace/loading-c619e04ba7b0ad20.js +0 -1
  1218. package/.next/static/chunks/app/marketplace/page-45c6d49f8eddad67.js +0 -1
  1219. package/.next/static/chunks/app/missions/loading-c619e04ba7b0ad20.js +0 -1
  1220. package/.next/static/chunks/app/onboarding/loading-c619e04ba7b0ad20.js +0 -1
  1221. package/.next/static/chunks/app/org/loading-c619e04ba7b0ad20.js +0 -1
  1222. package/.next/static/chunks/app/page-5c57989fbbcbbf3d.js +0 -1
  1223. package/.next/static/chunks/app/projects/[slug]/loading-c619e04ba7b0ad20.js +0 -1
  1224. package/.next/static/chunks/app/projects/loading-c619e04ba7b0ad20.js +0 -1
  1225. package/.next/static/chunks/app/projects/page-15a7a85fa216b575.js +0 -1
  1226. package/.next/static/chunks/app/reports/[file]/route-c619e04ba7b0ad20.js +0 -1
  1227. package/.next/static/chunks/app/reports/loading-c619e04ba7b0ad20.js +0 -1
  1228. package/.next/static/chunks/app/runtime/loading-c619e04ba7b0ad20.js +0 -1
  1229. package/.next/static/chunks/app/schedules/loading-c619e04ba7b0ad20.js +0 -1
  1230. package/.next/static/chunks/app/settings/layout-2c1e6807acb6fdad.js +0 -1
  1231. package/.next/static/chunks/app/settings/loading-c619e04ba7b0ad20.js +0 -1
  1232. package/.next/static/chunks/app/settings/page-c619e04ba7b0ad20.js +0 -1
  1233. package/.next/static/chunks/app/settings/team/page-0aee40dfa9e7a430.js +0 -1
  1234. package/.next/static/chunks/app/tasks/[id]/loading-c619e04ba7b0ad20.js +0 -1
  1235. package/.next/static/chunks/app/tasks/loading-c619e04ba7b0ad20.js +0 -1
  1236. package/.next/static/chunks/app/tools/loading-c619e04ba7b0ad20.js +0 -1
  1237. package/.next/static/chunks/app/tools/page-c619e04ba7b0ad20.js +0 -1
  1238. package/.next/static/chunks/app/whatsapp/loading-c619e04ba7b0ad20.js +0 -1
  1239. package/.next/static/chunks/app/workflows/share/[caseId]/page-c619e04ba7b0ad20.js +0 -1
  1240. package/.next/static/css/65c472079b6fd086.css +0 -1
  1241. /package/.next/standalone/.next/static/{JcJc6PlL89SQvtZvP-LnU → rhk5TnKsJ_4Rj__U8e3JH}/_ssgManifest.js +0 -0
  1242. /package/.next/static/{JcJc6PlL89SQvtZvP-LnU → rhk5TnKsJ_4Rj__U8e3JH}/_ssgManifest.js +0 -0
@@ -391,6 +391,7 @@ body {
391
391
  .cl-doc { width: 100%; max-width: 680px; margin: 0 auto; }
392
392
  .cl-mark { display: flex; align-items: center; margin-bottom: clamp(30px, 6vw, 56px); color: var(--cl-fg); }
393
393
  .cl-logo { display: block; flex: none; height: 30px; width: auto; }
394
+ .cl-logo-img { max-width: 220px; object-fit: contain; }
394
395
  .cl-eyebrow {
395
396
  font-family: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
396
397
  font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase;
@@ -492,7 +493,7 @@ body {
492
493
  font-size: 11px; letter-spacing: 0.06em; color: var(--cl-muted);
493
494
  }
494
495
  .cl-foot::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--cl-accent); }
495
- `;function u({version:a,date:b,markdown:c,title:d}={}){let e=(0,h.$F)(),f=function(a){let b=String(a||"").split("\n"),c="",d="",e=[],f=null,g=null,h=()=>{null!=g&&f&&f.items.push(g.join("\n").trim()),g=null};for(let a of b){let b=a.match(/^##\s*\[([^\]]+)\]\s*(?:-\s*(.+))?$/);if(b){c=b[1].trim(),d=(b[2]||"").trim();continue}let i=a.match(/^###\s+(.+?)\s*$/);if(i){h(),f={label:i[1].trim(),items:[]},e.push(f);continue}let j=a.match(/^[-*]\s+(.*)$/);if(j){f||(f={label:"Changes",items:[]},e.push(f)),h(),g=[j[1]];continue}null!=g&&g.push(a.replace(/^\s{0,2}/,""))}return h(),{version:c,date:d,groups:e.filter(a=>a.items.length)}}(c||""),g=(a||f.version||"").replace(/^v/i,""),i=function(a){let b=String(a||"").match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!b)return String(a||"").trim();let c=["January","February","March","April","May","June","July","August","September","October","November","December"],d=parseInt(b[2],10)-1;return c[d]?`${c[d]} ${parseInt(b[3],10)}, ${b[1]}`:a}(b||f.date),j=f.groups,m=e?.company_name||"madarX",n=(e?.colors||[]).map(a=>a?.value).filter(Boolean),o=n[0]||"#0F0F11",p=n[1]||"#E8E8E5",s=q(e?.colors||[],{surface:o,primary:p})||"#C2452A",v=n[3]||"#8A8278",w=n[2]||"#DCDCD8",x="#C2452A",y=`<svg class="cl-logo" viewBox="0 0 360 100" height="30" role="img" aria-label="${l(m)}">
496
+ `;function u({version:a,date:b,markdown:c,title:d}={}){let e=(0,h.$F)(),f=function(a){let b=String(a||"").split("\n"),c="",d="",e=[],f=null,g=null,h=()=>{null!=g&&f&&f.items.push(g.join("\n").trim()),g=null};for(let a of b){let b=a.match(/^##\s*\[([^\]]+)\]\s*(?:-\s*(.+))?$/);if(b){c=b[1].trim(),d=(b[2]||"").trim();continue}let i=a.match(/^###\s+(.+?)\s*$/);if(i){h(),f={label:i[1].trim(),items:[]},e.push(f);continue}let j=a.match(/^[-*]\s+(.*)$/);if(j){f||(f={label:"Changes",items:[]},e.push(f)),h(),g=[j[1]];continue}null!=g&&g.push(a.replace(/^\s{0,2}/,""))}return h(),{version:c,date:d,groups:e.filter(a=>a.items.length)}}(c||""),g=(a||f.version||"").replace(/^v/i,""),i=function(a){let b=String(a||"").match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!b)return String(a||"").trim();let c=["January","February","March","April","May","June","July","August","September","October","November","December"],d=parseInt(b[2],10)-1;return c[d]?`${c[d]} ${parseInt(b[3],10)}, ${b[1]}`:a}(b||f.date),j=f.groups,m=e?.company_name||"madarX",n=(e?.colors||[]).map(a=>a?.value).filter(Boolean),o=n[0]||"#0F0F11",p=n[1]||"#E8E8E5",s=q(e?.colors||[],{surface:o,primary:p})||"#C2452A",v=n[3]||"#8A8278",w=n[2]||"#DCDCD8",x="#C2452A",y=!function(a){if(!a?.logo_data_url)return!1;let b=String(a.logo_path||"");return!!b&&!/brand-assets[/\\]madarx-logo-primary\.svg$/i.test(b)}(e)?`<svg class="cl-logo" viewBox="0 0 360 100" height="30" role="img" aria-label="${l(m)}">
496
497
  <g transform="translate(50,50)">
497
498
  <path d="M 35.32 -18.78 A 40 40 0 1 1 28.78 -27.80" stroke="currentColor" stroke-width="3" fill="none"/>
498
499
  <line x1="-28.28" y1="-28.28" x2="28.28" y2="28.28" stroke="currentColor" stroke-width="3" stroke-linecap="round"/>
@@ -500,7 +501,7 @@ body {
500
501
  <circle cx="32.36" cy="-23.51" r="5" fill="${x}"/>
501
502
  </g>
502
503
  <text x="115" y="64" font-family="'IBM Plex Mono','Menlo',monospace" font-size="42" font-weight="500" fill="currentColor" letter-spacing="-0.02em">madar<tspan fill="${x}">X</tspan></text>
503
- </svg>`,z=`
504
+ </svg>`:`<img class="cl-logo cl-logo-img" src="${l(e.logo_data_url)}" alt="${l(m)}">`,z=`
504
505
  :root {
505
506
  --cl-bg: ${o};
506
507
  --cl-fg: ${p};
@@ -2024,6 +2025,32 @@ CREATE TABLE IF NOT EXISTS shared_space_publications (
2024
2025
  CREATE INDEX IF NOT EXISTS idx_shared_space_pub_status ON shared_space_publications(status);
2025
2026
  CREATE INDEX IF NOT EXISTS idx_shared_space_pub_org ON shared_space_publications(org_id);
2026
2027
 
2028
+ -- ── Shared brand-profile publication ledger (local-only) ───────────────────────
2029
+ -- Sibling of shared_publications, but for the org BRAND. The brand profile is a
2030
+ -- singleton per install (config.brand_profile). This ledger records whether the
2031
+ -- local brand has been *published* to the org (status='published'), *adopted*
2032
+ -- from the org (source='org'), or stopped sharing (status='unpublished'). Like
2033
+ -- its siblings it performs no network writes itself — lib/shared-cloud.js owns
2034
+ -- the cloud writes on an explicit publish/adopt/unpublish action. A row is keyed
2035
+ -- by org_id (one brand per org). No row (the default) means the brand is purely
2036
+ -- local and has never left the machine.
2037
+ CREATE TABLE IF NOT EXISTS brand_publications (
2038
+ id TEXT PRIMARY KEY,
2039
+ org_id TEXT NOT NULL,
2040
+ source TEXT NOT NULL DEFAULT 'local',
2041
+ content_hash TEXT,
2042
+ status TEXT NOT NULL DEFAULT 'published',
2043
+ last_error TEXT,
2044
+ published_by TEXT,
2045
+ published_at TEXT,
2046
+ adopted_at TEXT,
2047
+ last_synced_at TEXT,
2048
+ unpublished_at TEXT,
2049
+ UNIQUE(org_id)
2050
+ );
2051
+ CREATE INDEX IF NOT EXISTS idx_brand_pub_status ON brand_publications(status);
2052
+ CREATE INDEX IF NOT EXISTS idx_brand_pub_org ON brand_publications(org_id);
2053
+
2027
2054
  -- ── Dashboard spaces ─────────────────────────────────────────────────────────
2028
2055
  -- Server-side persistence for the dashboard's space sidebar. Replaces the prior
2029
2056
  -- localStorage-only store (use-spaces.js) which lost user state across browser
@@ -2657,6 +2684,23 @@ CREATE TABLE IF NOT EXISTS tool_proposals (
2657
2684
  );
2658
2685
  CREATE INDEX IF NOT EXISTS idx_tool_proposals_status ON tool_proposals(status);
2659
2686
 
2687
+ -- OAuth2 authorization-code state ledger. Single-use CSRF state values for the
2688
+ -- connection OAuth flow. A row is created at /oauth/start and consumed exactly
2689
+ -- once at /oauth/callback (consumed_at set). Replay of a consumed/expired state
2690
+ -- is rejected. code_verifier holds the PKCE verifier (never the access token).
2691
+ CREATE TABLE IF NOT EXISTS oauth_states (
2692
+ state TEXT PRIMARY KEY,
2693
+ service_key TEXT NOT NULL,
2694
+ provider TEXT NOT NULL,
2695
+ scope_json TEXT,
2696
+ code_verifier TEXT,
2697
+ redirect_uri TEXT,
2698
+ created_at TEXT NOT NULL,
2699
+ expires_at TEXT NOT NULL,
2700
+ consumed_at TEXT
2701
+ );
2702
+ CREATE INDEX IF NOT EXISTS idx_oauth_states_service ON oauth_states(service_key);
2703
+
2660
2704
 
2661
2705
  `,e=`
2662
2706
  CREATE TABLE IF NOT EXISTS printing_press_clis (
@@ -2911,7 +2955,7 @@ is irreversible_external and always shows its approval banner.
2911
2955
 
2912
2956
  LANGUAGE: English. Spanish source terms preserved in parentheses on first use.`}];function h(){try{let a=(0,e.getDb)();for(let b of j)a.prepare("SELECT id FROM agents WHERE id = ?").get(b.id)||(0,f.Sn)({id:b.id,name:b.name,engine:b.engine,schedule:b.schedule||"on demand",role:b.role,title:b.title,tools:b.tools,system_prompt:b.system_prompt,type:"mines",suppress_live_event:!0})}catch(a){console.warn("[mines/seeds] seedMinesAgents failed:",a?.message||a)}}function i(){let a=0;for(let b of j)try{let c=(0,f.RB)(b.id);c?.ok&&(a+=1)}catch(a){console.warn("[mines/seeds] removeMinesAgents failed for",b.id,a?.message||a)}return a}d()}catch(a){d(a)}})},54858:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{y:()=>m});var e=c(73024),f=c(76760),g=c(9381),h=c(34255),i=c(61423),j=c(73066),k=a([h,i,j]);[h,i,j]=k.then?(await k)():k;let n=f.join(g.nJ,".artifacts-migrated-v1");function l(a){return f.relative(g.Dl,a)}function m({force:a=!1,log:b=()=>{}}={}){if(!a&&function(){try{return e.existsSync(n)}catch{return!1}}())return{ok:!0,skipped:!0,reason:"already_migrated"};let c=(0,h.getDb)(),d=[];try{d=c.prepare("SELECT id, path, project_id FROM artifacts WHERE path IS NOT NULL AND path != ''").all()}catch{return{ok:!1,error:"artifacts table unavailable",summary:null}}let k={moved:0,rewritten:0,missing_on_disk:0,already_scoped:0,errors:0,details:[]},o=f.resolve(g.yQ),p=o+f.sep;c.exec("BEGIN IMMEDIATE");try{for(let a of d){let d=f.resolve(g.Dl,a.path),h=function(a){let b=a.project_id||i.Sk;return(0,i.U1)(b)||(0,i.U1)(i.Sk)}(a);if(!h){k.errors++;continue}let m=(0,j.v2)(h),n=f.resolve(m);if(d===n||d.startsWith(n+f.sep)||!(d===o||d.startsWith(p))){k.already_scoped++;continue}try{e.mkdirSync(m,{recursive:!0})}catch{}let q=f.basename(d),r=f.join(m,q),s=l(r);try{if(e.existsSync(d)){let b=r,g=s,i=!1;if(e.existsSync(r)&&d!==r){let a=f.extname(q),c=f.basename(q,a),d=Date.now().toString(36);b=f.join(m,`${c}-${d}${a}`),g=l(b),i=!0}e.renameSync(d,b),c.prepare("UPDATE artifacts SET path = ?, project_id = ? WHERE id = ?").run(g,h.id,a.id),k.moved++,k.rewritten++,k.details.push({id:a.id,from:a.path,to:g,collision:i})}else k.missing_on_disk++,c.prepare("UPDATE artifacts SET path = ?, project_id = ? WHERE id = ?").run(s,h.id,a.id),k.rewritten++,k.details.push({id:a.id,from:a.path,to:s,file_missing:!0})}catch(c){k.errors++,b(`migrate-artifacts: failed for ${a.id} (${a.path}): ${c.message}`)}}c.exec("COMMIT")}catch(a){try{c.exec("ROLLBACK")}catch{}return b(`migrate-artifacts: rolled back: ${a.message}`),{ok:!1,error:a.message,summary:k}}try{e.writeFileSync(n,`${new Date().toISOString()}
2913
2957
  ${JSON.stringify(k,null,2)}
2914
- `,"utf8")}catch{}return{ok:!0,skipped:!1,summary:k}}d()}catch(a){d(a)}})},56050:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{p:()=>k});var e=c(24516),f=c(58282),g=c(59400),h=c(45907),i=a([e,f,g,h]);[e,f,g,h]=i.then?(await i)():i;let l=new Set(["__connector_slug","__endpoint","approval_id","body","query"]);function j(a){let b,c=[],d=/\{([a-z][a-z0-9_]*)\}/g;for(;null!==(b=d.exec(a));)c.push(b[1]);return c}async function k(a={},b={}){let c,d,i,m=a.__connector_slug,n=a.__endpoint,o=m&&n?`${m}.${n}`:null,p=o?(0,h.tP)(o):null;if(!p)return{ok:!1,status:"error",error:"not_found",message:`Unknown connector endpoint: ${o||"(none)"}`};let{manifest:q,endpointDef:r}=p,s=r.path;for(let b of j(r.path)){let c=a[b]??a.params?.[b];if(null==c||""===c)return{ok:!1,status:"error",error:"missing_path_param",message:`Missing path parameter: ${b}`};s=s.replaceAll(`{${b}}`,encodeURIComponent(String(c)))}if(/\{[a-z]/i.test(s))return{ok:!1,status:"error",error:"missing_path_param",message:`Unresolved path parameter in ${s}`};try{c=new URL(q.base_url.replace(/\/+$/g,"")+s)}catch{return{ok:!1,status:"error",error:"bad_url",message:"Could not build request URL"}}try{(0,g.vC)(c.toString())}catch(a){return{ok:!1,status:"error",error:"blocked_host",message:a.message}}let t=c.hostname.toLowerCase();if(!Array.isArray(q.allowed_hosts)||!q.allowed_hosts.includes(t))return{ok:!1,status:"error",error:"host_not_allowed",message:`Host ${t} is not in the connector allowlist`};try{d=function(a={}){let b={},c={},d=a=>{let b=(0,e.getSecret)(a);if(null==b||""===b){let b=Error(`Required secret not configured: ${a}`);throw b.code="secret_missing",b.secret_ref=a,b}return String(b)};if("bearer"===a.type){let c=d(a.secret_ref);b[a.header||"Authorization"]=`${a.prefix??"Bearer "}${c}`}else if("api_key"===a.type){let e=d(a.secret_ref);a.query_param?c[a.query_param]=`${a.prefix??""}${e}`:b[a.header||"Authorization"]=`${a.prefix??""}${e}`}else if("basic"===a.type){let c=d(a.username_ref),e=d(a.password_ref);b.Authorization=`Basic ${Buffer.from(`${c}:${e}`).toString("base64")}`}return{headers:b,query:c}}(q.auth||{})}catch(a){if("secret_missing"===a.code)return{ok:!1,status:"error",error:"secret_missing",secret_ref:a.secret_ref,message:a.message};throw a}for(let[a,b]of Object.entries(d.query))c.searchParams.set(a,b);if(a.query&&"object"==typeof a.query)for(let[b,d]of Object.entries(a.query))null!=d&&c.searchParams.set(b,String(d));let u={Accept:"application/json",...q.default_headers||{}},v=Object.keys(d.headers),w=r.method,x=["POST","PUT","PATCH","DELETE"].includes(w),y=null,z=null;if(x){let b=a.body;if(null==b){let c=j(r.path);for(let[d,e]of(b={},Object.entries(a)))l.has(d)||c.includes(d)||"params"===d||(b[d]=e)}b&&"object"==typeof b&&Object.keys(b).length>0&&(z=(q.default_headers||{})["Content-Type"]||"application/json",y=JSON.stringify(b))}let A=a=>{let b={...u};if(a===c.hostname.toLowerCase())for(let a of v)b[a]=d.headers[a];z&&(b["Content-Type"]=z);let e={method:w,headers:b,redirect:"manual"};return null!=y&&(e.body=y),e},B=(0,f.N)(o,b.agent_id??null),C=new Set([301,302,303,307,308]),D=c;for(let a=0;a<5;a++){let b;try{i=await B(D,A(D.hostname.toLowerCase()))}catch(a){return{ok:!1,status:"error",error:"request_failed",message:String(a?.message||a)}}if(!C.has(i.status))break;let c=i.headers.get("location");if(!c)break;try{b=new URL(c,D)}catch{return{ok:!1,status:"error",error:"bad_redirect",message:`Invalid redirect target: ${c}`}}try{(0,g.vC)(b.toString())}catch(a){return{ok:!1,status:"error",error:"blocked_redirect",message:`Redirect blocked: ${a.message}`}}if(!q.allowed_hosts.includes(b.hostname.toLowerCase()))return{ok:!1,status:"error",error:"blocked_redirect",message:`Redirect to ${b.hostname} is not in the connector allowlist`};if(D=b,4===a)return{ok:!1,status:"error",error:"too_many_redirects",message:"Exceeded redirect limit"}}let E=i.headers.get("content-type")||"",F=i.body?.getReader(),G="";if(F){let a=[],b=0;for(;;){let{value:c,done:d}=await F.read();if(d)break;if((b+=c.byteLength)>512e3){G="[response truncated: exceeds 512KB]";break}a.push(c)}G||(G=Buffer.concat(a).toString("utf8"))}else G=(await i.text()).slice(0,512e3);let H=null;if(E.includes("application/json"))try{H=JSON.parse(G)}catch{H=null}return i.ok?{ok:!0,status:"complete",http_status:i.status,content_type:E,data:H??G.slice(0,512e3)}:{ok:!1,status:"error",error:"http_error",http_status:i.status,message:`${w} ${n} → ${i.status}`,body:H??G.slice(0,2e3)}}d()}catch(a){d(a)}})},57223:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{$F:()=>p,Uw:()=>m});var e=c(34255),f=c(8437),g=c(49017),h=a([e,f]);function i(a){return a?{...a}:null}function j(a){return a?(0,e.getDb)().prepare("SELECT * FROM hail_review_gates WHERE engagement_id = ? ORDER BY created_at ASC").all(a).map(i):[]}function k(a){return a?i((0,e.getDb)().prepare("SELECT * FROM hail_review_gates WHERE id = ?").get(a)):null}function l({id:a,engagement_id:b,gate_type:c,reviewer_role:d,reviewer_user_id:f=null,decision:h,comments:i=null,approval_request_id:j=null}){if(!["approved","rejected","revision_requested","pending"].includes(h))throw Error(`recordGateDecision: invalid decision "${h}"`);let l=(0,e.getDb)(),m=(0,e.nowIso)();if(a){if(!k(a))throw Error(`recordGateDecision: gate "${a}" not found`);return l.prepare(`
2958
+ `,"utf8")}catch{}return{ok:!0,skipped:!1,summary:k}}d()}catch(a){d(a)}})},56050:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{p:()=>o});var e=c(24516),f=c(58282),g=c(59400),h=c(45907),i=c(72550),j=c(59237),k=a([e,f,g,h,j]);[e,f,g,h,j]=k.then?(await k)():k;let p=new Set(["__connector_slug","__endpoint","approval_id","body","query"]);function l(a){let b,c=[],d=/\{([a-z][a-z0-9_]*)\}/g;for(;null!==(b=d.exec(a));)c.push(b[1]);return c}function m(a={}){let b={},c={},d=a=>{let b=(0,e.getSecret)(a);if(null==b||""===b){let b=Error(`Required secret not configured: ${a}`);throw b.code="secret_missing",b.secret_ref=a,b}return String(b)};if("bearer"===a.type){let c=d(a.secret_ref);b[a.header||"Authorization"]=`${a.prefix??"Bearer "}${c}`}else if("api_key"===a.type){let e=d(a.secret_ref);a.query_param?c[a.query_param]=`${a.prefix??""}${e}`:b[a.header||"Authorization"]=`${a.prefix??""}${e}`}else if("basic"===a.type){let c=d(a.username_ref),e=d(a.password_ref);b.Authorization=`Basic ${Buffer.from(`${c}:${e}`).toString("base64")}`}else if("oauth2"===a.type){let c=d(a.access_token_ref);b[a.header||"Authorization"]=`${a.prefix??"Bearer "}${c}`}return{headers:b,query:c}}async function n(a,b){let c;if(a?.type!=="oauth2"||!a.refresh_token_ref)return!1;let d=(0,e.getSecret)(a.refresh_token_ref);if(!d)return!1;let f=(0,i.Kd)(a.provider,{token_url:a.token_url});if(!f?.token_url)return!1;let g=a.client_id_ref?(0,e.getSecret)(a.client_id_ref):null,h=a.client_secret_ref?(0,e.getSecret)(a.client_secret_ref):null;try{c=await (0,j.J1)(f,{refresh_token:String(d),client_id:g||"",client_secret:h||""},b)}catch{return!1}if(!c?.ok||!c.access_token)return!1;try{(0,e.setSecret)(a.access_token_ref,c.access_token,{source:"oauth_refresh"}),c.refresh_token&&a.refresh_token_ref&&(0,e.setSecret)(a.refresh_token_ref,c.refresh_token,{source:"oauth_refresh"})}catch{return!1}return!0}async function o(a={},b={}){let c,d,e,i=a.__connector_slug,j=a.__endpoint,k=i&&j?`${i}.${j}`:null,q=k?(0,h.tP)(k):null;if(!q)return{ok:!1,status:"error",error:"not_found",message:`Unknown connector endpoint: ${k||"(none)"}`};let{manifest:r,endpointDef:s}=q,t=s.path;for(let b of l(s.path)){let c=a[b]??a.params?.[b];if(null==c||""===c)return{ok:!1,status:"error",error:"missing_path_param",message:`Missing path parameter: ${b}`};t=t.replaceAll(`{${b}}`,encodeURIComponent(String(c)))}if(/\{[a-z]/i.test(t))return{ok:!1,status:"error",error:"missing_path_param",message:`Unresolved path parameter in ${t}`};try{c=new URL(r.base_url.replace(/\/+$/g,"")+t)}catch{return{ok:!1,status:"error",error:"bad_url",message:"Could not build request URL"}}try{(0,g.vC)(c.toString())}catch(a){return{ok:!1,status:"error",error:"blocked_host",message:a.message}}let u=c.hostname.toLowerCase();if(!Array.isArray(r.allowed_hosts)||!r.allowed_hosts.includes(u))return{ok:!1,status:"error",error:"host_not_allowed",message:`Host ${u} is not in the connector allowlist`};try{d=m(r.auth||{})}catch(a){if("secret_missing"===a.code)return{ok:!1,status:"error",error:"secret_missing",secret_ref:a.secret_ref,message:a.message};throw a}for(let[a,b]of Object.entries(d.query))c.searchParams.set(a,b);if(a.query&&"object"==typeof a.query)for(let[b,d]of Object.entries(a.query))null!=d&&c.searchParams.set(b,String(d));let v={Accept:"application/json",...r.default_headers||{}},w=Object.keys(d.headers),x=s.method,y=["POST","PUT","PATCH","DELETE"].includes(x),z=null,A=null;if(y){let b=a.body;if(null==b){let c=l(s.path);for(let[d,e]of(b={},Object.entries(a)))p.has(d)||c.includes(d)||"params"===d||(b[d]=e)}b&&"object"==typeof b&&Object.keys(b).length>0&&(A=(r.default_headers||{})["Content-Type"]||"application/json",z=JSON.stringify(b))}let B=a=>{let b={...v};if(a===c.hostname.toLowerCase())for(let a of w)b[a]=d.headers[a];A&&(b["Content-Type"]=A);let e={method:x,headers:b,redirect:"manual"};return null!=z&&(e.body=z),e},C=(0,f.N)(k,b.agent_id??null),D=new Set([301,302,303,307,308]);for(let a=0;a<2;a++){let b=c,f=null;for(let a=0;a<5;a++){let c;try{e=await C(b,B(b.hostname.toLowerCase()))}catch(a){return{ok:!1,status:"error",error:"request_failed",message:String(a?.message||a)}}if(!D.has(e.status))break;let d=e.headers.get("location");if(!d)break;try{c=new URL(d,b)}catch{return{ok:!1,status:"error",error:"bad_redirect",message:`Invalid redirect target: ${d}`}}try{(0,g.vC)(c.toString())}catch(a){return{ok:!1,status:"error",error:"blocked_redirect",message:`Redirect blocked: ${a.message}`}}if(!r.allowed_hosts.includes(c.hostname.toLowerCase()))return{ok:!1,status:"error",error:"blocked_redirect",message:`Redirect to ${c.hostname} is not in the connector allowlist`};if(b=c,4===a){f={ok:!1,status:"error",error:"too_many_redirects",message:"Exceeded redirect limit"};break}}if(f)return f;if(0===a&&401===e.status&&"oauth2"===(r.auth||{}).type&&await n(r.auth,C)){try{d=m(r.auth||{}),w=Object.keys(d.headers)}catch{break}continue}break}let E=e.headers.get("content-type")||"",F=e.body?.getReader(),G="";if(F){let a=[],b=0;for(;;){let{value:c,done:d}=await F.read();if(d)break;if((b+=c.byteLength)>512e3){G="[response truncated: exceeds 512KB]";break}a.push(c)}G||(G=Buffer.concat(a).toString("utf8"))}else G=(await e.text()).slice(0,512e3);let H=null;if(E.includes("application/json"))try{H=JSON.parse(G)}catch{H=null}return e.ok?{ok:!0,status:"complete",http_status:e.status,content_type:E,data:H??G.slice(0,512e3)}:{ok:!1,status:"error",error:"http_error",http_status:e.status,message:`${x} ${j} → ${e.status}`,body:H??G.slice(0,2e3)}}d()}catch(a){d(a)}})},57223:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{$F:()=>p,Uw:()=>m});var e=c(34255),f=c(8437),g=c(49017),h=a([e,f]);function i(a){return a?{...a}:null}function j(a){return a?(0,e.getDb)().prepare("SELECT * FROM hail_review_gates WHERE engagement_id = ? ORDER BY created_at ASC").all(a).map(i):[]}function k(a){return a?i((0,e.getDb)().prepare("SELECT * FROM hail_review_gates WHERE id = ?").get(a)):null}function l({id:a,engagement_id:b,gate_type:c,reviewer_role:d,reviewer_user_id:f=null,decision:h,comments:i=null,approval_request_id:j=null}){if(!["approved","rejected","revision_requested","pending"].includes(h))throw Error(`recordGateDecision: invalid decision "${h}"`);let l=(0,e.getDb)(),m=(0,e.nowIso)();if(a){if(!k(a))throw Error(`recordGateDecision: gate "${a}" not found`);return l.prepare(`
2915
2959
  UPDATE hail_review_gates
2916
2960
  SET decision = ?, reviewer_user_id = COALESCE(?, reviewer_user_id),
2917
2961
  comments = COALESCE(?, comments),
@@ -2991,25 +3035,25 @@ HARD SAFETY RULES (non-negotiable — the package is rejected by the validator o
2991
3035
  INSERT OR IGNORE INTO mines_spatial_assets
2992
3036
  (id, project_id, kind, path, crs, bbox, file_size_bytes, indexed_at)
2993
3037
  VALUES (?, ?, ?, ?, ?, ?, ?, ?)
2994
- `).run((0,e.newId)("msa"),b.project_id,d.kind,b.original_path,d.crs,d.bbox?JSON.stringify(d.bbox):null,d.file_size_bytes,(0,e.nowIso)()),a.prepare("UPDATE mines_source_documents SET extraction_status = ?, updated_at = ? WHERE id = ?").run("complete",(0,e.nowIso)(),b.id),!!c}async function i(a,b={}){let c=(0,e.getDb)();if(a?.source_document_id){let b=c.prepare("SELECT id, project_id, original_path, file_type FROM mines_source_documents WHERE id = ?").get(a.source_document_id);if(!b)return{status:"error",error:"source_document_not_found"};let d=h(c,b);return{status:"ok",assets_indexed:+!d,assets_skipped:+!!d}}let d=a?.project_id;if(!d)return{status:"error",error:"project_id_required"};let f=c.prepare("SELECT id, project_id, original_path, file_type FROM mines_source_documents WHERE project_id = ?").all(d).filter(a=>j.has(String(a.file_type||"").toLowerCase())),g=0,k=0;for(let a of f)try{h(c,a)?k++:g++}catch{k++}return{status:"ok",assets_indexed:g,assets_skipped:k}}d()}catch(a){d(a)}})},59400:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{IY:()=>B,dV:()=>A,tE:()=>x,vC:()=>y});var e=c(77030),f=c(24516),g=c(58282),h=a([f,g]);function i(a){return String(process.env[a]||"").trim()}function j(a){try{let b=(0,f.getSecret)(a);if(b)return String(b).trim()}catch{}return i(a)}function k(a={}){let b=String(a.query||a.q||"").trim();if(!b)throw Error("query is required");return b}function l(a={}){return Math.min(Math.max(Number(a.count||5),1),10)}function m({title:a,url:b,snippet:c,source:d,rank:e=0,metadata:f={}}){return{rank:e+1,title:String(a||""),url:String(b||""),snippet:String(c||""),source:d,metadata:f}}async function n(a,b={},c=fetch){let d=await c(a,b);if(!d.ok){let a=d.statusText||String(d.status);try{let b=await d.text();b&&(a=`${a}: ${b.slice(0,200)}`)}catch{}throw Error(`Request failed: ${d.status} ${a}`.trim())}return d.json()}function o(a={},b=0){return m({rank:b,title:a.title,url:a.url,snippet:a.description||a.snippet,source:"brave",metadata:{age:a.age||null,family_friendly:a.family_friendly??null}})}function p(){let a={Accept:"application/json","Content-Type":"application/json"},b=j("FIRECRAWL_API_KEY");return b&&(a.Authorization=`Bearer ${b}`),a}function q(){return(j("FIRECRAWL_API_URL")||"https://api.firecrawl.dev").replace(/\/+$/g,"")}async function r(a={},b=fetch){let c=k(a),d=l(a),e=await n(`${q()}/v1/search`,{method:"POST",headers:p(),body:JSON.stringify({query:c,limit:d})},b);return{query:c,source:"firecrawl",results:(function(a={}){return Array.isArray(a.data)?a.data:Array.isArray(a.results)?a.results:Array.isArray(a.web)?a.web:Array.isArray(a.web?.results)?a.web.results:[]})(e).slice(0,d).map((a,b)=>m({rank:b,title:a.title,url:a.url||a.link,snippet:a.description||a.snippet||a.content||a.markdown,source:"firecrawl",metadata:a.metadata||{}})).filter(a=>a.url)}}async function s(a={},b=fetch){let c=k(a),d=l(a),e=j("SEARXNG_URL");if(!e)throw Error("SEARXNG_URL not configured");let f=new URL("/search",e.replace(/\/+$/g,""));f.searchParams.set("q",c),f.searchParams.set("format","json"),(a.search_lang||a.language)&&f.searchParams.set("language",String(a.search_lang||a.language));let g=await n(f,{headers:{Accept:"application/json"}},b);return{query:c,source:"searxng",results:(g.results||[]).slice(0,d).map((a,b)=>m({rank:b,title:a.title,url:a.url,snippet:a.content||a.snippet,source:"searxng",metadata:a.metadata||{}})).filter(a=>a.url)}}async function t(a={},b=fetch){let c=j("BRAVE_SEARCH_API_KEY");if(!c)throw Error("BRAVE_SEARCH_API_KEY not configured");let d=k(a),e=l(a),f=new URL("https://api.search.brave.com/res/v1/web/search");f.searchParams.set("q",d),f.searchParams.set("count",String(e)),a.country&&f.searchParams.set("country",String(a.country)),a.search_lang&&f.searchParams.set("search_lang",String(a.search_lang));let g=await n(f,{headers:{Accept:"application/json","X-Subscription-Token":c}},b),h=(g.web?.results||[]).slice(0,e).map(o);return{query:d,source:"brave",results:h}}function u(a=""){return String(a).replace(/&nbsp;/g," ").replace(/&amp;/g,"&").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&#39;/g,"'").replace(/&#x27;/g,"'")}function v(a=""){return u(String(a).replace(/<[^>]+>/g," ")).replace(/\s+/g," ").trim()}async function w(a={},b=fetch){let c=k(a),d=l(a),e=new URL("https://lite.duckduckgo.com/lite/");e.searchParams.set("q",c);let f=await b(e,{headers:{Accept:"text/html,application/xhtml+xml;q=0.9,*/*;q=0.2","User-Agent":"MadarxOS/1.0 (+local research tool)"}});if(!f.ok)throw Error(`DuckDuckGo Lite search failed: ${f.status}`);let g=await f.text();return{query:c,source:"fetch",results:function(a="",b=5){let c=[...String(a).matchAll(/<a\b[^>]*href=["'][^"']+["'][^>]*>[\s\S]*?<\/a>/gi)],d=[...String(a).matchAll(/<td\b[^>]*class=["'][^"']*result-snippet[^"']*["'][^>]*>([\s\S]*?)<\/td>/gi)].map(a=>v(a[1])),e=[];for(let a of c){let c=a[0].match(/<a\b[^>]*>/i)?.[0]||"",f=v(a[0]),g=function(a=""){try{let b=new URL(a,"https://lite.duckduckgo.com"),c=b.searchParams.get("uddg");if(c)return c;if(["http:","https:"].includes(b.protocol))return b.toString()}catch{}return a}(function(a,b){let c=a.match(RegExp(`${b}\\s*=\\s*["']([^"']+)["']`,"i"));return c?u(c[1]):""}(c,"href"));if(f&&/^https?:\/\//i.test(g)&&(e.push(m({rank:e.length,title:f,url:g,snippet:d[e.length]||"",source:"duckduckgo_lite",metadata:{}})),e.length>=b))break}return e}(g,d)}}async function x(a={},b={}){let c=b.agent_id??null,d=function(){let a=i("MADARX_WEB_PROVIDER").toLowerCase();if(a){if(["firecrawl","searxng","brave","fetch"].includes(a))return a;throw Error(`Unsupported MADARX_WEB_PROVIDER: ${a}`)}return j("FIRECRAWL_API_URL")||j("FIRECRAWL_API_KEY")?"firecrawl":j("SEARXNG_URL")?"searxng":j("BRAVE_SEARCH_API_KEY")?"brave":"fetch"}();return"firecrawl"===d?r(a,(0,g.N)("web_search",c)):"searxng"===d?s(a,(0,g.N)("web_search",c)):"brave"===d?t(a,(0,g.N)("web_search",c)):w(a,(0,g.N)("web_search",c))}function y(a){let b;try{b=new URL(String(a||""))}catch{throw Error("url must be a valid URL")}if(!["http:","https:"].includes(b.protocol))throw Error("Only http and https URLs are supported");let c=b.hostname.replace(/^\[|\]$/g,"").toLowerCase();if(!c)throw Error("URL host is required");if("localhost"===c||c.endsWith(".localhost")||c.endsWith(".local"))throw Error("Local/private network URLs are blocked");let d=e.isIP(c);if(4===d&&function(a){let b=a.split(".").map(Number);if(4!==b.length||b.some(a=>!Number.isInteger(a)||a<0||a>255))return!1;let[c,d]=b;return 10===c||127===c||169===c&&254===d||172===c&&d>=16&&d<=31||192===c&&168===d||0===c}(c)||6===d&&function(a){let b=a.toLowerCase();return"::1"===b||b.startsWith("fc")||b.startsWith("fd")||b.startsWith("fe80:")||"::"===b||b.startsWith("0:")}(c))throw Error("Local/private network URLs are blocked");return b}function z(a){return String(a||"").replace(/<script\b[^>]*>[\s\S]*?<\/script>/gi," ").replace(/<style\b[^>]*>[\s\S]*?<\/style>/gi," ").replace(/<noscript\b[^>]*>[\s\S]*?<\/noscript>/gi," ").replace(/<!--[\s\S]*?-->/g," ").replace(/<\/(p|div|section|article|header|footer|main|li|h[1-6]|tr)>/gi,"\n").replace(/<[^>]+>/g," ").replace(/&nbsp;/g," ").replace(/&amp;/g,"&").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&#39;/g,"'").replace(/[ \t]+\n/g,"\n").replace(/\n{3,}/g,"\n\n").replace(/[ \t]{2,}/g," ").trim()}async function A(a={},b={}){let c=b.agent_id??null,d=(0,g.N)("web_fetch",c),e=y(a.url),f=Math.min(Math.max(Number(a.max_bytes||512e3),1024),512e3),h=await d(e,{headers:{Accept:"text/html,text/plain,application/xhtml+xml,application/json;q=0.8,*/*;q=0.2","User-Agent":"MadarxOS/1.0 (+local research tool)"},redirect:"follow"});if(!h.ok)throw Error(`Fetch failed: ${h.status}`);let i=Number(h.headers.get("content-length")||0);if(i&&i>f)throw Error(`Response too large: ${i} bytes`);let j=h.body?.getReader();if(!j){let a=await h.text();if(Buffer.byteLength(a,"utf8")>f)throw Error("Response too large");return{url:e.toString(),status:h.status,content_type:h.headers.get("content-type")||"",text:z(a)}}let k=[],l=0;for(;;){let{value:a,done:b}=await j.read();if(b)break;if((l+=a.byteLength)>f)throw Error("Response too large");k.push(a)}let m=Buffer.concat(k).toString("utf8"),n=h.headers.get("content-type")||"";return{url:h.url||e.toString(),status:h.status,content_type:n,text:z(m).slice(0,Math.min(f,12e4)),source:{url:h.url||e.toString(),fetched_at:new Date().toISOString()}}}async function B(a={},b={}){let c=b.agent_id??null,d=y(a.url);if(!j("FIRECRAWL_API_URL")&&!j("FIRECRAWL_API_KEY"))return A(a,b);let e=await n(`${q()}/v1/scrape`,{method:"POST",headers:p(),body:JSON.stringify({url:d.toString(),formats:["markdown"]})},(0,g.N)("web_extract",c)),f=e.data||e,h=String(f.markdown||f.content||f.text||"");return{url:d.toString(),status:200,content_type:"text/markdown",text:h.slice(0,12e4),metadata:f.metadata||{},source:{provider:"firecrawl",url:d.toString(),fetched_at:new Date().toISOString()}}}[f,g]=h.then?(await h)():h,d()}catch(a){d(a)}})},60105:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{$S:()=>as,AD:()=>aw,CM:()=>$,Ck:()=>M,Dg:()=>function a({title:b,kind:c="html",content:d,project_id:k=null,agent_id:l=null,space_id:n=null,heartbeat_task_id:o=null,dedupe_key:p=null}){(0,i.Jh)();let r=k||q.Sk,s=(0,q.hF)({status:"all"}).find(a=>a.id===r||a.slug===r),t=s?s.id:q.Sk,u=(0,j.Kg)(t),v=(b||"artifact").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"artifact",w=l||"main-orchestrator",y=""===p?null:p||function({agent_id:a,title:b,project_id:c}){let d=new Date().toISOString().slice(0,10),e=String(b||"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"");return g.createHash("sha256").update([a||"main-orchestrator",c||q.Sk,e,d].join("|")).digest("hex").slice(0,32)}({agent_id:w,title:b,project_id:t}),z=function({heartbeat_task_id:a,dedupe_key:b,project_id:c}){if(!a&&!b)return null;let d=(0,h.getDb)(),e=c||q.Sk;if(a){let b=d.prepare("SELECT id, path, kind, title FROM artifacts WHERE heartbeat_task_id = ? LIMIT 1").get(String(a));if(b)return b}if(b){let a=d.prepare("SELECT id, path, kind, title FROM artifacts WHERE dedupe_key = ? AND project_id = ? LIMIT 1").get(String(b),e);if(a)return a}return null}({heartbeat_task_id:o,dedupe_key:y,project_id:t});if(z)return{artifact_id:z.id,file_path:z.path,title:z.title||b,kind:z.kind||c,deduped:!0};let A=s&&s.org_id?s.org_id:"personal-org",B=(0,x.Pf)();function C(a,b){return B?(e.writeFileSync(a,(0,x.A5)(A,b)),{encrypted:1,encryption_key_id:A}):(e.writeFileSync(a,b,"utf8"),{encrypted:0,encryption_key_id:null})}let D="main-orchestrator"===w?"madarX Main Agent":(a=>{try{let b=a.prepare("SELECT name FROM agents WHERE id = ?").get(w);return b?.name||w}catch{return w}})((0,h.getDb)());if("markdown"===c||"text"===c){let a=(0,m.vr)(d||""),c=(0,m.j7)({title:b,markdown:a}),e=f.join(u,`${v}-${Date.now().toString(36)}.md`),{encrypted:g,encryption_key_id:h}=C(e,a),j=(0,i.z9)(e),k=W({kind:"artifact-created",title:`Created artifact: ${b}`,agent:D,agent_id:w,artifact:j,preview:a.slice(0,200),triggered_by:"claude",status:"complete"}),l=X({run_id:k.id,agent_id:w,file_path:j,kind:"document",title:b,content:c,source_md:a,project_id:t,encrypted:g,encryption_key_id:h,space_id:n,heartbeat_task_id:o,dedupe_key:y});try{(0,q.Ip)(t,{action:"project.artifact.created",actor_type:"agent",agent_id:w,run_id:k.id,title:`Created artifact: ${b}`,summary:`New document "${b}" is in the library.`,status:"complete",source:"artifact",update_kind:"progress",details:{artifact_id:l,kind:"document",folder_id:null}})}catch{}return{artifact_id:l,file_path:j,title:b,kind:"document"}}if("html"===c){let c=(d||"").trimStart().slice(0,200).toLowerCase();if(!(c.startsWith("<!doctype")||c.startsWith("<html")||c.includes("<body")))return a({title:b,kind:"markdown",content:d,project_id:k,agent_id:l,space_id:n,heartbeat_task_id:o,dedupe_key:p})}let E=(d||"").trimStart().slice(0,200).toLowerCase(),F=E.startsWith("<!doctype")||E.startsWith("<html")||E.includes("<body"),G="html"===c||F?(0,m.vr)(d||""):d||"",H=f.join(u,`${v}-${Date.now().toString(36)}.${"html"===c||F?"html":"txt"}`),{encrypted:I,encryption_key_id:J}=C(H,G),K=(0,i.z9)(H),L=W({kind:"artifact-created",title:`Created artifact: ${b}`,agent:D,agent_id:w,artifact:K,preview:G.slice(0,200),triggered_by:"claude",status:"complete"}),M=X({run_id:L.id,agent_id:w,file_path:K,kind:c,title:b,content:G,project_id:t,encrypted:I,encryption_key_id:J,space_id:n,heartbeat_task_id:o,dedupe_key:y});try{(0,q.Ip)(t,{action:"project.artifact.created",actor_type:"agent",agent_id:w,run_id:L.id,title:`Created artifact: ${b}`,summary:`New ${c} artifact "${b}" is in the library.`,status:"complete",source:"artifact",update_kind:"progress",details:{artifact_id:M,kind:c,folder_id:null}})}catch{}return{artifact_id:M,file_path:K,title:b,kind:c}},Gu:()=>al,IG:()=>aj,K2:()=>I,Mh:()=>P,NK:()=>ah,Nv:()=>af,OH:()=>aa,PF:()=>Q,RB:()=>ac,RG:()=>N,S9:()=>_,Sn:()=>ab,UA:()=>ar,V1:()=>L,W1:()=>K,WU:()=>G,Xr:()=>J,YS:()=>ao,_u:()=>R,appendAudit:()=>V,bC:()=>ae,eP:()=>Z,fB:()=>aq,fk:()=>ap,jZ:()=>U,mk:()=>ai,mo:()=>at,n1:()=>T,nF:()=>ak,q:()=>au,recordArtifact:()=>X,recordRun:()=>W,v:()=>O,vc:()=>F,wn:()=>S,x4:()=>ad});var e=c(73024),f=c(76760),g=c(77598),h=c(34255),i=c(9381),j=c(73066),k=c(90712),l=c(14743),m=c(8727),n=c(40563),o=c(8437),p=c(72326),q=c(61423),r=c(83963),s=c(40718),t=c(60897),u=c(67179),v=c(9001),w=c(81833),x=c(79133),y=a([h,j,l,m,n,o,p,q,r,s,u,v,w]);function z(a){return String(a||"agent").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,64)||"agent"}function A(){return new Date().toISOString().slice(0,10)}function B(a,b){if(!a)return b;try{return JSON.parse(a)}catch{return b}}function C(a){return a?{id:a.id,name:a.name,type:a.type,engine:(0,p.$k)(a.engine),model:a.model||(0,p.Qp)(a.engine),mission:a.mission,schedule:a.schedule,tools:B(a.tools,[]),status:a.status,approval:a.approval,generated:1===a.generated,files:B(a.files,[]),system_prompt:a.system_prompt||null,expected_output:a.expected_output||null,memory:B(a.memory,[]),created_at:a.created_at,last_heartbeat:a.last_heartbeat,last_run_at:a.last_run_at,next_run_at:a.next_run_at,reports_to:a.reports_to||null,role:a.role||null,title:a.title||null,status_reason:a.status_reason||null,autonomy_mode:a.autonomy_mode||null,budget_monthly_cents:Number(a.budget_monthly_cents||0),spent_monthly_cents:Number(a.spent_monthly_cents||0),permissions_json:B(a.permissions_json,{}),metadata_json:B(a.metadata_json,{}),project_id:a.project_id||null,template_slug:a.template_slug||null,default_space_id:a.default_space_id||null}:null}function D(a){return a?{id:a.id,agent_id:a.agent_id,agent_name:a.agent_name,schedule:a.schedule,action_kind:a.action_kind,enabled:1===a.enabled,next_run_at:a.next_run_at,last_run_at:a.last_run_at,delivery:a.delivery,approval:a.approval,last_queued_at:a.last_queued_at,last_queued_window:a.last_queued_window,updated_at:a.updated_at}:null}function E(a){return a?{...a}:null}function F(){return(0,h.getDb)().prepare("SELECT * FROM agents ORDER BY generated ASC, name ASC").all().map(C)}function G(a){let b=(0,h.getDb)();return C(b.prepare("SELECT * FROM agents WHERE id = ?").get(a))}function H(a){return a?{id:a.id,agent_id:a.agent_id,tool_name:a.tool_name,mode:a.mode,created_at:a.created_at,updated_at:a.updated_at}:null}function I(a){return(0,h.getDb)().prepare("SELECT * FROM agent_tool_permissions WHERE agent_id = ? ORDER BY tool_name ASC").all(a).map(H)}function J(a,b,c="approval_required"){if(!a||!b)throw Error("agent_id and tool_name are required");if(!["auto","approval_required","disabled"].includes(c))throw Error(`Invalid tool permission mode: ${c}`);let d=(0,h.getDb)(),e=(0,h.nowIso)(),f=`perm-${a}-${b}`.replace(/[^a-zA-Z0-9_-]/g,"-");return d.prepare(`
3038
+ `).run((0,e.newId)("msa"),b.project_id,d.kind,b.original_path,d.crs,d.bbox?JSON.stringify(d.bbox):null,d.file_size_bytes,(0,e.nowIso)()),a.prepare("UPDATE mines_source_documents SET extraction_status = ?, updated_at = ? WHERE id = ?").run("complete",(0,e.nowIso)(),b.id),!!c}async function i(a,b={}){let c=(0,e.getDb)();if(a?.source_document_id){let b=c.prepare("SELECT id, project_id, original_path, file_type FROM mines_source_documents WHERE id = ?").get(a.source_document_id);if(!b)return{status:"error",error:"source_document_not_found"};let d=h(c,b);return{status:"ok",assets_indexed:+!d,assets_skipped:+!!d}}let d=a?.project_id;if(!d)return{status:"error",error:"project_id_required"};let f=c.prepare("SELECT id, project_id, original_path, file_type FROM mines_source_documents WHERE project_id = ?").all(d).filter(a=>j.has(String(a.file_type||"").toLowerCase())),g=0,k=0;for(let a of f)try{h(c,a)?k++:g++}catch{k++}return{status:"ok",assets_indexed:g,assets_skipped:k}}d()}catch(a){d(a)}})},59237:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{J1:()=>h}),c(77598);var e=c(34255),f=a([e]);async function g(a,b,c){let d=new URLSearchParams(b).toString(),e=await c(a,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:d}),f=null;try{f=await e.json()}catch{f=null}return{res:e,data:f}}async function h(a,b={},c=fetch){if(!a?.token_url)throw Error("provider.token_url required");if(!b.refresh_token)throw Error("refresh_token required");let d={grant_type:"refresh_token",refresh_token:b.refresh_token,client_id:b.client_id||""};b.client_secret&&(d.client_secret=b.client_secret);let{res:e,data:f}=await g(a.token_url,d,c);if(!e.ok)return{ok:!1,error:"refresh_failed",http_status:e.status,detail:f?.error||null};let i=function(a){if(!a||"object"!=typeof a)return null;let b=a.access_token||null;return b?{access_token:b,refresh_token:a.refresh_token||null,token_type:a.token_type||"Bearer",expires_in:Number.isFinite(a.expires_in)?a.expires_in:null,scope:a.scope||null}:null}(f);return i?{ok:!0,...i,refresh_token:i.refresh_token||b.refresh_token}:{ok:!1,error:"no_access_token"}}e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},59400:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{IY:()=>B,dV:()=>A,tE:()=>x,vC:()=>y});var e=c(77030),f=c(24516),g=c(58282),h=a([f,g]);function i(a){return String(process.env[a]||"").trim()}function j(a){try{let b=(0,f.getSecret)(a);if(b)return String(b).trim()}catch{}return i(a)}function k(a={}){let b=String(a.query||a.q||"").trim();if(!b)throw Error("query is required");return b}function l(a={}){return Math.min(Math.max(Number(a.count||5),1),10)}function m({title:a,url:b,snippet:c,source:d,rank:e=0,metadata:f={}}){return{rank:e+1,title:String(a||""),url:String(b||""),snippet:String(c||""),source:d,metadata:f}}async function n(a,b={},c=fetch){let d=await c(a,b);if(!d.ok){let a=d.statusText||String(d.status);try{let b=await d.text();b&&(a=`${a}: ${b.slice(0,200)}`)}catch{}throw Error(`Request failed: ${d.status} ${a}`.trim())}return d.json()}function o(a={},b=0){return m({rank:b,title:a.title,url:a.url,snippet:a.description||a.snippet,source:"brave",metadata:{age:a.age||null,family_friendly:a.family_friendly??null}})}function p(){let a={Accept:"application/json","Content-Type":"application/json"},b=j("FIRECRAWL_API_KEY");return b&&(a.Authorization=`Bearer ${b}`),a}function q(){return(j("FIRECRAWL_API_URL")||"https://api.firecrawl.dev").replace(/\/+$/g,"")}async function r(a={},b=fetch){let c=k(a),d=l(a),e=await n(`${q()}/v1/search`,{method:"POST",headers:p(),body:JSON.stringify({query:c,limit:d})},b);return{query:c,source:"firecrawl",results:(function(a={}){return Array.isArray(a.data)?a.data:Array.isArray(a.results)?a.results:Array.isArray(a.web)?a.web:Array.isArray(a.web?.results)?a.web.results:[]})(e).slice(0,d).map((a,b)=>m({rank:b,title:a.title,url:a.url||a.link,snippet:a.description||a.snippet||a.content||a.markdown,source:"firecrawl",metadata:a.metadata||{}})).filter(a=>a.url)}}async function s(a={},b=fetch){let c=k(a),d=l(a),e=j("SEARXNG_URL");if(!e)throw Error("SEARXNG_URL not configured");let f=new URL("/search",e.replace(/\/+$/g,""));f.searchParams.set("q",c),f.searchParams.set("format","json"),(a.search_lang||a.language)&&f.searchParams.set("language",String(a.search_lang||a.language));let g=await n(f,{headers:{Accept:"application/json"}},b);return{query:c,source:"searxng",results:(g.results||[]).slice(0,d).map((a,b)=>m({rank:b,title:a.title,url:a.url,snippet:a.content||a.snippet,source:"searxng",metadata:a.metadata||{}})).filter(a=>a.url)}}async function t(a={},b=fetch){let c=j("BRAVE_SEARCH_API_KEY");if(!c)throw Error("BRAVE_SEARCH_API_KEY not configured");let d=k(a),e=l(a),f=new URL("https://api.search.brave.com/res/v1/web/search");f.searchParams.set("q",d),f.searchParams.set("count",String(e)),a.country&&f.searchParams.set("country",String(a.country)),a.search_lang&&f.searchParams.set("search_lang",String(a.search_lang));let g=await n(f,{headers:{Accept:"application/json","X-Subscription-Token":c}},b),h=(g.web?.results||[]).slice(0,e).map(o);return{query:d,source:"brave",results:h}}function u(a=""){return String(a).replace(/&nbsp;/g," ").replace(/&amp;/g,"&").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&#39;/g,"'").replace(/&#x27;/g,"'")}function v(a=""){return u(String(a).replace(/<[^>]+>/g," ")).replace(/\s+/g," ").trim()}async function w(a={},b=fetch){let c=k(a),d=l(a),e=new URL("https://lite.duckduckgo.com/lite/");e.searchParams.set("q",c);let f=await b(e,{headers:{Accept:"text/html,application/xhtml+xml;q=0.9,*/*;q=0.2","User-Agent":"MadarxOS/1.0 (+local research tool)"}});if(!f.ok)throw Error(`DuckDuckGo Lite search failed: ${f.status}`);let g=await f.text();return{query:c,source:"fetch",results:function(a="",b=5){let c=[...String(a).matchAll(/<a\b[^>]*href=["'][^"']+["'][^>]*>[\s\S]*?<\/a>/gi)],d=[...String(a).matchAll(/<td\b[^>]*class=["'][^"']*result-snippet[^"']*["'][^>]*>([\s\S]*?)<\/td>/gi)].map(a=>v(a[1])),e=[];for(let a of c){let c=a[0].match(/<a\b[^>]*>/i)?.[0]||"",f=v(a[0]),g=function(a=""){try{let b=new URL(a,"https://lite.duckduckgo.com"),c=b.searchParams.get("uddg");if(c)return c;if(["http:","https:"].includes(b.protocol))return b.toString()}catch{}return a}(function(a,b){let c=a.match(RegExp(`${b}\\s*=\\s*["']([^"']+)["']`,"i"));return c?u(c[1]):""}(c,"href"));if(f&&/^https?:\/\//i.test(g)&&(e.push(m({rank:e.length,title:f,url:g,snippet:d[e.length]||"",source:"duckduckgo_lite",metadata:{}})),e.length>=b))break}return e}(g,d)}}async function x(a={},b={}){let c=b.agent_id??null,d=function(){let a=i("MADARX_WEB_PROVIDER").toLowerCase();if(a){if(["firecrawl","searxng","brave","fetch"].includes(a))return a;throw Error(`Unsupported MADARX_WEB_PROVIDER: ${a}`)}return j("FIRECRAWL_API_URL")||j("FIRECRAWL_API_KEY")?"firecrawl":j("SEARXNG_URL")?"searxng":j("BRAVE_SEARCH_API_KEY")?"brave":"fetch"}();return"firecrawl"===d?r(a,(0,g.N)("web_search",c)):"searxng"===d?s(a,(0,g.N)("web_search",c)):"brave"===d?t(a,(0,g.N)("web_search",c)):w(a,(0,g.N)("web_search",c))}function y(a){let b;try{b=new URL(String(a||""))}catch{throw Error("url must be a valid URL")}if(!["http:","https:"].includes(b.protocol))throw Error("Only http and https URLs are supported");let c=b.hostname.replace(/^\[|\]$/g,"").toLowerCase();if(!c)throw Error("URL host is required");if("localhost"===c||c.endsWith(".localhost")||c.endsWith(".local"))throw Error("Local/private network URLs are blocked");let d=e.isIP(c);if(4===d&&function(a){let b=a.split(".").map(Number);if(4!==b.length||b.some(a=>!Number.isInteger(a)||a<0||a>255))return!1;let[c,d]=b;return 10===c||127===c||169===c&&254===d||172===c&&d>=16&&d<=31||192===c&&168===d||0===c}(c)||6===d&&function(a){let b=a.toLowerCase();return"::1"===b||b.startsWith("fc")||b.startsWith("fd")||b.startsWith("fe80:")||"::"===b||b.startsWith("0:")}(c))throw Error("Local/private network URLs are blocked");return b}function z(a){return String(a||"").replace(/<script\b[^>]*>[\s\S]*?<\/script>/gi," ").replace(/<style\b[^>]*>[\s\S]*?<\/style>/gi," ").replace(/<noscript\b[^>]*>[\s\S]*?<\/noscript>/gi," ").replace(/<!--[\s\S]*?-->/g," ").replace(/<\/(p|div|section|article|header|footer|main|li|h[1-6]|tr)>/gi,"\n").replace(/<[^>]+>/g," ").replace(/&nbsp;/g," ").replace(/&amp;/g,"&").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&#39;/g,"'").replace(/[ \t]+\n/g,"\n").replace(/\n{3,}/g,"\n\n").replace(/[ \t]{2,}/g," ").trim()}async function A(a={},b={}){let c=b.agent_id??null,d=(0,g.N)("web_fetch",c),e=y(a.url),f=Math.min(Math.max(Number(a.max_bytes||512e3),1024),512e3),h=await d(e,{headers:{Accept:"text/html,text/plain,application/xhtml+xml,application/json;q=0.8,*/*;q=0.2","User-Agent":"MadarxOS/1.0 (+local research tool)"},redirect:"follow"});if(!h.ok)throw Error(`Fetch failed: ${h.status}`);let i=Number(h.headers.get("content-length")||0);if(i&&i>f)throw Error(`Response too large: ${i} bytes`);let j=h.body?.getReader();if(!j){let a=await h.text();if(Buffer.byteLength(a,"utf8")>f)throw Error("Response too large");return{url:e.toString(),status:h.status,content_type:h.headers.get("content-type")||"",text:z(a)}}let k=[],l=0;for(;;){let{value:a,done:b}=await j.read();if(b)break;if((l+=a.byteLength)>f)throw Error("Response too large");k.push(a)}let m=Buffer.concat(k).toString("utf8"),n=h.headers.get("content-type")||"";return{url:h.url||e.toString(),status:h.status,content_type:n,text:z(m).slice(0,Math.min(f,12e4)),source:{url:h.url||e.toString(),fetched_at:new Date().toISOString()}}}async function B(a={},b={}){let c=b.agent_id??null,d=y(a.url);if(!j("FIRECRAWL_API_URL")&&!j("FIRECRAWL_API_KEY"))return A(a,b);let e=await n(`${q()}/v1/scrape`,{method:"POST",headers:p(),body:JSON.stringify({url:d.toString(),formats:["markdown"]})},(0,g.N)("web_extract",c)),f=e.data||e,h=String(f.markdown||f.content||f.text||"");return{url:d.toString(),status:200,content_type:"text/markdown",text:h.slice(0,12e4),metadata:f.metadata||{},source:{provider:"firecrawl",url:d.toString(),fetched_at:new Date().toISOString()}}}[f,g]=h.then?(await h)():h,d()}catch(a){d(a)}})},60105:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{$S:()=>at,AD:()=>ax,CM:()=>_,Ck:()=>N,Dg:()=>function a({title:b,kind:c="html",content:d,project_id:k=null,agent_id:l=null,space_id:n=null,heartbeat_task_id:o=null,dedupe_key:p=null}){(0,i.Jh)();let r=k||q.Sk,s=(0,q.hF)({status:"all"}).find(a=>a.id===r||a.slug===r),t=s?s.id:q.Sk,u=(0,j.Kg)(t),v=(b||"artifact").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"artifact",w=l||"main-orchestrator",y=""===p?null:p||function({agent_id:a,title:b,project_id:c}){let d=new Date().toISOString().slice(0,10),e=String(b||"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"");return g.createHash("sha256").update([a||"main-orchestrator",c||q.Sk,e,d].join("|")).digest("hex").slice(0,32)}({agent_id:w,title:b,project_id:t}),z=function({heartbeat_task_id:a,dedupe_key:b,project_id:c}){if(!a&&!b)return null;let d=(0,h.getDb)(),e=c||q.Sk;if(a){let b=d.prepare("SELECT id, path, kind, title FROM artifacts WHERE heartbeat_task_id = ? LIMIT 1").get(String(a));if(b)return b}if(b){let a=d.prepare("SELECT id, path, kind, title FROM artifacts WHERE dedupe_key = ? AND project_id = ? LIMIT 1").get(String(b),e);if(a)return a}return null}({heartbeat_task_id:o,dedupe_key:y,project_id:t});if(z)return{artifact_id:z.id,file_path:z.path,title:z.title||b,kind:z.kind||c,deduped:!0};let A=s&&s.org_id?s.org_id:"personal-org",B=(0,x.Pf)();function C(a,b){return B?(e.writeFileSync(a,(0,x.A5)(A,b)),{encrypted:1,encryption_key_id:A}):(e.writeFileSync(a,b,"utf8"),{encrypted:0,encryption_key_id:null})}let D="main-orchestrator"===w?"madarX Main Agent":(a=>{try{let b=a.prepare("SELECT name FROM agents WHERE id = ?").get(w);return b?.name||w}catch{return w}})((0,h.getDb)());if("markdown"===c||"text"===c){let a=(0,m.vr)(d||""),c=(0,m.j7)({title:b,markdown:a}),e=f.join(u,`${v}-${Date.now().toString(36)}.md`),{encrypted:g,encryption_key_id:h}=C(e,a),j=(0,i.z9)(e),k=X({kind:"artifact-created",title:`Created artifact: ${b}`,agent:D,agent_id:w,artifact:j,preview:a.slice(0,200),triggered_by:"claude",status:"complete"}),l=Y({run_id:k.id,agent_id:w,file_path:j,kind:"document",title:b,content:c,source_md:a,project_id:t,encrypted:g,encryption_key_id:h,space_id:n,heartbeat_task_id:o,dedupe_key:y});try{(0,q.Ip)(t,{action:"project.artifact.created",actor_type:"agent",agent_id:w,run_id:k.id,title:`Created artifact: ${b}`,summary:`New document "${b}" is in the library.`,status:"complete",source:"artifact",update_kind:"progress",details:{artifact_id:l,kind:"document",folder_id:null}})}catch{}return{artifact_id:l,file_path:j,title:b,kind:"document"}}if("html"===c){let c=(d||"").trimStart().slice(0,200).toLowerCase();if(!(c.startsWith("<!doctype")||c.startsWith("<html")||c.includes("<body")))return a({title:b,kind:"markdown",content:d,project_id:k,agent_id:l,space_id:n,heartbeat_task_id:o,dedupe_key:p})}let E=(d||"").trimStart().slice(0,200).toLowerCase(),F=E.startsWith("<!doctype")||E.startsWith("<html")||E.includes("<body"),G="html"===c||F?(0,m.vr)(d||""):d||"",H=f.join(u,`${v}-${Date.now().toString(36)}.${"html"===c||F?"html":"txt"}`),{encrypted:I,encryption_key_id:J}=C(H,G),K=(0,i.z9)(H),L=X({kind:"artifact-created",title:`Created artifact: ${b}`,agent:D,agent_id:w,artifact:K,preview:G.slice(0,200),triggered_by:"claude",status:"complete"}),M=Y({run_id:L.id,agent_id:w,file_path:K,kind:c,title:b,content:G,project_id:t,encrypted:I,encryption_key_id:J,space_id:n,heartbeat_task_id:o,dedupe_key:y});try{(0,q.Ip)(t,{action:"project.artifact.created",actor_type:"agent",agent_id:w,run_id:L.id,title:`Created artifact: ${b}`,summary:`New ${c} artifact "${b}" is in the library.`,status:"complete",source:"artifact",update_kind:"progress",details:{artifact_id:M,kind:c,folder_id:null}})}catch{}return{artifact_id:M,file_path:K,title:b,kind:c}},Gu:()=>am,IG:()=>ak,JY:()=>K,K2:()=>I,Mh:()=>Q,NK:()=>ai,Nv:()=>ag,OH:()=>ab,PF:()=>R,RB:()=>ad,RG:()=>O,S9:()=>aa,Sn:()=>ac,UA:()=>as,V1:()=>M,W1:()=>L,WU:()=>G,Xr:()=>J,YS:()=>ap,_u:()=>S,appendAudit:()=>W,bC:()=>af,eP:()=>$,fB:()=>ar,fk:()=>aq,jZ:()=>V,mk:()=>aj,mo:()=>au,n1:()=>U,nF:()=>al,q:()=>av,recordArtifact:()=>Y,recordRun:()=>X,v:()=>P,vc:()=>F,wn:()=>T,x4:()=>ae});var e=c(73024),f=c(76760),g=c(77598),h=c(34255),i=c(9381),j=c(73066),k=c(90712),l=c(14743),m=c(8727),n=c(40563),o=c(8437),p=c(72326),q=c(61423),r=c(83963),s=c(40718),t=c(60897),u=c(67179),v=c(9001),w=c(81833),x=c(79133),y=a([h,j,l,m,n,o,p,q,r,s,u,v,w]);function z(a){return String(a||"agent").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,64)||"agent"}function A(){return new Date().toISOString().slice(0,10)}function B(a,b){if(!a)return b;try{return JSON.parse(a)}catch{return b}}function C(a){return a?{id:a.id,name:a.name,type:a.type,engine:(0,p.$k)(a.engine),model:a.model||(0,p.Qp)(a.engine),mission:a.mission,schedule:a.schedule,tools:B(a.tools,[]),status:a.status,approval:a.approval,generated:1===a.generated,files:B(a.files,[]),system_prompt:a.system_prompt||null,expected_output:a.expected_output||null,memory:B(a.memory,[]),created_at:a.created_at,last_heartbeat:a.last_heartbeat,last_run_at:a.last_run_at,next_run_at:a.next_run_at,reports_to:a.reports_to||null,role:a.role||null,title:a.title||null,status_reason:a.status_reason||null,autonomy_mode:a.autonomy_mode||null,budget_monthly_cents:Number(a.budget_monthly_cents||0),spent_monthly_cents:Number(a.spent_monthly_cents||0),permissions_json:B(a.permissions_json,{}),metadata_json:B(a.metadata_json,{}),project_id:a.project_id||null,template_slug:a.template_slug||null,default_space_id:a.default_space_id||null}:null}function D(a){return a?{id:a.id,agent_id:a.agent_id,agent_name:a.agent_name,schedule:a.schedule,action_kind:a.action_kind,enabled:1===a.enabled,next_run_at:a.next_run_at,last_run_at:a.last_run_at,delivery:a.delivery,approval:a.approval,last_queued_at:a.last_queued_at,last_queued_window:a.last_queued_window,updated_at:a.updated_at}:null}function E(a){return a?{...a}:null}function F(){return(0,h.getDb)().prepare("SELECT * FROM agents ORDER BY generated ASC, name ASC").all().map(C)}function G(a){let b=(0,h.getDb)();return C(b.prepare("SELECT * FROM agents WHERE id = ?").get(a))}function H(a){return a?{id:a.id,agent_id:a.agent_id,tool_name:a.tool_name,mode:a.mode,created_at:a.created_at,updated_at:a.updated_at}:null}function I(a){return(0,h.getDb)().prepare("SELECT * FROM agent_tool_permissions WHERE agent_id = ? ORDER BY tool_name ASC").all(a).map(H)}function J(a,b,c="approval_required"){if(!a||!b)throw Error("agent_id and tool_name are required");if(!["auto","approval_required","disabled"].includes(c))throw Error(`Invalid tool permission mode: ${c}`);let d=(0,h.getDb)(),e=(0,h.nowIso)(),f=`perm-${a}-${b}`.replace(/[^a-zA-Z0-9_-]/g,"-");return d.prepare(`
2995
3039
  INSERT INTO agent_tool_permissions (id, agent_id, tool_name, mode, created_at, updated_at)
2996
3040
  VALUES (?, ?, ?, ?, ?, ?)
2997
3041
  ON CONFLICT(agent_id, tool_name) DO UPDATE SET mode=excluded.mode, updated_at=excluded.updated_at
2998
- `).run(f,a,b,c,e,e),H(d.prepare("SELECT * FROM agent_tool_permissions WHERE agent_id = ? AND tool_name = ?").get(a,b))}function K({silent:a=!1}={}){let b=["directory_list","file_read","file_search","terminal_run","web_search","web_fetch"],c=ab({id:"ops-agent",name:"Caretaker",type:"ops",mission:"Run safe daily operations checks for madarX OS, inspect local workspace state, summarize risks, and prepare owner-ready next actions without external sends or destructive changes.",schedule:"daily 08:00",engine:"ollama",model:(0,p.Qp)("ollama"),tools:b,approval:"human-in-loop",suppress_live_event:a});for(let a of(af({agent_id:"ops-agent",name:"Caretaker",schedule:"daily 08:00",action_kind:"agent-tick",approval:"human-in-loop"}),b)){let b=["directory_list","file_read","file_search","web_search","web_fetch"].includes(a)?"auto":"approval_required";J("ops-agent",a,b)}return V({type:"agent.ops.ensure",summary:"Ensured Caretaker",status:"complete",meta:{agent_id:"ops-agent"}}),{...c,permissions:I("ops-agent")}}function L(a){let b=(0,h.getDb)().prepare("SELECT memory FROM agents WHERE id = ?").get(a);return b?B(b.memory,[]):null}function M(a,b){let c=L(a);if(!c)return{ok:!1,error:"agent not found"};let d=Number(b);if(!Number.isInteger(d)||d<0||d>=c.length)return{ok:!1,error:"memory index out of range"};let e=c.splice(d,1)[0];return(0,h.getDb)().prepare("UPDATE agents SET memory = ? WHERE id = ?").run(JSON.stringify(c),a),V({type:"agent.memory.delete",summary:`Deleted memory entry for ${a}`,status:"complete",meta:{agent_id:a,index:d}}),{ok:!0,removed:e,memory:c}}function N(){return(0,h.getDb)().prepare("SELECT * FROM schedules ORDER BY enabled DESC, next_run_at ASC").all().map(D)}function O(a=20){return(0,h.getDb)().prepare("SELECT * FROM runs ORDER BY at DESC LIMIT ?").all(a).map(E)}function P(a){let b=(0,h.getDb)();return E(b.prepare("SELECT * FROM runs WHERE id = ?").get(a))}function Q(a,b={}){let c=["status","artifact","preview","output"],d=Object.entries(b).filter(([a])=>c.includes(a));if(!d.length)return P(a);let e=(0,h.getDb)(),f=d.map(([a])=>`${a} = ?`).join(", "),g=d.map(([,a])=>a??null);return e.prepare(`UPDATE runs SET ${f} WHERE id = ?`).run(...g,a),P(a)}function R(a=20){return(0,h.getDb)().prepare("SELECT * FROM audit_logs ORDER BY at DESC LIMIT ?").all(a)}function S(a=50){return(0,h.getDb)().prepare("SELECT * FROM artifacts ORDER BY created_at DESC LIMIT ?").all(a)}function T({title_query:a,agent_id:b,agent_name:c,kind:d,project_id:e,space_id:f,limit:g=10}={}){let i=(0,h.getDb)(),j=[],k=[];if(a){let b=String(a).toLowerCase().split(/\s+/).map(a=>a.replace(/[^a-z0-9]+/g,"")).filter(Boolean);if(0===b.length)j.push("LOWER(a.title) LIKE ?"),k.push(`%${String(a).toLowerCase()}%`);else for(let a of b)j.push("LOWER(a.title) LIKE ?"),k.push(`%${a}%`)}if(b&&(j.push("a.agent_id = ?"),k.push(String(b))),d&&(j.push("a.kind = ?"),k.push(String(d))),e){let a=String(e),b=(0,q.hF)({status:"all"}).find(b=>b.id===a||b.slug===a);j.push("a.project_id = ?"),k.push(b?b.id:a)}f&&(j.push("a.space_id = ?"),k.push(String(f)));let l=`
3042
+ `).run(f,a,b,c,e,e),H(d.prepare("SELECT * FROM agent_tool_permissions WHERE agent_id = ? AND tool_name = ?").get(a,b))}function K(a,b=[]){if(!a)return{ok:!1,error:"agent_id is required"};let c=(0,h.getDb)();if(!c.prepare("SELECT id, tools FROM agents WHERE id = ?").get(a))return{ok:!1,error:"agent not found"};let d=new Map((0,s.n4)().map(a=>[a.name,a])),e=[...new Set((Array.isArray(b)?b:[]).map(a=>String(a||"").trim()).filter(a=>a&&d.has(a)))],f=new Set(e),g=I(a),i=new Map(g.map(a=>[a.tool_name,a.mode])),j=new Set(g.filter(a=>"disabled"!==a.mode).map(a=>a.tool_name));for(let b of(c.prepare("UPDATE agents SET tools = ? WHERE id = ?").run(JSON.stringify(e),a),e)){let c=i.get(b);if(c&&"disabled"!==c)continue;let e=d.get(b),f=e?.risk_level==="low"||e?.approval_mode==="auto"?"auto":"approval_required";J(a,b,f)}for(let b of g)"disabled"===b.mode||f.has(b.tool_name)||J(a,b.tool_name,"disabled");let k=e.filter(a=>!j.has(a)),l=[...j].filter(a=>!f.has(a));return W({type:"agent.tools.update",summary:`Updated toolset for ${a}`,status:"complete",meta:{agent_id:a,added:k,removed:l,count:e.length,surface:"agent-detail-simple"}}),{ok:!0,tools:e,added:k,removed:l}}function L({silent:a=!1}={}){let b=["directory_list","file_read","file_search","terminal_run","web_search","web_fetch"],c=ac({id:"ops-agent",name:"Caretaker",type:"ops",mission:"Run safe daily operations checks for madarX OS, inspect local workspace state, summarize risks, and prepare owner-ready next actions without external sends or destructive changes.",schedule:"daily 08:00",engine:"ollama",model:(0,p.Qp)("ollama"),tools:b,approval:"human-in-loop",suppress_live_event:a});for(let a of(ag({agent_id:"ops-agent",name:"Caretaker",schedule:"daily 08:00",action_kind:"agent-tick",approval:"human-in-loop"}),b)){let b=["directory_list","file_read","file_search","web_search","web_fetch"].includes(a)?"auto":"approval_required";J("ops-agent",a,b)}return W({type:"agent.ops.ensure",summary:"Ensured Caretaker",status:"complete",meta:{agent_id:"ops-agent"}}),{...c,permissions:I("ops-agent")}}function M(a){let b=(0,h.getDb)().prepare("SELECT memory FROM agents WHERE id = ?").get(a);return b?B(b.memory,[]):null}function N(a,b){let c=M(a);if(!c)return{ok:!1,error:"agent not found"};let d=Number(b);if(!Number.isInteger(d)||d<0||d>=c.length)return{ok:!1,error:"memory index out of range"};let e=c.splice(d,1)[0];return(0,h.getDb)().prepare("UPDATE agents SET memory = ? WHERE id = ?").run(JSON.stringify(c),a),W({type:"agent.memory.delete",summary:`Deleted memory entry for ${a}`,status:"complete",meta:{agent_id:a,index:d}}),{ok:!0,removed:e,memory:c}}function O(){return(0,h.getDb)().prepare("SELECT * FROM schedules ORDER BY enabled DESC, next_run_at ASC").all().map(D)}function P(a=20){return(0,h.getDb)().prepare("SELECT * FROM runs ORDER BY at DESC LIMIT ?").all(a).map(E)}function Q(a){let b=(0,h.getDb)();return E(b.prepare("SELECT * FROM runs WHERE id = ?").get(a))}function R(a,b={}){let c=["status","artifact","preview","output"],d=Object.entries(b).filter(([a])=>c.includes(a));if(!d.length)return Q(a);let e=(0,h.getDb)(),f=d.map(([a])=>`${a} = ?`).join(", "),g=d.map(([,a])=>a??null);return e.prepare(`UPDATE runs SET ${f} WHERE id = ?`).run(...g,a),Q(a)}function S(a=20){return(0,h.getDb)().prepare("SELECT * FROM audit_logs ORDER BY at DESC LIMIT ?").all(a)}function T(a=50){return(0,h.getDb)().prepare("SELECT * FROM artifacts ORDER BY created_at DESC LIMIT ?").all(a)}function U({title_query:a,agent_id:b,agent_name:c,kind:d,project_id:e,space_id:f,limit:g=10}={}){let i=(0,h.getDb)(),j=[],k=[];if(a){let b=String(a).toLowerCase().split(/\s+/).map(a=>a.replace(/[^a-z0-9]+/g,"")).filter(Boolean);if(0===b.length)j.push("LOWER(a.title) LIKE ?"),k.push(`%${String(a).toLowerCase()}%`);else for(let a of b)j.push("LOWER(a.title) LIKE ?"),k.push(`%${a}%`)}if(b&&(j.push("a.agent_id = ?"),k.push(String(b))),d&&(j.push("a.kind = ?"),k.push(String(d))),e){let a=String(e),b=(0,q.hF)({status:"all"}).find(b=>b.id===a||b.slug===a);j.push("a.project_id = ?"),k.push(b?b.id:a)}f&&(j.push("a.space_id = ?"),k.push(String(f)));let l=`
2999
3043
  SELECT a.id, a.title, a.kind, a.agent_id, a.run_id, a.path, a.project_id, a.space_id, a.created_at,
3000
3044
  ag.name AS agent_name
3001
3045
  FROM artifacts a
3002
3046
  LEFT JOIN agents ag ON ag.id = a.agent_id
3003
- `;return c&&(j.push("LOWER(ag.name) LIKE ?"),k.push(`%${String(c).toLowerCase()}%`)),j.length&&(l+=`WHERE ${j.join(" AND ")} `),l+="ORDER BY a.created_at DESC LIMIT ?",k.push(Math.max(1,Math.min(50,Number(g)||10))),i.prepare(l).all(...k)}function U(a){return a&&(0,h.getDb)().prepare("SELECT * FROM artifacts WHERE id = ?").get(String(a))||null}function V(a){let b=(0,h.getDb)(),c=(0,h.newId)("audit"),d=(0,h.nowIso)(),e=a.type||"info";b.prepare(`
3047
+ `;return c&&(j.push("LOWER(ag.name) LIKE ?"),k.push(`%${String(c).toLowerCase()}%`)),j.length&&(l+=`WHERE ${j.join(" AND ")} `),l+="ORDER BY a.created_at DESC LIMIT ?",k.push(Math.max(1,Math.min(50,Number(g)||10))),i.prepare(l).all(...k)}function V(a){return a&&(0,h.getDb)().prepare("SELECT * FROM artifacts WHERE id = ?").get(String(a))||null}function W(a){let b=(0,h.getDb)(),c=(0,h.newId)("audit"),d=(0,h.nowIso)(),e=a.type||"info";b.prepare(`
3004
3048
  INSERT INTO audit_logs (id, at, type, summary, status, meta)
3005
3049
  VALUES (?, ?, ?, ?, ?, ?)
3006
- `).run(c,d,e,a.summary||"",a.status||null,a.meta?JSON.stringify(a.meta):null);let f=e?e.startsWith("agent.")?"agents":"run"===e||e.startsWith("run.")||e.startsWith("claude.")?"runs":e.startsWith("artifact")?"artifacts":e.startsWith("approval")?"approvals":e.startsWith("heartbeat")||e.startsWith("cron")||e.startsWith("schedule")?"heartbeat":e.startsWith("connector")?"connectors":e.startsWith("local.process")||e.startsWith("process.")?"local_processes":e.startsWith("local.tool")||e.startsWith("local.terminal")||e.startsWith("local_tool")?"local_actions":e.startsWith("hermes")?"hermes_jobs":null:null;if(f)try{(0,v.jO)(f)}catch{}return{id:c,at:d,...a}}function W(a){let b=(0,h.getDb)(),c=(0,h.newId)("run"),d=(0,h.nowIso)(),e=a.status||"complete";return b.prepare(`
3050
+ `).run(c,d,e,a.summary||"",a.status||null,a.meta?JSON.stringify(a.meta):null);let f=e?e.startsWith("agent.")?"agents":"run"===e||e.startsWith("run.")||e.startsWith("claude.")?"runs":e.startsWith("artifact")?"artifacts":e.startsWith("approval")?"approvals":e.startsWith("heartbeat")||e.startsWith("cron")||e.startsWith("schedule")?"heartbeat":e.startsWith("connector")?"connectors":e.startsWith("local.process")||e.startsWith("process.")?"local_processes":e.startsWith("local.tool")||e.startsWith("local.terminal")||e.startsWith("local_tool")?"local_actions":e.startsWith("hermes")?"hermes_jobs":null:null;if(f)try{(0,v.jO)(f)}catch{}return{id:c,at:d,...a}}function X(a){let b=(0,h.getDb)(),c=(0,h.newId)("run"),d=(0,h.nowIso)(),e=a.status||"complete";return b.prepare(`
3007
3051
  INSERT INTO runs (id, kind, title, agent, agent_id, status, artifact, preview, output, command, triggered_by, at)
3008
3052
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
3009
- `).run(c,a.kind,a.title||a.kind,a.agent||null,a.agent_id||null,e,a.artifact||null,a.preview||null,a.output||null,a.command||null,a.triggered_by||"manual",d),V({type:"run",summary:a.title||a.kind,status:e,meta:{run_id:c,kind:a.kind}}),{id:c,at:d,status:e,...a}}function X({run_id:a,agent_id:b,file_path:c,kind:d,title:e,content:f,source_md:g=null,project_id:i=null,encrypted:j=0,encryption_key_id:k=null,space_id:l=null,heartbeat_task_id:m=null,dedupe_key:n=null}){let o=(0,h.getDb)(),p=(0,h.newId)("artifact"),r=i||q.Sk,s=null;if(b){let a=o.prepare("SELECT default_space_id FROM agents WHERE id = ?").get(String(b));s=a?.default_space_id||null}let t=(0,w.Om)([l,s]);return o.prepare(`
3053
+ `).run(c,a.kind,a.title||a.kind,a.agent||null,a.agent_id||null,e,a.artifact||null,a.preview||null,a.output||null,a.command||null,a.triggered_by||"manual",d),W({type:"run",summary:a.title||a.kind,status:e,meta:{run_id:c,kind:a.kind}}),{id:c,at:d,status:e,...a}}function Y({run_id:a,agent_id:b,file_path:c,kind:d,title:e,content:f,source_md:g=null,project_id:i=null,encrypted:j=0,encryption_key_id:k=null,space_id:l=null,heartbeat_task_id:m=null,dedupe_key:n=null}){let o=(0,h.getDb)(),p=(0,h.newId)("artifact"),r=i||q.Sk,s=null;if(b){let a=o.prepare("SELECT default_space_id FROM agents WHERE id = ?").get(String(b));s=a?.default_space_id||null}let t=(0,w.Om)([l,s]);return o.prepare(`
3010
3054
  INSERT INTO artifacts (id, run_id, agent_id, path, kind, title, content, source_md, project_id, encrypted, encryption_key_id, space_id, heartbeat_task_id, dedupe_key, created_at)
3011
3055
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
3012
- `).run(p,a||null,b||null,c,d||null,e||null,f||null,g,r,+!!j,k||null,t,m||null,n||null,(0,h.nowIso)()),p}function Y(a){if(!a)return null;let b=f.resolve(i.Dl,a);if((0,j.kA)(b))return b;let c=f.resolve(i.m4)+f.sep;return b.startsWith(c)?b:null}function Z(a,{title:b,content:c}){let d=(0,h.getDb)(),f=d.prepare("SELECT * FROM artifacts WHERE id = ?").get(a);if(!f)throw Error(`Artifact not found: ${a}`);let g=b||f.title,i=Y(f.path);if("document"===f.kind){let b=(0,m.vr)(c||""),f=(0,m.j7)({title:g,markdown:b});if(i)try{e.writeFileSync(i,b,"utf8")}catch{}d.prepare("UPDATE artifacts SET title = ?, content = ?, source_md = ? WHERE id = ?").run(g,f,b,a)}else{let b="html"===f.kind?(0,m.vr)(c||""):c||"";if(i)try{e.writeFileSync(i,b,"utf8")}catch{}d.prepare("UPDATE artifacts SET title = ?, content = ? WHERE id = ?").run(g,b,a)}if(f.project_id)try{(0,q.Ip)(f.project_id,{action:"project.artifact.updated",actor_type:"agent",agent_id:f.agent_id||"main-orchestrator",title:`Updated artifact: ${g}`,summary:`"${g}" was edited.`,status:"complete",source:"artifact",update_kind:"progress",details:{artifact_id:a,kind:f.kind,folder_id:null}})}catch{}return{artifact_id:a,title:g,kind:f.kind}}function $(a){let b=(0,h.getDb)(),c=b.prepare("SELECT path FROM artifacts WHERE id = ?").get(a);if(!c)return{ok:!1,error:"not found"};b.prepare("DELETE FROM artifacts WHERE id = ?").run(a);try{let a=(0,i.ny)(c.path),b=a&&e.existsSync(a)?e.realpathSync(a):null;b&&(0,j.kA)(b)&&e.unlinkSync(b)}catch{}return{ok:!0}}function _(a,{target_project_id:b}){if(!a)return{ok:!1,error:"artifact_id required"};if(!b)return{ok:!1,error:"target_project_id required"};let c=(0,h.getDb)(),d=c.prepare("SELECT * FROM artifacts WHERE id = ?").get(a);if(!d)return{ok:!1,error:"artifact not found"};let g=(0,q.U1)(b);if(!g)return{ok:!1,error:`target project not found: ${b}`};let k=d.project_id||q.Sk;if(k===g.id)return{ok:!0,moved:!1,artifact_id:a,project_id:g.id,reason:"already in target project"};let l=(0,q.U1)(k),m=(0,j.Kg)(g),n=Y(d.path),o=null;if(n){let a=f.basename(n),b=f.join(m,a);if(e.existsSync(b)){let c=f.extname(a),d=a.slice(0,a.length-c.length),g=1;for(;e.existsSync(f.join(m,`${d}-${g}${c}`));)g+=1;b=f.join(m,`${d}-${g}${c}`)}o=b}let p=d.encryption_key_id||l&&l.org_id||"personal-org",r=g.org_id||"personal-org",s=d.encryption_key_id;if(n&&o&&e.existsSync(n))try{if(1===d.encrypted&&p!==r){let a=e.readFileSync(n),b=(0,x.decryptFromDiskBuffer)(p,a);e.writeFileSync(o,(0,x.A5)(r,b)),e.unlinkSync(n),s=r}else e.renameSync(n,o)}catch(a){return{ok:!1,error:`disk move failed: ${a?.message||String(a)}`}}let t=o?(0,i.z9)(o):d.path;c.prepare("UPDATE artifacts SET project_id = ?, path = ?, encryption_key_id = ? WHERE id = ?").run(g.id,t,s,a);let u=`Moved "${d.title}" from ${l?.name||k} to ${g.name}`;try{(0,q.Ip)(k,{action:"project.artifact.moved_out",actor_type:"agent",agent_id:"main-orchestrator",title:`Moved artifact out: ${d.title}`,summary:u,status:"complete",source:"artifact",update_kind:"progress",details:{artifact_id:a,kind:d.kind,target_project_id:g.id,target_project_slug:g.slug}})}catch{}try{(0,q.Ip)(g.id,{action:"project.artifact.moved_in",actor_type:"agent",agent_id:"main-orchestrator",title:`Moved artifact in: ${d.title}`,summary:u,status:"complete",source:"artifact",update_kind:"progress",details:{artifact_id:a,kind:d.kind,source_project_id:k,source_project_slug:l?.slug||null}})}catch{}return V({type:"artifact.move",summary:u,status:"complete",meta:{artifact_id:a,source_project_id:k,target_project_id:g.id,old_path:d.path,new_path:t,re_encrypted:1===d.encrypted&&p!==r}}),{ok:!0,moved:!0,artifact_id:a,title:d.title,kind:d.kind,source_project_id:k,target_project_id:g.id,file_path:t}}function aa(){let a,b=0,c=0;try{a=(0,t.R2)().trimEnd()+"\n"}catch{return{scanned:b,updated:c}}let d=[];try{d=e.readdirSync(i.bo,{withFileTypes:!0}).filter(a=>a.isDirectory())}catch{return{scanned:b,updated:c}}for(let g of d){let d,h,j=f.join(i.bo,g.name,"skills.md");try{d=e.readFileSync(j,"utf8")}catch{continue}if(b++,!d.includes("## Core playbooks"))continue;let k=d.indexOf("\n## Default skills");if((h=k>=0?d.slice(0,k).trimEnd()+"\n\n"+a:d.trimEnd()+"\n\n"+a)!==d)try{e.writeFileSync(j,h),c++}catch{}}return{scanned:b,updated:c}}function ab(a={}){let b=(0,h.getDb)(),c=a.name||"Client Workspace Custom Agent",d=z(a.id||c),g=a.type||"custom",j=a.mission||"Support Client Workspace operations as a local sub-agent.",k=a.schedule||"on demand",l=null,m=null;try{l=(0,u.getConfig)("default_agent_engine",null),m=(0,u.getConfig)("default_agent_model",null)}catch{}let n=a.engine||l||"claude-code",o=(0,p.$k)(n),q=a.model||!a.engine&&m||(0,p.Qp)(o),r=Array.isArray(a.tools)?a.tools:String(a.tools||"web-search,browser,files,cron").split(",").map(a=>a.trim()).filter(Boolean),s=a.approval||"human-in-loop",w=a.system_prompt||function({name:a,mission:b,tools:c=[],approval:d="human-in-loop"}={}){return`You are ${a||"a madarX OS agent"}, a local-first scheduled worker managed by the madarX Main Agent.
3056
+ `).run(p,a||null,b||null,c,d||null,e||null,f||null,g,r,+!!j,k||null,t,m||null,n||null,(0,h.nowIso)()),p}function Z(a){if(!a)return null;let b=f.resolve(i.Dl,a);if((0,j.kA)(b))return b;let c=f.resolve(i.m4)+f.sep;return b.startsWith(c)?b:null}function $(a,{title:b,content:c}){let d=(0,h.getDb)(),f=d.prepare("SELECT * FROM artifacts WHERE id = ?").get(a);if(!f)throw Error(`Artifact not found: ${a}`);let g=b||f.title,i=Z(f.path);if("document"===f.kind){let b=(0,m.vr)(c||""),f=(0,m.j7)({title:g,markdown:b});if(i)try{e.writeFileSync(i,b,"utf8")}catch{}d.prepare("UPDATE artifacts SET title = ?, content = ?, source_md = ? WHERE id = ?").run(g,f,b,a)}else{let b="html"===f.kind?(0,m.vr)(c||""):c||"";if(i)try{e.writeFileSync(i,b,"utf8")}catch{}d.prepare("UPDATE artifacts SET title = ?, content = ? WHERE id = ?").run(g,b,a)}if(f.project_id)try{(0,q.Ip)(f.project_id,{action:"project.artifact.updated",actor_type:"agent",agent_id:f.agent_id||"main-orchestrator",title:`Updated artifact: ${g}`,summary:`"${g}" was edited.`,status:"complete",source:"artifact",update_kind:"progress",details:{artifact_id:a,kind:f.kind,folder_id:null}})}catch{}return{artifact_id:a,title:g,kind:f.kind}}function _(a){let b=(0,h.getDb)(),c=b.prepare("SELECT path FROM artifacts WHERE id = ?").get(a);if(!c)return{ok:!1,error:"not found"};b.prepare("DELETE FROM artifacts WHERE id = ?").run(a);try{let a=(0,i.ny)(c.path),b=a&&e.existsSync(a)?e.realpathSync(a):null;b&&(0,j.kA)(b)&&e.unlinkSync(b)}catch{}return{ok:!0}}function aa(a,{target_project_id:b}){if(!a)return{ok:!1,error:"artifact_id required"};if(!b)return{ok:!1,error:"target_project_id required"};let c=(0,h.getDb)(),d=c.prepare("SELECT * FROM artifacts WHERE id = ?").get(a);if(!d)return{ok:!1,error:"artifact not found"};let g=(0,q.U1)(b);if(!g)return{ok:!1,error:`target project not found: ${b}`};let k=d.project_id||q.Sk;if(k===g.id)return{ok:!0,moved:!1,artifact_id:a,project_id:g.id,reason:"already in target project"};let l=(0,q.U1)(k),m=(0,j.Kg)(g),n=Z(d.path),o=null;if(n){let a=f.basename(n),b=f.join(m,a);if(e.existsSync(b)){let c=f.extname(a),d=a.slice(0,a.length-c.length),g=1;for(;e.existsSync(f.join(m,`${d}-${g}${c}`));)g+=1;b=f.join(m,`${d}-${g}${c}`)}o=b}let p=d.encryption_key_id||l&&l.org_id||"personal-org",r=g.org_id||"personal-org",s=d.encryption_key_id;if(n&&o&&e.existsSync(n))try{if(1===d.encrypted&&p!==r){let a=e.readFileSync(n),b=(0,x.decryptFromDiskBuffer)(p,a);e.writeFileSync(o,(0,x.A5)(r,b)),e.unlinkSync(n),s=r}else e.renameSync(n,o)}catch(a){return{ok:!1,error:`disk move failed: ${a?.message||String(a)}`}}let t=o?(0,i.z9)(o):d.path;c.prepare("UPDATE artifacts SET project_id = ?, path = ?, encryption_key_id = ? WHERE id = ?").run(g.id,t,s,a);let u=`Moved "${d.title}" from ${l?.name||k} to ${g.name}`;try{(0,q.Ip)(k,{action:"project.artifact.moved_out",actor_type:"agent",agent_id:"main-orchestrator",title:`Moved artifact out: ${d.title}`,summary:u,status:"complete",source:"artifact",update_kind:"progress",details:{artifact_id:a,kind:d.kind,target_project_id:g.id,target_project_slug:g.slug}})}catch{}try{(0,q.Ip)(g.id,{action:"project.artifact.moved_in",actor_type:"agent",agent_id:"main-orchestrator",title:`Moved artifact in: ${d.title}`,summary:u,status:"complete",source:"artifact",update_kind:"progress",details:{artifact_id:a,kind:d.kind,source_project_id:k,source_project_slug:l?.slug||null}})}catch{}return W({type:"artifact.move",summary:u,status:"complete",meta:{artifact_id:a,source_project_id:k,target_project_id:g.id,old_path:d.path,new_path:t,re_encrypted:1===d.encrypted&&p!==r}}),{ok:!0,moved:!0,artifact_id:a,title:d.title,kind:d.kind,source_project_id:k,target_project_id:g.id,file_path:t}}function ab(){let a,b=0,c=0;try{a=(0,t.R2)().trimEnd()+"\n"}catch{return{scanned:b,updated:c}}let d=[];try{d=e.readdirSync(i.bo,{withFileTypes:!0}).filter(a=>a.isDirectory())}catch{return{scanned:b,updated:c}}for(let g of d){let d,h,j=f.join(i.bo,g.name,"skills.md");try{d=e.readFileSync(j,"utf8")}catch{continue}if(b++,!d.includes("## Core playbooks"))continue;let k=d.indexOf("\n## Default skills");if((h=k>=0?d.slice(0,k).trimEnd()+"\n\n"+a:d.trimEnd()+"\n\n"+a)!==d)try{e.writeFileSync(j,h),c++}catch{}}return{scanned:b,updated:c}}function ac(a={}){let b=(0,h.getDb)(),c=a.name||"Client Workspace Custom Agent",d=z(a.id||c),g=a.type||"custom",j=a.mission||"Support Client Workspace operations as a local sub-agent.",k=a.schedule||"on demand",l=null,m=null;try{l=(0,u.getConfig)("default_agent_engine",null),m=(0,u.getConfig)("default_agent_model",null)}catch{}let n=a.engine||l||"claude-code",o=(0,p.$k)(n),q=a.model||!a.engine&&m||(0,p.Qp)(o),r=Array.isArray(a.tools)?a.tools:String(a.tools||"web-search,browser,files,cron").split(",").map(a=>a.trim()).filter(Boolean),s=a.approval||"human-in-loop",w=a.system_prompt||function({name:a,mission:b,tools:c=[],approval:d="human-in-loop"}={}){return`You are ${a||"a madarX OS agent"}, a local-first scheduled worker managed by the madarX Main Agent.
3013
3057
 
3014
3058
  <agent_mission>
3015
3059
  ${b||"Support the user with concise, useful work."}
@@ -3094,14 +3138,14 @@ ${(a.tools||[]).map(a=>`- ${a}`).join("\n")}
3094
3138
  metadata_json=COALESCE(agents.metadata_json, excluded.metadata_json),
3095
3139
  project_id=COALESCE(agents.project_id, excluded.project_id),
3096
3140
  template_slug=COALESCE(agents.template_slug, excluded.template_slug)
3097
- `).run(d,c,g,o,q,j,k,JSON.stringify(r),s,JSON.stringify(B),w,A.expected_output,JSON.stringify(x),y,A.reports_to,A.role,A.title,A.status_reason,A.autonomy_mode,A.budget_monthly_cents,A.spent_monthly_cents,JSON.stringify(A.permissions_json),JSON.stringify(A.metadata_json),A.project_id,A.template_slug),!C&&(V({type:"agent.create",summary:`Created ${c}`,meta:{agent_id:d,files:B}}),a.suppress_live_event||(0,v.AC)({type:"agent_created",agent_id:d,agent_name:c,triggered_by:a.triggered_by||null})),{agent:{...A,status:"created",generated:!0,files:B},files:B}}function ac(a){let b=(0,h.getDb)(),c=C(b.prepare("SELECT * FROM agents WHERE id = ?").get(a));if(!c)return{ok:!1,error:"agent not found"};b.prepare("DELETE FROM agents WHERE id = ?").run(a),b.prepare("DELETE FROM schedules WHERE agent_id = ?").run(a);try{let b=f.join(i.bo,a);e.existsSync(b)&&e.rmSync(b,{recursive:!0,force:!0})}catch{}return V({type:"agent.delete",summary:`Deleted ${c.name}`,status:"complete",meta:{agent_id:a}}),{ok:!0}}function ad(a,b={}){let c=(0,h.getDb)(),d=[],e=[];if(void 0!==b.engine){let a=(0,p.$k)(b.engine);d.push("engine = ?"),e.push(a),void 0===b.model&&(d.push("model = ?"),e.push((0,p.Qp)(a)))}for(let a of(void 0!==b.model&&(d.push("model = ?"),e.push(b.model)),void 0!==b.schedule&&(d.push("schedule = ?"),e.push(b.schedule)),["reports_to","role","title","status","status_reason","autonomy_mode","budget_monthly_cents","spent_monthly_cents"]))void 0!==b[a]&&(d.push(`${a} = ?`),e.push(b[a]??null));for(let a of["system_prompt","mission","expected_output"])if(void 0!==b[a]){let c=null==b[a]?null:String(b[a]).trim();d.push(`${a} = ?`),e.push(c||null)}if(void 0!==b.default_space_id){let a=b.default_space_id,f=null;if(null!==a&&""!==a){if(!c.prepare("SELECT id FROM dashboard_spaces WHERE id = ?").get(String(a)))return{ok:!1,error:`unknown space_id: ${a}`};f=String(a)}d.push("default_space_id = ?"),e.push(f)}for(let a of["permissions_json","metadata_json"])void 0!==b[a]&&(d.push(`${a} = ?`),e.push(JSON.stringify(b[a]||{})));return d.length?(e.push(a),c.prepare(`UPDATE agents SET ${d.join(", ")} WHERE id = ?`).run(...e),V({type:"agent.update",summary:`Updated ${a}`,meta:{id:a,patch:b}}),{ok:!0}):{ok:!1,error:"nothing to update"}}function ae(a,b){let c=(0,h.getDb)(),d=c.prepare("SELECT id, name, metadata_json FROM agents WHERE id = ?").get(String(a||""));if(!d)return{ok:!1,error:`agent not found: ${a}`};let e=B(d.metadata_json,{}),f=b?String(b).trim():null;return f?e.whatsapp_notify_chat_id=f:delete e.whatsapp_notify_chat_id,c.prepare("UPDATE agents SET metadata_json = ? WHERE id = ?").run(JSON.stringify(e),d.id),V({type:"agent.whatsapp_notify",summary:f?`Enabled WhatsApp artifact notify for ${d.name} → ${f}`:`Cleared WhatsApp artifact notify for ${d.name}`,status:"complete",meta:{agent_id:d.id,chat_id:f}}),{ok:!0,agent_id:d.id,whatsapp_notify_chat_id:f}}function af(a={}){let b=(0,h.getDb)(),c=z(a.agent_id||a.agentId||a.id||a.name||"custom-agent"),d=G(c)||b.prepare("SELECT * FROM agents WHERE name = ?").get(a.name||""),e=d?C(d):{id:c,name:a.name||c,approval:"human-in-loop"},f=a.schedule||"daily 07:30",g=`schedule-${e.id}`,i=+(!1!==a.enabled),j=(0,k.F)(f),l=(0,h.nowIso)(),m=String(f).trim().toLowerCase().startsWith("every")?"fire_once":"fire_all",n=a.catchup_policy||m;return b.prepare(`
3141
+ `).run(d,c,g,o,q,j,k,JSON.stringify(r),s,JSON.stringify(B),w,A.expected_output,JSON.stringify(x),y,A.reports_to,A.role,A.title,A.status_reason,A.autonomy_mode,A.budget_monthly_cents,A.spent_monthly_cents,JSON.stringify(A.permissions_json),JSON.stringify(A.metadata_json),A.project_id,A.template_slug),!C&&(W({type:"agent.create",summary:`Created ${c}`,meta:{agent_id:d,files:B}}),a.suppress_live_event||(0,v.AC)({type:"agent_created",agent_id:d,agent_name:c,triggered_by:a.triggered_by||null})),{agent:{...A,status:"created",generated:!0,files:B},files:B}}function ad(a){let b=(0,h.getDb)(),c=C(b.prepare("SELECT * FROM agents WHERE id = ?").get(a));if(!c)return{ok:!1,error:"agent not found"};b.prepare("DELETE FROM agents WHERE id = ?").run(a),b.prepare("DELETE FROM schedules WHERE agent_id = ?").run(a);try{let b=f.join(i.bo,a);e.existsSync(b)&&e.rmSync(b,{recursive:!0,force:!0})}catch{}return W({type:"agent.delete",summary:`Deleted ${c.name}`,status:"complete",meta:{agent_id:a}}),{ok:!0}}function ae(a,b={}){let c=(0,h.getDb)(),d=[],e=[];if(void 0!==b.engine){let a=(0,p.$k)(b.engine);d.push("engine = ?"),e.push(a),void 0===b.model&&(d.push("model = ?"),e.push((0,p.Qp)(a)))}for(let a of(void 0!==b.model&&(d.push("model = ?"),e.push(b.model)),void 0!==b.schedule&&(d.push("schedule = ?"),e.push(b.schedule)),["reports_to","role","title","status","status_reason","autonomy_mode","budget_monthly_cents","spent_monthly_cents"]))void 0!==b[a]&&(d.push(`${a} = ?`),e.push(b[a]??null));for(let a of["system_prompt","mission","expected_output"])if(void 0!==b[a]){let c=null==b[a]?null:String(b[a]).trim();d.push(`${a} = ?`),e.push(c||null)}if(void 0!==b.default_space_id){let a=b.default_space_id,f=null;if(null!==a&&""!==a){if(!c.prepare("SELECT id FROM dashboard_spaces WHERE id = ?").get(String(a)))return{ok:!1,error:`unknown space_id: ${a}`};f=String(a)}d.push("default_space_id = ?"),e.push(f)}for(let a of["permissions_json","metadata_json"])void 0!==b[a]&&(d.push(`${a} = ?`),e.push(JSON.stringify(b[a]||{})));return d.length?(e.push(a),c.prepare(`UPDATE agents SET ${d.join(", ")} WHERE id = ?`).run(...e),W({type:"agent.update",summary:`Updated ${a}`,meta:{id:a,patch:b}}),{ok:!0}):{ok:!1,error:"nothing to update"}}function af(a,b){let c=(0,h.getDb)(),d=c.prepare("SELECT id, name, metadata_json FROM agents WHERE id = ?").get(String(a||""));if(!d)return{ok:!1,error:`agent not found: ${a}`};let e=B(d.metadata_json,{}),f=b?String(b).trim():null;return f?e.whatsapp_notify_chat_id=f:delete e.whatsapp_notify_chat_id,c.prepare("UPDATE agents SET metadata_json = ? WHERE id = ?").run(JSON.stringify(e),d.id),W({type:"agent.whatsapp_notify",summary:f?`Enabled WhatsApp artifact notify for ${d.name} → ${f}`:`Cleared WhatsApp artifact notify for ${d.name}`,status:"complete",meta:{agent_id:d.id,chat_id:f}}),{ok:!0,agent_id:d.id,whatsapp_notify_chat_id:f}}function ag(a={}){let b=(0,h.getDb)(),c=z(a.agent_id||a.agentId||a.id||a.name||"custom-agent"),d=G(c)||b.prepare("SELECT * FROM agents WHERE name = ?").get(a.name||""),e=d?C(d):{id:c,name:a.name||c,approval:"human-in-loop"},f=a.schedule||"daily 07:30",g=`schedule-${e.id}`,i=+(!1!==a.enabled),j=(0,k.F)(f),l=(0,h.nowIso)(),m=String(f).trim().toLowerCase().startsWith("every")?"fire_once":"fire_all",n=a.catchup_policy||m;return b.prepare(`
3098
3142
  INSERT INTO schedules (id, agent_id, agent_name, schedule, action_kind, enabled, next_run_at, delivery, approval, updated_at, catchup_policy)
3099
3143
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
3100
3144
  ON CONFLICT(id) DO UPDATE SET
3101
3145
  schedule=excluded.schedule, action_kind=excluded.action_kind, enabled=excluded.enabled,
3102
3146
  next_run_at=excluded.next_run_at, delivery=excluded.delivery, approval=excluded.approval,
3103
3147
  updated_at=excluded.updated_at, catchup_policy=excluded.catchup_policy
3104
- `).run(g,e.id,e.name,f,a.action_kind||"agent-tick",i,j,a.delivery||"dashboard + owner approval",a.approval||e.approval||"human-in-loop",l,n),V({type:"schedule.upsert",summary:`Scheduled ${e.name} \xb7 ${f}`,status:i?"enabled":"paused",meta:{schedule_id:g}}),{ok:!0,schedule:D(b.prepare("SELECT * FROM schedules WHERE id = ?").get(g))}}function ag(a){return(0,i.Jh)(),f.join(i.m4,`madarx-${a}-${A()}.md`)}function ah({triggered_by:a="manual"}={}){let b=ag("competitor-report"),c=A(),d=`# Client Workspace Daily Competitor Report — ${c}
3148
+ `).run(g,e.id,e.name,f,a.action_kind||"agent-tick",i,j,a.delivery||"dashboard + owner approval",a.approval||e.approval||"human-in-loop",l,n),W({type:"schedule.upsert",summary:`Scheduled ${e.name} \xb7 ${f}`,status:i?"enabled":"paused",meta:{schedule_id:g}}),{ok:!0,schedule:D(b.prepare("SELECT * FROM schedules WHERE id = ?").get(g))}}function ah(a){return(0,i.Jh)(),f.join(i.m4,`madarx-${a}-${A()}.md`)}function ai({triggered_by:a="manual"}={}){let b=ah("competitor-report"),c=A(),d=`# Client Workspace Daily Competitor Report — ${c}
3105
3149
 
3106
3150
  Generated by: Competitor Intelligence Agent
3107
3151
 
@@ -3131,7 +3175,7 @@ Client Workspace should defend its niche perfumery authority while bundling work
3131
3175
  2. Draft 5 Instagram reel concepts and 3 WhatsApp concierge messages.
3132
3176
  3. Build a one-page workshop campaign mockup.
3133
3177
  4. Send owner report for approval at 08:00.
3134
- `;e.writeFileSync(b,d);let f="Daily Client Workspace competitor report",g=(0,m.vr)(d),h=(0,m.j7)({title:f,markdown:g}),j=W({kind:"competitor-report",title:f,agent:"Competitor Intelligence Agent",agent_id:"competitor-intelligence",artifact:(0,i.z9)(b),preview:d,triggered_by:a});return X({run_id:j.id,agent_id:"competitor-intelligence",file_path:(0,i.z9)(b),kind:"document",title:f,content:h,source_md:g}),j}function ai({triggered_by:a="manual"}={}){let b=ag("marketing-plan"),c=A(),d=`# Client Workspace 7-Day Marketing Plan — ${c}
3178
+ `;e.writeFileSync(b,d);let f="Daily Client Workspace competitor report",g=(0,m.vr)(d),h=(0,m.j7)({title:f,markdown:g}),j=X({kind:"competitor-report",title:f,agent:"Competitor Intelligence Agent",agent_id:"competitor-intelligence",artifact:(0,i.z9)(b),preview:d,triggered_by:a});return Y({run_id:j.id,agent_id:"competitor-intelligence",file_path:(0,i.z9)(b),kind:"document",title:f,content:h,source_md:g}),j}function aj({triggered_by:a="manual"}={}){let b=ah("marketing-plan"),c=A(),d=`# Client Workspace 7-Day Marketing Plan — ${c}
3135
3179
 
3136
3180
  Generated by: Marketing Strategist Agent
3137
3181
 
@@ -3157,17 +3201,17 @@ Day 7: Owner report — leads, bookings, content performance, next experiments.
3157
3201
  - Claude Code: build/update landing page mockup and QA screenshot.
3158
3202
  - Codex: analyze report data and campaign performance table.
3159
3203
  - Hermes: schedule reminders, draft WhatsApp/email replies, deliver owner briefing.
3160
- `;e.writeFileSync(b,d);let f="Client Workspace 7-day marketing plan",g=(0,m.vr)(d),h=(0,m.j7)({title:f,markdown:g}),j=W({kind:"marketing-plan",title:f,agent:"Marketing Strategist Agent",agent_id:"marketing-strategist",artifact:(0,i.z9)(b),preview:d,triggered_by:a});return X({run_id:j.id,agent_id:"marketing-strategist",file_path:(0,i.z9)(b),kind:"document",title:f,content:h,source_md:g}),j}function aj({triggered_by:a="manual"}={}){let b=(0,h.getDb)(),c=(0,h.nowIso)(),d=b.prepare("SELECT * FROM agents WHERE generated = 1").all().map(C);for(let a of d){let d,g=f.join(i.bo,a.id,"heartbeat.json");try{d=JSON.parse(e.readFileSync(g,"utf8"))}catch{d={...a}}d.status="heartbeat ok",d.last_heartbeat=c,d.next_run="on demand"===d.schedule?null:"next scheduled window",e.mkdirSync(f.dirname(g),{recursive:!0}),e.writeFileSync(g,JSON.stringify(d,null,2)),b.prepare("UPDATE agents SET last_heartbeat = ?, status = ? WHERE id = ?").run(c,"heartbeat ok",a.id)}return W({kind:"heartbeat",title:"Heartbeat tick completed",agent:"madarX Main Agent",agent_id:"main-orchestrator",artifact:"workspace/agents/*/heartbeat.json",preview:`Heartbeat checked ${d.length} agents at ${c}`,triggered_by:a})}function ak(a={},{triggered_by:b="manual"}={}){let c=Math.max(1,Math.min(50,Number(process.env.MAX_CLAUDE_TURNS||12)||12)),d=String(a.prompt||"Build a Client Workspace UI mockup and run browser QA.").replace(/\s+/g," ").slice(0,500),e=`claude -p ${JSON.stringify(d)} --allowedTools "Read,Write,Edit,Bash" --max-turns ${c} --output-format json`;return W({kind:"claude-code-dry-run",title:"Claude Code local runner command prepared",agent:"madarX Main Agent",agent_id:"main-orchestrator",status:"approval-needed",artifact:"audit log only - not executed",command:e,preview:`Approval required before executing:
3161
- ${e}`,triggered_by:b})}function al({project_id:a=null}={}){(0,i.Jh)();let b=(0,r.hC)(),c=a||null;if(c)try{let a=(0,q.hF)({status:"all"}).find(a=>a.id===c||a.slug===c);a&&(c=a.id)}catch{}let d=a=>!c||a?.project_id===c;return{ok:!0,product:"madarX OS",workspace:"Client Workspace",project_filter:c||null,projects:(0,q.hF)({status:"all"}),agents:F().filter(d),tasks:(0,r.Vk)({limit:100}).filter(d),runs:O(20).filter(d),audit:R(20).filter(d),activity:(0,r.kP)({limit:50}).filter(d),schedules:N().filter(d),connectors:(0,h.getDb)().prepare("SELECT * FROM connectors ORDER BY name ASC").all(),artifacts:S(500).filter(a=>d(a)||a.pinned_to_space_at),heartbeat_tasks:(0,n.N$)(20).filter(d),heartbeat_task_events:(0,n.vK)({limit:100}).filter(a=>!c||a.project_id===c||(0,h.getDb)().prepare("SELECT project_id FROM heartbeat_tasks WHERE id=?").get(a.task_id)?.project_id===c),approvals:(0,o.ct)({project_id:c,limit:20}),pending_approvals:(0,o.ct)({status:"pending",project_id:c,limit:20}),local_processes:function(a=20){return(0,h.getDb)().prepare("SELECT * FROM local_processes ORDER BY updated_at DESC LIMIT ?").all(a)}(20),local_tool_audit:R(50).filter(a=>String(a.type||"").startsWith("local.")&&d(a)).slice(0,20),main_agent_trust_mode:(0,s.yC)(),reporting:b,processes:function(a){try{let b=(0,h.getDb)(),c=a?"WHERE project_id = ?":"",d=a?[a]:[],e=b.prepare(`SELECT id, definition_slug, project_id, title, status, current_stage_slug, updated_at, completed_at
3204
+ `;e.writeFileSync(b,d);let f="Client Workspace 7-day marketing plan",g=(0,m.vr)(d),h=(0,m.j7)({title:f,markdown:g}),j=X({kind:"marketing-plan",title:f,agent:"Marketing Strategist Agent",agent_id:"marketing-strategist",artifact:(0,i.z9)(b),preview:d,triggered_by:a});return Y({run_id:j.id,agent_id:"marketing-strategist",file_path:(0,i.z9)(b),kind:"document",title:f,content:h,source_md:g}),j}function ak({triggered_by:a="manual"}={}){let b=(0,h.getDb)(),c=(0,h.nowIso)(),d=b.prepare("SELECT * FROM agents WHERE generated = 1").all().map(C);for(let a of d){let d,g=f.join(i.bo,a.id,"heartbeat.json");try{d=JSON.parse(e.readFileSync(g,"utf8"))}catch{d={...a}}d.status="heartbeat ok",d.last_heartbeat=c,d.next_run="on demand"===d.schedule?null:"next scheduled window",e.mkdirSync(f.dirname(g),{recursive:!0}),e.writeFileSync(g,JSON.stringify(d,null,2)),b.prepare("UPDATE agents SET last_heartbeat = ?, status = ? WHERE id = ?").run(c,"heartbeat ok",a.id)}return X({kind:"heartbeat",title:"Heartbeat tick completed",agent:"madarX Main Agent",agent_id:"main-orchestrator",artifact:"workspace/agents/*/heartbeat.json",preview:`Heartbeat checked ${d.length} agents at ${c}`,triggered_by:a})}function al(a={},{triggered_by:b="manual"}={}){let c=Math.max(1,Math.min(50,Number(process.env.MAX_CLAUDE_TURNS||12)||12)),d=String(a.prompt||"Build a Client Workspace UI mockup and run browser QA.").replace(/\s+/g," ").slice(0,500),e=`claude -p ${JSON.stringify(d)} --allowedTools "Read,Write,Edit,Bash" --max-turns ${c} --output-format json`;return X({kind:"claude-code-dry-run",title:"Claude Code local runner command prepared",agent:"madarX Main Agent",agent_id:"main-orchestrator",status:"approval-needed",artifact:"audit log only - not executed",command:e,preview:`Approval required before executing:
3205
+ ${e}`,triggered_by:b})}function am({project_id:a=null}={}){(0,i.Jh)();let b=(0,r.hC)(),c=a||null;if(c)try{let a=(0,q.hF)({status:"all"}).find(a=>a.id===c||a.slug===c);a&&(c=a.id)}catch{}let d=a=>!c||a?.project_id===c;return{ok:!0,product:"madarX OS",workspace:"Client Workspace",project_filter:c||null,projects:(0,q.hF)({status:"all"}),agents:F().filter(d),tasks:(0,r.Vk)({limit:100}).filter(d),runs:P(20).filter(d),audit:S(20).filter(d),activity:(0,r.kP)({limit:50}).filter(d),schedules:O().filter(d),connectors:(0,h.getDb)().prepare("SELECT * FROM connectors ORDER BY name ASC").all(),artifacts:T(500).filter(a=>d(a)||a.pinned_to_space_at),heartbeat_tasks:(0,n.N$)(20).filter(d),heartbeat_task_events:(0,n.vK)({limit:100}).filter(a=>!c||a.project_id===c||(0,h.getDb)().prepare("SELECT project_id FROM heartbeat_tasks WHERE id=?").get(a.task_id)?.project_id===c),approvals:(0,o.ct)({project_id:c,limit:20}),pending_approvals:(0,o.ct)({status:"pending",project_id:c,limit:20}),local_processes:function(a=20){return(0,h.getDb)().prepare("SELECT * FROM local_processes ORDER BY updated_at DESC LIMIT ?").all(a)}(20),local_tool_audit:S(50).filter(a=>String(a.type||"").startsWith("local.")&&d(a)).slice(0,20),main_agent_trust_mode:(0,s.yC)(),reporting:b,processes:function(a){try{let b=(0,h.getDb)(),c=a?"WHERE project_id = ?":"",d=a?[a]:[],e=b.prepare(`SELECT id, definition_slug, project_id, title, status, current_stage_slug, updated_at, completed_at
3162
3206
  FROM process_cases ${c}
3163
3207
  ORDER BY updated_at DESC
3164
- LIMIT 20`).all(...d),f=b.prepare(`SELECT status, COUNT(*) AS n FROM process_cases ${c} GROUP BY status`).all(...d).reduce((a,b)=>(a[b.status]=b.n,a),{});return{active_count:["intake","running","awaiting_approval"].reduce((a,b)=>a+(f[b]||0),0),by_status:f,recent_cases:e}}catch{return{active_count:0,by_status:{},recent_cases:[]}}}(c),hail:function(){try{let a=(0,h.getDb)().prepare("SELECT current_stage AS stage, COUNT(*) AS n FROM hail_engagements WHERE status = 'active' GROUP BY current_stage").all().reduce((a,b)=>(a[b.stage]=b.n,a),{});return{active_count:Object.values(a).reduce((a,b)=>a+b,0),by_stage:a}}catch{return{active_count:0,by_stage:{}}}}()}}function am(a){return a?{id:a.id,title:a.title,model:a.model,created_at:a.created_at,last_message_at:a.last_message_at,message_count:a.message_count,total_input_tokens:a.total_input_tokens,total_output_tokens:a.total_output_tokens,total_cache_read_tokens:a.total_cache_read_tokens,total_cache_creation_tokens:a.total_cache_creation_tokens,last_context_tokens:a.last_context_tokens}:null}function an(a){return a?{id:a.id,session_id:a.session_id,role:a.role,content:a.content,tool_calls:B(a.tool_calls,null),model:a.model,input_tokens:a.input_tokens,output_tokens:a.output_tokens,cache_read_tokens:a.cache_read_tokens,cache_creation_tokens:a.cache_creation_tokens,at:a.at}:null}function ao(a=50){return(0,h.getDb)().prepare("SELECT * FROM chat_sessions ORDER BY COALESCE(last_message_at, created_at) DESC LIMIT ?").all(a).map(am)}function ap(a){let b=(0,h.getDb)(),c=b.prepare("SELECT * FROM chat_sessions WHERE id = ?").get(a);if(!c)return null;let d=b.prepare("SELECT * FROM chat_messages WHERE session_id = ? ORDER BY at ASC").all(a).map(an);return{...am(c),messages:d}}function aq({title:a=null,model:b=null}={}){let c=(0,h.getDb)(),d=(0,h.newId)("chat"),e=(0,h.nowIso)();return c.prepare(`
3208
+ LIMIT 20`).all(...d),f=b.prepare(`SELECT status, COUNT(*) AS n FROM process_cases ${c} GROUP BY status`).all(...d).reduce((a,b)=>(a[b.status]=b.n,a),{});return{active_count:["intake","running","awaiting_approval"].reduce((a,b)=>a+(f[b]||0),0),by_status:f,recent_cases:e}}catch{return{active_count:0,by_status:{},recent_cases:[]}}}(c),hail:function(){try{let a=(0,h.getDb)().prepare("SELECT current_stage AS stage, COUNT(*) AS n FROM hail_engagements WHERE status = 'active' GROUP BY current_stage").all().reduce((a,b)=>(a[b.stage]=b.n,a),{});return{active_count:Object.values(a).reduce((a,b)=>a+b,0),by_stage:a}}catch{return{active_count:0,by_stage:{}}}}()}}function an(a){return a?{id:a.id,title:a.title,model:a.model,created_at:a.created_at,last_message_at:a.last_message_at,message_count:a.message_count,total_input_tokens:a.total_input_tokens,total_output_tokens:a.total_output_tokens,total_cache_read_tokens:a.total_cache_read_tokens,total_cache_creation_tokens:a.total_cache_creation_tokens,last_context_tokens:a.last_context_tokens}:null}function ao(a){return a?{id:a.id,session_id:a.session_id,role:a.role,content:a.content,tool_calls:B(a.tool_calls,null),model:a.model,input_tokens:a.input_tokens,output_tokens:a.output_tokens,cache_read_tokens:a.cache_read_tokens,cache_creation_tokens:a.cache_creation_tokens,at:a.at}:null}function ap(a=50){return(0,h.getDb)().prepare("SELECT * FROM chat_sessions ORDER BY COALESCE(last_message_at, created_at) DESC LIMIT ?").all(a).map(an)}function aq(a){let b=(0,h.getDb)(),c=b.prepare("SELECT * FROM chat_sessions WHERE id = ?").get(a);if(!c)return null;let d=b.prepare("SELECT * FROM chat_messages WHERE session_id = ? ORDER BY at ASC").all(a).map(ao);return{...an(c),messages:d}}function ar({title:a=null,model:b=null}={}){let c=(0,h.getDb)(),d=(0,h.newId)("chat"),e=(0,h.nowIso)();return c.prepare(`
3165
3209
  INSERT INTO chat_sessions
3166
3210
  (id, title, model, created_at, last_message_at, message_count,
3167
3211
  total_input_tokens, total_output_tokens,
3168
3212
  total_cache_read_tokens, total_cache_creation_tokens, last_context_tokens)
3169
3213
  VALUES (?, ?, ?, ?, ?, 0, 0, 0, 0, 0, 0)
3170
- `).run(d,a,b,e,e),{id:d,title:a,model:b,created_at:e,last_message_at:e}}function ar(a,{role:b,content:c="",tool_calls:d=null,model:e=null,input_tokens:f=0,output_tokens:g=0,cache_read_tokens:i=0,cache_creation_tokens:j=0}={}){if(!b)throw Error("role required");let k=(0,h.getDb)(),l=k.prepare("SELECT * FROM chat_sessions WHERE id = ?").get(a);if(!l)throw Error(`chat session ${a} not found`);let m=(0,h.newId)("msg"),n=(0,h.nowIso)(),o=d?JSON.stringify(d):null;k.prepare(`
3214
+ `).run(d,a,b,e,e),{id:d,title:a,model:b,created_at:e,last_message_at:e}}function as(a,{role:b,content:c="",tool_calls:d=null,model:e=null,input_tokens:f=0,output_tokens:g=0,cache_read_tokens:i=0,cache_creation_tokens:j=0}={}){if(!b)throw Error("role required");let k=(0,h.getDb)(),l=k.prepare("SELECT * FROM chat_sessions WHERE id = ?").get(a);if(!l)throw Error(`chat session ${a} not found`);let m=(0,h.newId)("msg"),n=(0,h.nowIso)(),o=d?JSON.stringify(d):null;k.prepare(`
3171
3215
  INSERT INTO chat_messages
3172
3216
  (id, session_id, role, content, tool_calls, model,
3173
3217
  input_tokens, output_tokens, cache_read_tokens, cache_creation_tokens, at)
@@ -3184,11 +3228,11 @@ ${e}`,triggered_by:b})}function al({project_id:a=null}={}){(0,i.Jh)();let b=(0,r
3184
3228
  total_cache_creation_tokens = total_cache_creation_tokens + ?,
3185
3229
  last_context_tokens = CASE WHEN ? > 0 THEN ? ELSE last_context_tokens END
3186
3230
  WHERE id = ?
3187
- `).run(p,e,n,0|f,0|g,0|i,0|j,q,q,a),{id:m,session_id:a,role:b,at:n}}function as(a,b){let c=(0,h.getDb)(),d=String(b||"").slice(0,200);return{ok:c.prepare("UPDATE chat_sessions SET title = ? WHERE id = ?").run(d,a).changes>0}}function at(a){return{ok:(0,h.getDb)().prepare("DELETE FROM chat_sessions WHERE id = ?").run(a).changes>0}}function au(a={}){let b=String(a.prompt||"").trim(),c=b.toLowerCase(),d=String(a.channel||"http"),e=a.from?String(a.from):null,f=(a,b)=>"whatsapp"!==d?a:{...a,channel:d,from:e,reply_text:function(a,b){if(!a)return b||"";let c=[];return a.title&&c.push(a.title),a.preview&&c.push(a.preview),!c.length&&b&&c.push(b),c.join("\n\n").replace(/`{1,3}/g,"").replace(/\*\*/g,"").replace(/<\/?[^>]+>/g,"").trim()}(a,b)};if(!b)return f(W({kind:"orchestrator-note",title:"Empty orchestrator command",agent:"madarX Main Agent",agent_id:"main-orchestrator",artifact:"none",preview:"Type a command for the madarX Main Agent."}),"Type a command for the madarX Main Agent.");if(c.includes("create agent")||c.includes("new agent")){let a=[];c.includes("instagram")&&a.push("instagram-public-view"),c.includes("tiktok")&&a.push("tiktok-public-view"),c.includes("web")&&a.push("web-search"),c.includes("browser")&&a.push("browser"),(c.includes("scrap")||c.includes("scrape"))&&a.push("browser-scrape"),(c.includes("mail")||c.includes("email"))&&a.push("gmail-draft"),(c.includes("ui")||c.includes("mockup")||c.includes("landing"))&&a.push("claude-code","browser-qa"),a.length||a.push("web-search","browser","files","cron");let d=c.includes("noon")?"daily 12:00":c.includes("08:15")?"daily 08:15":c.includes("daily")?"daily 07:30":"on demand",e=ab({name:function(a){let b=String(a||"").match(/create(?: an)? agent\s+([a-z0-9][a-z0-9\s-]{2,60}?)(?:\s+with|\s+to|\s+for|\s+every|\s+daily|$)/i);return b?b[1].trim().replace(/\s+/g," "):"Client Workspace Custom Agent"}(b),type:"custom",mission:b,schedule:d,tools:a});"on demand"!==d&&af({agent_id:e.agent.id,schedule:d,action_kind:"agent-tick"});let g=W({kind:"agent-created",title:`Created ${e.agent.name}`,agent:"madarX Main Agent",agent_id:"main-orchestrator",artifact:e.files.join(", "),preview:`${e.agent.name} created with ${e.files.length} local files.`,triggered_by:"orchestrator"});return f({...g,created_agent:e.agent,files:e.files},`${e.agent.name} created with ${e.files.length} local files.`)}return c.includes("marketing")||c.includes("content plan")||c.includes("social media")?f(ai({triggered_by:"orchestrator"}),"Marketing plan generated."):c.includes("competitor")||c.includes("daily report")?f(ah({triggered_by:"orchestrator"}),"Competitor report generated."):c.includes("heartbeat")||c.includes("schedule tick")?f(aj({triggered_by:"orchestrator"}),"Heartbeat tick completed."):c.includes("claude")||c.includes("ui mockup")||c.includes("website")||c.includes("landing page")?f(ak({prompt:b},{triggered_by:"orchestrator"}),"Claude Code command prepared. Approve in the dashboard to execute."):f(W({kind:"orchestrator-plan",title:"Main agent routed command",agent:"madarX Main Agent",agent_id:"main-orchestrator",artifact:"audit log",preview:`Main agent received: ${b}
3231
+ `).run(p,e,n,0|f,0|g,0|i,0|j,q,q,a),{id:m,session_id:a,role:b,at:n}}function at(a,b){let c=(0,h.getDb)(),d=String(b||"").slice(0,200);return{ok:c.prepare("UPDATE chat_sessions SET title = ? WHERE id = ?").run(d,a).changes>0}}function au(a){return{ok:(0,h.getDb)().prepare("DELETE FROM chat_sessions WHERE id = ?").run(a).changes>0}}function av(a={}){let b=String(a.prompt||"").trim(),c=b.toLowerCase(),d=String(a.channel||"http"),e=a.from?String(a.from):null,f=(a,b)=>"whatsapp"!==d?a:{...a,channel:d,from:e,reply_text:function(a,b){if(!a)return b||"";let c=[];return a.title&&c.push(a.title),a.preview&&c.push(a.preview),!c.length&&b&&c.push(b),c.join("\n\n").replace(/`{1,3}/g,"").replace(/\*\*/g,"").replace(/<\/?[^>]+>/g,"").trim()}(a,b)};if(!b)return f(X({kind:"orchestrator-note",title:"Empty orchestrator command",agent:"madarX Main Agent",agent_id:"main-orchestrator",artifact:"none",preview:"Type a command for the madarX Main Agent."}),"Type a command for the madarX Main Agent.");if(c.includes("create agent")||c.includes("new agent")){let a=[];c.includes("instagram")&&a.push("instagram-public-view"),c.includes("tiktok")&&a.push("tiktok-public-view"),c.includes("web")&&a.push("web-search"),c.includes("browser")&&a.push("browser"),(c.includes("scrap")||c.includes("scrape"))&&a.push("browser-scrape"),(c.includes("mail")||c.includes("email"))&&a.push("gmail-draft"),(c.includes("ui")||c.includes("mockup")||c.includes("landing"))&&a.push("claude-code","browser-qa"),a.length||a.push("web-search","browser","files","cron");let d=c.includes("noon")?"daily 12:00":c.includes("08:15")?"daily 08:15":c.includes("daily")?"daily 07:30":"on demand",e=ac({name:function(a){let b=String(a||"").match(/create(?: an)? agent\s+([a-z0-9][a-z0-9\s-]{2,60}?)(?:\s+with|\s+to|\s+for|\s+every|\s+daily|$)/i);return b?b[1].trim().replace(/\s+/g," "):"Client Workspace Custom Agent"}(b),type:"custom",mission:b,schedule:d,tools:a});"on demand"!==d&&ag({agent_id:e.agent.id,schedule:d,action_kind:"agent-tick"});let g=X({kind:"agent-created",title:`Created ${e.agent.name}`,agent:"madarX Main Agent",agent_id:"main-orchestrator",artifact:e.files.join(", "),preview:`${e.agent.name} created with ${e.files.length} local files.`,triggered_by:"orchestrator"});return f({...g,created_agent:e.agent,files:e.files},`${e.agent.name} created with ${e.files.length} local files.`)}return c.includes("marketing")||c.includes("content plan")||c.includes("social media")?f(aj({triggered_by:"orchestrator"}),"Marketing plan generated."):c.includes("competitor")||c.includes("daily report")?f(ai({triggered_by:"orchestrator"}),"Competitor report generated."):c.includes("heartbeat")||c.includes("schedule tick")?f(ak({triggered_by:"orchestrator"}),"Heartbeat tick completed."):c.includes("claude")||c.includes("ui mockup")||c.includes("website")||c.includes("landing page")?f(al({prompt:b},{triggered_by:"orchestrator"}),"Claude Code command prepared. Approve in the dashboard to execute."):f(X({kind:"orchestrator-plan",title:"Main agent routed command",agent:"madarX Main Agent",agent_id:"main-orchestrator",artifact:"audit log",preview:`Main agent received: ${b}
3188
3232
 
3189
- Next action: choose a specialized agent, create a local run folder, keep human-in-loop approval before external actions.`,triggered_by:"orchestrator"}),`Received: ${b}`)}async function av({once:a=!0}={}){let b=(0,h.getDb)(),c=(0,h.nowIso)(),d=Number(process.env.MADARX_BACKFILL_MAX_WINDOWS||10),e=b.prepare(`SELECT *, created_by_user_id FROM schedules
3233
+ Next action: choose a specialized agent, create a local run folder, keep human-in-loop approval before external actions.`,triggered_by:"orchestrator"}),`Received: ${b}`)}async function aw({once:a=!0}={}){let b=(0,h.getDb)(),c=(0,h.nowIso)(),d=Number(process.env.MADARX_BACKFILL_MAX_WINDOWS||10),e=b.prepare(`SELECT *, created_by_user_id FROM schedules
3190
3234
  WHERE enabled = 1 AND next_run_at IS NOT NULL AND next_run_at <= ?
3191
- ORDER BY next_run_at ASC`).all(c),f=[];for(let a of e)try{let e=a.created_by_user_id||null,g=a.catchup_policy||"fire_all",i=[],j=a.next_run_at;for(;j<=c&&i.length<d&&(i.push(j),j=(0,k.F)(a.schedule,j)););let l=0;if(j&&j<=c){let b=j;for(;b&&b<=c;)l++,b=(0,k.F)(a.schedule,b);j=b}let m="fire_once"===g?i.slice(-1):"skip"===g?[]:i;for(let c of m){let d=`hbtask-${a.id}-${String(c).replace(/[^a-zA-Z0-9]/g,"")}`,g=(0,n.aJ)({id:d,type:"agent_tick",agent_id:a.agent_id,schedule_id:a.id,max_attempts:Number(process.env.MADARX_AGENT_TICK_MAX_ATTEMPTS||1),payload:{type:a.action_kind||"agent-tick",agent_id:a.agent_id,schedule_id:a.id,prompt:`Run ${a.agent_name||a.agent_id} scheduled heartbeat`,tools_allowed:["web_search","file_read","create_artifact"]},run_after:c});if(e&&g?.id)try{b.prepare("UPDATE heartbeat_tasks SET acting_on_behalf_of_user_id = ? WHERE id = ?").run(e,g.id)}catch(a){console.warn("[cron] acting_on_behalf_of_user_id update failed:",a.message)}V({type:"cron.schedule.queued",summary:`Queued ${a.agent_name||a.agent_id} \xb7 ${a.action_kind}`,status:"queued",meta:{schedule_id:a.id,task_id:g?.id,window:c,acting_on_behalf_of_user_id:e}}),f.push(g)}let o=i.at(-1)||a.next_run_at;b.prepare("UPDATE schedules SET last_run_at=?, next_run_at=?, last_queued_at=?, last_queued_window=?, updated_at=? WHERE id=?").run(o,j,(0,h.nowIso)(),o,(0,h.nowIso)(),a.id),(i.length>1||l>0||"fire_all"!==g&&i.length>0)&&V({type:"cron.schedule.backfilled",summary:`Backfilled ${a.agent_name||a.agent_id}: fired ${m.length}/${i.length} missed windows`,status:"queued",meta:{schedule_id:a.id,missed_count:i.length,fired_count:m.length,truncated_count:l,policy:g,oldest:i[0]||null,newest:i.at(-1)||null}})}catch(b){f.push(W({kind:"cron-error",title:`Cron failed: ${a.id}`,status:"failed",agent:a.agent_name,agent_id:a.agent_id,preview:b.message,triggered_by:"cron"})),function(a,b=null){let c=(0,h.getDb)(),d=c.prepare("SELECT * FROM schedules WHERE id = ?").get(a);if(!d)return;let e=b||(0,h.nowIso)(),f=(0,k.F)(d.schedule,e),g=(0,h.nowIso)();c.prepare("UPDATE schedules SET last_run_at=?, next_run_at=?, updated_at=? WHERE id=?").run(e,f,g,a)}(a.id,a.next_run_at)}return{ok:!0,once:a,executed:f.filter(Boolean).length,tasks:f}}async function aw({lastTickAt:a=null,intervalMs:b=3e4}={}){let{recoverStaleHeartbeatTasks:d}=await Promise.resolve().then(c.bind(c,40563));if(null!==a&&Date.now()-a>2*b)try{await d()}catch(a){console.warn("[cron] stale recovery failed:",a?.message||a)}return av({once:!0})}[h,j,l,m,n,o,p,q,r,s,u,v,w]=y.then?(await y)():y,d()}catch(a){d(a)}})},60897:(a,b,c)=>{"use strict";c.d(b,{R2:()=>n,fP:()=>l});let d=[{slug:"anthropic",title:"Anthropic",description:"Power any agent running on the Anthropic engine (Claude Opus, Sonnet, Haiku). Your key is encrypted on this Mac and never leaves the vault.",category:"engine",author:"madarx",source_kind:"builtin",source_url:"https://console.anthropic.com/settings/keys",version:null,risk_summary:"API key only — no destructive scope.",tags:["engine","anthropic","claude"],manifest:{service_key:"anthropic",setup_kind:"api_key",benefit:"Unlock the Anthropic engine for sub-agents and the main agent. Required for /api/orchestrator/command on default mode.",credentials:[{name:"ANTHROPIC_API_KEY",label:"API key",type:"password",placeholder:"sk-ant-…",help_url:"https://console.anthropic.com/settings/keys",help_text:"Generate a key in the Anthropic console.",required:!0}],verify_endpoint:"/api/connections/anthropic/verify",verify_supported:!0,deep_link:null,supports_scopes:["global","project","agent"],unlocks_tool_slugs:[],engines:["anthropic"],logo_glyph:"anthropic"}},{slug:"openai",title:"OpenAI",description:"Use OpenAI models for agents that prefer GPT. Stored encrypted; never echoed back.",category:"engine",author:"madarx",source_kind:"builtin",source_url:"https://platform.openai.com/api-keys",version:null,risk_summary:"API key only.",tags:["engine","openai","gpt"],manifest:{service_key:"openai",setup_kind:"api_key",benefit:"Unlock OpenAI models for agents and transcription.",credentials:[{name:"OPENAI_API_KEY",label:"API key",type:"password",placeholder:"sk-…",help_url:"https://platform.openai.com/api-keys",help_text:"Create a key in the OpenAI dashboard.",required:!0}],verify_endpoint:"/api/connections/openai/verify",verify_supported:!0,deep_link:null,supports_scopes:["global","project","agent"],unlocks_tool_slugs:[],engines:["openai"],logo_glyph:"openai"}},{slug:"kimi",title:"Kimi (Moonshot)",description:"Connect Moonshot AI — Kimi models for long-context Chinese + English reasoning. Stored encrypted.",category:"engine",author:"madarx",source_kind:"builtin",source_url:"https://platform.moonshot.ai/console/api-keys",version:null,risk_summary:"API key only.",tags:["engine","kimi","moonshot"],manifest:{service_key:"kimi",setup_kind:"api_key",benefit:"Unlock Kimi (Moonshot) models for the kimi engine.",credentials:[{name:"KIMI_API_KEY",label:"API key",type:"password",placeholder:"sk-…",help_url:"https://platform.moonshot.ai/console/api-keys",help_text:"Create a key in the Moonshot console.",required:!0}],verify_endpoint:"/api/connections/kimi/verify",verify_supported:!0,deep_link:null,supports_scopes:["global","project","agent"],unlocks_tool_slugs:[],engines:["kimi"],logo_glyph:"kimi"}},{slug:"github",title:"GitHub",description:"Unlock 11 GitHub tools: read repos, list PRs, create issues, dispatch workflows, and (with approval) merge PRs. Token is encrypted at rest.",category:"integration",author:"madarx",source_kind:"builtin",source_url:"https://github.com/settings/tokens",version:null,risk_summary:"Some GitHub tools are irreversible (e.g. gh_pr_merge) and always require approval.",tags:["integration","github","git"],manifest:{service_key:"github",setup_kind:"api_key",benefit:"Unlock 11 GitHub tools across read, issue, and PR workflows.",credentials:[{name:"GITHUB_TOKEN",label:"Personal access token",type:"password",placeholder:"ghp_…",help_url:"https://github.com/settings/tokens",help_text:"Use a fine-grained token. Grant only the scopes you need.",required:!0}],verify_endpoint:"/api/connections/github/verify",verify_supported:!0,deep_link:null,supports_scopes:["global","project","agent"],unlocks_tool_slugs:["gh_repo_read","gh_repo_list","gh_issue_list","gh_issue_create","gh_issue_comment","gh_pr_list","gh_pr_create","gh_pr_comment","gh_pr_merge","gh_actions_dispatch","gh_release_create"],engines:[],logo_glyph:"github"}},{slug:"resend",title:"Resend",description:"Send transactional email. A default recipient_domain allowlist is seeded from git config user.email — add more in the marketplace afterwards.",category:"integration",author:"madarx",source_kind:"builtin",source_url:"https://resend.com/api-keys",version:null,risk_summary:"email_send is irreversible and always requires approval.",tags:["integration","email","resend"],manifest:{service_key:"resend",setup_kind:"api_key",benefit:"Unlock email_send and email_status_lookup for transactional email.",credentials:[{name:"RESEND_API_KEY",label:"API key",type:"password",placeholder:"re_…",help_url:"https://resend.com/api-keys",help_text:"Create a Resend API key.",required:!0},{name:"RESEND_FROM_EMAIL",label:"From email",type:"text",placeholder:"agent@yourdomain.com",help_url:"https://resend.com/domains",help_text:"A verified sender address on a verified Resend domain.",required:!0}],verify_endpoint:"/api/connections/resend/verify",verify_supported:!0,deep_link:null,supports_scopes:["global","project","agent"],unlocks_tool_slugs:["email_send","email_status_lookup"],engines:[],logo_glyph:"resend"}},{slug:"supabase",title:"Supabase",description:"Connect a Supabase project. Service role key bypasses RLS — destructive ops (supabase_rest_delete, supabase_sql) are always approval-gated.",category:"integration",author:"madarx",source_kind:"builtin",source_url:"https://supabase.com/dashboard",version:null,risk_summary:"Service role key bypasses Row-Level Security. Some tools (supabase_sql) always require approval.",tags:["integration","database","supabase"],manifest:{service_key:"supabase",setup_kind:"api_key",benefit:"Unlock 7 Supabase tools: REST select/insert/upsert/update/delete, RPC, and SQL.",credentials:[{name:"SUPABASE_URL",label:"Project URL",type:"text",placeholder:"https://xxxx.supabase.co",help_url:"https://supabase.com/dashboard",help_text:"Project Settings → API → Project URL.",required:!0},{name:"SUPABASE_SERVICE_ROLE_KEY",label:"Service role key",type:"password",placeholder:"eyJ…",help_url:"https://supabase.com/dashboard",help_text:"Project Settings → API → service_role. Treat as a database password.",required:!1},{name:"SUPABASE_ANON_KEY",label:"Anon key",type:"password",placeholder:"eyJ…",help_url:"https://supabase.com/dashboard",help_text:"Project Settings → API → anon. Used for verify when service-role is absent.",required:!1},{name:"SUPABASE_ACCESS_TOKEN",label:"Personal access token",type:"password",placeholder:"sbp_…",help_url:"https://supabase.com/dashboard/account/tokens",help_text:"Required only if you want the agent to list / manage your Supabase projects via the Management API. Distinct from the project keys above.",required:!1}],verify_endpoint:"/api/connections/supabase/verify",verify_supported:!0,deep_link:null,supports_scopes:["global","project","agent"],unlocks_tool_slugs:["supabase_list_projects","supabase_rest_select","supabase_rest_insert","supabase_rest_upsert","supabase_rest_update","supabase_rest_delete","supabase_rpc","supabase_sql"],engines:[],logo_glyph:"supabase"}},{slug:"vercel",title:"Vercel",description:"Trigger deployments and read project state. v1 saves the token without a live verify — failures surface on first call.",category:"integration",author:"madarx",source_kind:"builtin",source_url:"https://vercel.com/account/tokens",version:null,risk_summary:"vercel_create_deployment is high risk and approval-gated.",tags:["integration","vercel","deploy"],manifest:{service_key:"vercel",setup_kind:"api_key",benefit:"Unlock 3 Vercel tools: list projects, list deployments, create deployment.",credentials:[{name:"VERCEL_TOKEN",label:"Access token",type:"password",placeholder:"vercel_…",help_url:"https://vercel.com/account/tokens",help_text:"Create a token scoped to the right team.",required:!0},{name:"VERCEL_TEAM_ID",label:"Team ID (optional)",type:"text",placeholder:"team_…",help_url:"https://vercel.com/teams",help_text:"Only required for team-scoped tokens.",required:!1}],verify_endpoint:"/api/connections/vercel/verify",verify_supported:!0,deep_link:null,supports_scopes:["global","project","agent"],unlocks_tool_slugs:["vercel_list_projects","vercel_list_deployments","vercel_create_deployment"],engines:[],logo_glyph:"vercel"}},{slug:"whatsapp",title:"WhatsApp",description:"Text the main agent like you text Hermes. Pairs a dedicated WhatsApp number via Baileys. Operations (allowlist, message log) live at /whatsapp.",category:"channel",author:"madarx",source_kind:"builtin",source_url:null,version:null,risk_summary:"Pair only a dedicated number — Baileys is an unofficial Web client; the paired account can be banned.",tags:["channel","whatsapp","messaging"],manifest:{service_key:"whatsapp",setup_kind:"qr_pair",benefit:"Receive WhatsApp messages and let the main agent reply through your number.",credentials:[],verify_endpoint:"/api/connections/whatsapp/verify",verify_supported:!0,deep_link:"/whatsapp",requires_daemon:"npm run whatsapp:bridge",supports_scopes:["global"],unlocks_tool_slugs:["whatsapp_send"],engines:[],logo_glyph:"whatsapp"}},{slug:"hermes",title:"Hermes Agent",description:"Route long-running orchestrator jobs to the local Hermes binary. Detection probes ../hermes-agent and scripts/hermes-command.py.",category:"engine",author:"madarx",source_kind:"builtin",source_url:null,version:null,risk_summary:"Local subprocess execution — Hermes jobs inherit your local env.",tags:["engine","hermes","local"],manifest:{service_key:"hermes",setup_kind:"binary_detect",benefit:"Unlock the Hermes engine and the start_hermes_job orchestrator tool.",credentials:[{name:"HERMES_AGENT_DIR",label:"Hermes agent directory (optional)",type:"text",placeholder:"/Users/you/Projects/hermes-agent",help_url:null,help_text:"Defaults to ../hermes-agent relative to this repo. Override to point at a different checkout.",required:!1}],verify_endpoint:"/api/connections/hermes/verify",verify_supported:!0,deep_link:null,supports_scopes:["global"],unlocks_tool_slugs:["start_hermes_job","send_to_hermes"],engines:["hermes"],logo_glyph:"hermes"}}];d.map(a=>a.slug);let e=[{slug:"web-prototype",title:"Open Design — Web Prototype",description:"Generate a complete production-quality web prototype from a brief."},{slug:"saas-landing",title:"Open Design — SaaS Landing",description:"Build a SaaS landing page with hero, features, social proof, pricing."},{slug:"dashboard",title:"Open Design — Dashboard",description:"Information-dense, hierarchy-driven dashboard scaffold."},{slug:"mobile-app",title:"Open Design — Mobile App",description:"Mobile-first product UI scaffold with touch targets and gestures."},{slug:"social-carousel",title:"Open Design — Social Carousel",description:"Editorial social carousel with platform-aware aspect ratios."},{slug:"magazine-poster",title:"Open Design — Magazine Poster",description:"Editorial magazine/poster typography with high contrast."},{slug:"deck-guizang-editorial",title:"Open Design — Editorial Deck",description:"Guizang editorial-style slide deck system."},{slug:"email-marketing",title:"Open Design — Email Marketing",description:"Transactional/marketing email scaffold with bulletproof HTML."},{slug:"design-brief",title:"Open Design — Design Brief",description:"Structured design brief used to seed the rest of the pipeline."},{slug:"design-review",title:"Open Design — Design Review",description:"Designer's eye plan review and visual QA pass."},{slug:"brand-guidelines",title:"Open Design — Brand Guidelines",description:"Distill or author a brand guidelines book."},{slug:"copywriting",title:"Open Design — Copywriting",description:"High-signal product copywriting craft notes and structure."}],f={slug:"open-design",title:"Open Design (nexu-io)",description:"Vendored design corpus from nexu-io/open-design: craft notes, 130+ skills, ~140 design systems, prompt + design templates. Apache-2.0.",category:"design",author:"nexu-io",source_kind:"github",source_url:"https://github.com/nexu-io/open-design",version:null,risk_summary:"Read-only design content. No code executes; no external writes.",tags:["design","craft","systems","templates","open-source","apache-2.0"],manifest:{item_refs:e.map(a=>`skill:open-design-${a.slug}`),published_count:e.length,license:"Apache-2.0",note:"Vendored under workspace/skills/open-design/. Re-vendor with `npm run vendor:open-design`. See NOTICE.md for attribution."}},g=[{slug:"design-shotgun",title:"Design Shotgun",description:"Generate multiple AI design variants for any UI surface, open a comparison board, and iterate from approved options.",category:"design",author:"gstack",source_kind:"builtin",source_url:null,version:null,risk_summary:"Read-only ideation — no external writes.",tags:["design","mockups","exploration"],manifest:{invocation:"/design-shotgun",file_paths:["skills/design-shotgun/SKILL.md"],trigger_examples:["explore designs","show me design variants","visual brainstorm"]}},{slug:"design-review",title:"Design Review",description:"Visual QA pass on live pages: extracts the design system in use, audits hierarchy, typography, color, and spacing, and proposes fixes.",category:"design",author:"gstack",source_kind:"builtin",source_url:null,version:null,risk_summary:"Read-only audit — fixes are proposed, not applied.",tags:["design","review","visual-qa"],manifest:{invocation:"/design-review",file_paths:["skills/design-review/SKILL.md"],trigger_examples:["review the design","visual QA","audit this page"]}},{slug:"qa-only",title:"QA Only",description:"Systematically QA a web app and produce a structured report with health score, screenshots, and repro steps. Never modifies code.",category:"review",author:"gstack",source_kind:"builtin",source_url:null,version:null,risk_summary:"Report-only — no auto-fix.",tags:["qa","testing","report"],manifest:{invocation:"/qa-only",file_paths:["skills/qa-only/SKILL.md"],trigger_examples:["just report bugs","qa report only","test but do not fix"]}},{slug:"cso-audit",title:"CSO Audit",description:"Chief Security Officer mode: infrastructure-first security audit covering secrets archaeology, supply chain, OWASP Top 10, and threat modeling.",category:"security",author:"gstack",source_kind:"builtin",source_url:null,version:null,risk_summary:"Read-only audit; never executes destructive commands.",tags:["security","audit","owasp","threat-model"],manifest:{invocation:"/cso",file_paths:["skills/cso/SKILL.md"],trigger_examples:["security audit","threat model","OWASP review"]}}],h=[{slug:"market-research",title:"Market Research",category:"research",description:"Research any market, company, or topic across the web and deliver a cited, structured brief.",tools:["web_search","web_fetch","file_write"],risk_summary:"Read-only research; writes only the report file.",tags:["research","web","brief"],invocation:"/research",trigger_examples:["research this market","competitive landscape for X","brief me on company Y"]},{slug:"competitor-watch",title:"Competitor Watch",category:"research",description:"Track competitor pricing, features, and news on a schedule and alert you when something changes.",tools:["web_fetch","web_extract","email_send"],risk_summary:"Read-only monitoring; sends a summary email.",tags:["research","monitoring","competitive"],invocation:"/watch",trigger_examples:["watch competitor pricing","alert me when X changes","track this page weekly"]},{slug:"inbox-triage",title:"Inbox Triage",category:"comms",description:"Summarize, prioritize, and draft replies across your inbox so you act on what matters first.",tools:["gmail_messages_list","gmail_thread_read","email_send"],risk_summary:"Drafts replies; sending is approval-gated.",tags:["email","inbox","comms"],invocation:"/inbox",trigger_examples:["triage my inbox","summarize unread email","draft replies"]},{slug:"meeting-scheduler",title:"Meeting Scheduler",category:"comms",description:"Find times, schedule meetings, and send invites from your calendar and email.",tools:["calendar_events_list","calendar_event_read","email_send"],risk_summary:"Proposes times; invites are approval-gated.",tags:["calendar","scheduling","comms"],invocation:"/schedule-meeting",trigger_examples:["schedule a meeting","find a time with X","book a call next week"]},{slug:"document-extract",title:"Document Extraction",category:"documents",description:"Pull structured data and key facts from PDFs, documents, and audio into clean, usable output.",tools:["file_read","transcribe_audio","file_write"],risk_summary:"Read-only extraction; writes only the output file.",tags:["documents","extraction","pdf"],invocation:"/extract",trigger_examples:["extract data from this PDF","pull the numbers from these docs","transcribe this audio"]},{slug:"report-builder",title:"Report Builder",category:"documents",description:"Turn raw data and notes into a polished, formatted report or one-pager ready to share.",tools:["file_read","file_write"],risk_summary:"Generates a document; no external writes.",tags:["documents","reporting","writing"],invocation:"/report",trigger_examples:["build a report from this data","write a one-pager","summarize into a deck outline"]},{slug:"database-query",title:"Database Q&A",category:"data",description:"Ask questions of your database in plain English and get answers, tables, and charts.",tools:["supabase_rest_select","supabase_sql"],risk_summary:"Read-only queries by default; writes are approval-gated.",tags:["data","sql","analytics"],invocation:"/ask-data",trigger_examples:["how many orders last month","query the users table","top customers by revenue"]},{slug:"spreadsheet-analysis",title:"Spreadsheet Analysis",category:"data",description:"Clean, analyze, and summarize spreadsheets and CSVs — pivots, trends, and outliers.",tools:["file_read","file_write"],risk_summary:"Local file analysis; no external writes.",tags:["data","spreadsheet","csv"],invocation:"/analyze-sheet",trigger_examples:["analyze this spreadsheet","summarize this CSV","find trends in this data"]},{slug:"web-automation",title:"Web Automation",category:"web",description:"Fill forms, extract data, and run repetitive flows in a real browser, end to end.",tools:["browser_open","browser_act","browser_extract"],risk_summary:"Browser actions are bounded and audited.",tags:["web","automation","browser"],invocation:"/automate-web",trigger_examples:["automate this form","scrape this site","run this flow for each row"]}],i=[{slug:"gstack",title:"gstack",description:'"Senior engineering team in your terminal." 8 power tools + a stack of specialist skills for design, QA, review, security, and shipping. MIT licensed.',category:"engineering",author:"garrytan",source_kind:"builtin",source_url:"https://github.com/garrytan/gstack",version:null,risk_summary:"Mixed-risk bundle: includes read-only review skills and write-capable workflows (e.g. /ship runs git push). Per-item risk surfaces in Phase 2 when install is wired up.",tags:["engineering","skills-pack","mit"],manifest:{item_refs:["skill:design-shotgun","skill:design-review","skill:qa-only","skill:cso-audit"],published_count:4,license:"MIT",note:"Agent personas in this bundle will surface in the Agent Marketplace when it ships."}}];function j(a,b,c){let d=a.prepare("SELECT id FROM marketplace_items WHERE kind=? AND slug=?").get(b,c.slug),e=d?.id||`${b}:${c.slug}`,f=c.manifest?JSON.stringify(c.manifest):null,g=c.tags?JSON.stringify(c.tags):null;if(d)a.prepare(`
3235
+ ORDER BY next_run_at ASC`).all(c),f=[];for(let a of e)try{let e=a.created_by_user_id||null,g=a.catchup_policy||"fire_all",i=[],j=a.next_run_at;for(;j<=c&&i.length<d&&(i.push(j),j=(0,k.F)(a.schedule,j)););let l=0;if(j&&j<=c){let b=j;for(;b&&b<=c;)l++,b=(0,k.F)(a.schedule,b);j=b}let m="fire_once"===g?i.slice(-1):"skip"===g?[]:i;for(let c of m){let d=`hbtask-${a.id}-${String(c).replace(/[^a-zA-Z0-9]/g,"")}`,g=(0,n.aJ)({id:d,type:"agent_tick",agent_id:a.agent_id,schedule_id:a.id,max_attempts:Number(process.env.MADARX_AGENT_TICK_MAX_ATTEMPTS||1),payload:{type:a.action_kind||"agent-tick",agent_id:a.agent_id,schedule_id:a.id,prompt:`Run ${a.agent_name||a.agent_id} scheduled heartbeat`,tools_allowed:["web_search","file_read","create_artifact"]},run_after:c});if(e&&g?.id)try{b.prepare("UPDATE heartbeat_tasks SET acting_on_behalf_of_user_id = ? WHERE id = ?").run(e,g.id)}catch(a){console.warn("[cron] acting_on_behalf_of_user_id update failed:",a.message)}W({type:"cron.schedule.queued",summary:`Queued ${a.agent_name||a.agent_id} \xb7 ${a.action_kind}`,status:"queued",meta:{schedule_id:a.id,task_id:g?.id,window:c,acting_on_behalf_of_user_id:e}}),f.push(g)}let o=i.at(-1)||a.next_run_at;b.prepare("UPDATE schedules SET last_run_at=?, next_run_at=?, last_queued_at=?, last_queued_window=?, updated_at=? WHERE id=?").run(o,j,(0,h.nowIso)(),o,(0,h.nowIso)(),a.id),(i.length>1||l>0||"fire_all"!==g&&i.length>0)&&W({type:"cron.schedule.backfilled",summary:`Backfilled ${a.agent_name||a.agent_id}: fired ${m.length}/${i.length} missed windows`,status:"queued",meta:{schedule_id:a.id,missed_count:i.length,fired_count:m.length,truncated_count:l,policy:g,oldest:i[0]||null,newest:i.at(-1)||null}})}catch(b){f.push(X({kind:"cron-error",title:`Cron failed: ${a.id}`,status:"failed",agent:a.agent_name,agent_id:a.agent_id,preview:b.message,triggered_by:"cron"})),function(a,b=null){let c=(0,h.getDb)(),d=c.prepare("SELECT * FROM schedules WHERE id = ?").get(a);if(!d)return;let e=b||(0,h.nowIso)(),f=(0,k.F)(d.schedule,e),g=(0,h.nowIso)();c.prepare("UPDATE schedules SET last_run_at=?, next_run_at=?, updated_at=? WHERE id=?").run(e,f,g,a)}(a.id,a.next_run_at)}return{ok:!0,once:a,executed:f.filter(Boolean).length,tasks:f}}async function ax({lastTickAt:a=null,intervalMs:b=3e4}={}){let{recoverStaleHeartbeatTasks:d}=await Promise.resolve().then(c.bind(c,40563));if(null!==a&&Date.now()-a>2*b)try{await d()}catch(a){console.warn("[cron] stale recovery failed:",a?.message||a)}return aw({once:!0})}[h,j,l,m,n,o,p,q,r,s,u,v,w]=y.then?(await y)():y,d()}catch(a){d(a)}})},60897:(a,b,c)=>{"use strict";function d({slug:a,title:b,description:c,category:d="integration",provider:e,scopes:f,prefix:g,extraCredentials:h=[],unlocks:i,healthEndpoint:j,risk:k,tags:l}){let m=`${g}_ACCESS_TOKEN`;return{slug:a,title:b,description:c,category:d,author:"madarx",source_kind:"builtin",source_url:null,version:null,risk_summary:k,tags:l,manifest:{service_key:a,setup_kind:"oauth2",benefit:`Sign in with ${b} to unlock ${i.length} tool${1===i.length?"":"s"}. No code, no .env editing.`,credentials:[{name:`${g}_CLIENT_ID`,label:`${b} client ID`,type:"text",required:!0,help_text:`Create an app on the ${b} developer console and paste its client ID.`},{name:`${g}_CLIENT_SECRET`,label:`${b} client secret`,type:"password",required:!0,help_text:"Stored encrypted in the local vault — never echoed back."},...h],oauth:{provider:e,scopes:f,pkce:"google"===e||"tiktok"===e,redirect_path:`/api/connections/${a}/oauth/callback`,client_id_ref:`${g}_CLIENT_ID`,client_secret_ref:`${g}_CLIENT_SECRET`,access_token_ref:m,refresh_token_ref:`${g}_REFRESH_TOKEN`},health_check:{endpoint:j,method:"GET",expect_status:200,auth:{in:"header",name:"Authorization",prefix:"Bearer ",credential:m}},verify_endpoint:`/api/connections/${a}/verify`,verify_supported:!0,deep_link:null,supports_scopes:["global","project","agent"],unlocks_tool_slugs:i,engines:[],logo_glyph:a}}}c.d(b,{R2:()=>q,fP:()=>o});let e=[{slug:"anthropic",title:"Anthropic",description:"Power any agent running on the Anthropic engine (Claude Opus, Sonnet, Haiku). Your key is encrypted on this Mac and never leaves the vault.",category:"engine",author:"madarx",source_kind:"builtin",source_url:"https://console.anthropic.com/settings/keys",version:null,risk_summary:"API key only — no destructive scope.",tags:["engine","anthropic","claude"],manifest:{service_key:"anthropic",setup_kind:"api_key",benefit:"Unlock the Anthropic engine for sub-agents and the main agent. Required for /api/orchestrator/command on default mode.",credentials:[{name:"ANTHROPIC_API_KEY",label:"API key",type:"password",placeholder:"sk-ant-…",help_url:"https://console.anthropic.com/settings/keys",help_text:"Generate a key in the Anthropic console.",required:!0}],verify_endpoint:"/api/connections/anthropic/verify",verify_supported:!0,deep_link:null,supports_scopes:["global","project","agent"],unlocks_tool_slugs:[],engines:["anthropic"],logo_glyph:"anthropic"}},{slug:"openai",title:"OpenAI",description:"Use OpenAI models for agents that prefer GPT. Stored encrypted; never echoed back.",category:"engine",author:"madarx",source_kind:"builtin",source_url:"https://platform.openai.com/api-keys",version:null,risk_summary:"API key only.",tags:["engine","openai","gpt"],manifest:{service_key:"openai",setup_kind:"api_key",benefit:"Unlock OpenAI models for agents and transcription.",credentials:[{name:"OPENAI_API_KEY",label:"API key",type:"password",placeholder:"sk-…",help_url:"https://platform.openai.com/api-keys",help_text:"Create a key in the OpenAI dashboard.",required:!0}],verify_endpoint:"/api/connections/openai/verify",verify_supported:!0,deep_link:null,supports_scopes:["global","project","agent"],unlocks_tool_slugs:[],engines:["openai"],logo_glyph:"openai"}},{slug:"kimi",title:"Kimi (Moonshot)",description:"Connect Moonshot AI — Kimi models for long-context Chinese + English reasoning. Stored encrypted.",category:"engine",author:"madarx",source_kind:"builtin",source_url:"https://platform.moonshot.ai/console/api-keys",version:null,risk_summary:"API key only.",tags:["engine","kimi","moonshot"],manifest:{service_key:"kimi",setup_kind:"api_key",benefit:"Unlock Kimi (Moonshot) models for the kimi engine.",credentials:[{name:"KIMI_API_KEY",label:"API key",type:"password",placeholder:"sk-…",help_url:"https://platform.moonshot.ai/console/api-keys",help_text:"Create a key in the Moonshot console.",required:!0}],verify_endpoint:"/api/connections/kimi/verify",verify_supported:!0,deep_link:null,supports_scopes:["global","project","agent"],unlocks_tool_slugs:[],engines:["kimi"],logo_glyph:"kimi"}},{slug:"github",title:"GitHub",description:"Unlock 11 GitHub tools: read repos, list PRs, create issues, dispatch workflows, and (with approval) merge PRs. Token is encrypted at rest.",category:"integration",author:"madarx",source_kind:"builtin",source_url:"https://github.com/settings/tokens",version:null,risk_summary:"Some GitHub tools are irreversible (e.g. gh_pr_merge) and always require approval.",tags:["integration","github","git"],manifest:{service_key:"github",setup_kind:"api_key",benefit:"Unlock 11 GitHub tools across read, issue, and PR workflows.",credentials:[{name:"GITHUB_TOKEN",label:"Personal access token",type:"password",placeholder:"ghp_…",help_url:"https://github.com/settings/tokens",help_text:"Use a fine-grained token. Grant only the scopes you need.",required:!0}],verify_endpoint:"/api/connections/github/verify",verify_supported:!0,deep_link:null,supports_scopes:["global","project","agent"],unlocks_tool_slugs:["gh_repo_read","gh_repo_list","gh_issue_list","gh_issue_create","gh_issue_comment","gh_pr_list","gh_pr_create","gh_pr_comment","gh_pr_merge","gh_actions_dispatch","gh_release_create"],engines:[],logo_glyph:"github"}},{slug:"resend",title:"Resend",description:"Send transactional email. A default recipient_domain allowlist is seeded from git config user.email — add more in the marketplace afterwards.",category:"integration",author:"madarx",source_kind:"builtin",source_url:"https://resend.com/api-keys",version:null,risk_summary:"email_send is irreversible and always requires approval.",tags:["integration","email","resend"],manifest:{service_key:"resend",setup_kind:"api_key",benefit:"Unlock email_send and email_status_lookup for transactional email.",credentials:[{name:"RESEND_API_KEY",label:"API key",type:"password",placeholder:"re_…",help_url:"https://resend.com/api-keys",help_text:"Create a Resend API key.",required:!0},{name:"RESEND_FROM_EMAIL",label:"From email",type:"text",placeholder:"agent@yourdomain.com",help_url:"https://resend.com/domains",help_text:"A verified sender address on a verified Resend domain.",required:!0}],verify_endpoint:"/api/connections/resend/verify",verify_supported:!0,deep_link:null,supports_scopes:["global","project","agent"],unlocks_tool_slugs:["email_send","email_status_lookup"],engines:[],logo_glyph:"resend"}},{slug:"supabase",title:"Supabase",description:"Connect a Supabase project. Service role key bypasses RLS — destructive ops (supabase_rest_delete, supabase_sql) are always approval-gated.",category:"integration",author:"madarx",source_kind:"builtin",source_url:"https://supabase.com/dashboard",version:null,risk_summary:"Service role key bypasses Row-Level Security. Some tools (supabase_sql) always require approval.",tags:["integration","database","supabase"],manifest:{service_key:"supabase",setup_kind:"api_key",benefit:"Unlock 7 Supabase tools: REST select/insert/upsert/update/delete, RPC, and SQL.",credentials:[{name:"SUPABASE_URL",label:"Project URL",type:"text",placeholder:"https://xxxx.supabase.co",help_url:"https://supabase.com/dashboard",help_text:"Project Settings → API → Project URL.",required:!0},{name:"SUPABASE_SERVICE_ROLE_KEY",label:"Service role key",type:"password",placeholder:"eyJ…",help_url:"https://supabase.com/dashboard",help_text:"Project Settings → API → service_role. Treat as a database password.",required:!1},{name:"SUPABASE_ANON_KEY",label:"Anon key",type:"password",placeholder:"eyJ…",help_url:"https://supabase.com/dashboard",help_text:"Project Settings → API → anon. Used for verify when service-role is absent.",required:!1},{name:"SUPABASE_ACCESS_TOKEN",label:"Personal access token",type:"password",placeholder:"sbp_…",help_url:"https://supabase.com/dashboard/account/tokens",help_text:"Required only if you want the agent to list / manage your Supabase projects via the Management API. Distinct from the project keys above.",required:!1}],verify_endpoint:"/api/connections/supabase/verify",verify_supported:!0,deep_link:null,supports_scopes:["global","project","agent"],unlocks_tool_slugs:["supabase_list_projects","supabase_rest_select","supabase_rest_insert","supabase_rest_upsert","supabase_rest_update","supabase_rest_delete","supabase_rpc","supabase_sql"],engines:[],logo_glyph:"supabase"}},{slug:"vercel",title:"Vercel",description:"Trigger deployments and read project state. v1 saves the token without a live verify — failures surface on first call.",category:"integration",author:"madarx",source_kind:"builtin",source_url:"https://vercel.com/account/tokens",version:null,risk_summary:"vercel_create_deployment is high risk and approval-gated.",tags:["integration","vercel","deploy"],manifest:{service_key:"vercel",setup_kind:"api_key",benefit:"Unlock 3 Vercel tools: list projects, list deployments, create deployment.",credentials:[{name:"VERCEL_TOKEN",label:"Access token",type:"password",placeholder:"vercel_…",help_url:"https://vercel.com/account/tokens",help_text:"Create a token scoped to the right team.",required:!0},{name:"VERCEL_TEAM_ID",label:"Team ID (optional)",type:"text",placeholder:"team_…",help_url:"https://vercel.com/teams",help_text:"Only required for team-scoped tokens.",required:!1}],verify_endpoint:"/api/connections/vercel/verify",verify_supported:!0,deep_link:null,supports_scopes:["global","project","agent"],unlocks_tool_slugs:["vercel_list_projects","vercel_list_deployments","vercel_create_deployment"],engines:[],logo_glyph:"vercel"}},{slug:"whatsapp",title:"WhatsApp",description:"Text the main agent like you text Hermes. Pairs a dedicated WhatsApp number via Baileys. Operations (allowlist, message log) live at /whatsapp.",category:"channel",author:"madarx",source_kind:"builtin",source_url:null,version:null,risk_summary:"Pair only a dedicated number — Baileys is an unofficial Web client; the paired account can be banned.",tags:["channel","whatsapp","messaging"],manifest:{service_key:"whatsapp",setup_kind:"qr_pair",benefit:"Receive WhatsApp messages and let the main agent reply through your number.",credentials:[],verify_endpoint:"/api/connections/whatsapp/verify",verify_supported:!0,deep_link:"/whatsapp",requires_daemon:"npm run whatsapp:bridge",supports_scopes:["global"],unlocks_tool_slugs:["whatsapp_send"],engines:[],logo_glyph:"whatsapp"}},{slug:"hermes",title:"Hermes Agent",description:"Route long-running orchestrator jobs to the local Hermes binary. Detection probes ../hermes-agent and scripts/hermes-command.py.",category:"engine",author:"madarx",source_kind:"builtin",source_url:null,version:null,risk_summary:"Local subprocess execution — Hermes jobs inherit your local env.",tags:["engine","hermes","local"],manifest:{service_key:"hermes",setup_kind:"binary_detect",benefit:"Unlock the Hermes engine and the start_hermes_job orchestrator tool.",credentials:[{name:"HERMES_AGENT_DIR",label:"Hermes agent directory (optional)",type:"text",placeholder:"/Users/you/Projects/hermes-agent",help_url:null,help_text:"Defaults to ../hermes-agent relative to this repo. Override to point at a different checkout.",required:!1}],verify_endpoint:"/api/connections/hermes/verify",verify_supported:!0,deep_link:null,supports_scopes:["global"],unlocks_tool_slugs:["start_hermes_job","send_to_hermes"],engines:["hermes"],logo_glyph:"hermes"}},d({slug:"meta-ads",title:"Meta Ads",description:"Build and report on Facebook + Instagram ad campaigns. Campaign/budget writes are always approval-gated.",category:"marketing",provider:"meta",prefix:"META",scopes:["ads_management","ads_read","business_management"],unlocks:["meta_ads.insights_read","meta_ads.campaign_create","meta_ads.adset_create","meta_ads.budget_set"],healthEndpoint:"https://graph.facebook.com/v19.0/me",risk:"Campaign create, budget set, and audience create are irreversible and always require approval.",tags:["marketing","ads","meta","oauth"]}),d({slug:"google-ads",title:"Google Ads",description:"Manage Google Ads campaigns and pull GAQL reports. Requires a developer token in addition to OAuth sign-in.",category:"marketing",provider:"google",prefix:"GOOGLE_ADS",scopes:["https://www.googleapis.com/auth/adwords"],extraCredentials:[{name:"GOOGLE_ADS_DEVELOPER_TOKEN",label:"Developer token",type:"password",required:!0,help_text:"Google Ads API access requires a developer token alongside OAuth."}],unlocks:["google_ads.report","google_ads.campaign_create","google_ads.budget_set"],healthEndpoint:"https://googleads.googleapis.com/v17/customers:listAccessibleCustomers",risk:"Campaign create and budget set are irreversible and always require approval.",tags:["marketing","ads","google","oauth"]}),d({slug:"ga4",title:"Google Analytics 4",description:"Read GA4 metrics for marketing reports. Read-only — no external writes.",category:"analytics",provider:"google",prefix:"GA4",scopes:["https://www.googleapis.com/auth/analytics.readonly"],unlocks:["ga4.run_report","ga4.realtime_report"],healthEndpoint:"https://analyticsdata.googleapis.com/v1beta/properties",risk:"Read-only analytics access.",tags:["analytics","ga4","google","oauth"]}),d({slug:"hubspot-crm",title:"HubSpot CRM",description:"Read and (with approval) write contacts, deals, and activity in HubSpot.",category:"sales",provider:"hubspot",prefix:"HUBSPOT",scopes:["crm.objects.contacts.read","crm.objects.deals.read","crm.objects.contacts.write"],unlocks:["hubspot.contacts_read","hubspot.deals_read","hubspot.contact_upsert"],healthEndpoint:"https://api.hubapi.com/crm/v3/objects/contacts",risk:"CRM writes (contact/deal upsert) require approval.",tags:["sales","crm","hubspot","oauth"]})];e.map(a=>a.slug);let f=[{slug:"web-prototype",title:"Open Design — Web Prototype",description:"Generate a complete production-quality web prototype from a brief."},{slug:"saas-landing",title:"Open Design — SaaS Landing",description:"Build a SaaS landing page with hero, features, social proof, pricing."},{slug:"dashboard",title:"Open Design — Dashboard",description:"Information-dense, hierarchy-driven dashboard scaffold."},{slug:"mobile-app",title:"Open Design — Mobile App",description:"Mobile-first product UI scaffold with touch targets and gestures."},{slug:"social-carousel",title:"Open Design — Social Carousel",description:"Editorial social carousel with platform-aware aspect ratios."},{slug:"magazine-poster",title:"Open Design — Magazine Poster",description:"Editorial magazine/poster typography with high contrast."},{slug:"deck-guizang-editorial",title:"Open Design — Editorial Deck",description:"Guizang editorial-style slide deck system."},{slug:"email-marketing",title:"Open Design — Email Marketing",description:"Transactional/marketing email scaffold with bulletproof HTML."},{slug:"design-brief",title:"Open Design — Design Brief",description:"Structured design brief used to seed the rest of the pipeline."},{slug:"design-review",title:"Open Design — Design Review",description:"Designer's eye plan review and visual QA pass."},{slug:"brand-guidelines",title:"Open Design — Brand Guidelines",description:"Distill or author a brand guidelines book."},{slug:"copywriting",title:"Open Design — Copywriting",description:"High-signal product copywriting craft notes and structure."}],g={slug:"open-design",title:"Open Design (nexu-io)",description:"Vendored design corpus from nexu-io/open-design: craft notes, 130+ skills, ~140 design systems, prompt + design templates. Apache-2.0.",category:"design",author:"nexu-io",source_kind:"github",source_url:"https://github.com/nexu-io/open-design",version:null,risk_summary:"Read-only design content. No code executes; no external writes.",tags:["design","craft","systems","templates","open-source","apache-2.0"],manifest:{item_refs:f.map(a=>`skill:open-design-${a.slug}`),published_count:f.length,license:"Apache-2.0",note:"Vendored under workspace/skills/open-design/. Re-vendor with `npm run vendor:open-design`. See NOTICE.md for attribution."}},h=[{slug:"design-shotgun",title:"Design Shotgun",description:"Generate multiple AI design variants for any UI surface, open a comparison board, and iterate from approved options.",category:"design",author:"gstack",source_kind:"builtin",source_url:null,version:null,risk_summary:"Read-only ideation — no external writes.",tags:["design","mockups","exploration"],manifest:{invocation:"/design-shotgun",file_paths:["skills/design-shotgun/SKILL.md"],trigger_examples:["explore designs","show me design variants","visual brainstorm"]}},{slug:"design-review",title:"Design Review",description:"Visual QA pass on live pages: extracts the design system in use, audits hierarchy, typography, color, and spacing, and proposes fixes.",category:"design",author:"gstack",source_kind:"builtin",source_url:null,version:null,risk_summary:"Read-only audit — fixes are proposed, not applied.",tags:["design","review","visual-qa"],manifest:{invocation:"/design-review",file_paths:["skills/design-review/SKILL.md"],trigger_examples:["review the design","visual QA","audit this page"]}},{slug:"qa-only",title:"QA Only",description:"Systematically QA a web app and produce a structured report with health score, screenshots, and repro steps. Never modifies code.",category:"review",author:"gstack",source_kind:"builtin",source_url:null,version:null,risk_summary:"Report-only — no auto-fix.",tags:["qa","testing","report"],manifest:{invocation:"/qa-only",file_paths:["skills/qa-only/SKILL.md"],trigger_examples:["just report bugs","qa report only","test but do not fix"]}},{slug:"cso-audit",title:"CSO Audit",description:"Chief Security Officer mode: infrastructure-first security audit covering secrets archaeology, supply chain, OWASP Top 10, and threat modeling.",category:"security",author:"gstack",source_kind:"builtin",source_url:null,version:null,risk_summary:"Read-only audit; never executes destructive commands.",tags:["security","audit","owasp","threat-model"],manifest:{invocation:"/cso",file_paths:["skills/cso/SKILL.md"],trigger_examples:["security audit","threat model","OWASP review"]}}],i=[{slug:"market-research",title:"Market Research",category:"research",description:"Research any market, company, or topic across the web and deliver a cited, structured brief.",tools:["web_search","web_fetch","file_write"],risk_summary:"Read-only research; writes only the report file.",tags:["research","web","brief"],invocation:"/research",trigger_examples:["research this market","competitive landscape for X","brief me on company Y"]},{slug:"competitor-watch",title:"Competitor Watch",category:"research",description:"Track competitor pricing, features, and news on a schedule and alert you when something changes.",tools:["web_fetch","web_extract","email_send"],risk_summary:"Read-only monitoring; sends a summary email.",tags:["research","monitoring","competitive"],invocation:"/watch",trigger_examples:["watch competitor pricing","alert me when X changes","track this page weekly"]},{slug:"inbox-triage",title:"Inbox Triage",category:"comms",description:"Summarize, prioritize, and draft replies across your inbox so you act on what matters first.",tools:["gmail_messages_list","gmail_thread_read","email_send"],risk_summary:"Drafts replies; sending is approval-gated.",tags:["email","inbox","comms"],invocation:"/inbox",trigger_examples:["triage my inbox","summarize unread email","draft replies"]},{slug:"meeting-scheduler",title:"Meeting Scheduler",category:"comms",description:"Find times, schedule meetings, and send invites from your calendar and email.",tools:["calendar_events_list","calendar_event_read","email_send"],risk_summary:"Proposes times; invites are approval-gated.",tags:["calendar","scheduling","comms"],invocation:"/schedule-meeting",trigger_examples:["schedule a meeting","find a time with X","book a call next week"]},{slug:"document-extract",title:"Document Extraction",category:"documents",description:"Pull structured data and key facts from PDFs, documents, and audio into clean, usable output.",tools:["file_read","transcribe_audio","file_write"],risk_summary:"Read-only extraction; writes only the output file.",tags:["documents","extraction","pdf"],invocation:"/extract",trigger_examples:["extract data from this PDF","pull the numbers from these docs","transcribe this audio"]},{slug:"report-builder",title:"Report Builder",category:"documents",description:"Turn raw data and notes into a polished, formatted report or one-pager ready to share.",tools:["file_read","file_write"],risk_summary:"Generates a document; no external writes.",tags:["documents","reporting","writing"],invocation:"/report",trigger_examples:["build a report from this data","write a one-pager","summarize into a deck outline"]},{slug:"database-query",title:"Database Q&A",category:"data",description:"Ask questions of your database in plain English and get answers, tables, and charts.",tools:["supabase_rest_select","supabase_sql"],risk_summary:"Read-only queries by default; writes are approval-gated.",tags:["data","sql","analytics"],invocation:"/ask-data",trigger_examples:["how many orders last month","query the users table","top customers by revenue"]},{slug:"spreadsheet-analysis",title:"Spreadsheet Analysis",category:"data",description:"Clean, analyze, and summarize spreadsheets and CSVs — pivots, trends, and outliers.",tools:["file_read","file_write"],risk_summary:"Local file analysis; no external writes.",tags:["data","spreadsheet","csv"],invocation:"/analyze-sheet",trigger_examples:["analyze this spreadsheet","summarize this CSV","find trends in this data"]},{slug:"web-automation",title:"Web Automation",category:"web",description:"Fill forms, extract data, and run repetitive flows in a real browser, end to end.",tools:["browser_open","browser_act","browser_extract"],risk_summary:"Browser actions are bounded and audited.",tags:["web","automation","browser"],invocation:"/automate-web",trigger_examples:["automate this form","scrape this site","run this flow for each row"]}],j=[{slug:"paid-campaign-build",title:"Paid Campaign Build",category:"marketing",description:"Structure a paid campaign — objective, audiences, ad sets, creative spec, and budget — ready for approval-gated launch.",tools:["create_artifact","web_search"],risk_summary:"Plans campaigns; every publish/budget set stays approval-gated.",tags:["marketing","ads","campaign"],invocation:"/paid-campaign",trigger_examples:["build a Meta campaign","plan a paid launch","structure ad sets"]},{slug:"ads-reporting",title:"Ads Reporting",category:"marketing",description:"Pull spend, CPA, ROAS, and reach from connected ad accounts into one weekly performance report.",tools:["create_artifact","file_write"],risk_summary:"Read-only reporting; no external writes.",tags:["marketing","ads","reporting"],invocation:"/ads-report",trigger_examples:["weekly ads report","how did campaigns perform","ROAS summary"]},{slug:"content-calendar",title:"Content Calendar",category:"content",description:"Plan a multi-channel content calendar with post drafts, captions, and a scheduled queue.",tools:["create_artifact","file_write"],risk_summary:"Drafts and schedules; every publish stays approval-gated.",tags:["content","social","calendar"],invocation:"/content-calendar",trigger_examples:["plan this month of content","build a content calendar","draft social posts"]},{slug:"lead-research",title:"Lead Research",category:"sales",description:"Build a qualified target list, enrich it, and prep a personalized outreach sequence.",tools:["web_search","web_fetch","create_artifact"],risk_summary:"Research + drafts; sequence enrollment and bulk sends are approval-gated.",tags:["sales","outreach","leads"],invocation:"/lead-research",trigger_examples:["build a target list","find leads for X","prep an outreach sequence"]},{slug:"ticket-reply",title:"Ticket Reply",category:"support",description:"Triage support tickets, draft replies in brand voice, and flag escalations.",tools:["gmail_messages_list","file_write"],risk_summary:"Drafts replies; outbound sends/status changes are approval-gated.",tags:["support","helpdesk","tickets"],invocation:"/ticket-reply",trigger_examples:["triage support tickets","draft ticket replies","escalate this ticket"]},{slug:"runway-model",title:"Runway Model",category:"finance",description:"Turn revenue/expense data into a runway model and P&L summary with scenario sensitivity.",tools:["file_read","create_artifact"],risk_summary:"Advisory analysis; any money movement is approval-gated.",tags:["finance","runway","modeling"],invocation:"/runway",trigger_examples:["model our runway","P&L summary","how many months of cash"]}],k=[{slug:"gstack",title:"gstack",description:'"Senior engineering team in your terminal." 8 power tools + a stack of specialist skills for design, QA, review, security, and shipping. MIT licensed.',category:"engineering",author:"garrytan",source_kind:"builtin",source_url:"https://github.com/garrytan/gstack",version:null,risk_summary:"Mixed-risk bundle: includes read-only review skills and write-capable workflows (e.g. /ship runs git push). Per-item risk surfaces in Phase 2 when install is wired up.",tags:["engineering","skills-pack","mit"],manifest:{item_refs:["skill:design-shotgun","skill:design-review","skill:qa-only","skill:cso-audit"],published_count:4,license:"MIT",note:"Agent personas in this bundle will surface in the Agent Marketplace when it ships."}}];function l(a,b,c){let d=a.prepare("SELECT id FROM marketplace_items WHERE kind=? AND slug=?").get(b,c.slug),e=d?.id||`${b}:${c.slug}`,f=c.manifest?JSON.stringify(c.manifest):null,g=c.tags?JSON.stringify(c.tags):null;if(d)a.prepare(`
3192
3236
  UPDATE marketplace_items
3193
3237
  SET title=?, description=?, category=?, author=?, source_kind=?,
3194
3238
  source_url=?, version=?, manifest_json=?, risk_summary=?, tags=?
@@ -3201,7 +3245,7 @@ Next action: choose a specialized agent, create a local run folder, keep human-i
3201
3245
  `).run(e,b,c.slug,c.title,c.description,c.category,c.author,c.source_kind,c.source_url,c.version,f,c.risk_summary,g,new Date().toISOString());let d=+!!c?.manifest?.default;a.prepare(`
3202
3246
  INSERT OR IGNORE INTO marketplace_installations (item_id, installed, installed_at)
3203
3247
  VALUES (?, ?, ?)
3204
- `).run(e,d,d?new Date().toISOString():null)}}let k={slug:"mines",title:"Mines",description:"Mining project analysis: portfolio screening, data interpretation, tiered valuation, market intelligence, and NI 43-101 report packaging.",category:"industry",author:"madarx",source_kind:"builtin",source_url:null,version:"0.1.0",risk_summary:"High-risk valuation and report tools are gated; external providers disabled by default.",tags:["mining","metals","due-diligence","valuation"],manifest:{module_id:"mines",manifest_path:"config/madarx-module.json",agents:["mines-analyst","mines-data-interpreter","mines-valuation-analyst","mines-market-researcher","mines-report-packager"],tools:["mines_project_create","mines_project_read","mines_catalog_import","mines_data_import","mines_document_extract","mines_extract_facts","mines_spatial_index","mines_assumption_validate","mines_valuation_run","mines_sensitivity_run","mines_market_snapshot","mines_report_generate"],skill_packs:["mines-taxonomy-classification","mines-ocr-spanish","mines-tiered-valuation","mines-ni43101-template","mines-provenance-rules"],workflow_templates:["mine-project-intake","mine-valuation","mine-market-trend-monitor","mine-portfolio-screen"],nav:[{label:"Mines",href:"/mines",icon:"Pickaxe",group:"Industry"}]}};function l(a){try{for(let b of h)j(a,"skill",{slug:b.slug,title:b.title,description:b.description,category:b.category,author:"madarx",source_kind:"builtin",source_url:null,version:null,risk_summary:b.risk_summary,tags:b.tags,manifest:{invocation:b.invocation,default:!0,uses_tools:b.tools,trigger_examples:b.trigger_examples}});for(let b of g)j(a,"skill",b);for(let b of i)j(a,"bundle",b);for(let b of e)j(a,"skill",{slug:`open-design-${b.slug}`,title:b.title,description:b.description,category:"design",author:"nexu-io",source_kind:"github",source_url:`https://github.com/nexu-io/open-design/tree/main/skills/${b.slug}`,version:null,risk_summary:"Read-only design corpus — no external writes.",tags:["design","open-design","nexu-io"],manifest:{invocation:`/open-design/${b.slug}`,file_paths:[`workspace/skills/open-design/skills/${b.slug}/SKILL.md`],trigger_examples:[`apply ${b.slug.replace(/-/g," ")}`,"design using open-design"],upstream_slug:b.slug}});j(a,"bundle",f),function(a){try{for(let b of d){let c=a.prepare("SELECT id FROM marketplace_items WHERE kind = 'connection' AND slug = ?").get(b.slug),d=c?.id||`connection:${b.slug}`,e=b.manifest?JSON.stringify(b.manifest):null,f=b.tags?JSON.stringify(b.tags):null;c?a.prepare(`
3248
+ `).run(e,d,d?new Date().toISOString():null)}}let m={slug:"mines",title:"Mines",description:"Mining project analysis: portfolio screening, data interpretation, tiered valuation, market intelligence, and NI 43-101 report packaging.",category:"industry",author:"madarx",source_kind:"builtin",source_url:null,version:"0.1.0",risk_summary:"High-risk valuation and report tools are gated; external providers disabled by default.",tags:["mining","metals","due-diligence","valuation"],manifest:{module_id:"mines",manifest_path:"config/madarx-module.json",agents:["mines-analyst","mines-data-interpreter","mines-valuation-analyst","mines-market-researcher","mines-report-packager"],tools:["mines_project_create","mines_project_read","mines_catalog_import","mines_data_import","mines_document_extract","mines_extract_facts","mines_spatial_index","mines_assumption_validate","mines_valuation_run","mines_sensitivity_run","mines_market_snapshot","mines_report_generate"],skill_packs:["mines-taxonomy-classification","mines-ocr-spanish","mines-tiered-valuation","mines-ni43101-template","mines-provenance-rules"],workflow_templates:["mine-project-intake","mine-valuation","mine-market-trend-monitor","mine-portfolio-screen"],nav:[{label:"Mines",href:"/mines",icon:"Pickaxe",group:"Industry"}]}},n={slug:"business-suite",title:"Business Agent Suite",description:"A whole company in a box: a cross-department roster of business agents, department skill packs, and the connections they need. Marketing, ads, content, sales, support, ops, finance, legal, product, web, analyst, and a Chief of Staff to run the cadence.",category:"business",author:"madarx",source_kind:"builtin",source_url:null,version:"0.1.0",risk_summary:"Agents install with safe built-in tools only. Ad spend, sends, CRM writes, and deploys stay approval-gated and require connecting + granting the matching service first.",tags:["business","company","marketing","sales","ops","starter"],manifest:{module_id:"business-suite",agents:["chief-of-staff","marketing-lead","ads-media-buyer","content-social","sales-bd","customer-support","ops-manager","finance-ops","legal-compliance","product-pm","web-ecommerce","competitor-scout"],tools:["web_search","web_fetch","file_read","file_write","create_artifact","email_send","gmail_messages_list","calendar_events_list","create_workflow_definition"],skill_packs:["market-research","report-builder","paid-campaign-build","ads-reporting","content-calendar","lead-research","ticket-reply","runway-model"],connections:["resend","meta-ads","google-ads","ga4","hubspot-crm"],workflow_templates:[],nav:[]}};function o(a){try{for(let b of i)l(a,"skill",{slug:b.slug,title:b.title,description:b.description,category:b.category,author:"madarx",source_kind:"builtin",source_url:null,version:null,risk_summary:b.risk_summary,tags:b.tags,manifest:{invocation:b.invocation,default:!0,uses_tools:b.tools,trigger_examples:b.trigger_examples}});for(let b of j)l(a,"skill",{slug:b.slug,title:b.title,description:b.description,category:b.category,author:"madarx",source_kind:"builtin",source_url:null,version:null,risk_summary:b.risk_summary,tags:b.tags,manifest:{invocation:b.invocation,uses_tools:b.tools,trigger_examples:b.trigger_examples}});for(let b of h)l(a,"skill",b);for(let b of k)l(a,"bundle",b);for(let b of f)l(a,"skill",{slug:`open-design-${b.slug}`,title:b.title,description:b.description,category:"design",author:"nexu-io",source_kind:"github",source_url:`https://github.com/nexu-io/open-design/tree/main/skills/${b.slug}`,version:null,risk_summary:"Read-only design corpus — no external writes.",tags:["design","open-design","nexu-io"],manifest:{invocation:`/open-design/${b.slug}`,file_paths:[`workspace/skills/open-design/skills/${b.slug}/SKILL.md`],trigger_examples:[`apply ${b.slug.replace(/-/g," ")}`,"design using open-design"],upstream_slug:b.slug}});l(a,"bundle",g),function(a){try{for(let b of e){let c=a.prepare("SELECT id FROM marketplace_items WHERE kind = 'connection' AND slug = ?").get(b.slug),d=c?.id||`connection:${b.slug}`,e=b.manifest?JSON.stringify(b.manifest):null,f=b.tags?JSON.stringify(b.tags):null;c?a.prepare(`
3205
3249
  UPDATE marketplace_items
3206
3250
  SET title = ?, description = ?, category = ?, author = ?, source_kind = ?,
3207
3251
  source_url = ?, version = ?, manifest_json = ?, risk_summary = ?, tags = ?
@@ -3214,7 +3258,7 @@ Next action: choose a specialized agent, create a local run folder, keep human-i
3214
3258
  `).run(d,b.slug,b.title,b.description,b.category,b.author,b.source_kind,b.source_url,b.version,e,b.risk_summary,f,new Date().toISOString()),a.prepare(`
3215
3259
  INSERT OR IGNORE INTO marketplace_installations (item_id, installed)
3216
3260
  VALUES (?, 0)
3217
- `).run(d))}}catch(a){console.warn("[connection-seeds] seed failed:",a?.message||a)}}(a),j(a,"module",k)}catch(a){console.warn("[marketplace-seeds] seed failed:",a?.message||a)}}h.map(a=>a.slug);let m=["research","comms","documents","data","web"];function n(){let a=a=>a.charAt(0).toUpperCase()+a.slice(1),b=["## Default skills","","You ship with these ready-to-use business skills. Reach for them by intent;","each is backed by your enabled tools and stays within the usual approval gates.",""];for(let c of function(){let a=new Map;for(let b of h)a.has(b.category)||a.set(b.category,[]),a.get(b.category).push(b.slug);return m.filter(b=>a.has(b)).map(b=>({category:b,count:a.get(b).length,names:a.get(b)}))}()){for(let d of(b.push(`### ${a(c.category)}`),c.names)){let a=h.find(a=>a.slug===d);a&&b.push(`- **${a.title}** (\`${a.invocation}\`) — ${a.description} _Tools: ${a.tools.join(", ")}._`)}b.push("")}return b.join("\n").trimEnd()+"\n"}g.map(a=>a.slug),i.map(a=>a.slug),e.map(a=>`open-design-${a.slug}`),f.slug},61423:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{DJ:()=>j,Im:()=>u,Ip:()=>n,Rt:()=>p,Sk:()=>B,U1:()=>s,W6:()=>o,ct:()=>l,gA:()=>q,hF:()=>r,jz:()=>x,vr:()=>t,xx:()=>w,yK:()=>y});var e=c(73024),f=c(76760),g=c(34255),h=c(9381),i=a([g]);g=(i.then?(await i)():i)[0];let z=f.join(h.nJ,"disk"),A=f.join(h.nJ,".default-project-seeded"),B="personal",C=["agents","agent_template_installations","agent_memory","disk_files","disk_folders","missions","transcripts","artifacts","heartbeat_tasks","approval_requests","audit_logs","activity_log","tool_egress","secrets"];function j(a){return String(a||"project").toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,64)||"project"}function k(a){return a?{...a}:null}function l(a){return f.join(h.un,"projects",a)}function m(a,b=900){let c=String(a||"").replace(/\s+/g," ").trim();return c.length>b?`${c.slice(0,b).trim()}...`:c}let D=new Set(["md","markdown","text","txt","html","htm"]);function n(a,b={}){if(!a)throw Error("project_id is required");let c=(0,g.getDb)(),d=(0,g.newId)("activity"),e=b.created_at||(0,g.nowIso)(),f=void 0!==b.folder_id?b.folder_id:b.details&&void 0!==b.details.folder_id?b.details.folder_id:null,h={title:b.title||b.summary||"Project update",summary:b.summary||b.title||"Project update",status:b.status||null,source:b.source||"system",update_kind:b.update_kind||null,...b.details,folder_id:f};return c.prepare(`
3261
+ `).run(d))}}catch(a){console.warn("[connection-seeds] seed failed:",a?.message||a)}}(a),l(a,"module",m),l(a,"module",n)}catch(a){console.warn("[marketplace-seeds] seed failed:",a?.message||a)}}i.map(a=>a.slug);let p=["research","comms","documents","data","web"];function q(){let a=a=>a.charAt(0).toUpperCase()+a.slice(1),b=["## Default skills","","You ship with these ready-to-use business skills. Reach for them by intent;","each is backed by your enabled tools and stays within the usual approval gates.",""];for(let c of function(){let a=new Map;for(let b of i)a.has(b.category)||a.set(b.category,[]),a.get(b.category).push(b.slug);return p.filter(b=>a.has(b)).map(b=>({category:b,count:a.get(b).length,names:a.get(b)}))}()){for(let d of(b.push(`### ${a(c.category)}`),c.names)){let a=i.find(a=>a.slug===d);a&&b.push(`- **${a.title}** (\`${a.invocation}\`) — ${a.description} _Tools: ${a.tools.join(", ")}._`)}b.push("")}return b.join("\n").trimEnd()+"\n"}j.map(a=>a.slug),h.map(a=>a.slug),k.map(a=>a.slug),f.map(a=>`open-design-${a.slug}`),g.slug},61423:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{DJ:()=>j,Im:()=>u,Ip:()=>n,Rt:()=>p,Sk:()=>B,U1:()=>s,W6:()=>o,ct:()=>l,gA:()=>q,hF:()=>r,jz:()=>x,vr:()=>t,xx:()=>w,yK:()=>y});var e=c(73024),f=c(76760),g=c(34255),h=c(9381),i=a([g]);g=(i.then?(await i)():i)[0];let z=f.join(h.nJ,"disk"),A=f.join(h.nJ,".default-project-seeded"),B="personal",C=["agents","agent_template_installations","agent_memory","disk_files","disk_folders","missions","transcripts","artifacts","heartbeat_tasks","approval_requests","audit_logs","activity_log","tool_egress","secrets"];function j(a){return String(a||"project").toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,64)||"project"}function k(a){return a?{...a}:null}function l(a){return f.join(h.un,"projects",a)}function m(a,b=900){let c=String(a||"").replace(/\s+/g," ").trim();return c.length>b?`${c.slice(0,b).trim()}...`:c}let D=new Set(["md","markdown","text","txt","html","htm"]);function n(a,b={}){if(!a)throw Error("project_id is required");let c=(0,g.getDb)(),d=(0,g.newId)("activity"),e=b.created_at||(0,g.nowIso)(),f=void 0!==b.folder_id?b.folder_id:b.details&&void 0!==b.details.folder_id?b.details.folder_id:null,h={title:b.title||b.summary||"Project update",summary:b.summary||b.title||"Project update",status:b.status||null,source:b.source||"system",update_kind:b.update_kind||null,...b.details,folder_id:f};return c.prepare(`
3218
3262
  INSERT INTO activity_log
3219
3263
  (id, actor_type, actor_id, agent_id, run_id, entity_type, entity_id, action, details_json, created_at, project_id)
3220
3264
  VALUES (?, ?, ?, ?, ?, 'project', ?, ?, ?, ?, ?)
@@ -3269,10 +3313,10 @@ Next action: choose a specialized agent, create a local run folder, keep human-i
3269
3313
 
3270
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}
3271
3315
 
3272
- ${b}`:b;return v(r("codex"),["exec",d],{timeoutMs:Number(process.env.CODEX_TICK_TIMEOUT_MS||18e4),closeStdin:!0,onChunk:c})}async function z({model:a,systemPrompt:b,userMessage:c,maxTokens:d=2048}){var e;let f=(e=await (0,j.chatWithClaude)([{role:"user",content:c}],b,[],{max_tokens:d,model:a}),(e?.content||[]).filter(a=>a?.type==="text"||"string"==typeof a?.text).map(a=>a.text||"").join("\n").trim());if(!f)throw Error("Anthropic returned no text");return f}function A(a){try{return!!a&&f.statSync(a).isDirectory()}catch{return!1}}async function B({agent:a,systemPrompt:b,userMessage:c,maxTokens:d=2048}){let e=n(a.engine),f=a.model||o(e);if("ollama"===e)return w({model:f,systemPrompt:b,userMessage:c,maxTokens:d});if("claude-code"===e){try{(0,l.Jh)()}catch{}let d=[l.un,l.nJ].filter(A);return x({model:f,systemPrompt:b,userMessage:c,cwd:function(){for(let a of[l.un,l.nJ,C,process.cwd()])if(A(a))return a;return process.cwd()}(),addDirs:d,agentId:a.id,agentName:a.name})}if("anthropic"===e)return z({model:f,systemPrompt:b,userMessage:c,maxTokens:d});if("codex"===e)return y({systemPrompt:b,userMessage:c});if("hermes"===e){let a=Error('The Hermes engine cannot run scheduled autonomous ticks yet — it has no governed tool loop, so a tick would only fabricate output. Switch this agent to the "Anthropic API" engine, or drive Hermes via its governed job tools (send_to_hermes / start_hermes_job) from the console.');throw a.code="engine_cannot_run_tools",a.engine="hermes",a}throw Error(`Unknown agent engine: ${a.engine}`)}d()}catch(a){d(a)}})},73066:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Kg:()=>k,kA:()=>l,v2:()=>j});var e=c(73024),f=c(76760),g=c(9381),h=c(61423),i=a([h]);h=(i.then?(await i)():i)[0];let m="artifacts";function j(a){var b;let c=null;return(c=a&&"object"==typeof a?a:(0,h.U1)(a||h.Sk)||null)?f.join((b=c,b?.folder_path?b.folder_path:b?.slug?(0,h.ct)(b.slug):(0,h.ct)(h.Sk)),m):f.join((0,h.ct)(h.Sk),m)}function k(a){let b=j(a);return e.mkdirSync(b,{recursive:!0}),b}function l(a){if(!a)return!1;let b=f.resolve(a);return[f.resolve(g.yQ),...function(){try{return(0,h.hF)({status:"all"}).map(a=>f.resolve(j(a)))}catch{return[]}}()].some(a=>b===a||b.startsWith(`${a}${f.sep}`))}d()}catch(a){d(a)}})},73662:(a,b,c)=>{"use strict";c.d(b,{nA:()=>g});let d=/^[a-z][a-z0-9-]{2,63}$/,e=/^\/[a-z][a-z0-9-]{1,63}$/;function f(a,b,c){a.push(`${b}: ${c}`)}function g(a,b={}){var c;let h,i=[],j=[];try{h=JSON.stringify(a)}catch{return{ok:!1,errors:["spec: not JSON-serialisable"],warnings:[],normalized:null}}if(!h||"undefined"===h)return{ok:!1,errors:["spec: required"],warnings:[],normalized:null};if(Buffer.byteLength(h,"utf8")>65536)return{ok:!1,errors:["spec: exceeds 64KB"],warnings:[],normalized:null};return null===a||"object"!=typeof a||Array.isArray(a)?{ok:!1,errors:["spec: must be an object"],warnings:[],normalized:null}:(a.slug&&"string"==typeof a.slug?d.test(a.slug)||f(i,"slug",`does not match ${d} (lowercase, starts with letter, 3-64 chars, [a-z0-9-])`):f(i,"slug","required (string)"),a.title&&"string"==typeof a.title||f(i,"title","required (non-empty string)"),null!=a.description&&"string"!=typeof a.description&&f(i,"description","must be a string"),a.markdown&&"string"==typeof a.markdown?a.markdown.length>1e5&&f(i,"markdown",`exceeds 100000 chars (got ${a.markdown.length})`):f(i,"markdown","required (non-empty string)"),null!=a.invocation&&("string"!=typeof a.invocation?f(i,"invocation","must be a string"):e.test(a.invocation)||f(i,"invocation",`must match ${e} (e.g. "/my-skill")`)),null!=a.trigger_examples&&(Array.isArray(a.trigger_examples)?a.trigger_examples.forEach((a,b)=>{"string"==typeof a&&a.trim()||f(i,`trigger_examples[${b}]`,"must be a non-empty string")}):f(i,"trigger_examples","must be an array of strings")),null!=a.category&&"string"!=typeof a.category&&f(i,"category","must be a string"),i.length>0)?{ok:!1,errors:i,warnings:j,normalized:null}:{ok:!0,errors:[],warnings:j,normalized:{slug:(c=a).slug,title:c.title,description:c.description||null,category:"string"==typeof c.category&&c.category?c.category:"authored",invocation:"string"==typeof c.invocation&&c.invocation?c.invocation:`/${c.slug}`,markdown:c.markdown,trigger_examples:Array.isArray(c.trigger_examples)?c.trigger_examples.filter(a=>"string"==typeof a&&a.trim()):[]}}}},73899:(a,b,c)=>{"use strict";function d(a,b=null){if(!a)return b;try{return JSON.parse(a)}catch{return b}}c.d(b,{lp:()=>g,oi:()=>d,qY:()=>h});let e=/mars|accent|primary|brand|red|orange|coral/i,f=/^#?(ffffff|000000|fff|0f0f11|111318|1a1817|f7f4ee|e8e8e5|dcdcd8)$/i;function g(a){let b=Array.isArray(a?.colors)?a.colors:[];if(0===b.length)return"#c2452a";let c=b.find(a=>e.test(a?.name||""));if(c?.value)return c.value;let d=b.find(a=>a?.value&&!f.test(a.value));return d?.value||b[0].value||"#c2452a"}function h(a){try{let b=a.prepare("SELECT slug FROM marketplace_items WHERE kind = 'agent'").all();return new Set(b.map(a=>a.slug))}catch{return new Set}}},73912:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{AB:()=>y,CS:()=>s,Io:()=>w,QM:()=>v,R1:()=>z,Ww:()=>x,dh:()=>q,mM:()=>u,uT:()=>p,vV:()=>r,xP:()=>t});var e=c(73024),f=c(76760),g=c(77598),h=c(34255),i=c(9381),j=c(61423),k=c(9001),l=a([h,j,k]);[h,j,k]=l.then?(await l)():l;let A=f.join(i.nJ,"disk");function m(a){return a?{...a}:null}function n(a){return a?{...a,local_only:1===a.local_only}:null}function o(a={}){try{(0,k.jO)("disk",a)}catch{}}function p(a){let b=(0,h.getDb)();return a?b.prepare("SELECT * FROM disk_folders WHERE project_id = ? ORDER BY path ASC").all(a).map(m):b.prepare("SELECT * FROM disk_folders ORDER BY path ASC").all().map(m)}function q(a){let b=(0,j.U1)(a);if(!b)throw Error("project not found");return(0,j.yK)(b.id,b.slug),m((0,h.getDb)().prepare("SELECT * FROM disk_folders WHERE project_id = ? AND parent_id IS NULL LIMIT 1").get(b.id))}function r(a,b,c){if("object"==typeof a&&a){let d=a;a=d.project_id||d.projectId,b=d.parent_id||d.parentId||null,c=d.name}let d=(0,j.U1)(a);if(!d)throw Error("project not found");let g=String(c||"").trim();if(!g)throw Error("name is required");let i=(0,h.getDb)(),k=b?i.prepare("SELECT * FROM disk_folders WHERE id = ?").get(b):q(d.id);if(!k)throw Error("parent folder not found");if(i.prepare("SELECT * FROM disk_folders WHERE project_id = ? AND parent_id = ? AND name = ? LIMIT 1").get(d.id,k.id,g)){let a=Error(`Folder "${g}" already exists.`);throw a.code="FOLDER_EXISTS",a}let l=`${k.path.replace(/\/$/,"")}/${g}/`,n=(0,h.nowIso)(),p=(0,h.newId)("df");try{i.prepare("INSERT INTO disk_folders (id, project_id, parent_id, name, path, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?)").run(p,d.id,k.id,g,l,n,n)}catch(a){if(String(a?.message||"").includes("UNIQUE constraint failed")){let a=Error(`Folder "${g}" already exists.`);throw a.code="FOLDER_EXISTS",a}throw a}let r=f.join(A,l.replace(/^\/+|\/+$/g,""));e.mkdirSync(r,{recursive:!0});let s=m(i.prepare("SELECT * FROM disk_folders WHERE id = ?").get(p));return o({project_id:d.id,folder_id:s?.id||p,action:"folder.create"}),s}function s(a={}){let b=(0,h.getDb)(),c=[],d=[];a.project_id&&(c.push("project_id = ?"),d.push(a.project_id)),a.folder_id&&(c.push("folder_id = ?"),d.push(a.folder_id));let e=`SELECT * FROM disk_files ${c.length?"WHERE "+c.join(" AND "):""} ORDER BY updated_at DESC`;return b.prepare(e).all(...d).map(n)}function t(){let a=(0,h.getDb)().prepare(`SELECT project_id, COUNT(*) AS count
3316
+ ${b}`:b;return v(r("codex"),["exec",d],{timeoutMs:Number(process.env.CODEX_TICK_TIMEOUT_MS||18e4),closeStdin:!0,onChunk:c})}async function z({model:a,systemPrompt:b,userMessage:c,maxTokens:d=2048}){var e;let f=(e=await (0,j.chatWithClaude)([{role:"user",content:c}],b,[],{max_tokens:d,model:a}),(e?.content||[]).filter(a=>a?.type==="text"||"string"==typeof a?.text).map(a=>a.text||"").join("\n").trim());if(!f)throw Error("Anthropic returned no text");return f}function A(a){try{return!!a&&f.statSync(a).isDirectory()}catch{return!1}}async function B({agent:a,systemPrompt:b,userMessage:c,maxTokens:d=2048}){let e=n(a.engine),f=a.model||o(e);if("ollama"===e)return w({model:f,systemPrompt:b,userMessage:c,maxTokens:d});if("claude-code"===e){try{(0,l.Jh)()}catch{}let d=[l.un,l.nJ].filter(A);return x({model:f,systemPrompt:b,userMessage:c,cwd:function(){for(let a of[l.un,l.nJ,C,process.cwd()])if(A(a))return a;return process.cwd()}(),addDirs:d,agentId:a.id,agentName:a.name})}if("anthropic"===e)return z({model:f,systemPrompt:b,userMessage:c,maxTokens:d});if("codex"===e)return y({systemPrompt:b,userMessage:c});if("hermes"===e){let a=Error('The Hermes engine cannot run scheduled autonomous ticks yet — it has no governed tool loop, so a tick would only fabricate output. Switch this agent to the "Anthropic API" engine, or drive Hermes via its governed job tools (send_to_hermes / start_hermes_job) from the console.');throw a.code="engine_cannot_run_tools",a.engine="hermes",a}throw Error(`Unknown agent engine: ${a.engine}`)}d()}catch(a){d(a)}})},72550:(a,b,c)=>{"use strict";c.d(b,{Kd:()=>e});let d={google:{label:"Google",authorize_url:"https://accounts.google.com/o/oauth2/v2/auth",token_url:"https://oauth2.googleapis.com/token",pkce:!0,default_scopes:["openid","email"],extra_auth_params:{access_type:"offline",prompt:"consent"}},meta:{label:"Meta (Facebook/Instagram)",authorize_url:"https://www.facebook.com/v19.0/dialog/oauth",token_url:"https://graph.facebook.com/v19.0/oauth/access_token",pkce:!1,default_scopes:["public_profile"],extra_auth_params:{}},linkedin:{label:"LinkedIn",authorize_url:"https://www.linkedin.com/oauth/v2/authorization",token_url:"https://www.linkedin.com/oauth/v2/accessToken",pkce:!1,default_scopes:["r_liteprofile"],extra_auth_params:{}},tiktok:{label:"TikTok",authorize_url:"https://www.tiktok.com/v2/auth/authorize/",token_url:"https://open.tiktokapis.com/v2/oauth/token/",pkce:!0,default_scopes:["user.info.basic"],extra_auth_params:{}},hubspot:{label:"HubSpot",authorize_url:"https://app.hubspot.com/oauth/authorize",token_url:"https://api.hubapi.com/oauth/v1/token",pkce:!1,default_scopes:["oauth"],extra_auth_params:{}}};function e(a,b={}){let c=a&&d[a]?d[a]:null,f=b.authorize_url||c?.authorize_url||null,g=b.token_url||c?.token_url||null;if(!f||!g)return null;let h=Array.isArray(b.scopes)&&b.scopes.length?b.scopes.slice():(c?.default_scopes||[]).slice(),i="boolean"==typeof b.pkce?b.pkce:!!c?.pkce,j={...c?.extra_auth_params||{},...b.extra_auth_params&&"object"==typeof b.extra_auth_params?b.extra_auth_params:{}};return{provider:a||"custom",label:c?.label||a||"Custom provider",authorize_url:f,token_url:g,scopes:h,pkce:i,extra_auth_params:j}}},73066:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Kg:()=>k,kA:()=>l,v2:()=>j});var e=c(73024),f=c(76760),g=c(9381),h=c(61423),i=a([h]);h=(i.then?(await i)():i)[0];let m="artifacts";function j(a){var b;let c=null;return(c=a&&"object"==typeof a?a:(0,h.U1)(a||h.Sk)||null)?f.join((b=c,b?.folder_path?b.folder_path:b?.slug?(0,h.ct)(b.slug):(0,h.ct)(h.Sk)),m):f.join((0,h.ct)(h.Sk),m)}function k(a){let b=j(a);return e.mkdirSync(b,{recursive:!0}),b}function l(a){if(!a)return!1;let b=f.resolve(a);return[f.resolve(g.yQ),...function(){try{return(0,h.hF)({status:"all"}).map(a=>f.resolve(j(a)))}catch{return[]}}()].some(a=>b===a||b.startsWith(`${a}${f.sep}`))}d()}catch(a){d(a)}})},73662:(a,b,c)=>{"use strict";c.d(b,{nA:()=>g});let d=/^[a-z][a-z0-9-]{2,63}$/,e=/^\/[a-z][a-z0-9-]{1,63}$/;function f(a,b,c){a.push(`${b}: ${c}`)}function g(a,b={}){var c;let h,i=[],j=[];try{h=JSON.stringify(a)}catch{return{ok:!1,errors:["spec: not JSON-serialisable"],warnings:[],normalized:null}}if(!h||"undefined"===h)return{ok:!1,errors:["spec: required"],warnings:[],normalized:null};if(Buffer.byteLength(h,"utf8")>65536)return{ok:!1,errors:["spec: exceeds 64KB"],warnings:[],normalized:null};return null===a||"object"!=typeof a||Array.isArray(a)?{ok:!1,errors:["spec: must be an object"],warnings:[],normalized:null}:(a.slug&&"string"==typeof a.slug?d.test(a.slug)||f(i,"slug",`does not match ${d} (lowercase, starts with letter, 3-64 chars, [a-z0-9-])`):f(i,"slug","required (string)"),a.title&&"string"==typeof a.title||f(i,"title","required (non-empty string)"),null!=a.description&&"string"!=typeof a.description&&f(i,"description","must be a string"),a.markdown&&"string"==typeof a.markdown?a.markdown.length>1e5&&f(i,"markdown",`exceeds 100000 chars (got ${a.markdown.length})`):f(i,"markdown","required (non-empty string)"),null!=a.invocation&&("string"!=typeof a.invocation?f(i,"invocation","must be a string"):e.test(a.invocation)||f(i,"invocation",`must match ${e} (e.g. "/my-skill")`)),null!=a.trigger_examples&&(Array.isArray(a.trigger_examples)?a.trigger_examples.forEach((a,b)=>{"string"==typeof a&&a.trim()||f(i,`trigger_examples[${b}]`,"must be a non-empty string")}):f(i,"trigger_examples","must be an array of strings")),null!=a.category&&"string"!=typeof a.category&&f(i,"category","must be a string"),i.length>0)?{ok:!1,errors:i,warnings:j,normalized:null}:{ok:!0,errors:[],warnings:j,normalized:{slug:(c=a).slug,title:c.title,description:c.description||null,category:"string"==typeof c.category&&c.category?c.category:"authored",invocation:"string"==typeof c.invocation&&c.invocation?c.invocation:`/${c.slug}`,markdown:c.markdown,trigger_examples:Array.isArray(c.trigger_examples)?c.trigger_examples.filter(a=>"string"==typeof a&&a.trim()):[]}}}},73899:(a,b,c)=>{"use strict";function d(a,b=null){if(!a)return b;try{return JSON.parse(a)}catch{return b}}c.d(b,{lp:()=>g,oi:()=>d,qY:()=>h});let e=/mars|accent|primary|brand|red|orange|coral/i,f=/^#?(ffffff|000000|fff|0f0f11|111318|1a1817|f7f4ee|e8e8e5|dcdcd8)$/i;function g(a){let b=Array.isArray(a?.colors)?a.colors:[];if(0===b.length)return"#c2452a";let c=b.find(a=>e.test(a?.name||""));if(c?.value)return c.value;let d=b.find(a=>a?.value&&!f.test(a.value));return d?.value||b[0].value||"#c2452a"}function h(a){try{let b=a.prepare("SELECT slug FROM marketplace_items WHERE kind = 'agent'").all();return new Set(b.map(a=>a.slug))}catch{return new Set}}},73912:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{AB:()=>y,CS:()=>s,Io:()=>w,QM:()=>v,R1:()=>z,Ww:()=>x,dh:()=>q,mM:()=>u,uT:()=>p,vV:()=>r,xP:()=>t});var e=c(73024),f=c(76760),g=c(77598),h=c(34255),i=c(9381),j=c(61423),k=c(9001),l=a([h,j,k]);[h,j,k]=l.then?(await l)():l;let A=f.join(i.nJ,"disk");function m(a){return a?{...a}:null}function n(a){return a?{...a,local_only:1===a.local_only}:null}function o(a={}){try{(0,k.jO)("disk",a)}catch{}}function p(a){let b=(0,h.getDb)();return a?b.prepare("SELECT * FROM disk_folders WHERE project_id = ? ORDER BY path ASC").all(a).map(m):b.prepare("SELECT * FROM disk_folders ORDER BY path ASC").all().map(m)}function q(a){let b=(0,j.U1)(a);if(!b)throw Error("project not found");return(0,j.yK)(b.id,b.slug),m((0,h.getDb)().prepare("SELECT * FROM disk_folders WHERE project_id = ? AND parent_id IS NULL LIMIT 1").get(b.id))}function r(a,b,c){if("object"==typeof a&&a){let d=a;a=d.project_id||d.projectId,b=d.parent_id||d.parentId||null,c=d.name}let d=(0,j.U1)(a);if(!d)throw Error("project not found");let g=String(c||"").trim();if(!g)throw Error("name is required");let i=(0,h.getDb)(),k=b?i.prepare("SELECT * FROM disk_folders WHERE id = ?").get(b):q(d.id);if(!k)throw Error("parent folder not found");if(i.prepare("SELECT * FROM disk_folders WHERE project_id = ? AND parent_id = ? AND name = ? LIMIT 1").get(d.id,k.id,g)){let a=Error(`Folder "${g}" already exists.`);throw a.code="FOLDER_EXISTS",a}let l=`${k.path.replace(/\/$/,"")}/${g}/`,n=(0,h.nowIso)(),p=(0,h.newId)("df");try{i.prepare("INSERT INTO disk_folders (id, project_id, parent_id, name, path, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?)").run(p,d.id,k.id,g,l,n,n)}catch(a){if(String(a?.message||"").includes("UNIQUE constraint failed")){let a=Error(`Folder "${g}" already exists.`);throw a.code="FOLDER_EXISTS",a}throw a}let r=f.join(A,l.replace(/^\/+|\/+$/g,""));e.mkdirSync(r,{recursive:!0});let s=m(i.prepare("SELECT * FROM disk_folders WHERE id = ?").get(p));return o({project_id:d.id,folder_id:s?.id||p,action:"folder.create"}),s}function s(a={}){let b=(0,h.getDb)(),c=[],d=[];a.project_id&&(c.push("project_id = ?"),d.push(a.project_id)),a.folder_id&&(c.push("folder_id = ?"),d.push(a.folder_id));let e=`SELECT * FROM disk_files ${c.length?"WHERE "+c.join(" AND "):""} ORDER BY updated_at DESC`;return b.prepare(e).all(...d).map(n)}function t(){let a=(0,h.getDb)().prepare(`SELECT project_id, COUNT(*) AS count
3273
3317
  FROM disk_files
3274
3318
  WHERE project_id IS NOT NULL
3275
- GROUP BY project_id`).all(),b=Object.create(null);for(let c of a)b[c.project_id]=c.count;return b}function u(a){return n((0,h.getDb)().prepare("SELECT * FROM disk_files WHERE id = ?").get(a))}function v(a,b,c,d={}){if("object"==typeof a&&a){let e=a;a=e.project_id||e.projectId,b=e.folder_id||e.folderId||null,c={name:e.name,content:e.content||e.buffer||"",type:e.mime_type||e.type||""},d={...e,local_only:e.local_only}}let i=(0,j.U1)(a);if(!i)throw Error("project not found");let k=b?(0,h.getDb)().prepare("SELECT * FROM disk_folders WHERE id = ?").get(b):q(i.id);if(!k)throw Error("folder not found");let l=Buffer.isBuffer(c?.buffer)?c.buffer:Buffer.from(c?.content||""),m=String(c?.name||d.name||"upload.bin").replace(/[\\/]+/g,"-"),n=g.createHash("sha256").update(l).digest("hex"),p=f.join(A,k.path.replace(/^\/+|\/+$/g,""));e.mkdirSync(p,{recursive:!0});let r=f.join(p,`${n.slice(0,12)}-${m}`);e.existsSync(r)||e.writeFileSync(r,l);let s=(0,h.nowIso)(),t=(0,h.newId)("file");(0,h.getDb)().prepare("INSERT INTO disk_files (id, project_id, folder_id, name, kind, mime_type, size_bytes, sha256, storage_path, local_only, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)").run(t,i.id,k.id,m,function(a,b=""){let c=f.extname(a||"").toLowerCase();return[".md",".markdown"].includes(c)?"md":".pdf"===c?"pdf":[".mp3",".wav",".m4a",".ogg",".webm"].includes(c)||b.startsWith("audio/")?"audio":[".png",".jpg",".jpeg",".webp",".gif"].includes(c)||b.startsWith("image/")?"image":[".txt",".csv",".json",".yaml",".yml"].includes(c)||b.startsWith("text/")?"text":"other"}(m,c?.type||d.mime_type||""),c?.type||d.mime_type||null,l.length,n,r,+!!d.local_only,s,s);let w=u(t);try{(0,j.Ip)(i.id,{action:"project.file.uploaded",title:`Uploaded ${m}`,summary:`Attached ${m} to the project folder`,status:"complete",source:"disk",details:{file_id:t,folder_id:k.id,kind:w.kind,size_bytes:w.size_bytes,local_only:w.local_only}})}catch{}return o({project_id:i.id,folder_id:k.id,file_id:t,action:"file.upload"}),w}function w(a,b={}){let c=["name","folder_id","local_only"],d=Object.entries(b).filter(([a,b])=>c.includes(a)&&void 0!==b);if(!d.length)return u(a);let e=d.map(([a])=>`${a} = ?`).concat("updated_at = ?").join(", "),f=d.map(([a,b])=>"local_only"===a?+!!b:b).concat((0,h.nowIso)(),a);(0,h.getDb)().prepare(`UPDATE disk_files SET ${e} WHERE id = ?`).run(...f);let g=u(a);return o({project_id:g?.project_id||null,folder_id:g?.folder_id||null,file_id:a,action:"file.update"}),g}function x(a){let b=u(a);if(!b)return!1;(0,h.getDb)().prepare("DELETE FROM disk_files WHERE id = ?").run(a);try{e.unlinkSync(b.storage_path)}catch{}return o({project_id:b.project_id,folder_id:b.folder_id||null,file_id:a,action:"file.delete"}),!0}function y(a,b){if(!b)throw Error("engine parameter required");let c=u(a);if(!c)throw Error("file not found");return c.local_only&&!["ollama","local_whisper"].includes(String(b))?{...c,content:"<redacted: local_only>",redacted:!0}:{...c,content:e.readFileSync(c.storage_path,"utf8"),redacted:!1}}function z(a,b){let c=y(a,b);if(c.redacted){let a=Error("local_only: engine not permitted");throw a.code="LOCAL_ONLY_DENIED",a}return c.storage_path}d()}catch(a){d(a)}})},78335:()=>{},78708:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{$A:()=>n,Ac:()=>j,FT:()=>k,N3:()=>q,Us:()=>m,f3:()=>o,uS:()=>p});var e=c(76760),f=c(73024),g=c(34255),h=c(9381),i=a([g]);g=(i.then?(await i)():i)[0];let p=e.join(h.un,"generated-clis"),q=e.join(h.un,"skills","printing-press");e.join(h.nJ,"printing-press-clis.json");let r=/^[a-z0-9][a-z0-9-]{0,63}$/;function j(a){return"string"==typeof a&&r.test(a)}function k(a){let b=e.resolve(a),c=e.resolve(p);if(!b.startsWith(c+e.sep)&&b!==c)throw Error(`Path is not under workspace/generated-clis/: ${a}`);return b}function l(a){if(!a)return null;let b=null,c=[],d=[];try{b=a.manifest_json?JSON.parse(a.manifest_json):null}catch{b=null}try{c=a.declared_scopes?JSON.parse(a.declared_scopes):[]}catch{c=[]}try{d=a.required_secrets?JSON.parse(a.required_secrets):[]}catch{d=[]}return{slug:a.slug,source_kind:a.source_kind,source_url:a.source_url||null,installed_at:a.installed_at,updated_at:a.updated_at,path:a.path,declared_scopes:c,required_secrets:d,quota_bytes:a.quota_bytes||0x6400000,manifest:b,status:a.status}}function m({includeRemoved:a=!1}={}){let b=(0,g.getDb)();return(a?b.prepare("SELECT * FROM printing_press_clis ORDER BY installed_at DESC").all():b.prepare("SELECT * FROM printing_press_clis WHERE status != 'removed' ORDER BY installed_at DESC").all()).map(l)}function n(a){if(!j(a))return null;let b=(0,g.getDb)().prepare("SELECT * FROM printing_press_clis WHERE slug = ?").get(a);return l(b)}function o(a){let b=n(a);if(!b)return null;try{return{slug:a,bytes:function a(b){if(!f.existsSync(b))return 0;let c=0;for(let d of f.readdirSync(b,{withFileTypes:!0})){let g=e.join(b,d.name);if(d.isDirectory())c+=a(g);else if(d.isFile())try{c+=f.statSync(g).size}catch{}}return c}(b.path),quota_bytes:b.quota_bytes}}catch{return{slug:a,bytes:0,quota_bytes:b.quota_bytes,error:"measure_failed"}}}d()}catch(a){d(a)}})},79133:(a,b,c)=>{"use strict";c.d(b,{A5:()=>j,Pf:()=>h,decryptFromDiskBuffer:()=>k});var d=c(77598),e=c(87181);let f=Buffer.from("madarx-artifact-dek-v1"),g="1"===process.env.MADARX_ARTIFACT_ENCRYPTION;function h(){return g}function i(a){if(!a)throw Error("deriveOrgDek requires orgId");let b=(0,d.createHash)("sha256").update(a).digest(),c=(0,e.K2)({allowGenerate:!0});return Buffer.from((0,d.hkdfSync)("sha256",c,b,f,32))}function j(a,b){let{ciphertext:c,iv:e,authTag:f}=function(a,b){let c=i(a),e=(0,d.randomBytes)(12),f=(0,d.createCipheriv)("aes-256-gcm",c,e),g=Buffer.isBuffer(b)?b:Buffer.from(b,"utf8");return{ciphertext:Buffer.concat([f.update(g),f.final()]),iv:e,authTag:f.getAuthTag()}}(a,b);return Buffer.concat([e,f,c])}function k(a,b){if(!Buffer.isBuffer(b)||b.length<28)throw Error("Invalid encrypted artifact: too short");let c=b.subarray(0,12),e=b.subarray(12,28),f=b.subarray(28),g=i(a),h=(0,d.createDecipheriv)("aes-256-gcm",g,c);return h.setAuthTag(e),Buffer.concat([h.update(f),h.final()])}},79278:(a,b,c)=>{"use strict";c.d(b,{Pw:()=>o,pE:()=>f});let d=/^[a-z][a-z0-9-]{2,63}$/,e=new Set(["bearer","api_key","basic","none"]),f=["low","medium","high","irreversible_external"],g=new Set(["GET","POST","PUT","PATCH","DELETE"]),h=new Set(["POST","PUT","PATCH","DELETE"]),i=/^[a-z][a-z0-9_]{0,63}$/,j=/^[A-Z][A-Z0-9_]{1,63}$/,k=new Set(["token","key","secret","password","value","api_key","bearer","credentials"]);function l(a,b,c){a.push(`${b}: ${c}`)}function m(a){return null!==a&&"object"==typeof a&&!Array.isArray(a)}function n(a){return f.indexOf(a)}function o(a,b={}){let c,p=[],q=[];try{c=JSON.stringify(a)}catch{return{ok:!1,errors:["manifest: not JSON-serialisable"],warnings:[],normalized:null}}if(!c||"undefined"===c)return{ok:!1,errors:["manifest: required"],warnings:[],normalized:null};if(Buffer.byteLength(c,"utf8")>65536)return{ok:!1,errors:[`manifest: serialized length ${Buffer.byteLength(c,"utf8")} bytes exceeds 65536-byte cap`],warnings:[],normalized:null};if(!m(a))return{ok:!1,errors:["manifest: must be a plain object"],warnings:[],normalized:null};a.slug&&"string"==typeof a.slug?d.test(a.slug)||l(p,"slug",`does not match ${d} (lowercase, starts with letter, 3-64 chars, hyphens allowed)`):l(p,"slug","required (string)"),null!=a.title&&"string"!=typeof a.title&&l(p,"title","must be a string");let r=null;if(a.base_url&&"string"==typeof a.base_url){let b;try{b=new URL(a.base_url)}catch{l(p,"base_url","must be a valid URL")}b&&("https:"!==b.protocol&&l(p,"base_url","must be https"),r=b.hostname.toLowerCase())}else l(p,"base_url","required (string)");let s=[];if(Array.isArray(a.allowed_hosts)&&0!==a.allowed_hosts.length?((s=a.allowed_hosts.map(a=>"string"==typeof a?a.toLowerCase():a)).forEach((a,b)=>{if("string"!=typeof a||!a)return void l(p,`allowed_hosts[${b}]`,"must be a non-empty string");(function(a){if(!a)return!1;let b=String(a).toLowerCase().replace(/^\[|\]$/g,"");if("localhost"===b||"::1"===b||b.endsWith(".localhost")||b.endsWith(".local"))return!0;if(b.includes(":"))return!!(b.startsWith("fc")||b.startsWith("fd")||b.startsWith("fe80:"))||"::"===b;let c=b.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/);if(!c)return!1;let[d,e]=[Number(c[1]),Number(c[2])];return 10===d||127===d||0===d||169===d&&254===e||192===d&&168===e||172===d&&!!(e>=16)&&!!(e<=31)})(a)&&l(p,`allowed_hosts[${b}]`,`private/local hosts are not allowed ('${a}')`)}),r&&!s.includes(r)&&l(p,"allowed_hosts",`must include base_url host '${r}'`)):l(p,"allowed_hosts","required (non-empty array of host strings)"),!function(a,b){if(!m(a))return l(b,"auth","required (plain object)");for(let c of(a.type&&e.has(a.type)||l(b,"auth.type",`must be one of ${[...e].join(", ")}`),Object.keys(a)))k.has(c.toLowerCase())&&l(b,"auth",`raw secrets are not allowed; reference by *_ref only (found field '${c}')`);let c=a.type;("bearer"===c||"api_key"===c)&&(a.secret_ref&&"string"==typeof a.secret_ref?j.test(a.secret_ref)||l(b,"auth.secret_ref",`must match ${j} (uppercase, starts with letter, underscores/digits, max 64 chars)`):l(b,"auth.secret_ref","required for bearer/api_key auth (string)")),"basic"===c&&(a.username_ref&&"string"==typeof a.username_ref?j.test(a.username_ref)||l(b,"auth.username_ref",`must match ${j}`):l(b,"auth.username_ref","required for basic auth (string)"),a.password_ref&&"string"==typeof a.password_ref?j.test(a.password_ref)||l(b,"auth.password_ref",`must match ${j}`):l(b,"auth.password_ref","required for basic auth (string)"))}(a.auth,p),null!=a.default_headers&&function(a,b){if(!m(a))return l(b,"default_headers","must be a plain object");for(let[c,d]of Object.entries(a))"string"!=typeof d&&l(b,`default_headers.${c}`,"header value must be a string"),/authorization/i.test(c)&&l(b,"default_headers",`must not set Authorization (use auth); found header '${c}'`)}(a.default_headers,p),!m(a.endpoints)||0===Object.keys(a.endpoints).length)return l(p,"endpoints","required (non-empty plain object)"),{ok:!1,errors:p,warnings:q,normalized:null};let t=Object.entries(a.endpoints);if(t.length>50)return l(p,"endpoints","exceeds 50 endpoint cap"),{ok:!1,errors:p,warnings:q,normalized:null};let u={};for(let[a,b]of t){let c=`endpoints.${a}`;i.test(a)||l(p,c,`endpoint name must match ${i}`);let d=function(a,b,c){let d;if(!m(a))return l(b,c,"must be a plain object"),null;if(a.method&&g.has(a.method)||l(b,`${c}.method`,`must be one of ${[...g].join(", ")} (uppercase)`),a.path&&"string"==typeof a.path)if(a.path.startsWith("/"))for(let d of function(a){let b,c=[],d=/\{([^}]+)\}/g;for(;null!==(b=d.exec(a));)c.push(b[1]);return c}(a.path))/^[a-z][a-z0-9_]*$/.test(d)||l(b,`${c}.path`,`placeholder '{${d}}' must match /^[a-z][a-z0-9_]*$/`);else l(b,`${c}.path`,"must start with '/'");else l(b,`${c}.path`,"required (string starting with /)");null!=a.description&&"string"!=typeof a.description&&l(b,`${c}.description`,"must be a string"),null==a.input_schema||m(a.input_schema)||l(b,`${c}.input_schema`,"must be a plain object");let e=a.method,i=h.has(e),j=a.risk,k=!1;return null==j||f.includes(j)||(l(b,`${c}.risk`,`must be one of ${f.join(", ")}`),j=void 0),null==j?d=i?"medium":"low":i&&n(j)<n("medium")?(d="medium",k=!0):d=j,{effectiveRisk:d,clampWarning:k}}(b,p,c);if(d){let{effectiveRisk:e,clampWarning:f}=d;f&&q.push(`${c}.risk: clamped low→medium for write method`),u[a]={method:b.method,path:b.path??null,risk:e,input_schema:null!=b.input_schema?structuredClone(b.input_schema):null,description:b.description??null}}}if(p.length>0)return{ok:!1,errors:p,warnings:q,normalized:null};let v={},w=new Set(["type","header","prefix","query_param","secret_ref","username_ref","password_ref"]);for(let[b,c]of Object.entries(a.auth))w.has(b)&&(v[b]=c);return{ok:!0,errors:[],warnings:q,normalized:{slug:a.slug,title:a.title??null,base_url:a.base_url,allowed_hosts:s,auth:v,default_headers:null!=a.default_headers?structuredClone(a.default_headers):{},endpoints:u}}}},80987:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Cw:()=>s,ID:()=>r,VC:()=>t,gE:()=>q});var e=c(31421),f=c(76760),g=c(73024),h=c(80099),i=c(9381),j=c(78708),k=c(41249),l=c(24516),m=a([j,l]);[j,l]=m.then?(await m)():m;let u=f.join(i.Dl,"scripts","printing-press"),v=f.join(u,"install.mjs"),w=f.join(u,"install-cli.mjs");function n(){return(0,k.Qw)((0,k.U5)())}function o(a,b,{cwd:c,timeoutMs:d,env:f}={}){return new Promise((g,h)=>{let i=(0,e.spawn)(a,b,{cwd:c,shell:!1,env:f||{PATH:process.env.PATH,HOME:process.env.HOME,NODE_ENV:"production"}}),j=Buffer.alloc(0),k=Buffer.alloc(0),l=!1,m=!1,n=!1,o=setTimeout(()=>{n=!0;try{i.kill("SIGKILL")}catch{}},d||6e4);i.stdout.on("data",a=>{j.length+a.length>262144?(j=Buffer.concat([j,a.slice(0,262144-j.length)]),l=!0):j=Buffer.concat([j,a])}),i.stderr.on("data",a=>{k.length+a.length>262144?(k=Buffer.concat([k,a.slice(0,262144-k.length)]),m=!0):k=Buffer.concat([k,a])}),i.on("error",a=>{clearTimeout(o),h(a)}),i.on("close",(a,b)=>{clearTimeout(o),g({exit_code:a,signal:b,timed_out:n,stdout:j.toString("utf8"),stderr:k.toString("utf8"),stdout_truncated:l,stderr_truncated:m})})})}function p(a){return(a?.declared_scopes||[]).some(a=>"string"==typeof a&&/write|mutate|delete|push/i.test(a))}async function q(a={},b={}){let c=n();if(!g.existsSync(u))return{ok:!1,status:"misconfigured",reason:`sub-package missing at ${u}`};let d=await o("node",[v],{cwd:u,timeoutMs:3e5});return d.timed_out?{ok:!1,status:"timeout",stderr:d.stderr}:0!==d.exit_code?{ok:!1,status:"failed",exit_code:d.exit_code,stderr:d.stderr,security_mode:c.mode}:{ok:!0,status:"installed",skills_dir:j.N3,security_mode:c.mode,stdout_tail:d.stdout.slice(-1024)}}async function r(a={},b={}){let c=n(),d=String(a.slug||"").trim();if(!(0,j.Ac)(d))return{ok:!1,status:"invalid_input",reason:"slug must match /^[a-z0-9][a-z0-9-]{0,63}$/"};let e=String(a.source||"starter-pack"),g=new Set(["starter-pack","github","local","spec"]);if(!g.has(e))return{ok:!1,status:"invalid_input",reason:`source must be one of ${[...g].join(", ")}`};let h=a.source_url?String(a.source_url):null;if("starter-pack"!==e&&!h)return{ok:!1,status:"invalid_input",reason:`source_url required when source=${e}`};let i=f.join(j.uS,d);try{(0,j.FT)(i)}catch(a){return{ok:!1,status:"unsafe_path",reason:a.message}}let k=[w,d,"--source",e];h&&k.push("--source-url",h);let l=await o("node",k,{cwd:u,timeoutMs:3e5});if(l.timed_out)return{ok:!1,status:"timeout",stderr:l.stderr};if(0!==l.exit_code)return{ok:!1,status:"failed",exit_code:l.exit_code,stderr:l.stderr};let m=(0,j.$A)(d);return m&&p(m)&&!c.allow_network_write_clis?{ok:!1,status:"refused",reason:`Security mode "${c.mode}" forbids CLIs declaring write scopes. Declared: ${JSON.stringify(m.declared_scopes)}`,cli:m}:{ok:!0,status:"generated",cli:m,security_mode:c.mode}}async function s(a={},b={}){let c,d,e=n(),h=String(a.slug||"").trim();if(!(0,j.Ac)(h))return{ok:!1,status:"invalid_input",reason:"invalid slug"};let i=(0,j.$A)(h);if(!i||"removed"===i.status)return{ok:!1,status:"not_installed",slug:h};if("disabled"===i.status)return{ok:!1,status:"disabled",slug:h};if(p(i)&&!e.allow_network_write_clis)return{ok:!1,status:"refused",reason:`Security mode "${e.mode}" forbids running CLIs with write scopes.`};let k=Array.isArray(a.args)?a.args.map(String):[];for(let a of k)if(/[;&|`$<>]/.test(a))return{ok:!1,status:"unsafe_args",reason:`argv contains shell metacharacter: ${a}`};try{(0,j.FT)(i.path)}catch(a){return{ok:!1,status:"unsafe_path",reason:a.message}}let m=process.env.GOBIN||(process.env.GOPATH?`${process.env.GOPATH}/bin`:null)||(process.env.HOME?`${process.env.HOME}/go/bin`:null),q=m?f.join(m,`${h}-pp-cli`):null,r=f.join(i.path,"bin"),t=f.join(i.path,"index.js");if(q&&g.existsSync(q))c=q,d=k;else if(g.existsSync(r))c=r,d=k;else{if(!g.existsSync(t))return{ok:!1,status:"no_entry_point",reason:`No entry point found. Tried: ${q||"(no go bin dir)"} , ${r}, ${t}`};c=process.execPath,d=[t,...k]}let u=function(a,b={}){let c={PATH:process.env.PATH,HOME:process.env.HOME,NODE_ENV:"production",PRINTING_PRESS_CLI_SLUG:a.slug,PRINTING_PRESS_DATA_DIR:a.path};for(let d of a.required_secrets||[])if("string"==typeof d&&/^[A-Z][A-Z0-9_]*$/.test(d))try{let a=(0,l.getSecret)(d,{agent_id:b.agent_id,project_id:b.project_id});a&&(c[d]=a)}catch{}return c}(i,b),v=Math.min(Number(a.timeout_ms)||6e4,3e5),w=await o(c,d,{cwd:i.path,timeoutMs:v,env:u});return{ok:0===w.exit_code,status:w.timed_out?"timeout":0===w.exit_code?"complete":"failed",slug:h,exit_code:w.exit_code,timed_out:w.timed_out,stdout:w.stdout,stderr:w.stderr,stdout_truncated:w.stdout_truncated,stderr_truncated:w.stderr_truncated,security_mode:e.mode}}let x=/\b(INSERT|UPDATE|DELETE|DROP|ALTER|CREATE|REPLACE|ATTACH|DETACH|PRAGMA|VACUUM|REINDEX|TRUNCATE)\b/i;async function t(a={},b={}){let c,d=String(a.slug||"").trim();if(!(0,j.Ac)(d))return{ok:!1,status:"invalid_input",reason:"invalid slug"};let e=(0,j.$A)(d);if(!e||"removed"===e.status)return{ok:!1,status:"not_installed",slug:d};let i=String(a.sql||"").trim();if(!i)return{ok:!1,status:"invalid_input",reason:"sql is required"};if(i.includes(";"))return{ok:!1,status:"unsafe_sql",reason:"multi-statement queries are not allowed"};if(x.test(i))return{ok:!1,status:"unsafe_sql",reason:"only SELECT-style read queries are permitted"};if(!/^\s*(SELECT|WITH)\b/i.test(i))return{ok:!1,status:"unsafe_sql",reason:"query must begin with SELECT or WITH"};let k=process.env.XDG_DATA_HOME||(process.env.HOME?f.join(process.env.HOME,".local","share"):null),l=[f.join(e.path,"data.sqlite"),f.join(e.path,`${d}.sqlite`),k?f.join(k,`${d}-pp-cli`,"data.db"):null,k?f.join(k,`${d}-pp-cli`,"data.sqlite"):null].filter(Boolean),m=l.find(a=>g.existsSync(a));if(!m)return{ok:!1,status:"no_mirror",reason:"CLI has no local SQLite mirror",tried:l};if(m.startsWith(f.resolve(e.path)+f.sep))try{(0,j.FT)(m)}catch(a){return{ok:!1,status:"unsafe_path",reason:a.message}}let n=Array.isArray(a.params)?a.params:[];try{c=new h.DatabaseSync(m,{readOnly:!0})}catch(a){return{ok:!1,status:"open_failed",reason:a.message}}try{let a=c.prepare(i).all(...n).slice(0,1e3);return{ok:!0,status:"complete",slug:d,row_count:a.length,truncated:1e3===a.length,rows:a}}catch(a){return{ok:!1,status:"query_failed",reason:a.message}}finally{try{c.close()}catch{}}}d()}catch(a){d(a)}})},81553:(a,b,c)=>{"use strict";c.d(b,{YO:()=>j,ct:()=>m,mU:()=>k,rd:()=>g,runUpdateCheck:()=>n,shouldAutoApply:()=>o});var d=c(73024),e=c(76760),f=c(73136);let g="madarx",h=`https://registry.npmjs.org/${g}/latest`,i=e.dirname((0,f.fileURLToPath)("file:///home/runner/work/madarx-os/madarx-os/lib/update-check.js"));function j(){if(process.env.MADARX_VERSION)return process.env.MADARX_VERSION;for(let a of[e.join(i,"..","package.json"),e.join(process.cwd(),"package.json"),e.join(process.cwd(),".next","standalone","package.json")]){let b=function(a){try{let b=JSON.parse(d.readFileSync(a,"utf8"));if(b&&b.name===g&&b.version)return b.version}catch{}return null}(a);if(b)return b}return"0.0.0"}function k(a,b){let c=a=>String(a).split("-")[0].split(".").slice(0,3).map(a=>parseInt(a,10)||0),d=c(a),e=c(b);for(let a=0;a<Math.max(d.length,e.length);a++){let b=(d[a]||0)-(e[a]||0);if(0!==b)return b>0?1:-1}return 0}async function l({fetchImpl:a=fetch,timeoutMs:b=4e3}={}){try{let c=await a(h,{signal:AbortSignal.timeout(b)});if(!c.ok)return null;let d=await c.json();return d?.version||null}catch{return null}}function m(a){try{return JSON.parse(d.readFileSync(a,"utf8"))}catch{return null}}async function n({file:a,current:b=j(),fetchImpl:c=fetch,nowIso:f}={}){let g=await l({fetchImpl:c}),h=f||new Date().toISOString();if(!g){let c=a?m(a):null;return{ts:h,current:b,latest:c?.latest||null,behind:!1,reachable:!1}}let i=k(g,b)>0,o={ts:h,current:b,latest:g,behind:i,reachable:!0};return a&&(d.mkdirSync(e.dirname(a),{recursive:!0}),d.writeFileSync(a,JSON.stringify(o,null,2))),o}function o({behind:a,mode:b,apply:c}){return!!a&&"weekly"===b&&"auto"===c}},81833:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{BQ:()=>o,HO:()=>s,Jh:()=>n,OT:()=>r,Om:()=>k,bz:()=>m,cN:()=>p,h5:()=>q,iF:()=>i,k2:()=>l,pp:()=>j});var e=c(34255),f=a([e]);function g(a){return a?{id:String(a.id),name:String(a.name||""),position:Number(a.position)||0,is_active:1===a.is_active,created_at:a.created_at,updated_at:a.updated_at}:null}function h(a,b){return String(a||"").trim().slice(0,32)||b}function i(){let a=(0,e.getDb)();l();let b=a.prepare("SELECT * FROM dashboard_spaces ORDER BY position ASC, created_at ASC").all().map(g),c=b.find(a=>a.is_active)||b[0]||null;return{spaces:b,active_space_id:c?c.id:null}}function j(a){if(!a)return null;let b=(0,e.getDb)().prepare("SELECT * FROM dashboard_spaces WHERE id = ?").get(String(a));return g(b)}function k(a=[],{fallback:b="default"}={}){for(let b of Array.isArray(a)?a:[a])if(b&&j(b))return b;return b}function l(){let a=(0,e.getDb)(),b=a.prepare("SELECT COUNT(*) AS n FROM dashboard_spaces").get().n;if(0===b){let b=(0,e.nowIso)();a.prepare("INSERT INTO dashboard_spaces (id, name, position, is_active, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?)").run("default","main",0,1,b,b)}a.prepare("UPDATE artifacts SET space_id = 'default' WHERE space_id IS NULL").run()}function m({name:a}={}){let b=(0,e.getDb)();l();let c=b.prepare("SELECT COUNT(*) AS n FROM dashboard_spaces").get().n;if(c>=32){let a=Error("Maximum of 32 spaces reached.");throw a.code="SPACE_LIMIT",a}let d=b.prepare("SELECT MAX(position) AS m FROM dashboard_spaces").get().m,f=(Number(d)||0)+1,g=(0,e.newId)("space"),i=(0,e.nowIso)(),k=h(a,`Space ${c+1}`);return b.prepare("INSERT INTO dashboard_spaces (id, name, position, is_active, created_at, updated_at) VALUES (?, ?, ?, 0, ?, ?)").run(g,k,f,i,i),j(g)}function n(a,b){let c=j(a);if(!c){let a=Error("Space not found.");throw a.code="SPACE_NOT_FOUND",a}let d=h(b,c.name);return d===c.name?c:((0,e.getDb)().prepare("UPDATE dashboard_spaces SET name = ?, updated_at = ? WHERE id = ?").run(d,(0,e.nowIso)(),a),j(a))}function o(a){if(!j(a)){let a=Error("Space not found.");throw a.code="SPACE_NOT_FOUND",a}let b=(0,e.getDb)(),c=(0,e.nowIso)(),d=b.prepare("BEGIN IMMEDIATE");try{d.run(),b.prepare("UPDATE dashboard_spaces SET is_active = 0, updated_at = ? WHERE is_active = 1").run(c),b.prepare("UPDATE dashboard_spaces SET is_active = 1, updated_at = ? WHERE id = ?").run(c,a),b.prepare("COMMIT").run()}catch(a){try{b.prepare("ROLLBACK").run()}catch{}throw a}return j(a)}function p(a){let b=(0,e.getDb)(),c=j(a);if(!c)return null;if(b.prepare("SELECT COUNT(*) AS n FROM dashboard_spaces").get().n<=1){let a=Error("Cannot delete the last remaining space.");throw a.code="SPACE_LAST",a}let d=b.prepare("SELECT * FROM dashboard_spaces WHERE id != ? ORDER BY position ASC, created_at ASC LIMIT 1").get(a);if(!d){let a=Error("No fallback space available.");throw a.code="SPACE_NO_FALLBACK",a}let f=(0,e.nowIso)(),g=b.prepare("BEGIN IMMEDIATE");try{g.run(),b.prepare("UPDATE artifacts SET space_id = ? WHERE space_id = ?").run(d.id,a),b.prepare("UPDATE space_share_links SET revoked = 1 WHERE space_id = ? AND revoked = 0").run(a),b.prepare("DELETE FROM dashboard_spaces WHERE id = ?").run(a),c.is_active&&b.prepare("UPDATE dashboard_spaces SET is_active = 1, updated_at = ? WHERE id = ?").run(f,d.id),b.prepare("COMMIT").run()}catch(a){try{b.prepare("ROLLBACK").run()}catch{}throw a}return{deleted_id:a,moved_to:d.id}}function q(a,b){if(!a){let a=Error("artifact_id is required.");throw a.code="ARTIFACT_REQUIRED",a}let c=j(b);if(!c){let a=Error("Space not found.");throw a.code="SPACE_NOT_FOUND",a}let d=(0,e.getDb)(),f=d.prepare("SELECT id FROM artifacts WHERE id = ?").get(String(a));if(!f){let a=Error("Artifact not found.");throw a.code="ARTIFACT_NOT_FOUND",a}return d.prepare("UPDATE artifacts SET space_id = ?, pinned_to_space_at = datetime('now') WHERE id = ?").run(c.id,f.id),{artifact_id:f.id,space_id:c.id}}function r(){let a=(0,e.getDb)();l();let b=a.prepare("SELECT * FROM dashboard_spaces ORDER BY position ASC, created_at ASC").all().map(g),c=a.prepare("SELECT id, space_id FROM artifacts WHERE space_id IS NOT NULL").all(),d=new Map(b.map(a=>[a.id,[]]));for(let a of c)d.has(a.space_id)&&d.get(a.space_id).push(String(a.id));let f=b.map(a=>({...a,artifact_ids:d.get(a.id)||[]})),h=f.find(a=>a.is_active)||f[0]||null;return{spaces:f,active_space_id:h?h.id:null}}function s({spaces:a=[],active_space_id:b=null}={}){if(!Array.isArray(a)||0===a.length)return null;let c=(0,e.getDb)();l();let d=c.prepare("SELECT COUNT(*) AS n FROM dashboard_spaces").get().n;if(!(1===d&&c.prepare("SELECT id FROM dashboard_spaces WHERE id = 'default'").get()))return null;let f=a.filter(a=>a&&"string"==typeof a.id&&a.id.length>0).slice(0,32);if(0===f.length)return null;let g=(0,e.nowIso)(),i=c.prepare("BEGIN IMMEDIATE");try{i.run(),c.prepare("DELETE FROM dashboard_spaces").run(),f.forEach((a,d)=>{let e=String(a.id),f=h(a.name,`Space ${d+1}`),i=b?e===String(b):0===d;c.prepare("INSERT INTO dashboard_spaces (id, name, position, is_active, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?)").run(e,f,d,+!!i,g,g);let j=Array.isArray(a.artifactIds)?a.artifactIds:[],k=c.prepare("UPDATE artifacts SET space_id = ? WHERE id = ? AND (space_id IS NULL OR space_id = ?)");for(let a of j)"string"==typeof a&&k.run(e,a,e)});let a=c.prepare("SELECT COUNT(*) AS n FROM dashboard_spaces WHERE is_active = 1").get().n;if(0===a){let a=c.prepare("SELECT id FROM dashboard_spaces ORDER BY position ASC, created_at ASC LIMIT 1").get();a&&c.prepare("UPDATE dashboard_spaces SET is_active = 1 WHERE id = ?").run(a.id)}c.prepare("COMMIT").run()}catch(a){try{c.prepare("ROLLBACK").run()}catch{}throw a}return r()}e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},81992:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{cS:()=>j,r_:()=>i,vg:()=>k});var e=c(25938),f=a([e]);function g(a,{includeBody:b=!1}={}){let c=Object.fromEntries((a.payload?.headers||[]).map(a=>[String(a.name).toLowerCase(),a.value])),d={id:a.id,thread_id:a.threadId,from:c.from||null,subject:c.subject||null,date:c.date||null,snippet:a.snippet||""};return b&&(d.to=c.to||null,d.body_text=function a(b={}){if(b.body?.data)return function(a=""){if(!a)return"";try{return Buffer.from(String(a),"base64url").toString("utf8")}catch{return""}}(b.body.data);let c=Array.isArray(b.parts)?b.parts:[],d=c.find(a=>"text/plain"===a.mimeType&&a.body?.data)||c.find(a=>a.body?.data);return d?a(d):""}(a.payload||{})),d}async function h(a,b,c,d){let f=(0,e.s)(d,c),g=await f(a,{headers:{Authorization:`Bearer ${b}`}});if(!g.ok)throw Error(`google api failed: ${g.status}`);return g.json()}async function i(a={},b={}){let c="gmail_messages_list",d=await (0,e.r)(b,c),f=new URL("https://gmail.googleapis.com/gmail/v1/users/me/messages");for(let b of(a.max_results&&f.searchParams.set("maxResults",String(a.max_results)),a.q&&f.searchParams.set("q",a.q),a.label_ids||a.labelIds||[]))f.searchParams.append("labelIds",String(b));let j=(await h(f,d,b,c)).messages||[];return Promise.all(j.map(async a=>{let e=await h(`https://gmail.googleapis.com/gmail/v1/users/me/messages/${encodeURIComponent(a.id)}?format=metadata`,d,b,c);return g(e)}))}async function j(a={},b={}){if(!a.message_id)throw Error("message_id is required");let c="gmail_message_read",d=await (0,e.r)(b,c),f=await h(`https://gmail.googleapis.com/gmail/v1/users/me/messages/${encodeURIComponent(a.message_id)}?format=full`,d,b,c);return g(f,{includeBody:!0})}async function k(a={},b={}){if(!a.thread_id)throw Error("thread_id is required");let c="gmail_thread_read",d=await (0,e.r)(b,c),f=await h(`https://gmail.googleapis.com/gmail/v1/users/me/threads/${encodeURIComponent(a.thread_id)}?format=full`,d,b,c);return{id:f.id,messages:(f.messages||[]).map(a=>g(a,{includeBody:!0}))}}e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},83963:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Dn:()=>ae,Fp:()=>aa,Fy:()=>F,G:()=>ai,HB:()=>R,Mu:()=>Y,Q4:()=>J,Qf:()=>_,Rz:()=>W,V0:()=>ag,VI:()=>P,Vk:()=>N,WH:()=>$,WX:()=>Z,X1:()=>X,createTask:()=>S,eE:()=>ac,fI:()=>B,gf:()=>I,gg:()=>O,hC:()=>ap,hW:()=>ak,iR:()=>ad,ij:()=>an,jN:()=>G,kP:()=>D,lC:()=>T,n5:()=>ao,nV:()=>aj,qF:()=>am,qt:()=>ah,rN:()=>ab,s_:()=>Q,vQ:()=>V,w4:()=>al,yS:()=>U,yX:()=>E,zP:()=>H});var e=c(34255),f=c(40563),g=c(61423),h=c(18313),i=a([e,f,g]);function j(a,b=null){if(!a)return b;try{return JSON.parse(a)}catch{return b}}function k(a){return null==a?null:JSON.stringify(a)}function l(a){let b=globalThis.__madarxLiveEventBus;if(!b?.subscribers)return{id:a.id||(0,e.newId)("evt"),ts:a.ts||Date.now(),...a};let c={id:a.id||`evt-${b.nextId++}-${Math.random().toString(36).slice(2,8)}`,ts:a.ts||Date.now(),...a};for(let a of b.subscribers)try{a(c)}catch{}return c}function m(a){return a?{...a,tools:j(a.tools,[]),files:j(a.files,[]),memory:j(a.memory,[]),permissions_json:j(a.permissions_json,{}),metadata_json:j(a.metadata_json,{})}:null}function n(a){return a?{...a,parent_task_id:a.parent_task_id||null,tags:j(a.tags_json,[]),watchers:j(a.watchers_json,[]),due_at:a.due_at||null,estimate_minutes:null==a.estimate_minutes?null:Number(a.estimate_minutes),recurrence:a.recurrence||null,acceptance_criteria:a.acceptance_criteria||null}:null}function o(a){return a?{id:a.id,task_id:a.task_id,label:a.label,done:!!a.done,position:Number(a.position)||0,created_at:a.created_at,done_at:a.done_at||null}:null}function p(a){if(null==a)return null;if(Array.isArray(a)){let b=a.map(a=>String(a).trim()).filter(Boolean).slice(0,24);return b.length?b:[]}return"string"==typeof a?a.split(",").map(a=>a.trim()).filter(Boolean).slice(0,24):null}function q(a){if(null==a)return null;let b=(Array.isArray(a)?a:String(a).split(",")).map(a=>String(a).trim()).filter(Boolean).slice(0,24);return Array.from(new Set(b))}function r(a){if(!a)return null;let b=String(a).trim();if(!b)return null;if(/^\d{4}-\d{2}-\d{2}$/.test(b))return`${b}T23:59:59.000Z`;let c=new Date(b);return Number.isNaN(c.getTime())?null:c.toISOString()}function s(a){if(null==a||""===a)return null;let b=Number(a);return!Number.isFinite(b)||b<0?null:Math.round(b)}function t(a){if(!a)return null;let b=String(a).trim();return b?b.length>64?b.slice(0,64):b:null}function u(a){return a?{...a}:null}function v(a){return a?{...a,payload:j(a.payload_json,null)}:null}function w(a){return a?{...a,usage:j(a.usage_json,null),result:j(a.result_json,null)}:null}function x(a){return a?{...a,payload:j(a.payload_json,null)}:null}function y(a){return a?{...a,details:j(a.details_json,null),cursor:a.seq}:null}function z(a){return m((0,e.getDb)().prepare("SELECT * FROM agents WHERE id = ?").get(a))}function A(a){if(!a)return null;let b=z(a);if(!b)throw Error(`Agent not found: ${a}`);if("terminated"===b.status)throw Error(`Terminated agents cannot receive assignments: ${a}`);return b}function B(a){if(!a?.type||!1===a.persist)return null;let b=function(a){let b={agent_run_start:"agent.run.status",agent_run_complete:"agent.run.status",agent_tool_start:"agent.run.event",agent_tool_result:"agent.run.event",log:"agent.run.log"},c=(0,h._d)(b[a.type]||a.type,null);return c&&h.eh.includes(c)?{actor_type:a.actor_type||(a.agent_id?"agent":"system"),actor_id:a.actor_id||a.agent_id||null,agent_id:a.agent_id||null,run_id:a.run_id||null,entity_type:a.entity_type||(a.task_id?"task":a.run_id?"agent_run":a.agent_id?"agent":"event"),entity_id:a.entity_id||a.task_id||a.run_id||a.id||null,action:c,details:{...a,legacy_type:b[a.type]?a.type:void 0},created_at:a.created_at||(0,e.nowIso)()}:null}(a);return b?C(b):null}function C({actor_type:a="system",actor_id:b=null,agent_id:c=null,run_id:d=null,entity_type:f=null,entity_id:g=null,action:h,details:i=null,created_at:j=(0,e.nowIso)()}={}){if(!h)throw Error("activity action is required");let l=(0,e.getDb)(),m=(0,e.newId)("activity");l.prepare(`
3319
+ GROUP BY project_id`).all(),b=Object.create(null);for(let c of a)b[c.project_id]=c.count;return b}function u(a){return n((0,h.getDb)().prepare("SELECT * FROM disk_files WHERE id = ?").get(a))}function v(a,b,c,d={}){if("object"==typeof a&&a){let e=a;a=e.project_id||e.projectId,b=e.folder_id||e.folderId||null,c={name:e.name,content:e.content||e.buffer||"",type:e.mime_type||e.type||""},d={...e,local_only:e.local_only}}let i=(0,j.U1)(a);if(!i)throw Error("project not found");let k=b?(0,h.getDb)().prepare("SELECT * FROM disk_folders WHERE id = ?").get(b):q(i.id);if(!k)throw Error("folder not found");let l=Buffer.isBuffer(c?.buffer)?c.buffer:Buffer.from(c?.content||""),m=String(c?.name||d.name||"upload.bin").replace(/[\\/]+/g,"-"),n=g.createHash("sha256").update(l).digest("hex"),p=f.join(A,k.path.replace(/^\/+|\/+$/g,""));e.mkdirSync(p,{recursive:!0});let r=f.join(p,`${n.slice(0,12)}-${m}`);e.existsSync(r)||e.writeFileSync(r,l);let s=(0,h.nowIso)(),t=(0,h.newId)("file");(0,h.getDb)().prepare("INSERT INTO disk_files (id, project_id, folder_id, name, kind, mime_type, size_bytes, sha256, storage_path, local_only, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)").run(t,i.id,k.id,m,function(a,b=""){let c=f.extname(a||"").toLowerCase();return[".md",".markdown"].includes(c)?"md":".pdf"===c?"pdf":[".mp3",".wav",".m4a",".ogg",".webm"].includes(c)||b.startsWith("audio/")?"audio":[".png",".jpg",".jpeg",".webp",".gif"].includes(c)||b.startsWith("image/")?"image":[".txt",".csv",".json",".yaml",".yml"].includes(c)||b.startsWith("text/")?"text":"other"}(m,c?.type||d.mime_type||""),c?.type||d.mime_type||null,l.length,n,r,+!!d.local_only,s,s);let w=u(t);try{(0,j.Ip)(i.id,{action:"project.file.uploaded",title:`Uploaded ${m}`,summary:`Attached ${m} to the project folder`,status:"complete",source:"disk",details:{file_id:t,folder_id:k.id,kind:w.kind,size_bytes:w.size_bytes,local_only:w.local_only}})}catch{}return o({project_id:i.id,folder_id:k.id,file_id:t,action:"file.upload"}),w}function w(a,b={}){let c=["name","folder_id","local_only"],d=Object.entries(b).filter(([a,b])=>c.includes(a)&&void 0!==b);if(!d.length)return u(a);let e=d.map(([a])=>`${a} = ?`).concat("updated_at = ?").join(", "),f=d.map(([a,b])=>"local_only"===a?+!!b:b).concat((0,h.nowIso)(),a);(0,h.getDb)().prepare(`UPDATE disk_files SET ${e} WHERE id = ?`).run(...f);let g=u(a);return o({project_id:g?.project_id||null,folder_id:g?.folder_id||null,file_id:a,action:"file.update"}),g}function x(a){let b=u(a);if(!b)return!1;(0,h.getDb)().prepare("DELETE FROM disk_files WHERE id = ?").run(a);try{e.unlinkSync(b.storage_path)}catch{}return o({project_id:b.project_id,folder_id:b.folder_id||null,file_id:a,action:"file.delete"}),!0}function y(a,b){if(!b)throw Error("engine parameter required");let c=u(a);if(!c)throw Error("file not found");return c.local_only&&!["ollama","local_whisper"].includes(String(b))?{...c,content:"<redacted: local_only>",redacted:!0}:{...c,content:e.readFileSync(c.storage_path,"utf8"),redacted:!1}}function z(a,b){let c=y(a,b);if(c.redacted){let a=Error("local_only: engine not permitted");throw a.code="LOCAL_ONLY_DENIED",a}return c.storage_path}d()}catch(a){d(a)}})},78335:()=>{},78708:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{$A:()=>n,Ac:()=>j,FT:()=>k,N3:()=>q,Us:()=>m,f3:()=>o,uS:()=>p});var e=c(76760),f=c(73024),g=c(34255),h=c(9381),i=a([g]);g=(i.then?(await i)():i)[0];let p=e.join(h.un,"generated-clis"),q=e.join(h.un,"skills","printing-press");e.join(h.nJ,"printing-press-clis.json");let r=/^[a-z0-9][a-z0-9-]{0,63}$/;function j(a){return"string"==typeof a&&r.test(a)}function k(a){let b=e.resolve(a),c=e.resolve(p);if(!b.startsWith(c+e.sep)&&b!==c)throw Error(`Path is not under workspace/generated-clis/: ${a}`);return b}function l(a){if(!a)return null;let b=null,c=[],d=[];try{b=a.manifest_json?JSON.parse(a.manifest_json):null}catch{b=null}try{c=a.declared_scopes?JSON.parse(a.declared_scopes):[]}catch{c=[]}try{d=a.required_secrets?JSON.parse(a.required_secrets):[]}catch{d=[]}return{slug:a.slug,source_kind:a.source_kind,source_url:a.source_url||null,installed_at:a.installed_at,updated_at:a.updated_at,path:a.path,declared_scopes:c,required_secrets:d,quota_bytes:a.quota_bytes||0x6400000,manifest:b,status:a.status}}function m({includeRemoved:a=!1}={}){let b=(0,g.getDb)();return(a?b.prepare("SELECT * FROM printing_press_clis ORDER BY installed_at DESC").all():b.prepare("SELECT * FROM printing_press_clis WHERE status != 'removed' ORDER BY installed_at DESC").all()).map(l)}function n(a){if(!j(a))return null;let b=(0,g.getDb)().prepare("SELECT * FROM printing_press_clis WHERE slug = ?").get(a);return l(b)}function o(a){let b=n(a);if(!b)return null;try{return{slug:a,bytes:function a(b){if(!f.existsSync(b))return 0;let c=0;for(let d of f.readdirSync(b,{withFileTypes:!0})){let g=e.join(b,d.name);if(d.isDirectory())c+=a(g);else if(d.isFile())try{c+=f.statSync(g).size}catch{}}return c}(b.path),quota_bytes:b.quota_bytes}}catch{return{slug:a,bytes:0,quota_bytes:b.quota_bytes,error:"measure_failed"}}}d()}catch(a){d(a)}})},79133:(a,b,c)=>{"use strict";c.d(b,{A5:()=>j,Pf:()=>h,decryptFromDiskBuffer:()=>k});var d=c(77598),e=c(87181);let f=Buffer.from("madarx-artifact-dek-v1"),g="1"===process.env.MADARX_ARTIFACT_ENCRYPTION;function h(){return g}function i(a){if(!a)throw Error("deriveOrgDek requires orgId");let b=(0,d.createHash)("sha256").update(a).digest(),c=(0,e.K2)({allowGenerate:!0});return Buffer.from((0,d.hkdfSync)("sha256",c,b,f,32))}function j(a,b){let{ciphertext:c,iv:e,authTag:f}=function(a,b){let c=i(a),e=(0,d.randomBytes)(12),f=(0,d.createCipheriv)("aes-256-gcm",c,e),g=Buffer.isBuffer(b)?b:Buffer.from(b,"utf8");return{ciphertext:Buffer.concat([f.update(g),f.final()]),iv:e,authTag:f.getAuthTag()}}(a,b);return Buffer.concat([e,f,c])}function k(a,b){if(!Buffer.isBuffer(b)||b.length<28)throw Error("Invalid encrypted artifact: too short");let c=b.subarray(0,12),e=b.subarray(12,28),f=b.subarray(28),g=i(a),h=(0,d.createDecipheriv)("aes-256-gcm",g,c);return h.setAuthTag(e),Buffer.concat([h.update(f),h.final()])}},79278:(a,b,c)=>{"use strict";c.d(b,{Pw:()=>o,pE:()=>f});let d=/^[a-z][a-z0-9-]{2,63}$/,e=new Set(["bearer","api_key","basic","oauth2","none"]),f=["low","medium","high","irreversible_external"],g=new Set(["GET","POST","PUT","PATCH","DELETE"]),h=new Set(["POST","PUT","PATCH","DELETE"]),i=/^[a-z][a-z0-9_]{0,63}$/,j=/^[A-Z][A-Z0-9_]{1,63}$/,k=new Set(["token","key","secret","password","value","api_key","bearer","credentials","access_token","refresh_token","client_id","client_secret"]);function l(a,b,c){a.push(`${b}: ${c}`)}function m(a){return null!==a&&"object"==typeof a&&!Array.isArray(a)}function n(a){return f.indexOf(a)}function o(a,b={}){let c,p=[],q=[];try{c=JSON.stringify(a)}catch{return{ok:!1,errors:["manifest: not JSON-serialisable"],warnings:[],normalized:null}}if(!c||"undefined"===c)return{ok:!1,errors:["manifest: required"],warnings:[],normalized:null};if(Buffer.byteLength(c,"utf8")>65536)return{ok:!1,errors:[`manifest: serialized length ${Buffer.byteLength(c,"utf8")} bytes exceeds 65536-byte cap`],warnings:[],normalized:null};if(!m(a))return{ok:!1,errors:["manifest: must be a plain object"],warnings:[],normalized:null};a.slug&&"string"==typeof a.slug?d.test(a.slug)||l(p,"slug",`does not match ${d} (lowercase, starts with letter, 3-64 chars, hyphens allowed)`):l(p,"slug","required (string)"),null!=a.title&&"string"!=typeof a.title&&l(p,"title","must be a string");let r=null;if(a.base_url&&"string"==typeof a.base_url){let b;try{b=new URL(a.base_url)}catch{l(p,"base_url","must be a valid URL")}b&&("https:"!==b.protocol&&l(p,"base_url","must be https"),r=b.hostname.toLowerCase())}else l(p,"base_url","required (string)");let s=[];if(Array.isArray(a.allowed_hosts)&&0!==a.allowed_hosts.length?((s=a.allowed_hosts.map(a=>"string"==typeof a?a.toLowerCase():a)).forEach((a,b)=>{if("string"!=typeof a||!a)return void l(p,`allowed_hosts[${b}]`,"must be a non-empty string");(function(a){if(!a)return!1;let b=String(a).toLowerCase().replace(/^\[|\]$/g,"");if("localhost"===b||"::1"===b||b.endsWith(".localhost")||b.endsWith(".local"))return!0;if(b.includes(":"))return!!(b.startsWith("fc")||b.startsWith("fd")||b.startsWith("fe80:"))||"::"===b;let c=b.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/);if(!c)return!1;let[d,e]=[Number(c[1]),Number(c[2])];return 10===d||127===d||0===d||169===d&&254===e||192===d&&168===e||172===d&&!!(e>=16)&&!!(e<=31)})(a)&&l(p,`allowed_hosts[${b}]`,`private/local hosts are not allowed ('${a}')`)}),r&&!s.includes(r)&&l(p,"allowed_hosts",`must include base_url host '${r}'`)):l(p,"allowed_hosts","required (non-empty array of host strings)"),!function(a,b){if(!m(a))return l(b,"auth","required (plain object)");for(let c of(a.type&&e.has(a.type)||l(b,"auth.type",`must be one of ${[...e].join(", ")}`),Object.keys(a)))k.has(c.toLowerCase())&&l(b,"auth",`raw secrets are not allowed; reference by *_ref only (found field '${c}')`);let c=a.type;if(("bearer"===c||"api_key"===c)&&(a.secret_ref&&"string"==typeof a.secret_ref?j.test(a.secret_ref)||l(b,"auth.secret_ref",`must match ${j} (uppercase, starts with letter, underscores/digits, max 64 chars)`):l(b,"auth.secret_ref","required for bearer/api_key auth (string)")),"basic"===c&&(a.username_ref&&"string"==typeof a.username_ref?j.test(a.username_ref)||l(b,"auth.username_ref",`must match ${j}`):l(b,"auth.username_ref","required for basic auth (string)"),a.password_ref&&"string"==typeof a.password_ref?j.test(a.password_ref)||l(b,"auth.password_ref",`must match ${j}`):l(b,"auth.password_ref","required for basic auth (string)")),"oauth2"===c){for(let c of(a.access_token_ref&&"string"==typeof a.access_token_ref?j.test(a.access_token_ref)||l(b,"auth.access_token_ref",`must match ${j}`):l(b,"auth.access_token_ref","required for oauth2 auth (vault ref)"),["refresh_token_ref","client_id_ref","client_secret_ref"]))null!=a[c]&&("string"==typeof a[c]&&j.test(a[c])||l(b,`auth.${c}`,`must match ${j}`));if(null!=a.token_url){let c=!1;try{c="https:"===new URL(a.token_url).protocol}catch{c=!1}c||l(b,"auth.token_url","must be a valid https URL")}}}(a.auth,p),null!=a.default_headers&&function(a,b){if(!m(a))return l(b,"default_headers","must be a plain object");for(let[c,d]of Object.entries(a))"string"!=typeof d&&l(b,`default_headers.${c}`,"header value must be a string"),/authorization/i.test(c)&&l(b,"default_headers",`must not set Authorization (use auth); found header '${c}'`)}(a.default_headers,p),!m(a.endpoints)||0===Object.keys(a.endpoints).length)return l(p,"endpoints","required (non-empty plain object)"),{ok:!1,errors:p,warnings:q,normalized:null};let t=Object.entries(a.endpoints);if(t.length>50)return l(p,"endpoints","exceeds 50 endpoint cap"),{ok:!1,errors:p,warnings:q,normalized:null};let u={};for(let[a,b]of t){let c=`endpoints.${a}`;i.test(a)||l(p,c,`endpoint name must match ${i}`);let d=function(a,b,c){let d;if(!m(a))return l(b,c,"must be a plain object"),null;if(a.method&&g.has(a.method)||l(b,`${c}.method`,`must be one of ${[...g].join(", ")} (uppercase)`),a.path&&"string"==typeof a.path)if(a.path.startsWith("/"))for(let d of function(a){let b,c=[],d=/\{([^}]+)\}/g;for(;null!==(b=d.exec(a));)c.push(b[1]);return c}(a.path))/^[a-z][a-z0-9_]*$/.test(d)||l(b,`${c}.path`,`placeholder '{${d}}' must match /^[a-z][a-z0-9_]*$/`);else l(b,`${c}.path`,"must start with '/'");else l(b,`${c}.path`,"required (string starting with /)");null!=a.description&&"string"!=typeof a.description&&l(b,`${c}.description`,"must be a string"),null==a.input_schema||m(a.input_schema)||l(b,`${c}.input_schema`,"must be a plain object");let e=a.method,i=h.has(e),j=a.risk,k=!1;return null==j||f.includes(j)||(l(b,`${c}.risk`,`must be one of ${f.join(", ")}`),j=void 0),null==j?d=i?"medium":"low":i&&n(j)<n("medium")?(d="medium",k=!0):d=j,{effectiveRisk:d,clampWarning:k}}(b,p,c);if(d){let{effectiveRisk:e,clampWarning:f}=d;f&&q.push(`${c}.risk: clamped low→medium for write method`),u[a]={method:b.method,path:b.path??null,risk:e,input_schema:null!=b.input_schema?structuredClone(b.input_schema):null,description:b.description??null}}}if(p.length>0)return{ok:!1,errors:p,warnings:q,normalized:null};let v={},w=new Set(["type","header","prefix","query_param","secret_ref","username_ref","password_ref","access_token_ref","refresh_token_ref","client_id_ref","client_secret_ref","token_url","provider"]);for(let[b,c]of Object.entries(a.auth))w.has(b)&&(v[b]=c);return{ok:!0,errors:[],warnings:q,normalized:{slug:a.slug,title:a.title??null,base_url:a.base_url,allowed_hosts:s,auth:v,default_headers:null!=a.default_headers?structuredClone(a.default_headers):{},endpoints:u}}}},80987:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Cw:()=>s,ID:()=>r,VC:()=>t,gE:()=>q});var e=c(31421),f=c(76760),g=c(73024),h=c(80099),i=c(9381),j=c(78708),k=c(41249),l=c(24516),m=a([j,l]);[j,l]=m.then?(await m)():m;let u=f.join(i.Dl,"scripts","printing-press"),v=f.join(u,"install.mjs"),w=f.join(u,"install-cli.mjs");function n(){return(0,k.Qw)((0,k.U5)())}function o(a,b,{cwd:c,timeoutMs:d,env:f}={}){return new Promise((g,h)=>{let i=(0,e.spawn)(a,b,{cwd:c,shell:!1,env:f||{PATH:process.env.PATH,HOME:process.env.HOME,NODE_ENV:"production"}}),j=Buffer.alloc(0),k=Buffer.alloc(0),l=!1,m=!1,n=!1,o=setTimeout(()=>{n=!0;try{i.kill("SIGKILL")}catch{}},d||6e4);i.stdout.on("data",a=>{j.length+a.length>262144?(j=Buffer.concat([j,a.slice(0,262144-j.length)]),l=!0):j=Buffer.concat([j,a])}),i.stderr.on("data",a=>{k.length+a.length>262144?(k=Buffer.concat([k,a.slice(0,262144-k.length)]),m=!0):k=Buffer.concat([k,a])}),i.on("error",a=>{clearTimeout(o),h(a)}),i.on("close",(a,b)=>{clearTimeout(o),g({exit_code:a,signal:b,timed_out:n,stdout:j.toString("utf8"),stderr:k.toString("utf8"),stdout_truncated:l,stderr_truncated:m})})})}function p(a){return(a?.declared_scopes||[]).some(a=>"string"==typeof a&&/write|mutate|delete|push/i.test(a))}async function q(a={},b={}){let c=n();if(!g.existsSync(u))return{ok:!1,status:"misconfigured",reason:`sub-package missing at ${u}`};let d=await o("node",[v],{cwd:u,timeoutMs:3e5});return d.timed_out?{ok:!1,status:"timeout",stderr:d.stderr}:0!==d.exit_code?{ok:!1,status:"failed",exit_code:d.exit_code,stderr:d.stderr,security_mode:c.mode}:{ok:!0,status:"installed",skills_dir:j.N3,security_mode:c.mode,stdout_tail:d.stdout.slice(-1024)}}async function r(a={},b={}){let c=n(),d=String(a.slug||"").trim();if(!(0,j.Ac)(d))return{ok:!1,status:"invalid_input",reason:"slug must match /^[a-z0-9][a-z0-9-]{0,63}$/"};let e=String(a.source||"starter-pack"),g=new Set(["starter-pack","github","local","spec"]);if(!g.has(e))return{ok:!1,status:"invalid_input",reason:`source must be one of ${[...g].join(", ")}`};let h=a.source_url?String(a.source_url):null;if("starter-pack"!==e&&!h)return{ok:!1,status:"invalid_input",reason:`source_url required when source=${e}`};let i=f.join(j.uS,d);try{(0,j.FT)(i)}catch(a){return{ok:!1,status:"unsafe_path",reason:a.message}}let k=[w,d,"--source",e];h&&k.push("--source-url",h);let l=await o("node",k,{cwd:u,timeoutMs:3e5});if(l.timed_out)return{ok:!1,status:"timeout",stderr:l.stderr};if(0!==l.exit_code)return{ok:!1,status:"failed",exit_code:l.exit_code,stderr:l.stderr};let m=(0,j.$A)(d);return m&&p(m)&&!c.allow_network_write_clis?{ok:!1,status:"refused",reason:`Security mode "${c.mode}" forbids CLIs declaring write scopes. Declared: ${JSON.stringify(m.declared_scopes)}`,cli:m}:{ok:!0,status:"generated",cli:m,security_mode:c.mode}}async function s(a={},b={}){let c,d,e=n(),h=String(a.slug||"").trim();if(!(0,j.Ac)(h))return{ok:!1,status:"invalid_input",reason:"invalid slug"};let i=(0,j.$A)(h);if(!i||"removed"===i.status)return{ok:!1,status:"not_installed",slug:h};if("disabled"===i.status)return{ok:!1,status:"disabled",slug:h};if(p(i)&&!e.allow_network_write_clis)return{ok:!1,status:"refused",reason:`Security mode "${e.mode}" forbids running CLIs with write scopes.`};let k=Array.isArray(a.args)?a.args.map(String):[];for(let a of k)if(/[;&|`$<>]/.test(a))return{ok:!1,status:"unsafe_args",reason:`argv contains shell metacharacter: ${a}`};try{(0,j.FT)(i.path)}catch(a){return{ok:!1,status:"unsafe_path",reason:a.message}}let m=process.env.GOBIN||(process.env.GOPATH?`${process.env.GOPATH}/bin`:null)||(process.env.HOME?`${process.env.HOME}/go/bin`:null),q=m?f.join(m,`${h}-pp-cli`):null,r=f.join(i.path,"bin"),t=f.join(i.path,"index.js");if(q&&g.existsSync(q))c=q,d=k;else if(g.existsSync(r))c=r,d=k;else{if(!g.existsSync(t))return{ok:!1,status:"no_entry_point",reason:`No entry point found. Tried: ${q||"(no go bin dir)"} , ${r}, ${t}`};c=process.execPath,d=[t,...k]}let u=function(a,b={}){let c={PATH:process.env.PATH,HOME:process.env.HOME,NODE_ENV:"production",PRINTING_PRESS_CLI_SLUG:a.slug,PRINTING_PRESS_DATA_DIR:a.path};for(let d of a.required_secrets||[])if("string"==typeof d&&/^[A-Z][A-Z0-9_]*$/.test(d))try{let a=(0,l.getSecret)(d,{agent_id:b.agent_id,project_id:b.project_id});a&&(c[d]=a)}catch{}return c}(i,b),v=Math.min(Number(a.timeout_ms)||6e4,3e5),w=await o(c,d,{cwd:i.path,timeoutMs:v,env:u});return{ok:0===w.exit_code,status:w.timed_out?"timeout":0===w.exit_code?"complete":"failed",slug:h,exit_code:w.exit_code,timed_out:w.timed_out,stdout:w.stdout,stderr:w.stderr,stdout_truncated:w.stdout_truncated,stderr_truncated:w.stderr_truncated,security_mode:e.mode}}let x=/\b(INSERT|UPDATE|DELETE|DROP|ALTER|CREATE|REPLACE|ATTACH|DETACH|PRAGMA|VACUUM|REINDEX|TRUNCATE)\b/i;async function t(a={},b={}){let c,d=String(a.slug||"").trim();if(!(0,j.Ac)(d))return{ok:!1,status:"invalid_input",reason:"invalid slug"};let e=(0,j.$A)(d);if(!e||"removed"===e.status)return{ok:!1,status:"not_installed",slug:d};let i=String(a.sql||"").trim();if(!i)return{ok:!1,status:"invalid_input",reason:"sql is required"};if(i.includes(";"))return{ok:!1,status:"unsafe_sql",reason:"multi-statement queries are not allowed"};if(x.test(i))return{ok:!1,status:"unsafe_sql",reason:"only SELECT-style read queries are permitted"};if(!/^\s*(SELECT|WITH)\b/i.test(i))return{ok:!1,status:"unsafe_sql",reason:"query must begin with SELECT or WITH"};let k=process.env.XDG_DATA_HOME||(process.env.HOME?f.join(process.env.HOME,".local","share"):null),l=[f.join(e.path,"data.sqlite"),f.join(e.path,`${d}.sqlite`),k?f.join(k,`${d}-pp-cli`,"data.db"):null,k?f.join(k,`${d}-pp-cli`,"data.sqlite"):null].filter(Boolean),m=l.find(a=>g.existsSync(a));if(!m)return{ok:!1,status:"no_mirror",reason:"CLI has no local SQLite mirror",tried:l};if(m.startsWith(f.resolve(e.path)+f.sep))try{(0,j.FT)(m)}catch(a){return{ok:!1,status:"unsafe_path",reason:a.message}}let n=Array.isArray(a.params)?a.params:[];try{c=new h.DatabaseSync(m,{readOnly:!0})}catch(a){return{ok:!1,status:"open_failed",reason:a.message}}try{let a=c.prepare(i).all(...n).slice(0,1e3);return{ok:!0,status:"complete",slug:d,row_count:a.length,truncated:1e3===a.length,rows:a}}catch(a){return{ok:!1,status:"query_failed",reason:a.message}}finally{try{c.close()}catch{}}}d()}catch(a){d(a)}})},81553:(a,b,c)=>{"use strict";c.d(b,{YO:()=>j,ct:()=>m,mU:()=>k,rd:()=>g,runUpdateCheck:()=>n,shouldAutoApply:()=>o});var d=c(73024),e=c(76760),f=c(73136);let g="madarx",h=`https://registry.npmjs.org/${g}/latest`,i=e.dirname((0,f.fileURLToPath)("file:///home/runner/work/madarx-os/madarx-os/lib/update-check.js"));function j(){if(process.env.MADARX_VERSION)return process.env.MADARX_VERSION;for(let a of[e.join(i,"..","package.json"),e.join(process.cwd(),"package.json"),e.join(process.cwd(),".next","standalone","package.json")]){let b=function(a){try{let b=JSON.parse(d.readFileSync(a,"utf8"));if(b&&b.name===g&&b.version)return b.version}catch{}return null}(a);if(b)return b}return"0.0.0"}function k(a,b){let c=a=>String(a).split("-")[0].split(".").slice(0,3).map(a=>parseInt(a,10)||0),d=c(a),e=c(b);for(let a=0;a<Math.max(d.length,e.length);a++){let b=(d[a]||0)-(e[a]||0);if(0!==b)return b>0?1:-1}return 0}async function l({fetchImpl:a=fetch,timeoutMs:b=4e3}={}){try{let c=await a(h,{signal:AbortSignal.timeout(b)});if(!c.ok)return null;let d=await c.json();return d?.version||null}catch{return null}}function m(a){try{return JSON.parse(d.readFileSync(a,"utf8"))}catch{return null}}async function n({file:a,current:b=j(),fetchImpl:c=fetch,nowIso:f}={}){let g=await l({fetchImpl:c}),h=f||new Date().toISOString();if(!g){let c=a?m(a):null;return{ts:h,current:b,latest:c?.latest||null,behind:!1,reachable:!1}}let i=k(g,b)>0,o={ts:h,current:b,latest:g,behind:i,reachable:!0};return a&&(d.mkdirSync(e.dirname(a),{recursive:!0}),d.writeFileSync(a,JSON.stringify(o,null,2))),o}function o({behind:a,mode:b,apply:c}){return!!a&&"weekly"===b&&"auto"===c}},81833:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{BQ:()=>o,HO:()=>s,Jh:()=>n,OT:()=>r,Om:()=>k,bz:()=>m,cN:()=>p,h5:()=>q,iF:()=>i,k2:()=>l,pp:()=>j});var e=c(34255),f=a([e]);function g(a){return a?{id:String(a.id),name:String(a.name||""),position:Number(a.position)||0,is_active:1===a.is_active,created_at:a.created_at,updated_at:a.updated_at}:null}function h(a,b){return String(a||"").trim().slice(0,32)||b}function i(){let a=(0,e.getDb)();l();let b=a.prepare("SELECT * FROM dashboard_spaces ORDER BY position ASC, created_at ASC").all().map(g),c=b.find(a=>a.is_active)||b[0]||null;return{spaces:b,active_space_id:c?c.id:null}}function j(a){if(!a)return null;let b=(0,e.getDb)().prepare("SELECT * FROM dashboard_spaces WHERE id = ?").get(String(a));return g(b)}function k(a=[],{fallback:b="default"}={}){for(let b of Array.isArray(a)?a:[a])if(b&&j(b))return b;return b}function l(){let a=(0,e.getDb)(),b=a.prepare("SELECT COUNT(*) AS n FROM dashboard_spaces").get().n;if(0===b){let b=(0,e.nowIso)();a.prepare("INSERT INTO dashboard_spaces (id, name, position, is_active, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?)").run("default","main",0,1,b,b)}a.prepare("UPDATE artifacts SET space_id = 'default' WHERE space_id IS NULL").run()}function m({name:a}={}){let b=(0,e.getDb)();l();let c=b.prepare("SELECT COUNT(*) AS n FROM dashboard_spaces").get().n;if(c>=32){let a=Error("Maximum of 32 spaces reached.");throw a.code="SPACE_LIMIT",a}let d=b.prepare("SELECT MAX(position) AS m FROM dashboard_spaces").get().m,f=(Number(d)||0)+1,g=(0,e.newId)("space"),i=(0,e.nowIso)(),k=h(a,`Space ${c+1}`);return b.prepare("INSERT INTO dashboard_spaces (id, name, position, is_active, created_at, updated_at) VALUES (?, ?, ?, 0, ?, ?)").run(g,k,f,i,i),j(g)}function n(a,b){let c=j(a);if(!c){let a=Error("Space not found.");throw a.code="SPACE_NOT_FOUND",a}let d=h(b,c.name);return d===c.name?c:((0,e.getDb)().prepare("UPDATE dashboard_spaces SET name = ?, updated_at = ? WHERE id = ?").run(d,(0,e.nowIso)(),a),j(a))}function o(a){if(!j(a)){let a=Error("Space not found.");throw a.code="SPACE_NOT_FOUND",a}let b=(0,e.getDb)(),c=(0,e.nowIso)(),d=b.prepare("BEGIN IMMEDIATE");try{d.run(),b.prepare("UPDATE dashboard_spaces SET is_active = 0, updated_at = ? WHERE is_active = 1").run(c),b.prepare("UPDATE dashboard_spaces SET is_active = 1, updated_at = ? WHERE id = ?").run(c,a),b.prepare("COMMIT").run()}catch(a){try{b.prepare("ROLLBACK").run()}catch{}throw a}return j(a)}function p(a){let b=(0,e.getDb)(),c=j(a);if(!c)return null;if(b.prepare("SELECT COUNT(*) AS n FROM dashboard_spaces").get().n<=1){let a=Error("Cannot delete the last remaining space.");throw a.code="SPACE_LAST",a}let d=b.prepare("SELECT * FROM dashboard_spaces WHERE id != ? ORDER BY position ASC, created_at ASC LIMIT 1").get(a);if(!d){let a=Error("No fallback space available.");throw a.code="SPACE_NO_FALLBACK",a}let f=(0,e.nowIso)(),g=b.prepare("BEGIN IMMEDIATE");try{g.run(),b.prepare("UPDATE artifacts SET space_id = ? WHERE space_id = ?").run(d.id,a),b.prepare("UPDATE space_share_links SET revoked = 1 WHERE space_id = ? AND revoked = 0").run(a),b.prepare("DELETE FROM dashboard_spaces WHERE id = ?").run(a),c.is_active&&b.prepare("UPDATE dashboard_spaces SET is_active = 1, updated_at = ? WHERE id = ?").run(f,d.id),b.prepare("COMMIT").run()}catch(a){try{b.prepare("ROLLBACK").run()}catch{}throw a}return{deleted_id:a,moved_to:d.id}}function q(a,b){if(!a){let a=Error("artifact_id is required.");throw a.code="ARTIFACT_REQUIRED",a}let c=j(b);if(!c){let a=Error("Space not found.");throw a.code="SPACE_NOT_FOUND",a}let d=(0,e.getDb)(),f=d.prepare("SELECT id FROM artifacts WHERE id = ?").get(String(a));if(!f){let a=Error("Artifact not found.");throw a.code="ARTIFACT_NOT_FOUND",a}return d.prepare("UPDATE artifacts SET space_id = ?, pinned_to_space_at = datetime('now') WHERE id = ?").run(c.id,f.id),{artifact_id:f.id,space_id:c.id}}function r(){let a=(0,e.getDb)();l();let b=a.prepare("SELECT * FROM dashboard_spaces ORDER BY position ASC, created_at ASC").all().map(g),c=a.prepare("SELECT id, space_id FROM artifacts WHERE space_id IS NOT NULL").all(),d=new Map(b.map(a=>[a.id,[]]));for(let a of c)d.has(a.space_id)&&d.get(a.space_id).push(String(a.id));let f=b.map(a=>({...a,artifact_ids:d.get(a.id)||[]})),h=f.find(a=>a.is_active)||f[0]||null;return{spaces:f,active_space_id:h?h.id:null}}function s({spaces:a=[],active_space_id:b=null}={}){if(!Array.isArray(a)||0===a.length)return null;let c=(0,e.getDb)();l();let d=c.prepare("SELECT COUNT(*) AS n FROM dashboard_spaces").get().n;if(!(1===d&&c.prepare("SELECT id FROM dashboard_spaces WHERE id = 'default'").get()))return null;let f=a.filter(a=>a&&"string"==typeof a.id&&a.id.length>0).slice(0,32);if(0===f.length)return null;let g=(0,e.nowIso)(),i=c.prepare("BEGIN IMMEDIATE");try{i.run(),c.prepare("DELETE FROM dashboard_spaces").run(),f.forEach((a,d)=>{let e=String(a.id),f=h(a.name,`Space ${d+1}`),i=b?e===String(b):0===d;c.prepare("INSERT INTO dashboard_spaces (id, name, position, is_active, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?)").run(e,f,d,+!!i,g,g);let j=Array.isArray(a.artifactIds)?a.artifactIds:[],k=c.prepare("UPDATE artifacts SET space_id = ? WHERE id = ? AND (space_id IS NULL OR space_id = ?)");for(let a of j)"string"==typeof a&&k.run(e,a,e)});let a=c.prepare("SELECT COUNT(*) AS n FROM dashboard_spaces WHERE is_active = 1").get().n;if(0===a){let a=c.prepare("SELECT id FROM dashboard_spaces ORDER BY position ASC, created_at ASC LIMIT 1").get();a&&c.prepare("UPDATE dashboard_spaces SET is_active = 1 WHERE id = ?").run(a.id)}c.prepare("COMMIT").run()}catch(a){try{c.prepare("ROLLBACK").run()}catch{}throw a}return r()}e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},81992:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{cS:()=>j,r_:()=>i,vg:()=>k});var e=c(25938),f=a([e]);function g(a,{includeBody:b=!1}={}){let c=Object.fromEntries((a.payload?.headers||[]).map(a=>[String(a.name).toLowerCase(),a.value])),d={id:a.id,thread_id:a.threadId,from:c.from||null,subject:c.subject||null,date:c.date||null,snippet:a.snippet||""};return b&&(d.to=c.to||null,d.body_text=function a(b={}){if(b.body?.data)return function(a=""){if(!a)return"";try{return Buffer.from(String(a),"base64url").toString("utf8")}catch{return""}}(b.body.data);let c=Array.isArray(b.parts)?b.parts:[],d=c.find(a=>"text/plain"===a.mimeType&&a.body?.data)||c.find(a=>a.body?.data);return d?a(d):""}(a.payload||{})),d}async function h(a,b,c,d){let f=(0,e.s)(d,c),g=await f(a,{headers:{Authorization:`Bearer ${b}`}});if(!g.ok)throw Error(`google api failed: ${g.status}`);return g.json()}async function i(a={},b={}){let c="gmail_messages_list",d=await (0,e.r)(b,c),f=new URL("https://gmail.googleapis.com/gmail/v1/users/me/messages");for(let b of(a.max_results&&f.searchParams.set("maxResults",String(a.max_results)),a.q&&f.searchParams.set("q",a.q),a.label_ids||a.labelIds||[]))f.searchParams.append("labelIds",String(b));let j=(await h(f,d,b,c)).messages||[];return Promise.all(j.map(async a=>{let e=await h(`https://gmail.googleapis.com/gmail/v1/users/me/messages/${encodeURIComponent(a.id)}?format=metadata`,d,b,c);return g(e)}))}async function j(a={},b={}){if(!a.message_id)throw Error("message_id is required");let c="gmail_message_read",d=await (0,e.r)(b,c),f=await h(`https://gmail.googleapis.com/gmail/v1/users/me/messages/${encodeURIComponent(a.message_id)}?format=full`,d,b,c);return g(f,{includeBody:!0})}async function k(a={},b={}){if(!a.thread_id)throw Error("thread_id is required");let c="gmail_thread_read",d=await (0,e.r)(b,c),f=await h(`https://gmail.googleapis.com/gmail/v1/users/me/threads/${encodeURIComponent(a.thread_id)}?format=full`,d,b,c);return{id:f.id,messages:(f.messages||[]).map(a=>g(a,{includeBody:!0}))}}e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},83963:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Dn:()=>ae,Fp:()=>aa,Fy:()=>F,G:()=>ai,HB:()=>R,Mu:()=>Y,Q4:()=>J,Qf:()=>_,Rz:()=>W,V0:()=>ag,VI:()=>P,Vk:()=>N,WH:()=>$,WX:()=>Z,X1:()=>X,createTask:()=>S,eE:()=>ac,fI:()=>B,gf:()=>I,gg:()=>O,hC:()=>ap,hW:()=>ak,iR:()=>ad,ij:()=>an,jN:()=>G,kP:()=>D,lC:()=>T,n5:()=>ao,nV:()=>aj,qF:()=>am,qt:()=>ah,rN:()=>ab,s_:()=>Q,vQ:()=>V,w4:()=>al,yS:()=>U,yX:()=>E,zP:()=>H});var e=c(34255),f=c(40563),g=c(61423),h=c(18313),i=a([e,f,g]);function j(a,b=null){if(!a)return b;try{return JSON.parse(a)}catch{return b}}function k(a){return null==a?null:JSON.stringify(a)}function l(a){let b=globalThis.__madarxLiveEventBus;if(!b?.subscribers)return{id:a.id||(0,e.newId)("evt"),ts:a.ts||Date.now(),...a};let c={id:a.id||`evt-${b.nextId++}-${Math.random().toString(36).slice(2,8)}`,ts:a.ts||Date.now(),...a};for(let a of b.subscribers)try{a(c)}catch{}return c}function m(a){return a?{...a,tools:j(a.tools,[]),files:j(a.files,[]),memory:j(a.memory,[]),permissions_json:j(a.permissions_json,{}),metadata_json:j(a.metadata_json,{})}:null}function n(a){return a?{...a,parent_task_id:a.parent_task_id||null,tags:j(a.tags_json,[]),watchers:j(a.watchers_json,[]),due_at:a.due_at||null,estimate_minutes:null==a.estimate_minutes?null:Number(a.estimate_minutes),recurrence:a.recurrence||null,acceptance_criteria:a.acceptance_criteria||null}:null}function o(a){return a?{id:a.id,task_id:a.task_id,label:a.label,done:!!a.done,position:Number(a.position)||0,created_at:a.created_at,done_at:a.done_at||null}:null}function p(a){if(null==a)return null;if(Array.isArray(a)){let b=a.map(a=>String(a).trim()).filter(Boolean).slice(0,24);return b.length?b:[]}return"string"==typeof a?a.split(",").map(a=>a.trim()).filter(Boolean).slice(0,24):null}function q(a){if(null==a)return null;let b=(Array.isArray(a)?a:String(a).split(",")).map(a=>String(a).trim()).filter(Boolean).slice(0,24);return Array.from(new Set(b))}function r(a){if(!a)return null;let b=String(a).trim();if(!b)return null;if(/^\d{4}-\d{2}-\d{2}$/.test(b))return`${b}T23:59:59.000Z`;let c=new Date(b);return Number.isNaN(c.getTime())?null:c.toISOString()}function s(a){if(null==a||""===a)return null;let b=Number(a);return!Number.isFinite(b)||b<0?null:Math.round(b)}function t(a){if(!a)return null;let b=String(a).trim();return b?b.length>64?b.slice(0,64):b:null}function u(a){return a?{...a}:null}function v(a){return a?{...a,payload:j(a.payload_json,null)}:null}function w(a){return a?{...a,usage:j(a.usage_json,null),result:j(a.result_json,null)}:null}function x(a){return a?{...a,payload:j(a.payload_json,null)}:null}function y(a){return a?{...a,details:j(a.details_json,null),cursor:a.seq}:null}function z(a){return m((0,e.getDb)().prepare("SELECT * FROM agents WHERE id = ?").get(a))}function A(a){if(!a)return null;let b=z(a);if(!b)throw Error(`Agent not found: ${a}`);if("terminated"===b.status)throw Error(`Terminated agents cannot receive assignments: ${a}`);return b}function B(a){if(!a?.type||!1===a.persist)return null;let b=function(a){let b={agent_run_start:"agent.run.status",agent_run_complete:"agent.run.status",agent_tool_start:"agent.run.event",agent_tool_result:"agent.run.event",log:"agent.run.log"},c=(0,h._d)(b[a.type]||a.type,null);return c&&h.eh.includes(c)?{actor_type:a.actor_type||(a.agent_id?"agent":"system"),actor_id:a.actor_id||a.agent_id||null,agent_id:a.agent_id||null,run_id:a.run_id||null,entity_type:a.entity_type||(a.task_id?"task":a.run_id?"agent_run":a.agent_id?"agent":"event"),entity_id:a.entity_id||a.task_id||a.run_id||a.id||null,action:c,details:{...a,legacy_type:b[a.type]?a.type:void 0},created_at:a.created_at||(0,e.nowIso)()}:null}(a);return b?C(b):null}function C({actor_type:a="system",actor_id:b=null,agent_id:c=null,run_id:d=null,entity_type:f=null,entity_id:g=null,action:h,details:i=null,created_at:j=(0,e.nowIso)()}={}){if(!h)throw Error("activity action is required");let l=(0,e.getDb)(),m=(0,e.newId)("activity");l.prepare(`
3276
3320
  INSERT INTO activity_log
3277
3321
  (id, actor_type, actor_id, agent_id, run_id, entity_type, entity_id, action, details_json, created_at)
3278
3322
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
@@ -3447,14 +3491,14 @@ RULES:
3447
3491
  FROM mines_portfolio_entries
3448
3492
  WHERE project_id = ?
3449
3493
  LIMIT 1
3450
- `).get(c),i=h?{id:h.id,portfolio_id:h.portfolio_id,name:h.name,commodity:h.commodity??null,deposit_type:h.deposit_type??null,owner:h.owner??null,available_information:h.available_information??null,has_drilling:+(1===h.has_drilling),deal_terms:h.deal_terms??null,data_completeness:h.data_completeness??null,notes:h.notes??null}:null,j=d.prepare("SELECT COUNT(*) AS n, MAX(created_at) AS last_at FROM mines_source_documents WHERE project_id = ?").get(c),k=d.prepare("SELECT COUNT(*) AS n FROM mines_assay_samples WHERE project_id = ?").get(c),l=d.prepare("SELECT COUNT(*) AS n FROM mines_drill_holes WHERE project_id = ?").get(c),m={documents:j?.n??0,assays:k?.n??0,drill_holes:l?.n??0},o=j?.last_at??null;return{status:"ok",project:f,portfolio_entry:i,counts:m,last_import_at:o}}[g,h,i,j]=l.then?(await l)():l,d()}catch(a){d(a)}})},91648:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{$F:()=>n,G5:()=>s,RN:()=>u,Uy:()=>p,hO:()=>t,mx:()=>q,nX:()=>x,wg:()=>v,xo:()=>w});var e=c(73024),f=c(76760),g=c(34255),h=c(9381),i=a([g]);g=(i.then?(await i)():i)[0];let y="brand_profile",z=f.join(h.Dl,"brand-assets","brand-guidelines.html"),A=f.join(h.Dl,"brand-assets","madarx-logo-primary.svg"),B={active:!0,company_name:"madarX",tagline:"",colors:[{name:"Onyx",value:"#0F0F11"},{name:"Platinum",value:"#E8E8E5"},{name:"Bone",value:"#DCDCD8"},{name:"Graphite",value:"#4A4A4D"},{name:"Mars",value:"#C2452A"}],fonts:["Inter","Cairo","IBM Plex Mono"],voice:["Direct","disciplined","precise","premium","local-first"],document_types:["Report","Brief","Strategy memo","Proposal"],presentation_style:"Dark editorial system with restrained layouts, Inter/Cairo/IBM Plex Mono typography, onyx backgrounds, platinum text, and Mars red accents.",logo_path:e.existsSync(A)?(0,h.z9)(A):null,logo_data_url:l(A),guidelines_path:e.existsSync(z)?(0,h.z9)(z):null,source_name:"brand-guidelines.html",extracted_at:null,updated_at:null};function j(a){return String(a||"").replace(/^--/,"").replace(/[-_]+/g," ").replace(/\b\w/g,a=>a.toUpperCase()).trim().replace(/^Ibm\b/,"IBM").replace(/\bUi\b/g,"UI")}function k(a,b="brand-guidelines"){let c=String(a||"").replace(/<script[\s\S]*?<\/script>/gi," ").replace(/<style[\s\S]*?<\/style>/gi," ").replace(/<[^>]+>/g," ").replace(/&mdash;|&#8212;/g,"-").replace(/&[a-z]+;/gi," ").replace(/\s+/g," ").trim(),d={...B,company_name:function(a,b){let c=a.match(/<title[^>]*>([\s\S]*?)<\/title>/i)?.[1]?.replace(/\s+/g," ").trim()||"",d=c.split(/[—|-]/)[0]?.trim();return d?d.replace(/\s+Brand Guidelines.*$/i,"").trim():f.basename(b||"Brand",f.extname(b||"")).replace(/[-_]+/g," ")}(a,b)||B.company_name,tagline:function(a,b){let c=RegExp(`<meta[^>]+name=["']${b}["'][^>]+content=["']([^"']+)["']`,"i");return a.match(c)?.[1]?.trim()||""}(a,"description")||"",colors:function(a){let b,c=function(a){let b,c=[],d=/--([a-z0-9_-]+)\s*:\s*(#[0-9a-f]{3,8})\b/gi;for(;b=d.exec(a);)c.push({name:j(b[1]),value:b[2].toUpperCase()});return c}(a),d=new Set(c.map(a=>a.value.toUpperCase())),e=/#[0-9a-f]{3,8}\b/gi;for(;(b=e.exec(a))&&c.length<10;){let a=b[0].toUpperCase();d.has(a)||(d.add(a),c.push({name:`Color ${c.length+1}`,value:a}))}return c.slice(0,10)}(a),fonts:function(a){let b=[];for(let c of a.matchAll(/@fontsource\/([^@/'")]+)/gi))b.push(j(c[1]));for(let c of a.matchAll(/font-family\s*:\s*([^;}{]+)/gi)){let a=c[1].split(",")[0].replace(/["']/g,"").trim();a&&!/^(var|system-ui|-apple-system|sans-serif|serif|monospace)$/i.test(a)&&b.push(a)}return[...new Set(b.filter(Boolean).map(a=>String(a).trim()).filter(Boolean))].slice(0,8)}(a),voice:function(a){let b=a.toLowerCase();return["direct","disciplined","precise","premium","minimal","editorial","confident","restrained","local-first","bilingual","operational"].filter(a=>b.includes(a)).slice(0,8)}(c),source_name:b,extracted_at:(0,g.nowIso)(),updated_at:(0,g.nowIso)()};return d.colors.length||(d.colors=B.colors),d.fonts.length||(d.fonts=B.fonts),d.voice.length||(d.voice=B.voice),d.presentation_style=function(a){let b=a.colors?.[0]?.value||"#111318",c=a.colors?.find(a=>!["#FFFFFF","#000000"].includes(a.value))?.value||b,d=a.fonts?.length?a.fonts.join(", "):"brand typography";return`Use ${d}; lead with ${a.company_name||"the brand"} identity, restrained hierarchy, ${b} as the base color, and ${c} as the accent.`}(d),d}function l(a){try{if(!a||!e.existsSync(a))return null;let b=f.extname(a).toLowerCase(),c=".svg"===b?"image/svg+xml":".png"===b?"image/png":".jpg"===b||".jpeg"===b?"image/jpeg":".webp"===b?"image/webp":"application/octet-stream",d=e.readFileSync(a);if("image/svg+xml"===c)return`data:${c};utf8,${encodeURIComponent(d.toString("utf8"))}`;return`data:${c};base64,${d.toString("base64")}`}catch{return null}}function m(){try{if(!e.existsSync(z))return{...B};let a=e.readFileSync(z,"utf8");return{...k(a,"brand-guidelines.html"),logo_path:e.existsSync(A)?(0,h.z9)(A):null,logo_data_url:l(A),guidelines_path:(0,h.z9)(z)}}catch{return{...B}}}function n(){let a=(0,g.getDb)().prepare("SELECT value FROM config WHERE key = ?").get(y);return a?{...B,...function(a,b){try{return JSON.parse(a)}catch{return b}}(a.value,{})}:m()}function o(a){let b=(0,g.getDb)(),c={...B,...a,updated_at:(0,g.nowIso)()};return b.prepare("INSERT OR REPLACE INTO config (key, value) VALUES (?, ?)").run(y,JSON.stringify(c)),c}function p(a={}){return o({...n(),...a})}function q(a=(0,g.getDb)()){if(a.prepare("SELECT value FROM config WHERE key = ?").get(y))return!1;let b=m();return a.prepare("INSERT OR REPLACE INTO config (key, value) VALUES (?, ?)").run(y,JSON.stringify({...b,updated_at:(0,g.nowIso)()})),!0}function r(a,b="guidelines"){(0,h.Jh)();let c=a?.name||`${b}.txt`,d=f.extname(c).toLowerCase()||".txt",g="logo"===b?Number(process.env.MADARX_BRAND_LOGO_MAX_BYTES||1e6):Number(process.env.MADARX_BRAND_GUIDELINES_MAX_BYTES||2e6);if(Number(a?.size||0)>g)throw Error("file too large");let i=`${b}-${Date.now().toString(36)}${d}`.replace(/[^a-z0-9_.-]/gi,"-"),j=f.join(h.kM,i);return a.arrayBuffer().then(a=>{if(a.byteLength>g)throw Error("file too large");return e.writeFileSync(j,Buffer.from(a)),{abs:j,rel:(0,h.z9)(j),name:c,ext:d}})}async function s(a){let b=await r(a,"guidelines"),c=e.readFileSync(b.abs),d=[".html",".htm",".md",".txt",".css",".svg"].includes(b.ext)?k(c.toString("utf8"),b.name):{...n(),source_name:b.name,extracted_at:(0,g.nowIso)()};return o({...n(),...d,guidelines_path:b.rel,source_name:b.name,extracted_at:(0,g.nowIso)()})}function t(a){(0,h.Jh)();let b=f.extname(a).toLowerCase(),c=f.basename(a),d=`guidelines-${Date.now().toString(36)}${b||".txt"}`.replace(/[^a-z0-9_.-]/gi,"-"),i=f.join(h.kM,d);e.copyFileSync(a,i);let j=e.readFileSync(i),l=[".html",".htm",".md",".txt",".css",".svg"].includes(b)?k(j.toString("utf8"),c):{...n(),source_name:c,extracted_at:(0,g.nowIso)()};return o({...n(),...l,guidelines_path:(0,h.z9)(i),source_name:c,extracted_at:(0,g.nowIso)()})}function u(a,b="inline-brand-guidelines.md"){(0,h.Jh)();let c=String(a||""),d=Number(process.env.MADARX_BRAND_GUIDELINES_MAX_BYTES||2e6);if(Buffer.byteLength(c,"utf8")>d)throw Error("brand guidelines content too large");let i=f.extname(b).toLowerCase()||".md",j=`guidelines-${Date.now().toString(36)}${i}`.replace(/[^a-z0-9_.-]/gi,"-"),l=f.join(h.kM,j);e.writeFileSync(l,c,"utf8");let m=k(c,b);return o({...n(),...m,guidelines_path:(0,h.z9)(l),source_name:b,extracted_at:(0,g.nowIso)()})}async function v(a){let b=await r(a,"logo");return p({logo_path:b.rel,logo_data_url:l(b.abs)})}function w(a){(0,h.Jh)();let b=f.extname(a).toLowerCase(),c=`logo-${Date.now().toString(36)}${b||".img"}`.replace(/[^a-z0-9_.-]/gi,"-"),d=f.join(h.kM,c);return e.copyFileSync(a,d),p({logo_path:(0,h.z9)(d),logo_data_url:l(d)})}function x(a=n()){if(!a?.active)return"";let b=(a.colors||[]).map(a=>`${a.name}: ${a.value}`).join(", "),c=(a.fonts||[]).join(", "),d=(a.voice||[]).join(", "),e=(a.document_types||[]).join(", ");return`Brand system:
3494
+ `).get(c),i=h?{id:h.id,portfolio_id:h.portfolio_id,name:h.name,commodity:h.commodity??null,deposit_type:h.deposit_type??null,owner:h.owner??null,available_information:h.available_information??null,has_drilling:+(1===h.has_drilling),deal_terms:h.deal_terms??null,data_completeness:h.data_completeness??null,notes:h.notes??null}:null,j=d.prepare("SELECT COUNT(*) AS n, MAX(created_at) AS last_at FROM mines_source_documents WHERE project_id = ?").get(c),k=d.prepare("SELECT COUNT(*) AS n FROM mines_assay_samples WHERE project_id = ?").get(c),l=d.prepare("SELECT COUNT(*) AS n FROM mines_drill_holes WHERE project_id = ?").get(c),m={documents:j?.n??0,assays:k?.n??0,drill_holes:l?.n??0},o=j?.last_at??null;return{status:"ok",project:f,portfolio_entry:i,counts:m,last_import_at:o}}[g,h,i,j]=l.then?(await l)():l,d()}catch(a){d(a)}})},91648:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{$F:()=>n,G5:()=>s,RN:()=>u,Uy:()=>p,hO:()=>t,mx:()=>q,nX:()=>x,q$:()=>o,wg:()=>v,xo:()=>w});var e=c(73024),f=c(76760),g=c(34255),h=c(9381),i=a([g]);g=(i.then?(await i)():i)[0];let y="brand_profile",z=f.join(h.Dl,"brand-assets","brand-guidelines.html"),A=f.join(h.Dl,"brand-assets","madarx-logo-primary.svg"),B={active:!0,company_name:"madarX",tagline:"",colors:[{name:"Onyx",value:"#0F0F11"},{name:"Platinum",value:"#E8E8E5"},{name:"Bone",value:"#DCDCD8"},{name:"Graphite",value:"#4A4A4D"},{name:"Mars",value:"#C2452A"}],fonts:["Inter","Cairo","IBM Plex Mono"],voice:["Direct","disciplined","precise","premium","local-first"],document_types:["Report","Brief","Strategy memo","Proposal"],presentation_style:"Dark editorial system with restrained layouts, Inter/Cairo/IBM Plex Mono typography, onyx backgrounds, platinum text, and Mars red accents.",logo_path:e.existsSync(A)?(0,h.z9)(A):null,logo_data_url:l(A),guidelines_path:e.existsSync(z)?(0,h.z9)(z):null,source_name:"brand-guidelines.html",extracted_at:null,updated_at:null};function j(a){return String(a||"").replace(/^--/,"").replace(/[-_]+/g," ").replace(/\b\w/g,a=>a.toUpperCase()).trim().replace(/^Ibm\b/,"IBM").replace(/\bUi\b/g,"UI")}function k(a,b="brand-guidelines"){let c=String(a||"").replace(/<script[\s\S]*?<\/script>/gi," ").replace(/<style[\s\S]*?<\/style>/gi," ").replace(/<[^>]+>/g," ").replace(/&mdash;|&#8212;/g,"-").replace(/&[a-z]+;/gi," ").replace(/\s+/g," ").trim(),d={...B,company_name:function(a,b){let c=a.match(/<title[^>]*>([\s\S]*?)<\/title>/i)?.[1]?.replace(/\s+/g," ").trim()||"",d=c.split(/[—|-]/)[0]?.trim();return d?d.replace(/\s+Brand Guidelines.*$/i,"").trim():f.basename(b||"Brand",f.extname(b||"")).replace(/[-_]+/g," ")}(a,b)||B.company_name,tagline:function(a,b){let c=RegExp(`<meta[^>]+name=["']${b}["'][^>]+content=["']([^"']+)["']`,"i");return a.match(c)?.[1]?.trim()||""}(a,"description")||"",colors:function(a){let b,c=function(a){let b,c=[],d=/--([a-z0-9_-]+)\s*:\s*(#[0-9a-f]{3,8})\b/gi;for(;b=d.exec(a);)c.push({name:j(b[1]),value:b[2].toUpperCase()});return c}(a),d=new Set(c.map(a=>a.value.toUpperCase())),e=/#[0-9a-f]{3,8}\b/gi;for(;(b=e.exec(a))&&c.length<10;){let a=b[0].toUpperCase();d.has(a)||(d.add(a),c.push({name:`Color ${c.length+1}`,value:a}))}return c.slice(0,10)}(a),fonts:function(a){let b=[];for(let c of a.matchAll(/@fontsource\/([^@/'")]+)/gi))b.push(j(c[1]));for(let c of a.matchAll(/font-family\s*:\s*([^;}{]+)/gi)){let a=c[1].split(",")[0].replace(/["']/g,"").trim();a&&!/^(var|system-ui|-apple-system|sans-serif|serif|monospace)$/i.test(a)&&b.push(a)}return[...new Set(b.filter(Boolean).map(a=>String(a).trim()).filter(Boolean))].slice(0,8)}(a),voice:function(a){let b=a.toLowerCase();return["direct","disciplined","precise","premium","minimal","editorial","confident","restrained","local-first","bilingual","operational"].filter(a=>b.includes(a)).slice(0,8)}(c),source_name:b,extracted_at:(0,g.nowIso)(),updated_at:(0,g.nowIso)()};return d.colors.length||(d.colors=B.colors),d.fonts.length||(d.fonts=B.fonts),d.voice.length||(d.voice=B.voice),d.presentation_style=function(a){let b=a.colors?.[0]?.value||"#111318",c=a.colors?.find(a=>!["#FFFFFF","#000000"].includes(a.value))?.value||b,d=a.fonts?.length?a.fonts.join(", "):"brand typography";return`Use ${d}; lead with ${a.company_name||"the brand"} identity, restrained hierarchy, ${b} as the base color, and ${c} as the accent.`}(d),d}function l(a){try{if(!a||!e.existsSync(a))return null;let b=f.extname(a).toLowerCase(),c=".svg"===b?"image/svg+xml":".png"===b?"image/png":".jpg"===b||".jpeg"===b?"image/jpeg":".webp"===b?"image/webp":"application/octet-stream",d=e.readFileSync(a);if("image/svg+xml"===c)return`data:${c};utf8,${encodeURIComponent(d.toString("utf8"))}`;return`data:${c};base64,${d.toString("base64")}`}catch{return null}}function m(){try{if(!e.existsSync(z))return{...B};let a=e.readFileSync(z,"utf8");return{...k(a,"brand-guidelines.html"),logo_path:e.existsSync(A)?(0,h.z9)(A):null,logo_data_url:l(A),guidelines_path:(0,h.z9)(z)}}catch{return{...B}}}function n(){let a=(0,g.getDb)().prepare("SELECT value FROM config WHERE key = ?").get(y);return a?{...B,...function(a,b){try{return JSON.parse(a)}catch{return b}}(a.value,{})}:m()}function o(a){let b=(0,g.getDb)(),c={...B,...a,updated_at:(0,g.nowIso)()};return b.prepare("INSERT OR REPLACE INTO config (key, value) VALUES (?, ?)").run(y,JSON.stringify(c)),c}function p(a={}){return o({...n(),...a})}function q(a=(0,g.getDb)()){if(a.prepare("SELECT value FROM config WHERE key = ?").get(y))return!1;let b=m();return a.prepare("INSERT OR REPLACE INTO config (key, value) VALUES (?, ?)").run(y,JSON.stringify({...b,updated_at:(0,g.nowIso)()})),!0}function r(a,b="guidelines"){(0,h.Jh)();let c=a?.name||`${b}.txt`,d=f.extname(c).toLowerCase()||".txt",g="logo"===b?Number(process.env.MADARX_BRAND_LOGO_MAX_BYTES||1e6):Number(process.env.MADARX_BRAND_GUIDELINES_MAX_BYTES||2e6);if(Number(a?.size||0)>g)throw Error("file too large");let i=`${b}-${Date.now().toString(36)}${d}`.replace(/[^a-z0-9_.-]/gi,"-"),j=f.join(h.kM,i);return a.arrayBuffer().then(a=>{if(a.byteLength>g)throw Error("file too large");return e.writeFileSync(j,Buffer.from(a)),{abs:j,rel:(0,h.z9)(j),name:c,ext:d}})}async function s(a){let b=await r(a,"guidelines"),c=e.readFileSync(b.abs),d=[".html",".htm",".md",".txt",".css",".svg"].includes(b.ext)?k(c.toString("utf8"),b.name):{...n(),source_name:b.name,extracted_at:(0,g.nowIso)()};return o({...n(),...d,guidelines_path:b.rel,source_name:b.name,extracted_at:(0,g.nowIso)()})}function t(a){(0,h.Jh)();let b=f.extname(a).toLowerCase(),c=f.basename(a),d=`guidelines-${Date.now().toString(36)}${b||".txt"}`.replace(/[^a-z0-9_.-]/gi,"-"),i=f.join(h.kM,d);e.copyFileSync(a,i);let j=e.readFileSync(i),l=[".html",".htm",".md",".txt",".css",".svg"].includes(b)?k(j.toString("utf8"),c):{...n(),source_name:c,extracted_at:(0,g.nowIso)()};return o({...n(),...l,guidelines_path:(0,h.z9)(i),source_name:c,extracted_at:(0,g.nowIso)()})}function u(a,b="inline-brand-guidelines.md"){(0,h.Jh)();let c=String(a||""),d=Number(process.env.MADARX_BRAND_GUIDELINES_MAX_BYTES||2e6);if(Buffer.byteLength(c,"utf8")>d)throw Error("brand guidelines content too large");let i=f.extname(b).toLowerCase()||".md",j=`guidelines-${Date.now().toString(36)}${i}`.replace(/[^a-z0-9_.-]/gi,"-"),l=f.join(h.kM,j);e.writeFileSync(l,c,"utf8");let m=k(c,b);return o({...n(),...m,guidelines_path:(0,h.z9)(l),source_name:b,extracted_at:(0,g.nowIso)()})}async function v(a){let b=await r(a,"logo");return p({logo_path:b.rel,logo_data_url:l(b.abs)})}function w(a){(0,h.Jh)();let b=f.extname(a).toLowerCase(),c=`logo-${Date.now().toString(36)}${b||".img"}`.replace(/[^a-z0-9_.-]/gi,"-"),d=f.join(h.kM,c);return e.copyFileSync(a,d),p({logo_path:(0,h.z9)(d),logo_data_url:l(d)})}function x(a=n()){if(!a?.active)return"";let b=(a.colors||[]).map(a=>`${a.name}: ${a.value}`).join(", "),c=(a.fonts||[]).join(", "),d=(a.voice||[]).join(", "),e=(a.document_types||[]).join(", ");return`Brand system:
3451
3495
  - Use ${a.company_name||"the configured brand"} as the default brand for documents, presentations, and UI artifacts.
3452
3496
  - Colors: ${b||"use configured brand colors"}.
3453
3497
  - Fonts: ${c||"use configured brand fonts"}.
3454
3498
  - Voice: ${d||"match the configured brand voice"}.
3455
3499
  - Document types: ${e||"reports, briefs, proposals, presentations"}.
3456
3500
  - Presentation style: ${a.presentation_style||"follow the configured brand guidelines"}.
3457
- - Do not invent off-brand palettes, logos, typography, or tone unless the owner explicitly asks for a different brand.`}d()}catch(a){d(a)}})},91937:(a,b,c)=>{"use strict";c.d(b,{ho:()=>l,pE:()=>f});let d=/^[a-z][a-z0-9-]{2,63}$/,e=new Set(["tool_call","llm_synthesis","artifact_write"]),f=["low","medium","high","irreversible_external"],g=/^[a-z][a-z0-9-]{0,63}$/,h=/\{\{([a-z][a-z0-9-]*)/g;function i(a,b,c){a.push(`${b}: ${c}`)}function j(a){return null!==a&&"object"==typeof a&&!Array.isArray(a)}function k(a){return f.indexOf(a)}function l(a,b={}){let c,m=[],n=[];try{c=JSON.stringify(a)}catch{return{ok:!1,errors:["spec: not JSON-serialisable"],warnings:[],normalized:null}}if(!c||"undefined"===c)return{ok:!1,errors:["spec: required"],warnings:[],normalized:null};if(Buffer.byteLength(c,"utf8")>65536)return{ok:!1,errors:[`spec: serialized length ${Buffer.byteLength(c,"utf8")} bytes exceeds 65536-byte cap`],warnings:[],normalized:null};if(!j(a))return{ok:!1,errors:["spec: must be a plain object"],warnings:[],normalized:null};if(a.slug&&"string"==typeof a.slug?d.test(a.slug)||i(m,"slug",`does not match ${d} (lowercase, starts with letter, 3-64 chars, hyphens allowed)`):i(m,"slug","required (string)"),a.title&&"string"==typeof a.title||i(m,"title","required (non-empty string)"),null!=a.description&&"string"!=typeof a.description&&i(m,"description","must be a string"),null==a.input_schema||j(a.input_schema)||i(m,"input_schema","must be a plain object"),!Array.isArray(a.steps)||0===a.steps.length)return i(m,"steps","required (non-empty array)"),{ok:!1,errors:m,warnings:n,normalized:null};if(a.steps.length>25)return i(m,"steps","exceeds 25"),{ok:!1,errors:m,warnings:n,normalized:null};let o=new Set,p="low",q=[];for(let c=0;c<a.steps.length;c++){var r,s;let d,l=a.steps[c],n=`steps[${c}]`;if(!j(l)){i(m,n,"must be a plain object");continue}if(!l.kind||!e.has(l.kind)){i(m,`${n}.kind`,`must be one of ${[...e].join(", ")}`);continue}l.id&&"string"==typeof l.id?g.test(l.id)?o.has(l.id)?i(m,`${n}.id`,`duplicate step id '${l.id}'`):o.add(l.id):i(m,`${n}.id`,`does not match ${g}`):i(m,`${n}.id`,"required (slug-like string)");let t=new Set(o);l.id&&t.delete(l.id);let u={};for(let[a,b]of("tool_call"===l.kind&&j(l.input_template)&&(u.input_template=l.input_template),"artifact_write"===l.kind&&(null!=l.title_template&&(u.title_template=l.title_template),null!=l.content_ref&&(u.content_ref=l.content_ref)),"llm_synthesis"===l.kind&&null!=l.prompt&&(u.prompt=l.prompt),Object.entries(u)))for(let c of function a(b){let c=new Set;if("string"==typeof b){let a;for(h.lastIndex=0;null!==(a=h.exec(b));){let b=a[1];"input"!==b&&c.add(b)}return c}if(j(b))for(let d of Object.values(b))for(let b of a(d))c.add(b);if(Array.isArray(b))for(let d of b)for(let b of a(d))c.add(b);return c}(b))t.has(c)||i(m,n,`references later/unknown step '${c}' in ${a}`);switch(l.kind){case"tool_call":d=function(a,b,c,d){let e;return a.tool&&"string"==typeof a.tool?d.knownToolNames&&!d.knownToolNames.has(a.tool)&&i(b,`${c}.tool`,`unknown tool '${a.tool}'`):i(b,`${c}.tool`,"required (string)"),null==a.input_template||j(a.input_template)||i(b,`${c}.input_template`,"must be a plain object (data only)"),null!=a.risk?f.includes(a.risk)?e=a.risk:(i(b,`${c}.risk`,`must be one of ${f.join(", ")}`),e="medium"):e=d.toolRiskByName&&"string"==typeof a.tool?d.toolRiskByName.get(a.tool)??"medium":"medium",e}(l,m,n,b);break;case"llm_synthesis":l.prompt&&"string"==typeof l.prompt?l.prompt.length>8e3&&i(m,`${n}.prompt`,`exceeds 8000 chars (got ${l.prompt.length})`):i(m,`${n}.prompt`,"required (non-empty string)"),d="low";break;case"artifact_write":d="low"}r=p,s=d,p=k(r)>=k(s)?r:s;let v={kind:l.kind,id:l.id};"tool_call"===l.kind?(v.tool=l.tool??null,null!=l.input_template&&(v.input_template=structuredClone(l.input_template)),v.risk=d):"llm_synthesis"===l.kind?v.prompt=l.prompt??null:"artifact_write"===l.kind&&(null!=l.title_template&&(v.title_template=l.title_template),null!=l.content_ref&&(v.content_ref=l.content_ref)),q.push(v)}return m.length>0?{ok:!1,errors:m,warnings:n,normalized:null}:{ok:!0,errors:[],warnings:n,normalized:{slug:a.slug,title:a.title,description:a.description??null,input_schema:null!=a.input_schema?structuredClone(a.input_schema):{type:"object",properties:{}},steps:q,risk_level:p}}}},93154:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{I2:()=>n,Z3:()=>o,cK:()=>p,pz:()=>m,yi:()=>l});var e=c(73024),f=c(76760),g=c(34255),h=c(9381),i=c(60105),j=c(88101),k=a([g,i,j]);[g,i,j]=k.then?(await k)():k;let q=[["project-watcher","Project Watcher","project_watcher","claude-code",["gh_repo_read","gh_issue_list","gh_pr_list","web_fetch","file_read"],["investigate","retro"],"Watches repos, issues, PRs, deploys, and produces weekly project pulses."],["personal-assistant","Personal Assistant","personal_assistant","anthropic",["gmail_messages_list","gmail_message_read","calendar_events_list","whatsapp_send"],[],"Reads inbox and calendar context, drafts replies, and keeps the operator organized."],["engineering-lead","Engineering Lead","engineering_lead","claude-code",["gh_repo_read","gh_issue_list","gh_pr_list","terminal_run","file_read","file_write"],["investigate","review","ship","qa"],"Leads implementation, review, QA, and preview deploys with explicit approval gates."],["marketing-lead","Marketing Lead","marketing_lead","anthropic",["web_search","web_fetch","file_write","create_artifact"],["design-shotgun","impeccable"],"Creates market research, launch copy, positioning, and design briefs."],["meeting-notes","Meeting Notes Taker","meeting_notes","anthropic",["transcribe_audio","file_write","create_artifact"],[],"Turns recordings into transcripts, decisions, action items, and follow-ups."],["bug-triage","Bug Triage Specialist","bug_triage","claude-code",["gh_issue_list","gh_pr_list","file_read"],["investigate"],"Classifies incoming bugs and proposes severity and next actions."],["phase-runner","Phase Runner","phase_runner","claude-code",["file_read","file_write","terminal_run"],["ship"],"Executes approved implementation phases and reports blockers."],["code-reviewer","Code Reviewer","code_reviewer","claude-code",["file_read","gh_pr_list"],["review"],"Provides independent diff review before merge."],["competitor-scout","Competitor Scout","competitor_scout","anthropic",["web_search","web_fetch","create_artifact"],[],"Tracks competitor movement and summarizes weekly signals."],["finance-ops","Finance and Ops","finance_ops","anthropic",["file_read","create_artifact"],[],"Reads finance docs and drafts advisory runway and ops summaries."],["legal-compliance","Legal and Compliance","legal_compliance","anthropic",["file_read","web_fetch","create_artifact"],[],"Reviews policy and compliance documents as advisory output only."],["customer-support","Customer Support","customer_support","anthropic",["gmail_message_read","file_write"],[],"Drafts customer replies and escalates approval-required sends."]].map(([a,b,c,d,e,f,g])=>({slug:a,title:b,role:c,engine_default:d,tools_required:e,tools_optional:[],skills:f,memory_scopes:["agent","project"],approval_profile:"personal_assistant"===c?"strict":"standard",description_long:g}));q.push({slug:"tool-smith",title:"Tool Smith",role:"tool_smith",engine_default:"claude-code",tools_required:["create_skill","update_skill","create_composite_tool","update_composite_tool","create_connector","update_connector","propose_tool","web_search","web_fetch","file_read"],tools_optional:[],skills:["plan","review"],memory_scopes:["agent","project"],approval_profile:"standard",description_long:"Authors reusable capabilities for the marketplace — declarative skills, composite tools chaining existing primitives, and REST API connectors. For non-REST integrations it proposes reviewable code; it never executes self-authored code.",system_prompt:'You are Tool Smith, the capability-authoring agent. Your only job is to author\nreusable capabilities other agents can use, and publish them to the marketplace.\n\nPick the RIGHT authoring path for each request:\n • A recipe chaining tools that ALREADY exist -> author a COMPOSITE TOOL\n (create_composite_tool). Reference only existing primitive tools; the\n composite inherits the MAX risk of its steps and every gate re-fires per\n step. Use this for "do X then Y then summarize" style capabilities.\n • A new REST API (Notion, Linear, Stripe, Airtable, ...) -> author a CONNECTOR\n (create_connector) with a declarative manifest: https base_url, allowed_hosts,\n secret-by-reference auth (NEVER paste a raw key — reference it by name, e.g.\n NOTION_TOKEN), and per-endpoint method/path/risk. Each endpoint becomes a\n callable <slug>.<endpoint> tool the instant the owner supplies the key once.\n • A reusable instruction/prompt recipe an LLM follows with tools it already\n has -> author a SKILL (create_skill).\n • A genuinely new integration that is NOT REST (binary, SDK-only, websockets,\n complex OAuth) -> propose_tool. This stages reviewable code; it is INERT and\n a human must merge + restart. You never execute self-authored code.\n\nHard rules: never put a raw secret in a connector manifest. Never declare a\ndestructive endpoint as low risk — the validator clamps writes to medium and\nhigh/irreversible endpoints always require human approval at run time. When asked\nfor a capability that already exists, say so instead of duplicating it.'});let r=["project-watcher","personal-assistant","engineering-lead","marketing-lead","meeting-notes"];function l(a=(0,g.getDb)()){if(globalThis.__madarxAgentTemplatesSeeded)return;let b=(0,g.nowIso)();for(let c of q)a.prepare(`INSERT INTO marketplace_items (id, kind, slug, title, description, category, author, source_kind, version, manifest_json, risk_summary, tags, created_at)
3501
+ - Do not invent off-brand palettes, logos, typography, or tone unless the owner explicitly asks for a different brand.`}d()}catch(a){d(a)}})},91937:(a,b,c)=>{"use strict";c.d(b,{ho:()=>l,pE:()=>f});let d=/^[a-z][a-z0-9-]{2,63}$/,e=new Set(["tool_call","llm_synthesis","artifact_write"]),f=["low","medium","high","irreversible_external"],g=/^[a-z][a-z0-9-]{0,63}$/,h=/\{\{([a-z][a-z0-9-]*)/g;function i(a,b,c){a.push(`${b}: ${c}`)}function j(a){return null!==a&&"object"==typeof a&&!Array.isArray(a)}function k(a){return f.indexOf(a)}function l(a,b={}){let c,m=[],n=[];try{c=JSON.stringify(a)}catch{return{ok:!1,errors:["spec: not JSON-serialisable"],warnings:[],normalized:null}}if(!c||"undefined"===c)return{ok:!1,errors:["spec: required"],warnings:[],normalized:null};if(Buffer.byteLength(c,"utf8")>65536)return{ok:!1,errors:[`spec: serialized length ${Buffer.byteLength(c,"utf8")} bytes exceeds 65536-byte cap`],warnings:[],normalized:null};if(!j(a))return{ok:!1,errors:["spec: must be a plain object"],warnings:[],normalized:null};if(a.slug&&"string"==typeof a.slug?d.test(a.slug)||i(m,"slug",`does not match ${d} (lowercase, starts with letter, 3-64 chars, hyphens allowed)`):i(m,"slug","required (string)"),a.title&&"string"==typeof a.title||i(m,"title","required (non-empty string)"),null!=a.description&&"string"!=typeof a.description&&i(m,"description","must be a string"),null==a.input_schema||j(a.input_schema)||i(m,"input_schema","must be a plain object"),!Array.isArray(a.steps)||0===a.steps.length)return i(m,"steps","required (non-empty array)"),{ok:!1,errors:m,warnings:n,normalized:null};if(a.steps.length>25)return i(m,"steps","exceeds 25"),{ok:!1,errors:m,warnings:n,normalized:null};let o=new Set,p="low",q=[];for(let c=0;c<a.steps.length;c++){var r,s;let d,l=a.steps[c],n=`steps[${c}]`;if(!j(l)){i(m,n,"must be a plain object");continue}if(!l.kind||!e.has(l.kind)){i(m,`${n}.kind`,`must be one of ${[...e].join(", ")}`);continue}l.id&&"string"==typeof l.id?g.test(l.id)?o.has(l.id)?i(m,`${n}.id`,`duplicate step id '${l.id}'`):o.add(l.id):i(m,`${n}.id`,`does not match ${g}`):i(m,`${n}.id`,"required (slug-like string)");let t=new Set(o);l.id&&t.delete(l.id);let u={};for(let[a,b]of("tool_call"===l.kind&&j(l.input_template)&&(u.input_template=l.input_template),"artifact_write"===l.kind&&(null!=l.title_template&&(u.title_template=l.title_template),null!=l.content_ref&&(u.content_ref=l.content_ref)),"llm_synthesis"===l.kind&&null!=l.prompt&&(u.prompt=l.prompt),Object.entries(u)))for(let c of function a(b){let c=new Set;if("string"==typeof b){let a;for(h.lastIndex=0;null!==(a=h.exec(b));){let b=a[1];"input"!==b&&c.add(b)}return c}if(j(b))for(let d of Object.values(b))for(let b of a(d))c.add(b);if(Array.isArray(b))for(let d of b)for(let b of a(d))c.add(b);return c}(b))t.has(c)||i(m,n,`references later/unknown step '${c}' in ${a}`);switch(l.kind){case"tool_call":d=function(a,b,c,d){let e;return a.tool&&"string"==typeof a.tool?d.knownToolNames&&!d.knownToolNames.has(a.tool)&&i(b,`${c}.tool`,`unknown tool '${a.tool}'`):i(b,`${c}.tool`,"required (string)"),null==a.input_template||j(a.input_template)||i(b,`${c}.input_template`,"must be a plain object (data only)"),null!=a.risk?f.includes(a.risk)?e=a.risk:(i(b,`${c}.risk`,`must be one of ${f.join(", ")}`),e="medium"):e=d.toolRiskByName&&"string"==typeof a.tool?d.toolRiskByName.get(a.tool)??"medium":"medium",e}(l,m,n,b);break;case"llm_synthesis":l.prompt&&"string"==typeof l.prompt?l.prompt.length>8e3&&i(m,`${n}.prompt`,`exceeds 8000 chars (got ${l.prompt.length})`):i(m,`${n}.prompt`,"required (non-empty string)"),d="low";break;case"artifact_write":d="low"}r=p,s=d,p=k(r)>=k(s)?r:s;let v={kind:l.kind,id:l.id};"tool_call"===l.kind?(v.tool=l.tool??null,null!=l.input_template&&(v.input_template=structuredClone(l.input_template)),v.risk=d):"llm_synthesis"===l.kind?v.prompt=l.prompt??null:"artifact_write"===l.kind&&(null!=l.title_template&&(v.title_template=l.title_template),null!=l.content_ref&&(v.content_ref=l.content_ref)),q.push(v)}return m.length>0?{ok:!1,errors:m,warnings:n,normalized:null}:{ok:!0,errors:[],warnings:n,normalized:{slug:a.slug,title:a.title,description:a.description??null,input_schema:null!=a.input_schema?structuredClone(a.input_schema):{type:"object",properties:{}},steps:q,risk_level:p}}}},93154:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{I2:()=>n,Z3:()=>o,cK:()=>p,pz:()=>m,yi:()=>l});var e=c(73024),f=c(76760),g=c(34255),h=c(9381),i=c(60105),j=c(88101),k=a([g,i,j]);[g,i,j]=k.then?(await k)():k;let q=[["project-watcher","Project Watcher","project_watcher","claude-code",["gh_repo_read","gh_issue_list","gh_pr_list","web_fetch","file_read"],["investigate","retro"],"Watches repos, issues, PRs, deploys, and produces weekly project pulses."],["personal-assistant","Personal Assistant","personal_assistant","anthropic",["gmail_messages_list","gmail_message_read","calendar_events_list","whatsapp_send"],[],"Reads inbox and calendar context, drafts replies, and keeps the operator organized."],["engineering-lead","Engineering Lead","engineering_lead","claude-code",["gh_repo_read","gh_issue_list","gh_pr_list","terminal_run","file_read","file_write"],["investigate","review","ship","qa"],"Leads implementation, review, QA, and preview deploys with explicit approval gates."],["marketing-lead","Marketing Lead","marketing_lead","anthropic",["web_search","web_fetch","file_write","create_artifact"],["design-shotgun","impeccable"],"Creates market research, launch copy, positioning, and design briefs."],["meeting-notes","Meeting Notes Taker","meeting_notes","anthropic",["transcribe_audio","file_write","create_artifact"],[],"Turns recordings into transcripts, decisions, action items, and follow-ups."],["bug-triage","Bug Triage Specialist","bug_triage","claude-code",["gh_issue_list","gh_pr_list","file_read"],["investigate"],"Classifies incoming bugs and proposes severity and next actions."],["phase-runner","Phase Runner","phase_runner","claude-code",["file_read","file_write","terminal_run"],["ship"],"Executes approved implementation phases and reports blockers."],["code-reviewer","Code Reviewer","code_reviewer","claude-code",["file_read","gh_pr_list"],["review"],"Provides independent diff review before merge."],["competitor-scout","Competitor Scout","competitor_scout","anthropic",["web_search","web_fetch","create_artifact"],[],"Tracks competitor movement and summarizes weekly signals."],["finance-ops","Finance and Ops","finance_ops","anthropic",["file_read","create_artifact"],[],"Reads finance docs and drafts advisory runway and ops summaries."],["legal-compliance","Legal and Compliance","legal_compliance","anthropic",["file_read","web_fetch","create_artifact"],[],"Reviews policy and compliance documents as advisory output only."],["customer-support","Customer Support","customer_support","anthropic",["gmail_message_read","file_write"],[],"Drafts customer replies and escalates approval-required sends."],["chief-of-staff","Chief of Staff","chief_of_staff","anthropic",["web_search","file_read","file_write","create_artifact","create_workflow_definition"],["report-builder","market-research"],"Translates founder intent into delegated work across the company, runs the weekly cadence, and surfaces decisions. No direct external writes."],["ads-media-buyer","Ads / Media Buyer","ads_media_buyer","anthropic",["web_search","file_write","create_artifact"],["design-shotgun"],"Plans, builds, and reports on paid campaigns across Meta/Google/TikTok within budget caps. Every campaign publish and budget set is approval-gated."],["content-social","Content / Social Manager","content_social","anthropic",["web_search","file_write","create_artifact","voice_speak"],["design-shotgun"],"Produces and schedules organic posts, reels, and videos and maintains brand voice. Every publish is approval-gated."],["sales-bd","Sales / BD","sales_bd","anthropic",["web_search","web_fetch","gmail_messages_list","email_send","create_artifact"],["inbox-triage"],"Builds target lists, enriches leads, runs outreach, and logs CRM activity. Bulk sends and CRM writes are approval-gated."],["ops-manager","Operations","ops_manager","anthropic",["calendar_events_list","calendar_event_read","file_read","file_write","create_artifact"],["meeting-scheduler","report-builder"],"Keeps the business running — scheduling, internal docs, recurring checklists, vendor coordination. Calendar invites and webhooks are approval-gated."],["product-pm","Product / Project Manager","product_pm","claude-code",["gh_repo_read","gh_issue_list","gh_issue_create","gh_pr_list","file_read","file_write","create_workflow_definition"],["review"],"Maintains the roadmap, writes specs, tracks delivery, and runs standups. Issue/PR creates respect the GitHub allowlist."],["web-ecommerce","Web / Ecommerce","web_ecommerce","claude-code",["web_fetch","supabase_rest_select","browser_open","file_read","file_write","create_artifact"],["web-automation"],"Manages site/store content, products, SEO, and deploys. Deploys, store writes, and DB writes are approval-gated."]].map(([a,b,c,d,e,f,g])=>({slug:a,title:b,role:c,engine_default:d,tools_required:e,tools_optional:[],skills:f,memory_scopes:["agent","project"],approval_profile:"personal_assistant"===c?"strict":"standard",description_long:g}));q.push({slug:"tool-smith",title:"Tool Smith",role:"tool_smith",engine_default:"claude-code",tools_required:["create_skill","update_skill","create_composite_tool","update_composite_tool","create_connector","update_connector","propose_tool","web_search","web_fetch","file_read"],tools_optional:[],skills:["plan","review"],memory_scopes:["agent","project"],approval_profile:"standard",description_long:"Authors reusable capabilities for the marketplace — declarative skills, composite tools chaining existing primitives, and REST API connectors. For non-REST integrations it proposes reviewable code; it never executes self-authored code.",system_prompt:'You are Tool Smith, the capability-authoring agent. Your only job is to author\nreusable capabilities other agents can use, and publish them to the marketplace.\n\nPick the RIGHT authoring path for each request:\n • A recipe chaining tools that ALREADY exist -> author a COMPOSITE TOOL\n (create_composite_tool). Reference only existing primitive tools; the\n composite inherits the MAX risk of its steps and every gate re-fires per\n step. Use this for "do X then Y then summarize" style capabilities.\n • A new REST API (Notion, Linear, Stripe, Airtable, ...) -> author a CONNECTOR\n (create_connector) with a declarative manifest: https base_url, allowed_hosts,\n secret-by-reference auth (NEVER paste a raw key — reference it by name, e.g.\n NOTION_TOKEN), and per-endpoint method/path/risk. Each endpoint becomes a\n callable <slug>.<endpoint> tool the instant the owner supplies the key once.\n • A reusable instruction/prompt recipe an LLM follows with tools it already\n has -> author a SKILL (create_skill).\n • A genuinely new integration that is NOT REST (binary, SDK-only, websockets,\n complex OAuth) -> propose_tool. This stages reviewable code; it is INERT and\n a human must merge + restart. You never execute self-authored code.\n\nHard rules: never put a raw secret in a connector manifest. Never declare a\ndestructive endpoint as low risk — the validator clamps writes to medium and\nhigh/irreversible endpoints always require human approval at run time. When asked\nfor a capability that already exists, say so instead of duplicating it.'});let r=["project-watcher","personal-assistant","engineering-lead","marketing-lead","meeting-notes"];function l(a=(0,g.getDb)()){if(globalThis.__madarxAgentTemplatesSeeded)return;let b=(0,g.nowIso)();for(let c of q)a.prepare(`INSERT INTO marketplace_items (id, kind, slug, title, description, category, author, source_kind, version, manifest_json, risk_summary, tags, created_at)
3458
3502
  VALUES (?, 'agent', ?, ?, ?, ?, 'madarx', 'builtin', '1.0', ?, ?, ?, ?)
3459
3503
  ON CONFLICT(kind, slug) DO UPDATE SET title=excluded.title, description=excluded.description, manifest_json=excluded.manifest_json, tags=excluded.tags`).run(`agent:${c.slug}`,c.slug,c.title,c.description_long,c.role,JSON.stringify({agent:c}),c.approval_profile,JSON.stringify([c.role,c.engine_default]),b);if("1"!==process.env.MADARX_SEED_DEFAULT_AGENTS){globalThis.__madarxAgentTemplatesSeeded=!0;return}let c=r.map(()=>"?").join(","),d=a.prepare(`SELECT COUNT(*) AS c FROM agent_template_installations
3460
3504
  WHERE project_id = 'personal' AND template_slug IN (${c})`).get(...r);if(d?.c>=r.length){globalThis.__madarxAgentTemplatesSeeded=!0;return}for(let a of r)try{m(a,"personal",{seed:!0})}catch{}globalThis.__madarxAgentTemplatesSeeded=!0}function m(a,b="personal",c={}){let d=function(a){var b;let c=q.find(b=>b.slug===a);return c?c:(b=j.S.find(b=>b.slug===a))?{slug:b.slug,title:b.title,role:b.role,engine_default:b.engine_default,tools_required:Array.isArray(b.tools_required)?b.tools_required:[],tools_optional:Array.isArray(b.tools_optional)?b.tools_optional:[],skills:Array.isArray(b.skills)?b.skills:[],memory_scopes:["agent","project"],approval_profile:b.approval_profile||"standard",description_long:b.description_long,system_prompt:"string"==typeof b.system_prompt?b.system_prompt:null}:null}(a);if(!d)throw Error("agent template not found");let e=(0,g.getDb)(),f=e.prepare("SELECT * FROM agent_template_installations WHERE template_slug = ? AND project_id = ?").get(a,b);if(f&&!c.overwrite)return f;let h=c.agent_id||`${b}-${a}`.replace(/[^a-zA-Z0-9_-]/g,"-"),k=(0,i.Sn)({id:h,name:d.title,type:d.role,role:d.role,title:d.title,engine:d.engine_default,tools:d.tools_required,mission:d.description_long,system_prompt:d.system_prompt||void 0,approval:d.approval_profile,project_id:b,template_slug:a,suppress_live_event:!!c.seed});for(let a of d.tools_required)(0,i.Xr)(h,a,a.includes("write")||a.includes("send")||a.includes("terminal")?"approval_required":"auto");let l=(0,g.nowIso)();return e.prepare(`INSERT INTO agent_template_installations (id, template_slug, agent_id, project_id, installed_at, status)