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
package/lib/sandbox/index.js
CHANGED
|
@@ -25,12 +25,24 @@
|
|
|
25
25
|
// 4. (R4) A real, EXPLICITLY OPT-IN docker execution helper:
|
|
26
26
|
// `executeSandboxedSpawn` actually spawns `docker run` — but only when
|
|
27
27
|
// `MADARX_SANDBOX_LIVE_DOCKER` is enabled. Otherwise it refuses clearly and
|
|
28
|
-
// returns the inspectable plan without spawning.
|
|
29
|
-
//
|
|
28
|
+
// returns the inspectable plan without spawning.
|
|
29
|
+
// 5. (R4) A production-safe, EXPLICITLY OPT-IN SSH execution backend. The plan
|
|
30
|
+
// builder `buildSshExecSpec` is pure + deterministic: it produces an `ssh`
|
|
31
|
+
// argv plus a hardened remote shell command (host absolute CLI paths
|
|
32
|
+
// normalized to a basename, only sanitized env exported on the remote, PATH
|
|
33
|
+
// dropped so the remote's own PATH applies). A real SSH command is only ever
|
|
34
|
+
// produced/run when ALL of these hold: `MADARX_SANDBOX_LIVE_SSH` is on AND a
|
|
35
|
+
// host + user are configured. Missing any of these → a deferred refusal stub
|
|
36
|
+
// (no unconfined host fallback). The `local` backend is intentionally never
|
|
37
|
+
// wired — it cannot confine on the host — and stays a refusal stub.
|
|
38
|
+
// 6. (R4) Richer artifact/sync-back metadata via `describeArtifactSync`:
|
|
39
|
+
// deterministic, backend-aware description of how files written by a run are
|
|
40
|
+
// recovered (docker bind-mount cache vs. operator-driven scp from the remote
|
|
41
|
+
// SSH workdir).
|
|
30
42
|
//
|
|
31
43
|
// Spec building stays pure + deterministic so it can be unit-tested without ever
|
|
32
|
-
// invoking docker; `executeSandboxedSpawn` lazy-imports
|
|
33
|
-
// only runs behind the live flag.
|
|
44
|
+
// invoking docker or ssh; `executeSandboxedSpawn` lazy-imports
|
|
45
|
+
// node:child_process and only runs behind the matching live flag.
|
|
34
46
|
|
|
35
47
|
import path from 'node:path';
|
|
36
48
|
|
|
@@ -41,6 +53,12 @@ export const SANDBOX_BACKENDS = ['docker', 'ssh', 'local'];
|
|
|
41
53
|
const DEFAULT_IMAGE = 'madarx/sandbox:latest';
|
|
42
54
|
const DEFAULT_WORKDIR = '/sandbox';
|
|
43
55
|
|
|
56
|
+
// R4 SSH backend defaults. The remote workdir is a dedicated scratch dir, not a
|
|
57
|
+
// home/system path; artifacts land in a fixed subdir under it for sync-back.
|
|
58
|
+
const DEFAULT_SSH_PORT = 22;
|
|
59
|
+
const DEFAULT_SSH_WORKDIR = '/tmp/madarx-sandbox';
|
|
60
|
+
export const SSH_ARTIFACT_SUBDIR = 'artifacts';
|
|
61
|
+
|
|
44
62
|
// Container-side mount targets. The artifact dir is the agent's only writable
|
|
45
63
|
// host-backed path; the auth dir (if any) is read-only.
|
|
46
64
|
export const ARTIFACT_CONTAINER_DIR = '/sandbox/artifacts';
|
|
@@ -71,6 +89,19 @@ function containerCommandName(command) {
|
|
|
71
89
|
return parts.length ? parts[parts.length - 1] : value;
|
|
72
90
|
}
|
|
73
91
|
|
|
92
|
+
// POSIX single-quote a string for safe embedding in a remote shell command:
|
|
93
|
+
// wrap in single quotes and escape any embedded single quote as '\''. Prevents
|
|
94
|
+
// argument/command injection through the SSH remote command string.
|
|
95
|
+
/** @param {unknown} s */
|
|
96
|
+
function shellQuote(s) {
|
|
97
|
+
return `'${String(s ?? '').replace(/'/g, `'\\''`)}'`;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// Only well-formed shell identifier names may be exported via `env NAME=val` on
|
|
101
|
+
// the remote — a defensive guard so a hostile/odd env key can't smuggle shell
|
|
102
|
+
// syntax into the remote command.
|
|
103
|
+
const ENV_NAME_RE = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
104
|
+
|
|
74
105
|
// Keys whose NAME signals a credential. Matches the canonical S2 set
|
|
75
106
|
// (KEY / TOKEN / SECRET / PASSWORD) plus the common spellings. Case-insensitive.
|
|
76
107
|
const SECRET_KEY_RE = /(?:KEY|TOKEN|SECRET|PASSWORD|PASSWD|CREDENTIAL)/i;
|
|
@@ -93,7 +124,7 @@ function pick(value, allowed, fallback) {
|
|
|
93
124
|
* env wins over built-in defaults. Unknown / junk values fall back to the safe
|
|
94
125
|
* default (mode "off"), never throw.
|
|
95
126
|
*
|
|
96
|
-
* @param {{ mode?: string, scope?: string, backend?: string, image?: string, network?: string, workdir?: string, agentId?: string, liveDocker?: boolean|string, artifactDir?: string, authDir?: string }} [opts]
|
|
127
|
+
* @param {{ mode?: string, scope?: string, backend?: string, image?: string, network?: string, workdir?: string, agentId?: string, liveDocker?: boolean|string, artifactDir?: string, authDir?: string, liveSsh?: boolean|string, sshHost?: string, sshUser?: string, sshPort?: string|number, sshWorkdir?: string }} [opts]
|
|
97
128
|
* @param {{ env?: Record<string, string|undefined> }} [ctx]
|
|
98
129
|
*/
|
|
99
130
|
export function buildSandboxConfig(opts = {}, ctx = {}) {
|
|
@@ -114,7 +145,22 @@ export function buildSandboxConfig(opts = {}, ctx = {}) {
|
|
|
114
145
|
// (ro). Null when unset → no host FS mount at all (S2 default-deny preserved).
|
|
115
146
|
const artifactDir = String(opts.artifactDir ?? env.MADARX_SANDBOX_ARTIFACT_DIR ?? '').trim() || null;
|
|
116
147
|
const authDir = String(opts.authDir ?? env.MADARX_SANDBOX_AUTH_DIR ?? '').trim() || null;
|
|
117
|
-
|
|
148
|
+
// R4 SSH backend: real SSH execution is a SEPARATE opt-in from confinement
|
|
149
|
+
// mode, gated by its OWN live flag. Even with backend "ssh" + host/user set,
|
|
150
|
+
// no SSH command is produced or run unless `liveSsh` is also on. Host/user
|
|
151
|
+
// null when unset → the backend stays a deferred refusal stub (never an
|
|
152
|
+
// unconfined host fallback).
|
|
153
|
+
const liveSsh = truthyFlag(opts.liveSsh ?? env.MADARX_SANDBOX_LIVE_SSH);
|
|
154
|
+
const sshHost = String(opts.sshHost ?? env.MADARX_SANDBOX_SSH_HOST ?? '').trim() || null;
|
|
155
|
+
const sshUser = String(opts.sshUser ?? env.MADARX_SANDBOX_SSH_USER ?? '').trim() || null;
|
|
156
|
+
const sshPortRaw = String(opts.sshPort ?? env.MADARX_SANDBOX_SSH_PORT ?? '').trim();
|
|
157
|
+
const sshPort = /^\d+$/.test(sshPortRaw) ? Number(sshPortRaw) : DEFAULT_SSH_PORT;
|
|
158
|
+
const sshWorkdir = String(opts.sshWorkdir ?? env.MADARX_SANDBOX_SSH_WORKDIR ?? '').trim() || DEFAULT_SSH_WORKDIR;
|
|
159
|
+
return {
|
|
160
|
+
mode, scope, backend, image, network, workdir, agentId: opts.agentId || null,
|
|
161
|
+
liveDocker, artifactDir, authDir,
|
|
162
|
+
liveSsh, sshHost, sshUser, sshPort, sshWorkdir,
|
|
163
|
+
};
|
|
118
164
|
}
|
|
119
165
|
|
|
120
166
|
/**
|
|
@@ -266,6 +312,140 @@ export function buildDockerExecSpec({ config, command, args = [], env = {}, name
|
|
|
266
312
|
return { command: 'docker', args: dockerArgs, image: cfg.image, containerEnv, dropped, rejected, mounts };
|
|
267
313
|
}
|
|
268
314
|
|
|
315
|
+
/**
|
|
316
|
+
* Whether a config has the minimum SSH connection details (host + user).
|
|
317
|
+
* @param {ReturnType<typeof buildSandboxConfig>|null|undefined} cfg
|
|
318
|
+
*/
|
|
319
|
+
export function sshConfigPresent(cfg) {
|
|
320
|
+
return Boolean(cfg && cfg.sshHost && cfg.sshUser);
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* Build the hardened REMOTE shell command run over SSH. It:
|
|
325
|
+
* - `cd`s into the dedicated remote workdir (created defensively with mkdir -p),
|
|
326
|
+
* - exports ONLY the sanitized env (secret-bearing + LD_/DYLD_ already stripped;
|
|
327
|
+
* PATH dropped so the remote's own PATH is used),
|
|
328
|
+
* - execs the command by BASENAME (a host absolute CLI path never reaches the
|
|
329
|
+
* remote), with every token POSIX-quoted.
|
|
330
|
+
* Pure + deterministic.
|
|
331
|
+
*
|
|
332
|
+
* @param {{ workdir: string, env: Record<string,string>, command: string, args: string[] }} p
|
|
333
|
+
*/
|
|
334
|
+
function buildRemoteShellCommand({ workdir, env, command, args }) {
|
|
335
|
+
const artifactDir = `${String(workdir).replace(/\/+$/, '')}/${SSH_ARTIFACT_SUBDIR}`;
|
|
336
|
+
const parts = [];
|
|
337
|
+
parts.push('mkdir', '-p', shellQuote(workdir), shellQuote(artifactDir), '&&');
|
|
338
|
+
parts.push('cd', shellQuote(workdir), '&&');
|
|
339
|
+
parts.push('exec', 'env');
|
|
340
|
+
for (const [k, v] of Object.entries(env)) {
|
|
341
|
+
if (!ENV_NAME_RE.test(k)) continue; // skip non-identifier keys defensively
|
|
342
|
+
parts.push(`${k}=${shellQuote(v)}`);
|
|
343
|
+
}
|
|
344
|
+
parts.push(shellQuote(command), ...args.map(shellQuote));
|
|
345
|
+
return parts.join(' ');
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
/**
|
|
349
|
+
* Build a deterministic `ssh` exec spec that runs `command args` on a remote host
|
|
350
|
+
* with the same env-hygiene + no-host-path guarantees as the docker backend. The
|
|
351
|
+
* connection is non-interactive (`BatchMode=yes` → key-based only, never prompts
|
|
352
|
+
* for a password), with host-key TOFU (`accept-new`) and a bounded connect
|
|
353
|
+
* timeout. Pure — does NOT spawn ssh (that is `executeSandboxedSpawn`).
|
|
354
|
+
*
|
|
355
|
+
* Requires host + user in the config; throws (fail-loud) otherwise. The live
|
|
356
|
+
* flag is NOT consulted here — gating lives in `buildSandboxedSpawnPlan` /
|
|
357
|
+
* `executeSandboxedSpawn` so this builder stays purely deterministic + testable.
|
|
358
|
+
*
|
|
359
|
+
* @param {{ config?: ReturnType<typeof buildSandboxConfig>, command?: string, args?: string[], env?: Record<string,string|undefined> }} [params]
|
|
360
|
+
* @returns {{ command: 'ssh', args: string[], target: string, remoteCommand: string, remoteEnv: Record<string,string>, dropped: string[], rejected: string[], workdir: string }}
|
|
361
|
+
*/
|
|
362
|
+
export function buildSshExecSpec({ config, command, args = [], env = {} } = {}) {
|
|
363
|
+
if (!command) throw new Error('buildSshExecSpec: command is required');
|
|
364
|
+
const cfg = config || buildSandboxConfig();
|
|
365
|
+
if (!cfg.sshHost || !cfg.sshUser) {
|
|
366
|
+
throw new Error('buildSshExecSpec: SSH host and user are required (set MADARX_SANDBOX_SSH_HOST / MADARX_SANDBOX_SSH_USER)');
|
|
367
|
+
}
|
|
368
|
+
// dropPath: the remote uses its own PATH; we never forward the host PATH or any
|
|
369
|
+
// secret-bearing / linker-override var.
|
|
370
|
+
const { env: remoteEnv, dropped, rejected } = sanitizeChildEnv(env, { dropPath: true });
|
|
371
|
+
const workdir = cfg.sshWorkdir || DEFAULT_SSH_WORKDIR;
|
|
372
|
+
const remoteCommand = buildRemoteShellCommand({
|
|
373
|
+
workdir,
|
|
374
|
+
env: remoteEnv,
|
|
375
|
+
command: containerCommandName(command), // basename only — no host absolute path
|
|
376
|
+
args,
|
|
377
|
+
});
|
|
378
|
+
const target = `${cfg.sshUser}@${cfg.sshHost}`;
|
|
379
|
+
const sshArgs = [
|
|
380
|
+
'-p', String(cfg.sshPort || DEFAULT_SSH_PORT),
|
|
381
|
+
'-o', 'BatchMode=yes',
|
|
382
|
+
'-o', 'StrictHostKeyChecking=accept-new',
|
|
383
|
+
'-o', 'ConnectTimeout=10',
|
|
384
|
+
target,
|
|
385
|
+
remoteCommand,
|
|
386
|
+
];
|
|
387
|
+
return { command: 'ssh', args: sshArgs, target, remoteCommand, remoteEnv, dropped, rejected, workdir };
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
/**
|
|
391
|
+
* Deterministic, backend-aware description of how files written during a run are
|
|
392
|
+
* recovered after teardown. Pure — used both for the live-exec result payload and
|
|
393
|
+
* for operator inspection of a dry plan.
|
|
394
|
+
*
|
|
395
|
+
* - docker + artifactDir → a rw bind-mount cache that survives teardown (auto).
|
|
396
|
+
* - docker, no artifactDir → ephemeral container FS (nothing recoverable).
|
|
397
|
+
* - ssh → files stay in the remote workdir; sync-back is an operator-driven scp
|
|
398
|
+
* (NOT auto-run in this slice — we surface the exact command instead).
|
|
399
|
+
*
|
|
400
|
+
* @param {ReturnType<typeof buildSandboxConfig>} cfg
|
|
401
|
+
* @param {string} [backend]
|
|
402
|
+
*/
|
|
403
|
+
export function describeArtifactSync(cfg, backend) {
|
|
404
|
+
const b = backend || cfg?.backend || 'docker';
|
|
405
|
+
if (b === 'docker') {
|
|
406
|
+
if (cfg?.artifactDir) {
|
|
407
|
+
return {
|
|
408
|
+
backend: 'docker',
|
|
409
|
+
mechanism: 'bind-mount',
|
|
410
|
+
hostDir: cfg.artifactDir,
|
|
411
|
+
containerDir: ARTIFACT_CONTAINER_DIR,
|
|
412
|
+
mode: 'rw',
|
|
413
|
+
recoverable: true,
|
|
414
|
+
authDir: cfg.authDir || null,
|
|
415
|
+
authContainerDir: cfg.authDir ? AUTH_CONTAINER_DIR : null,
|
|
416
|
+
note: 'Files written to /sandbox/artifacts persist on the host cache after container teardown (automatic).',
|
|
417
|
+
};
|
|
418
|
+
}
|
|
419
|
+
return {
|
|
420
|
+
backend: 'docker',
|
|
421
|
+
mechanism: 'none',
|
|
422
|
+
recoverable: false,
|
|
423
|
+
note: 'No MADARX_SANDBOX_ARTIFACT_DIR configured; the container filesystem is ephemeral and nothing is synced back.',
|
|
424
|
+
};
|
|
425
|
+
}
|
|
426
|
+
if (b === 'ssh') {
|
|
427
|
+
const workdir = cfg?.sshWorkdir || DEFAULT_SSH_WORKDIR;
|
|
428
|
+
const remoteArtifactDir = `${String(workdir).replace(/\/+$/, '')}/${SSH_ARTIFACT_SUBDIR}`;
|
|
429
|
+
const target = sshConfigPresent(cfg) ? `${cfg.sshUser}@${cfg.sshHost}` : null;
|
|
430
|
+
return {
|
|
431
|
+
backend: 'ssh',
|
|
432
|
+
mechanism: 'ssh-remote',
|
|
433
|
+
remoteWorkdir: workdir,
|
|
434
|
+
remoteArtifactDir,
|
|
435
|
+
target,
|
|
436
|
+
port: cfg?.sshPort || DEFAULT_SSH_PORT,
|
|
437
|
+
recoverable: false,
|
|
438
|
+
// The exact scp the operator runs to pull artifacts back to a local cache.
|
|
439
|
+
// Not auto-executed: remote sync-back policy stays an explicit operator step.
|
|
440
|
+
syncCommand: target
|
|
441
|
+
? ['scp', '-P', String(cfg.sshPort || DEFAULT_SSH_PORT), '-r', `${target}:${remoteArtifactDir}/.`, '<local-cache-dir>']
|
|
442
|
+
: null,
|
|
443
|
+
note: 'Artifacts remain in the remote workdir; sync-back via scp/rsync is operator-driven (not auto-run in this slice).',
|
|
444
|
+
};
|
|
445
|
+
}
|
|
446
|
+
return { backend: b, mechanism: 'unknown', recoverable: false };
|
|
447
|
+
}
|
|
448
|
+
|
|
269
449
|
/**
|
|
270
450
|
* The integration seam used by the engine runners. Decides — based on config +
|
|
271
451
|
* whether this is the main agent — whether to confine, and returns a concrete
|
|
@@ -273,8 +453,15 @@ export function buildDockerExecSpec({ config, command, args = [], env = {}, name
|
|
|
273
453
|
*
|
|
274
454
|
* - sandbox off / main-under-non-main → host pass-through (hardened env only).
|
|
275
455
|
* - docker backend → a `docker run` wrapper (confined).
|
|
276
|
-
* - ssh
|
|
277
|
-
*
|
|
456
|
+
* - ssh backend, fully opted in → an `ssh` remote-exec wrapper (confined
|
|
457
|
+
* off-host). "Fully opted in" = live flag
|
|
458
|
+
* ON + host + user set. This is the SINGLE
|
|
459
|
+
* chokepoint both the engine runner and
|
|
460
|
+
* `executeSandboxedSpawn` flow through, so
|
|
461
|
+
* no real SSH is ever produced without the
|
|
462
|
+
* explicit opt-in.
|
|
463
|
+
* - ssh (not fully opted in) / local → deferred stub (NOT silently run
|
|
464
|
+
* unconfined — the caller must decide).
|
|
278
465
|
*
|
|
279
466
|
* @param {{ config?: ReturnType<typeof buildSandboxConfig>, isMain?: boolean, command?: string, args?: string[], env?: Record<string,string|undefined>, name?: string, mountCtx?: { home?: string, repoRoot?: string } }} [params]
|
|
280
467
|
*/
|
|
@@ -299,35 +486,113 @@ export function buildSandboxedSpawnPlan({ config, isMain = false, command, args
|
|
|
299
486
|
spec,
|
|
300
487
|
};
|
|
301
488
|
}
|
|
302
|
-
//
|
|
303
|
-
//
|
|
304
|
-
//
|
|
489
|
+
// SSH — only produce a real, spawnable plan when the operator has FULLY opted
|
|
490
|
+
// in: the dedicated live flag is on AND a host + user are configured. This
|
|
491
|
+
// gate lives here (not only in executeSandboxedSpawn) because the engine runner
|
|
492
|
+
// spawns this plan directly — so this is the one place that guarantees no real
|
|
493
|
+
// ssh command is built without explicit opt-in. Anything short of that falls
|
|
494
|
+
// through to the deferred refusal below (never an unconfined host fallback).
|
|
495
|
+
if (cfg.backend === 'ssh' && cfg.liveSsh && sshConfigPresent(cfg)) {
|
|
496
|
+
const spec = buildSshExecSpec({ config: cfg, command, args, env });
|
|
497
|
+
return {
|
|
498
|
+
sandboxed: true,
|
|
499
|
+
backend: 'ssh',
|
|
500
|
+
command: spec.command,
|
|
501
|
+
args: spec.args,
|
|
502
|
+
// The local ssh client runs on the host; harden its env. The remote child
|
|
503
|
+
// receives only `spec.remoteEnv` (baked into the remote command), never the
|
|
504
|
+
// host secrets/linker overrides.
|
|
505
|
+
env: hardenChildEnv(env),
|
|
506
|
+
remoteEnv: spec.remoteEnv,
|
|
507
|
+
target: spec.target,
|
|
508
|
+
remoteCommand: spec.remoteCommand,
|
|
509
|
+
spec,
|
|
510
|
+
};
|
|
511
|
+
}
|
|
512
|
+
// ssh (not fully opted in) / local — honest refusal stubs. R4 wires REAL docker
|
|
513
|
+
// and SSH execution; the `local` backend cannot confine on the host and is
|
|
514
|
+
// intentionally never wired, so it always refuses rather than run unconfined.
|
|
305
515
|
return {
|
|
306
516
|
sandboxed: false,
|
|
307
517
|
deferred: true,
|
|
308
518
|
backend: cfg.backend,
|
|
309
|
-
reason:
|
|
519
|
+
reason: deferredBackendReason(cfg),
|
|
310
520
|
command,
|
|
311
521
|
args: [...args],
|
|
312
522
|
env: hardenChildEnv(env),
|
|
313
523
|
};
|
|
314
524
|
}
|
|
315
525
|
|
|
526
|
+
/**
|
|
527
|
+
* Human-readable reason a backend is deferred. SSH explains exactly which opt-in
|
|
528
|
+
* piece is missing (live flag / host / user); `local` explains it is unconfinable
|
|
529
|
+
* by design. Always contains "Sandbox backend" so callers can match generically.
|
|
530
|
+
*
|
|
531
|
+
* @param {ReturnType<typeof buildSandboxConfig>} cfg
|
|
532
|
+
*/
|
|
533
|
+
function deferredBackendReason(cfg) {
|
|
534
|
+
if (cfg.backend === 'ssh') {
|
|
535
|
+
const missing = [];
|
|
536
|
+
if (!cfg.sshHost) missing.push('MADARX_SANDBOX_SSH_HOST');
|
|
537
|
+
if (!cfg.sshUser) missing.push('MADARX_SANDBOX_SSH_USER');
|
|
538
|
+
if (!cfg.liveSsh) missing.push('MADARX_SANDBOX_LIVE_SSH=1');
|
|
539
|
+
return `Sandbox backend "ssh" is not fully opted in (missing: ${missing.join(', ')}); refusing to run unconfined. Real SSH execution requires the live flag plus host + user config.`;
|
|
540
|
+
}
|
|
541
|
+
if (cfg.backend === 'local') {
|
|
542
|
+
return '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).';
|
|
543
|
+
}
|
|
544
|
+
return `Sandbox backend "${cfg.backend}" is not yet implemented (Docker and SSH are the wired backends).`;
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
/**
|
|
548
|
+
* Spawn a child via the (possibly injected) spawn function and resolve with its
|
|
549
|
+
* exit code + collected stdout/stderr. Pure plumbing — never decides whether a
|
|
550
|
+
* run is allowed (callers gate before reaching here). `shell: false` always.
|
|
551
|
+
*
|
|
552
|
+
* @param {Function} spawnFn
|
|
553
|
+
* @param {{ command: string, args: string[], env: Record<string,string> }} plan
|
|
554
|
+
*/
|
|
555
|
+
function collectChild(spawnFn, plan) {
|
|
556
|
+
return new Promise((resolve, reject) => {
|
|
557
|
+
let child;
|
|
558
|
+
try {
|
|
559
|
+
child = spawnFn(plan.command, plan.args, { shell: false, env: plan.env });
|
|
560
|
+
} catch (err) {
|
|
561
|
+
reject(err);
|
|
562
|
+
return;
|
|
563
|
+
}
|
|
564
|
+
let stdout = '';
|
|
565
|
+
let stderr = '';
|
|
566
|
+
child.stdout?.on?.('data', (/** @type {Buffer} */ d) => { stdout += d.toString(); });
|
|
567
|
+
child.stderr?.on?.('data', (/** @type {Buffer} */ d) => { stderr += d.toString(); });
|
|
568
|
+
child.on?.('error', reject);
|
|
569
|
+
child.on?.('close', (/** @type {number} */ code) => {
|
|
570
|
+
resolve({ code, stdout: stdout.trim(), stderr: stderr.trim() });
|
|
571
|
+
});
|
|
572
|
+
});
|
|
573
|
+
}
|
|
574
|
+
|
|
316
575
|
/**
|
|
317
576
|
* R4 — the EXPLICITLY OPT-IN real execution helper. Resolves a spawn plan via
|
|
318
|
-
* `buildSandboxedSpawnPlan`, then actually spawns
|
|
319
|
-
*
|
|
320
|
-
*
|
|
577
|
+
* `buildSandboxedSpawnPlan`, then actually spawns the confined runner — but only
|
|
578
|
+
* behind the matching live flag:
|
|
579
|
+
* - docker → spawns `docker run` only when `cfg.liveDocker`
|
|
580
|
+
* (MADARX_SANDBOX_LIVE_DOCKER); otherwise refuses + returns the plan.
|
|
581
|
+
* - ssh → only reached when the plan is already a real ssh plan, which
|
|
582
|
+
* `buildSandboxedSpawnPlan` produces ONLY when `cfg.liveSsh`
|
|
583
|
+
* (MADARX_SANDBOX_LIVE_SSH) + host + user are all set. A re-check here is
|
|
584
|
+
* belt-and-suspenders.
|
|
321
585
|
*
|
|
322
586
|
* Safety contract:
|
|
323
|
-
* - Never spawns unless the plan is a confined docker plan AND
|
|
324
|
-
* - A deferred (ssh/local) backend throws — never runs unconfined
|
|
325
|
-
* -
|
|
326
|
-
* container writes to `/sandbox/artifacts`
|
|
327
|
-
* - Only the hardened host env reaches the docker CLI; only sanitized env is
|
|
328
|
-
* the
|
|
587
|
+
* - Never spawns unless the plan is a confined docker/ssh plan AND its live flag is on.
|
|
588
|
+
* - A deferred (ssh-not-opted-in / local) backend throws — never runs unconfined.
|
|
589
|
+
* - docker: the artifact cache dir is created on the host before the run so files
|
|
590
|
+
* the container writes to `/sandbox/artifacts` survive teardown.
|
|
591
|
+
* - Only the hardened host env reaches the docker/ssh CLI; only sanitized env is
|
|
592
|
+
* in the inner command (built by `buildDockerExecSpec` / `buildSshExecSpec`).
|
|
593
|
+
* - The result carries `syncBack` metadata describing artifact recovery.
|
|
329
594
|
*
|
|
330
|
-
* `spawnFn` / `ensureDir` are injectable for deterministic tests (no real docker).
|
|
595
|
+
* `spawnFn` / `ensureDir` are injectable for deterministic tests (no real docker/ssh).
|
|
331
596
|
*
|
|
332
597
|
* @param {{ config?: ReturnType<typeof buildSandboxConfig>, isMain?: boolean, command?: string, args?: string[], env?: Record<string,string|undefined>, name?: string, mountCtx?: { home?: string, repoRoot?: string } }} params
|
|
333
598
|
* @param {{ spawnFn?: Function, ensureDir?: (dir: string) => Promise<void> }} [deps]
|
|
@@ -341,11 +606,43 @@ export async function executeSandboxedSpawn(params = {}, deps = {}) {
|
|
|
341
606
|
/** @type {any} */ (e).code = 'sandbox_backend_unavailable';
|
|
342
607
|
throw e;
|
|
343
608
|
}
|
|
344
|
-
if (!plan.sandboxed || plan.backend !== 'docker') {
|
|
345
|
-
const e = new Error('executeSandboxedSpawn requires an active, confined docker sandbox plan (sandbox is off or not
|
|
609
|
+
if (!plan.sandboxed || (plan.backend !== 'docker' && plan.backend !== 'ssh')) {
|
|
610
|
+
const e = new Error('executeSandboxedSpawn requires an active, confined docker or ssh sandbox plan (sandbox is off or not a confined backend)');
|
|
346
611
|
/** @type {any} */ (e).code = 'sandbox_not_confined';
|
|
347
612
|
throw e;
|
|
348
613
|
}
|
|
614
|
+
|
|
615
|
+
// --- SSH backend ---------------------------------------------------------
|
|
616
|
+
if (plan.backend === 'ssh') {
|
|
617
|
+
if (!cfg.liveSsh) {
|
|
618
|
+
// Defensive: buildSandboxedSpawnPlan would not have produced a real ssh
|
|
619
|
+
// plan without liveSsh, so this is unreachable in practice — kept as a
|
|
620
|
+
// hard guarantee that no ssh spawn ever happens without the live flag.
|
|
621
|
+
return {
|
|
622
|
+
executed: false,
|
|
623
|
+
refused: true,
|
|
624
|
+
backend: 'ssh',
|
|
625
|
+
reason: 'live SSH execution is disabled; set MADARX_SANDBOX_LIVE_SSH=1 to opt in',
|
|
626
|
+
plan,
|
|
627
|
+
syncBack: describeArtifactSync(cfg, 'ssh'),
|
|
628
|
+
};
|
|
629
|
+
}
|
|
630
|
+
const spawnFn = deps.spawnFn || (await import('node:child_process')).spawn;
|
|
631
|
+
const spawnPlan = /** @type {{ command: string, args: string[], env: Record<string,string> }} */ (plan);
|
|
632
|
+
const { code, stdout, stderr } = await collectChild(spawnFn, spawnPlan);
|
|
633
|
+
return {
|
|
634
|
+
executed: true,
|
|
635
|
+
code,
|
|
636
|
+
stdout,
|
|
637
|
+
stderr,
|
|
638
|
+
backend: 'ssh',
|
|
639
|
+
target: plan.target,
|
|
640
|
+
syncBack: describeArtifactSync(cfg, 'ssh'),
|
|
641
|
+
plan,
|
|
642
|
+
};
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
// --- Docker backend ------------------------------------------------------
|
|
349
646
|
if (!cfg.liveDocker) {
|
|
350
647
|
// Off by default: build/inspect the plan but DO NOT spawn docker.
|
|
351
648
|
return {
|
|
@@ -354,6 +651,7 @@ export async function executeSandboxedSpawn(params = {}, deps = {}) {
|
|
|
354
651
|
backend: 'docker',
|
|
355
652
|
reason: 'live docker execution is disabled; set MADARX_SANDBOX_LIVE_DOCKER=1 to opt in',
|
|
356
653
|
plan,
|
|
654
|
+
syncBack: describeArtifactSync(cfg, 'docker'),
|
|
357
655
|
};
|
|
358
656
|
}
|
|
359
657
|
|
|
@@ -368,29 +666,16 @@ export async function executeSandboxedSpawn(params = {}, deps = {}) {
|
|
|
368
666
|
}
|
|
369
667
|
|
|
370
668
|
const spawnFn = deps.spawnFn || (await import('node:child_process')).spawn;
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
child.on?.('error', reject);
|
|
384
|
-
child.on?.('close', (/** @type {number} */ code) => {
|
|
385
|
-
resolve({
|
|
386
|
-
executed: true,
|
|
387
|
-
code,
|
|
388
|
-
stdout: stdout.trim(),
|
|
389
|
-
stderr: stderr.trim(),
|
|
390
|
-
backend: 'docker',
|
|
391
|
-
artifactDir: cfg.artifactDir || null,
|
|
392
|
-
plan,
|
|
393
|
-
});
|
|
394
|
-
});
|
|
395
|
-
});
|
|
669
|
+
const spawnPlan = /** @type {{ command: string, args: string[], env: Record<string,string> }} */ (plan);
|
|
670
|
+
const { code, stdout, stderr } = await collectChild(spawnFn, spawnPlan);
|
|
671
|
+
return {
|
|
672
|
+
executed: true,
|
|
673
|
+
code,
|
|
674
|
+
stdout,
|
|
675
|
+
stderr,
|
|
676
|
+
backend: 'docker',
|
|
677
|
+
artifactDir: cfg.artifactDir || null,
|
|
678
|
+
syncBack: describeArtifactSync(cfg, 'docker'),
|
|
679
|
+
plan,
|
|
680
|
+
};
|
|
396
681
|
}
|
package/lib/schema.js
CHANGED
|
@@ -556,6 +556,17 @@ CREATE TABLE IF NOT EXISTS whatsapp_allowlist (
|
|
|
556
556
|
UNIQUE(chat_id)
|
|
557
557
|
);
|
|
558
558
|
|
|
559
|
+
CREATE TABLE IF NOT EXISTS channel_allowlist (
|
|
560
|
+
id TEXT PRIMARY KEY,
|
|
561
|
+
channel TEXT NOT NULL,
|
|
562
|
+
address TEXT NOT NULL,
|
|
563
|
+
kind TEXT NOT NULL DEFAULT 'dm',
|
|
564
|
+
label TEXT,
|
|
565
|
+
created_at TEXT NOT NULL,
|
|
566
|
+
UNIQUE(channel, address)
|
|
567
|
+
);
|
|
568
|
+
CREATE INDEX IF NOT EXISTS idx_channel_allowlist_channel ON channel_allowlist(channel);
|
|
569
|
+
|
|
559
570
|
-- Per-chat conversation session boundary. session_started_at is the cutoff for
|
|
560
571
|
-- history reconstruction: buildWhatsAppHistory only replays whatsapp_messages rows
|
|
561
572
|
-- with created_at >= session_started_at. The /new command advances it to now,
|
package/lib/whatsapp-router.js
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { getDb, nowIso, newId } from './db.js';
|
|
2
2
|
import { appendAudit } from './runtime.js';
|
|
3
|
+
import {
|
|
4
|
+
addChannelAllowlistEntry,
|
|
5
|
+
isChannelAllowed,
|
|
6
|
+
listChannelAllowlist,
|
|
7
|
+
removeChannelAllowlistEntry,
|
|
8
|
+
} from './channel-allowlist.js';
|
|
3
9
|
import { publishLiveEvent } from './live-events.js';
|
|
4
10
|
import { runWhatsAppOrchestrator } from './whatsapp-agent.js';
|
|
5
11
|
import { pollIncomingMessages, sendWhatsAppDocument, sendWhatsAppMessage, setTyping } from './whatsapp.js';
|
|
@@ -35,9 +41,7 @@ function startTypingIndicator(chatId, typingFn = setTyping) {
|
|
|
35
41
|
const recentSenders = new Map();
|
|
36
42
|
|
|
37
43
|
function listAllowlistChatIds() {
|
|
38
|
-
return new Set(
|
|
39
|
-
getDb().prepare('SELECT chat_id FROM whatsapp_allowlist').all().map(row => row.chat_id),
|
|
40
|
-
);
|
|
44
|
+
return new Set(listChannelAllowlist('whatsapp').map(row => row.address || row.chat_id));
|
|
41
45
|
}
|
|
42
46
|
|
|
43
47
|
function alreadySeen(messageId) {
|
|
@@ -407,23 +411,29 @@ export async function runRouterLoop({ intervalMs = 1500, signal } = {}) {
|
|
|
407
411
|
}
|
|
408
412
|
|
|
409
413
|
export function listInboundAllowlist() {
|
|
410
|
-
return
|
|
414
|
+
return listChannelAllowlist('whatsapp').map(row => ({
|
|
415
|
+
id: row.id,
|
|
416
|
+
channel: 'whatsapp',
|
|
417
|
+
address: row.address || row.chat_id,
|
|
418
|
+
chat_id: row.address || row.chat_id,
|
|
419
|
+
kind: row.kind,
|
|
420
|
+
label: row.label,
|
|
421
|
+
created_at: row.created_at,
|
|
422
|
+
}));
|
|
411
423
|
}
|
|
412
424
|
|
|
413
425
|
export function addAllowlistEntry({ chat_id, kind = 'dm', label = null }) {
|
|
414
426
|
if (!chat_id) throw new Error('chat_id is required');
|
|
415
|
-
|
|
416
|
-
getDb().prepare(`
|
|
417
|
-
INSERT INTO whatsapp_allowlist (id, chat_id, kind, label, created_at)
|
|
418
|
-
VALUES (?, ?, ?, ?, ?)
|
|
419
|
-
ON CONFLICT(chat_id) DO UPDATE SET kind = excluded.kind, label = excluded.label
|
|
420
|
-
`).run(id, String(chat_id), String(kind), label ? String(label) : null, nowIso());
|
|
421
|
-
return getDb().prepare('SELECT id, chat_id, kind, label, created_at FROM whatsapp_allowlist WHERE chat_id = ?').get(String(chat_id));
|
|
427
|
+
return addChannelAllowlistEntry({ channel: 'whatsapp', address: chat_id, kind, label });
|
|
422
428
|
}
|
|
423
429
|
|
|
424
430
|
export function removeAllowlistEntry(chatId) {
|
|
425
431
|
if (!chatId) return 0;
|
|
426
|
-
return
|
|
432
|
+
return removeChannelAllowlistEntry('whatsapp', chatId);
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
export function isInboundAllowed(channel, address) {
|
|
436
|
+
return isChannelAllowed(channel, address);
|
|
427
437
|
}
|
|
428
438
|
|
|
429
439
|
export function listInboundMessages(limit = 50) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "madarx",
|
|
3
|
-
"version": "2.24.
|
|
3
|
+
"version": "2.24.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Madarx OS — Next.js product with SQLite-backed runtime, scheduled cron daemon, and approval-gated local runners.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -66,6 +66,7 @@
|
|
|
66
66
|
"whatsapp:reset": "node --no-warnings --env-file-if-exists=.env.local scripts/whatsapp-reset.mjs",
|
|
67
67
|
"smoke:routes": "node --no-warnings scripts/smoke-routes.mjs",
|
|
68
68
|
"mcp:public-interop": "node --no-warnings --env-file-if-exists=.env.local scripts/mcp-public-interop.mjs",
|
|
69
|
+
"vreach:smoke": "node --no-warnings --env-file-if-exists=.env.local scripts/vreach-channel-smoke.mjs",
|
|
69
70
|
"vecon:proof": "node --no-warnings --env-file-if-exists=.env.local scripts/vecon-prompt-cache-proof.mjs",
|
|
70
71
|
"vendor:open-design": "node --no-warnings scripts/vendor-open-design.mjs",
|
|
71
72
|
"check:disk-enc": "node --no-warnings scripts/check-disk-encryption.mjs",
|