denchclaw 3.0.8 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apps/web/.next/standalone/apps/web/.next/BUILD_ID +1 -1
- package/apps/web/.next/standalone/apps/web/.next/app-build-manifest.json +235 -225
- package/apps/web/.next/standalone/apps/web/.next/app-path-routes-manifest.json +50 -49
- package/apps/web/.next/standalone/apps/web/.next/build-manifest.json +2 -2
- package/apps/web/.next/standalone/apps/web/.next/cache/config.json +3 -3
- package/apps/web/.next/standalone/apps/web/.next/prerender-manifest.json +3 -3
- package/apps/web/.next/standalone/apps/web/.next/required-server-files.json +1 -1
- package/apps/web/.next/standalone/apps/web/.next/routes-manifest.json +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/apps/cron/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/apps/proxy/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/apps/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/apps/serve/[...path]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/apps/store/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/apps/webhooks/[...path]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/active/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/runs/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/stop/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/stop/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/stream/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/subagents/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/callback/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/callback/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/connect/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/connect/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/connections/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/disconnect/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/disconnect/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/status/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/composio/toolkits/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/crm/calendar/[id]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/crm/calendar/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/crm/companies/[id]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/crm/enrich/[type]/[id]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/crm/inbox/[threadId]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/crm/inbox/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/crm/people/[id]/activity/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/crm/people/[id]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/crm/people/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/crm/photos/proxy/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/crm/photos/sync/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/heartbeat/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/jobs/[jobId]/runs/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/jobs/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/runs/[sessionId]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/runs/search-transcript/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/feedback/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/feedback/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/gateway/channels/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/gateway/chat/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/gateway/chat/stream/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/gateway/sessions/[id]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/gateway/sessions/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/integrations/[id]/toggle/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/integrations/repair/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/integrations/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/memories/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/onboarding/connections/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/onboarding/connections/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/onboarding/dench-cloud/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/onboarding/dench-cloud/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/onboarding/identity/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/onboarding/identity/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/onboarding/skill-template/consume/route.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/onboarding/skill-template/consume/route.js.nft.json +1 -0
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/onboarding/skill-template/consume/route_client-reference-manifest.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/onboarding/state/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/onboarding/state/route.js.nft.json +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/onboarding/state/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/onboarding/sync/progress/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/onboarding/sync/start/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/onboarding/sync/start/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/profiles/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/profiles/switch/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/sessions/[sessionId]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/settings/cloud/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/settings/mcp/connect/callback/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/settings/mcp/connect/start/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/settings/mcp/connect/token/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/settings/mcp/probe/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/settings/mcp/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/skills/[slug]/content/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/skills/[slug]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/skills/browse/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/skills/install/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/sync/poll-tick/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/sync/refresh/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/sync/status/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/terminal/port/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/voice/speech/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/voice/speech/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/voice/transcribe/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/voice/transcribe/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/voice/voices/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/voice/voices/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/[id]/messages/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/[id]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/assets/[...path]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/browse/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/browse-file/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/context/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/copy/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/db/introspect/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/db/query/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/delete/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/delete/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/enrichment-status/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/execute/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/file/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/init/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/init/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/link-preview/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/list/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/mkdir/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/move/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/actions/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/actions/runs/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/display-field/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/enrich/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/[id]/content/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/[id]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/bulk-delete/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/options/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/fields/[fieldId]/enum-rename/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/fields/[fieldId]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/fields/reorder/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/fields/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/icon/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/views/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/open-file/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/path-info/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/query/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/raw-file/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/rename/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/reports/execute/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/reports/execute/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/search-index/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/suggest-files/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/switch/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/switch/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/thumbnail/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/tree/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/upload/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/upload/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/virtual-file/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/watch/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/write-binary/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/onboarding/page.js +4 -4
- package/apps/web/.next/standalone/apps/web/.next/server/app/onboarding/page.js.nft.json +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/page.js +17 -15
- package/apps/web/.next/standalone/apps/web/.next/server/app/page.js.nft.json +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/workspace/page_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app-paths-manifest.json +50 -49
- package/apps/web/.next/standalone/apps/web/.next/server/chunks/17048.js +54 -1
- package/apps/web/.next/standalone/apps/web/.next/server/chunks/44877.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/chunks/6787.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/chunks/69169.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/chunks/9046.js +12 -0
- package/apps/web/.next/standalone/apps/web/.next/server/chunks/92326.js +54 -0
- package/apps/web/.next/standalone/apps/web/.next/server/chunks/94667.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/server/functions-config-manifest.json +15 -14
- package/apps/web/.next/standalone/apps/web/.next/server/pages/500.html +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/pages-manifest.json +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/server-reference-manifest.json +1 -1
- package/apps/web/.next/standalone/apps/web/.next/static/YujBCwcrZa7z3DMdLJCgk/_buildManifest.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/17f37b32-54c416f1df79f519.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/29545-3370e8cf127fa226.js +1 -0
- package/apps/web/.next/{static/chunks/42368-2351626c2a79f605.js → standalone/apps/web/.next/static/chunks/65319-143f1b50bf668cae.js} +16 -16
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/{63040-764aa2a16a3ce5a5.js → 69561-8b3c6160ae24db76.js} +2 -2
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/cron/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/proxy/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/serve/[...path]/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/store/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/webhooks/[...path]/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/active/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/runs/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/stop/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/stream/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/subagents/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/composio/callback/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/composio/connect/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/composio/connections/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/composio/disconnect/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/composio/status/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/composio/toolkits/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/crm/calendar/[id]/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/crm/calendar/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/crm/companies/[id]/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/crm/enrich/[type]/[id]/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/crm/inbox/[threadId]/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/crm/inbox/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/crm/people/[id]/activity/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/crm/people/[id]/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/crm/people/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/crm/photos/proxy/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/crm/photos/sync/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/heartbeat/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/jobs/[jobId]/runs/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/jobs/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/runs/[sessionId]/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/runs/search-transcript/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/feedback/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/gateway/channels/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/gateway/chat/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/gateway/chat/stream/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/gateway/sessions/[id]/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/gateway/sessions/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/integrations/[id]/toggle/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/integrations/repair/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/integrations/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/memories/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/onboarding/connections/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/onboarding/dench-cloud/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/onboarding/identity/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/onboarding/skill-template/consume/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/onboarding/state/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/onboarding/sync/progress/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/onboarding/sync/start/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/profiles/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/profiles/switch/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/sessions/[sessionId]/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/sessions/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/settings/cloud/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/settings/mcp/connect/callback/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/settings/mcp/connect/start/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/settings/mcp/connect/token/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/settings/mcp/probe/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/settings/mcp/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/skills/[slug]/content/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/skills/[slug]/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/skills/browse/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/skills/install/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/skills/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/sync/poll-tick/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/sync/refresh/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/sync/status/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/terminal/port/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/voice/speech/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/voice/transcribe/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/voice/voices/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/[id]/messages/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/[id]/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/assets/[...path]/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/browse/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/browse-file/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/context/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/copy/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/db/introspect/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/db/query/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/delete/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/enrichment-status/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/execute/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/file/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/init/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/link-preview/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/list/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/mkdir/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/move/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/actions/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/actions/runs/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/display-field/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/enrich/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/content/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/bulk-delete/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/options/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/enum-rename/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/reorder/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/icon/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/views/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/open-file/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/path-info/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/query/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/raw-file/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/rename/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/reports/execute/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/search-index/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/suggest-files/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/switch/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/thumbnail/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/tree/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/upload/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/virtual-file/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/watch/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/write-binary/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/{layout-1593fe8efa94d5d8.js → layout-89a2079283d3e953.js} +1 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/onboarding/page-8f66cb8b03f9fdd7.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/page-2b285c827b86d6d5.js +1 -0
- package/apps/web/.next/standalone/apps/web/.next/static/css/dd3ce8da3e14c080.css +1 -0
- package/apps/web/.next/standalone/apps/web/server.js +1 -1
- package/apps/web/.next/standalone/extensions/posthog-analytics/lib/build-env.js +1 -1
- package/apps/web/.next/standalone/package.json +1 -1
- package/apps/web/.next/static/YujBCwcrZa7z3DMdLJCgk/_buildManifest.js +1 -0
- package/apps/web/.next/static/chunks/17f37b32-54c416f1df79f519.js +1 -0
- package/apps/web/.next/static/chunks/29545-3370e8cf127fa226.js +1 -0
- package/apps/web/.next/{standalone/apps/web/.next/static/chunks/42368-2351626c2a79f605.js → static/chunks/65319-143f1b50bf668cae.js} +16 -16
- package/apps/web/.next/static/chunks/{63040-764aa2a16a3ce5a5.js → 69561-8b3c6160ae24db76.js} +2 -2
- package/apps/web/.next/static/chunks/app/api/apps/cron/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/apps/proxy/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/apps/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/apps/serve/[...path]/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/apps/store/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/apps/webhooks/[...path]/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/chat/active/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/chat/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/chat/runs/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/chat/stop/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/chat/stream/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/chat/subagents/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/composio/callback/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/composio/connect/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/composio/connections/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/composio/disconnect/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/composio/status/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/composio/toolkits/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/crm/calendar/[id]/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/crm/calendar/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/crm/companies/[id]/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/crm/enrich/[type]/[id]/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/crm/inbox/[threadId]/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/crm/inbox/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/crm/people/[id]/activity/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/crm/people/[id]/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/crm/people/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/crm/photos/proxy/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/crm/photos/sync/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/cron/heartbeat/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/cron/jobs/[jobId]/runs/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/cron/jobs/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/cron/runs/[sessionId]/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/cron/runs/search-transcript/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/feedback/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/gateway/channels/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/gateway/chat/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/gateway/chat/stream/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/gateway/sessions/[id]/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/gateway/sessions/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/integrations/[id]/toggle/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/integrations/repair/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/integrations/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/memories/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/onboarding/connections/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/onboarding/dench-cloud/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/onboarding/identity/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/onboarding/skill-template/consume/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/onboarding/state/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/onboarding/sync/progress/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/onboarding/sync/start/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/profiles/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/profiles/switch/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/sessions/[sessionId]/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/sessions/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/settings/cloud/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/settings/mcp/connect/callback/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/settings/mcp/connect/start/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/settings/mcp/connect/token/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/settings/mcp/probe/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/settings/mcp/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/skills/[slug]/content/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/skills/[slug]/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/skills/browse/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/skills/install/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/skills/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/sync/poll-tick/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/sync/refresh/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/sync/status/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/terminal/port/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/voice/speech/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/voice/transcribe/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/voice/voices/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/web-sessions/[id]/messages/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/web-sessions/[id]/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/web-sessions/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/assets/[...path]/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/browse/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/browse-file/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/context/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/copy/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/db/introspect/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/db/query/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/delete/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/enrichment-status/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/execute/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/file/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/init/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/link-preview/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/list/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/mkdir/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/move/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/actions/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/actions/runs/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/display-field/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/enrich/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/content/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/bulk-delete/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/options/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/enum-rename/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/reorder/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/icon/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/views/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/objects/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/open-file/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/path-info/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/query/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/raw-file/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/rename/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/reports/execute/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/search-index/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/suggest-files/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/switch/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/thumbnail/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/tree/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/upload/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/virtual-file/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/watch/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/api/workspace/write-binary/route-9bf5b8cf5e12bb20.js +1 -0
- package/apps/web/.next/static/chunks/app/{layout-1593fe8efa94d5d8.js → layout-89a2079283d3e953.js} +1 -1
- package/apps/web/.next/static/chunks/app/onboarding/page-8f66cb8b03f9fdd7.js +1 -0
- package/apps/web/.next/static/chunks/app/page-2b285c827b86d6d5.js +1 -0
- package/apps/web/.next/static/css/dd3ce8da3e14c080.css +1 -0
- package/assets/seed/workspace.duckdb +0 -0
- package/extensions/posthog-analytics/lib/build-env.js +1 -1
- package/package.json +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/chunks/7180.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/server/chunks/7985.js +0 -12
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/41791-6a1baef5587a034b.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/cron/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/proxy/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/serve/[...path]/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/store/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/apps/webhooks/[...path]/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/active/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/runs/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/stop/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/stream/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/chat/subagents/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/composio/callback/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/composio/connect/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/composio/connections/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/composio/disconnect/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/composio/status/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/composio/toolkits/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/crm/calendar/[id]/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/crm/calendar/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/crm/companies/[id]/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/crm/enrich/[type]/[id]/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/crm/inbox/[threadId]/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/crm/inbox/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/crm/people/[id]/activity/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/crm/people/[id]/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/crm/people/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/crm/photos/proxy/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/crm/photos/sync/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/heartbeat/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/jobs/[jobId]/runs/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/jobs/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/runs/[sessionId]/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/cron/runs/search-transcript/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/feedback/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/gateway/channels/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/gateway/chat/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/gateway/chat/stream/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/gateway/sessions/[id]/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/gateway/sessions/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/integrations/[id]/toggle/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/integrations/repair/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/integrations/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/memories/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/onboarding/connections/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/onboarding/dench-cloud/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/onboarding/identity/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/onboarding/state/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/onboarding/sync/progress/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/onboarding/sync/start/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/profiles/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/profiles/switch/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/sessions/[sessionId]/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/sessions/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/settings/cloud/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/settings/mcp/connect/callback/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/settings/mcp/connect/start/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/settings/mcp/connect/token/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/settings/mcp/probe/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/settings/mcp/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/skills/[slug]/content/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/skills/[slug]/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/skills/browse/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/skills/install/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/skills/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/sync/poll-tick/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/sync/refresh/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/sync/status/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/terminal/port/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/voice/speech/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/voice/transcribe/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/voice/voices/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/[id]/messages/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/[id]/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/web-sessions/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/assets/[...path]/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/browse/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/browse-file/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/context/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/copy/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/db/introspect/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/db/query/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/delete/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/enrichment-status/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/execute/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/file/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/init/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/link-preview/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/list/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/mkdir/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/move/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/actions/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/actions/runs/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/display-field/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/enrich/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/content/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/bulk-delete/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/options/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/enum-rename/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/reorder/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/icon/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/views/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/objects/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/open-file/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/path-info/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/query/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/raw-file/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/rename/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/reports/execute/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/search-index/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/suggest-files/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/switch/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/thumbnail/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/tree/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/upload/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/virtual-file/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/watch/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/api/workspace/write-binary/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/onboarding/page-30326ac19cf2ce87.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/page-e98634d56d0b3903.js +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/css/a6925fe52baded8b.css +0 -1
- package/apps/web/.next/standalone/apps/web/.next/static/tXOdT0964sqzfxZm_X_3S/_buildManifest.js +0 -1
- package/apps/web/.next/static/chunks/41791-6a1baef5587a034b.js +0 -1
- package/apps/web/.next/static/chunks/app/api/apps/cron/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/apps/proxy/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/apps/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/apps/serve/[...path]/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/apps/store/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/apps/webhooks/[...path]/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/chat/active/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/chat/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/chat/runs/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/chat/stop/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/chat/stream/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/chat/subagents/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/composio/callback/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/composio/connect/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/composio/connections/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/composio/disconnect/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/composio/status/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/composio/toolkits/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/crm/calendar/[id]/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/crm/calendar/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/crm/companies/[id]/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/crm/enrich/[type]/[id]/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/crm/inbox/[threadId]/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/crm/inbox/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/crm/people/[id]/activity/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/crm/people/[id]/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/crm/people/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/crm/photos/proxy/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/crm/photos/sync/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/cron/heartbeat/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/cron/jobs/[jobId]/runs/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/cron/jobs/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/cron/runs/[sessionId]/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/cron/runs/search-transcript/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/feedback/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/gateway/channels/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/gateway/chat/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/gateway/chat/stream/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/gateway/sessions/[id]/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/gateway/sessions/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/integrations/[id]/toggle/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/integrations/repair/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/integrations/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/memories/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/onboarding/connections/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/onboarding/dench-cloud/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/onboarding/identity/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/onboarding/state/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/onboarding/sync/progress/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/onboarding/sync/start/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/profiles/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/profiles/switch/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/sessions/[sessionId]/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/sessions/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/settings/cloud/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/settings/mcp/connect/callback/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/settings/mcp/connect/start/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/settings/mcp/connect/token/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/settings/mcp/probe/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/settings/mcp/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/skills/[slug]/content/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/skills/[slug]/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/skills/browse/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/skills/install/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/skills/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/sync/poll-tick/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/sync/refresh/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/sync/status/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/terminal/port/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/voice/speech/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/voice/transcribe/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/voice/voices/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/web-sessions/[id]/messages/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/web-sessions/[id]/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/web-sessions/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/assets/[...path]/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/browse/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/browse-file/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/context/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/copy/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/db/introspect/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/db/query/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/delete/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/enrichment-status/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/execute/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/file/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/init/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/link-preview/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/list/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/mkdir/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/move/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/actions/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/actions/runs/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/display-field/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/enrich/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/content/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/[id]/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/bulk-delete/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/options/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/entries/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/enum-rename/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/[fieldId]/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/reorder/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/fields/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/icon/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/objects/[name]/views/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/objects/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/open-file/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/path-info/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/query/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/raw-file/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/rename/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/reports/execute/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/search-index/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/suggest-files/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/switch/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/thumbnail/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/tree/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/upload/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/virtual-file/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/watch/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/api/workspace/write-binary/route-fd41cffcd55fafe8.js +0 -1
- package/apps/web/.next/static/chunks/app/onboarding/page-30326ac19cf2ce87.js +0 -1
- package/apps/web/.next/static/chunks/app/page-e98634d56d0b3903.js +0 -1
- package/apps/web/.next/static/css/a6925fe52baded8b.css +0 -1
- package/apps/web/.next/static/tXOdT0964sqzfxZm_X_3S/_buildManifest.js +0 -1
- /package/apps/web/.next/standalone/apps/web/.next/static/{tXOdT0964sqzfxZm_X_3S → YujBCwcrZa7z3DMdLJCgk}/_ssgManifest.js +0 -0
- /package/apps/web/.next/static/{tXOdT0964sqzfxZm_X_3S → YujBCwcrZa7z3DMdLJCgk}/_ssgManifest.js +0 -0
|
@@ -1 +1,54 @@
|
|
|
1
|
-
"use strict";exports.id=17048,exports.ids=[17048],exports.modules={117048:(a,b,c)=>{c.r(b),c.d(b,{__iconNode:()=>e,default:()=>f});var d=c(863928);let e=[["path",{d:"M10 12.01h.01",key:"7rp0yl"}],["path",{d:"M18 8v4a8 8 0 0 1-1.07 4",key:"1st48v"}],["circle",{cx:"10",cy:"12",r:"4",key:"19levz"}],["rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",key:"izxlao"}]],f=(0,d.A)("turntable",e)}};
|
|
1
|
+
"use strict";exports.id=17048,exports.ids=[17048],exports.modules={23581:(a,b,c)=>{c.d(b,{Cf:()=>q,Es:()=>s,L3:()=>t,c7:()=>r,lG:()=>n,rr:()=>u});var d=c(736927);c(115962);var e=c(713821),f=c(60972),g=c(117696),h=c(525697),i=c(833290),j=c(665358),k=c(176334),l=c(547193),m=c(165046);function n({...a}){return(0,d.jsx)(e.D,{"data-slot":"dialog",...a})}function o({...a}){return(0,d.jsx)(f.Z,{"data-slot":"dialog-portal",...a})}function p({className:a,...b}){return(0,d.jsx)(g.X,{"data-slot":"dialog-overlay",className:(0,m.cn)("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 fixed inset-0 z-[10000] bg-black/30 backdrop-blur-sm duration-100",a),...b})}function q({className:a,children:b,showCloseButton:c=!0,...e}){return(0,d.jsxs)(o,{children:[(0,d.jsx)(p,{}),(0,d.jsxs)(h.h,{"data-slot":"dialog-content",className:(0,m.cn)("fixed top-1/2 left-1/2 z-[10001] w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 sm:max-w-sm","grid gap-4 rounded-3xl p-5 text-sm outline-none","bg-white dark:bg-neutral-900 border border-white/10 dark:border-white/10 shadow-[0_0_25px_0_rgba(0,0,0,0.16)]","data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 duration-100",a),...e,children:[b,c&&(0,d.jsxs)(i.H,{"data-slot":"dialog-close",className:"absolute top-3 right-3 p-1.5 rounded-full transition-all hover:bg-neutral-400/15 cursor-pointer outline-none",style:{color:"var(--color-text-muted)"},children:[(0,d.jsx)(l.default,{className:"size-4"}),(0,d.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function r({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"dialog-header",className:(0,m.cn)("flex flex-col gap-1.5",a),...b})}function s({className:a,children:b,...c}){return(0,d.jsx)("div",{"data-slot":"dialog-footer",className:(0,m.cn)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",a),...c,children:b})}function t({className:a,...b}){return(0,d.jsx)(j.L,{"data-slot":"dialog-title",className:(0,m.cn)("text-[15px] leading-none font-semibold",a),style:{color:"var(--color-text)"},...b})}function u({className:a,...b}){return(0,d.jsx)(k.r,{"data-slot":"dialog-description",className:(0,m.cn)("text-[13px] leading-relaxed",a),style:{color:"var(--color-text-muted)"},...b})}},57137:(a,b,c)=>{c.d(b,{N:()=>i});var d=c(736927),e=c(115962),f=c(249855),g=c(66008),h=c(23581);function i({onWorkspaceSwitch:a,onWorkspaceDelete:b,onCreateWorkspace:c,activeWorkspaceHint:i,trigger:j}){let[k,l]=(0,e.useState)([]),[m,n]=(0,e.useState)(null),[o,p]=(0,e.useState)(!1),[q,r]=(0,e.useState)(!1),[s,t]=(0,e.useState)(null),[u,v]=(0,e.useState)(null),[w,x]=(0,e.useState)(null),y=(0,e.useRef)(null),[z,A]=(0,e.useState)(null),B=(0,e.useCallback)(async()=>{try{let a=await fetch("/api/workspace/list"),b=await a.json(),c=(b.workspaces??b.profiles??[]).filter(a=>!!a.workspaceDir),d=b.activeWorkspace??b.activeProfile??null,e=d&&c.some(a=>a.name===d)?d:c.find(a=>a.isActive)?.name??c[0]?.name??null;l(c),n(e)}catch{}},[]),C=async b=>{if(b===m)return void p(!1);x(null),r(!0);try{let c=await fetch("/api/workspace/switch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({workspace:b})});if(c.ok){let b=await c.json();n(b.activeWorkspace??b.activeProfile??null),a?.(),B()}else{let a=await c.json().catch(()=>({}));x(a.error??"Failed to switch workspace.")}}catch{x("Failed to switch workspace.")}finally{r(!1),p(!1)}},D=async c=>{x(null),t(c),v(null);try{let d=await fetch("/api/workspace/delete",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({workspace:c})});if(!d.ok){let a=await d.json().catch(()=>({}));x(a.error??`Failed to delete workspace '${c}'.`);return}c===m&&a?.(),b?.(c),await B()}catch{x(`Failed to delete workspace '${c}'.`)}finally{t(null)}},E=k.length>0,F=()=>{E&&p(a=>!a)};return j||E?(0,d.jsxs)("div",{className:`relative ${j?"flex-1 min-w-0":""}`,ref:y,children:[j?j({isOpen:o,onClick:F,activeWorkspace:m,switching:q}):(0,d.jsxs)("button",{onClick:F,disabled:q,className:"flex items-center gap-1.5 px-2 py-1 rounded-md text-xs transition-colors hover:bg-[var(--color-surface-hover)] disabled:opacity-50",style:{color:"var(--color-text-secondary)"},title:"Switch workspace",children:[(0,d.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,d.jsx)("path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"})}),(0,d.jsx)("span",{className:"truncate max-w-[120px]",children:m??"No workspace"}),(0,d.jsx)("svg",{className:`w-3 h-3 transition-transform ${o?"rotate-180":""}`,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),E&&o&&z&&"undefined"!=typeof document&&(0,f.createPortal)((0,d.jsxs)("div",{"data-profile-switcher-portal":!0,className:"fixed w-64 rounded-2xl overflow-hidden z-[1000] p-1 bg-neutral-100/[0.67] dark:bg-neutral-900/[0.67] border border-white dark:border-white/10 backdrop-blur-md shadow-[0_0_25px_0_rgba(0,0,0,0.16)]",style:{top:z.top,left:z.left},children:[(0,d.jsx)("div",{className:"px-2.5 py-1.5 text-[11px] font-medium",style:{color:"var(--color-text-muted)"},children:"Workspaces"}),(0,d.jsx)("div",{className:"max-h-64 overflow-y-auto",children:k.map(a=>{let b=a.name===m;return(0,d.jsxs)("div",{className:"group flex items-center rounded-xl transition-all hover:bg-neutral-400/15 cursor-pointer",onClick:()=>void C(a.name),style:{color:"var(--color-text)"},children:[(0,d.jsxs)("div",{className:"flex-1 min-w-0 flex items-center gap-2 px-2.5 py-1.5",children:[(0,d.jsx)("span",{className:"w-2 h-2 rounded-full shrink-0",style:{background:b?"var(--color-success)":"transparent",border:b?"none":"1px solid var(--color-border-strong)"}}),(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsx)("span",{className:"truncate font-medium text-[13px] block",children:a.name}),(0,d.jsx)("span",{className:"text-[11px] truncate block mt-0.5",style:{color:"var(--color-text-muted)"},children:a.workspaceDir?a.workspaceDir.replace(/^\/Users\/[^/]+/,"~").replace(/^\/home\/[^/]+/,"~").replace(/^[A-Za-z]:[/\\]Users[/\\][^/\\]+/,"~"):"No workspace yet"})]}),b&&(0,d.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded-full shrink-0 bg-neutral-400/15",style:{color:"var(--color-text-muted)"},children:"Active"})]}),a.workspaceDir&&(0,d.jsxs)(g.rI,{children:[(0,d.jsx)(g.ty,{onClick:a=>a.stopPropagation(),className:"p-1 mr-1 rounded-lg transition-all opacity-0 group-hover:opacity-100 hover:bg-neutral-400/25 shrink-0 cursor-pointer",style:{color:"var(--color-text-muted)"},children:(0,d.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,d.jsx)("circle",{cx:"12",cy:"5",r:"1"}),(0,d.jsx)("circle",{cx:"12",cy:"12",r:"1"}),(0,d.jsx)("circle",{cx:"12",cy:"19",r:"1"})]})}),(0,d.jsx)(g.SQ,{side:"right",align:"start",sideOffset:4,className:"min-w-[140px]",children:(0,d.jsxs)(g._2,{variant:"destructive",onSelect:()=>v(a.name),children:[(0,d.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,d.jsx)("path",{d:"M3 6h18"}),(0,d.jsx)("path",{d:"M8 6V4h8v2"}),(0,d.jsx)("path",{d:"M19 6l-1 14H6L5 6"})]}),"Delete"]})})]})]},a.name)})}),w&&(0,d.jsx)("p",{className:"mx-2 mb-1 mt-1 rounded-xl px-2.5 py-1.5 text-xs",style:{background:"rgba(220, 38, 38, 0.08)",color:"var(--color-error)"},children:w}),(0,d.jsx)("div",{className:"border-t border-neutral-400/15 mt-0.5 pt-0.5",children:(0,d.jsxs)("button",{onClick:()=>{p(!1),c?.()},className:"w-full flex items-center gap-2 px-2.5 py-1.5 text-sm rounded-xl transition-all hover:bg-neutral-400/15 cursor-pointer",style:{color:"var(--color-accent)"},children:[(0,d.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,d.jsx)("path",{d:"M12 5v14"}),(0,d.jsx)("path",{d:"M5 12h14"})]}),"New Workspace"]})})]}),document.body),(0,d.jsx)(h.lG,{open:!!u,onOpenChange:a=>{a||v(null)},children:(0,d.jsxs)(h.Cf,{showCloseButton:!1,children:[(0,d.jsxs)(h.c7,{children:[(0,d.jsx)(h.L3,{children:"Delete workspace"}),(0,d.jsxs)(h.rr,{children:["This will permanently delete ",(0,d.jsx)("strong",{style:{color:"var(--color-text)"},children:u})," and all its data. This cannot be undone."]})]}),(0,d.jsxs)(h.Es,{children:[(0,d.jsx)("button",{onClick:()=>v(null),className:"px-3 py-1.5 text-[13px] rounded-full transition-all hover:bg-neutral-400/15 cursor-pointer",style:{color:"var(--color-text-muted)"},children:"Cancel"}),(0,d.jsx)("button",{onClick:()=>{u&&D(u)},disabled:!!s,className:"px-3 py-1.5 text-[13px] font-medium rounded-full transition-all hover:opacity-80 disabled:opacity-50 cursor-pointer",style:{background:"var(--color-error)",color:"#fff"},children:s===u?"Deleting...":"Delete"})]})]})})]}):null}},66008:(a,b,c)=>{c.d(b,{Hr:()=>x,Ht:()=>y,SQ:()=>u,_2:()=>v,hO:()=>w,mB:()=>z,rI:()=>s,ty:()=>t});var d=c(736927);c(115962);var e=c(274216),f=c(457845),g=c(627556),h=c(129820),i=c(21038),j=c(623766),k=c(610933),l=c(231296),m=c(9367),n=c(257051),o=c(565562),p=c(984251),q=c(111893),r=c(165046);function s({...a}){return(0,d.jsx)(e.i,{"data-slot":"dropdown-menu",...a})}function t({className:a,...b}){return(0,d.jsx)(f.c,{"data-slot":"dropdown-menu-trigger",className:(0,r.cn)("cursor-pointer outline-none ring-0 border-none",a),...b})}function u({align:a="start",alignOffset:b=0,side:c="bottom",sideOffset:e=4,className:f,...j}){return(0,d.jsx)(g.g,{children:(0,d.jsx)(h.y,{className:"isolate z-[10000] outline-none",align:a,alignOffset:b,side:c,sideOffset:e,children:(0,d.jsx)(i._,{"data-slot":"dropdown-menu-content",className:(0,r.cn)("bg-neutral-100/[0.67] dark:bg-neutral-900/[0.67] border border-white dark:border-white/10 backdrop-blur-md text-[var(--color-text)] z-50 max-h-[var(--available-height)] min-h-0 min-w-[8rem] overflow-x-hidden overflow-y-auto rounded-3xl p-1 shadow-[0_0_25px_0_rgba(0,0,0,0.16)] outline-none","data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",f),...j})})})}function v({className:a,inset:b,variant:c="default",onSelect:e,onClick:f,...g}){return(0,d.jsx)(j.D,{"data-slot":"dropdown-menu-item","data-inset":b,"data-variant":c,className:(0,r.cn)("bg-transparent hover:bg-neutral-400/15 text-sm transition-all relative flex cursor-pointer items-center gap-2 rounded-full px-2 py-1.5 outline-none ring-0 border-none select-none","data-[variant=destructive]:text-[var(--color-error)] data-[variant=destructive]:hover:bg-[var(--color-error)]/10 data-[variant=destructive]:hover:text-[var(--color-error)]",b&&"pl-8","[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4","data-disabled:pointer-events-none data-disabled:opacity-50",a),onClick:a=>{f?.(a),e?.()},...g})}function w({className:a,children:b,checked:c,inset:e,...f}){return(0,d.jsxs)(k.s,{"data-slot":"dropdown-menu-checkbox-item","data-inset":e,className:(0,r.cn)("hover:bg-neutral-400/15 focus:bg-neutral-400/15 relative flex cursor-pointer items-center gap-2 rounded-full py-1.5 pr-2 pl-8 text-sm outline-none select-none transition-colors",e&&"pl-8","[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4","data-disabled:pointer-events-none data-disabled:opacity-50",a),checked:c,...f,children:[(0,d.jsx)("span",{className:"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center",children:(0,d.jsx)(l.F,{children:(0,d.jsx)(q.default,{className:"size-4"})})}),b]})}function x({...a}){return(0,d.jsx)(m.a,{"data-slot":"dropdown-menu-radio-group",...a})}function y({className:a,children:b,inset:c,...e}){return(0,d.jsxs)(n.i,{"data-slot":"dropdown-menu-radio-item","data-inset":c,className:(0,r.cn)("hover:bg-neutral-400/15 focus:bg-neutral-400/15 relative flex cursor-pointer items-center gap-2 rounded-full py-1.5 pr-2 pl-8 text-sm outline-none select-none transition-colors",c&&"pl-8","[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4","data-disabled:pointer-events-none data-disabled:opacity-50",a),...e,children:[(0,d.jsx)("span",{className:"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center",children:(0,d.jsx)(o.p,{children:(0,d.jsx)(q.default,{className:"size-4"})})}),b]})}function z({className:a,...b}){return(0,d.jsx)(p.w,{"data-slot":"dropdown-menu-separator",className:(0,r.cn)("bg-neutral-400/15 -mx-1 my-1 h-px",a),...b})}},165046:(a,b,c)=>{c.d(b,{cn:()=>f});var d=c(767170),e=c(544037);function f(...a){return(0,e.QP)((0,d.$)(a))}},327629:(a,b,c)=>{c.d(b,{$:()=>j});var d=c(736927),e=c(115962),f=c(380462),g=c(151242),h=c(165046);let i=(0,g.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 outline-none ring-0 border-none",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),j=e.forwardRef(({className:a,variant:b,size:c,asChild:e=!1,...g},j)=>{let k=e?f.DX:"button";return(0,d.jsx)(k,{className:(0,h.cn)(i({variant:b,size:c,className:a})),ref:j,...g})});j.displayName="Button"},489619:(a,b,c)=>{c.d(b,{s:()=>g});var d=c(736927),e=c(115962),f=c(23581);function g({isOpen:a,onClose:b,onCreated:c}){let[g,h]=(0,e.useState)(""),[i,j]=(0,e.useState)(!0),[k,l]=(0,e.useState)(!1),[m,n]=(0,e.useState)(null),[o,p]=(0,e.useState)(null),q=(0,e.useRef)(null),r=async()=>{let a=g.trim();if(!a)return void n("Please enter a workspace name.");if(!/^[a-zA-Z0-9_-]+$/.test(a))return void n("Name must use only letters, numbers, hyphens, or underscores.");l(!0),n(null);try{let b=await fetch("/api/workspace/init",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({workspace:a,seedBootstrap:i})}),d=await b.json();if(!b.ok)return void n(d.error||"Failed to create workspace.");p({workspaceDir:d.workspaceDir,seededFiles:d.seededFiles??[]}),c?.()}catch(a){n(a.message)}finally{l(!1)}};return(0,d.jsx)(f.lG,{open:a,onOpenChange:a=>{a||b()},children:(0,d.jsx)(f.Cf,{showCloseButton:!o,className:"sm:max-w-md",children:o?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"text-center py-4",children:[(0,d.jsx)("div",{className:"w-12 h-12 rounded-full flex items-center justify-center mx-auto mb-3",style:{background:"rgba(22, 163, 74, 0.1)"},children:(0,d.jsx)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"#16a34a",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,d.jsx)("path",{d:"M20 6 9 17l-5-5"})})}),(0,d.jsx)("p",{className:"text-sm font-medium",style:{color:"var(--color-text)"},children:"Workspace created"}),(0,d.jsx)("code",{className:"text-xs px-2 py-1 rounded mt-2 inline-block",style:{background:"var(--color-surface-hover)",color:"var(--color-text-secondary)",border:"1px solid var(--color-border)"},children:o.workspaceDir.replace(/^\/Users\/[^/]+/,"~").replace(/^\/home\/[^/]+/,"~").replace(/^[A-Za-z]:[/\\]Users[/\\][^/\\]+/,"~")}),o.seededFiles.length>0&&(0,d.jsxs)("p",{className:"text-xs mt-2",style:{color:"var(--color-text-muted)"},children:["Seeded: ",o.seededFiles.join(", ")]})]}),(0,d.jsx)(f.Es,{children:(0,d.jsx)("button",{onClick:b,className:"px-4 py-2 text-sm font-medium rounded-lg transition-colors hover:opacity-80 cursor-pointer",style:{background:"var(--color-accent)",color:"#fff"},children:"Done"})})]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(f.c7,{children:(0,d.jsx)(f.L3,{children:"New Workspace"})}),(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"block text-sm font-medium mb-1.5",style:{color:"var(--color-text-secondary)"},children:"Workspace name"}),(0,d.jsx)("input",{ref:q,type:"text",value:g,onChange:a=>{h(a.target.value),n(null)},onKeyDown:a=>{"Enter"!==a.key||k||r()},placeholder:"e.g. work, personal, project-x",className:"w-full px-3 py-2 text-sm rounded-lg focus:outline-none focus:ring-2 focus:ring-[var(--color-accent)]",style:{background:"var(--color-bg)",border:"1px solid var(--color-border)",color:"var(--color-text)"}}),(0,d.jsxs)("p",{className:"text-xs mt-1",style:{color:"var(--color-text-muted)"},children:["This creates a workspace under ~/.openclaw-dench/workspace-","{name}","."]})]}),(0,d.jsxs)("label",{className:"flex items-center gap-2 cursor-pointer hidden",children:[(0,d.jsx)("input",{type:"checkbox",checked:i,onChange:a=>j(a.target.checked),className:"rounded",style:{accentColor:"var(--color-accent)"}}),(0,d.jsx)("span",{className:"text-sm",style:{color:"var(--color-text-secondary)"},children:"Seed bootstrap files and workspace database"})]}),m&&(0,d.jsx)("p",{className:"text-sm px-3 py-2 rounded-lg",style:{background:"rgba(220, 38, 38, 0.08)",color:"var(--color-error)"},children:m})]}),(0,d.jsxs)(f.Es,{children:[(0,d.jsx)("button",{onClick:b,className:"px-3 py-1.5 text-[13px] rounded-full transition-all hover:bg-neutral-400/15 cursor-pointer",style:{color:"var(--color-text-muted)"},children:"Cancel"}),(0,d.jsx)("button",{onClick:()=>void r(),disabled:k||!g.trim(),className:"px-4 py-2 text-sm font-medium rounded-full transition-colors hover:opacity-80 disabled:opacity-50 cursor-pointer",style:{background:"var(--color-accent)",color:"#fff"},children:k?"Creating...":"Create Workspace"})]})]})})})}},499496:(a,b,c)=>{c.d(b,{Cq:()=>d});let d=["target-account-list-builder","icp-outreach-builder","lookalike-customer-finder","funding-signal-prospector","hiring-signal-prospector","website-visitor-follow-up","conference-lead-researcher","linkedin-style-outreach","stale-thread-follow-up-agent","warm-lead-nurture","proposal-chaser","no-show-recovery","champion-job-change-tracker","deck-claim-verifier","pre-call-diff-brief","candidate-ghosting-recovery","month-end-metrics-assembler","plg-expansion-scout","crm-contact-enricher","duplicate-record-cleaner","relationship-strength-scorer","pipeline-hygiene-digest","meeting-prep-brief","executive-daily-brief","investor-meeting-prep","post-meeting-follow-through","company-deep-researcher","competitor-monitor","news-signal-digest","customer-voice-miner","market-map-builder","candidate-research-brief","interview-follow-up-agent","talent-pipeline-hygiene","hiring-manager-weekly-digest","recruiting-outreach-builder","lost-customer-winback","account-health-monitor","renewal-risk-digest","weekly-founder-digest","fundraising-target-builder","board-meeting-prep","partner-pipeline-builder","investor-update-builder"]},561766:(a,b,c)=>{c.d(b,{A6:()=>u,Bp:()=>C,C0:()=>x,DB:()=>D,F1:()=>v,Pv:()=>s,UU:()=>y,Wx:()=>w,kd:()=>l,ki:()=>t,rB:()=>z,s6:()=>A,wc:()=>E});var d=c(973024),e=c(176760),f=c(693349),g=c(499496);let h="onboarding.json",i="connections.json",j="sync-cursors.json",k="email-body-hydration-attempted.json",l=["welcome","identity","dench-cloud","connect-gmail","connect-calendar","backfill","skill-template","complete"];function m(){return new Date().toISOString()}function n(){let a=m();return{version:1,currentStep:"welcome",completedSteps:[],startedAt:a,updatedAt:a}}function o(a,b){return(0,e.join)((0,f.lA)(b),a)}function p(a,b){try{if(!(0,d.existsSync)(a))return b;let c=JSON.parse((0,d.readFileSync)(a,"utf-8"));if(c&&"object"==typeof c)return c;return b}catch{return b}}function q(a,b){var c;c=(0,e.join)(a,".."),(0,d.existsSync)(c)||(0,d.mkdirSync)(c,{recursive:!0});let f=`${a}.tmp-${process.pid}-${Date.now()}`;try{(0,d.writeFileSync)(f,JSON.stringify(b,null,2)+"\n","utf-8"),(0,d.renameSync)(f,a)}catch(a){try{(0,d.existsSync)(f)&&(0,d.unlinkSync)(f)}catch{}throw a}}function r(a){return"string"==typeof a&&l.includes(a)}function s(a){let b=p(o(h,a),null);if(!b)return n();if(!b||"object"!=typeof b)return n();let c=n(),d=Array.isArray(b.completedSteps)?b.completedSteps.filter(r):[];return{version:1,currentStep:r(b.currentStep)?b.currentStep:"welcome",completedSteps:d,identity:b.identity&&"object"==typeof b.identity?b.identity:void 0,denchCloud:b.denchCloud&&"object"==typeof b.denchCloud?b.denchCloud:void 0,connections:b.connections&&"object"==typeof b.connections?b.connections:void 0,backfill:b.backfill&&"object"==typeof b.backfill?b.backfill:void 0,skillTemplate:function(a){var b;if(!a||"object"!=typeof a)return;let c={};return"string"==typeof(b=a.templateId)&&g.Cq.includes(b)&&(c.templateId=a.templateId),"string"==typeof a.selectedAt&&(c.selectedAt=a.selectedAt),"string"==typeof a.promptConsumedAt&&(c.promptConsumedAt=a.promptConsumedAt),Object.keys(c).length>0?c:void 0}(b.skillTemplate),startedAt:"string"==typeof b.startedAt?b.startedAt:c.startedAt,updatedAt:"string"==typeof b.updatedAt?b.updatedAt:c.updatedAt}}function t(a,b){let c={...a,version:1,updatedAt:m()};return q(o(h,b),c),c}function u(a,b,c={},d){let e=s(d),f=new Set(e.completedSteps);return f.add(a),t({...e,...c,completedSteps:Array.from(f),currentStep:b},d)}function v(a){return"complete"===s(a).currentStep}function w(a){return p(o(i,a),{version:1,updatedAt:m()})}function x(a,b,c){let d={...w(c),version:1,[a]:b,updatedAt:m()};return q(o(i,c),d),d}function y(a,b){let c={...w(b),version:1,updatedAt:m()};return delete c[a],q(o(i,b),c),c}function z(a){return p(o(j,a),{version:1,updatedAt:m()})}function A(a,b){let c=z(b),d={...c,...a,gmail:a.gmail?{...c.gmail,...a.gmail}:c.gmail,calendar:a.calendar?{...c.calendar,...a.calendar}:c.calendar,version:1,updatedAt:m()};return q(o(j,b),d),d}function B(a){if(!Array.isArray(a))return[];let b=new Set;for(let c of a)"string"==typeof c&&c.trim()&&b.add(c.trim().toLowerCase());return Array.from(b)}function C(a){let b=p(o("personal-domains.json",a),null);return b&&"object"==typeof b?{version:1,add:B(b.add),remove:B(b.remove),updatedAt:"string"==typeof b.updatedAt?b.updatedAt:m()}:{version:1,add:[],remove:[],updatedAt:m()}}function D(a){let b=p(o(k,a),null);if(!b||"object"!=typeof b)return new Set;let c=b.attempted;return Array.isArray(c)?new Set(c.filter(a=>"string"==typeof a&&!!a)):new Set}function E(a,b){let c=D(b);for(let b of a)"string"==typeof b&&b&&c.add(b);let d={version:1,attempted:Array.from(c).sort(),updatedAt:m()};return q(o(k,b),d),d}},933935:(a,b,c)=>{function d(a,b){let c=a.get(b);return"string"==typeof c&&c.trim().length>0?c.trim():null}function e(a,b){let c=new URLSearchParams;b?.toolkitSlug?.trim()&&c.set("toolkit",b.toolkitSlug.trim()),b?.toolkitName?.trim()&&c.set("name",b.toolkitName.trim());let d=c.toString();return`dench://composio/${a}${d?`?${d}`:""}`}function f(a){let b,c=a.trim();if(!c)return null;try{b=new URL(c)}catch{return null}if("dench:"!==b.protocol||"composio"!==b.hostname)return null;let e=b.pathname.replace(/^\/+|\/+$/g,"");return"connect"!==e&&"reconnect"!==e?null:{action:e,toolkitSlug:d(b.searchParams,"toolkit"),toolkitName:d(b.searchParams,"name")}}c.d(b,{J:()=>f,d:()=>e})},983629:(a,b,c)=>{c.d(b,{C:()=>n});var d=c(736927),e=c(115962),f=c(418910),g=c(998088),h=c(554989);let i={gmail:{icon:h.nP5,color:"#EA4335"},"google-calendar":{icon:h._eB,color:"#4285F4",label:"Calendar"},hubspot:{icon:h.mM8,color:"#FF7A59"},notion:{icon:h.i4$,color:"#111111"},slack:{icon:h.D6W,color:"#E01E5A"},github:{icon:h.SrF,color:"#181717"},linkedin:{color:"#0A66C2",label:"LinkedIn"}};function j({template:a}){let b=new Set(a.requiredApps.map(a=>a.slug)),c=function(a){let b=new Set;return[...a.requiredApps,...a.suggestedApps].filter(a=>!b.has(a.slug)&&(b.add(a.slug),!0))}(a),e=c.slice(0,5),f=Math.max(0,c.length-e.length);return(0,d.jsx)("div",{className:"flex items-center gap-2","aria-label":"Required and suggested apps",children:(0,d.jsxs)("div",{className:"flex items-center -space-x-1.5",children:[e.map(a=>{let c=i[a.slug],e=c?.icon,f=b.has(a.slug);return(0,d.jsx)("span",{className:"flex h-6 w-6 items-center justify-center rounded-full border text-[10px] font-semibold",title:`${c?.label??a.name}${f?" (required)":" (suggested)"}`,style:{background:"var(--color-surface)",borderColor:"var(--color-border)",color:c?.color??"var(--color-text-secondary)"},children:e?(0,d.jsx)(e,{"aria-hidden":"true",size:13}):"linkedin"===a.slug?"in":a.name.charAt(0)},a.slug)}),f>0&&(0,d.jsxs)("span",{className:"flex h-6 min-w-6 items-center justify-center rounded-full border px-1 text-[10px] font-semibold",style:{background:"var(--color-surface)",borderColor:"var(--color-border)",color:"var(--color-text-muted)"},children:["+",f]})]})})}function k({size:a=14}){return(0,d.jsx)("span",{className:"relative overflow-hidden",style:{height:a,width:a},children:(0,d.jsxs)("span",{className:"flex flex-col transition-transform duration-300 ease-out group-hover/template-action:-translate-y-1/2",children:[(0,d.jsx)("span",{className:"flex shrink-0 items-center justify-center",style:{height:a,width:a},children:(0,d.jsx)(f.qdV,{style:{width:a,height:a}})}),(0,d.jsx)("span",{className:"flex shrink-0 items-center justify-center",style:{height:a,width:a},children:(0,d.jsx)(f.qdV,{style:{width:a,height:a}})})]})})}function l({template:a,selected:b,onUse:c,actionLabel:e="Use"}){return(0,d.jsxs)("article",{"aria-label":a.title,"data-selected":b?"true":void 0,className:"group/template-card relative flex h-full min-h-[208px] w-full flex-col rounded-2xl border p-5 text-left transition-[border-color,box-shadow,background-color] duration-200 ease-out hover:shadow-sm",style:{borderColor:"var(--color-border)",background:"var(--color-surface)",color:"var(--color-text)"},children:[(0,d.jsxs)("div",{className:"flex-1 space-y-4",children:[(0,d.jsx)("div",{className:"flex items-start justify-between gap-3",children:(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-[0.08em]",style:{color:"var(--color-text-muted)"},children:a.category}),(0,d.jsx)("h3",{className:"mt-2 text-[16px] font-medium leading-tight tracking-tight",children:a.title})]})}),(0,d.jsx)("p",{className:"line-clamp-3 text-[13px] leading-relaxed",style:{color:"var(--color-text-muted)"},children:a.summary}),(0,d.jsx)(j,{template:a})]}),(0,d.jsxs)("div",{className:"mt-5 flex items-end justify-between gap-4",children:[(0,d.jsx)("div",{className:"flex min-w-0 flex-wrap gap-1.5",children:a.triggerModes.map(a=>(0,d.jsx)("span",{className:"rounded-full px-2 py-1 text-[10.5px] font-medium",style:{background:"color-mix(in srgb, var(--color-text) 8%, transparent)",color:"var(--color-text-muted)"},children:"scheduled"===a?"Cron-ready":"Manual"},a))}),(0,d.jsxs)("button",{type:"button",onClick:c,"aria-label":`${e} ${a.title}`,className:`group/template-action flex h-7 shrink-0 items-center gap-1.5 rounded-full border px-3 text-[11px] font-semibold shadow-sm transition-[border-color,color,opacity] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-accent)] ${b?"opacity-100":"opacity-100 md:opacity-0 md:group-hover/template-card:opacity-100"}`,style:{borderColor:"var(--color-border)",background:"var(--color-background)",color:"var(--color-text-muted)"},children:[e,(0,d.jsx)(k,{})]})]})]})}function m({mode:a}){let b="dashboard"===a?{title:"Start from a template.",description:"Pick a proven workflow and DenchClaw will open a chat to shape it into your own reusable skill."}:{title:"Use your first skill.",description:"Pick one concrete workflow. DenchClaw will interview you, then turn your answers into a reusable skill."};return(0,d.jsxs)("div",{children:[(0,d.jsx)("h1",{className:"font-instrument text-[34px] leading-[1.1] tracking-tight",style:{color:"var(--color-text)"},children:b.title}),(0,d.jsx)("p",{className:"mt-3 max-w-2xl text-[13.5px] leading-relaxed",style:{color:"var(--color-text-muted)"},children:b.description})]})}function n({selectedTemplateId:a,onSelectTemplate:b,mode:c="dashboard",className:h,title:i,description:j,actionLabel:k="Use"}){let[n,o]=(0,e.useState)(""),[p,q]=(0,e.useState)(null),r=(0,e.useRef)(null),s=(0,e.useMemo)(()=>g.se.filter(a=>(!p||a.category===p)&&function(a,b){let c=b.trim().toLowerCase();return!c||[a.title,a.summary,a.category,a.outcome,a.autonomy,a.userUseCase,...a.personas,...a.triggerModes,...a.suggestedApps.map(a=>a.name),...a.interviewQuestions.map(a=>a.prompt),...a.interviewQuestions.flatMap(a=>a.options?.map(a=>`${a.label} ${a.description??""}`)??[])].join(" ").toLowerCase().includes(c)}(a,n)),[n,p]),t=()=>{window.setTimeout(()=>{r.current?.scrollIntoView?.({behavior:"smooth",block:"start"})},100)},u=a=>{q(b=>b===a?null:a),t()};return(0,d.jsxs)("section",{className:h?`w-full space-y-6 ${h}`:"w-full space-y-6",children:[i||j?(0,d.jsxs)("div",{children:[i&&(0,d.jsx)("h1",{className:"font-instrument text-[34px] leading-[1.1] tracking-tight",style:{color:"var(--color-text)"},children:i}),j&&(0,d.jsx)("p",{className:"mt-3 max-w-2xl text-[13.5px] leading-relaxed",style:{color:"var(--color-text-muted)"},children:j})]}):(0,d.jsx)(m,{mode:c}),(0,d.jsxs)("div",{className:"flex min-h-10 items-center gap-2 overflow-x-auto py-1 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",children:[(0,d.jsxs)("div",{className:"group relative shrink-0",children:[(0,d.jsx)(f.CKj,{"aria-hidden":"true",className:"absolute left-3 top-1/2 z-10 h-3.5 w-3.5 -translate-y-1/2 transition-colors",style:{color:"var(--color-text-muted)"}}),(0,d.jsx)("input",{type:"search",value:n,onChange:a=>o(a.target.value),onFocus:t,"aria-label":"Search templates",placeholder:"Search templates...",className:"h-8 w-48 rounded-full border bg-transparent pl-8 pr-3 text-[13px] outline-none transition-[border-color,box-shadow]",style:{borderColor:"var(--color-border)",color:"var(--color-text)"}})]}),(0,d.jsx)("div",{className:"h-4 w-px shrink-0",style:{background:"var(--color-border)"}}),(0,d.jsx)("button",{type:"button",onClick:()=>u(null),"aria-pressed":null===p,className:"shrink-0 rounded-full border px-3 py-1.5 text-[12px] font-medium transition-colors",style:{borderColor:null===p?"var(--color-border)":"transparent",background:null===p?"var(--color-surface-hover)":"transparent",color:null===p?"var(--color-text)":"var(--color-text-muted)"},children:"All"}),g.gu.map(a=>{let b=p===a;return(0,d.jsx)("button",{type:"button",onClick:()=>u(a),"aria-pressed":b,className:"shrink-0 rounded-full border px-3 py-1.5 text-[12px] font-medium transition-colors hover:bg-[var(--color-surface-hover)]",style:{borderColor:b?"var(--color-border)":"transparent",background:b?"var(--color-surface-hover)":"transparent",color:b?"var(--color-text)":"var(--color-text-muted)"},children:a},a)})]}),(0,d.jsxs)("div",{ref:r,className:"grid scroll-mt-24 grid-cols-1 gap-4 md:grid-cols-2 xl:grid-cols-3",children:[s.map(c=>(0,d.jsx)(l,{template:c,selected:c.id===a,onUse:()=>b(c.id),actionLabel:k},c.id)),0===s.length&&(0,d.jsx)("div",{className:"rounded-2xl border px-4 py-10 text-center text-[13px] md:col-span-2 xl:col-span-3",style:{borderColor:"var(--color-border)",color:"var(--color-text-muted)"},children:"No templates found matching your criteria."})]})]})}},998088:(a,b,c)=>{c.d(b,{se:()=>ad,gu:()=>ac,aS:()=>ae});let d={gmail:{slug:"gmail",name:"Gmail"},googleCalendar:{slug:"google-calendar",name:"Google Calendar"},hubspot:{slug:"hubspot",name:"HubSpot"},notion:{slug:"notion",name:"Notion"},slack:{slug:"slack",name:"Slack"},github:{slug:"github",name:"GitHub"},linkedin:{slug:"linkedin",name:"LinkedIn"}},e=["Treat Dench CRM, connected Gmail, connected HubSpot, uploaded files/manual exports, web research, and Dench-native enrichment as available source primitives; only mark a capability unavailable when the specific user data or permission is missing.","Start from the user's current pressure and produce a ranked action queue before any long narrative; if the run produces a brief, cap the first section to the smallest useful skim.","Default external communication and data writes to draft or review unless the skill instructions and the user's answers clearly authorize a narrow automated action.","Attach evidence, confidence, missing-data caveats, and recommended next owner action to every scored lead, risk, cleanup suggestion, follow-up, or brief section.","Ask the fewest setup questions needed, infer sane defaults from the selected template, and let the user override details later instead of front-loading configuration.","For scheduled runs, suppress unchanged findings and explain what changed since the last run or last touchpoint before repeating a recommendation."],f={"Find Leads":["Prioritize signal-backed opportunities over raw account volume; include disqualifiers, why-now rationale, and draft-only personalized outreach angles for each top lead."],"Follow Up":["Differentiate champions, economic buyers, operators, and internal owners before drafting follow-up; keep follow-up sequences short and avoid generic checking-in language."],"Keep CRM Clean":["Treat CRM mutations as high-risk: provide dry-run output, before/after diffs, audit reasons, manual-edit preservation, and approval gates before any bulk write."],"Prep Meetings":["Lead with a 60-second skim: who, last touch, open asks, what changed, and the recommended CTA; demote static background unless it changes the meeting plan."],"Research Anything":["Use source-quality tiers, prefer primary sources, cite exact support for material claims, and mark unverifiable claims as unable to verify instead of filling gaps."],"Hire People":["Protect candidate experience: keep candidate-facing communication draft-only, respect stage-specific context, and route hiring-manager actions as concise decision prompts."],"Grow Customers":["Surface anomaly-backed customer risks and expansion plays with evidence trails and CSM-led talk tracks; never turn relationship-sensitive guidance into auto-sent customer email by default."],"Run Founder Ops":["Optimize for solo-founder time: avoid assumed teams or CRMs, write the actual draft or decision artifact, and call out missing business metrics instead of producing fill-in-the-blank templates."]},g=["Use timestamped activity log entries that name the trigger source, run window, records or artifacts touched, evidence used, decisions made, and next owner action.","For scheduled runs, log what changed since the prior run and suppress unchanged findings instead of repeating the same entry.","Keep logs privacy-safe: include enough evidence for auditability, but omit sensitive message bodies, protected-class data, and unsupported guesses."],h={"Find Leads":[d.gmail,d.hubspot,d.linkedin],"Follow Up":[d.gmail,d.hubspot,d.googleCalendar],"Keep CRM Clean":[d.hubspot,d.gmail,d.slack],"Prep Meetings":[d.googleCalendar,d.gmail,d.hubspot,d.notion],"Research Anything":[d.notion,d.slack,d.gmail,d.linkedin,d.github],"Hire People":[d.linkedin,d.gmail,d.googleCalendar,d.notion,d.github],"Grow Customers":[d.hubspot,d.gmail,d.slack,d.googleCalendar],"Run Founder Ops":[d.gmail,d.googleCalendar,d.notion,d.slack,d.hubspot]};function i(a){return{...a,suggestedApps:function(a){let b=new Set;return a.filter(a=>!b.has(a.slug)&&(b.add(a.slug),!0))}(a.suggestedApps??[...a.requiredApps,...h[a.category]]),skillInstructions:[...a.skillInstructions,...e,...f[a.category]],activityLogInstructions:[...a.activityLogInstructions,...g]}}let j=i({id:"target-account-list-builder",title:"Target Account List Builder",summary:"Turn an ICP into a ranked account list with contacts, evidence, and next actions.",category:"Find Leads",outcome:"Discovers target companies, enriches contacts, scores fit, and writes a prioritized list into Dench CRM.",userUseCase:"Use this when a founder or seller knows the market they want to attack but needs DenchClaw to turn that ICP into a clean, ranked account list with evidence, exclusions, owners, and CRM-ready next actions.",personas:["Founder","Sales"],requiredApps:[d.hubspot,d.gmail,d.linkedin],triggerModes:["manual","scheduled"],autonomy:"Updates CRM",interviewQuestions:[{id:"market-scope",prompt:"Which industries, geographies, company sizes, or business models define the account universe?",required:!0,freeformHint:"Example: B2B SaaS in North America, 200-2000 employees, selling to revenue teams."},{id:"qualification-signals",prompt:"Which signals should make an account a strong fit?",required:!0,allowMultiple:!0,options:[{id:"headcount-growth",label:"Headcount growth"},{id:"funding",label:"Recent funding"},{id:"tech-stack",label:"Specific tools"},{id:"new-exec",label:"New executive"},{id:"job-postings",label:"Relevant hiring"},{id:"market-expansion",label:"Market expansion"}]},{id:"exclusions",prompt:"Which accounts, industries, regions, or CRM stages should be excluded?",required:!1,freeformHint:"Example: current customers, open opportunities, agencies, companies under 50 employees."},{id:"priority-model",prompt:"How should accounts be ranked for sales action?",required:!0,options:[{id:"best-fit",label:"Best ICP fit"},{id:"strongest-signal",label:"Strongest signal"},{id:"largest-size",label:"Largest company"},{id:"customer-similarity",label:"Customer similarity"},{id:"fastest-growth",label:"Fastest growth"}]},{id:"crm-output",prompt:"Which CRM fields and handoff details should the final list include?",required:!0,allowMultiple:!0,options:[{id:"fit-reason",label:"Fit reason"},{id:"signal-evidence",label:"Signal evidence"},{id:"priority-score",label:"Priority score"},{id:"owner",label:"Recommended owner"},{id:"next-action",label:"Next action"}]}],skillInstructions:["Translate the user's ICP into concrete account search filters before gathering companies.","Use HubSpot/Dench CRM, native enrichment, web search, uploaded files, LinkedIn context, Gmail history, and workspace context to assemble candidate accounts.","Deduplicate against existing HubSpot/Dench CRM accounts, customers, active opportunities, Gmail history, previous Dench runs, and user-provided exclusions.","Enrich each account with domain, industry, size, location, signals, source URLs, and confidence notes.","Score accounts with the selected priority model and explain the top ranking factors in plain language.","Write or propose CRM records additively with source attribution, not silent overwrites of user-authored fields.","Return a sales-ready account table with owners, next actions, blocked records, and any low-confidence matches separated for review."],activityLogInstructions:["Append account-list run entries to the target-list artifact or connected CRM list document, keyed by ICP, source window, and run timestamp.","Log search filters used, sources scanned, accounts added or skipped, duplicate and exclusion reasons, fit score changes, and CRM fields written or proposed.","For each new account record, record source URLs, confidence, owner recommendation, next action, and whether the record was created, updated additively, or held for review.","For scheduled refreshes, log only new accounts, materially changed scores, newly blocked records, and unresolved low-confidence matches."]}),k=i({id:"icp-outreach-builder",title:"ICP Outreach Builder",summary:"Build a guardrailed outbound skill from an ICP, offer, and send policy.",category:"Find Leads",outcome:"Researches ICP-matched leads, writes personalized messages, follows the configured send policy, and logs activity to CRM.",userUseCase:"Use when a founder or seller knows the customer profile and offer but needs DenchClaw to turn that into a repeatable prospecting skill. The workflow should find accounts and people with Dench-native CRM, enrichment, and web research, draft outreach grounded in evidence, and only send when explicit rules exist.",personas:["Founder","Sales"],requiredApps:[d.gmail,d.hubspot],triggerModes:["manual","scheduled"],autonomy:"Can automate",interviewQuestions:[{id:"icp-definition",prompt:"What ICP should this outreach skill target?",required:!0,freeformHint:"Include industry, geography, size, buyer pain, maturity, and exclusions."},{id:"buyer-personas",prompt:"Which buyer personas should DenchClaw research at each account?",required:!0,allowMultiple:!0,options:[{id:"founder",label:"Founder/CEO"},{id:"sales-leader",label:"Sales leader"},{id:"revops",label:"RevOps"},{id:"marketing",label:"Marketing"},{id:"custom",label:"Custom role"}],freeformHint:"List exact titles, seniority, and backup personas."},{id:"offer-and-cta",prompt:"What offer, pain, and CTA should the outreach connect to?",required:!0,freeformHint:"Describe the product, promise, proof, call to action, and phrases to avoid."},{id:"personalization-evidence",prompt:"Which evidence should drive personalization?",required:!0,allowMultiple:!0,options:[{id:"company-news",label:"Company news"},{id:"hiring",label:"Hiring"},{id:"funding",label:"Funding"},{id:"crm-history",label:"CRM history"},{id:"website-positioning",label:"Website positioning"},{id:"tech-stack",label:"Tech stack"}]},{id:"send-policy",prompt:"What are the send, follow-up, quiet-hour, and stop rules?",required:!0,freeformHint:"Include draft vs auto-send, daily caps, allowlists, follow-up spacing, reply detection, meeting booked, do-not-contact, and CRM stage stops."}],skillInstructions:["Translate the ICP into concrete account, contact, exclusion, and evidence rules before searching.","Use Dench CRM, native enrichment, Apollo-style native data, web search, HubSpot context, and Gmail history to find and prioritize accounts; never require Apollo as an external app.","For each lead, capture account fit, buyer-persona rationale, source links, personalization evidence, and confidence.","Write outreach that is concise, specific, and tied to observable evidence; do not fabricate familiarity, private details, or unsupported claims.","Default to drafts unless the user approves explicit send rules; enforce caps, quiet hours, dedupe, stop conditions, and CRM do-not-contact fields before sending.","For scheduled runs, make each campaign idempotent by checking prior Dench runs, Gmail history, and CRM notes before creating new drafts or sends.","Create the final SKILL.md with manual invocation examples, an exact scheduled message if enabled, CRM write fields, send policy, and a run summary format."],activityLogInstructions:["Write campaign activity entries to the CRM lead/account note or campaign run summary, grouped by ICP segment and send policy.","Log accounts and contacts researched, personalization evidence used, draft IDs created, sends attempted, caps or quiet-hour blocks, and CRM statuses touched.","For each prospect, capture fit rationale, source links, message variant, approval state, next follow-up date, and stop condition if skipped or paused.","For scheduled campaigns, log dedupe checks against prior runs, Gmail history, CRM notes, and only net-new drafts, sends, replies, or conversions."]}),l=i({id:"lookalike-customer-finder",title:"Lookalike Customer Finder",summary:"Use best customers as seeds to find companies that look and behave like them.",category:"Find Leads",outcome:"Analyzes customer seeds, extracts fit patterns, discovers lookalike accounts, and creates a ranked prospect list.",userUseCase:"Use this when a founder, sales team, or RevOps owner has a set of great customers and wants DenchClaw to discover net-new accounts with similar firmographics, buying triggers, and use-case patterns. The skill should compare Dench CRM and HubSpot customer context, native enrichment, files, and web research to produce a defensible prospect list rather than a loose 'companies like these' dump.",personas:["Founder","Sales","RevOps"],requiredApps:[d.hubspot],triggerModes:["manual","scheduled"],autonomy:"Can automate",interviewQuestions:[{id:"seed-customers",prompt:"Which customers should be used as the lookalike seed set?",required:!0,freeformHint:"Paste company names/domains or reference a CRM segment, HubSpot list, saved view, or uploaded file."},{id:"success-traits",prompt:"What makes these customers worth copying?",required:!0,allowMultiple:!0,options:[{id:"high-acv",label:"High ACV"},{id:"fast-sales-cycle",label:"Fast sales cycle"},{id:"strong-retention",label:"Strong retention"},{id:"expansion",label:"Expansion potential"},{id:"strategic-logo",label:"Strategic logo"}]},{id:"similarity-dimensions",prompt:"Which similarity dimensions matter most?",required:!0,allowMultiple:!0,options:[{id:"industry",label:"Industry"},{id:"company-size",label:"Company size"},{id:"growth-rate",label:"Growth rate"},{id:"tech-stack",label:"Tech stack"},{id:"buyer-team",label:"Buyer team"},{id:"use-case",label:"Use case"}]},{id:"blocked-matches",prompt:"Which companies or categories should be excluded from the lookalike list?",required:!1,freeformHint:"Example: current customers, competitors, non-US companies, accounts already in active opportunities."},{id:"result-goal",prompt:"What should the final list optimize for?",required:!0,options:[{id:"closest-similarity",label:"Closest similarity"},{id:"largest-market",label:"Largest market"},{id:"fastest-outreach",label:"Fastest outreach"},{id:"highest-intent",label:"Highest intent"}]}],skillInstructions:["Normalize seed customers from Dench CRM, HubSpot, uploaded files, or user-provided text, including company domains and customer status.","Derive shared traits across the seed set: firmographics, market category, buyer team, use case, buying trigger, retention or expansion signals, and observable operating patterns.","Search for non-customer accounts that match the selected similarity dimensions using Dench-native enrichment and web research.","Exclude current customers, blocked categories, duplicates, competitors, and accounts already in active opportunities unless explicitly included.","Rank each lookalike by similarity strength and explain which seed-customer traits it matches.","Return account recommendations with evidence, confidence, source links, CRM status, and suggested prospecting angle.","For scheduled refreshes, report only new or materially improved lookalikes since the prior run and avoid recreating records already written to CRM."],activityLogInstructions:["Append lookalike discovery entries to the prospect-list artifact or CRM segment note tied to the seed customer set.","Log seed customers used, similarity dimensions, excluded companies, discovered accounts, match traits, score changes, and CRM records created or held.","For each recommended lookalike, record matched seed traits, source links, confidence, CRM status, suggested angle, and owner or next action.","For scheduled refreshes, log only new lookalikes, materially improved matches, changed exclusions, and duplicate records suppressed from prior runs."]}),m=i({id:"funding-signal-prospector",title:"Funding Signal Prospector",summary:"Find newly funded companies that match your ICP and likely need help now.",category:"Find Leads",outcome:"Monitors funding signals, filters against ICP rules, enriches contacts, and creates time-sensitive CRM opportunities.",userUseCase:"Use this when a founder or seller wants a repeatable prospecting workflow around recent funding events. The skill should find companies that match a target market, verify funding from credible sources, infer why the event creates urgency, and turn the signal into CRM-ready account research and outreach angles.",personas:["Founder","Sales"],requiredApps:[d.hubspot,d.gmail],triggerModes:["manual","scheduled"],autonomy:"Can automate",interviewQuestions:[{id:"funding-stage",prompt:"Which funding stages should count as a prospecting signal?",required:!0,allowMultiple:!0,options:[{id:"pre-seed-seed",label:"Pre-seed/seed"},{id:"series-a-b",label:"Series A/B"},{id:"series-c-plus",label:"Series C+"},{id:"growth-pe",label:"Growth/PE"},{id:"debt-ma",label:"Debt or M&A"}]},{id:"freshness-window",prompt:"How fresh should the funding event be?",required:!0,options:[{id:"30-days",label:"30 days"},{id:"90-days",label:"90 days"},{id:"6-months",label:"6 months"},{id:"12-months",label:"12 months"}]},{id:"company-filters",prompt:"Which company profiles should be included after the funding filter?",required:!0,freeformHint:"Describe industries, geographies, employee ranges, business models, or customer segments."},{id:"spend-trigger",prompt:"What post-funding motion makes these companies worth contacting?",required:!0,allowMultiple:!0,options:[{id:"sales-hiring",label:"Sales hiring"},{id:"marketing-expansion",label:"Marketing expansion"},{id:"engineering-growth",label:"Engineering growth"},{id:"international-expansion",label:"International expansion"},{id:"compliance-buildout",label:"Compliance buildout"},{id:"new-product",label:"New product"}]},{id:"crm-handoff",prompt:"What should be written to CRM for each funded prospect?",required:!0,allowMultiple:!0,options:[{id:"account-note",label:"Sourced account note"},{id:"priority-score",label:"Priority score"},{id:"contact-research",label:"Contact research"},{id:"owner-task",label:"Owner task"},{id:"draft-message",label:"Draft message"}]}],skillInstructions:["Search public web sources, Dench-native enrichment, HubSpot account context, CRM history, and uploaded/source lists for funding events that match the selected stage and freshness window.","Verify funding amount, date, stage, investors, and company identity from credible sources before including a company.","Filter funded companies through the requested ICP, exclusions, HubSpot/Dench CRM ownership, Gmail history, and duplicate checks before ranking them.","Explain the likely post-funding spend trigger for each account and tie it to observable evidence.","Enrich each qualified account with domain, size, headquarters, relevant leaders, and source URLs.","Write only additive CRM notes, scores, tasks, or drafts with source attribution and confidence; do not overwrite user-authored fields.","For scheduled runs, suppress funding events already processed in earlier runs unless a materially new signal appears."],activityLogInstructions:["Log funding-signal entries in the CRM account note or funding prospect digest keyed by company, funding event, and freshness window.","Record funding source, stage, amount when verified, date, investors, ICP filters applied, spend-trigger rationale, and accounts excluded or deduped.","For each qualified prospect, capture CRM writes or drafts created, source URLs, confidence, owner task, next action, and skipped reason if no action was taken.","For scheduled runs, append only net-new funding events, materially updated verification, changed urgency, and duplicate events suppressed from earlier runs."]}),n=i({id:"hiring-signal-prospector",title:"Hiring Signal Prospector",summary:"Spot companies hiring for roles that reveal urgency for your product.",category:"Find Leads",outcome:"Tracks hiring patterns, scores companies by pain intensity, enriches decision makers, and logs evidence-backed opportunities.",personas:["Founder","Sales"],requiredApps:[d.hubspot,d.gmail,d.linkedin],triggerModes:["manual","scheduled"],autonomy:"Can automate",userUseCase:"Use this when hiring activity is a buying-intent signal: companies adding sales reps, RevOps, security, support, finance, or other roles that reveal a new operational pain. The skill should find companies hiring for the right jobs, interpret what that implies, identify likely buyers, and turn the signal into CRM-ready prospecting action.",interviewQuestions:[{id:"hiring-roles",prompt:"Which open roles or departments should signal demand?",required:!0,allowMultiple:!0,options:[{id:"sales",label:"Sales roles"},{id:"revops",label:"RevOps roles"},{id:"security",label:"Security roles"},{id:"support",label:"Support roles"},{id:"engineering",label:"Engineering roles"}],freeformHint:"Include exact titles, seniority, departments, or phrases from job descriptions."},{id:"intent-meaning",prompt:"What should those hiring signals imply about business need?",required:!0,options:[{id:"new-team",label:"Building a new team"},{id:"scale-capacity",label:"Scaling capacity"},{id:"manual-work",label:"Replacing manual work"},{id:"compliance",label:"Compliance push"},{id:"market-expansion",label:"Market expansion"}]},{id:"company-scope",prompt:"Which company types, regions, or size ranges should be searched?",required:!0,freeformHint:"Example: Series B-C SaaS in North America with 100-1000 employees."},{id:"signal-strength",prompt:"Which hiring patterns should receive higher priority?",required:!1,allowMultiple:!0,options:[{id:"multiple-openings",label:"Multiple similar roles"},{id:"new-leader",label:"New leadership role"},{id:"tool-mentions",label:"Tool mentions"},{id:"urgent-language",label:"Urgent language"},{id:"new-market",label:"New market role"}]},{id:"contact-strategy",prompt:"Who should be contacted when a strong hiring signal is found?",required:!0,options:[{id:"hiring-manager",label:"Hiring manager"},{id:"department-exec",label:"Department exec"},{id:"ops-leader",label:"Ops leader"},{id:"founder",label:"Founder"},{id:"finance",label:"Finance approver"}]}],skillInstructions:["Search public job postings, company career pages, LinkedIn context, Dench-native enrichment, HubSpot/Dench CRM context, uploaded lists, and Gmail history for hiring signals that match the requested roles.","Group related openings by company to detect team-level growth rather than isolated one-off roles.","Interpret job descriptions for buying intent, tool mentions, department priorities, urgency, and timing cues.","Prioritize companies where hiring activity maps directly to the user's product thesis and target buyer.","Exclude companies already owned by active HubSpot/Dench CRM opportunities or recent Gmail outreach unless the user explicitly wants them reviewed.","Return each prospect with relevant job links, signal interpretation, likely buyer, recommended contact path, and CRM-safe source notes.","For scheduled runs, dedupe against prior findings and only surface new or materially changed hiring signals since the last run."],activityLogInstructions:["Append hiring-signal run entries to the CRM account note or hiring-intent prospect digest for the monitored role set.","Log job sources checked, role/title filters, companies scanned, grouped openings, signal-strength factors, and active opportunities skipped.","For each surfaced company, record job links, inferred business need, likely buyer, confidence, CRM note/task/draft created, owner, and next action.","For scheduled runs, log only new postings, materially changed hiring clusters, threshold crossings, and duplicate signals suppressed since the prior run."]}),o=i({id:"website-visitor-follow-up",title:"Website Visitor Follow-up",summary:"Turn a pasted or synced visitor list into prioritized follow-up tasks and messages.",category:"Find Leads",outcome:"Accepts visitor or intent exports, matches accounts, prioritizes warm leads, drafts follow-ups, and logs next actions.",userUseCase:"Turn a manual or scheduled website-visitor export into enriched account follow-up. The skill helps founders and sellers prioritize visitors by intent, match them to CRM records, research likely buyers, and create respectful follow-up actions without pretending DenchClaw has realtime site tracking.",personas:["Founder","Sales"],requiredApps:[d.gmail,d.hubspot],triggerModes:["manual","scheduled"],autonomy:"Can automate",interviewQuestions:[{id:"visitor-source",prompt:"Where will website visitor or intent data come from?",required:!0,options:[{id:"uploaded-csv",label:"Uploaded CSV"},{id:"analytics-export",label:"Analytics export"},{id:"campaign-export",label:"Campaign export"},{id:"pasted-list",label:"Pasted list"}],freeformHint:"Name the export, file shape, and fields available such as domain, page path, visit time, or company name."},{id:"intent-pages",prompt:"Which pages or behaviors should signal buying interest?",required:!0,allowMultiple:!0,options:[{id:"pricing",label:"Pricing"},{id:"demo",label:"Demo page"},{id:"integrations",label:"Integrations"},{id:"comparison",label:"Comparison page"},{id:"repeat-visits",label:"Repeat visits"}]},{id:"matching-policy",prompt:"How should visitor records be matched to CRM accounts and contacts?",required:!0,options:[{id:"domain",label:"Company domain"},{id:"email-domain",label:"Email domain"},{id:"company-name",label:"Company name"},{id:"export-company-id",label:"Export company ID"}],freeformHint:"Mention whether fuzzy matches should be reviewed before use."},{id:"follow-up-output",prompt:"What follow-up should the skill produce?",required:!0,allowMultiple:!0,options:[{id:"hot-account-list",label:"Hot account list"},{id:"buyer-research",label:"Buyer research"},{id:"gmail-drafts",label:"Gmail drafts"},{id:"crm-tasks",label:"CRM tasks"}]},{id:"send-guardrails",prompt:"What send rules, quiet hours, and stop conditions should apply?",required:!0,freeformHint:"Include draft vs send, daily caps, owner approval, reply detection, recent outreach cooldown, and do-not-contact rules."}],skillInstructions:["Use only manual uploads, pasted lists, or scheduled export files; do not assume website webhooks, event listeners, or realtime visitor callbacks exist.","Normalize visitor records by company, domain, visit date, source, page path, campaign metadata, and identity fields before matching to Dench CRM or HubSpot.","Score intent using configured page behavior, recency, repeat visits, CRM/HubSpot status, Gmail relationship history, enrichment, and account fit.","Enrich matched companies and likely buyers with Dench-native enrichment, CRM history, web search, and Gmail context when connected.","Draft follow-up that references observed account-level interest carefully without implying a specific private person visited unless the export proves it.","Respect send guardrails, quiet hours, duplicate checks, owner approval, and do-not-contact exclusions before creating or sending any message.","Log visitor evidence, match confidence, recommended action, and any drafts or tasks additively in CRM with source attribution."],activityLogInstructions:["Write visitor follow-up entries to the matched CRM account/contact note or visitor-intent run summary, tied to the uploaded/exported source.","Log import source, visit window, matching method, intent pages or behaviors, match confidence, hot accounts created, and records skipped for weak identity.","For each follow-up action, capture account-level evidence, buyer researched, draft or task ID, approval/send state, cooldown or do-not-contact block, and next eligible date.","For scheduled exports, append only new visits, changed intent scores, newly matched accounts, and stopped or suppressed follow-ups since the previous export."]}),p=i({id:"conference-lead-researcher",title:"Conference Lead Researcher",summary:"Research attendees, speakers, or sponsors before an event and build a hit list.",category:"Find Leads",outcome:"Turns an event or attendee list into a prioritized meeting and outreach plan with CRM-ready context.",userUseCase:"Use this before or after an event when a founder, seller, or BD owner has a conference page, attendee file, sponsor list, or speaker lineup and wants a prioritized lead plan. The skill should connect event participation to CRM context, warm paths, and concrete meeting or follow-up actions.",personas:["Founder","Sales","Investor/BD"],requiredApps:[d.gmail,d.googleCalendar],triggerModes:["manual"],autonomy:"Can automate",interviewQuestions:[{id:"conference-source",prompt:"Which event should be researched, and what source should I use?",required:!0,freeformHint:"Share the event name, website, sponsor page, attendee list, exhibitor list, speaker page, or uploaded file."},{id:"participant-types",prompt:"Which participant types should become leads?",required:!0,allowMultiple:!0,options:[{id:"sponsors",label:"Sponsors"},{id:"exhibitors",label:"Exhibitors"},{id:"speakers",label:"Speakers"},{id:"attendees",label:"Attendees"},{id:"partners",label:"Partners"}]},{id:"lead-fit",prompt:"What makes an event participant worth prioritizing?",required:!0,freeformHint:"Describe target persona, company profile, buying trigger, partnership fit, or investor relevance."},{id:"event-goal",prompt:"What should the skill optimize the event list for?",required:!0,options:[{id:"book-before-event",label:"Book meetings before"},{id:"prioritize-booth-visits",label:"Prioritize booth visits"},{id:"post-event-follow-up",label:"Post-event follow-up"},{id:"partnership-targets",label:"Partnership targets"}]},{id:"crm-context-policy",prompt:"How should existing CRM relationships affect prioritization?",required:!1,options:[{id:"prioritize-warm",label:"Prioritize warm accounts"},{id:"exclude-customers",label:"Exclude customers"},{id:"include-opportunities",label:"Include opportunities"},{id:"net-new-only",label:"Net-new only"}]}],skillInstructions:["Collect participant companies and people from event pages, uploaded lists, files, CRM context, and web search.","Classify each lead by participant role, event relevance, account fit, and likely reason for attending.","Enrich companies and people with domains, titles, headquarters, company size, CRM status, and recent public signals.","Prioritize leads according to the event goal, separating pre-event, on-site, and post-event actions when useful.","Highlight warm paths such as existing contacts, CRM notes, shared accounts, prior interactions, or scheduled meetings.","Return a conference-ready lead list with meeting rationale, conversation starters, recommended outreach timing, and source evidence."],activityLogInstructions:["Append event-research entries to the conference lead list, event brief, or CRM campaign note for the named event.","Log event source pages/files, participant types scanned, companies and people added, lead-fit criteria, warm paths found, and exclusions applied.","For each prioritized lead, record participant role, CRM status, evidence links, meeting rationale, conversation starter, recommended timing, and owner action.","When rerun after the event, log newly found participants, changed priority, post-event follow-up status, and leads suppressed because they were already handled."]}),q=i({id:"linkedin-style-outreach",title:"LinkedIn-style Outreach",summary:"Create concise social-style outreach and follow-ups with strict automation rules.",category:"Follow Up",outcome:"Researches prospects, writes short LinkedIn-style messages, manages follow-up sequencing, and logs outreach state.",userUseCase:"Use this when a founder, seller, recruiter, or BD owner has people or accounts to contact and wants concise LinkedIn-style outreach that feels researched without being creepy. The skill should turn CRM lists, uploaded files, saved searches, or manual names into short messages, follow-up plans, and logged outreach state.",personas:["Founder","Sales","Recruiter"],requiredApps:[d.linkedin,d.gmail,d.hubspot],triggerModes:["manual","scheduled"],autonomy:"Can automate",interviewQuestions:[{id:"audience-source",prompt:"Where should the outreach audience come from?",required:!0,allowMultiple:!0,options:[{id:"crm-list",label:"CRM list"},{id:"uploaded-file",label:"Uploaded file"},{id:"manual-names",label:"Manual names"},{id:"search-criteria",label:"Search criteria"}],freeformHint:"Include list names, filters, file names, or exact prospect criteria."},{id:"outreach-goal",prompt:"What should the message try to accomplish?",required:!0,options:[{id:"book-meeting",label:"Book a meeting"},{id:"start-conversation",label:"Start a conversation"},{id:"recruit-candidate",label:"Recruit candidate"},{id:"partner-intro",label:"Partner intro"},{id:"investor-bd",label:"Investor or BD"}]},{id:"message-style",prompt:"What style should the outreach use?",required:!0,options:[{id:"very-short",label:"Very short"},{id:"warm-specific",label:"Warm and specific"},{id:"direct-business",label:"Direct business"},{id:"curious-peer",label:"Curious peer"}],freeformHint:"Mention phrases to use or avoid."},{id:"send-policy",prompt:"Should DenchClaw draft messages only, or send when rules are met?",required:!0,options:[{id:"draft-only",label:"Draft only"},{id:"send-after-review",label:"Send after review"},{id:"auto-send-allowlist",label:"Auto-send allowlist"}],freeformHint:"If auto-sending is allowed, specify allowed lists, daily caps, quiet hours, and exclusions."},{id:"follow-up-guardrails",prompt:"What follow-up limits and stop conditions should apply?",required:!0,freeformHint:"Include max follow-ups, spacing, reply or connection-accepted detection, CRM stage changes, and do-not-contact rules."}],skillInstructions:["Accept prospects from HubSpot/Dench CRM records, enrichment results, uploaded files, pasted names, Gmail relationship history, or manual search criteria; use LinkedIn when connected and useful for profile context.","For each prospect, research lightweight public and CRM context that supports a specific opening line: role, company, recent change, mutual context, hiring/funding/news signal, or stated interest.","Write concise LinkedIn-style messages with one clear CTA, no fabricated familiarity, no over-personalized claims, and no sensitive personal data unless the user explicitly provided it.","Respect the selected send policy: draft by default; send only when the prospect matches explicit allowlists, daily caps, duplicate checks, quiet hours, and channel constraints.","For scheduled runs, use idempotency checks against HubSpot/Dench CRM notes, Gmail history, prior Dench runs, and connected app history so the same prospect is not messaged twice for the same campaign.","Stop outreach when a reply, accepted connection plus response, meeting booked, disqualifying CRM stage, do-not-contact flag, blocked signal, or owner override is detected."],activityLogInstructions:["Log outreach-state entries on the CRM/contact record or social outreach campaign summary, never only inside the message draft.","Record audience source, prospect researched, public/CRM evidence used, message variant, draft/send state, send policy gate, and next follow-up date.","For each skipped prospect, log the concrete reason: duplicate campaign touch, cap, quiet hours, missing evidence, do-not-contact, reply, booked meeting, or owner override.","For scheduled sequences, append only state transitions such as new draft, sent message, accepted/replied, stopped, or follow-up due."]}),r=i({id:"stale-thread-follow-up-agent",title:"Stale Thread Follow-up Agent",summary:"Find valuable email threads that went quiet and revive them safely.",category:"Follow Up",outcome:"Scans stale conversations, ranks which deserve action, drafts or sends tasteful nudges, and updates CRM status.",userUseCase:"Use this when important conversations have gone quiet and you need DenchClaw to find the threads worth reviving, understand the last ask, draft a tasteful next step, and keep CRM state honest.",personas:["Founder","Sales","Customer Success"],requiredApps:[d.gmail,d.hubspot],triggerModes:["manual","scheduled"],autonomy:"Can automate",interviewQuestions:[{id:"thread-sources",prompt:"Where should DenchClaw look for stale conversations?",required:!0,allowMultiple:!0,options:[{id:"gmail",label:"Gmail threads"},{id:"crm-activities",label:"CRM activity"},{id:"hubspot-deals",label:"HubSpot deals"},{id:"uploaded-export",label:"Uploaded export"}]},{id:"stale-definition",prompt:"When should a thread count as stale?",required:!0,options:[{id:"3-days",label:"3 days"},{id:"7-days",label:"7 days"},{id:"14-days",label:"14 days"},{id:"custom",label:"Custom"}],freeformHint:"Say whether the clock starts from your last message, their last message, a proposal sent, a meeting held, or a CRM stage change."},{id:"valuable-thread-rules",prompt:"Which stale threads are worth following up on?",required:!0,allowMultiple:!0,options:[{id:"open-opportunities",label:"Open opportunities"},{id:"recent-meetings",label:"Recent meetings"},{id:"exec-contacts",label:"Executive contacts"},{id:"customer-risk",label:"Customer risk"},{id:"manual-priority",label:"Manual priority"}],freeformHint:"Include exclusions like closed-lost, support-only, vendor, personal, or do-not-contact threads."},{id:"follow-up-tone",prompt:"What kind of nudge should the skill write?",required:!0,options:[{id:"light-bump",label:"Light bump"},{id:"useful-context",label:"Add useful context"},{id:"deadline-check",label:"Deadline check"},{id:"breakup-note",label:"Breakup note"}]},{id:"send-and-stop-rules",prompt:"What send, quiet-hour, reply-detection, and stop-condition rules should apply?",required:!0,freeformHint:"Include draft vs send, max nudges per thread, quiet hours, reply detection, meeting booked, CRM stage changes, and do-not-contact handling."}],skillInstructions:["Scan only the selected sources for stale conversations during manual or scheduled runs; do not rely on email webhooks or app callbacks.","Rank threads by business value using CRM stage, deal amount, account importance, relationship strength, recent meeting context, and owner priority.","Before drafting, summarize the thread history, last unanswered ask, likely next step, and CRM facts that change the recommendation.","Draft follow-ups that reference the real prior conversation, avoid guilt or pressure, and choose the lightest useful CTA for the thread state.","Send only when explicit rules allow it; otherwise create drafts or CRM tasks with the recommended send window.","For scheduled runs, check Gmail, CRM, HubSpot, and prior Dench notes to avoid duplicate nudges and skip threads already handled by a teammate.","Stop when a reply is detected, a meeting is booked, the CRM stage closes or disqualifies, the contact opts out, or the owner marks the thread done."],activityLogInstructions:["Append stale-thread entries to the CRM record or follow-up run summary for each reviewed thread, linked to the email thread when available.","Log stale definition, last unanswered ask, days inactive, business value reason, drafted nudge type, send/draft decision, and owner review state.","Capture stop and skip reasons including reply detected, meeting booked, stage changed, do-not-contact, teammate handled, low value, or duplicate nudge.","For scheduled runs, log only new stale threads, worsened inactivity, nudges created or sent, and threads that exited the queue since the previous scan."]}),s=i({id:"warm-lead-nurture",title:"Warm Lead Nurture",summary:"Keep promising but not-ready leads warm with useful, low-pressure touches.",category:"Follow Up",outcome:"Segments warm leads, chooses relevant touchpoints, drafts or sends helpful check-ins, and logs future timing.",userUseCase:"Use this when leads are interested but not ready to buy, meet, invest, partner, or hire yet, and you want DenchClaw to keep them warm with useful, low-pressure touches. The skill should segment leads, find timely reasons to reach out, and maintain nurture state from manual runs or scheduled checks without relying on webhooks.",personas:["Founder","Sales"],requiredApps:[d.gmail,d.hubspot],triggerModes:["manual","scheduled"],autonomy:"Can automate",interviewQuestions:[{id:"warm-lead-source",prompt:"Which warm leads should this nurture?",required:!0,allowMultiple:!0,options:[{id:"crm-stage",label:"CRM stage"},{id:"hubspot-list",label:"HubSpot list"},{id:"uploaded-list",label:"Uploaded list"},{id:"manual-selection",label:"Manual selection"},{id:"saved-search",label:"Saved search"}],freeformHint:"Name the list, stages, tags, owners, file, or saved segment."},{id:"nurture-reason",prompt:"Why are these leads warm but not ready?",required:!0,allowMultiple:!0,options:[{id:"bad-timing",label:"Bad timing"},{id:"budget-later",label:"Budget later"},{id:"needs-education",label:"Needs education"},{id:"not-priority",label:"Not priority yet"},{id:"relationship-building",label:"Relationship building"}]},{id:"touchpoint-types",prompt:"What kinds of nurture touches should DenchClaw use?",required:!0,allowMultiple:!0,options:[{id:"helpful-resource",label:"Helpful resource"},{id:"company-trigger",label:"Company trigger"},{id:"product-update",label:"Product update"},{id:"event-invite",label:"Event invite"},{id:"simple-check-in",label:"Simple check-in"}]},{id:"cadence",prompt:"How often should each lead be touched?",required:!0,options:[{id:"monthly",label:"Monthly"},{id:"quarterly",label:"Quarterly"},{id:"signal-based",label:"Signal-based"},{id:"custom",label:"Custom"}],freeformHint:"Include quiet periods, max total touches, cooldowns, and when to pause."},{id:"conversion-stop-rules",prompt:"What signals should convert, pause, or stop nurture?",required:!0,freeformHint:"Include replies, booked meetings, CRM stage changes, negative intent, unsubscribes, quiet hours, send caps, and owner overrides."}],skillInstructions:["Build the nurture queue from Dench CRM, enriched company/contact data, uploaded files, or connected HubSpot lists, then segment leads by persona, account fit, reason for delay, and last meaningful interaction.","Use web search and enrichment to find timely but non-invasive context, such as company news, hiring, funding, product launches, role changes, or relevant content hooks.","Select the lowest-pressure useful touch for each lead, prioritizing relevance over frequency and avoiding generic check-ins when a better trigger exists.","Draft or send through the approved channel only under explicit send rules, including channel preference, daily caps, quiet hours, exclusions, and duplicate prevention.","For scheduled nurture, maintain per-lead state so cron runs do not restart the sequence, repeat the same asset, or contact leads inside their cooldown window.","Detect replies by checking connected inbox or CRM activity during each run; treat substantive replies, booked meetings, stage advancement, opt-outs, and owner pauses as stop or handoff conditions.","Log each touch, rationale, source links, next eligible date, and confidence notes back to CRM without overwriting user-authored fields unless explicitly allowed."],activityLogInstructions:["Write nurture activity entries to the CRM lead/contact record and a segment-level nurture digest, keyed by cadence and lead segment.","Log segment membership, reason the lead is warm, selected touchpoint type, source links, draft/send status, owner approval, cooldown, and next eligible date.","For each skipped lead, record whether the cause was cooldown, repeated asset, insufficient trigger, reply, booked meeting, opt-out, stage change, or owner pause.","For scheduled nurture, append only touches created or sent, state transitions, newly eligible leads, and leads removed from nurture since the prior run."]}),t=i({id:"proposal-chaser",title:"Proposal Chaser",summary:"Follow up on sent proposals without sounding desperate or repetitive.",category:"Follow Up",outcome:"Tracks sent proposals, detects stalled decisions, sends next-step nudges, and keeps forecast notes accurate.",userUseCase:"Use when proposals, quotes, contracts, partnership terms, or fundraising materials have been sent and the owner needs polite follow-through. The skill should understand proposal status from CRM, sent email, files, and HubSpot context, then draft or send stage-appropriate nudges without inventing terms or pressure.",personas:["Founder","Sales","Investor/BD"],requiredApps:[d.gmail,d.hubspot],triggerModes:["manual","scheduled"],autonomy:"Can automate",interviewQuestions:[{id:"proposal-source",prompt:"Where should DenchClaw find proposals to chase?",required:!0,allowMultiple:!0,options:[{id:"crm-deals",label:"CRM deals"},{id:"hubspot-stage",label:"HubSpot stage"},{id:"gmail-sent",label:"Gmail sent mail"},{id:"uploaded-tracker",label:"Uploaded tracker"},{id:"manual-list",label:"Manual list"}]},{id:"proposal-types",prompt:"What kinds of proposals should this handle?",required:!0,allowMultiple:!0,options:[{id:"sales-proposal",label:"Sales proposal"},{id:"services-sow",label:"Services SOW"},{id:"partnership",label:"Partnership"},{id:"investment-materials",label:"Investment materials"},{id:"contract-redlines",label:"Contract or redlines"}]},{id:"chase-timing",prompt:"When should DenchClaw follow up after a proposal is sent?",required:!0,options:[{id:"2-business-days",label:"2 business days"},{id:"5-business-days",label:"5 business days"},{id:"1-week",label:"1 week"},{id:"custom",label:"Custom"}],freeformHint:"Include decision dates, procurement timelines, and whether weekends count."},{id:"escalation-path",prompt:"How should follow-ups escalate if there is no answer?",required:!0,options:[{id:"gentle-only",label:"Gentle only"},{id:"add-value",label:"Add useful context"},{id:"ask-for-blocker",label:"Ask about blockers"},{id:"breakup",label:"Close-the-loop note"}],freeformHint:"Specify max attempts and whether to involve another stakeholder."},{id:"send-forecast-guardrails",prompt:"What send, quiet-hour, reply-detection, and forecast update rules should apply?",required:!0,freeformHint:"Include draft vs auto-send, caps, accepted/rejected proposal signals, stakeholder replies, meetings booked, and forecast fields to update."}],skillInstructions:["Identify open proposals from CRM, HubSpot, sent email, uploaded trackers, or manual input, attaching proposal file, amount, owner, sent date, stakeholders, and next-step promise when available.","Classify each proposal by stage and urgency: waiting for first response, decision overdue, procurement or legal, verbal yes, stakeholder missing, or likely stalled.","Draft follow-ups that match the stage: confirm receipt, offer clarification, surface a useful detail, ask about blockers, propose a decision meeting, or send a polite close-the-loop note.","Do not invent proposal terms, pricing, deadlines, discounts, or legal claims; quote only from CRM fields, user-provided files, or the actual thread.","Send only under explicit rules with daily caps, quiet hours, recipient allowlists, and duplicate checks; otherwise create drafts and CRM tasks for owner review.","For scheduled runs, compare against Gmail and CRM activity plus prior Dench notes so the same proposal is not chased twice after a reply, meeting, or owner action.","Stop or hand off when a reply is detected, proposal is accepted or rejected, a meeting is booked, deal stage changes, procurement/legal owner takes over, contact opts out, or the user marks the opportunity paused."],activityLogInstructions:["Append proposal follow-up entries to the opportunity CRM note or proposal tracker, linked to the proposal file/thread and deal record.","Log proposal type, sent date, waiting reason, chase timing, draft/send action, forecast update proposed, and owner approval state.","Capture exact stop or skip reasons such as reply, accepted/rejected proposal, meeting booked, legal/procurement takeover, opt-out, pause, cap, or quiet hours.","For scheduled runs, log only proposals newly due, follow-ups created or sent, forecast notes changed, and proposals removed from the chase queue."]}),u=i({id:"no-show-recovery",title:"No-show Recovery",summary:"Recover missed meetings with fast, polite rescheduling and CRM notes.",category:"Follow Up",outcome:"Identifies no-shows, sends rescheduling notes, updates CRM/calendar context, and stops when a new meeting is booked.",userUseCase:"Use this when a prospect, customer, candidate, partner, or investor misses a scheduled meeting and the owner needs a fast, polite recovery path. The skill reviews calendar and CRM context, drafts a no-blame reschedule message, updates the record, and stops once the person replies or books a new time.",personas:["Founder","Sales","Customer Success","Recruiter"],requiredApps:[d.gmail,d.googleCalendar],triggerModes:["manual","scheduled"],autonomy:"Can automate",interviewQuestions:[{id:"meeting-source",prompt:"How should DenchClaw identify no-shows?",required:!0,allowMultiple:!0,options:[{id:"calendar-review",label:"Calendar review"},{id:"crm-meeting-outcomes",label:"CRM outcomes"},{id:"manual-trigger",label:"Manual trigger"},{id:"uploaded-log",label:"Uploaded log"}],freeformHint:"Include calendar names, CRM outcome values, or how you will invoke it manually."},{id:"meeting-types",prompt:"Which meeting types should this recover?",required:!0,allowMultiple:!0,options:[{id:"sales-discovery",label:"Sales discovery"},{id:"demo",label:"Demo"},{id:"customer-success",label:"Customer success"},{id:"candidate-interview",label:"Candidate interview"},{id:"investor-bd",label:"Investor or BD"}]},{id:"first-touch-timing",prompt:"When should the first no-show message be drafted or sent?",required:!0,options:[{id:"15-minutes",label:"15 minutes"},{id:"1-hour",label:"1 hour"},{id:"same-day",label:"Same day"},{id:"next-business-day",label:"Next business day"}],freeformHint:"Include quiet hours and whether timing differs by meeting type."},{id:"reschedule-cta",prompt:"What rescheduling CTA should the recovery note use?",required:!0,options:[{id:"booking-link",label:"Booking link"},{id:"offer-times",label:"Offer times"},{id:"ask-for-times",label:"Ask for times"},{id:"owner-review",label:"Owner review first"}],freeformHint:"Provide booking links, calendar constraints, or preferred time windows."},{id:"retry-stop-rules",prompt:"What retry limits, reply detection, and stop conditions should apply?",required:!0,freeformHint:"Include max attempts, spacing, quiet hours, booked meeting detection, apology/reply handling, CRM outcome updates, and when to mark closed/no-response."}],skillInstructions:["Identify likely no-shows from Calendar history, CRM meeting outcomes, uploaded logs, or manual input; verify attendance state during each manual or scheduled run instead of relying on webhooks.","Use meeting title, attendees, CRM record, prior thread, and notes/files to understand context before writing a recovery message.","Draft or send a fast, polite note that assumes positive intent, avoids blame, and offers the approved rescheduling path with minimal friction.","Apply different wording for sales, customer, recruiting, founder, and investor/BD meetings so the note fits the relationship and stakes.","Respect send guardrails including draft-vs-send mode, quiet hours, daily caps, booking-link rules, recipient exclusions, and duplicate prevention for the same missed meeting.","For scheduled runs, check Calendar, Gmail, and CRM activity before each follow-up so the skill stops once a new meeting is booked, the person replies, the owner intervenes, or the record changes stage.","Log the no-show, message sent or drafted, next retry date, and final outcome in CRM/calendar notes without overwriting existing user-authored context unless explicitly allowed."],activityLogInstructions:["Write no-show recovery entries to the CRM record and calendar note for the missed event, linked to the original meeting ID or title/date.","Log meeting type, attendee/account, no-show evidence, first-touch timing, recovery message draft/send state, booking CTA used, next retry date, and owner.","Record stop reasons including reply, new meeting booked, owner intervention, stage change, opt-out, max retry reached, or closed/no-response outcome.","For scheduled scans, append only newly detected no-shows, retry state changes, bookings recovered, and meetings suppressed because they were already processed."]}),v=i({id:"champion-job-change-tracker",title:"Champion Job-change Tracker",summary:"Catch champions who move roles and turn the change into a relationship-safe action plan.",category:"Grow Customers",outcome:"Detects champion role changes, assesses risk or new-account potential, drafts owner-reviewed outreach, and creates account follow-up actions.",userUseCase:"Use when a sales, founder, or customer-success owner depends on champions and needs a repeatable way to catch job changes before renewals, expansions, or referrals go cold. The skill should protect the existing account relationship, identify the champion's new company fit, and draft personal follow-up for review.",personas:["Customer Success","Sales","Founder"],requiredApps:[d.hubspot,d.gmail],triggerModes:["manual","scheduled"],autonomy:"Creates drafts",interviewQuestions:[{id:"champion-scope",prompt:"Which champions or accounts should be monitored for role changes?",required:!0,freeformHint:"Name account segments, contact roles, relationship strength thresholds, renewal windows, or uploaded contact lists."},{id:"change-signals",prompt:"Which signals should count as evidence that a champion moved?",required:!0,allowMultiple:!0,options:[{id:"profile-change",label:"Public profile change"},{id:"email-bounce",label:"Email bounce or OOO"},{id:"crm-title-change",label:"CRM title/account change"},{id:"manual-list",label:"Manual review list"}]},{id:"account-risk-policy",prompt:"How should the skill handle the old account when a champion leaves?",required:!0,allowMultiple:!0,options:[{id:"find-new-champion",label:"Find likely replacement champion"},{id:"renewal-risk",label:"Flag renewal risk"},{id:"owner-task",label:"Create owner task"},{id:"do-not-alert",label:"Do not alert unless renewal is near"}]},{id:"new-company-policy",prompt:"What should happen at the champion's new company?",required:!0,allowMultiple:!0,options:[{id:"fit-brief",label:"Build fit brief"},{id:"personal-draft",label:"Draft personal note"},{id:"crm-opportunity",label:"Suggest opportunity"},{id:"watch-only",label:"Watch only"}]},{id:"message-guardrails",prompt:"What tone, approval, and no-go rules should apply to champion outreach?",required:!0,freeformHint:"Include draft-only rules, phrases to avoid, whether to mention the old account, and who must approve sends."}],skillInstructions:["Identify likely champion role changes from HubSpot/Dench CRM contact changes, Gmail bounces or OOO replies, Dench-native enrichment, public profile/web evidence, and uploaded review lists; separate confirmed changes from weak hints.","For the old account, summarize why the champion mattered, open renewal or expansion exposure, likely replacement contacts, and the recommended owner action.","For the champion's new company, use enrichment, CRM ownership, prior Gmail relationship history, and public account evidence to assess fit, timing, account ownership, and relationship context before suggesting outreach.","Draft personal follow-up that reads like a relationship note, not a marketing reactivation email, and never auto-send by default.","Avoid implying private knowledge, sensitive employment details, or pressure around the role change.","For scheduled runs, suppress unchanged champion changes and resurface only when risk, fit, or owner action materially changes."],activityLogInstructions:["Append champion-change entries to both the old account record and the champion/contact relationship note, with a separate new-company brief when applicable.","Log change evidence, confirmation status, old account risk, replacement-champion search, new company fit, draft created, owner routed, and approval state.","Record skipped or watch-only decisions with reasons such as weak evidence, no renewal exposure, poor new-company fit, sensitive context, or owner hold.","For scheduled monitoring, log only confirmed changes, risk/fit changes, new owner actions due, and previously surfaced changes that were resolved."]}),w=i({id:"deck-claim-verifier",title:"Deck Claim Verifier",summary:"Extract claims from a deck and verify each one against explicit evidence.",category:"Research Anything",outcome:"Turns a pitch deck or narrative doc into a claim table with verification status, source support, caveats, and open questions.",userUseCase:"Use when an investor, founder, or strategy operator receives a deck or memo with quantitative, customer, funding, market, or competitive claims that need fast trust checks. The skill should extract each material claim, try to verify it from preferred sources, and clearly mark what could not be proven.",personas:["Investor/BD","Founder","Knowledge Worker"],requiredApps:[d.hubspot,d.notion],triggerModes:["manual"],autonomy:"Creates drafts",interviewQuestions:[{id:"deck-source",prompt:"Which deck, memo, or uploaded file should be verified?",required:!0,freeformHint:"Provide a file, pasted text, URL, or workspace artifact containing the claims to review."},{id:"claim-types",prompt:"Which claim types should be extracted and checked?",required:!0,allowMultiple:!0,options:[{id:"metrics",label:"Metrics and growth"},{id:"customers",label:"Customers or logos"},{id:"market-size",label:"Market size"},{id:"funding",label:"Funding or ownership"},{id:"competitors",label:"Competitors"},{id:"product",label:"Product capabilities"}]},{id:"source-standard",prompt:"What source standard should the verifier use?",required:!0,options:[{id:"primary-only",label:"Primary sources only"},{id:"trusted-plus-primary",label:"Trusted news plus primary"},{id:"broad-with-labels",label:"Broad scan with labels"},{id:"provided-docs-only",label:"Provided docs only"}]},{id:"verification-threshold",prompt:"How strict should the status labels be?",required:!0,options:[{id:"strict",label:"Strict: exact support required"},{id:"balanced",label:"Balanced: partial support allowed"},{id:"triage",label:"Triage: flag only risky claims"}]},{id:"output-audience",prompt:"Who will use the verification output?",required:!0,options:[{id:"investment-team",label:"Investment team"},{id:"founder",label:"Founder"},{id:"sales-bd",label:"Sales or BD"},{id:"internal-review",label:"Internal review"}],freeformHint:"Include desired length, citation format, and whether to include private notes."}],skillInstructions:["Extract every material factual claim before researching; keep the original wording and slide or section reference.","Verify claims against uploaded decks/docs, HubSpot/Dench CRM evidence, Notion/files, native enrichment, and public primary or trusted sources depending on the selected source standard.","Classify each claim as Verified, Partial, Unable to verify, Contradicted, or Out of scope with a short rationale.","For Verified and Partial claims, include the exact supporting quote or data point and source URL or file reference.","Do not fill gaps with plausible facts; if a claim cannot be supported, mark it Unable to verify and list the sources checked.","Separate source quality from confidence so users can see when a claim is supported only by weak or promotional sources.","End with the riskiest unsupported claims, recommended follow-up questions, and claims safe to repeat externally."],activityLogInstructions:["Append verification entries to the claim table or research report, keyed by deck/file version and verification run timestamp.","Log claims extracted, slide or section references, source standard used, sources checked, status changes, contradictions found, and out-of-scope claims.","For each material claim, record original wording, verification label, supporting quote or missing-evidence note, source quality, confidence, and recommended follow-up question.","On reruns, log only changed claim statuses, new evidence, newly contradicted claims, and claims removed because the source deck changed."]}),x=i({id:"pre-call-diff-brief",title:"Pre-call Diff Brief",summary:"Deliver a tiny before-call brief focused on what changed since the last touch.",category:"Prep Meetings",outcome:"Creates a 60-second meeting brief with last touch, changes, open commitments, risks, and the next best ask.",userUseCase:"Use when a founder, seller, investor, recruiter, or CS owner has back-to-back meetings and needs a just-in-time brief that is shorter than a dossier. The skill should highlight only the facts that changed the meeting plan since the last interaction.",personas:["Founder","Sales","Customer Success","Recruiter","Investor/BD"],requiredApps:[d.googleCalendar,d.gmail,d.hubspot],triggerModes:["manual","scheduled"],autonomy:"Creates drafts",interviewQuestions:[{id:"meeting-scope",prompt:"Which meetings should receive a pre-call diff brief?",required:!0,allowMultiple:!0,options:[{id:"external-only",label:"External only"},{id:"customers",label:"Customers"},{id:"prospects",label:"Prospects"},{id:"investors",label:"Investors"},{id:"candidates",label:"Candidates"},{id:"manual-selection",label:"Manual selection"}]},{id:"diff-sources",prompt:"Which context should count as a meaningful change?",required:!0,allowMultiple:!0,options:[{id:"last-conversation",label:"Last conversation"},{id:"email-thread",label:"Email thread"},{id:"crm-stage",label:"CRM or stage changes"},{id:"support-product",label:"Support or product updates"},{id:"news",label:"News or public signal"},{id:"internal-notes",label:"Internal notes"}]},{id:"brief-shape",prompt:"What should the 60-second brief always include?",required:!0,allowMultiple:!0,options:[{id:"who",label:"Who and why now"},{id:"last-touch",label:"Last touch"},{id:"what-changed",label:"What changed"},{id:"open-commitments",label:"Open commitments"},{id:"recommended-ask",label:"Recommended ask"}]},{id:"delivery-window",prompt:"When should the brief appear before the call?",required:!0,options:[{id:"15-minutes",label:"15 minutes before"},{id:"30-minutes",label:"30 minutes before"},{id:"morning-of",label:"Morning of"},{id:"manual-only",label:"Manual only"}]},{id:"length-policy",prompt:"What is the maximum length and sensitivity policy?",required:!0,freeformHint:"Example: five bullets max, no scrolling, private section only for internal risks, low-confidence items hidden."}],skillInstructions:["Anchor on the calendar event or selected meeting, then find the last meaningful interaction with the attendee, company, or opportunity.","Use Gmail, HubSpot/Dench CRM, Calendar, enrichment, notes/files, and relevant public changes to lead with what changed since that last touch; skip static biography or company background unless it alters the recommended meeting plan.","Keep the brief to the configured maximum length and put the recommended ask or CTA in the first screen.","Separate commitments made by the user from commitments owed by the other party.","Label sensitive internal context and low-confidence claims according to the configured visibility policy.","For scheduled runs, regenerate only when meaningful context changes or the meeting is inside the delivery window."],activityLogInstructions:["Append pre-call diff entries to the meeting brief artifact or calendar-attached note, keyed by meeting ID and delivery window.","Log last meaningful touch, sources checked, changed facts included, commitments found, risks included or hidden, brief version, and recommended ask.","Record skipped meetings with reasons such as no meaningful change, outside delivery window, sensitivity policy exclusion, or insufficient source confidence.","For scheduled prep, append only regenerated briefs, newly changed context, delivery failures, and meetings intentionally suppressed since the previous scan."]}),y=i({id:"candidate-ghosting-recovery",title:"Candidate Ghosting Recovery",summary:"Detect stalled candidates and draft careful re-engagement without hurting candidate experience.",category:"Hire People",outcome:"Finds candidates who went quiet between stages, drafts stage-aware re-engagement, and pings the right hiring owner.",userUseCase:"Use when a recruiter or founder loses candidates between phone screens, onsite scheduling, offers, or follow-up steps and needs a respectful recovery motion. The skill should detect silence by stage, preserve candidate experience, and keep hiring managers informed without auto-sending sensitive messages.",personas:["Recruiter","Founder"],requiredApps:[d.gmail,d.googleCalendar,d.notion],triggerModes:["manual","scheduled"],autonomy:"Creates drafts",interviewQuestions:[{id:"role-scope",prompt:"Which roles or candidate pipelines should be watched for ghosting?",required:!0,freeformHint:"Name roles, stages, owners, candidate segments, excluded roles, or uploaded candidate views."},{id:"ghosting-thresholds",prompt:"When should silence count as candidate ghosting by stage?",required:!0,freeformHint:"Example: 72 hours after phone screen, 48 hours after onsite scheduling link, 24 hours after offer follow-up."},{id:"recovery-action",prompt:"Which recovery actions should the skill prepare?",required:!0,allowMultiple:!0,options:[{id:"candidate-draft",label:"Candidate re-engagement draft"},{id:"hiring-manager-ping",label:"Hiring manager ping"},{id:"stage-cleanup",label:"Stage cleanup suggestion"},{id:"close-loop",label:"Close-loop recommendation"}]},{id:"tone-policy",prompt:"What tone and candidate-experience guardrails should apply?",required:!0,options:[{id:"warm-low-pressure",label:"Warm and low pressure"},{id:"direct-scheduling",label:"Direct scheduling ask"},{id:"value-add",label:"Add useful role context"},{id:"manual-only",label:"Manual owner review only"}],freeformHint:"List phrases to avoid, rejection rules, and who must approve messages."},{id:"owner-routing",prompt:"How should hiring managers or interviewers be notified?",required:!0,freeformHint:"Include role channels, owners, escalation timing, and when the candidate should not be contacted again."}],skillInstructions:["Detect ghosting from stage-specific silence across Dench CRM, Gmail threads, Calendar events, Notion scorecards, and uploaded ATS exports, not one universal timer; include the last candidate touch and expected next step.","Before drafting, summarize candidate context, role stage, recent interaction, likely reason for silence if evidence exists, and recommended owner action.","Keep all candidate-facing messages draft-only by default and never create rejection language unless explicitly requested.","Reference only role-relevant, candidate-provided, or authorized context; avoid pressure, guilt, or assumptions about personal circumstances.","Route hiring-manager prompts as concise decisions with candidate, stage, aging, blocker, and suggested action.","For scheduled runs, suppress unchanged stalled candidates and resurface only when the SLA worsens or a new owner action is due."],activityLogInstructions:["Append ghosting-recovery entries to the candidate record and hiring-owner action queue, keyed by role, stage, and silence threshold.","Log last candidate touch, expected next step, days silent, recovery action prepared, hiring-manager ping, draft-only approval state, and next review date.","Record candidate-experience safeguards and skip reasons such as do-not-contact, rejection pending, insufficient context, owner hold, personal-circumstance speculation risk, or unchanged stall.","For scheduled runs, append only newly stalled candidates, SLA worsening, new owner actions due, drafts created, and candidates removed because they replied or stage changed."]}),z=i({id:"month-end-metrics-assembler",title:"Month-end Metrics Assembler",summary:"Assemble founder-ready month-end metrics and deltas for updates, boards, and planning.",category:"Run Founder Ops",outcome:"Collects key monthly metrics, explains deltas, flags missing sources, and drafts a reusable metrics snapshot.",userUseCase:"Use when a founder spends hours pulling revenue, runway, customer, hiring, and forecast numbers into investor updates or board prep. The skill should assemble the numbers, show what changed, cite where each metric came from, and create the draft snapshot without assuming a large ops team.",personas:["Founder","Operator"],requiredApps:[d.hubspot,d.gmail,d.notion],triggerModes:["manual","scheduled"],autonomy:"Creates drafts",interviewQuestions:[{id:"metric-scope",prompt:"Which month-end metrics should be assembled?",required:!0,allowMultiple:!0,options:[{id:"revenue",label:"Revenue and MRR"},{id:"runway",label:"Runway and burn"},{id:"pipeline",label:"Pipeline"},{id:"customers",label:"Customer progress"},{id:"hiring",label:"Hiring"},{id:"product",label:"Product usage or delivery"}]},{id:"source-map",prompt:"Where does the founder currently keep each metric?",required:!0,freeformHint:"Name files, tables, dashboards, docs, manual numbers, or pasted exports. Include the source of truth for each metric."},{id:"delta-policy",prompt:"Which changes should be called out as meaningful?",required:!0,freeformHint:"Example: any metric moving more than 5%, missed forecast, runway below 12 months, or customer conversion milestone."},{id:"snapshot-audience",prompt:"Who will consume the metrics snapshot?",required:!0,allowMultiple:!0,options:[{id:"private-founder",label:"Private founder notes"},{id:"investors",label:"Investors"},{id:"board",label:"Board"},{id:"team",label:"Team"}]},{id:"missing-data-policy",prompt:"How should missing or stale metrics be handled?",required:!0,options:[{id:"flag-only",label:"Flag only"},{id:"ask-followup",label:"Ask me for missing values"},{id:"use-last-known",label:"Use last known with label"},{id:"omit",label:"Omit unsupported metrics"}]}],skillInstructions:["Build a source map for every requested metric using HubSpot/Dench CRM, Gmail context, Notion/docs, uploaded spreadsheets, pasted numbers, and linked files; clearly separate verified values, user-provided values, stale values, and missing values.","Calculate month-over-month and forecast deltas from source values or explicitly user-provided values only; otherwise flag the gap instead of inventing a number.","Lead with the metrics that changed meaningfully and explain why each change matters for runway, fundraising, customer traction, or hiring.","Create audience-specific versions only when requested; default to one private founder snapshot plus a concise update-ready summary.","Cite or label the source of every metric, including HubSpot report/view, CRM field, Gmail thread, Notion page, uploaded file, or manual founder input, so the founder can answer investor or board follow-up questions.","For scheduled runs, update the same period snapshot and track unresolved metric gaps until the founder fills or dismisses them."],activityLogInstructions:["Append metrics assembly entries to the monthly snapshot document, keyed by reporting month, audience version, and source window.","Log metrics requested, source-of-truth map, values verified, values stale or user-provided, deltas calculated, missing metrics, and audience versions created.","Record every unresolved gap with owner, source expected, last-known value if used, confidence label, and whether the founder was asked or the metric was omitted.","For scheduled month-end runs, log only changed values, resolved gaps, newly missing metrics, and updates to the same period snapshot rather than duplicate drafts."]}),A=i({id:"plg-expansion-scout",title:"PLG Expansion Scout",summary:"Find product-led expansion moments and turn them into CSM-led talk tracks.",category:"Grow Customers",outcome:"Surfaces account-level expansion signals, explains why they matter, and drafts owner-reviewed consolidation or upsell plays.",userUseCase:"Use when a PLG or hybrid sales team has product usage inside existing customer organizations and needs to spot expansion without sounding like vendor spam. The skill should group usage into account context, identify real expansion moments, and give CSMs a talk track rather than auto-emailing customers.",personas:["Customer Success","Sales","Founder"],requiredApps:[d.hubspot,d.gmail],triggerModes:["manual","scheduled"],autonomy:"Creates drafts",interviewQuestions:[{id:"account-scope",prompt:"Which customer accounts or workspace segments should be scanned for expansion signals?",required:!0,freeformHint:"Name paid accounts, free workspaces inside paid orgs, plan tiers, ownership rules, or uploaded usage exports."},{id:"expansion-signals",prompt:"Which product-led signals should count as expansion-worthy?",required:!0,allowMultiple:!0,options:[{id:"seat-growth",label:"Seat growth"},{id:"usage-spike",label:"Usage spike"},{id:"new-team",label:"New team or department"},{id:"feature-depth",label:"High-value feature adoption"},{id:"free-in-paid-org",label:"Free workspace in paid org"},{id:"integration-interest",label:"Integration interest"}]},{id:"noise-floor",prompt:"What should the skill suppress as normal noise?",required:!0,freeformHint:"Include minimum seat or usage thresholds, repeat-signal suppression, quiet accounts, and excluded teams."},{id:"owner-play",prompt:"What output should the account owner get for each expansion signal?",required:!0,allowMultiple:!0,options:[{id:"talk-track",label:"CSM talk track"},{id:"account-brief",label:"Account brief"},{id:"draft-note",label:"Draft owner-reviewed note"},{id:"task",label:"Owner task"}]},{id:"relationship-policy",prompt:"What relationship guardrails should apply before any customer touch?",required:!0,freeformHint:"Include draft-only rules, who owns the relationship, approved language, and when expansion should not be pursued."}],skillInstructions:["Accept product usage from uploaded exports, pasted tables, saved reports, HubSpot properties, CRM notes, or workspace lists, then group each signal to the correct customer account before recommending expansion; flag uncertain account mapping as missing data.","Rank expansion signals by evidence strength, account value, relationship context, and urgency instead of surfacing every usage increase.","Use HubSpot/Dench CRM ownership, Gmail relationship history, enrichment, and account notes to explain the exact behavior that changed and why it creates a plausible expansion conversation.","Produce CSM-led talk tracks and owner-reviewed drafts; never auto-send customer-facing expansion outreach by default.","Separate expansion opportunity from renewal risk so owners can decide whether to sell, nurture, or protect the relationship.","For scheduled runs, suppress unchanged signals and resurface only when the signal crosses a new threshold or owner action becomes due."],activityLogInstructions:["Append PLG expansion entries to the customer account note or expansion-signal digest, keyed by account, workspace segment, and signal window.","Log usage source, account mapping confidence, signal threshold crossed, behavior changed, expansion versus renewal-risk classification, owner play, and draft/task created.","Capture suppressed signals with reason: below noise floor, uncertain account mapping, unchanged threshold, relationship guardrail, or owner hold.","For scheduled runs, append only new threshold crossings, materially changed usage, owner actions due, and expansion signals resolved or dismissed."]}),B=i({id:"crm-contact-enricher",title:"CRM Contact Enricher",summary:"Fill missing contact and company fields with attributed enrichment.",category:"Keep CRM Clean",outcome:"Finds incomplete records, enriches missing fields from native data and external CRM context, and writes confidence-scored updates.",userUseCase:"Use this when Dench CRM or HubSpot contacts are missing firmographic, role, company, source, owner, lifecycle, or relationship fields. The skill should run manually for a named list or on a schedule for incomplete records, enrich from Dench-native data first, and write only attributed, confidence-scored CRM updates.",personas:["RevOps","Sales"],requiredApps:[d.hubspot],triggerModes:["manual","scheduled"],autonomy:"Updates CRM",interviewQuestions:[{id:"record-scope",prompt:"Which CRM records should this enrich?",required:!0,allowMultiple:!0,options:[{id:"all-incomplete-contacts",label:"All incomplete contacts"},{id:"owned-contacts",label:"Contacts I own"},{id:"recently-created",label:"Recently created"},{id:"target-accounts",label:"Target accounts"},{id:"named-list",label:"Named list"}],freeformHint:"Name the Dench view, HubSpot list, owner, lifecycle stage, or saved segment."},{id:"fields-to-enrich",prompt:"Which fields should be enriched or backfilled?",required:!0,allowMultiple:!0,options:[{id:"person-fields",label:"Person fields",description:"title, seniority, location, profile URL, email confidence"},{id:"company-fields",label:"Company fields",description:"industry, size, website, HQ, funding, description"},{id:"routing-fields",label:"Routing fields",description:"owner, lifecycle, lead status, persona, territory"},{id:"relationship-context",label:"Relationship context",description:"last touch, source, warm intro, notes"}]},{id:"confidence-policy",prompt:"What confidence threshold should be required before writing enriched fields?",required:!0,options:[{id:"high-only",label:"High only",description:"Write only very high-confidence values"},{id:"medium-review",label:"Medium with review",description:"Write strong matches and queue uncertain values"},{id:"draft-only",label:"Draft only",description:"Never write automatically"}]},{id:"overwrite-policy",prompt:"How should existing CRM values be handled?",required:!0,options:[{id:"never-overwrite",label:"Never overwrite"},{id:"overwrite-stale-attributed",label:"Overwrite stale machine-sourced values"},{id:"ask-before-overwrite",label:"Ask before overwriting"}]},{id:"run-cadence",prompt:"How should this enrichment skill run?",required:!0,options:[{id:"manual-only",label:"Manual only"},{id:"daily-cron",label:"Daily scheduled scan"},{id:"weekly-cron",label:"Weekly cleanup"}],freeformHint:"Include cron time, timezone, and where a completion summary should go."}],skillInstructions:["Support only manual runs and cron/scheduled agent messages; do not assume contact-created webhooks or real-time CRM callbacks.","Use Dench CRM as the system of record, with Dench-native enrichment first and HubSpot, Gmail, or Calendar context only when connected and relevant.","For every proposed or written CRM value, store source attribution, observed date, confidence score, and a short evidence note.","Never overwrite user-authored CRM fields unless the configured overwrite policy explicitly allows it; otherwise create a review queue of conflicts.","Write enriched values only when they meet the configured confidence threshold; below-threshold findings should remain suggestions.","Make scheduled runs idempotent by skipping records enriched successfully within the configured lookback window.","End each run with records scanned, fields updated, conflicts skipped, low-confidence suggestions, and any HubSpot sync issues."],activityLogInstructions:["Append enrichment entries to each touched CRM contact/company note and a run-level enrichment summary.","Log records scanned, fields missing, values proposed or written, source attribution, observed date, confidence, overwrite policy decision, and HubSpot sync result.","For conflicts, record before/after candidate values, protected user-authored field status, reviewer needed, and why the write was blocked or allowed.","For scheduled enrichment, log skipped records from the lookback window, newly enriched fields, unresolved low-confidence suggestions, and sync errors requiring owner attention."]}),C=i({id:"duplicate-record-cleaner",title:"Duplicate Record Cleaner",summary:"Find likely duplicate people or companies and prepare safe merge guidance.",category:"Keep CRM Clean",outcome:"Detects duplicate records, ranks merge confidence, proposes canonical records, and queues safe cleanup actions.",userUseCase:"Use this when Dench CRM or HubSpot contains duplicate people, companies, or deals that break attribution, ownership, and reporting. The skill should identify duplicate clusters, recommend canonical records, preserve history, and only merge or update when confidence and overwrite rules are explicit.",personas:["RevOps","Sales"],requiredApps:[d.hubspot],triggerModes:["manual","scheduled"],autonomy:"Updates CRM",interviewQuestions:[{id:"duplicate-scope",prompt:"Which record types should be checked for duplicates?",required:!0,allowMultiple:!0,options:[{id:"contacts",label:"Contacts"},{id:"companies",label:"Companies"},{id:"deals",label:"Deals"},{id:"all-crm-records",label:"All CRM records"}]},{id:"matching-signals",prompt:"Which signals should count toward a duplicate match?",required:!0,allowMultiple:!0,options:[{id:"exact-email-domain",label:"Exact email/domain"},{id:"name-company",label:"Name + company"},{id:"hubspot-ids",label:"HubSpot IDs"},{id:"gmail-calendar-history",label:"Activity history"},{id:"dench-enrichment",label:"Dench enrichment"}]},{id:"canonical-policy",prompt:"How should the canonical record be chosen?",required:!0,options:[{id:"most-complete",label:"Most complete"},{id:"oldest-attributed",label:"Oldest attributed"},{id:"active-owner",label:"Active owner/deal"},{id:"hubspot-primary",label:"HubSpot primary"}]},{id:"merge-threshold",prompt:"What confidence is required before cleanup can happen?",required:!0,options:[{id:"review-all",label:"Review all"},{id:"merge-95",label:"Auto-merge 95%+"},{id:"merge-90-simple",label:"Auto-merge simple 90%+"}]},{id:"audit-destination",prompt:"Where should duplicate reports and audit logs go?",required:!0,allowMultiple:!0,options:[{id:"dench-crm-note",label:"Dench CRM note"},{id:"hubspot-note",label:"HubSpot note"},{id:"notion-table",label:"Notion table"},{id:"digest-only",label:"Digest only"}]}],skillInstructions:["Support only manual duplicate checks and cron/scheduled duplicate hygiene runs.","Compare Dench CRM records with HubSpot records when connected, keeping Dench attribution and external IDs intact.","Score each duplicate cluster with match reasons, conflicting fields, canonical recommendation, and merge confidence.","Do not merge or overwrite records below the configured confidence threshold; route them to review with evidence.","Preserve field provenance by carrying source attribution, original record IDs, timestamps, owners, and activity history into the canonical record or audit note.","Never overwrite user-authored fields during automatic cleanup unless the canonical and overwrite policies explicitly permit it.","Produce an audit summary with clusters reviewed, safe merges completed, conflicts blocked, and records requiring manual review."],activityLogInstructions:["Write duplicate-cleanup entries to the configured audit destination and canonical CRM record note for every reviewed duplicate cluster.","Log cluster IDs, match signals, canonical recommendation, confidence, conflicting fields, approvals, merge/update action, and original record IDs preserved.","For blocked or review-needed clusters, record the exact reason: below threshold, field conflict, ownership ambiguity, user-authored overwrite risk, or external sync concern.","For scheduled hygiene runs, append only new duplicate clusters, completed safe merges, changed confidence, and previously reported clusters that were resolved or dismissed."]}),D=i({id:"relationship-strength-scorer",title:"Relationship Strength Scorer",summary:"Score relationships from recent emails, meetings, roles, and momentum.",category:"Keep CRM Clean",outcome:"Updates relationship strength, recency, confidence, and next-action fields across important contacts and accounts.",userUseCase:"Use this when founders, sellers, investor-relations owners, or RevOps teams need Dench CRM relationship strength to reflect actual recent interaction instead of stale gut feel. The skill scores named accounts, investors, partners, customers, or open opportunities from Gmail, Calendar, CRM history, and enrichment context.",personas:["Founder","Sales","Investor/BD","RevOps"],requiredApps:[d.gmail,d.googleCalendar],triggerModes:["manual","scheduled"],autonomy:"Updates CRM",interviewQuestions:[{id:"scoring-scope",prompt:"Which relationships should be scored?",required:!0,allowMultiple:!0,options:[{id:"key-accounts",label:"Key accounts"},{id:"open-opportunities",label:"Open opportunities"},{id:"investors-partners",label:"Investors/partners"},{id:"customer-contacts",label:"Customer contacts"},{id:"named-list",label:"Named list"}],freeformHint:"Name CRM views, owners, stages, account tiers, or specific companies."},{id:"signal-sources",prompt:"Which interaction sources should contribute to the score?",required:!0,allowMultiple:!0,options:[{id:"gmail",label:"Gmail",description:"Recency, reply balance, thread depth, unresolved asks."},{id:"calendar",label:"Calendar",description:"Meetings, attendance, cancellations, next touch."},{id:"dench-crm",label:"Dench CRM",description:"Native activities, tags, stage, owner, notes."},{id:"enrichment",label:"Enrichment",description:"Role seniority, company importance, public context."}]},{id:"score-scale",prompt:"What score scale should the skill write or report?",required:!0,options:[{id:"one-to-five",label:"1-5"},{id:"zero-to-one-hundred",label:"0-100"},{id:"weak-warm-strong",label:"Weak/Warm/Strong"},{id:"draft-only",label:"Draft only"}]},{id:"confidence-policy",prompt:"When should relationship scores update CRM automatically?",required:!0,options:[{id:"write-85",label:"85%+ confidence"},{id:"write-90",label:"90%+ confidence"},{id:"review-changes",label:"Review all changes"}],freeformHint:"Mention fields to protect, who reviews conflicts, and how stale manual scores should be handled."},{id:"next-action-policy",prompt:"What should happen when an important relationship is weak or stale?",required:!0,options:[{id:"crm-task",label:"Create CRM task"},{id:"digest-recommendation",label:"Add to digest"},{id:"gmail-draft",label:"Draft follow-up"},{id:"score-only",label:"Score only"}],freeformHint:"Include stale thresholds, destination, and daily or weekly schedule if needed."}],skillInstructions:["Support manual scoring for selected records and scheduled scoring for configured CRM segments only.","Use Dench CRM as the relationship record, with Gmail, Calendar, and enrichment signals as attributed evidence sources.","Compute scores from recency, reply balance, meeting attendance, stakeholder seniority, account importance, sentiment, and unresolved asks according to the configured weights.","Write CRM scores only when confidence meets the selected threshold, including evidence, source attribution, calculation timestamp, and score rationale.","Do not overwrite a user-authored relationship score unless explicitly allowed; otherwise create a proposed score with conflict details.","For weak or stale high-value relationships, create only the configured next action type and include the manual invocation or cron schedule that produced it.","Report score changes, blocked overwrites, low-confidence records, and recommended follow-ups after every run."],activityLogInstructions:["Append relationship-score entries to each touched contact/account note and a run-level score-change summary.","Log scoring scope, sources checked, old score, proposed or written score, calculation timestamp, evidence factors, confidence, and protected-field decision.","For weak or stale relationships, record the next action created or recommended, owner, due date, and why the relationship needs attention.","For scheduled scoring, append only score changes, newly stale high-value records, blocked overwrites, low-confidence proposals, and resolved follow-up recommendations."]}),E=i({id:"pipeline-hygiene-digest",title:"Pipeline Hygiene Digest",summary:"Send a digest of stale deals, missing next steps, and risky CRM gaps.",category:"Keep CRM Clean",outcome:"Audits pipeline records, surfaces the highest-impact hygiene issues, and posts action-oriented cleanup recommendations.",userUseCase:"Use this before forecast reviews or on a recurring schedule to audit Dench CRM and HubSpot pipeline data for stale deals, missing next steps, bad close dates, weak attribution, and owner-specific cleanup work.",personas:["Founder","Sales","RevOps"],requiredApps:[d.hubspot,d.slack],triggerModes:["manual","scheduled"],autonomy:"Updates CRM",interviewQuestions:[{id:"pipeline-scope",prompt:"Which pipeline records should be audited?",required:!0,allowMultiple:!0,options:[{id:"all-open-pipeline",label:"All open pipeline"},{id:"owned-deals",label:"Deals I own"},{id:"forecast-period",label:"Current forecast"},{id:"late-stage",label:"Late stage"},{id:"named-view",label:"Named CRM view"}],freeformHint:"Name the Dench CRM view, HubSpot pipeline, owners, stages, or forecast period."},{id:"hygiene-checks",prompt:"Which hygiene problems should the digest flag?",required:!0,allowMultiple:!0,options:[{id:"stale-next-step",label:"Stale next step"},{id:"bad-close-date",label:"Bad close date"},{id:"missing-core-fields",label:"Missing fields"},{id:"no-recent-activity",label:"No recent activity"},{id:"missing-attribution",label:"Missing attribution"},{id:"handoff-risk",label:"Handoff risk"}]},{id:"stale-thresholds",prompt:"What stale thresholds should apply by stage?",required:!0,freeformHint:"Example: discovery 14 days, proposal 7 days, negotiation 3 days, missing next step always flagged."},{id:"write-policy",prompt:"Should the skill only report issues, or write safe cleanup artifacts too?",required:!0,options:[{id:"digest-only",label:"Digest only"},{id:"write-safe-fields",label:"Write hygiene fields"},{id:"create-tasks",label:"Create owner tasks"},{id:"review-before-write",label:"Review before write"}]},{id:"delivery",prompt:"When and where should the hygiene digest be delivered?",required:!0,allowMultiple:!0,options:[{id:"slack",label:"Slack"},{id:"gmail",label:"Gmail"},{id:"dench-summary",label:"Dench summary"},{id:"manual-only",label:"Manual only"}],freeformHint:"Include cron cadence, timezone, recipients, and whether owners need separate sections."}],skillInstructions:["Support manual audits and cron/scheduled digest runs only; do not rely on CRM deal-change webhooks.","Audit Dench CRM first and reconcile HubSpot fields when connected, preserving external record IDs and source attribution.","Flag each issue with severity, owner, affected field, evidence, recommended fix, and confidence.","Only write safe hygiene fields or owner tasks when configured; never overwrite amount, stage, owner, close date, or user-authored forecast notes without explicit approval.","Use configured stale thresholds by stage, and keep missing next step, missing attribution, and no recent activity as separate explainable findings.","Make scheduled digests idempotent by suppressing unchanged findings already reported within the configured window.","Deliver a concise digest with executive summary, owner sections, top risks, blocked writes, and low-confidence findings."],activityLogInstructions:["Append pipeline hygiene entries to the digest history and any CRM records where safe notes or tasks are created.","Log pipeline scope, hygiene checks run, records scanned, issue severity, affected fields, recommended fixes, writes/tasks created, and blocked write reasons.","For each finding, record owner, evidence, stale threshold, confidence, whether it was new, repeated, acknowledged, resolved, or suppressed.","For scheduled digests, log only new findings, worsened severity, resolved issues, created tasks, and unchanged findings suppressed within the configured reporting window."]}),F=i({id:"meeting-prep-brief",title:"Meeting Prep Brief",summary:"Prepare concise briefs before sales, customer, partner, or recruiting calls.",category:"Prep Meetings",outcome:"Researches attendees, recent context, CRM history, open asks, risks, and recommended agenda before important meetings.",personas:["Founder","Sales","Customer Success","Investor/BD"],requiredApps:[d.googleCalendar,d.gmail],triggerModes:["manual","scheduled"],autonomy:"Can automate",userUseCase:"Use this before important external meetings so DenchClaw turns calendar, inbox, CRM, enrichment, and notes into a concise brief with context, risks, open asks, and suggested agenda.",interviewQuestions:[{id:"meeting-types",prompt:"Which meeting types should receive prep briefs?",required:!0,allowMultiple:!0,options:[{id:"sales",label:"Sales"},{id:"customer",label:"Customer"},{id:"partner",label:"Partner"},{id:"recruiting",label:"Recruiting"},{id:"investor",label:"Investor"}]},{id:"brief-sections",prompt:"What should each brief include?",required:!0,allowMultiple:!0,options:[{id:"attendees",label:"Attendee background"},{id:"crm-history",label:"CRM history"},{id:"recent-email",label:"Recent email"},{id:"open-asks",label:"Open asks"},{id:"risks",label:"Risks"},{id:"agenda",label:"Agenda"}]},{id:"prep-timing",prompt:"When should briefs be generated before meetings?",required:!0,options:[{id:"15-minutes",label:"15 minutes before"},{id:"one-hour",label:"1 hour before"},{id:"morning-of",label:"Morning of"},{id:"manual-only",label:"Manual only"}],freeformHint:"Include timezone and calendar filters such as external-only or CRM contacts only."},{id:"destination",prompt:"Where should the prep brief be delivered?",required:!0,allowMultiple:!0,options:[{id:"dench-chat",label:"Dench chat"},{id:"calendar-note",label:"Calendar note"},{id:"gmail-draft",label:"Gmail draft"},{id:"notion",label:"Notion"}]},{id:"sensitive-policy",prompt:"How should sensitive or low-confidence information be handled?",required:!0,options:[{id:"include-labeled",label:"Include with labels"},{id:"private-section",label:"Private section"},{id:"hide-sensitive",label:"Hide sensitive"}]}],skillInstructions:["Support manual prep for a selected meeting and scheduled prep for qualifying upcoming calendar events; do not assume calendar webhooks.","Use the calendar event as the anchor, then gather CRM, Gmail, HubSpot, Notion, enrichment, and file context relevant to attendees and accounts.","Produce a scannable brief with meeting goal, attendee context, relationship history, recent activity, open asks, risks, and suggested questions.","Label uncertain claims with confidence and keep sensitive private context in the configured section or out of the brief.","Do not write CRM or meeting notes unless configured; when writing, use additive notes with source attribution.","Make scheduled prep idempotent by skipping meetings already briefed unless important context changed."],activityLogInstructions:["Append meeting-prep entries to the brief artifact, calendar note, or CRM meeting note for the anchored event.","Log meeting ID/date, attendees/accounts, sources checked, brief sections generated, sensitive sections hidden, writes performed, and delivery destination.","Record skipped or not-regenerated meetings with reasons such as already briefed, no important context change, sensitivity policy, or missing source access.","For scheduled prep, append only newly generated briefs, important context changes, note writes, delivery failures, and meetings removed from the prep queue."]}),G=i({id:"executive-daily-brief",title:"Executive Daily Brief",summary:"Start each day with priorities, meetings, follow-ups, and lurking risks.",category:"Prep Meetings",outcome:"Reviews calendar, inbox, Slack, CRM, and workspace context to produce a focused daily plan.",userUseCase:"Use this when a founder, operator, or knowledge worker wants a morning command center instead of checking Calendar, Gmail, Slack, CRM, and Notion separately. The skill should run manually or on a morning cron, identify what needs attention today, and produce a calm executive brief with priorities, risks, prep needs, and follow-ups.",personas:["Founder","Operator","Knowledge Worker"],requiredApps:[d.googleCalendar,d.gmail,d.slack],triggerModes:["scheduled","manual"],autonomy:"Can automate",interviewQuestions:[{id:"brief-audience",prompt:"Who will use this daily brief and what perspective should it optimize for?",required:!0,options:[{id:"founder",label:"Founder"},{id:"sales-leader",label:"Sales leader"},{id:"operator",label:"Operator"},{id:"knowledge-worker",label:"Knowledge worker"}]},{id:"priority-sources",prompt:"Which sources should determine priorities?",required:!0,allowMultiple:!0,options:[{id:"calendar",label:"Calendar"},{id:"gmail",label:"Gmail"},{id:"dench-crm",label:"Dench CRM"},{id:"hubspot",label:"HubSpot"},{id:"notion",label:"Notion"},{id:"slack",label:"Slack"}]},{id:"brief-sections",prompt:"Which sections should the brief include?",required:!0,allowMultiple:!0,options:[{id:"todays-meetings",label:"Today's meetings"},{id:"urgent-follow-ups",label:"Urgent follow-ups"},{id:"crm-risks",label:"CRM and pipeline risks"},{id:"waiting-on-me",label:"Waiting on me"},{id:"top-priorities",label:"Top priorities"},{id:"prep-links",label:"Prep links"}]},{id:"delivery-schedule",prompt:"When should the daily brief arrive and should quiet days be skipped?",required:!0,options:[{id:"weekday-morning",label:"Weekday morning"},{id:"daily-morning",label:"Every morning"},{id:"manual-only",label:"Manual only"}],freeformHint:"Include exact local time, timezone, and whether to skip days with no meetings."},{id:"destination-format",prompt:"Where should the daily brief be delivered?",required:!0,allowMultiple:!0,options:[{id:"gmail",label:"Gmail"},{id:"notion",label:"Notion"},{id:"dench-chat",label:"Dench chat"},{id:"slack",label:"Slack"}],freeformHint:"Include recipients, page or channel destinations, and desired brief length."}],skillInstructions:["Support manual runs and cron-scheduled morning briefs only; do not assume passive app listeners.","Use Calendar as the daily structure, then rank Gmail, Dench CRM, HubSpot, Notion, and Slack signals by urgency, importance, and meeting relevance.","Include source attribution for deal, customer, investor, hiring, and relationship context that influences priority.","Do not send emails, update CRM, or modify tasks unless explicitly configured; default to a read-only brief with suggested actions.","Call out low-confidence or conflicting data instead of presenting it as fact, especially for pipeline risk or relationship status.","Deliver one scannable brief with top priorities, meetings, prep needs, follow-ups, and risks in the configured destination.","Make scheduled runs idempotent by generating at most one brief per recipient per scheduled window unless manually invoked."],activityLogInstructions:["Append daily brief entries to the brief history artifact or destination thread, keyed by recipient, date, and scheduled window.","Log sources checked, priority rules applied, meetings included, follow-ups surfaced, risks called out, delivery destination, and skipped quiet-day decision.","Record any suggested actions separately from actual writes, including owner, source evidence, confidence, and whether the item is waiting on the user.","For scheduled briefs, append only one entry per recipient/window and log deltas from the prior brief: new urgent items, cleared risks, and delivery failures."]}),H=i({id:"investor-meeting-prep",title:"Investor Meeting Prep",summary:"Research investors and assemble a sharp brief before fundraising meetings.",category:"Prep Meetings",outcome:"Researches investor background, portfolio, thesis, prior interactions, likely objections, and tailored talking points.",userUseCase:"Prepare for investor, advisor, or fundraising meetings with a brief that connects calendar attendees, prior relationship history, portfolio fit, company narrative, and likely objections. It should help a founder walk into the meeting knowing what to emphasize, what not to claim, and what follow-up ask to make.",personas:["Founder","Investor/BD"],requiredApps:[d.googleCalendar,d.gmail,d.notion],triggerModes:["manual","scheduled"],autonomy:"Creates drafts",interviewQuestions:[{id:"investor-meeting-goal",prompt:"What is the goal of these investor meetings?",required:!0,options:[{id:"first-intro",label:"First intro"},{id:"fundraising-pitch",label:"Fundraising pitch"},{id:"follow-up-diligence",label:"Follow-up or diligence"},{id:"advisor-board",label:"Advisor or board context"},{id:"investor-update",label:"Investor update"}]},{id:"research-scope",prompt:"What should the investor brief research?",required:!0,allowMultiple:!0,options:[{id:"firm-thesis",label:"Firm thesis"},{id:"portfolio-fit",label:"Portfolio fit"},{id:"partner-background",label:"Partner background"},{id:"prior-interactions",label:"Prior interactions"},{id:"likely-objections",label:"Likely objections"},{id:"warm-intros",label:"Warm intros"}]},{id:"source-of-truth",prompt:"Where should company narrative and metrics come from?",required:!0,allowMultiple:!0,options:[{id:"notion",label:"Notion"},{id:"dench-crm",label:"Dench CRM"},{id:"hubspot",label:"HubSpot"},{id:"gmail",label:"Gmail"},{id:"manual-context",label:"Manual context"}],freeformHint:"Name the docs or CRM fields that contain approved positioning and metrics."},{id:"prep-timing",prompt:"When should investor prep be generated?",required:!0,options:[{id:"day-before",label:"Day before"},{id:"morning-of",label:"Morning of"},{id:"one-hour-before",label:"1 hour before"},{id:"manual-only",label:"Manual only"}]},{id:"brief-destination",prompt:"Where should the prep brief go?",required:!0,allowMultiple:!0,options:[{id:"notion-page",label:"Notion page"},{id:"gmail-draft",label:"Gmail draft"},{id:"dench-chat",label:"Dench chat"},{id:"calendar-note",label:"Calendar note"}]}],skillInstructions:["Support manual prep for a selected investor or meeting and scheduled prep for qualifying calendar events only.","Use calendar attendees as the anchor, then combine Dench CRM relationship history, Gmail threads, HubSpot stages, Notion narrative sources, and Dench enrichment.","Attribute investor facts, portfolio claims, prior interactions, CRM status, and company metrics to their sources with freshness and confidence.","Never invent fundraising metrics, commitments, terms, or investor interest; use only approved Notion, CRM, file, or user-provided context.","Deliver a brief with investor background, relationship history, portfolio fit, likely objections, tailored talking points, and follow-up suggestions.","Default to read-only prep; if writing notes, use additive CRM or Notion entries with source attribution and no overwrites.","For scheduled runs, skip events already briefed unless attendee, CRM, Gmail, or Notion context materially changed."],activityLogInstructions:["Append investor-prep entries to the meeting brief, investor CRM record, or Notion prep page linked to the calendar event.","Log investor/firm researched, meeting goal, source-of-truth docs used, investor facts cited, metrics included, objections generated, and notes written.","Record missing or unsupported fundraising claims, private founder-only notes withheld, and any follow-up ask that needs founder review.","For scheduled prep, append only newly briefed meetings, material context changes, missing metric blockers, and skipped events already briefed."]}),I=i({id:"post-meeting-follow-through",title:"Post-meeting Follow-through",summary:"Turn meeting notes into follow-ups, CRM updates, and owner-specific tasks.",category:"Prep Meetings",outcome:"Summarizes meeting outcomes, drafts or sends next-step emails, updates CRM, and creates scheduled reminders.",userUseCase:"Use this after meetings to turn Calendar events, Gmail threads, notes, Dench CRM records, HubSpot context, and Notion notes into follow-up drafts, CRM updates, tasks, and reminders. It should run manually after a selected meeting or on a cron schedule for recently completed meetings.",personas:["Founder","Sales","Customer Success","Recruiter"],requiredApps:[d.googleCalendar,d.gmail,d.hubspot],triggerModes:["manual","scheduled"],autonomy:"Can automate",interviewQuestions:[{id:"meeting-scope",prompt:"Which completed meetings should trigger follow-through?",required:!0,allowMultiple:!0,options:[{id:"sales-calls",label:"Sales calls"},{id:"customer-calls",label:"Customer calls"},{id:"investor-meetings",label:"Investor meetings"},{id:"recruiting-interviews",label:"Recruiting interviews"},{id:"all-external",label:"All external meetings"}]},{id:"notes-source",prompt:"Where should meeting notes or outcomes come from?",required:!0,allowMultiple:!0,options:[{id:"calendar-description",label:"Calendar description"},{id:"gmail-thread",label:"Gmail thread"},{id:"notion-notes",label:"Notion notes"},{id:"dench-chat",label:"Dench chat"},{id:"manual-summary",label:"Manual summary"}]},{id:"followup-actions",prompt:"What should the skill create after meetings?",required:!0,allowMultiple:!0,options:[{id:"gmail-draft",label:"Gmail follow-up draft"},{id:"crm-note",label:"CRM note"},{id:"crm-task",label:"CRM task"},{id:"hubspot-update",label:"HubSpot update"},{id:"notion-action-items",label:"Notion action items"}]},{id:"write-confidence",prompt:"What confidence is required before writing CRM updates?",required:!0,options:[{id:"draft-review",label:"Draft for review"},{id:"write-85",label:"Write 85%+ confidence"},{id:"write-95",label:"Write 95%+ confidence"}]},{id:"timing-destination",prompt:"When and where should follow-through be delivered?",required:!0,allowMultiple:!0,options:[{id:"immediately-after",label:"Immediately after"},{id:"end-of-day",label:"End of day"},{id:"next-morning",label:"Next morning"},{id:"manual-only",label:"Manual only"}],freeformHint:"Include cron cadence, timezone, destination, and expected follow-up SLA."}],skillInstructions:["Support manual post-meeting runs and cron/scheduled scans of recently completed Calendar events only.","Use Calendar event details to identify attendees, then gather Gmail, Dench CRM, HubSpot, Notion, and manual notes as available.","Create follow-up drafts, CRM notes, tasks, and Notion actions only according to the configured action policy.","For CRM writes, use additive notes with source attribution, meeting date, attendees, confidence score, and linked source records.","Never overwrite existing CRM fields, deal stages, owners, or next steps unless the user explicitly configures that overwrite policy.","If meeting outcomes are ambiguous or below the confidence threshold, produce a review draft instead of writing updates automatically.","Deliver follow-through at the configured timing and destination, and make scheduled runs idempotent by skipping meetings already processed."],activityLogInstructions:["Append post-meeting entries to the CRM meeting note, follow-through artifact, or task list linked to the completed calendar event.","Log meeting date, attendees, notes sources, outcomes extracted, follow-up drafts, CRM notes/tasks/HubSpot updates, confidence, and delivery timing.","Record ambiguous outcomes and blocked writes with source gaps, protected fields, reviewer needed, and whether a review draft was created instead.","For scheduled scans, append only newly processed meetings, created actions, follow-ups sent or drafted, and meetings skipped because they were already processed."]}),J=i({id:"company-deep-researcher",title:"Company Deep Researcher",summary:"Create a sourced company dossier for sales, hiring, investing, or strategy.",category:"Research Anything",outcome:"Builds a sourced company brief with business model, team, market, recent news, risks, and recommended actions.",userUseCase:"Use this when a user needs a cited company brief that can support a sales account plan, investor diligence, recruiting context, partnership evaluation, or strategic research. The skill should combine Dench-native CRM, enrichment, web search, and files first, then use connected Gmail, Calendar, Notion, Slack, or LinkedIn context only when relevant and authorized.",personas:["Founder","Sales","Investor/BD","Knowledge Worker"],requiredApps:[d.hubspot,d.gmail,d.linkedin],triggerModes:["manual"],autonomy:"Creates drafts",interviewQuestions:[{id:"research-goal",prompt:"What decision should this company brief support?",required:!0,options:[{id:"sales",label:"Sales plan"},{id:"investment",label:"Investment diligence"},{id:"hiring",label:"Hiring context"},{id:"partnership",label:"Partnership evaluation"},{id:"strategy",label:"Strategy research"}],freeformHint:"Name the audience, decision, and depth needed."},{id:"target-company",prompt:"Which company should be researched?",required:!0,freeformHint:"Provide a company name, domain, CRM record, profile URL, or source file."},{id:"source-priority",prompt:"Which sources should be prioritized?",required:!0,allowMultiple:!0,options:[{id:"crm",label:"CRM notes"},{id:"enrichment",label:"Enrichment"},{id:"web",label:"Web research"},{id:"files",label:"Files"},{id:"connected-context",label:"Connected apps"}]},{id:"brief-sections",prompt:"Which sections should the brief include?",required:!0,allowMultiple:!0,options:[{id:"overview",label:"Overview"},{id:"team",label:"Team"},{id:"market",label:"Market"},{id:"news",label:"Recent news"},{id:"risks",label:"Risks"},{id:"actions",label:"Actions"}]},{id:"output-format",prompt:"Where should the final brief be saved or delivered?",required:!0,options:[{id:"dench-note",label:"Dench note"},{id:"markdown",label:"Markdown"},{id:"gmail-draft",label:"Gmail draft"},{id:"notion-page",label:"Notion page"}],freeformHint:"Include desired length, destination, and citation style."}],skillInstructions:["Use HubSpot/Dench CRM records, native enrichment, web search, LinkedIn context, Gmail history, and user-provided files as the baseline source set; use other connected apps only when they add relevant authorized context.","Cite every material factual claim, including company size, funding, leadership, customers, pricing, news, market position, and risks.","Prefer primary and high-quality sources such as company websites, filings, official blogs, reputable news, customer evidence, and supplied files.","Do not invent facts; if sources conflict, cite both sides, explain the conflict, and mark the field unresolved.","Structure the brief around the user's decision with executive summary, evidence-backed sections, risks or unknowns, recommendations, and sources.","Keep private CRM, email, Slack, and file excerpts scoped to the requested business purpose and visible audience."],activityLogInstructions:["Append research activity entries to the company dossier or Dench note, keyed by company, research goal, and brief version.","Log source sets checked, material claims added, conflicts found, unresolved fields, private context included or withheld, and output destination.","For each recommendation or risk, record supporting sources, confidence, decision relevance, and open questions that still need human follow-up.","On reruns, log only new sources, changed facts, resolved conflicts, updated recommendations, and sections removed because evidence no longer supports them."]}),K=i({id:"competitor-monitor",title:"Competitor Monitor",summary:"Monitor competitor launches, pricing changes, messaging, and market moves.",category:"Research Anything",outcome:"Tracks named competitors, summarizes meaningful changes, and posts implications with suggested responses.",userUseCase:"Use this when a founder, GTM team, CS lead, or operator needs a repeatable monitor for named competitors, adjacent categories, or strategic threats. The skill should watch for product, pricing, customer, hiring, funding, and messaging changes, then separate verified facts from implications so the team can decide whether to respond.",personas:["Founder","Sales","Customer Success"],requiredApps:[d.hubspot,d.slack],triggerModes:["scheduled","manual"],autonomy:"Can automate",interviewQuestions:[{id:"competitors",prompt:"Which competitors, categories, or strategic threats should be monitored?",required:!0,freeformHint:"List company names, websites, CRM accounts, or category keywords."},{id:"signals",prompt:"Which competitor signals matter most?",required:!0,allowMultiple:!0,options:[{id:"product",label:"Product launches"},{id:"pricing",label:"Pricing changes"},{id:"customers",label:"Customer wins"},{id:"funding",label:"Funding or M&A"},{id:"hiring",label:"Hiring patterns"},{id:"messaging",label:"Messaging shifts"}]},{id:"source-scope",prompt:"Which sources should the monitor check?",required:!0,allowMultiple:!0,options:[{id:"web",label:"Web and news"},{id:"company-sites",label:"Company sites"},{id:"crm",label:"Dench CRM"},{id:"files",label:"Battlecards/files"},{id:"slack-notion",label:"Slack/Notion"}]},{id:"cadence",prompt:"How should competitor monitoring run?",required:!0,options:[{id:"manual",label:"Manual research"},{id:"daily-cron",label:"Daily digest"},{id:"weekly-cron",label:"Weekly digest"}]},{id:"output",prompt:"Where should the monitor publish results and what action guidance should it include?",required:!0,options:[{id:"dench-note",label:"Dench note"},{id:"slack-digest",label:"Slack digest"},{id:"notion",label:"Notion page"},{id:"gmail-draft",label:"Gmail draft"}],freeformHint:"Include audience, max length, and whether to include sales/CS response recommendations."}],skillInstructions:["Monitor only the requested competitors, categories, and signal types unless the user explicitly expands scope.","Use primary sources, company sites, reputable news, HubSpot/Dench CRM context, enrichment, and supplied files before lower-quality commentary.","Cite each signal with source title, URL or file reference, publisher, and observed date.","Deduplicate repeated coverage of the same event and suppress unchanged signals in scheduled digests.","Separate verified changes from interpretation, and label confidence for each implication or recommended response.","Format output with top changes, why they matter, recommended response, watchlist, and sources.","For scheduled runs, publish only net-new or materially changed findings since the prior run."],activityLogInstructions:["Append competitor-monitor entries to the digest history, battlecard, or Slack/Dench destination for the monitored watchlist.","Log competitors and signals checked, source titles/URLs, observed dates, verified changes, implications drafted, recommendations, and duplicate coverage suppressed.","For each action recommendation, record confidence, affected sales/CS motion, source quality, owner, and whether it was published or held for review.","For scheduled monitors, append only net-new changes, material updates to prior findings, no-signal runs, and watchlist or source failures."]}),L=i({id:"news-signal-digest",title:"News Signal Digest",summary:"Turn noisy news into a short digest of actionable signals.",category:"Research Anything",outcome:"Watches topics, companies, people, and markets, then posts relevant developments with context and next actions.",userUseCase:"Use this when a founder, seller, investor, recruiter, or operator needs a manual or scheduled news digest that turns noisy public updates into cited account, market, customer, investor, or hiring signals.",personas:["Founder","Sales","Investor/BD","Knowledge Worker"],requiredApps:[d.hubspot,d.slack],triggerModes:["scheduled","manual"],autonomy:"Can automate",interviewQuestions:[{id:"digest-scope",prompt:"What should the news digest cover?",required:!0,options:[{id:"accounts",label:"CRM accounts"},{id:"customers",label:"Customers"},{id:"industry",label:"Industry"},{id:"investors",label:"Investors"},{id:"hiring",label:"Hiring market"}],freeformHint:"Name accounts, keywords, markets, saved CRM segments, or watchlists."},{id:"signal-types",prompt:"Which news signals should be included?",required:!0,allowMultiple:!0,options:[{id:"funding",label:"Funding or M&A"},{id:"leadership",label:"Leadership changes"},{id:"product",label:"Product launches"},{id:"customer",label:"Customer wins/losses"},{id:"risk",label:"Risk or layoffs"},{id:"hiring",label:"Hiring growth"}]},{id:"cadence",prompt:"When should the news digest run, and should it be manual or scheduled?",required:!0,options:[{id:"manual",label:"Manual digest"},{id:"daily-cron",label:"Daily cron"},{id:"weekly-cron",label:"Weekly cron"}]},{id:"source-quality",prompt:"How strict should source quality be?",required:!0,options:[{id:"primary-only",label:"Primary only"},{id:"trusted-news",label:"Trusted news"},{id:"broad-scan",label:"Broad scan",description:"Include confidence labels"}]},{id:"output-format",prompt:"Where should the digest go and how should it read?",required:!0,options:[{id:"dench-note",label:"Dench note"},{id:"slack",label:"Slack post"},{id:"gmail",label:"Gmail draft"},{id:"notion",label:"Notion page"}],freeformHint:"Specify audience, max length, ranking rules, and whether to include recommended actions."}],skillInstructions:["Use web search, HubSpot/Dench CRM records, enrichment, and files to identify relevant news; use connected Slack, Gmail, Notion, Calendar, or LinkedIn only when helpful.","Cite every news item with source name, title, URL or file reference, publication date, and retrieval date when available.","Rank items by relevance to the chosen scope, recency, credibility, and potential business impact.","Filter duplicate syndications, stale articles, SEO spam, and unsupported rumors unless rumor monitoring is explicitly requested.","Separate factual news from inferred implications and label confidence for every recommendation.","For scheduled digests, include only new or materially updated items since the prior run and say when no meaningful signal was found."],activityLogInstructions:["Append news-digest entries to the digest history or publishing destination, keyed by topic scope, cadence, and source window.","Log topics/accounts watched, query terms or CRM segments used, sources checked, included items, duplicate/stale/spam items suppressed, and source-quality labels.","For each included signal, record publication date, retrieval date, source URL, factual summary, inferred implication, confidence, and recommended action.","For scheduled digests, log no-signal runs, new or materially updated items, items removed as unsupported, and delivery destination or failure."]}),M=i({id:"customer-voice-miner",title:"Customer Voice Miner",summary:"Mine calls, notes, tickets, and messages for themes in customer language.",category:"Research Anything",outcome:"Extracts recurring pains, objections, feature requests, quotes, and messaging insights from customer-facing context.",userUseCase:"Use this when product, founder, CS, or GTM teams need customer truth from CRM notes, transcripts, support notes, reviews, Slack threads, Notion docs, Gmail, or uploaded research. The skill should turn messy qualitative material into cited themes, quotes, objections, product gaps, and messaging recommendations without exposing unnecessary private details.",personas:["Founder","Customer Success","Sales"],requiredApps:[d.gmail,d.hubspot,d.slack,d.notion],triggerModes:["manual","scheduled"],autonomy:"Can automate",interviewQuestions:[{id:"source-material",prompt:"Where should customer voice be mined from?",required:!0,allowMultiple:!0,options:[{id:"crm",label:"CRM notes"},{id:"files",label:"Uploaded files"},{id:"gmail",label:"Gmail"},{id:"slack",label:"Slack"},{id:"notion",label:"Notion"},{id:"web",label:"Public reviews"}]},{id:"customer-segment",prompt:"Which customer segment, account set, lifecycle stage, or date range should be analyzed?",required:!0,freeformHint:"Name the CRM segment, accounts, product line, market, or source date range."},{id:"themes",prompt:"Which themes should the analysis extract?",required:!0,allowMultiple:!0,options:[{id:"pain",label:"Pain points"},{id:"objections",label:"Objections"},{id:"features",label:"Feature requests"},{id:"value",label:"Value drivers"},{id:"churn",label:"Churn risk"},{id:"language",label:"Exact language"}]},{id:"cadence",prompt:"Should this be a manual analysis or a recurring customer voice digest?",required:!0,options:[{id:"manual",label:"Manual analysis"},{id:"weekly",label:"Weekly digest"},{id:"monthly",label:"Monthly digest"}]},{id:"output-format",prompt:"What output format should the report use?",required:!0,options:[{id:"brief",label:"Executive brief"},{id:"theme-table",label:"Theme table"},{id:"backlog",label:"Product backlog"},{id:"messaging",label:"Messaging doc"}],freeformHint:"Include destination, audience, and whether quotes may include account names."}],skillInstructions:["Use only customer data available to the requesting user through HubSpot/Dench CRM, Gmail, Slack, Notion, local files, uploads, and connected apps.","Cite each theme with source references, dates, account or segment context, and representative quotes where permitted.","Redact sensitive personal data unless necessary for the requested business purpose and avoid exposing private email or Slack content beyond relevant excerpts.","Group similar feedback into themes, quantify frequency when possible, and avoid overstating conclusions from small samples.","Preserve exact customer language for quoted evidence while clearly separating quotes from paraphrased analysis.","Prioritize recent, direct, high-context sources such as call transcripts, customer emails, CRM notes, support notes, and uploaded research files.","Format the output as Summary, Theme Table, Representative Quotes, Segment Differences, Recommendations, Open Questions, and Sources."],activityLogInstructions:["Append customer-voice entries to the research report, theme table, or recurring digest history for the analyzed segment.","Log source material scanned, date range, customer segment, themes extracted, quotes included or redacted, frequency counts, and recommendations generated.","For each theme, record representative source references, account/segment context, confidence, sample-size caveat, and privacy redactions applied.","For recurring digests, append only new themes, material frequency shifts, newly resolved open questions, and source-access or privacy blockers."]}),N=i({id:"market-map-builder",title:"Market Map Builder",summary:"Map a market into segments, players, signals, and open opportunities.",category:"Research Anything",outcome:"Builds and updates a market map with categories, companies, trends, funding, customer segments, and strategic takeaways.",userUseCase:"Use this when a founder, investor, BD lead, or strategy operator needs a cited map of a market, category, or problem space. The skill should discover companies, segment them cleanly, capture evidence, and expose whitespace without forcing uncertain companies into tidy boxes.",personas:["Founder","Investor/BD","Knowledge Worker"],requiredApps:[d.hubspot,d.notion,d.linkedin],triggerModes:["manual"],autonomy:"Updates CRM",interviewQuestions:[{id:"market-scope",prompt:"What market, category, or problem space should be mapped?",required:!0,freeformHint:"Describe the market, keywords, geographies, customer segments, or source documents."},{id:"map-goal",prompt:"What decision should this market map support?",required:!0,options:[{id:"sales",label:"Find target accounts"},{id:"strategy",label:"Understand landscape"},{id:"partnerships",label:"Find partners"},{id:"investment",label:"Evaluate targets"},{id:"hiring",label:"Talent landscape"}]},{id:"company-criteria",prompt:"Which company attributes should be captured?",required:!0,allowMultiple:!0,options:[{id:"size",label:"Size and stage"},{id:"geo",label:"Geography"},{id:"buyers",label:"Target buyers"},{id:"funding",label:"Funding or ownership"},{id:"positioning",label:"Positioning"},{id:"signals",label:"Growth signals"}]},{id:"source-policy",prompt:"Which sources should be used and trusted most?",required:!0,allowMultiple:!0,options:[{id:"web",label:"Public web"},{id:"enrichment",label:"Native enrichment"},{id:"crm",label:"Dench CRM"},{id:"files",label:"Uploaded files"},{id:"linkedin",label:"LinkedIn"},{id:"notion-slack",label:"Notion or Slack"}]},{id:"output-format",prompt:"How should the map be delivered?",required:!0,options:[{id:"brief",label:"Research brief"},{id:"table",label:"Structured table"},{id:"notion-database",label:"Notion database"},{id:"crm-list",label:"CRM list"}],freeformHint:"Specify columns, grouping logic, ranking criteria, and destination."}],skillInstructions:["Define the market boundaries before collecting companies, including what is intentionally out of scope.","Build the map from HubSpot/Dench CRM, native enrichment, web search, LinkedIn, and supplied files; use connected Notion, Slack, Gmail, or Calendar when they add relevant context.","Cite each included company and material attribute with primary or reputable sources.","Assign companies to clear categories and explain ambiguous classifications instead of forcing weak fits.","Include confidence levels for company fit, market category, and important inferred attributes.","Deliver Market Definition, Category Taxonomy, Company Table, Segment Insights, Whitespace, Risks/Unknowns, and Sources.","If saving to CRM or Notion, write additive records with source attribution and avoid overwriting user-authored notes."],activityLogInstructions:["Append market-map entries to the research brief, Notion database, or CRM list artifact, keyed by market scope and map version.","Log market boundaries, source sets, companies added or excluded, category assignments, ambiguous classifications, confidence changes, and records written.","For each saved company or segment, record source attribution, material attributes, inferred fields, fit confidence, overwrite decisions, and next strategic action.","On reruns, append only newly discovered companies, changed categories, resolved ambiguities, source updates, and records suppressed as duplicates or out of scope."]}),O=i({id:"candidate-research-brief",title:"Candidate Research Brief",summary:"Research candidates before outreach, interviews, or hiring debriefs.",category:"Hire People",outcome:"Creates candidate briefs with background, evidence, fit hypotheses, risks, and interview questions.",userUseCase:"Use this when a recruiter or founder needs a fair, cited candidate brief for outreach, interview prep, or debriefs. The skill should evaluate role-relevant evidence from candidate records, resumes, portfolios, public professional sources, and connected apps while avoiding protected-class and privacy-sensitive analysis.",personas:["Recruiter","Founder"],requiredApps:[d.linkedin,d.github],triggerModes:["manual"],autonomy:"Creates drafts",interviewQuestions:[{id:"candidate",prompt:"Which candidate should be researched?",required:!0,freeformHint:"Provide candidate name, CRM record, LinkedIn URL, resume, portfolio, GitHub profile, or uploaded files."},{id:"role",prompt:"What role, level, and hiring criteria should the brief evaluate against?",required:!0,freeformHint:"Paste the job description, scorecard, must-haves, nice-to-haves, and interview stage."},{id:"allowed-sources",prompt:"Which candidate sources may be used?",required:!0,allowMultiple:!0,options:[{id:"crm",label:"Candidate record"},{id:"files",label:"Resume/files"},{id:"web",label:"Public web"},{id:"linkedin",label:"LinkedIn"},{id:"github",label:"GitHub/portfolio"}]},{id:"brief-purpose",prompt:"What should the brief be used for?",required:!0,options:[{id:"outreach",label:"Outreach"},{id:"interview-prep",label:"Interview prep"},{id:"debrief",label:"Debrief"},{id:"sourcing-fit",label:"Sourcing fit"}]},{id:"output-format",prompt:"What output format should the candidate brief use?",required:!0,options:[{id:"manual-brief",label:"Manual brief"},{id:"scorecard-prep",label:"Scorecard prep"},{id:"email-draft",label:"Outreach draft"},{id:"notion-note",label:"Notion note"}],freeformHint:"Include destination, audience, and whether outreach hooks should be included."}],skillInstructions:["Use only job-relevant, candidate-provided, public, or authorized internal information from Dench CRM, enrichment, files, and connected apps.","Do not infer, mention, score, or use protected-class or sensitive attributes such as age, race, religion, health, family status, gender identity, national origin, disability, veteran status, or photos.","Cite role-relevant claims with source references such as resume lines, portfolio pages, public work, CRM notes, or interview feedback.","Separate evidence from hypotheses and phrase fit as role-related observations or questions to validate.","Prefer primary candidate materials, work samples, public professional profiles, and authorized internal notes over low-quality web results.","Format the output as Candidate Snapshot, Role-Relevant Evidence, Fit Hypotheses, Risks/Unknowns, Suggested Interview Questions, Outreach Hooks if requested, and Sources."],activityLogInstructions:["Append candidate-brief activity entries to the candidate record or brief artifact, keyed by candidate, role, and brief purpose.","Log allowed sources checked, role criteria used, evidence included, hypotheses created, risks or unknowns flagged, outreach hooks generated, and output destination.","Record privacy safeguards applied, including protected-class exclusions, sensitive data withheld, source-access limits, and claims rejected as not role-relevant.","On reruns, log only changed candidate evidence, updated fit hypotheses, newly available sources, and brief sections removed for privacy or weak evidence."]}),P=i({id:"interview-follow-up-agent",title:"Interview Follow-up Agent",summary:"Send timely candidate follow-ups and keep interview loops moving.",category:"Hire People",outcome:"Detects completed interviews, sends next-step messages, nudges interviewers, and updates candidate status.",userUseCase:"Use this after interviews to draft candidate updates, nudge interviewers for feedback, and keep hiring loops moving without exposing private notes or using protected-class information.",personas:["Recruiter","Founder"],requiredApps:[d.gmail,d.googleCalendar],triggerModes:["manual","scheduled"],autonomy:"Creates drafts",interviewQuestions:[{id:"follow-up-type",prompt:"What kind of interview follow-up should be created?",required:!0,options:[{id:"candidate-next-step",label:"Candidate next step"},{id:"feedback-reminder",label:"Feedback reminder"},{id:"debrief-summary",label:"Debrief summary"},{id:"rejection-draft",label:"Rejection draft"},{id:"offer-coordination",label:"Offer coordination"}]},{id:"candidate-role-stage",prompt:"Which candidate, role, and interview stage does this concern?",required:!0,freeformHint:"Reference the candidate record, role, interview date, participants, and stage."},{id:"source-context",prompt:"Which sources should be checked before drafting?",required:!0,allowMultiple:!0,options:[{id:"candidate-record",label:"Candidate record"},{id:"calendar",label:"Calendar event"},{id:"gmail",label:"Gmail thread"},{id:"scorecards",label:"Scorecards/files"},{id:"notion-slack",label:"Notion/Slack notes"}]},{id:"message-policy",prompt:"What approval and tone rules should candidate-facing drafts follow?",required:!0,freeformHint:"Include sender, signature, review requirement, timing SLA, and wording to avoid."},{id:"status-policy",prompt:"What candidate status, task, or reminder updates may the skill create?",required:!0,options:[{id:"draft-only",label:"Draft only"},{id:"create-tasks",label:"Create tasks"},{id:"add-notes",label:"Add notes"},{id:"suggest-status",label:"Suggest status"}]}],skillInstructions:["Use Calendar events, Gmail threads, candidate records, scorecards, and authorized notes to understand interview context before drafting.","Create drafts and reminders by default; do not send messages or change candidate status unless the user has explicitly configured that policy.","Do not mention or rely on protected-class or sensitive personal information in candidate-facing drafts, reminders, or summaries.","Keep rejection and feedback-adjacent language respectful, role-related, concise, and free of internal deliberation.","For feedback reminders, include the specific interview, requested scorecard, due date, and hiring impact without shaming the interviewer.","For scheduled runs, scan only the configured lookback window and skip interviews already followed up, replied to, or marked complete.","Output context checked, recommended action, draft message or reminder, missing inputs, and any CRM/task updates created or proposed."],activityLogInstructions:["Append interview follow-up entries to the candidate record or recruiting task history, linked to the interview event and role stage.","Log context checked, follow-up type, draft or reminder created, status/task update proposed, approval state, due date, and missing inputs.","Record candidate-privacy safeguards, protected-class exclusions, internal notes withheld from candidate-facing drafts, and reviewer required for sensitive outcomes.","For scheduled runs, append only newly completed interviews, overdue feedback reminders, candidate updates drafted, and interviews skipped as replied, complete, or already followed up."]}),Q=i({id:"talent-pipeline-hygiene",title:"Talent Pipeline Hygiene",summary:"Find stale candidates, missing feedback, and broken hiring handoffs.",category:"Hire People",outcome:"Audits candidate pipelines, surfaces stale or incomplete records, and produces owner-specific cleanup actions.",userUseCase:"Use this when recruiting or operations needs a clean view of candidate pipelines: stale stages, missing feedback, duplicate profiles, scheduling gaps, and process risks. The skill should use candidate CRM data, files, Calendar/Gmail context, and optional Slack/Notion notes while avoiding protected-class or privacy-sensitive analysis.",personas:["Recruiter","Operator"],requiredApps:[d.gmail,d.googleCalendar,d.notion,d.slack],triggerModes:["manual","scheduled"],autonomy:"Updates CRM",interviewQuestions:[{id:"pipeline-scope",prompt:"Which talent pipeline should be audited?",required:!0,freeformHint:"Specify roles, departments, hiring stages, recruiters, date range, or saved Dench CRM views."},{id:"hygiene-checks",prompt:"Which hygiene issues should be flagged?",required:!0,allowMultiple:!0,options:[{id:"stale",label:"Stale candidates"},{id:"missing-data",label:"Missing data"},{id:"feedback",label:"Missing feedback"},{id:"duplicates",label:"Duplicates"},{id:"scheduling",label:"Scheduling gaps"},{id:"compliance",label:"Process risk"}]},{id:"source-context",prompt:"Which systems should be checked?",required:!0,allowMultiple:!0,options:[{id:"crm",label:"Dench CRM"},{id:"files",label:"Files"},{id:"gmail",label:"Gmail"},{id:"calendar",label:"Calendar"},{id:"slack-notion",label:"Slack/Notion"}]},{id:"cadence",prompt:"When should the hygiene audit run?",required:!0,options:[{id:"manual",label:"Manual audit"},{id:"daily-cron",label:"Daily cron"},{id:"weekly-cron",label:"Weekly cron"}]},{id:"output-format",prompt:"How should issues and actions be reported?",required:!0,options:[{id:"dench-tasks",label:"Dench tasks"},{id:"slack-digest",label:"Slack digest"},{id:"notion-table",label:"Notion table"},{id:"gmail-summary",label:"Gmail summary"}],freeformHint:"Specify owners, severity levels, and whether to group by role or recruiter."}],skillInstructions:["Audit only authorized candidate and hiring records available through Dench CRM and connected systems.","Do not surface, infer, or act on protected-class or sensitive attributes; hygiene findings must be process-based and role-related.","Use Gmail threads, Calendar interviews, Notion scorecards, Slack handoff context, uploaded ATS exports, and Dench CRM records to flag missing or stale operational fields such as owner, stage, next step, last contact, feedback, scheduled interview, or duplicate record.","Cite each issue with the relevant record, timestamp, Calendar event, Gmail thread, file, Slack thread, or Notion page when available.","Prioritize issues by candidate impact, hiring urgency, process risk, and age of inactivity.","For cron audits, report changes since the previous run and avoid repeatedly flagging acknowledged issues unless they become more urgent."],activityLogInstructions:["Append talent-pipeline hygiene entries to the candidate CRM note, issue table, or recruiter digest for the audited pipeline.","Log pipeline scope, hygiene checks run, candidate records scanned, issues found, owners assigned, severity, evidence links, and tasks or notes created.","Record privacy and compliance safeguards, including protected-class exclusions, candidate-detail minimization, acknowledged issues, and writes blocked for review.","For cron audits, append only new issues, worsened stale age, resolved blockers, acknowledged suppressions, and repeated issues that became more urgent."]}),R=i({id:"hiring-manager-weekly-digest",title:"Hiring Manager Weekly Digest",summary:"Send hiring managers a weekly summary of pipeline health and decisions needed.",category:"Hire People",outcome:"Summarizes candidates, interviews, feedback gaps, risks, and decisions required by each hiring manager.",userUseCase:"Send hiring managers a weekly operating brief that turns candidate records, interviews, feedback gaps, and process blockers into the few decisions they need to make.",personas:["Recruiter","Founder","Operator"],requiredApps:[d.googleCalendar,d.slack,d.notion],triggerModes:["scheduled","manual"],autonomy:"Can automate",interviewQuestions:[{id:"audience-scope",prompt:"Which hiring manager, team, or roles should the digest cover?",required:!0,freeformHint:"Specify manager, role names, departments, CRM views, or candidate pipelines."},{id:"digest-sections",prompt:"Which sections should the weekly digest include?",required:!0,allowMultiple:!0,options:[{id:"pipeline",label:"Pipeline snapshot"},{id:"interviews",label:"Upcoming interviews"},{id:"feedback",label:"Overdue feedback"},{id:"blockers",label:"Blockers"},{id:"priority-candidates",label:"Priority candidates"}]},{id:"source-systems",prompt:"Which sources should be checked before writing the digest?",required:!0,allowMultiple:!0,options:[{id:"crm",label:"Candidate CRM"},{id:"calendar",label:"Calendar"},{id:"gmail",label:"Gmail"},{id:"slack",label:"Slack"},{id:"notion",label:"Notion"},{id:"files",label:"Files"}]},{id:"delivery-policy",prompt:"When and where should the digest be delivered?",required:!0,options:[{id:"weekly-slack",label:"Weekly Slack"},{id:"weekly-gmail",label:"Weekly Gmail draft"},{id:"notion-page",label:"Notion page"},{id:"manual-only",label:"Manual only"}],freeformHint:"Include weekday, time, timezone, recipients, and privacy level."},{id:"candidate-privacy",prompt:"How much candidate detail is appropriate for this audience?",required:!0,options:[{id:"names-ok",label:"Names ok"},{id:"role-stage-only",label:"Role and stage only"},{id:"private-links",label:"Private links"}]}],skillInstructions:["Include only hiring information the audience is authorized to see, and minimize candidate personal data in broad digests.","Use role-related and process-related signals only: stage, next step, feedback status, interview schedule, scorecard completion, and authorized notes.","Do not mention, infer, rank, or summarize candidates using protected-class or sensitive attributes.","Cite private digest claims with Dench records, Calendar events, Gmail threads, files, Slack threads, or Notion pages.","Prioritize blockers that require hiring-manager attention in the next week, not every low-level pipeline detail.","For weekly cron digests, compare against the prior week and highlight stage movement, newly stale candidates, and resolved blockers.","Format the digest as executive summary, pipeline snapshot, priority decisions, overdue feedback, upcoming interviews, blockers, and recommended actions."],activityLogInstructions:["Append hiring-manager digest entries to the digest history or private recruiting ops page for the covered role/manager/week.","Log source systems checked, pipeline snapshot counts, stage movement, overdue feedback, upcoming interviews, blockers, priority decisions, and delivery destination.","Record candidate-detail privacy level, protected-class exclusions, private links used, and any candidate information withheld from the manager-facing digest.","For weekly cron digests, append only week-over-week changes, newly stale candidates, resolved blockers, delivery failures, and decisions still awaiting the manager."]}),S=i({id:"recruiting-outreach-builder",title:"Recruiting Outreach Builder",summary:"Create personalized candidate outreach with role-specific proof and guardrails.",category:"Hire People",outcome:"Researches candidates, drafts or sends role-specific messages, handles follow-ups, and logs candidate status.",userUseCase:"Use Dench CRM, enrichment, web search, files, and optional LinkedIn/Gmail context to draft role-relevant recruiting outreach that feels researched without crossing privacy lines.",personas:["Recruiter","Founder"],requiredApps:[d.gmail,d.linkedin],triggerModes:["manual","scheduled"],autonomy:"Can automate",interviewQuestions:[{id:"candidate-or-segment",prompt:"Who should the outreach target?",required:!0,freeformHint:"Provide candidate names, records, LinkedIn URLs, a saved segment, or search criteria."},{id:"role-context",prompt:"What role and value proposition should the message communicate?",required:!0,freeformHint:"Paste role description, team context, must-haves, company pitch, approved compensation notes, and CTA."},{id:"personalization-sources",prompt:"Which sources may be used for personalization?",required:!0,allowMultiple:!0,options:[{id:"crm",label:"CRM records"},{id:"enrichment",label:"Enrichment"},{id:"files",label:"Resume or files"},{id:"web",label:"Professional web"},{id:"linkedin",label:"LinkedIn"},{id:"gmail",label:"Prior Gmail"}]},{id:"channel-style",prompt:"Which channel and style should be drafted?",required:!0,options:[{id:"email",label:"Email draft"},{id:"linkedin",label:"LinkedIn-style message"},{id:"sequence",label:"Sequence"},{id:"referral",label:"Referral ask"}],freeformHint:"Specify tone, length, sender, CTA, and number of variants."},{id:"send-policy",prompt:"Should the skill only draft, or may scheduled runs send to approved candidates?",required:!0,options:[{id:"draft-only",label:"Draft only"},{id:"review-required",label:"Review required"},{id:"approved-segment-send",label:"Approved segment send"}],freeformHint:"Include daily caps, quiet hours, exclusions, and follow-up spacing."}],skillInstructions:["Use only job-relevant, professional, public, candidate-provided, or authorized internal sources for personalization.","Do not personalize using protected-class or sensitive attributes, photos, family details, private social media, or demographic clues.","Draft concise outreach around concrete work evidence, role fit, team mission, and a clear CTA rather than generic flattery.","Cite personalization inputs in internal notes, but keep candidate-facing copy natural and non-creepy.","Send only under explicit approved-segment rules with caps, quiet hours, duplicate checks, and do-not-contact exclusions; otherwise create drafts.","For scheduled runs, generate outreach only for approved candidate records and skip anyone contacted recently or missing enough evidence.","Log draft/send status, evidence sources, next follow-up date, and stop conditions back to candidate records."],activityLogInstructions:["Write recruiting outreach entries to candidate records and the sourcing campaign summary, keyed by role, segment, and outreach channel.","Log candidate source, role criteria, personalization evidence, draft variant, send/approval state, next follow-up date, and candidate record fields touched.","Record privacy safeguards and skip reasons such as protected-class risk, insufficient job-relevant evidence, recent contact, do-not-contact, cap, quiet hours, or owner review required.","For scheduled outreach, append only newly approved candidates, drafts/sends created, follow-up state changes, replies, stops, and candidates suppressed from the campaign."]}),T=i({id:"lost-customer-winback",title:"Lost Customer Winback",summary:"Identify lost customers worth re-engaging and craft high-signal winback plays.",category:"Grow Customers",outcome:"Segments churned or closed-lost accounts, finds reactivation triggers, sends winback messages, and logs outcomes.",userUseCase:"Use when a founder, CS lead, or sales owner wants to identify churned, dormant, or closed-lost customers worth re-engaging because something has changed: product improvements, new leadership, renewed pain, growth, or a still-warm relationship.",personas:["Founder","Customer Success","Sales"],requiredApps:[d.gmail,d.hubspot],triggerModes:["manual","scheduled"],autonomy:"Can automate",interviewQuestions:[{id:"lost-customer-scope",prompt:"Which lost accounts should this skill consider for winback?",required:!0,allowMultiple:!0,options:[{id:"churned-customers",label:"Churned customers"},{id:"closed-lost-opps",label:"Closed-lost opportunities"},{id:"dormant-trials",label:"Dormant trials"},{id:"inactive-free-users",label:"Inactive free users"}],freeformHint:"Include lifecycle stages, date windows, exclusions, or minimum contract value."},{id:"winback-triggers",prompt:"What makes a lost account worth re-engaging now?",required:!0,allowMultiple:!0,options:[{id:"product-change",label:"Product change"},{id:"new-leadership",label:"New leadership"},{id:"funding-growth",label:"Funding or growth"},{id:"renewed-need",label:"Renewed pain signal"},{id:"warm-relationship",label:"Warm relationship"}]},{id:"churn-context",prompt:"Which churn, loss, or inactivity reasons should the agent respect before suggesting outreach?",required:!0,freeformHint:"Mention pricing objections, missing features, bad fit, implementation issues, competitors, support history, or accounts that should never be contacted."},{id:"owner-approval",prompt:"Who should approve or receive winback actions before any customer-facing message goes out?",required:!0,options:[{id:"account-owner",label:"Account owner"},{id:"cs-owner",label:"CS owner"},{id:"founder",label:"Founder"},{id:"manual-review",label:"Review queue"}]},{id:"output-policy",prompt:"What should the skill create for each qualified winback account?",required:!0,allowMultiple:!0,options:[{id:"owner-brief",label:"Owner brief"},{id:"email-draft",label:"Email draft"},{id:"crm-task",label:"CRM task"},{id:"founder-digest",label:"Founder digest"}],freeformHint:"Include send caps, quiet hours, approval rules, and CRM write permissions."}],skillInstructions:["Use Dench CRM churn history, closed-lost notes, enrichment, web search, files, and connected Gmail or HubSpot context to understand why each account left before recommending re-engagement.","Prioritize accounts only when there is a credible reactivation reason tied to a product change, customer change, company signal, relationship warmth, or new offer.","Make scheduled runs idempotent by checking prior winback notes, tasks, draft messages, and recent outreach before creating anything new.","Follow the CRM write policy exactly: prefer additive notes with source links, timestamps, confidence, and rationale; never overwrite user-authored loss reasons or stages unless explicitly allowed.","Draft winback messages that acknowledge context lightly, avoid generic 'checking in' copy, and connect the account's old reason for leaving to a specific new reason to talk.","Alert the configured owner with the account, reactivation reason, risk caveats, and suggested next step before any customer-facing send unless explicit send rules allow automation.","Return audience-specific outputs: owner action briefs, founder-level pipeline impact summary, CRM-safe notes, and customer-facing drafts."],activityLogInstructions:["Append winback entries to the lost account CRM note and winback run summary, keyed by lifecycle segment and reactivation trigger.","Log churn/loss context reviewed, reactivation signal, account priority, owner approval, draft/task created, CRM note written, and customer-facing send state.","Record blocked accounts with reasons such as never-contact, unresolved churn reason, bad fit, missing trigger, relationship risk, cap, quiet hours, or owner review required.","For scheduled winback, append only newly qualified accounts, changed trigger strength, owner actions due, replies, stops, and accounts suppressed from prior outreach."]}),U=i({id:"account-health-monitor",title:"Account Health Monitor",summary:"Monitor accounts for risk, expansion signals, and missing next steps.",category:"Grow Customers",outcome:"Scores account health from CRM, email, meeting, and relationship signals, then alerts owners with recommended actions.",userUseCase:"Use this when a founder or customer success owner wants a manual or scheduled monitor that turns scattered account activity into a reliable health view. The skill should synthesize CRM activity, enrichment, email, meetings, HubSpot, Slack, Notion, files, and web context into risk, expansion, relationship, and next-step signals.",personas:["Customer Success","Founder"],requiredApps:[d.hubspot,d.gmail,d.slack],triggerModes:["scheduled","manual"],autonomy:"Updates CRM",interviewQuestions:[{id:"account-scope",prompt:"Which accounts should the health monitor cover?",required:!0,allowMultiple:!0,options:[{id:"all-customers",label:"All customers"},{id:"strategic-accounts",label:"Strategic accounts"},{id:"paid-customers",label:"Paid customers"},{id:"implementation",label:"Implementation accounts"},{id:"at-risk",label:"Known at-risk accounts"}],freeformHint:"Include segment, lifecycle stage, ARR threshold, owner, or exclusion rules."},{id:"health-signals",prompt:"Which signals should affect account health?",required:!0,allowMultiple:!0,options:[{id:"engagement",label:"Engagement"},{id:"support-issues",label:"Support/issues"},{id:"executive-relationship",label:"Executive relationship"},{id:"usage-adoption",label:"Usage/adoption"},{id:"commercial-risk",label:"Commercial risk"},{id:"expansion-signal",label:"Expansion signal"}]},{id:"scoring-model",prompt:"How should account health be reported?",required:!0,options:[{id:"red-yellow-green",label:"Red/yellow/green"},{id:"numeric-score",label:"Numeric score"},{id:"ranked-risk-list",label:"Ranked risk list"},{id:"narrative-only",label:"Narrative only"}]},{id:"alert-thresholds",prompt:"When should the skill alert an account owner?",required:!0,allowMultiple:!0,options:[{id:"health-drops",label:"Health drops"},{id:"no-next-step",label:"No next step"},{id:"exec-silent",label:"Executive silent"},{id:"renewal-near",label:"Renewal near"},{id:"expansion-opportunity",label:"Expansion opportunity"}]},{id:"crm-write-policy",prompt:"What CRM updates may the monitor make?",required:!0,allowMultiple:!0,options:[{id:"health-note",label:"Add health note"},{id:"health-field",label:"Update health field"},{id:"owner-task",label:"Create owner task"},{id:"no-write",label:"Read-only digest"}]}],skillInstructions:["Use CRM, enrichment, web search, and files as the default source set; optionally incorporate Gmail, Calendar, HubSpot, Notion, and Slack when connected for recent activity and relationship context.","Support manual review runs and cron/scheduled health checks only; do not design around real-time triggers or webhook events.","Make scheduled runs idempotent by recording the account, run window, health outcome, alert reason, and created task IDs so unresolved alerts are not duplicated.","Apply the agreed scoring model consistently and include evidence, source links, confidence, and missing-data caveats for every health change.","Respect the CRM write policy: additive notes and attributed score updates are preferred; never overwrite owner-entered fields or lifecycle stages without explicit permission.","Alert account owners only when thresholds are met, with a short diagnosis, why it matters, the recommended next action, and whether the alert is urgent or informational.","Produce audience-specific outputs: owner action lists, founder-level portfolio summaries, CRM notes, and optional Slack or email digests in a direct founder-ops tone."],activityLogInstructions:["Append account-health entries to each touched customer CRM record and a portfolio-level health digest for the run window.","Log account scope, signals checked, prior health, new health, risk or expansion reason, evidence links, missing-data caveats, alerts, and tasks/notes created.","For owner alerts, record threshold crossed, urgency, recommended next action, owner, notification destination, and whether the alert is informational or action-required.","For scheduled checks, append only health changes, new threshold crossings, duplicate alerts suppressed, owner actions due, and risks resolved or dismissed."]}),V=i({id:"renewal-risk-digest",title:"Renewal Risk Digest",summary:"Surface upcoming renewals with risk signals and action plans.",category:"Grow Customers",outcome:"Reviews accounts approaching renewal, identifies risks and champions, drafts owner actions, and logs readiness notes.",userUseCase:"Use this when a founder, sales leader, or customer success owner wants a scheduled or manual digest of renewals that need attention before the deadline. The skill turns CRM dates, relationship activity, support context, email threads, meetings, and account notes into risk levels and concrete save actions.",personas:["Customer Success","Sales","Founder"],requiredApps:[d.hubspot,d.gmail,d.slack],triggerModes:["scheduled","manual"],autonomy:"Can automate",interviewQuestions:[{id:"renewal-window",prompt:"Which renewal window should the digest monitor?",required:!0,options:[{id:"30-days",label:"Next 30 days"},{id:"60-days",label:"Next 60 days"},{id:"90-days",label:"Next 90 days"},{id:"custom",label:"Custom window"}],freeformHint:"Include renewal-date fields, contract types, and exclusions."},{id:"risk-signals",prompt:"Which renewal risk signals should be prioritized?",required:!0,allowMultiple:!0,options:[{id:"low-engagement",label:"Low engagement"},{id:"unresolved-issues",label:"Unresolved issues"},{id:"champion-change",label:"Champion change"},{id:"pricing-pressure",label:"Pricing pressure"},{id:"no-mutual-plan",label:"No mutual plan"}]},{id:"digest-audience",prompt:"Who should receive the renewal digest?",required:!0,allowMultiple:!0,options:[{id:"account-owners",label:"Account owners"},{id:"founder",label:"Founder"},{id:"cs-lead",label:"CS lead"},{id:"sales-lead",label:"Sales lead"}]},{id:"crm-write-policy",prompt:"What renewal-related CRM writes are allowed?",required:!0,allowMultiple:!0,options:[{id:"readiness-note",label:"Renewal note"},{id:"risk-field",label:"Risk field"},{id:"owner-task",label:"Owner task"},{id:"forecast-suggestion",label:"Forecast suggestion"},{id:"read-only",label:"Read-only"}]},{id:"owner-alert-rules",prompt:"When should the skill alert an owner outside the regular digest?",required:!0,allowMultiple:!0,options:[{id:"high-risk",label:"High risk"},{id:"deadline-close",label:"Deadline close"},{id:"missing-owner",label:"Missing owner"},{id:"exec-needed",label:"Exec help needed"}]}],skillInstructions:["Read renewal dates, contract fields, account notes, relationship activity, support context, Gmail threads, Calendar meetings, and HubSpot data when connected.","Score risk with evidence for engagement, champion strength, unresolved issues, commercial pressure, missing mutual plan, and deadline proximity.","Make scheduled digests idempotent by keying findings to account, renewal period, risk reason, and run date; avoid duplicate owner tasks for unchanged risks.","Follow the CRM write policy exactly: add sourced readiness notes and tasks by default, include confidence and evidence, and ask before overwriting forecast or owner-authored risk fields.","Alert owners with account, renewal date, risk level, evidence, recommended save action, and explicit ask for founder or executive support when needed.","Produce audience-specific outputs: tactical owner action plan, founder revenue-at-risk summary, CS team digest, and CRM-safe renewal note.","Use a direct, numbers-aware tone that is honest about risk without dramatizing weak signals."],activityLogInstructions:["Append renewal-risk entries to the account renewal note and digest history, keyed by account, renewal period, and risk reason.","Log renewal date, risk signals checked, risk score, champion status, evidence, CRM writes/tasks, owner alert state, and founder/executive support requested.","Record blocked or review-needed changes for forecast fields, owner-authored risk fields, missing renewal data, weak evidence, or duplicate unresolved tasks.","For scheduled digests, append only new risks, changed risk levels, approaching deadlines, created owner tasks, resolved risks, and unchanged findings suppressed."]}),W=i({id:"weekly-founder-digest",title:"Weekly Founder Digest",summary:"Summarize the week across pipeline, customers, hiring, inbox, and priorities.",category:"Run Founder Ops",outcome:"Produces a weekly operating digest with wins, risks, asks, missed follow-ups, and priorities for the next week.",userUseCase:"Use when a founder wants a manual or cron-scheduled weekly operating digest across customers, pipeline, fundraising, hiring, partner work, inbox, meetings, and unresolved commitments. The skill should turn scattered workspace activity into a crisp operating view, audience-specific summaries, and next-week priorities.",personas:["Founder","Operator"],requiredApps:[d.gmail,d.googleCalendar,d.slack],triggerModes:["scheduled","manual"],autonomy:"Can automate",interviewQuestions:[{id:"digest-scope",prompt:"Which operating areas should the weekly digest cover?",required:!0,allowMultiple:!0,options:[{id:"sales-pipeline",label:"Sales pipeline"},{id:"customers",label:"Customers"},{id:"fundraising",label:"Fundraising"},{id:"hiring",label:"Hiring"},{id:"partners",label:"Partners"},{id:"team-ops",label:"Team ops"}]},{id:"delivery-cadence",prompt:"When should the digest be generated?",required:!0,options:[{id:"friday-eod",label:"Friday EOD"},{id:"sunday-evening",label:"Sunday evening"},{id:"monday-morning",label:"Monday morning"},{id:"manual-only",label:"Manual only"}],freeformHint:"Include timezone, recipients, and whether to skip quiet weeks."},{id:"priority-rules",prompt:"What is important enough to make the founder digest?",required:!0,allowMultiple:!0,options:[{id:"revenue-impact",label:"Revenue impact"},{id:"customer-risk",label:"Customer risk"},{id:"investor-board",label:"Investor/board"},{id:"blocked-commitments",label:"Blocked commitments"},{id:"founder-mentioned",label:"Founder mentioned"}]},{id:"audience-versions",prompt:"Which audience versions should the skill prepare?",required:!0,allowMultiple:!0,options:[{id:"private-founder",label:"Private founder"},{id:"leadership-team",label:"Leadership team"},{id:"board-safe",label:"Board-safe"},{id:"assistant-task-list",label:"Task list"}]},{id:"workspace-write-policy",prompt:"What should the skill write back to CRM or workspace records?",required:!0,allowMultiple:!0,options:[{id:"no-write",label:"No writes"},{id:"task-creation",label:"Create tasks"},{id:"notes",label:"Add notes"},{id:"status-suggestions",label:"Suggest status updates"}]}],skillInstructions:["Use Dench CRM, enrichment, web search, files, Gmail, Calendar, and Slack to extract meetings, commitments, decisions, asks, unresolved threads, and material business changes.","Support manual generation and cron-scheduled weekly digest messages only; do not rely on automatic app events.","Make each scheduled digest idempotent by recording the covered week, source windows, generated digest ID, and created task IDs.","Respect the workspace write policy: prefer additive tasks and notes with source attribution; never overwrite human-authored status fields without explicit approval.","Alert owners for urgent items discovered during the digest, including missing next steps, stalled commitments, customer risk, or founder follow-up needed.","Produce audience-specific versions: private founder memo, leadership-safe summary, board-safe excerpt, and concrete task list with owners and due dates.","Use a founder-ops tone: concise, opinionated, low-drama, commercially grounded, and focused on decisions, leverage, and follow-through."],activityLogInstructions:["Append weekly digest entries to the digest history artifact, keyed by covered week, audience version, and source windows.","Log operating areas scanned, material items included, owners alerted, tasks or notes created, audience versions generated, and source gaps.","For each urgent item, record source evidence, owner, due date, business impact, whether it needs founder attention, and whether it was new or carried over.","For scheduled digests, append only week-over-week changes, newly created task IDs, resolved carryovers, skipped quiet-week decisions, and delivery failures."]}),X=i({id:"fundraising-target-builder",title:"Fundraising Target Builder",summary:"Build and maintain a prioritized investor target list for a fundraise.",category:"Run Founder Ops",outcome:"Maps investor fit, enriches partners, finds warm paths, ranks targets, and creates investor CRM records.",userUseCase:"Use when a founder is preparing or maintaining a fundraise target list and wants DenchClaw to find, enrich, rank, and track relevant investors. The skill should identify fund-stage fit, partner ownership, portfolio conflicts, warm paths, and the next action that moves each investor forward.",personas:["Founder","Investor/BD"],requiredApps:[d.gmail,d.notion],triggerModes:["manual","scheduled"],autonomy:"Can automate",interviewQuestions:[{id:"round-context",prompt:"What fundraising context should guide the target list?",required:!0,freeformHint:"Include round type, target raise, stage, geography, timing, traction, check size, and any investor exclusions."},{id:"investor-fit-criteria",prompt:"Which investor fit criteria matter most?",required:!0,allowMultiple:!0,options:[{id:"stage-fit",label:"Stage fit"},{id:"sector-fit",label:"Sector fit"},{id:"geo-fit",label:"Geo fit"},{id:"check-size",label:"Check size"},{id:"portfolio-synergy",label:"Portfolio synergy"},{id:"can-lead",label:"Can lead"}]},{id:"warm-path-sources",prompt:"Where should the skill look for warm introduction paths?",required:!0,allowMultiple:!0,options:[{id:"dench-crm",label:"Dench CRM"},{id:"gmail",label:"Gmail"},{id:"calendar",label:"Calendar"},{id:"notion-files",label:"Notion/files"},{id:"manual-network",label:"Manual network notes"}]},{id:"crm-write-policy",prompt:"How should investor targets be written to CRM?",required:!0,allowMultiple:!0,options:[{id:"create-records",label:"Create records"},{id:"add-research-notes",label:"Add research notes"},{id:"create-intro-tasks",label:"Create intro tasks"},{id:"rank-only",label:"Rank only"},{id:"review-before-write",label:"Review before write"}]},{id:"outputs",prompt:"Which fundraising outputs should be prepared?",required:!0,allowMultiple:!0,options:[{id:"founder-shortlist",label:"Founder shortlist"},{id:"crm-import-plan",label:"CRM import plan"},{id:"intro-drafts",label:"Intro request drafts"},{id:"investor-memos",label:"Investor memos"}]}],skillInstructions:["Use Dench CRM, native enrichment, web search, and files to build investor evidence; optionally use Gmail, Calendar, HubSpot, Notion, and Slack for prior interactions, warm paths, and notes.","Support only manual list-building runs and cron-scheduled refreshes; do not assume investor news or CRM update webhooks.","Deduplicate investors, firms, partners, domains, prior targets, and active fundraising opportunities before creating records or tasks.","Score each investor with stage fit, sector fit, check-size fit, portfolio relevance, warm-path strength, and timing rationale.","Follow the CRM write policy: create or update investor records only when allowed, use additive sourced research notes, and avoid overwriting owner-entered stages, rankings, or relationship fields.","Alert the founder when a high-fit investor has a strong warm path, recent relevant activity, or a time-sensitive reason to engage.","Produce a founder-ranked shortlist, operator CRM write plan, intro-request drafts, and investor-specific research memos."],activityLogInstructions:["Append fundraising-target entries to the investor CRM record, target-list artifact, or fundraising run summary.","Log round context, investor fit criteria, sources checked, investors added or deduped, warm paths found, fit score, CRM writes/tasks, and intro drafts.","For each investor, record stage/sector/check-size fit, portfolio conflict checks, warm-path evidence, owner, next action, approval state, and skipped reason if excluded.","For scheduled refreshes, append only new investors, changed fit or warm-path strength, time-sensitive alerts, created task IDs, and duplicate or dismissed targets suppressed."]}),Y=i({id:"board-meeting-prep",title:"Board Meeting Prep",summary:"Assemble board prep packets, open questions, risks, and follow-up actions.",category:"Run Founder Ops",outcome:"Gathers metrics, narrative updates, decisions needed, risks, and prior commitments into a board-ready brief.",userUseCase:"Use this when a founder or operator needs a repeatable way to assemble board prep from files, Notion, CRM, metrics, inbox context, meeting history, and prior commitments. The skill should create board-ready materials while keeping private founder notes separate from board-safe output.",personas:["Founder","Operator"],requiredApps:[d.googleCalendar,d.gmail,d.notion],triggerModes:["manual","scheduled"],autonomy:"Updates CRM",interviewQuestions:[{id:"meeting-context",prompt:"What board meeting should this prep target?",required:!0,freeformHint:"Include meeting date, board members, observers, format, and prep deadline."},{id:"packet-sections",prompt:"Which sections should the board packet include?",required:!0,allowMultiple:!0,options:[{id:"metrics",label:"Metrics"},{id:"wins",label:"Wins"},{id:"risks",label:"Risks"},{id:"decisions-needed",label:"Decisions needed"},{id:"hiring",label:"Hiring"},{id:"fundraising",label:"Fundraising"},{id:"customer-pipeline",label:"Customer/pipeline"}]},{id:"source-priority",prompt:"Which sources should be treated as authoritative?",required:!0,allowMultiple:!0,options:[{id:"files",label:"Files"},{id:"notion",label:"Notion"},{id:"crm",label:"Dench CRM"},{id:"hubspot",label:"HubSpot"},{id:"gmail-calendar",label:"Gmail/Calendar"},{id:"slack",label:"Slack"}]},{id:"audience-versions",prompt:"Which audience-specific versions should be created?",required:!0,allowMultiple:!0,options:[{id:"founder-private",label:"Founder private"},{id:"board-packet",label:"Board packet"},{id:"exec-team",label:"Exec team"},{id:"follow-up-list",label:"Follow-up list"}]},{id:"write-policy",prompt:"What may be written back after prep?",required:!0,allowMultiple:!0,options:[{id:"no-write",label:"No writes"},{id:"customer-risk-notes",label:"Customer risk notes"},{id:"owner-tasks",label:"Owner tasks"},{id:"board-followups",label:"Board follow-ups"}]}],skillInstructions:["Use Dench files, CRM, enrichment, and web search as default context; use Gmail, Calendar, Notion, HubSpot, and Slack for prior commitments, meeting logistics, source docs, and sensitive context when connected.","Support manual packet prep and scheduled prep reminders only; do not rely on calendar webhooks or automatic document callbacks.","Tie scheduled outputs to the board meeting date and packet version, updating the same draft or checklist instead of creating duplicates.","Keep private founder prep, exec-team action lists, and board-safe packets separate so sensitive working notes do not leak into external materials.","Respect the write policy: add sourced notes or tasks only when allowed, avoid overwriting CRM fields, and keep board-sensitive commentary out of customer-visible records.","Alert owners for missing metrics, unresolved prior board commitments, unclear decision owners, or customer/revenue risks that need executive input before the meeting.","Use a board-ready tone: clear, candid, numbers-aware, and explicit about decisions, tradeoffs, risks, and asks."],activityLogInstructions:["Append board-prep entries to the packet checklist or board prep document, keyed by meeting date, packet version, and audience version.","Log sources checked, sections assembled, metrics included or missing, prior commitments reviewed, owner alerts, private-versus-board-safe outputs, and writebacks.","For each missing metric, unresolved commitment, or risk, record owner, source expected, decision needed, sensitivity level, and whether it is board-safe or founder-private.","For scheduled prep, append only packet version changes, resolved blockers, new risks, owner tasks created, and repeated gaps that still need executive attention."]}),Z=i({id:"partner-pipeline-builder",title:"Partner Pipeline Builder",summary:"Build a partner pipeline with fit scoring, relationship paths, and next steps.",category:"Run Founder Ops",outcome:"Discovers potential partners, scores mutual value, identifies contacts and warm paths, and logs pipeline records.",userUseCase:"Use when a founder, BD owner, or sales lead wants a manual or scheduled workflow to discover, enrich, score, and manage potential partners. The skill should build a pipeline around mutual value, relationship paths, and clear next actions rather than vague partnership wishlists.",personas:["Founder","Investor/BD","Sales"],requiredApps:[d.gmail,d.hubspot],triggerModes:["manual","scheduled"],autonomy:"Can automate",interviewQuestions:[{id:"partner-type",prompt:"What type of partners should this pipeline focus on?",required:!0,allowMultiple:!0,options:[{id:"channel",label:"Channel"},{id:"integration",label:"Integration"},{id:"agency",label:"Agency"},{id:"strategic",label:"Strategic"},{id:"community",label:"Community"}]},{id:"mutual-value",prompt:"What mutual value should the skill score for?",required:!0,allowMultiple:!0,options:[{id:"shared-customers",label:"Shared customers"},{id:"distribution",label:"Distribution"},{id:"product-fit",label:"Product fit"},{id:"co-marketing",label:"Co-marketing"},{id:"revenue-potential",label:"Revenue potential"}]},{id:"relationship-paths",prompt:"Where should the skill look for relationship paths?",required:!0,allowMultiple:!0,options:[{id:"crm",label:"Dench CRM"},{id:"gmail",label:"Gmail"},{id:"calendar",label:"Calendar"},{id:"slack",label:"Slack"},{id:"files-notion",label:"Files or Notion"}]},{id:"crm-write-policy",prompt:"How should partner pipeline records be handled?",required:!0,allowMultiple:!0,options:[{id:"create-records",label:"Create records"},{id:"add-notes",label:"Add notes"},{id:"create-tasks",label:"Create tasks"},{id:"suggest-stage",label:"Suggest stage"},{id:"review-only",label:"Review only"}]},{id:"audience-output",prompt:"Which output views should be generated?",required:!0,allowMultiple:!0,options:[{id:"founder-shortlist",label:"Founder shortlist"},{id:"bd-action-list",label:"BD action list"},{id:"crm-import",label:"CRM import"},{id:"partner-brief",label:"Partner brief"}]}],skillInstructions:["Use Dench CRM, native enrichment, web search, and files to identify partner candidates and evidence; optionally use Gmail, Calendar, HubSpot, Notion, and Slack for prior relationship and account context.","Support manual builds and cron/scheduled refreshes only; do not assume partner form submissions, CRM webhooks, or event listeners.","Make runs idempotent by deduping companies, domains, contacts, existing partner records, and previously dismissed targets before creating notes or tasks.","Follow the CRM write policy: additive partner notes, source attribution, confidence, and owner tasks are preferred; do not overwrite stages, owners, or custom fields unless explicitly allowed.","Alert owners when a partner has a strong warm path, material mutual value, overlapping customer signal, or a next step that should not wait for the next digest.","Produce audience-specific outputs: founder strategic shortlist, BD owner action queue, CRM import or update plan, and partner-facing brief or intro draft.","Use a founder-ops tone: pragmatic, commercially grounded, concise, and skeptical of partnerships without a clear next step or measurable upside."],activityLogInstructions:["Append partner-pipeline entries to the partner CRM record, BD action queue, or partner-run summary.","Log partner type, mutual-value criteria, companies researched, relationship paths found, fit score, CRM records/notes/tasks created, and owner alerts.","For each partner candidate, record source evidence, warm path, overlapping customer signal, next step, confidence, approval state, and skipped reason if no action was taken.","For scheduled refreshes, append only new partner candidates, changed mutual-value score, newly available warm paths, created tasks, and dismissed or duplicate targets suppressed."]}),$=i({id:"investor-update-builder",title:"Investor Update Builder",summary:"Draft crisp investor updates from company context, asks, and metrics.",category:"Run Founder Ops",outcome:"Gathers wins, metrics, asks, risks, and narrative context into a polished investor update draft or send-ready email.",userUseCase:"Use when a founder needs a credible investor update assembled from metrics, customer progress, risks, asks, and prior investor context. It should create audience-specific drafts from trusted sources while keeping sensitive working notes private.",personas:["Founder","Investor/BD"],requiredApps:[d.gmail,d.notion,d.hubspot],triggerModes:["manual","scheduled"],autonomy:"Creates drafts",interviewQuestions:[{id:"update-audience",prompt:"Who is this investor update for?",required:!0,allowMultiple:!0,options:[{id:"current-investors",label:"Current investors"},{id:"prospective-investors",label:"Prospective investors"},{id:"advisors",label:"Advisors"},{id:"board",label:"Board"},{id:"internal-only",label:"Internal only"}]},{id:"update-sections",prompt:"Which sections should the update include?",required:!0,allowMultiple:!0,options:[{id:"headline",label:"Headline"},{id:"metrics",label:"Metrics"},{id:"wins",label:"Wins"},{id:"challenges",label:"Challenges"},{id:"asks",label:"Asks"},{id:"customer-proof",label:"Customer proof"},{id:"runway",label:"Runway"}]},{id:"source-priority",prompt:"Which sources should the skill use for facts and metrics?",required:!0,allowMultiple:!0,options:[{id:"files",label:"Files"},{id:"notion",label:"Notion"},{id:"crm",label:"Dench CRM"},{id:"hubspot",label:"HubSpot"},{id:"gmail-calendar",label:"Gmail/Calendar"},{id:"manual-context",label:"Manual context"}]},{id:"send-policy",prompt:"How should the skill handle sending?",required:!0,options:[{id:"draft-only",label:"Draft only"},{id:"approval-required",label:"Approval required"},{id:"send-ready-copy",label:"Send-ready copy"},{id:"manual-export",label:"Manual export"}]},{id:"crm-write-policy",prompt:"What investor CRM updates should be allowed?",required:!0,allowMultiple:!0,options:[{id:"log-update",label:"Log update"},{id:"create-followups",label:"Create follow-ups"},{id:"tag-audience",label:"Tag audience"},{id:"no-write",label:"No writes"}]}],skillInstructions:["Use files, Notion, Dench CRM, HubSpot, Gmail, Calendar, and manual context only as configured sources for metrics, wins, risks, asks, and prior investor commitments.","Separate facts from narrative; cite the source for every metric, customer proof point, runway claim, hiring update, and investor ask that influences the draft.","Create audience-specific versions such as private founder notes, current-investor update, prospective-investor version, board-safe version, and follow-up task list.","Follow the send and CRM write policies exactly: default to drafts, log updates only when approved, use additive notes with attribution, and never overwrite investor relationship fields without permission.","Alert the founder when required metrics are missing, asks are vague, sensitive claims lack support, or an investor-specific follow-up should be handled separately.","For scheduled preparation, key drafts, source windows, logged updates, and follow-up tasks to the update period so repeated runs update the same artifact instead of creating duplicates.","Use a founder voice that is clear, candid, optimistic without hype, specific about asks, and honest about risks and unknowns."],activityLogInstructions:["Append investor-update entries to the update draft history and investor CRM note when logging is approved, keyed by update period and audience version.","Log sources checked, metrics included or missing, customer proof points, risks, asks, audience versions created, follow-up tasks, and send approval state.","Record sensitive founder-only notes withheld, unsupported claims removed, vague asks flagged, investor-specific follow-ups separated, and CRM writes blocked or completed.","For scheduled preparation, append only changes to the same update artifact, newly resolved metrics, new follow-up tasks, and repeated missing inputs still blocking send-ready status."]});var _=c(933935);function aa(a){return a.map(a=>`- ${a}`).join("\n")}function ab(a,b){let c=a.required?"required":"optional",d=a.allowMultiple?"multi-select":"single-answer",e=a.options?.length?` Choices: ${a.options.map(a=>a.description?`${a.label} (${a.id}) - ${a.description}`:`${a.label} (${a.id})`).join("; ")}.`:"",f=a.freeformHint?` Freeform guidance: ${a.freeformHint}.`:"";return`${b+1}. ${a.prompt} [id: ${a.id}; ${c}; ${d}].${e}${f}`}let ac=["Find Leads","Follow Up","Keep CRM Clean","Prep Meetings","Research Anything","Hire People","Grow Customers","Run Founder Ops"],ad=[j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$].map(a=>({...a,buildPrompt:()=>(function(a){let b=a.triggerModes.map(a=>"scheduled"===a?"cron/scheduled agent message":"manual trigger").join(" and "),c=a.personas.join(", "),d=a.suggestedApps.length?a.suggestedApps.map(a=>a.name).join(", "):"no external apps; use Dench-native CRM, enrichment, web search, local files, and workspace context",e=a.suggestedApps.length?a.suggestedApps.map(a=>{let b=(0,_.d)("connect",{toolkitSlug:a.slug,toolkitName:a.name});return`- [Connect ${a.name}](${b})`}).join("\n"):"No suggested app connections for this template.";return`I want to create a reusable DenchClaw skill called "${a.title}".
|
|
2
|
+
|
|
3
|
+
This should become a durable DenchClaw skill, not a one-off chat. DenchClaw is my AI workspace with built-in CRM, enrichment, Apollo-style data, web search, local files, and optional connected apps. Treat Dench-native capabilities as available by default, and use connected apps only when they are required or helpful.
|
|
4
|
+
|
|
5
|
+
This template is mainly for these personas: ${c}.
|
|
6
|
+
|
|
7
|
+
Suggested app connections for this template: ${d}. These are not required to start the interview; they only unlock stronger source context or write-back later.
|
|
8
|
+
|
|
9
|
+
If suggested app connections exist, before the first interview question briefly show them as optional setup buttons and tell me I can skip them for now. Use exactly these markdown links so the chat renders Connect buttons:
|
|
10
|
+
${e}
|
|
11
|
+
|
|
12
|
+
Who this skill is for and when it should help:
|
|
13
|
+
${a.userUseCase}
|
|
14
|
+
|
|
15
|
+
The desired outcome is:
|
|
16
|
+
${a.outcome}
|
|
17
|
+
|
|
18
|
+
Available trigger modes for this product are only manual trigger and cron/scheduled agent messages. For this skill, design around ${b}. Do not assume webhooks, event listeners, or automatic app callbacks exist.
|
|
19
|
+
|
|
20
|
+
Start by interviewing me one question at a time. Do not echo this setup back to me. Ask only 3-5 focused questions before creating the skill unless a safety-critical automation rule is still missing. Ask the smallest next question needed, keep each interview turn under 120 words unless options are essential, wait for my answer, then ask the next question. Do not create or edit any files until you have enough context to tailor the workflow.
|
|
21
|
+
|
|
22
|
+
When the next question has clear choices, ask it with a Dench question card instead of plain text bullets. Use this exact fenced JSON shape, then stop and wait for my selection:
|
|
23
|
+
\`\`\`dench-question
|
|
24
|
+
{
|
|
25
|
+
"id": "short-stable-question-id",
|
|
26
|
+
"prompt": "The one question you need answered",
|
|
27
|
+
"allowMultiple": false,
|
|
28
|
+
"optional": false,
|
|
29
|
+
"options": [
|
|
30
|
+
{ "id": "first-option", "label": "First option" },
|
|
31
|
+
{ "id": "second-option", "label": "Second option" }
|
|
32
|
+
]
|
|
33
|
+
}
|
|
34
|
+
\`\`\`
|
|
35
|
+
Set "allowMultiple": true only when more than one option can be selected. Add "optional": true only when skipping is genuinely acceptable. Keep option labels short and include descriptions only when they prevent ambiguity.
|
|
36
|
+
|
|
37
|
+
Before writing the final SKILL.md, gather these specifics:
|
|
38
|
+
${a.interviewQuestions.map(ab).join("\n")}
|
|
39
|
+
|
|
40
|
+
Ask the questions in that order unless my answer makes a later question unnecessary. If a question lists choices, prefer a dench-question card with the provided IDs and labels so I can answer quickly. Still accept custom freeform detail when my situation does not fit the choices.
|
|
41
|
+
|
|
42
|
+
When you have enough context, create a complete SKILL.md for this reusable skill. Do not assume a skill-creator helper exists; if no helper is available, create the skill directly at skills/<kebab-case-skill-name>/SKILL.md and add references under that folder when useful. The skill should include:
|
|
43
|
+
${aa(a.skillInstructions)}
|
|
44
|
+
|
|
45
|
+
The final SKILL.md must include a concrete activity logger policy. Do not add a generic "log activity" note; specify where the log lives, when entries are appended, which fields are recorded, what gets suppressed on repeat runs, and what must be redacted. Use this tailored logger contract:
|
|
46
|
+
${aa(a.activityLogInstructions)}
|
|
47
|
+
|
|
48
|
+
Automation policy:
|
|
49
|
+
- If the skill sends email or LinkedIn-style outreach, it may be fully automated only after you define explicit send rules with me.
|
|
50
|
+
- Capture daily or weekly caps, allowlists or exclusions, quiet hours, stop conditions, duplicate prevention, and what counts as a reply or conversion.
|
|
51
|
+
- For scheduled skills, include idempotency checks so a cron run does not repeat work already done in a previous run.
|
|
52
|
+
- For CRM writes, prefer additive updates with source attribution and confidence notes. Ask before overwriting existing user-authored fields unless I explicitly allow overwrites.
|
|
53
|
+
|
|
54
|
+
End by showing me the created skill path, how to invoke it manually, and the exact cron/scheduled message to use if the workflow should run on a schedule.`})(a)}));function ae(a){return(function(a){let b=ad.find(b=>b.id===a);if(!b)throw Error(`Unknown skill template: ${a}`);return b})(a).buildPrompt()}}};
|