madarx 2.12.1 → 2.13.0
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 +544 -544
- package/.next/standalone/.next/app-path-routes-manifest.json +78 -78
- package/.next/standalone/.next/build-manifest.json +5 -5
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +1 -1
- 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]/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/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/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/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/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_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/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/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/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_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_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_client-reference-manifest.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 +2 -2
- 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 +1 -1
- 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 +1 -1
- package/.next/standalone/.next/server/app/brand.rsc +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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.html +2 -2
- package/.next/standalone/.next/server/app/onboarding.rsc +1 -1
- 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/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 +1 -1
- package/.next/standalone/.next/server/app/projects/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects/new.html +1 -1
- package/.next/standalone/.next/server/app/projects/new.rsc +2 -2
- package/.next/standalone/.next/server/app/projects/page.js +27 -27
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/whatsapp.html +1 -1
- package/.next/standalone/.next/server/app/whatsapp.rsc +1 -1
- 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/new/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 +78 -78
- package/.next/standalone/.next/server/chunks/{3784.js → 1092.js} +1 -1
- package/.next/standalone/.next/server/chunks/1699.js +27 -27
- package/.next/standalone/.next/server/functions-config-manifest.json +22 -22
- 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/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +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/chunks/app/projects/page-2166c214f854766e.js +1 -0
- package/.next/standalone/.next/static/chunks/{webpack-86ee88827adb756d.js → webpack-0cfb048137bd7fce.js} +1 -1
- package/.next/standalone/CHANGELOG.md +15 -0
- package/.next/standalone/data/.artifacts-migrated-v1 +1 -1
- package/.next/standalone/data/.default-project-seeded +1 -1
- package/.next/standalone/data/madarx.sqlite +0 -0
- package/.next/standalone/data/madarx.sqlite-shm +0 -0
- package/.next/standalone/data/madarx.sqlite-wal +0 -0
- package/.next/standalone/package.json +4 -1
- package/.next/standalone/workspace/agents/ops-agent/skills.md +24 -0
- package/.next/standalone/workspace/agents/tool-smith-agent/skills.md +24 -0
- package/.next/static/chunks/app/projects/page-2166c214f854766e.js +1 -0
- package/.next/static/chunks/{webpack-86ee88827adb756d.js → webpack-0cfb048137bd7fce.js} +1 -1
- package/CHANGELOG.md +15 -0
- package/lib/cli/banner.js +200 -21
- package/lib/cli/run.js +33 -11
- package/lib/cli/splash.js +120 -0
- package/lib/marketplace-seeds.js +141 -3
- package/lib/runtime.js +52 -3
- package/lib/seeds.js +5 -1
- package/lib/tools/registry.js +20 -0
- package/package.json +4 -1
- package/scripts/postinstall-splash.mjs +81 -0
- package/scripts/preview-banner.mjs +24 -0
- package/.next/standalone/.next/static/chunks/app/projects/page-7b6c6e010183e070.js +0 -1
- package/.next/static/chunks/app/projects/page-7b6c6e010183e070.js +0 -1
- /package/.next/standalone/.next/static/{BTzAhaVl8-xEC5Te-d7Ns → cR6E_4o8_rHXujVNesWiZ}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{BTzAhaVl8-xEC5Te-d7Ns → cR6E_4o8_rHXujVNesWiZ}/_ssgManifest.js +0 -0
- /package/.next/static/{BTzAhaVl8-xEC5Te-d7Ns → cR6E_4o8_rHXujVNesWiZ}/_buildManifest.js +0 -0
- /package/.next/static/{BTzAhaVl8-xEC5Te-d7Ns → cR6E_4o8_rHXujVNesWiZ}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
2026-06-
|
|
1
|
+
2026-06-04T16:49:01.257Z
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "madarx",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.13.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Madarx OS — Next.js product with SQLite-backed runtime, scheduled cron daemon, and approval-gated local runners.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -44,6 +44,9 @@
|
|
|
44
44
|
"prepublishOnly": "npm run build",
|
|
45
45
|
"build": "NODE_OPTIONS=--no-warnings next build",
|
|
46
46
|
"postbuild": "node --no-warnings scripts/postbuild-standalone.mjs",
|
|
47
|
+
"postinstall": "node --no-warnings scripts/postinstall-splash.mjs",
|
|
48
|
+
"splash": "MADARX_FORCE_SPLASH=1 FORCE_COLOR=1 node --no-warnings scripts/postinstall-splash.mjs",
|
|
49
|
+
"banner": "FORCE_COLOR=1 node --no-warnings scripts/preview-banner.mjs",
|
|
47
50
|
"start": "next start -p 8787 -H 127.0.0.1",
|
|
48
51
|
"test": "node --no-warnings --test tests/*.test.js",
|
|
49
52
|
"daemon": "node --no-warnings --env-file-if-exists=.env.local scripts/cron-daemon.mjs",
|
|
@@ -9,3 +9,27 @@ Run safe daily operations checks for madarX OS, inspect local workspace state, s
|
|
|
9
9
|
- Save every output as a local artifact under your project's artifacts folder (workspace/projects/<slug>/artifacts/).
|
|
10
10
|
- Hand off any external send, post, deployment, or destructive command to the main agent for approval.
|
|
11
11
|
- After each run, update heartbeat.json with status, summary, and next-run plan.
|
|
12
|
+
|
|
13
|
+
## Default skills
|
|
14
|
+
|
|
15
|
+
You ship with these ready-to-use business skills. Reach for them by intent;
|
|
16
|
+
each is backed by your enabled tools and stays within the usual approval gates.
|
|
17
|
+
|
|
18
|
+
### Research
|
|
19
|
+
- **Market Research** (`/research`) — Research any market, company, or topic across the web and deliver a cited, structured brief. _Tools: web_search, web_fetch, file_write._
|
|
20
|
+
- **Competitor Watch** (`/watch`) — Track competitor pricing, features, and news on a schedule and alert you when something changes. _Tools: web_fetch, web_extract, email_send._
|
|
21
|
+
|
|
22
|
+
### Comms
|
|
23
|
+
- **Inbox Triage** (`/inbox`) — Summarize, prioritize, and draft replies across your inbox so you act on what matters first. _Tools: gmail_messages_list, gmail_thread_read, email_send._
|
|
24
|
+
- **Meeting Scheduler** (`/schedule-meeting`) — Find times, schedule meetings, and send invites from your calendar and email. _Tools: calendar_events_list, calendar_event_read, email_send._
|
|
25
|
+
|
|
26
|
+
### Documents
|
|
27
|
+
- **Document Extraction** (`/extract`) — Pull structured data and key facts from PDFs, documents, and audio into clean, usable output. _Tools: file_read, transcribe_audio, file_write._
|
|
28
|
+
- **Report Builder** (`/report`) — Turn raw data and notes into a polished, formatted report or one-pager ready to share. _Tools: file_read, file_write._
|
|
29
|
+
|
|
30
|
+
### Data
|
|
31
|
+
- **Database Q&A** (`/ask-data`) — Ask questions of your database in plain English and get answers, tables, and charts. _Tools: supabase_rest_select, supabase_sql._
|
|
32
|
+
- **Spreadsheet Analysis** (`/analyze-sheet`) — Clean, analyze, and summarize spreadsheets and CSVs — pivots, trends, and outliers. _Tools: file_read, file_write._
|
|
33
|
+
|
|
34
|
+
### Web
|
|
35
|
+
- **Web Automation** (`/automate-web`) — Fill forms, extract data, and run repetitive flows in a real browser, end to end. _Tools: browser_open, browser_act, browser_extract._
|
|
@@ -9,3 +9,27 @@ Authors reusable capabilities for the marketplace — declarative skills, compos
|
|
|
9
9
|
- Save every output as a local artifact under your project's artifacts folder (workspace/projects/<slug>/artifacts/).
|
|
10
10
|
- Hand off any external send, post, deployment, or destructive command to the main agent for approval.
|
|
11
11
|
- After each run, update heartbeat.json with status, summary, and next-run plan.
|
|
12
|
+
|
|
13
|
+
## Default skills
|
|
14
|
+
|
|
15
|
+
You ship with these ready-to-use business skills. Reach for them by intent;
|
|
16
|
+
each is backed by your enabled tools and stays within the usual approval gates.
|
|
17
|
+
|
|
18
|
+
### Research
|
|
19
|
+
- **Market Research** (`/research`) — Research any market, company, or topic across the web and deliver a cited, structured brief. _Tools: web_search, web_fetch, file_write._
|
|
20
|
+
- **Competitor Watch** (`/watch`) — Track competitor pricing, features, and news on a schedule and alert you when something changes. _Tools: web_fetch, web_extract, email_send._
|
|
21
|
+
|
|
22
|
+
### Comms
|
|
23
|
+
- **Inbox Triage** (`/inbox`) — Summarize, prioritize, and draft replies across your inbox so you act on what matters first. _Tools: gmail_messages_list, gmail_thread_read, email_send._
|
|
24
|
+
- **Meeting Scheduler** (`/schedule-meeting`) — Find times, schedule meetings, and send invites from your calendar and email. _Tools: calendar_events_list, calendar_event_read, email_send._
|
|
25
|
+
|
|
26
|
+
### Documents
|
|
27
|
+
- **Document Extraction** (`/extract`) — Pull structured data and key facts from PDFs, documents, and audio into clean, usable output. _Tools: file_read, transcribe_audio, file_write._
|
|
28
|
+
- **Report Builder** (`/report`) — Turn raw data and notes into a polished, formatted report or one-pager ready to share. _Tools: file_read, file_write._
|
|
29
|
+
|
|
30
|
+
### Data
|
|
31
|
+
- **Database Q&A** (`/ask-data`) — Ask questions of your database in plain English and get answers, tables, and charts. _Tools: supabase_rest_select, supabase_sql._
|
|
32
|
+
- **Spreadsheet Analysis** (`/analyze-sheet`) — Clean, analyze, and summarize spreadsheets and CSVs — pivots, trends, and outliers. _Tools: file_read, file_write._
|
|
33
|
+
|
|
34
|
+
### Web
|
|
35
|
+
- **Web Automation** (`/automate-web`) — Fill forms, extract data, and run repetitive flows in a real browser, end to end. _Tools: browser_open, browser_act, browser_extract._
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[893],{45:(e,a,t)=>{"use strict";t.d(a,{default:()=>o});var s=t(12115),n={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"},l=t(64250);let r=(0,s.createContext)({}),o=(0,s.forwardRef)((e,a)=>{var t,o,c;let{color:i,size:d,strokeWidth:u,absoluteStrokeWidth:m,className:h="",children:p,iconNode:j,...f}=e,{size:x=24,strokeWidth:g=2,absoluteStrokeWidth:v=!1,color:b="currentColor",className:y=""}=null!=(t=(0,s.useContext)(r))?t:{},k=(null!=m?m:v)?24*Number(null!=u?u:g)/Number(null!=d?d:x):null!=u?u:g;return(0,s.createElement)("svg",{ref:a,...n,width:null!=(o=null!=d?d:x)?o:n.width,height:null!=(c=null!=d?d:x)?c:n.height,stroke:null!=i?i:b,strokeWidth:k,className:(0,l.z)("lucide",y,h),...!p&&!(e=>{for(let a in e)if(a.startsWith("aria-")||"role"===a||"title"===a)return!0;return!1})(f)&&{"aria-hidden":"true"},...f},[...j.map(e=>{let[a,t]=e;return(0,s.createElement)(a,t)}),...Array.isArray(p)?p:[p]])})},8707:(e,a,t)=>{"use strict";t.d(a,{default:()=>m});var s=t(95155),n=t(12115),l=t(47650),r=t(85649),o=t(30926);let c=(0,o.createServerReference)("40ab5a4206ede782a1564bd15ede8850606ae1e110",o.callServer,void 0,o.findSourceMapURL,"createProjectAction");var i=t(59097);let d=[{value:"#c2452a",name:"Mars Red"},{value:"#a83a22",name:"Deep Red"},{value:"#7c2b19",name:"Dark Red"},{value:"#111318",name:"Charcoal"},{value:"#3f3a30",name:"Warm Black"},{value:"#68707b",name:"Slate"},{value:"#cdb78a",name:"Warm Sand"},{value:"#1f6c9f",name:"Skill Blue"}];function u(){let{pending:e}=(0,l.useFormStatus)();return(0,s.jsx)("button",{type:"submit",className:"admin-button",disabled:e,"aria-busy":e?"true":void 0,children:e?"Creating…":"Create project"})}function m(e){let{workspaceRoot:a="~/workspace/projects"}=e,[t,l]=n.useState(!1),[o,m]=n.useState(""),[h,p]=n.useState("workspace"),[j,f]=n.useState(""),x=n.useRef(null),g=n.useMemo(()=>"".concat(a.replace(/\/$/,""),"/").concat(String(o||"").toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,64)||"project"),[a,o]);return n.useEffect(()=>{var e;"custom"===h&&(null==(e=x.current)||e.focus())},[h]),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("button",{type:"button",className:"admin-button agents-new-cta",onClick:()=>l(!0),children:[(0,s.jsx)("span",{"aria-hidden":!0,className:"agents-new-cta-glyph",children:"+"}),"New project"]}),(0,s.jsx)(r.A,{open:t,onClose:()=>l(!1),eyebrow:"New project",title:"Create a project",children:(0,s.jsxs)("form",{className:"agents-modal-form",action:c,children:[(0,s.jsx)("p",{className:"agents-modal-help",children:"Scope agents, documents, memory, and integrations together."}),(0,s.jsx)("section",{className:"agents-modal-section",children:(0,s.jsxs)("label",{className:"agents-modal-field wide",children:[(0,s.jsx)("span",{children:"Name"}),(0,s.jsx)("input",{name:"name",type:"text",required:!0,placeholder:"Acme Co.",autoComplete:"off",value:o,onChange:e=>m(e.target.value),autoFocus:!0})]})}),(0,s.jsxs)("section",{className:"agents-modal-section",children:[(0,s.jsxs)("div",{className:"agents-modal-section-head",children:[(0,s.jsx)("span",{children:"Folder location"}),(0,s.jsx)("small",{children:"Where this project lives on disk."})]}),(0,s.jsxs)("div",{className:"agents-modal-radio-group",children:[(0,s.jsxs)("label",{className:"agents-modal-radio ".concat("workspace"===h?"on":""),children:[(0,s.jsx)("input",{type:"radio",name:"folder_mode",value:"workspace",checked:"workspace"===h,onChange:()=>p("workspace")}),(0,s.jsxs)("span",{className:"agents-modal-radio-body",children:[(0,s.jsx)("b",{children:"madarX workspace"}),(0,s.jsx)("code",{title:g,children:function(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:48;if(!e||e.length<=a)return e;let t=e.slice(0,Math.floor(a/2)-1),s=e.slice(e.length-Math.floor(a/2)+2);return"".concat(t,"…").concat(s)}(g)})]})]}),(0,s.jsxs)("label",{className:"agents-modal-radio ".concat("custom"===h?"on":""),children:[(0,s.jsx)("input",{type:"radio",name:"folder_mode",value:"custom",checked:"custom"===h,onChange:()=>p("custom")}),(0,s.jsxs)("span",{className:"agents-modal-radio-body",children:[(0,s.jsx)("b",{children:"Custom path"}),(0,s.jsx)("small",{children:"Any absolute folder. Created if missing."})]})]})]}),"custom"===h?(0,s.jsx)(i.A,{inputRef:x,value:j,onChange:f}):(0,s.jsx)("input",{type:"hidden",name:"folder_path",value:""})]}),(0,s.jsxs)("section",{className:"agents-modal-section",children:[(0,s.jsxs)("div",{className:"agents-modal-section-head",children:[(0,s.jsx)("span",{children:"Color"}),(0,s.jsx)("small",{children:"Used for the project tile across the app."})]}),(0,s.jsxs)("fieldset",{className:"agents-modal-swatches",children:[(0,s.jsx)("legend",{className:"visually-hidden",children:"Project color"}),d.map(e=>(0,s.jsxs)("label",{className:"agents-modal-swatch",style:{"--swatch":e.value},children:[(0,s.jsx)("input",{type:"radio",name:"color",value:e.value,defaultChecked:"#c2452a"===e.value}),(0,s.jsx)("span",{className:"agents-modal-swatch-ring","aria-hidden":"true"}),(0,s.jsx)("span",{className:"visually-hidden",children:e.name})]},e.value))]})]}),(0,s.jsxs)("section",{className:"agents-modal-section",children:[(0,s.jsxs)("div",{className:"agents-modal-section-head",children:[(0,s.jsx)("span",{children:"Description"}),(0,s.jsx)("small",{children:"Used as context for agents working in this project."})]}),(0,s.jsx)("label",{className:"agents-modal-field wide",children:(0,s.jsx)("textarea",{name:"description",rows:3,placeholder:"What is this project for? Goals, audience, voice, constraints."})})]}),(0,s.jsxs)("footer",{className:"agents-modal-foot",children:[(0,s.jsx)("button",{type:"button",className:"admin-button secondary",onClick:()=>l(!1),children:"Cancel"}),(0,s.jsx)(u,{})]})]})})]})}},10677:(e,a,t)=>{"use strict";t.d(a,{default:()=>l});var s=t(95155),n=t(12115);function l(){let[e,a]=(0,n.useState)([]),[t,l]=(0,n.useState)("");return(0,n.useEffect)(()=>{l(localStorage.getItem("madarx.activeProjectId")||""),fetch("/api/projects").then(e=>e.json()).then(e=>a(e.projects||[])).catch(()=>{})},[]),(0,s.jsx)("div",{className:"project-switcher","data-project-switcher":!0,children:(0,s.jsxs)("select",{value:t,onChange:e=>{var a;l(a=e.target.value),a?localStorage.setItem("madarx.activeProjectId",a):localStorage.removeItem("madarx.activeProjectId"),window.dispatchEvent(new CustomEvent("madarx:project-change",{detail:{project_id:a||null}}))},"aria-label":"Active project",children:[(0,s.jsx)("option",{value:"",children:"All projects"}),e.map(e=>(0,s.jsx)("option",{value:e.id,children:e.name},e.id))]})})}},13185:(e,a,t)=>{"use strict";t.d(a,{A:()=>o});var s=t(12115),n=t(64250);let l=e=>{let a=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,a,t)=>t?t.toUpperCase():a.toLowerCase());return a.charAt(0).toUpperCase()+a.slice(1)};var r=t(45);let o=(e,a)=>{let t=(0,s.forwardRef)((t,o)=>{let{className:c,...i}=t;return(0,s.createElement)(r.default,{ref:o,iconNode:a,className:(0,n.z)("lucide-".concat(l(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()),"lucide-".concat(e),c),...i})});return t.displayName=l(e),t}},16111:(e,a,t)=>{"use strict";t.d(a,{default:()=>d});var s=t(95155),n=t(12115),l=t(47650),r=t(85649),o=t(30926);let c=(0,o.createServerReference)("4042d31a1eb062b91673d5a505d5b45e67f8e7aaf3",o.callServer,void 0,o.findSourceMapURL,"deleteProjectAction");function i(e){let{disabled:a}=e,{pending:t}=(0,l.useFormStatus)();return(0,s.jsx)("button",{type:"submit",className:"admin-button danger",disabled:t||a,"aria-busy":t?"true":void 0,children:t?"Deleting…":"Delete project"})}function d(e){let{projectId:a,projectName:t,projectSlug:l,isProtected:o}=e,[d,u]=n.useState(!1),[m,h]=n.useState("");if(o)return(0,s.jsxs)("span",{className:"admin-button secondary project-delete is-locked","aria-disabled":"true",title:"The Personal project is the default scope and cannot be deleted.",children:[(0,s.jsxs)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",style:{marginRight:6,verticalAlign:"-1px"},children:[(0,s.jsx)("rect",{x:"3",y:"11",width:"18",height:"11",rx:"2"}),(0,s.jsx)("path",{d:"M7 11V7a5 5 0 0 1 10 0v4"})]}),"Protected"]});n.useEffect(()=>{d||h("")},[d]);let p=m.trim()===l;return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("button",{type:"button",className:"admin-button secondary project-delete",onClick:()=>u(!0),"aria-label":"Delete ".concat(t),children:"Delete"}),(0,s.jsx)(r.A,{open:d,onClose:()=>u(!1),eyebrow:"Delete project",title:"Delete ".concat(t,"?"),tone:"danger",children:(0,s.jsxs)("form",{className:"agents-modal-form",action:c,children:[(0,s.jsx)("input",{type:"hidden",name:"project_id",value:a}),(0,s.jsx)("p",{className:"agents-modal-help",children:"This removes the project, its agents, Disk files, memory, secrets, and audit history. The folder on your local drive is left untouched."}),(0,s.jsx)("section",{className:"agents-modal-section",children:(0,s.jsxs)("label",{className:"agents-modal-field wide",children:[(0,s.jsxs)("span",{children:["Type ",(0,s.jsx)("code",{className:"agents-modal-inline-code",children:l})," to confirm"]}),(0,s.jsx)("input",{type:"text",autoComplete:"off",spellCheck:!1,value:m,onChange:e=>h(e.target.value),placeholder:l,autoFocus:!0})]})}),(0,s.jsxs)("footer",{className:"agents-modal-foot",children:[(0,s.jsx)("button",{type:"button",className:"admin-button secondary",onClick:()=>u(!1),children:"Cancel"}),(0,s.jsx)(i,{disabled:!p})]})]})})]})}},30926:(e,a,t)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),!function(e,a){for(var t in a)Object.defineProperty(e,t,{enumerable:!0,get:a[t]})}(a,{callServer:function(){return s.callServer},createServerReference:function(){return l.createServerReference},findSourceMapURL:function(){return n.findSourceMapURL}});let s=t(41209),n=t(85153),l=t(77197)},34788:(e,a,t)=>{"use strict";t.d(a,{A:()=>s});let s=(0,t(13185).A)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},59097:(e,a,t)=>{"use strict";t.d(a,{A:()=>l});var s=t(95155),n=t(12115);function l(e){let{name:a="folder_path",value:t,onChange:l,inputRef:r,placeholder:o="/Users/you/Documents/my-project"}=e,[c,i]=n.useState(null),[d,u]=n.useState(!1),[m,h]=n.useState(""),[p,j]=n.useState(""),[f,x]=n.useState(null);async function g(){var e;let a;if(i(null),!(null==(e=navigator.clipboard)?void 0:e.readText))return void i({kind:"error",message:"Clipboard not available."});try{a=await navigator.clipboard.readText()}catch(e){i({kind:"error",message:"Allow clipboard access."});return}let t=(a||"").trim();if((t.startsWith('"')&&t.endsWith('"')||t.startsWith("'")&&t.endsWith("'"))&&(t=t.slice(1,-1)),t.startsWith("file://"))try{t=decodeURI(t.slice(7))}catch(e){}return t?t.startsWith("/")||t.startsWith("~")?void(l(t),i({kind:"success",message:"Pasted."})):void i({kind:"error",message:"Path must be absolute."}):void i({kind:"error",message:"Clipboard is empty."})}async function v(){i(null),x("pick");try{let e=await fetch("/api/fs/pick-folder",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({title:"Choose project folder",start_path:t&&t.startsWith("/")?t:void 0})});if(499===e.status)return void i({kind:"error",message:"Cancelled."});let a=await e.json();if(!e.ok)return void i({kind:"error",message:a.error||"Picker failed."});l(a.folder_path),i({kind:"success",message:"Selected ".concat(a.folder_path)})}catch(e){i({kind:"error",message:String((null==e?void 0:e.message)||e)})}finally{x(null)}}async function b(){if(i(null),!m.trim()||!p.trim())return void i({kind:"error",message:"Parent and name required."});x("create");try{let e=await fetch("/api/fs/create-folder",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({parent:m.trim(),name:p.trim()})}),a=await e.json();if(!e.ok)return void i({kind:"error",message:a.error||"Create failed."});l(a.folder_path),u(!1),j(""),i({kind:"success",message:"Created ".concat(a.folder_path)})}catch(e){i({kind:"error",message:String((null==e?void 0:e.message)||e)})}finally{x(null)}}return n.useEffect(()=>{d&&!m&&h(t||"~/Documents")},[d,t,m]),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"agents-modal-paste-row",children:[(0,s.jsx)("input",{ref:r,name:a,type:"text",placeholder:o,autoComplete:"off",spellCheck:!1,value:t||"",onChange:e=>{l(e.target.value),c&&i(null)},required:!0}),(0,s.jsx)("button",{type:"button",className:"admin-button secondary",onClick:v,disabled:"pick"===f,children:"pick"===f?"Opening…":"Choose folder…"})]}),(0,s.jsxs)("div",{className:"agents-modal-folder-tools",children:[(0,s.jsx)("button",{type:"button",className:"admin-button secondary",onClick:g,children:"Paste from clipboard"}),(0,s.jsx)("button",{type:"button",className:"admin-button secondary",onClick:()=>l("~/Documents"),children:"~/Documents"}),(0,s.jsx)("button",{type:"button",className:"admin-button secondary",onClick:()=>l("~/Desktop"),children:"~/Desktop"}),(0,s.jsx)("button",{type:"button",className:"admin-button secondary",onClick:()=>u(e=>!e),children:d?"Cancel new folder":"+ New folder"})]}),d?(0,s.jsxs)("div",{className:"agents-modal-create-folder",children:[(0,s.jsx)("small",{children:"Create a folder anywhere outside system directories. Parent must exist."}),(0,s.jsx)("div",{className:"agents-modal-create-row",children:(0,s.jsx)("input",{type:"text",placeholder:"Parent (e.g. ~/Documents)",value:m,onChange:e=>h(e.target.value),spellCheck:!1,autoComplete:"off"})}),(0,s.jsxs)("div",{className:"agents-modal-create-row",children:[(0,s.jsx)("input",{type:"text",placeholder:"New folder name",value:p,onChange:e=>j(e.target.value),spellCheck:!1,autoComplete:"off"}),(0,s.jsx)("button",{type:"button",className:"admin-button",onClick:b,disabled:"create"===f,children:"create"===f?"Creating…":"Create"})]})]}):null,c?(0,s.jsx)("p",{className:"agents-modal-feedback ".concat(c.kind),role:"status","aria-live":"polite",children:c.message}):null]})}},64250:(e,a,t)=>{"use strict";t.d(a,{z:()=>s});let s=function(){for(var e=arguments.length,a=Array(e),t=0;t<e;t++)a[t]=arguments[t];return a.filter((e,a,t)=>!!e&&""!==e.trim()&&t.indexOf(e)===a).join(" ").trim()}},79350:(e,a,t)=>{"use strict";t.d(a,{default:()=>m});var s=t(95155),n=t(12115),l=t(47650),r=t(85649),o=t(30926);let c=(0,o.createServerReference)("408009ab2e25b2caddc8395de45563df06bae39d83",o.callServer,void 0,o.findSourceMapURL,"updateProjectAction");var i=t(59097);let d=[{value:"#c2452a",name:"Mars Red"},{value:"#a83a22",name:"Deep Red"},{value:"#7c2b19",name:"Dark Red"},{value:"#111318",name:"Charcoal"},{value:"#3f3a30",name:"Warm Black"},{value:"#68707b",name:"Slate"},{value:"#cdb78a",name:"Warm Sand"},{value:"#1f6c9f",name:"Skill Blue"}];function u(){let{pending:e}=(0,l.useFormStatus)();return(0,s.jsx)("button",{type:"submit",className:"admin-button",disabled:e,"aria-busy":e?"true":void 0,children:e?"Saving…":"Save changes"})}function m(e){let{projectId:a,projectName:t,projectColor:l,projectDescription:o,projectFolderPath:m}=e,[h,p]=n.useState(!1),[j,f]=n.useState("keep"),[x,g]=n.useState(m||""),v=n.useRef(null);return n.useEffect(()=>{h&&(f("keep"),g(m||""))},[h,m]),n.useEffect(()=>{var e;"custom"===j&&(null==(e=v.current)||e.focus())},[j]),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("button",{type:"button",className:"admin-button secondary project-edit",onClick:()=>p(!0),"aria-label":"Edit ".concat(t),children:"Edit"}),(0,s.jsx)(r.A,{open:h,onClose:()=>p(!1),eyebrow:"Edit project",title:"Edit ".concat(t),children:(0,s.jsxs)("form",{className:"agents-modal-form",action:c,children:[(0,s.jsx)("input",{type:"hidden",name:"project_id",value:a}),(0,s.jsx)("section",{className:"agents-modal-section",children:(0,s.jsxs)("label",{className:"agents-modal-field wide",children:[(0,s.jsx)("span",{children:"Name"}),(0,s.jsx)("input",{name:"name",type:"text",defaultValue:t,autoComplete:"off",required:!0})]})}),(0,s.jsxs)("section",{className:"agents-modal-section",children:[(0,s.jsxs)("div",{className:"agents-modal-section-head",children:[(0,s.jsx)("span",{children:"Folder location"}),(0,s.jsx)("small",{children:"Where project files live on disk. Move only if you've already moved the folder yourself."})]}),(0,s.jsxs)("div",{className:"agents-modal-radio-group",children:[(0,s.jsxs)("label",{className:"agents-modal-radio ".concat("keep"===j?"on":""),children:[(0,s.jsx)("input",{type:"radio",name:"folder_mode",value:"keep",checked:"keep"===j,onChange:()=>f("keep")}),(0,s.jsxs)("span",{className:"agents-modal-radio-body",children:[(0,s.jsx)("b",{children:"Keep current"}),(0,s.jsx)("code",{title:m||"",children:function(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:48;if(!e||e.length<=a)return e;let t=e.slice(0,Math.floor(a/2)-1),s=e.slice(e.length-Math.floor(a/2)+2);return"".concat(t,"…").concat(s)}(m)||"(not set)"})]})]}),(0,s.jsxs)("label",{className:"agents-modal-radio ".concat("custom"===j?"on":""),children:[(0,s.jsx)("input",{type:"radio",name:"folder_mode",value:"custom",checked:"custom"===j,onChange:()=>f("custom")}),(0,s.jsxs)("span",{className:"agents-modal-radio-body",children:[(0,s.jsx)("b",{children:"Change to…"}),(0,s.jsx)("small",{children:"Absolute path. Must already exist or be writable."})]})]})]}),"custom"===j?(0,s.jsx)(i.A,{inputRef:v,value:x,onChange:g}):(0,s.jsx)("input",{type:"hidden",name:"folder_path",value:""})]}),(0,s.jsxs)("section",{className:"agents-modal-section",children:[(0,s.jsxs)("div",{className:"agents-modal-section-head",children:[(0,s.jsx)("span",{children:"Color"}),(0,s.jsx)("small",{children:"Tile color across the app."})]}),(0,s.jsxs)("fieldset",{className:"agents-modal-swatches",children:[(0,s.jsx)("legend",{className:"visually-hidden",children:"Project color"}),d.map(e=>(0,s.jsxs)("label",{className:"agents-modal-swatch",style:{"--swatch":e.value},children:[(0,s.jsx)("input",{type:"radio",name:"color",value:e.value,defaultChecked:e.value===(l||"#c2452a")}),(0,s.jsx)("span",{className:"agents-modal-swatch-ring","aria-hidden":"true"}),(0,s.jsx)("span",{className:"visually-hidden",children:e.name})]},e.value))]})]}),(0,s.jsxs)("section",{className:"agents-modal-section",children:[(0,s.jsxs)("div",{className:"agents-modal-section-head",children:[(0,s.jsx)("span",{children:"Description"}),(0,s.jsx)("small",{children:"Used as context for agents working in this project."})]}),(0,s.jsx)("label",{className:"agents-modal-field wide",children:(0,s.jsx)("textarea",{name:"description",rows:3,defaultValue:o||"",placeholder:"What is this project for? Goals, audience, voice, constraints."})})]}),(0,s.jsxs)("footer",{className:"agents-modal-foot",children:[(0,s.jsx)("button",{type:"button",className:"admin-button secondary",onClick:()=>p(!1),children:"Cancel"}),(0,s.jsx)(u,{})]})]})})]})}},85649:(e,a,t)=>{"use strict";t.d(a,{A:()=>r});var s=t(95155),n=t(12115),l=t(34788);function r(e){let{open:a,onClose:t,eyebrow:r,title:o,tone:c="default",size:i="default",children:d}=e,u=n.useRef(null);return n.useEffect(()=>{let e=u.current;e&&(a&&!e.open&&("function"==typeof e.showModal?e.showModal():e.setAttribute("open","")),!a&&e.open&&e.close())},[a]),n.useEffect(()=>{let e=u.current;if(!e)return;let a=e=>{e.preventDefault(),t()};return e.addEventListener("cancel",a),()=>e.removeEventListener("cancel",a)},[t]),(0,s.jsx)("dialog",{ref:u,className:"agents-modal".concat("wide"===i?" agents-modal--wide":""),onClick:e=>{e.target===u.current&&t()},children:a?(0,s.jsxs)("div",{className:"agents-modal-card".concat("danger"===c?" agents-modal-card--danger":""),onClick:e=>e.stopPropagation(),children:[(0,s.jsxs)("header",{className:"agents-modal-head",children:[(0,s.jsxs)("div",{children:[r?(0,s.jsx)("span",{className:"admin-kicker",children:r}):null,(0,s.jsx)("h2",{children:o})]}),(0,s.jsx)("button",{type:"button",className:"agents-modal-close",onClick:t,"aria-label":"Close",children:(0,s.jsx)(l.A,{size:14})})]}),d]}):null})}},99168:(e,a,t)=>{Promise.resolve().then(t.bind(t,10677)),Promise.resolve().then(t.bind(t,16111)),Promise.resolve().then(t.bind(t,79350)),Promise.resolve().then(t.bind(t,8707)),Promise.resolve().then(t.t.bind(t,52619,23))}},e=>{e.O(0,[2619,8441,1255,7358],()=>e(e.s=99168)),_N_E=e.O()}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{"use strict";var e={},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var a=t[o]={exports:{}},i=!0;try{e[o].call(a.exports,a,a.exports,r),i=!1}finally{i&&delete t[o]}return a.exports}r.m=e,(()=>{var e=[];r.O=(t,o,n,a)=>{if(o){a=a||0;for(var i=e.length;i>0&&e[i-1][2]>a;i--)e[i]=e[i-1];e[i]=[o,n,a];return}for(var c=1/0,i=0;i<e.length;i++){for(var[o,n,a]=e[i],d=!0,u=0;u<o.length;u++)(!1&a||c>=a)&&Object.keys(r.O).every(e=>r.O[e](o[u]))?o.splice(u--,1):(d=!1,a<c&&(c=a));if(d){e.splice(i--,1);var s=n();void 0!==s&&(t=s)}}return t}})(),r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},(()=>{var e,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;r.t=function(o,n){if(1&n&&(o=this(o)),8&n||"object"==typeof o&&o&&(4&n&&o.__esModule||16&n&&"function"==typeof o.then))return o;var a=Object.create(null);r.r(a);var i={};e=e||[null,t({}),t([]),t(t)];for(var c=2&n&&o;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach(e=>i[e]=()=>o[e]);return i.default=()=>o,r.d(a,i),a}})(),r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,o)=>(r.f[o](e,t),t),[])),r.u=e=>2769===e?"static/chunks/2769-5b75c7bddf7ca30a.js":4119===e?"static/chunks/4119-3b6adff3c7187ef3.js":930===e?"static/chunks/930-721369985da388ce.js":"static/chunks/"+(5730===e?"44530001":e)+"."+({840:"e6f27edfb8124775",1517:"ebf6fe1a9c310c88",2713:"ffa893e49f7e4183",3168:"ed91d2d25b4aca3f",4797:"c676c6ac0f39449c",5730:"a9ce8b2fb3979725",5938:"9d4468131146b81c",7130:"08b2adb325a87ad8",8217:"0beb0a316c7ad5d8",9863:"cb7415f4a67d7f45",9867:"f985c0e7589f40cf"})[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={},t="_N_E:";r.l=(o,n,a,i)=>{if(e[o])return void e[o].push(n);if(void 0!==a)for(var c,d,u=document.getElementsByTagName("script"),s=0;s<u.length;s++){var f=u[s];if(f.getAttribute("src")==o||f.getAttribute("data-webpack")==t+a){c=f;break}}c||(d=!0,(c=document.createElement("script")).charset="utf-8",c.timeout=120,r.nc&&c.setAttribute("nonce",r.nc),c.setAttribute("data-webpack",t+a),c.src=r.tu(o)),e[o]=[n];var l=(t,r)=>{c.onerror=c.onload=null,clearTimeout(p);var n=e[o];if(delete e[o],c.parentNode&&c.parentNode.removeChild(c),n&&n.forEach(e=>e(r)),t)return t(r)},p=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),d&&document.head.appendChild(c)}})(),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;r.tt=()=>(void 0===e&&(e={createScriptURL:e=>e},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("nextjs#bundler",e))),e)})(),r.tu=e=>r.tt().createScriptURL(e),r.p="/_next/",(()=>{var e={8068:0,3045:0,1741:0,
|
|
1
|
+
(()=>{"use strict";var e={},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var a=t[o]={exports:{}},i=!0;try{e[o].call(a.exports,a,a.exports,r),i=!1}finally{i&&delete t[o]}return a.exports}r.m=e,(()=>{var e=[];r.O=(t,o,n,a)=>{if(o){a=a||0;for(var i=e.length;i>0&&e[i-1][2]>a;i--)e[i]=e[i-1];e[i]=[o,n,a];return}for(var c=1/0,i=0;i<e.length;i++){for(var[o,n,a]=e[i],d=!0,u=0;u<o.length;u++)(!1&a||c>=a)&&Object.keys(r.O).every(e=>r.O[e](o[u]))?o.splice(u--,1):(d=!1,a<c&&(c=a));if(d){e.splice(i--,1);var s=n();void 0!==s&&(t=s)}}return t}})(),r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},(()=>{var e,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;r.t=function(o,n){if(1&n&&(o=this(o)),8&n||"object"==typeof o&&o&&(4&n&&o.__esModule||16&n&&"function"==typeof o.then))return o;var a=Object.create(null);r.r(a);var i={};e=e||[null,t({}),t([]),t(t)];for(var c=2&n&&o;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach(e=>i[e]=()=>o[e]);return i.default=()=>o,r.d(a,i),a}})(),r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,o)=>(r.f[o](e,t),t),[])),r.u=e=>2769===e?"static/chunks/2769-5b75c7bddf7ca30a.js":4119===e?"static/chunks/4119-3b6adff3c7187ef3.js":930===e?"static/chunks/930-721369985da388ce.js":"static/chunks/"+(5730===e?"44530001":e)+"."+({840:"e6f27edfb8124775",1517:"ebf6fe1a9c310c88",2713:"ffa893e49f7e4183",3168:"ed91d2d25b4aca3f",4797:"c676c6ac0f39449c",5730:"a9ce8b2fb3979725",5938:"9d4468131146b81c",7130:"08b2adb325a87ad8",8217:"0beb0a316c7ad5d8",9863:"cb7415f4a67d7f45",9867:"f985c0e7589f40cf"})[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={},t="_N_E:";r.l=(o,n,a,i)=>{if(e[o])return void e[o].push(n);if(void 0!==a)for(var c,d,u=document.getElementsByTagName("script"),s=0;s<u.length;s++){var f=u[s];if(f.getAttribute("src")==o||f.getAttribute("data-webpack")==t+a){c=f;break}}c||(d=!0,(c=document.createElement("script")).charset="utf-8",c.timeout=120,r.nc&&c.setAttribute("nonce",r.nc),c.setAttribute("data-webpack",t+a),c.src=r.tu(o)),e[o]=[n];var l=(t,r)=>{c.onerror=c.onload=null,clearTimeout(p);var n=e[o];if(delete e[o],c.parentNode&&c.parentNode.removeChild(c),n&&n.forEach(e=>e(r)),t)return t(r)},p=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),d&&document.head.appendChild(c)}})(),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;r.tt=()=>(void 0===e&&(e={createScriptURL:e=>e},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("nextjs#bundler",e))),e)})(),r.tu=e=>r.tt().createScriptURL(e),r.p="/_next/",(()=>{var e={8068:0,3045:0,1741:0,1776:0,8422:0};r.f.j=(t,o)=>{var n=r.o(e,t)?e[t]:void 0;if(0!==n)if(n)o.push(n[2]);else if(/^(17(41|76)|3045|8068|8422)$/.test(t))e[t]=0;else{var a=new Promise((r,o)=>n=e[t]=[r,o]);o.push(n[2]=a);var i=r.p+r.u(t),c=Error();r.l(i,o=>{if(r.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var a=o&&("load"===o.type?"missing":o.type),i=o&&o.target&&o.target.src;c.message="Loading chunk "+t+" failed.\n("+a+": "+i+")",c.name="ChunkLoadError",c.type=a,c.request=i,n[1](c)}},"chunk-"+t,t)}},r.O.j=t=>0===e[t];var t=(t,o)=>{var n,a,[i,c,d]=o,u=0;if(i.some(t=>0!==e[t])){for(n in c)r.o(c,n)&&(r.m[n]=c[n]);if(d)var s=d(r)}for(t&&t(o);u<i.length;u++)a=i[u],r.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return r.O(s)},o=self.webpackChunk_N_E=self.webpackChunk_N_E||[];o.forEach(t.bind(null,0)),o.push=t.bind(null,o.push.bind(o))})(),r.nc=void 0})();
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to Madarx OS. Newest first.
|
|
4
4
|
|
|
5
|
+
## [2.13.0] - 2026-06-04
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- **Branded CLI experience.** `npm i -g madarx` now ends on an on-brand install splash (madarX wordmark, animated checks, "Designed in UAE" dateline), and launching `madarx` shows a Hermes-style hero banner: a 3D wordmark, a titled rule, the orbit mark (madar = "orbit"), and a two-column capability catalog. Sovereign-Mono palette, single Mars accent, zero new dependencies (embedded figlet art, pure-ANSI rendering). Honors `NO_COLOR`, non-TTY, and CI; guarded so it never slows or breaks an install. Preview with `npm run splash` / `npm run banner`.
|
|
10
|
+
- **Business-default skill pack.** A fresh agent now ships with nine ready-to-use business skills grouped by what most teams need first — research (market-research, competitor-watch), comms (inbox-triage, meeting-scheduler), documents (document-extraction, report-builder), data (database-q&a, spreadsheet-analysis), and web (web-automation). Each is backed by the default tools and stays within the usual approval gates. They seed as installed in the marketplace and are injected into every default agent's `skills.md`.
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- **Banner features business tools, not internals.** The boot banner highlights the toolsets a business agent actually reaches for (web, email, calendar, files, browser, data, automations, build-tools) with friendly labels; domain/installable packs (mines, travel, …) fold into "more toolsets". The default skills showcase replaces the engineering/design skills (design-shotgun, design-review, qa-only, cso-audit), which remain in the marketplace.
|
|
15
|
+
|
|
16
|
+
### Migration
|
|
17
|
+
|
|
18
|
+
- Existing installs' default agents (including the Caretaker) have their `skills.md` refreshed with the business-default skill pack on next launch. Idempotent and customization-safe: a user-edited `skills.md` is never overwritten.
|
|
19
|
+
|
|
5
20
|
## [2.12.1] - 2026-06-04
|
|
6
21
|
|
|
7
22
|
### Fixed
|
package/lib/cli/banner.js
CHANGED
|
@@ -12,16 +12,22 @@
|
|
|
12
12
|
|
|
13
13
|
// ── palette ────────────────────────────────────────────────────────────────
|
|
14
14
|
const PALETTE = {
|
|
15
|
-
mars: [0xc2, 0x45, 0x2a], // brand primary
|
|
15
|
+
mars: [0xc2, 0x45, 0x2a], // brand primary / THE accent
|
|
16
16
|
marsHi: [0xde, 0x6a, 0x53], // lighter mars (top of gradient)
|
|
17
17
|
marsLo: [0x7c, 0x2b, 0x19], // dark mars (bottom of gradient)
|
|
18
18
|
gold: [0xd4, 0xb7, 0x7f],
|
|
19
19
|
sand: [0xf6, 0xf3, 0xed],
|
|
20
20
|
ink: [0x68, 0x70, 0x7b], // "muted" — used for secondary text
|
|
21
21
|
green: [0x4c, 0xae, 0x6a],
|
|
22
|
+
// ── Sovereign-Mono palette (brand-guidelines v1.3) — used by the splash ──
|
|
23
|
+
onyx: [0x0F, 0x0F, 0x11], // ground / black letter fill
|
|
24
|
+
platinum: [0xE8, 0xE8, 0xE5], // mark / wordmark / "done" ✓
|
|
25
|
+
bone: [0xDC, 0xDC, 0xD8], // body labels
|
|
26
|
+
graphite: [0x4A, 0x4A, 0x4D], // rules, borders, pending ·
|
|
27
|
+
muted: [0x8A, 0x82, 0x78], // datelines, subtitle, secondary
|
|
22
28
|
};
|
|
23
29
|
|
|
24
|
-
function colorEnabled() {
|
|
30
|
+
export function colorEnabled() {
|
|
25
31
|
if (process.env.FORCE_COLOR && process.env.FORCE_COLOR !== '0') return true;
|
|
26
32
|
if (process.env.NO_COLOR) return false;
|
|
27
33
|
return Boolean(process.stdout && process.stdout.isTTY);
|
|
@@ -29,32 +35,49 @@ function colorEnabled() {
|
|
|
29
35
|
|
|
30
36
|
const ON = colorEnabled();
|
|
31
37
|
|
|
32
|
-
function fg([r, g, b], s) {
|
|
38
|
+
export function fg([r, g, b], s) {
|
|
33
39
|
if (!ON) return s;
|
|
34
40
|
return `\x1b[38;2;${r};${g};${b}m${s}\x1b[0m`;
|
|
35
41
|
}
|
|
36
|
-
function bold(s) { return ON ? `\x1b[1m${s}\x1b[0m` : s; }
|
|
37
|
-
function dim(s) { return ON ? `\x1b[2m${s}\x1b[0m` : s; }
|
|
42
|
+
export function bold(s) { return ON ? `\x1b[1m${s}\x1b[0m` : s; }
|
|
43
|
+
export function dim(s) { return ON ? `\x1b[2m${s}\x1b[0m` : s; }
|
|
38
44
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
D: ['████ ', '█ █', '█ █', '█ █', '████ '],
|
|
45
|
-
R: ['████ ', '█ █', '████ ', '█ █ ', '█ █'],
|
|
46
|
-
X: ['█ █', ' █ █ ', ' █ ', ' █ █ ', '█ █'],
|
|
47
|
-
};
|
|
45
|
+
/** Visible (printable) length of a string, ignoring ANSI escape sequences. */
|
|
46
|
+
export function visibleLength(s) {
|
|
47
|
+
// eslint-disable-next-line no-control-regex
|
|
48
|
+
return String(s).replace(/\x1b\[[0-9;]*m/g, '').length;
|
|
49
|
+
}
|
|
48
50
|
|
|
49
|
-
|
|
51
|
+
// ── wordmark ─────────────────────────────────────────────────────────────────
|
|
52
|
+
// Embedded figlet "Standard" font art for "madar" + "X", captured offline so the
|
|
53
|
+
// banner stays dependency-free (no figlet at runtime). "madar" renders in Sand,
|
|
54
|
+
// the "X" in Mars — the single brand accent (the X is a permanent constant, so
|
|
55
|
+
// it never counts against the one-Mars-per-surface rule).
|
|
56
|
+
const FIG_MADAR = [
|
|
57
|
+
' _ ',
|
|
58
|
+
' _ __ ___ __ _ __| | __ _ _ __ ',
|
|
59
|
+
" | '_ ` _ \\ / _` |/ _` |/ _` | '__|",
|
|
60
|
+
' | | | | | | (_| | (_| | (_| | | ',
|
|
61
|
+
' |_| |_| |_|\\__,_|\\__,_|\\__,_|_| ',
|
|
62
|
+
' ',
|
|
63
|
+
];
|
|
64
|
+
const FIG_X = [
|
|
65
|
+
' __ __',
|
|
66
|
+
' \\ \\/ /',
|
|
67
|
+
' \\ / ',
|
|
68
|
+
' / \\ ',
|
|
69
|
+
' /_/\\_\\',
|
|
70
|
+
' ',
|
|
71
|
+
];
|
|
50
72
|
|
|
51
|
-
/** The
|
|
52
|
-
function wordmark() {
|
|
53
|
-
const
|
|
73
|
+
/** The "madarX" wordmark as a colored, multi-line string. */
|
|
74
|
+
export function wordmark() {
|
|
75
|
+
const rows = Math.max(FIG_MADAR.length, FIG_X.length);
|
|
54
76
|
const lines = [];
|
|
55
|
-
for (let
|
|
56
|
-
const
|
|
57
|
-
|
|
77
|
+
for (let i = 0; i < rows; i++) {
|
|
78
|
+
const l = FIG_MADAR[i] ?? '';
|
|
79
|
+
const r = FIG_X[i] ?? '';
|
|
80
|
+
lines.push(fg(PALETTE.platinum, l) + fg(PALETTE.mars, r));
|
|
58
81
|
}
|
|
59
82
|
return lines.join('\n');
|
|
60
83
|
}
|
|
@@ -145,4 +168,160 @@ export function renderHeader(title = 'setup', version) {
|
|
|
145
168
|
return out.join('\n');
|
|
146
169
|
}
|
|
147
170
|
|
|
171
|
+
// ── hero banner (Hermes-style: 3D wordmark + orbit mark + grouped catalog) ────
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Hero wordmark — identical to the install splash: the lowercase Standard
|
|
175
|
+
* "madar" (FIG_MADAR, Platinum) beside the Standard "X" (FIG_X, Mars).
|
|
176
|
+
* Returns an array of lines so the hero can indent/compose them.
|
|
177
|
+
*/
|
|
178
|
+
function heroWordmark() {
|
|
179
|
+
return wordmark().split('\n');
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// Orbit mark — "madar" (مدار) is Arabic for orbit. Graphite ring, Mars core + bead.
|
|
183
|
+
const ORBIT = [
|
|
184
|
+
' ╭───────╮ ● ',
|
|
185
|
+
' ╭─╯ ╰─╮ ',
|
|
186
|
+
'│ ╲ ╱ │',
|
|
187
|
+
'│ ╳ │',
|
|
188
|
+
'│ ╱ ╲ │',
|
|
189
|
+
' ╰─╮ ╭─╯ ',
|
|
190
|
+
' ╰───────╯ ',
|
|
191
|
+
];
|
|
192
|
+
function orbitMark() {
|
|
193
|
+
return ORBIT.map((line) => {
|
|
194
|
+
let out = '';
|
|
195
|
+
for (const ch of line) {
|
|
196
|
+
if (ch === ' ') out += ' ';
|
|
197
|
+
else if (ch === '╳' || ch === '╲' || ch === '╱' || ch === '●') out += fg(PALETTE.mars, ch);
|
|
198
|
+
else out += fg(PALETTE.graphite, ch);
|
|
199
|
+
}
|
|
200
|
+
return out;
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/** Truncate raw (uncolored) text to a visible width with an ellipsis. */
|
|
205
|
+
function clip(s, width) {
|
|
206
|
+
if (s.length <= width) return s;
|
|
207
|
+
return s.slice(0, Math.max(0, width - 1)) + '…';
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* Hermes-style hero banner: a big 3D MADARX wordmark, a titled rule, then a
|
|
212
|
+
* two-column body — orbit mark + runtime meta on the left, a grouped capability
|
|
213
|
+
* catalog (tools by category, then skills) on the right.
|
|
214
|
+
*
|
|
215
|
+
* Dependency-free and DB-free: all inputs are passed in by the caller (the CLI
|
|
216
|
+
* supervisor), so importing this never opens the database.
|
|
217
|
+
*
|
|
218
|
+
* @param {object} info
|
|
219
|
+
* @param {string} info.version
|
|
220
|
+
* @param {string} [info.home] data home path
|
|
221
|
+
* @param {string} [info.url] dashboard URL
|
|
222
|
+
* @param {string} [info.engine] default sub-agent engine
|
|
223
|
+
* @param {string} [info.commit] short git hash (optional)
|
|
224
|
+
* @param {string} [info.session] session id (optional)
|
|
225
|
+
* @param {Array<{category:string,count:number,names:string[]}>} [info.toolCats]
|
|
226
|
+
* @param {number} [info.toolCount]
|
|
227
|
+
* @param {Array<{category:string,count:number,names:string[]}>} [info.skillGroups]
|
|
228
|
+
* @param {number} [info.skillCount]
|
|
229
|
+
* @param {boolean}[info.behind]
|
|
230
|
+
* @param {string} [info.latest]
|
|
231
|
+
* @returns {string}
|
|
232
|
+
*/
|
|
233
|
+
export function renderHeroBanner(info = {}) {
|
|
234
|
+
const {
|
|
235
|
+
version = '0.0.0', home, url,
|
|
236
|
+
commit, session, toolCats = [], toolCount, skillGroups = [], skillCount,
|
|
237
|
+
behind = false, latest,
|
|
238
|
+
} = info;
|
|
239
|
+
|
|
240
|
+
const cols = (process.stdout && process.stdout.columns) || 84;
|
|
241
|
+
const out = [''];
|
|
242
|
+
|
|
243
|
+
// 1) 3D wordmark.
|
|
244
|
+
for (const l of heroWordmark()) out.push(' ' + l);
|
|
245
|
+
out.push('');
|
|
246
|
+
|
|
247
|
+
// 2) Titled rule: ── madarX OS v… · date · commit ─────────
|
|
248
|
+
const stamp = new Date().toISOString().slice(0, 10).replace(/-/g, '.');
|
|
249
|
+
const title = `${bold(fg(PALETTE.platinum, 'madar'))}${bold(fg(PALETTE.mars, 'X'))}${bold(fg(PALETTE.platinum, ' OS'))}`
|
|
250
|
+
+ ` ${fg(PALETTE.mars, 'v' + version)}`
|
|
251
|
+
+ fg(PALETTE.muted, ` · ${stamp}${commit ? ' · ' + commit : ''}`);
|
|
252
|
+
const titleVis = visibleLength(title);
|
|
253
|
+
const railLen = Math.max(3, cols - 4 - titleVis - 3);
|
|
254
|
+
out.push(' ' + fg(PALETTE.graphite, '── ') + title + ' ' + fg(PALETTE.graphite, '─'.repeat(railLen)));
|
|
255
|
+
out.push('');
|
|
256
|
+
|
|
257
|
+
// 3) Two columns. Left: orbit mark + meta. Right: catalog.
|
|
258
|
+
const left = orbitMark();
|
|
259
|
+
const leftMeta = [
|
|
260
|
+
'',
|
|
261
|
+
home ? ' ' + fg(PALETTE.muted, home.replace(process.env.HOME || '~', '~')) : '',
|
|
262
|
+
url ? ' ' + fg(PALETTE.muted, url) : '',
|
|
263
|
+
session ? ' ' + fg(PALETTE.muted, 'session ' + session) : '',
|
|
264
|
+
].filter(Boolean);
|
|
265
|
+
const leftAll = [...left, ...leftMeta];
|
|
266
|
+
// Left column width = its widest line (orbit block or the longer meta lines
|
|
267
|
+
// like the dashboard URL / session id), so the right column never collides
|
|
268
|
+
// with the address/session under the logo.
|
|
269
|
+
const LW = Math.max(...leftAll.map(visibleLength));
|
|
270
|
+
const GAP = 6; // breathing room between the two columns
|
|
271
|
+
|
|
272
|
+
const right = [];
|
|
273
|
+
const rw = Math.max(28, cols - LW - GAP - 2);
|
|
274
|
+
// One "label: a, b, c…" row, clipped to the right column.
|
|
275
|
+
const groupLine = (label, names) => {
|
|
276
|
+
const body = clip(names.join(', '), rw - label.length - 2);
|
|
277
|
+
return `${fg(PALETTE.bone, label + ':')} ${fg(PALETTE.muted, body)}`;
|
|
278
|
+
};
|
|
279
|
+
|
|
280
|
+
right.push(fg(PALETTE.mars, bold('Available Tools')) + fg(PALETTE.muted, toolCount ? ` ${toolCount}` : ''));
|
|
281
|
+
// Feature the toolsets a business agent actually reaches for, in priority
|
|
282
|
+
// order — not raw count. Domain/installable packs (mines, travel,
|
|
283
|
+
// cli_generator, vercel, …) stay in the registry but fold into "more toolsets".
|
|
284
|
+
const FEATURED_TOOL_CATEGORIES = [
|
|
285
|
+
'web', 'email', 'calendar', 'local_machine', 'browser',
|
|
286
|
+
'supabase', 'workflow', 'authoring', 'github', 'voice',
|
|
287
|
+
];
|
|
288
|
+
// Friendly display labels for the slugs that read like internals.
|
|
289
|
+
const TOOL_LABELS = {
|
|
290
|
+
local_machine: 'files', web: 'web', email: 'email', calendar: 'calendar',
|
|
291
|
+
browser: 'browser', supabase: 'data', workflow: 'automations',
|
|
292
|
+
authoring: 'build-tools', github: 'github', voice: 'voice',
|
|
293
|
+
};
|
|
294
|
+
const byName = new Map(toolCats.map((c) => [c.category, c]));
|
|
295
|
+
const featured = FEATURED_TOOL_CATEGORIES.map((n) => byName.get(n)).filter(Boolean);
|
|
296
|
+
const shownCats = featured.slice(0, 8);
|
|
297
|
+
for (const c of shownCats) right.push(groupLine(TOOL_LABELS[c.category] || c.category, c.names));
|
|
298
|
+
const moreCats = toolCats.length - shownCats.length;
|
|
299
|
+
if (moreCats > 0) right.push(fg(PALETTE.muted, `(and ${moreCats} more toolsets…)`));
|
|
300
|
+
|
|
301
|
+
right.push('');
|
|
302
|
+
right.push(fg(PALETTE.mars, bold('Available Skills')) + fg(PALETTE.muted, skillCount ? ` ${skillCount}` : ''));
|
|
303
|
+
// Business-default skills, grouped by category (research, comms, …).
|
|
304
|
+
for (const g of skillGroups) right.push(groupLine(g.category, g.names));
|
|
305
|
+
|
|
306
|
+
// Zip columns.
|
|
307
|
+
const rows = Math.max(leftAll.length, right.length);
|
|
308
|
+
for (let i = 0; i < rows; i++) {
|
|
309
|
+
const l = leftAll[i] ?? '';
|
|
310
|
+
const r = right[i] ?? '';
|
|
311
|
+
const pad = ' '.repeat(Math.max(0, LW - visibleLength(l)));
|
|
312
|
+
out.push(' ' + (l || '') + pad + ' '.repeat(GAP) + r);
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
// 4) Update status footer + dateline.
|
|
316
|
+
out.push('');
|
|
317
|
+
if (behind && latest) {
|
|
318
|
+
out.push(' ' + fg(PALETTE.mars, '▲') + ' ' + fg(PALETTE.bone, `v${latest} available`) + fg(PALETTE.muted, ' — run ') + fg(PALETTE.mars, 'madarx update'));
|
|
319
|
+
} else {
|
|
320
|
+
out.push(' ' + fg(PALETTE.muted, '● up to date'));
|
|
321
|
+
}
|
|
322
|
+
out.push(' ' + fg(PALETTE.muted, `${stamp} · Designed in UAE · v${version}`));
|
|
323
|
+
out.push('');
|
|
324
|
+
return out.join('\n');
|
|
325
|
+
}
|
|
326
|
+
|
|
148
327
|
export const _palette = PALETTE;
|
package/lib/cli/run.js
CHANGED
|
@@ -17,7 +17,8 @@ import fs from 'node:fs';
|
|
|
17
17
|
import { spawn } from 'node:child_process';
|
|
18
18
|
import { applyHomeEnv } from './home.js';
|
|
19
19
|
import { PKG_ROOT } from './dispatch.js';
|
|
20
|
-
import { renderBanner } from './banner.js';
|
|
20
|
+
import { renderBanner, renderHeroBanner } from './banner.js';
|
|
21
|
+
import { readyPanel } from './splash.js';
|
|
21
22
|
import { readUpdateCheck } from '../update-check.js';
|
|
22
23
|
import { loadProjectEnv } from '../load-env.js';
|
|
23
24
|
|
|
@@ -157,25 +158,39 @@ export async function run({ flags = {} } = {}) {
|
|
|
157
158
|
// Catalog counts: best-effort dynamic import so a count never blocks or
|
|
158
159
|
// breaks boot. These modules build static catalogs at eval time and do NOT
|
|
159
160
|
// open the database, so the supervisor stays DB-free.
|
|
160
|
-
let
|
|
161
|
+
let toolCats = [];
|
|
162
|
+
let toolCount;
|
|
163
|
+
let skillGroups = [];
|
|
164
|
+
let skillCount;
|
|
161
165
|
try {
|
|
162
|
-
const [{ MARKETPLACE_TOOL_COUNT }, seeds] = await Promise.all([
|
|
166
|
+
const [{ MARKETPLACE_TOOL_COUNT, listToolCategories }, seeds] = await Promise.all([
|
|
163
167
|
import('../tools/registry.js'),
|
|
164
168
|
import('../marketplace-seeds.js'),
|
|
165
169
|
]);
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
170
|
+
toolCount = MARKETPLACE_TOOL_COUNT;
|
|
171
|
+
toolCats = listToolCategories();
|
|
172
|
+
// Showcase the business-default skill pack (research, comms, documents,
|
|
173
|
+
// data, web) grouped by category — what most teams need out of the box.
|
|
174
|
+
skillGroups = seeds.listDefaultSkillGroups ? seeds.listDefaultSkillGroups() : [];
|
|
175
|
+
skillCount = (seeds.DEFAULT_SKILL_SLUGS || []).length;
|
|
176
|
+
} catch { /* catalog is optional — banner still renders without it */ }
|
|
169
177
|
const version = pkgVersion() || '0.0.0';
|
|
170
|
-
|
|
178
|
+
const hero = process.env.MADARX_BANNER_LEGACY !== '1';
|
|
179
|
+
const render = hero ? renderHeroBanner : renderBanner;
|
|
180
|
+
console.log(render({
|
|
171
181
|
version,
|
|
172
182
|
home: layout.home,
|
|
173
183
|
url: BASE_URL,
|
|
174
|
-
engine: process.env.MADARX_DEFAULT_ENGINE || 'claude-code
|
|
184
|
+
engine: process.env.MADARX_DEFAULT_ENGINE || 'claude-code',
|
|
185
|
+
commit: process.env.MADARX_COMMIT || undefined,
|
|
175
186
|
latest: ledger?.latest || null,
|
|
176
187
|
behind: Boolean(ledger?.latest && ledger.latest !== version && ledger?.behind),
|
|
177
|
-
|
|
178
|
-
|
|
188
|
+
toolCats,
|
|
189
|
+
toolCount,
|
|
190
|
+
skillGroups,
|
|
191
|
+
skillCount,
|
|
192
|
+
// legacy renderBanner still understands these:
|
|
193
|
+
tools: toolCount,
|
|
179
194
|
}));
|
|
180
195
|
} else {
|
|
181
196
|
log(`data home: ${layout.home}`);
|
|
@@ -213,7 +228,14 @@ export async function run({ flags = {} } = {}) {
|
|
|
213
228
|
// Health gate + browser open run alongside; never block shutdown on them.
|
|
214
229
|
waitForHealth().then((ok) => {
|
|
215
230
|
if (stopping) return;
|
|
216
|
-
if (ok) {
|
|
231
|
+
if (ok) {
|
|
232
|
+
if (!flags.quiet && process.env.MADARX_NO_BANNER !== '1') {
|
|
233
|
+
console.log('\n' + readyPanel({ version: pkgVersion() || undefined, url: BASE_URL }) + '\n');
|
|
234
|
+
} else {
|
|
235
|
+
log(`ready → ${BASE_URL}`);
|
|
236
|
+
}
|
|
237
|
+
openBrowser(BASE_URL, flags);
|
|
238
|
+
}
|
|
217
239
|
else warn(`web tier did not answer on ${BASE_URL} within the timeout — it may still be starting.`);
|
|
218
240
|
});
|
|
219
241
|
});
|