madarx 2.9.2 → 2.9.4

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 (616) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +283 -283
  3. package/.next/standalone/.next/app-path-routes-manifest.json +79 -79
  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 +1 -1
  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 +3 -3
  13. package/.next/standalone/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
  14. package/.next/standalone/.next/server/app/agents/page.js +1 -1
  15. package/.next/standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  16. package/.next/standalone/.next/server/app/api/activity/route_client-reference-manifest.js +1 -1
  17. package/.next/standalone/.next/server/app/api/admin/audit-export/route_client-reference-manifest.js +1 -1
  18. package/.next/standalone/.next/server/app/api/admin/share-links/route_client-reference-manifest.js +1 -1
  19. package/.next/standalone/.next/server/app/api/agent-memory/route_client-reference-manifest.js +1 -1
  20. package/.next/standalone/.next/server/app/api/agent-runs/[id]/cancel/route_client-reference-manifest.js +1 -1
  21. package/.next/standalone/.next/server/app/api/agent-runs/[id]/events/route_client-reference-manifest.js +1 -1
  22. package/.next/standalone/.next/server/app/api/agent-runs/[id]/log/route_client-reference-manifest.js +1 -1
  23. package/.next/standalone/.next/server/app/api/agent-runs/[id]/route_client-reference-manifest.js +1 -1
  24. package/.next/standalone/.next/server/app/api/agent-runs/route_client-reference-manifest.js +1 -1
  25. package/.next/standalone/.next/server/app/api/agents/[id]/chain/route_client-reference-manifest.js +1 -1
  26. package/.next/standalone/.next/server/app/api/agents/[id]/memory/route_client-reference-manifest.js +1 -1
  27. package/.next/standalone/.next/server/app/api/agents/[id]/reports/route_client-reference-manifest.js +1 -1
  28. package/.next/standalone/.next/server/app/api/agents/[id]/run/route_client-reference-manifest.js +1 -1
  29. package/.next/standalone/.next/server/app/api/agents/[id]/skills/route_client-reference-manifest.js +1 -1
  30. package/.next/standalone/.next/server/app/api/agents/create/route_client-reference-manifest.js +1 -1
  31. package/.next/standalone/.next/server/app/api/agents/ops/route_client-reference-manifest.js +1 -1
  32. package/.next/standalone/.next/server/app/api/approvals/[id]/route_client-reference-manifest.js +1 -1
  33. package/.next/standalone/.next/server/app/api/approvals/route_client-reference-manifest.js +1 -1
  34. package/.next/standalone/.next/server/app/api/artifacts/[id]/acl/route_client-reference-manifest.js +1 -1
  35. package/.next/standalone/.next/server/app/api/artifacts/[id]/protect/route_client-reference-manifest.js +1 -1
  36. package/.next/standalone/.next/server/app/api/artifacts/[id]/raw/route_client-reference-manifest.js +1 -1
  37. package/.next/standalone/.next/server/app/api/artifacts/[id]/route_client-reference-manifest.js +1 -1
  38. package/.next/standalone/.next/server/app/api/artifacts/[id]/share-link/[linkId]/route_client-reference-manifest.js +1 -1
  39. package/.next/standalone/.next/server/app/api/artifacts/[id]/share-link/route_client-reference-manifest.js +1 -1
  40. package/.next/standalone/.next/server/app/api/artifacts/upload/route_client-reference-manifest.js +1 -1
  41. package/.next/standalone/.next/server/app/api/audit/list/route_client-reference-manifest.js +1 -1
  42. package/.next/standalone/.next/server/app/api/audit/search/route_client-reference-manifest.js +1 -1
  43. package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
  44. package/.next/standalone/.next/server/app/api/auth/config/route_client-reference-manifest.js +1 -1
  45. package/.next/standalone/.next/server/app/api/auth/join-bootstrap/route_client-reference-manifest.js +1 -1
  46. package/.next/standalone/.next/server/app/api/auth/session/route_client-reference-manifest.js +1 -1
  47. package/.next/standalone/.next/server/app/api/brand/route_client-reference-manifest.js +1 -1
  48. package/.next/standalone/.next/server/app/api/chat/sessions/[id]/route_client-reference-manifest.js +1 -1
  49. package/.next/standalone/.next/server/app/api/chat/sessions/route_client-reference-manifest.js +1 -1
  50. package/.next/standalone/.next/server/app/api/config/env/route_client-reference-manifest.js +1 -1
  51. package/.next/standalone/.next/server/app/api/config/route_client-reference-manifest.js +1 -1
  52. package/.next/standalone/.next/server/app/api/connections/[service]/route_client-reference-manifest.js +1 -1
  53. package/.next/standalone/.next/server/app/api/connections/[service]/verify/route_client-reference-manifest.js +1 -1
  54. package/.next/standalone/.next/server/app/api/connections/route_client-reference-manifest.js +1 -1
  55. package/.next/standalone/.next/server/app/api/cron/tick/route_client-reference-manifest.js +1 -1
  56. package/.next/standalone/.next/server/app/api/dashboard/spaces/[id]/move/route_client-reference-manifest.js +1 -1
  57. package/.next/standalone/.next/server/app/api/dashboard/spaces/[id]/route_client-reference-manifest.js +1 -1
  58. package/.next/standalone/.next/server/app/api/dashboard/spaces/[id]/share-link/[linkId]/route_client-reference-manifest.js +1 -1
  59. package/.next/standalone/.next/server/app/api/dashboard/spaces/[id]/share-link/route_client-reference-manifest.js +1 -1
  60. package/.next/standalone/.next/server/app/api/dashboard/spaces/import/route_client-reference-manifest.js +1 -1
  61. package/.next/standalone/.next/server/app/api/dashboard/spaces/route_client-reference-manifest.js +1 -1
  62. package/.next/standalone/.next/server/app/api/disk/files/[id]/blob/route_client-reference-manifest.js +1 -1
  63. package/.next/standalone/.next/server/app/api/disk/files/[id]/route_client-reference-manifest.js +1 -1
  64. package/.next/standalone/.next/server/app/api/disk/files/[id]/transcribe/route_client-reference-manifest.js +1 -1
  65. package/.next/standalone/.next/server/app/api/disk/files/route_client-reference-manifest.js +1 -1
  66. package/.next/standalone/.next/server/app/api/disk/folders/route_client-reference-manifest.js +1 -1
  67. package/.next/standalone/.next/server/app/api/events/since/[cursor]/route_client-reference-manifest.js +1 -1
  68. package/.next/standalone/.next/server/app/api/events/stream/route_client-reference-manifest.js +1 -1
  69. package/.next/standalone/.next/server/app/api/fs/create-folder/route_client-reference-manifest.js +1 -1
  70. package/.next/standalone/.next/server/app/api/fs/pick-folder/route_client-reference-manifest.js +1 -1
  71. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/blueprint/route_client-reference-manifest.js +1 -1
  72. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/diagnostic/route_client-reference-manifest.js +1 -1
  73. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/governance/route_client-reference-manifest.js +1 -1
  74. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/interview/route_client-reference-manifest.js +1 -1
  75. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/pilot/route_client-reference-manifest.js +1 -1
  76. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/quarterly/route_client-reference-manifest.js +1 -1
  77. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/route_client-reference-manifest.js +1 -1
  78. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/setup-package/route_client-reference-manifest.js +1 -1
  79. package/.next/standalone/.next/server/app/api/hail/engagements/route_client-reference-manifest.js +1 -1
  80. package/.next/standalone/.next/server/app/api/hail/interviews/[id]/responses/route_client-reference-manifest.js +1 -1
  81. package/.next/standalone/.next/server/app/api/hail/interviews/[id]/route_client-reference-manifest.js +1 -1
  82. package/.next/standalone/.next/server/app/api/hail/setup-packages/[id]/apply/route_client-reference-manifest.js +1 -1
  83. package/.next/standalone/.next/server/app/api/hail/setup-packages/validate/route_client-reference-manifest.js +1 -1
  84. package/.next/standalone/.next/server/app/api/heartbeat/tick/route_client-reference-manifest.js +1 -1
  85. package/.next/standalone/.next/server/app/api/heartbeat/worker/route_client-reference-manifest.js +1 -1
  86. package/.next/standalone/.next/server/app/api/help/route_client-reference-manifest.js +1 -1
  87. package/.next/standalone/.next/server/app/api/hermes/jobs/[id]/events/route_client-reference-manifest.js +1 -1
  88. package/.next/standalone/.next/server/app/api/hermes/jobs/[id]/route_client-reference-manifest.js +1 -1
  89. package/.next/standalone/.next/server/app/api/hermes/jobs/route_client-reference-manifest.js +1 -1
  90. package/.next/standalone/.next/server/app/api/integrations/google/callback/route_client-reference-manifest.js +1 -1
  91. package/.next/standalone/.next/server/app/api/integrations/google/oauth/route_client-reference-manifest.js +1 -1
  92. package/.next/standalone/.next/server/app/api/marketplace/[id]/route_client-reference-manifest.js +1 -1
  93. package/.next/standalone/.next/server/app/api/marketplace/open-design/route_client-reference-manifest.js +1 -1
  94. package/.next/standalone/.next/server/app/api/marketplace/route_client-reference-manifest.js +1 -1
  95. package/.next/standalone/.next/server/app/api/mines/import-roots/route_client-reference-manifest.js +1 -1
  96. package/.next/standalone/.next/server/app/api/mines/portfolio/route_client-reference-manifest.js +1 -1
  97. package/.next/standalone/.next/server/app/api/mines/projects/[id]/chunks/route_client-reference-manifest.js +1 -1
  98. package/.next/standalone/.next/server/app/api/mines/projects/[id]/diligence/route_client-reference-manifest.js +1 -1
  99. package/.next/standalone/.next/server/app/api/mines/projects/[id]/import/route_client-reference-manifest.js +1 -1
  100. package/.next/standalone/.next/server/app/api/mines/projects/[id]/publish/route_client-reference-manifest.js +1 -1
  101. package/.next/standalone/.next/server/app/api/mines/projects/route_client-reference-manifest.js +1 -1
  102. package/.next/standalone/.next/server/app/api/missions/route_client-reference-manifest.js +1 -1
  103. package/.next/standalone/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  104. package/.next/standalone/.next/server/app/api/onboarding/blueprint/route_client-reference-manifest.js +1 -1
  105. package/.next/standalone/.next/server/app/api/onboarding/launch/route_client-reference-manifest.js +1 -1
  106. package/.next/standalone/.next/server/app/api/orchestrator/command/route_client-reference-manifest.js +1 -1
  107. package/.next/standalone/.next/server/app/api/orchestrator/stream/route_client-reference-manifest.js +1 -1
  108. package/.next/standalone/.next/server/app/api/org/route_client-reference-manifest.js +1 -1
  109. package/.next/standalone/.next/server/app/api/orgs/[id]/invites/[inviteId]/route_client-reference-manifest.js +1 -1
  110. package/.next/standalone/.next/server/app/api/orgs/[id]/invites/route_client-reference-manifest.js +1 -1
  111. package/.next/standalone/.next/server/app/api/orgs/[id]/members/[userId]/role/route_client-reference-manifest.js +1 -1
  112. package/.next/standalone/.next/server/app/api/orgs/[id]/members/[userId]/route_client-reference-manifest.js +1 -1
  113. package/.next/standalone/.next/server/app/api/orgs/[id]/members/route_client-reference-manifest.js +1 -1
  114. package/.next/standalone/.next/server/app/api/orgs/[id]/route_client-reference-manifest.js +1 -1
  115. package/.next/standalone/.next/server/app/api/orgs/invites/pending/route_client-reference-manifest.js +1 -1
  116. package/.next/standalone/.next/server/app/api/orgs/join/route_client-reference-manifest.js +1 -1
  117. package/.next/standalone/.next/server/app/api/orgs/route_client-reference-manifest.js +1 -1
  118. package/.next/standalone/.next/server/app/api/printing-press/clis/route_client-reference-manifest.js +1 -1
  119. package/.next/standalone/.next/server/app/api/printing-press/install/route_client-reference-manifest.js +1 -1
  120. package/.next/standalone/.next/server/app/api/printing-press/security-mode/route_client-reference-manifest.js +1 -1
  121. package/.next/standalone/.next/server/app/api/privacy/config/route_client-reference-manifest.js +1 -1
  122. package/.next/standalone/.next/server/app/api/privacy/verify/route_client-reference-manifest.js +1 -1
  123. package/.next/standalone/.next/server/app/api/processes/[id]/route_client-reference-manifest.js +1 -1
  124. package/.next/standalone/.next/server/app/api/processes/[id]/share-link/route_client-reference-manifest.js +1 -1
  125. package/.next/standalone/.next/server/app/api/processes/[id]/stages/[stageId]/override/route_client-reference-manifest.js +1 -1
  126. package/.next/standalone/.next/server/app/api/processes/[id]/stages/[stageId]/retry/route_client-reference-manifest.js +1 -1
  127. package/.next/standalone/.next/server/app/api/processes/[id]/stages/[stageId]/submit/route_client-reference-manifest.js +1 -1
  128. package/.next/standalone/.next/server/app/api/processes/definitions/[slug]/route_client-reference-manifest.js +1 -1
  129. package/.next/standalone/.next/server/app/api/processes/definitions/[slug]/settings/route_client-reference-manifest.js +1 -1
  130. package/.next/standalone/.next/server/app/api/processes/definitions/route_client-reference-manifest.js +1 -1
  131. package/.next/standalone/.next/server/app/api/processes/definitions/validate/route_client-reference-manifest.js +1 -1
  132. package/.next/standalone/.next/server/app/api/processes/route_client-reference-manifest.js +1 -1
  133. package/.next/standalone/.next/server/app/api/processes/start-and-route/route_client-reference-manifest.js +1 -1
  134. package/.next/standalone/.next/server/app/api/projects/[slug]/library/route_client-reference-manifest.js +1 -1
  135. package/.next/standalone/.next/server/app/api/projects/[slug]/route_client-reference-manifest.js +1 -1
  136. package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  137. package/.next/standalone/.next/server/app/api/runs/approve-claude-run/route_client-reference-manifest.js +1 -1
  138. package/.next/standalone/.next/server/app/api/runs/claude-code-dry-run/route_client-reference-manifest.js +1 -1
  139. package/.next/standalone/.next/server/app/api/runs/competitor-report/route_client-reference-manifest.js +1 -1
  140. package/.next/standalone/.next/server/app/api/runs/engine-ping/route_client-reference-manifest.js +1 -1
  141. package/.next/standalone/.next/server/app/api/runs/marketing-plan/route_client-reference-manifest.js +1 -1
  142. package/.next/standalone/.next/server/app/api/schedules/upsert/route_client-reference-manifest.js +1 -1
  143. package/.next/standalone/.next/server/app/api/secrets/[name]/route_client-reference-manifest.js +1 -1
  144. package/.next/standalone/.next/server/app/api/secrets/route_client-reference-manifest.js +1 -1
  145. package/.next/standalone/.next/server/app/api/settings/trust-mode/route_client-reference-manifest.js +1 -1
  146. package/.next/standalone/.next/server/app/api/share/[token]/otp/route_client-reference-manifest.js +1 -1
  147. package/.next/standalone/.next/server/app/api/share/[token]/route_client-reference-manifest.js +1 -1
  148. package/.next/standalone/.next/server/app/api/share/[token]/verify/route_client-reference-manifest.js +1 -1
  149. package/.next/standalone/.next/server/app/api/share/space/[token]/otp/route_client-reference-manifest.js +1 -1
  150. package/.next/standalone/.next/server/app/api/share/space/[token]/route_client-reference-manifest.js +1 -1
  151. package/.next/standalone/.next/server/app/api/share/space/[token]/verify/route_client-reference-manifest.js +1 -1
  152. package/.next/standalone/.next/server/app/api/shared/spaces/[id]/acl/route_client-reference-manifest.js +1 -1
  153. package/.next/standalone/.next/server/app/api/shared/spaces/publish/route_client-reference-manifest.js +1 -1
  154. package/.next/standalone/.next/server/app/api/shared/spaces/route_client-reference-manifest.js +1 -1
  155. package/.next/standalone/.next/server/app/api/shared/spaces/status/route_client-reference-manifest.js +1 -1
  156. package/.next/standalone/.next/server/app/api/shared/spaces/unpublish/route_client-reference-manifest.js +1 -1
  157. package/.next/standalone/.next/server/app/api/state/route_client-reference-manifest.js +1 -1
  158. package/.next/standalone/.next/server/app/api/system/update/route_client-reference-manifest.js +1 -1
  159. package/.next/standalone/.next/server/app/api/tasks/[id]/active-run/route_client-reference-manifest.js +1 -1
  160. package/.next/standalone/.next/server/app/api/tasks/[id]/attachments/route_client-reference-manifest.js +1 -1
  161. package/.next/standalone/.next/server/app/api/tasks/[id]/checklist/[itemId]/route_client-reference-manifest.js +1 -1
  162. package/.next/standalone/.next/server/app/api/tasks/[id]/checklist/route_client-reference-manifest.js +1 -1
  163. package/.next/standalone/.next/server/app/api/tasks/[id]/checkout/route_client-reference-manifest.js +1 -1
  164. package/.next/standalone/.next/server/app/api/tasks/[id]/children/route_client-reference-manifest.js +1 -1
  165. package/.next/standalone/.next/server/app/api/tasks/[id]/comments/route_client-reference-manifest.js +1 -1
  166. package/.next/standalone/.next/server/app/api/tasks/[id]/events/route_client-reference-manifest.js +1 -1
  167. package/.next/standalone/.next/server/app/api/tasks/[id]/live-runs/route_client-reference-manifest.js +1 -1
  168. package/.next/standalone/.next/server/app/api/tasks/[id]/release/route_client-reference-manifest.js +1 -1
  169. package/.next/standalone/.next/server/app/api/tasks/[id]/route_client-reference-manifest.js +1 -1
  170. package/.next/standalone/.next/server/app/api/tasks/route_client-reference-manifest.js +1 -1
  171. package/.next/standalone/.next/server/app/api/tool-allowlists/[id]/route_client-reference-manifest.js +1 -1
  172. package/.next/standalone/.next/server/app/api/tool-allowlists/route_client-reference-manifest.js +1 -1
  173. package/.next/standalone/.next/server/app/api/tool-egress/route_client-reference-manifest.js +1 -1
  174. package/.next/standalone/.next/server/app/api/tools/[name]/approve/route_client-reference-manifest.js +1 -1
  175. package/.next/standalone/.next/server/app/api/tools/[name]/route_client-reference-manifest.js +1 -1
  176. package/.next/standalone/.next/server/app/api/tools/route_client-reference-manifest.js +1 -1
  177. package/.next/standalone/.next/server/app/api/transcripts/route_client-reference-manifest.js +1 -1
  178. package/.next/standalone/.next/server/app/api/voice/providers/route_client-reference-manifest.js +1 -1
  179. package/.next/standalone/.next/server/app/api/voice/realtime/context/route_client-reference-manifest.js +1 -1
  180. package/.next/standalone/.next/server/app/api/voice/realtime/session/route_client-reference-manifest.js +1 -1
  181. package/.next/standalone/.next/server/app/api/voice/realtime/tool-result/route_client-reference-manifest.js +1 -1
  182. package/.next/standalone/.next/server/app/api/voice/realtime/tools/route_client-reference-manifest.js +1 -1
  183. package/.next/standalone/.next/server/app/api/voice/tts/route_client-reference-manifest.js +1 -1
  184. package/.next/standalone/.next/server/app/api/whatsapp/allowlist/route_client-reference-manifest.js +1 -1
  185. package/.next/standalone/.next/server/app/api/whatsapp/messages/route_client-reference-manifest.js +1 -1
  186. package/.next/standalone/.next/server/app/api/whatsapp/qr/route_client-reference-manifest.js +1 -1
  187. package/.next/standalone/.next/server/app/api/whatsapp/send/route_client-reference-manifest.js +1 -1
  188. package/.next/standalone/.next/server/app/api/whatsapp/status/route_client-reference-manifest.js +1 -1
  189. package/.next/standalone/.next/server/app/approvals/page.js +2 -2
  190. package/.next/standalone/.next/server/app/approvals/page_client-reference-manifest.js +1 -1
  191. package/.next/standalone/.next/server/app/architecture/page_client-reference-manifest.js +1 -1
  192. package/.next/standalone/.next/server/app/architecture.html +2 -2
  193. package/.next/standalone/.next/server/app/architecture.rsc +1 -1
  194. package/.next/standalone/.next/server/app/audit/live/page_client-reference-manifest.js +1 -1
  195. package/.next/standalone/.next/server/app/audit/page_client-reference-manifest.js +1 -1
  196. package/.next/standalone/.next/server/app/brand/page_client-reference-manifest.js +1 -1
  197. package/.next/standalone/.next/server/app/brand.html +1 -1
  198. package/.next/standalone/.next/server/app/brand.rsc +1 -1
  199. package/.next/standalone/.next/server/app/disk/page_client-reference-manifest.js +1 -1
  200. package/.next/standalone/.next/server/app/federated-ai/page_client-reference-manifest.js +1 -1
  201. package/.next/standalone/.next/server/app/federated-ai.html +2 -2
  202. package/.next/standalone/.next/server/app/federated-ai.rsc +1 -1
  203. package/.next/standalone/.next/server/app/hail/[id]/governance/page_client-reference-manifest.js +1 -1
  204. package/.next/standalone/.next/server/app/hail/[id]/interview/page.js +1 -1
  205. package/.next/standalone/.next/server/app/hail/[id]/interview/page_client-reference-manifest.js +1 -1
  206. package/.next/standalone/.next/server/app/hail/[id]/page.js +2 -2
  207. package/.next/standalone/.next/server/app/hail/[id]/page_client-reference-manifest.js +1 -1
  208. package/.next/standalone/.next/server/app/hail/[id]/setup/page.js +2 -2
  209. package/.next/standalone/.next/server/app/hail/[id]/setup/page_client-reference-manifest.js +1 -1
  210. package/.next/standalone/.next/server/app/hail/page.js +2 -2
  211. package/.next/standalone/.next/server/app/hail/page_client-reference-manifest.js +1 -1
  212. package/.next/standalone/.next/server/app/help/[slug]/page_client-reference-manifest.js +1 -1
  213. package/.next/standalone/.next/server/app/help/page_client-reference-manifest.js +1 -1
  214. package/.next/standalone/.next/server/app/index.html +2 -2
  215. package/.next/standalone/.next/server/app/index.rsc +1 -1
  216. package/.next/standalone/.next/server/app/join/page_client-reference-manifest.js +1 -1
  217. package/.next/standalone/.next/server/app/join.html +1 -1
  218. package/.next/standalone/.next/server/app/join.rsc +1 -1
  219. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  220. package/.next/standalone/.next/server/app/marketplace/page.js +2 -2
  221. package/.next/standalone/.next/server/app/marketplace/page_client-reference-manifest.js +1 -1
  222. package/.next/standalone/.next/server/app/mines/[projectId]/page_client-reference-manifest.js +1 -1
  223. package/.next/standalone/.next/server/app/mines/[projectId]/results/page_client-reference-manifest.js +1 -1
  224. package/.next/standalone/.next/server/app/mines/page_client-reference-manifest.js +1 -1
  225. package/.next/standalone/.next/server/app/missions/page.js +2 -2
  226. package/.next/standalone/.next/server/app/missions/page_client-reference-manifest.js +1 -1
  227. package/.next/standalone/.next/server/app/onboarding/org/page_client-reference-manifest.js +1 -1
  228. package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  229. package/.next/standalone/.next/server/app/onboarding.html +2 -2
  230. package/.next/standalone/.next/server/app/onboarding.rsc +1 -1
  231. package/.next/standalone/.next/server/app/org/page.js +1 -1
  232. package/.next/standalone/.next/server/app/org/page.js.nft.json +1 -1
  233. package/.next/standalone/.next/server/app/org/page_client-reference-manifest.js +1 -1
  234. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  235. package/.next/standalone/.next/server/app/projects/[slug]/log/page_client-reference-manifest.js +1 -1
  236. package/.next/standalone/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  237. package/.next/standalone/.next/server/app/projects/new/page.js +1 -1
  238. package/.next/standalone/.next/server/app/projects/new/page_client-reference-manifest.js +1 -1
  239. package/.next/standalone/.next/server/app/projects/new.html +1 -1
  240. package/.next/standalone/.next/server/app/projects/new.rsc +2 -2
  241. package/.next/standalone/.next/server/app/projects/page.js +11 -11
  242. package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  243. package/.next/standalone/.next/server/app/reports/[file]/route_client-reference-manifest.js +1 -1
  244. package/.next/standalone/.next/server/app/reports/page_client-reference-manifest.js +1 -1
  245. package/.next/standalone/.next/server/app/runtime/page_client-reference-manifest.js +1 -1
  246. package/.next/standalone/.next/server/app/schedules/page.js +2 -2
  247. package/.next/standalone/.next/server/app/schedules/page_client-reference-manifest.js +1 -1
  248. package/.next/standalone/.next/server/app/settings/account/page_client-reference-manifest.js +1 -1
  249. package/.next/standalone/.next/server/app/settings/advanced/page_client-reference-manifest.js +1 -1
  250. package/.next/standalone/.next/server/app/settings/appearance/page_client-reference-manifest.js +1 -1
  251. package/.next/standalone/.next/server/app/settings/brand/page_client-reference-manifest.js +1 -1
  252. package/.next/standalone/.next/server/app/settings/brand.html +2 -2
  253. package/.next/standalone/.next/server/app/settings/brand.rsc +1 -1
  254. package/.next/standalone/.next/server/app/settings/connectors/page_client-reference-manifest.js +1 -1
  255. package/.next/standalone/.next/server/app/settings/engines/page_client-reference-manifest.js +1 -1
  256. package/.next/standalone/.next/server/app/settings/onboarding/page_client-reference-manifest.js +1 -1
  257. package/.next/standalone/.next/server/app/settings/onboarding.html +2 -2
  258. package/.next/standalone/.next/server/app/settings/onboarding.rsc +1 -1
  259. package/.next/standalone/.next/server/app/settings/organization/page.js +1 -1
  260. package/.next/standalone/.next/server/app/settings/organization/page.js.nft.json +1 -1
  261. package/.next/standalone/.next/server/app/settings/organization/page_client-reference-manifest.js +1 -1
  262. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  263. package/.next/standalone/.next/server/app/settings/runtime/page_client-reference-manifest.js +1 -1
  264. package/.next/standalone/.next/server/app/settings/tools/page_client-reference-manifest.js +1 -1
  265. package/.next/standalone/.next/server/app/settings.html +2 -2
  266. package/.next/standalone/.next/server/app/settings.rsc +1 -1
  267. package/.next/standalone/.next/server/app/share/[token]/page_client-reference-manifest.js +1 -1
  268. package/.next/standalone/.next/server/app/share/space/[token]/page_client-reference-manifest.js +1 -1
  269. package/.next/standalone/.next/server/app/tasks/[id]/page.js +1 -1
  270. package/.next/standalone/.next/server/app/tasks/[id]/page_client-reference-manifest.js +1 -1
  271. package/.next/standalone/.next/server/app/tasks/page.js +1 -1
  272. package/.next/standalone/.next/server/app/tasks/page_client-reference-manifest.js +1 -1
  273. package/.next/standalone/.next/server/app/team/[agentId]/page_client-reference-manifest.js +1 -1
  274. package/.next/standalone/.next/server/app/team/page_client-reference-manifest.js +1 -1
  275. package/.next/standalone/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  276. package/.next/standalone/.next/server/app/whatsapp/page_client-reference-manifest.js +1 -1
  277. package/.next/standalone/.next/server/app/whatsapp.html +1 -1
  278. package/.next/standalone/.next/server/app/whatsapp.rsc +1 -1
  279. package/.next/standalone/.next/server/app/workflows/[caseId]/page_client-reference-manifest.js +1 -1
  280. package/.next/standalone/.next/server/app/workflows/new/[caseId]/page_client-reference-manifest.js +1 -1
  281. package/.next/standalone/.next/server/app/workflows/new/definition/page_client-reference-manifest.js +1 -1
  282. package/.next/standalone/.next/server/app/workflows/new/page.js +2 -2
  283. package/.next/standalone/.next/server/app/workflows/new/page_client-reference-manifest.js +1 -1
  284. package/.next/standalone/.next/server/app/workflows/page_client-reference-manifest.js +1 -1
  285. package/.next/standalone/.next/server/app/workflows/share/[caseId]/page_client-reference-manifest.js +1 -1
  286. package/.next/standalone/.next/server/app-paths-manifest.json +79 -79
  287. package/.next/standalone/.next/server/chunks/1699.js +2 -2
  288. package/.next/standalone/.next/server/chunks/4676.js +1 -0
  289. package/.next/standalone/.next/server/functions-config-manifest.json +43 -43
  290. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  291. package/.next/standalone/.next/server/pages/404.html +1 -1
  292. package/.next/standalone/.next/server/pages/500.html +1 -1
  293. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  294. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  295. package/.next/standalone/.next/static/chunks/1231-4acb93ac3f653de1.js +1 -0
  296. package/.next/standalone/.next/static/chunks/1255-b28ea36bf0cdbd65.js +1 -0
  297. package/.next/standalone/.next/static/chunks/1517.be5e2c446b38c681.js +1 -0
  298. package/.next/standalone/.next/static/chunks/2309-722fe8d8b26c21c6.js +1 -0
  299. package/.next/standalone/.next/static/chunks/2619-3c9e02e22d10480a.js +1 -0
  300. package/.next/standalone/.next/static/chunks/2713.4f4ae8af4e5bf2ee.js +1 -0
  301. package/.next/standalone/.next/static/chunks/2769-5ea87fab731b4c4d.js +1 -0
  302. package/.next/standalone/.next/static/chunks/3168.3b5e35036a18bdd3.js +1 -0
  303. package/.next/standalone/.next/static/chunks/4119-5297b212ff79d264.js +1 -0
  304. package/.next/standalone/.next/static/chunks/44530001.ef2edd53e6cfdfa8.js +1 -0
  305. package/.next/standalone/.next/static/chunks/4797.5d0d513a724ca684.js +1 -0
  306. package/.next/standalone/.next/static/chunks/4bd1b696-f785427dddbba9fb.js +1 -0
  307. package/.next/standalone/.next/static/chunks/566-df7d5a84a12252cd.js +1 -0
  308. package/.next/standalone/.next/static/chunks/5938.238480f58c343b6b.js +1 -0
  309. package/.next/standalone/.next/static/chunks/7130.5de172d005b1e866.js +1 -0
  310. package/.next/standalone/.next/static/chunks/8-49f6c91cb13e65ac.js +1 -0
  311. package/.next/standalone/.next/static/chunks/8217.93f3920e3c35c748.js +1 -0
  312. package/.next/standalone/.next/static/chunks/840.c27c21f4787aea90.js +59 -0
  313. package/.next/standalone/.next/static/chunks/9077-7f938e8517cad35e.js +1 -0
  314. package/.next/standalone/.next/static/chunks/930-de78056b2dc197a2.js +1 -0
  315. package/.next/standalone/.next/static/chunks/9863.8c29a80e7d210e46.js +1 -0
  316. package/.next/standalone/.next/static/chunks/9867.fc6d7dc10dd6c262.js +1 -0
  317. package/.next/standalone/.next/static/chunks/app/_not-found/page-1a04e2ed7713f80a.js +1 -0
  318. package/.next/standalone/.next/static/chunks/app/activity/loading-abb4b18098f1d93e.js +1 -0
  319. package/.next/standalone/.next/static/chunks/app/activity/page-c12b94ea10818d65.js +1 -0
  320. package/.next/standalone/.next/static/chunks/app/admin/page-e59c7cc86dec4052.js +1 -0
  321. package/.next/standalone/.next/static/chunks/app/agents/[id]/loading-abb4b18098f1d93e.js +1 -0
  322. package/.next/standalone/.next/static/chunks/app/agents/[id]/page-ba45b5f563f12313.js +1 -0
  323. package/.next/standalone/.next/static/chunks/app/agents/loading-abb4b18098f1d93e.js +1 -0
  324. package/.next/standalone/.next/static/chunks/app/agents/page-c251f7df2db0348b.js +1 -0
  325. package/.next/standalone/.next/static/chunks/app/api/activity/route-abb4b18098f1d93e.js +1 -0
  326. package/.next/standalone/.next/static/chunks/app/api/admin/audit-export/route-abb4b18098f1d93e.js +1 -0
  327. package/.next/standalone/.next/static/chunks/app/api/admin/share-links/route-abb4b18098f1d93e.js +1 -0
  328. package/.next/standalone/.next/static/chunks/app/api/agent-memory/route-abb4b18098f1d93e.js +1 -0
  329. package/.next/standalone/.next/static/chunks/app/api/agent-runs/[id]/cancel/route-abb4b18098f1d93e.js +1 -0
  330. package/.next/standalone/.next/static/chunks/app/api/agent-runs/[id]/events/route-abb4b18098f1d93e.js +1 -0
  331. package/.next/standalone/.next/static/chunks/app/api/agent-runs/[id]/log/route-abb4b18098f1d93e.js +1 -0
  332. package/.next/standalone/.next/static/chunks/app/api/agent-runs/[id]/route-abb4b18098f1d93e.js +1 -0
  333. package/.next/standalone/.next/static/chunks/app/api/agent-runs/route-abb4b18098f1d93e.js +1 -0
  334. package/.next/standalone/.next/static/chunks/app/api/agents/[id]/chain/route-abb4b18098f1d93e.js +1 -0
  335. package/.next/standalone/.next/static/chunks/app/api/agents/[id]/memory/route-abb4b18098f1d93e.js +1 -0
  336. package/.next/standalone/.next/static/chunks/app/api/agents/[id]/reports/route-abb4b18098f1d93e.js +1 -0
  337. package/.next/standalone/.next/static/chunks/app/api/agents/[id]/run/route-abb4b18098f1d93e.js +1 -0
  338. package/.next/standalone/.next/static/chunks/app/api/agents/[id]/skills/route-abb4b18098f1d93e.js +1 -0
  339. package/.next/standalone/.next/static/chunks/app/api/agents/create/route-abb4b18098f1d93e.js +1 -0
  340. package/.next/standalone/.next/static/chunks/app/api/agents/ops/route-abb4b18098f1d93e.js +1 -0
  341. package/.next/standalone/.next/static/chunks/app/api/approvals/[id]/route-abb4b18098f1d93e.js +1 -0
  342. package/.next/standalone/.next/static/chunks/app/api/approvals/route-abb4b18098f1d93e.js +1 -0
  343. package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/acl/route-abb4b18098f1d93e.js +1 -0
  344. package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/protect/route-abb4b18098f1d93e.js +1 -0
  345. package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/raw/route-abb4b18098f1d93e.js +1 -0
  346. package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/route-abb4b18098f1d93e.js +1 -0
  347. package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/share-link/[linkId]/route-abb4b18098f1d93e.js +1 -0
  348. package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/share-link/route-abb4b18098f1d93e.js +1 -0
  349. package/.next/standalone/.next/static/chunks/app/api/artifacts/upload/route-abb4b18098f1d93e.js +1 -0
  350. package/.next/standalone/.next/static/chunks/app/api/audit/list/route-abb4b18098f1d93e.js +1 -0
  351. package/.next/standalone/.next/static/chunks/app/api/audit/search/route-abb4b18098f1d93e.js +1 -0
  352. package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-abb4b18098f1d93e.js +1 -0
  353. package/.next/standalone/.next/static/chunks/app/api/auth/config/route-abb4b18098f1d93e.js +1 -0
  354. package/.next/standalone/.next/static/chunks/app/api/auth/join-bootstrap/route-abb4b18098f1d93e.js +1 -0
  355. package/.next/standalone/.next/static/chunks/app/api/auth/session/route-abb4b18098f1d93e.js +1 -0
  356. package/.next/standalone/.next/static/chunks/app/api/brand/route-abb4b18098f1d93e.js +1 -0
  357. package/.next/standalone/.next/static/chunks/app/api/chat/sessions/[id]/route-abb4b18098f1d93e.js +1 -0
  358. package/.next/standalone/.next/static/chunks/app/api/chat/sessions/route-abb4b18098f1d93e.js +1 -0
  359. package/.next/standalone/.next/static/chunks/app/api/config/env/route-abb4b18098f1d93e.js +1 -0
  360. package/.next/standalone/.next/static/chunks/app/api/config/route-abb4b18098f1d93e.js +1 -0
  361. package/.next/standalone/.next/static/chunks/app/api/connections/[service]/route-abb4b18098f1d93e.js +1 -0
  362. package/.next/standalone/.next/static/chunks/app/api/connections/[service]/verify/route-abb4b18098f1d93e.js +1 -0
  363. package/.next/standalone/.next/static/chunks/app/api/connections/route-abb4b18098f1d93e.js +1 -0
  364. package/.next/standalone/.next/static/chunks/app/api/cron/tick/route-abb4b18098f1d93e.js +1 -0
  365. package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/[id]/move/route-abb4b18098f1d93e.js +1 -0
  366. package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/[id]/route-abb4b18098f1d93e.js +1 -0
  367. package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/[id]/share-link/[linkId]/route-abb4b18098f1d93e.js +1 -0
  368. package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/[id]/share-link/route-abb4b18098f1d93e.js +1 -0
  369. package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/import/route-abb4b18098f1d93e.js +1 -0
  370. package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/route-abb4b18098f1d93e.js +1 -0
  371. package/.next/standalone/.next/static/chunks/app/api/disk/files/[id]/blob/route-abb4b18098f1d93e.js +1 -0
  372. package/.next/standalone/.next/static/chunks/app/api/disk/files/[id]/route-abb4b18098f1d93e.js +1 -0
  373. package/.next/standalone/.next/static/chunks/app/api/disk/files/[id]/transcribe/route-abb4b18098f1d93e.js +1 -0
  374. package/.next/standalone/.next/static/chunks/app/api/disk/files/route-abb4b18098f1d93e.js +1 -0
  375. package/.next/standalone/.next/static/chunks/app/api/disk/folders/route-abb4b18098f1d93e.js +1 -0
  376. package/.next/standalone/.next/static/chunks/app/api/events/since/[cursor]/route-abb4b18098f1d93e.js +1 -0
  377. package/.next/standalone/.next/static/chunks/app/api/events/stream/route-abb4b18098f1d93e.js +1 -0
  378. package/.next/standalone/.next/static/chunks/app/api/fs/create-folder/route-abb4b18098f1d93e.js +1 -0
  379. package/.next/standalone/.next/static/chunks/app/api/fs/pick-folder/route-abb4b18098f1d93e.js +1 -0
  380. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/blueprint/route-abb4b18098f1d93e.js +1 -0
  381. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/diagnostic/route-abb4b18098f1d93e.js +1 -0
  382. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/governance/route-abb4b18098f1d93e.js +1 -0
  383. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/interview/route-abb4b18098f1d93e.js +1 -0
  384. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/pilot/route-abb4b18098f1d93e.js +1 -0
  385. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/quarterly/route-abb4b18098f1d93e.js +1 -0
  386. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/route-abb4b18098f1d93e.js +1 -0
  387. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/setup-package/route-abb4b18098f1d93e.js +1 -0
  388. package/.next/standalone/.next/static/chunks/app/api/hail/engagements/route-abb4b18098f1d93e.js +1 -0
  389. package/.next/standalone/.next/static/chunks/app/api/hail/interviews/[id]/responses/route-abb4b18098f1d93e.js +1 -0
  390. package/.next/standalone/.next/static/chunks/app/api/hail/interviews/[id]/route-abb4b18098f1d93e.js +1 -0
  391. package/.next/standalone/.next/static/chunks/app/api/hail/setup-packages/[id]/apply/route-abb4b18098f1d93e.js +1 -0
  392. package/.next/standalone/.next/static/chunks/app/api/hail/setup-packages/validate/route-abb4b18098f1d93e.js +1 -0
  393. package/.next/standalone/.next/static/chunks/app/api/heartbeat/tick/route-abb4b18098f1d93e.js +1 -0
  394. package/.next/standalone/.next/static/chunks/app/api/heartbeat/worker/route-abb4b18098f1d93e.js +1 -0
  395. package/.next/standalone/.next/static/chunks/app/api/help/route-abb4b18098f1d93e.js +1 -0
  396. package/.next/standalone/.next/static/chunks/app/api/hermes/jobs/[id]/events/route-abb4b18098f1d93e.js +1 -0
  397. package/.next/standalone/.next/static/chunks/app/api/hermes/jobs/[id]/route-abb4b18098f1d93e.js +1 -0
  398. package/.next/standalone/.next/static/chunks/app/api/hermes/jobs/route-abb4b18098f1d93e.js +1 -0
  399. package/.next/standalone/.next/static/chunks/app/api/integrations/google/callback/route-abb4b18098f1d93e.js +1 -0
  400. package/.next/standalone/.next/static/chunks/app/api/integrations/google/oauth/route-abb4b18098f1d93e.js +1 -0
  401. package/.next/standalone/.next/static/chunks/app/api/marketplace/[id]/route-abb4b18098f1d93e.js +1 -0
  402. package/.next/standalone/.next/static/chunks/app/api/marketplace/open-design/route-abb4b18098f1d93e.js +1 -0
  403. package/.next/standalone/.next/static/chunks/app/api/marketplace/route-abb4b18098f1d93e.js +1 -0
  404. package/.next/standalone/.next/static/chunks/app/api/mines/import-roots/route-abb4b18098f1d93e.js +1 -0
  405. package/.next/standalone/.next/static/chunks/app/api/mines/portfolio/route-abb4b18098f1d93e.js +1 -0
  406. package/.next/standalone/.next/static/chunks/app/api/mines/projects/[id]/chunks/route-abb4b18098f1d93e.js +1 -0
  407. package/.next/standalone/.next/static/chunks/app/api/mines/projects/[id]/diligence/route-abb4b18098f1d93e.js +1 -0
  408. package/.next/standalone/.next/static/chunks/app/api/mines/projects/[id]/import/route-abb4b18098f1d93e.js +1 -0
  409. package/.next/standalone/.next/static/chunks/app/api/mines/projects/[id]/publish/route-abb4b18098f1d93e.js +1 -0
  410. package/.next/standalone/.next/static/chunks/app/api/mines/projects/route-abb4b18098f1d93e.js +1 -0
  411. package/.next/standalone/.next/static/chunks/app/api/missions/route-abb4b18098f1d93e.js +1 -0
  412. package/.next/standalone/.next/static/chunks/app/api/models/route-abb4b18098f1d93e.js +1 -0
  413. package/.next/standalone/.next/static/chunks/app/api/onboarding/blueprint/route-abb4b18098f1d93e.js +1 -0
  414. package/.next/standalone/.next/static/chunks/app/api/onboarding/launch/route-abb4b18098f1d93e.js +1 -0
  415. package/.next/standalone/.next/static/chunks/app/api/orchestrator/command/route-abb4b18098f1d93e.js +1 -0
  416. package/.next/standalone/.next/static/chunks/app/api/orchestrator/stream/route-abb4b18098f1d93e.js +1 -0
  417. package/.next/standalone/.next/static/chunks/app/api/org/route-abb4b18098f1d93e.js +1 -0
  418. package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/invites/[inviteId]/route-abb4b18098f1d93e.js +1 -0
  419. package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/invites/route-abb4b18098f1d93e.js +1 -0
  420. package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/members/[userId]/role/route-abb4b18098f1d93e.js +1 -0
  421. package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/members/[userId]/route-abb4b18098f1d93e.js +1 -0
  422. package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/members/route-abb4b18098f1d93e.js +1 -0
  423. package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/route-abb4b18098f1d93e.js +1 -0
  424. package/.next/standalone/.next/static/chunks/app/api/orgs/invites/pending/route-abb4b18098f1d93e.js +1 -0
  425. package/.next/standalone/.next/static/chunks/app/api/orgs/join/route-abb4b18098f1d93e.js +1 -0
  426. package/.next/standalone/.next/static/chunks/app/api/orgs/route-abb4b18098f1d93e.js +1 -0
  427. package/.next/standalone/.next/static/chunks/app/api/printing-press/clis/route-abb4b18098f1d93e.js +1 -0
  428. package/.next/standalone/.next/static/chunks/app/api/printing-press/install/route-abb4b18098f1d93e.js +1 -0
  429. package/.next/standalone/.next/static/chunks/app/api/printing-press/security-mode/route-abb4b18098f1d93e.js +1 -0
  430. package/.next/standalone/.next/static/chunks/app/api/privacy/config/route-abb4b18098f1d93e.js +1 -0
  431. package/.next/standalone/.next/static/chunks/app/api/privacy/verify/route-abb4b18098f1d93e.js +1 -0
  432. package/.next/standalone/.next/static/chunks/app/api/processes/[id]/route-abb4b18098f1d93e.js +1 -0
  433. package/.next/standalone/.next/static/chunks/app/api/processes/[id]/share-link/route-abb4b18098f1d93e.js +1 -0
  434. package/.next/standalone/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/override/route-abb4b18098f1d93e.js +1 -0
  435. package/.next/standalone/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/retry/route-abb4b18098f1d93e.js +1 -0
  436. package/.next/standalone/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/submit/route-abb4b18098f1d93e.js +1 -0
  437. package/.next/standalone/.next/static/chunks/app/api/processes/definitions/[slug]/route-abb4b18098f1d93e.js +1 -0
  438. package/.next/standalone/.next/static/chunks/app/api/processes/definitions/[slug]/settings/route-abb4b18098f1d93e.js +1 -0
  439. package/.next/standalone/.next/static/chunks/app/api/processes/definitions/route-abb4b18098f1d93e.js +1 -0
  440. package/.next/standalone/.next/static/chunks/app/api/processes/definitions/validate/route-abb4b18098f1d93e.js +1 -0
  441. package/.next/standalone/.next/static/chunks/app/api/processes/route-abb4b18098f1d93e.js +1 -0
  442. package/.next/standalone/.next/static/chunks/app/api/processes/start-and-route/route-abb4b18098f1d93e.js +1 -0
  443. package/.next/standalone/.next/static/chunks/app/api/projects/[slug]/library/route-abb4b18098f1d93e.js +1 -0
  444. package/.next/standalone/.next/static/chunks/app/api/projects/[slug]/route-abb4b18098f1d93e.js +1 -0
  445. package/.next/standalone/.next/static/chunks/app/api/projects/route-abb4b18098f1d93e.js +1 -0
  446. package/.next/standalone/.next/static/chunks/app/api/runs/approve-claude-run/route-abb4b18098f1d93e.js +1 -0
  447. package/.next/standalone/.next/static/chunks/app/api/runs/claude-code-dry-run/route-abb4b18098f1d93e.js +1 -0
  448. package/.next/standalone/.next/static/chunks/app/api/runs/competitor-report/route-abb4b18098f1d93e.js +1 -0
  449. package/.next/standalone/.next/static/chunks/app/api/runs/engine-ping/route-abb4b18098f1d93e.js +1 -0
  450. package/.next/standalone/.next/static/chunks/app/api/runs/marketing-plan/route-abb4b18098f1d93e.js +1 -0
  451. package/.next/standalone/.next/static/chunks/app/api/schedules/upsert/route-abb4b18098f1d93e.js +1 -0
  452. package/.next/standalone/.next/static/chunks/app/api/secrets/[name]/route-abb4b18098f1d93e.js +1 -0
  453. package/.next/standalone/.next/static/chunks/app/api/secrets/route-abb4b18098f1d93e.js +1 -0
  454. package/.next/standalone/.next/static/chunks/app/api/settings/trust-mode/route-abb4b18098f1d93e.js +1 -0
  455. package/.next/standalone/.next/static/chunks/app/api/share/[token]/otp/route-abb4b18098f1d93e.js +1 -0
  456. package/.next/standalone/.next/static/chunks/app/api/share/[token]/route-abb4b18098f1d93e.js +1 -0
  457. package/.next/standalone/.next/static/chunks/app/api/share/[token]/verify/route-abb4b18098f1d93e.js +1 -0
  458. package/.next/standalone/.next/static/chunks/app/api/share/space/[token]/otp/route-abb4b18098f1d93e.js +1 -0
  459. package/.next/standalone/.next/static/chunks/app/api/share/space/[token]/route-abb4b18098f1d93e.js +1 -0
  460. package/.next/standalone/.next/static/chunks/app/api/share/space/[token]/verify/route-abb4b18098f1d93e.js +1 -0
  461. package/.next/standalone/.next/static/chunks/app/api/shared/spaces/[id]/acl/route-abb4b18098f1d93e.js +1 -0
  462. package/.next/standalone/.next/static/chunks/app/api/shared/spaces/publish/route-abb4b18098f1d93e.js +1 -0
  463. package/.next/standalone/.next/static/chunks/app/api/shared/spaces/route-abb4b18098f1d93e.js +1 -0
  464. package/.next/standalone/.next/static/chunks/app/api/shared/spaces/status/route-abb4b18098f1d93e.js +1 -0
  465. package/.next/standalone/.next/static/chunks/app/api/shared/spaces/unpublish/route-abb4b18098f1d93e.js +1 -0
  466. package/.next/standalone/.next/static/chunks/app/api/state/route-abb4b18098f1d93e.js +1 -0
  467. package/.next/standalone/.next/static/chunks/app/api/system/update/route-abb4b18098f1d93e.js +1 -0
  468. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/active-run/route-abb4b18098f1d93e.js +1 -0
  469. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/attachments/route-abb4b18098f1d93e.js +1 -0
  470. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/checklist/[itemId]/route-abb4b18098f1d93e.js +1 -0
  471. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/checklist/route-abb4b18098f1d93e.js +1 -0
  472. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/checkout/route-abb4b18098f1d93e.js +1 -0
  473. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/children/route-abb4b18098f1d93e.js +1 -0
  474. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/comments/route-abb4b18098f1d93e.js +1 -0
  475. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/events/route-abb4b18098f1d93e.js +1 -0
  476. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/live-runs/route-abb4b18098f1d93e.js +1 -0
  477. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/release/route-abb4b18098f1d93e.js +1 -0
  478. package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/route-abb4b18098f1d93e.js +1 -0
  479. package/.next/standalone/.next/static/chunks/app/api/tasks/route-abb4b18098f1d93e.js +1 -0
  480. package/.next/standalone/.next/static/chunks/app/api/tool-allowlists/[id]/route-abb4b18098f1d93e.js +1 -0
  481. package/.next/standalone/.next/static/chunks/app/api/tool-allowlists/route-abb4b18098f1d93e.js +1 -0
  482. package/.next/standalone/.next/static/chunks/app/api/tool-egress/route-abb4b18098f1d93e.js +1 -0
  483. package/.next/standalone/.next/static/chunks/app/api/tools/[name]/approve/route-abb4b18098f1d93e.js +1 -0
  484. package/.next/standalone/.next/static/chunks/app/api/tools/[name]/route-abb4b18098f1d93e.js +1 -0
  485. package/.next/standalone/.next/static/chunks/app/api/tools/route-abb4b18098f1d93e.js +1 -0
  486. package/.next/standalone/.next/static/chunks/app/api/transcripts/route-abb4b18098f1d93e.js +1 -0
  487. package/.next/standalone/.next/static/chunks/app/api/voice/providers/route-abb4b18098f1d93e.js +1 -0
  488. package/.next/standalone/.next/static/chunks/app/api/voice/realtime/context/route-abb4b18098f1d93e.js +1 -0
  489. package/.next/standalone/.next/static/chunks/app/api/voice/realtime/session/route-abb4b18098f1d93e.js +1 -0
  490. package/.next/standalone/.next/static/chunks/app/api/voice/realtime/tool-result/route-abb4b18098f1d93e.js +1 -0
  491. package/.next/standalone/.next/static/chunks/app/api/voice/realtime/tools/route-abb4b18098f1d93e.js +1 -0
  492. package/.next/standalone/.next/static/chunks/app/api/voice/tts/route-abb4b18098f1d93e.js +1 -0
  493. package/.next/standalone/.next/static/chunks/app/api/whatsapp/allowlist/route-abb4b18098f1d93e.js +1 -0
  494. package/.next/standalone/.next/static/chunks/app/api/whatsapp/messages/route-abb4b18098f1d93e.js +1 -0
  495. package/.next/standalone/.next/static/chunks/app/api/whatsapp/qr/route-abb4b18098f1d93e.js +1 -0
  496. package/.next/standalone/.next/static/chunks/app/api/whatsapp/send/route-abb4b18098f1d93e.js +1 -0
  497. package/.next/standalone/.next/static/chunks/app/api/whatsapp/status/route-abb4b18098f1d93e.js +1 -0
  498. package/.next/standalone/.next/static/chunks/app/approvals/loading-abb4b18098f1d93e.js +1 -0
  499. package/.next/standalone/.next/static/chunks/app/approvals/page-c12b94ea10818d65.js +1 -0
  500. package/.next/standalone/.next/static/chunks/app/architecture/loading-abb4b18098f1d93e.js +1 -0
  501. package/.next/standalone/.next/static/chunks/app/architecture/page-2dfc72f2a2d88f9d.js +1 -0
  502. package/.next/standalone/.next/static/chunks/app/audit/live/page-1e0efbfb119569b0.js +1 -0
  503. package/.next/standalone/.next/static/chunks/app/audit/loading-abb4b18098f1d93e.js +1 -0
  504. package/.next/standalone/.next/static/chunks/app/audit/page-c12b94ea10818d65.js +1 -0
  505. package/.next/standalone/.next/static/chunks/app/brand/loading-abb4b18098f1d93e.js +1 -0
  506. package/.next/standalone/.next/static/chunks/app/brand/page-8bb3754e7c32b642.js +1 -0
  507. package/.next/standalone/.next/static/chunks/app/disk/loading-abb4b18098f1d93e.js +1 -0
  508. package/.next/standalone/.next/static/chunks/app/disk/page-830a69b2f0aa3d19.js +1 -0
  509. package/.next/standalone/.next/static/chunks/app/federated-ai/loading-abb4b18098f1d93e.js +1 -0
  510. package/.next/standalone/.next/static/chunks/app/federated-ai/page-d2bee8a9d6cb2158.js +1 -0
  511. package/.next/standalone/.next/static/chunks/app/hail/[id]/governance/page-e2ba96c9d0d9b834.js +1 -0
  512. package/.next/standalone/.next/static/chunks/app/hail/[id]/interview/page-d1ca3290361630df.js +1 -0
  513. package/.next/standalone/.next/static/chunks/app/hail/[id]/page-51b4e30f9ffd4b73.js +1 -0
  514. package/.next/standalone/.next/static/chunks/app/hail/[id]/setup/page-51b4e30f9ffd4b73.js +1 -0
  515. package/.next/standalone/.next/static/chunks/app/hail/page-51b4e30f9ffd4b73.js +1 -0
  516. package/.next/standalone/.next/static/chunks/app/help/[slug]/page-c3195d2b23b0ac1b.js +1 -0
  517. package/.next/standalone/.next/static/chunks/app/help/loading-abb4b18098f1d93e.js +1 -0
  518. package/.next/standalone/.next/static/chunks/app/help/page-bc1c746d72f7e90c.js +1 -0
  519. package/.next/standalone/.next/static/chunks/app/join/page-ce560c39fdc1cb5a.js +1 -0
  520. package/.next/standalone/.next/static/chunks/app/layout-6728a045f5352a96.js +1 -0
  521. package/.next/standalone/.next/static/chunks/app/loading-abb4b18098f1d93e.js +1 -0
  522. package/.next/standalone/.next/static/chunks/app/login/page-df655887dbc38067.js +1 -0
  523. package/.next/standalone/.next/static/chunks/app/marketplace/loading-abb4b18098f1d93e.js +1 -0
  524. package/.next/standalone/.next/static/chunks/app/marketplace/page-edb895159388f32e.js +1 -0
  525. package/.next/standalone/.next/static/chunks/app/mines/[projectId]/page-260fec1b92312925.js +1 -0
  526. package/.next/standalone/.next/static/chunks/app/mines/[projectId]/results/page-9fe66fe1590c64f9.js +1 -0
  527. package/.next/standalone/.next/static/chunks/app/mines/page-fb7d1c7bafe73571.js +1 -0
  528. package/.next/standalone/.next/static/chunks/app/missions/loading-abb4b18098f1d93e.js +1 -0
  529. package/.next/standalone/.next/static/chunks/app/missions/page-c12b94ea10818d65.js +1 -0
  530. package/.next/standalone/.next/static/chunks/app/onboarding/loading-abb4b18098f1d93e.js +1 -0
  531. package/.next/standalone/.next/static/chunks/app/onboarding/org/page-c26d5063bbdcb192.js +1 -0
  532. package/.next/standalone/.next/static/chunks/app/onboarding/page-b4c57b0f70cae794.js +1 -0
  533. package/.next/standalone/.next/static/chunks/app/org/loading-abb4b18098f1d93e.js +1 -0
  534. package/.next/standalone/.next/static/chunks/app/org/page-c12b94ea10818d65.js +1 -0
  535. package/.next/standalone/.next/static/chunks/app/page-12446920b9aef7b5.js +1 -0
  536. package/.next/standalone/.next/static/chunks/app/projects/[slug]/loading-abb4b18098f1d93e.js +1 -0
  537. package/.next/standalone/.next/static/chunks/app/projects/[slug]/log/page-a29845d3def72e1d.js +1 -0
  538. package/.next/standalone/.next/static/chunks/app/projects/[slug]/page-bc5359a5168e8ce3.js +1 -0
  539. package/.next/standalone/.next/static/chunks/app/projects/loading-abb4b18098f1d93e.js +1 -0
  540. package/.next/standalone/.next/static/chunks/app/projects/new/page-c12b94ea10818d65.js +1 -0
  541. package/.next/standalone/.next/static/chunks/app/projects/page-8f09f3fcf7fd0e3a.js +1 -0
  542. package/.next/standalone/.next/static/chunks/app/reports/[file]/route-abb4b18098f1d93e.js +1 -0
  543. package/.next/standalone/.next/static/chunks/app/reports/loading-abb4b18098f1d93e.js +1 -0
  544. package/.next/standalone/.next/static/chunks/app/reports/page-c12b94ea10818d65.js +1 -0
  545. package/.next/standalone/.next/static/chunks/app/runtime/loading-abb4b18098f1d93e.js +1 -0
  546. package/.next/standalone/.next/static/chunks/app/runtime/page-c12b94ea10818d65.js +1 -0
  547. package/.next/standalone/.next/static/chunks/app/schedules/loading-abb4b18098f1d93e.js +1 -0
  548. package/.next/standalone/.next/static/chunks/app/schedules/page-2a68ab0e10595bcd.js +1 -0
  549. package/.next/standalone/.next/static/chunks/app/settings/account/page-3423feef4e4bfd8d.js +1 -0
  550. package/.next/standalone/.next/static/chunks/app/settings/advanced/page-8269e27543b8bdd5.js +1 -0
  551. package/.next/standalone/.next/static/chunks/app/settings/appearance/page-c12b94ea10818d65.js +1 -0
  552. package/.next/standalone/.next/static/chunks/app/settings/brand/page-f54af497deea88ab.js +1 -0
  553. package/.next/standalone/.next/static/chunks/app/settings/connectors/page-8269e27543b8bdd5.js +1 -0
  554. package/.next/standalone/.next/static/chunks/app/settings/engines/page-439cc5bb0193bfb7.js +1 -0
  555. package/.next/standalone/.next/static/chunks/app/settings/layout-78a57111f867ba6c.js +1 -0
  556. package/.next/standalone/.next/static/chunks/app/settings/loading-abb4b18098f1d93e.js +1 -0
  557. package/.next/standalone/.next/static/chunks/app/settings/onboarding/page-2c557f68cc8971d8.js +1 -0
  558. package/.next/standalone/.next/static/chunks/app/settings/organization/page-c12b94ea10818d65.js +1 -0
  559. package/.next/standalone/.next/static/chunks/app/settings/page-abb4b18098f1d93e.js +1 -0
  560. package/.next/standalone/.next/static/chunks/app/settings/runtime/page-c12b94ea10818d65.js +1 -0
  561. package/.next/standalone/.next/static/chunks/app/settings/tools/page-8269e27543b8bdd5.js +1 -0
  562. package/.next/standalone/.next/static/chunks/app/share/[token]/page-9afe594e2b42ee98.js +1 -0
  563. package/.next/standalone/.next/static/chunks/app/share/space/[token]/page-d941c8b538680771.js +1 -0
  564. package/.next/standalone/.next/static/chunks/app/tasks/[id]/loading-abb4b18098f1d93e.js +1 -0
  565. package/.next/standalone/.next/static/chunks/app/tasks/[id]/page-10b8f571ac331814.js +1 -0
  566. package/.next/standalone/.next/static/chunks/app/tasks/loading-abb4b18098f1d93e.js +1 -0
  567. package/.next/standalone/.next/static/chunks/app/tasks/page-e53905ca0f216834.js +1 -0
  568. package/.next/standalone/.next/static/chunks/app/team/[agentId]/page-c12b94ea10818d65.js +1 -0
  569. package/.next/standalone/.next/static/chunks/app/team/page-51b4e30f9ffd4b73.js +1 -0
  570. package/.next/standalone/.next/static/chunks/app/tools/loading-abb4b18098f1d93e.js +1 -0
  571. package/.next/standalone/.next/static/chunks/app/tools/page-abb4b18098f1d93e.js +1 -0
  572. package/.next/standalone/.next/static/chunks/app/whatsapp/loading-abb4b18098f1d93e.js +1 -0
  573. package/.next/standalone/.next/static/chunks/app/whatsapp/page-ab228cb0cbf3e16d.js +1 -0
  574. package/.next/standalone/.next/static/chunks/app/workflows/[caseId]/page-44cbcfc3ad541629.js +1 -0
  575. package/.next/standalone/.next/static/chunks/app/workflows/new/[caseId]/page-51b4e30f9ffd4b73.js +1 -0
  576. package/.next/standalone/.next/static/chunks/app/workflows/new/definition/page-57285f28a2156daa.js +1 -0
  577. package/.next/standalone/.next/static/chunks/app/workflows/new/page-e99f34660ca383e5.js +1 -0
  578. package/.next/standalone/.next/static/chunks/app/workflows/page-11778031fa890a8c.js +1 -0
  579. package/.next/standalone/.next/static/chunks/app/workflows/share/[caseId]/page-abb4b18098f1d93e.js +1 -0
  580. package/.next/standalone/.next/static/chunks/framework-4731550a751206fc.js +1 -0
  581. package/.next/standalone/.next/static/chunks/main-app-646d86f6b65133fa.js +1 -0
  582. package/.next/standalone/.next/static/chunks/main-f0e8527d594b1755.js +1 -0
  583. package/.next/standalone/.next/static/chunks/pages/_app-6c8c2371b16a04b8.js +1 -0
  584. package/.next/standalone/.next/static/chunks/pages/_error-94812ad32cad7365.js +1 -0
  585. package/.next/standalone/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  586. package/.next/standalone/.next/static/chunks/webpack-ce537f60727acb61.js +1 -0
  587. package/.next/standalone/.next/static/css/10f53a9c6accc597.css +1 -0
  588. package/.next/standalone/.next/static/css/67735f13057a6651.css +1 -0
  589. package/.next/standalone/.next/static/css/acf226d91614a52a.css +1 -0
  590. package/.next/standalone/.next/static/css/c3ec1669cae95a9a.css +1 -0
  591. package/.next/standalone/.next/static/media/98e207f02528a563-s.p.woff2 +0 -0
  592. package/.next/standalone/.next/static/media/99dcf268bda04fe5-s.woff2 +0 -0
  593. package/.next/standalone/.next/static/media/d29838c109ef09b4-s.woff2 +0 -0
  594. package/.next/standalone/.next/static/media/e40af3453d7c920a-s.woff2 +0 -0
  595. package/.next/standalone/.next/static/media/ef4d5661765d0e49-s.woff2 +0 -0
  596. package/.next/standalone/data/.artifacts-migrated-v1 +1 -1
  597. package/.next/standalone/data/.default-project-seeded +1 -1
  598. package/.next/standalone/data/madarx.sqlite +0 -0
  599. package/.next/standalone/data/madarx.sqlite-shm +0 -0
  600. package/.next/standalone/data/madarx.sqlite-wal +0 -0
  601. package/.next/standalone/package.json +2 -1
  602. package/.next/standalone/public/federated-ai-teams.html +10 -0
  603. package/.next/standalone/public/madarx-feasibility-use-cases.html +1 -0
  604. package/.next/standalone/public/madarx-mark.svg +9 -0
  605. package/.next/standalone/public/privacy.worker.js +117 -0
  606. package/.next/static/6oh6zIyYdQuxVczCDWeak/_buildManifest.js +1 -0
  607. package/.next/static/6oh6zIyYdQuxVczCDWeak/_ssgManifest.js +1 -0
  608. package/.next/static/chunks/app/projects/page-8f09f3fcf7fd0e3a.js +1 -0
  609. package/README.md +3 -1
  610. package/lib/seeds.js +32 -13
  611. package/package.json +2 -1
  612. package/scripts/postbuild-standalone.mjs +41 -0
  613. package/.next/standalone/.next/server/chunks/664.js +0 -1
  614. package/.next/static/chunks/app/projects/page-a1a581ac76f7a4bb.js +0 -1
  615. /package/.next/{static/0tzU0vkYYYJiZ7OPljvJo → standalone/.next/static/6oh6zIyYdQuxVczCDWeak}/_buildManifest.js +0 -0
  616. /package/.next/{static/0tzU0vkYYYJiZ7OPljvJo → standalone/.next/static/6oh6zIyYdQuxVczCDWeak}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- 2026-06-02T07:25:41.739Z
