madarx 2.24.0 → 2.24.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-build-manifest.json +756 -735
- package/.next/standalone/.next/app-path-routes-manifest.json +92 -89
- package/.next/standalone/.next/build-manifest.json +5 -5
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/react-loadable-manifest.json +2 -2
- package/.next/standalone/.next/server/app/(home)/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +2 -2
- package/.next/standalone/.next/server/app/_not-found.rsc +3 -3
- package/.next/standalone/.next/server/app/activity/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin/page.js +2 -2
- package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/agents/[id]/page.js +4 -4
- package/.next/standalone/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/agents/page.js +1 -1
- package/.next/standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/activity/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/audit-export/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/share-links/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agent-memory/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agent-runs/[id]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agent-runs/[id]/events/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agent-runs/[id]/log/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agent-runs/[id]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agent-runs/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/[id]/active-run/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/[id]/chain/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/[id]/memory/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/[id]/reports/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/[id]/run/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/[id]/skills/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/active-runs/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/create/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/ops/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/resume-approval/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/approvals/[id]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/approvals/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/artifacts/[id]/acl/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/artifacts/[id]/protect/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/artifacts/[id]/raw/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/artifacts/[id]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/artifacts/[id]/share-link/[linkId]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/artifacts/[id]/share-link/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/artifacts/upload/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/audit/list/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/audit/search/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/config/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/join-bootstrap/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/session/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/brand/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/brand/share/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/chat/sessions/[id]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/chat/sessions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/cloud/schema/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/compliance/export/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/config/env/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/config/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/connections/[service]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/connections/[service]/verify/route.js +1 -1
- package/.next/standalone/.next/server/app/api/connections/[service]/verify/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/connections/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/connectivity/allowlist/route.js +28 -0
- package/.next/standalone/.next/server/app/api/connectivity/allowlist/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/connectivity/allowlist/route_client-reference-manifest.js +1 -0
- package/.next/standalone/.next/server/app/api/connectivity/smoke/route.js +28 -0
- package/.next/standalone/.next/server/app/api/connectivity/smoke/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/connectivity/smoke/route_client-reference-manifest.js +1 -0
- package/.next/standalone/.next/server/app/api/connectivity/status/route.js +28 -0
- package/.next/standalone/.next/server/app/api/connectivity/status/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/connectivity/status/route_client-reference-manifest.js +1 -0
- package/.next/standalone/.next/server/app/api/cron/tick/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/dashboard/spaces/[id]/move/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/dashboard/spaces/[id]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/dashboard/spaces/[id]/share-link/[linkId]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/dashboard/spaces/[id]/share-link/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/dashboard/spaces/import/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/dashboard/spaces/layout/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/dashboard/spaces/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/disk/files/[id]/blob/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/disk/files/[id]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/disk/files/[id]/transcribe/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/disk/files/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/disk/folders/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/events/since/[cursor]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/events/stream/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/fs/create-folder/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/fs/pick-folder/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/hail/engagements/[id]/blueprint/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/hail/engagements/[id]/diagnostic/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/hail/engagements/[id]/governance/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/hail/engagements/[id]/interview/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/hail/engagements/[id]/pilot/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/hail/engagements/[id]/quarterly/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/hail/engagements/[id]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/hail/engagements/[id]/setup-package/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/hail/engagements/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/hail/interviews/[id]/responses/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/hail/interviews/[id]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/hail/setup-packages/[id]/apply/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/hail/setup-packages/validate/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/heartbeat/tick/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/heartbeat/worker/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/help/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/hermes/jobs/[id]/events/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/hermes/jobs/[id]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/hermes/jobs/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/integrations/google/callback/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/integrations/google/oauth/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/marketplace/[id]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/marketplace/open-design/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/marketplace/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mines/import-roots/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mines/portfolio/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mines/projects/[id]/chunks/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mines/projects/[id]/diligence/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mines/projects/[id]/import/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mines/projects/[id]/publish/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mines/projects/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/missions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/onboarding/blueprint/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/onboarding/launch/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/orchestrator/command/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/orchestrator/stream/attach/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/orchestrator/stream/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/orchestrator/upload/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/org/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/orgs/[id]/invites/[inviteId]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/orgs/[id]/invites/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/orgs/[id]/members/[userId]/role/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/orgs/[id]/members/[userId]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/orgs/[id]/members/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/orgs/[id]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/orgs/invites/pending/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/orgs/join/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/orgs/join-complete/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/orgs/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/printing-press/clis/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/printing-press/install/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/printing-press/security-mode/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/privacy/config/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/privacy/verify/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/processes/[id]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/processes/[id]/share-link/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/processes/[id]/stages/[stageId]/override/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/processes/[id]/stages/[stageId]/retry/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/processes/[id]/stages/[stageId]/submit/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/processes/definitions/[slug]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/processes/definitions/[slug]/settings/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/processes/definitions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/processes/definitions/validate/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/processes/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/processes/start-and-route/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[slug]/library/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[slug]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/runs/approve-claude-run/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/runs/claude-code-dry-run/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/runs/competitor-report/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/runs/engine-ping/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/runs/marketing-plan/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/schedules/upsert/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/secrets/[name]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/secrets/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/settings/trust-mode/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/share/[token]/otp/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/share/[token]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/share/[token]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/share/[token]/verify/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/share/space/[token]/otp/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/share/space/[token]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/share/space/[token]/verify/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/shared/spaces/[id]/acl/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/shared/spaces/publish/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/shared/spaces/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/shared/spaces/status/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/shared/spaces/unpublish/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/state/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/system/update/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[id]/active-run/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[id]/attachments/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[id]/checklist/[itemId]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[id]/checklist/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[id]/checkout/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[id]/children/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[id]/comments/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[id]/events/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[id]/live-runs/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[id]/release/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[id]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tool-allowlists/[id]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tool-allowlists/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tool-egress/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tools/[name]/approve/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tools/[name]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tools/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/transcripts/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/voice/providers/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/voice/realtime/context/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/voice/realtime/session/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/voice/realtime/tool-result/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/voice/realtime/tools/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/voice/tts/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/whatsapp/allowlist/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/whatsapp/disconnect/route.js +1 -1
- package/.next/standalone/.next/server/app/api/whatsapp/disconnect/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/whatsapp/messages/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/whatsapp/qr/route.js +1 -1
- package/.next/standalone/.next/server/app/api/whatsapp/qr/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/whatsapp/send/route.js +1 -1
- package/.next/standalone/.next/server/app/api/whatsapp/send/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/whatsapp/status/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/approvals/page.js +1 -1
- package/.next/standalone/.next/server/app/approvals/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/architecture/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/architecture.html +2 -2
- package/.next/standalone/.next/server/app/architecture.rsc +3 -3
- package/.next/standalone/.next/server/app/audit/live/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/audit/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/brand/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/brand.html +2 -2
- package/.next/standalone/.next/server/app/brand.rsc +3 -3
- package/.next/standalone/.next/server/app/disk/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/federated-ai/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/federated-ai.html +2 -2
- package/.next/standalone/.next/server/app/federated-ai.rsc +3 -3
- package/.next/standalone/.next/server/app/hail/[id]/governance/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/hail/[id]/interview/page.js +2 -2
- package/.next/standalone/.next/server/app/hail/[id]/interview/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/hail/[id]/page.js +2 -2
- package/.next/standalone/.next/server/app/hail/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/hail/[id]/setup/page.js +2 -2
- package/.next/standalone/.next/server/app/hail/[id]/setup/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/hail/page.js +2 -2
- package/.next/standalone/.next/server/app/hail/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/help/[slug]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/help/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/index.html +2 -2
- package/.next/standalone/.next/server/app/index.rsc +3 -3
- package/.next/standalone/.next/server/app/join/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/join.html +1 -1
- package/.next/standalone/.next/server/app/join.rsc +3 -3
- package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/marketplace/page.js +2 -2
- package/.next/standalone/.next/server/app/marketplace/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/mines/[projectId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/mines/[projectId]/results/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/mines/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/missions/page.js +2 -2
- package/.next/standalone/.next/server/app/missions/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/onboarding/org/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/onboarding/team/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/onboarding.html +2 -2
- package/.next/standalone/.next/server/app/onboarding.rsc +3 -3
- package/.next/standalone/.next/server/app/org/page.js +1 -1
- package/.next/standalone/.next/server/app/org/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/org/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects/[slug]/log/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects/new/page.js +2 -2
- package/.next/standalone/.next/server/app/projects/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects/new.html +2 -2
- package/.next/standalone/.next/server/app/projects/new.rsc +4 -4
- package/.next/standalone/.next/server/app/projects/page.js +20 -9
- package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/reports/[file]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/reports/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/runtime/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/schedules/page.js +2 -2
- package/.next/standalone/.next/server/app/schedules/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/account/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/advanced/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/appearance/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/brand/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/brand.html +2 -2
- package/.next/standalone/.next/server/app/settings/brand.rsc +3 -3
- package/.next/standalone/.next/server/app/settings/connectors/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/engines/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/onboarding/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/onboarding.html +2 -2
- package/.next/standalone/.next/server/app/settings/onboarding.rsc +3 -3
- package/.next/standalone/.next/server/app/settings/organization/page.js +1 -1
- package/.next/standalone/.next/server/app/settings/organization/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/organization/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/runtime/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/team/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/tools/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings.html +2 -2
- package/.next/standalone/.next/server/app/settings.rsc +3 -3
- package/.next/standalone/.next/server/app/share/[token]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/share/space/[token]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/tasks/[id]/page.js +2 -2
- package/.next/standalone/.next/server/app/tasks/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/tasks/page.js +1 -1
- package/.next/standalone/.next/server/app/tasks/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/team/[agentId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/team/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/whatsapp/page.js +1 -1
- package/.next/standalone/.next/server/app/whatsapp/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/whatsapp.html +2 -2
- package/.next/standalone/.next/server/app/whatsapp.rsc +4 -4
- package/.next/standalone/.next/server/app/workflows/[caseId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workflows/new/[caseId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workflows/new/definition/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workflows/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/workflows/share/[caseId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app-paths-manifest.json +92 -89
- package/.next/standalone/.next/server/chunks/1699.js +12 -1
- package/.next/standalone/.next/server/chunks/4143.js +1 -1
- package/.next/standalone/.next/server/chunks/4949.js +1 -0
- package/.next/standalone/.next/server/chunks/511.js +1 -1
- package/.next/standalone/.next/server/chunks/6059.js +1 -1
- package/.next/standalone/.next/server/chunks/8390.js +29 -6
- package/.next/standalone/.next/server/functions-config-manifest.json +40 -37
- package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/.next/standalone/.next/server/middleware-manifest.json +5 -5
- package/.next/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/standalone/.next/server/pages/404.html +2 -2
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/pages-manifest.json +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/static/DolrPgGSY-J2Mq_5nw2iX/_buildManifest.js +1 -0
- package/.next/standalone/.next/static/chunks/3168.bfda0afc8c838efd.js +1 -0
- package/.next/standalone/.next/static/chunks/4119-88678985133f8e3e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/activity/loading-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/agents/[id]/loading-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/agents/loading-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/activity/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/admin/audit-export/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/admin/share-links/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agent-memory/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agent-runs/[id]/cancel/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agent-runs/[id]/events/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agent-runs/[id]/log/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agent-runs/[id]/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agent-runs/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agents/[id]/active-run/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agents/[id]/chain/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agents/[id]/memory/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agents/[id]/reports/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agents/[id]/run/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agents/[id]/skills/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agents/active-runs/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agents/create/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agents/ops/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agents/resume-approval/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/approvals/[id]/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/approvals/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/acl/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/protect/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/raw/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/share-link/[linkId]/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/share-link/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/artifacts/upload/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/audit/list/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/audit/search/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/config/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/join-bootstrap/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/session/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/brand/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/brand/share/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/chat/sessions/[id]/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/chat/sessions/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/cloud/schema/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/compliance/export/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/config/env/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/config/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/connections/[service]/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/connections/[service]/verify/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/connections/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/connectivity/allowlist/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/connectivity/smoke/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/connectivity/status/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/cron/tick/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/[id]/move/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/[id]/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/[id]/share-link/[linkId]/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/[id]/share-link/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/import/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/layout/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/disk/files/[id]/blob/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/disk/files/[id]/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/disk/files/[id]/transcribe/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/disk/files/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/disk/folders/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/events/since/[cursor]/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/events/stream/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/fs/create-folder/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/fs/pick-folder/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/blueprint/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/diagnostic/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/governance/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/interview/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/pilot/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/quarterly/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/setup-package/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/hail/engagements/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/hail/interviews/[id]/responses/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/hail/interviews/[id]/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/hail/setup-packages/[id]/apply/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/hail/setup-packages/validate/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/heartbeat/tick/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/heartbeat/worker/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/help/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/hermes/jobs/[id]/events/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/hermes/jobs/[id]/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/hermes/jobs/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/integrations/google/callback/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/integrations/google/oauth/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/marketplace/[id]/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/marketplace/open-design/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/marketplace/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/mines/import-roots/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/mines/portfolio/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/mines/projects/[id]/chunks/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/mines/projects/[id]/diligence/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/mines/projects/[id]/import/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/mines/projects/[id]/publish/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/mines/projects/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/missions/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/models/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/onboarding/blueprint/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/onboarding/launch/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/orchestrator/command/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/orchestrator/stream/attach/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/orchestrator/stream/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/orchestrator/upload/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/org/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/invites/[inviteId]/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/invites/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/members/[userId]/role/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/members/[userId]/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/members/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/orgs/invites/pending/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/orgs/join/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/orgs/join-complete/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/orgs/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/printing-press/clis/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/printing-press/install/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/printing-press/security-mode/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/privacy/config/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/privacy/verify/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/processes/[id]/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/processes/[id]/share-link/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/override/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/retry/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/submit/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/processes/definitions/[slug]/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/processes/definitions/[slug]/settings/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/processes/definitions/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/processes/definitions/validate/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/processes/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/processes/start-and-route/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[slug]/library/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[slug]/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/runs/approve-claude-run/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/runs/claude-code-dry-run/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/runs/competitor-report/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/runs/engine-ping/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/runs/marketing-plan/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/schedules/upsert/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/secrets/[name]/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/secrets/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/settings/trust-mode/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/share/[token]/otp/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/share/[token]/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/share/[token]/verify/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/share/space/[token]/otp/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/share/space/[token]/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/share/space/[token]/verify/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/shared/spaces/[id]/acl/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/shared/spaces/publish/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/shared/spaces/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/shared/spaces/status/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/shared/spaces/unpublish/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/state/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/system/update/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/active-run/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/attachments/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/checklist/[itemId]/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/checklist/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/checkout/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/children/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/comments/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/events/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/live-runs/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/release/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tool-allowlists/[id]/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tool-allowlists/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tool-egress/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tools/[name]/approve/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tools/[name]/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tools/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/transcripts/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/voice/providers/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/voice/realtime/context/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/voice/realtime/session/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/voice/realtime/tool-result/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/voice/realtime/tools/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/voice/tts/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/whatsapp/allowlist/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/whatsapp/disconnect/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/whatsapp/messages/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/whatsapp/qr/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/whatsapp/send/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/whatsapp/status/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/approvals/loading-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/architecture/loading-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/audit/loading-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/brand/loading-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/disk/loading-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/federated-ai/loading-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/help/loading-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/layout-1fe56531c37a6849.js +1 -0
- package/.next/standalone/.next/static/chunks/app/loading-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/marketplace/loading-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/missions/loading-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/onboarding/loading-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/org/loading-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/projects/[slug]/loading-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/projects/loading-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/projects/page-8efb69f23edca22d.js +1 -0
- package/.next/standalone/.next/static/chunks/app/reports/[file]/route-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/reports/loading-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/runtime/loading-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/schedules/loading-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/settings/loading-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/settings/page-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/tasks/[id]/loading-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/tasks/loading-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/tools/loading-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/tools/page-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/whatsapp/loading-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/whatsapp/page-0a722b2ff89d8fb0.js +1 -0
- package/.next/standalone/.next/static/chunks/app/workflows/share/[caseId]/page-50b3fa7d503e745e.js +1 -0
- package/.next/standalone/.next/static/chunks/webpack-898ec578bfafc53f.js +1 -0
- package/.next/standalone/CHANGELOG.md +14 -8
- package/.next/standalone/package.json +2 -1
- package/.next/static/DolrPgGSY-J2Mq_5nw2iX/_buildManifest.js +1 -0
- package/.next/static/chunks/3168.bfda0afc8c838efd.js +1 -0
- package/.next/static/chunks/4119-88678985133f8e3e.js +1 -0
- package/.next/static/chunks/app/activity/loading-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/agents/[id]/loading-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/agents/loading-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/activity/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/admin/audit-export/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/admin/share-links/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/agent-memory/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/agent-runs/[id]/cancel/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/agent-runs/[id]/events/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/agent-runs/[id]/log/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/agent-runs/[id]/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/agent-runs/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/agents/[id]/active-run/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/agents/[id]/chain/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/agents/[id]/memory/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/agents/[id]/reports/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/agents/[id]/run/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/agents/[id]/skills/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/agents/active-runs/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/agents/create/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/agents/ops/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/agents/resume-approval/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/approvals/[id]/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/approvals/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/artifacts/[id]/acl/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/artifacts/[id]/protect/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/artifacts/[id]/raw/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/artifacts/[id]/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/artifacts/[id]/share-link/[linkId]/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/artifacts/[id]/share-link/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/artifacts/upload/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/audit/list/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/audit/search/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/auth/callback/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/auth/config/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/auth/join-bootstrap/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/auth/session/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/brand/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/brand/share/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/chat/sessions/[id]/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/chat/sessions/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/cloud/schema/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/compliance/export/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/config/env/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/config/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/connections/[service]/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/connections/[service]/verify/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/connections/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/connectivity/allowlist/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/connectivity/smoke/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/connectivity/status/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/cron/tick/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/dashboard/spaces/[id]/move/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/dashboard/spaces/[id]/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/dashboard/spaces/[id]/share-link/[linkId]/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/dashboard/spaces/[id]/share-link/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/dashboard/spaces/import/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/dashboard/spaces/layout/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/dashboard/spaces/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/disk/files/[id]/blob/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/disk/files/[id]/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/disk/files/[id]/transcribe/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/disk/files/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/disk/folders/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/events/since/[cursor]/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/events/stream/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/fs/create-folder/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/fs/pick-folder/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/hail/engagements/[id]/blueprint/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/hail/engagements/[id]/diagnostic/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/hail/engagements/[id]/governance/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/hail/engagements/[id]/interview/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/hail/engagements/[id]/pilot/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/hail/engagements/[id]/quarterly/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/hail/engagements/[id]/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/hail/engagements/[id]/setup-package/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/hail/engagements/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/hail/interviews/[id]/responses/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/hail/interviews/[id]/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/hail/setup-packages/[id]/apply/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/hail/setup-packages/validate/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/heartbeat/tick/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/heartbeat/worker/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/help/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/hermes/jobs/[id]/events/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/hermes/jobs/[id]/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/hermes/jobs/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/integrations/google/callback/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/integrations/google/oauth/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/marketplace/[id]/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/marketplace/open-design/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/marketplace/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/mines/import-roots/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/mines/portfolio/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/mines/projects/[id]/chunks/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/mines/projects/[id]/diligence/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/mines/projects/[id]/import/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/mines/projects/[id]/publish/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/mines/projects/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/missions/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/models/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/onboarding/blueprint/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/onboarding/launch/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/orchestrator/command/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/orchestrator/stream/attach/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/orchestrator/stream/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/orchestrator/upload/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/org/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/orgs/[id]/invites/[inviteId]/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/orgs/[id]/invites/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/orgs/[id]/members/[userId]/role/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/orgs/[id]/members/[userId]/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/orgs/[id]/members/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/orgs/[id]/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/orgs/invites/pending/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/orgs/join/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/orgs/join-complete/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/orgs/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/printing-press/clis/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/printing-press/install/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/printing-press/security-mode/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/privacy/config/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/privacy/verify/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/processes/[id]/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/processes/[id]/share-link/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/override/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/retry/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/submit/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/processes/definitions/[slug]/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/processes/definitions/[slug]/settings/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/processes/definitions/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/processes/definitions/validate/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/processes/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/processes/start-and-route/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/projects/[slug]/library/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/projects/[slug]/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/projects/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/runs/approve-claude-run/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/runs/claude-code-dry-run/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/runs/competitor-report/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/runs/engine-ping/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/runs/marketing-plan/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/schedules/upsert/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/secrets/[name]/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/secrets/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/settings/trust-mode/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/share/[token]/otp/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/share/[token]/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/share/[token]/verify/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/share/space/[token]/otp/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/share/space/[token]/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/share/space/[token]/verify/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/shared/spaces/[id]/acl/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/shared/spaces/publish/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/shared/spaces/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/shared/spaces/status/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/shared/spaces/unpublish/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/state/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/system/update/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/tasks/[id]/active-run/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/tasks/[id]/attachments/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/tasks/[id]/checklist/[itemId]/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/tasks/[id]/checklist/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/tasks/[id]/checkout/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/tasks/[id]/children/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/tasks/[id]/comments/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/tasks/[id]/events/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/tasks/[id]/live-runs/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/tasks/[id]/release/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/tasks/[id]/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/tasks/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/tool-allowlists/[id]/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/tool-allowlists/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/tool-egress/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/tools/[name]/approve/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/tools/[name]/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/tools/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/transcripts/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/voice/providers/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/voice/realtime/context/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/voice/realtime/session/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/voice/realtime/tool-result/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/voice/realtime/tools/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/voice/tts/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/whatsapp/allowlist/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/whatsapp/disconnect/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/whatsapp/messages/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/whatsapp/qr/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/whatsapp/send/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/api/whatsapp/status/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/approvals/loading-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/architecture/loading-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/audit/loading-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/brand/loading-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/disk/loading-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/federated-ai/loading-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/help/loading-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/layout-1fe56531c37a6849.js +1 -0
- package/.next/static/chunks/app/loading-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/marketplace/loading-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/missions/loading-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/onboarding/loading-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/org/loading-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/projects/[slug]/loading-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/projects/loading-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/projects/page-8efb69f23edca22d.js +1 -0
- package/.next/static/chunks/app/reports/[file]/route-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/reports/loading-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/runtime/loading-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/schedules/loading-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/settings/loading-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/settings/page-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/tasks/[id]/loading-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/tasks/loading-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/tools/loading-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/tools/page-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/whatsapp/loading-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/app/whatsapp/page-0a722b2ff89d8fb0.js +1 -0
- package/.next/static/chunks/app/workflows/share/[caseId]/page-50b3fa7d503e745e.js +1 -0
- package/.next/static/chunks/webpack-898ec578bfafc53f.js +1 -0
- package/CHANGELOG.md +14 -8
- package/ai-docs/api-surface.md +6 -2
- package/ai-docs/key-constraints.md +1 -1
- package/app/api/connectivity/allowlist/route.js +72 -0
- package/app/api/connectivity/smoke/route.js +40 -0
- package/app/api/connectivity/status/route.js +18 -0
- package/app/components/app-topbar.jsx +22 -13
- package/app/components/dashboard/config-panel.jsx +6 -6
- package/app/components/dashboard/whatsapp-section.jsx +85 -20
- package/app/whatsapp/page.js +4 -4
- package/lib/channel-allowlist.js +144 -0
- package/lib/channels/discord-adapter.js +117 -0
- package/lib/channels/imessage-adapter.js +106 -0
- package/lib/channels/index.js +40 -3
- package/lib/channels/signal-adapter.js +96 -0
- package/lib/channels/slack-adapter.js +86 -0
- package/lib/channels/smoke.js +36 -0
- package/lib/channels/telegram-adapter.js +89 -0
- package/lib/channels/webhook-adapter.js +64 -0
- package/lib/connectivity-status.js +110 -0
- package/lib/sandbox/index.js +334 -49
- package/lib/schema.js +11 -0
- package/lib/whatsapp-router.js +22 -12
- package/package.json +2 -1
- package/scripts/vreach-channel-smoke.mjs +105 -0
- package/.next/standalone/.next/server/chunks/8460.js +0 -1
- package/.next/standalone/.next/static/-RjcZjzMx7XdfCnofRZHf/_buildManifest.js +0 -1
- package/.next/standalone/.next/static/chunks/3168.9b96304f6b1d2346.js +0 -1
- package/.next/standalone/.next/static/chunks/4119-cfb6260557a0a3d2.js +0 -1
- package/.next/standalone/.next/static/chunks/app/activity/loading-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/agents/[id]/loading-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/agents/loading-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/activity/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/admin/audit-export/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/admin/share-links/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agent-memory/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agent-runs/[id]/cancel/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agent-runs/[id]/events/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agent-runs/[id]/log/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agent-runs/[id]/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agent-runs/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agents/[id]/active-run/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agents/[id]/chain/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agents/[id]/memory/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agents/[id]/reports/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agents/[id]/run/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agents/[id]/skills/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agents/active-runs/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agents/create/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agents/ops/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agents/resume-approval/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/approvals/[id]/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/approvals/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/acl/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/protect/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/raw/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/share-link/[linkId]/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/artifacts/[id]/share-link/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/artifacts/upload/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/audit/list/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/audit/search/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/config/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/join-bootstrap/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/session/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/brand/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/brand/share/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/chat/sessions/[id]/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/chat/sessions/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/cloud/schema/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/compliance/export/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/config/env/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/config/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/connections/[service]/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/connections/[service]/verify/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/connections/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/cron/tick/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/[id]/move/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/[id]/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/[id]/share-link/[linkId]/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/[id]/share-link/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/import/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/layout/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/dashboard/spaces/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/disk/files/[id]/blob/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/disk/files/[id]/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/disk/files/[id]/transcribe/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/disk/files/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/disk/folders/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/events/since/[cursor]/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/events/stream/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/fs/create-folder/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/fs/pick-folder/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/blueprint/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/diagnostic/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/governance/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/interview/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/pilot/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/quarterly/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/hail/engagements/[id]/setup-package/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/hail/engagements/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/hail/interviews/[id]/responses/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/hail/interviews/[id]/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/hail/setup-packages/[id]/apply/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/hail/setup-packages/validate/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/heartbeat/tick/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/heartbeat/worker/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/help/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/hermes/jobs/[id]/events/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/hermes/jobs/[id]/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/hermes/jobs/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/integrations/google/callback/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/integrations/google/oauth/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/marketplace/[id]/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/marketplace/open-design/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/marketplace/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/mines/import-roots/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/mines/portfolio/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/mines/projects/[id]/chunks/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/mines/projects/[id]/diligence/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/mines/projects/[id]/import/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/mines/projects/[id]/publish/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/mines/projects/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/missions/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/models/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/onboarding/blueprint/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/onboarding/launch/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/orchestrator/command/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/orchestrator/stream/attach/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/orchestrator/stream/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/orchestrator/upload/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/org/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/invites/[inviteId]/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/invites/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/members/[userId]/role/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/members/[userId]/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/members/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/orgs/[id]/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/orgs/invites/pending/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/orgs/join/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/orgs/join-complete/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/orgs/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/printing-press/clis/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/printing-press/install/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/printing-press/security-mode/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/privacy/config/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/privacy/verify/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/processes/[id]/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/processes/[id]/share-link/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/override/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/retry/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/submit/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/processes/definitions/[slug]/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/processes/definitions/[slug]/settings/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/processes/definitions/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/processes/definitions/validate/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/processes/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/processes/start-and-route/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[slug]/library/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[slug]/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/runs/approve-claude-run/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/runs/claude-code-dry-run/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/runs/competitor-report/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/runs/engine-ping/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/runs/marketing-plan/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/schedules/upsert/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/secrets/[name]/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/secrets/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/settings/trust-mode/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/share/[token]/otp/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/share/[token]/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/share/[token]/verify/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/share/space/[token]/otp/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/share/space/[token]/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/share/space/[token]/verify/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/shared/spaces/[id]/acl/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/shared/spaces/publish/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/shared/spaces/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/shared/spaces/status/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/shared/spaces/unpublish/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/state/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/system/update/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/active-run/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/attachments/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/checklist/[itemId]/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/checklist/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/checkout/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/children/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/comments/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/events/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/live-runs/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/release/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[id]/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tool-allowlists/[id]/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tool-allowlists/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tool-egress/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tools/[name]/approve/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tools/[name]/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tools/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/transcripts/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/voice/providers/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/voice/realtime/context/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/voice/realtime/session/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/voice/realtime/tool-result/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/voice/realtime/tools/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/voice/tts/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/whatsapp/allowlist/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/whatsapp/disconnect/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/whatsapp/messages/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/whatsapp/qr/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/whatsapp/send/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/whatsapp/status/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/approvals/loading-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/architecture/loading-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/audit/loading-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/brand/loading-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/disk/loading-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/federated-ai/loading-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/help/loading-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/layout-212e0d6723e7eb38.js +0 -1
- package/.next/standalone/.next/static/chunks/app/loading-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/marketplace/loading-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/missions/loading-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/onboarding/loading-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/org/loading-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/projects/[slug]/loading-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/projects/loading-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/projects/page-4917c27caba276a2.js +0 -1
- package/.next/standalone/.next/static/chunks/app/reports/[file]/route-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/reports/loading-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/runtime/loading-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/schedules/loading-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/settings/loading-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/settings/page-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/tasks/[id]/loading-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/tasks/loading-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/tools/loading-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/tools/page-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/whatsapp/loading-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/whatsapp/page-e68333286b73e532.js +0 -1
- package/.next/standalone/.next/static/chunks/app/workflows/share/[caseId]/page-330c75ad96940fb9.js +0 -1
- package/.next/standalone/.next/static/chunks/webpack-70fa3d729cba3d69.js +0 -1
- package/.next/static/-RjcZjzMx7XdfCnofRZHf/_buildManifest.js +0 -1
- package/.next/static/chunks/3168.9b96304f6b1d2346.js +0 -1
- package/.next/static/chunks/4119-cfb6260557a0a3d2.js +0 -1
- package/.next/static/chunks/app/activity/loading-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/agents/[id]/loading-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/agents/loading-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/activity/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/admin/audit-export/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/admin/share-links/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/agent-memory/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/agent-runs/[id]/cancel/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/agent-runs/[id]/events/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/agent-runs/[id]/log/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/agent-runs/[id]/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/agent-runs/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/agents/[id]/active-run/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/agents/[id]/chain/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/agents/[id]/memory/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/agents/[id]/reports/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/agents/[id]/run/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/agents/[id]/skills/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/agents/active-runs/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/agents/create/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/agents/ops/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/agents/resume-approval/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/approvals/[id]/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/approvals/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/artifacts/[id]/acl/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/artifacts/[id]/protect/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/artifacts/[id]/raw/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/artifacts/[id]/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/artifacts/[id]/share-link/[linkId]/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/artifacts/[id]/share-link/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/artifacts/upload/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/audit/list/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/audit/search/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/auth/callback/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/auth/config/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/auth/join-bootstrap/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/auth/session/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/brand/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/brand/share/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/chat/sessions/[id]/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/chat/sessions/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/cloud/schema/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/compliance/export/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/config/env/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/config/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/connections/[service]/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/connections/[service]/verify/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/connections/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/cron/tick/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/dashboard/spaces/[id]/move/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/dashboard/spaces/[id]/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/dashboard/spaces/[id]/share-link/[linkId]/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/dashboard/spaces/[id]/share-link/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/dashboard/spaces/import/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/dashboard/spaces/layout/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/dashboard/spaces/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/disk/files/[id]/blob/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/disk/files/[id]/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/disk/files/[id]/transcribe/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/disk/files/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/disk/folders/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/events/since/[cursor]/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/events/stream/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/fs/create-folder/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/fs/pick-folder/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/hail/engagements/[id]/blueprint/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/hail/engagements/[id]/diagnostic/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/hail/engagements/[id]/governance/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/hail/engagements/[id]/interview/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/hail/engagements/[id]/pilot/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/hail/engagements/[id]/quarterly/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/hail/engagements/[id]/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/hail/engagements/[id]/setup-package/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/hail/engagements/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/hail/interviews/[id]/responses/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/hail/interviews/[id]/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/hail/setup-packages/[id]/apply/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/hail/setup-packages/validate/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/heartbeat/tick/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/heartbeat/worker/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/help/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/hermes/jobs/[id]/events/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/hermes/jobs/[id]/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/hermes/jobs/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/integrations/google/callback/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/integrations/google/oauth/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/marketplace/[id]/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/marketplace/open-design/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/marketplace/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/mines/import-roots/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/mines/portfolio/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/mines/projects/[id]/chunks/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/mines/projects/[id]/diligence/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/mines/projects/[id]/import/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/mines/projects/[id]/publish/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/mines/projects/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/missions/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/models/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/onboarding/blueprint/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/onboarding/launch/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/orchestrator/command/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/orchestrator/stream/attach/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/orchestrator/stream/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/orchestrator/upload/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/org/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/orgs/[id]/invites/[inviteId]/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/orgs/[id]/invites/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/orgs/[id]/members/[userId]/role/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/orgs/[id]/members/[userId]/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/orgs/[id]/members/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/orgs/[id]/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/orgs/invites/pending/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/orgs/join/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/orgs/join-complete/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/orgs/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/printing-press/clis/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/printing-press/install/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/printing-press/security-mode/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/privacy/config/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/privacy/verify/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/processes/[id]/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/processes/[id]/share-link/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/override/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/retry/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/processes/[id]/stages/[stageId]/submit/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/processes/definitions/[slug]/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/processes/definitions/[slug]/settings/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/processes/definitions/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/processes/definitions/validate/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/processes/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/processes/start-and-route/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/projects/[slug]/library/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/projects/[slug]/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/projects/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/runs/approve-claude-run/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/runs/claude-code-dry-run/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/runs/competitor-report/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/runs/engine-ping/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/runs/marketing-plan/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/schedules/upsert/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/secrets/[name]/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/secrets/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/settings/trust-mode/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/share/[token]/otp/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/share/[token]/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/share/[token]/verify/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/share/space/[token]/otp/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/share/space/[token]/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/share/space/[token]/verify/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/shared/spaces/[id]/acl/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/shared/spaces/publish/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/shared/spaces/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/shared/spaces/status/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/shared/spaces/unpublish/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/state/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/system/update/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/tasks/[id]/active-run/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/tasks/[id]/attachments/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/tasks/[id]/checklist/[itemId]/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/tasks/[id]/checklist/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/tasks/[id]/checkout/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/tasks/[id]/children/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/tasks/[id]/comments/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/tasks/[id]/events/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/tasks/[id]/live-runs/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/tasks/[id]/release/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/tasks/[id]/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/tasks/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/tool-allowlists/[id]/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/tool-allowlists/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/tool-egress/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/tools/[name]/approve/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/tools/[name]/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/tools/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/transcripts/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/voice/providers/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/voice/realtime/context/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/voice/realtime/session/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/voice/realtime/tool-result/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/voice/realtime/tools/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/voice/tts/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/whatsapp/allowlist/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/whatsapp/disconnect/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/whatsapp/messages/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/whatsapp/qr/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/whatsapp/send/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/api/whatsapp/status/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/approvals/loading-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/architecture/loading-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/audit/loading-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/brand/loading-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/disk/loading-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/federated-ai/loading-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/help/loading-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/layout-212e0d6723e7eb38.js +0 -1
- package/.next/static/chunks/app/loading-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/marketplace/loading-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/missions/loading-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/onboarding/loading-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/org/loading-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/projects/[slug]/loading-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/projects/loading-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/projects/page-4917c27caba276a2.js +0 -1
- package/.next/static/chunks/app/reports/[file]/route-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/reports/loading-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/runtime/loading-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/schedules/loading-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/settings/loading-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/settings/page-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/tasks/[id]/loading-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/tasks/loading-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/tools/loading-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/tools/page-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/whatsapp/loading-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/app/whatsapp/page-e68333286b73e532.js +0 -1
- package/.next/static/chunks/app/workflows/share/[caseId]/page-330c75ad96940fb9.js +0 -1
- package/.next/static/chunks/webpack-70fa3d729cba3d69.js +0 -1
- /package/.next/standalone/.next/static/{-RjcZjzMx7XdfCnofRZHf → DolrPgGSY-J2Mq_5nw2iX}/_ssgManifest.js +0 -0
- /package/.next/static/{-RjcZjzMx7XdfCnofRZHf → DolrPgGSY-J2Mq_5nw2iX}/_ssgManifest.js +0 -0
|
@@ -1780,6 +1780,17 @@ CREATE TABLE IF NOT EXISTS whatsapp_allowlist (
|
|
|
1780
1780
|
UNIQUE(chat_id)
|
|
1781
1781
|
);
|
|
1782
1782
|
|
|
1783
|
+
CREATE TABLE IF NOT EXISTS channel_allowlist (
|
|
1784
|
+
id TEXT PRIMARY KEY,
|
|
1785
|
+
channel TEXT NOT NULL,
|
|
1786
|
+
address TEXT NOT NULL,
|
|
1787
|
+
kind TEXT NOT NULL DEFAULT 'dm',
|
|
1788
|
+
label TEXT,
|
|
1789
|
+
created_at TEXT NOT NULL,
|
|
1790
|
+
UNIQUE(channel, address)
|
|
1791
|
+
);
|
|
1792
|
+
CREATE INDEX IF NOT EXISTS idx_channel_allowlist_channel ON channel_allowlist(channel);
|
|
1793
|
+
|
|
1783
1794
|
-- Per-chat conversation session boundary. session_started_at is the cutoff for
|
|
1784
1795
|
-- history reconstruction: buildWhatsAppHistory only replays whatsapp_messages rows
|
|
1785
1796
|
-- with created_at >= session_started_at. The /new command advances it to now,
|
|
@@ -3143,7 +3154,7 @@ is irreversible_external and always shows its approval banner.
|
|
|
3143
3154
|
|
|
3144
3155
|
LANGUAGE: English. Spanish source terms preserved in parentheses on first use.`}];function h(){try{let a=(0,e.getDb)();for(let b of j)a.prepare("SELECT id FROM agents WHERE id = ?").get(b.id)||(0,f.Sn)({id:b.id,name:b.name,engine:b.engine,schedule:b.schedule||"on demand",role:b.role,title:b.title,tools:b.tools,system_prompt:b.system_prompt,type:"mines",suppress_live_event:!0})}catch(a){console.warn("[mines/seeds] seedMinesAgents failed:",a?.message||a)}}function i(){let a=0;for(let b of j)try{let c=(0,f.RB)(b.id);c?.ok&&(a+=1)}catch(a){console.warn("[mines/seeds] removeMinesAgents failed for",b.id,a?.message||a)}return a}d()}catch(a){d(a)}})},54858:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{y:()=>m});var e=c(73024),f=c(76760),g=c(9381),h=c(34255),i=c(61423),j=c(73066),k=a([h,i,j]);[h,i,j]=k.then?(await k)():k;let n=f.join(g.nJ,".artifacts-migrated-v1");function l(a){return f.relative(g.Dl,a)}function m({force:a=!1,log:b=()=>{}}={}){if(!a&&function(){try{return e.existsSync(n)}catch{return!1}}())return{ok:!0,skipped:!0,reason:"already_migrated"};let c=(0,h.getDb)(),d=[];try{d=c.prepare("SELECT id, path, project_id FROM artifacts WHERE path IS NOT NULL AND path != ''").all()}catch{return{ok:!1,error:"artifacts table unavailable",summary:null}}let k={moved:0,rewritten:0,missing_on_disk:0,already_scoped:0,errors:0,details:[]},o=f.resolve(g.yQ),p=o+f.sep;c.exec("BEGIN IMMEDIATE");try{for(let a of d){let d=f.resolve(g.Dl,a.path),h=function(a){let b=a.project_id||i.Sk;return(0,i.U1)(b)||(0,i.U1)(i.Sk)}(a);if(!h){k.errors++;continue}let m=(0,j.v2)(h),n=f.resolve(m);if(d===n||d.startsWith(n+f.sep)||!(d===o||d.startsWith(p))){k.already_scoped++;continue}try{e.mkdirSync(m,{recursive:!0})}catch{}let q=f.basename(d),r=f.join(m,q),s=l(r);try{if(e.existsSync(d)){let b=r,g=s,i=!1;if(e.existsSync(r)&&d!==r){let a=f.extname(q),c=f.basename(q,a),d=Date.now().toString(36);b=f.join(m,`${c}-${d}${a}`),g=l(b),i=!0}e.renameSync(d,b),c.prepare("UPDATE artifacts SET path = ?, project_id = ? WHERE id = ?").run(g,h.id,a.id),k.moved++,k.rewritten++,k.details.push({id:a.id,from:a.path,to:g,collision:i})}else k.missing_on_disk++,c.prepare("UPDATE artifacts SET path = ?, project_id = ? WHERE id = ?").run(s,h.id,a.id),k.rewritten++,k.details.push({id:a.id,from:a.path,to:s,file_missing:!0})}catch(c){k.errors++,b(`migrate-artifacts: failed for ${a.id} (${a.path}): ${c.message}`)}}c.exec("COMMIT")}catch(a){try{c.exec("ROLLBACK")}catch{}return b(`migrate-artifacts: rolled back: ${a.message}`),{ok:!1,error:a.message,summary:k}}try{e.writeFileSync(n,`${new Date().toISOString()}
|
|
3145
3156
|
${JSON.stringify(k,null,2)}
|
|
3146
|
-
`,"utf8")}catch{}return{ok:!0,skipped:!1,summary:k}}d()}catch(a){d(a)}})},56050:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{p:()=>o});var e=c(24516),f=c(58282),g=c(59400),h=c(45907),i=c(72550),j=c(59237),k=a([e,f,g,h,j]);[e,f,g,h,j]=k.then?(await k)():k;let p=new Set(["__connector_slug","__endpoint","approval_id","body","query"]);function l(a){let b,c=[],d=/\{([a-z][a-z0-9_]*)\}/g;for(;null!==(b=d.exec(a));)c.push(b[1]);return c}function m(a={}){let b={},c={},d=a=>{let b=(0,e.getSecret)(a);if(null==b||""===b){let b=Error(`Required secret not configured: ${a}`);throw b.code="secret_missing",b.secret_ref=a,b}return String(b)};if("bearer"===a.type){let c=d(a.secret_ref);b[a.header||"Authorization"]=`${a.prefix??"Bearer "}${c}`}else if("api_key"===a.type){let e=d(a.secret_ref);a.query_param?c[a.query_param]=`${a.prefix??""}${e}`:b[a.header||"Authorization"]=`${a.prefix??""}${e}`}else if("basic"===a.type){let c=d(a.username_ref),e=d(a.password_ref);b.Authorization=`Basic ${Buffer.from(`${c}:${e}`).toString("base64")}`}else if("oauth2"===a.type){let c=d(a.access_token_ref);b[a.header||"Authorization"]=`${a.prefix??"Bearer "}${c}`}return{headers:b,query:c}}async function n(a,b){let c;if(a?.type!=="oauth2"||!a.refresh_token_ref)return!1;let d=(0,e.getSecret)(a.refresh_token_ref);if(!d)return!1;let f=(0,i.Kd)(a.provider,{token_url:a.token_url});if(!f?.token_url)return!1;let g=a.client_id_ref?(0,e.getSecret)(a.client_id_ref):null,h=a.client_secret_ref?(0,e.getSecret)(a.client_secret_ref):null;try{c=await (0,j.J1)(f,{refresh_token:String(d),client_id:g||"",client_secret:h||""},b)}catch{return!1}if(!c?.ok||!c.access_token)return!1;try{(0,e.setSecret)(a.access_token_ref,c.access_token,{source:"oauth_refresh"}),c.refresh_token&&a.refresh_token_ref&&(0,e.setSecret)(a.refresh_token_ref,c.refresh_token,{source:"oauth_refresh"})}catch{return!1}return!0}async function o(a={},b={}){let c,d,e,i=a.__connector_slug,j=a.__endpoint,k=i&&j?`${i}.${j}`:null,q=k?(0,h.tP)(k):null;if(!q)return{ok:!1,status:"error",error:"not_found",message:`Unknown connector endpoint: ${k||"(none)"}`};let{manifest:r,endpointDef:s}=q,t=s.path;for(let b of l(s.path)){let c=a[b]??a.params?.[b];if(null==c||""===c)return{ok:!1,status:"error",error:"missing_path_param",message:`Missing path parameter: ${b}`};t=t.replaceAll(`{${b}}`,encodeURIComponent(String(c)))}if(/\{[a-z]/i.test(t))return{ok:!1,status:"error",error:"missing_path_param",message:`Unresolved path parameter in ${t}`};try{c=new URL(r.base_url.replace(/\/+$/g,"")+t)}catch{return{ok:!1,status:"error",error:"bad_url",message:"Could not build request URL"}}try{(0,g.vC)(c.toString())}catch(a){return{ok:!1,status:"error",error:"blocked_host",message:a.message}}let u=c.hostname.toLowerCase();if(!Array.isArray(r.allowed_hosts)||!r.allowed_hosts.includes(u))return{ok:!1,status:"error",error:"host_not_allowed",message:`Host ${u} is not in the connector allowlist`};try{d=m(r.auth||{})}catch(a){if("secret_missing"===a.code)return{ok:!1,status:"error",error:"secret_missing",secret_ref:a.secret_ref,message:a.message};throw a}for(let[a,b]of Object.entries(d.query))c.searchParams.set(a,b);if(a.query&&"object"==typeof a.query)for(let[b,d]of Object.entries(a.query))null!=d&&c.searchParams.set(b,String(d));let v={Accept:"application/json",...r.default_headers||{}},w=Object.keys(d.headers),x=s.method,y=["POST","PUT","PATCH","DELETE"].includes(x),z=null,A=null;if(y){let b=a.body;if(null==b){let c=l(s.path);for(let[d,e]of(b={},Object.entries(a)))p.has(d)||c.includes(d)||"params"===d||(b[d]=e)}b&&"object"==typeof b&&Object.keys(b).length>0&&(A=(r.default_headers||{})["Content-Type"]||"application/json",z=JSON.stringify(b))}let B=a=>{let b={...v};if(a===c.hostname.toLowerCase())for(let a of w)b[a]=d.headers[a];A&&(b["Content-Type"]=A);let e={method:x,headers:b,redirect:"manual"};return null!=z&&(e.body=z),e},C=(0,f.H)(k,b.agent_id??null),D=new Set([301,302,303,307,308]);for(let a=0;a<2;a++){let b=c,f=null;for(let a=0;a<5;a++){let c;try{e=await C(b,B(b.hostname.toLowerCase()))}catch(a){return{ok:!1,status:"error",error:"request_failed",message:String(a?.message||a)}}if(!D.has(e.status))break;let d=e.headers.get("location");if(!d)break;try{c=new URL(d,b)}catch{return{ok:!1,status:"error",error:"bad_redirect",message:`Invalid redirect target: ${d}`}}try{(0,g.vC)(c.toString())}catch(a){return{ok:!1,status:"error",error:"blocked_redirect",message:`Redirect blocked: ${a.message}`}}if(!r.allowed_hosts.includes(c.hostname.toLowerCase()))return{ok:!1,status:"error",error:"blocked_redirect",message:`Redirect to ${c.hostname} is not in the connector allowlist`};if(b=c,4===a){f={ok:!1,status:"error",error:"too_many_redirects",message:"Exceeded redirect limit"};break}}if(f)return f;if(0===a&&401===e.status&&"oauth2"===(r.auth||{}).type&&await n(r.auth,C)){try{d=m(r.auth||{}),w=Object.keys(d.headers)}catch{break}continue}break}let E=e.headers.get("content-type")||"",F=e.body?.getReader(),G="";if(F){let a=[],b=0;for(;;){let{value:c,done:d}=await F.read();if(d)break;if((b+=c.byteLength)>512e3){G="[response truncated: exceeds 512KB]";break}a.push(c)}G||(G=Buffer.concat(a).toString("utf8"))}else G=(await e.text()).slice(0,512e3);let H=null;if(E.includes("application/json"))try{H=JSON.parse(G)}catch{H=null}return e.ok?{ok:!0,status:"complete",http_status:e.status,content_type:E,data:H??G.slice(0,512e3)}:{ok:!1,status:"error",error:"http_error",http_status:e.status,message:`${x} ${j} → ${e.status}`,body:H??G.slice(0,2e3)}}d()}catch(a){d(a)}})},56137:(a,b,c)=>{"use strict";c.d(b,{MV:()=>n,TL:()=>r,ks:()=>q});var d=c(76760);let e=["off","non-main","all"],f=["session","agent","shared"],g=["docker","ssh","local"],h="madarx/sandbox:latest",i="/sandbox",j=new Set(["/","/etc","/bin","/sbin","/usr","/var","/lib","/lib64","/opt","/boot","/dev","/proc","/sys","/run","/root","/home","/Users","/System","/Library","/private","/Applications","/Volumes","/mnt","/media"]),k=/(?:KEY|TOKEN|SECRET|PASSWORD|PASSWD|CREDENTIAL)/i,l=/^(?:LD_|DYLD_)/;function m(a,b,c){let d=String(a||"").trim().toLowerCase();return b.includes(d)?d:c}function n(a={},b={}){var c;let d=b.env||process.env,j=m(a.mode??d.MADARX_SANDBOX_MODE,e,"off"),k=m(a.scope??d.MADARX_SANDBOX_SCOPE,f,"session"),l=m(a.backend??d.MADARX_SANDBOX_BACKEND,g,"docker"),o=String(a.image??d.MADARX_SANDBOX_IMAGE??h).trim()||h,p=String(a.network??d.MADARX_SANDBOX_NETWORK??"none").trim()||"none",q=String(a.workdir??d.MADARX_SANDBOX_WORKDIR??i).trim()||i,r=(c=a.liveDocker??d.MADARX_SANDBOX_LIVE_DOCKER,/^(?:1|true|yes|on)$/i.test(String(c??"").trim())),s=String(a.artifactDir??d.MADARX_SANDBOX_ARTIFACT_DIR??"").trim()||null,t=String(a.authDir??d.MADARX_SANDBOX_AUTH_DIR??"").trim()||null;return{mode:j,scope:k,backend:l,image:o,network:p,workdir:q,agentId:a.agentId||null,liveDocker:r,artifactDir:s,authDir:t}}function o(a,{home:b,repoRoot:c,kind:e="artifact"}={}){var f;let g=String(a??"").trim();if(!g)throw Error(`sandbox ${e} mount: a path is required`);if(!d.isAbsolute(g))throw Error(`sandbox ${e} mount must be an absolute path: ${g}`);let h=d.resolve(g);if("/"===h||j.has(h))throw Error(`sandbox ${e} mount refuses a system/broad root (would be host-root-equivalent): ${h}`);let i=b??((f=process.env).HOME||f.USERPROFILE||"");if(i&&h===d.resolve(i))throw Error(`sandbox ${e} mount refuses the user HOME root (use a dedicated subdir): ${h}`);let k=void 0!==c?c:process.cwd();if(k&&h===d.resolve(k))throw Error(`sandbox ${e} mount refuses the repo root (use a dedicated subdir): ${h}`);return h}function p(a=process.env,b={}){let c=new Set(b.allow||[]),d=!!b.dropPath,e={},f=[],g=[];for(let[b,h]of Object.entries(a))if(null!=h){if(c.has(b)){e[b]=String(h);continue}if(l.test(b)||d&&"PATH"===b){g.push(b);continue}if(k.test(b)){f.push(b);continue}e[b]=String(h)}return{env:e,dropped:f,rejected:g}}function q(a=process.env){return p(a).env}function r({config:a,isMain:b=!1,command:c,args:d=[],env:e=process.env,name:f,mountCtx:g}={}){let h=a||n();if(!function(a,b={}){let c=a?.mode||"off";return"all"===c||"non-main"===c&&!b.isMain}(h,{isMain:b}))return{sandboxed:!1,backend:"host",command:c,args:[...d],env:q(e)};if("docker"===h.backend){let a=function({config:a,command:b,args:c=[],env:d={},name:e,mountCtx:f={}}={}){if(!b)throw Error("buildDockerExecSpec: command is required");let g=a||n(),{env:h,dropped:j,rejected:k}=p(d,{dropPath:!0}),l=[];if(g.artifactDir){let a=o(g.artifactDir,{...f,kind:"artifact"});l.push(`${a}:/sandbox/artifacts:rw`)}if(g.authDir){let a=o(g.authDir,{...f,kind:"auth"});l.push(`${a}:/sandbox/auth:ro`)}let m=["run","--rm","--network",g.network||"none","--cap-drop","ALL","--security-opt","no-new-privileges","--read-only","--tmpfs","/tmp:rw,nosuid,nodev,noexec,size=64m","--pids-limit","256","--memory","1g","--workdir",g.workdir||i];for(let a of(e&&m.push("--name",e),l))m.push("-v",a);for(let[a,b]of Object.entries(h))m.push("-e",`${a}=${b}`);return m.push(g.image,function(a){let b=String(a||"").trim(),c=b.split("/").filter(Boolean);return c.length?c[c.length-1]:b}(b),...c),{command:"docker",args:m,image:g.image,containerEnv:h,dropped:j,rejected:k,mounts:l}}({config:h,command:c,args:d,env:e,name:f,mountCtx:g});return{sandboxed:!0,backend:"docker",command:a.command,args:a.args,env:q(e),containerEnv:a.containerEnv,image:a.image,spec:a}}return{sandboxed:!1,deferred:!0,backend:h.backend,reason:`Sandbox backend "${h.backend}" is not yet implemented (Docker is the only wired backend; SSH/local remain deferred).`,command:c,args:[...d],env:q(e)}}},57223:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{$F:()=>p,Uw:()=>m});var e=c(34255),f=c(8437),g=c(49017),h=a([e,f]);function i(a){return a?{...a}:null}function j(a){return a?(0,e.getDb)().prepare("SELECT * FROM hail_review_gates WHERE engagement_id = ? ORDER BY created_at ASC").all(a).map(i):[]}function k(a){return a?i((0,e.getDb)().prepare("SELECT * FROM hail_review_gates WHERE id = ?").get(a)):null}function l({id:a,engagement_id:b,gate_type:c,reviewer_role:d,reviewer_user_id:f=null,decision:h,comments:i=null,approval_request_id:j=null}){if(!["approved","rejected","revision_requested","pending"].includes(h))throw Error(`recordGateDecision: invalid decision "${h}"`);let l=(0,e.getDb)(),m=(0,e.nowIso)();if(a){if(!k(a))throw Error(`recordGateDecision: gate "${a}" not found`);return l.prepare(`
|
|
3157
|
+
`,"utf8")}catch{}return{ok:!0,skipped:!1,summary:k}}d()}catch(a){d(a)}})},56050:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{p:()=>o});var e=c(24516),f=c(58282),g=c(59400),h=c(45907),i=c(72550),j=c(59237),k=a([e,f,g,h,j]);[e,f,g,h,j]=k.then?(await k)():k;let p=new Set(["__connector_slug","__endpoint","approval_id","body","query"]);function l(a){let b,c=[],d=/\{([a-z][a-z0-9_]*)\}/g;for(;null!==(b=d.exec(a));)c.push(b[1]);return c}function m(a={}){let b={},c={},d=a=>{let b=(0,e.getSecret)(a);if(null==b||""===b){let b=Error(`Required secret not configured: ${a}`);throw b.code="secret_missing",b.secret_ref=a,b}return String(b)};if("bearer"===a.type){let c=d(a.secret_ref);b[a.header||"Authorization"]=`${a.prefix??"Bearer "}${c}`}else if("api_key"===a.type){let e=d(a.secret_ref);a.query_param?c[a.query_param]=`${a.prefix??""}${e}`:b[a.header||"Authorization"]=`${a.prefix??""}${e}`}else if("basic"===a.type){let c=d(a.username_ref),e=d(a.password_ref);b.Authorization=`Basic ${Buffer.from(`${c}:${e}`).toString("base64")}`}else if("oauth2"===a.type){let c=d(a.access_token_ref);b[a.header||"Authorization"]=`${a.prefix??"Bearer "}${c}`}return{headers:b,query:c}}async function n(a,b){let c;if(a?.type!=="oauth2"||!a.refresh_token_ref)return!1;let d=(0,e.getSecret)(a.refresh_token_ref);if(!d)return!1;let f=(0,i.Kd)(a.provider,{token_url:a.token_url});if(!f?.token_url)return!1;let g=a.client_id_ref?(0,e.getSecret)(a.client_id_ref):null,h=a.client_secret_ref?(0,e.getSecret)(a.client_secret_ref):null;try{c=await (0,j.J1)(f,{refresh_token:String(d),client_id:g||"",client_secret:h||""},b)}catch{return!1}if(!c?.ok||!c.access_token)return!1;try{(0,e.setSecret)(a.access_token_ref,c.access_token,{source:"oauth_refresh"}),c.refresh_token&&a.refresh_token_ref&&(0,e.setSecret)(a.refresh_token_ref,c.refresh_token,{source:"oauth_refresh"})}catch{return!1}return!0}async function o(a={},b={}){let c,d,e,i=a.__connector_slug,j=a.__endpoint,k=i&&j?`${i}.${j}`:null,q=k?(0,h.tP)(k):null;if(!q)return{ok:!1,status:"error",error:"not_found",message:`Unknown connector endpoint: ${k||"(none)"}`};let{manifest:r,endpointDef:s}=q,t=s.path;for(let b of l(s.path)){let c=a[b]??a.params?.[b];if(null==c||""===c)return{ok:!1,status:"error",error:"missing_path_param",message:`Missing path parameter: ${b}`};t=t.replaceAll(`{${b}}`,encodeURIComponent(String(c)))}if(/\{[a-z]/i.test(t))return{ok:!1,status:"error",error:"missing_path_param",message:`Unresolved path parameter in ${t}`};try{c=new URL(r.base_url.replace(/\/+$/g,"")+t)}catch{return{ok:!1,status:"error",error:"bad_url",message:"Could not build request URL"}}try{(0,g.vC)(c.toString())}catch(a){return{ok:!1,status:"error",error:"blocked_host",message:a.message}}let u=c.hostname.toLowerCase();if(!Array.isArray(r.allowed_hosts)||!r.allowed_hosts.includes(u))return{ok:!1,status:"error",error:"host_not_allowed",message:`Host ${u} is not in the connector allowlist`};try{d=m(r.auth||{})}catch(a){if("secret_missing"===a.code)return{ok:!1,status:"error",error:"secret_missing",secret_ref:a.secret_ref,message:a.message};throw a}for(let[a,b]of Object.entries(d.query))c.searchParams.set(a,b);if(a.query&&"object"==typeof a.query)for(let[b,d]of Object.entries(a.query))null!=d&&c.searchParams.set(b,String(d));let v={Accept:"application/json",...r.default_headers||{}},w=Object.keys(d.headers),x=s.method,y=["POST","PUT","PATCH","DELETE"].includes(x),z=null,A=null;if(y){let b=a.body;if(null==b){let c=l(s.path);for(let[d,e]of(b={},Object.entries(a)))p.has(d)||c.includes(d)||"params"===d||(b[d]=e)}b&&"object"==typeof b&&Object.keys(b).length>0&&(A=(r.default_headers||{})["Content-Type"]||"application/json",z=JSON.stringify(b))}let B=a=>{let b={...v};if(a===c.hostname.toLowerCase())for(let a of w)b[a]=d.headers[a];A&&(b["Content-Type"]=A);let e={method:x,headers:b,redirect:"manual"};return null!=z&&(e.body=z),e},C=(0,f.H)(k,b.agent_id??null),D=new Set([301,302,303,307,308]);for(let a=0;a<2;a++){let b=c,f=null;for(let a=0;a<5;a++){let c;try{e=await C(b,B(b.hostname.toLowerCase()))}catch(a){return{ok:!1,status:"error",error:"request_failed",message:String(a?.message||a)}}if(!D.has(e.status))break;let d=e.headers.get("location");if(!d)break;try{c=new URL(d,b)}catch{return{ok:!1,status:"error",error:"bad_redirect",message:`Invalid redirect target: ${d}`}}try{(0,g.vC)(c.toString())}catch(a){return{ok:!1,status:"error",error:"blocked_redirect",message:`Redirect blocked: ${a.message}`}}if(!r.allowed_hosts.includes(c.hostname.toLowerCase()))return{ok:!1,status:"error",error:"blocked_redirect",message:`Redirect to ${c.hostname} is not in the connector allowlist`};if(b=c,4===a){f={ok:!1,status:"error",error:"too_many_redirects",message:"Exceeded redirect limit"};break}}if(f)return f;if(0===a&&401===e.status&&"oauth2"===(r.auth||{}).type&&await n(r.auth,C)){try{d=m(r.auth||{}),w=Object.keys(d.headers)}catch{break}continue}break}let E=e.headers.get("content-type")||"",F=e.body?.getReader(),G="";if(F){let a=[],b=0;for(;;){let{value:c,done:d}=await F.read();if(d)break;if((b+=c.byteLength)>512e3){G="[response truncated: exceeds 512KB]";break}a.push(c)}G||(G=Buffer.concat(a).toString("utf8"))}else G=(await e.text()).slice(0,512e3);let H=null;if(E.includes("application/json"))try{H=JSON.parse(G)}catch{H=null}return e.ok?{ok:!0,status:"complete",http_status:e.status,content_type:E,data:H??G.slice(0,512e3)}:{ok:!1,status:"error",error:"http_error",http_status:e.status,message:`${x} ${j} → ${e.status}`,body:H??G.slice(0,2e3)}}d()}catch(a){d(a)}})},56137:(a,b,c)=>{"use strict";c.d(b,{MV:()=>s,TL:()=>w,ks:()=>v});var d=c(76760);let e=["off","non-main","all"],f=["session","agent","shared"],g=["docker","ssh","local"],h="madarx/sandbox:latest",i="/sandbox",j="/tmp/madarx-sandbox",k=new Set(["/","/etc","/bin","/sbin","/usr","/var","/lib","/lib64","/opt","/boot","/dev","/proc","/sys","/run","/root","/home","/Users","/System","/Library","/private","/Applications","/Volumes","/mnt","/media"]);function l(a){return/^(?:1|true|yes|on)$/i.test(String(a??"").trim())}function m(a){let b=String(a||"").trim(),c=b.split("/").filter(Boolean);return c.length?c[c.length-1]:b}function n(a){return`'${String(a??"").replace(/'/g,"'\\''")}'`}let o=/^[A-Za-z_][A-Za-z0-9_]*$/,p=/(?:KEY|TOKEN|SECRET|PASSWORD|PASSWD|CREDENTIAL)/i,q=/^(?:LD_|DYLD_)/;function r(a,b,c){let d=String(a||"").trim().toLowerCase();return b.includes(d)?d:c}function s(a={},b={}){let c=b.env||process.env,d=r(a.mode??c.MADARX_SANDBOX_MODE,e,"off"),k=r(a.scope??c.MADARX_SANDBOX_SCOPE,f,"session"),m=r(a.backend??c.MADARX_SANDBOX_BACKEND,g,"docker"),n=String(a.image??c.MADARX_SANDBOX_IMAGE??h).trim()||h,o=String(a.network??c.MADARX_SANDBOX_NETWORK??"none").trim()||"none",p=String(a.workdir??c.MADARX_SANDBOX_WORKDIR??i).trim()||i,q=l(a.liveDocker??c.MADARX_SANDBOX_LIVE_DOCKER),t=String(a.artifactDir??c.MADARX_SANDBOX_ARTIFACT_DIR??"").trim()||null,u=String(a.authDir??c.MADARX_SANDBOX_AUTH_DIR??"").trim()||null,v=l(a.liveSsh??c.MADARX_SANDBOX_LIVE_SSH),w=String(a.sshHost??c.MADARX_SANDBOX_SSH_HOST??"").trim()||null,x=String(a.sshUser??c.MADARX_SANDBOX_SSH_USER??"").trim()||null,y=String(a.sshPort??c.MADARX_SANDBOX_SSH_PORT??"").trim(),z=/^\d+$/.test(y)?Number(y):22,A=String(a.sshWorkdir??c.MADARX_SANDBOX_SSH_WORKDIR??"").trim()||j;return{mode:d,scope:k,backend:m,image:n,network:o,workdir:p,agentId:a.agentId||null,liveDocker:q,artifactDir:t,authDir:u,liveSsh:v,sshHost:w,sshUser:x,sshPort:z,sshWorkdir:A}}function t(a,{home:b,repoRoot:c,kind:e="artifact"}={}){var f;let g=String(a??"").trim();if(!g)throw Error(`sandbox ${e} mount: a path is required`);if(!d.isAbsolute(g))throw Error(`sandbox ${e} mount must be an absolute path: ${g}`);let h=d.resolve(g);if("/"===h||k.has(h))throw Error(`sandbox ${e} mount refuses a system/broad root (would be host-root-equivalent): ${h}`);let i=b??((f=process.env).HOME||f.USERPROFILE||"");if(i&&h===d.resolve(i))throw Error(`sandbox ${e} mount refuses the user HOME root (use a dedicated subdir): ${h}`);let j=void 0!==c?c:process.cwd();if(j&&h===d.resolve(j))throw Error(`sandbox ${e} mount refuses the repo root (use a dedicated subdir): ${h}`);return h}function u(a=process.env,b={}){let c=new Set(b.allow||[]),d=!!b.dropPath,e={},f=[],g=[];for(let[b,h]of Object.entries(a))if(null!=h){if(c.has(b)){e[b]=String(h);continue}if(q.test(b)||d&&"PATH"===b){g.push(b);continue}if(p.test(b)){f.push(b);continue}e[b]=String(h)}return{env:e,dropped:f,rejected:g}}function v(a=process.env){return u(a).env}function w({config:a,isMain:b=!1,command:c,args:d=[],env:e=process.env,name:f,mountCtx:g}={}){let h=a||s();if(!function(a,b={}){let c=a?.mode||"off";return"all"===c||"non-main"===c&&!b.isMain}(h,{isMain:b}))return{sandboxed:!1,backend:"host",command:c,args:[...d],env:v(e)};if("docker"===h.backend){let a=function({config:a,command:b,args:c=[],env:d={},name:e,mountCtx:f={}}={}){if(!b)throw Error("buildDockerExecSpec: command is required");let g=a||s(),{env:h,dropped:j,rejected:k}=u(d,{dropPath:!0}),l=[];if(g.artifactDir){let a=t(g.artifactDir,{...f,kind:"artifact"});l.push(`${a}:/sandbox/artifacts:rw`)}if(g.authDir){let a=t(g.authDir,{...f,kind:"auth"});l.push(`${a}:/sandbox/auth:ro`)}let n=["run","--rm","--network",g.network||"none","--cap-drop","ALL","--security-opt","no-new-privileges","--read-only","--tmpfs","/tmp:rw,nosuid,nodev,noexec,size=64m","--pids-limit","256","--memory","1g","--workdir",g.workdir||i];for(let a of(e&&n.push("--name",e),l))n.push("-v",a);for(let[a,b]of Object.entries(h))n.push("-e",`${a}=${b}`);return n.push(g.image,m(b),...c),{command:"docker",args:n,image:g.image,containerEnv:h,dropped:j,rejected:k,mounts:l}}({config:h,command:c,args:d,env:e,name:f,mountCtx:g});return{sandboxed:!0,backend:"docker",command:a.command,args:a.args,env:v(e),containerEnv:a.containerEnv,image:a.image,spec:a}}if("ssh"===h.backend&&h.liveSsh&&h&&h.sshHost&&h.sshUser){let a=function({config:a,command:b,args:c=[],env:d={}}={}){if(!b)throw Error("buildSshExecSpec: command is required");let e=a||s();if(!e.sshHost||!e.sshUser)throw Error("buildSshExecSpec: SSH host and user are required (set MADARX_SANDBOX_SSH_HOST / MADARX_SANDBOX_SSH_USER)");let{env:f,dropped:g,rejected:h}=u(d,{dropPath:!0}),i=e.sshWorkdir||j,k=function({workdir:a,env:b,command:c,args:d}){let e=`${String(a).replace(/\/+$/,"")}/artifacts`,f=[];for(let[c,d]of(f.push("mkdir","-p",n(a),n(e),"&&"),f.push("cd",n(a),"&&"),f.push("exec","env"),Object.entries(b)))o.test(c)&&f.push(`${c}=${n(d)}`);return f.push(n(c),...d.map(n)),f.join(" ")}({workdir:i,env:f,command:m(b),args:c}),l=`${e.sshUser}@${e.sshHost}`;return{command:"ssh",args:["-p",String(e.sshPort||22),"-o","BatchMode=yes","-o","StrictHostKeyChecking=accept-new","-o","ConnectTimeout=10",l,k],target:l,remoteCommand:k,remoteEnv:f,dropped:g,rejected:h,workdir:i}}({config:h,command:c,args:d,env:e});return{sandboxed:!0,backend:"ssh",command:a.command,args:a.args,env:v(e),remoteEnv:a.remoteEnv,target:a.target,remoteCommand:a.remoteCommand,spec:a}}return{sandboxed:!1,deferred:!0,backend:h.backend,reason:function(a){if("ssh"===a.backend){let b=[];return a.sshHost||b.push("MADARX_SANDBOX_SSH_HOST"),a.sshUser||b.push("MADARX_SANDBOX_SSH_USER"),a.liveSsh||b.push("MADARX_SANDBOX_LIVE_SSH=1"),`Sandbox backend "ssh" is not fully opted in (missing: ${b.join(", ")}); refusing to run unconfined. Real SSH execution requires the live flag plus host + user config.`}return"local"===a.backend?'Sandbox backend "local" cannot confine execution on the host machine and is intentionally not wired; refusing to run unconfined (use the docker or ssh backend).':`Sandbox backend "${a.backend}" is not yet implemented (Docker and SSH are the wired backends).`}(h),command:c,args:[...d],env:v(e)}}},57223:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{$F:()=>p,Uw:()=>m});var e=c(34255),f=c(8437),g=c(49017),h=a([e,f]);function i(a){return a?{...a}:null}function j(a){return a?(0,e.getDb)().prepare("SELECT * FROM hail_review_gates WHERE engagement_id = ? ORDER BY created_at ASC").all(a).map(i):[]}function k(a){return a?i((0,e.getDb)().prepare("SELECT * FROM hail_review_gates WHERE id = ?").get(a)):null}function l({id:a,engagement_id:b,gate_type:c,reviewer_role:d,reviewer_user_id:f=null,decision:h,comments:i=null,approval_request_id:j=null}){if(!["approved","rejected","revision_requested","pending"].includes(h))throw Error(`recordGateDecision: invalid decision "${h}"`);let l=(0,e.getDb)(),m=(0,e.nowIso)();if(a){if(!k(a))throw Error(`recordGateDecision: gate "${a}" not found`);return l.prepare(`
|
|
3147
3158
|
UPDATE hail_review_gates
|
|
3148
3159
|
SET decision = ?, reviewer_user_id = COALESCE(?, reviewer_user_id),
|
|
3149
3160
|
comments = COALESCE(?, comments),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=4143,exports.ids=[4143],exports.modules={64143:(a,b,c)=>{c.d(b,{Wl:()=>g,Xj:()=>
|
|
1
|
+
"use strict";exports.id=4143,exports.ids=[4143],exports.modules={64143:(a,b,c)=>{c.d(b,{Wl:()=>g,Xj:()=>k,getBridgeHealth:()=>f,op:()=>i,sendWhatsAppDocument:()=>j,wB:()=>h});let d=process.env.WHATSAPP_BRIDGE_URL||"http://127.0.0.1:3210";async function e(a,b,c,{timeoutMs:f=1e4}={}){let g=new AbortController,h=setTimeout(()=>g.abort(),f);try{let e=await fetch(`${(process.env.WHATSAPP_BRIDGE_URL||d).replace(/\/$/,"")}${b}`,{method:a,headers:c?{"Content-Type":"application/json"}:void 0,body:c?JSON.stringify(c):void 0,signal:g.signal}),f=await e.text(),h=null;try{h=f?JSON.parse(f):null}catch{}if(!e.ok){let a=Error(h?.error||`whatsapp-bridge ${e.status}`);throw a.status=e.status,a.body=h||f,a}return h}finally{clearTimeout(h)}}async function f(){try{return await e("GET","/health",null,{timeoutMs:3e3})}catch(a){return{ok:!1,error:a.message,status:a.status||null}}}async function g(){try{return await e("GET","/qr",null,{timeoutMs:3e3})}catch(a){return{ok:!1,error:a.message,status:a.status||null}}}async function h(){let a=await e("GET","/messages",null,{timeoutMs:5e3});return Array.isArray(a?.messages)?a.messages:[]}async function i(a,b){if(!a)throw Error("chat_id is required");if(!b||!String(b).trim())throw Error("text is required");return e("POST","/send",{chat_id:a,text:String(b)})}async function j({chat_id:a,content:b,filename:c,mimetype:d,caption:f}){if(!a)throw Error("chat_id is required");if(!c)throw Error("filename is required");if(null==b)throw Error("content is required");let g=Buffer.isBuffer(b)?b:Buffer.from(String(b),"utf8");if(!g.length)throw Error("content is empty");return e("POST","/send-document",{chat_id:a,content_base64:g.toString("base64"),filename:c,mimetype:d||"application/octet-stream",caption:f||void 0},{timeoutMs:3e4})}async function k(){return e("POST","/logout",{},{timeoutMs:15e3})}}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
exports.id=4949,exports.ids=[4949],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")},64727:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{"40e7d398bf644bee0013432735ba7fdbe92877266c":()=>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)("div",{className:"admin-empty-body",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:"Agent chart",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:"Agent 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,"40e7d398bf644bee0013432735ba7fdbe92877266c",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))]})})}}};
|
|
@@ -31,7 +31,7 @@ ${b}
|
|
|
31
31
|
- Save every output as a local artifact under your project's artifacts folder (workspace/projects/<slug>/artifacts/).
|
|
32
32
|
- Hand off any external send, post, deployment, or destructive command to the main agent for approval before acting.
|
|
33
33
|
- After each run, update heartbeat.json with status, summary, and next-run plan.
|
|
34
|
-
`}({name:c,mission:d,tools:b})),j={...a,name:c,mission:d,tools:b,skills_markdown:h};e&&(j.system_prompt=e),void 0!==a.whatsapp_notify_chat_id&&(j.whatsapp_notify_chat_id=a.whatsapp_notify_chat_id||null);let k=`${c} ${d} ${a.role||""} ${a.title||""} ${a.type||""}`.toLowerCase();return(/\b(design|designer|ui|ux|brand|visual|creative|graphic|landing\s*page|mockup|wireframe)\b/.test(k)||b.includes("generate_ui"))&&(!a.engine||"claude-code"===a.engine)&&(j.engine="anthropic"),(0,g.Sn)(j)}let Z="tool-smith-agent",$=new Set(["data","api","apis","rest","http","https","json","web","url","feed","fetch","get","pull","load","read","list","lists","query","search","live","real","realtime","time","info","information","tool","tools","service","source","sources","row","rows","record","records","item","items","result","results","return","returns","value","values","given","day","date","via","such","run","call","create","update","new","for","and","with","from","into","the","that","this","structured","import","export","sync","connector","integration","request","response","page"]);function I(a){return String(a||"").toLowerCase().replace(/[._-]+/g," ").split(/[^a-z0-9]+/).filter(a=>a.length>=3).filter(a=>!$.has(a))}let _=[{name:"create_agent",description:"Create a new named sub-agent in the local workspace with files and optional schedule. Pick the engine based on what the agent actually does (see engine field).",input_schema:{type:"object",properties:{name:{type:"string",description:"Human-readable agent name."},mission:{type:"string",description:"What this agent does (its standing job — used as the default instruction every run)."},expected_output:{type:"string",description:"OPTIONAL standing deliverable contract: what a GOOD result looks like every run — format, required sections, acceptance criteria, definition of done. Set this whenever the agent has a repeatable output shape so runs are consistent and verifiable. A per-call run_agent override or a delegated task's acceptance_criteria takes precedence over this for a specific run."},schedule:{type:"string",description:'Cron-like schedule: "daily HH:MM", "every 5m", or "on demand".'},tools:{type:"array",items:{type:"string"},description:'madarX tool identifiers the agent is allowed to use (e.g. "web_search", "web_fetch", "file_read", "create_artifact"). Lowercase snake_case, NOT Claude Code tool names.'},type:{type:"string",description:'Agent type label, e.g. "custom" or "intelligence".'},engine:{type:"string",enum:["anthropic","claude-code","ollama","codex","hermes"],description:'DEFAULT is "claude-code" — uses the local Claude Code CLI with permissions from .claude/settings.json (Read/Glob/Grep/WebSearch/WebFetch auto-allowed; edits scoped to workspace/). Use this for almost everything. "anthropic" only when the agent needs the madarx tool marketplace specifically (create_artifact, generate_ui, whatsapp_send, competitor_report, marketing_plan — these do not exist under claude-code). "ollama" for cheap local-LLM work. "codex" for OpenAI Codex CLI. "hermes" rare. If the user does not specify, leave engine unset and the default applies.'},whatsapp_notify_chat_id:{type:"string",description:'OPTIONAL WhatsApp chat id (e.g. 9715XXXXXXXX@s.whatsapp.net, or plain digits). When set, every scheduled run that produces a report artifact will auto-deliver the rendered HTML file to this chat. The bridge must be paired; if not, delivery is skipped silently. Set this only when the owner explicitly says "send to whatsapp" or "deliver to me on whatsapp".'}},required:["name","mission"]}},{name:"update_agent",description:'Edit an EXISTING agent\'s standing contract — its expected output (deliverable spec), mission, or system prompt. Use this when the owner says "change what X produces", "update the expected output of X", "edit X\'s mission", or refines an agent you just created. Identify the agent by agent_id (preferred) or a fuzzy agent_name. Only the fields you pass are changed; the rest are left as-is. Pass an empty string to CLEAR a field (it falls back to the next default). This persists onto the agent row, so it applies to every future run — unlike run_agent\'s per-call expected_output, which overrides one run only. To change schedule use upsert_schedule; to (dis)connect WhatsApp use set_agent_whatsapp_notify.',input_schema:{type:"object",properties:{agent_id:{type:"string",description:"Slug id of the agent to edit (preferred). Use list_agents / get_state to look it up."},agent_name:{type:"string",description:"Fuzzy human-readable name (used only when agent_id is missing). Must resolve to exactly one agent."},expected_output:{type:"string",description:"New standing deliverable contract: what a GOOD result looks like every run — format, required sections, acceptance criteria, definition of done. Empty string clears it."},mission:{type:"string",description:"New standing job (the default instruction every run). Empty string clears it."},system_prompt:{type:"string",description:"New system prompt for the agent. Empty string clears it (falls back to the generated default). Advanced — usually edit mission/expected_output instead."}},required:[]}},{name:"set_agent_whatsapp_notify",description:'Enable, change, or disable WhatsApp delivery of scheduled-run artifacts for an existing agent. Pass an empty string or null in chat_id to disable. Use this when the owner says "send X to me on whatsapp", "stop whatsapping me X", or wants to switch the notify chat. The bridge must be paired for delivery to actually happen; the setting is stored either way.',input_schema:{type:"object",properties:{agent_id:{type:"string",description:"Slug id of the agent. Use get_state to look it up if unsure."},agent_name:{type:"string",description:"Fuzzy human-readable name (used only when agent_id is missing)."},chat_id:{type:"string",description:"WhatsApp chat id to receive scheduled HTML artifacts. Pass empty string to disable."}},required:["chat_id"]}},{name:"upsert_schedule",description:"Create or update a recurring schedule for an existing agent.",input_schema:{type:"object",properties:{agent_id:{type:"string",description:"Slug ID of the agent."},schedule:{type:"string",description:'Schedule spec: "daily HH:MM", "every 5m", etc.'},action_kind:{type:"string",description:'What the schedule runs: "agent-tick", "competitor-report", "marketing-plan", or "heartbeat".'},enabled:{type:"boolean",description:"Whether the schedule is active (default true)."}},required:["agent_id","schedule"]}},{name:"competitor_report",description:"Generate a daily competitor intelligence report and save it as a local artifact.",input_schema:{type:"object",properties:{triggered_by:{type:"string",description:"Source label for the audit log."}}}},{name:"marketing_plan",description:"Generate a 7-day marketing content plan and save it as a local artifact.",input_schema:{type:"object",properties:{triggered_by:{type:"string",description:"Source label for the audit log."}}}},{name:"heartbeat_tick",description:"Update the heartbeat timestamp for all generated agents.",input_schema:{type:"object",properties:{triggered_by:{type:"string",description:"Source label for the audit log."}}}},{name:"claude_dry_run",description:"Prepare a Claude Code command string for human review. Never executes automatically — requires owner approval.",input_schema:{type:"object",properties:{prompt:{type:"string",description:"The task description to pass to the Claude Code runner."}},required:["prompt"]}},{name:"get_state",description:"Retrieve a LIGHTWEIGHT snapshot of runtime state: agents, runs, schedules, connectors, and artifact metadata only. Artifact bodies are stripped to a short snippet — use find_artifacts to search and show_artifact to load full content for a specific id. Use this as a directory; never expect full document bodies here.",input_schema:{type:"object",properties:{}}},{name:"list_agents",description:"List the existing sub-agents (your workforce) and WHAT EACH CAN DO — id, name, role, status, the tools each is granted, and how many open tasks it already has. Call this BEFORE creating a new agent: if an existing agent already owns the tool the goal needs, delegate to it with run_agent instead of spawning a duplicate. This is the cheap roster read; route_goal is the fuller capability match for a specific goal.",input_schema:{type:"object",properties:{}}},{name:"list_projects",description:"List the owner's projects (the workspaces shown at /projects/<slug>). Returns each project's id, slug, name, and status. Use this to resolve which project the owner means before reading its Disk with disk_list_files / disk_list_folders.",input_schema:{type:"object",properties:{}}},{name:"disk_list_folders",description:'List the FOLDERS inside a project\'s Disk — the owner\'s "project folder" / "my files" shown at /projects/<slug>. This is the owner\'s content, NOT the madarX source code. Use this (never file_read/directory_list/Bash on the source tree) when the owner asks to check their project, folder, or files.',input_schema:{type:"object",properties:{project_id:{type:"string",description:'Project id or slug (e.g. "ai-agents"). Omit to use the active project. If unsure, call list_projects first.'}}}},{name:"disk_list_files",description:"List the FILES in a project's Disk (the owner's \"project folder\" at /projects/<slug>). Returns file id, name, kind, size, and local_only flag. This is the owner's uploaded/produced content — NOT madarX source code. Read a file's contents with disk_read_file using the returned id.",input_schema:{type:"object",properties:{project_id:{type:"string",description:'Project id or slug (e.g. "ai-agents"). Omit to use the active project. If unsure, call list_projects first.'},folder_id:{type:"string",description:"Optional folder id (from disk_list_folders) to list only that folder. Omit to list all files in the project."}}}},{name:"disk_read_file",description:"Read the contents of a single Disk file by id (get ids from disk_list_files). Returns the file body. local_only files are redacted for cloud engines by design.",input_schema:{type:"object",properties:{file_id:{type:"string",description:"The Disk file id, from disk_list_files."},project_id:{type:"string",description:"Optional project id or slug to scope the read to (cross-project reads are refused). Omit to use the active project."}},required:["file_id"]}},{name:"create_artifact",description:'Save a written-content artifact (report, list, plan, brief, summary, doc). Provide the body as well-structured markdown and madarX will render it into a styled HTML document automatically, with a one-click "Download .md" for the source. Do NOT include the user prompt, instructions, or meta commentary inside the body — only the result content. Do NOT use for full UI/landing pages — use generate_ui instead.',input_schema:{type:"object",properties:{title:{type:"string",description:"Short, human-readable artifact title shown in the document header."},kind:{type:"string",enum:["markdown","text"],description:'Always "markdown" unless the content is truly plain text with no structure.'},content:{type:"string",description:"The full body as GitHub-flavored markdown. Use headings (##), lists, tables, and bold sparingly. No emojis. Result content only — never echo the prompt."},project_id:{type:"string",description:"Optional destination project id or slug. Omit to use the active/default project."},space_id:{type:"string",description:"Optional dashboard space id where the artifact should appear. Omit to use the calling agent default or the main space."},dedupe_key:{type:"string",description:"Optional idempotency key. Pass empty string only when intentionally creating multiple artifacts with the same title in one day."}},required:["title","kind","content"]}},{name:"update_artifact",description:"Update an existing artifact with revised or extended content. Use this instead of create_artifact when continuing, refining, or expanding a previous result for the same task. Keeps the same artifact visible and editable rather than spawning a new one.",input_schema:{type:"object",properties:{artifact_id:{type:"string",description:"ID of the artifact to update."},title:{type:"string",description:"New title — omit to keep the existing title."},content:{type:"string",description:"Full updated body as GitHub-flavored markdown. Must be the complete content, not a diff."}},required:["artifact_id","content"]}},{name:"delete_artifact",description:"Permanently delete a saved artifact from the dashboard. Use only when the owner explicitly asks to remove or trash an artifact, or when the previous artifact is being replaced by a brand-new one and the prior result must not linger. This is irreversible from the agent side; the artifact file on disk is unlinked as well.",input_schema:{type:"object",properties:{artifact_id:{type:"string",description:"ID of the artifact to delete."}},required:["artifact_id"]}},{name:"move_artifact",description:'Move an existing artifact from one project to another. Updates the artifact\'s project_id, relocates the file on disk into the target project\'s artifacts directory, and writes changelog entries on both source and target projects. Use this when the owner asks to "move", "reassign", "relocate", or "transfer" an artifact between projects/spaces. The artifact id and title stay the same; only the project membership and disk location change.',input_schema:{type:"object",properties:{artifact_id:{type:"string",description:"ID of the artifact to move."},target_project_id:{type:"string",description:'Destination project id or slug (e.g. "planify" or "personal"). Use list_projects to discover valid values.'}},required:["artifact_id","target_project_id"]}},{name:"read_artifact",description:"Load the full content for a specific artifact after finding it. Use this before editing, summarizing, or continuing an existing document. Returns rendered content and markdown source when available.",input_schema:{type:"object",properties:{artifact_id:{type:"string",description:"Exact artifact id to read."},title_query:{type:"string",description:"Optional fuzzy title query when artifact_id is not known. Must resolve to one artifact."},max_chars:{type:"number",description:"Maximum content characters to return, default 12000."}}}},{name:"list_spaces",description:"List dashboard spaces/tabs. Use include_artifact_ids when the owner asks which artifacts are displayed in each space.",input_schema:{type:"object",properties:{include_artifact_ids:{type:"boolean",description:"When true, include artifact_ids grouped under each space."}}}},{name:"create_space",description:"Create a new dashboard space/tab where artifacts can be displayed.",input_schema:{type:"object",properties:{name:{type:"string",description:"Short dashboard space name."}},required:["name"]}},{name:"rename_space",description:"Rename an existing dashboard space/tab.",input_schema:{type:"object",properties:{space_id:{type:"string",description:"Space id to rename."},name:{type:"string",description:"New short space name."}},required:["space_id","name"]}},{name:"set_active_space",description:"Make a dashboard space/tab the active space.",input_schema:{type:"object",properties:{space_id:{type:"string",description:"Space id to activate."}},required:["space_id"]}},{name:"delete_space",description:"Delete a dashboard space/tab. Artifacts are not deleted; they are moved to a fallback space. Do not use to delete artifacts.",input_schema:{type:"object",properties:{space_id:{type:"string",description:"Space id to delete."}},required:["space_id"]}},{name:"move_artifact_to_space",description:"Display an existing artifact in a different dashboard space/tab, or remove it from a custom space by moving it back to the default main space. The artifact id, project, file, and content stay unchanged.",input_schema:{type:"object",properties:{artifact_id:{type:"string",description:"Artifact id to move between dashboard spaces."},space_id:{type:"string",description:'Destination dashboard space id. Use "default" to remove from a custom space back to main.'}},required:["artifact_id","space_id"]}},{name:"import_brand_guidelines",description:"Import a local brand guidelines file or pasted guidelines content, extract brand colors/fonts/voice/document defaults, and set it as the default brand system for future documents, presentations, and generated UI artifacts. Use this when the owner provides a brand guidelines HTML/Markdown/text file path, pastes guidelines content, or asks to update branding.",input_schema:{type:"object",properties:{file_path:{type:"string",description:"Path to a local .html, .md, .txt, .css, .svg, or .pdf brand guidelines file under an allowed root."},content:{type:"string",description:"Pasted brand guidelines content when no local file path is available."},filename:{type:"string",description:"Optional filename for pasted content, e.g. brand-guidelines.md."},logo_path:{type:"string",description:"Optional local path to the primary brand logo file (.svg, .png, .jpg, .jpeg, .webp)."}}}},{name:"send_to_hermes",description:"Send a command or task to the local Hermes agent and save the final Hermes response as a dashboard artifact. Use this when the user asks Hermes to do work, wants a Hermes result, or asks to route a command through Hermes.",input_schema:{type:"object",properties:{prompt:{type:"string",description:"The exact task or command Hermes should run."},title:{type:"string",description:"Optional artifact title for the Hermes result."},session_id:{type:"string",description:"Optional stable Hermes session id. Usually omit."},model:{type:"string",description:"Optional Hermes model override. Usually omit so Hermes uses its configured model."},timeout_ms:{type:"number",description:"Optional timeout in milliseconds. Use 600000 or higher for project run/build tasks."}},required:["prompt"]}},{name:"start_hermes_job",description:"Start a long-running local Hermes job in the background and immediately create a live-updating dashboard artifact. Use for running projects, builds, tests, installs, dev servers, or multi-step Hermes work that may take more than a minute.",input_schema:{type:"object",properties:{prompt:{type:"string",description:"The full task Hermes should perform."},title:{type:"string",description:"Artifact/job title."},session_id:{type:"string",description:"Optional Hermes session id."},model:{type:"string",description:"Optional Hermes model override."},timeout_ms:{type:"number",description:"Optional job timeout in milliseconds. Use 1800000 for long project tasks."},cwd:{type:"string",description:"Optional absolute working directory for the project Hermes should run."}},required:["prompt"]}},{name:"run_agent",description:'Run an existing sub-agent NOW (on demand, outside its normal schedule). Use this when the owner says "run X", "trigger X", "do today\'s run of X", etc. The run executes synchronously and publishes live tool-call events to the dashboard. Returns the run summary and a short result preview.',input_schema:{type:"object",properties:{agent_id:{type:"string",description:'Slug id (e.g. "uae-ai-initiatives-tracker"). Prefer this if known. Use list_agents / get_state first to look it up.'},agent_name:{type:"string",description:'Fuzzy human-readable name (e.g. "UAE tracker"). Used only if agent_id is not provided. Case-insensitive substring match against agent names; ambiguous matches error.'},wake_reason:{type:"string",description:'Short label for the audit log, e.g. "owner requested via whatsapp".'},instruction:{type:"string",description:"OPTIONAL task-specific instruction for THIS run only — what to do right now. Overrides the agent's standing mission for this single run; never saved onto the agent. Use it to dispatch an existing agent at an ad-hoc job (e.g. \"compare this week's numbers to last week and flag anomalies\"). Omit to run the agent's standing mission. The agent can still only use the tools it was granted — this does not expand its permissions."},expected_output:{type:"string",description:"OPTIONAL deliverable contract for THIS run only — what a complete, correct result must contain (format, sections, acceptance criteria). Overrides the agent's standing expected_output for this run. Use it to pin down what 'done' looks like for an ad-hoc instruction."}}}},{name:"mines_run_report",description:'Generate ONE mines diligence report for a project as a single action (the workflow authors the number-free narrative and the report tool renders every figure from cited database rows). Use report_kind "pfs_readiness_report" when the owner asks to "assess PFS readiness". The report\'s LLM authoring runs on the configured engine (Claude Code CLI for the personal tier, Anthropic API for production) — it works even when no Anthropic API key is set. Returns the artifact id.',input_schema:{type:"object",properties:{project_id:{type:"string",description:"mines_projects.id. Use list/get_state or find the project first if unknown."},report_kind:{type:"string",description:"One of: pfs_readiness_report, due_diligence_memo, investor_presentation, data_quality_report, interpretation_memo."},engine:{type:"string",description:'OPTIONAL engine override: "claude-code" (personal CLI subscription) or "anthropic" (production API). Defaults to the mines agents\' configured engine. This is a cost/scale tier, not a capability change.'}},required:["project_id","report_kind"]}},{name:"find_artifacts",description:'Search past artifacts (reports, briefs, generated UIs) by title, agent, or kind. Use when the owner asks for "the latest X report", "send me yesterday\'s brief", or "what did <agent> produce". Returns up to 50 rows, most recent first, with id/title/kind/agent_name/created_at — NOT the full content. To deliver one, follow up with send_artifact_to_whatsapp. SEARCH BROADLY: title_query does word-level matching (every word must appear, any order), but if the first query returns 0 rows, RETRY with a shorter / broader query — try just the noun ("brief", "report") before concluding nothing exists. Real titles often include words the owner did not say (e.g. "AI Daily Brief scheduled report" vs the owner saying "AI brief").',input_schema:{type:"object",properties:{title_query:{type:"string",description:'Fuzzy substring of the artifact title (case-insensitive). E.g. "conflict" matches "Conflict brief 2026-05-13".'},agent_id:{type:"string",description:"Filter to one specific agent id."},agent_name:{type:"string",description:'Fuzzy substring of the agent name (case-insensitive). E.g. "conflict" matches "Conflict Brief Agent".'},kind:{type:"string",description:'Filter by kind: "html", "document" (rendered markdown), or other.'},project_id:{type:"string",description:"Filter to one project id or slug."},space_id:{type:"string",description:'Filter to one dashboard space id, e.g. "default".'},limit:{type:"number",description:"Max rows to return (default 10, max 50)."}}}},{name:"send_artifact_to_whatsapp",description:'Deliver an existing artifact as an .html file to a WhatsApp chat. Use after find_artifacts (or get_state) to send a past report on demand — e.g. "send me the latest conflict brief on whatsapp". Pass either artifact_id (preferred) or title_query (fuzzy match — must resolve to one row). If chat_id is omitted on the WhatsApp channel, defaults to the chat the owner is messaging from. The WhatsApp bridge must be paired.',input_schema:{type:"object",properties:{artifact_id:{type:"string",description:"Exact artifact id (preferred). Get this from find_artifacts."},title_query:{type:"string",description:"Fuzzy substring of the title. Used only when artifact_id is omitted; ambiguous matches error."},chat_id:{type:"string",description:"WhatsApp chat id to deliver to. Omit on inbound WhatsApp to send back to the same chat."}}}},{name:"whatsapp_send",description:'Send a WhatsApp message to a chat the owner has added to the allowlist. Use sparingly for proactive owner alerts and follow-ups (e.g., "scheduled report is ready"). The bridge must be paired and online; if not, this returns an error.',input_schema:{type:"object",properties:{chat_id:{type:"string",description:"Allowlisted WhatsApp chat id (full JID like 9715XXXXXXXX@s.whatsapp.net, or plain digits which are normalized)."},text:{type:"string",description:"Plain text message body. WhatsApp does not render markdown — keep it conversational."}},required:["chat_id","text"]}},{name:"list_available_tools",description:'List all marketplace tools with their enabled status, availability, risk level, and missing credentials. Use this before saying "I cannot do X" to check whether a tool exists. Filter by category (travel, web, github, email, supabase, vercel, local_machine, browser, voice, calendar) or by enabled_only to see what is currently active.',input_schema:{type:"object",properties:{category:{type:"string",description:"Optional category filter: travel, web, github, email, supabase, vercel, local_machine, browser, voice, calendar."},enabled_only:{type:"boolean",description:"When true, return only currently-enabled tools."}}}},{name:"install_tool",description:"Enable a marketplace tool by name so it becomes available for immediate use. Call this after list_available_tools identifies a disabled tool that can satisfy the principal's request. If the tool has missing credentials, the response includes a missing_credentials list — surface this to the principal. Tools rated irreversible_external will still require per-call owner approval when invoked.",input_schema:{type:"object",properties:{tool_name:{type:"string",description:'Exact tool name from list_available_tools, e.g. "flight_search" or "hotel_rates".'}},required:["tool_name"]}},{name:"uninstall_tool",description:"Disable a marketplace tool by name. Use when the principal asks to turn off a tool or when a tool is causing issues.",input_schema:{type:"object",properties:{tool_name:{type:"string",description:'Exact tool name to disable, e.g. "email_send".'}},required:["tool_name"]}},{name:"route_goal",description:"CALL THIS FIRST for any non-trivial request, BEFORE attempting a specialist task yourself. It grounds your delegation decision: given the user goal, it returns the live capability registry — every active agent with its role, mission, skills, and granted tools; the enabled-tool catalog; whether Tool Smith is available to build missing capabilities — plus the fallback ladder. Reason over it and pick the path: delegate to a fit specialist (run_agent), create_then_delegate when none fits (create_agent), build_capability when a specialist exists but lacks a required tool (request_capability), or direct_fallback for a trivial one-line factual answer. Read-only, no side effects.",input_schema:{type:"object",properties:{goal:{type:"string",description:'The user goal in one sentence, e.g. "find a return flight DXB to London for May 18-25" or "draft a reply to this email".'}},required:["goal"]}},{name:"request_capability",description:'Delegate to Tool Smith to BUILD a capability that does not exist yet. Use when an agent needs a tool/skill/integration the system lacks (e.g. "log meetings to Notion" with no Notion tool). First dedupes against existing capabilities; if none matches, files a build task for the tool-smith-agent which authors a composite tool, a REST connector, a skill, or proposes code. Returns the task id. The authored capability is still subject to all runtime gates when used.',input_schema:{type:"object",properties:{capability_description:{type:"string",description:'Plain-language description of the capability needed, e.g. "create pages in Notion" or "summarize a daily competitor digest".'},target_agent_id:{type:"string",description:"Optional id of the agent that should be granted the capability once built."},acceptance_criteria:{type:"string",description:"Optional explicit acceptance criteria for the build."}},required:["capability_description"]}}],aa=new Set(["send_to_hermes","start_hermes_job"]);function J(){if("off"===process.env.MADARX_DELEGATION_ENFORCEMENT)return new Set;try{return new Set((0,q.n4)().filter(u.Wp).map(a=>a.name))}catch{return new Set}}function K(){let a=(0,j.oG)()?_:_.filter(a=>!aa.has(a.name)),b=J();return(0,q.Cz)(a).filter(a=>!b.has(a.name))}function L(a,b=180){let c="string"==typeof a?a:null==a?"":String(a);return c.length<=b?c:c.slice(0,b)+`…[+${c.length-b} bytes, use show_artifact/find_artifacts]`}function M(a){if(!a)return a;let b="string"==typeof a.content?a.content:"";return{id:a.id,title:a.title,kind:a.kind,project_id:a.project_id??null,created_at:a.created_at,updated_at:a.updated_at,content_bytes:b.length,content_preview:b?L(b):""}}function N(a){if(!a)return a;let b=Array.isArray(a.memory)?a.memory.slice(-2):[];return{id:a.id,name:a.name,engine:a.engine,status:a.status,project_id:a.project_id??null,schedule:a.schedule,last_run_at:a.last_run_at??null,tools_count:Array.isArray(a.tools)?a.tools.length:0,memory_count:Array.isArray(a.memory)?a.memory.length:0,memory_recent:b.map(a=>"string"==typeof a?L(a,200):a)}}function O(a){return a?{id:a.id,agent_id:a.agent_id??null,project_id:a.project_id??null,status:a.status,started_at:a.started_at,finished_at:a.finished_at??null,summary:L(a.summary??a.note??"",160)}:a}function P(a){return a?{id:a.id,action_type:a.action_type,status:a.status,requested_at:a.requested_at,agent_id:a.agent_id??null,summary:L(a.summary??a.note??"",160)}:a}function Q(a){return a?{id:a.id,schedule_id:a.schedule_id??null,agent_id:a.agent_id??null,status:a.status,scheduled_for:a.scheduled_for??null,attempts:a.attempts??0}:a}function R(a){let b;try{b=JSON.stringify(a)}catch{return a}return!b||b.length<=6e4?a:{ok:!1,truncated:!0,original_bytes:b.length,max_bytes:6e4,preview:b.slice(0,59744),error:`tool_result exceeded 60000 bytes (got ${b.length}); narrow the query or use show_artifact for a specific id.`}}async function S(a,b={},c={}){if(J().has(a))return R({ok:!1,error:"delegate_required",message:`"${a}" is a specialist tool you do not own directly. Call route_goal(goal), then delegate to the agent that owns it with run_agent — or request_capability if no agent has it.`});let d=await T(a,b,c);return R(d)}async function T(a,b={},c={}){switch(a){case"create_agent":return H(b);case"update_agent":return function(a){let b=W(a);if(!b.ok)return{ok:!1,error:b.error};let c=b.agent,d={};for(let b of["expected_output","mission","system_prompt"])"string"==typeof a[b]&&(d[b]=a[b]);if(0===Object.keys(d).length)return{ok:!1,error:"Nothing to update. Pass at least one of: expected_output, mission, system_prompt."};let e=(0,g.x4)(c.id,d);if(!e.ok)return{...e,agent_id:c.id,agent_name:c.name};let f=Object.keys(d);return(0,g.appendAudit)({type:"agent.contract.update",summary:`Updated ${c.name} contract via main agent: ${f.join(", ")}`,status:"complete",meta:{agent_id:c.id,fields:f}}),{ok:!0,agent_id:c.id,agent_name:c.name,updated_fields:f}}(b);case"upsert_schedule":return(0,g.Nv)(b);case"competitor_report":return(0,g.NK)({triggered_by:b.triggered_by??"claude"});case"marketing_plan":return(0,g.mk)({triggered_by:b.triggered_by??"claude"});case"heartbeat_tick":return(0,g.IG)({triggered_by:b.triggered_by??"claude"});case"claude_dry_run":return(0,g.nF)({prompt:b.prompt},{triggered_by:"claude"});case"get_state":{let a=b.project_id??null;var d,e,f=(0,g.Gu)({project_id:a?String(a):null});if(!f||"object"!=typeof f)return f;return{ok:f.ok,product:f.product,workspace:f.workspace,project_filter:f.project_filter,projects:f.projects,agents:Array.isArray(f.agents)?f.agents.map(N):f.agents,tasks:f.tasks,runs:Array.isArray(f.runs)?f.runs.slice(0,8).map(O):f.runs,audit:(d=f.audit,(Array.isArray(d)?d.slice(0,6):[]).map(a=>({id:a.id,type:a.type,at:a.at,actor:a.user_id||a.acting_on_behalf_of_user_id||null,target:a.action_target_id??null,note:L(a.note??a.detail??"",160)}))),activity:(e=f.activity,(Array.isArray(e)?e.slice(0,10):[]).map(a=>({id:a.id,type:a.type,at:a.at,agent_id:a.agent_id??null,project_id:a.project_id??null,summary:L(a.summary??a.detail??"",160)}))),schedules:f.schedules,connectors:f.connectors,artifacts:Array.isArray(f.artifacts)?f.artifacts.map(M):f.artifacts,heartbeat_tasks:Array.isArray(f.heartbeat_tasks)?f.heartbeat_tasks.slice(0,5).map(Q):f.heartbeat_tasks,heartbeat_task_events_count:Array.isArray(f.heartbeat_task_events)?f.heartbeat_task_events.length:0,approvals:Array.isArray(f.approvals)?f.approvals.slice(0,6).map(P):f.approvals,pending_approvals:Array.isArray(f.pending_approvals)?f.pending_approvals.slice(0,6).map(P):f.pending_approvals,local_processes:f.local_processes,local_tool_audit_count:Array.isArray(f.local_tool_audit)?f.local_tool_audit.length:0,main_agent_trust_mode:f.main_agent_trust_mode,reporting_summary:f.reporting&&"object"==typeof f.reporting?{keys:Object.keys(f.reporting)}:null,_note:"Artifact bodies + heartbeat events + reporting stripped. Use find_artifacts/show_artifact for content; query specific endpoints (/api/heartbeat, /api/audit) for full lists."}}case"list_agents":{let a=(0,g.vc)().filter(a=>"tool-smith-agent"!==a.id&&"terminated"!==a.status).map(a=>{let b=[];try{b=(0,g.K2)(a.id).filter(a=>"disabled"!==a.mode).map(a=>a.tool_name)}catch{}let c=0;try{c=(0,v.Vk)({assignee_agent_id:a.id}).filter(a=>"done"!==a.status&&"cancelled"!==a.status).length}catch{}return{id:a.id,name:a.name,role:a.role||a.type||null,status:a.status||null,engine:a.engine||null,mission:a.mission||null,tools:b,open_tasks:c}});return{ok:!0,agents:a,agent_count:a.length}}case"list_projects":return{ok:!0,projects:(0,y.hF)({status:"all"})};case"disk_list_folders":return(0,z.$D)(b,c);case"disk_list_files":return(0,z.ri)(b,c);case"disk_read_file":return(0,z._z)(b,c);case"create_artifact":{let a=new Set(["markdown","text"]).has(b.kind)?b.kind:"markdown";return(0,g.Dg)({...b,kind:a,project_id:b.project_id??c.project_id??null,agent_id:b.agent_id??c.agent_id??null,heartbeat_task_id:b.heartbeat_task_id??c.heartbeat_task_id??null,dedupe_key:b.dedupe_key,space_id:b.space_id??c.space_id??null})}case"update_artifact":return(0,g.eP)(b.artifact_id,{title:b.title,content:b.content});case"delete_artifact":return(0,g.CM)(b.artifact_id);case"move_artifact":return(0,g.S9)(b.artifact_id,{target_project_id:b.target_project_id});case"list_spaces":return{ok:!0,...b.include_artifact_ids?(0,A.OT)():(0,A.iF)()};case"create_space":return{ok:!0,space:(0,A.bz)({name:b.name})};case"rename_space":return{ok:!0,space:(0,A.Jh)(b.space_id,b.name)};case"set_active_space":return{ok:!0,space:(0,A.BQ)(b.space_id)};case"delete_space":return{ok:!0,...(0,A.cN)(b.space_id)};case"move_artifact_to_space":return{ok:!0,...(0,A.h5)(b.artifact_id,b.space_id)};case"import_brand_guidelines":return E(b);case"generate_ui":return Y({...b,project_id:b.project_id??c.project_id??null});case"send_to_hermes":return C({...b,project_id:b.project_id??c.project_id??null});case"start_hermes_job":return D({...b,project_id:b.project_id??c.project_id??null});case"whatsapp_send":return(0,x.op)(b.chat_id,b.text);case"run_agent":return X(b,c);case"mines_run_report":return(0,w.Ij)({projectId:b.project_id,report_kind:b.report_kind,engine:b.engine||null,user_id:c.user_id||c.acting_on_behalf_of_user_id||"local-user",org_id:c.org_id||"personal-org"});case"set_agent_whatsapp_notify":var h=b;let i=W(h);if(!i.ok)return{ok:!1,error:i.error};let j=null==h.chat_id?null:String(h.chat_id).trim()||null;return{...(0,g.bC)(i.agent.id,j),agent_name:i.agent.name};case"find_artifacts":var k=b;let l=(0,g.n1)({title_query:k.title_query,agent_id:k.agent_id,agent_name:k.agent_name,kind:k.kind,project_id:k.project_id,space_id:k.space_id,limit:k.limit});return{ok:!0,count:l.length,artifacts:l.map(a=>({id:a.id,title:a.title||"(untitled)",kind:a.kind,agent_name:a.agent_name||null,agent_id:a.agent_id||null,created_at:a.created_at,project_id:a.project_id||null,space_id:a.space_id||null,path:a.path}))};case"read_artifact":return function(a){let b=U({artifact_id:a.artifact_id,title_query:a.title_query});if(!b.ok)return b;let c=b.artifact;if(c.is_protected)return{ok:!1,error:"Artifact is passphrase-protected; cannot be read from voice without unlock."};if(c.encrypted)return{ok:!1,error:"Artifact body is encrypted at rest; voice read path does not decrypt."};let d=Math.min(Math.max(Number(a.max_chars)||12e3,1e3),14e3),e=String(c.content||""),f=c.source_md?String(c.source_md):null,g=f||e,h=g.length>d;return{ok:!0,artifact:{id:c.id,title:c.title||"(untitled)",kind:c.kind,agent_id:c.agent_id||null,created_at:c.created_at,path:c.path||null,project_id:c.project_id||null,space_id:c.space_id||null,content_format:f?"markdown":"rendered",total_chars:g.length,returned_chars:Math.min(g.length,d),truncated:h,content:h?g.slice(0,d):g}}}(b);case"send_artifact_to_whatsapp":return V(b,c);case"list_available_tools":return function({category:a,enabled_only:b}={}){let c=(0,q.n4)();if(a){let b=String(a).toLowerCase();c=c.filter(a=>(a.category||"").toLowerCase()===b)}return b&&(c=c.filter(a=>a.enabled)),{ok:!0,count:c.length,tools:c.map(a=>({name:a.name,title:a.title,description:a.description,category:a.category,enabled:a.enabled,available:a.available,risk_level:a.risk_level,allowlist_required:a.allowlist_required,missing_env:a.missing_env}))}}(b);case"install_tool":return function({tool_name:a}={}){if(!a||"string"!=typeof a)return{ok:!1,error:"tool_name is required"};try{let b=(0,q.G7)(a,!0);if(!b)return{ok:!1,error:`Unknown tool: ${a}`};let c={ok:!0,status:"enabled",tool_name:b.name,title:b.title,category:b.category,risk_level:b.risk_level};return b.missing_env&&b.missing_env.length>0&&(c.missing_credentials=b.missing_env,c.note=`Tool enabled but not yet usable — configure: ${b.missing_env.join(", ")}`),"irreversible_external"===b.risk_level&&(c.warning="This tool is rated irreversible_external. Each call will require owner approval regardless of trust mode."),c}catch(a){return{ok:!1,error:a.message}}}(b);case"uninstall_tool":return function({tool_name:a}={}){if(!a||"string"!=typeof a)return{ok:!1,error:"tool_name is required"};try{let b=(0,q.G7)(a,!1);if(!b)return{ok:!1,error:`Unknown tool: ${a}`};return{ok:!0,status:"disabled",tool_name:b.name,title:b.title}}catch(a){return{ok:!1,error:a.message}}}(b);case"route_goal":return(0,t.Sh)({goal:b.goal,project_id:c.project_id||null});case"request_capability":return function(a={},b={}){let c=String(a.capability_description||"").trim();if(!c)return{ok:!1,error:"capability_description is required"};let d=function(a){let b=new Set(I(a));if(!b.size)return null;let c=[];try{for(let a of(0,q.n4)())c.push({name:a.name,kind:"tool"})}catch{}try{for(let a of(0,s.QH)({kind:"skill"}))c.push({name:a.slug,kind:"skill"})}catch{}for(let a of c){let c=I(a.name);if(c.length>=2&&c.every(a=>b.has(a)))return{name:a.name,kind:a.kind}}return null}(c);if(d)return{ok:!0,status:"exists",match:d,message:`A capability already covers this: ${d.name} (${d.kind}). Grant it instead of rebuilding.`};try{let a=Date.now()-36e5,b=(0,v.Vk)({assignee_agent_id:Z,limit:50}).filter(b=>{if(["done","cancelled"].includes(b.status))return!1;let c=Date.parse(b.created_at||"");return Number.isFinite(c)&&c>=a});if(b.length>=5)return{ok:!1,status:"rate_limited",message:`Too many capability build requests in flight (${b.length}). Wait for some to finish.`}}catch{}try{let d=a.target_agent_id?String(a.target_agent_id):null,e=(0,v.createTask)({title:`Build capability: ${c.slice(0,80)}`,description:["A capability is needed that does not exist yet:",` "${c}"`,"\nChoose the right authoring path and build it:\n - composite tool (chain existing tools), or\n - REST connector (new API + secret-by-reference), or\n - skill (instruction recipe), or\n - propose_tool (non-REST; staged code, human merge).\n",d?`Grant the result to agent: ${d}.`:"Return the slug so it can be granted to the requester."].join("\n"),acceptance_criteria:a.acceptance_criteria||"Capability authored and its slug returned so it can be granted to the requesting agent.",assignee_agent_id:Z,created_by_agent_id:b.agent_id||"main-orchestrator",priority:"p1",project_id:b.project_id||null});return{ok:!0,status:"requested",task_id:e.id,assignee:Z,target_agent_id:d,message:`Delegated to Tool Smith (task ${e.id}). It will author the capability and return a slug to grant.`}}catch(a){return{ok:!1,status:"error",error:"tool_smith_unavailable",message:String(a?.message||a)}}}(b,c);default:return(0,q.executeRegistryTool)(a,b)}}function U({artifact_id:a,title_query:b}){if(a){let b=(0,g.jZ)(a);return b?{ok:!0,artifact:b}:{ok:!1,error:`No artifact with id "${a}".`}}if(b){let a=(0,g.n1)({title_query:b,limit:5});return 0===a.length?{ok:!1,error:`No artifact title matches "${b}".`}:a.length>1?{ok:!1,error:`Ambiguous match for "${b}". Candidates: ${a.map(a=>`${a.title} (${a.id})`).join("; ")}. Pass artifact_id to disambiguate.`}:{ok:!0,artifact:(0,g.jZ)(a[0].id)}}return{ok:!1,error:"Pass either artifact_id or title_query."}}async function V(a,b){let c=U(a);if(!c.ok)return c;let d=c.artifact;if("html"!==d.kind&&"document"!==d.kind)return{ok:!1,error:`Artifact kind "${d.kind}" is not HTML-renderable; only html and document artifacts can be sent.`};if(!d.content||!String(d.content).trim())return{ok:!1,error:`Artifact ${d.id} has no rendered content to send.`};let e=a.chat_id&&String(a.chat_id).trim()||b.chat_id||null;if(!e)return{ok:!1,error:"No chat_id available — pass chat_id, or call this from the WhatsApp channel where the sender is known."};let f=await (0,x.getBridgeHealth)();if(!f||!1===f.ok||"paired"!==f.pairing_state)return{ok:!1,error:`WhatsApp bridge not paired (state=${f?.pairing_state||"unknown"}). Pair via /whatsapp before retrying.`};let g=String(d.title||"artifact").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,60)||"artifact";try{let a=await (0,x.sendWhatsAppDocument)({chat_id:e,content:d.content,filename:`${g}.html`,mimetype:"text/html",caption:d.title||void 0});return{ok:!0,artifact_id:d.id,title:d.title,chat_id:e,message_id:a?.message_id||null}}catch(a){return{ok:!1,error:`Bridge send failed: ${a.message}`,artifact_id:d.id}}}function W({agent_id:a,agent_name:b}){if(a){let b=(0,g.vc)().find(b=>b.id===a);return b?{ok:!0,agent:b}:{ok:!1,error:`No agent with id "${a}". Use get_state to list agents.`}}if(b){let a=String(b).toLowerCase().trim(),c=(0,g.vc)(),d=c.find(b=>(b.name||"").toLowerCase()===a);if(d)return{ok:!0,agent:d};let e=c.filter(b=>(b.name||"").toLowerCase().includes(a)||(b.id||"").toLowerCase().includes(a));return 1===e.length?{ok:!0,agent:e[0]}:0===e.length?{ok:!1,error:`No agent matches "${b}". Existing: ${c.map(a=>a.name).join(", ")||"(none)"}`}:{ok:!1,error:`Ambiguous match for "${b}". Candidates: ${e.map(a=>`${a.name} (${a.id})`).join(", ")}. Pass agent_id to disambiguate.`}}return{ok:!1,error:"Pass either agent_id or agent_name."}}async function X(a,b={}){let c=W(a);if(!c.ok)return{ok:!1,error:c.error};let d=c.agent,e=a.wake_reason||"on-demand from main agent",f="string"==typeof a.instruction&&a.instruction.trim()?a.instruction.trim():null,i="string"==typeof a.expected_output&&a.expected_output.trim()?a.expected_output.trim():null,j=Array.isArray(b.pending_approvals)?b.pending_approvals:[];try{(f||i)&&(0,g.appendAudit)({type:"agent.run.override",summary:`Ad-hoc run of ${d.name} with per-call contract`,status:"complete",meta:{agent_id:d.id,wake_reason:e,has_instruction:!!f,has_expected_output:!!i}});let a=null;try{let c=(f||e||`Run ${d.name}`).slice(0,140);a=(0,v.createTask)({title:c,description:f||null,assignee_agent_id:d.id,status:"todo",priority:"medium",created_by_user_id:b.user_id||null,project_id:b.project_id||null,acceptance_criteria:i||null,suppress_wake:!0})}catch{a=null}let c=await (0,h.G)(d.id,{triggered_by:"main_agent",task_id:a?.id||null,wake_reason:e,instruction:f,expected_output:i,pending_approvals:j});if(!c)return{ok:!1,error:`runAgentTick returned null for ${d.id}`};if(a&&!c.pending_approval)try{let b=(0,v.gg)(a.id);b&&"in_review"===b.status&&(0,v.lC)(a.id,{status:"done",actor_type:"agent",actor_id:d.id})}catch{}return{ok:!0,agent_id:d.id,agent_name:d.name,run_id:c.id,task_id:a?.id||null,status:c.pending_approval?"awaiting_approval":c.status||"complete",title:c.artifact_title||c.title,preview:(c.preview||"").slice(0,600),artifact_id:c.artifact_id||null,artifact:c.artifact||null,pending_approval:c.pending_approval||null}}catch(a){return{ok:!1,error:a.message,agent_id:d.id}}}d()}catch(a){d(a)}})},2167:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Nw:()=>n,oG:()=>l,qC:()=>k,v8:()=>m});var e=c(31421),f=c(73024),g=c(76760),h=c(9381),i=c(24516),j=a([i]);function k(){let a=(0,i.getSecret)("HERMES_AGENT_DIR");return g.resolve(process.env.HERMES_AGENT_DIR||a||g.join(h.Dl,"..","hermes-agent"))}function l(){try{let a=k(),b=g.join(h.Dl,"scripts","hermes-command.py");return f.existsSync(a)&&f.existsSync(b)}catch{return!1}}function m(){let a=k(),b=g.join(h.Dl,"scripts","hermes-command.py"),c=f.existsSync(a),d=f.existsSync(b);return{available:c&&d,hermes_dir:a,dir_exists:c,script_exists:d,env_override:!!(process.env.HERMES_AGENT_DIR||(0,i.getSecret)("HERMES_AGENT_DIR"))}}function n({prompt:a,session_id:b,model:c,timeout_ms:d,cwd:i}={}){if(!a||"string"!=typeof a)throw Error("prompt is required");if(process.env.HERMES_MOCK_RESPONSE)return Promise.resolve({ok:!0,response:process.env.HERMES_MOCK_RESPONSE,session_id:b||"madarx-hermes-mock",model:c||null,mocked:!0});let{hermesDir:j,python:l,env:m}=function(a={}){let b=k(),c=function(a=k()){for(let b of[process.env.HERMES_PYTHON,process.env.PYTHON,g.join(a,".venv","bin","python"),"/opt/homebrew/bin/python3.12","/opt/homebrew/bin/python3.11","/opt/homebrew/bin/python3.10",g.join(process.env.HOME||"",".local","bin","python3.12"),g.join(process.env.HOME||"",".local","bin","python3.11"),g.join(process.env.HOME||"",".local","bin","python3.10"),"python3.12","python3.11","python3.10","python3"].filter(Boolean))if(!b.includes("/")||f.existsSync(b))return b;return"python3"}(b);return{hermesDir:b,python:c,env:{...function(){let a=g.join(h.Dl,".env.local");if(!f.existsSync(a))return{};let b={};for(let c of f.readFileSync(a,"utf8").split(/\r?\n/)){let a=c.trim();if(!a||a.startsWith("#")||!a.includes("="))continue;let d=a.indexOf("="),e=a.slice(0,d).trim(),f=a.slice(d+1).trim();(f.startsWith('"')&&f.endsWith('"')||f.startsWith("'")&&f.endsWith("'"))&&(f=f.slice(1,-1)),b[e]=f}return b}(),...process.env,...a,HERMES_AGENT_DIR:b,HERMES_PYTHON_USED:c}}}(),o=Number(d||process.env.HERMES_TIMEOUT_MS||6e5),p=function({prompt:a,session_id:b,model:c,cwd:d}={}){let e=k(),f=[g.join(h.Dl,"scripts","hermes-command.py"),"--hermes-dir",e,"--prompt",a];return b&&f.push("--session-id",b),c&&f.push("--model",c),d&&f.push("--cwd",d),f}({prompt:a,session_id:b,model:c,cwd:i});return new Promise((a,b)=>{let c=(0,e.spawn)(l,p,{cwd:j,env:m,stdio:["ignore","pipe","pipe"]}),d="",f="",g=!1,h=setTimeout(()=>{g=!0,c.kill("SIGTERM"),b(Error(`Hermes timed out after ${Math.round(o/1e3)}s`))},o);c.stdout.on("data",a=>{d+=a.toString()}),c.stderr.on("data",a=>{f+=a.toString()}),c.on("error",a=>{g||(g=!0,clearTimeout(h),b(a))}),c.on("close",c=>{if(!g){if(g=!0,clearTimeout(h),0!==c)return void b(Error((f||d||`Hermes exited with code ${c}`).trim()));try{let b=function(a){let b=String(a||"").trim();if(!b)throw Error("Hermes returned no output");let c=b.split("\n").filter(Boolean).at(-1);try{return JSON.parse(c)}catch{throw Error(`Hermes returned non-JSON output: ${b.slice(-500)}`)}}(d);if(!b.ok)throw Error(b.error||"Hermes command failed");if(!String(b.response||"").trim())throw Error("Hermes completed without a final response");a(b)}catch(a){b(a)}}})})}i=(j.then?(await j)():j)[0],d()}catch(a){d(a)}})},41647:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Sh:()=>m});var e=c(73024),f=c(76760),g=c(9381),h=c(60105),i=c(40718),j=c(5295),k=a([h,i]);[h,i]=k.then?(await k)():k;let n="tool-smith-agent",o=[{step:"delegate",when:"A live specialist exists whose role/tools cover the goal. Dispatch it with run_agent."},{step:"create_then_delegate",when:"No fit specialist exists yet. Spawn one (create_agent from the closest template/mission), then delegate."},{step:"build_capability",when:"A specialist exists but lacks a required tool. Call request_capability so Tool Smith builds + grants it, then delegate."},{step:"direct_fallback",when:"Trivial one-line factual ask, or no capability can be built — answer directly / re-grant the tool for this one turn (audited)."}];function l(a){return"terminated"!==a&&"paused"!==a}function m({goal:a="",project_id:b=null}={}){let c=(0,h.vc)(),d=(b?c.filter(a=>!a.project_id||a.project_id===b):c).filter(a=>a.id!==n&&l(a.status)).map(a=>({id:a.id,name:a.name,role:a.role||a.type||null,title:a.title||null,mission:a.mission||null,status:a.status||null,tools:function(a){try{let b=(0,h.K2)(a).filter(a=>"disabled"!==a.mode);if(b.length)return b.map(a=>a.tool_name)}catch{}return[]}(a.id),skills:function(a){try{return e.readFileSync(f.join(g.bo,a,"skills.md"),"utf8").trim().slice(0,1200)}catch{return""}}(a.id)})),k=(0,i.n4)().map(a=>({name:a.name,category:a.category||null,title:a.title||null,enabled:!!a.enabled,available:!!a.available,specialist:(0,j.Wp)(a)})),p=c.find(a=>a.id===n&&l(a.status)),q=function(a){let b=String(a||"");if(!b.trim())return null;for(let[a,c]of j.Wq)if(a.test(b))return{category:c,role:(0,j.W6)(c)||null};return null}(a),r=(0,j.Op)(a),s=function({agents:a=[],categories:b=[],catalog:c=[]}={}){let d=new Set(b);if(!d.size)return[];let e=new Map((c||[]).map(a=>[a.name,a.category])),f=[];for(let b of a){let a=(b.tools||[]).filter(a=>d.has(e.get(a)));a.length&&f.push({id:b.id,name:b.name,role:b.role||null,owns_tools:a})}return f.sort((a,b)=>b.owns_tools.length-a.owns_tools.length),f}({agents:d,categories:r,catalog:k}),t=(function(a=[],b=[]){let c=new Set(b);return c.size?(a||[]).filter(a=>c.has(a.category)):[]})(k,r).map(a=>({name:a.name,category:a.category,enabled:a.enabled,available:a.available,owners:d.filter(b=>(b.tools||[]).includes(a.name)).map(a=>a.id)})),u=s.length?`CAPABILITY MATCH — recommended_specialists already own the tool(s) this goal needs (see tools_for_goal). PREFER ladder step 1 (delegate) to "${s[0].name}" (owns ${s[0].owns_tools.join(", ")}); do NOT create a new agent when one already owns the tool. `:t.length?`CAPABILITY MATCH — no existing agent owns the tool(s) this goal needs (tools_for_goal lists them). create_then_delegate, and when you create_agent you MUST grant it those tools — an agent with no matching tool cannot finish the goal. `:"";return{goal:String(a||""),agents:d,agent_count:d.length,tools_catalog:k,tool_smith_available:!!p,fast_path_hint:q,needed_categories:r,recommended_specialists:s,tools_for_goal:t,recommendation_ladder:o,routing_note:u+"Reason over agents[] (role/mission/skills/tools) vs. what this goal needs. Pick a ladder step: delegate an existing fit specialist, create_then_delegate when none fits, build_capability via Tool Smith when a specialist lacks a tool, or direct_fallback for trivial asks. fast_path_hint is only a shortcut for obvious domains — do not treat it as the answer when the goal is broader."}}d()}catch(a){d(a)}})},51989:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{$D:()=>k,_z:()=>m,ri:()=>l});var e=c(73912),f=c(61423),g=c(60105),h=a([e,f,g]);function i(a,b,c={}){try{(0,g.appendAudit)({type:`disk.${a}`,summary:`${a} ${b}`,status:b,meta:c})}catch{}}function j(a={},b={}){let c=a.project_id??b.project_id??null;if(!c){let a=Error("No project specified. Pass project_id (id or slug), or call list_projects to find one.");throw a.code="project_required",a}let d=(0,f.U1)(String(c));if(!d){let a=Error(`Project "${c}" not found. Call list_projects to see available projects and their slugs.`);throw a.code="project_not_found",a}return d}async function k(a={},b={}){let c=j(a,b),d=(0,e.uT)(c.id).map(a=>({id:a.id,name:a.name,path:a.path,parent_id:a.parent_id??null}));return i("list_folders","complete",{project_id:c.id,count:d.length}),{ok:!0,tool:"disk_list_folders",project:{id:c.id,slug:c.slug,name:c.name},folders:d,metadata:{count:d.length}}}async function l(a={},b={}){let c=j(a,b),d={project_id:c.id};a.folder_id&&(d.folder_id=String(a.folder_id));let f=(0,e.CS)(d).map(a=>({id:a.id,name:a.name,kind:a.kind,folder_id:a.folder_id??null,size_bytes:a.size_bytes,local_only:!0===a.local_only,updated_at:a.updated_at}));return i("list_files","complete",{project_id:c.id,folder_id:d.folder_id??null,count:f.length}),{ok:!0,tool:"disk_list_files",project:{id:c.id,slug:c.slug,name:c.name},files:f,metadata:{count:f.length}}}async function m(a={},b={}){let c=a.file_id?String(a.file_id):"";if(!c){let a=Error("file_id is required. Call disk_list_files first to get a file id.");throw a.code="file_id_required",a}let d=b.engine||"anthropic",g=(0,e.AB)(c,d),h=a.project_id??b.project_id??null;if(h){let a=(0,f.U1)(String(h));if(a&&g.project_id&&g.project_id!==a.id){let a=Error("That file belongs to a different project.");throw a.code="cross_project_denied",a}}return i("read_file","complete",{file_id:c,project_id:g.project_id??null,redacted:!!g.redacted,engine:d}),{ok:!0,tool:"disk_read_file",file:{id:g.id,name:g.name,kind:g.kind,project_id:g.project_id??null,local_only:!0===g.local_only,redacted:!!g.redacted},content:g.content}}[e,f,g]=h.then?(await h)():h,d()}catch(a){d(a)}})},64143:(a,b,c)=>{c.d(b,{Wl:()=>g,Xj:()=>j,getBridgeHealth:()=>f,op:()=>h,sendWhatsAppDocument:()=>i});let d=process.env.WHATSAPP_BRIDGE_URL||"http://127.0.0.1:3210";async function e(a,b,c,{timeoutMs:f=1e4}={}){let g=new AbortController,h=setTimeout(()=>g.abort(),f);try{let e=await fetch(`${(process.env.WHATSAPP_BRIDGE_URL||d).replace(/\/$/,"")}${b}`,{method:a,headers:c?{"Content-Type":"application/json"}:void 0,body:c?JSON.stringify(c):void 0,signal:g.signal}),f=await e.text(),h=null;try{h=f?JSON.parse(f):null}catch{}if(!e.ok){let a=Error(h?.error||`whatsapp-bridge ${e.status}`);throw a.status=e.status,a.body=h||f,a}return h}finally{clearTimeout(h)}}async function f(){try{return await e("GET","/health",null,{timeoutMs:3e3})}catch(a){return{ok:!1,error:a.message,status:a.status||null}}}async function g(){try{return await e("GET","/qr",null,{timeoutMs:3e3})}catch(a){return{ok:!1,error:a.message,status:a.status||null}}}async function h(a,b){if(!a)throw Error("chat_id is required");if(!b||!String(b).trim())throw Error("text is required");return e("POST","/send",{chat_id:a,text:String(b)})}async function i({chat_id:a,content:b,filename:c,mimetype:d,caption:f}){if(!a)throw Error("chat_id is required");if(!c)throw Error("filename is required");if(null==b)throw Error("content is required");let g=Buffer.isBuffer(b)?b:Buffer.from(String(b),"utf8");if(!g.length)throw Error("content is empty");return e("POST","/send-document",{chat_id:a,content_base64:g.toString("base64"),filename:c,mimetype:d||"application/octet-stream",caption:f||void 0},{timeoutMs:3e4})}async function j(){return e("POST","/logout",{},{timeoutMs:15e3})}},78224:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Z2:()=>u,Zn:()=>t,_3:()=>y,o0:()=>x,qw:()=>s,rK:()=>z,vy:()=>r});var e=c(73024),f=c(76760),g=c(31421),h=c(34255),i=c(9381),j=c(73066),k=c(61423),l=c(60105),m=c(8727),n=a([h,j,k,l,m]);[h,j,k,l,m]=n.then?(await n)():n;let A=new Set(["complete","failed","cancelled","stale"]);function o(a){return a?{...a}:null}function p(a){return a?{...a,payload:function(a,b){if(!a)return null;try{return JSON.parse(a)}catch{return null}}(a.payload,null)}:null}function q(a,b){let c=f.resolve(i.Dl,a),d=e.realpathSync(i.un),g=e.existsSync(f.dirname(c))?e.realpathSync(f.dirname(c)):f.resolve(f.dirname(c)),h=f.join(g,f.basename(c));if(!(h===d||h.startsWith(`${d}${f.sep}`)))throw Error(`Refusing to write artifact outside workspace: ${a}`);e.mkdirSync(f.dirname(c),{recursive:!0}),e.writeFileSync(c,b,"utf8")}function r(a=20){return(0,h.getDb)().prepare("SELECT * FROM hermes_jobs ORDER BY updated_at DESC LIMIT ?").all(a).map(o)}function s(a){let b=(0,h.getDb)();return o(b.prepare("SELECT * FROM hermes_jobs WHERE id = ?").get(a))}function t(a,b=200){return(0,h.getDb)().prepare("SELECT * FROM hermes_job_events WHERE job_id = ? ORDER BY at ASC LIMIT ?").all(a,b).map(p)}function u(a){let b=s(a);return b?{...b,events:t(a,500)}:null}function v(a,b=[]){let c=a.status||"queued",d=[],e=[...b].reverse().find(a=>"final"===a.type),f=[...b].reverse().find(a=>"error"===a.type);e?.message?d.push(e.message,""):(a.error||f?.message)&&d.push("## Error","",a.error||f.message,"");let g=b.filter(a=>!["final"].includes(a.type));if(g.length){for(let a of(d.push("## Progress",""),g.slice(-80))){let b=a.at?a.at.replace("T"," ").replace(/\.\d+Z$/,"Z"):"",c=(function(a,b=6e3){let c=String(a||"");return c.length>b?`${c.slice(0,b)}
|
|
34
|
+
`}({name:c,mission:d,tools:b})),j={...a,name:c,mission:d,tools:b,skills_markdown:h};e&&(j.system_prompt=e),void 0!==a.whatsapp_notify_chat_id&&(j.whatsapp_notify_chat_id=a.whatsapp_notify_chat_id||null);let k=`${c} ${d} ${a.role||""} ${a.title||""} ${a.type||""}`.toLowerCase();return(/\b(design|designer|ui|ux|brand|visual|creative|graphic|landing\s*page|mockup|wireframe)\b/.test(k)||b.includes("generate_ui"))&&(!a.engine||"claude-code"===a.engine)&&(j.engine="anthropic"),(0,g.Sn)(j)}let Z="tool-smith-agent",$=new Set(["data","api","apis","rest","http","https","json","web","url","feed","fetch","get","pull","load","read","list","lists","query","search","live","real","realtime","time","info","information","tool","tools","service","source","sources","row","rows","record","records","item","items","result","results","return","returns","value","values","given","day","date","via","such","run","call","create","update","new","for","and","with","from","into","the","that","this","structured","import","export","sync","connector","integration","request","response","page"]);function I(a){return String(a||"").toLowerCase().replace(/[._-]+/g," ").split(/[^a-z0-9]+/).filter(a=>a.length>=3).filter(a=>!$.has(a))}let _=[{name:"create_agent",description:"Create a new named sub-agent in the local workspace with files and optional schedule. Pick the engine based on what the agent actually does (see engine field).",input_schema:{type:"object",properties:{name:{type:"string",description:"Human-readable agent name."},mission:{type:"string",description:"What this agent does (its standing job — used as the default instruction every run)."},expected_output:{type:"string",description:"OPTIONAL standing deliverable contract: what a GOOD result looks like every run — format, required sections, acceptance criteria, definition of done. Set this whenever the agent has a repeatable output shape so runs are consistent and verifiable. A per-call run_agent override or a delegated task's acceptance_criteria takes precedence over this for a specific run."},schedule:{type:"string",description:'Cron-like schedule: "daily HH:MM", "every 5m", or "on demand".'},tools:{type:"array",items:{type:"string"},description:'madarX tool identifiers the agent is allowed to use (e.g. "web_search", "web_fetch", "file_read", "create_artifact"). Lowercase snake_case, NOT Claude Code tool names.'},type:{type:"string",description:'Agent type label, e.g. "custom" or "intelligence".'},engine:{type:"string",enum:["anthropic","claude-code","ollama","codex","hermes"],description:'DEFAULT is "claude-code" — uses the local Claude Code CLI with permissions from .claude/settings.json (Read/Glob/Grep/WebSearch/WebFetch auto-allowed; edits scoped to workspace/). Use this for almost everything. "anthropic" only when the agent needs the madarx tool marketplace specifically (create_artifact, generate_ui, whatsapp_send, competitor_report, marketing_plan — these do not exist under claude-code). "ollama" for cheap local-LLM work. "codex" for OpenAI Codex CLI. "hermes" rare. If the user does not specify, leave engine unset and the default applies.'},whatsapp_notify_chat_id:{type:"string",description:'OPTIONAL WhatsApp chat id (e.g. 9715XXXXXXXX@s.whatsapp.net, or plain digits). When set, every scheduled run that produces a report artifact will auto-deliver the rendered HTML file to this chat. The bridge must be paired; if not, delivery is skipped silently. Set this only when the owner explicitly says "send to whatsapp" or "deliver to me on whatsapp".'}},required:["name","mission"]}},{name:"update_agent",description:'Edit an EXISTING agent\'s standing contract — its expected output (deliverable spec), mission, or system prompt. Use this when the owner says "change what X produces", "update the expected output of X", "edit X\'s mission", or refines an agent you just created. Identify the agent by agent_id (preferred) or a fuzzy agent_name. Only the fields you pass are changed; the rest are left as-is. Pass an empty string to CLEAR a field (it falls back to the next default). This persists onto the agent row, so it applies to every future run — unlike run_agent\'s per-call expected_output, which overrides one run only. To change schedule use upsert_schedule; to (dis)connect WhatsApp use set_agent_whatsapp_notify.',input_schema:{type:"object",properties:{agent_id:{type:"string",description:"Slug id of the agent to edit (preferred). Use list_agents / get_state to look it up."},agent_name:{type:"string",description:"Fuzzy human-readable name (used only when agent_id is missing). Must resolve to exactly one agent."},expected_output:{type:"string",description:"New standing deliverable contract: what a GOOD result looks like every run — format, required sections, acceptance criteria, definition of done. Empty string clears it."},mission:{type:"string",description:"New standing job (the default instruction every run). Empty string clears it."},system_prompt:{type:"string",description:"New system prompt for the agent. Empty string clears it (falls back to the generated default). Advanced — usually edit mission/expected_output instead."}},required:[]}},{name:"set_agent_whatsapp_notify",description:'Enable, change, or disable WhatsApp delivery of scheduled-run artifacts for an existing agent. Pass an empty string or null in chat_id to disable. Use this when the owner says "send X to me on whatsapp", "stop whatsapping me X", or wants to switch the notify chat. The bridge must be paired for delivery to actually happen; the setting is stored either way.',input_schema:{type:"object",properties:{agent_id:{type:"string",description:"Slug id of the agent. Use get_state to look it up if unsure."},agent_name:{type:"string",description:"Fuzzy human-readable name (used only when agent_id is missing)."},chat_id:{type:"string",description:"WhatsApp chat id to receive scheduled HTML artifacts. Pass empty string to disable."}},required:["chat_id"]}},{name:"upsert_schedule",description:"Create or update a recurring schedule for an existing agent.",input_schema:{type:"object",properties:{agent_id:{type:"string",description:"Slug ID of the agent."},schedule:{type:"string",description:'Schedule spec: "daily HH:MM", "every 5m", etc.'},action_kind:{type:"string",description:'What the schedule runs: "agent-tick", "competitor-report", "marketing-plan", or "heartbeat".'},enabled:{type:"boolean",description:"Whether the schedule is active (default true)."}},required:["agent_id","schedule"]}},{name:"competitor_report",description:"Generate a daily competitor intelligence report and save it as a local artifact.",input_schema:{type:"object",properties:{triggered_by:{type:"string",description:"Source label for the audit log."}}}},{name:"marketing_plan",description:"Generate a 7-day marketing content plan and save it as a local artifact.",input_schema:{type:"object",properties:{triggered_by:{type:"string",description:"Source label for the audit log."}}}},{name:"heartbeat_tick",description:"Update the heartbeat timestamp for all generated agents.",input_schema:{type:"object",properties:{triggered_by:{type:"string",description:"Source label for the audit log."}}}},{name:"claude_dry_run",description:"Prepare a Claude Code command string for human review. Never executes automatically — requires owner approval.",input_schema:{type:"object",properties:{prompt:{type:"string",description:"The task description to pass to the Claude Code runner."}},required:["prompt"]}},{name:"get_state",description:"Retrieve a LIGHTWEIGHT snapshot of runtime state: agents, runs, schedules, connectors, and artifact metadata only. Artifact bodies are stripped to a short snippet — use find_artifacts to search and show_artifact to load full content for a specific id. Use this as a directory; never expect full document bodies here.",input_schema:{type:"object",properties:{}}},{name:"list_agents",description:"List the existing sub-agents (your workforce) and WHAT EACH CAN DO — id, name, role, status, the tools each is granted, and how many open tasks it already has. Call this BEFORE creating a new agent: if an existing agent already owns the tool the goal needs, delegate to it with run_agent instead of spawning a duplicate. This is the cheap roster read; route_goal is the fuller capability match for a specific goal.",input_schema:{type:"object",properties:{}}},{name:"list_projects",description:"List the owner's projects (the workspaces shown at /projects/<slug>). Returns each project's id, slug, name, and status. Use this to resolve which project the owner means before reading its Disk with disk_list_files / disk_list_folders.",input_schema:{type:"object",properties:{}}},{name:"disk_list_folders",description:'List the FOLDERS inside a project\'s Disk — the owner\'s "project folder" / "my files" shown at /projects/<slug>. This is the owner\'s content, NOT the madarX source code. Use this (never file_read/directory_list/Bash on the source tree) when the owner asks to check their project, folder, or files.',input_schema:{type:"object",properties:{project_id:{type:"string",description:'Project id or slug (e.g. "ai-agents"). Omit to use the active project. If unsure, call list_projects first.'}}}},{name:"disk_list_files",description:"List the FILES in a project's Disk (the owner's \"project folder\" at /projects/<slug>). Returns file id, name, kind, size, and local_only flag. This is the owner's uploaded/produced content — NOT madarX source code. Read a file's contents with disk_read_file using the returned id.",input_schema:{type:"object",properties:{project_id:{type:"string",description:'Project id or slug (e.g. "ai-agents"). Omit to use the active project. If unsure, call list_projects first.'},folder_id:{type:"string",description:"Optional folder id (from disk_list_folders) to list only that folder. Omit to list all files in the project."}}}},{name:"disk_read_file",description:"Read the contents of a single Disk file by id (get ids from disk_list_files). Returns the file body. local_only files are redacted for cloud engines by design.",input_schema:{type:"object",properties:{file_id:{type:"string",description:"The Disk file id, from disk_list_files."},project_id:{type:"string",description:"Optional project id or slug to scope the read to (cross-project reads are refused). Omit to use the active project."}},required:["file_id"]}},{name:"create_artifact",description:'Save a written-content artifact (report, list, plan, brief, summary, doc). Provide the body as well-structured markdown and madarX will render it into a styled HTML document automatically, with a one-click "Download .md" for the source. Do NOT include the user prompt, instructions, or meta commentary inside the body — only the result content. Do NOT use for full UI/landing pages — use generate_ui instead.',input_schema:{type:"object",properties:{title:{type:"string",description:"Short, human-readable artifact title shown in the document header."},kind:{type:"string",enum:["markdown","text"],description:'Always "markdown" unless the content is truly plain text with no structure.'},content:{type:"string",description:"The full body as GitHub-flavored markdown. Use headings (##), lists, tables, and bold sparingly. No emojis. Result content only — never echo the prompt."},project_id:{type:"string",description:"Optional destination project id or slug. Omit to use the active/default project."},space_id:{type:"string",description:"Optional dashboard space id where the artifact should appear. Omit to use the calling agent default or the main space."},dedupe_key:{type:"string",description:"Optional idempotency key. Pass empty string only when intentionally creating multiple artifacts with the same title in one day."}},required:["title","kind","content"]}},{name:"update_artifact",description:"Update an existing artifact with revised or extended content. Use this instead of create_artifact when continuing, refining, or expanding a previous result for the same task. Keeps the same artifact visible and editable rather than spawning a new one.",input_schema:{type:"object",properties:{artifact_id:{type:"string",description:"ID of the artifact to update."},title:{type:"string",description:"New title — omit to keep the existing title."},content:{type:"string",description:"Full updated body as GitHub-flavored markdown. Must be the complete content, not a diff."}},required:["artifact_id","content"]}},{name:"delete_artifact",description:"Permanently delete a saved artifact from the dashboard. Use only when the owner explicitly asks to remove or trash an artifact, or when the previous artifact is being replaced by a brand-new one and the prior result must not linger. This is irreversible from the agent side; the artifact file on disk is unlinked as well.",input_schema:{type:"object",properties:{artifact_id:{type:"string",description:"ID of the artifact to delete."}},required:["artifact_id"]}},{name:"move_artifact",description:'Move an existing artifact from one project to another. Updates the artifact\'s project_id, relocates the file on disk into the target project\'s artifacts directory, and writes changelog entries on both source and target projects. Use this when the owner asks to "move", "reassign", "relocate", or "transfer" an artifact between projects/spaces. The artifact id and title stay the same; only the project membership and disk location change.',input_schema:{type:"object",properties:{artifact_id:{type:"string",description:"ID of the artifact to move."},target_project_id:{type:"string",description:'Destination project id or slug (e.g. "planify" or "personal"). Use list_projects to discover valid values.'}},required:["artifact_id","target_project_id"]}},{name:"read_artifact",description:"Load the full content for a specific artifact after finding it. Use this before editing, summarizing, or continuing an existing document. Returns rendered content and markdown source when available.",input_schema:{type:"object",properties:{artifact_id:{type:"string",description:"Exact artifact id to read."},title_query:{type:"string",description:"Optional fuzzy title query when artifact_id is not known. Must resolve to one artifact."},max_chars:{type:"number",description:"Maximum content characters to return, default 12000."}}}},{name:"list_spaces",description:"List dashboard spaces/tabs. Use include_artifact_ids when the owner asks which artifacts are displayed in each space.",input_schema:{type:"object",properties:{include_artifact_ids:{type:"boolean",description:"When true, include artifact_ids grouped under each space."}}}},{name:"create_space",description:"Create a new dashboard space/tab where artifacts can be displayed.",input_schema:{type:"object",properties:{name:{type:"string",description:"Short dashboard space name."}},required:["name"]}},{name:"rename_space",description:"Rename an existing dashboard space/tab.",input_schema:{type:"object",properties:{space_id:{type:"string",description:"Space id to rename."},name:{type:"string",description:"New short space name."}},required:["space_id","name"]}},{name:"set_active_space",description:"Make a dashboard space/tab the active space.",input_schema:{type:"object",properties:{space_id:{type:"string",description:"Space id to activate."}},required:["space_id"]}},{name:"delete_space",description:"Delete a dashboard space/tab. Artifacts are not deleted; they are moved to a fallback space. Do not use to delete artifacts.",input_schema:{type:"object",properties:{space_id:{type:"string",description:"Space id to delete."}},required:["space_id"]}},{name:"move_artifact_to_space",description:"Display an existing artifact in a different dashboard space/tab, or remove it from a custom space by moving it back to the default main space. The artifact id, project, file, and content stay unchanged.",input_schema:{type:"object",properties:{artifact_id:{type:"string",description:"Artifact id to move between dashboard spaces."},space_id:{type:"string",description:'Destination dashboard space id. Use "default" to remove from a custom space back to main.'}},required:["artifact_id","space_id"]}},{name:"import_brand_guidelines",description:"Import a local brand guidelines file or pasted guidelines content, extract brand colors/fonts/voice/document defaults, and set it as the default brand system for future documents, presentations, and generated UI artifacts. Use this when the owner provides a brand guidelines HTML/Markdown/text file path, pastes guidelines content, or asks to update branding.",input_schema:{type:"object",properties:{file_path:{type:"string",description:"Path to a local .html, .md, .txt, .css, .svg, or .pdf brand guidelines file under an allowed root."},content:{type:"string",description:"Pasted brand guidelines content when no local file path is available."},filename:{type:"string",description:"Optional filename for pasted content, e.g. brand-guidelines.md."},logo_path:{type:"string",description:"Optional local path to the primary brand logo file (.svg, .png, .jpg, .jpeg, .webp)."}}}},{name:"send_to_hermes",description:"Send a command or task to the local Hermes agent and save the final Hermes response as a dashboard artifact. Use this when the user asks Hermes to do work, wants a Hermes result, or asks to route a command through Hermes.",input_schema:{type:"object",properties:{prompt:{type:"string",description:"The exact task or command Hermes should run."},title:{type:"string",description:"Optional artifact title for the Hermes result."},session_id:{type:"string",description:"Optional stable Hermes session id. Usually omit."},model:{type:"string",description:"Optional Hermes model override. Usually omit so Hermes uses its configured model."},timeout_ms:{type:"number",description:"Optional timeout in milliseconds. Use 600000 or higher for project run/build tasks."}},required:["prompt"]}},{name:"start_hermes_job",description:"Start a long-running local Hermes job in the background and immediately create a live-updating dashboard artifact. Use for running projects, builds, tests, installs, dev servers, or multi-step Hermes work that may take more than a minute.",input_schema:{type:"object",properties:{prompt:{type:"string",description:"The full task Hermes should perform."},title:{type:"string",description:"Artifact/job title."},session_id:{type:"string",description:"Optional Hermes session id."},model:{type:"string",description:"Optional Hermes model override."},timeout_ms:{type:"number",description:"Optional job timeout in milliseconds. Use 1800000 for long project tasks."},cwd:{type:"string",description:"Optional absolute working directory for the project Hermes should run."}},required:["prompt"]}},{name:"run_agent",description:'Run an existing sub-agent NOW (on demand, outside its normal schedule). Use this when the owner says "run X", "trigger X", "do today\'s run of X", etc. The run executes synchronously and publishes live tool-call events to the dashboard. Returns the run summary and a short result preview.',input_schema:{type:"object",properties:{agent_id:{type:"string",description:'Slug id (e.g. "uae-ai-initiatives-tracker"). Prefer this if known. Use list_agents / get_state first to look it up.'},agent_name:{type:"string",description:'Fuzzy human-readable name (e.g. "UAE tracker"). Used only if agent_id is not provided. Case-insensitive substring match against agent names; ambiguous matches error.'},wake_reason:{type:"string",description:'Short label for the audit log, e.g. "owner requested via whatsapp".'},instruction:{type:"string",description:"OPTIONAL task-specific instruction for THIS run only — what to do right now. Overrides the agent's standing mission for this single run; never saved onto the agent. Use it to dispatch an existing agent at an ad-hoc job (e.g. \"compare this week's numbers to last week and flag anomalies\"). Omit to run the agent's standing mission. The agent can still only use the tools it was granted — this does not expand its permissions."},expected_output:{type:"string",description:"OPTIONAL deliverable contract for THIS run only — what a complete, correct result must contain (format, sections, acceptance criteria). Overrides the agent's standing expected_output for this run. Use it to pin down what 'done' looks like for an ad-hoc instruction."}}}},{name:"mines_run_report",description:'Generate ONE mines diligence report for a project as a single action (the workflow authors the number-free narrative and the report tool renders every figure from cited database rows). Use report_kind "pfs_readiness_report" when the owner asks to "assess PFS readiness". The report\'s LLM authoring runs on the configured engine (Claude Code CLI for the personal tier, Anthropic API for production) — it works even when no Anthropic API key is set. Returns the artifact id.',input_schema:{type:"object",properties:{project_id:{type:"string",description:"mines_projects.id. Use list/get_state or find the project first if unknown."},report_kind:{type:"string",description:"One of: pfs_readiness_report, due_diligence_memo, investor_presentation, data_quality_report, interpretation_memo."},engine:{type:"string",description:'OPTIONAL engine override: "claude-code" (personal CLI subscription) or "anthropic" (production API). Defaults to the mines agents\' configured engine. This is a cost/scale tier, not a capability change.'}},required:["project_id","report_kind"]}},{name:"find_artifacts",description:'Search past artifacts (reports, briefs, generated UIs) by title, agent, or kind. Use when the owner asks for "the latest X report", "send me yesterday\'s brief", or "what did <agent> produce". Returns up to 50 rows, most recent first, with id/title/kind/agent_name/created_at — NOT the full content. To deliver one, follow up with send_artifact_to_whatsapp. SEARCH BROADLY: title_query does word-level matching (every word must appear, any order), but if the first query returns 0 rows, RETRY with a shorter / broader query — try just the noun ("brief", "report") before concluding nothing exists. Real titles often include words the owner did not say (e.g. "AI Daily Brief scheduled report" vs the owner saying "AI brief").',input_schema:{type:"object",properties:{title_query:{type:"string",description:'Fuzzy substring of the artifact title (case-insensitive). E.g. "conflict" matches "Conflict brief 2026-05-13".'},agent_id:{type:"string",description:"Filter to one specific agent id."},agent_name:{type:"string",description:'Fuzzy substring of the agent name (case-insensitive). E.g. "conflict" matches "Conflict Brief Agent".'},kind:{type:"string",description:'Filter by kind: "html", "document" (rendered markdown), or other.'},project_id:{type:"string",description:"Filter to one project id or slug."},space_id:{type:"string",description:'Filter to one dashboard space id, e.g. "default".'},limit:{type:"number",description:"Max rows to return (default 10, max 50)."}}}},{name:"send_artifact_to_whatsapp",description:'Deliver an existing artifact as an .html file to a WhatsApp chat. Use after find_artifacts (or get_state) to send a past report on demand — e.g. "send me the latest conflict brief on whatsapp". Pass either artifact_id (preferred) or title_query (fuzzy match — must resolve to one row). If chat_id is omitted on the WhatsApp channel, defaults to the chat the owner is messaging from. The WhatsApp bridge must be paired.',input_schema:{type:"object",properties:{artifact_id:{type:"string",description:"Exact artifact id (preferred). Get this from find_artifacts."},title_query:{type:"string",description:"Fuzzy substring of the title. Used only when artifact_id is omitted; ambiguous matches error."},chat_id:{type:"string",description:"WhatsApp chat id to deliver to. Omit on inbound WhatsApp to send back to the same chat."}}}},{name:"whatsapp_send",description:'Send a WhatsApp message to a chat the owner has added to the allowlist. Use sparingly for proactive owner alerts and follow-ups (e.g., "scheduled report is ready"). The bridge must be paired and online; if not, this returns an error.',input_schema:{type:"object",properties:{chat_id:{type:"string",description:"Allowlisted WhatsApp chat id (full JID like 9715XXXXXXXX@s.whatsapp.net, or plain digits which are normalized)."},text:{type:"string",description:"Plain text message body. WhatsApp does not render markdown — keep it conversational."}},required:["chat_id","text"]}},{name:"list_available_tools",description:'List all marketplace tools with their enabled status, availability, risk level, and missing credentials. Use this before saying "I cannot do X" to check whether a tool exists. Filter by category (travel, web, github, email, supabase, vercel, local_machine, browser, voice, calendar) or by enabled_only to see what is currently active.',input_schema:{type:"object",properties:{category:{type:"string",description:"Optional category filter: travel, web, github, email, supabase, vercel, local_machine, browser, voice, calendar."},enabled_only:{type:"boolean",description:"When true, return only currently-enabled tools."}}}},{name:"install_tool",description:"Enable a marketplace tool by name so it becomes available for immediate use. Call this after list_available_tools identifies a disabled tool that can satisfy the principal's request. If the tool has missing credentials, the response includes a missing_credentials list — surface this to the principal. Tools rated irreversible_external will still require per-call owner approval when invoked.",input_schema:{type:"object",properties:{tool_name:{type:"string",description:'Exact tool name from list_available_tools, e.g. "flight_search" or "hotel_rates".'}},required:["tool_name"]}},{name:"uninstall_tool",description:"Disable a marketplace tool by name. Use when the principal asks to turn off a tool or when a tool is causing issues.",input_schema:{type:"object",properties:{tool_name:{type:"string",description:'Exact tool name to disable, e.g. "email_send".'}},required:["tool_name"]}},{name:"route_goal",description:"CALL THIS FIRST for any non-trivial request, BEFORE attempting a specialist task yourself. It grounds your delegation decision: given the user goal, it returns the live capability registry — every active agent with its role, mission, skills, and granted tools; the enabled-tool catalog; whether Tool Smith is available to build missing capabilities — plus the fallback ladder. Reason over it and pick the path: delegate to a fit specialist (run_agent), create_then_delegate when none fits (create_agent), build_capability when a specialist exists but lacks a required tool (request_capability), or direct_fallback for a trivial one-line factual answer. Read-only, no side effects.",input_schema:{type:"object",properties:{goal:{type:"string",description:'The user goal in one sentence, e.g. "find a return flight DXB to London for May 18-25" or "draft a reply to this email".'}},required:["goal"]}},{name:"request_capability",description:'Delegate to Tool Smith to BUILD a capability that does not exist yet. Use when an agent needs a tool/skill/integration the system lacks (e.g. "log meetings to Notion" with no Notion tool). First dedupes against existing capabilities; if none matches, files a build task for the tool-smith-agent which authors a composite tool, a REST connector, a skill, or proposes code. Returns the task id. The authored capability is still subject to all runtime gates when used.',input_schema:{type:"object",properties:{capability_description:{type:"string",description:'Plain-language description of the capability needed, e.g. "create pages in Notion" or "summarize a daily competitor digest".'},target_agent_id:{type:"string",description:"Optional id of the agent that should be granted the capability once built."},acceptance_criteria:{type:"string",description:"Optional explicit acceptance criteria for the build."}},required:["capability_description"]}}],aa=new Set(["send_to_hermes","start_hermes_job"]);function J(){if("off"===process.env.MADARX_DELEGATION_ENFORCEMENT)return new Set;try{return new Set((0,q.n4)().filter(u.Wp).map(a=>a.name))}catch{return new Set}}function K(){let a=(0,j.oG)()?_:_.filter(a=>!aa.has(a.name)),b=J();return(0,q.Cz)(a).filter(a=>!b.has(a.name))}function L(a,b=180){let c="string"==typeof a?a:null==a?"":String(a);return c.length<=b?c:c.slice(0,b)+`…[+${c.length-b} bytes, use show_artifact/find_artifacts]`}function M(a){if(!a)return a;let b="string"==typeof a.content?a.content:"";return{id:a.id,title:a.title,kind:a.kind,project_id:a.project_id??null,created_at:a.created_at,updated_at:a.updated_at,content_bytes:b.length,content_preview:b?L(b):""}}function N(a){if(!a)return a;let b=Array.isArray(a.memory)?a.memory.slice(-2):[];return{id:a.id,name:a.name,engine:a.engine,status:a.status,project_id:a.project_id??null,schedule:a.schedule,last_run_at:a.last_run_at??null,tools_count:Array.isArray(a.tools)?a.tools.length:0,memory_count:Array.isArray(a.memory)?a.memory.length:0,memory_recent:b.map(a=>"string"==typeof a?L(a,200):a)}}function O(a){return a?{id:a.id,agent_id:a.agent_id??null,project_id:a.project_id??null,status:a.status,started_at:a.started_at,finished_at:a.finished_at??null,summary:L(a.summary??a.note??"",160)}:a}function P(a){return a?{id:a.id,action_type:a.action_type,status:a.status,requested_at:a.requested_at,agent_id:a.agent_id??null,summary:L(a.summary??a.note??"",160)}:a}function Q(a){return a?{id:a.id,schedule_id:a.schedule_id??null,agent_id:a.agent_id??null,status:a.status,scheduled_for:a.scheduled_for??null,attempts:a.attempts??0}:a}function R(a){let b;try{b=JSON.stringify(a)}catch{return a}return!b||b.length<=6e4?a:{ok:!1,truncated:!0,original_bytes:b.length,max_bytes:6e4,preview:b.slice(0,59744),error:`tool_result exceeded 60000 bytes (got ${b.length}); narrow the query or use show_artifact for a specific id.`}}async function S(a,b={},c={}){if(J().has(a))return R({ok:!1,error:"delegate_required",message:`"${a}" is a specialist tool you do not own directly. Call route_goal(goal), then delegate to the agent that owns it with run_agent — or request_capability if no agent has it.`});let d=await T(a,b,c);return R(d)}async function T(a,b={},c={}){switch(a){case"create_agent":return H(b);case"update_agent":return function(a){let b=W(a);if(!b.ok)return{ok:!1,error:b.error};let c=b.agent,d={};for(let b of["expected_output","mission","system_prompt"])"string"==typeof a[b]&&(d[b]=a[b]);if(0===Object.keys(d).length)return{ok:!1,error:"Nothing to update. Pass at least one of: expected_output, mission, system_prompt."};let e=(0,g.x4)(c.id,d);if(!e.ok)return{...e,agent_id:c.id,agent_name:c.name};let f=Object.keys(d);return(0,g.appendAudit)({type:"agent.contract.update",summary:`Updated ${c.name} contract via main agent: ${f.join(", ")}`,status:"complete",meta:{agent_id:c.id,fields:f}}),{ok:!0,agent_id:c.id,agent_name:c.name,updated_fields:f}}(b);case"upsert_schedule":return(0,g.Nv)(b);case"competitor_report":return(0,g.NK)({triggered_by:b.triggered_by??"claude"});case"marketing_plan":return(0,g.mk)({triggered_by:b.triggered_by??"claude"});case"heartbeat_tick":return(0,g.IG)({triggered_by:b.triggered_by??"claude"});case"claude_dry_run":return(0,g.nF)({prompt:b.prompt},{triggered_by:"claude"});case"get_state":{let a=b.project_id??null;var d,e,f=(0,g.Gu)({project_id:a?String(a):null});if(!f||"object"!=typeof f)return f;return{ok:f.ok,product:f.product,workspace:f.workspace,project_filter:f.project_filter,projects:f.projects,agents:Array.isArray(f.agents)?f.agents.map(N):f.agents,tasks:f.tasks,runs:Array.isArray(f.runs)?f.runs.slice(0,8).map(O):f.runs,audit:(d=f.audit,(Array.isArray(d)?d.slice(0,6):[]).map(a=>({id:a.id,type:a.type,at:a.at,actor:a.user_id||a.acting_on_behalf_of_user_id||null,target:a.action_target_id??null,note:L(a.note??a.detail??"",160)}))),activity:(e=f.activity,(Array.isArray(e)?e.slice(0,10):[]).map(a=>({id:a.id,type:a.type,at:a.at,agent_id:a.agent_id??null,project_id:a.project_id??null,summary:L(a.summary??a.detail??"",160)}))),schedules:f.schedules,connectors:f.connectors,artifacts:Array.isArray(f.artifacts)?f.artifacts.map(M):f.artifacts,heartbeat_tasks:Array.isArray(f.heartbeat_tasks)?f.heartbeat_tasks.slice(0,5).map(Q):f.heartbeat_tasks,heartbeat_task_events_count:Array.isArray(f.heartbeat_task_events)?f.heartbeat_task_events.length:0,approvals:Array.isArray(f.approvals)?f.approvals.slice(0,6).map(P):f.approvals,pending_approvals:Array.isArray(f.pending_approvals)?f.pending_approvals.slice(0,6).map(P):f.pending_approvals,local_processes:f.local_processes,local_tool_audit_count:Array.isArray(f.local_tool_audit)?f.local_tool_audit.length:0,main_agent_trust_mode:f.main_agent_trust_mode,reporting_summary:f.reporting&&"object"==typeof f.reporting?{keys:Object.keys(f.reporting)}:null,_note:"Artifact bodies + heartbeat events + reporting stripped. Use find_artifacts/show_artifact for content; query specific endpoints (/api/heartbeat, /api/audit) for full lists."}}case"list_agents":{let a=(0,g.vc)().filter(a=>"tool-smith-agent"!==a.id&&"terminated"!==a.status).map(a=>{let b=[];try{b=(0,g.K2)(a.id).filter(a=>"disabled"!==a.mode).map(a=>a.tool_name)}catch{}let c=0;try{c=(0,v.Vk)({assignee_agent_id:a.id}).filter(a=>"done"!==a.status&&"cancelled"!==a.status).length}catch{}return{id:a.id,name:a.name,role:a.role||a.type||null,status:a.status||null,engine:a.engine||null,mission:a.mission||null,tools:b,open_tasks:c}});return{ok:!0,agents:a,agent_count:a.length}}case"list_projects":return{ok:!0,projects:(0,y.hF)({status:"all"})};case"disk_list_folders":return(0,z.$D)(b,c);case"disk_list_files":return(0,z.ri)(b,c);case"disk_read_file":return(0,z._z)(b,c);case"create_artifact":{let a=new Set(["markdown","text"]).has(b.kind)?b.kind:"markdown";return(0,g.Dg)({...b,kind:a,project_id:b.project_id??c.project_id??null,agent_id:b.agent_id??c.agent_id??null,heartbeat_task_id:b.heartbeat_task_id??c.heartbeat_task_id??null,dedupe_key:b.dedupe_key,space_id:b.space_id??c.space_id??null})}case"update_artifact":return(0,g.eP)(b.artifact_id,{title:b.title,content:b.content});case"delete_artifact":return(0,g.CM)(b.artifact_id);case"move_artifact":return(0,g.S9)(b.artifact_id,{target_project_id:b.target_project_id});case"list_spaces":return{ok:!0,...b.include_artifact_ids?(0,A.OT)():(0,A.iF)()};case"create_space":return{ok:!0,space:(0,A.bz)({name:b.name})};case"rename_space":return{ok:!0,space:(0,A.Jh)(b.space_id,b.name)};case"set_active_space":return{ok:!0,space:(0,A.BQ)(b.space_id)};case"delete_space":return{ok:!0,...(0,A.cN)(b.space_id)};case"move_artifact_to_space":return{ok:!0,...(0,A.h5)(b.artifact_id,b.space_id)};case"import_brand_guidelines":return E(b);case"generate_ui":return Y({...b,project_id:b.project_id??c.project_id??null});case"send_to_hermes":return C({...b,project_id:b.project_id??c.project_id??null});case"start_hermes_job":return D({...b,project_id:b.project_id??c.project_id??null});case"whatsapp_send":return(0,x.op)(b.chat_id,b.text);case"run_agent":return X(b,c);case"mines_run_report":return(0,w.Ij)({projectId:b.project_id,report_kind:b.report_kind,engine:b.engine||null,user_id:c.user_id||c.acting_on_behalf_of_user_id||"local-user",org_id:c.org_id||"personal-org"});case"set_agent_whatsapp_notify":var h=b;let i=W(h);if(!i.ok)return{ok:!1,error:i.error};let j=null==h.chat_id?null:String(h.chat_id).trim()||null;return{...(0,g.bC)(i.agent.id,j),agent_name:i.agent.name};case"find_artifacts":var k=b;let l=(0,g.n1)({title_query:k.title_query,agent_id:k.agent_id,agent_name:k.agent_name,kind:k.kind,project_id:k.project_id,space_id:k.space_id,limit:k.limit});return{ok:!0,count:l.length,artifacts:l.map(a=>({id:a.id,title:a.title||"(untitled)",kind:a.kind,agent_name:a.agent_name||null,agent_id:a.agent_id||null,created_at:a.created_at,project_id:a.project_id||null,space_id:a.space_id||null,path:a.path}))};case"read_artifact":return function(a){let b=U({artifact_id:a.artifact_id,title_query:a.title_query});if(!b.ok)return b;let c=b.artifact;if(c.is_protected)return{ok:!1,error:"Artifact is passphrase-protected; cannot be read from voice without unlock."};if(c.encrypted)return{ok:!1,error:"Artifact body is encrypted at rest; voice read path does not decrypt."};let d=Math.min(Math.max(Number(a.max_chars)||12e3,1e3),14e3),e=String(c.content||""),f=c.source_md?String(c.source_md):null,g=f||e,h=g.length>d;return{ok:!0,artifact:{id:c.id,title:c.title||"(untitled)",kind:c.kind,agent_id:c.agent_id||null,created_at:c.created_at,path:c.path||null,project_id:c.project_id||null,space_id:c.space_id||null,content_format:f?"markdown":"rendered",total_chars:g.length,returned_chars:Math.min(g.length,d),truncated:h,content:h?g.slice(0,d):g}}}(b);case"send_artifact_to_whatsapp":return V(b,c);case"list_available_tools":return function({category:a,enabled_only:b}={}){let c=(0,q.n4)();if(a){let b=String(a).toLowerCase();c=c.filter(a=>(a.category||"").toLowerCase()===b)}return b&&(c=c.filter(a=>a.enabled)),{ok:!0,count:c.length,tools:c.map(a=>({name:a.name,title:a.title,description:a.description,category:a.category,enabled:a.enabled,available:a.available,risk_level:a.risk_level,allowlist_required:a.allowlist_required,missing_env:a.missing_env}))}}(b);case"install_tool":return function({tool_name:a}={}){if(!a||"string"!=typeof a)return{ok:!1,error:"tool_name is required"};try{let b=(0,q.G7)(a,!0);if(!b)return{ok:!1,error:`Unknown tool: ${a}`};let c={ok:!0,status:"enabled",tool_name:b.name,title:b.title,category:b.category,risk_level:b.risk_level};return b.missing_env&&b.missing_env.length>0&&(c.missing_credentials=b.missing_env,c.note=`Tool enabled but not yet usable — configure: ${b.missing_env.join(", ")}`),"irreversible_external"===b.risk_level&&(c.warning="This tool is rated irreversible_external. Each call will require owner approval regardless of trust mode."),c}catch(a){return{ok:!1,error:a.message}}}(b);case"uninstall_tool":return function({tool_name:a}={}){if(!a||"string"!=typeof a)return{ok:!1,error:"tool_name is required"};try{let b=(0,q.G7)(a,!1);if(!b)return{ok:!1,error:`Unknown tool: ${a}`};return{ok:!0,status:"disabled",tool_name:b.name,title:b.title}}catch(a){return{ok:!1,error:a.message}}}(b);case"route_goal":return(0,t.Sh)({goal:b.goal,project_id:c.project_id||null});case"request_capability":return function(a={},b={}){let c=String(a.capability_description||"").trim();if(!c)return{ok:!1,error:"capability_description is required"};let d=function(a){let b=new Set(I(a));if(!b.size)return null;let c=[];try{for(let a of(0,q.n4)())c.push({name:a.name,kind:"tool"})}catch{}try{for(let a of(0,s.QH)({kind:"skill"}))c.push({name:a.slug,kind:"skill"})}catch{}for(let a of c){let c=I(a.name);if(c.length>=2&&c.every(a=>b.has(a)))return{name:a.name,kind:a.kind}}return null}(c);if(d)return{ok:!0,status:"exists",match:d,message:`A capability already covers this: ${d.name} (${d.kind}). Grant it instead of rebuilding.`};try{let a=Date.now()-36e5,b=(0,v.Vk)({assignee_agent_id:Z,limit:50}).filter(b=>{if(["done","cancelled"].includes(b.status))return!1;let c=Date.parse(b.created_at||"");return Number.isFinite(c)&&c>=a});if(b.length>=5)return{ok:!1,status:"rate_limited",message:`Too many capability build requests in flight (${b.length}). Wait for some to finish.`}}catch{}try{let d=a.target_agent_id?String(a.target_agent_id):null,e=(0,v.createTask)({title:`Build capability: ${c.slice(0,80)}`,description:["A capability is needed that does not exist yet:",` "${c}"`,"\nChoose the right authoring path and build it:\n - composite tool (chain existing tools), or\n - REST connector (new API + secret-by-reference), or\n - skill (instruction recipe), or\n - propose_tool (non-REST; staged code, human merge).\n",d?`Grant the result to agent: ${d}.`:"Return the slug so it can be granted to the requester."].join("\n"),acceptance_criteria:a.acceptance_criteria||"Capability authored and its slug returned so it can be granted to the requesting agent.",assignee_agent_id:Z,created_by_agent_id:b.agent_id||"main-orchestrator",priority:"p1",project_id:b.project_id||null});return{ok:!0,status:"requested",task_id:e.id,assignee:Z,target_agent_id:d,message:`Delegated to Tool Smith (task ${e.id}). It will author the capability and return a slug to grant.`}}catch(a){return{ok:!1,status:"error",error:"tool_smith_unavailable",message:String(a?.message||a)}}}(b,c);default:return(0,q.executeRegistryTool)(a,b)}}function U({artifact_id:a,title_query:b}){if(a){let b=(0,g.jZ)(a);return b?{ok:!0,artifact:b}:{ok:!1,error:`No artifact with id "${a}".`}}if(b){let a=(0,g.n1)({title_query:b,limit:5});return 0===a.length?{ok:!1,error:`No artifact title matches "${b}".`}:a.length>1?{ok:!1,error:`Ambiguous match for "${b}". Candidates: ${a.map(a=>`${a.title} (${a.id})`).join("; ")}. Pass artifact_id to disambiguate.`}:{ok:!0,artifact:(0,g.jZ)(a[0].id)}}return{ok:!1,error:"Pass either artifact_id or title_query."}}async function V(a,b){let c=U(a);if(!c.ok)return c;let d=c.artifact;if("html"!==d.kind&&"document"!==d.kind)return{ok:!1,error:`Artifact kind "${d.kind}" is not HTML-renderable; only html and document artifacts can be sent.`};if(!d.content||!String(d.content).trim())return{ok:!1,error:`Artifact ${d.id} has no rendered content to send.`};let e=a.chat_id&&String(a.chat_id).trim()||b.chat_id||null;if(!e)return{ok:!1,error:"No chat_id available — pass chat_id, or call this from the WhatsApp channel where the sender is known."};let f=await (0,x.getBridgeHealth)();if(!f||!1===f.ok||"paired"!==f.pairing_state)return{ok:!1,error:`WhatsApp bridge not paired (state=${f?.pairing_state||"unknown"}). Pair via /whatsapp before retrying.`};let g=String(d.title||"artifact").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,60)||"artifact";try{let a=await (0,x.sendWhatsAppDocument)({chat_id:e,content:d.content,filename:`${g}.html`,mimetype:"text/html",caption:d.title||void 0});return{ok:!0,artifact_id:d.id,title:d.title,chat_id:e,message_id:a?.message_id||null}}catch(a){return{ok:!1,error:`Bridge send failed: ${a.message}`,artifact_id:d.id}}}function W({agent_id:a,agent_name:b}){if(a){let b=(0,g.vc)().find(b=>b.id===a);return b?{ok:!0,agent:b}:{ok:!1,error:`No agent with id "${a}". Use get_state to list agents.`}}if(b){let a=String(b).toLowerCase().trim(),c=(0,g.vc)(),d=c.find(b=>(b.name||"").toLowerCase()===a);if(d)return{ok:!0,agent:d};let e=c.filter(b=>(b.name||"").toLowerCase().includes(a)||(b.id||"").toLowerCase().includes(a));return 1===e.length?{ok:!0,agent:e[0]}:0===e.length?{ok:!1,error:`No agent matches "${b}". Existing: ${c.map(a=>a.name).join(", ")||"(none)"}`}:{ok:!1,error:`Ambiguous match for "${b}". Candidates: ${e.map(a=>`${a.name} (${a.id})`).join(", ")}. Pass agent_id to disambiguate.`}}return{ok:!1,error:"Pass either agent_id or agent_name."}}async function X(a,b={}){let c=W(a);if(!c.ok)return{ok:!1,error:c.error};let d=c.agent,e=a.wake_reason||"on-demand from main agent",f="string"==typeof a.instruction&&a.instruction.trim()?a.instruction.trim():null,i="string"==typeof a.expected_output&&a.expected_output.trim()?a.expected_output.trim():null,j=Array.isArray(b.pending_approvals)?b.pending_approvals:[];try{(f||i)&&(0,g.appendAudit)({type:"agent.run.override",summary:`Ad-hoc run of ${d.name} with per-call contract`,status:"complete",meta:{agent_id:d.id,wake_reason:e,has_instruction:!!f,has_expected_output:!!i}});let a=null;try{let c=(f||e||`Run ${d.name}`).slice(0,140);a=(0,v.createTask)({title:c,description:f||null,assignee_agent_id:d.id,status:"todo",priority:"medium",created_by_user_id:b.user_id||null,project_id:b.project_id||null,acceptance_criteria:i||null,suppress_wake:!0})}catch{a=null}let c=await (0,h.G)(d.id,{triggered_by:"main_agent",task_id:a?.id||null,wake_reason:e,instruction:f,expected_output:i,pending_approvals:j});if(!c)return{ok:!1,error:`runAgentTick returned null for ${d.id}`};if(a&&!c.pending_approval)try{let b=(0,v.gg)(a.id);b&&"in_review"===b.status&&(0,v.lC)(a.id,{status:"done",actor_type:"agent",actor_id:d.id})}catch{}return{ok:!0,agent_id:d.id,agent_name:d.name,run_id:c.id,task_id:a?.id||null,status:c.pending_approval?"awaiting_approval":c.status||"complete",title:c.artifact_title||c.title,preview:(c.preview||"").slice(0,600),artifact_id:c.artifact_id||null,artifact:c.artifact||null,pending_approval:c.pending_approval||null}}catch(a){return{ok:!1,error:a.message,agent_id:d.id}}}d()}catch(a){d(a)}})},2167:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Nw:()=>n,oG:()=>l,qC:()=>k,v8:()=>m});var e=c(31421),f=c(73024),g=c(76760),h=c(9381),i=c(24516),j=a([i]);function k(){let a=(0,i.getSecret)("HERMES_AGENT_DIR");return g.resolve(process.env.HERMES_AGENT_DIR||a||g.join(h.Dl,"..","hermes-agent"))}function l(){try{let a=k(),b=g.join(h.Dl,"scripts","hermes-command.py");return f.existsSync(a)&&f.existsSync(b)}catch{return!1}}function m(){let a=k(),b=g.join(h.Dl,"scripts","hermes-command.py"),c=f.existsSync(a),d=f.existsSync(b);return{available:c&&d,hermes_dir:a,dir_exists:c,script_exists:d,env_override:!!(process.env.HERMES_AGENT_DIR||(0,i.getSecret)("HERMES_AGENT_DIR"))}}function n({prompt:a,session_id:b,model:c,timeout_ms:d,cwd:i}={}){if(!a||"string"!=typeof a)throw Error("prompt is required");if(process.env.HERMES_MOCK_RESPONSE)return Promise.resolve({ok:!0,response:process.env.HERMES_MOCK_RESPONSE,session_id:b||"madarx-hermes-mock",model:c||null,mocked:!0});let{hermesDir:j,python:l,env:m}=function(a={}){let b=k(),c=function(a=k()){for(let b of[process.env.HERMES_PYTHON,process.env.PYTHON,g.join(a,".venv","bin","python"),"/opt/homebrew/bin/python3.12","/opt/homebrew/bin/python3.11","/opt/homebrew/bin/python3.10",g.join(process.env.HOME||"",".local","bin","python3.12"),g.join(process.env.HOME||"",".local","bin","python3.11"),g.join(process.env.HOME||"",".local","bin","python3.10"),"python3.12","python3.11","python3.10","python3"].filter(Boolean))if(!b.includes("/")||f.existsSync(b))return b;return"python3"}(b);return{hermesDir:b,python:c,env:{...function(){let a=g.join(h.Dl,".env.local");if(!f.existsSync(a))return{};let b={};for(let c of f.readFileSync(a,"utf8").split(/\r?\n/)){let a=c.trim();if(!a||a.startsWith("#")||!a.includes("="))continue;let d=a.indexOf("="),e=a.slice(0,d).trim(),f=a.slice(d+1).trim();(f.startsWith('"')&&f.endsWith('"')||f.startsWith("'")&&f.endsWith("'"))&&(f=f.slice(1,-1)),b[e]=f}return b}(),...process.env,...a,HERMES_AGENT_DIR:b,HERMES_PYTHON_USED:c}}}(),o=Number(d||process.env.HERMES_TIMEOUT_MS||6e5),p=function({prompt:a,session_id:b,model:c,cwd:d}={}){let e=k(),f=[g.join(h.Dl,"scripts","hermes-command.py"),"--hermes-dir",e,"--prompt",a];return b&&f.push("--session-id",b),c&&f.push("--model",c),d&&f.push("--cwd",d),f}({prompt:a,session_id:b,model:c,cwd:i});return new Promise((a,b)=>{let c=(0,e.spawn)(l,p,{cwd:j,env:m,stdio:["ignore","pipe","pipe"]}),d="",f="",g=!1,h=setTimeout(()=>{g=!0,c.kill("SIGTERM"),b(Error(`Hermes timed out after ${Math.round(o/1e3)}s`))},o);c.stdout.on("data",a=>{d+=a.toString()}),c.stderr.on("data",a=>{f+=a.toString()}),c.on("error",a=>{g||(g=!0,clearTimeout(h),b(a))}),c.on("close",c=>{if(!g){if(g=!0,clearTimeout(h),0!==c)return void b(Error((f||d||`Hermes exited with code ${c}`).trim()));try{let b=function(a){let b=String(a||"").trim();if(!b)throw Error("Hermes returned no output");let c=b.split("\n").filter(Boolean).at(-1);try{return JSON.parse(c)}catch{throw Error(`Hermes returned non-JSON output: ${b.slice(-500)}`)}}(d);if(!b.ok)throw Error(b.error||"Hermes command failed");if(!String(b.response||"").trim())throw Error("Hermes completed without a final response");a(b)}catch(a){b(a)}}})})}i=(j.then?(await j)():j)[0],d()}catch(a){d(a)}})},41647:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Sh:()=>m});var e=c(73024),f=c(76760),g=c(9381),h=c(60105),i=c(40718),j=c(5295),k=a([h,i]);[h,i]=k.then?(await k)():k;let n="tool-smith-agent",o=[{step:"delegate",when:"A live specialist exists whose role/tools cover the goal. Dispatch it with run_agent."},{step:"create_then_delegate",when:"No fit specialist exists yet. Spawn one (create_agent from the closest template/mission), then delegate."},{step:"build_capability",when:"A specialist exists but lacks a required tool. Call request_capability so Tool Smith builds + grants it, then delegate."},{step:"direct_fallback",when:"Trivial one-line factual ask, or no capability can be built — answer directly / re-grant the tool for this one turn (audited)."}];function l(a){return"terminated"!==a&&"paused"!==a}function m({goal:a="",project_id:b=null}={}){let c=(0,h.vc)(),d=(b?c.filter(a=>!a.project_id||a.project_id===b):c).filter(a=>a.id!==n&&l(a.status)).map(a=>({id:a.id,name:a.name,role:a.role||a.type||null,title:a.title||null,mission:a.mission||null,status:a.status||null,tools:function(a){try{let b=(0,h.K2)(a).filter(a=>"disabled"!==a.mode);if(b.length)return b.map(a=>a.tool_name)}catch{}return[]}(a.id),skills:function(a){try{return e.readFileSync(f.join(g.bo,a,"skills.md"),"utf8").trim().slice(0,1200)}catch{return""}}(a.id)})),k=(0,i.n4)().map(a=>({name:a.name,category:a.category||null,title:a.title||null,enabled:!!a.enabled,available:!!a.available,specialist:(0,j.Wp)(a)})),p=c.find(a=>a.id===n&&l(a.status)),q=function(a){let b=String(a||"");if(!b.trim())return null;for(let[a,c]of j.Wq)if(a.test(b))return{category:c,role:(0,j.W6)(c)||null};return null}(a),r=(0,j.Op)(a),s=function({agents:a=[],categories:b=[],catalog:c=[]}={}){let d=new Set(b);if(!d.size)return[];let e=new Map((c||[]).map(a=>[a.name,a.category])),f=[];for(let b of a){let a=(b.tools||[]).filter(a=>d.has(e.get(a)));a.length&&f.push({id:b.id,name:b.name,role:b.role||null,owns_tools:a})}return f.sort((a,b)=>b.owns_tools.length-a.owns_tools.length),f}({agents:d,categories:r,catalog:k}),t=(function(a=[],b=[]){let c=new Set(b);return c.size?(a||[]).filter(a=>c.has(a.category)):[]})(k,r).map(a=>({name:a.name,category:a.category,enabled:a.enabled,available:a.available,owners:d.filter(b=>(b.tools||[]).includes(a.name)).map(a=>a.id)})),u=s.length?`CAPABILITY MATCH — recommended_specialists already own the tool(s) this goal needs (see tools_for_goal). PREFER ladder step 1 (delegate) to "${s[0].name}" (owns ${s[0].owns_tools.join(", ")}); do NOT create a new agent when one already owns the tool. `:t.length?`CAPABILITY MATCH — no existing agent owns the tool(s) this goal needs (tools_for_goal lists them). create_then_delegate, and when you create_agent you MUST grant it those tools — an agent with no matching tool cannot finish the goal. `:"";return{goal:String(a||""),agents:d,agent_count:d.length,tools_catalog:k,tool_smith_available:!!p,fast_path_hint:q,needed_categories:r,recommended_specialists:s,tools_for_goal:t,recommendation_ladder:o,routing_note:u+"Reason over agents[] (role/mission/skills/tools) vs. what this goal needs. Pick a ladder step: delegate an existing fit specialist, create_then_delegate when none fits, build_capability via Tool Smith when a specialist lacks a tool, or direct_fallback for trivial asks. fast_path_hint is only a shortcut for obvious domains — do not treat it as the answer when the goal is broader."}}d()}catch(a){d(a)}})},51989:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{$D:()=>k,_z:()=>m,ri:()=>l});var e=c(73912),f=c(61423),g=c(60105),h=a([e,f,g]);function i(a,b,c={}){try{(0,g.appendAudit)({type:`disk.${a}`,summary:`${a} ${b}`,status:b,meta:c})}catch{}}function j(a={},b={}){let c=a.project_id??b.project_id??null;if(!c){let a=Error("No project specified. Pass project_id (id or slug), or call list_projects to find one.");throw a.code="project_required",a}let d=(0,f.U1)(String(c));if(!d){let a=Error(`Project "${c}" not found. Call list_projects to see available projects and their slugs.`);throw a.code="project_not_found",a}return d}async function k(a={},b={}){let c=j(a,b),d=(0,e.uT)(c.id).map(a=>({id:a.id,name:a.name,path:a.path,parent_id:a.parent_id??null}));return i("list_folders","complete",{project_id:c.id,count:d.length}),{ok:!0,tool:"disk_list_folders",project:{id:c.id,slug:c.slug,name:c.name},folders:d,metadata:{count:d.length}}}async function l(a={},b={}){let c=j(a,b),d={project_id:c.id};a.folder_id&&(d.folder_id=String(a.folder_id));let f=(0,e.CS)(d).map(a=>({id:a.id,name:a.name,kind:a.kind,folder_id:a.folder_id??null,size_bytes:a.size_bytes,local_only:!0===a.local_only,updated_at:a.updated_at}));return i("list_files","complete",{project_id:c.id,folder_id:d.folder_id??null,count:f.length}),{ok:!0,tool:"disk_list_files",project:{id:c.id,slug:c.slug,name:c.name},files:f,metadata:{count:f.length}}}async function m(a={},b={}){let c=a.file_id?String(a.file_id):"";if(!c){let a=Error("file_id is required. Call disk_list_files first to get a file id.");throw a.code="file_id_required",a}let d=b.engine||"anthropic",g=(0,e.AB)(c,d),h=a.project_id??b.project_id??null;if(h){let a=(0,f.U1)(String(h));if(a&&g.project_id&&g.project_id!==a.id){let a=Error("That file belongs to a different project.");throw a.code="cross_project_denied",a}}return i("read_file","complete",{file_id:c,project_id:g.project_id??null,redacted:!!g.redacted,engine:d}),{ok:!0,tool:"disk_read_file",file:{id:g.id,name:g.name,kind:g.kind,project_id:g.project_id??null,local_only:!0===g.local_only,redacted:!!g.redacted},content:g.content}}[e,f,g]=h.then?(await h)():h,d()}catch(a){d(a)}})},64143:(a,b,c)=>{c.d(b,{Wl:()=>g,Xj:()=>k,getBridgeHealth:()=>f,op:()=>i,sendWhatsAppDocument:()=>j,wB:()=>h});let d=process.env.WHATSAPP_BRIDGE_URL||"http://127.0.0.1:3210";async function e(a,b,c,{timeoutMs:f=1e4}={}){let g=new AbortController,h=setTimeout(()=>g.abort(),f);try{let e=await fetch(`${(process.env.WHATSAPP_BRIDGE_URL||d).replace(/\/$/,"")}${b}`,{method:a,headers:c?{"Content-Type":"application/json"}:void 0,body:c?JSON.stringify(c):void 0,signal:g.signal}),f=await e.text(),h=null;try{h=f?JSON.parse(f):null}catch{}if(!e.ok){let a=Error(h?.error||`whatsapp-bridge ${e.status}`);throw a.status=e.status,a.body=h||f,a}return h}finally{clearTimeout(h)}}async function f(){try{return await e("GET","/health",null,{timeoutMs:3e3})}catch(a){return{ok:!1,error:a.message,status:a.status||null}}}async function g(){try{return await e("GET","/qr",null,{timeoutMs:3e3})}catch(a){return{ok:!1,error:a.message,status:a.status||null}}}async function h(){let a=await e("GET","/messages",null,{timeoutMs:5e3});return Array.isArray(a?.messages)?a.messages:[]}async function i(a,b){if(!a)throw Error("chat_id is required");if(!b||!String(b).trim())throw Error("text is required");return e("POST","/send",{chat_id:a,text:String(b)})}async function j({chat_id:a,content:b,filename:c,mimetype:d,caption:f}){if(!a)throw Error("chat_id is required");if(!c)throw Error("filename is required");if(null==b)throw Error("content is required");let g=Buffer.isBuffer(b)?b:Buffer.from(String(b),"utf8");if(!g.length)throw Error("content is empty");return e("POST","/send-document",{chat_id:a,content_base64:g.toString("base64"),filename:c,mimetype:d||"application/octet-stream",caption:f||void 0},{timeoutMs:3e4})}async function k(){return e("POST","/logout",{},{timeoutMs:15e3})}},78224:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Z2:()=>u,Zn:()=>t,_3:()=>y,o0:()=>x,qw:()=>s,rK:()=>z,vy:()=>r});var e=c(73024),f=c(76760),g=c(31421),h=c(34255),i=c(9381),j=c(73066),k=c(61423),l=c(60105),m=c(8727),n=a([h,j,k,l,m]);[h,j,k,l,m]=n.then?(await n)():n;let A=new Set(["complete","failed","cancelled","stale"]);function o(a){return a?{...a}:null}function p(a){return a?{...a,payload:function(a,b){if(!a)return null;try{return JSON.parse(a)}catch{return null}}(a.payload,null)}:null}function q(a,b){let c=f.resolve(i.Dl,a),d=e.realpathSync(i.un),g=e.existsSync(f.dirname(c))?e.realpathSync(f.dirname(c)):f.resolve(f.dirname(c)),h=f.join(g,f.basename(c));if(!(h===d||h.startsWith(`${d}${f.sep}`)))throw Error(`Refusing to write artifact outside workspace: ${a}`);e.mkdirSync(f.dirname(c),{recursive:!0}),e.writeFileSync(c,b,"utf8")}function r(a=20){return(0,h.getDb)().prepare("SELECT * FROM hermes_jobs ORDER BY updated_at DESC LIMIT ?").all(a).map(o)}function s(a){let b=(0,h.getDb)();return o(b.prepare("SELECT * FROM hermes_jobs WHERE id = ?").get(a))}function t(a,b=200){return(0,h.getDb)().prepare("SELECT * FROM hermes_job_events WHERE job_id = ? ORDER BY at ASC LIMIT ?").all(a,b).map(p)}function u(a){let b=s(a);return b?{...b,events:t(a,500)}:null}function v(a,b=[]){let c=a.status||"queued",d=[],e=[...b].reverse().find(a=>"final"===a.type),f=[...b].reverse().find(a=>"error"===a.type);e?.message?d.push(e.message,""):(a.error||f?.message)&&d.push("## Error","",a.error||f.message,"");let g=b.filter(a=>!["final"].includes(a.type));if(g.length){for(let a of(d.push("## Progress",""),g.slice(-80))){let b=a.at?a.at.replace("T"," ").replace(/\.\d+Z$/,"Z"):"",c=(function(a,b=6e3){let c=String(a||"");return c.length>b?`${c.slice(0,b)}
|
|
35
35
|
|
|
36
36
|
[truncated ${c.length-b} chars]`:c})(a.message||a.type,1200).replace(/\n/g,"\n ");d.push(`- ${b} ${a.type}: ${c}`.trim())}d.push("")}return"running"===c?d.push("## Current state","","Hermes is still running. This artifact updates as new progress arrives.",""):"queued"===c&&d.push("## Current state","","Hermes is queued and will start shortly.",""),`${d.join("\n")}
|
|
37
37
|
`}function w(a,{type:b,message:c,payload:d}={}){let e=(0,h.getDb)(),f=(0,h.newId)("hermes-event"),g=(0,h.nowIso)();return e.prepare(`
|