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
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { getDb, nowIso, newId } from './db.js';
|
|
2
|
+
|
|
3
|
+
const KNOWN_CHANNELS = new Set(['whatsapp', 'telegram', 'slack', 'discord', 'imessage', 'signal', 'webhook']);
|
|
4
|
+
|
|
5
|
+
export function normalizeChannel(channel) {
|
|
6
|
+
const value = String(channel || '').trim().toLowerCase();
|
|
7
|
+
if (!value) throw new Error('channel is required');
|
|
8
|
+
if (!KNOWN_CHANNELS.has(value)) throw new Error(`unsupported channel: ${value}`);
|
|
9
|
+
return value;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export function normalizeAddress(channel, value) {
|
|
13
|
+
const ch = normalizeChannel(channel);
|
|
14
|
+
const raw = String(value || '').trim();
|
|
15
|
+
if (!raw) return '';
|
|
16
|
+
if (ch === 'whatsapp') {
|
|
17
|
+
if (raw.includes('@')) return raw;
|
|
18
|
+
const digits = raw.replace(/[^0-9]/g, '');
|
|
19
|
+
return digits ? `${digits}@s.whatsapp.net` : '';
|
|
20
|
+
}
|
|
21
|
+
return raw;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export function inferAddressKind(channel, address) {
|
|
25
|
+
const ch = normalizeChannel(channel);
|
|
26
|
+
const value = String(address || '');
|
|
27
|
+
if (ch === 'whatsapp') return value.endsWith('@g.us') ? 'group' : 'dm';
|
|
28
|
+
if (ch === 'slack' || ch === 'discord') return value.startsWith('D') ? 'dm' : 'channel';
|
|
29
|
+
if (ch === 'telegram') return value.startsWith('-') ? 'group' : 'dm';
|
|
30
|
+
if (ch === 'webhook') return 'endpoint';
|
|
31
|
+
return 'dm';
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function legacyWhatsAppRows() {
|
|
35
|
+
try {
|
|
36
|
+
return getDb().prepare(`
|
|
37
|
+
SELECT id, 'whatsapp' AS channel, chat_id AS address, chat_id, kind, label, created_at
|
|
38
|
+
FROM whatsapp_allowlist
|
|
39
|
+
ORDER BY created_at DESC
|
|
40
|
+
`).all();
|
|
41
|
+
} catch {
|
|
42
|
+
return [];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function genericRows(channel = null) {
|
|
47
|
+
const db = getDb();
|
|
48
|
+
if (channel) {
|
|
49
|
+
return db.prepare(`
|
|
50
|
+
SELECT id, channel, address, address AS chat_id, kind, label, created_at
|
|
51
|
+
FROM channel_allowlist
|
|
52
|
+
WHERE channel = ?
|
|
53
|
+
ORDER BY created_at DESC
|
|
54
|
+
`).all(normalizeChannel(channel));
|
|
55
|
+
}
|
|
56
|
+
return db.prepare(`
|
|
57
|
+
SELECT id, channel, address, address AS chat_id, kind, label, created_at
|
|
58
|
+
FROM channel_allowlist
|
|
59
|
+
ORDER BY channel ASC, created_at DESC
|
|
60
|
+
`).all();
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export function listChannelAllowlist(channel = null) {
|
|
64
|
+
if (channel && normalizeChannel(channel) === 'whatsapp') {
|
|
65
|
+
const legacy = legacyWhatsAppRows();
|
|
66
|
+
const generic = genericRows('whatsapp');
|
|
67
|
+
const seen = new Set();
|
|
68
|
+
return [...legacy, ...generic].filter(row => {
|
|
69
|
+
const key = `${row.channel}:${row.address || row.chat_id}`;
|
|
70
|
+
if (seen.has(key)) return false;
|
|
71
|
+
seen.add(key);
|
|
72
|
+
return true;
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
if (channel) return genericRows(channel);
|
|
76
|
+
const legacy = legacyWhatsAppRows();
|
|
77
|
+
const generic = genericRows();
|
|
78
|
+
const seen = new Set();
|
|
79
|
+
return [...legacy, ...generic].filter(row => {
|
|
80
|
+
const key = `${row.channel}:${row.address || row.chat_id}`;
|
|
81
|
+
if (seen.has(key)) return false;
|
|
82
|
+
seen.add(key);
|
|
83
|
+
return true;
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export function isChannelAllowed(channel, address) {
|
|
88
|
+
const ch = normalizeChannel(channel);
|
|
89
|
+
const normalized = normalizeAddress(ch, address);
|
|
90
|
+
if (!normalized) return false;
|
|
91
|
+
if (ch === 'whatsapp') {
|
|
92
|
+
const legacy = getDb().prepare('SELECT id FROM whatsapp_allowlist WHERE chat_id = ? LIMIT 1').get(normalized);
|
|
93
|
+
if (legacy) return true;
|
|
94
|
+
}
|
|
95
|
+
return Boolean(getDb().prepare('SELECT id FROM channel_allowlist WHERE channel = ? AND address = ? LIMIT 1').get(ch, normalized));
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export function addChannelAllowlistEntry({ channel, address, chat_id, kind = null, label = null }) {
|
|
99
|
+
const ch = normalizeChannel(channel);
|
|
100
|
+
const normalized = normalizeAddress(ch, address || chat_id);
|
|
101
|
+
if (!normalized) throw new Error('address is required');
|
|
102
|
+
const rowKind = kind || inferAddressKind(ch, normalized);
|
|
103
|
+
if (ch === 'whatsapp') {
|
|
104
|
+
const id = newId('waal');
|
|
105
|
+
getDb().prepare(`
|
|
106
|
+
INSERT INTO whatsapp_allowlist (id, chat_id, kind, label, created_at)
|
|
107
|
+
VALUES (?, ?, ?, ?, ?)
|
|
108
|
+
ON CONFLICT(chat_id) DO UPDATE SET kind = excluded.kind, label = excluded.label
|
|
109
|
+
`).run(id, normalized, String(rowKind), label ? String(label) : null, nowIso());
|
|
110
|
+
return getDb().prepare(`
|
|
111
|
+
SELECT id, 'whatsapp' AS channel, chat_id AS address, chat_id, kind, label, created_at
|
|
112
|
+
FROM whatsapp_allowlist WHERE chat_id = ?
|
|
113
|
+
`).get(normalized);
|
|
114
|
+
}
|
|
115
|
+
const id = newId('chal');
|
|
116
|
+
getDb().prepare(`
|
|
117
|
+
INSERT INTO channel_allowlist (id, channel, address, kind, label, created_at)
|
|
118
|
+
VALUES (?, ?, ?, ?, ?, ?)
|
|
119
|
+
ON CONFLICT(channel, address) DO UPDATE SET kind = excluded.kind, label = excluded.label
|
|
120
|
+
`).run(id, ch, normalized, String(rowKind), label ? String(label) : null, nowIso());
|
|
121
|
+
return getDb().prepare(`
|
|
122
|
+
SELECT id, channel, address, address AS chat_id, kind, label, created_at
|
|
123
|
+
FROM channel_allowlist WHERE channel = ? AND address = ?
|
|
124
|
+
`).get(ch, normalized);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export function removeChannelAllowlistEntry(channel, address) {
|
|
128
|
+
const ch = normalizeChannel(channel);
|
|
129
|
+
const normalized = normalizeAddress(ch, address);
|
|
130
|
+
if (!normalized) return 0;
|
|
131
|
+
if (ch === 'whatsapp') {
|
|
132
|
+
const legacy = getDb().prepare('DELETE FROM whatsapp_allowlist WHERE chat_id = ?').run(normalized).changes;
|
|
133
|
+
const generic = getDb().prepare('DELETE FROM channel_allowlist WHERE channel = ? AND address = ?').run(ch, normalized).changes;
|
|
134
|
+
return legacy + generic;
|
|
135
|
+
}
|
|
136
|
+
return getDb().prepare('DELETE FROM channel_allowlist WHERE channel = ? AND address = ?').run(ch, normalized).changes;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
export function channelAllowlistSummary() {
|
|
140
|
+
const rows = listChannelAllowlist();
|
|
141
|
+
const counts = Object.fromEntries([...KNOWN_CHANNELS].map(channel => [channel, 0]));
|
|
142
|
+
for (const row of rows) counts[row.channel] = (counts[row.channel] || 0) + 1;
|
|
143
|
+
return counts;
|
|
144
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
/**
|
|
3
|
+
* R2 — Discord channel adapter.
|
|
4
|
+
*
|
|
5
|
+
* Transport-only wrapper over the Discord REST API (v10). It normalizes inbound
|
|
6
|
+
* gateway message objects to the canonical {@link ChannelEvent} — including
|
|
7
|
+
* attachment → media mapping — and sends replies through the channel-messages
|
|
8
|
+
* endpoint. No routing / allowlist / rate-limit logic lives here. Token and
|
|
9
|
+
* `fetch` resolve lazily at send time: inject `{ token, fetch }` in tests;
|
|
10
|
+
* otherwise `DISCORD_BOT_TOKEN` + global `fetch` are used. The bot auth scheme is
|
|
11
|
+
* `Bot <token>`. Inbound is gateway/webhook-driven, so `connect`/`disconnect` are
|
|
12
|
+
* no-ops.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { defineAdapter, normalizeInbound } from './contract.js';
|
|
16
|
+
|
|
17
|
+
/** @typedef {import('./contract.js').ChannelEvent} ChannelEvent */
|
|
18
|
+
/** @typedef {import('./contract.js').ChannelMedia} ChannelMedia */
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @typedef {Object} DiscordAdapterConfig
|
|
22
|
+
* @property {string} [token] - bot token; falls back to DISCORD_BOT_TOKEN at send time
|
|
23
|
+
* @property {typeof fetch} [fetch] - fetch impl; falls back to global fetch at send time
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Map a Discord attachment content-type to a canonical media type.
|
|
28
|
+
* @param {string|undefined} contentType
|
|
29
|
+
* @returns {string}
|
|
30
|
+
*/
|
|
31
|
+
function mediaTypeFromMime(contentType) {
|
|
32
|
+
if (typeof contentType !== 'string') return 'document';
|
|
33
|
+
if (contentType.startsWith('image/')) return 'image';
|
|
34
|
+
if (contentType.startsWith('video/')) return 'video';
|
|
35
|
+
if (contentType.startsWith('audio/')) return 'audio';
|
|
36
|
+
return 'document';
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Map a Discord attachment object to a {@link ChannelMedia} entry. Only present
|
|
41
|
+
* fields are included so the shape stays minimal.
|
|
42
|
+
* @param {Record<string, *>} att
|
|
43
|
+
* @returns {ChannelMedia}
|
|
44
|
+
*/
|
|
45
|
+
function mapAttachment(att) {
|
|
46
|
+
/** @type {ChannelMedia} */
|
|
47
|
+
const media = { type: mediaTypeFromMime(att?.content_type), url: att?.url };
|
|
48
|
+
if (att?.content_type) media.mimetype = att.content_type;
|
|
49
|
+
if (att?.filename) media.filename = att.filename;
|
|
50
|
+
return media;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Normalize a Discord gateway message object into a {@link ChannelEvent}.
|
|
55
|
+
* The original payload is preserved by reference.
|
|
56
|
+
* @param {Record<string, *>} raw
|
|
57
|
+
* @returns {ChannelEvent}
|
|
58
|
+
*/
|
|
59
|
+
export function normalizeDiscord(raw) {
|
|
60
|
+
const src = raw && typeof raw === 'object' ? raw : {};
|
|
61
|
+
const author = src.author || {};
|
|
62
|
+
const attachments = Array.isArray(src.attachments) ? src.attachments : [];
|
|
63
|
+
const mapped = {
|
|
64
|
+
chat_id: src.channel_id,
|
|
65
|
+
sender: author.id,
|
|
66
|
+
message_id: src.id,
|
|
67
|
+
text: src.content,
|
|
68
|
+
ts: src.timestamp,
|
|
69
|
+
media: attachments.map(mapAttachment),
|
|
70
|
+
};
|
|
71
|
+
const event = normalizeInbound('discord', mapped);
|
|
72
|
+
event.raw = raw;
|
|
73
|
+
return event;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Create a transport-only Discord adapter.
|
|
78
|
+
* @param {DiscordAdapterConfig} [config]
|
|
79
|
+
* @returns {import('./contract.js').ChannelAdapter}
|
|
80
|
+
*/
|
|
81
|
+
export function createDiscordAdapter(config = {}) {
|
|
82
|
+
const resolveToken = () => {
|
|
83
|
+
const token = config.token || process.env.DISCORD_BOT_TOKEN;
|
|
84
|
+
if (!token) throw new Error('discord adapter: no bot token (set DISCORD_BOT_TOKEN or inject { token })');
|
|
85
|
+
return token;
|
|
86
|
+
};
|
|
87
|
+
const resolveFetch = () => {
|
|
88
|
+
const f = config.fetch || globalThis.fetch;
|
|
89
|
+
if (typeof f !== 'function') throw new Error('discord adapter: no fetch available (inject { fetch })');
|
|
90
|
+
return f;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
return defineAdapter({
|
|
94
|
+
channel: 'discord',
|
|
95
|
+
async connect() { return { ok: true, mode: 'gateway' }; },
|
|
96
|
+
async disconnect() { return { ok: true }; },
|
|
97
|
+
/**
|
|
98
|
+
* @param {string} chatId
|
|
99
|
+
* @param {string} text
|
|
100
|
+
*/
|
|
101
|
+
async send(chatId, text) {
|
|
102
|
+
const token = resolveToken();
|
|
103
|
+
const res = await resolveFetch()(`https://discord.com/api/v10/channels/${chatId}/messages`, {
|
|
104
|
+
method: 'POST',
|
|
105
|
+
headers: {
|
|
106
|
+
Authorization: `Bot ${token}`,
|
|
107
|
+
'Content-Type': 'application/json',
|
|
108
|
+
},
|
|
109
|
+
body: JSON.stringify({ content: text }),
|
|
110
|
+
});
|
|
111
|
+
const data = /** @type {*} */ (await res.json());
|
|
112
|
+
const id = data?.id;
|
|
113
|
+
return { ok: true, message_id: id != null ? String(id) : null, raw: data };
|
|
114
|
+
},
|
|
115
|
+
normalizeInbound: normalizeDiscord,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
/**
|
|
3
|
+
* R2 — iMessage channel adapter.
|
|
4
|
+
*
|
|
5
|
+
* Transport-only wrapper over the local macOS Messages app. It normalizes simple
|
|
6
|
+
* local Messages event fields to the canonical {@link ChannelEvent} and sends
|
|
7
|
+
* replies by driving `osascript` (AppleScript) at send time. No routing /
|
|
8
|
+
* allowlist / rate-limit logic lives here. The command runner resolves lazily at
|
|
9
|
+
* send time: inject `{ run }` in tests; otherwise `child_process.execFile` runs
|
|
10
|
+
* `osascript` locally. There are no network credentials — delivery is local to the
|
|
11
|
+
* machine's signed-in Messages account, so `connect`/`disconnect` are no-ops.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import { defineAdapter, normalizeInbound } from './contract.js';
|
|
15
|
+
|
|
16
|
+
/** @typedef {import('./contract.js').ChannelEvent} ChannelEvent */
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @typedef {Object} IMessageAdapterConfig
|
|
20
|
+
* @property {(command: string, args: string[]) => Promise<*>} [run] - command runner; falls back to execFile(osascript) at send time
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Normalize a local Messages event into a {@link ChannelEvent}. The simple local
|
|
25
|
+
* shape already uses canonical field names (`chat_id`, `sender`, `message_id`,
|
|
26
|
+
* `text`, `timestamp`), so this defers to {@link normalizeInbound}. The original
|
|
27
|
+
* payload is preserved by reference.
|
|
28
|
+
* @param {Record<string, *>} raw
|
|
29
|
+
* @returns {ChannelEvent}
|
|
30
|
+
*/
|
|
31
|
+
export function normalizeIMessage(raw) {
|
|
32
|
+
const event = normalizeInbound('imessage', raw);
|
|
33
|
+
event.raw = raw;
|
|
34
|
+
return event;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Escape a string for safe interpolation into an AppleScript string literal.
|
|
39
|
+
* @param {string} value
|
|
40
|
+
* @returns {string}
|
|
41
|
+
*/
|
|
42
|
+
function escapeAppleScript(value) {
|
|
43
|
+
return String(value).replace(/\\/g, '\\\\').replace(/"/g, '\\"');
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Build the `osascript` argument vector that sends `text` to `chatId` (a phone
|
|
48
|
+
* number or email handle) through the signed-in iMessage account.
|
|
49
|
+
* @param {string} chatId
|
|
50
|
+
* @param {string} text
|
|
51
|
+
* @returns {string[]}
|
|
52
|
+
*/
|
|
53
|
+
function buildOsascriptArgs(chatId, text) {
|
|
54
|
+
const lines = [
|
|
55
|
+
'tell application "Messages"',
|
|
56
|
+
`set targetBuddy to "${escapeAppleScript(chatId)}"`,
|
|
57
|
+
'set targetService to id of 1st account whose service type = iMessage',
|
|
58
|
+
`send "${escapeAppleScript(text)}" to buddy targetBuddy of service id targetService`,
|
|
59
|
+
'end tell',
|
|
60
|
+
];
|
|
61
|
+
return lines.flatMap((line) => ['-e', line]);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Run a command via `child_process.execFile`, resolving with `{ stdout, stderr }`.
|
|
66
|
+
* Imported lazily so the module loads without `node:child_process` in environments
|
|
67
|
+
* that only ever inject a `run`.
|
|
68
|
+
* @param {string} command
|
|
69
|
+
* @param {string[]} args
|
|
70
|
+
* @returns {Promise<{ stdout: string, stderr: string }>}
|
|
71
|
+
*/
|
|
72
|
+
async function execFileRun(command, args) {
|
|
73
|
+
const { execFile } = await import('node:child_process');
|
|
74
|
+
return new Promise((resolve, reject) => {
|
|
75
|
+
execFile(command, args, (err, stdout, stderr) => {
|
|
76
|
+
if (err) reject(err);
|
|
77
|
+
else resolve({ stdout: String(stdout), stderr: String(stderr) });
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Create a transport-only iMessage adapter.
|
|
84
|
+
* @param {IMessageAdapterConfig} [config]
|
|
85
|
+
* @returns {import('./contract.js').ChannelAdapter}
|
|
86
|
+
*/
|
|
87
|
+
export function createIMessageAdapter(config = {}) {
|
|
88
|
+
const run = typeof config.run === 'function' ? config.run : execFileRun;
|
|
89
|
+
|
|
90
|
+
return defineAdapter({
|
|
91
|
+
channel: 'imessage',
|
|
92
|
+
// Local delivery; nothing persistent to open or close.
|
|
93
|
+
async connect() { return { ok: true, mode: 'local' }; },
|
|
94
|
+
async disconnect() { return { ok: true }; },
|
|
95
|
+
/**
|
|
96
|
+
* @param {string} chatId
|
|
97
|
+
* @param {string} text
|
|
98
|
+
*/
|
|
99
|
+
async send(chatId, text) {
|
|
100
|
+
const args = buildOsascriptArgs(String(chatId), text);
|
|
101
|
+
const result = await run('osascript', args);
|
|
102
|
+
return { ok: true, message_id: null, raw: result };
|
|
103
|
+
},
|
|
104
|
+
normalizeInbound: normalizeIMessage,
|
|
105
|
+
});
|
|
106
|
+
}
|
package/lib/channels/index.js
CHANGED
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
* …and the generic router can route + reply through it with no core change.
|
|
11
11
|
*
|
|
12
12
|
* Status: foundation shipped (contract, registry, deterministic routing, generic
|
|
13
|
-
* router
|
|
14
|
-
*
|
|
13
|
+
* router) plus the R2 acceptance channels: WhatsApp / Telegram / Slack / Discord /
|
|
14
|
+
* iMessage / Signal / Webhook adapters.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
export { normalizeInbound, defineAdapter } from './contract.js';
|
|
@@ -19,16 +19,53 @@ export { createRegistry, defaultRegistry } from './registry.js';
|
|
|
19
19
|
export { resolveRoute, routeSpecificity, bindingMatches, originOf } from './routing.js';
|
|
20
20
|
export { dispatchInbound, sendReply } from './router.js';
|
|
21
21
|
export { whatsappAdapter, normalizeWhatsApp } from './whatsapp-adapter.js';
|
|
22
|
+
export { createTelegramAdapter, normalizeTelegram } from './telegram-adapter.js';
|
|
23
|
+
export { createSlackAdapter, normalizeSlack } from './slack-adapter.js';
|
|
24
|
+
export { createDiscordAdapter, normalizeDiscord } from './discord-adapter.js';
|
|
25
|
+
export { createIMessageAdapter, normalizeIMessage } from './imessage-adapter.js';
|
|
26
|
+
export { createSignalAdapter, normalizeSignal } from './signal-adapter.js';
|
|
27
|
+
export { createWebhookAdapter, normalizeWebhook } from './webhook-adapter.js';
|
|
22
28
|
|
|
23
29
|
import { defaultRegistry } from './registry.js';
|
|
24
30
|
import { whatsappAdapter } from './whatsapp-adapter.js';
|
|
31
|
+
import { createTelegramAdapter } from './telegram-adapter.js';
|
|
32
|
+
import { createSlackAdapter } from './slack-adapter.js';
|
|
33
|
+
import { createDiscordAdapter } from './discord-adapter.js';
|
|
34
|
+
import { createIMessageAdapter } from './imessage-adapter.js';
|
|
35
|
+
import { createSignalAdapter } from './signal-adapter.js';
|
|
36
|
+
import { createWebhookAdapter } from './webhook-adapter.js';
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Per-adapter construction config for {@link registerBuiltinAdapters}. Each entry
|
|
40
|
+
* accepts injected dependencies (used by tests and explicit wiring); anything
|
|
41
|
+
* omitted resolves from env vars / global fetch / the local runner at send time.
|
|
42
|
+
* @typedef {Object} BuiltinAdapterConfig
|
|
43
|
+
* @property {import('./telegram-adapter.js').TelegramAdapterConfig} [telegram]
|
|
44
|
+
* @property {import('./slack-adapter.js').SlackAdapterConfig} [slack]
|
|
45
|
+
* @property {import('./discord-adapter.js').DiscordAdapterConfig} [discord]
|
|
46
|
+
* @property {import('./imessage-adapter.js').IMessageAdapterConfig} [imessage]
|
|
47
|
+
* @property {import('./signal-adapter.js').SignalAdapterConfig} [signal]
|
|
48
|
+
* @property {import('./webhook-adapter.js').WebhookAdapterConfig} [webhook]
|
|
49
|
+
*/
|
|
25
50
|
|
|
26
51
|
/**
|
|
27
52
|
* Register the built-in adapters into a registry (default: the shared one).
|
|
28
53
|
* Idempotent — safe to call at every boot. Follow-on channels register here too.
|
|
54
|
+
*
|
|
55
|
+
* All R2 acceptance adapters are always registered. Environment- or device-backed
|
|
56
|
+
* transports resolve their credentials / local CLIs lazily at send time, so a bare
|
|
57
|
+
* `registerBuiltinAdapters()` is still safe in tests and boot paths that do not
|
|
58
|
+
* exercise those sends.
|
|
29
59
|
* @param {import('./registry.js').ChannelRegistry} [registry]
|
|
60
|
+
* @param {BuiltinAdapterConfig} [config] - optional per-adapter dependency injection
|
|
30
61
|
*/
|
|
31
|
-
export function registerBuiltinAdapters(registry = defaultRegistry) {
|
|
62
|
+
export function registerBuiltinAdapters(registry = defaultRegistry, config = {}) {
|
|
32
63
|
registry.register(whatsappAdapter, { replace: true });
|
|
64
|
+
registry.register(createTelegramAdapter(config.telegram), { replace: true });
|
|
65
|
+
registry.register(createSlackAdapter(config.slack), { replace: true });
|
|
66
|
+
registry.register(createDiscordAdapter(config.discord), { replace: true });
|
|
67
|
+
registry.register(createIMessageAdapter(config.imessage), { replace: true });
|
|
68
|
+
registry.register(createSignalAdapter(config.signal), { replace: true });
|
|
69
|
+
registry.register(createWebhookAdapter(config.webhook), { replace: true });
|
|
33
70
|
return registry;
|
|
34
71
|
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
/**
|
|
3
|
+
* R2 — Signal channel adapter.
|
|
4
|
+
*
|
|
5
|
+
* Transport-only wrapper over `signal-cli`. It normalizes inbound signal-cli JSON
|
|
6
|
+
* envelopes to the canonical {@link ChannelEvent} and sends replies by invoking
|
|
7
|
+
* `signal-cli` at send time. No routing / allowlist / rate-limit logic lives here.
|
|
8
|
+
* The command runner resolves lazily at send time: inject `{ run }` in tests;
|
|
9
|
+
* otherwise `child_process.execFile` runs `signal-cli` locally. The account is
|
|
10
|
+
* resolved at send time from `config.account` or `SIGNAL_CLI_ACCOUNT`. Inbound is
|
|
11
|
+
* poller/daemon-driven, so `connect`/`disconnect` are no-ops.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import { defineAdapter, normalizeInbound } from './contract.js';
|
|
15
|
+
|
|
16
|
+
/** @typedef {import('./contract.js').ChannelEvent} ChannelEvent */
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @typedef {Object} SignalAdapterConfig
|
|
20
|
+
* @property {string} [account] - sender account; falls back to SIGNAL_CLI_ACCOUNT at send time
|
|
21
|
+
* @property {(command: string, args: string[]) => Promise<*>} [run] - command runner; falls back to execFile(signal-cli) at send time
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Normalize a signal-cli JSON envelope into a {@link ChannelEvent}. Accepts a full
|
|
26
|
+
* `{ envelope: {...} }` wrapper, a bare envelope, or an already-normalized event.
|
|
27
|
+
* The original payload is preserved by reference.
|
|
28
|
+
* @param {Record<string, *>} raw
|
|
29
|
+
* @returns {ChannelEvent}
|
|
30
|
+
*/
|
|
31
|
+
export function normalizeSignal(raw) {
|
|
32
|
+
const src = raw && typeof raw === 'object' ? raw : {};
|
|
33
|
+
const env = src.envelope || src;
|
|
34
|
+
const data = env?.dataMessage || {};
|
|
35
|
+
const timestamp = env?.timestamp;
|
|
36
|
+
const mapped = {
|
|
37
|
+
chat_id: env?.source,
|
|
38
|
+
sender: env?.source,
|
|
39
|
+
message_id: timestamp,
|
|
40
|
+
text: data?.message,
|
|
41
|
+
ts: timestamp != null ? new Date(Number(timestamp)).toISOString() : undefined,
|
|
42
|
+
};
|
|
43
|
+
const event = normalizeInbound('signal', mapped);
|
|
44
|
+
event.raw = raw;
|
|
45
|
+
return event;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Run a command via `child_process.execFile`, resolving with `{ stdout, stderr }`.
|
|
50
|
+
* Imported lazily so the module loads without `node:child_process` in environments
|
|
51
|
+
* that only ever inject a `run`.
|
|
52
|
+
* @param {string} command
|
|
53
|
+
* @param {string[]} args
|
|
54
|
+
* @returns {Promise<{ stdout: string, stderr: string }>}
|
|
55
|
+
*/
|
|
56
|
+
async function execFileRun(command, args) {
|
|
57
|
+
const { execFile } = await import('node:child_process');
|
|
58
|
+
return new Promise((resolve, reject) => {
|
|
59
|
+
execFile(command, args, (err, stdout, stderr) => {
|
|
60
|
+
if (err) reject(err);
|
|
61
|
+
else resolve({ stdout: String(stdout), stderr: String(stderr) });
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Create a transport-only Signal adapter.
|
|
68
|
+
* @param {SignalAdapterConfig} [config]
|
|
69
|
+
* @returns {import('./contract.js').ChannelAdapter}
|
|
70
|
+
*/
|
|
71
|
+
export function createSignalAdapter(config = {}) {
|
|
72
|
+
const run = typeof config.run === 'function' ? config.run : execFileRun;
|
|
73
|
+
const resolveAccount = () => {
|
|
74
|
+
const account = config.account || process.env.SIGNAL_CLI_ACCOUNT;
|
|
75
|
+
if (!account) throw new Error('signal adapter: no account (set SIGNAL_CLI_ACCOUNT or inject { account })');
|
|
76
|
+
return account;
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
return defineAdapter({
|
|
80
|
+
channel: 'signal',
|
|
81
|
+
// Poller/daemon-driven; nothing persistent to open or close.
|
|
82
|
+
async connect() { return { ok: true, mode: 'cli' }; },
|
|
83
|
+
async disconnect() { return { ok: true }; },
|
|
84
|
+
/**
|
|
85
|
+
* @param {string} chatId
|
|
86
|
+
* @param {string} text
|
|
87
|
+
*/
|
|
88
|
+
async send(chatId, text) {
|
|
89
|
+
const account = resolveAccount();
|
|
90
|
+
const args = ['-a', account, 'send', '-m', text, String(chatId)];
|
|
91
|
+
const result = await run('signal-cli', args);
|
|
92
|
+
return { ok: true, message_id: null, raw: result };
|
|
93
|
+
},
|
|
94
|
+
normalizeInbound: normalizeSignal,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
/**
|
|
3
|
+
* R2 — Slack channel adapter.
|
|
4
|
+
*
|
|
5
|
+
* Transport-only wrapper over the Slack Web API. It normalizes inbound Events API
|
|
6
|
+
* envelopes to the canonical {@link ChannelEvent} and sends replies through
|
|
7
|
+
* `chat.postMessage`. No routing / allowlist / rate-limit logic lives here. Token
|
|
8
|
+
* and `fetch` resolve lazily at send time: inject `{ token, fetch }` in tests;
|
|
9
|
+
* otherwise `SLACK_BOT_TOKEN` + global `fetch` are used. Inbound is event-driven,
|
|
10
|
+
* so `connect`/`disconnect` are no-ops.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { defineAdapter, normalizeInbound } from './contract.js';
|
|
14
|
+
|
|
15
|
+
/** @typedef {import('./contract.js').ChannelEvent} ChannelEvent */
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* @typedef {Object} SlackAdapterConfig
|
|
19
|
+
* @property {string} [token] - bot token; falls back to SLACK_BOT_TOKEN at send time
|
|
20
|
+
* @property {typeof fetch} [fetch] - fetch impl; falls back to global fetch at send time
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Normalize a Slack Events API payload into a {@link ChannelEvent}.
|
|
25
|
+
* Accepts a full envelope (`{ event: {...} }`), a bare event, or an
|
|
26
|
+
* already-normalized event. The original payload is preserved by reference.
|
|
27
|
+
* @param {Record<string, *>} raw
|
|
28
|
+
* @returns {ChannelEvent}
|
|
29
|
+
*/
|
|
30
|
+
export function normalizeSlack(raw) {
|
|
31
|
+
const src = raw && typeof raw === 'object' ? raw : {};
|
|
32
|
+
const ev = src.event || src;
|
|
33
|
+
const mapped = {
|
|
34
|
+
chat_id: ev?.channel,
|
|
35
|
+
sender: ev?.user || ev?.bot_id,
|
|
36
|
+
message_id: ev?.ts,
|
|
37
|
+
text: ev?.text,
|
|
38
|
+
ts: ev?.ts,
|
|
39
|
+
};
|
|
40
|
+
const event = normalizeInbound('slack', mapped);
|
|
41
|
+
event.raw = raw;
|
|
42
|
+
return event;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Create a transport-only Slack adapter.
|
|
47
|
+
* @param {SlackAdapterConfig} [config]
|
|
48
|
+
* @returns {import('./contract.js').ChannelAdapter}
|
|
49
|
+
*/
|
|
50
|
+
export function createSlackAdapter(config = {}) {
|
|
51
|
+
const resolveToken = () => {
|
|
52
|
+
const token = config.token || process.env.SLACK_BOT_TOKEN;
|
|
53
|
+
if (!token) throw new Error('slack adapter: no bot token (set SLACK_BOT_TOKEN or inject { token })');
|
|
54
|
+
return token;
|
|
55
|
+
};
|
|
56
|
+
const resolveFetch = () => {
|
|
57
|
+
const f = config.fetch || globalThis.fetch;
|
|
58
|
+
if (typeof f !== 'function') throw new Error('slack adapter: no fetch available (inject { fetch })');
|
|
59
|
+
return f;
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
return defineAdapter({
|
|
63
|
+
channel: 'slack',
|
|
64
|
+
async connect() { return { ok: true, mode: 'events_api' }; },
|
|
65
|
+
async disconnect() { return { ok: true }; },
|
|
66
|
+
/**
|
|
67
|
+
* @param {string} chatId
|
|
68
|
+
* @param {string} text
|
|
69
|
+
*/
|
|
70
|
+
async send(chatId, text) {
|
|
71
|
+
const token = resolveToken();
|
|
72
|
+
const res = await resolveFetch()('https://slack.com/api/chat.postMessage', {
|
|
73
|
+
method: 'POST',
|
|
74
|
+
headers: {
|
|
75
|
+
Authorization: `Bearer ${token}`,
|
|
76
|
+
'Content-Type': 'application/json; charset=utf-8',
|
|
77
|
+
},
|
|
78
|
+
body: JSON.stringify({ channel: String(chatId), text }),
|
|
79
|
+
});
|
|
80
|
+
const data = /** @type {*} */ (await res.json());
|
|
81
|
+
const id = data?.ts;
|
|
82
|
+
return { ok: data?.ok !== false, message_id: id != null ? String(id) : null, raw: data };
|
|
83
|
+
},
|
|
84
|
+
normalizeInbound: normalizeSlack,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { createRegistry } from './registry.js';
|
|
2
|
+
import { registerBuiltinAdapters } from './index.js';
|
|
3
|
+
import { getConnectivityStatus } from '../connectivity-status.js';
|
|
4
|
+
|
|
5
|
+
const SMOKE_TEXT = 'madarX OS V-REACH smoke test';
|
|
6
|
+
|
|
7
|
+
export async function runChannelSmoke({ channel, address, text = SMOKE_TEXT, adapterConfig = {}, dryRun = true } = {}) {
|
|
8
|
+
if (!channel) throw new Error('channel is required');
|
|
9
|
+
const registry = registerBuiltinAdapters(createRegistry(), adapterConfig);
|
|
10
|
+
const adapter = registry.get(String(channel));
|
|
11
|
+
if (!adapter) throw new Error(`unsupported channel: ${channel}`);
|
|
12
|
+
if (!address) {
|
|
13
|
+
return { channel: String(channel), ok: false, skipped: 'missing_address' };
|
|
14
|
+
}
|
|
15
|
+
if (dryRun) {
|
|
16
|
+
return { channel: String(channel), ok: true, dry_run: true, address: String(address), text };
|
|
17
|
+
}
|
|
18
|
+
const result = await adapter.send(String(address), text);
|
|
19
|
+
return { channel: String(channel), ok: true, dry_run: false, result };
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export async function getVReachSmokeMatrix({ includeHealth = false } = {}) {
|
|
23
|
+
const status = await getConnectivityStatus({ includeHealth });
|
|
24
|
+
return {
|
|
25
|
+
ok: true,
|
|
26
|
+
metric: 'V-REACH',
|
|
27
|
+
target: '>=6 configured, allowlisted channels behind deterministic adapters',
|
|
28
|
+
channels: status.channels.map(row => ({
|
|
29
|
+
channel: row.channel,
|
|
30
|
+
configured: row.configured,
|
|
31
|
+
allowlist_count: row.allowlist_count,
|
|
32
|
+
ready_for_live_smoke: row.ready_for_live_smoke,
|
|
33
|
+
missing: row.missing,
|
|
34
|
+
})),
|
|
35
|
+
};
|
|
36
|
+
}
|