1
+ 2026-06-02T09:07:09.233Z
2
2
  {
3
3
  "moved": 0,
4
4
  "rewritten": 0,
@@ -1 +1 @@
1
- 2026-06-02T07:25:41.737Z
1
+ 2026-06-02T09:07:09.231Z
Binary file
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "madarx",
3
- "version": "2.9.2",
3
+ "version": "2.9.4",
4
4
  "type": "module",
5
5
  "description": "Madarx OS — Next.js product with SQLite-backed runtime, scheduled cron daemon, and approval-gated local runners.",
6
6
  "license": "MIT",
@@ -40,6 +40,7 @@
40
40
  "madarx": "node bin/madarx.mjs",
41
41
  "prepublishOnly": "npm run build",
42
42
  "build": "NODE_OPTIONS=--no-warnings next build",
43
+ "postbuild": "node --no-warnings scripts/postbuild-standalone.mjs",
43
44
  "start": "next start -p 8787 -H 127.0.0.1",
44
45
  "test": "node --no-warnings --test tests/*.test.js",
45
46
  "daemon": "node --no-warnings --env-file-if-exists=.env.local scripts/cron-daemon.mjs",
@@ -0,0 +1,10 @@
1
+ <!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>madarX OS · Federated AI Teams</title><style>:root{--o:#0F0F11;--p:#E8E8E5;--b:#DCDCD8;--g:#4A4A4D;--r:#C2452A}*{box-sizing:border-box}body{margin:0;background:var(--p);color:var(--o);font-family:'IBM Plex Mono','SF Mono',ui-monospace,Menlo,Consolas,monospace}.shell{padding:34px 40px 80px}.top{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;border-bottom:1px solid var(--o);padding-bottom:14px;margin-bottom:34px}.top em{font-style:normal;font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:var(--g)}.top b{font-size:13px;font-weight:500}.x,.red{color:var(--r)}.hero{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:34px;margin-bottom:28px}.hero h1{font-size:clamp(38px,5.3vw,74px);line-height:.98;letter-spacing:-.055em;margin:0 0 16px;font-weight:500}.hero p{color:var(--g);font-size:14px;line-height:1.6;max-width:80ch}.eyebrow{font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--r);margin:0 0 12px}.meta,.panel{border:1px solid var(--o);background:white;padding:20px}.meta{background:var(--b);font-size:11px}.meta b,.pt small{text-transform:uppercase;letter-spacing:.18em;color:var(--g);font-size:10px;font-weight:500}.meta dl{display:grid;grid-template-columns:auto 1fr;gap:5px 14px}.meta dd{margin:0}.modes,.grid,.section,.sim,.metrics,.layers,.war{display:grid;gap:20px}.modes{grid-template-columns:repeat(3,1fr);gap:0;border:1px solid var(--o);background:var(--o);margin-bottom:24px}.modes button{background:var(--o);color:var(--b);border:0;border-right:1px solid #2a2a2d;text-align:left;padding:16px;font-family:inherit;cursor:pointer}.modes button.on{background:var(--p);color:var(--o)}.modes b{display:block;text-transform:uppercase;letter-spacing:.14em;font-size:12px;margin-bottom:8px}.modes span{font-size:11.5px;line-height:1.45;color:#999}.modes button.on span{color:var(--g)}.section{grid-template-columns:minmax(0,2fr) minmax(0,1fr);margin-bottom:28px}.single{grid-template-columns:1fr}.dark{background:var(--o);color:var(--p)}.dark p,.dark li{color:var(--p)!important}.pt{display:flex;justify-content:space-between;gap:14px;border-bottom:1px solid var(--b);padding-bottom:10px;margin-bottom:14px}.dark .pt{border-color:#2a2a2d}.pt b{font-size:14px;font-weight:500}.panel p{font-size:13px;line-height:1.6;color:var(--o)}.claim{font-size:18px!important;letter-spacing:-.025em}.chips{display:flex;flex-wrap:wrap;gap:8px}.chips span,.agents span,.records span{border:1px solid var(--o);background:var(--b);padding:6px 9px;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase}.grid{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px}.dept{border:1px solid var(--o);background:white;text-align:left;padding:13px;font-family:inherit;cursor:pointer;min-height:112px}.dept.on,.war button.on{background:var(--o);color:var(--p)}.dept b{display:block;margin-bottom:8px}.dept small{display:block;color:var(--g);line-height:1.35}.dept.on small{color:var(--b)}.dept em{display:block;margin-top:10px;color:var(--r);font-style:normal;font-size:10px;text-transform:uppercase;letter-spacing:.12em}.kv{display:grid;grid-template-columns:auto 1fr;gap:5px 14px;font-size:12px}.kv dt{color:var(--g);text-transform:uppercase;font-size:10px}.kv dd{margin:0}.agents{display:flex;flex-wrap:wrap;gap:7px;margin-top:14px}.sim{grid-template-columns:minmax(280px,420px) 1fr}.controls{display:grid;gap:10px}.controls label{font-size:10px;text-transform:uppercase;letter-spacing:.16em;color:var(--g)}select,input{display:block;width:100%;margin-top:5px;border:1px solid var(--o);background:white;color:var(--o);font-family:inherit;padding:9px}.decision{background:var(--b);border:1px solid var(--o);padding:18px}.decision h3{font-size:26px;letter-spacing:-.04em;margin:13px 0 8px;font-weight:500}.badge{display:inline-block;border:1px solid var(--o);padding:5px 8px;font-size:10px;letter-spacing:.16em;text-transform:uppercase}.approval,.denied{background:var(--r);color:white;border-color:var(--r)}.denied{background:var(--o);border-color:var(--o)}.auto{background:white}.flow{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));border:1px solid var(--o)}.flow div{padding:16px;border-right:1px solid var(--b);border-bottom:1px solid var(--b)}.flow b{color:var(--r);font-size:11px;letter-spacing:.18em}.flow span{display:block;margin:6px 0;font-weight:500}.flow p{font-size:11.5px;color:var(--g);line-height:1.5}.layers{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:0;border:1px solid var(--o)}.layers div{padding:18px;border-right:1px solid var(--b);border-bottom:1px solid var(--b)}.layers em{font-style:normal;color:var(--r);font-size:11px;letter-spacing:.2em}.layers b{display:block;margin:8px 0}.layers span{font-size:12px;color:var(--g);line-height:1.5}.metrics{grid-template-columns:repeat(4,1fr);gap:0;border:1px solid var(--o)}.metrics div{padding:16px;border-right:1px solid var(--b)}.metrics b{display:block;font-size:34px;color:var(--r);letter-spacing:-.05em}.metrics span{font-size:10px;text-transform:uppercase;color:var(--g);letter-spacing:.14em}.matrix{width:100%;border-collapse:collapse;font-size:12px}.matrix th,.matrix td{border:1px solid var(--o);padding:10px 12px;text-align:left;vertical-align:top;line-height:1.5}.matrix thead th{background:var(--o);color:var(--p);font-size:10px;letter-spacing:.12em;text-transform:uppercase}.matrix tbody tr:nth-child(even){background:var(--b)}.matrix tbody th{color:var(--g);text-transform:uppercase;font-size:10.5px}.war{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:0;border:1px solid var(--o)}.war button{background:white;border:0;border-right:1px solid var(--b);border-bottom:1px solid var(--b);padding:14px;text-align:left;font-family:inherit;cursor:pointer}.war span{display:block;margin-top:7px;color:var(--r);font-size:10px;text-transform:uppercase;letter-spacing:.12em}.detail{border:1px solid var(--o);border-top:0;background:var(--b);padding:18px}.foot{margin-top:42px;padding-top:18px;border-top:1px solid var(--o);font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--g);display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}@media(max-width:900px){.shell{padding:22px 18px 60px}.hero,.section,.sim,.modes{grid-template-columns:1fr}.metrics{grid-template-columns:repeat(2,1fr)}} </style></head><body><main class="shell"><div class="top"><div><em>document · 004 · federation</em><br><b>madar<span class="x">X</span> OS · company agent network</b></div><b>standalone interactive html</b></div><header class="hero"><div><p class="eyebrow">AI generates. Humans approve. Departments collaborate.</p><h1>From one AI assistant to a governed company-wide AI workforce.</h1><p>madarX OS can become the operating layer where every employee and every department has its own team of agents — while cross-department work moves through policies, approvals, queues, memory boundaries, and audit trails.</p></div><aside class="meta"><b>strategic advantage</b><dl><dt>vs Hermes</dt><dd>institutional coordination, not only personal execution</dd><dt>vs Paperclip</dt><dd>governed runtime, not only control-plane records</dd><dt>core moat</dt><dd>federated agent teams with approval-first collaboration</dd><dt>scale path</dt><dd>local-first → team deployment → enterprise network</dd></dl></aside></header><nav class="modes" id="modes"></nav><section class="section"><div class="panel"><div class="pt"><b>Current operating model</b><small id="modeName"></small></div><p class="claim" id="modeClaim"></p><div class="chips" id="modePieces"></div></div><div class="panel dark"><div class="pt"><b>Product claim</b><small>positioning</small></div><p>madarX OS turns individual AI agents into an approval-first, audit-friendly operating system for entire companies.</p></div></section><section class="section"><div class="panel"><div class="pt"><b>Department agent network</b><small>click a department</small></div><div class="grid" id="deptGrid"></div></div><div class="panel" id="deptPanel"></div></section><section class="section single"><div class="panel"><div class="pt"><b>Cross-department communication simulator</b><small>governed request routing</small></div><div class="sim"><div class="controls" id="controls"></div><div class="decision" id="decision"></div></div></div></section><section class="section"><div class="panel"><div class="pt"><b>Request flow</b><small>brokered, not free-for-all</small></div><div class="flow" id="flow"></div></div><div class="panel dark"><div class="pt"><b>Why this is safer</b><small>boundary design</small></div><p>Agents do not directly scrape another department’s memory or tools. They request work through a broker. The owning department decides what can be returned.</p><ul><li>Raw finance data can stay inside Finance.</li><li>Marketing receives approved summaries, not unrestricted tables.</li><li>Legal opinions require Legal manager approval.</li><li>External sends and destructive tool calls stay irreversible_external.</li></ul></div></section><section class="section single"><div class="panel"><div class="pt"><b>Federation architecture</b><small>six-layer model</small></div><div class="layers" id="layers"></div></div></section><section class="section"><div class="panel"><div class="pt"><b>Performance simulator</b><small>queues · workers · audit volume</small></div><label>Task load: <span id="loadVal"></span> / hour<input id="load" type="range" min="10" max="10000" step="10" value="1000"></label><br><label>Workers: <span id="workerVal"></span><input id="workers" type="range" min="1" max="80" value="16"></label><div class="metrics" id="metrics"></div></div><div class="panel"><div class="pt"><b>Scalability rules</b><small>fast and inspectable</small></div><ul><li>Every request carries tenant_id, department_id, actor_id, task_id, correlation_id.</li><li>Hot permissions, tool manifests and rate counters can be cached.</li><li>Long work moves to department queues with leases, retries and dead-letter handling.</li><li>Vector memory retrieval is scoped by tenant, department, role, task and policy.</li><li>Audit logs are append-only and can be partitioned by company/department/time.</li></ul></div></section><section class="section single"><div class="panel"><div class="pt"><b>Advantage matrix</b><small>Hermes · Paperclip · madarX OS</small></div><div style="overflow-x:auto"><table class="matrix" id="matrix"></table></div></div></section><section class="section single"><div class="panel"><div class="pt"><b>Department war-room demo</b><small>campaign across six departments</small></div><div class="war" id="war"></div><div class="detail" id="detail"></div></div></section><footer class="foot"><span>madarX OS · federated AI teams</span><span>company-wide agents · governed collaboration · audit-first</span></footer></main><script>
2
+ const modes=[['solo','Solo assistant','One operator, one agent loop, direct tool access with approval prompts.',['personal session','private memory','local tools','cron jobs']],['department','Department team','Every department owns a manager agent, specialist agents, tools, memory, queue, budget, and approval policy.',['department namespace','manager agent','specialists','shared queue']],['federated','Federated organization','Departments collaborate through a broker, policy engine, approvals, events, and audit trails — not uncontrolled agent-to-agent calls.',['request broker','policy engine','event bus','approval ledger']]];
3
+ const depts=[['marketing','Marketing','Growth Manager Agent',['Campaign Strategist','Competitor Scout','Content Calendar','Paid Ads Optimizer'],['web_search','brand_assets','email_send'],'campaigns · audience · channels',14,'Budget + external sends'],['finance','Finance','Finance Controller Agent',['Budget Analyst','Revenue Reporter','Forecast Agent','Approval Controller'],['supabase_read','sheet_export','finance_api'],'budgets · revenue · forecasts',8,'Restricted financial data'],['legal','Legal','Legal Risk Agent',['Contract Reviewer','Compliance Agent','Policy Drafter'],['document_review','redline','email_send'],'contracts · policies · obligations',6,'All legal opinions'],['sales','Sales','Pipeline Manager Agent',['Lead Researcher','CRM Updater','Proposal Agent'],['crm_read','gh_issue_comment','email_send'],'accounts · deals · contacts',19,'Customer-facing writes'],['ops','Operations','Ops Coordinator Agent',['Vendor Agent','Logistics Agent','Process Monitor'],['terminal_run','web_fetch','calendar'],'vendors · SOPs · incidents',11,'Vendor commitments'],['engineering','Engineering','Engineering Lead Agent',['Bug Triage','Claude Code Runner','Codex Reviewer','Release Watcher'],['terminal_run','github','vercel'],'repos · incidents · deploys',22,'Deploys + destructive commands']];
4
+ const reqs=[['read','Read summary','low'],['confidential','Confidential data','high'],['write','Write/update','medium'],['external','External send','irreversible_external'],['exec','Tool execution','high']];const roles=[['employee','Employee'],['dept_head','Department head'],['ceo','CEO'],['contractor','Contractor']];const sens=[['public','Public / approved',0],['internal','Internal',1],['confidential','Confidential',2],['restricted','Restricted',3]];
5
+ const flow=[['01','Request created','Source agent submits intent, business reason, target department, requested fields, sensitivity and urgency.'],['02','Broker normalizes','Request Broker attaches tenant_id, department_id, actor_id, task_id, correlation_id and target queue.'],['03','RBAC + policy','Policy checks role, data owner, scope, risk tier, rate limits and active approvals.'],['04','Approval decision','Low-risk can auto-approve; sensitive finance/legal/customer/tool actions pause for manager approval.'],['05','Target agent executes','Target department manager assigns a specialist with scoped memory and tool permissions.'],['06','Result returned','Only approved fields or artifact links are returned. Raw restricted data can stay with owner.'],['07','Audit + replay','activity_log, audit_logs, approval_requests, tool_egress and task events preserve the chain.']];
6
+ const layers=[['People + departments','employees · department heads · executives · contractors'],['Department tenancy','tenant_id · department_id · workspace_id · memory namespace · budget profile'],['Governance plane','RBAC · policies · approval rules · rate limits · audit rules'],['Coordination plane','request broker · task router · event bus · queues · heartbeat worker'],['Intelligence plane','manager agents · specialist agents · Hermes · Claude Code · Codex · Ollama'],['Data + tools','SQLite/Postgres-ready store · vector memory · files · GitHub · Supabase · email · terminal']];
7
+ const rows=[['Primary shape','Personal runtime for one operator/session.','Company/work control plane and artifacts.','Federated AI workforce: employees, departments, agents, approvals, tools, queues, audit.'],['Department ownership','Not modeled as departments by default.','Can model org work, but runtime is external.','Each department owns agents, memory namespace, tools, queue, policies and approval manager.'],['Cross-team work','delegate_task spawns subagents, not company-governed departments.','Tasks/governance exist, but not necessarily local execution.','Brokered cross-department requests with RBAC, policy, manager approval and audit lineage.'],['Approval strength','Strong command approvals for personal execution.','Governance workflows in control plane.','Approval-first at company boundary: data, tool scopes, external sends, deploys, finance/legal restrictions.'],['Execution engines','Hermes itself runs tools and providers.','Adapters phone home; plane can stay separate.','Claude Code, Codex, Hermes, Anthropic, Ollama and future MCP tools behind governance.'],['Scalability path','Great single-user/gateway scale.','Org data model scale.','Department queues, worker pools, event bus, policy cache, memory scopes, audit partitions.'],['Business moat','Operator productivity.','Structured autonomous company records.','Accountable AI labor market inside the company. Everyone gets agents; agents collaborate safely.']];
8
+ const war=[['Marketing','Campaign Strategist drafts launch brief and asks Finance for spend.','request.created'],['Broker','Broker sees cross-department finance data and routes to Finance queue.','policy.check'],['Finance','Finance allows summarized campaign budget but blocks raw revenue exports.','approval.required'],['Legal','Legal reviews campaign claims before external publication.','parallel.review'],['Sales','Sales prepares lead segment after Marketing and Finance approval.','queued'],['Ops','Ops schedules WhatsApp/email outreach after final human approval.','ready'],['Executive','CEO Briefing Agent receives audited summary with handoffs linked.','complete']];
9
+ let st={mode:'federated',dept:'finance',src:'marketing',tgt:'finance',role:'employee',req:'confidential',sen:'confidential',trust:'approval_required',war:2};const $=id=>document.getElementById(id);function opt(arr,val){return arr.map(x=>`<option value="${x[0]}" ${val===x[0]?'selected':''}>${x[1]}</option>`).join('')}function rank(r){return {low:0,medium:1,high:2,irreversible_external:3}[r]||0}function decide(){let req=reqs.find(x=>x[0]===st.req),se=sens.find(x=>x[0]===st.sen),risk=req[2],cross=st.src!==st.tgt,reasons=[];if(se[2]>=2&&rank(risk)<2)risk='high';if(st.req==='external')risk='irreversible_external';if(cross)reasons.push('cross-department boundary');if(se[2]>=2)reasons.push(se[1].toLowerCase()+' sensitivity');if(st.role==='contractor')reasons.push('contractor role cannot directly access internal department data');if(risk==='irreversible_external')reasons.push('irreversible external action');let dec;if(st.role==='ceo'&&risk!=='irreversible_external'&&st.sen!=='restricted')dec='auto-approved';else if(st.role==='contractor'&&(cross||se[2]>=1))dec='denied';else if(risk==='irreversible_external')dec='approval-required';else if(st.trust==='manual'&&risk!=='low')dec='approval-required';else if(st.trust==='auto'&&risk!=='high')dec='auto-approved';else if(cross||rank(risk)>=2)dec='approval-required';else dec='auto-approved';return {risk,dec,reasons,approver:dec==='approval-required'?depts.find(d=>d[0]===st.tgt)[1]+' manager':dec==='denied'?'none':'policy engine'}}function render(){let m=modes.find(x=>x[0]===st.mode);$('modes').innerHTML=modes.map(x=>`<button class="${st.mode===x[0]?'on':''}" onclick="st.mode='${x[0]}';render()"><b>${x[1]}</b><span>${x[2]}</span></button>`).join('');$('modeName').textContent=m[1];$('modeClaim').textContent=m[2];$('modePieces').innerHTML=m[3].map(x=>`<span>${x}</span>`).join('');$('deptGrid').innerHTML=depts.map(d=>`<button class="dept ${st.dept===d[0]?'on':''}" onclick="st.dept='${d[0]}';render()"><b>${d[1]}</b><small>${d[2]}</small><em>${d[6]} queued tasks</em></button>`).join('');let d=depts.find(x=>x[0]===st.dept);$('deptPanel').innerHTML=`<div class=pt><b>${d[1]}</b><small>department tenant</small></div><dl class=kv><dt>manager</dt><dd>${d[2]}</dd><dt>memory</dt><dd>${d[5]}</dd><dt>tools</dt><dd>${d[4].join(' · ')}</dd><dt>approval</dt><dd>${d[7]}</dd></dl><div class=agents>${d[3].map(a=>`<span>${a}</span>`).join('')}</div>`;$('controls').innerHTML=`<label>Source department<select onchange="st.src=this.value;render()">${opt(depts,st.src)}</select></label><label>Target department<select onchange="st.tgt=this.value;render()">${opt(depts,st.tgt)}</select></label><label>Actor role<select onchange="st.role=this.value;render()">${opt(roles,st.role)}</select></label><label>Request type<select onchange="st.req=this.value;render()">${opt(reqs,st.req)}</select></label><label>Data sensitivity<select onchange="st.sen=this.value;render()">${opt(sens,st.sen)}</select></label><label>Trust mode<select onchange="st.trust=this.value;render()"><option value=approval_required ${st.trust==='approval_required'?'selected':''}>approval_required</option><option value=auto ${st.trust==='auto'?'selected':''}>auto-trust for safe scopes</option><option value=manual ${st.trust==='manual'?'selected':''}>manual every risky action</option></select></label>`;let dc=decide();$('decision').innerHTML=`<span class="badge ${dc.dec.startsWith('approval')?'approval':dc.dec==='denied'?'denied':'auto'}">${dc.dec}</span><h3>${depts.find(d=>d[0]===st.src)[1]} → ${depts.find(d=>d[0]===st.tgt)[1]}</h3><p>Risk tier: <b>${dc.risk.replace('_external',' external')}</b>. Approver: <b>${dc.approver}</b>.</p><ul>${(dc.reasons.length?dc.reasons:['same-department low-friction request']).map(r=>`<li>${r}</li>`).join('')}</ul><div class=records><span>cross_department_requests</span><span>activity_log</span>${dc.dec==='approval-required'?'<span>approval_requests</span>':''}<span>audit_logs</span><span>department_queue_jobs</span></div>`;$('flow').innerHTML=flow.map(f=>`<div><b>${f[0]}</b><span>${f[1]}</span><p>${f[2]}</p></div>`).join('');$('layers').innerHTML=layers.map((l,i)=>`<div><em>${String(i+1).padStart(2,'0')}</em><b>${l[0]}</b><span>${l[1]}</span></div>`).join('');$('matrix').innerHTML='<thead><tr><th>Dimension</th><th>Hermes Agent</th><th>Paperclip</th><th>madarX OS advantage</th></tr></thead><tbody>'+rows.map(r=>`<tr><th>${r[0]}</th><td>${r[1]}</td><td>${r[2]}</td><td>${r[3]}</td></tr>`).join('')+'</tbody>';$('war').innerHTML=war.map((w,i)=>`<button class="${st.war===i?'on':''}" onclick="st.war=${i};render()"><b>${w[0]}</b><span>${w[2]}</span></button>`).join('');let w=war[st.war];$('detail').innerHTML=`<b>${w[0]} · ${w[2]}</b><p>${w[1]}</p><small>Every handoff creates durable task, activity, approval and audit context. This is the difference between agents chatting and an accountable AI organization.</small>`;perf()}function perf(){let load=+$('load').value,workers=+$('workers').value,cap=workers*90,wait=Math.max(1,Math.round(load/cap*12)),util=Math.min(99,Math.round(load/cap*100)),audit=Math.round(load*5.4);$('loadVal').textContent=load.toLocaleString();$('workerVal').textContent=workers;$('metrics').innerHTML=`<div><b>${cap.toLocaleString()}</b><span>task/hour capacity</span></div><div><b>${util}%</b><span>worker utilization</span></div><div><b>${wait}m</b><span>est. queue wait</span></div><div><b>${audit.toLocaleString()}</b><span>audit events/hour</span></div>`}$('load').oninput=perf;$('workers').oninput=perf;render();
10
+ </script></body></html>
@@ -0,0 +1 @@
1
+ <!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>madarX OS · Feasibility + Use Cases</title><style>:root{--onyx:#0F0F11;--platinum:#E8E8E5;--bone:#DCDCD8;--graphite:#4A4A4D;--red:#C2452A}*{box-sizing:border-box}html,body{margin:0;background:var(--platinum);color:var(--onyx);font-family:'IBM Plex Mono','SF Mono',ui-monospace,Menlo,Consolas,monospace}body{overflow:auto}.shell{min-height:100vh;padding:34px 40px 84px}.top{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;border-bottom:1px solid var(--onyx);padding-bottom:14px;margin-bottom:34px}.top em{font-style:normal;color:var(--graphite);font-size:10px;letter-spacing:.24em;text-transform:uppercase}.top b{font-weight:500}.x,.signal{color:var(--red)}.hero{display:grid;grid-template-columns:minmax(0,1fr) 390px;gap:34px;align-items:start;margin-bottom:28px}.eyebrow{font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--red);margin:0 0 12px}.hero h1{font-size:clamp(38px,5.1vw,76px);line-height:.98;letter-spacing:-.055em;font-weight:500;margin:0 0 16px}.hero p{color:var(--graphite);font-size:14px;line-height:1.65;max-width:82ch;margin:0}.verdict{border:1px solid var(--onyx);background:var(--bone);padding:18px}.verdict b{display:block;text-transform:uppercase;letter-spacing:.16em;font-size:10px;color:var(--graphite);font-weight:500;margin-bottom:10px}.verdict strong{display:block;font-size:28px;line-height:1.1;letter-spacing:-.04em;font-weight:500;margin-bottom:10px}.verdict dl{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:11.5px;line-height:1.45;margin:0}.verdict dt{color:var(--graphite);text-transform:uppercase;letter-spacing:.08em}.verdict dd{margin:0}.section{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:22px;margin-bottom:28px}.section.single{grid-template-columns:1fr}.panel{border:1px solid var(--onyx);background:white;padding:22px 24px}.panel.dark{background:var(--onyx);color:var(--platinum)}.pt{display:flex;justify-content:space-between;gap:16px;align-items:baseline;border-bottom:1px solid var(--bone);padding-bottom:10px;margin-bottom:15px}.dark .pt{border-color:#2a2a2d}.pt b{font-size:14px;font-weight:500}.pt small{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--graphite)}.dark .pt small{color:#9a9a9d}.panel p{font-size:13px;line-height:1.65;color:var(--onyx);margin:0 0 12px}.dark p,.dark li{color:var(--platinum)}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;border:1px solid var(--onyx);background:var(--onyx);margin-bottom:28px}.grid3 button{background:var(--onyx);color:var(--bone);border:0;border-right:1px solid #2a2a2d;text-align:left;padding:16px;font-family:inherit;cursor:pointer}.grid3 button:last-child{border-right:0}.grid3 button.on{background:var(--platinum);color:var(--onyx)}.grid3 b{display:block;text-transform:uppercase;letter-spacing:.14em;font-size:12px;margin-bottom:8px}.grid3 span{font-size:11.5px;line-height:1.45;color:#9a9a9d}.grid3 button.on span{color:var(--graphite)}.chips,.records,.toolchips{display:flex;flex-wrap:wrap;gap:8px}.chips span,.records span,.toolchips span{border:1px solid var(--onyx);background:var(--bone);padding:6px 9px;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase}.claim{font-size:18px!important;letter-spacing:-.025em}.phaseGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:0;border:1px solid var(--onyx)}.phase{padding:18px;border-right:1px solid var(--bone);border-bottom:1px solid var(--bone);background:white;min-height:160px}.phase em{font-style:normal;color:var(--red);font-size:11px;letter-spacing:.2em}.phase b{display:block;margin:9px 0;font-weight:500}.phase p{font-size:12px;color:var(--graphite);line-height:1.55}.audienceGrid,.useGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}.audienceGrid button,.useGrid button{border:1px solid var(--onyx);background:white;text-align:left;padding:14px;font-family:inherit;cursor:pointer;min-height:105px}.audienceGrid button.on,.useGrid button.on{background:var(--onyx);color:var(--platinum)}.audienceGrid b,.useGrid b{display:block;font-size:13px;font-weight:500;margin-bottom:8px}.audienceGrid span,.useGrid span{display:block;color:var(--graphite);font-size:11px;line-height:1.4}.audienceGrid button.on span,.useGrid button.on span{color:var(--bone)}.detail{border:1px solid var(--onyx);background:var(--bone);padding:18px}.detail h3{font-size:28px;letter-spacing:-.045em;font-weight:500;margin:0 0 10px}.detail ul{margin:0;padding-left:18px;font-size:12.5px;line-height:1.65}.sim{display:grid;grid-template-columns:360px 1fr;gap:22px}.controls{display:grid;gap:10px}.controls label{font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--graphite)}select,textarea,input{display:block;width:100%;margin-top:5px;border:1px solid var(--onyx);background:white;color:var(--onyx);font-family:inherit;padding:9px}textarea{min-height:92px;resize:vertical}.decision{border:1px solid var(--onyx);background:var(--bone);padding:18px}.badge{display:inline-block;border:1px solid var(--onyx);padding:5px 8px;font-size:10px;letter-spacing:.16em;text-transform:uppercase}.ok{background:white}.gate{background:var(--red);color:white;border-color:var(--red)}.decision h3{font-size:26px;letter-spacing:-.04em;font-weight:500;margin:12px 0 9px}.trace{display:grid;gap:8px;margin-top:12px}.trace div{border-left:2px solid var(--onyx);padding:8px 10px;background:white;font-size:12px;line-height:1.45}.matrix{width:100%;border-collapse:collapse;font-size:12px}.matrix th,.matrix td{border:1px solid var(--onyx);padding:10px 12px;text-align:left;vertical-align:top;line-height:1.55}.matrix thead th{background:var(--onyx);color:var(--platinum);font-size:10px;letter-spacing:.12em;text-transform:uppercase}.matrix tbody tr:nth-child(even){background:var(--bone)}.matrix tbody th{color:var(--graphite);text-transform:uppercase;letter-spacing:.08em;font-size:10.5px}.metrics{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--onyx);margin-top:14px}.metrics div{padding:16px;border-right:1px solid var(--bone);background:white}.metrics div:last-child{border-right:0}.metrics b{display:block;color:var(--red);font-size:34px;letter-spacing:-.05em;font-weight:500}.metrics span{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--graphite)}.roadmap{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:0;border:1px solid var(--onyx)}.roadmap div{padding:18px;border-right:1px solid var(--bone);border-bottom:1px solid var(--bone);background:white}.roadmap b{display:block;margin-bottom:8px}.roadmap ul{margin:0;padding-left:18px;font-size:12px;line-height:1.55;color:var(--graphite)}.footer{margin-top:42px;border-top:1px solid var(--onyx);padding-top:18px;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;color:var(--graphite);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase}@media(max-width:920px){.shell{padding:22px 18px 64px}.hero,.section,.sim{grid-template-columns:1fr}.grid3,.metrics{grid-template-columns:1fr}}</style></head><body><main class="shell"><div class="top"><div><em>document · 005 · feasibility</em><br><b>madar<span class="x">X</span> OS · institutional AI workforce</b></div><b>interactive use-case atlas</b></div><header class="hero"><div><p class="eyebrow">Feasible. Useful. Build in phases.</p><h1>The product is not “more agents.” It is accountable AI labor.</h1><p>madarX OS can serve companies and solo entrepreneurs if it stays approval-first: agents produce work, tools execute safely, humans approve sensitive actions, and every handoff is inspectable.</p></div><aside class="verdict"><b>verdict</b><strong>Yes — but the moat is governance.</strong><dl><dt>feasible</dt><dd>because agents, tools, memory, schedules, WhatsApp and approvals already exist as separate primitives</dd><dt>companies</dt><dd>need departments, responsibility, approvals and audit trails</dd><dt>solo founders</dt><dd>need leverage: virtual departments without losing control</dd><dt>risk</dt><dd>too many agents becomes chaos unless policies, queues and audit are first-class</dd></dl></aside></header><nav class="grid3" id="modes"></nav><section class="section"><div class="panel"><div class="pt"><b>Strategic answer</b><small id="modeTitle"></small></div><p class="claim" id="modeClaim"></p><div class="chips" id="modeChips"></div></div><div class="panel dark"><div class="pt"><b>Positioning</b><small>simple language</small></div><p>For companies: every department gets AI capacity with management controls.</p><p>For solo entrepreneurs: one person gets a virtual company, with approval gates before money, code, email, legal or customer-facing actions.</p></div></section><section class="section single"><div class="panel"><div class="pt"><b>Feasibility roadmap</b><small>do not build everything at once</small></div><div class="phaseGrid" id="phases"></div></div></section><section class="section"><div class="panel"><div class="pt"><b>Who can use it?</b><small>select audience</small></div><div class="audienceGrid" id="audiences"></div></div><div class="detail" id="audienceDetail"></div></section><section class="section single"><div class="panel"><div class="pt"><b>Use-case atlas</b><small>click business scenario</small></div><div class="useGrid" id="uses"></div><div class="detail" id="useDetail" style="margin-top:14px"></div></div></section><section class="section single"><div class="panel"><div class="pt"><b>Mission simulator</b><small>turn an idea into an approval-first execution plan</small></div><div class="sim"><div class="controls"><label>Audience<select id="simAudience"></select></label><label>Scenario<select id="simUse"></select></label><label>Risk level<select id="simRisk"><option value="low">Low: internal draft</option><option value="medium">Medium: shared business data</option><option value="high">High: finance/legal/customer data</option><option value="external">External: email, publish, deploy, spend</option></select></label><label>Mission<textarea id="mission">Launch a real estate campaign and ask Finance for the approved budget range.</textarea></label></div><div class="decision" id="decision"></div></div></div></section><section class="section"><div class="panel"><div class="pt"><b>Performance / cost intuition</b><small>simple operating model</small></div><label>Active employees or founder workstreams: <span id="peopleVal"></span><input id="people" type="range" min="1" max="500" value="35"></label><label>Agents per person/team: <span id="agentsVal"></span><input id="agents" type="range" min="2" max="20" value="6"></label><div class="metrics" id="metrics"></div></div><div class="panel"><div class="pt"><b>How to keep it scalable</b><small>architecture rules</small></div><ul><li>Use queues for long-running work. Do not block the UI.</li><li>Cache permissions, tool manifests, policy decisions and rate counters.</li><li>Keep memory scoped: personal, agent, department, organization, project.</li><li>Use cheap models for simple classification; escalate to Claude/Codex for complex execution.</li><li>Every external or destructive action must have owner, approval, tool scope and audit record.</li></ul></div></section><section class="section single"><div class="panel"><div class="pt"><b>Why companies would buy it</b><small>business value matrix</small></div><div style="overflow-x:auto"><table class="matrix" id="matrix"></table></div></div></section><section class="section single"><div class="panel"><div class="pt"><b>Build sequence</b><small>practical execution order</small></div><div class="roadmap" id="roadmap"></div></div></section><footer class="footer"><span>madarX OS · feasibility + use cases</span><span>AI generates · humans approve · regulators can inspect</span></footer></main><script>const modes=[{id:'feasible',label:'1 · Feasible',claim:'The architecture is feasible because madarX already sits close to the right primitives: agents, tools, schedules, memory, approvals, audit logs, and local execution. The product work is to unify them into one institutional operating layer.',chips:['agents','tool registry','approval ledger','heartbeat worker','audit logs','memory scopes']},{id:'companies',label:'2 · Companies',claim:'Companies can use it because the problem is organizational: marketing, finance, legal, ops and sales need AI labor, but they also need boundaries, managers, approvals, responsibility and inspection.',chips:['departments','RBAC','policy engine','cross-team requests','manager approvals','audit exports']},{id:'solo',label:'3 · Solo founders',claim:'Solo entrepreneurs can use the same system as virtual departments. One founder can run marketing, sales, finance, legal, product and ops agents while retaining approval over money, publishing, code and customer data.',chips:['virtual departments','founder approval','launch workflows','content engine','sales follow-up','finance checks']}];const phases=[['01','Single-user OS','One operator, multiple agents, schedules, memory, WhatsApp surface, tool approvals and audit records.'],['02','Team workspace','Multiple employees, personal agents, shared tasks, company dashboard, role permissions and manager review.'],['03','Department model','Marketing, Finance, Legal, Sales and Ops each get agents, memory, tools, queues and department approval policy.'],['04','Cross-department broker','Agents request work from other departments through RBAC, policy, approval and scoped result sharing.'],['05','Enterprise scale','Queues, workers, event bus, SSO, audit exports, cloud sync, tenant boundaries and compliance reporting.']];const audiences=[{id:'company',label:'Company teams',tag:'departments + audit',benefits:['AI teams per department','Finance/Legal approval before sensitive work','Less manual handoff between employees','Visible audit trail for management'],risk:'Must avoid uncontrolled cross-department memory and tool access.'},{id:'solo',label:'Solo entrepreneur',tag:'virtual company',benefits:['One founder gets Marketing, Sales, Finance, Legal and Ops agents','Approvals before spending, publishing, deploying or emailing','Recurring agents handle follow-ups and reports','Founder keeps one command center'],risk:'The UI must stay simple; too much enterprise language can overwhelm.'},{id:'agency',label:'Agency / studio',tag:'client work at scale',benefits:['Agent teams per client account','Approval before client-facing messages','Reusable playbooks across clients','Audit trail for what was produced and sent'],risk:'Needs strong client data boundaries and permission scopes.'},{id:'regulated',label:'Regulated operator',tag:'inspectable AI',benefits:['Human approval for high-risk actions','Audit logs for every tool call and handoff','Policy-based denial for restricted data','Exportable history for compliance'],risk:'Requires serious governance, retention and security posture before production use.'}];const uses=[{id:'campaign',label:'Campaign launch',tag:'Marketing ↔ Finance ↔ Legal',story:'Marketing Agent creates a campaign brief, asks Finance for an approved budget range, sends claims to Legal, then schedules outreach only after human approval.',agents:['Campaign Strategist','Finance Controller','Legal Risk Agent','Ops Scheduler'],approvals:['finance numbers','legal claims','external send'],value:'Faster launches without leaking raw finance data or publishing risky claims.'},{id:'weekly',label:'CEO weekly pulse',tag:'all departments',story:'CEO Briefing Agent requests summaries from every department. Each department returns approved metrics and blockers through the broker.',agents:['CEO Briefing','Department Managers','Data Summarizers'],approvals:['restricted finance metrics','legal risk items'],value:'Leadership gets live company intelligence with source lineage.'},{id:'sales',label:'Sales proposal',tag:'Sales ↔ Legal ↔ Finance',story:'Sales Agent drafts a proposal, Finance validates pricing/margin, Legal reviews contract language, and the account manager approves final send.',agents:['Proposal Agent','Pricing Agent','Contract Reviewer'],approvals:['pricing exception','contract terms','customer email'],value:'Higher proposal throughput with manager control.'},{id:'devops',label:'Product release',tag:'Engineering ↔ Ops',story:'Engineering Agent prepares release notes, Codex reviews changes, Hermes monitors deployment, Ops receives incident plan. Production deploy stays approval-gated.',agents:['Claude Code Runner','Codex Reviewer','Release Watcher','Ops Monitor'],approvals:['deploy','database migration','rollback'],value:'Local execution power with guardrails around irreversible actions.'},{id:'finance',label:'Founder finance ops',tag:'solo founder',story:'Finance Agent categorizes expenses, forecasts runway, warns about cash constraints, and asks before sending invoices or changing accounting data.',agents:['Bookkeeper','Forecast Agent','Invoice Agent'],approvals:['invoice send','bank/accounting write','restricted export'],value:'A solo founder gets finance discipline without hiring a full team immediately.'},{id:'support',label:'Customer support escalation',tag:'Support ↔ Engineering',story:'Support Agent summarizes a customer issue, Engineering Agent triages logs, and only approved technical details are returned to the customer.',agents:['Support Triage','Bug Investigator','Customer Reply Agent'],approvals:['customer-facing reply','production log access'],value:'Faster support without exposing internal systems or customer data.'}];const rows=[['Product category','Not a chatbot. It is a governed AI workforce layer for people, departments, tools and approvals.'],['Company value','Reduces repetitive work while preserving management control, department ownership and auditability.'],['Solo founder value','Turns one person into a virtual company: marketing, sales, finance, legal, product and ops agents.'],['Differentiation vs Hermes','Hermes is excellent personal execution. madarX adds organization model: departments, policies, cross-team broker and manager approval.'],['Differentiation vs Paperclip','Paperclip-style systems organize company work. madarX can combine that control plane with real local execution through Claude Code, Codex, Hermes and tools.'],['Pricing logic','Charge for governed workspaces, agent seats, department packs, execution minutes, audit retention and enterprise controls.'],['Biggest risk','Complexity. The product must start simple: one command center, templates, prebuilt departments and clear approval states.']];const roadmap=[['MVP','Single user, 5 virtual departments, approval-gated tools, audit history, mission templates.'],['Team beta','Employee accounts, team agents, manager approval inbox, shared workspace memory and task assignment.'],['Department OS','Department namespaces, queues, policies, cross-department request broker and memory boundaries.'],['Enterprise','SSO, cloud sync, audit exports, retention policy, rate limits, worker pools and compliance reports.']];let state={mode:'feasible',aud:'company',use:'campaign'};function $(id){return document.getElementById(id)}function render(){let m=modes.find(x=>x.id===state.mode);$('modes').innerHTML=modes.map(x=>`<button class="${state.mode===x.id?'on':''}" onclick="state.mode='${x.id}';render()"><b>${x.label}</b><span>${x.claim.slice(0,104)}...</span></button>`).join('');$('modeTitle').textContent=m.label;$('modeClaim').textContent=m.claim;$('modeChips').innerHTML=m.chips.map(c=>`<span>${c}</span>`).join('');$('phases').innerHTML=phases.map(p=>`<div class=phase><em>${p[0]}</em><b>${p[1]}</b><p>${p[2]}</p></div>`).join('');$('audiences').innerHTML=audiences.map(a=>`<button class="${state.aud===a.id?'on':''}" onclick="state.aud='${a.id}';render()"><b>${a.label}</b><span>${a.tag}</span></button>`).join('');let a=audiences.find(x=>x.id===state.aud);$('audienceDetail').innerHTML=`<h3>${a.label}</h3><p>${a.risk}</p><ul>${a.benefits.map(b=>`<li>${b}</li>`).join('')}</ul>`;$('uses').innerHTML=uses.map(u=>`<button class="${state.use===u.id?'on':''}" onclick="state.use='${u.id}';render()"><b>${u.label}</b><span>${u.tag}</span></button>`).join('');let u=uses.find(x=>x.id===state.use);$('useDetail').innerHTML=`<h3>${u.label}</h3><p>${u.story}</p><div class=toolchips>${u.agents.map(x=>`<span>${x}</span>`).join('')}</div><p style="margin-top:12px"><b>Approvals:</b> ${u.approvals.join(' · ')}</p><p><b>Value:</b> ${u.value}</p>`;$('simAudience').innerHTML=audiences.map(x=>`<option value="${x.id}" ${x.id===state.aud?'selected':''}>${x.label}</option>`).join('');$('simUse').innerHTML=uses.map(x=>`<option value="${x.id}" ${x.id===state.use?'selected':''}>${x.label}</option>`).join('');$('matrix').innerHTML='<thead><tr><th>Dimension</th><th>Answer</th></tr></thead><tbody>'+rows.map(r=>`<tr><th>${r[0]}</th><td>${r[1]}</td></tr>`).join('')+'</tbody>';$('roadmap').innerHTML=roadmap.map(r=>`<div><b>${r[0]}</b><ul>${r[1].split(', ').map(x=>`<li>${x}</li>`).join('')}</ul></div>`).join('');renderDecision();renderMetrics()}function renderDecision(){let risk=$('simRisk')?.value||'high';let aud=audiences.find(x=>x.id===$('simAudience').value);let use=uses.find(x=>x.id===$('simUse').value);let mission=$('mission').value.trim();let gated=risk==='high'||risk==='external';let badge=gated?'approval required':'auto-approved draft';let trace=[`Classify mission for ${aud.label}: ${mission||use.story}`,`Assign agents: ${use.agents.join(' → ')}`,`Create records: task, activity_log, agent_run, audit_log`,gated?`Pause for approval: ${use.approvals.join(', ')}`:'Auto-approve inside safe internal draft scope',risk==='external'?'Execute only after owner approval, then write tool_egress record':'Return draft/summary with citations and next actions'];$('decision').innerHTML=`<span class="badge ${gated?'gate':'ok'}">${badge}</span><h3>${use.label} · ${aud.label}</h3><p>${use.value}</p><div class=records>${use.approvals.map(x=>`<span>${x}</span>`).join('')}</div><div class=trace>${trace.map(t=>`<div>${t}</div>`).join('')}</div>`}function renderMetrics(){let people=+$('people').value,agents=+$('agents').value,total=people*agents,runs=Math.round(total*7.5),approvals=Math.round(runs*.18),audit=runs*5;$('peopleVal').textContent=people;$('agentsVal').textContent=agents;$('metrics').innerHTML=`<div><b>${total.toLocaleString()}</b><span>possible agents</span></div><div><b>${runs.toLocaleString()}</b><span>runs / day</span></div><div><b>${approvals.toLocaleString()}</b><span>approval gates</span></div><div><b>${audit.toLocaleString()}</b><span>audit events</span></div>`}document.addEventListener('input',e=>{if(['simRisk','mission','people','agents'].includes(e.target.id))e.target.id==='people'||e.target.id==='agents'?renderMetrics():renderDecision()});document.addEventListener('change',e=>{if(e.target.id==='simAudience'){state.aud=e.target.value;render()}if(e.target.id==='simUse'){state.use=e.target.value;render()}if(e.target.id==='simRisk')renderDecision()});render();</script></body></html>
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" role="img" aria-labelledby="title desc">
3
+ <title id="title">madarX</title>
4
+ <desc id="desc">The locked madarX mark. The orbit ring breaks at the UAE coordinate position (about 54 degrees clockwise from north), and a Mars Red bead fills the notch. The orbit is what we serve, the X is the platform centered on the anchor, the bead is where we stand.</desc>
5
+ <path d="M 85.32 31.22 A 40 40 0 1 1 78.78 22.20" stroke="currentColor" stroke-width="3" fill="none"/>
6
+ <line x1="21.72" y1="21.72" x2="78.28" y2="78.28" stroke="currentColor" stroke-width="3" stroke-linecap="round"/>
7
+ <line x1="21.72" y1="78.28" x2="78.28" y2="21.72" stroke="currentColor" stroke-width="3" stroke-linecap="round"/>
8
+ <circle cx="82.36" cy="26.49" r="5" fill="#C2452A"/>
9
+ </svg>
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Privacy Web Worker — PBKDF2-SHA256 key derivation + HMAC verification.
3
+ *
4
+ * All cryptographic operations run off the main thread (RD-1). The passphrase
5
+ * is handled here and discarded immediately after use; no key material leaves
6
+ * this worker.
7
+ *
8
+ * Served from /public/privacy.worker.js to avoid Next.js Webpack
9
+ * `import.meta.url` resolution issues in app-router client components.
10
+ *
11
+ * Keep these constants in sync with lib/privacy-defaults.js:
12
+ */
13
+ const PRIVACY_HMAC_LABEL = 'madarx-privacy-v1'; // PRIVACY_HMAC_LABEL
14
+ const PRIVACY_PBKDF2_ITERATIONS = 600000; // PRIVACY_PBKDF2_ITERATIONS
15
+
16
+ // ---------------------------------------------------------------------------
17
+ // base64url helpers (no external deps)
18
+ // ---------------------------------------------------------------------------
19
+
20
+ function toBase64Url(buf) {
21
+ let s = '';
22
+ const bytes = new Uint8Array(buf);
23
+ for (let i = 0; i < bytes.length; i += 1) s += String.fromCharCode(bytes[i]);
24
+ return btoa(s).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
25
+ }
26
+
27
+ function fromBase64Url(str) {
28
+ const padded = str.replace(/-/g, '+').replace(/_/g, '/');
29
+ const pad = (4 - (padded.length % 4)) % 4;
30
+ const b64 = padded + '='.repeat(pad);
31
+ const bin = atob(b64);
32
+ const out = new Uint8Array(bin.length);
33
+ for (let i = 0; i < bin.length; i += 1) out[i] = bin.charCodeAt(i);
34
+ return out.buffer;
35
+ }
36
+
37
+ // ---------------------------------------------------------------------------
38
+ // Core crypto helpers
39
+ // ---------------------------------------------------------------------------
40
+
41
+ async function deriveBits(passphrase, salt, iterations) {
42
+ const enc = new TextEncoder();
43
+ const keyMaterial = await globalThis.crypto.subtle.importKey(
44
+ 'raw',
45
+ enc.encode(passphrase),
46
+ 'PBKDF2',
47
+ false,
48
+ ['deriveBits'],
49
+ );
50
+ return globalThis.crypto.subtle.deriveBits(
51
+ { name: 'PBKDF2', salt, iterations, hash: 'SHA-256' },
52
+ keyMaterial,
53
+ 256,
54
+ );
55
+ }
56
+
57
+ async function computeHmac(keyBits, label) {
58
+ const enc = new TextEncoder();
59
+ const hmacKey = await globalThis.crypto.subtle.importKey(
60
+ 'raw',
61
+ keyBits,
62
+ { name: 'HMAC', hash: 'SHA-256' },
63
+ false,
64
+ ['sign'],
65
+ );
66
+ const sig = await globalThis.crypto.subtle.sign('HMAC', hmacKey, enc.encode(label));
67
+ return sig;
68
+ }
69
+
70
+ // ---------------------------------------------------------------------------
71
+ // Message handler
72
+ // ---------------------------------------------------------------------------
73
+
74
+ self.onmessage = async (e) => {
75
+ const { id, op, passphrase, salt, iter, mac } = e.data || {};
76
+
77
+ try {
78
+ if (op === 'setup') {
79
+ const saltBytes = globalThis.crypto.getRandomValues(new Uint8Array(16));
80
+ const iterations = iter ?? PRIVACY_PBKDF2_ITERATIONS;
81
+ const keyBits = await deriveBits(passphrase, saltBytes.buffer, iterations);
82
+ const hmacBuf = await computeHmac(keyBits, PRIVACY_HMAC_LABEL);
83
+
84
+ self.postMessage({
85
+ id,
86
+ ok: true,
87
+ salt_b64: toBase64Url(saltBytes.buffer),
88
+ hmac_b64: toBase64Url(hmacBuf),
89
+ });
90
+ return;
91
+ }
92
+
93
+ if (op === 'verify') {
94
+ const saltBuf = fromBase64Url(salt);
95
+ const iterations = iter ?? PRIVACY_PBKDF2_ITERATIONS;
96
+ const keyBits = await deriveBits(passphrase, saltBuf, iterations);
97
+ const hmacBuf = await computeHmac(keyBits, PRIVACY_HMAC_LABEL);
98
+ const computed = toBase64Url(hmacBuf);
99
+
100
+ let match = computed.length === (mac || '').length;
101
+ if (match) {
102
+ let diff = 0;
103
+ for (let i = 0; i < computed.length; i += 1) {
104
+ diff |= computed.charCodeAt(i) ^ mac.charCodeAt(i);
105
+ }
106
+ match = diff === 0;
107
+ }
108
+
109
+ self.postMessage({ id, ok: true, match });
110
+ return;
111
+ }
112
+
113
+ self.postMessage({ id, ok: false, error: `Unknown op: ${op}` });
114
+ } catch (err) {
115
+ self.postMessage({ id, ok: false, error: err?.message || String(err) });
116
+ }
117
+ };
@@ -0,0 +1 @@
1
+ self.__BUILD_MANIFEST=function(e,r,t,_){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:136,errorRate:1e-4,numBits:2608,numHashes:14,bitArray:[0,1,1,e,0,e,e,e,e,r,r,r,r,e,r,r,e,e,e,r,e,e,r,e,r,e,r,r,r,e,r,r,e,r,r,e,e,r,e,r,e,r,e,r,e,e,r,r,r,e,e,e,r,r,e,r,r,e,e,e,e,e,e,r,e,e,e,r,r,e,e,e,r,r,e,r,r,r,e,r,e,r,e,r,e,e,e,e,r,r,e,e,r,r,e,r,r,e,e,e,r,r,r,r,e,r,e,r,r,r,r,e,e,r,e,e,r,r,e,r,r,e,e,e,r,e,r,e,r,r,e,e,e,e,r,e,e,r,r,e,e,e,r,e,e,e,e,r,r,r,r,r,r,r,e,e,e,r,r,e,e,e,e,r,e,e,r,e,e,e,e,r,e,r,e,r,r,r,r,r,r,e,e,r,r,r,e,r,e,r,e,e,e,e,e,e,e,e,r,e,r,r,r,r,e,r,r,r,r,r,r,e,e,r,e,r,e,r,e,r,r,e,e,e,e,e,r,e,r,e,r,r,r,r,e,e,e,e,r,e,e,e,r,r,e,r,r,e,e,r,e,e,r,r,e,r,r,e,e,r,r,r,r,e,r,e,e,e,r,r,r,r,r,e,e,r,e,e,r,r,e,e,r,e,r,e,e,e,e,e,e,e,r,r,r,e,e,r,r,r,e,e,r,e,e,r,r,e,r,r,r,e,r,r,r,r,r,r,r,r,e,e,r,r,r,r,e,e,r,r,r,r,r,e,r,r,r,r,r,e,r,e,r,e,r,e,e,e,r,e,r,e,r,r,e,e,e,e,r,r,r,e,e,r,e,r,e,e,e,r,r,r,e,r,r,e,r,r,e,r,e,e,r,e,e,r,e,e,r,r,e,e,e,e,r,e,r,e,e,e,r,e,r,r,r,e,e,e,r,r,r,r,e,e,r,r,e,e,e,e,r,e,r,r,r,r,r,e,r,e,r,r,r,e,r,e,e,e,e,r,e,e,e,e,e,r,e,r,e,r,r,r,r,e,e,r,r,e,r,e,r,r,r,e,r,e,e,e,r,r,r,e,r,e,r,r,e,r,e,e,r,e,e,r,r,r,r,r,e,r,r,e,r,r,r,e,r,r,e,e,r,e,e,r,r,e,e,r,e,r,e,r,e,r,r,e,e,e,e,r,r,r,e,r,e,e,r,e,e,r,e,e,e,r,r,e,e,r,r,r,r,e,e,e,r,r,e,e,r,e,r,e,e,r,e,r,r,e,e,e,r,r,e,e,r,r,e,e,r,r,r,r,e,r,r,r,r,r,e,e,e,e,e,e,r,r,r,e,e,r,r,e,e,r,r,e,r,e,r,e,r,e,e,e,e,r,e,e,r,r,e,e,e,r,e,r,r,e,r,r,e,r,e,r,e,e,r,e,e,e,r,e,e,r,r,e,e,r,e,e,e,e,r,e,r,e,e,r,r,r,e,e,e,r,e,r,r,e,r,e,r,r,r,e,r,e,e,r,r,r,e,e,e,e,e,r,e,e,e,r,r,e,e,e,r,e,r,r,e,e,e,e,r,e,e,e,e,r,r,e,r,e,r,r,r,r,e,e,e,e,r,r,e,e,e,e,e,r,e,e,e,e,e,r,r,r,r,r,r,e,e,r,r,r,r,r,r,r,r,r,e,e,r,e,r,e,e,r,r,e,r,e,e,r,r,r,e,r,e,e,e,e,e,r,r,r,r,e,e,r,e,r,r,e,e,r,e,e,e,r,r,e,e,e,r,r,r,e,e,e,e,e,r,r,e,e,e,r,r,e,r,e,e,e,r,e,r,r,e,e,r,r,r,e,r,r,e,r,e,e,r,e,e,r,r,e,r,r,r,r,e,e,r,e,r,e,e,r,r,r,r,e,r,e,r,r,r,e,e,r,e,e,e,r,r,r,r,e,e,r,r,e,e,e,r,e,e,e,e,r,r,r,e,e,e,e,r,r,e,r,r,e,e,r,r,e,e,r,r,e,e,e,e,r,e,e,r,e,r,e,r,r,r,r,r,r,r,e,e,e,e,e,r,e,r,r,r,e,r,e,e,r,e,r,e,r,e,e,e,r,e,r,e,e,r,e,e,e,e,e,e,e,r,e,e,e,r,e,e,r,e,r,r,e,e,r,e,r,e,e,r,e,r,e,e,e,r,e,e,r,e,e,e,r,e,r,r,e,r,e,e,e,e,e,r,e,e,e,e,r,r,r,r,e,r,e,e,e,r,e,e,e,r,e,r,e,e,e,e,e,r,e,r,e,e,e,e,e,e,e,e,r,e,r,e,e,r,r,r,r,r,e,e,e,e,r,e,e,e,e,r,e,e,e,r,e,r,e,r,e,e,r,r,e,r,r,e,r,r,r,e,r,e,e,e,r,e,r,r,r,r,r,r,r,r,r,e,r,e,r,e,r,e,e,r,e,r,e,e,e,r,e,e,e,e,e,r,e,r,r,e,e,r,r,e,e,r,e,r,r,r,e,e,r,r,e,e,e,e,e,e,r,e,r,r,r,r,e,e,e,e,r,r,e,e,e,r,r,r,r,r,e,r,e,e,e,r,e,e,r,r,e,r,e,e,e,r,r,r,e,r,r,r,r,r,r,e,r,r,r,r,e,e,r,e,r,e,r,r,r,e,r,e,r,e,e,e,e,e,r,e,e,e,r,e,r,r,r,r,e,r,r,r,e,r,r,r,e,r,e,e,e,e,r,r,e,r,r,e,e,r,r,r,e,e,r,r,e,e,r,r,r,e,e,r,r,e,r,r,e,e,r,e,e,r,r,r,e,r,e,r,r,e,e,e,e,r,e,e,e,e,e,e,e,e,e,r,e,r,e,e,r,e,r,e,e,e,r,r,r,e,r,r,e,e,e,e,r,r,r,r,e,r,r,r,e,r,r,e,e,e,e,r,r,e,e,r,e,r,r,e,e,e,e,e,r,r,r,e,e,r,e,r,e,r,r,r,e,e,r,r,r,r,r,r,r,e,e,r,r,e,e,e,e,r,r,e,r,r,e,e,r,r,e,e,e,r,r,e,e,e,e,r,e,r,r,r,e,e,r,r,e,r,r,r,e,e,r,r,r,r,e,e,e,r,e,e,r,r,e,e,r,r,e,e,e,r,e,r,r,e,r,r,e,e,r,e,r,e,r,r,r,e,r,e,e,e,e,r,r,r,r,r,r,r,r,e,e,e,r,e,e,r,e,e,e,r,e,e,e,r,e,r,e,r,e,r,r,e,r,e,r,e,e,r,r,r,r,e,r,e,r,e,r,r,e,r,e,r,e,r,e,r,e,r,e,e,r,r,e,e,e,r,r,e,r,r,e,r,r,e,e,r,e,r,r,r,e,e,e,r,r,r,e,r,e,e,r,r,e,r,e,r,r,e,e,e,e,e,r,e,e,e,e,e,r,e,e,e,e,e,r,e,e,e,r,e,e,e,e,e,e,r,e,e,e,e,e,r,e,e,r,e,r,e,e,e,r,e,r,e,e,e,e,e,e,e,r,e,r,e,r,r,r,e,r,e,r,r,e,e,e,r,e,e,e,e,r,r,e,e,r,r,e,r,r,e,e,r,r,e,r,r,r,r,e,e,r,e,e,e,e,r,r,r,e,e,r,r,r,r,e,e,r,r,e,r,r,r,e,e,e,r,e,r,r,r,r,r,e,r,r,r,e,e,e,e,r,e,e,r,e,e,r,e,r,e,e,e,e,r,e,r,r,r,e,r,r,r,r,r,r,r,e,r,r,r,e,r,e,e,e,e,e,e,r,e,r,e,r,r,r,r,r,r,r,r,r,e,e,e,r,e,e,r,e,r,e,e,e,e,r,e,e,e,r,e,r,e,r,e,r,e,e,r,r,e,e,e,e,r,e,e,r,r,r,e,e,r,e,e,r,e,r,e,e,e,r,r,r,e,e,r,e,r,r,e,e,e,e,r,e,e,r,e,e,e,r,e,e,r,r,r,e,r,e,e,e,e,r,r,e,r,e,e,e,e,r,e,r,r,r,r,r,e,e,r,e,e,r,r,e,r,r,e,r,r,r,r,e,e,e,e,e,e,e,e,e,e,r,e,r,r,r,r,r,r,e,r,e,r,r,r,e,r,e,r,e,r,r,e,e,e,e,e,e,r,e,r,e,e,e,e,r,r,r,r,r,r,e,r,r,r,e,r,e,r,r,r,e,e,e,e,e,r,r,r,r,r,e,e,r,r,r,r,e,e,e,e,r,e,r,r,e,e,r,e,e,r,r,r,r,r,e,e,e,r,e,r,e,r,e,e,r,r,e,r,r,e,e,r,e,e,e,r,r,r,r,e,e,e,r,e,r,e,r,e,r,r,r,r,e,r,e,r,r,r,e,e,e,e,r,r,r,e,e,r,r,r,e,r,r,r,e,r,e,e,r,r,e,r,r,r,e,e,r,e,e,e,r,e,e,e,e,r,r,r,e,e,r,e,e,e,e,e,e,e,e,r,r,e,e,r,r,e,r,e,r,r,r,r,e,r,e,r,e,e,e,e,e,r,e,r,r,r,e,r,e,r,e,e,r,r,r,r,r,r,e,e,e,e,e,r,e,r,r,r,e,e,r,e,e,r,e,e,e,r,r,e,r,e,e,e,e,e,e,r,r,e,e,r,r,r,e,e,e,e,r,e,e,e,e,e,e,r,e,e,r,r,e,r,r,e,r,r,e,e,e,r,r,e,r,e,r,e,e,e,e,e,r,e,r,e,e,r,e,e,e,r,e,r,r,r,r,e,r,r,r,e,e,r,e,r,r,e,r,e,e,r,r,e,e,e,r,r,e,e,r,e,r,e,r,e,r,e,e,r,r,e,e,r,r,r,r,r,r,r,r,r,r,e,r,r,r,e,r,r,r,r,r,r,r,r,r,e,r,e,e,e,e,r,r,r,r,e,e,r,e,r,e,e,r,r,r,e,r,e,e,e,e,r,r,r,e,r,e,e,r,e,r,e,e,e,e,e,e,e,r,e,e,e,e,r,r,r,e,e,e,r,e,r,e,e,r,e,r,r,r,e,r,r,r,r,r,r,e,e,e,e,r,e,e,e,r,r,e,e,e,e,r,e,r,e,r,e,e,e,e,r,r,r,r,r,e,e,e,r,r,e,e,r,e,e,e,e,e,e,r,r,e,r,r,e,e,e,e,e,r,r,r,r,e,e,r,e,r,r,e,r,r,r,e,e,r,e,r,r,e,r,r,e,r,e,r,e,r,e,r,r,r,e,e,e,r,e,r,r,r,r,r,r,r,e,r,e,r,r,r,e,e,r,r,e,e,r,e,e,r,e,r,e,e,r,e,e,e,r,e,e,e,e,e,r,e,r,e,r,e,r,e,r,e,r,e,e,e,e,e,e,r,e,r,e,r,r,e,e,e,r,e,e,r,e,r,r,e,e,e,r,e,r,r,r,e,r,e,r,r,e,r,e,r,e,r,e,r,e,r,e,e,r,e,r,e,r,r,e,r,e,e,r,e,e,r,e,e,r,e,e,r,e,e,e,r,e,e,r,r,e,e,e,e,r,e,e,e,r,r,e,e,r,r,e,e,r,e,e,e,r,e,r,r,r,e,r,e,e,e,e,r,e,e,r,e,r,r,r,r,r,r,r,r,e,r,r,e,e,r,e,e,e,r,e,e,r,r,r,r,e,r,e,e,e,r,e,e,r,e,r,e,e,e,r,r,e,e,r,e,e,r,e,e,e,r,r,r,r,e,e,r,e,e,e,r,r,r,r,r,e,e,e,r,r,r,e,r,r,e,e,e,e,e,e,r,e,e,e,r,r,r,e,r,e,e,r,r,r,e,e,r,r,e,e,r,e,e,e,r]},__routerFilterDynamic:{numItems:39,errorRate:1e-4,numBits:748,numHashes:14,bitArray:[r,e,r,r,e,e,e,e,r,r,r,e,r,r,e,r,e,r,e,r,e,e,r,e,e,r,e,e,e,e,r,r,e,r,e,r,e,r,e,r,e,e,e,r,r,r,r,r,e,r,r,r,e,e,r,e,e,r,r,r,r,r,e,e,r,r,r,e,e,r,r,e,r,e,e,r,r,e,r,e,e,e,e,e,e,r,e,e,r,r,r,e,e,e,r,e,r,e,r,r,e,r,e,r,e,e,e,r,e,e,e,e,r,r,e,e,r,r,e,r,r,r,r,e,e,r,e,e,e,r,e,e,e,r,r,r,r,r,e,r,r,r,r,e,r,e,e,r,r,e,e,r,e,r,e,r,r,r,r,r,e,r,r,e,r,e,r,r,e,r,r,e,e,e,e,e,r,r,r,e,r,r,e,e,r,r,e,e,e,r,r,e,r,e,e,e,r,r,e,e,r,e,r,r,e,r,e,e,e,e,e,r,r,r,e,r,r,r,e,r,e,e,e,r,e,e,e,e,r,e,r,e,e,r,e,e,r,e,e,r,r,r,r,e,e,r,e,r,r,r,e,e,r,r,r,r,e,e,r,r,e,r,r,r,e,e,e,r,r,e,e,r,e,e,e,e,e,e,e,r,r,e,r,e,r,e,e,r,r,r,r,r,r,r,e,r,r,e,r,r,e,r,e,e,r,e,e,e,e,r,r,e,r,e,e,r,r,r,e,e,e,r,e,e,r,r,e,r,e,r,r,r,r,r,r,e,r,e,e,e,r,r,e,r,e,r,r,e,r,e,r,e,e,e,r,e,e,r,r,r,r,r,r,r,r,e,e,e,e,r,r,e,r,e,e,r,r,e,e,r,e,e,r,e,e,e,e,e,e,e,r,r,e,e,e,r,r,e,e,r,r,e,e,r,r,r,r,r,r,r,r,e,e,r,r,r,e,e,r,r,e,e,e,e,r,r,e,r,r,r,r,r,r,e,r,e,r,e,e,e,e,e,e,r,e,r,r,e,r,r,e,e,r,e,e,r,e,e,r,r,r,r,e,r,r,e,r,r,r,e,e,e,e,r,e,e,e,e,r,r,r,r,r,e,e,e,r,e,e,e,e,r,r,e,r,r,r,e,r,r,e,e,r,r,r,e,e,e,r,r,r,e,r,e,r,r,e,r,e,e,e,e,e,r,r,e,r,r,e,r,e,r,e,r,e,r,e,r,r,r,e,r,e,e,r,r,e,e,r,r,e,e,e,e,r,r,r,e,r,r,e,e,e,e,e,e,e,r,e,r,e,e,r,e,r,e,r,r,e,r,e,e,e,e,e,e,r,r,e,e,r,r,e,e,e,e,e,e,r,e,r,e,e,r,r,r,r,e,r,e,e,e,e,r,r,r,r,e,e,e,r,e,r,r,r,r,e,e,r,e,r,r,r,e,r,e,e,r,e,r,r,e,e,e,r,r,r,r,e,r,r,r,e,r,e,e,r,e,e,r,e,r,r,r,e,r,r,e,e,e,r,e,r,e,e,e,e,r,e,e,e,e,e,e,e,e,r,e,e,r,r,r,r,e,r,e,e,e,r,r,e,r,e,e,r,e,e,e,e,r,e,r,e,e,r,e,e,e,e,e,r,e,e,e,r,e,r,r,e,r,e,e,e,e,r,r,r,e,e,r,e,e,r,e,r,e,r,r]},"/_error":["static/chunks/pages/_error-94812ad32cad7365.js"],sortedPages:["/_app","/_error"]}}(1,0,1e-4,14),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
@@ -0,0 +1 @@
1
+ self.__SSG_MANIFEST=new Set([]);self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB()
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[893],{45:(e,a,t)=>{"use strict";t.d(a,{default:()=>o});var s=t(2115),n={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"},l=t(4250);let r=(0,s.createContext)({}),o=(0,s.forwardRef)((e,a)=>{var t,o,c;let{color:i,size:d,strokeWidth:u,absoluteStrokeWidth:m,className:h="",children:p,iconNode:f,...j}=e,{size:x=24,strokeWidth:g=2,absoluteStrokeWidth:v=!1,color:b="currentColor",className:y=""}=null!=(t=(0,s.useContext)(r))?t:{},k=(null!=m?m:v)?24*Number(null!=u?u:g)/Number(null!=d?d:x):null!=u?u:g;return(0,s.createElement)("svg",{ref:a,...n,width:null!=(o=null!=d?d:x)?o:n.width,height:null!=(c=null!=d?d:x)?c:n.height,stroke:null!=i?i:b,strokeWidth:k,className:(0,l.z)("lucide",y,h),...!p&&!(e=>{for(let a in e)if(a.startsWith("aria-")||"role"===a||"title"===a)return!0;return!1})(j)&&{"aria-hidden":"true"},...j},[...f.map(e=>{let[a,t]=e;return(0,s.createElement)(a,t)}),...Array.isArray(p)?p:[p]])})},207:(e,a,t)=>{"use strict";t.d(a,{default:()=>m});var s=t(5155),n=t(2115),l=t(7650),r=t(5649),o=t(926);let c=(0,o.createServerReference)("40a5e9792a5eb4829e297b871b4d9c249c4d7827b6",o.callServer,void 0,o.findSourceMapURL,"createProjectAction");var i=t(9097);let d=[{value:"#c2452a",name:"Mars Red"},{value:"#a83a22",name:"Deep Red"},{value:"#7c2b19",name:"Dark Red"},{value:"#111318",name:"Charcoal"},{value:"#3f3a30",name:"Warm Black"},{value:"#68707b",name:"Slate"},{value:"#cdb78a",name:"Warm Sand"},{value:"#1f6c9f",name:"Skill Blue"}];function u(){let{pending:e}=(0,l.useFormStatus)();return(0,s.jsx)("button",{type:"submit",className:"admin-button",disabled:e,"aria-busy":e?"true":void 0,children:e?"Creating…":"Create project"})}function m(e){let{workspaceRoot:a="~/workspace/projects"}=e,[t,l]=n.useState(!1),[o,m]=n.useState(""),[h,p]=n.useState("workspace"),[f,j]=n.useState(""),x=n.useRef(null),g=n.useMemo(()=>"".concat(a.replace(/\/$/,""),"/").concat(String(o||"").toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,64)||"project"),[a,o]);return n.useEffect(()=>{var e;"custom"===h&&(null==(e=x.current)||e.focus())},[h]),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("button",{type:"button",className:"admin-button agents-new-cta",onClick:()=>l(!0),children:[(0,s.jsx)("span",{"aria-hidden":!0,className:"agents-new-cta-glyph",children:"+"}),"New project"]}),(0,s.jsx)(r.A,{open:t,onClose:()=>l(!1),eyebrow:"New project",title:"Create a project",children:(0,s.jsxs)("form",{className:"agents-modal-form",action:c,children:[(0,s.jsx)("p",{className:"agents-modal-help",children:"Scope agents, documents, memory, and integrations together."}),(0,s.jsx)("section",{className:"agents-modal-section",children:(0,s.jsxs)("label",{className:"agents-modal-field wide",children:[(0,s.jsx)("span",{children:"Name"}),(0,s.jsx)("input",{name:"name",type:"text",required:!0,placeholder:"Acme Co.",autoComplete:"off",value:o,onChange:e=>m(e.target.value),autoFocus:!0})]})}),(0,s.jsxs)("section",{className:"agents-modal-section",children:[(0,s.jsxs)("div",{className:"agents-modal-section-head",children:[(0,s.jsx)("span",{children:"Folder location"}),(0,s.jsx)("small",{children:"Where this project lives on disk."})]}),(0,s.jsxs)("div",{className:"agents-modal-radio-group",children:[(0,s.jsxs)("label",{className:"agents-modal-radio ".concat("workspace"===h?"on":""),children:[(0,s.jsx)("input",{type:"radio",name:"folder_mode",value:"workspace",checked:"workspace"===h,onChange:()=>p("workspace")}),(0,s.jsxs)("span",{className:"agents-modal-radio-body",children:[(0,s.jsx)("b",{children:"madarX workspace"}),(0,s.jsx)("code",{title:g,children:function(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:48;if(!e||e.length<=a)return e;let t=e.slice(0,Math.floor(a/2)-1),s=e.slice(e.length-Math.floor(a/2)+2);return"".concat(t,"…").concat(s)}(g)})]})]}),(0,s.jsxs)("label",{className:"agents-modal-radio ".concat("custom"===h?"on":""),children:[(0,s.jsx)("input",{type:"radio",name:"folder_mode",value:"custom",checked:"custom"===h,onChange:()=>p("custom")}),(0,s.jsxs)("span",{className:"agents-modal-radio-body",children:[(0,s.jsx)("b",{children:"Custom path"}),(0,s.jsx)("small",{children:"Any absolute folder. Created if missing."})]})]})]}),"custom"===h?(0,s.jsx)(i.A,{inputRef:x,value:f,onChange:j}):(0,s.jsx)("input",{type:"hidden",name:"folder_path",value:""})]}),(0,s.jsxs)("section",{className:"agents-modal-section",children:[(0,s.jsxs)("div",{className:"agents-modal-section-head",children:[(0,s.jsx)("span",{children:"Color"}),(0,s.jsx)("small",{children:"Used for the project tile across the app."})]}),(0,s.jsxs)("fieldset",{className:"agents-modal-swatches",children:[(0,s.jsx)("legend",{className:"visually-hidden",children:"Project color"}),d.map(e=>(0,s.jsxs)("label",{className:"agents-modal-swatch",style:{"--swatch":e.value},children:[(0,s.jsx)("input",{type:"radio",name:"color",value:e.value,defaultChecked:"#c2452a"===e.value}),(0,s.jsx)("span",{className:"agents-modal-swatch-ring","aria-hidden":"true"}),(0,s.jsx)("span",{className:"visually-hidden",children:e.name})]},e.value))]})]}),(0,s.jsxs)("section",{className:"agents-modal-section",children:[(0,s.jsxs)("div",{className:"agents-modal-section-head",children:[(0,s.jsx)("span",{children:"Description"}),(0,s.jsx)("small",{children:"Used as context for agents working in this project."})]}),(0,s.jsx)("label",{className:"agents-modal-field wide",children:(0,s.jsx)("textarea",{name:"description",rows:3,placeholder:"What is this project for? Goals, audience, voice, constraints."})})]}),(0,s.jsxs)("footer",{className:"agents-modal-foot",children:[(0,s.jsx)("button",{type:"button",className:"admin-button secondary",onClick:()=>l(!1),children:"Cancel"}),(0,s.jsx)(u,{})]})]})})]})}},677:(e,a,t)=>{"use strict";t.d(a,{default:()=>l});var s=t(5155),n=t(2115);function l(){let[e,a]=(0,n.useState)([]),[t,l]=(0,n.useState)("");return(0,n.useEffect)(()=>{l(localStorage.getItem("madarx.activeProjectId")||""),fetch("/api/projects").then(e=>e.json()).then(e=>a(e.projects||[])).catch(()=>{})},[]),(0,s.jsx)("div",{className:"project-switcher","data-project-switcher":!0,children:(0,s.jsxs)("select",{value:t,onChange:e=>{var a;l(a=e.target.value),a?localStorage.setItem("madarx.activeProjectId",a):localStorage.removeItem("madarx.activeProjectId"),window.dispatchEvent(new CustomEvent("madarx:project-change",{detail:{project_id:a||null}}))},"aria-label":"Active project",children:[(0,s.jsx)("option",{value:"",children:"All projects"}),e.map(e=>(0,s.jsx)("option",{value:e.id,children:e.name},e.id))]})})}},926:(e,a,t)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),!function(e,a){for(var t in a)Object.defineProperty(e,t,{enumerable:!0,get:a[t]})}(a,{callServer:function(){return s.callServer},createServerReference:function(){return l.createServerReference},findSourceMapURL:function(){return n.findSourceMapURL}});let s=t(1209),n=t(5153),l=t(7197)},985:(e,a,t)=>{"use strict";t.d(a,{default:()=>d});var s=t(5155),n=t(2115),l=t(7650),r=t(5649),o=t(926);let c=(0,o.createServerReference)("408f1476aa7e8aed2d06a6e49333d786ff9c75e576",o.callServer,void 0,o.findSourceMapURL,"deleteProjectAction");function i(e){let{disabled:a}=e,{pending:t}=(0,l.useFormStatus)();return(0,s.jsx)("button",{type:"submit",className:"admin-button danger",disabled:t||a,"aria-busy":t?"true":void 0,children:t?"Deleting…":"Delete project"})}function d(e){let{projectId:a,projectName:t,projectSlug:l,isProtected:o}=e,[d,u]=n.useState(!1),[m,h]=n.useState("");if(o)return(0,s.jsxs)("span",{className:"admin-button secondary project-delete is-locked","aria-disabled":"true",title:"The Personal project is the default scope and cannot be deleted.",children:[(0,s.jsxs)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",style:{marginRight:6,verticalAlign:"-1px"},children:[(0,s.jsx)("rect",{x:"3",y:"11",width:"18",height:"11",rx:"2"}),(0,s.jsx)("path",{d:"M7 11V7a5 5 0 0 1 10 0v4"})]}),"Protected"]});n.useEffect(()=>{d||h("")},[d]);let p=m.trim()===l;return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("button",{type:"button",className:"admin-button secondary project-delete",onClick:()=>u(!0),"aria-label":"Delete ".concat(t),children:"Delete"}),(0,s.jsx)(r.A,{open:d,onClose:()=>u(!1),eyebrow:"Delete project",title:"Delete ".concat(t,"?"),tone:"danger",children:(0,s.jsxs)("form",{className:"agents-modal-form",action:c,children:[(0,s.jsx)("input",{type:"hidden",name:"project_id",value:a}),(0,s.jsx)("p",{className:"agents-modal-help",children:"This removes the project, its agents, Disk files, memory, secrets, and audit history. The folder on your local drive is left untouched."}),(0,s.jsx)("section",{className:"agents-modal-section",children:(0,s.jsxs)("label",{className:"agents-modal-field wide",children:[(0,s.jsxs)("span",{children:["Type ",(0,s.jsx)("code",{className:"agents-modal-inline-code",children:l})," to confirm"]}),(0,s.jsx)("input",{type:"text",autoComplete:"off",spellCheck:!1,value:m,onChange:e=>h(e.target.value),placeholder:l,autoFocus:!0})]})}),(0,s.jsxs)("footer",{className:"agents-modal-foot",children:[(0,s.jsx)("button",{type:"button",className:"admin-button secondary",onClick:()=>u(!1),children:"Cancel"}),(0,s.jsx)(i,{disabled:!p})]})]})})]})}},3185:(e,a,t)=>{"use strict";t.d(a,{A:()=>o});var s=t(2115),n=t(4250);let l=e=>{let a=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,a,t)=>t?t.toUpperCase():a.toLowerCase());return a.charAt(0).toUpperCase()+a.slice(1)};var r=t(45);let o=(e,a)=>{let t=(0,s.forwardRef)((t,o)=>{let{className:c,...i}=t;return(0,s.createElement)(r.default,{ref:o,iconNode:a,className:(0,n.z)("lucide-".concat(l(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()),"lucide-".concat(e),c),...i})});return t.displayName=l(e),t}},4250:(e,a,t)=>{"use strict";t.d(a,{z:()=>s});let s=function(){for(var e=arguments.length,a=Array(e),t=0;t<e;t++)a[t]=arguments[t];return a.filter((e,a,t)=>!!e&&""!==e.trim()&&t.indexOf(e)===a).join(" ").trim()}},4788:(e,a,t)=>{"use strict";t.d(a,{A:()=>s});let s=(0,t(3185).A)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},5649:(e,a,t)=>{"use strict";t.d(a,{A:()=>r});var s=t(5155),n=t(2115),l=t(4788);function r(e){let{open:a,onClose:t,eyebrow:r,title:o,tone:c="default",size:i="default",children:d}=e,u=n.useRef(null);return n.useEffect(()=>{let e=u.current;e&&(a&&!e.open&&("function"==typeof e.showModal?e.showModal():e.setAttribute("open","")),!a&&e.open&&e.close())},[a]),n.useEffect(()=>{let e=u.current;if(!e)return;let a=e=>{e.preventDefault(),t()};return e.addEventListener("cancel",a),()=>e.removeEventListener("cancel",a)},[t]),(0,s.jsx)("dialog",{ref:u,className:"agents-modal".concat("wide"===i?" agents-modal--wide":""),onClick:e=>{e.target===u.current&&t()},children:a?(0,s.jsxs)("div",{className:"agents-modal-card".concat("danger"===c?" agents-modal-card--danger":""),onClick:e=>e.stopPropagation(),children:[(0,s.jsxs)("header",{className:"agents-modal-head",children:[(0,s.jsxs)("div",{children:[r?(0,s.jsx)("span",{className:"admin-kicker",children:r}):null,(0,s.jsx)("h2",{children:o})]}),(0,s.jsx)("button",{type:"button",className:"agents-modal-close",onClick:t,"aria-label":"Close",children:(0,s.jsx)(l.A,{size:14})})]}),d]}):null})}},6787:(e,a,t)=>{Promise.resolve().then(t.bind(t,677)),Promise.resolve().then(t.bind(t,985)),Promise.resolve().then(t.bind(t,9169)),Promise.resolve().then(t.bind(t,207)),Promise.resolve().then(t.t.bind(t,2619,23))},9097:(e,a,t)=>{"use strict";t.d(a,{A:()=>l});var s=t(5155),n=t(2115);function l(e){let{name:a="folder_path",value:t,onChange:l,inputRef:r,placeholder:o="/Users/you/Documents/my-project"}=e,[c,i]=n.useState(null),[d,u]=n.useState(!1),[m,h]=n.useState(""),[p,f]=n.useState(""),[j,x]=n.useState(null);async function g(){var e;let a;if(i(null),!(null==(e=navigator.clipboard)?void 0:e.readText))return void i({kind:"error",message:"Clipboard not available."});try{a=await navigator.clipboard.readText()}catch(e){i({kind:"error",message:"Allow clipboard access."});return}let t=(a||"").trim();if((t.startsWith('"')&&t.endsWith('"')||t.startsWith("'")&&t.endsWith("'"))&&(t=t.slice(1,-1)),t.startsWith("file://"))try{t=decodeURI(t.slice(7))}catch(e){}return t?t.startsWith("/")||t.startsWith("~")?void(l(t),i({kind:"success",message:"Pasted."})):void i({kind:"error",message:"Path must be absolute."}):void i({kind:"error",message:"Clipboard is empty."})}async function v(){i(null),x("pick");try{let e=await fetch("/api/fs/pick-folder",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({title:"Choose project folder",start_path:t&&t.startsWith("/")?t:void 0})});if(499===e.status)return void i({kind:"error",message:"Cancelled."});let a=await e.json();if(!e.ok)return void i({kind:"error",message:a.error||"Picker failed."});l(a.folder_path),i({kind:"success",message:"Selected ".concat(a.folder_path)})}catch(e){i({kind:"error",message:String((null==e?void 0:e.message)||e)})}finally{x(null)}}async function b(){if(i(null),!m.trim()||!p.trim())return void i({kind:"error",message:"Parent and name required."});x("create");try{let e=await fetch("/api/fs/create-folder",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({parent:m.trim(),name:p.trim()})}),a=await e.json();if(!e.ok)return void i({kind:"error",message:a.error||"Create failed."});l(a.folder_path),u(!1),f(""),i({kind:"success",message:"Created ".concat(a.folder_path)})}catch(e){i({kind:"error",message:String((null==e?void 0:e.message)||e)})}finally{x(null)}}return n.useEffect(()=>{d&&!m&&h(t||"~/Documents")},[d,t,m]),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"agents-modal-paste-row",children:[(0,s.jsx)("input",{ref:r,name:a,type:"text",placeholder:o,autoComplete:"off",spellCheck:!1,value:t||"",onChange:e=>{l(e.target.value),c&&i(null)},required:!0}),(0,s.jsx)("button",{type:"button",className:"admin-button secondary",onClick:v,disabled:"pick"===j,children:"pick"===j?"Opening…":"Choose folder…"})]}),(0,s.jsxs)("div",{className:"agents-modal-folder-tools",children:[(0,s.jsx)("button",{type:"button",className:"admin-button secondary",onClick:g,children:"Paste from clipboard"}),(0,s.jsx)("button",{type:"button",className:"admin-button secondary",onClick:()=>l("~/Documents"),children:"~/Documents"}),(0,s.jsx)("button",{type:"button",className:"admin-button secondary",onClick:()=>l("~/Desktop"),children:"~/Desktop"}),(0,s.jsx)("button",{type:"button",className:"admin-button secondary",onClick:()=>u(e=>!e),children:d?"Cancel new folder":"+ New folder"})]}),d?(0,s.jsxs)("div",{className:"agents-modal-create-folder",children:[(0,s.jsx)("small",{children:"Create a folder anywhere outside system directories. Parent must exist."}),(0,s.jsx)("div",{className:"agents-modal-create-row",children:(0,s.jsx)("input",{type:"text",placeholder:"Parent (e.g. ~/Documents)",value:m,onChange:e=>h(e.target.value),spellCheck:!1,autoComplete:"off"})}),(0,s.jsxs)("div",{className:"agents-modal-create-row",children:[(0,s.jsx)("input",{type:"text",placeholder:"New folder name",value:p,onChange:e=>f(e.target.value),spellCheck:!1,autoComplete:"off"}),(0,s.jsx)("button",{type:"button",className:"admin-button",onClick:b,disabled:"create"===j,children:"create"===j?"Creating…":"Create"})]})]}):null,c?(0,s.jsx)("p",{className:"agents-modal-feedback ".concat(c.kind),role:"status","aria-live":"polite",children:c.message}):null]})}},9169:(e,a,t)=>{"use strict";t.d(a,{default:()=>m});var s=t(5155),n=t(2115),l=t(7650),r=t(5649),o=t(926);let c=(0,o.createServerReference)("4033a5805f86ee8578b388105344088ed841ebd9b9",o.callServer,void 0,o.findSourceMapURL,"updateProjectAction");var i=t(9097);let d=[{value:"#c2452a",name:"Mars Red"},{value:"#a83a22",name:"Deep Red"},{value:"#7c2b19",name:"Dark Red"},{value:"#111318",name:"Charcoal"},{value:"#3f3a30",name:"Warm Black"},{value:"#68707b",name:"Slate"},{value:"#cdb78a",name:"Warm Sand"},{value:"#1f6c9f",name:"Skill Blue"}];function u(){let{pending:e}=(0,l.useFormStatus)();return(0,s.jsx)("button",{type:"submit",className:"admin-button",disabled:e,"aria-busy":e?"true":void 0,children:e?"Saving…":"Save changes"})}function m(e){let{projectId:a,projectName:t,projectColor:l,projectDescription:o,projectFolderPath:m}=e,[h,p]=n.useState(!1),[f,j]=n.useState("keep"),[x,g]=n.useState(m||""),v=n.useRef(null);return n.useEffect(()=>{h&&(j("keep"),g(m||""))},[h,m]),n.useEffect(()=>{var e;"custom"===f&&(null==(e=v.current)||e.focus())},[f]),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("button",{type:"button",className:"admin-button secondary project-edit",onClick:()=>p(!0),"aria-label":"Edit ".concat(t),children:"Edit"}),(0,s.jsx)(r.A,{open:h,onClose:()=>p(!1),eyebrow:"Edit project",title:"Edit ".concat(t),children:(0,s.jsxs)("form",{className:"agents-modal-form",action:c,children:[(0,s.jsx)("input",{type:"hidden",name:"project_id",value:a}),(0,s.jsx)("section",{className:"agents-modal-section",children:(0,s.jsxs)("label",{className:"agents-modal-field wide",children:[(0,s.jsx)("span",{children:"Name"}),(0,s.jsx)("input",{name:"name",type:"text",defaultValue:t,autoComplete:"off",required:!0})]})}),(0,s.jsxs)("section",{className:"agents-modal-section",children:[(0,s.jsxs)("div",{className:"agents-modal-section-head",children:[(0,s.jsx)("span",{children:"Folder location"}),(0,s.jsx)("small",{children:"Where project files live on disk. Move only if you've already moved the folder yourself."})]}),(0,s.jsxs)("div",{className:"agents-modal-radio-group",children:[(0,s.jsxs)("label",{className:"agents-modal-radio ".concat("keep"===f?"on":""),children:[(0,s.jsx)("input",{type:"radio",name:"folder_mode",value:"keep",checked:"keep"===f,onChange:()=>j("keep")}),(0,s.jsxs)("span",{className:"agents-modal-radio-body",children:[(0,s.jsx)("b",{children:"Keep current"}),(0,s.jsx)("code",{title:m||"",children:function(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:48;if(!e||e.length<=a)return e;let t=e.slice(0,Math.floor(a/2)-1),s=e.slice(e.length-Math.floor(a/2)+2);return"".concat(t,"…").concat(s)}(m)||"(not set)"})]})]}),(0,s.jsxs)("label",{className:"agents-modal-radio ".concat("custom"===f?"on":""),children:[(0,s.jsx)("input",{type:"radio",name:"folder_mode",value:"custom",checked:"custom"===f,onChange:()=>j("custom")}),(0,s.jsxs)("span",{className:"agents-modal-radio-body",children:[(0,s.jsx)("b",{children:"Change to…"}),(0,s.jsx)("small",{children:"Absolute path. Must already exist or be writable."})]})]})]}),"custom"===f?(0,s.jsx)(i.A,{inputRef:v,value:x,onChange:g}):(0,s.jsx)("input",{type:"hidden",name:"folder_path",value:""})]}),(0,s.jsxs)("section",{className:"agents-modal-section",children:[(0,s.jsxs)("div",{className:"agents-modal-section-head",children:[(0,s.jsx)("span",{children:"Color"}),(0,s.jsx)("small",{children:"Tile color across the app."})]}),(0,s.jsxs)("fieldset",{className:"agents-modal-swatches",children:[(0,s.jsx)("legend",{className:"visually-hidden",children:"Project color"}),d.map(e=>(0,s.jsxs)("label",{className:"agents-modal-swatch",style:{"--swatch":e.value},children:[(0,s.jsx)("input",{type:"radio",name:"color",value:e.value,defaultChecked:e.value===(l||"#c2452a")}),(0,s.jsx)("span",{className:"agents-modal-swatch-ring","aria-hidden":"true"}),(0,s.jsx)("span",{className:"visually-hidden",children:e.name})]},e.value))]})]}),(0,s.jsxs)("section",{className:"agents-modal-section",children:[(0,s.jsxs)("div",{className:"agents-modal-section-head",children:[(0,s.jsx)("span",{children:"Description"}),(0,s.jsx)("small",{children:"Used as context for agents working in this project."})]}),(0,s.jsx)("label",{className:"agents-modal-field wide",children:(0,s.jsx)("textarea",{name:"description",rows:3,defaultValue:o||"",placeholder:"What is this project for? Goals, audience, voice, constraints."})})]}),(0,s.jsxs)("footer",{className:"agents-modal-foot",children:[(0,s.jsx)("button",{type:"button",className:"admin-button secondary",onClick:()=>p(!1),children:"Cancel"}),(0,s.jsx)(u,{})]})]})})]})}}},e=>{e.O(0,[2619,8441,1255,7358],()=>e(e.s=6787)),_N_E=e.O()}]);
package/README.md CHANGED
@@ -21,7 +21,7 @@ madarx setup # master key, folder permissions, API keys, WhatsApp, auto-upda
21
21
  madarx # boots web + cron + heartbeat + WhatsApp, opens the dashboard
22
22
  ```
23
23
 
24
- `madarx` boots the web dashboard, the cron scheduler, the durable heartbeat worker, and the WhatsApp bridge (idle until you pair a number), then opens <http://127.0.0.1:8787/>. Your data lives in `~/.madarx/`, so upgrades never touch it. Update anytime with `madarx update`. Full guide: [`docs/install.md`](./docs/install.md).
24
+ `madarx` boots the web dashboard, the cron scheduler, the durable heartbeat worker, and the WhatsApp bridge (idle until you pair a number), then opens <http://127.0.0.1:8787/>. Your data lives in `~/.madarx/`, so upgrades never touch it. Update anytime with `madarx update`. See the [npm guide](./docs/npm-guide.md) for how install/usage/updates work, or [`docs/install.md`](./docs/install.md) for the command reference.
25
25
 
26
26
  Prerequisite: **Node.js ≥ 22.5** (for the built-in `node:sqlite` module).
27
27
 
@@ -92,6 +92,8 @@ npm run vendor:open-design
92
92
 
93
93
  ## Documentation
94
94
 
95
+ - [`docs/npm-guide.md`](./docs/npm-guide.md) — how the `madarx` npm package installs, what it installs, how to use it, and how updates work.
96
+ - [`docs/install.md`](./docs/install.md) — install / run / commands quick reference.
95
97
  - [`CLAUDE.md`](./CLAUDE.md) — canonical architecture, commands, API surface, and key constraints. Start here if you are reading the code.
96
98
  - [`STATUS.md`](./STATUS.md) — concise current project status, validation results, and remaining roadmap.
97
99
  - [`project-update.md`](./project-update.md) — current state of the product.
package/lib/seeds.js CHANGED
@@ -19,6 +19,18 @@ import { seedMinesWorkflows } from './process/seeds/mines-workflows.js';
19
19
  export const DEFAULT_AGENTS = [];
20
20
  export const DEFAULT_CONNECTORS = [];
21
21
 
22
+ /**
23
+ * Fresh installs ship with an empty /workflows page. The module workflow
24
+ * definitions (ADGM, HAIL lifecycle + quarterly, the Mines workflows) are
25
+ * opt-in — set MADARX_SEED_DEFAULT_WORKFLOWS=1 to pre-seed them. Mirrors the
26
+ * MADARX_SEED_DEFAULT_AGENTS gate for the Mines live agents.
27
+ *
28
+ * The agent templates and the kind:'workflow' marketplace catalog still seed
29
+ * regardless, so a user can install any of these workflows on demand from the
30
+ * marketplace even on a default install.
31
+ */
32
+ const SEED_DEFAULT_WORKFLOWS = process.env.MADARX_SEED_DEFAULT_WORKFLOWS === '1';
33
+
22
34
  /**
23
35
  * Ensure at least one queued tool_rate_limit_gc heartbeat task exists.
24
36
  * Idempotent: skips insert when an active (queued/leased/running) GC task
@@ -265,22 +277,26 @@ export function seedDefaults(db) {
265
277
  // Ignore — agent template tables may not be ready yet during schema bootstrap.
266
278
  }
267
279
 
268
- // Process engine: ADGM entity setup definition + the agent templates the
269
- // engine's agent_run stages target. Idempotent.
280
+ // Process engine: ADGM entity-setup agent templates always seed (catalog deps
281
+ // for the marketplace install path). The ADGM workflow *definition* is opt-in
282
+ // (MADARX_SEED_DEFAULT_WORKFLOWS=1) so a fresh /workflows page is empty.
270
283
  try {
271
284
  seedProcessAgentTemplates(db);
272
- seedProcessDefinitions();
285
+ if (SEED_DEFAULT_WORKFLOWS) seedProcessDefinitions();
273
286
  } catch {
274
287
  // Ignore — process tables or marketplace tables may not be ready yet.
275
288
  }
276
289
 
277
- // HAIL operating-model layer: seed the two HAIL agent templates BEFORE the
278
- // lifecycle definition (upsertDefinition validates agent_template_slug against
279
- // installed kind='agent' marketplace rows). Idempotent.
290
+ // HAIL operating-model layer: agent templates always seed (validator + market-
291
+ // place install path depend on them). The two HAIL workflow definitions are
292
+ // opt-in. The gate listener is harmless when no HAIL definition exists, so it
293
+ // always registers.
280
294
  try {
281
295
  seedHailAgentTemplates(db);
282
- seedHailEngagementLifecycle();
283
- seedHailQuarterlyReview();
296
+ if (SEED_DEFAULT_WORKFLOWS) {
297
+ seedHailEngagementLifecycle();
298
+ seedHailQuarterlyReview();
299
+ }
284
300
  // Register the in-process listener that mirrors engine approval decisions
285
301
  // into the hail_review_gates ledger. globalThis-guarded — safe to call on
286
302
  // every boot / re-seed. Without this the gate ledger stays empty at runtime.
@@ -311,11 +327,14 @@ export function seedDefaults(db) {
311
327
  }
312
328
 
313
329
  // Mines module: 4 skeleton workflow definitions written directly to
314
- // process_definitions via the sole writer (upsertDefinition).
315
- try {
316
- seedMinesWorkflows();
317
- } catch {
318
- // Non-fatal: Mines workflows will not appear in process_definitions if this fails.
330
+ // process_definitions via the sole writer (upsertDefinition). Opt-in
331
+ // (MADARX_SEED_DEFAULT_WORKFLOWS=1) so a fresh /workflows page is empty.
332
+ if (SEED_DEFAULT_WORKFLOWS) {
333
+ try {
334
+ seedMinesWorkflows();
335
+ } catch {
336
+ // Non-fatal: Mines workflows will not appear in process_definitions if this fails.
337
+ }
319
338
  }
320
339
 
321
340
  // Auto-seed the canonical Ops Agent on first launch (idempotent).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "madarx",
3
- "version": "2.9.2",
3
+ "version": "2.9.4",
4
4
  "type": "module",
5
5
  "description": "Madarx OS — Next.js product with SQLite-backed runtime, scheduled cron daemon, and approval-gated local runners.",
6
6
  "license": "MIT",
@@ -40,6 +40,7 @@
40
40
  "madarx": "node bin/madarx.mjs",
41
41
  "prepublishOnly": "npm run build",
42
42
  "build": "NODE_OPTIONS=--no-warnings next build",
43
+ "postbuild": "node --no-warnings scripts/postbuild-standalone.mjs",
43
44
  "start": "next start -p 8787 -H 127.0.0.1",
44
45
  "test": "node --no-warnings --test tests/*.test.js",
45
46
  "daemon": "node --no-warnings --env-file-if-exists=.env.local scripts/cron-daemon.mjs",
@@ -0,0 +1,41 @@
1
+ /**
2
+ * postbuild-standalone.mjs — make the Next standalone bundle self-serving.
3
+ *
4
+ * `next build` with `output: 'standalone'` emits `.next/standalone/server.js`
5
+ * but deliberately does NOT copy `.next/static` or `public/` into it. The
6
+ * standalone server resolves both relative to its OWN directory, so without
7
+ * this copy a global install renders with no CSS, no JS chunks, and broken
8
+ * images. We copy them in so the bundle shipped via the package `files`
9
+ * whitelist (`.next/standalone/`) is complete and self-contained.
10
+ *
11
+ * Idempotent: removes the destinations first, then copies fresh.
12
+ */
13
+
14
+ import fs from 'node:fs';
15
+ import path from 'node:path';
16
+ import { fileURLToPath } from 'node:url';
17
+
18
+ const ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
19
+ const STANDALONE = path.join(ROOT, '.next', 'standalone');
20
+
21
+ function copyInto(srcRel, destRel) {
22
+ const src = path.join(ROOT, srcRel);
23
+ const dest = path.join(STANDALONE, destRel);
24
+ if (!fs.existsSync(src)) {
25
+ console.warn(`[postbuild] skip ${srcRel} — not found`);
26
+ return;
27
+ }
28
+ fs.rmSync(dest, { recursive: true, force: true });
29
+ fs.mkdirSync(path.dirname(dest), { recursive: true });
30
+ fs.cpSync(src, dest, { recursive: true });
31
+ console.log(`[postbuild] copied ${srcRel} → .next/standalone/${destRel}`);
32
+ }
33
+
34
+ if (!fs.existsSync(STANDALONE)) {
35
+ console.warn('[postbuild] .next/standalone not found — did `next build` run with output:"standalone"?');
36
+ process.exit(0);
37
+ }
38
+
39
+ copyInto(path.join('.next', 'static'), path.join('.next', 'static'));
40
+ copyInto('public', 'public');
41
+ console.log('[postbuild] standalone bundle is self-serving.');
@@ -1 +0,0 @@
1
- exports.id=664,exports.ids=[664],exports.modules={6974:(a,b,c)=>{Promise.resolve().then(c.bind(c,35271))},35271:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(97954).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/madarx-os/madarx-os/app/components/admin/project-switcher.jsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/madarx-os/madarx-os/app/components/admin/project-switcher.jsx","default")},78154:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{"40aa49995677dd607de11176b434145192e80883d3":()=>e.$$RSC_SERVER_ACTION_0});var e=c(91845),f=a([e]);e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},86893:(a,b,c)=>{"use strict";c.d(b,{hI:()=>g,iN:()=>f,pp:()=>i,qs:()=>h});var d=c(75338),e=c(35271);function f({kicker:a="madarX OS v1.0",title:b,description:c,actions:f,hideProjectSwitcher:g,children:h}){return(0,d.jsxs)("main",{className:"admin-shell",children:[(0,d.jsxs)("header",{className:"admin-header",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("span",{className:"admin-kicker",children:a}),(0,d.jsx)("h1",{children:b}),c?(0,d.jsx)("p",{children:c}):null]}),(0,d.jsxs)("div",{className:"admin-header-actions",children:[g?null:(0,d.jsx)(e.default,{}),f]})]}),h]})}function g({label:a,value:b,tone:c}){return(0,d.jsxs)("div",{className:`admin-stat ${c||""}`,children:[(0,d.jsx)("b",{children:b}),(0,d.jsx)("span",{children:a})]})}function h({children:a,tone:b="neutral"}){return(0,d.jsx)("span",{className:`admin-pill ${b}`,children:a})}function i({title:a,children:b}){return(0,d.jsxs)("div",{className:"admin-empty",children:[(0,d.jsx)("b",{children:a}),(0,d.jsx)("p",{children:b})]})}},89670:(a,b,c)=>{Promise.resolve().then(c.bind(c,94657))},91845:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{$$RSC_SERVER_ACTION_0:()=>u,default:()=>p,dynamic:()=>q,runtime:()=>r});var e=c(75338),f=c(75879);c(68633);var g=c(16780),h=c(82161),i=c(86893),j=c(83963),k=c(60105),l=a([j,k]);[j,k]=l.then?(await l)():l;let q="force-dynamic",r="nodejs",s={executive:"Executive",manager:"Manager",team_lead:"Team Lead",individual_contributor:"Contributor"},t={executive:"mars",manager:"ready",team_lead:"warn",individual_contributor:"neutral"};function m(a=""){return a.split(/\s+/).map(a=>a[0]).filter(Boolean).slice(0,2).join("").toUpperCase()||"\xb7"}let u=async function(a){let b=String(a.get("agent_id")||"").trim();if(!b)return;let c=String(a.get("reports_to")||"").trim(),d={reports_to:""===c?null:c},e=String(a.get("role")||"").trim();e&&(d.role=e);let f=String(a.get("title")||"").trim();(f||a.has("title"))&&(d.title=f||null);try{(0,j.jN)(b,d)}catch(a){console.warn("updateAgentOrg failed",a?.message)}(0,g.revalidatePath)("/org"),(0,g.revalidatePath)("/agents"),(0,h.redirect)("/org")};function n({node:a,workloadById:b}){let c=function(a){if(a.role&&s[a.role])return a.role;let b=a.reports?.length||0;return b>=4?"executive":b>=2?"manager":1===b?"team_lead":"individual_contributor"}(a),d=s[c],f=t[c],g=a.reports?.length||0,h=b.get(a.id),j=Number(h?.active_tasks||0),k=Number(h?.blocked_tasks||0),l=Number(h?.completed_tasks||0),n=a.status||"created";return(0,e.jsxs)("article",{className:`org-card org-card--${c}`,"data-reports":g>0?"has":"none",children:[(0,e.jsxs)("div",{className:"org-card-head",children:[(0,e.jsx)("div",{className:"org-card-avatar","aria-hidden":"true",children:m(a.name)}),(0,e.jsxs)("div",{className:"org-card-identity",children:[(0,e.jsx)("div",{className:"org-card-name",children:a.name}),(0,e.jsx)("div",{className:"org-card-title",children:a.title||a.mission?.slice(0,64)||"No title set"})]})]}),(0,e.jsxs)("div",{className:"org-card-meta",children:[(0,e.jsx)(i.qs,{tone:f,children:d}),(0,e.jsx)(i.qs,{tone:"heartbeat ok"===n?"ready":"terminated"===n?"danger":"neutral",children:n}),g>0?(0,e.jsxs)(i.qs,{tone:"neutral",children:[g," report",1===g?"":"s"]}):null]}),(0,e.jsxs)("dl",{className:"org-card-stats",children:[(0,e.jsxs)("div",{children:[(0,e.jsx)("dt",{children:"Active"}),(0,e.jsx)("dd",{children:j})]}),(0,e.jsxs)("div",{children:[(0,e.jsx)("dt",{children:"Blocked"}),(0,e.jsx)("dd",{className:k?"is-warn":"",children:k})]}),(0,e.jsxs)("div",{children:[(0,e.jsx)("dt",{children:"Done"}),(0,e.jsx)("dd",{children:l})]})]})]})}function o({node:a,workloadById:b}){let c=(a.reports||[]).length>0;return(0,e.jsxs)("li",{className:"org-branch",children:[(0,e.jsx)(n,{node:a,workloadById:b}),c?(0,e.jsx)("ul",{className:"org-children",children:a.reports.map(a=>(0,e.jsx)(o,{node:a,workloadById:b},a.id))}):null]})}function p(){let a=(0,j.zP)(),b=(0,j.hC)(),c=(0,k.vc)(),d=new Map((b.workload||[]).map(a=>[a.agent_id,a])),f=c.filter(a=>c.some(b=>b.reports_to===a.id)).length,g=c.filter(a=>!a.reports_to&&a.id).length;return(0,e.jsxs)(i.iN,{title:"Org",description:"Company-style structure for your agent workforce. Set managers, define roles, and see workload at a glance.",children:[(0,e.jsxs)("section",{className:"admin-stats",children:[(0,e.jsx)(i.hI,{label:"Headcount",value:b.totals.active_agents}),(0,e.jsx)(i.hI,{label:"Leaders",value:f}),(0,e.jsx)(i.hI,{label:"Root nodes",value:g}),(0,e.jsx)(i.hI,{label:"Active tasks",value:b.totals.active_tasks})]}),(0,e.jsxs)("section",{className:"admin-panel",children:[(0,e.jsxs)("div",{className:"admin-panel-head",children:[(0,e.jsx)("span",{children:"Organisation chart"}),(0,e.jsx)("small",{children:"Top-down hierarchy. Each card shows role, status, and current workload."})]}),a.length?(0,e.jsx)("div",{className:"org-chart-scroll",children:(0,e.jsx)("ul",{className:"org-chart",children:a.map(a=>(0,e.jsx)(o,{node:a,workloadById:d},a.id))})}):(0,e.jsx)(i.pp,{title:"No agents yet",children:"Create an agent on the Agents page, then come back here to assign managers."})]}),(0,e.jsxs)("section",{className:"admin-grid reports-layout",children:[(0,e.jsxs)("div",{className:"admin-panel",children:[(0,e.jsxs)("div",{className:"admin-panel-head",children:[(0,e.jsx)("span",{children:"Reporting lines"}),(0,e.jsx)("small",{children:"Re-parent any agent. Cycles are blocked automatically."})]}),c.length?(0,e.jsx)("div",{className:"admin-card-list compact",children:c.map(a=>{let b=a.reports_to?c.find(b=>b.id===a.reports_to):null,d=c.filter(b=>b.id!==a.id),f=a.role&&s[a.role]?a.role:"individual_contributor";return(0,e.jsxs)("form",{action:u,className:"org-reporting-row",children:[(0,e.jsx)("input",{type:"hidden",name:"agent_id",value:a.id}),(0,e.jsxs)("div",{className:"org-reporting-identity",children:[(0,e.jsx)("div",{className:"org-card-avatar small","aria-hidden":"true",children:m(a.name)}),(0,e.jsxs)("div",{children:[(0,e.jsx)("div",{className:"org-reporting-name",children:a.name}),(0,e.jsx)("div",{className:"org-reporting-sub",children:b?`Reports to ${b.name}`:"Top of chain"})]})]}),(0,e.jsxs)("div",{className:"org-reporting-fields",children:[(0,e.jsxs)("label",{className:"org-reporting-field",children:[(0,e.jsx)("span",{children:"Title"}),(0,e.jsx)("input",{type:"text",name:"title",defaultValue:a.title||"",placeholder:"e.g. Marketing Manager"})]}),(0,e.jsxs)("label",{className:"org-reporting-field",children:[(0,e.jsx)("span",{children:"Role"}),(0,e.jsx)("select",{name:"role",defaultValue:f,children:Object.entries(s).map(([a,b])=>(0,e.jsx)("option",{value:a,children:b},a))})]}),(0,e.jsxs)("label",{className:"org-reporting-field",children:[(0,e.jsx)("span",{children:"Manager"}),(0,e.jsxs)("select",{name:"reports_to",defaultValue:a.reports_to||"",children:[(0,e.jsx)("option",{value:"",children:"— None (top of chain)"}),d.map(a=>(0,e.jsx)("option",{value:a.id,children:a.name},a.id))]})]}),(0,e.jsx)("button",{className:"admin-button",type:"submit",children:"Save"})]})]},a.id)})}):(0,e.jsx)(i.pp,{title:"No agents yet",children:"Create agents to start building your org."})]}),(0,e.jsxs)("div",{className:"admin-panel",children:[(0,e.jsxs)("div",{className:"admin-panel-head",children:[(0,e.jsx)("span",{children:"Workload by agent"}),(0,e.jsx)("small",{children:"Derived from active tasks."})]}),b.workload.length?(0,e.jsx)("div",{className:"admin-card-list compact",children:b.workload.map(a=>(0,e.jsxs)("div",{className:"admin-record compact",children:[(0,e.jsxs)("div",{className:"admin-record-top",children:[(0,e.jsx)("b",{children:a.agent_name||a.agent_id}),(0,e.jsxs)(i.qs,{tone:a.blocked_tasks?"danger":a.active_tasks?"ready":"neutral",children:[a.active_tasks," active"]})]}),(0,e.jsxs)("p",{children:[a.total_tasks," total \xb7 ",a.blocked_tasks," blocked \xb7 ",a.completed_tasks," complete"]})]},a.agent_id))}):(0,e.jsx)(i.pp,{title:"No workload data",children:"Assign tasks to see workload distribution."})]})]})]})}(0,f.A)(u,"40aa49995677dd607de11176b434145192e80883d3",null),d()}catch(a){d(a)}})},94657:(a,b,c)=>{"use strict";c.d(b,{default:()=>f});var d=c(21124),e=c(38301);function f(){let[a,b]=(0,e.useState)([]),[c,f]=(0,e.useState)("");return(0,d.jsx)("div",{className:"project-switcher","data-project-switcher":!0,children:(0,d.jsxs)("select",{value:c,onChange:a=>{var b;f(b=a.target.value),b?localStorage.setItem("madarx.activeProjectId",b):localStorage.removeItem("madarx.activeProjectId"),window.dispatchEvent(new CustomEvent("madarx:project-change",{detail:{project_id:b||null}}))},"aria-label":"Active project",children:[(0,d.jsx)("option",{value:"",children:"All projects"}),a.map(a=>(0,d.jsx)("option",{value:a.id,children:a.name},a.id))]})})}}};