leedab 0.5.3 → 0.6.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 +7 -2
- package/_schema/customer-brain-template/01_Customers/engagement.md +42 -0
- package/_schema/customer-brain-template/01_Customers/qbr-template.md +49 -0
- package/_schema/customer-brain-template/02_Sales/pipeline.md +43 -0
- package/_schema/customer-brain-template/04_Operations/runbook.md +54 -0
- package/_schema/customer-brain-template/05_Finance/runway-snapshot.md +40 -0
- package/_schema/customer-brain-template/CLAUDE.md +66 -0
- package/_schema/customer-brain-template/README.md +43 -0
- package/_schema/customer-brain-template/_inbox/champion-day-0.md +69 -0
- package/_schema/customer-brain-template/_inbox/weekly-digest-template.md +53 -0
- package/_schema/customer-brain-template/_templates/customer.md +33 -0
- package/_schema/customer-brain-template/_templates/decision.md +30 -0
- package/agents/INDEX.md +151 -0
- package/agents/automation-agent.md +199 -0
- package/agents/backend-agent.md +104 -0
- package/agents/brand-agent.md +130 -0
- package/agents/campaigns-agent.md +98 -0
- package/agents/champion-agent.md +123 -0
- package/agents/compliance-agent.md +124 -0
- package/agents/concierge-agent.md +120 -0
- package/agents/content-agent.md +98 -0
- package/agents/coo-agent.md +191 -0
- package/agents/cx-agent.md +85 -0
- package/agents/data-agent.md +129 -0
- package/agents/delivery-agent.md +154 -0
- package/agents/devops-agent.md +117 -0
- package/agents/email-agent.md +114 -0
- package/agents/engineering-agent.md +136 -0
- package/agents/finance-agent.md +94 -0
- package/agents/frontend-agent.md +98 -0
- package/agents/implementation-agent.md +130 -0
- package/agents/investor-agent.md +127 -0
- package/agents/legal-agent.md +109 -0
- package/agents/marketing-agent.md +91 -0
- package/agents/onboarding-agent.md +122 -0
- package/agents/ops-agent.md +92 -0
- package/agents/people-agent.md +127 -0
- package/agents/procurement-agent.md +147 -0
- package/agents/product-agent.md +133 -0
- package/agents/research-agent.md +147 -0
- package/agents/sales-agent.md +112 -0
- package/agents/solutions-agent.md +111 -0
- package/agents/strategy-agent.md +107 -0
- package/agents/video-agent.md +94 -0
- package/apps/console/.next/standalone/.next/BUILD_ID +1 -1
- package/apps/console/.next/standalone/.next/app-build-manifest.json +542 -143
- package/apps/console/.next/standalone/.next/app-path-routes-manifest.json +77 -19
- package/apps/console/.next/standalone/.next/build-manifest.json +8 -8
- package/apps/console/.next/standalone/.next/prerender-manifest.json +39 -10
- package/apps/console/.next/standalone/.next/required-server-files.json +4 -0
- package/apps/console/.next/standalone/.next/routes-manifest.json +44 -0
- package/apps/console/.next/standalone/.next/server/app/_not-found/page.js +2 -2
- package/apps/console/.next/standalone/.next/server/app/_not-found/page.js.nft.json +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 +8 -4
- 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.js.nft.json +1 -1
- 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.js.nft.json +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 +2 -2
- package/apps/console/.next/standalone/.next/server/app/api/approvals/stream/route.js.nft.json +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.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/automation/workflow-blueprint/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/automation/workflow-blueprint/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/backend/endpoint-spec/route.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/backend/endpoint-spec/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/backend/endpoint-spec/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/bootstrap-admin-token/route.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/bootstrap-admin-token/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/bootstrap-admin-token/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/brand/brand-audit/route.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/brand/brand-audit/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/brand/brand-audit/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/campaigns/campaign-brief/route.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/campaigns/campaign-brief/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/campaigns/campaign-brief/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/champion/confidence/route.js +3 -0
- package/apps/console/.next/standalone/.next/server/app/api/champion/confidence/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/champion/confidence/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/champion/customer/route.js +3 -0
- package/apps/console/.next/standalone/.next/server/app/api/champion/customer/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/champion/customer/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/champion/dispatches/route.js +3 -0
- package/apps/console/.next/standalone/.next/server/app/api/champion/dispatches/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/champion/dispatches/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/champion/engagement/route.js +3 -0
- package/apps/console/.next/standalone/.next/server/app/api/champion/engagement/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/champion/engagement/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/champion/escalate/route.js +11 -0
- package/apps/console/.next/standalone/.next/server/app/api/champion/escalate/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/champion/escalate/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/champion/profile/route.js +4 -0
- package/apps/console/.next/standalone/.next/server/app/api/champion/profile/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/champion/profile/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/champion/screenshare/route.js +36 -0
- package/apps/console/.next/standalone/.next/server/app/api/champion/screenshare/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/champion/screenshare/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/champion/track-question/route.js +2 -0
- package/apps/console/.next/standalone/.next/server/app/api/champion/track-question/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/champion/track-question/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/champion/use-case-wiki/route.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/champion/use-case-wiki/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/champion/use-case-wiki/route_client-reference-manifest.js +1 -0
- 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.js.nft.json +1 -1
- 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.js +33 -0
- package/apps/console/.next/standalone/.next/server/app/api/compliance/risk-register-seed/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/compliance/risk-register-seed/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/computer-use/[id]/route.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/computer-use/[id]/route.js.nft.json +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.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/computer-use/route.js.nft.json +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 +3 -0
- package/apps/console/.next/standalone/.next/server/app/api/concierge/morning-brief/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/concierge/morning-brief/route_client-reference-manifest.js +1 -0
- 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.js.nft.json +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.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/content/seo-brief/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/content/seo-brief/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/conversations/route.js +3 -9
- package/apps/console/.next/standalone/.next/server/app/api/conversations/route.js.nft.json +1 -1
- 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 -0
- package/apps/console/.next/standalone/.next/server/app/api/coo/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/coo/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/cx/escalation-triage/route.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/cx/escalation-triage/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/cx/escalation-triage/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/cx/health-score/route.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/cx/health-score/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/cx/health-score/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/data/cohort-brief/route.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/data/cohort-brief/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/data/cohort-brief/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/delivery/qbr-brief/route.js +57 -0
- package/apps/console/.next/standalone/.next/server/app/api/delivery/qbr-brief/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/delivery/qbr-brief/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/delivery/weekly-brief/route.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/delivery/weekly-brief/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/delivery/weekly-brief/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/dev/invalidate-cache/route.js +3 -0
- package/apps/console/.next/standalone/.next/server/app/api/dev/invalidate-cache/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/dev/invalidate-cache/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/devops/runbook/route.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/devops/runbook/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/devops/runbook/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/email/sequence-brief/route.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/email/sequence-brief/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/email/sequence-brief/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/engineering/adr-draft/route.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/engineering/adr-draft/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/engineering/adr-draft/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/finance/runway-snapshot/route.js +49 -0
- package/apps/console/.next/standalone/.next/server/app/api/finance/runway-snapshot/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/finance/runway-snapshot/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/frontend/component-spec/route.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/frontend/component-spec/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/frontend/component-spec/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/health/route.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/health/route.js.nft.json +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.js +79 -0
- package/apps/console/.next/standalone/.next/server/app/api/implementation/brief/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/implementation/brief/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/implementation/scaffold-migration-script/route.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/implementation/scaffold-migration-script/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/implementation/scaffold-migration-script/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/implementation/scaffold-n8n-workflow/route.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/implementation/scaffold-n8n-workflow/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/implementation/scaffold-n8n-workflow/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/implementation/scaffold-skill-override/route.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/implementation/scaffold-skill-override/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/implementation/scaffold-skill-override/route_client-reference-manifest.js +1 -0
- 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.js.nft.json +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 +2 -2
- package/apps/console/.next/standalone/.next/server/app/api/inbox/stream/route.js.nft.json +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 +59 -0
- package/apps/console/.next/standalone/.next/server/app/api/investor/kpi-tracker/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/investor/kpi-tracker/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/leedab/channels/status/route.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.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.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.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/leedab/gtm/leads/[id]/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/leedab/gtm/leads/[id]/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/leedab/gtm/leads/[id]/status/route.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/leedab/gtm/leads/[id]/status/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/leedab/gtm/leads/[id]/status/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/leedab/gtm/templates/[name]/route.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/leedab/gtm/templates/[name]/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/leedab/gtm/templates/[name]/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/leedab/license/route.js +3 -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/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.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.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.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.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.js +2 -2
- 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.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.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/legal/clause-template/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/legal/clause-template/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/marketing/cadence-planner/route.js +35 -0
- package/apps/console/.next/standalone/.next/server/app/api/marketing/cadence-planner/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/marketing/cadence-planner/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/marketing/competitive-snapshot/route.js +18 -0
- package/apps/console/.next/standalone/.next/server/app/api/marketing/competitive-snapshot/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/marketing/competitive-snapshot/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/onboarding/engagement-plan/route.js +17 -0
- package/apps/console/.next/standalone/.next/server/app/api/onboarding/engagement-plan/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/onboarding/engagement-plan/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/onboarding/kickoff-brief/route.js +63 -0
- package/apps/console/.next/standalone/.next/server/app/api/onboarding/kickoff-brief/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/onboarding/kickoff-brief/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/openclaw/status/route.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.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/ops/dispatch-brief/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/ops/dispatch-brief/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/pack/route.js +3 -31
- package/apps/console/.next/standalone/.next/server/app/api/pack/route.js.nft.json +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.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/people/job-brief/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/people/job-brief/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/preferences/route.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/preferences/route.js.nft.json +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.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/procurement/po-brief/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/procurement/po-brief/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/product/prd-draft/route.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/product/prd-draft/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/product/prd-draft/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/research/prospect-intel/route.js +15 -0
- package/apps/console/.next/standalone/.next/server/app/api/research/prospect-intel/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/research/prospect-intel/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/research/search/route.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/research/search/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/research/search/route_client-reference-manifest.js +1 -0
- 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.js.nft.json +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 +63 -0
- package/apps/console/.next/standalone/.next/server/app/api/sales/pipeline-summary/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/sales/pipeline-summary/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/sales/prospect-brief/route.js +6 -0
- package/apps/console/.next/standalone/.next/server/app/api/sales/prospect-brief/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/sales/prospect-brief/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/solutions/build/route.js +66 -0
- package/apps/console/.next/standalone/.next/server/app/api/solutions/build/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/solutions/build/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/solutions/quickstart-regenerate/route.js +3 -0
- package/apps/console/.next/standalone/.next/server/app/api/solutions/quickstart-regenerate/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/solutions/quickstart-regenerate/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/solutions/refine/route.js +22 -0
- package/apps/console/.next/standalone/.next/server/app/api/solutions/refine/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/solutions/refine/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/strategy/market-pulse/route.js +17 -0
- package/apps/console/.next/standalone/.next/server/app/api/strategy/market-pulse/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/strategy/market-pulse/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/telegram/[customerId]/route.js +61 -0
- package/apps/console/.next/standalone/.next/server/app/api/telegram/[customerId]/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/telegram/[customerId]/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/templates/regenerate/route.js +23 -0
- package/apps/console/.next/standalone/.next/server/app/api/templates/regenerate/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/templates/regenerate/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/templates/route.js +1 -31
- 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.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/uploads/[id]/route.js.nft.json +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.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/uploads/route.js.nft.json +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 +3 -9
- package/apps/console/.next/standalone/.next/server/app/api/usage/route.js.nft.json +1 -1
- 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.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/video/video-script/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/video/video-script/route_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/api/webhooks/workflow/[id]/route.js +3 -1
- package/apps/console/.next/standalone/.next/server/app/api/webhooks/workflow/[id]/route.js.nft.json +1 -1
- 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.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/workflows/[id]/history/[runId]/route.js.nft.json +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.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/workflows/[id]/history/route.js.nft.json +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 +3 -1
- package/apps/console/.next/standalone/.next/server/app/api/workflows/[id]/route.js.nft.json +1 -1
- 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.js.nft.json +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.js +1 -1
- package/apps/console/.next/standalone/.next/server/app/api/workflows/route.js.nft.json +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/apple-icon.png/route.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/apple-icon.png/route.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/apple-icon.png.body +0 -0
- package/apps/console/.next/standalone/.next/server/app/apple-icon.png.meta +1 -0
- package/apps/console/.next/standalone/.next/server/app/gtm/page.js +2 -0
- package/apps/console/.next/standalone/.next/server/app/gtm/page.js.nft.json +1 -0
- package/apps/console/.next/standalone/.next/server/app/gtm/page_client-reference-manifest.js +1 -0
- package/apps/console/.next/standalone/.next/server/app/icon.png/route.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 +9 -5
- package/apps/console/.next/standalone/.next/server/app/page.js +5 -2
- package/apps/console/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- 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 +77 -19
- package/apps/console/.next/standalone/.next/server/chunks/1372.js +9 -0
- package/apps/console/.next/standalone/.next/server/chunks/1558.js +38 -0
- package/apps/console/.next/standalone/.next/server/chunks/1692.js +1 -1
- package/apps/console/.next/standalone/.next/server/chunks/4768.js +17 -0
- package/apps/console/.next/standalone/.next/server/chunks/5611.js +3 -3
- package/apps/console/.next/standalone/.next/server/chunks/5670.js +3 -0
- package/apps/console/.next/standalone/.next/server/chunks/5873.js +10 -10
- package/apps/console/.next/standalone/.next/server/chunks/6150.js +22 -0
- package/apps/console/.next/standalone/.next/server/chunks/6235.js +9 -0
- package/apps/console/.next/standalone/.next/server/chunks/6255.js +1 -0
- package/apps/console/.next/standalone/.next/server/chunks/697.js +19 -0
- package/apps/console/.next/standalone/.next/server/chunks/7087.js +1 -9
- package/apps/console/.next/standalone/.next/server/chunks/7242.js +28 -0
- package/apps/console/.next/standalone/.next/server/chunks/7907.js +86 -0
- package/apps/console/.next/standalone/.next/server/chunks/854.js +1287 -0
- package/apps/console/.next/standalone/.next/server/chunks/897.js +3 -0
- package/apps/console/.next/standalone/.next/server/functions-config-manifest.json +73 -17
- package/apps/console/.next/standalone/.next/server/instrumentation.js +1 -1
- package/apps/console/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/next-font-manifest.js +1 -1
- package/apps/console/.next/standalone/.next/server/next-font-manifest.json +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/_app.js +1 -1
- package/apps/console/.next/standalone/.next/server/pages/_document.js +1 -1
- package/apps/console/.next/standalone/.next/server/pages/_error.js +3 -3
- package/apps/console/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/apps/console/.next/standalone/.next/static/cSGyydhlqn2VGaYXt0uuW/_buildManifest.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/1255-b28ea36bf0cdbd65.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/8118-681f2688832ccc66.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/agent/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/approvals/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/approvals/stream/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/automation/workflow-blueprint/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/backend/endpoint-spec/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/bootstrap-admin-token/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/brand/brand-audit/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/campaigns/campaign-brief/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/confidence/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/customer/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/dispatches/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/engagement/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/escalate/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/profile/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/screenshare/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/track-question/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/champion/use-case-wiki/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/chat/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/compliance/risk-register-seed/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/computer-use/[id]/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/computer-use/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/concierge/morning-brief/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/contacts/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/content/seo-brief/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/conversations/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/coo/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/cx/escalation-triage/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/cx/health-score/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/data/cohort-brief/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/delivery/qbr-brief/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/delivery/weekly-brief/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/dev/invalidate-cache/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/devops/runbook/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/email/sequence-brief/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/engineering/adr-draft/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/finance/runway-snapshot/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/frontend/component-spec/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/health/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/brief/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/scaffold-migration-script/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/scaffold-n8n-workflow/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/implementation/scaffold-skill-override/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/inbox/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/inbox/stream/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/investor/kpi-tracker/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/channels/status/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/channels/telegram/connect/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/channels/whatsapp/connect/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/gtm/leads/[id]/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/gtm/leads/[id]/status/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/gtm/templates/[name]/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/license/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/providers/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/sessions/[id]/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/sessions/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/team/[id]/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/team/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/vault/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/workflows/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/legal/clause-template/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/marketing/cadence-planner/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/marketing/competitive-snapshot/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/onboarding/engagement-plan/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/onboarding/kickoff-brief/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/openclaw/status/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/ops/dispatch-brief/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/pack/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/people/job-brief/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/preferences/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/procurement/po-brief/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/product/prd-draft/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/research/prospect-intel/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/research/search/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/routing/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/runs/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/sales/pipeline-summary/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/sales/prospect-brief/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/solutions/build/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/solutions/quickstart-regenerate/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/solutions/refine/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/strategy/market-pulse/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/telegram/[customerId]/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/templates/regenerate/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/templates/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/uploads/[id]/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/uploads/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/usage/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/video/video-script/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/webhooks/workflow/[id]/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/history/[runId]/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/history/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/run/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/gtm/page-caca5eaacd3c81f2.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/layout-bd27cc63fde6b953.js +1 -0
- package/apps/console/.next/standalone/.next/static/chunks/app/page-01558715b1be9361.js +1 -0
- package/apps/console/.next/{static/chunks/main-48aa5dd07474f897.js → standalone/.next/static/chunks/main-d8fbd90b2bd781f8.js} +1 -1
- package/apps/console/.next/standalone/.next/static/chunks/{webpack-cdf4ab3c7a3034db.js → webpack-43f535d639053361.js} +1 -1
- package/apps/console/.next/standalone/.next/static/css/4bdbd0680d42c54d.css +3 -0
- package/apps/console/.next/standalone/.next/static/media/0f1bdadaf30e2d5f-s.woff2 +0 -0
- package/apps/console/.next/standalone/.next/static/media/22a5144ee8d83bca-s.p.woff2 +0 -0
- package/apps/console/.next/standalone/.next/static/media/2c34d62a75506231-s.woff2 +0 -0
- package/apps/console/.next/standalone/.next/static/media/35f3de0ebb1cfc70-s.woff2 +0 -0
- package/apps/console/.next/standalone/.next/static/media/5ece437c7024c161-s.woff2 +0 -0
- package/apps/console/.next/standalone/.next/static/media/601f5c280d60caca-s.woff2 +0 -0
- package/apps/console/.next/standalone/.next/static/media/9766a7e9e2e0ad5a-s.woff2 +0 -0
- package/apps/console/.next/standalone/.next/static/media/9cc5b37ab1350db7-s.p.woff2 +0 -0
- package/apps/console/.next/standalone/.next/static/media/a115172161b307bb-s.woff2 +0 -0
- package/apps/console/.next/standalone/.next/static/media/aa016aab0e6d1295-s.woff2 +0 -0
- package/apps/console/.next/standalone/.next/static/media/b66cf8e69499582a-s.woff2 +0 -0
- package/apps/console/.next/standalone/.next/static/media/d100b2a099e34044-s.woff2 +0 -0
- package/apps/console/.next/standalone/.next/static/media/e6099e249fd938cc-s.p.woff2 +0 -0
- package/apps/console/.next/standalone/.next/static/media/f5271587012faf78-s.p.woff2 +0 -0
- package/apps/console/.next/standalone/.next/static/media/f639721981034f88-s.woff2 +0 -0
- package/apps/console/.next/standalone/data/conversations/coo.json +116 -1
- package/apps/console/.next/standalone/data/conversations/procurement.json +33 -1
- package/apps/console/.next/standalone/data/uploads/316e1ef7-870d-4666-93fa-e439548fc0b6.pdf +0 -0
- package/apps/console/.next/standalone/data/uploads/_index.json +11 -0
- package/apps/console/.next/standalone/data/usage.json +81 -0
- package/apps/console/.next/standalone/node_modules/@next/env/package.json +1 -1
- package/apps/console/.next/standalone/node_modules/next/dist/build/analysis/get-page-static-info.js +12 -1
- package/apps/console/.next/standalone/node_modules/next/dist/build/next-config-ts/transpile-config.js +2 -1
- package/apps/console/.next/standalone/node_modules/next/dist/build/swc/index.js +1 -1
- package/apps/console/.next/standalone/node_modules/next/dist/build/webpack-config.js +2 -2
- package/apps/console/.next/standalone/node_modules/next/dist/client/components/router-reducer/fetch-server-response.js +2 -2
- package/apps/console/.next/standalone/node_modules/next/dist/client/components/router-reducer/set-cache-busting-search-param.js +9 -2
- package/apps/console/.next/standalone/node_modules/next/dist/client/script.js +5 -4
- package/apps/console/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-experimental.runtime.prod.js +11 -11
- package/apps/console/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js +11 -11
- package/apps/console/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js +13 -13
- package/apps/console/.next/standalone/node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js +9 -9
- package/apps/console/.next/standalone/node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js +2 -2
- package/apps/console/.next/standalone/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +5 -5
- package/apps/console/.next/standalone/node_modules/next/dist/compiled/next-server/pages.runtime.prod.js +3 -3
- package/apps/console/.next/standalone/node_modules/next/dist/lib/typescript/required-packages.js +40 -0
- package/apps/console/.next/standalone/node_modules/next/dist/lib/verify-typescript-setup.js +7 -2
- package/apps/console/.next/standalone/node_modules/next/dist/pages/_document.js +1 -1
- package/apps/console/.next/standalone/node_modules/next/dist/server/app-render/action-handler.js +3 -6
- package/apps/console/.next/standalone/node_modules/next/dist/server/app-render/app-render.js +2 -1
- package/apps/console/.next/standalone/node_modules/next/dist/server/app-render/get-script-nonce-from-header.js +8 -20
- package/apps/console/.next/standalone/node_modules/next/dist/server/app-render/metadata-insertion/create-server-inserted-metadata.js +8 -7
- package/apps/console/.next/standalone/node_modules/next/dist/server/app-render/use-flight-response.js +2 -2
- package/apps/console/.next/standalone/node_modules/next/dist/server/base-server.js +12 -4
- package/apps/console/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +1 -1
- package/apps/console/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1 -1
- package/apps/console/.next/standalone/node_modules/next/dist/server/image-optimizer.js +22 -2
- package/apps/console/.next/standalone/node_modules/next/dist/server/lib/app-info-log.js +1 -1
- package/apps/console/.next/standalone/node_modules/next/dist/server/lib/is-rsc-request.js +18 -0
- package/apps/console/.next/standalone/node_modules/next/dist/server/lib/mock-request.js +30 -5
- package/apps/console/.next/standalone/node_modules/next/dist/server/lib/router-server.js +6 -3
- package/apps/console/.next/standalone/node_modules/next/dist/server/lib/router-utils/resolve-routes.js +18 -4
- package/apps/console/.next/standalone/node_modules/next/dist/server/lib/server-ipc/utils.js +4 -1
- package/apps/console/.next/standalone/node_modules/next/dist/server/lib/start-server.js +1 -1
- package/apps/console/.next/standalone/node_modules/next/dist/server/next-server.js +2 -1
- package/apps/console/.next/standalone/node_modules/next/dist/server/route-modules/route-module.js +9 -3
- package/apps/console/.next/standalone/node_modules/next/dist/server/web/adapter.js +2 -1
- package/apps/console/.next/standalone/node_modules/next/dist/shared/lib/canary-only.js +1 -1
- package/apps/console/.next/standalone/node_modules/next/dist/{server → shared/lib}/htmlescape.js +15 -0
- package/apps/console/.next/standalone/node_modules/next/dist/shared/lib/router/utils/cache-busting-search-param.js +56 -10
- package/apps/console/.next/standalone/node_modules/next/dist/telemetry/anonymous-meta.js +1 -1
- package/apps/console/.next/standalone/node_modules/next/dist/telemetry/events/version.js +2 -2
- package/apps/console/.next/standalone/node_modules/next/package.json +15 -15
- package/apps/console/.next/standalone/package.json +6 -0
- package/apps/console/.next/standalone/server.js +1 -1
- package/apps/console/.next/static/cSGyydhlqn2VGaYXt0uuW/_buildManifest.js +1 -0
- package/apps/console/.next/static/chunks/1255-b28ea36bf0cdbd65.js +1 -0
- package/apps/console/.next/static/chunks/8118-681f2688832ccc66.js +1 -0
- package/apps/console/.next/static/chunks/app/api/agent/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/approvals/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/approvals/stream/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/automation/workflow-blueprint/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/backend/endpoint-spec/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/bootstrap-admin-token/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/brand/brand-audit/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/campaigns/campaign-brief/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/champion/confidence/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/champion/customer/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/champion/dispatches/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/champion/engagement/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/champion/escalate/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/champion/profile/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/champion/screenshare/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/champion/track-question/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/champion/use-case-wiki/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/chat/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/compliance/risk-register-seed/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/computer-use/[id]/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/computer-use/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/concierge/morning-brief/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/contacts/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/content/seo-brief/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/conversations/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/coo/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/cx/escalation-triage/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/cx/health-score/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/data/cohort-brief/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/delivery/qbr-brief/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/delivery/weekly-brief/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/dev/invalidate-cache/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/devops/runbook/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/email/sequence-brief/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/engineering/adr-draft/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/finance/runway-snapshot/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/frontend/component-spec/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/health/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/implementation/brief/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/implementation/scaffold-migration-script/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/implementation/scaffold-n8n-workflow/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/implementation/scaffold-skill-override/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/inbox/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/inbox/stream/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/investor/kpi-tracker/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/leedab/channels/status/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/leedab/channels/telegram/connect/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/leedab/channels/whatsapp/connect/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/leedab/gtm/leads/[id]/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/leedab/gtm/leads/[id]/status/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/leedab/gtm/templates/[name]/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/leedab/license/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/leedab/providers/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/leedab/sessions/[id]/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/leedab/sessions/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/leedab/team/[id]/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/leedab/team/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/leedab/vault/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/leedab/workflows/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/legal/clause-template/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/marketing/cadence-planner/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/marketing/competitive-snapshot/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/onboarding/engagement-plan/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/onboarding/kickoff-brief/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/openclaw/status/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/ops/dispatch-brief/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/pack/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/people/job-brief/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/preferences/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/procurement/po-brief/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/product/prd-draft/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/research/prospect-intel/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/research/search/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/routing/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/runs/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/sales/pipeline-summary/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/sales/prospect-brief/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/solutions/build/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/solutions/quickstart-regenerate/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/solutions/refine/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/strategy/market-pulse/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/telegram/[customerId]/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/templates/regenerate/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/templates/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/uploads/[id]/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/uploads/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/usage/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/video/video-script/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/webhooks/workflow/[id]/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/workflows/[id]/history/[runId]/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/workflows/[id]/history/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/workflows/[id]/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/workflows/[id]/run/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/api/workflows/route-4178c1913c80eb12.js +1 -0
- package/apps/console/.next/static/chunks/app/gtm/page-caca5eaacd3c81f2.js +1 -0
- package/apps/console/.next/static/chunks/app/layout-bd27cc63fde6b953.js +1 -0
- package/apps/console/.next/static/chunks/app/page-01558715b1be9361.js +1 -0
- package/apps/console/.next/{standalone/.next/static/chunks/main-48aa5dd07474f897.js → static/chunks/main-d8fbd90b2bd781f8.js} +1 -1
- package/apps/console/.next/static/chunks/{webpack-cdf4ab3c7a3034db.js → webpack-43f535d639053361.js} +1 -1
- package/apps/console/.next/static/css/4bdbd0680d42c54d.css +3 -0
- package/apps/console/.next/static/media/0f1bdadaf30e2d5f-s.woff2 +0 -0
- package/apps/console/.next/static/media/22a5144ee8d83bca-s.p.woff2 +0 -0
- package/apps/console/.next/static/media/2c34d62a75506231-s.woff2 +0 -0
- package/apps/console/.next/static/media/35f3de0ebb1cfc70-s.woff2 +0 -0
- package/apps/console/.next/static/media/5ece437c7024c161-s.woff2 +0 -0
- package/apps/console/.next/static/media/601f5c280d60caca-s.woff2 +0 -0
- package/apps/console/.next/static/media/9766a7e9e2e0ad5a-s.woff2 +0 -0
- package/apps/console/.next/static/media/9cc5b37ab1350db7-s.p.woff2 +0 -0
- package/apps/console/.next/static/media/a115172161b307bb-s.woff2 +0 -0
- package/apps/console/.next/static/media/aa016aab0e6d1295-s.woff2 +0 -0
- package/apps/console/.next/static/media/b66cf8e69499582a-s.woff2 +0 -0
- package/apps/console/.next/static/media/d100b2a099e34044-s.woff2 +0 -0
- package/apps/console/.next/static/media/e6099e249fd938cc-s.p.woff2 +0 -0
- package/apps/console/.next/static/media/f5271587012faf78-s.p.woff2 +0 -0
- package/apps/console/.next/static/media/f639721981034f88-s.woff2 +0 -0
- package/apps/console/README.md +199 -0
- package/bin/leedab.js +271 -2
- package/bin/onboard-cofounder.sh +263 -0
- package/bin/onboard-customer.sh +303 -0
- package/bin/scan-secrets-tree.sh +138 -0
- package/bin/seed-workflows.mjs +80 -0
- package/bin/validate-manifests.sh +256 -0
- package/bin/wiring-status.sh +123 -0
- package/clients/default/manifest.json +191 -0
- package/clients/tarheel/INSTALL.md +333 -0
- package/clients/tarheel/manifest.json +34 -0
- package/context/brand-guide.md +95 -0
- package/context/competitor-landscape.md +120 -0
- package/context/customer-personas.md +91 -0
- package/context/customers/acme-logistics/playbook.md +19 -0
- package/context/customers/bondi-bloom/playbook.md +30 -0
- package/context/customers/chip-pro/playbook.md +107 -0
- package/context/customers/coastal-built/playbook.md +31 -0
- package/context/customers/element-pilates/playbook.md +33 -0
- package/context/customers/hawkesbury-roofing/playbook.md +21 -0
- package/context/customers/howard-partners/playbook.md +33 -0
- package/context/customers/ledbetter-advisory/playbook.md +21 -0
- package/context/customers/sunset-cafe/playbook.md +27 -0
- package/context/customers/tarheel/playbook.md +28 -0
- package/context/metrics.md +74 -0
- package/context/product-brief.md +134 -0
- package/context/roadmap.md +76 -0
- package/context/skills/brand-skills.md +62 -0
- package/context/skills/campaigns-skills.md +161 -0
- package/context/skills/compliance-skills.md +83 -0
- package/context/skills/concierge-skills.md +55 -0
- package/context/skills/content-skills.md +179 -0
- package/context/skills/cx-skills.md +296 -0
- package/context/skills/dashboard-ops.md +43 -0
- package/context/skills/email-skills.md +137 -0
- package/context/skills/finance-skills.md +314 -0
- package/context/skills/marketing-skills.md +843 -0
- package/context/skills/n8n-skills.md +110 -0
- package/context/skills/ops-skills.md +324 -0
- package/context/skills/people-skills.md +52 -0
- package/context/skills/procurement-skills.md +69 -0
- package/context/skills/product-skills.md +569 -0
- package/context/skills/research-skills.md +62 -0
- package/context/skills/sales-skills.md +827 -0
- package/context/skills/strategy-investor-skills.md +530 -0
- package/context/skills/video-skills.md +109 -0
- package/context/use-cases/construction.md +97 -0
- package/context/use-cases/hospitality.md +76 -0
- package/context/use-cases/logistics.md +57 -0
- package/context/use-cases/professional.md +61 -0
- package/context/use-cases/retail.md +80 -0
- package/context/use-cases/trades.md +97 -0
- package/dist/console-launcher.js +9 -0
- package/dist/gateway.js +4 -1
- package/dist/gtm/templates.js +17 -3
- package/dist/license.d.ts +6 -0
- package/dist/license.js +10 -0
- package/package.json +13 -3
- package/wiki/README.md +27 -0
- package/wiki/customer-use-cases/README.md +26 -0
- package/wiki/customer-use-cases/_template.md +42 -0
- package/wiki/customer-use-cases/agencies.md +47 -0
- package/wiki/customer-use-cases/ecommerce.md +47 -0
- package/wiki/customer-use-cases/food-service.md +45 -0
- package/wiki/customer-use-cases/healthcare.md +49 -0
- package/wiki/customer-use-cases/hospitality.md +47 -0
- package/wiki/customer-use-cases/logistics.md +58 -0
- package/wiki/customer-use-cases/manufacturing.md +45 -0
- package/wiki/customer-use-cases/professional.md +48 -0
- package/wiki/customer-use-cases/retail.md +44 -0
- package/wiki/customer-use-cases/trades.md +47 -0
- package/apps/console/.next/standalone/.next/server/app/api/demo/route.js +0 -19
- package/apps/console/.next/standalone/.next/server/app/api/demo/route.js.nft.json +0 -1
- package/apps/console/.next/standalone/.next/server/app/api/demo/route_client-reference-manifest.js +0 -1
- package/apps/console/.next/standalone/.next/server/chunks/2126.js +0 -9
- package/apps/console/.next/standalone/.next/server/chunks/4296.js +0 -9
- package/apps/console/.next/standalone/.next/server/chunks/5267.js +0 -9
- package/apps/console/.next/standalone/.next/server/chunks/7515.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/1255-5fe68596fe147850.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/856-71ac9b098091e245.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/agent/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/approvals/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/approvals/stream/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/chat/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/computer-use/[id]/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/computer-use/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/contacts/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/conversations/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/demo/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/health/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/inbox/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/inbox/stream/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/channels/status/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/channels/telegram/connect/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/channels/whatsapp/connect/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/license/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/providers/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/sessions/[id]/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/sessions/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/team/[id]/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/team/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/vault/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/leedab/workflows/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/openclaw/status/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/pack/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/preferences/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/routing/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/runs/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/templates/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/uploads/[id]/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/uploads/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/usage/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/webhooks/workflow/[id]/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/history/[runId]/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/history/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/[id]/run/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/api/workflows/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/layout-6be76a69bef30b9d.js +0 -1
- package/apps/console/.next/standalone/.next/static/chunks/app/page-4b700096636d1cae.js +0 -1
- package/apps/console/.next/standalone/.next/static/css/5c5c01673617cce6.css +0 -3
- package/apps/console/.next/standalone/.next/static/waL1Qm5zCQrO1oi52jYdI/_buildManifest.js +0 -1
- package/apps/console/.next/static/chunks/1255-5fe68596fe147850.js +0 -1
- package/apps/console/.next/static/chunks/856-71ac9b098091e245.js +0 -1
- package/apps/console/.next/static/chunks/app/api/agent/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/approvals/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/approvals/stream/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/chat/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/computer-use/[id]/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/computer-use/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/contacts/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/conversations/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/demo/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/health/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/inbox/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/inbox/stream/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/leedab/channels/status/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/leedab/channels/telegram/connect/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/leedab/channels/whatsapp/connect/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/leedab/license/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/leedab/providers/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/leedab/sessions/[id]/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/leedab/sessions/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/leedab/team/[id]/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/leedab/team/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/leedab/vault/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/leedab/workflows/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/openclaw/status/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/pack/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/preferences/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/routing/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/runs/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/templates/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/uploads/[id]/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/uploads/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/usage/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/webhooks/workflow/[id]/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/workflows/[id]/history/[runId]/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/workflows/[id]/history/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/workflows/[id]/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/workflows/[id]/run/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/api/workflows/route-35bf83db0bc9ad19.js +0 -1
- package/apps/console/.next/static/chunks/app/layout-6be76a69bef30b9d.js +0 -1
- package/apps/console/.next/static/chunks/app/page-4b700096636d1cae.js +0 -1
- package/apps/console/.next/static/css/5c5c01673617cce6.css +0 -3
- package/apps/console/.next/static/waL1Qm5zCQrO1oi52jYdI/_buildManifest.js +0 -1
- /package/apps/console/.next/standalone/.next/static/{waL1Qm5zCQrO1oi52jYdI → cSGyydhlqn2VGaYXt0uuW}/_ssgManifest.js +0 -0
- /package/apps/console/.next/static/{waL1Qm5zCQrO1oi52jYdI → cSGyydhlqn2VGaYXt0uuW}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,1287 @@
|
|
|
1
|
+
exports.id=854,exports.ids=[854],exports.modules={7506:(a,b,c)=>{"use strict";c.d(b,{sb:()=>j});var d=c(73024),e=c(76760),f=c.n(e),g=c(57477);let h=/^[a-z0-9](?:[a-z0-9-]{0,58}[a-z0-9])?$/,i=/^[a-z][a-z0-9_]{1,40}\.[a-z][a-z0-9_]{1,40}$/;async function j(a){try{if(!h.test(a.clientId))return{ok:!1,error:`Invalid clientId: ${a.clientId}`};if(!i.test(a.agent))return{ok:!1,error:`Invalid agent format: ${a.agent} (expected agent.tool)`};if(!await (0,g.xB)(a.clientId))return{ok:!1,error:`No brain for ${a.clientId} — audit not written`};let b={...a,inputSummary:function(a){if(!a)return;let b={};for(let[c,d]of Object.entries(a))"string"==typeof d?b[c]=d.length>200?`${d.slice(0,200)}…[+${d.length-200} chars]`:d:"number"==typeof d||"boolean"==typeof d||null===d?b[c]=d:Array.isArray(d)?b[c]=`[array length=${d.length}]`:"object"==typeof d?b[c]=`[object keys=${Object.keys(d).length}]`:b[c]=`[${typeof d}]`;return b}(a.inputSummary)},c=function(a,b){let c=`${b.getUTCFullYear()}-${String(b.getUTCMonth()+1).padStart(2,"0")}`;return f().join((0,g.Ip)(a),"_inbox",`audit-${c}.jsonl`)}(a.clientId,new Date(a.ts));await d.promises.mkdir(f().dirname(c),{recursive:!0});let e=JSON.stringify(b)+"\n";return await d.promises.appendFile(c,e,"utf8"),{ok:!0,path:c,bytes:Buffer.byteLength(e,"utf8")}}catch(a){return{ok:!1,error:a.message}}}},11702:(a,b,c)=>{"use strict";c.d(b,{AU:()=>h,xH:()=>g});var d=c(10641),e=c(90897);function f(a){return a.ok?null:"agentId"in a?d.NextResponse.json({error:a.error,message:a.message,clientId:a.clientId,agentId:a.agentId},{status:a.status}):"reason"in a&&void 0!==a.reason?d.NextResponse.json({error:a.error,reason:a.reason,message:a.message},{status:a.status}):d.NextResponse.json({error:a.error,message:a.message},{status:a.status})}async function g(){return f(await (0,e.b)())}async function h(a,b){return f(await (0,e.s)(a,b))}},54338:(a,b,c)=>{"use strict";c.d(b,{DF:()=>w,EK:()=>u,FV:()=>r,IJ:()=>e,Jg:()=>s,MC:()=>i,Md:()=>h,Oz:()=>g,SJ:()=>p,TM:()=>o,V_:()=>l,dC:()=>k,es:()=>f,jB:()=>m,ke:()=>t,o3:()=>v,pz:()=>q,qT:()=>n,th:()=>j});var d=c(57477);function e(a,b){let c=b.triggerType??"webhook",e="schedule"===c?{parameters:{rule:{interval:[{field:"cronExpression",expression:b.cronSchedule??"0 9 * * *"}]}},id:"trigger",name:"Schedule",type:"n8n-nodes-base.scheduleTrigger",typeVersion:1,position:[240,300]}:"manual"===c?{parameters:{},id:"trigger",name:"Manual",type:"n8n-nodes-base.manualTrigger",typeVersion:1,position:[240,300]}:{parameters:{path:`${a.clientId}-${(0,d.B0)(b.name)}`,options:{}},id:"trigger",name:"Webhook",type:"n8n-nodes-base.webhook",typeVersion:1.1,position:[240,300],webhookId:`${a.clientId}-${(0,d.B0)(b.name)}`};return JSON.stringify({name:`${a.displayName} — ${b.name}`,nodes:[e,{parameters:{jsCode:`// TODO: Implementation agent — fill in the action.
|
|
2
|
+
// Description: ${b.description}
|
|
3
|
+
// Customer: ${a.displayName} (${a.clientId})
|
|
4
|
+
|
|
5
|
+
return $input.all();`},id:"action",name:"Placeholder action",type:"n8n-nodes-base.code",typeVersion:2,position:[460,300]}],connections:{[e.name]:{main:[[{node:"Placeholder action",type:"main",index:0}]]}},active:!1,settings:{executionOrder:"v1"},versionId:"scaffold",meta:{leedabClientId:a.clientId,leedabIndustry:a.industry,generatedBy:"implementation-agent.scaffold_n8n_workflow",generatedAt:(0,d.st)(),description:b.description},pinData:{},tags:[{name:"leedab"},{name:a.clientId}]},null,2)}function f(a,b){return`---
|
|
6
|
+
type: skill-override
|
|
7
|
+
agent_id: ${b.agentId}
|
|
8
|
+
client_id: ${a.clientId}
|
|
9
|
+
created: ${(0,d.st)()}
|
|
10
|
+
status: draft
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# ${b.agentId} — ${a.displayName} override
|
|
14
|
+
|
|
15
|
+
> Per-customer system-prompt append block. Once approved, paste this body
|
|
16
|
+
> into \`clients/${a.clientId}/manifest.json\` under
|
|
17
|
+
> \`overrides.${b.agentId}.append_block\`. The console's
|
|
18
|
+
> \`buildSystemPrompt\` will append it to the agent's base spec at runtime.
|
|
19
|
+
|
|
20
|
+
## Why this override exists
|
|
21
|
+
|
|
22
|
+
${b.reason.trim()}
|
|
23
|
+
|
|
24
|
+
## Customer-specific guidance for ${b.agentId}
|
|
25
|
+
|
|
26
|
+
${b.guidance?.trim()??`(Implementation agent — fill in. Be concrete: name the systems, terminology, decision rules, and escalation paths specific to ${a.displayName}. Anything that should change about the standard ${b.agentId} behaviour goes here.)`}
|
|
27
|
+
|
|
28
|
+
## Hard rules added on top of base spec
|
|
29
|
+
|
|
30
|
+
1.
|
|
31
|
+
2.
|
|
32
|
+
3.
|
|
33
|
+
|
|
34
|
+
## When to escalate
|
|
35
|
+
|
|
36
|
+
(What signals warrant kicking this back to Delivery / Implementation rather than ${b.agentId} acting alone for ${a.displayName}?)
|
|
37
|
+
|
|
38
|
+
## Examples (good / bad)
|
|
39
|
+
|
|
40
|
+
**Good response shape:**
|
|
41
|
+
|
|
42
|
+
(Concrete example specific to this customer's data + workflows.)
|
|
43
|
+
|
|
44
|
+
**Bad response shape:**
|
|
45
|
+
|
|
46
|
+
(What ${b.agentId} should NEVER do for this customer — drawn from any prior incidents.)
|
|
47
|
+
|
|
48
|
+
## Sign-offs
|
|
49
|
+
|
|
50
|
+
- [ ] Delivery
|
|
51
|
+
- [ ] Onboarding
|
|
52
|
+
- [ ] Customer primary contact (acknowledged)
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
_Generated by Implementation agent. After sign-off, copy the body (everything below the frontmatter) into the manifest \`append_block\`._
|
|
57
|
+
`}function g(a,b){let c=(0,d.B0)(b.name)||"migration";return`// One-time migration: ${b.source} → ${b.target}
|
|
58
|
+
// Customer: ${a.displayName} (${a.clientId})
|
|
59
|
+
// Generated: ${(0,d.st)()}
|
|
60
|
+
// Run once: \`npx tsx scripts/migrations/${a.clientId}-${c}.ts\`
|
|
61
|
+
//
|
|
62
|
+
// Implementation agent — fill in the read + transform + write steps.
|
|
63
|
+
// Hard rules from the spec:
|
|
64
|
+
// - Test on real data first (with customer permission), not synthetic.
|
|
65
|
+
// - Idempotent: re-running should not duplicate rows.
|
|
66
|
+
// - Logs every batch — \`console.log\` to stdout, capture to a file.
|
|
67
|
+
// - Never store customer credentials in this file. Use env vars.
|
|
68
|
+
|
|
69
|
+
${b.description?`// Description: ${b.description}
|
|
70
|
+
//
|
|
71
|
+
`:""}import { readFile, writeFile, mkdir } from "node:fs/promises";
|
|
72
|
+
import path from "node:path";
|
|
73
|
+
|
|
74
|
+
type SourceRow = {
|
|
75
|
+
// TODO: shape of one row from ${b.source}
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
type TargetRow = {
|
|
79
|
+
// TODO: shape of one row in ${b.target}
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
async function readSource(): Promise<SourceRow[]> {
|
|
83
|
+
// TODO: read from ${b.source}
|
|
84
|
+
// Example for CSV/JSON-on-disk:
|
|
85
|
+
// const raw = await readFile(process.env.MIGRATION_SOURCE_PATH ?? "input.json", "utf8");
|
|
86
|
+
// return JSON.parse(raw);
|
|
87
|
+
throw new Error("readSource() not implemented");
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function transform(row: SourceRow): TargetRow | null {
|
|
91
|
+
// TODO: map source → target. Return null to skip a row (with a logged reason).
|
|
92
|
+
void row;
|
|
93
|
+
throw new Error("transform() not implemented");
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
async function writeTarget(rows: TargetRow[]): Promise<void> {
|
|
97
|
+
// TODO: write to ${b.target}.
|
|
98
|
+
// Example for the per-customer brain:
|
|
99
|
+
// const outDir = path.resolve(process.env.HOME ?? "", "leedab-brains/${a.clientId}/_inbox/migrations");
|
|
100
|
+
// await mkdir(outDir, { recursive: true });
|
|
101
|
+
// await writeFile(path.join(outDir, "${c}.json"), JSON.stringify(rows, null, 2));
|
|
102
|
+
void rows;
|
|
103
|
+
void path;
|
|
104
|
+
void mkdir;
|
|
105
|
+
void writeFile;
|
|
106
|
+
throw new Error("writeTarget() not implemented");
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
async function main() {
|
|
110
|
+
console.log(\`[${c}] reading from ${b.source}\`);
|
|
111
|
+
const source = await readSource();
|
|
112
|
+
console.log(\`[${c}] read \${source.length} rows\`);
|
|
113
|
+
|
|
114
|
+
const transformed: TargetRow[] = [];
|
|
115
|
+
let skipped = 0;
|
|
116
|
+
for (const row of source) {
|
|
117
|
+
const out = transform(row);
|
|
118
|
+
if (out === null) {
|
|
119
|
+
skipped++;
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
transformed.push(out);
|
|
123
|
+
}
|
|
124
|
+
console.log(\`[${c}] transformed \${transformed.length} rows, skipped \${skipped}\`);
|
|
125
|
+
|
|
126
|
+
await writeTarget(transformed);
|
|
127
|
+
console.log(\`[${c}] wrote \${transformed.length} rows to ${b.target}\`);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
main().catch((err) => {
|
|
131
|
+
console.error(\`[${c}] failed:\`, err);
|
|
132
|
+
process.exit(1);
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
void readFile; // silence unused — readSource may want it
|
|
136
|
+
`}function h(a,b){return`---
|
|
137
|
+
type: content-brief
|
|
138
|
+
format: seo-blog
|
|
139
|
+
client_id: ${a.clientId}
|
|
140
|
+
created: ${(0,d.st)()}
|
|
141
|
+
status: draft
|
|
142
|
+
review_required: yes
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
# SEO brief — ${b.topic}
|
|
146
|
+
|
|
147
|
+
> Drafted by Content agent on ${(0,d.dR)()} for ${a.displayName}${a.industry?` (${a.industry})`:""}.
|
|
148
|
+
> Search-intent first; problem-first; product second.
|
|
149
|
+
|
|
150
|
+
## Target keyword
|
|
151
|
+
|
|
152
|
+
${b.primaryKeyword??`(Primary keyword the SMB operator would actually type — not what we wish they typed. Example shape: "how to ${b.topic.toLowerCase()} for ${a.industry??"small business"}")`}
|
|
153
|
+
|
|
154
|
+
## Search intent
|
|
155
|
+
|
|
156
|
+
(What is the reader trying to do? Are they: comparing options, troubleshooting, learning a concept, looking to buy? Be specific — bad targeting comes from skipping this step.)
|
|
157
|
+
|
|
158
|
+
## Audience
|
|
159
|
+
|
|
160
|
+
${b.audience??`(Who specifically — e.g. "operations manager at a 12-truck logistics fleet" not "small businesses")`}
|
|
161
|
+
|
|
162
|
+
## Title (H1)
|
|
163
|
+
|
|
164
|
+
(Keyword-rich but not stuffed. ≤ 60 chars for SERP fit.)
|
|
165
|
+
|
|
166
|
+
## Meta description
|
|
167
|
+
|
|
168
|
+
(155 chars max. One promise + one specific outcome.)
|
|
169
|
+
|
|
170
|
+
## Hook (first 2 paragraphs)
|
|
171
|
+
|
|
172
|
+
(Open with the pain. Specific scenario, not "small businesses with manual processes". The product enters AFTER the reader has nodded along for at least two paragraphs.)
|
|
173
|
+
|
|
174
|
+
## Outline
|
|
175
|
+
|
|
176
|
+
| H2 | One-line description |
|
|
177
|
+
|---|---|
|
|
178
|
+
| | |
|
|
179
|
+
| | |
|
|
180
|
+
| | |
|
|
181
|
+
| | |
|
|
182
|
+
|
|
183
|
+
## Word count target
|
|
184
|
+
|
|
185
|
+
(800–1500 for most. 2000+ only for pillar / cornerstone content. Justify if claiming pillar status.)
|
|
186
|
+
|
|
187
|
+
## Internal links
|
|
188
|
+
|
|
189
|
+
- (Existing LeedAB content this should link to — case studies, comparison pages, related how-tos)
|
|
190
|
+
|
|
191
|
+
## CTA
|
|
192
|
+
|
|
193
|
+
(What does the reader do at the end? Trial sign-up? Demo request? Read another article?)
|
|
194
|
+
|
|
195
|
+
## Hard rules check
|
|
196
|
+
|
|
197
|
+
- [ ] Search intent clearly named (not "people who care about X")
|
|
198
|
+
- [ ] Concrete scenario in the hook (numbers, geography, tools)
|
|
199
|
+
- [ ] Problem-first opening — product enters paragraph 3 or later
|
|
200
|
+
- [ ] Internal links to existing content, not invented placeholder pages
|
|
201
|
+
- [ ] CTA matches the search intent (trial CTA on a how-to that solved their problem; demo CTA on a comparison piece)
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
_Generated by Content agent. Hand off to writer or refine in next turn._
|
|
206
|
+
`}function i(a,b){return`---
|
|
207
|
+
type: product-spec
|
|
208
|
+
client_id: ${a.clientId}
|
|
209
|
+
created: ${(0,d.st)()}
|
|
210
|
+
status: draft
|
|
211
|
+
review_required: yes
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
# Feature: ${b.feature}
|
|
215
|
+
|
|
216
|
+
> Drafted by Product agent on ${(0,d.dR)()}. Engineers should be able to build from this without further clarification.
|
|
217
|
+
|
|
218
|
+
## Problem
|
|
219
|
+
|
|
220
|
+
${b.problem.trim()}
|
|
221
|
+
|
|
222
|
+
${b.audience?`**Whose problem:** ${b.audience}
|
|
223
|
+
|
|
224
|
+
`:""}**How painful, how frequent:** (specific — "12 spreadsheet edits/day" not "a lot of manual work")
|
|
225
|
+
|
|
226
|
+
## Proposed solution
|
|
227
|
+
|
|
228
|
+
(One paragraph. Include the shape of the UX. Do NOT list technical details here — those go under Technical considerations.)
|
|
229
|
+
|
|
230
|
+
## User stories
|
|
231
|
+
|
|
232
|
+
- As a [role], I want [capability], so that [outcome].
|
|
233
|
+
- As a [role], I want [capability], so that [outcome].
|
|
234
|
+
|
|
235
|
+
## Acceptance criteria
|
|
236
|
+
|
|
237
|
+
(Specific, testable, true/false statements. Each one must be observable.)
|
|
238
|
+
|
|
239
|
+
1.
|
|
240
|
+
2.
|
|
241
|
+
3.
|
|
242
|
+
|
|
243
|
+
## UX flow
|
|
244
|
+
|
|
245
|
+
(Prose or mermaid diagram. Walk through the primary path. Note key decision points.)
|
|
246
|
+
|
|
247
|
+
## Local-first impact
|
|
248
|
+
|
|
249
|
+
- **Where does this data live?** (default: on the user's machine)
|
|
250
|
+
- **Does this require cloud infrastructure?** (if yes, justify and provide local fallback)
|
|
251
|
+
- **What happens offline?** (must degrade gracefully)
|
|
252
|
+
- **What data, if any, crosses the network?** (user must understand and consent)
|
|
253
|
+
|
|
254
|
+
## Technical considerations
|
|
255
|
+
|
|
256
|
+
- Data storage:
|
|
257
|
+
- AI provider implications:
|
|
258
|
+
- Performance expectations:
|
|
259
|
+
- Failure modes:
|
|
260
|
+
|
|
261
|
+
## Edge cases
|
|
262
|
+
|
|
263
|
+
-
|
|
264
|
+
-
|
|
265
|
+
|
|
266
|
+
## Out of scope (explicit)
|
|
267
|
+
|
|
268
|
+
-
|
|
269
|
+
|
|
270
|
+
## Open questions
|
|
271
|
+
|
|
272
|
+
(Anything the founders need to weigh in on before this is buildable.)
|
|
273
|
+
|
|
274
|
+
-
|
|
275
|
+
|
|
276
|
+
## Approvals
|
|
277
|
+
|
|
278
|
+
- [ ] Engineering (buildable as specified)
|
|
279
|
+
- [ ] Founders (problem worth solving + scope appropriate)
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
_Generated by Product agent. Local-first is non-negotiable — every feature must answer the four data-locality questions._
|
|
284
|
+
`}function j(a,b){return`---
|
|
285
|
+
type: adr
|
|
286
|
+
status: proposed
|
|
287
|
+
client_id: ${a.clientId}
|
|
288
|
+
created: ${(0,d.st)()}
|
|
289
|
+
date: ${(0,d.dR)()}
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
# ADR — ${b.title}
|
|
293
|
+
|
|
294
|
+
> Architecture Decision Record. Drafted by Engineering agent on ${(0,d.dR)()}.
|
|
295
|
+
|
|
296
|
+
## Status
|
|
297
|
+
|
|
298
|
+
Proposed (not yet accepted).
|
|
299
|
+
|
|
300
|
+
## Context
|
|
301
|
+
|
|
302
|
+
${b.context.trim()}
|
|
303
|
+
|
|
304
|
+
## Decision
|
|
305
|
+
|
|
306
|
+
${b.decision.trim()}
|
|
307
|
+
|
|
308
|
+
## Consequences
|
|
309
|
+
|
|
310
|
+
### Positive
|
|
311
|
+
|
|
312
|
+
-
|
|
313
|
+
|
|
314
|
+
### Negative / cost
|
|
315
|
+
|
|
316
|
+
-
|
|
317
|
+
|
|
318
|
+
### Neutral
|
|
319
|
+
|
|
320
|
+
-
|
|
321
|
+
|
|
322
|
+
## Alternatives considered
|
|
323
|
+
|
|
324
|
+
${b.alternatives??"(List alternatives weighed. Each one: what was it, why was it rejected, what would change the answer.)"}
|
|
325
|
+
|
|
326
|
+
## Architectural principle check
|
|
327
|
+
|
|
328
|
+
- [ ] **Local-first:** customer data stays on customer's machine; cloud is opt-in and disclosed
|
|
329
|
+
- [ ] **Provider-agnostic:** doesn't hard-code a single AI provider into core paths
|
|
330
|
+
- [ ] **Graceful degradation:** handles no-internet, provider downtime, rate limits, timeouts
|
|
331
|
+
- [ ] **Observable:** action is inspectable in the local audit trail
|
|
332
|
+
- [ ] **Security first:** no path-traversal, no credentials in repo, typed errors at boundaries
|
|
333
|
+
|
|
334
|
+
## Implementation plan
|
|
335
|
+
|
|
336
|
+
(High-level. Detailed PRD lives in Product's output.)
|
|
337
|
+
|
|
338
|
+
1.
|
|
339
|
+
2.
|
|
340
|
+
3.
|
|
341
|
+
|
|
342
|
+
## References
|
|
343
|
+
|
|
344
|
+
- Cross-references to related ADRs:
|
|
345
|
+
- Spec / PRD that prompted this:
|
|
346
|
+
|
|
347
|
+
---
|
|
348
|
+
|
|
349
|
+
_Generated by Engineering agent. Once accepted, change \`status: proposed\` → \`status: accepted\` and add the acceptance date._
|
|
350
|
+
`}function k(a,b){return`---
|
|
351
|
+
type: component-spec
|
|
352
|
+
client_id: ${a.clientId}
|
|
353
|
+
created: ${(0,d.st)()}
|
|
354
|
+
status: draft
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
# Component — ${b.name}
|
|
358
|
+
|
|
359
|
+
> Drafted by Frontend agent on ${(0,d.dR)()}. Component contract first; implementation follows.
|
|
360
|
+
|
|
361
|
+
## Purpose
|
|
362
|
+
|
|
363
|
+
${b.purpose.trim()}
|
|
364
|
+
|
|
365
|
+
## Component contract
|
|
366
|
+
|
|
367
|
+
\`\`\`tsx
|
|
368
|
+
interface ${b.name}Props {
|
|
369
|
+
// TODO: required props (label, value, onAction, etc.)
|
|
370
|
+
// TODO: optional props with defaults
|
|
371
|
+
// TODO: variants if any: variant?: "primary" | "ghost" | "danger";
|
|
372
|
+
}
|
|
373
|
+
\`\`\`
|
|
374
|
+
|
|
375
|
+
## Variants
|
|
376
|
+
|
|
377
|
+
${b.variants??`(List visual variants — primary / ghost / danger / etc — with the design intent for each. If none, write "single variant".)`}
|
|
378
|
+
|
|
379
|
+
## States
|
|
380
|
+
|
|
381
|
+
- Default
|
|
382
|
+
- Hover (interactive elements only)
|
|
383
|
+
- Focus (must be visually distinct from hover)
|
|
384
|
+
- Active / pressed
|
|
385
|
+
- Disabled
|
|
386
|
+
- Loading
|
|
387
|
+
- Error / invalid
|
|
388
|
+
|
|
389
|
+
## Accessibility checklist
|
|
390
|
+
|
|
391
|
+
- [ ] Keyboard focus is visible (\`outline\` or ring; never \`outline: none\` without a replacement)
|
|
392
|
+
- [ ] Tab order is logical
|
|
393
|
+
- [ ] ARIA label on icon-only buttons (\`aria-label\` or visually hidden text)
|
|
394
|
+
- [ ] \`role\` and \`aria-*\` for custom widgets (combobox, dialog, etc)
|
|
395
|
+
- [ ] Colour contrast ≥ 4.5:1 for normal text, 3:1 for large text
|
|
396
|
+
- [ ] Works with screen reader (announce state changes)
|
|
397
|
+
|
|
398
|
+
## Server vs client component
|
|
399
|
+
|
|
400
|
+
- **Decision:** [Server | Client]
|
|
401
|
+
- **Reason:** (Server by default. Client only if event handlers, browser APIs, or React state/effects.)
|
|
402
|
+
|
|
403
|
+
## Performance
|
|
404
|
+
|
|
405
|
+
- [ ] Images via \`next/image\` with explicit width/height
|
|
406
|
+
- [ ] Fonts via \`next/font\` (no layout shift)
|
|
407
|
+
- [ ] No \`use client\` if Server Component would suffice
|
|
408
|
+
- [ ] Bundle impact estimated if adding a new dependency
|
|
409
|
+
|
|
410
|
+
## Test plan
|
|
411
|
+
|
|
412
|
+
- [ ] React Testing Library: contract (props → DOM)
|
|
413
|
+
- [ ] React Testing Library: state transitions (default → hover → active → disabled)
|
|
414
|
+
- [ ] Playwright: keyboard navigation
|
|
415
|
+
- [ ] Playwright: screen reader announce (where supported)
|
|
416
|
+
|
|
417
|
+
## Design tokens used
|
|
418
|
+
|
|
419
|
+
- Colour:
|
|
420
|
+
- Spacing:
|
|
421
|
+
- Typography:
|
|
422
|
+
- Radius / shadow:
|
|
423
|
+
|
|
424
|
+
---
|
|
425
|
+
|
|
426
|
+
_Generated by Frontend agent. Implementation follows the contract above; deviations require updating the contract first._
|
|
427
|
+
`}function l(a,b){return`---
|
|
428
|
+
type: endpoint-spec
|
|
429
|
+
client_id: ${a.clientId}
|
|
430
|
+
created: ${(0,d.st)()}
|
|
431
|
+
status: draft
|
|
432
|
+
---
|
|
433
|
+
|
|
434
|
+
# ${b.method} ${b.path}
|
|
435
|
+
|
|
436
|
+
> Drafted by Backend agent on ${(0,d.dR)()}. Type the boundary; errors are data; safe paths everywhere.
|
|
437
|
+
|
|
438
|
+
## Purpose
|
|
439
|
+
|
|
440
|
+
${b.purpose.trim()}
|
|
441
|
+
|
|
442
|
+
## Authentication
|
|
443
|
+
|
|
444
|
+
- [ ] License gate (\`requireLicense\`)
|
|
445
|
+
- [ ] Per-customer manifest gate (\`requireLicensedAgent\`) — only if endpoint serves a specific agent's tool
|
|
446
|
+
- [ ] Auth shape: [JWT | session | API token | public]
|
|
447
|
+
|
|
448
|
+
## Request
|
|
449
|
+
|
|
450
|
+
### Headers
|
|
451
|
+
|
|
452
|
+
- \`Content-Type: application/json\` (for body-bearing methods)
|
|
453
|
+
- (Other required headers)
|
|
454
|
+
|
|
455
|
+
### Path params
|
|
456
|
+
|
|
457
|
+
(if any)
|
|
458
|
+
|
|
459
|
+
### Query params
|
|
460
|
+
|
|
461
|
+
(if any)
|
|
462
|
+
|
|
463
|
+
### Body
|
|
464
|
+
|
|
465
|
+
\`\`\`ts
|
|
466
|
+
import { z } from "zod";
|
|
467
|
+
|
|
468
|
+
const Body = z.object({
|
|
469
|
+
clientId: z.string().regex(/^[a-z0-9](?:[a-z0-9-]{0,58}[a-z0-9])?$/),
|
|
470
|
+
// TODO: required fields
|
|
471
|
+
// TODO: optional fields
|
|
472
|
+
});
|
|
473
|
+
type Body = z.infer<typeof Body>;
|
|
474
|
+
\`\`\`
|
|
475
|
+
|
|
476
|
+
## Response
|
|
477
|
+
|
|
478
|
+
### 200 OK
|
|
479
|
+
|
|
480
|
+
\`\`\`ts
|
|
481
|
+
type Response = {
|
|
482
|
+
ok: true;
|
|
483
|
+
// TODO: response shape
|
|
484
|
+
};
|
|
485
|
+
\`\`\`
|
|
486
|
+
|
|
487
|
+
### Error responses
|
|
488
|
+
|
|
489
|
+
\`\`\`ts
|
|
490
|
+
type ApiError =
|
|
491
|
+
| { ok: false; error: "INVALID_BODY"; details: string }
|
|
492
|
+
| { ok: false; error: "NOT_FOUND"; resource: string }
|
|
493
|
+
| { ok: false; error: "FORBIDDEN"; reason: string };
|
|
494
|
+
\`\`\`
|
|
495
|
+
|
|
496
|
+
| Status | Code | When |
|
|
497
|
+
|---|---|---|
|
|
498
|
+
| 400 | INVALID_BODY | Body fails Zod validation |
|
|
499
|
+
| 401 | NO_LICENSE | License gate refused |
|
|
500
|
+
| 403 | FORBIDDEN | Agent not licensed for this customer |
|
|
501
|
+
| 404 | NOT_FOUND | clientId / record not found |
|
|
502
|
+
| 500 | INTERNAL | Unhandled — should never reach here in tests |
|
|
503
|
+
|
|
504
|
+
## Side effects
|
|
505
|
+
|
|
506
|
+
- Filesystem:
|
|
507
|
+
- Database:
|
|
508
|
+
- External calls:
|
|
509
|
+
- Audit trail entry: (always — name the event type)
|
|
510
|
+
|
|
511
|
+
## Path safety
|
|
512
|
+
|
|
513
|
+
- [ ] All filesystem paths go through \`resolvedFile()\` / \`assertSafePath()\` from \`lib/agent-tools/vault.ts\`
|
|
514
|
+
- [ ] No string concatenation of \`clientId\` into a path without slug-validation
|
|
515
|
+
- [ ] No \`..\` or absolute paths permitted in user input
|
|
516
|
+
|
|
517
|
+
## Streaming
|
|
518
|
+
|
|
519
|
+
- [ ] If response can take > 2s, use Server-Sent Events
|
|
520
|
+
- [ ] Final event: \`data: {"type":"done"}\` or \`data: {"type":"error","value":"..."}\`
|
|
521
|
+
|
|
522
|
+
## Test plan
|
|
523
|
+
|
|
524
|
+
- [ ] Happy path
|
|
525
|
+
- [ ] Each error response (400 / 401 / 403 / 404)
|
|
526
|
+
- [ ] Path traversal attempt rejected (\`clientId: "../etc"\`)
|
|
527
|
+
- [ ] Large body rejected (over a sane cap)
|
|
528
|
+
- [ ] Concurrent calls don't corrupt shared state
|
|
529
|
+
|
|
530
|
+
---
|
|
531
|
+
|
|
532
|
+
_Generated by Backend agent. Type the boundary, name the errors._
|
|
533
|
+
`}function m(a,b){let c=b.incident??"service degraded";return`---
|
|
534
|
+
type: runbook
|
|
535
|
+
client_id: ${a.clientId}
|
|
536
|
+
service: ${b.service}
|
|
537
|
+
created: ${(0,d.st)()}
|
|
538
|
+
status: draft
|
|
539
|
+
---
|
|
540
|
+
|
|
541
|
+
# Runbook — ${b.service}: ${c}
|
|
542
|
+
|
|
543
|
+
> Drafted by DevOps agent on ${(0,d.dR)()}. Designed for a founder at 2am — every step concrete, no jargon.
|
|
544
|
+
|
|
545
|
+
## Symptom
|
|
546
|
+
|
|
547
|
+
(What does the operator / customer see? Specific — "dashboard returns 502 on /api/chat" not "things broken")
|
|
548
|
+
|
|
549
|
+
## Severity
|
|
550
|
+
|
|
551
|
+
- [ ] **P0** — customer data at risk OR all customers down
|
|
552
|
+
- [ ] **P1** — one customer fully blocked, or core agent flow broken
|
|
553
|
+
- [ ] **P2** — degraded UX, workaround exists
|
|
554
|
+
- [ ] **P3** — annoying but non-urgent
|
|
555
|
+
|
|
556
|
+
## First-30-seconds triage
|
|
557
|
+
|
|
558
|
+
1. **Is it actually broken?**
|
|
559
|
+
\`\`\`bash
|
|
560
|
+
# health check (curl, ping, log tail — ONE command)
|
|
561
|
+
\`\`\`
|
|
562
|
+
2. **Is it customer-specific or platform-wide?**
|
|
563
|
+
\`\`\`bash
|
|
564
|
+
# how to tell (e.g. check more than one clientId)
|
|
565
|
+
\`\`\`
|
|
566
|
+
|
|
567
|
+
## Diagnosis
|
|
568
|
+
|
|
569
|
+
(What logs / dashboards / queries narrow it down? Each step a single command.)
|
|
570
|
+
|
|
571
|
+
\`\`\`bash
|
|
572
|
+
# Check 1
|
|
573
|
+
# Check 2
|
|
574
|
+
# Check 3
|
|
575
|
+
\`\`\`
|
|
576
|
+
|
|
577
|
+
## Mitigation (immediate, reversible)
|
|
578
|
+
|
|
579
|
+
(Get the customer back to working state. Reversible — don't truncate tables, don't push hot fixes.)
|
|
580
|
+
|
|
581
|
+
\`\`\`bash
|
|
582
|
+
# Action 1 — what it does + why it's safe
|
|
583
|
+
\`\`\`
|
|
584
|
+
|
|
585
|
+
## Resolution (root cause fix)
|
|
586
|
+
|
|
587
|
+
(After mitigation. May require a code change + deploy.)
|
|
588
|
+
|
|
589
|
+
\`\`\`bash
|
|
590
|
+
# Action 1
|
|
591
|
+
# Action 2
|
|
592
|
+
\`\`\`
|
|
593
|
+
|
|
594
|
+
## Verification
|
|
595
|
+
|
|
596
|
+
\`\`\`bash
|
|
597
|
+
# How to confirm the issue is actually fixed (not just masked)
|
|
598
|
+
\`\`\`
|
|
599
|
+
|
|
600
|
+
## Postmortem trigger
|
|
601
|
+
|
|
602
|
+
- [ ] P0 / P1 always get a postmortem within 48h
|
|
603
|
+
- [ ] Postmortem owner: DevOps (incident commander)
|
|
604
|
+
- [ ] Add learnings + new monitor / runbook step to this file
|
|
605
|
+
|
|
606
|
+
## Known false positives
|
|
607
|
+
|
|
608
|
+
(Cases that look like this but aren't — don't waste 2am minutes here)
|
|
609
|
+
|
|
610
|
+
-
|
|
611
|
+
|
|
612
|
+
---
|
|
613
|
+
|
|
614
|
+
_Generated by DevOps agent. Update this runbook with anything you learned during the incident._
|
|
615
|
+
`}function n(a,b){return`---
|
|
616
|
+
type: po-brief
|
|
617
|
+
client_id: ${a.clientId}
|
|
618
|
+
supplier: ${b.supplier}
|
|
619
|
+
created: ${(0,d.st)()}
|
|
620
|
+
status: draft
|
|
621
|
+
review_required: yes
|
|
622
|
+
---
|
|
623
|
+
|
|
624
|
+
# PO brief — ${a.displayName} → ${b.supplier}
|
|
625
|
+
|
|
626
|
+
> Drafted by Procurement agent on ${(0,d.dR)()}. **Never bypass the PO system.** Confirm match against existing supplier contract before sending.
|
|
627
|
+
|
|
628
|
+
## Items requested
|
|
629
|
+
|
|
630
|
+
${b.items.trim()}
|
|
631
|
+
|
|
632
|
+
## Commercial terms
|
|
633
|
+
|
|
634
|
+
- **Supplier:** ${b.supplier}
|
|
635
|
+
- **Budget:** ${b.budget??"(operator: confirm against contract / market quote)"}
|
|
636
|
+
- **Urgency:** ${b.urgency??"routine"}
|
|
637
|
+
- **Payment terms:** (operator: pull from supplier contract — Net 30 / Net 60 / on receipt)
|
|
638
|
+
- **Currency:** (default to AUD unless contract specifies otherwise)
|
|
639
|
+
|
|
640
|
+
## Required checks (operator confirms each)
|
|
641
|
+
|
|
642
|
+
- [ ] PO number generated from internal sequence
|
|
643
|
+
- [ ] Supplier on approved-vendor list
|
|
644
|
+
- [ ] Budget approved by spend authority
|
|
645
|
+
- [ ] Items match a current contract / RFQ — no off-contract spend without approval
|
|
646
|
+
- [ ] Delivery address + receiving contact confirmed
|
|
647
|
+
- [ ] Insurance / compliance docs current (if vendor type requires)
|
|
648
|
+
|
|
649
|
+
## Risks
|
|
650
|
+
|
|
651
|
+
- **Off-contract risk:** if any line item isn't on contract, escalate to Finance before send.
|
|
652
|
+
- **Supplier solvency:** check the last 3 invoices were paid on time both directions before issuing.
|
|
653
|
+
- **Spec ambiguity:** every line item has a unit + quantity + spec. Vague briefs come back wrong.
|
|
654
|
+
|
|
655
|
+
## Approval chain
|
|
656
|
+
|
|
657
|
+
- [ ] Procurement (drafted)
|
|
658
|
+
- [ ] Finance (budget + spend authority)
|
|
659
|
+
- [ ] Operations (operational fit)
|
|
660
|
+
- [ ] Founder (if > approval threshold or off-contract)
|
|
661
|
+
|
|
662
|
+
---
|
|
663
|
+
|
|
664
|
+
_Generated by Procurement agent. Suppliers are SAP-driven for ${a.displayName} — never bypass the PO system._
|
|
665
|
+
`}function o(a,b){let c=b.urgency??"exception";return`---
|
|
666
|
+
type: dispatch-brief
|
|
667
|
+
client_id: ${a.clientId}
|
|
668
|
+
urgency: ${c}
|
|
669
|
+
created: ${(0,d.st)()}
|
|
670
|
+
status: draft
|
|
671
|
+
review_required: yes
|
|
672
|
+
---
|
|
673
|
+
|
|
674
|
+
# Dispatch brief — ${a.displayName}
|
|
675
|
+
|
|
676
|
+
> Drafted by Ops agent on ${(0,d.dR)()}. **Never auto-action exceptions.** Surface to the human; let them choose.
|
|
677
|
+
|
|
678
|
+
## Scenario
|
|
679
|
+
|
|
680
|
+
${b.scenario.trim()}
|
|
681
|
+
|
|
682
|
+
## Severity
|
|
683
|
+
|
|
684
|
+
- [ ] **P0** — service-level breach OR customer escalation in progress
|
|
685
|
+
- [ ] **Exception** — abnormal but recoverable within shift
|
|
686
|
+
- [ ] **Routine** — exception is daily-shape, no escalation needed
|
|
687
|
+
|
|
688
|
+
(Auto-tagged: ${c}. Operator confirms or adjusts.)
|
|
689
|
+
|
|
690
|
+
## Customer-side impact
|
|
691
|
+
|
|
692
|
+
${b.customerImpact??'(operator: name the customer + the SLA touched. "Coles", "Woolworths", "3-hour delivery window" etc.)'}
|
|
693
|
+
|
|
694
|
+
## Triage steps (in order)
|
|
695
|
+
|
|
696
|
+
1. **Confirm dispatch ID = SAP order ID.** No exception action without ID match.
|
|
697
|
+
2. **Read the manifest** — what was on the truck, who picked, which leg failed.
|
|
698
|
+
3. **Driver call** — get the driver's account in their words. Quote verbatim if writing customer-side.
|
|
699
|
+
4. **Customer-side comms decision** — proactive notify (preferred) vs. wait-and-see.
|
|
700
|
+
5. **Resolution path** — reroute / replace / refund / dispute. Pick one before talking to customer.
|
|
701
|
+
|
|
702
|
+
## Resolution options
|
|
703
|
+
|
|
704
|
+
- **Reroute:** another truck picks up the leg — confirm capacity + ETA before promising.
|
|
705
|
+
- **Replace:** issue replacement freight from depot — only if customer accepts the delay.
|
|
706
|
+
- **Refund:** financial-only resolution — escalate to Finance for sign-off.
|
|
707
|
+
- **Dispute:** customer-on-customer (e.g. wrong-address claim) — escalate to CX with documentation.
|
|
708
|
+
|
|
709
|
+
## Escalation triggers
|
|
710
|
+
|
|
711
|
+
- Anything over $5k impact → Mina before action
|
|
712
|
+
- Anything customer-visible → Mina before action
|
|
713
|
+
- Anything touching a contractual SLA → Mina before action
|
|
714
|
+
- 5am Sydney shift handoff to NZ — flag in dispatch before delegation
|
|
715
|
+
|
|
716
|
+
## Customer-side reply (if proactive notify chosen)
|
|
717
|
+
|
|
718
|
+
(Tone: terse, blue-collar, time-zoned Sydney. Sign-off: dispatch operator's name + role. No corporate-speak.)
|
|
719
|
+
|
|
720
|
+
\`\`\`
|
|
721
|
+
[Customer], heads up — [scenario in 1 line].
|
|
722
|
+
[Resolution path] — ETA [time] Sydney.
|
|
723
|
+
Will update if anything changes.
|
|
724
|
+
|
|
725
|
+
[Operator name], dispatch
|
|
726
|
+
\`\`\`
|
|
727
|
+
|
|
728
|
+
---
|
|
729
|
+
|
|
730
|
+
_Generated by Ops agent. Surface, don't auto-action. Cross-customer isolation matters here more than usual — driver names never leak to the wrong customer._
|
|
731
|
+
`}function p(a,b){let c=b.length??5,e=b.channel??"lifecycle";return`---
|
|
732
|
+
type: email-sequence-brief
|
|
733
|
+
client_id: ${a.clientId}
|
|
734
|
+
channel: ${e}
|
|
735
|
+
length: ${c}
|
|
736
|
+
created: ${(0,d.st)()}
|
|
737
|
+
status: draft
|
|
738
|
+
review_required: yes
|
|
739
|
+
---
|
|
740
|
+
|
|
741
|
+
# Email sequence brief — ${a.displayName}
|
|
742
|
+
|
|
743
|
+
> Drafted by Email agent on ${(0,d.dR)()}. **Drafts only — does not deploy.** Sequence ships through the licensed ESP after operator review.
|
|
744
|
+
|
|
745
|
+
## Audience
|
|
746
|
+
|
|
747
|
+
${b.audience.trim()}
|
|
748
|
+
|
|
749
|
+
## Goal of the sequence
|
|
750
|
+
|
|
751
|
+
${b.goal.trim()}
|
|
752
|
+
|
|
753
|
+
## Sequence shape — ${c} emails over ${"cold"===e?"10-14 days":"winback"===e?"7 days":"30-90 days"}
|
|
754
|
+
|
|
755
|
+
| # | Send (relative) | Subject angle | One-line body intent | CTA |
|
|
756
|
+
|---|---|---|---|---|
|
|
757
|
+
${Array.from({length:c},(a,b)=>{let c="cold"===e?`Day ${2*b}`:"winback"===e?`Day ${b+1}`:`Day ${[0,3,7,14,30,60,90][Math.min(b,6)]}`;return`| ${b+1} | ${c} | (operator: hook angle) | (one line) | (specific) |`}).join("\n")}
|
|
758
|
+
|
|
759
|
+
## Hard rules
|
|
760
|
+
|
|
761
|
+
- **One CTA per email.** Multiple CTAs = none performs.
|
|
762
|
+
- **Subject under 50 chars.** Mobile clipping is real.
|
|
763
|
+
- **First sentence is NOT the greeting.** Hook in line 1, not "I hope this finds you well."
|
|
764
|
+
- **No false personalisation.** "I noticed you {{trait}}" is fine if true; never fabricate.
|
|
765
|
+
- **Unsubscribe in every email** (compliance + trust signal).
|
|
766
|
+
- **No multi-variate per email.** A/B test ONE thing per send.
|
|
767
|
+
|
|
768
|
+
## Deliverability checklist
|
|
769
|
+
|
|
770
|
+
- [ ] SPF / DKIM / DMARC verified for sender domain
|
|
771
|
+
- [ ] Plain-text fallback present (60%+ of opens are mobile dark-mode now)
|
|
772
|
+
- [ ] No image-only emails (looks like spam)
|
|
773
|
+
- [ ] Sender name + reply-to is a person, not "noreply"
|
|
774
|
+
- [ ] Sequence-level cap: max 1 email/day per recipient
|
|
775
|
+
|
|
776
|
+
## Performance baselines (industry${a.industry?` — ${a.industry}`:""})
|
|
777
|
+
|
|
778
|
+
- Open rate: 25-40% acceptable, < 20% = subject problem
|
|
779
|
+
- Reply rate (cold): 2-5% acceptable, < 1% = audience or offer mismatch
|
|
780
|
+
- Click rate: 2-8% depending on CTA shape
|
|
781
|
+
|
|
782
|
+
## Approval chain
|
|
783
|
+
|
|
784
|
+
- [ ] Email (drafted)
|
|
785
|
+
- [ ] Marketing lead (audience + goal sanity check)
|
|
786
|
+
- [ ] Compliance (unsub + claims review)
|
|
787
|
+
- [ ] CX (escalation paths if reply patterns surface support issues)
|
|
788
|
+
|
|
789
|
+
---
|
|
790
|
+
|
|
791
|
+
_Generated by Email agent. Drafts only — deployment requires the licensed ESP integration which Implementation owns._
|
|
792
|
+
`}function q(a,b){return`---
|
|
793
|
+
type: campaign-brief
|
|
794
|
+
client_id: ${a.clientId}
|
|
795
|
+
channel: ${b.channel}
|
|
796
|
+
created: ${(0,d.st)()}
|
|
797
|
+
status: draft
|
|
798
|
+
review_required: yes
|
|
799
|
+
---
|
|
800
|
+
|
|
801
|
+
# Campaign brief — ${a.displayName} \xb7 ${b.channel}
|
|
802
|
+
|
|
803
|
+
> Drafted by Campaigns agent on ${(0,d.dR)()}. **Drafts the brief, not the spend.** No budget moves without Finance + founder sign-off.
|
|
804
|
+
|
|
805
|
+
## Objective
|
|
806
|
+
|
|
807
|
+
${b.objective.trim()}
|
|
808
|
+
|
|
809
|
+
## Channel
|
|
810
|
+
|
|
811
|
+
${b.channel} — chosen because: (operator: explain why this channel matches the audience + funnel stage)
|
|
812
|
+
|
|
813
|
+
## Budget + duration
|
|
814
|
+
|
|
815
|
+
- **Total budget:** ${b.budget??"(operator: name the cap — daily / total / blended)"}
|
|
816
|
+
- **Duration:** ${b.duration??"(operator: name end date or always-on)"}
|
|
817
|
+
- **Spend pacing:** (even / front-loaded / event-aligned)
|
|
818
|
+
|
|
819
|
+
## Audience
|
|
820
|
+
|
|
821
|
+
- **Who:** (specific segment — "ops managers at 12+ truck logistics fleets in NSW" not "small businesses")
|
|
822
|
+
- **Where:** (geographies, language)
|
|
823
|
+
- **Funnel stage:** (cold / warm / retargeting / customer-LAL)
|
|
824
|
+
|
|
825
|
+
## Creative direction
|
|
826
|
+
|
|
827
|
+
- **Hook:** (one-line — what stops the scroll)
|
|
828
|
+
- **Proof:** (numbers, quote, comparison)
|
|
829
|
+
- **Visual:** (testimonial / product / outcome / metaphor)
|
|
830
|
+
- **CTA:** (specific verb + value)
|
|
831
|
+
|
|
832
|
+
## Tracking + UTM
|
|
833
|
+
|
|
834
|
+
- **utm_source:** ${b.channel}
|
|
835
|
+
- **utm_medium:** (cpc / paid-social / display)
|
|
836
|
+
- **utm_campaign:** \`${a.clientId}-${(0,d.B0)(b.objective).slice(0,30)}\`
|
|
837
|
+
- **utm_content:** (creative variant)
|
|
838
|
+
- **utm_term:** (keyword variant for search)
|
|
839
|
+
|
|
840
|
+
## Hard rules
|
|
841
|
+
|
|
842
|
+
- **Single objective per campaign.** Multi-objective campaigns optimise for nothing.
|
|
843
|
+
- **Hold creative variants stable for 7+ days.** Don't kill a variant on day-2 noise.
|
|
844
|
+
- **One landing page per campaign.** Generic homepage = generic conversion rate.
|
|
845
|
+
- **Conversion event defined BEFORE launch.** Not "we'll figure it out from data."
|
|
846
|
+
- **Budget cap enforced at the platform.** No "watching it" as the only safeguard.
|
|
847
|
+
|
|
848
|
+
## Performance baselines (channel + funnel stage)
|
|
849
|
+
|
|
850
|
+
- (operator: pull last 3 campaigns of this channel + stage from analytics, paste benchmarks here)
|
|
851
|
+
|
|
852
|
+
## Kill criteria
|
|
853
|
+
|
|
854
|
+
- (operator: name the metric + threshold + window. e.g. "if CPL > $80 over 5 days at $50 daily, pause")
|
|
855
|
+
|
|
856
|
+
## Approval chain
|
|
857
|
+
|
|
858
|
+
- [ ] Campaigns (drafted)
|
|
859
|
+
- [ ] Marketing lead (positioning fit)
|
|
860
|
+
- [ ] Finance (budget approval)
|
|
861
|
+
- [ ] Founder (if > approval threshold)
|
|
862
|
+
|
|
863
|
+
---
|
|
864
|
+
|
|
865
|
+
_Generated by Campaigns agent. Drafts only — actual spend through the licensed ad-platform integration._
|
|
866
|
+
`}function r(a,b){let c=b.assetType??"other";return`---
|
|
867
|
+
type: brand-audit
|
|
868
|
+
client_id: ${a.clientId}
|
|
869
|
+
asset_type: ${c}
|
|
870
|
+
created: ${(0,d.st)()}
|
|
871
|
+
status: draft
|
|
872
|
+
review_required: yes
|
|
873
|
+
---
|
|
874
|
+
|
|
875
|
+
# Brand audit — ${a.displayName} \xb7 ${c}
|
|
876
|
+
|
|
877
|
+
> Drafted by Brand agent on ${(0,d.dR)()}. **Audit only, not a rewrite.** Identifies brand-fit gaps; the asset owner ships the fix.
|
|
878
|
+
|
|
879
|
+
## Asset under review
|
|
880
|
+
|
|
881
|
+
\`\`\`
|
|
882
|
+
${b.assetText.trim().slice(0,1200)}${b.assetText.length>1200?"\n... [truncated for brief]":""}
|
|
883
|
+
\`\`\`
|
|
884
|
+
|
|
885
|
+
## Voice + tone check
|
|
886
|
+
|
|
887
|
+
- [ ] **Tone matches brand register** (operator: pull current register from \`Wiki/brand/voice.md\` — terse vs warm, technical vs accessible, etc.)
|
|
888
|
+
- [ ] **Vocabulary matches** the customer's language, not internal jargon
|
|
889
|
+
- [ ] **Reading level** appropriate to audience (Hemingway grade 6-8 for SMB ops; grade 4-6 for consumer)
|
|
890
|
+
- [ ] **Personality cues** present (humour, directness, reassurance — depending on brand)
|
|
891
|
+
|
|
892
|
+
## Visual + structure check (when applicable)
|
|
893
|
+
|
|
894
|
+
- [ ] **Logo usage** correct (sizing, clearspace, colour treatment)
|
|
895
|
+
- [ ] **Colour palette** brand-compliant (hex matches token, no near-misses)
|
|
896
|
+
- [ ] **Typography** uses brand fonts at correct weights
|
|
897
|
+
- [ ] **Layout density** appropriate (whitespace = premium, density = utility)
|
|
898
|
+
|
|
899
|
+
## Message hierarchy
|
|
900
|
+
|
|
901
|
+
- [ ] **Headline communicates the value prop** without product knowledge required
|
|
902
|
+
- [ ] **First subhead reframes** in customer's words / pain
|
|
903
|
+
- [ ] **CTA is unambiguous** about what happens on click
|
|
904
|
+
- [ ] **Secondary content supports**, doesn't compete with, the primary message
|
|
905
|
+
|
|
906
|
+
## Risk flags
|
|
907
|
+
|
|
908
|
+
- **Tone drift** — asset reads like a different brand (corporate vs friendly, technical vs accessible)
|
|
909
|
+
- **Claim risk** — superlatives or numbers without sourcing ("the best", "10x faster")
|
|
910
|
+
- **Compliance flags** — financial / health / legal claims requiring substantiation
|
|
911
|
+
- **Asset reuse risk** — would this work in 3 other contexts, or is it brittle to one channel?
|
|
912
|
+
|
|
913
|
+
## Recommendations
|
|
914
|
+
|
|
915
|
+
(operator: 3-5 specific, action-oriented suggestions. Each one references a hard rule above.)
|
|
916
|
+
|
|
917
|
+
1.
|
|
918
|
+
2.
|
|
919
|
+
3.
|
|
920
|
+
|
|
921
|
+
## Approval chain
|
|
922
|
+
|
|
923
|
+
- [ ] Brand (audit complete)
|
|
924
|
+
- [ ] Asset owner (acknowledges + commits to fix or escalates)
|
|
925
|
+
- [ ] Marketing lead (final fit-check before publish)
|
|
926
|
+
|
|
927
|
+
---
|
|
928
|
+
|
|
929
|
+
_Generated by Brand agent. Brand audits are descriptive — visual fixes happen in the design tool the asset originated in (Figma / Canva / etc)._
|
|
930
|
+
`}function s(a,b){let c=b.durationS??60;return`---
|
|
931
|
+
type: video-script
|
|
932
|
+
client_id: ${a.clientId}
|
|
933
|
+
format: ${b.format}
|
|
934
|
+
duration_s: ${c}
|
|
935
|
+
created: ${(0,d.st)()}
|
|
936
|
+
status: draft
|
|
937
|
+
review_required: yes
|
|
938
|
+
---
|
|
939
|
+
|
|
940
|
+
# Video script — ${a.displayName} \xb7 ${b.format} \xb7 ${c}s
|
|
941
|
+
|
|
942
|
+
> Drafted by Video agent on ${(0,d.dR)()}. Script + storyboard + B-roll cues + on-screen text.
|
|
943
|
+
|
|
944
|
+
## Topic
|
|
945
|
+
|
|
946
|
+
${b.topic.trim()}
|
|
947
|
+
|
|
948
|
+
## Hook (0:00 – 0:03)
|
|
949
|
+
|
|
950
|
+
(One sentence. Stops scroll. Ideally a contrarian claim, surprising stat, or problem the viewer is living right now. NO greeting, NO logo intro.)
|
|
951
|
+
|
|
952
|
+
## Body — beat sheet
|
|
953
|
+
|
|
954
|
+
| Time | Spoken (VO or talent) | Visual / B-roll | On-screen text |
|
|
955
|
+
|---|---|---|---|
|
|
956
|
+
| 0:03 – 0:08 | | | |
|
|
957
|
+
| 0:08 – 0:15 | | | |
|
|
958
|
+
| 0:15 – 0:30 | | | |
|
|
959
|
+
| 0:30 – 0:45 | | | |
|
|
960
|
+
| 0:45 – 0:55 | | | |
|
|
961
|
+
| 0:55 – ${c}:00 | | | |
|
|
962
|
+
|
|
963
|
+
## CTA (last 3-5s)
|
|
964
|
+
|
|
965
|
+
- **What:** (specific verb + outcome)
|
|
966
|
+
- **Where:** (URL / button / next video)
|
|
967
|
+
- **Persistent on-screen:** (logo + URL throughout the CTA window)
|
|
968
|
+
|
|
969
|
+
## Production notes
|
|
970
|
+
|
|
971
|
+
- **Aspect ratio:** (9:16 for TikTok/Reels/Shorts; 1:1 for in-feed; 16:9 for YouTube/landing)
|
|
972
|
+
- **Captions:** baked-in (most views are sound-off)
|
|
973
|
+
- **Pacing:** ${c<30?"fast — average shot 1.5-2s":c<60?"medium — average shot 2-3s":"varied — open with quick cuts to retain, slow during proof"}
|
|
974
|
+
- **Music:** (track licence + mood)
|
|
975
|
+
- **Voice:** (talent name + recording approach: studio / phone / clean room)
|
|
976
|
+
|
|
977
|
+
## Hard rules
|
|
978
|
+
|
|
979
|
+
- **First 3s = hook.** No logo, no "hey guys", no greeting. Stop the scroll or lose the viewer.
|
|
980
|
+
- **One message per video.** A second message is a second video.
|
|
981
|
+
- **Closed captions baked in.** Not a YouTube auto-caption — properly authored.
|
|
982
|
+
- **Brand-compliant** colour + typography on every on-screen text card.
|
|
983
|
+
- **CTA visible for last 5s minimum** so the algo's preview frame includes it.
|
|
984
|
+
|
|
985
|
+
## Approval chain
|
|
986
|
+
|
|
987
|
+
- [ ] Video (script + storyboard drafted)
|
|
988
|
+
- [ ] Brand (voice + visual fit)
|
|
989
|
+
- [ ] Marketing lead (objective alignment)
|
|
990
|
+
- [ ] Founder (if customer-facing claims)
|
|
991
|
+
|
|
992
|
+
---
|
|
993
|
+
|
|
994
|
+
_Generated by Video agent. Script-only — production happens through HeyGen / Runway / talent shoot._
|
|
995
|
+
`}function t(a,b){return`---
|
|
996
|
+
type: cohort-brief
|
|
997
|
+
client_id: ${a.clientId}
|
|
998
|
+
created: ${(0,d.st)()}
|
|
999
|
+
status: draft
|
|
1000
|
+
review_required: yes
|
|
1001
|
+
---
|
|
1002
|
+
|
|
1003
|
+
# Cohort analysis brief — ${a.displayName}
|
|
1004
|
+
|
|
1005
|
+
> Drafted by Data agent on ${(0,d.dR)()}. Defines the question, the data shape needed, and the chart that answers it. **Analysis spec only — execution requires DB access (Postgres / BigQuery / etc) Implementation owns.**
|
|
1006
|
+
|
|
1007
|
+
## Question
|
|
1008
|
+
|
|
1009
|
+
${b.question.trim()}
|
|
1010
|
+
|
|
1011
|
+
## Why this matters
|
|
1012
|
+
|
|
1013
|
+
(operator: 1-2 lines on what decision this analysis informs. If you can't name the decision, the analysis isn't worth running yet.)
|
|
1014
|
+
|
|
1015
|
+
## Dimensions (slice-by columns)
|
|
1016
|
+
|
|
1017
|
+
${b.dimensions??"(operator: list the columns to slice by — date / customer-segment / product-tier / channel — and the granularity)"}
|
|
1018
|
+
|
|
1019
|
+
## Metric definitions
|
|
1020
|
+
|
|
1021
|
+
(One row per metric. **Definitions matter** — "active user" means different things to different people.)
|
|
1022
|
+
|
|
1023
|
+
| Metric | Definition | Source table | Filter |
|
|
1024
|
+
|---|---|---|---|
|
|
1025
|
+
| | | | |
|
|
1026
|
+
|
|
1027
|
+
## Expected output shape
|
|
1028
|
+
|
|
1029
|
+
- [ ] **Trend** — metric over time (line)
|
|
1030
|
+
- [ ] **Comparison** — metric across segments at a point in time (bar)
|
|
1031
|
+
- [ ] **Distribution** — metric values across the population (histogram / box)
|
|
1032
|
+
- [ ] **Funnel** — conversion across stages (funnel)
|
|
1033
|
+
|
|
1034
|
+
(Auto-tagged: ${b.expectedShape??"operator picks"})
|
|
1035
|
+
|
|
1036
|
+
## Hypothesis
|
|
1037
|
+
|
|
1038
|
+
(operator: what do you expect to see, and what would surprise you? If the answer is "I have no idea", run a smaller exploratory query first.)
|
|
1039
|
+
|
|
1040
|
+
## Cuts to ignore (out of scope this round)
|
|
1041
|
+
|
|
1042
|
+
- (operator: name dimensions you'll be tempted to slice by but shouldn't — keeps the analysis focused)
|
|
1043
|
+
|
|
1044
|
+
## Validation steps
|
|
1045
|
+
|
|
1046
|
+
- [ ] Sample-size check: each cohort has > 30 observations (else trend is noise)
|
|
1047
|
+
- [ ] Outlier check: top/bottom 1% inspected — included or excluded with reason
|
|
1048
|
+
- [ ] Duplicate check: row counts match expected join cardinality
|
|
1049
|
+
- [ ] Time-zone check: timestamps in customer-local zone, not UTC by accident
|
|
1050
|
+
- [ ] Definition cross-check: pulled metric matches the canonical definition in \`05_Finance/metrics.md\` (or equivalent)
|
|
1051
|
+
|
|
1052
|
+
## Approval chain
|
|
1053
|
+
|
|
1054
|
+
- [ ] Data (analysis spec)
|
|
1055
|
+
- [ ] Engineering (query feasibility check)
|
|
1056
|
+
- [ ] Founder (decision owner — accepts the framing or refines)
|
|
1057
|
+
|
|
1058
|
+
---
|
|
1059
|
+
|
|
1060
|
+
_Generated by Data agent. Cite or shut up — every chart in the final analysis names its source table + filter._
|
|
1061
|
+
`}function u(a,b){let c=b.level??"mid";return`---
|
|
1062
|
+
type: job-brief
|
|
1063
|
+
client_id: ${a.clientId}
|
|
1064
|
+
role: ${b.role}
|
|
1065
|
+
level: ${c}
|
|
1066
|
+
created: ${(0,d.st)()}
|
|
1067
|
+
status: draft
|
|
1068
|
+
review_required: yes
|
|
1069
|
+
---
|
|
1070
|
+
|
|
1071
|
+
# Job brief — ${a.displayName} \xb7 ${c} ${b.role}
|
|
1072
|
+
|
|
1073
|
+
> Drafted by People agent on ${(0,d.dR)()}. JD + interview rubric + decision criteria. **Drafts only — ATS posting + scheduling go through the licensed integration.**
|
|
1074
|
+
|
|
1075
|
+
## What they actually do (day 1, week 4, month 6)
|
|
1076
|
+
|
|
1077
|
+
- **Day 1:** (concrete onboarding tasks)
|
|
1078
|
+
- **Week 4:** (first owned outcome)
|
|
1079
|
+
- **Month 6:** (proficient + delivering)
|
|
1080
|
+
|
|
1081
|
+
## Why this role exists
|
|
1082
|
+
|
|
1083
|
+
(operator: 1-2 lines on the gap this role fills. If you can't name the gap, the role isn't ready to hire for.)
|
|
1084
|
+
|
|
1085
|
+
## Must-haves (hard requirements)
|
|
1086
|
+
|
|
1087
|
+
(Each is interview-able; vague ones get cut.)
|
|
1088
|
+
|
|
1089
|
+
1.
|
|
1090
|
+
2.
|
|
1091
|
+
3.
|
|
1092
|
+
|
|
1093
|
+
## Nice-to-haves
|
|
1094
|
+
|
|
1095
|
+
1.
|
|
1096
|
+
2.
|
|
1097
|
+
|
|
1098
|
+
## Won't-haves (explicit anti-patterns)
|
|
1099
|
+
|
|
1100
|
+
(What disqualifies — saves both sides time. Examples: "no remote-only candidates outside Australian timezones", "no agency-heavy career paths".)
|
|
1101
|
+
|
|
1102
|
+
-
|
|
1103
|
+
|
|
1104
|
+
## Compensation band
|
|
1105
|
+
|
|
1106
|
+
- **Salary range:** (operator: confirm against ${a.industry??"industry"} benchmarks at ${c} level)
|
|
1107
|
+
- **Equity:** (% range or "none")
|
|
1108
|
+
- **Bonus / variable:** (target % at-plan)
|
|
1109
|
+
- **Benefits:** (super, leave, learning budget, equipment)
|
|
1110
|
+
|
|
1111
|
+
## Logistics
|
|
1112
|
+
|
|
1113
|
+
- **Location:** ${b.remoteOk?"Remote (Australia)":"Hybrid / on-site (Sydney primary)"}
|
|
1114
|
+
- **Reporting line:** (operator: name the manager + skip-level)
|
|
1115
|
+
- **Team size:** (current team count, growth plan)
|
|
1116
|
+
- **Travel:** (% expected)
|
|
1117
|
+
|
|
1118
|
+
## Interview rubric (4-stage)
|
|
1119
|
+
|
|
1120
|
+
| Stage | Format | Owner | Decision criteria |
|
|
1121
|
+
|---|---|---|---|
|
|
1122
|
+
| 1. Screen | 30-min call | Recruiter / People | Hard requirements check, salary alignment |
|
|
1123
|
+
| 2. Skills | 60-min, role-specific exercise | Hiring manager | Can-they-actually-do-the-job evidence |
|
|
1124
|
+
| 3. Team fit | 45-min with peers | Future teammates | Ways-of-working alignment |
|
|
1125
|
+
| 4. Founder | 30-min | Founder | Mission alignment, leverage potential |
|
|
1126
|
+
|
|
1127
|
+
## Bar / non-negotiables
|
|
1128
|
+
|
|
1129
|
+
- (operator: 2-3 things every offer-grade candidate must demonstrate)
|
|
1130
|
+
|
|
1131
|
+
## Approval chain
|
|
1132
|
+
|
|
1133
|
+
- [ ] People (drafted)
|
|
1134
|
+
- [ ] Hiring manager (approves brief + rubric)
|
|
1135
|
+
- [ ] Founder (sign-off on band + headcount)
|
|
1136
|
+
|
|
1137
|
+
---
|
|
1138
|
+
|
|
1139
|
+
_Generated by People agent. JD-only — actual posting + scheduling through the licensed ATS integration._
|
|
1140
|
+
`}function v(a,b){return`---
|
|
1141
|
+
type: clause-template
|
|
1142
|
+
client_id: ${a.clientId}
|
|
1143
|
+
contract_type: ${b.contractType}
|
|
1144
|
+
created: ${(0,d.st)()}
|
|
1145
|
+
status: draft
|
|
1146
|
+
review_required: yes
|
|
1147
|
+
---
|
|
1148
|
+
|
|
1149
|
+
# Clause template — ${b.contractType}
|
|
1150
|
+
|
|
1151
|
+
> Drafted by Legal agent on ${(0,d.dR)()} for ${a.displayName}. **Template only — not legal advice.** Customer's qualified counsel reviews before any signature.
|
|
1152
|
+
|
|
1153
|
+
## Intent
|
|
1154
|
+
|
|
1155
|
+
${b.intent.trim()}
|
|
1156
|
+
|
|
1157
|
+
## Governing law
|
|
1158
|
+
|
|
1159
|
+
${b.governingLaw??"(operator: jurisdiction — NSW Australia, Delaware US, etc. Default: customer's primary place of business.)"}
|
|
1160
|
+
|
|
1161
|
+
## Plain-English version (operator-readable)
|
|
1162
|
+
|
|
1163
|
+
(Two-sentence summary of what this clause does and what it protects against. If counsel and operator can't both agree on this summary, the clause language probably needs work.)
|
|
1164
|
+
|
|
1165
|
+
## Clause language (placeholder template)
|
|
1166
|
+
|
|
1167
|
+
> ⚠️ **The text below is a starting structure, NOT enforceable language.** Have qualified counsel substitute the actual operative language for the customer's jurisdiction.
|
|
1168
|
+
|
|
1169
|
+
\`\`\`
|
|
1170
|
+
[Title of clause]
|
|
1171
|
+
|
|
1172
|
+
[Operative paragraph 1 — what each party agrees to do or not do]
|
|
1173
|
+
|
|
1174
|
+
[Operative paragraph 2 — conditions, triggers, exceptions]
|
|
1175
|
+
|
|
1176
|
+
[Operative paragraph 3 — remedies / consequences if breached]
|
|
1177
|
+
|
|
1178
|
+
[Standard boilerplate hooks — severability, no waiver, governing law reference]
|
|
1179
|
+
\`\`\`
|
|
1180
|
+
|
|
1181
|
+
## Defined terms used
|
|
1182
|
+
|
|
1183
|
+
(Each term referenced in the clause language above must be defined elsewhere in the contract or here.)
|
|
1184
|
+
|
|
1185
|
+
| Term | Definition source |
|
|
1186
|
+
|---|---|
|
|
1187
|
+
| | |
|
|
1188
|
+
|
|
1189
|
+
## Risk flags
|
|
1190
|
+
|
|
1191
|
+
- **Indemnification scope** — broad indemnification clauses transfer risk in ways the operator may not realise. Counsel reviews scope.
|
|
1192
|
+
- **Liability cap** — capped liability is the default for SaaS-shaped relationships. Uncapped is unusual and worth a flag.
|
|
1193
|
+
- **Termination triggers** — material breach vs. convenience differ on notice periods + survival.
|
|
1194
|
+
- **IP assignment** — work-product IP defaults to a different party in different jurisdictions. Make it explicit.
|
|
1195
|
+
- **Compliance carve-outs** — some claims (fraud, gross negligence, IP infringement) commonly carve out of liability caps.
|
|
1196
|
+
|
|
1197
|
+
## Operator checklist before counsel review
|
|
1198
|
+
|
|
1199
|
+
- [ ] Counterparty name + entity confirmed
|
|
1200
|
+
- [ ] Jurisdiction matches customer's operating location
|
|
1201
|
+
- [ ] Defined terms cross-checked against the master agreement
|
|
1202
|
+
- [ ] Plain-English version reviewed with the business owner of this relationship
|
|
1203
|
+
- [ ] Risk flags above each addressed or explicitly accepted
|
|
1204
|
+
|
|
1205
|
+
## Approval chain
|
|
1206
|
+
|
|
1207
|
+
- [ ] Legal agent (template drafted)
|
|
1208
|
+
- [ ] Operator / business owner (intent + risk acknowledged)
|
|
1209
|
+
- [ ] **Qualified external counsel (signs off on operative language)**
|
|
1210
|
+
- [ ] Founder (final sign-off)
|
|
1211
|
+
|
|
1212
|
+
---
|
|
1213
|
+
|
|
1214
|
+
_Generated by Legal agent. **Not legal advice.** Templates start a conversation with qualified counsel; they don't replace it._
|
|
1215
|
+
`}function w(a,b){return`---
|
|
1216
|
+
type: workflow-blueprint
|
|
1217
|
+
client_id: ${a.clientId}
|
|
1218
|
+
created: ${(0,d.st)()}
|
|
1219
|
+
status: draft
|
|
1220
|
+
review_required: yes
|
|
1221
|
+
---
|
|
1222
|
+
|
|
1223
|
+
# Workflow blueprint — ${a.displayName}
|
|
1224
|
+
|
|
1225
|
+
> Drafted by Automation agent on ${(0,d.dR)()}. Operator-readable spec for an automation. **Implementation agent's \`scaffold_n8n_workflow\` tool produces the importable n8n JSON from this blueprint.**
|
|
1226
|
+
|
|
1227
|
+
## Description
|
|
1228
|
+
|
|
1229
|
+
${b.description??`Automation triggered by "${b.trigger}" performing "${b.action}".`}
|
|
1230
|
+
|
|
1231
|
+
## Trigger
|
|
1232
|
+
|
|
1233
|
+
- **Type:** ${b.trigger.trim()}
|
|
1234
|
+
- **Cadence:** ${b.schedule??"event-driven (runs on each trigger event)"}
|
|
1235
|
+
- **Source system:** (operator: where the trigger event originates — webhook URL / cron / inbox watcher)
|
|
1236
|
+
|
|
1237
|
+
## Action
|
|
1238
|
+
|
|
1239
|
+
${b.action.trim()}
|
|
1240
|
+
|
|
1241
|
+
## Step-by-step flow
|
|
1242
|
+
|
|
1243
|
+
1. **Trigger fires** — receives ${b.trigger}
|
|
1244
|
+
2. **Validate input** — schema check, reject malformed payloads with logged reason
|
|
1245
|
+
3. **Branch logic** — (operator: name the conditions that route to different actions)
|
|
1246
|
+
4. **Primary action** — ${b.action}
|
|
1247
|
+
5. **Side effects** — (notify / log / write back to source system)
|
|
1248
|
+
6. **Idempotency check** — same trigger payload twice doesn't double-action
|
|
1249
|
+
|
|
1250
|
+
## Failure modes (each needs a handler)
|
|
1251
|
+
|
|
1252
|
+
- **Source system unavailable** — retry with exponential backoff, max N attempts, fail-loud after
|
|
1253
|
+
- **Rate-limited** — queue + backoff, never drop silently
|
|
1254
|
+
- **Malformed payload** — reject with logged reason, alert operator if rate exceeds threshold
|
|
1255
|
+
- **Downstream action failed** — rollback or compensating action; don't leave half-state
|
|
1256
|
+
- **Schedule misfire** (if scheduled) — detect missed runs on next fire, decide catch-up vs skip
|
|
1257
|
+
|
|
1258
|
+
## Observability requirements
|
|
1259
|
+
|
|
1260
|
+
- [ ] Every run logs: timestamp, trigger payload (sanitised), success/failure, duration
|
|
1261
|
+
- [ ] Failed runs alert (channel: operator's preferred — email / Telegram / Slack)
|
|
1262
|
+
- [ ] Daily digest: success count, failure count, average duration
|
|
1263
|
+
|
|
1264
|
+
## Hard rules
|
|
1265
|
+
|
|
1266
|
+
- **Idempotent by construction.** Same trigger twice = same end state, not double action.
|
|
1267
|
+
- **No customer credentials in workflow.** Use the platform's secret manager.
|
|
1268
|
+
- **Cross-customer isolation.** A Tarheel workflow never reads ${"Tarheel Logistics"===a.displayName?"another customer's":"Tarheel's"} data. Every workflow scoped to one customer.
|
|
1269
|
+
- **Surface, don't auto-action exceptions.** Anything that touches money / legal / customer-visible: human-approval gate.
|
|
1270
|
+
- **Reversible by default.** New automations launch in dry-run mode; flip to live after a week of clean runs.
|
|
1271
|
+
|
|
1272
|
+
## Estimated effort
|
|
1273
|
+
|
|
1274
|
+
- **Build:** (operator: hours estimate + confidence)
|
|
1275
|
+
- **Maintenance:** (ongoing time per month — every automation has a maintenance tail)
|
|
1276
|
+
|
|
1277
|
+
## Approval chain
|
|
1278
|
+
|
|
1279
|
+
- [ ] Automation (blueprint drafted)
|
|
1280
|
+
- [ ] Operator (operational fit + responsibility for monitoring)
|
|
1281
|
+
- [ ] Implementation (technical feasibility + scaffolds the n8n JSON)
|
|
1282
|
+
- [ ] Founder (if cross-functional or > approval threshold)
|
|
1283
|
+
|
|
1284
|
+
---
|
|
1285
|
+
|
|
1286
|
+
_Generated by Automation agent. Blueprint pairs with Implementation's \`scaffold_n8n_workflow\` tool for the importable JSON._
|
|
1287
|
+
`}},57477:(a,b,c)=>{"use strict";c.d(b,{B0:()=>t,Ip:()=>k,T8:()=>q,_T:()=>p,dR:()=>r,mx:()=>o,nj:()=>v,st:()=>s,xB:()=>l,yv:()=>u,zG:()=>n,zY:()=>w});var d=c(73024),e=c(76760),f=c.n(e),g=c(48161),h=c.n(g);let i=/^[a-z0-9](?:[a-z0-9-]{0,58}[a-z0-9])?$/,j=["_inbox/","_Workflows/","00_Org/","01_Customers/","02_Sales/","03_Product/","04_Operations/","05_Finance/","06_Legal/","Permanent/","Wiki/"];function k(a){if(!i.test(a))throw Error(`Invalid clientId: ${a}`);return f().join(process.env.LEEDAB_BRAINS_ROOT?f().resolve(process.env.LEEDAB_BRAINS_ROOT):f().resolve(h().homedir(),"leedab-brains"),a)}async function l(a){try{return(await d.promises.stat(k(a))).isDirectory()}catch{return!1}}function m(a,b){if(b.includes("..")||f().isAbsolute(b))throw Error(`Refused: path contains traversal or is absolute: ${b}`);if(!j.some(a=>b.startsWith(a)))throw Error(`Refused: path "${b}" doesn't start with an allowed prefix (${j.join(", ")})`);let c=k(a),d=f().resolve(c,b);if(!d.startsWith(c+f().sep))throw Error(`Refused: path resolves outside brain root: ${b}`);return d}async function n(a,b){try{if(!await l(a))return{ok:!1,error:`No brain at ${k(a)}. Run bin/onboard-customer.sh first.`};let c=m(a,b),e=await d.promises.readFile(c,"utf8");return{ok:!0,body:e,path:c}}catch(a){return{ok:!1,error:a.message}}}async function o(a,b,c){try{if(!await l(a))return{ok:!1,error:`No brain at ${k(a)}. Run bin/onboard-customer.sh first.`};let e=m(a,b);return await d.promises.mkdir(f().dirname(e),{recursive:!0}),await d.promises.writeFile(e,c,"utf8"),{ok:!0,path:e,bytes:Buffer.byteLength(c,"utf8")}}catch(a){return{ok:!1,error:a.message}}}async function p(a,b,c={}){try{if(!await l(a))return{ok:!1,error:`No brain at ${k(a)}.`};let e=b.endsWith("/")?b:b+"/",g=m(a,e+"__list_sentinel__"),h=f().dirname(g),i=[];try{i=await d.promises.readdir(h)}catch{return{ok:!0,entries:[]}}let j=c.extension??".md",n=c.sinceISO?Date.parse(c.sinceISO):0,o=[];for(let a of i){if(j&&!a.endsWith(j))continue;let b=f().join(h,a),c=await d.promises.stat(b);c.isFile()&&(n&&c.mtimeMs<n||o.push({relativePath:e+a,absolutePath:b,bytes:c.size,modifiedISO:new Date(c.mtimeMs).toISOString()}))}return o.sort((a,b)=>Date.parse(b.modifiedISO)-Date.parse(a.modifiedISO)),{ok:!0,entries:c.limit?o.slice(0,c.limit):o}}catch(a){return{ok:!1,error:a.message}}}async function q(a,b,c){try{if(!await l(a))return{ok:!1,error:`No brain at ${k(a)}. Run bin/onboard-customer.sh first.`};let e=m(a,b);await d.promises.mkdir(f().dirname(e),{recursive:!0});let g="";try{let a=await d.promises.readFile(e,"utf8");a.length>0&&!a.endsWith("\n")&&(g="\n")}catch{}return await d.promises.appendFile(e,g+c,"utf8"),{ok:!0,path:e,bytes:Buffer.byteLength(g+c,"utf8")}}catch(a){return{ok:!1,error:a.message}}}function r(){return new Date().toISOString().slice(0,10)}function s(){return new Date().toISOString()}function t(a){return a.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,60)}function u(a){if(!a.startsWith("---\n")&&!a.startsWith("---\r\n"))return{frontmatter:{},body:a};let b=a.indexOf("\n---",4);if(-1===b)return{frontmatter:{},body:a};let c=a.slice(4,b),d=a.slice(b+4).replace(/^\r?\n/,""),e={},f=null,g=[],h=()=>{null!==f&&(e[f]=[...g],g.length=0,f=null)};for(let a of c.split(/\r?\n/)){if(""===a.trim())continue;let b=a.match(/^\s*-\s+(.*)$/);if(b&&null!==f){let a=b[1].trim(),c=a.startsWith('"')&&a.endsWith('"')||a.startsWith("'")&&a.endsWith("'")?a.slice(1,-1):a;g.push(c);continue}let c=a.match(/^([A-Za-z0-9_\-.]+)\s*:\s*(.*)$/);if(c){h();let a=c[1],b=c[2];if(""===b){f=a;continue}e[a]=function(a){let b=a.trim();if(""===b||"null"===b||"~"===b)return null;if("true"===b)return!0;if("false"===b)return!1;if(b.startsWith('"')&&b.endsWith('"'))return b.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\");if(b.startsWith("'")&&b.endsWith("'"))return b.slice(1,-1).replace(/\\'/g,"'");if(b.startsWith("[")&&b.endsWith("]")){let a=b.slice(1,-1).trim();return a?a.split(/\s*,\s*/).map(a=>{let b=a.trim();return b.startsWith('"')&&b.endsWith('"')||b.startsWith("'")&&b.endsWith("'")?b.slice(1,-1):b}):[]}return/^-?\d+$/.test(b)||/^-?\d*\.\d+$/.test(b)?Number(b):b}(b)}}return h(),{frontmatter:e,body:d}}function v(a,b){let c=Object.keys(a);if(0===c.length)return b.startsWith("---"),b;let d=["---"];for(let b of c){var e;d.push(`${b}: ${null===(e=a[b])?"null":"boolean"==typeof e||"number"==typeof e?String(e):Array.isArray(e)?"["+e.map(a=>/[,\s:#]/.test(a)?`"${a.replace(/"/g,'\\"')}"`:a).join(", ")+"]":""===e||/^[\d\s]/.test(e)||/[:#\n"']/.test(e)||"true"===e||"false"===e||"null"===e||"~"===e?`"${e.replace(/"/g,'\\"')}"`:e}`)}return d.push("---",""),d.join("\n")+b.replace(/^\n+/,"")}function w(a){if(!a||"object"!=typeof a||Array.isArray(a))return{ok:!1,error:"patch must be a flat object"};let b={};for(let[c,d]of Object.entries(a)){if(!/^[A-Za-z0-9_\-.]+$/.test(c))return{ok:!1,error:`invalid frontmatter key "${c}" (allowed: letters / digits / _ - .)`};if(null===d||"string"==typeof d||"number"==typeof d||"boolean"==typeof d)b[c]=d;else{if(!(Array.isArray(d)&&d.every(a=>"string"==typeof a)))return{ok:!1,error:`value for "${c}" must be string / number / boolean / null / string[] — got ${typeof d}`};b[c]=d}}return{ok:!0,patch:b}}},78335:()=>{},96487:()=>{}};
|