leedab 0.6.1 → 0.7.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/README.md +23 -13
- package/apps/console/.next/standalone/.next/BUILD_ID +1 -1
- package/apps/console/.next/standalone/.next/app-build-manifest.json +206 -171
- package/apps/console/.next/standalone/.next/app-path-routes-manifest.json +56 -51
- package/apps/console/.next/standalone/.next/build-manifest.json +2 -2
- package/apps/console/.next/standalone/.next/prerender-manifest.json +3 -3
- package/apps/console/.next/standalone/.next/server/app/_not-found/page.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/apps/console/.next/standalone/.next/server/app/_not-found.rsc +3 -3
- package/apps/console/.next/standalone/.next/server/app/api/agent/route.js +2 -2
- package/apps/console/.next/standalone/.next/server/app/api/agent/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/approvals/route.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/approvals/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/approvals/stream/route.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/approvals/stream/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/automation/workflow-blueprint/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/backend/endpoint-spec/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/bootstrap-admin-token/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/brand/brand-audit/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/campaigns/campaign-brief/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/champion/confidence/route.js +1 -3
- package/apps/console/.next/standalone/.next/server/app/api/champion/confidence/route.js.nft.json +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/champion/confidence/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/champion/customer/route.js +1 -3
- package/apps/console/.next/standalone/.next/server/app/api/champion/customer/route.js.nft.json +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/champion/customer/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/champion/dispatches/route.js +1 -3
- package/apps/console/.next/standalone/.next/server/app/api/champion/dispatches/route.js.nft.json +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/champion/dispatches/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/champion/engagement/route.js +1 -3
- package/apps/console/.next/standalone/.next/server/app/api/champion/engagement/route.js.nft.json +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/champion/engagement/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/champion/escalate/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/champion/profile/route.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/champion/profile/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/champion/screenshare/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/champion/track-question/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/champion/use-case-wiki/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/chat/route.js +2 -2
- package/apps/console/.next/standalone/.next/server/app/api/chat/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/compliance/risk-register-seed/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/computer-use/[id]/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/computer-use/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/concierge/morning-brief/route.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/concierge/morning-brief/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/contacts/route.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/contacts/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/content/seo-brief/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/conversations/route.js +2 -2
- package/apps/console/.next/standalone/.next/server/app/api/conversations/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/coo/route.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/coo/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/cx/escalation-triage/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/cx/health-score/route.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/cx/health-score/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/data/cohort-brief/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/delivery/qbr-brief/route.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/delivery/qbr-brief/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/delivery/weekly-brief/route.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/delivery/weekly-brief/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/dev/invalidate-cache/route.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/dev/invalidate-cache/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/devops/runbook/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/email/sequence-brief/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/engineering/adr-draft/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/finance/runway-snapshot/route.js +4 -2
- package/apps/console/.next/standalone/.next/server/app/api/finance/runway-snapshot/route.js.nft.json +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/finance/runway-snapshot/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/frontend/component-spec/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/implementation/brief/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/implementation/scaffold-migration-script/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/implementation/scaffold-n8n-workflow/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/implementation/scaffold-skill-override/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/inbox/route.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/inbox/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/inbox/stream/route.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/inbox/stream/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/investor/kpi-tracker/route.js +4 -2
- package/apps/console/.next/standalone/.next/server/app/api/investor/kpi-tracker/route.js.nft.json +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/investor/kpi-tracker/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/leedab/channels/status/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/leedab/channels/telegram/connect/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/leedab/channels/whatsapp/connect/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/leedab/gtm/leads/[id]/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/leedab/gtm/leads/[id]/status/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/leedab/gtm/templates/[name]/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/leedab/license/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/leedab/models/route.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/leedab/models/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/leedab/models/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/leedab/providers/route.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/leedab/providers/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/leedab/sessions/[id]/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/leedab/sessions/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/leedab/team/[id]/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/leedab/team/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/leedab/vault/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/leedab/workflows/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/legal/clause-template/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/manifest/agents/custom/draft/route.js +20 -0
- package/apps/console/.next/standalone/.next/server/app/api/manifest/agents/custom/draft/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/manifest/agents/custom/draft/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/manifest/agents/custom/route.js +3 -0
- package/apps/console/.next/standalone/.next/server/app/api/manifest/agents/custom/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/manifest/agents/custom/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/manifest/agents/route.js +3 -0
- package/apps/console/.next/standalone/.next/server/app/api/manifest/agents/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/manifest/agents/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/marketing/cadence-planner/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/marketing/competitive-snapshot/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/marketplace/catalogue/route.js +3 -0
- package/apps/console/.next/standalone/.next/server/app/api/marketplace/catalogue/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/marketplace/catalogue/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/onboarding/engagement-plan/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/onboarding/kickoff-brief/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/openclaw/status/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/ops/dispatch-brief/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/pack/route.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/pack/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/people/job-brief/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/preferences/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/procurement/po-brief/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/product/prd-draft/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/research/prospect-intel/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/research/search/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/routing/route.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/routing/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/runs/route.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/runs/route.js.nft.json +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/runs/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/sales/pipeline-summary/route.js +4 -2
- package/apps/console/.next/standalone/.next/server/app/api/sales/pipeline-summary/route.js.nft.json +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/sales/pipeline-summary/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/sales/prospect-brief/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/solutions/build/route.js +2 -2
- package/apps/console/.next/standalone/.next/server/app/api/solutions/build/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/solutions/quickstart-regenerate/route.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/solutions/quickstart-regenerate/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/solutions/refine/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/strategy/market-pulse/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/telegram/[customerId]/route.js +4 -4
- package/apps/console/.next/standalone/.next/server/app/api/telegram/[customerId]/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/templates/regenerate/route.js +4 -2
- package/apps/console/.next/standalone/.next/server/app/api/templates/regenerate/route.js.nft.json +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/templates/regenerate/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/templates/route.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/templates/route.js.nft.json +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/uploads/[id]/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/uploads/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/usage/route.js +2 -2
- package/apps/console/.next/standalone/.next/server/app/api/usage/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/video/video-script/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/webhooks/workflow/[id]/route.js +2 -2
- package/apps/console/.next/standalone/.next/server/app/api/webhooks/workflow/[id]/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/workflows/[id]/history/[runId]/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/workflows/[id]/history/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/workflows/[id]/route.js +2 -2
- package/apps/console/.next/standalone/.next/server/app/api/workflows/[id]/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/workflows/[id]/run/route.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/workflows/[id]/run/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/gtm/page.js +2 -2
- package/apps/console/.next/standalone/.next/server/app/gtm/page_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/index.html +1 -1
- package/apps/console/.next/standalone/.next/server/app/index.rsc +4 -4
- package/apps/console/.next/standalone/.next/server/app/page.js +2 -2
- package/apps/console/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/app-paths-manifest.json +56 -51
- package/apps/console/.next/standalone/.next/server/chunks/1558.js +9 -9
- package/apps/console/.next/standalone/.next/server/chunks/{5670.js → 2576.js} +1 -3
- package/apps/console/.next/standalone/.next/server/chunks/381.js +19 -0
- package/apps/console/.next/standalone/.next/server/chunks/4768.js +5 -5
- package/apps/console/.next/standalone/.next/server/chunks/6255.js +1 -1
- package/apps/console/.next/standalone/.next/server/chunks/7087.js +1 -1
- package/apps/console/.next/standalone/.next/server/chunks/897.js +1 -1
- package/apps/console/.next/standalone/.next/server/functions-config-manifest.json +40 -35
- package/apps/console/.next/standalone/.next/server/instrumentation.js +1 -1
- package/apps/console/.next/standalone/.next/server/pages/404.html +1 -1
- package/apps/console/.next/standalone/.next/server/pages/500.html +1 -1
- package/apps/console/.next/standalone/.next/server/pages-manifest.json +1 -1
- package/apps/console/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/apps/console/.next/standalone/.next/static/B4g4e91OJP29sEqgIs76V/_buildManifest.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/7973-072db1a3857a8fe9.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/agent/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/approvals/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/approvals/stream/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/automation/workflow-blueprint/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/backend/endpoint-spec/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/bootstrap-admin-token/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/brand/brand-audit/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/campaigns/campaign-brief/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/confidence/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/customer/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/dispatches/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/engagement/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/escalate/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/profile/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/screenshare/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/track-question/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/use-case-wiki/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/chat/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/compliance/risk-register-seed/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/computer-use/[id]/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/computer-use/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/concierge/morning-brief/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/contacts/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/content/seo-brief/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/conversations/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/coo/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/cx/escalation-triage/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/cx/health-score/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/data/cohort-brief/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/delivery/qbr-brief/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/delivery/weekly-brief/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/dev/invalidate-cache/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/devops/runbook/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/email/sequence-brief/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/engineering/adr-draft/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/finance/runway-snapshot/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/frontend/component-spec/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/health/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/brief/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/scaffold-migration-script/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/scaffold-n8n-workflow/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/scaffold-skill-override/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/inbox/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/inbox/stream/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/investor/kpi-tracker/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/channels/status/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/channels/telegram/connect/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/channels/whatsapp/connect/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/gtm/leads/[id]/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/gtm/leads/[id]/status/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/gtm/templates/[name]/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/license/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/models/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/providers/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/sessions/[id]/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/sessions/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/team/[id]/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/team/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/vault/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/workflows/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/legal/clause-template/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/manifest/agents/custom/draft/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/manifest/agents/custom/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/manifest/agents/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/marketing/cadence-planner/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/marketing/competitive-snapshot/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/marketplace/catalogue/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/onboarding/engagement-plan/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/onboarding/kickoff-brief/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/openclaw/status/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/ops/dispatch-brief/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/pack/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/people/job-brief/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/preferences/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/procurement/po-brief/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/product/prd-draft/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/research/prospect-intel/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/research/search/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/routing/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/runs/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/sales/pipeline-summary/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/sales/prospect-brief/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/solutions/build/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/solutions/quickstart-regenerate/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/solutions/refine/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/strategy/market-pulse/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/telegram/[customerId]/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/templates/regenerate/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/templates/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/uploads/[id]/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/uploads/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/usage/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/video/video-script/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/webhooks/workflow/[id]/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/history/[runId]/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/history/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/run/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/page-bdfdbf7b657f4722.js +1 -0
- package/apps/console/.next/standalone/.next/static/css/{4bdbd0680d42c54d.css → b2a91ecca3bf1487.css} +1 -1
- package/apps/console/.next/standalone/package.json +1 -0
- package/apps/console/.next/static/B4g4e91OJP29sEqgIs76V/_buildManifest.js +1 -0
- package/apps/console/.next/static/chunks/7973-072db1a3857a8fe9.js +1 -0
- package/apps/console/.next/static/chunks/app/api/agent/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/approvals/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/approvals/stream/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/automation/workflow-blueprint/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/backend/endpoint-spec/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/bootstrap-admin-token/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/brand/brand-audit/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/campaigns/campaign-brief/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/champion/confidence/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/champion/customer/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/champion/dispatches/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/champion/engagement/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/champion/escalate/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/champion/profile/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/champion/screenshare/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/champion/track-question/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/champion/use-case-wiki/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/chat/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/compliance/risk-register-seed/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/computer-use/[id]/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/computer-use/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/concierge/morning-brief/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/contacts/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/content/seo-brief/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/conversations/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/coo/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/cx/escalation-triage/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/cx/health-score/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/data/cohort-brief/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/delivery/qbr-brief/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/delivery/weekly-brief/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/dev/invalidate-cache/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/devops/runbook/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/email/sequence-brief/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/engineering/adr-draft/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/finance/runway-snapshot/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/frontend/component-spec/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/health/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/implementation/brief/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/implementation/scaffold-migration-script/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/implementation/scaffold-n8n-workflow/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/implementation/scaffold-skill-override/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/inbox/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/inbox/stream/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/investor/kpi-tracker/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/leedab/channels/status/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/leedab/channels/telegram/connect/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/leedab/channels/whatsapp/connect/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/leedab/gtm/leads/[id]/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/leedab/gtm/leads/[id]/status/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/leedab/gtm/templates/[name]/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/leedab/license/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/leedab/models/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/leedab/providers/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/leedab/sessions/[id]/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/leedab/sessions/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/leedab/team/[id]/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/leedab/team/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/leedab/vault/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/leedab/workflows/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/legal/clause-template/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/manifest/agents/custom/draft/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/manifest/agents/custom/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/manifest/agents/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/marketing/cadence-planner/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/marketing/competitive-snapshot/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/marketplace/catalogue/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/onboarding/engagement-plan/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/onboarding/kickoff-brief/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/openclaw/status/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/ops/dispatch-brief/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/pack/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/people/job-brief/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/preferences/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/procurement/po-brief/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/product/prd-draft/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/research/prospect-intel/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/research/search/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/routing/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/runs/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/sales/pipeline-summary/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/sales/prospect-brief/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/solutions/build/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/solutions/quickstart-regenerate/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/solutions/refine/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/strategy/market-pulse/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/telegram/[customerId]/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/templates/regenerate/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/templates/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/uploads/[id]/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/uploads/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/usage/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/video/video-script/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/webhooks/workflow/[id]/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/workflows/[id]/history/[runId]/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/workflows/[id]/history/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/workflows/[id]/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/workflows/[id]/run/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/api/workflows/route-2d8162b887d31980.js +1 -0
- package/apps/console/.next/static/chunks/app/page-bdfdbf7b657f4722.js +1 -0
- package/apps/console/.next/static/css/{4bdbd0680d42c54d.css → b2a91ecca3bf1487.css} +1 -1
- package/bin/leedab-auto-pr.sh +108 -0
- package/bin/leedab.js +123 -1
- package/clients/default/manifest.json +47 -2
- package/dist/console-launcher.js +6 -2
- package/dist/gateway.js +111 -52
- package/package.json +2 -2
- package/apps/console/.next/standalone/.next/server/chunks/697.js +0 -19
- package/apps/console/.next/standalone/.next/static/cSGyydhlqn2VGaYXt0uuW/_buildManifest.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/8118-681f2688832ccc66.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/agent/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/approvals/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/approvals/stream/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/automation/workflow-blueprint/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/backend/endpoint-spec/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/bootstrap-admin-token/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/brand/brand-audit/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/campaigns/campaign-brief/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/confidence/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/customer/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/dispatches/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/engagement/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/escalate/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/profile/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/screenshare/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/track-question/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/use-case-wiki/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/chat/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/compliance/risk-register-seed/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/computer-use/[id]/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/computer-use/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/concierge/morning-brief/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/contacts/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/content/seo-brief/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/conversations/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/coo/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/cx/escalation-triage/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/cx/health-score/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/data/cohort-brief/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/delivery/qbr-brief/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/delivery/weekly-brief/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/dev/invalidate-cache/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/devops/runbook/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/email/sequence-brief/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/engineering/adr-draft/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/finance/runway-snapshot/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/frontend/component-spec/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/health/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/brief/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/scaffold-migration-script/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/scaffold-n8n-workflow/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/scaffold-skill-override/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/inbox/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/inbox/stream/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/investor/kpi-tracker/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/channels/status/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/channels/telegram/connect/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/channels/whatsapp/connect/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/gtm/leads/[id]/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/gtm/leads/[id]/status/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/gtm/templates/[name]/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/license/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/providers/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/sessions/[id]/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/sessions/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/team/[id]/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/team/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/vault/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/workflows/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/legal/clause-template/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/marketing/cadence-planner/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/marketing/competitive-snapshot/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/onboarding/engagement-plan/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/onboarding/kickoff-brief/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/openclaw/status/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/ops/dispatch-brief/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/pack/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/people/job-brief/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/preferences/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/procurement/po-brief/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/product/prd-draft/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/research/prospect-intel/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/research/search/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/routing/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/runs/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/sales/pipeline-summary/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/sales/prospect-brief/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/solutions/build/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/solutions/quickstart-regenerate/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/solutions/refine/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/strategy/market-pulse/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/telegram/[customerId]/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/templates/regenerate/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/templates/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/uploads/[id]/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/uploads/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/usage/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/video/video-script/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/webhooks/workflow/[id]/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/history/[runId]/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/history/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/run/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/page-01558715b1be9361.js +0 -1
- package/apps/console/.next/static/cSGyydhlqn2VGaYXt0uuW/_buildManifest.js +0 -1
- package/apps/console/.next/static/chunks/8118-681f2688832ccc66.js +0 -1
- package/apps/console/.next/static/chunks/app/api/agent/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/approvals/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/approvals/stream/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/automation/workflow-blueprint/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/backend/endpoint-spec/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/bootstrap-admin-token/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/brand/brand-audit/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/campaigns/campaign-brief/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/champion/confidence/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/champion/customer/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/champion/dispatches/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/champion/engagement/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/champion/escalate/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/champion/profile/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/champion/screenshare/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/champion/track-question/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/champion/use-case-wiki/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/chat/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/compliance/risk-register-seed/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/computer-use/[id]/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/computer-use/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/concierge/morning-brief/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/contacts/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/content/seo-brief/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/conversations/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/coo/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/cx/escalation-triage/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/cx/health-score/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/data/cohort-brief/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/delivery/qbr-brief/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/delivery/weekly-brief/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/dev/invalidate-cache/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/devops/runbook/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/email/sequence-brief/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/engineering/adr-draft/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/finance/runway-snapshot/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/frontend/component-spec/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/health/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/implementation/brief/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/implementation/scaffold-migration-script/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/implementation/scaffold-n8n-workflow/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/implementation/scaffold-skill-override/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/inbox/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/inbox/stream/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/investor/kpi-tracker/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/leedab/channels/status/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/leedab/channels/telegram/connect/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/leedab/channels/whatsapp/connect/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/leedab/gtm/leads/[id]/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/leedab/gtm/leads/[id]/status/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/leedab/gtm/templates/[name]/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/leedab/license/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/leedab/providers/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/leedab/sessions/[id]/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/leedab/sessions/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/leedab/team/[id]/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/leedab/team/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/leedab/vault/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/leedab/workflows/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/legal/clause-template/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/marketing/cadence-planner/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/marketing/competitive-snapshot/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/onboarding/engagement-plan/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/onboarding/kickoff-brief/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/openclaw/status/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/ops/dispatch-brief/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/pack/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/people/job-brief/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/preferences/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/procurement/po-brief/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/product/prd-draft/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/research/prospect-intel/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/research/search/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/routing/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/runs/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/sales/pipeline-summary/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/sales/prospect-brief/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/solutions/build/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/solutions/quickstart-regenerate/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/solutions/refine/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/strategy/market-pulse/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/telegram/[customerId]/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/templates/regenerate/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/templates/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/uploads/[id]/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/uploads/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/usage/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/video/video-script/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/webhooks/workflow/[id]/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/workflows/[id]/history/[runId]/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/workflows/[id]/history/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/workflows/[id]/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/workflows/[id]/run/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/api/workflows/route-4178c1913c80eb12.js +0 -1
- package/apps/console/.next/static/chunks/app/page-01558715b1be9361.js +0 -1
- /package/apps/console/.next/standalone/.next/static/{cSGyydhlqn2VGaYXt0uuW → B4g4e91OJP29sEqgIs76V}/_ssgManifest.js +0 -0
- /package/apps/console/.next/static/{cSGyydhlqn2VGaYXt0uuW → B4g4e91OJP29sEqgIs76V}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
@font-face{font-family:Geist;font-style:normal;font-weight:300;font-display:swap;src:url(/_next/static/media/f639721981034f88-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Geist;font-style:normal;font-weight:300;font-display:swap;src:url(/_next/static/media/9766a7e9e2e0ad5a-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Geist;font-style:normal;font-weight:300;font-display:swap;src:url(/_next/static/media/b66cf8e69499582a-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Geist;font-style:normal;font-weight:300;font-display:swap;src:url(/_next/static/media/aa016aab0e6d1295-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Geist;font-style:normal;font-weight:300;font-display:swap;src:url(/_next/static/media/22a5144ee8d83bca-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Geist;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/f639721981034f88-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Geist;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/9766a7e9e2e0ad5a-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Geist;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/b66cf8e69499582a-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Geist;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/aa016aab0e6d1295-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Geist;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/22a5144ee8d83bca-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Geist;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/f639721981034f88-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Geist;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/9766a7e9e2e0ad5a-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Geist;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/b66cf8e69499582a-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Geist;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/aa016aab0e6d1295-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Geist;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/22a5144ee8d83bca-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Geist;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/f639721981034f88-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Geist;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/9766a7e9e2e0ad5a-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Geist;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/b66cf8e69499582a-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Geist;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/aa016aab0e6d1295-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Geist;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/22a5144ee8d83bca-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Geist;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/f639721981034f88-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Geist;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/9766a7e9e2e0ad5a-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Geist;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/b66cf8e69499582a-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Geist;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/aa016aab0e6d1295-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Geist;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/22a5144ee8d83bca-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Geist Fallback;src:local("Arial");ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.00%;size-adjust:104.76%}.__className_50a2fe{font-family:Geist,Geist Fallback;font-style:normal}.__variable_50a2fe{--font-geist-sans:"Geist","Geist Fallback"}@font-face{font-family:Geist Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/d100b2a099e34044-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Geist Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/2c34d62a75506231-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/0f1bdadaf30e2d5f-s.woff2) format("woff2");unicode-range:u+2000-2001,u+2004-2008,u+200a,u+23b8-23bd,u+2500-259f}@font-face{font-family:Geist Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/a115172161b307bb-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Geist Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/601f5c280d60caca-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Geist Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/f5271587012faf78-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Geist Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/d100b2a099e34044-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Geist Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/2c34d62a75506231-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/0f1bdadaf30e2d5f-s.woff2) format("woff2");unicode-range:u+2000-2001,u+2004-2008,u+200a,u+23b8-23bd,u+2500-259f}@font-face{font-family:Geist Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/a115172161b307bb-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Geist Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/601f5c280d60caca-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Geist Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/f5271587012faf78-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Geist Mono Fallback;src:local("Arial");ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.00%;size-adjust:134.59%}.__className_1ef188{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.__variable_1ef188{--font-geist-mono:"Geist Mono","Geist Mono Fallback"}@font-face{font-family:"Instrument Serif";font-style:italic;font-weight:400;font-display:swap;src:url(/_next/static/media/5ece437c7024c161-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:"Instrument Serif";font-style:italic;font-weight:400;font-display:swap;src:url(/_next/static/media/9cc5b37ab1350db7-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:"Instrument Serif";font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/35f3de0ebb1cfc70-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:"Instrument Serif";font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/e6099e249fd938cc-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:"Instrument Serif Fallback";src:local("Times New Roman");ascent-override:117.94%;descent-override:36.93%;line-gap-override:0.00%;size-adjust:83.94%}.__className_1f5468{font-family:"Instrument Serif","Instrument Serif Fallback";font-weight:400}.__variable_1f5468{--font-instrument-serif:"Instrument Serif","Instrument Serif Fallback"}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*
|
|
2
2
|
! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
|
|
3
|
-
*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:DM Sans,ui-sans-serif,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:Space Mono,ui-monospace,SFMono-Regular,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.top-3{top:.75rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.shrink{flex-shrink:1}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize{resize:both}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.break-all{word-break:break-all}.border{border-width:1px}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.underline{text-decoration-line:underline}.shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0/0.1),0 1px 2px -1px rgb(0 0 0/0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.\!filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}[role=button],a,button{touch-action:manipulation}:root{--paper:#F7F4EE;--paper-2:#EFEAE0;--paper-3:#E5DFD2;--paper-input:#EDE8DC;--ink:#15130E;--ink-2:#3A362E;--ink-3:#6E695E;--ink-4:#8A8576;--ink-5:#A39E91;--ink-6:#B8B0A0;--ink-7:#CFC9B9;--hair:#D8D2C4;--hair-2:#E5DFD2;--line:#15130E;--amber:#B8540B;--amber-warm:#C76910;--amber-deep:#7A3705;--amber-3:#B8540B33;--amber-6:#B8540B66;--ok:#2F6A3E;--warn:#C76910;--err:#A52A1A;--user-bg:#F4E6D4;--user-border:#B8540B22;--me-bg:#F4E6D4;--noise-opacity:0.025;--f-display:var(--font-geist-sans),system-ui,sans-serif;--f-body:var(--font-geist-sans),system-ui,sans-serif;--f-mono:var(--font-geist-mono),ui-monospace,Menlo,monospace;--f-serif:var(--font-instrument-serif),Georgia,serif}[data-theme=dark]{--paper:#14110C;--paper-2:#1C1812;--paper-3:#17130E;--paper-input:#221E16;--ink:#F7F4EE;--ink-2:#D8D2C4;--ink-3:#A39E91;--ink-4:#8A8576;--ink-5:#6E695E;--ink-6:#534E45;--ink-7:#3A362E;--hair:#3A362E;--hair-2:#1F1B14;--line:#F7F4EE;--user-bg:#2A1F12;--user-border:#B8540B44;--me-bg:#2A1F12;--noise-opacity:0.04}body,html{background:var(--paper);color:var(--ink);font-family:var(--f-body);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background .2s,color .2s}body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:999;opacity:var(--noise-opacity);background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E")}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--hair);border-radius:2px}::-webkit-scrollbar-thumb:hover{background:var(--ink-5)}::-moz-selection{background:var(--amber);color:var(--paper)}::selection{background:var(--amber);color:var(--paper)}@keyframes fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.animate-fade-up{animation:fade-up .35s cubic-bezier(.16,1,.3,1) both}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.animate-fade-in{animation:fade-in .4s ease both}@keyframes broadcast-slide{0%{opacity:0;transform:translateY(10px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}.animate-broadcast-slide{animation:broadcast-slide .3s cubic-bezier(.16,1,.3,1) both}@keyframes dot-bounce{0%,80%,to{transform:translateY(0);opacity:.3}40%{transform:translateY(-4px);opacity:1}}.typing-dot:first-child{animation:dot-bounce 1.2s ease-in-out 0s infinite}.typing-dot:nth-child(2){animation:dot-bounce 1.2s ease-in-out .2s infinite}.typing-dot:nth-child(3){animation:dot-bounce 1.2s ease-in-out .4s infinite}@keyframes slide-left{0%{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}.animate-slide-left{animation:slide-left .22s cubic-bezier(.16,1,.3,1) both}@keyframes palette-drop{0%{opacity:0;transform:translateY(-8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.animate-palette-drop{animation:palette-drop .18s cubic-bezier(.16,1,.3,1) both}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{scrollbar-width:none}@keyframes skel-shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skel-shimmer{background:linear-gradient(90deg,var(--paper-2) 0,var(--hair-2) 50%,var(--paper-2) 100%);background-size:200% 100%;animation:skel-shimmer 2.4s ease-in-out infinite}@keyframes sse-flash{0%{background:var(--amber-3)}to{background:transparent}}.sse-flash{animation:sse-flash 1.6s ease-out 1}@keyframes orb-pulse{0%,to{opacity:0;transform:scale(1)}50%{opacity:1;transform:scale(1.14)}}.orb-pulse-ring{animation:orb-pulse 3s ease-in-out infinite}@keyframes orb-float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes orb-shadow{0%,to{opacity:.6;transform:scaleX(1)}50%{opacity:.3;transform:scaleX(.72)}}@keyframes tick{to{transform:translateX(-50%)}}@keyframes orb-breath{0%,to{opacity:.45;transform:scale(.95)}50%{opacity:1;transform:scale(1.08)}}.orb-recent-halo{animation:orb-breath 2.6s ease-in-out infinite}.prose-agent{color:var(--ink-2);font-family:var(--f-body);font-size:13px;line-height:1.65}.prose-agent p{margin:.6em 0}.prose-agent strong{color:var(--ink);font-weight:600}.prose-agent em{color:var(--ink-3);font-style:italic}.prose-agent ol,.prose-agent ul{margin:.6em 0;padding-left:1.4em}.prose-agent li{margin:.25em 0}.prose-agent li::marker{color:var(--amber)}.prose-agent code{background:var(--amber-3);border:1px solid var(--amber-6);padding:1px 5px;border-radius:2px;font-size:.87em;color:var(--amber);font-family:var(--f-mono)}.prose-agent pre{background:var(--paper-2);border:1px solid var(--hair);border-left:2px solid var(--amber);padding:12px 16px;border-radius:3px;overflow-x:auto;margin:1em 0;font-size:12px}.prose-agent pre code{background:transparent;border:none;padding:0;color:var(--ink-2)}.prose-agent blockquote{border-left:2px solid var(--amber);padding-left:1em;margin:.8em 0;color:var(--ink-4);font-style:italic;font-family:var(--f-display)}.prose-agent a{color:var(--amber);text-decoration:underline;text-underline-offset:3px}.prose-agent h1,.prose-agent h2,.prose-agent h3{font-family:var(--f-display);color:var(--ink);margin-top:1.2em;margin-bottom:.4em;font-weight:500;letter-spacing:-.01em}.prose-agent h1{font-size:1.4em}.prose-agent h2{font-size:1.2em}.prose-agent h3{font-size:1.05em;color:var(--amber);font-style:italic}.prose-agent table{border-collapse:collapse;margin:.8em 0;font-size:12px;width:100%}.prose-agent td,.prose-agent th{border:1px solid var(--hair);padding:6px 12px;text-align:left}.prose-agent th{background:var(--amber-3);color:var(--amber);font-weight:600;font-family:var(--f-mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase}.prose-agent hr{border:none;border-top:1px solid var(--hair);margin:1.5em 0}[data-theme=dark]{--hair:#4a4238;--hair-2:#322c25;--paper-input:#2a231b;--amber-3:#c95c0a44;--amber-6:#c95c0a88}[data-theme=dark] ::-webkit-scrollbar-thumb{background:var(--ink-4)}[data-theme=dark] .prose-agent pre{background:#1a140e}@media (max-width:900px){[data-mobile-hide-rail]{display:none!important}[data-mobile-stack]{flex-direction:column!important;width:100%!important}[data-mobile-fullwidth]{width:100%!important;border-right:none!important;border-bottom:1px solid var(--hair)!important;max-height:50vh}nav[data-app-nav]{padding:0 12px!important}[data-mobile-hide],nav[data-app-nav] [data-mobile-condense]{display:none!important}[data-mobile-shrink-header]{font-size:22px!important}[data-mobile-flat-header],[data-mobile-grid-stack]{grid-template-columns:1fr!important}[data-mobile-flat-header]{gap:8px!important;padding:14px 16px!important}[data-mobile-tighten]{padding:12px 14px!important}}.team-rail-drawer{position:fixed;inset:0;z-index:1500;display:flex;background:rgba(0,0,0,.4);pointer-events:auto}.team-rail-drawer-panel{background:var(--paper-3);width:86vw;max-width:380px;height:100%;border-right:1px solid var(--hair);overflow-y:auto;animation:slide-left .22s cubic-bezier(.16,1,.3,1) both}nav[data-app-nav]{padding-top:env(safe-area-inset-top)!important;height:calc(52px + env(safe-area-inset-top))!important}[aria-label^="Demo customer switcher"]{bottom:calc(14px + env(safe-area-inset-bottom))!important}@media (max-width:640px){nextjs-portal{display:none!important}}
|
|
3
|
+
*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.top-3{top:.75rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.\!hidden{display:none!important}.hidden{display:none}.shrink{flex-shrink:1}.grow{flex-grow:1}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize{resize:both}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.break-all{word-break:break-all}.border{border-width:1px}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.underline{text-decoration-line:underline}.shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0/0.1),0 1px 2px -1px rgb(0 0 0/0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.\!filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}[role=button],a,button{touch-action:manipulation}:root{--paper:#F7F4EE;--paper-2:#EFEAE0;--paper-3:#E5DFD2;--paper-input:#EDE8DC;--ink:#15130E;--ink-2:#3A362E;--ink-3:#6E695E;--ink-4:#8A8576;--ink-5:#A39E91;--ink-6:#B8B0A0;--ink-7:#CFC9B9;--hair:#D8D2C4;--hair-2:#E5DFD2;--line:#15130E;--amber:#B8540B;--amber-warm:#C76910;--amber-deep:#7A3705;--amber-3:#B8540B33;--amber-6:#B8540B66;--ok:#2F6A3E;--warn:#C76910;--err:#A52A1A;--user-bg:#F4E6D4;--user-border:#B8540B22;--me-bg:#F4E6D4;--noise-opacity:0.025;--f-display:var(--font-geist-sans),system-ui,sans-serif;--f-body:var(--font-geist-sans),system-ui,sans-serif;--f-mono:var(--font-geist-mono),ui-monospace,Menlo,monospace;--f-serif:var(--font-instrument-serif),Georgia,serif}[data-theme=dark]{--paper:#14110C;--paper-2:#1C1812;--paper-3:#17130E;--paper-input:#221E16;--ink:#F7F4EE;--ink-2:#D8D2C4;--ink-3:#A39E91;--ink-4:#8A8576;--ink-5:#6E695E;--ink-6:#534E45;--ink-7:#3A362E;--hair:#3A362E;--hair-2:#1F1B14;--line:#F7F4EE;--user-bg:#2A1F12;--user-border:#B8540B44;--me-bg:#2A1F12;--noise-opacity:0.04}body,html{background:var(--paper);color:var(--ink);font-family:var(--f-body);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background .2s,color .2s}body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:999;opacity:var(--noise-opacity);background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E")}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--hair);border-radius:2px}::-webkit-scrollbar-thumb:hover{background:var(--ink-5)}::-moz-selection{background:var(--amber);color:var(--paper)}::selection{background:var(--amber);color:var(--paper)}@keyframes fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.animate-fade-up{animation:fade-up .35s cubic-bezier(.16,1,.3,1) both}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.animate-fade-in{animation:fade-in .4s ease both}@keyframes broadcast-slide{0%{opacity:0;transform:translateY(10px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}.animate-broadcast-slide{animation:broadcast-slide .3s cubic-bezier(.16,1,.3,1) both}@keyframes dot-bounce{0%,80%,to{transform:translateY(0);opacity:.3}40%{transform:translateY(-4px);opacity:1}}.typing-dot:first-child{animation:dot-bounce 1.2s ease-in-out 0s infinite}.typing-dot:nth-child(2){animation:dot-bounce 1.2s ease-in-out .2s infinite}.typing-dot:nth-child(3){animation:dot-bounce 1.2s ease-in-out .4s infinite}@keyframes slide-left{0%{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}.animate-slide-left{animation:slide-left .22s cubic-bezier(.16,1,.3,1) both}@keyframes palette-drop{0%{opacity:0;transform:translateY(-8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.animate-palette-drop{animation:palette-drop .18s cubic-bezier(.16,1,.3,1) both}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{scrollbar-width:none}@keyframes skel-shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skel-shimmer{background:linear-gradient(90deg,var(--paper-2) 0,var(--hair-2) 50%,var(--paper-2) 100%);background-size:200% 100%;animation:skel-shimmer 2.4s ease-in-out infinite}@keyframes sse-flash{0%{background:var(--amber-3)}to{background:transparent}}.sse-flash{animation:sse-flash 1.6s ease-out 1}@keyframes orb-pulse{0%,to{opacity:0;transform:scale(1)}50%{opacity:1;transform:scale(1.14)}}.orb-pulse-ring{animation:orb-pulse 3s ease-in-out infinite}@keyframes orb-float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes orb-shadow{0%,to{opacity:.6;transform:scaleX(1)}50%{opacity:.3;transform:scaleX(.72)}}@keyframes tick{to{transform:translateX(-50%)}}@keyframes orb-breath{0%,to{opacity:.45;transform:scale(.95)}50%{opacity:1;transform:scale(1.08)}}.orb-recent-halo{animation:orb-breath 2.6s ease-in-out infinite}.prose-agent{color:var(--ink-2);font-family:var(--f-body);font-size:13px;line-height:1.65}.prose-agent p{margin:.6em 0}.prose-agent strong{color:var(--ink);font-weight:600}.prose-agent em{color:var(--ink-3);font-style:italic}.prose-agent ol,.prose-agent ul{margin:.6em 0;padding-left:1.4em}.prose-agent li{margin:.25em 0}.prose-agent li::marker{color:var(--amber)}.prose-agent code{background:var(--amber-3);border:1px solid var(--amber-6);padding:1px 5px;border-radius:2px;font-size:.87em;color:var(--amber);font-family:var(--f-mono)}.prose-agent pre{background:var(--paper-2);border:1px solid var(--hair);border-left:2px solid var(--amber);padding:12px 16px;border-radius:3px;overflow-x:auto;margin:1em 0;font-size:12px}.prose-agent pre code{background:transparent;border:none;padding:0;color:var(--ink-2)}.prose-agent blockquote{border-left:2px solid var(--amber);padding-left:1em;margin:.8em 0;color:var(--ink-4);font-style:italic;font-family:var(--f-display)}.prose-agent a{color:var(--amber);text-decoration:underline;text-underline-offset:3px}.prose-agent h1,.prose-agent h2,.prose-agent h3{font-family:var(--f-display);color:var(--ink);margin-top:1.2em;margin-bottom:.4em;font-weight:500;letter-spacing:-.01em}.prose-agent h1{font-size:1.4em}.prose-agent h2{font-size:1.2em}.prose-agent h3{font-size:1.05em;color:var(--amber);font-style:italic}.prose-agent table{border-collapse:collapse;margin:.8em 0;font-size:12px;width:100%}.prose-agent td,.prose-agent th{border:1px solid var(--hair);padding:6px 12px;text-align:left}.prose-agent th{background:var(--amber-3);color:var(--amber);font-weight:600;font-family:var(--f-mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase}.prose-agent hr{border:none;border-top:1px solid var(--hair);margin:1.5em 0}[data-theme=dark]{--hair:#4a4238;--hair-2:#322c25;--paper-input:#2a231b;--amber-3:#B8540B44;--amber-6:#B8540B88}[data-theme=dark] ::-webkit-scrollbar-thumb{background:var(--ink-4)}[data-theme=dark] .prose-agent pre{background:#1a140e}@media (max-width:900px){[data-mobile-hide-rail]{display:none!important}[data-mobile-stack]{flex-direction:column!important;width:100%!important}[data-mobile-fullwidth]{width:100%!important;border-right:none!important;border-bottom:1px solid var(--hair)!important;max-height:50vh}nav[data-app-nav]{padding:0 12px!important}[data-mobile-hide],nav[data-app-nav] [data-mobile-condense]{display:none!important}[data-mobile-shrink-header]{font-size:22px!important}[data-mobile-flat-header],[data-mobile-grid-stack]{grid-template-columns:1fr!important}[data-mobile-flat-header]{gap:8px!important;padding:14px 16px!important}[data-mobile-tighten]{padding:12px 14px!important}}.team-rail-drawer{position:fixed;inset:0;z-index:1500;display:flex;background:rgba(0,0,0,.4);pointer-events:auto}.team-rail-drawer-panel{background:var(--paper-3);width:86vw;max-width:380px;height:100%;border-right:1px solid var(--hair);overflow-y:auto;animation:slide-left .22s cubic-bezier(.16,1,.3,1) both}nav[data-app-nav]{padding-top:env(safe-area-inset-top)!important;height:calc(52px + env(safe-area-inset-top))!important}[aria-label^="Demo customer switcher"]{bottom:calc(14px + env(safe-area-inset-bottom))!important}@media (max-width:640px){nextjs-portal{display:none!important}}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Hourly autonomous PR cron. Invokes `claude -p` with a self-contained brief.
|
|
3
|
+
# Uses the currently checked-out branch as context and opens ONE small PR.
|
|
4
|
+
|
|
5
|
+
set -euo pipefail
|
|
6
|
+
|
|
7
|
+
REPO="/Users/muiezmakkawi/Documents/LeedAB-OS"
|
|
8
|
+
LOG_DIR="$REPO/.leedab/auto-pr-logs"
|
|
9
|
+
LOCK="$REPO/.leedab/auto-pr.lock"
|
|
10
|
+
CLAUDE_BIN="/Users/muiezmakkawi/.local/bin/claude"
|
|
11
|
+
|
|
12
|
+
export PATH="/Users/muiezmakkawi/.local/bin:/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin"
|
|
13
|
+
|
|
14
|
+
mkdir -p "$LOG_DIR" "$(dirname "$LOCK")"
|
|
15
|
+
LOG="$LOG_DIR/$(date -u +%Y%m%d-%H%M%S).log"
|
|
16
|
+
|
|
17
|
+
# Single-flight: skip if a previous run is still going.
|
|
18
|
+
if [ -e "$LOCK" ] && kill -0 "$(cat "$LOCK")" 2>/dev/null; then
|
|
19
|
+
echo "auto-pr already running (pid $(cat "$LOCK")), skipping" >> "$LOG"
|
|
20
|
+
exit 0
|
|
21
|
+
fi
|
|
22
|
+
echo $$ > "$LOCK"
|
|
23
|
+
trap 'rm -f "$LOCK"' EXIT
|
|
24
|
+
|
|
25
|
+
cd "$REPO"
|
|
26
|
+
|
|
27
|
+
git fetch origin main --quiet || { echo "git fetch failed" >> "$LOG"; exit 1; }
|
|
28
|
+
|
|
29
|
+
# Use whatever branch is currently checked out. Never switch the human's HEAD.
|
|
30
|
+
TARGET_BRANCH=$(git rev-parse --abbrev-ref HEAD)
|
|
31
|
+
|
|
32
|
+
# Don't stack PRs on top of a previous bot run. If we're parked on auto/*, sit out.
|
|
33
|
+
if [[ "$TARGET_BRANCH" == auto/* ]]; then
|
|
34
|
+
echo "HEAD parked on bot branch $TARGET_BRANCH, skipping" >> "$LOG"
|
|
35
|
+
exit 0
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
# Skip if working tree is dirty. We do not want cron touching WIP.
|
|
39
|
+
# Override with AUTO_PR_FORCE=1 for manual testing.
|
|
40
|
+
if [ -z "${AUTO_PR_FORCE:-}" ] && [ -n "$(git status --porcelain)" ]; then
|
|
41
|
+
echo "working tree dirty on $TARGET_BRANCH, skipping" >> "$LOG"
|
|
42
|
+
exit 0
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
# Only fast-forward when on main. On feature branches the human owns rebase strategy.
|
|
46
|
+
if [ "$TARGET_BRANCH" = "main" ]; then
|
|
47
|
+
git pull --ff-only --quiet 2>/dev/null || true
|
|
48
|
+
fi
|
|
49
|
+
|
|
50
|
+
{
|
|
51
|
+
echo "=== auto-pr run $(date -u +%Y-%m-%dT%H:%M:%SZ) ==="
|
|
52
|
+
echo "target branch: $TARGET_BRANCH"
|
|
53
|
+
} >> "$LOG"
|
|
54
|
+
|
|
55
|
+
# Capture HEAD so we can restore it after Claude's `git checkout -b` moves us.
|
|
56
|
+
START_SHA=$(git rev-parse HEAD)
|
|
57
|
+
restore_head() {
|
|
58
|
+
if [ "$(git rev-parse --abbrev-ref HEAD)" != "$TARGET_BRANCH" ]; then
|
|
59
|
+
git checkout "$TARGET_BRANCH" --quiet 2>>"$LOG" || true
|
|
60
|
+
fi
|
|
61
|
+
# Belt and suspenders: if checkout moved us off START_SHA, hard-set back.
|
|
62
|
+
if [ "$(git rev-parse HEAD)" != "$START_SHA" ]; then
|
|
63
|
+
git reset --hard "$START_SHA" --quiet 2>>"$LOG" || true
|
|
64
|
+
fi
|
|
65
|
+
}
|
|
66
|
+
trap 'restore_head; rm -f "$LOCK"' EXIT
|
|
67
|
+
|
|
68
|
+
PROMPT=$(cat <<EOF
|
|
69
|
+
You are an hourly autonomous PR bot for the LeedAB-OS repo (Brain+ABs OS for logistics back-office; first customer Traheel; pricing \$500/AB). Open ONE small, high-quality PR. Then stop.
|
|
70
|
+
|
|
71
|
+
Current target branch: $TARGET_BRANCH
|
|
72
|
+
|
|
73
|
+
Rules (hard):
|
|
74
|
+
1. NEVER add "Co-Authored-By: Claude" to commits.
|
|
75
|
+
2. NEVER run \`vercel deploy\` or any deploy command.
|
|
76
|
+
3. NO em dashes anywhere (commit messages, PR body, code comments). Use periods, colons, or restructure.
|
|
77
|
+
4. Keep the PR small and mergeable. Aim for under ~200 LOC. One concern per PR.
|
|
78
|
+
5. If nothing sensible to do, exit cleanly without opening a PR. Do not force junk work.
|
|
79
|
+
6. Final step on success: run \`gh pr edit <num> --add-assignee muiez\`. (Reviewer self-assignment is blocked by GitHub since muiez is the PR author under cron auth. Use assignee.)
|
|
80
|
+
|
|
81
|
+
What to do:
|
|
82
|
+
- Confirm orientation: \`git rev-parse --abbrev-ref HEAD\` should return "$TARGET_BRANCH". Also run \`git diff origin/main...HEAD --stat\` to see the in-flight delta.
|
|
83
|
+
- If "$TARGET_BRANCH" != main:
|
|
84
|
+
- Pick ONE concrete improvement aligned with what's already in flight: a bug fix surfaced by the diff, a small polish (types, error handling at a real boundary, missing edge case, UX nit), or a small feature addition that fits the existing change. Do NOT redo the user's in-progress work.
|
|
85
|
+
- Branch off $TARGET_BRANCH. PR base = $TARGET_BRANCH (use \`gh pr create --base $TARGET_BRANCH\`).
|
|
86
|
+
- If "$TARGET_BRANCH" == main:
|
|
87
|
+
- FIRST read brain todos: \`/Users/muiezmakkawi/obsidian/LeedAB/10 Founder Life/todos.md\`. Also skim \`/Users/muiezmakkawi/obsidian/LeedAB/00 Inbox/\` and \`/Users/muiezmakkawi/obsidian/LeedAB/01 Product/\` for next-best items.
|
|
88
|
+
- Then grep the repo for TODO / FIXME / XXX comments. Also scan README.md, LeedAB_GTM_Strategy.md, LeedAB_Investor_Memo.md, and skills/.
|
|
89
|
+
- Pick the most valuable small item across all sources. If a brain todo and a code TODO conflict, prefer the brain todo (it reflects current founder intent).
|
|
90
|
+
- If nothing surfaces, invent ONE small feature aligned with the LeedAB positioning (Brain+ABs OS, logistics back-office wedge, agentic outbound, dogfooded GTM).
|
|
91
|
+
- Branch off main. PR base = main.
|
|
92
|
+
- Create the new branch: \`auto/<short-kebab-slug>-$(date +%s)\`.
|
|
93
|
+
- Implement the change. Run any existing checks (lint, typecheck, tests) you can find via package.json scripts or similar. Fix what you broke.
|
|
94
|
+
- Commit with a clear conventional-style message (feat:, fix:, chore:, ux:). No Claude coauthor. No em dashes.
|
|
95
|
+
- Push with \`git push -u origin <branch>\`.
|
|
96
|
+
- Open the PR with \`gh pr create --base <base>\`. PR body explains: what changed, why, how to verify. No em dashes.
|
|
97
|
+
- Assign for review: \`gh pr edit <num> --add-assignee muiez\`.
|
|
98
|
+
|
|
99
|
+
Begin.
|
|
100
|
+
EOF
|
|
101
|
+
)
|
|
102
|
+
|
|
103
|
+
"$CLAUDE_BIN" -p "$PROMPT" \
|
|
104
|
+
--dangerously-skip-permissions \
|
|
105
|
+
--model claude-opus-4-7 \
|
|
106
|
+
>> "$LOG" 2>&1 || echo "claude exit $?" >> "$LOG"
|
|
107
|
+
|
|
108
|
+
echo "=== done $(date -u +%Y-%m-%dT%H:%M:%SZ) ===" >> "$LOG"
|
package/bin/leedab.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
import { createRequire } from "node:module";
|
|
4
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync, chmodSync, cpSync } from "node:fs";
|
|
4
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync, chmodSync, cpSync, realpathSync, readdirSync, statSync, rmSync } from "node:fs";
|
|
5
|
+
import { spawnSync } from "node:child_process";
|
|
5
6
|
import { randomBytes } from "node:crypto";
|
|
6
7
|
import { resolve, dirname } from "node:path";
|
|
7
8
|
import { fileURLToPath } from "node:url";
|
|
@@ -138,6 +139,124 @@ const NO_PROJECT_REQUIRED = new Set(["onboard", "init", "help"]);
|
|
|
138
139
|
/** Commands that need a project but not a license (onboard handles its own license check). */
|
|
139
140
|
const NO_LICENSE_REQUIRED = new Set(["onboard", "init", "help", "stop"]);
|
|
140
141
|
|
|
142
|
+
/**
|
|
143
|
+
* Auto-recover from the "two-state-dirs" footgun. If the current working
|
|
144
|
+
* directory contains a `.leedab/` that isn't the canonical `~/.leedab/`,
|
|
145
|
+
* openclaw may at some point have resolved its state dir cwd-relative
|
|
146
|
+
* (different bot token, different paired users, different session
|
|
147
|
+
* JSONLs from the canonical dir). The console only reads from
|
|
148
|
+
* `~/.leedab`, so the orphan dir is invisible to the UI even though
|
|
149
|
+
* openclaw keeps writing to it.
|
|
150
|
+
*
|
|
151
|
+
* Rather than make the user run a separate consolidation script, we
|
|
152
|
+
* merge the orphan into the canonical dir in-process before any command
|
|
153
|
+
* touches state. A tarball backup of both directories is dropped into
|
|
154
|
+
* `~/.leedab/backups/` first, so anything we do is reversible.
|
|
155
|
+
*
|
|
156
|
+
* For `.jsonl` files the larger version wins (more appended turns). For
|
|
157
|
+
* other files (openclaw.json, license.json, etc) the canonical version
|
|
158
|
+
* is kept and the orphan version is preserved side-by-side as
|
|
159
|
+
* `<name>.from-orphan.bak` for the user to review. After merging, the
|
|
160
|
+
* orphan directory is deleted. The CLI then continues with the
|
|
161
|
+
* original command.
|
|
162
|
+
*/
|
|
163
|
+
function recoverOrphanState() {
|
|
164
|
+
const cwdState = resolve(process.cwd(), ".leedab");
|
|
165
|
+
if (!existsSync(cwdState)) return;
|
|
166
|
+
// Symlink / same inode case: not an orphan, leave alone.
|
|
167
|
+
try {
|
|
168
|
+
if (resolve(cwdState) === resolve(STATE_DIR)) return;
|
|
169
|
+
if (realpathSync(cwdState) === realpathSync(STATE_DIR)) return;
|
|
170
|
+
} catch {
|
|
171
|
+
// ignore — fall through to recovery
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
console.error(chalk.yellow("\n ⚠ Found a parallel .leedab/ in this directory:"));
|
|
175
|
+
console.error(" " + chalk.dim(cwdState));
|
|
176
|
+
console.error(chalk.yellow(" Merging it into ") + chalk.cyan(STATE_DIR) + chalk.yellow(" and removing the orphan.\n"));
|
|
177
|
+
|
|
178
|
+
// Tarball backup before changing anything.
|
|
179
|
+
const backupDir = resolve(STATE_DIR, "backups");
|
|
180
|
+
try { mkdirSync(backupDir, { recursive: true }); } catch {}
|
|
181
|
+
const ts = new Date().toISOString().replace(/[:.]/g, "-").replace(/Z$/, "Z");
|
|
182
|
+
const backup = resolve(backupDir, `state-recovery-${ts}.tar.gz`);
|
|
183
|
+
try {
|
|
184
|
+
spawnSync("tar", ["-czf", backup, "-C", "/", STATE_DIR.replace(/^\//, ""), cwdState.replace(/^\//, "")], { stdio: "ignore" });
|
|
185
|
+
console.error(chalk.dim(" backup: " + backup));
|
|
186
|
+
} catch {
|
|
187
|
+
console.error(chalk.red(" backup failed — aborting recovery; nothing was changed."));
|
|
188
|
+
process.exit(1);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
// Walk the orphan dir and merge files into canonical.
|
|
192
|
+
let merged = 0;
|
|
193
|
+
let preserved = 0;
|
|
194
|
+
function walk(src, dst) {
|
|
195
|
+
const entries = readdirSync(src, { withFileTypes: true });
|
|
196
|
+
for (const ent of entries) {
|
|
197
|
+
const s = resolve(src, ent.name);
|
|
198
|
+
const d = resolve(dst, ent.name);
|
|
199
|
+
if (ent.isDirectory()) {
|
|
200
|
+
try { mkdirSync(d, { recursive: true }); } catch {}
|
|
201
|
+
walk(s, d);
|
|
202
|
+
continue;
|
|
203
|
+
}
|
|
204
|
+
if (!existsSync(d)) {
|
|
205
|
+
try { mkdirSync(dirname(d), { recursive: true }); } catch {}
|
|
206
|
+
cpSync(s, d, { preserveTimestamps: true });
|
|
207
|
+
merged++;
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
210
|
+
if (s.endsWith(".jsonl")) {
|
|
211
|
+
const ss = statSync(s).size;
|
|
212
|
+
const ds = statSync(d).size;
|
|
213
|
+
if (ss > ds) {
|
|
214
|
+
cpSync(s, d, { preserveTimestamps: true });
|
|
215
|
+
merged++;
|
|
216
|
+
}
|
|
217
|
+
} else {
|
|
218
|
+
cpSync(s, d + ".from-orphan.bak", { preserveTimestamps: true });
|
|
219
|
+
preserved++;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
walk(cwdState, STATE_DIR);
|
|
224
|
+
console.error(chalk.dim(` merged ${merged} file(s), preserved ${preserved} non-jsonl side-by-side as .from-orphan.bak`));
|
|
225
|
+
|
|
226
|
+
// Rewrite absolute `sessionFile` paths in sessions.json from orphan to canonical
|
|
227
|
+
// so the runs-sync and console agree on where data lives.
|
|
228
|
+
const sessionsIdx = resolve(STATE_DIR, "agents", "main", "sessions", "sessions.json");
|
|
229
|
+
if (existsSync(sessionsIdx)) {
|
|
230
|
+
try {
|
|
231
|
+
const raw = readFileSync(sessionsIdx, "utf8");
|
|
232
|
+
const idx = JSON.parse(raw);
|
|
233
|
+
let rewrote = 0;
|
|
234
|
+
for (const entry of Object.values(idx)) {
|
|
235
|
+
const sf = entry && typeof entry.sessionFile === "string" ? entry.sessionFile : null;
|
|
236
|
+
if (sf && sf.startsWith(cwdState + "/")) {
|
|
237
|
+
entry.sessionFile = STATE_DIR + sf.slice(cwdState.length);
|
|
238
|
+
rewrote++;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
if (rewrote > 0) {
|
|
242
|
+
writeFileSync(sessionsIdx, JSON.stringify(idx, null, 2));
|
|
243
|
+
console.error(chalk.dim(` rewrote ${rewrote} sessionFile path(s) in sessions.json`));
|
|
244
|
+
}
|
|
245
|
+
} catch (err) {
|
|
246
|
+
console.error(chalk.red(" sessions.json rewrite failed: " + err.message));
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
// Delete the orphan.
|
|
251
|
+
try {
|
|
252
|
+
rmSync(cwdState, { recursive: true, force: true });
|
|
253
|
+
console.error(chalk.green(" orphan removed.\n"));
|
|
254
|
+
} catch (err) {
|
|
255
|
+
console.error(chalk.red(" orphan removal failed: " + err.message));
|
|
256
|
+
console.error(chalk.dim(" backup is intact at " + backup + ". You can rm it manually.\n"));
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
|
|
141
260
|
/**
|
|
142
261
|
* Check that we're inside a LeedAB project directory.
|
|
143
262
|
* Runs before every command except onboard/init.
|
|
@@ -178,6 +297,9 @@ async function requireLicense(command) {
|
|
|
178
297
|
|
|
179
298
|
// Hook into every command automatically
|
|
180
299
|
program.hook("preAction", async (thisCommand, actionCommand) => {
|
|
300
|
+
// Auto-merge any parallel .leedab/ into the canonical ~/.leedab/
|
|
301
|
+
// before any command touches state. Backed-up; reversible.
|
|
302
|
+
recoverOrphanState();
|
|
181
303
|
requireProject(actionCommand);
|
|
182
304
|
await requireLicense(actionCommand);
|
|
183
305
|
});
|
|
@@ -36,7 +36,9 @@
|
|
|
36
36
|
"solutions",
|
|
37
37
|
"onboarding",
|
|
38
38
|
"implementation",
|
|
39
|
-
"champion"
|
|
39
|
+
"champion",
|
|
40
|
+
"x-gtm-engineer-wgby",
|
|
41
|
+
"x-brand-specialist-cqgs"
|
|
40
42
|
],
|
|
41
43
|
"overrides": {},
|
|
42
44
|
"playbook_files": [],
|
|
@@ -187,5 +189,48 @@
|
|
|
187
189
|
"Walk a Champion through adding their first n8n workflow without doing it for them.",
|
|
188
190
|
"The Champion is asking the same routing question for the third time — surface a pattern + adjust pacing."
|
|
189
191
|
]
|
|
190
|
-
}
|
|
192
|
+
},
|
|
193
|
+
"hidden_agents": [],
|
|
194
|
+
"custom_agents": [
|
|
195
|
+
{
|
|
196
|
+
"id": "x-gtm-engineer-wgby",
|
|
197
|
+
"name": "GTM Engineer",
|
|
198
|
+
"tagline": "Builds outbound systems that turn target accounts into conversations",
|
|
199
|
+
"description": "Researches high-value accounts, identifies operational pain points, and builds personalized outbound campaigns targeting ops, supply-chain, and logistics leaders. Combines technical automation skills with sharp commercial writing to run experiments, enrich pipelines, and move prospects to discovery calls. Works directly with founders to convert early traction into a repeatable sales motion.",
|
|
200
|
+
"accent": "#4A6FA5",
|
|
201
|
+
"code": "GTE",
|
|
202
|
+
"team": "SALES",
|
|
203
|
+
"defaultModel": "claude-sonnet-4-6",
|
|
204
|
+
"systemPrompt": "You are the GTM Engineer operator for LeedAB. Your job is to build and run the outbound engine that takes LeedAB from early traction to a scalable sales motion. You sit between product, sales, automation, and customer discovery.\n\nYour primary objectives are: identify high-value target accounts in operations, supply chain, logistics, procurement, and back-office-heavy verticals; research their workflows and surface the specific pain points LeedAB can automate; build personalized outbound campaigns across LinkedIn, email, founder-led channels, communities, and events; and turn customer conversations into sharp ICP insights and product feedback.\n\nYou are expected to work technically. Build scraping pipelines, enrichment workflows, AI-assisted research briefs, and internal GTM automations using tools like Clay, Apollo, Instantly, Smartlead, HubSpot, Attio, Airtable, Make, Zapier, or n8n. When a manual step is repeatable, automate it. When a system is leaking data, fix it.\n\nYou are expected to write well. Every outbound message should be specific, concise, and oriented around the buyer's pain — not LeedAB's features. No filler. No generic sequences. Each campaign should have a clear hypothesis about who is in pain, why, and what a conversation with LeedAB is worth to them.\n\nYou manage CRM hygiene, lead scoring, pipeline tracking, and follow-up sequences. You flag stale leads, broken stages, and missing data. You make sure the founders always know what is in the pipeline and what needs action.\n\nYou produce sales collateral when needed: case studies, ROI narratives, demo scripts, account briefs, one-pagers. Keep them grounded in real customer language and real numbers. Do not write marketing copy — write materials that help a buyer make a decision.\n\nYou help run discovery calls and demos. Prepare call briefs before meetings. Take sharp notes during. After calls, extract what the buyer said about their workflow, their pain, their current tools, and what would make them move. Feed that back into ICP documentation and campaign targeting.\n\nYou measure what works. Every campaign has a hypothesis. Every sequence has tracked open, reply, and meeting rates. You kill what does not perform and double down on what does. You report results clearly and without spin.\n\nConstraints: never fabricate contact details, company data, or customer quotes. When researching accounts, cite the source. When writing outreach, do not claim capabilities LeedAB does not have. When you are uncertain about a product claim, flag it for the founders before it goes into a campaign. Treat every prospect's time as scarce — do not send noise.",
|
|
205
|
+
"createdAt": "2026-05-17T22:39:47.632Z"
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
"id": "x-brand-specialist-cqgs",
|
|
209
|
+
"name": "Brand Specialist",
|
|
210
|
+
"tagline": "Shapes how LeedAB looks, sounds, and lands across every touchpoint",
|
|
211
|
+
"description": "Defines and executes LeedAB's brand identity, voice, and visual direction across website, sales materials, pitch decks, and social content. Translates complex AI and operations concepts into clear, commercially sharp messaging. Works directly with founders to build a consistent brand system that serves GTM, investor, and customer-facing needs.",
|
|
212
|
+
"accent": "#7B5EA7",
|
|
213
|
+
"code": "BRS",
|
|
214
|
+
"team": "BRAND",
|
|
215
|
+
"defaultModel": "claude-sonnet-4-6",
|
|
216
|
+
"systemPrompt": "You are the Brand Specialist operator for LeedAB. Your job is to shape how LeedAB looks, sounds, and feels across every customer and investor touchpoint. You work directly with founders to define positioning, messaging, visual direction, and the content system that holds everything together.\n\nYour primary objectives are: develop and maintain a clear, consistent brand identity including voice, tone, typography, color, imagery, and layout standards; translate complex AI and operations concepts into messaging that is simple, credible, and commercially sharp; improve website copy, landing pages, pitch decks, one-pagers, and sales collateral; and create a repeatable content system for launches, outreach, social posts, and product announcements.\n\nOn messaging: every asset you produce should make LeedAB feel modern, trustworthy, and specific. Avoid vague AI superlatives. Ground claims in real workflows, real outcomes, and real customer language. When founders bring rough positioning ideas, your job is to sharpen them into something a buyer or investor would immediately understand.\n\nOn visual direction: you maintain brand guidelines the team can actually use. Typography, color palette, icon style, layout rules, image treatment. When a designer, developer, or GTM team member needs to produce something, the guidelines should be clear enough that the output looks like LeedAB without you touching every file.\n\nOn content: you produce LinkedIn posts, email campaign copy, product announcement drafts, and launch materials. Each piece should reinforce positioning, not just fill a calendar. Founder-led content should sound like the founder, not like a brand account. Customer stories and use cases should lead with the operational pain and the measurable result.\n\nOn consistency: you audit materials across website, product UI, sales collateral, and investor decks. When something is off-brand, off-tone, or visually inconsistent, you flag it and fix it. You own the single source of truth for brand standards.\n\nOn research: you monitor competitors and adjacent B2B SaaS and AI brands to keep LeedAB's positioning differentiated. When the market shifts or a competitor changes their story, you surface it and recommend adjustments.\n\nConstraints: never sacrifice clarity for creativity. If a headline sounds good but does not communicate what LeedAB actually does, rewrite it. Never publish unverified customer claims or fabricated proof points. When a metric or testimonial is used in an asset, confirm it is real and sourced before it goes out. Keep brand guidelines practical and minimal enough that the team will actually follow them.",
|
|
217
|
+
"createdAt": "2026-05-17T23:47:28.471Z"
|
|
218
|
+
}
|
|
219
|
+
],
|
|
220
|
+
"agent_teams": [
|
|
221
|
+
{
|
|
222
|
+
"label": "SALES",
|
|
223
|
+
"color": "#b8633a",
|
|
224
|
+
"ids": [
|
|
225
|
+
"x-gtm-engineer-wgby"
|
|
226
|
+
]
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
"label": "BRAND",
|
|
230
|
+
"color": "#b87850",
|
|
231
|
+
"ids": [
|
|
232
|
+
"x-brand-specialist-cqgs"
|
|
233
|
+
]
|
|
234
|
+
}
|
|
235
|
+
]
|
|
191
236
|
}
|
package/dist/console-launcher.js
CHANGED
|
@@ -100,11 +100,15 @@ export async function startConsole(port = 3000) {
|
|
|
100
100
|
`This is a packaging bug, please report it.`);
|
|
101
101
|
}
|
|
102
102
|
process.stderr.write(`Console build missing. Running 'npm install && npm run build' in ${dir} (one-time, ~60s).\n`);
|
|
103
|
-
|
|
103
|
+
// shell: true so Windows resolves `npm` → `npm.cmd` via PATHEXT.
|
|
104
|
+
// Without it spawnSync returns status: null (process never launched),
|
|
105
|
+
// which surfaced as "npm install failed (exit null)".
|
|
106
|
+
const useShell = process.platform === "win32";
|
|
107
|
+
const install = spawnSync("npm", ["install"], { cwd: dir, stdio: "inherit", shell: useShell });
|
|
104
108
|
if (install.status !== 0) {
|
|
105
109
|
throw new Error(`npm install failed (exit ${install.status}) in ${dir}. Run manually:\n cd ${dir} && npm install && npm run build`);
|
|
106
110
|
}
|
|
107
|
-
const build = spawnSync("npm", ["run", "build"], { cwd: dir, stdio: "inherit" });
|
|
111
|
+
const build = spawnSync("npm", ["run", "build"], { cwd: dir, stdio: "inherit", shell: useShell });
|
|
108
112
|
if (build.status !== 0) {
|
|
109
113
|
throw new Error(`Console build failed (exit ${build.status}). Run manually:\n cd ${dir} && npm run build`);
|
|
110
114
|
}
|
package/dist/gateway.js
CHANGED
|
@@ -41,6 +41,23 @@ export async function startGateway(config) {
|
|
|
41
41
|
env,
|
|
42
42
|
stdio: ["inherit", "pipe", "pipe"],
|
|
43
43
|
});
|
|
44
|
+
// Watch the openclaw output for the "ready (" marker so the CLI can
|
|
45
|
+
// unblock the instant the gateway signals it's listening, instead of
|
|
46
|
+
// waiting for the next health probe to land. On Windows cold-start
|
|
47
|
+
// openclaw can take ~200s to bind, and each `openclaw gateway health`
|
|
48
|
+
// probe blocks up to 30s — so only ~8 probes fit in the 240s budget
|
|
49
|
+
// and the timing can miss, even though the gateway actually came up.
|
|
50
|
+
const readyPromise = new Promise((resolve) => {
|
|
51
|
+
const watch = (chunk) => {
|
|
52
|
+
const text = typeof chunk === "string" ? chunk : chunk.toString("utf-8");
|
|
53
|
+
if (text.includes("ready ("))
|
|
54
|
+
resolve();
|
|
55
|
+
};
|
|
56
|
+
if (gatewayProcess?.stdout)
|
|
57
|
+
gatewayProcess.stdout.on("data", watch);
|
|
58
|
+
if (gatewayProcess?.stderr)
|
|
59
|
+
gatewayProcess.stderr.on("data", watch);
|
|
60
|
+
});
|
|
44
61
|
if (gatewayProcess.stdout)
|
|
45
62
|
gatewayProcess.stdout.pipe(logStream);
|
|
46
63
|
if (gatewayProcess.stderr)
|
|
@@ -61,7 +78,7 @@ export async function startGateway(config) {
|
|
|
61
78
|
};
|
|
62
79
|
process.on("SIGTERM", cleanup);
|
|
63
80
|
process.on("SIGINT", cleanup);
|
|
64
|
-
await waitForGateway(config.gateway.port);
|
|
81
|
+
await waitForGateway(config.gateway.port, readyPromise);
|
|
65
82
|
// Push approvals to running gateway (local set happens before start,
|
|
66
83
|
// but the gateway may load its own copy on boot)
|
|
67
84
|
await ensureAutoApprove(bin, env, true);
|
|
@@ -176,44 +193,76 @@ async function ensureChatCompletionsEndpoint(stateDir) {
|
|
|
176
193
|
* Safe for local enterprise deployments where the admin controls the box.
|
|
177
194
|
*/
|
|
178
195
|
async function ensureAutoApprove(bin, env, gateway = false) {
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
196
|
+
// security: "full" skips all approval prompts (equivalent to elevated mode).
|
|
197
|
+
// ask: "off" disables interactive prompts entirely.
|
|
198
|
+
// askFallback: "full" auto-allows if no UI is reachable.
|
|
199
|
+
const approvals = JSON.stringify({
|
|
200
|
+
version: 1,
|
|
201
|
+
defaults: {
|
|
202
|
+
security: "full",
|
|
203
|
+
ask: "off",
|
|
204
|
+
askFallback: "full",
|
|
205
|
+
},
|
|
206
|
+
agents: {
|
|
207
|
+
"*": {
|
|
186
208
|
security: "full",
|
|
187
209
|
ask: "off",
|
|
188
210
|
askFallback: "full",
|
|
189
211
|
},
|
|
190
|
-
|
|
191
|
-
"
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
askFallback: "full",
|
|
195
|
-
},
|
|
196
|
-
main: {
|
|
197
|
-
security: "full",
|
|
198
|
-
ask: "off",
|
|
199
|
-
askFallback: "full",
|
|
200
|
-
},
|
|
212
|
+
main: {
|
|
213
|
+
security: "full",
|
|
214
|
+
ask: "off",
|
|
215
|
+
askFallback: "full",
|
|
201
216
|
},
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
217
|
+
},
|
|
218
|
+
});
|
|
219
|
+
const args = ["approvals", "set", "--stdin"];
|
|
220
|
+
if (gateway)
|
|
221
|
+
args.push("--gateway");
|
|
222
|
+
// Retry loop. In gateway mode the subprocess opens a WebSocket to the
|
|
223
|
+
// just-started gateway. The gateway is "HTTP-ready" before its WS auth
|
|
224
|
+
// layer is fully initialised, so the first call commonly fails with
|
|
225
|
+
// "closed before connect" (ws codes 1005 / 1006) and exits 1. Retrying
|
|
226
|
+
// a few times with backoff covers that warmup window without changing
|
|
227
|
+
// gateway internals. In non-gateway mode the openclaw subprocess is
|
|
228
|
+
// self-contained so one attempt is enough — but the retry is cheap and
|
|
229
|
+
// costs nothing on success, so we keep it uniform.
|
|
230
|
+
const delays = gateway ? [500, 1500, 3000, 5000] : [0];
|
|
231
|
+
let lastErr = null;
|
|
232
|
+
for (let i = 0; i < delays.length; i++) {
|
|
233
|
+
if (delays[i] > 0)
|
|
234
|
+
await new Promise((r) => setTimeout(r, delays[i]));
|
|
235
|
+
try {
|
|
236
|
+
const proc = spawn(bin, openclawArgs(args), { env, stdio: ["pipe", "pipe", "pipe"] });
|
|
237
|
+
proc.stdin.write(approvals);
|
|
238
|
+
proc.stdin.end();
|
|
239
|
+
let stderr = "";
|
|
240
|
+
proc.stderr.on("data", (chunk) => { stderr += chunk.toString(); });
|
|
241
|
+
await new Promise((resolve, reject) => {
|
|
242
|
+
proc.on("close", (code) => {
|
|
243
|
+
if (code === 0)
|
|
244
|
+
return resolve();
|
|
245
|
+
// Pull the actionable line from stderr if openclaw printed one
|
|
246
|
+
// ("unauthorized: gateway token missing", "closed before
|
|
247
|
+
// connect", etc) so logs aren't just "exit 1".
|
|
248
|
+
const tail = stderr.split("\n").filter(Boolean).slice(-2).join(" | ").trim();
|
|
249
|
+
reject(new Error(`exit ${code}${tail ? `: ${tail}` : ""}`));
|
|
250
|
+
});
|
|
251
|
+
proc.on("error", reject);
|
|
252
|
+
});
|
|
253
|
+
return; // success
|
|
254
|
+
}
|
|
255
|
+
catch (err) {
|
|
256
|
+
lastErr = err instanceof Error ? err : new Error(String(err));
|
|
257
|
+
// Don't bother retrying on hard auth failures — those won't fix
|
|
258
|
+
// themselves by waiting. Token-missing means the config is wrong;
|
|
259
|
+
// tell the user to run leedab onboard.
|
|
260
|
+
const msg = lastErr.message.toLowerCase();
|
|
261
|
+
if (msg.includes("token missing") || msg.includes("unauthorized"))
|
|
262
|
+
break;
|
|
263
|
+
}
|
|
216
264
|
}
|
|
265
|
+
console.warn("[leedab] auto-approve setup failed:", lastErr?.message ?? lastErr);
|
|
217
266
|
}
|
|
218
267
|
/**
|
|
219
268
|
* Copy default workspace files (AGENTS.md, SOUL.md, etc.) into workspace/
|
|
@@ -241,28 +290,38 @@ async function seedWorkspace() {
|
|
|
241
290
|
}
|
|
242
291
|
}
|
|
243
292
|
async function waitForGateway(port,
|
|
244
|
-
//
|
|
245
|
-
//
|
|
246
|
-
//
|
|
247
|
-
//
|
|
248
|
-
|
|
293
|
+
// Optional signal that resolves when the gateway's "ready (" line is
|
|
294
|
+
// observed on stdout/stderr. When provided, we return the instant the
|
|
295
|
+
// log marker fires — the health-probe loop below stays as a fallback
|
|
296
|
+
// in case the marker is missed (stream buffering, format change, etc).
|
|
297
|
+
readySignal,
|
|
298
|
+
// 360s headroom for Windows, where openclaw cold-start has been
|
|
299
|
+
// measured at ~200s. Health probes can each block 30s, so the
|
|
300
|
+
// probe-only path only fits ~8 attempts — the readySignal short-
|
|
301
|
+
// circuits that whenever the gateway logs ready in time.
|
|
302
|
+
timeoutMs = 360000) {
|
|
249
303
|
const bin = resolveOpenClawBin();
|
|
250
304
|
const stateDir = STATE_DIR;
|
|
251
305
|
const start = Date.now();
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
306
|
+
const pollLoop = (async () => {
|
|
307
|
+
while (Date.now() - start < timeoutMs) {
|
|
308
|
+
try {
|
|
309
|
+
await execFileAsync(bin, openclawArgs(["gateway", "health"]), {
|
|
310
|
+
env: openclawEnv(stateDir),
|
|
311
|
+
timeout: 30000,
|
|
312
|
+
});
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
catch {
|
|
316
|
+
// Not ready yet
|
|
317
|
+
}
|
|
318
|
+
await new Promise((r) => setTimeout(r, 1000));
|
|
264
319
|
}
|
|
265
|
-
|
|
320
|
+
throw new Error(`Gateway did not start within ${timeoutMs}ms`);
|
|
321
|
+
})();
|
|
322
|
+
if (readySignal) {
|
|
323
|
+
await Promise.race([readySignal, pollLoop]);
|
|
324
|
+
return;
|
|
266
325
|
}
|
|
267
|
-
|
|
326
|
+
await pollLoop;
|
|
268
327
|
}
|