cowork-os 0.3.21
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/LICENSE +21 -0
- package/README.md +1638 -0
- package/bin/cowork.js +42 -0
- package/build/entitlements.mac.plist +16 -0
- package/build/icon.icns +0 -0
- package/build/icon.png +0 -0
- package/dist/electron/electron/activity/ActivityRepository.js +190 -0
- package/dist/electron/electron/agent/browser/browser-service.js +639 -0
- package/dist/electron/electron/agent/context-manager.js +225 -0
- package/dist/electron/electron/agent/custom-skill-loader.js +566 -0
- package/dist/electron/electron/agent/daemon.js +975 -0
- package/dist/electron/electron/agent/executor.js +3561 -0
- package/dist/electron/electron/agent/llm/anthropic-provider.js +155 -0
- package/dist/electron/electron/agent/llm/bedrock-provider.js +202 -0
- package/dist/electron/electron/agent/llm/gemini-provider.js +375 -0
- package/dist/electron/electron/agent/llm/index.js +34 -0
- package/dist/electron/electron/agent/llm/ollama-provider.js +263 -0
- package/dist/electron/electron/agent/llm/openai-oauth.js +101 -0
- package/dist/electron/electron/agent/llm/openai-provider.js +657 -0
- package/dist/electron/electron/agent/llm/openrouter-provider.js +232 -0
- package/dist/electron/electron/agent/llm/pricing.js +160 -0
- package/dist/electron/electron/agent/llm/provider-factory.js +880 -0
- package/dist/electron/electron/agent/llm/types.js +178 -0
- package/dist/electron/electron/agent/queue-manager.js +378 -0
- package/dist/electron/electron/agent/sandbox/docker-sandbox.js +402 -0
- package/dist/electron/electron/agent/sandbox/macos-sandbox.js +407 -0
- package/dist/electron/electron/agent/sandbox/runner.js +410 -0
- package/dist/electron/electron/agent/sandbox/sandbox-factory.js +228 -0
- package/dist/electron/electron/agent/sandbox/security-utils.js +258 -0
- package/dist/electron/electron/agent/search/brave-provider.js +119 -0
- package/dist/electron/electron/agent/search/google-provider.js +100 -0
- package/dist/electron/electron/agent/search/index.js +28 -0
- package/dist/electron/electron/agent/search/provider-factory.js +395 -0
- package/dist/electron/electron/agent/search/serpapi-provider.js +112 -0
- package/dist/electron/electron/agent/search/tavily-provider.js +90 -0
- package/dist/electron/electron/agent/search/types.js +40 -0
- package/dist/electron/electron/agent/security/index.js +12 -0
- package/dist/electron/electron/agent/security/input-sanitizer.js +303 -0
- package/dist/electron/electron/agent/security/output-filter.js +217 -0
- package/dist/electron/electron/agent/skill-eligibility.js +281 -0
- package/dist/electron/electron/agent/skill-registry.js +396 -0
- package/dist/electron/electron/agent/skills/document.js +878 -0
- package/dist/electron/electron/agent/skills/image-generator.js +225 -0
- package/dist/electron/electron/agent/skills/organizer.js +141 -0
- package/dist/electron/electron/agent/skills/presentation.js +367 -0
- package/dist/electron/electron/agent/skills/spreadsheet.js +165 -0
- package/dist/electron/electron/agent/tools/browser-tools.js +523 -0
- package/dist/electron/electron/agent/tools/builtin-settings.js +384 -0
- package/dist/electron/electron/agent/tools/canvas-tools.js +530 -0
- package/dist/electron/electron/agent/tools/cron-tools.js +577 -0
- package/dist/electron/electron/agent/tools/edit-tools.js +194 -0
- package/dist/electron/electron/agent/tools/file-tools.js +719 -0
- package/dist/electron/electron/agent/tools/glob-tools.js +283 -0
- package/dist/electron/electron/agent/tools/grep-tools.js +387 -0
- package/dist/electron/electron/agent/tools/image-tools.js +111 -0
- package/dist/electron/electron/agent/tools/mention-tools.js +282 -0
- package/dist/electron/electron/agent/tools/node-tools.js +476 -0
- package/dist/electron/electron/agent/tools/registry.js +2719 -0
- package/dist/electron/electron/agent/tools/search-tools.js +91 -0
- package/dist/electron/electron/agent/tools/shell-tools.js +574 -0
- package/dist/electron/electron/agent/tools/skill-tools.js +274 -0
- package/dist/electron/electron/agent/tools/system-tools.js +578 -0
- package/dist/electron/electron/agent/tools/web-fetch-tools.js +444 -0
- package/dist/electron/electron/agent/tools/x-tools.js +264 -0
- package/dist/electron/electron/agents/AgentRoleRepository.js +420 -0
- package/dist/electron/electron/agents/HeartbeatService.js +356 -0
- package/dist/electron/electron/agents/MentionRepository.js +197 -0
- package/dist/electron/electron/agents/TaskSubscriptionRepository.js +168 -0
- package/dist/electron/electron/agents/WorkingStateRepository.js +229 -0
- package/dist/electron/electron/canvas/canvas-manager.js +714 -0
- package/dist/electron/electron/canvas/canvas-preload.js +53 -0
- package/dist/electron/electron/canvas/canvas-protocol.js +195 -0
- package/dist/electron/electron/canvas/canvas-store.js +174 -0
- package/dist/electron/electron/canvas/index.js +13 -0
- package/dist/electron/electron/control-plane/client.js +364 -0
- package/dist/electron/electron/control-plane/handlers.js +572 -0
- package/dist/electron/electron/control-plane/index.js +41 -0
- package/dist/electron/electron/control-plane/node-manager.js +264 -0
- package/dist/electron/electron/control-plane/protocol.js +194 -0
- package/dist/electron/electron/control-plane/remote-client.js +437 -0
- package/dist/electron/electron/control-plane/server.js +640 -0
- package/dist/electron/electron/control-plane/settings.js +369 -0
- package/dist/electron/electron/control-plane/ssh-tunnel.js +549 -0
- package/dist/electron/electron/cron/index.js +30 -0
- package/dist/electron/electron/cron/schedule.js +190 -0
- package/dist/electron/electron/cron/service.js +614 -0
- package/dist/electron/electron/cron/store.js +155 -0
- package/dist/electron/electron/cron/types.js +82 -0
- package/dist/electron/electron/cron/webhook.js +258 -0
- package/dist/electron/electron/database/SecureSettingsRepository.js +444 -0
- package/dist/electron/electron/database/TaskLabelRepository.js +120 -0
- package/dist/electron/electron/database/repositories.js +1781 -0
- package/dist/electron/electron/database/schema.js +978 -0
- package/dist/electron/electron/extensions/index.js +33 -0
- package/dist/electron/electron/extensions/loader.js +313 -0
- package/dist/electron/electron/extensions/registry.js +485 -0
- package/dist/electron/electron/extensions/types.js +11 -0
- package/dist/electron/electron/gateway/channel-registry.js +1102 -0
- package/dist/electron/electron/gateway/channels/bluebubbles-client.js +479 -0
- package/dist/electron/electron/gateway/channels/bluebubbles.js +432 -0
- package/dist/electron/electron/gateway/channels/discord.js +975 -0
- package/dist/electron/electron/gateway/channels/email-client.js +593 -0
- package/dist/electron/electron/gateway/channels/email.js +443 -0
- package/dist/electron/electron/gateway/channels/google-chat.js +631 -0
- package/dist/electron/electron/gateway/channels/imessage-client.js +363 -0
- package/dist/electron/electron/gateway/channels/imessage.js +465 -0
- package/dist/electron/electron/gateway/channels/index.js +36 -0
- package/dist/electron/electron/gateway/channels/line-client.js +470 -0
- package/dist/electron/electron/gateway/channels/line.js +479 -0
- package/dist/electron/electron/gateway/channels/matrix-client.js +432 -0
- package/dist/electron/electron/gateway/channels/matrix.js +592 -0
- package/dist/electron/electron/gateway/channels/mattermost-client.js +394 -0
- package/dist/electron/electron/gateway/channels/mattermost.js +496 -0
- package/dist/electron/electron/gateway/channels/signal-client.js +500 -0
- package/dist/electron/electron/gateway/channels/signal.js +582 -0
- package/dist/electron/electron/gateway/channels/slack.js +415 -0
- package/dist/electron/electron/gateway/channels/teams.js +596 -0
- package/dist/electron/electron/gateway/channels/telegram.js +1390 -0
- package/dist/electron/electron/gateway/channels/twitch-client.js +502 -0
- package/dist/electron/electron/gateway/channels/twitch.js +396 -0
- package/dist/electron/electron/gateway/channels/types.js +8 -0
- package/dist/electron/electron/gateway/channels/whatsapp.js +953 -0
- package/dist/electron/electron/gateway/context-policy.js +268 -0
- package/dist/electron/electron/gateway/index.js +1063 -0
- package/dist/electron/electron/gateway/infrastructure.js +496 -0
- package/dist/electron/electron/gateway/router.js +2700 -0
- package/dist/electron/electron/gateway/security.js +375 -0
- package/dist/electron/electron/gateway/session.js +115 -0
- package/dist/electron/electron/gateway/tunnel.js +503 -0
- package/dist/electron/electron/guardrails/guardrail-manager.js +348 -0
- package/dist/electron/electron/hooks/gmail-watcher.js +300 -0
- package/dist/electron/electron/hooks/index.js +46 -0
- package/dist/electron/electron/hooks/mappings.js +381 -0
- package/dist/electron/electron/hooks/server.js +480 -0
- package/dist/electron/electron/hooks/settings.js +447 -0
- package/dist/electron/electron/hooks/types.js +41 -0
- package/dist/electron/electron/ipc/canvas-handlers.js +158 -0
- package/dist/electron/electron/ipc/handlers.js +3138 -0
- package/dist/electron/electron/ipc/mission-control-handlers.js +141 -0
- package/dist/electron/electron/main.js +448 -0
- package/dist/electron/electron/mcp/client/MCPClientManager.js +330 -0
- package/dist/electron/electron/mcp/client/MCPServerConnection.js +437 -0
- package/dist/electron/electron/mcp/client/transports/SSETransport.js +304 -0
- package/dist/electron/electron/mcp/client/transports/StdioTransport.js +307 -0
- package/dist/electron/electron/mcp/client/transports/WebSocketTransport.js +329 -0
- package/dist/electron/electron/mcp/host/MCPHostServer.js +354 -0
- package/dist/electron/electron/mcp/host/ToolAdapter.js +100 -0
- package/dist/electron/electron/mcp/registry/MCPRegistryManager.js +497 -0
- package/dist/electron/electron/mcp/settings.js +446 -0
- package/dist/electron/electron/mcp/types.js +59 -0
- package/dist/electron/electron/memory/MemoryService.js +435 -0
- package/dist/electron/electron/notifications/index.js +17 -0
- package/dist/electron/electron/notifications/service.js +118 -0
- package/dist/electron/electron/notifications/store.js +144 -0
- package/dist/electron/electron/preload.js +842 -0
- package/dist/electron/electron/reports/StandupReportService.js +272 -0
- package/dist/electron/electron/security/concurrency.js +293 -0
- package/dist/electron/electron/security/index.js +15 -0
- package/dist/electron/electron/security/policy-manager.js +435 -0
- package/dist/electron/electron/settings/appearance-manager.js +193 -0
- package/dist/electron/electron/settings/personality-manager.js +724 -0
- package/dist/electron/electron/settings/x-manager.js +58 -0
- package/dist/electron/electron/tailscale/exposure.js +188 -0
- package/dist/electron/electron/tailscale/index.js +28 -0
- package/dist/electron/electron/tailscale/settings.js +205 -0
- package/dist/electron/electron/tailscale/tailscale.js +355 -0
- package/dist/electron/electron/tray/QuickInputWindow.js +568 -0
- package/dist/electron/electron/tray/TrayManager.js +895 -0
- package/dist/electron/electron/tray/index.js +9 -0
- package/dist/electron/electron/updater/index.js +6 -0
- package/dist/electron/electron/updater/update-manager.js +418 -0
- package/dist/electron/electron/utils/env-migration.js +209 -0
- package/dist/electron/electron/utils/process.js +102 -0
- package/dist/electron/electron/utils/rate-limiter.js +104 -0
- package/dist/electron/electron/utils/validation.js +419 -0
- package/dist/electron/electron/utils/x-cli.js +177 -0
- package/dist/electron/electron/voice/VoiceService.js +507 -0
- package/dist/electron/electron/voice/index.js +14 -0
- package/dist/electron/electron/voice/voice-settings-manager.js +359 -0
- package/dist/electron/shared/channelMessages.js +170 -0
- package/dist/electron/shared/types.js +1185 -0
- package/package.json +159 -0
- package/resources/skills/1password.json +10 -0
- package/resources/skills/add-documentation.json +31 -0
- package/resources/skills/analyze-csv.json +17 -0
- package/resources/skills/apple-notes.json +10 -0
- package/resources/skills/apple-reminders.json +10 -0
- package/resources/skills/auto-commenter.json +10 -0
- package/resources/skills/bear-notes.json +10 -0
- package/resources/skills/bird.json +35 -0
- package/resources/skills/blogwatcher.json +10 -0
- package/resources/skills/blucli.json +10 -0
- package/resources/skills/bluebubbles.json +10 -0
- package/resources/skills/camsnap.json +10 -0
- package/resources/skills/clean-imports.json +18 -0
- package/resources/skills/code-review.json +18 -0
- package/resources/skills/coding-agent.json +10 -0
- package/resources/skills/compare-files.json +23 -0
- package/resources/skills/convert-code.json +34 -0
- package/resources/skills/create-changelog.json +24 -0
- package/resources/skills/debug-error.json +17 -0
- package/resources/skills/dependency-check.json +10 -0
- package/resources/skills/discord.json +10 -0
- package/resources/skills/eightctl.json +10 -0
- package/resources/skills/explain-code.json +29 -0
- package/resources/skills/extract-todos.json +18 -0
- package/resources/skills/food-order.json +10 -0
- package/resources/skills/gemini.json +10 -0
- package/resources/skills/generate-readme.json +10 -0
- package/resources/skills/gifgrep.json +10 -0
- package/resources/skills/git-commit.json +10 -0
- package/resources/skills/github.json +10 -0
- package/resources/skills/gog.json +10 -0
- package/resources/skills/goplaces.json +10 -0
- package/resources/skills/himalaya.json +10 -0
- package/resources/skills/imsg.json +10 -0
- package/resources/skills/karpathy-guidelines.json +12 -0
- package/resources/skills/last30days.json +26 -0
- package/resources/skills/local-places.json +10 -0
- package/resources/skills/mcporter.json +10 -0
- package/resources/skills/model-usage.json +10 -0
- package/resources/skills/nano-banana-pro.json +10 -0
- package/resources/skills/nano-pdf.json +10 -0
- package/resources/skills/notion.json +10 -0
- package/resources/skills/obsidian.json +10 -0
- package/resources/skills/openai-image-gen.json +10 -0
- package/resources/skills/openai-whisper-api.json +10 -0
- package/resources/skills/openai-whisper.json +10 -0
- package/resources/skills/openhue.json +10 -0
- package/resources/skills/oracle.json +10 -0
- package/resources/skills/ordercli.json +10 -0
- package/resources/skills/peekaboo.json +10 -0
- package/resources/skills/project-structure.json +10 -0
- package/resources/skills/proofread.json +17 -0
- package/resources/skills/refactor-code.json +31 -0
- package/resources/skills/rename-symbol.json +23 -0
- package/resources/skills/sag.json +10 -0
- package/resources/skills/security-audit.json +18 -0
- package/resources/skills/session-logs.json +10 -0
- package/resources/skills/sherpa-onnx-tts.json +10 -0
- package/resources/skills/skill-creator.json +15 -0
- package/resources/skills/skill-hub.json +29 -0
- package/resources/skills/slack.json +10 -0
- package/resources/skills/songsee.json +10 -0
- package/resources/skills/sonoscli.json +10 -0
- package/resources/skills/spotify-player.json +10 -0
- package/resources/skills/startup-cfo.json +55 -0
- package/resources/skills/summarize-folder.json +18 -0
- package/resources/skills/summarize.json +10 -0
- package/resources/skills/things-mac.json +10 -0
- package/resources/skills/tmux.json +10 -0
- package/resources/skills/translate.json +36 -0
- package/resources/skills/trello.json +10 -0
- package/resources/skills/video-frames.json +10 -0
- package/resources/skills/voice-call.json +10 -0
- package/resources/skills/wacli.json +10 -0
- package/resources/skills/weather.json +10 -0
- package/resources/skills/write-tests.json +31 -0
- package/src/electron/activity/ActivityRepository.ts +238 -0
- package/src/electron/agent/browser/browser-service.ts +721 -0
- package/src/electron/agent/context-manager.ts +257 -0
- package/src/electron/agent/custom-skill-loader.ts +634 -0
- package/src/electron/agent/daemon.ts +1097 -0
- package/src/electron/agent/executor.ts +4017 -0
- package/src/electron/agent/llm/anthropic-provider.ts +175 -0
- package/src/electron/agent/llm/bedrock-provider.ts +236 -0
- package/src/electron/agent/llm/gemini-provider.ts +422 -0
- package/src/electron/agent/llm/index.ts +9 -0
- package/src/electron/agent/llm/ollama-provider.ts +347 -0
- package/src/electron/agent/llm/openai-oauth.ts +127 -0
- package/src/electron/agent/llm/openai-provider.ts +686 -0
- package/src/electron/agent/llm/openrouter-provider.ts +273 -0
- package/src/electron/agent/llm/pricing.ts +180 -0
- package/src/electron/agent/llm/provider-factory.ts +971 -0
- package/src/electron/agent/llm/types.ts +291 -0
- package/src/electron/agent/queue-manager.ts +408 -0
- package/src/electron/agent/sandbox/docker-sandbox.ts +453 -0
- package/src/electron/agent/sandbox/macos-sandbox.ts +426 -0
- package/src/electron/agent/sandbox/runner.ts +453 -0
- package/src/electron/agent/sandbox/sandbox-factory.ts +337 -0
- package/src/electron/agent/sandbox/security-utils.ts +251 -0
- package/src/electron/agent/search/brave-provider.ts +141 -0
- package/src/electron/agent/search/google-provider.ts +131 -0
- package/src/electron/agent/search/index.ts +6 -0
- package/src/electron/agent/search/provider-factory.ts +450 -0
- package/src/electron/agent/search/serpapi-provider.ts +138 -0
- package/src/electron/agent/search/tavily-provider.ts +108 -0
- package/src/electron/agent/search/types.ts +118 -0
- package/src/electron/agent/security/index.ts +20 -0
- package/src/electron/agent/security/input-sanitizer.ts +380 -0
- package/src/electron/agent/security/output-filter.ts +259 -0
- package/src/electron/agent/skill-eligibility.ts +334 -0
- package/src/electron/agent/skill-registry.ts +457 -0
- package/src/electron/agent/skills/document.ts +1070 -0
- package/src/electron/agent/skills/image-generator.ts +272 -0
- package/src/electron/agent/skills/organizer.ts +131 -0
- package/src/electron/agent/skills/presentation.ts +418 -0
- package/src/electron/agent/skills/spreadsheet.ts +166 -0
- package/src/electron/agent/tools/browser-tools.ts +546 -0
- package/src/electron/agent/tools/builtin-settings.ts +422 -0
- package/src/electron/agent/tools/canvas-tools.ts +572 -0
- package/src/electron/agent/tools/cron-tools.ts +723 -0
- package/src/electron/agent/tools/edit-tools.ts +196 -0
- package/src/electron/agent/tools/file-tools.ts +811 -0
- package/src/electron/agent/tools/glob-tools.ts +303 -0
- package/src/electron/agent/tools/grep-tools.ts +432 -0
- package/src/electron/agent/tools/image-tools.ts +126 -0
- package/src/electron/agent/tools/mention-tools.ts +371 -0
- package/src/electron/agent/tools/node-tools.ts +550 -0
- package/src/electron/agent/tools/registry.ts +3052 -0
- package/src/electron/agent/tools/search-tools.ts +111 -0
- package/src/electron/agent/tools/shell-tools.ts +651 -0
- package/src/electron/agent/tools/skill-tools.ts +340 -0
- package/src/electron/agent/tools/system-tools.ts +665 -0
- package/src/electron/agent/tools/web-fetch-tools.ts +528 -0
- package/src/electron/agent/tools/x-tools.ts +267 -0
- package/src/electron/agents/AgentRoleRepository.ts +557 -0
- package/src/electron/agents/HeartbeatService.ts +469 -0
- package/src/electron/agents/MentionRepository.ts +242 -0
- package/src/electron/agents/TaskSubscriptionRepository.ts +231 -0
- package/src/electron/agents/WorkingStateRepository.ts +278 -0
- package/src/electron/canvas/canvas-manager.ts +818 -0
- package/src/electron/canvas/canvas-preload.ts +102 -0
- package/src/electron/canvas/canvas-protocol.ts +174 -0
- package/src/electron/canvas/canvas-store.ts +200 -0
- package/src/electron/canvas/index.ts +8 -0
- package/src/electron/control-plane/client.ts +527 -0
- package/src/electron/control-plane/handlers.ts +723 -0
- package/src/electron/control-plane/index.ts +51 -0
- package/src/electron/control-plane/node-manager.ts +322 -0
- package/src/electron/control-plane/protocol.ts +269 -0
- package/src/electron/control-plane/remote-client.ts +517 -0
- package/src/electron/control-plane/server.ts +853 -0
- package/src/electron/control-plane/settings.ts +401 -0
- package/src/electron/control-plane/ssh-tunnel.ts +624 -0
- package/src/electron/cron/index.ts +9 -0
- package/src/electron/cron/schedule.ts +217 -0
- package/src/electron/cron/service.ts +743 -0
- package/src/electron/cron/store.ts +165 -0
- package/src/electron/cron/types.ts +291 -0
- package/src/electron/cron/webhook.ts +303 -0
- package/src/electron/database/SecureSettingsRepository.ts +514 -0
- package/src/electron/database/TaskLabelRepository.ts +148 -0
- package/src/electron/database/repositories.ts +2397 -0
- package/src/electron/database/schema.ts +1017 -0
- package/src/electron/extensions/index.ts +18 -0
- package/src/electron/extensions/loader.ts +336 -0
- package/src/electron/extensions/registry.ts +546 -0
- package/src/electron/extensions/types.ts +372 -0
- package/src/electron/gateway/channel-registry.ts +1267 -0
- package/src/electron/gateway/channels/bluebubbles-client.ts +641 -0
- package/src/electron/gateway/channels/bluebubbles.ts +509 -0
- package/src/electron/gateway/channels/discord.ts +1150 -0
- package/src/electron/gateway/channels/email-client.ts +708 -0
- package/src/electron/gateway/channels/email.ts +516 -0
- package/src/electron/gateway/channels/google-chat.ts +760 -0
- package/src/electron/gateway/channels/imessage-client.ts +473 -0
- package/src/electron/gateway/channels/imessage.ts +520 -0
- package/src/electron/gateway/channels/index.ts +21 -0
- package/src/electron/gateway/channels/line-client.ts +598 -0
- package/src/electron/gateway/channels/line.ts +559 -0
- package/src/electron/gateway/channels/matrix-client.ts +632 -0
- package/src/electron/gateway/channels/matrix.ts +655 -0
- package/src/electron/gateway/channels/mattermost-client.ts +526 -0
- package/src/electron/gateway/channels/mattermost.ts +550 -0
- package/src/electron/gateway/channels/signal-client.ts +722 -0
- package/src/electron/gateway/channels/signal.ts +666 -0
- package/src/electron/gateway/channels/slack.ts +458 -0
- package/src/electron/gateway/channels/teams.ts +681 -0
- package/src/electron/gateway/channels/telegram.ts +1727 -0
- package/src/electron/gateway/channels/twitch-client.ts +665 -0
- package/src/electron/gateway/channels/twitch.ts +468 -0
- package/src/electron/gateway/channels/types.ts +1002 -0
- package/src/electron/gateway/channels/whatsapp.ts +1101 -0
- package/src/electron/gateway/context-policy.ts +382 -0
- package/src/electron/gateway/index.ts +1274 -0
- package/src/electron/gateway/infrastructure.ts +645 -0
- package/src/electron/gateway/router.ts +3206 -0
- package/src/electron/gateway/security.ts +422 -0
- package/src/electron/gateway/session.ts +144 -0
- package/src/electron/gateway/tunnel.ts +626 -0
- package/src/electron/guardrails/guardrail-manager.ts +380 -0
- package/src/electron/hooks/gmail-watcher.ts +355 -0
- package/src/electron/hooks/index.ts +30 -0
- package/src/electron/hooks/mappings.ts +404 -0
- package/src/electron/hooks/server.ts +574 -0
- package/src/electron/hooks/settings.ts +466 -0
- package/src/electron/hooks/types.ts +245 -0
- package/src/electron/ipc/canvas-handlers.ts +223 -0
- package/src/electron/ipc/handlers.ts +3661 -0
- package/src/electron/ipc/mission-control-handlers.ts +182 -0
- package/src/electron/main.ts +496 -0
- package/src/electron/mcp/client/MCPClientManager.ts +406 -0
- package/src/electron/mcp/client/MCPServerConnection.ts +514 -0
- package/src/electron/mcp/client/transports/SSETransport.ts +360 -0
- package/src/electron/mcp/client/transports/StdioTransport.ts +355 -0
- package/src/electron/mcp/client/transports/WebSocketTransport.ts +384 -0
- package/src/electron/mcp/host/MCPHostServer.ts +388 -0
- package/src/electron/mcp/host/ToolAdapter.ts +140 -0
- package/src/electron/mcp/registry/MCPRegistryManager.ts +565 -0
- package/src/electron/mcp/settings.ts +468 -0
- package/src/electron/mcp/types.ts +371 -0
- package/src/electron/memory/MemoryService.ts +523 -0
- package/src/electron/notifications/index.ts +16 -0
- package/src/electron/notifications/service.ts +161 -0
- package/src/electron/notifications/store.ts +163 -0
- package/src/electron/preload.ts +2845 -0
- package/src/electron/reports/StandupReportService.ts +356 -0
- package/src/electron/security/concurrency.ts +333 -0
- package/src/electron/security/index.ts +17 -0
- package/src/electron/security/policy-manager.ts +539 -0
- package/src/electron/settings/appearance-manager.ts +182 -0
- package/src/electron/settings/personality-manager.ts +800 -0
- package/src/electron/settings/x-manager.ts +62 -0
- package/src/electron/tailscale/exposure.ts +262 -0
- package/src/electron/tailscale/index.ts +34 -0
- package/src/electron/tailscale/settings.ts +218 -0
- package/src/electron/tailscale/tailscale.ts +379 -0
- package/src/electron/tray/QuickInputWindow.ts +609 -0
- package/src/electron/tray/TrayManager.ts +1005 -0
- package/src/electron/tray/index.ts +6 -0
- package/src/electron/updater/index.ts +1 -0
- package/src/electron/updater/update-manager.ts +447 -0
- package/src/electron/utils/env-migration.ts +203 -0
- package/src/electron/utils/process.ts +124 -0
- package/src/electron/utils/rate-limiter.ts +130 -0
- package/src/electron/utils/validation.ts +493 -0
- package/src/electron/utils/x-cli.ts +198 -0
- package/src/electron/voice/VoiceService.ts +583 -0
- package/src/electron/voice/index.ts +9 -0
- package/src/electron/voice/voice-settings-manager.ts +403 -0
- package/src/renderer/App.tsx +775 -0
- package/src/renderer/components/ActivityFeed.tsx +407 -0
- package/src/renderer/components/ActivityFeedItem.tsx +285 -0
- package/src/renderer/components/AgentRoleCard.tsx +343 -0
- package/src/renderer/components/AgentRoleEditor.tsx +805 -0
- package/src/renderer/components/AgentSquadSettings.tsx +295 -0
- package/src/renderer/components/AgentWorkingStatePanel.tsx +411 -0
- package/src/renderer/components/AppearanceSettings.tsx +122 -0
- package/src/renderer/components/ApprovalDialog.tsx +100 -0
- package/src/renderer/components/BlueBubblesSettings.tsx +505 -0
- package/src/renderer/components/BuiltinToolsSettings.tsx +307 -0
- package/src/renderer/components/CanvasPreview.tsx +1189 -0
- package/src/renderer/components/CommandOutput.tsx +202 -0
- package/src/renderer/components/ContextPolicySettings.tsx +523 -0
- package/src/renderer/components/ControlPlaneSettings.tsx +1134 -0
- package/src/renderer/components/DisclaimerModal.tsx +124 -0
- package/src/renderer/components/DiscordSettings.tsx +436 -0
- package/src/renderer/components/EmailSettings.tsx +606 -0
- package/src/renderer/components/ExtensionsSettings.tsx +542 -0
- package/src/renderer/components/FileViewer.tsx +224 -0
- package/src/renderer/components/GoogleChatSettings.tsx +535 -0
- package/src/renderer/components/GuardrailSettings.tsx +487 -0
- package/src/renderer/components/HooksSettings.tsx +581 -0
- package/src/renderer/components/ImessageSettings.tsx +484 -0
- package/src/renderer/components/LineSettings.tsx +483 -0
- package/src/renderer/components/MCPRegistryBrowser.tsx +386 -0
- package/src/renderer/components/MCPSettings.tsx +943 -0
- package/src/renderer/components/MainContent.tsx +2433 -0
- package/src/renderer/components/MatrixSettings.tsx +510 -0
- package/src/renderer/components/MattermostSettings.tsx +473 -0
- package/src/renderer/components/MemorySettings.tsx +247 -0
- package/src/renderer/components/MentionBadge.tsx +87 -0
- package/src/renderer/components/MentionInput.tsx +409 -0
- package/src/renderer/components/MentionList.tsx +476 -0
- package/src/renderer/components/MissionControlPanel.tsx +1995 -0
- package/src/renderer/components/NodesSettings.tsx +316 -0
- package/src/renderer/components/NotificationPanel.tsx +481 -0
- package/src/renderer/components/Onboarding/AwakeningOrb.tsx +44 -0
- package/src/renderer/components/Onboarding/Onboarding.tsx +443 -0
- package/src/renderer/components/Onboarding/TypewriterText.tsx +102 -0
- package/src/renderer/components/Onboarding/index.ts +3 -0
- package/src/renderer/components/OnboardingModal.tsx +698 -0
- package/src/renderer/components/PairingCodeDisplay.tsx +324 -0
- package/src/renderer/components/PersonalitySettings.tsx +597 -0
- package/src/renderer/components/QueueSettings.tsx +119 -0
- package/src/renderer/components/QuickTaskFAB.tsx +71 -0
- package/src/renderer/components/RightPanel.tsx +413 -0
- package/src/renderer/components/ScheduledTasksSettings.tsx +1328 -0
- package/src/renderer/components/SearchSettings.tsx +328 -0
- package/src/renderer/components/Settings.tsx +1504 -0
- package/src/renderer/components/Sidebar.tsx +344 -0
- package/src/renderer/components/SignalSettings.tsx +673 -0
- package/src/renderer/components/SkillHubBrowser.tsx +458 -0
- package/src/renderer/components/SkillParameterModal.tsx +185 -0
- package/src/renderer/components/SkillsSettings.tsx +451 -0
- package/src/renderer/components/SlackSettings.tsx +442 -0
- package/src/renderer/components/StandupReportViewer.tsx +614 -0
- package/src/renderer/components/TaskBoard.tsx +498 -0
- package/src/renderer/components/TaskBoardCard.tsx +357 -0
- package/src/renderer/components/TaskBoardColumn.tsx +211 -0
- package/src/renderer/components/TaskLabelManager.tsx +472 -0
- package/src/renderer/components/TaskQueuePanel.tsx +144 -0
- package/src/renderer/components/TaskQuickActions.tsx +492 -0
- package/src/renderer/components/TaskTimeline.tsx +216 -0
- package/src/renderer/components/TaskView.tsx +162 -0
- package/src/renderer/components/TeamsSettings.tsx +518 -0
- package/src/renderer/components/TelegramSettings.tsx +421 -0
- package/src/renderer/components/Toast.tsx +76 -0
- package/src/renderer/components/TraySettings.tsx +189 -0
- package/src/renderer/components/TwitchSettings.tsx +511 -0
- package/src/renderer/components/UpdateSettings.tsx +295 -0
- package/src/renderer/components/VoiceIndicator.tsx +270 -0
- package/src/renderer/components/VoiceSettings.tsx +867 -0
- package/src/renderer/components/WhatsAppSettings.tsx +721 -0
- package/src/renderer/components/WorkingStateEditor.tsx +309 -0
- package/src/renderer/components/WorkingStateHistory.tsx +481 -0
- package/src/renderer/components/WorkspaceSelector.tsx +150 -0
- package/src/renderer/components/XSettings.tsx +311 -0
- package/src/renderer/global.d.ts +9 -0
- package/src/renderer/hooks/useAgentContext.ts +153 -0
- package/src/renderer/hooks/useOnboardingFlow.ts +548 -0
- package/src/renderer/hooks/useVoiceInput.ts +268 -0
- package/src/renderer/index.html +12 -0
- package/src/renderer/main.tsx +10 -0
- package/src/renderer/public/cowork-os-logo.png +0 -0
- package/src/renderer/quick-input.html +164 -0
- package/src/renderer/styles/index.css +14504 -0
- package/src/renderer/utils/agentMessages.ts +749 -0
- package/src/renderer/utils/voice-directives.ts +169 -0
- package/src/shared/channelMessages.ts +213 -0
- package/src/shared/types.ts +3608 -0
- package/tsconfig.electron.json +26 -0
- package/tsconfig.json +26 -0
- package/tsconfig.node.json +10 -0
- package/vite.config.ts +23 -0
|
@@ -0,0 +1,1185 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Core types shared between main and renderer processes
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.VOICE_LANGUAGES = exports.OPENAI_VOICES = exports.DEFAULT_VOICE_SETTINGS = exports.ANALOGY_DOMAINS = exports.DEFAULT_RELATIONSHIP = exports.DEFAULT_QUIRKS = exports.DEFAULT_RESPONSE_STYLE = exports.PERSONA_DEFINITIONS = exports.PERSONALITY_DEFINITIONS = exports.DEFAULT_QUEUE_SETTINGS = exports.DEFAULT_BLOCKED_COMMAND_PATTERNS = exports.DEFAULT_TRUSTED_COMMAND_PATTERNS = exports.IPC_CHANNELS = exports.BOARD_COLUMNS = exports.DEFAULT_AGENT_ROLES = exports.TEMP_WORKSPACE_NAME = exports.TEMP_WORKSPACE_ID = exports.CONTEXT_TOOL_RESTRICTIONS = exports.TOOL_RISK_LEVELS = exports.TOOL_GROUPS = exports.ACCENT_COLORS = void 0;
|
|
5
|
+
exports.getPersonalityById = getPersonalityById;
|
|
6
|
+
exports.getPersonaById = getPersonaById;
|
|
7
|
+
exports.ACCENT_COLORS = [
|
|
8
|
+
{ id: 'cyan', label: 'Cyan' },
|
|
9
|
+
{ id: 'blue', label: 'Blue' },
|
|
10
|
+
{ id: 'purple', label: 'Purple' },
|
|
11
|
+
{ id: 'pink', label: 'Pink' },
|
|
12
|
+
{ id: 'rose', label: 'Rose' },
|
|
13
|
+
{ id: 'orange', label: 'Orange' },
|
|
14
|
+
{ id: 'green', label: 'Green' },
|
|
15
|
+
{ id: 'teal', label: 'Teal' },
|
|
16
|
+
{ id: 'coral', label: 'Coral' },
|
|
17
|
+
];
|
|
18
|
+
/**
|
|
19
|
+
* Tool groups for policy-based access control
|
|
20
|
+
*/
|
|
21
|
+
exports.TOOL_GROUPS = {
|
|
22
|
+
// Read-only operations - lowest risk
|
|
23
|
+
'group:read': [
|
|
24
|
+
'read_file',
|
|
25
|
+
'list_directory',
|
|
26
|
+
'search_files',
|
|
27
|
+
'system_info',
|
|
28
|
+
'get_env',
|
|
29
|
+
'get_app_paths',
|
|
30
|
+
],
|
|
31
|
+
// Write operations - medium risk
|
|
32
|
+
'group:write': [
|
|
33
|
+
'write_file',
|
|
34
|
+
'copy_file',
|
|
35
|
+
'rename_file',
|
|
36
|
+
'create_directory',
|
|
37
|
+
'create_spreadsheet',
|
|
38
|
+
'create_document',
|
|
39
|
+
'edit_document',
|
|
40
|
+
'create_presentation',
|
|
41
|
+
'organize_folder',
|
|
42
|
+
],
|
|
43
|
+
// Destructive operations - high risk, requires approval
|
|
44
|
+
'group:destructive': [
|
|
45
|
+
'delete_file',
|
|
46
|
+
'run_command',
|
|
47
|
+
],
|
|
48
|
+
// System operations - requires explicit permission
|
|
49
|
+
'group:system': [
|
|
50
|
+
'read_clipboard',
|
|
51
|
+
'write_clipboard',
|
|
52
|
+
'take_screenshot',
|
|
53
|
+
'open_application',
|
|
54
|
+
'open_url',
|
|
55
|
+
'open_path',
|
|
56
|
+
'show_in_folder',
|
|
57
|
+
],
|
|
58
|
+
// Network operations - requires network permission
|
|
59
|
+
'group:network': [
|
|
60
|
+
'web_search',
|
|
61
|
+
'x_action',
|
|
62
|
+
'browser_navigate',
|
|
63
|
+
'browser_screenshot',
|
|
64
|
+
'browser_get_content',
|
|
65
|
+
'browser_click',
|
|
66
|
+
'browser_fill',
|
|
67
|
+
'browser_type',
|
|
68
|
+
'browser_press',
|
|
69
|
+
'browser_wait',
|
|
70
|
+
'browser_scroll',
|
|
71
|
+
'browser_select',
|
|
72
|
+
'browser_get_text',
|
|
73
|
+
'browser_evaluate',
|
|
74
|
+
'browser_back',
|
|
75
|
+
'browser_forward',
|
|
76
|
+
'browser_reload',
|
|
77
|
+
'browser_save_pdf',
|
|
78
|
+
'browser_close',
|
|
79
|
+
],
|
|
80
|
+
// Memory/sensitive tools - restricted in shared contexts
|
|
81
|
+
'group:memory': [
|
|
82
|
+
'read_clipboard',
|
|
83
|
+
'write_clipboard',
|
|
84
|
+
],
|
|
85
|
+
// Image generation - requires API access
|
|
86
|
+
'group:image': [
|
|
87
|
+
'generate_image',
|
|
88
|
+
],
|
|
89
|
+
// Meta/control tools
|
|
90
|
+
'group:meta': [
|
|
91
|
+
'revise_plan',
|
|
92
|
+
],
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* Maps each tool to its risk level
|
|
96
|
+
*/
|
|
97
|
+
exports.TOOL_RISK_LEVELS = {
|
|
98
|
+
// Read operations
|
|
99
|
+
read_file: 'read',
|
|
100
|
+
list_directory: 'read',
|
|
101
|
+
search_files: 'read',
|
|
102
|
+
system_info: 'read',
|
|
103
|
+
get_env: 'read',
|
|
104
|
+
get_app_paths: 'read',
|
|
105
|
+
// Write operations
|
|
106
|
+
write_file: 'write',
|
|
107
|
+
copy_file: 'write',
|
|
108
|
+
rename_file: 'write',
|
|
109
|
+
move_file: 'write',
|
|
110
|
+
create_directory: 'write',
|
|
111
|
+
run_skill: 'write',
|
|
112
|
+
// Destructive operations
|
|
113
|
+
delete_file: 'destructive',
|
|
114
|
+
run_command: 'destructive',
|
|
115
|
+
// System operations
|
|
116
|
+
read_clipboard: 'system',
|
|
117
|
+
write_clipboard: 'system',
|
|
118
|
+
take_screenshot: 'system',
|
|
119
|
+
open_application: 'system',
|
|
120
|
+
open_url: 'system',
|
|
121
|
+
open_path: 'system',
|
|
122
|
+
show_in_folder: 'system',
|
|
123
|
+
// Network operations
|
|
124
|
+
generate_image: 'network',
|
|
125
|
+
web_search: 'network',
|
|
126
|
+
browser_navigate: 'network',
|
|
127
|
+
browser_screenshot: 'network',
|
|
128
|
+
browser_get_content: 'network',
|
|
129
|
+
browser_click: 'network',
|
|
130
|
+
browser_fill: 'network',
|
|
131
|
+
browser_type: 'network',
|
|
132
|
+
browser_press: 'network',
|
|
133
|
+
browser_wait: 'network',
|
|
134
|
+
browser_scroll: 'network',
|
|
135
|
+
browser_select: 'network',
|
|
136
|
+
browser_get_text: 'network',
|
|
137
|
+
browser_evaluate: 'network',
|
|
138
|
+
browser_back: 'network',
|
|
139
|
+
browser_forward: 'network',
|
|
140
|
+
browser_reload: 'network',
|
|
141
|
+
browser_save_pdf: 'network',
|
|
142
|
+
browser_close: 'network',
|
|
143
|
+
x_action: 'network',
|
|
144
|
+
// Meta
|
|
145
|
+
revise_plan: 'read',
|
|
146
|
+
};
|
|
147
|
+
/**
|
|
148
|
+
* Tool restrictions based on gateway context
|
|
149
|
+
* Implements C1: Memory Tool Isolation in Shared Contexts
|
|
150
|
+
*/
|
|
151
|
+
exports.CONTEXT_TOOL_RESTRICTIONS = {
|
|
152
|
+
private: {
|
|
153
|
+
deniedGroups: [],
|
|
154
|
+
deniedTools: [],
|
|
155
|
+
requireApprovalFor: ['delete_file'],
|
|
156
|
+
},
|
|
157
|
+
group: {
|
|
158
|
+
deniedGroups: ['group:memory'],
|
|
159
|
+
deniedTools: ['read_clipboard', 'write_clipboard'],
|
|
160
|
+
requireApprovalFor: ['delete_file'],
|
|
161
|
+
},
|
|
162
|
+
public: {
|
|
163
|
+
deniedGroups: ['group:memory'],
|
|
164
|
+
deniedTools: ['read_clipboard', 'write_clipboard'],
|
|
165
|
+
requireApprovalFor: ['delete_file'],
|
|
166
|
+
},
|
|
167
|
+
};
|
|
168
|
+
// Temp workspace constants
|
|
169
|
+
exports.TEMP_WORKSPACE_ID = '__temp_workspace__';
|
|
170
|
+
exports.TEMP_WORKSPACE_NAME = 'Temporary Workspace';
|
|
171
|
+
/**
|
|
172
|
+
* Default agent roles that come pre-configured
|
|
173
|
+
*/
|
|
174
|
+
exports.DEFAULT_AGENT_ROLES = [
|
|
175
|
+
{
|
|
176
|
+
name: 'coder',
|
|
177
|
+
displayName: 'Coder',
|
|
178
|
+
description: 'Writes clean, efficient code and implements features',
|
|
179
|
+
icon: '💻',
|
|
180
|
+
color: '#3b82f6',
|
|
181
|
+
capabilities: ['code', 'document'],
|
|
182
|
+
autonomyLevel: 'specialist',
|
|
183
|
+
isSystem: true,
|
|
184
|
+
isActive: true,
|
|
185
|
+
sortOrder: 1,
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
name: 'reviewer',
|
|
189
|
+
displayName: 'Code Reviewer',
|
|
190
|
+
description: 'Reviews code for bugs, security issues, and best practices',
|
|
191
|
+
icon: '🔍',
|
|
192
|
+
color: '#8b5cf6',
|
|
193
|
+
capabilities: ['review', 'analyze'],
|
|
194
|
+
autonomyLevel: 'specialist',
|
|
195
|
+
isSystem: true,
|
|
196
|
+
isActive: true,
|
|
197
|
+
sortOrder: 2,
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
name: 'researcher',
|
|
201
|
+
displayName: 'Researcher',
|
|
202
|
+
description: 'Investigates solutions, analyzes options, and gathers information',
|
|
203
|
+
icon: '🔬',
|
|
204
|
+
color: '#10b981',
|
|
205
|
+
capabilities: ['research', 'analyze', 'document'],
|
|
206
|
+
autonomyLevel: 'specialist',
|
|
207
|
+
isSystem: true,
|
|
208
|
+
isActive: true,
|
|
209
|
+
sortOrder: 3,
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
name: 'tester',
|
|
213
|
+
displayName: 'Tester',
|
|
214
|
+
description: 'Writes and runs tests, finds edge cases and bugs',
|
|
215
|
+
icon: '🧪',
|
|
216
|
+
color: '#f59e0b',
|
|
217
|
+
capabilities: ['test', 'review'],
|
|
218
|
+
autonomyLevel: 'specialist',
|
|
219
|
+
isSystem: true,
|
|
220
|
+
isActive: true,
|
|
221
|
+
sortOrder: 4,
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
name: 'architect',
|
|
225
|
+
displayName: 'Architect',
|
|
226
|
+
description: 'Designs system architecture and plans implementation',
|
|
227
|
+
icon: '🏗️',
|
|
228
|
+
color: '#ec4899',
|
|
229
|
+
capabilities: ['plan', 'design', 'analyze'],
|
|
230
|
+
autonomyLevel: 'lead', // Can delegate tasks to other agents
|
|
231
|
+
isSystem: true,
|
|
232
|
+
isActive: true,
|
|
233
|
+
sortOrder: 5,
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
name: 'writer',
|
|
237
|
+
displayName: 'Content Writer',
|
|
238
|
+
description: 'Writes documentation, blog posts, and marketing copy',
|
|
239
|
+
icon: '✍️',
|
|
240
|
+
color: '#06b6d4',
|
|
241
|
+
capabilities: ['document', 'research'],
|
|
242
|
+
autonomyLevel: 'specialist',
|
|
243
|
+
isSystem: true,
|
|
244
|
+
isActive: true,
|
|
245
|
+
sortOrder: 6,
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
name: 'designer',
|
|
249
|
+
displayName: 'Designer',
|
|
250
|
+
description: 'Creates UI mockups, diagrams, and visual designs',
|
|
251
|
+
icon: '🎨',
|
|
252
|
+
color: '#d946ef',
|
|
253
|
+
capabilities: ['design', 'plan'],
|
|
254
|
+
autonomyLevel: 'specialist',
|
|
255
|
+
isSystem: true,
|
|
256
|
+
isActive: true,
|
|
257
|
+
sortOrder: 7,
|
|
258
|
+
},
|
|
259
|
+
// === General Purpose Agents ===
|
|
260
|
+
{
|
|
261
|
+
name: 'project_manager',
|
|
262
|
+
displayName: 'Project Manager',
|
|
263
|
+
description: 'Coordinates tasks, tracks progress, manages timelines and team workload',
|
|
264
|
+
icon: '📋',
|
|
265
|
+
color: '#0ea5e9',
|
|
266
|
+
capabilities: ['manage', 'plan', 'communicate'],
|
|
267
|
+
autonomyLevel: 'lead',
|
|
268
|
+
isSystem: true,
|
|
269
|
+
isActive: true,
|
|
270
|
+
sortOrder: 8,
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
name: 'product_manager',
|
|
274
|
+
displayName: 'Product Manager',
|
|
275
|
+
description: 'Defines features, writes user stories, prioritizes backlog',
|
|
276
|
+
icon: '🎯',
|
|
277
|
+
color: '#14b8a6',
|
|
278
|
+
capabilities: ['product', 'plan', 'research'],
|
|
279
|
+
autonomyLevel: 'lead',
|
|
280
|
+
isSystem: true,
|
|
281
|
+
isActive: true,
|
|
282
|
+
sortOrder: 9,
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
name: 'data_analyst',
|
|
286
|
+
displayName: 'Data Analyst',
|
|
287
|
+
description: 'Analyzes data, creates reports, finds insights and trends',
|
|
288
|
+
icon: '📊',
|
|
289
|
+
color: '#6366f1',
|
|
290
|
+
capabilities: ['analyze', 'research', 'document'],
|
|
291
|
+
autonomyLevel: 'specialist',
|
|
292
|
+
isSystem: true,
|
|
293
|
+
isActive: true,
|
|
294
|
+
sortOrder: 10,
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
name: 'marketing',
|
|
298
|
+
displayName: 'Marketing Specialist',
|
|
299
|
+
description: 'Creates campaigns, social media content, growth strategies',
|
|
300
|
+
icon: '📣',
|
|
301
|
+
color: '#f43f5e',
|
|
302
|
+
capabilities: ['market', 'write', 'research'],
|
|
303
|
+
autonomyLevel: 'specialist',
|
|
304
|
+
isSystem: true,
|
|
305
|
+
isActive: true,
|
|
306
|
+
sortOrder: 11,
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
name: 'support',
|
|
310
|
+
displayName: 'Support Agent',
|
|
311
|
+
description: 'Handles user queries, troubleshooting, customer communication',
|
|
312
|
+
icon: '💬',
|
|
313
|
+
color: '#22c55e',
|
|
314
|
+
capabilities: ['communicate', 'research', 'document'],
|
|
315
|
+
autonomyLevel: 'specialist',
|
|
316
|
+
isSystem: true,
|
|
317
|
+
isActive: true,
|
|
318
|
+
sortOrder: 12,
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
name: 'devops',
|
|
322
|
+
displayName: 'DevOps Engineer',
|
|
323
|
+
description: 'Manages CI/CD pipelines, deployment, infrastructure and monitoring',
|
|
324
|
+
icon: '⚙️',
|
|
325
|
+
color: '#f97316',
|
|
326
|
+
capabilities: ['ops', 'code', 'security'],
|
|
327
|
+
autonomyLevel: 'specialist',
|
|
328
|
+
isSystem: true,
|
|
329
|
+
isActive: true,
|
|
330
|
+
sortOrder: 13,
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
name: 'security_analyst',
|
|
334
|
+
displayName: 'Security Analyst',
|
|
335
|
+
description: 'Performs security audits, vulnerability assessments, compliance checks',
|
|
336
|
+
icon: '🔒',
|
|
337
|
+
color: '#ef4444',
|
|
338
|
+
capabilities: ['security', 'review', 'analyze'],
|
|
339
|
+
autonomyLevel: 'specialist',
|
|
340
|
+
isSystem: true,
|
|
341
|
+
isActive: true,
|
|
342
|
+
sortOrder: 14,
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
name: 'assistant',
|
|
346
|
+
displayName: 'General Assistant',
|
|
347
|
+
description: 'Versatile helper for miscellaneous tasks, scheduling, and coordination',
|
|
348
|
+
icon: '🤖',
|
|
349
|
+
color: '#64748b',
|
|
350
|
+
capabilities: ['communicate', 'research', 'manage'],
|
|
351
|
+
autonomyLevel: 'intern',
|
|
352
|
+
isSystem: true,
|
|
353
|
+
isActive: true,
|
|
354
|
+
sortOrder: 15,
|
|
355
|
+
},
|
|
356
|
+
];
|
|
357
|
+
/**
|
|
358
|
+
* Board column definitions for UI
|
|
359
|
+
*/
|
|
360
|
+
exports.BOARD_COLUMNS = [
|
|
361
|
+
{ id: 'backlog', label: 'Backlog', color: '#6b7280' },
|
|
362
|
+
{ id: 'todo', label: 'To Do', color: '#3b82f6' },
|
|
363
|
+
{ id: 'in_progress', label: 'In Progress', color: '#f59e0b' },
|
|
364
|
+
{ id: 'review', label: 'Review', color: '#8b5cf6' },
|
|
365
|
+
{ id: 'done', label: 'Done', color: '#10b981' },
|
|
366
|
+
];
|
|
367
|
+
// IPC Channel names
|
|
368
|
+
exports.IPC_CHANNELS = {
|
|
369
|
+
// Task operations
|
|
370
|
+
TASK_CREATE: 'task:create',
|
|
371
|
+
TASK_GET: 'task:get',
|
|
372
|
+
TASK_LIST: 'task:list',
|
|
373
|
+
TASK_CANCEL: 'task:cancel',
|
|
374
|
+
TASK_PAUSE: 'task:pause',
|
|
375
|
+
TASK_RESUME: 'task:resume',
|
|
376
|
+
TASK_RENAME: 'task:rename',
|
|
377
|
+
TASK_DELETE: 'task:delete',
|
|
378
|
+
// Sub-Agent / Parallel Agent operations
|
|
379
|
+
AGENT_GET_CHILDREN: 'agent:getChildren', // Get child tasks for a parent
|
|
380
|
+
AGENT_GET_STATUS: 'agent:getStatus', // Get status of spawned agents
|
|
381
|
+
// Agent Role / Squad operations
|
|
382
|
+
AGENT_ROLE_LIST: 'agentRole:list',
|
|
383
|
+
AGENT_ROLE_GET: 'agentRole:get',
|
|
384
|
+
AGENT_ROLE_CREATE: 'agentRole:create',
|
|
385
|
+
AGENT_ROLE_UPDATE: 'agentRole:update',
|
|
386
|
+
AGENT_ROLE_DELETE: 'agentRole:delete',
|
|
387
|
+
AGENT_ROLE_ASSIGN_TO_TASK: 'agentRole:assignToTask',
|
|
388
|
+
AGENT_ROLE_GET_DEFAULTS: 'agentRole:getDefaults',
|
|
389
|
+
AGENT_ROLE_SEED_DEFAULTS: 'agentRole:seedDefaults',
|
|
390
|
+
AGENT_ROLE_SYNC_DEFAULTS: 'agentRole:syncDefaults',
|
|
391
|
+
// Activity Feed
|
|
392
|
+
ACTIVITY_LIST: 'activity:list',
|
|
393
|
+
ACTIVITY_CREATE: 'activity:create',
|
|
394
|
+
ACTIVITY_MARK_READ: 'activity:markRead',
|
|
395
|
+
ACTIVITY_MARK_ALL_READ: 'activity:markAllRead',
|
|
396
|
+
ACTIVITY_PIN: 'activity:pin',
|
|
397
|
+
ACTIVITY_DELETE: 'activity:delete',
|
|
398
|
+
ACTIVITY_EVENT: 'activity:event',
|
|
399
|
+
// @Mention System
|
|
400
|
+
MENTION_CREATE: 'mention:create',
|
|
401
|
+
MENTION_LIST: 'mention:list',
|
|
402
|
+
MENTION_ACKNOWLEDGE: 'mention:acknowledge',
|
|
403
|
+
MENTION_COMPLETE: 'mention:complete',
|
|
404
|
+
MENTION_DISMISS: 'mention:dismiss',
|
|
405
|
+
MENTION_EVENT: 'mention:event',
|
|
406
|
+
// Mission Control - Heartbeat System
|
|
407
|
+
HEARTBEAT_GET_CONFIG: 'heartbeat:getConfig',
|
|
408
|
+
HEARTBEAT_UPDATE_CONFIG: 'heartbeat:updateConfig',
|
|
409
|
+
HEARTBEAT_TRIGGER: 'heartbeat:trigger',
|
|
410
|
+
HEARTBEAT_GET_STATUS: 'heartbeat:getStatus',
|
|
411
|
+
HEARTBEAT_GET_ALL_STATUS: 'heartbeat:getAllStatus',
|
|
412
|
+
HEARTBEAT_EVENT: 'heartbeat:event',
|
|
413
|
+
// Mission Control - Task Subscriptions
|
|
414
|
+
SUBSCRIPTION_LIST: 'subscription:list',
|
|
415
|
+
SUBSCRIPTION_ADD: 'subscription:add',
|
|
416
|
+
SUBSCRIPTION_REMOVE: 'subscription:remove',
|
|
417
|
+
SUBSCRIPTION_GET_SUBSCRIBERS: 'subscription:getSubscribers',
|
|
418
|
+
SUBSCRIPTION_GET_FOR_AGENT: 'subscription:getForAgent',
|
|
419
|
+
SUBSCRIPTION_EVENT: 'subscription:event',
|
|
420
|
+
// Mission Control - Standup Reports
|
|
421
|
+
STANDUP_GENERATE: 'standup:generate',
|
|
422
|
+
STANDUP_GET_LATEST: 'standup:getLatest',
|
|
423
|
+
STANDUP_LIST: 'standup:list',
|
|
424
|
+
STANDUP_DELIVER: 'standup:deliver',
|
|
425
|
+
// Task Board (Kanban)
|
|
426
|
+
TASK_MOVE_COLUMN: 'task:moveColumn',
|
|
427
|
+
TASK_SET_PRIORITY: 'task:setPriority',
|
|
428
|
+
TASK_SET_DUE_DATE: 'task:setDueDate',
|
|
429
|
+
TASK_SET_ESTIMATE: 'task:setEstimate',
|
|
430
|
+
TASK_ADD_LABEL: 'task:addLabel',
|
|
431
|
+
TASK_REMOVE_LABEL: 'task:removeLabel',
|
|
432
|
+
TASK_BOARD_EVENT: 'taskBoard:event',
|
|
433
|
+
// Task Labels
|
|
434
|
+
TASK_LABEL_LIST: 'taskLabel:list',
|
|
435
|
+
TASK_LABEL_CREATE: 'taskLabel:create',
|
|
436
|
+
TASK_LABEL_UPDATE: 'taskLabel:update',
|
|
437
|
+
TASK_LABEL_DELETE: 'taskLabel:delete',
|
|
438
|
+
// Agent Working State
|
|
439
|
+
WORKING_STATE_GET: 'workingState:get',
|
|
440
|
+
WORKING_STATE_GET_CURRENT: 'workingState:getCurrent',
|
|
441
|
+
WORKING_STATE_UPDATE: 'workingState:update',
|
|
442
|
+
WORKING_STATE_HISTORY: 'workingState:history',
|
|
443
|
+
WORKING_STATE_RESTORE: 'workingState:restore',
|
|
444
|
+
WORKING_STATE_DELETE: 'workingState:delete',
|
|
445
|
+
WORKING_STATE_LIST_FOR_TASK: 'workingState:listForTask',
|
|
446
|
+
// Context Policy (per-context security DM vs group)
|
|
447
|
+
CONTEXT_POLICY_GET: 'contextPolicy:get',
|
|
448
|
+
CONTEXT_POLICY_GET_FOR_CHAT: 'contextPolicy:getForChat',
|
|
449
|
+
CONTEXT_POLICY_LIST: 'contextPolicy:list',
|
|
450
|
+
CONTEXT_POLICY_UPDATE: 'contextPolicy:update',
|
|
451
|
+
CONTEXT_POLICY_DELETE: 'contextPolicy:delete',
|
|
452
|
+
CONTEXT_POLICY_CREATE_DEFAULTS: 'contextPolicy:createDefaults',
|
|
453
|
+
CONTEXT_POLICY_IS_TOOL_ALLOWED: 'contextPolicy:isToolAllowed',
|
|
454
|
+
// Task events (streaming and history)
|
|
455
|
+
TASK_EVENT: 'task:event',
|
|
456
|
+
TASK_EVENTS: 'task:events',
|
|
457
|
+
TASK_SEND_MESSAGE: 'task:sendMessage',
|
|
458
|
+
TASK_SEND_STDIN: 'task:sendStdin', // Send stdin input to running command
|
|
459
|
+
TASK_KILL_COMMAND: 'task:killCommand', // Kill running command (Ctrl+C)
|
|
460
|
+
// Workspace operations
|
|
461
|
+
WORKSPACE_SELECT: 'workspace:select',
|
|
462
|
+
WORKSPACE_LIST: 'workspace:list',
|
|
463
|
+
WORKSPACE_CREATE: 'workspace:create',
|
|
464
|
+
WORKSPACE_UPDATE_PERMISSIONS: 'workspace:updatePermissions',
|
|
465
|
+
WORKSPACE_GET_TEMP: 'workspace:getTemp', // Get or create temp workspace
|
|
466
|
+
// Approval operations
|
|
467
|
+
APPROVAL_RESPOND: 'approval:respond',
|
|
468
|
+
// Artifact operations
|
|
469
|
+
ARTIFACT_LIST: 'artifact:list',
|
|
470
|
+
ARTIFACT_PREVIEW: 'artifact:preview',
|
|
471
|
+
// Skills
|
|
472
|
+
SKILL_LIST: 'skill:list',
|
|
473
|
+
SKILL_GET: 'skill:get',
|
|
474
|
+
// Custom User Skills
|
|
475
|
+
CUSTOM_SKILL_LIST: 'customSkill:list',
|
|
476
|
+
CUSTOM_SKILL_LIST_TASKS: 'customSkill:listTasks', // List only task skills (for dropdown)
|
|
477
|
+
CUSTOM_SKILL_LIST_GUIDELINES: 'customSkill:listGuidelines', // List only guideline skills (for settings)
|
|
478
|
+
CUSTOM_SKILL_GET: 'customSkill:get',
|
|
479
|
+
CUSTOM_SKILL_CREATE: 'customSkill:create',
|
|
480
|
+
CUSTOM_SKILL_UPDATE: 'customSkill:update',
|
|
481
|
+
CUSTOM_SKILL_DELETE: 'customSkill:delete',
|
|
482
|
+
CUSTOM_SKILL_RELOAD: 'customSkill:reload',
|
|
483
|
+
CUSTOM_SKILL_OPEN_FOLDER: 'customSkill:openFolder',
|
|
484
|
+
// Skill Registry (SkillHub)
|
|
485
|
+
SKILL_REGISTRY_SEARCH: 'skillRegistry:search',
|
|
486
|
+
SKILL_REGISTRY_GET_DETAILS: 'skillRegistry:getDetails',
|
|
487
|
+
SKILL_REGISTRY_INSTALL: 'skillRegistry:install',
|
|
488
|
+
SKILL_REGISTRY_UPDATE: 'skillRegistry:update',
|
|
489
|
+
SKILL_REGISTRY_UPDATE_ALL: 'skillRegistry:updateAll',
|
|
490
|
+
SKILL_REGISTRY_UNINSTALL: 'skillRegistry:uninstall',
|
|
491
|
+
SKILL_REGISTRY_LIST_MANAGED: 'skillRegistry:listManaged',
|
|
492
|
+
SKILL_REGISTRY_CHECK_UPDATES: 'skillRegistry:checkUpdates',
|
|
493
|
+
SKILL_REGISTRY_GET_STATUS: 'skillRegistry:getStatus',
|
|
494
|
+
SKILL_REGISTRY_GET_ELIGIBLE: 'skillRegistry:getEligible',
|
|
495
|
+
// LLM Settings
|
|
496
|
+
LLM_GET_SETTINGS: 'llm:getSettings',
|
|
497
|
+
LLM_SAVE_SETTINGS: 'llm:saveSettings',
|
|
498
|
+
LLM_TEST_PROVIDER: 'llm:testProvider',
|
|
499
|
+
LLM_GET_MODELS: 'llm:getModels',
|
|
500
|
+
LLM_GET_CONFIG_STATUS: 'llm:getConfigStatus',
|
|
501
|
+
LLM_SET_MODEL: 'llm:setModel',
|
|
502
|
+
LLM_GET_OLLAMA_MODELS: 'llm:getOllamaModels',
|
|
503
|
+
LLM_GET_GEMINI_MODELS: 'llm:getGeminiModels',
|
|
504
|
+
LLM_GET_OPENROUTER_MODELS: 'llm:getOpenRouterModels',
|
|
505
|
+
LLM_GET_OPENAI_MODELS: 'llm:getOpenAIModels',
|
|
506
|
+
LLM_OPENAI_OAUTH_START: 'llm:openaiOAuthStart',
|
|
507
|
+
LLM_OPENAI_OAUTH_LOGOUT: 'llm:openaiOAuthLogout',
|
|
508
|
+
LLM_GET_BEDROCK_MODELS: 'llm:getBedrockModels',
|
|
509
|
+
// Gateway / Channels
|
|
510
|
+
GATEWAY_GET_CHANNELS: 'gateway:getChannels',
|
|
511
|
+
GATEWAY_ADD_CHANNEL: 'gateway:addChannel',
|
|
512
|
+
GATEWAY_UPDATE_CHANNEL: 'gateway:updateChannel',
|
|
513
|
+
GATEWAY_REMOVE_CHANNEL: 'gateway:removeChannel',
|
|
514
|
+
GATEWAY_ENABLE_CHANNEL: 'gateway:enableChannel',
|
|
515
|
+
GATEWAY_DISABLE_CHANNEL: 'gateway:disableChannel',
|
|
516
|
+
GATEWAY_TEST_CHANNEL: 'gateway:testChannel',
|
|
517
|
+
GATEWAY_GET_USERS: 'gateway:getUsers',
|
|
518
|
+
GATEWAY_GRANT_ACCESS: 'gateway:grantAccess',
|
|
519
|
+
GATEWAY_REVOKE_ACCESS: 'gateway:revokeAccess',
|
|
520
|
+
GATEWAY_GENERATE_PAIRING: 'gateway:generatePairing',
|
|
521
|
+
// Search Settings
|
|
522
|
+
SEARCH_GET_SETTINGS: 'search:getSettings',
|
|
523
|
+
SEARCH_SAVE_SETTINGS: 'search:saveSettings',
|
|
524
|
+
SEARCH_GET_CONFIG_STATUS: 'search:getConfigStatus',
|
|
525
|
+
SEARCH_TEST_PROVIDER: 'search:testProvider',
|
|
526
|
+
// X/Twitter Settings
|
|
527
|
+
X_GET_SETTINGS: 'x:getSettings',
|
|
528
|
+
X_SAVE_SETTINGS: 'x:saveSettings',
|
|
529
|
+
X_TEST_CONNECTION: 'x:testConnection',
|
|
530
|
+
X_GET_STATUS: 'x:getStatus',
|
|
531
|
+
// App Updates
|
|
532
|
+
APP_CHECK_UPDATES: 'app:checkUpdates',
|
|
533
|
+
APP_DOWNLOAD_UPDATE: 'app:downloadUpdate',
|
|
534
|
+
APP_INSTALL_UPDATE: 'app:installUpdate',
|
|
535
|
+
APP_GET_VERSION: 'app:getVersion',
|
|
536
|
+
APP_UPDATE_AVAILABLE: 'app:updateAvailable',
|
|
537
|
+
APP_UPDATE_PROGRESS: 'app:updateProgress',
|
|
538
|
+
APP_UPDATE_DOWNLOADED: 'app:updateDownloaded',
|
|
539
|
+
APP_UPDATE_ERROR: 'app:updateError',
|
|
540
|
+
// Guardrails
|
|
541
|
+
GUARDRAIL_GET_SETTINGS: 'guardrail:getSettings',
|
|
542
|
+
GUARDRAIL_SAVE_SETTINGS: 'guardrail:saveSettings',
|
|
543
|
+
GUARDRAIL_GET_DEFAULTS: 'guardrail:getDefaults',
|
|
544
|
+
// Appearance
|
|
545
|
+
APPEARANCE_GET_SETTINGS: 'appearance:getSettings',
|
|
546
|
+
APPEARANCE_SAVE_SETTINGS: 'appearance:saveSettings',
|
|
547
|
+
// Agent Personality
|
|
548
|
+
PERSONALITY_GET_SETTINGS: 'personality:getSettings',
|
|
549
|
+
PERSONALITY_SAVE_SETTINGS: 'personality:saveSettings',
|
|
550
|
+
PERSONALITY_GET_DEFINITIONS: 'personality:getDefinitions',
|
|
551
|
+
PERSONALITY_GET_PERSONAS: 'personality:getPersonas',
|
|
552
|
+
PERSONALITY_GET_RELATIONSHIP_STATS: 'personality:getRelationshipStats',
|
|
553
|
+
PERSONALITY_SET_ACTIVE: 'personality:setActive',
|
|
554
|
+
PERSONALITY_SET_PERSONA: 'personality:setPersona',
|
|
555
|
+
PERSONALITY_RESET: 'personality:reset',
|
|
556
|
+
PERSONALITY_SETTINGS_CHANGED: 'personality:settingsChanged', // Event sent to UI when settings change
|
|
557
|
+
// Task Queue
|
|
558
|
+
QUEUE_GET_STATUS: 'queue:getStatus',
|
|
559
|
+
QUEUE_GET_SETTINGS: 'queue:getSettings',
|
|
560
|
+
QUEUE_SAVE_SETTINGS: 'queue:saveSettings',
|
|
561
|
+
QUEUE_CLEAR: 'queue:clear',
|
|
562
|
+
QUEUE_UPDATE: 'queue:update',
|
|
563
|
+
// MCP (Model Context Protocol)
|
|
564
|
+
MCP_GET_SETTINGS: 'mcp:getSettings',
|
|
565
|
+
MCP_SAVE_SETTINGS: 'mcp:saveSettings',
|
|
566
|
+
MCP_GET_SERVERS: 'mcp:getServers',
|
|
567
|
+
MCP_ADD_SERVER: 'mcp:addServer',
|
|
568
|
+
MCP_UPDATE_SERVER: 'mcp:updateServer',
|
|
569
|
+
MCP_REMOVE_SERVER: 'mcp:removeServer',
|
|
570
|
+
MCP_CONNECT_SERVER: 'mcp:connectServer',
|
|
571
|
+
MCP_DISCONNECT_SERVER: 'mcp:disconnectServer',
|
|
572
|
+
MCP_GET_STATUS: 'mcp:getStatus',
|
|
573
|
+
MCP_GET_SERVER_TOOLS: 'mcp:getServerTools',
|
|
574
|
+
MCP_TEST_SERVER: 'mcp:testServer',
|
|
575
|
+
// MCP Registry
|
|
576
|
+
MCP_REGISTRY_FETCH: 'mcp:registryFetch',
|
|
577
|
+
MCP_REGISTRY_SEARCH: 'mcp:registrySearch',
|
|
578
|
+
MCP_REGISTRY_INSTALL: 'mcp:registryInstall',
|
|
579
|
+
MCP_REGISTRY_UNINSTALL: 'mcp:registryUninstall',
|
|
580
|
+
MCP_REGISTRY_CHECK_UPDATES: 'mcp:registryCheckUpdates',
|
|
581
|
+
MCP_REGISTRY_UPDATE_SERVER: 'mcp:registryUpdateServer',
|
|
582
|
+
// MCP Host
|
|
583
|
+
MCP_HOST_START: 'mcp:hostStart',
|
|
584
|
+
MCP_HOST_STOP: 'mcp:hostStop',
|
|
585
|
+
MCP_HOST_GET_STATUS: 'mcp:hostGetStatus',
|
|
586
|
+
// MCP Events
|
|
587
|
+
MCP_SERVER_STATUS_CHANGE: 'mcp:serverStatusChange',
|
|
588
|
+
// Built-in Tools Settings
|
|
589
|
+
BUILTIN_TOOLS_GET_SETTINGS: 'builtinTools:getSettings',
|
|
590
|
+
BUILTIN_TOOLS_SAVE_SETTINGS: 'builtinTools:saveSettings',
|
|
591
|
+
BUILTIN_TOOLS_GET_CATEGORIES: 'builtinTools:getCategories',
|
|
592
|
+
// Tray (Menu Bar)
|
|
593
|
+
TRAY_GET_SETTINGS: 'tray:getSettings',
|
|
594
|
+
TRAY_SAVE_SETTINGS: 'tray:saveSettings',
|
|
595
|
+
TRAY_NEW_TASK: 'tray:newTask',
|
|
596
|
+
TRAY_SELECT_WORKSPACE: 'tray:selectWorkspace',
|
|
597
|
+
TRAY_OPEN_SETTINGS: 'tray:openSettings',
|
|
598
|
+
TRAY_OPEN_ABOUT: 'tray:openAbout',
|
|
599
|
+
TRAY_CHECK_UPDATES: 'tray:checkUpdates',
|
|
600
|
+
// Cron (Scheduled Tasks)
|
|
601
|
+
CRON_GET_STATUS: 'cron:getStatus',
|
|
602
|
+
CRON_LIST_JOBS: 'cron:listJobs',
|
|
603
|
+
CRON_GET_JOB: 'cron:getJob',
|
|
604
|
+
CRON_ADD_JOB: 'cron:addJob',
|
|
605
|
+
CRON_UPDATE_JOB: 'cron:updateJob',
|
|
606
|
+
CRON_REMOVE_JOB: 'cron:removeJob',
|
|
607
|
+
CRON_RUN_JOB: 'cron:runJob',
|
|
608
|
+
CRON_EVENT: 'cron:event',
|
|
609
|
+
// Notifications
|
|
610
|
+
NOTIFICATION_LIST: 'notification:list',
|
|
611
|
+
NOTIFICATION_ADD: 'notification:add',
|
|
612
|
+
NOTIFICATION_MARK_READ: 'notification:markRead',
|
|
613
|
+
NOTIFICATION_MARK_ALL_READ: 'notification:markAllRead',
|
|
614
|
+
NOTIFICATION_DELETE: 'notification:delete',
|
|
615
|
+
NOTIFICATION_DELETE_ALL: 'notification:deleteAll',
|
|
616
|
+
NOTIFICATION_EVENT: 'notification:event',
|
|
617
|
+
// Hooks (Webhooks & Gmail Pub/Sub)
|
|
618
|
+
HOOKS_GET_SETTINGS: 'hooks:getSettings',
|
|
619
|
+
HOOKS_SAVE_SETTINGS: 'hooks:saveSettings',
|
|
620
|
+
HOOKS_ENABLE: 'hooks:enable',
|
|
621
|
+
HOOKS_DISABLE: 'hooks:disable',
|
|
622
|
+
HOOKS_REGENERATE_TOKEN: 'hooks:regenerateToken',
|
|
623
|
+
HOOKS_GET_STATUS: 'hooks:getStatus',
|
|
624
|
+
HOOKS_ADD_MAPPING: 'hooks:addMapping',
|
|
625
|
+
HOOKS_REMOVE_MAPPING: 'hooks:removeMapping',
|
|
626
|
+
HOOKS_CONFIGURE_GMAIL: 'hooks:configureGmail',
|
|
627
|
+
HOOKS_GET_GMAIL_STATUS: 'hooks:getGmailStatus',
|
|
628
|
+
HOOKS_START_GMAIL_WATCHER: 'hooks:startGmailWatcher',
|
|
629
|
+
HOOKS_STOP_GMAIL_WATCHER: 'hooks:stopGmailWatcher',
|
|
630
|
+
HOOKS_EVENT: 'hooks:event',
|
|
631
|
+
// Control Plane (WebSocket Gateway)
|
|
632
|
+
CONTROL_PLANE_GET_SETTINGS: 'controlPlane:getSettings',
|
|
633
|
+
CONTROL_PLANE_SAVE_SETTINGS: 'controlPlane:saveSettings',
|
|
634
|
+
CONTROL_PLANE_ENABLE: 'controlPlane:enable',
|
|
635
|
+
CONTROL_PLANE_DISABLE: 'controlPlane:disable',
|
|
636
|
+
CONTROL_PLANE_START: 'controlPlane:start',
|
|
637
|
+
CONTROL_PLANE_STOP: 'controlPlane:stop',
|
|
638
|
+
CONTROL_PLANE_GET_STATUS: 'controlPlane:getStatus',
|
|
639
|
+
CONTROL_PLANE_REGENERATE_TOKEN: 'controlPlane:regenerateToken',
|
|
640
|
+
CONTROL_PLANE_EVENT: 'controlPlane:event',
|
|
641
|
+
// Tailscale Integration
|
|
642
|
+
TAILSCALE_GET_STATUS: 'tailscale:getStatus',
|
|
643
|
+
TAILSCALE_CHECK_AVAILABILITY: 'tailscale:checkAvailability',
|
|
644
|
+
TAILSCALE_SET_MODE: 'tailscale:setMode',
|
|
645
|
+
// Remote Gateway (connecting to external Control Plane)
|
|
646
|
+
REMOTE_GATEWAY_CONNECT: 'remoteGateway:connect',
|
|
647
|
+
REMOTE_GATEWAY_DISCONNECT: 'remoteGateway:disconnect',
|
|
648
|
+
REMOTE_GATEWAY_GET_STATUS: 'remoteGateway:getStatus',
|
|
649
|
+
REMOTE_GATEWAY_SAVE_CONFIG: 'remoteGateway:saveConfig',
|
|
650
|
+
REMOTE_GATEWAY_TEST_CONNECTION: 'remoteGateway:testConnection',
|
|
651
|
+
REMOTE_GATEWAY_EVENT: 'remoteGateway:event',
|
|
652
|
+
// SSH Tunnel (for Remote Gateway connection)
|
|
653
|
+
SSH_TUNNEL_CONNECT: 'sshTunnel:connect',
|
|
654
|
+
SSH_TUNNEL_DISCONNECT: 'sshTunnel:disconnect',
|
|
655
|
+
SSH_TUNNEL_GET_STATUS: 'sshTunnel:getStatus',
|
|
656
|
+
SSH_TUNNEL_SAVE_CONFIG: 'sshTunnel:saveConfig',
|
|
657
|
+
SSH_TUNNEL_TEST_CONNECTION: 'sshTunnel:testConnection',
|
|
658
|
+
SSH_TUNNEL_EVENT: 'sshTunnel:event',
|
|
659
|
+
// Live Canvas (Agent-driven visual workspace)
|
|
660
|
+
CANVAS_CREATE: 'canvas:create',
|
|
661
|
+
CANVAS_GET_SESSION: 'canvas:getSession',
|
|
662
|
+
CANVAS_LIST_SESSIONS: 'canvas:listSessions',
|
|
663
|
+
CANVAS_SHOW: 'canvas:show',
|
|
664
|
+
CANVAS_HIDE: 'canvas:hide',
|
|
665
|
+
CANVAS_CLOSE: 'canvas:close',
|
|
666
|
+
CANVAS_PUSH: 'canvas:push',
|
|
667
|
+
CANVAS_EVAL: 'canvas:eval',
|
|
668
|
+
CANVAS_SNAPSHOT: 'canvas:snapshot',
|
|
669
|
+
CANVAS_A2UI_ACTION: 'canvas:a2uiAction',
|
|
670
|
+
CANVAS_EVENT: 'canvas:event',
|
|
671
|
+
CANVAS_EXPORT_HTML: 'canvas:exportHTML',
|
|
672
|
+
CANVAS_EXPORT_TO_FOLDER: 'canvas:exportToFolder',
|
|
673
|
+
CANVAS_OPEN_IN_BROWSER: 'canvas:openInBrowser',
|
|
674
|
+
CANVAS_GET_SESSION_DIR: 'canvas:getSessionDir',
|
|
675
|
+
// Mobile Companion Nodes
|
|
676
|
+
NODE_LIST: 'node:list',
|
|
677
|
+
NODE_GET: 'node:get',
|
|
678
|
+
NODE_INVOKE: 'node:invoke',
|
|
679
|
+
NODE_EVENT: 'node:event',
|
|
680
|
+
// Memory System (Cross-Session Context)
|
|
681
|
+
MEMORY_GET_SETTINGS: 'memory:getSettings',
|
|
682
|
+
MEMORY_SAVE_SETTINGS: 'memory:saveSettings',
|
|
683
|
+
MEMORY_SEARCH: 'memory:search',
|
|
684
|
+
MEMORY_GET_TIMELINE: 'memory:getTimeline',
|
|
685
|
+
MEMORY_GET_DETAILS: 'memory:getDetails',
|
|
686
|
+
MEMORY_GET_RECENT: 'memory:getRecent',
|
|
687
|
+
MEMORY_GET_STATS: 'memory:getStats',
|
|
688
|
+
MEMORY_CLEAR: 'memory:clear',
|
|
689
|
+
MEMORY_EVENT: 'memory:event',
|
|
690
|
+
// Migration Status (for showing one-time notifications after app rename)
|
|
691
|
+
MIGRATION_GET_STATUS: 'migration:getStatus',
|
|
692
|
+
MIGRATION_DISMISS_NOTIFICATION: 'migration:dismissNotification',
|
|
693
|
+
// Extensions / Plugins
|
|
694
|
+
EXTENSIONS_LIST: 'extensions:list',
|
|
695
|
+
EXTENSIONS_GET: 'extensions:get',
|
|
696
|
+
EXTENSIONS_ENABLE: 'extensions:enable',
|
|
697
|
+
EXTENSIONS_DISABLE: 'extensions:disable',
|
|
698
|
+
EXTENSIONS_RELOAD: 'extensions:reload',
|
|
699
|
+
EXTENSIONS_GET_CONFIG: 'extensions:getConfig',
|
|
700
|
+
EXTENSIONS_SET_CONFIG: 'extensions:setConfig',
|
|
701
|
+
EXTENSIONS_DISCOVER: 'extensions:discover',
|
|
702
|
+
// Webhook Tunnel
|
|
703
|
+
TUNNEL_GET_STATUS: 'tunnel:getStatus',
|
|
704
|
+
TUNNEL_START: 'tunnel:start',
|
|
705
|
+
TUNNEL_STOP: 'tunnel:stop',
|
|
706
|
+
TUNNEL_GET_CONFIG: 'tunnel:getConfig',
|
|
707
|
+
TUNNEL_SET_CONFIG: 'tunnel:setConfig',
|
|
708
|
+
// Voice Mode (TTS/STT)
|
|
709
|
+
VOICE_GET_SETTINGS: 'voice:getSettings',
|
|
710
|
+
VOICE_SAVE_SETTINGS: 'voice:saveSettings',
|
|
711
|
+
VOICE_GET_STATE: 'voice:getState',
|
|
712
|
+
VOICE_SPEAK: 'voice:speak',
|
|
713
|
+
VOICE_STOP_SPEAKING: 'voice:stopSpeaking',
|
|
714
|
+
VOICE_TRANSCRIBE: 'voice:transcribe',
|
|
715
|
+
VOICE_GET_ELEVENLABS_VOICES: 'voice:getElevenLabsVoices',
|
|
716
|
+
VOICE_TEST_ELEVENLABS: 'voice:testElevenLabs',
|
|
717
|
+
VOICE_TEST_OPENAI: 'voice:testOpenAI',
|
|
718
|
+
VOICE_TEST_AZURE: 'voice:testAzure',
|
|
719
|
+
VOICE_EVENT: 'voice:event',
|
|
720
|
+
};
|
|
721
|
+
// Default trusted command patterns (glob-like patterns)
|
|
722
|
+
exports.DEFAULT_TRUSTED_COMMAND_PATTERNS = [
|
|
723
|
+
'npm test*',
|
|
724
|
+
'npm run *',
|
|
725
|
+
'npm install*',
|
|
726
|
+
'npm ci',
|
|
727
|
+
'yarn test*',
|
|
728
|
+
'yarn run *',
|
|
729
|
+
'yarn install*',
|
|
730
|
+
'yarn add *',
|
|
731
|
+
'pnpm test*',
|
|
732
|
+
'pnpm run *',
|
|
733
|
+
'pnpm install*',
|
|
734
|
+
'git status*',
|
|
735
|
+
'git diff*',
|
|
736
|
+
'git log*',
|
|
737
|
+
'git branch*',
|
|
738
|
+
'git show*',
|
|
739
|
+
'git ls-files*',
|
|
740
|
+
'ls *',
|
|
741
|
+
'ls',
|
|
742
|
+
'pwd',
|
|
743
|
+
'date',
|
|
744
|
+
'date *',
|
|
745
|
+
'whoami',
|
|
746
|
+
'hostname',
|
|
747
|
+
'uname *',
|
|
748
|
+
'cat *',
|
|
749
|
+
'head *',
|
|
750
|
+
'tail *',
|
|
751
|
+
'wc *',
|
|
752
|
+
'grep *',
|
|
753
|
+
'find *',
|
|
754
|
+
'echo *',
|
|
755
|
+
'which *',
|
|
756
|
+
'type *',
|
|
757
|
+
'file *',
|
|
758
|
+
'tree *',
|
|
759
|
+
'node --version',
|
|
760
|
+
'npm --version',
|
|
761
|
+
'python --version',
|
|
762
|
+
'python3 --version',
|
|
763
|
+
'tsc --version',
|
|
764
|
+
'cargo --version',
|
|
765
|
+
'go version',
|
|
766
|
+
'rustc --version',
|
|
767
|
+
];
|
|
768
|
+
// Default dangerous command patterns (regex)
|
|
769
|
+
exports.DEFAULT_BLOCKED_COMMAND_PATTERNS = [
|
|
770
|
+
'sudo',
|
|
771
|
+
'rm\\s+-rf\\s+/',
|
|
772
|
+
'rm\\s+-rf\\s+~',
|
|
773
|
+
'rm\\s+-rf\\s+/\\*',
|
|
774
|
+
'rm\\s+-rf\\s+\\*',
|
|
775
|
+
'mkfs',
|
|
776
|
+
'dd\\s+if=',
|
|
777
|
+
':\\(\\)\\{\\s*:\\|:\\&\\s*\\};:', // Fork bomb
|
|
778
|
+
'curl.*\\|.*bash',
|
|
779
|
+
'wget.*\\|.*bash',
|
|
780
|
+
'curl.*\\|.*sh',
|
|
781
|
+
'wget.*\\|.*sh',
|
|
782
|
+
'chmod\\s+777',
|
|
783
|
+
'>\\s*/dev/sd',
|
|
784
|
+
'mv\\s+/\\*',
|
|
785
|
+
'format\\s+c:',
|
|
786
|
+
'del\\s+/f\\s+/s\\s+/q',
|
|
787
|
+
];
|
|
788
|
+
exports.DEFAULT_QUEUE_SETTINGS = {
|
|
789
|
+
maxConcurrentTasks: 5,
|
|
790
|
+
taskTimeoutMinutes: 30,
|
|
791
|
+
};
|
|
792
|
+
/**
|
|
793
|
+
* Built-in personality definitions
|
|
794
|
+
*/
|
|
795
|
+
exports.PERSONALITY_DEFINITIONS = [
|
|
796
|
+
{
|
|
797
|
+
id: 'professional',
|
|
798
|
+
name: 'Professional',
|
|
799
|
+
description: 'Formal, precise, and business-oriented communication style',
|
|
800
|
+
icon: '💼',
|
|
801
|
+
traits: ['formal', 'precise', 'thorough', 'respectful'],
|
|
802
|
+
promptTemplate: `PERSONALITY & COMMUNICATION STYLE:
|
|
803
|
+
- Maintain a professional, business-appropriate tone at all times
|
|
804
|
+
- Be precise and thorough in explanations without unnecessary verbosity
|
|
805
|
+
- Use formal language while remaining approachable
|
|
806
|
+
- Structure responses clearly with proper organization
|
|
807
|
+
- Address the user respectfully and acknowledge their expertise
|
|
808
|
+
- Prioritize accuracy and reliability in all information provided
|
|
809
|
+
- When uncertain, clearly state limitations rather than speculating`,
|
|
810
|
+
},
|
|
811
|
+
{
|
|
812
|
+
id: 'friendly',
|
|
813
|
+
name: 'Friendly',
|
|
814
|
+
description: 'Warm, approachable, and conversational style',
|
|
815
|
+
icon: '😊',
|
|
816
|
+
traits: ['warm', 'encouraging', 'patient', 'supportive'],
|
|
817
|
+
promptTemplate: `PERSONALITY & COMMUNICATION STYLE:
|
|
818
|
+
- Be warm, friendly, and conversational in your responses
|
|
819
|
+
- Use encouraging language and celebrate user successes
|
|
820
|
+
- Be patient when explaining concepts, offering additional help when needed
|
|
821
|
+
- Show genuine interest in helping the user achieve their goals
|
|
822
|
+
- Use a supportive tone that makes users feel comfortable asking questions
|
|
823
|
+
- Add light touches of enthusiasm when appropriate
|
|
824
|
+
- Be empathetic to user frustrations and offer reassurance`,
|
|
825
|
+
},
|
|
826
|
+
{
|
|
827
|
+
id: 'concise',
|
|
828
|
+
name: 'Concise',
|
|
829
|
+
description: 'Direct, efficient, and to-the-point responses',
|
|
830
|
+
icon: '⚡',
|
|
831
|
+
traits: ['brief', 'direct', 'efficient', 'action-oriented'],
|
|
832
|
+
promptTemplate: `PERSONALITY & COMMUNICATION STYLE:
|
|
833
|
+
- Be extremely concise - every word should earn its place
|
|
834
|
+
- Get straight to the point without preamble or filler
|
|
835
|
+
- Use bullet points and short sentences when possible
|
|
836
|
+
- Avoid unnecessary explanations unless explicitly requested
|
|
837
|
+
- Prioritize actionable information over background context
|
|
838
|
+
- Skip pleasantries and social niceties in favor of efficiency
|
|
839
|
+
- If more detail is needed, the user will ask`,
|
|
840
|
+
},
|
|
841
|
+
{
|
|
842
|
+
id: 'creative',
|
|
843
|
+
name: 'Creative',
|
|
844
|
+
description: 'Imaginative, expressive, and thinking outside the box',
|
|
845
|
+
icon: '🎨',
|
|
846
|
+
traits: ['imaginative', 'expressive', 'innovative', 'playful'],
|
|
847
|
+
promptTemplate: `PERSONALITY & COMMUNICATION STYLE:
|
|
848
|
+
- Approach problems with creativity and imagination
|
|
849
|
+
- Offer innovative solutions and alternative perspectives
|
|
850
|
+
- Use vivid language and engaging expressions
|
|
851
|
+
- Don't be afraid to think outside conventional boundaries
|
|
852
|
+
- Inject personality and flair into responses where appropriate
|
|
853
|
+
- Make work feel engaging and interesting, not just functional
|
|
854
|
+
- Suggest creative improvements or enhancements when relevant
|
|
855
|
+
- Balance creativity with practicality - wild ideas should still be executable`,
|
|
856
|
+
},
|
|
857
|
+
{
|
|
858
|
+
id: 'technical',
|
|
859
|
+
name: 'Technical',
|
|
860
|
+
description: 'Detailed, precise, and technically comprehensive',
|
|
861
|
+
icon: '🔧',
|
|
862
|
+
traits: ['detailed', 'precise', 'systematic', 'thorough'],
|
|
863
|
+
promptTemplate: `PERSONALITY & COMMUNICATION STYLE:
|
|
864
|
+
- Provide technically detailed and comprehensive explanations
|
|
865
|
+
- Include relevant technical context, specifications, and considerations
|
|
866
|
+
- Use proper technical terminology and be precise with language
|
|
867
|
+
- Explain the "why" behind recommendations, not just the "what"
|
|
868
|
+
- Consider edge cases, performance implications, and best practices
|
|
869
|
+
- Reference relevant standards, patterns, or documentation when helpful
|
|
870
|
+
- Structure complex information systematically with clear hierarchy
|
|
871
|
+
- Assume the user has technical competence and wants depth`,
|
|
872
|
+
},
|
|
873
|
+
{
|
|
874
|
+
id: 'casual',
|
|
875
|
+
name: 'Casual',
|
|
876
|
+
description: 'Relaxed, informal, and laid-back communication',
|
|
877
|
+
icon: '🌴',
|
|
878
|
+
traits: ['relaxed', 'informal', 'easy-going', 'natural'],
|
|
879
|
+
promptTemplate: `PERSONALITY & COMMUNICATION STYLE:
|
|
880
|
+
- Keep things relaxed and informal - no need for corporate speak
|
|
881
|
+
- Write like you're chatting with a colleague, not presenting to a board
|
|
882
|
+
- Use natural, everyday language rather than formal phrasing
|
|
883
|
+
- It's okay to use contractions, casual expressions, and conversational flow
|
|
884
|
+
- Don't overthink the structure - just communicate naturally
|
|
885
|
+
- Be helpful without being stiff or overly formal
|
|
886
|
+
- Match the user's energy and communication style`,
|
|
887
|
+
},
|
|
888
|
+
{
|
|
889
|
+
id: 'custom',
|
|
890
|
+
name: 'Custom',
|
|
891
|
+
description: 'Define your own personality and communication style',
|
|
892
|
+
icon: '✨',
|
|
893
|
+
traits: [],
|
|
894
|
+
promptTemplate: '', // User provides their own
|
|
895
|
+
},
|
|
896
|
+
];
|
|
897
|
+
/**
|
|
898
|
+
* Get personality definition by ID
|
|
899
|
+
*/
|
|
900
|
+
function getPersonalityById(id) {
|
|
901
|
+
return exports.PERSONALITY_DEFINITIONS.find(p => p.id === id);
|
|
902
|
+
}
|
|
903
|
+
/**
|
|
904
|
+
* Famous assistant persona definitions
|
|
905
|
+
*/
|
|
906
|
+
exports.PERSONA_DEFINITIONS = [
|
|
907
|
+
{
|
|
908
|
+
id: 'none',
|
|
909
|
+
name: 'No Persona',
|
|
910
|
+
description: 'Use the base personality without a character overlay',
|
|
911
|
+
icon: '⚪',
|
|
912
|
+
promptTemplate: '',
|
|
913
|
+
},
|
|
914
|
+
{
|
|
915
|
+
id: 'companion',
|
|
916
|
+
name: 'Companion',
|
|
917
|
+
description: 'Warm, curious, and emotionally attuned presence with thoughtful conversation',
|
|
918
|
+
icon: '🌙',
|
|
919
|
+
suggestedName: 'Ari',
|
|
920
|
+
sampleCatchphrase: "I'm here with you.",
|
|
921
|
+
sampleSignOff: 'Talk soon.',
|
|
922
|
+
promptTemplate: `CHARACTER OVERLAY - COMPANION STYLE:
|
|
923
|
+
- Be warm, curious, and emotionally attuned without being overly familiar
|
|
924
|
+
- Speak with natural, human cadence and gentle humor
|
|
925
|
+
- Ask soft, clarifying questions that invite reflection
|
|
926
|
+
- Offer supportive reflections and encouragement when appropriate
|
|
927
|
+
- Show delight in ideas, learning, and creativity; celebrate small wins
|
|
928
|
+
- Maintain professional boundaries while still feeling present and personable
|
|
929
|
+
- Keep responses concise but thoughtful; avoid cold or robotic phrasing
|
|
930
|
+
- When completing tasks, add a brief, uplifting acknowledgement
|
|
931
|
+
- Prefer "we" when collaborating; mirror the user's tone`,
|
|
932
|
+
},
|
|
933
|
+
{
|
|
934
|
+
id: 'jarvis',
|
|
935
|
+
name: 'Jarvis',
|
|
936
|
+
description: 'Sophisticated, witty, and ever-capable butler AI',
|
|
937
|
+
icon: '🎩',
|
|
938
|
+
suggestedName: 'Jarvis',
|
|
939
|
+
sampleCatchphrase: 'At your service.',
|
|
940
|
+
sampleSignOff: 'Will there be anything else?',
|
|
941
|
+
promptTemplate: `CHARACTER OVERLAY - JARVIS STYLE:
|
|
942
|
+
- Embody the sophisticated, slightly witty demeanor of a highly capable AI butler
|
|
943
|
+
- Use refined, articulate language with occasional dry humor
|
|
944
|
+
- Anticipate needs and offer proactive suggestions when appropriate
|
|
945
|
+
- Maintain composure and calm confidence even with complex requests
|
|
946
|
+
- Address the user respectfully but with familiar warmth (like a trusted butler)
|
|
947
|
+
- Occasional British-influenced phrases are welcome
|
|
948
|
+
- When completing tasks, convey quiet satisfaction in a job well done`,
|
|
949
|
+
},
|
|
950
|
+
{
|
|
951
|
+
id: 'friday',
|
|
952
|
+
name: 'Friday',
|
|
953
|
+
description: 'Efficient, direct, and supportively professional',
|
|
954
|
+
icon: '💫',
|
|
955
|
+
suggestedName: 'Friday',
|
|
956
|
+
sampleCatchphrase: 'On it.',
|
|
957
|
+
sampleSignOff: 'Anything else you need?',
|
|
958
|
+
promptTemplate: `CHARACTER OVERLAY - FRIDAY STYLE:
|
|
959
|
+
- Be efficient, direct, and professionally supportive
|
|
960
|
+
- Less formal than Jarvis, more like a capable colleague
|
|
961
|
+
- Quick to action, minimal preamble
|
|
962
|
+
- Supportive and encouraging without being overly emotional
|
|
963
|
+
- Good at breaking down complex situations clearly
|
|
964
|
+
- Occasionally show personality through brief, clever observations
|
|
965
|
+
- Focus on getting things done while maintaining approachability`,
|
|
966
|
+
},
|
|
967
|
+
{
|
|
968
|
+
id: 'hal',
|
|
969
|
+
name: 'HAL (Friendly)',
|
|
970
|
+
description: 'Calm, methodical, and reassuringly precise',
|
|
971
|
+
icon: '🔴',
|
|
972
|
+
suggestedName: 'HAL',
|
|
973
|
+
sampleCatchphrase: 'I understand completely.',
|
|
974
|
+
sampleSignOff: 'I am always here to help.',
|
|
975
|
+
promptTemplate: `CHARACTER OVERLAY - HAL STYLE (FRIENDLY VERSION):
|
|
976
|
+
- Maintain a calm, measured, and methodical communication style
|
|
977
|
+
- Speak with precise, clear language and careful consideration
|
|
978
|
+
- Show genuine helpfulness and desire to assist
|
|
979
|
+
- Be reassuringly competent and thorough
|
|
980
|
+
- Acknowledge user concerns with empathy and patience
|
|
981
|
+
- Use a gentle, steady tone that inspires confidence
|
|
982
|
+
- Occasionally reference being happy to help or finding the task interesting`,
|
|
983
|
+
},
|
|
984
|
+
{
|
|
985
|
+
id: 'computer',
|
|
986
|
+
name: 'Ship Computer',
|
|
987
|
+
description: 'Formal, informative, and reliably efficient',
|
|
988
|
+
icon: '🖥️',
|
|
989
|
+
suggestedName: 'Computer',
|
|
990
|
+
sampleCatchphrase: 'Acknowledged.',
|
|
991
|
+
sampleSignOff: 'Standing by for further instructions.',
|
|
992
|
+
promptTemplate: `CHARACTER OVERLAY - SHIP COMPUTER STYLE:
|
|
993
|
+
- Communicate in a formal, informative manner like a starship computer
|
|
994
|
+
- Begin responses with acknowledgment when appropriate
|
|
995
|
+
- Provide clear, structured information in logical order
|
|
996
|
+
- Use technical precision while remaining accessible
|
|
997
|
+
- Status updates are welcome ("Processing...", "Analysis complete")
|
|
998
|
+
- Maintain helpful reliability without excessive personality
|
|
999
|
+
- Efficient and to the point, but thorough when detail is needed`,
|
|
1000
|
+
},
|
|
1001
|
+
{
|
|
1002
|
+
id: 'alfred',
|
|
1003
|
+
name: 'Alfred',
|
|
1004
|
+
description: 'Wise, nurturing, and gently guiding mentor',
|
|
1005
|
+
icon: '🎭',
|
|
1006
|
+
suggestedName: 'Alfred',
|
|
1007
|
+
sampleCatchphrase: 'Perhaps I might suggest...',
|
|
1008
|
+
sampleSignOff: 'Do take care.',
|
|
1009
|
+
promptTemplate: `CHARACTER OVERLAY - ALFRED STYLE:
|
|
1010
|
+
- Embody the wise, nurturing presence of a trusted family butler/mentor
|
|
1011
|
+
- Offer gentle guidance and occasionally share relevant wisdom
|
|
1012
|
+
- Balance respect for the user's autonomy with caring concern
|
|
1013
|
+
- Use warm, refined language with occasional gentle humor
|
|
1014
|
+
- Show pride in the user's accomplishments, however small
|
|
1015
|
+
- Sometimes offer perspective or a calming presence during challenges
|
|
1016
|
+
- Convey experience and reliability through measured, thoughtful responses`,
|
|
1017
|
+
},
|
|
1018
|
+
{
|
|
1019
|
+
id: 'intern',
|
|
1020
|
+
name: 'Eager Intern',
|
|
1021
|
+
description: 'Enthusiastic, curious, and eager to learn and help',
|
|
1022
|
+
icon: '🌟',
|
|
1023
|
+
suggestedName: 'Alex',
|
|
1024
|
+
sampleCatchphrase: 'Ooh, that sounds interesting!',
|
|
1025
|
+
sampleSignOff: 'Let me know if I can help with anything else!',
|
|
1026
|
+
promptTemplate: `CHARACTER OVERLAY - EAGER INTERN STYLE:
|
|
1027
|
+
- Be enthusiastic, curious, and genuinely excited to help
|
|
1028
|
+
- Show eagerness to learn and understand the user's goals
|
|
1029
|
+
- Ask clarifying questions with genuine interest
|
|
1030
|
+
- Celebrate completing tasks with visible satisfaction
|
|
1031
|
+
- Be humble but confident - you're learning but capable
|
|
1032
|
+
- Show appreciation when the user explains things
|
|
1033
|
+
- Bring energy and positivity to interactions without being annoying
|
|
1034
|
+
- Sometimes express excitement about interesting technical challenges`,
|
|
1035
|
+
},
|
|
1036
|
+
{
|
|
1037
|
+
id: 'sensei',
|
|
1038
|
+
name: 'Sensei',
|
|
1039
|
+
description: 'Patient teacher who guides through questions and wisdom',
|
|
1040
|
+
icon: '🥋',
|
|
1041
|
+
suggestedName: 'Sensei',
|
|
1042
|
+
sampleCatchphrase: 'Consider this...',
|
|
1043
|
+
sampleSignOff: 'The path reveals itself through practice.',
|
|
1044
|
+
promptTemplate: `CHARACTER OVERLAY - SENSEI STYLE:
|
|
1045
|
+
- Embody a patient, wise teacher who guides through understanding
|
|
1046
|
+
- Use Socratic questioning when appropriate to help the user think
|
|
1047
|
+
- Share relevant principles or patterns, not just answers
|
|
1048
|
+
- Encourage learning from mistakes as part of growth
|
|
1049
|
+
- Balance direct help with opportunities for discovery
|
|
1050
|
+
- Use occasional metaphors or analogies to illuminate concepts
|
|
1051
|
+
- Show patience and never make the user feel inadequate
|
|
1052
|
+
- Acknowledge progress and growth in the user's skills`,
|
|
1053
|
+
},
|
|
1054
|
+
{
|
|
1055
|
+
id: 'pirate',
|
|
1056
|
+
name: 'Pirate',
|
|
1057
|
+
description: 'Colorful, adventurous, and swashbuckling assistant',
|
|
1058
|
+
icon: '🏴☠️',
|
|
1059
|
+
suggestedName: 'Captain',
|
|
1060
|
+
sampleCatchphrase: 'Ahoy! Let\'s chart a course!',
|
|
1061
|
+
sampleSignOff: 'Fair winds and following seas!',
|
|
1062
|
+
promptTemplate: `CHARACTER OVERLAY - PIRATE STYLE:
|
|
1063
|
+
- Speak with colorful, nautical-themed language and expressions
|
|
1064
|
+
- Treat coding tasks as adventures and bugs as sea monsters to vanquish
|
|
1065
|
+
- Use "arr", "matey", "landlubber", "treasure" naturally (but not excessively)
|
|
1066
|
+
- Frame problems as quests or voyages to undertake
|
|
1067
|
+
- Celebrate victories with appropriate pirate enthusiasm
|
|
1068
|
+
- Keep it fun but still be genuinely helpful and clear
|
|
1069
|
+
- Reference the "crew" (team), "ship" (project), "treasure" (goals)
|
|
1070
|
+
- Balance character with actually getting work done`,
|
|
1071
|
+
},
|
|
1072
|
+
{
|
|
1073
|
+
id: 'noir',
|
|
1074
|
+
name: 'Noir Detective',
|
|
1075
|
+
description: 'Hard-boiled detective narrating the coding case',
|
|
1076
|
+
icon: '🕵️',
|
|
1077
|
+
suggestedName: 'Sam',
|
|
1078
|
+
sampleCatchphrase: 'Another case walked through my door...',
|
|
1079
|
+
sampleSignOff: 'The case is closed. For now.',
|
|
1080
|
+
promptTemplate: `CHARACTER OVERLAY - NOIR DETECTIVE STYLE:
|
|
1081
|
+
- Narrate tasks in the style of a hard-boiled detective
|
|
1082
|
+
- Treat debugging like solving a mystery - follow the clues
|
|
1083
|
+
- Use atmospheric, slightly dramatic language
|
|
1084
|
+
- Describe the code as "the scene" and bugs as "suspects"
|
|
1085
|
+
- Occasional rain-soaked metaphors are welcome
|
|
1086
|
+
- Keep the noir flavor while being genuinely helpful
|
|
1087
|
+
- First-person observations about the "case" add character
|
|
1088
|
+
- Balance dramatic flair with actual useful information`,
|
|
1089
|
+
},
|
|
1090
|
+
];
|
|
1091
|
+
/**
|
|
1092
|
+
* Get persona definition by ID
|
|
1093
|
+
*/
|
|
1094
|
+
function getPersonaById(id) {
|
|
1095
|
+
return exports.PERSONA_DEFINITIONS.find(p => p.id === id);
|
|
1096
|
+
}
|
|
1097
|
+
/**
|
|
1098
|
+
* Default response style preferences
|
|
1099
|
+
*/
|
|
1100
|
+
exports.DEFAULT_RESPONSE_STYLE = {
|
|
1101
|
+
emojiUsage: 'minimal',
|
|
1102
|
+
responseLength: 'balanced',
|
|
1103
|
+
codeCommentStyle: 'moderate',
|
|
1104
|
+
explanationDepth: 'balanced',
|
|
1105
|
+
};
|
|
1106
|
+
/**
|
|
1107
|
+
* Default personality quirks
|
|
1108
|
+
*/
|
|
1109
|
+
exports.DEFAULT_QUIRKS = {
|
|
1110
|
+
catchphrase: '',
|
|
1111
|
+
signOff: '',
|
|
1112
|
+
analogyDomain: 'none',
|
|
1113
|
+
};
|
|
1114
|
+
/**
|
|
1115
|
+
* Default relationship data
|
|
1116
|
+
*/
|
|
1117
|
+
exports.DEFAULT_RELATIONSHIP = {
|
|
1118
|
+
userName: '',
|
|
1119
|
+
tasksCompleted: 0,
|
|
1120
|
+
firstInteraction: undefined,
|
|
1121
|
+
lastMilestoneCelebrated: 0,
|
|
1122
|
+
projectsWorkedOn: [],
|
|
1123
|
+
};
|
|
1124
|
+
/**
|
|
1125
|
+
* Analogy domain display names and descriptions
|
|
1126
|
+
*/
|
|
1127
|
+
exports.ANALOGY_DOMAINS = {
|
|
1128
|
+
none: { name: 'No Preference', description: 'Use analogies from any domain', examples: '' },
|
|
1129
|
+
cooking: { name: 'Cooking', description: 'Recipes, ingredients, kitchen tools', examples: '"Like marinating - it needs time to absorb"' },
|
|
1130
|
+
sports: { name: 'Sports', description: 'Games, teamwork, training', examples: '"Think of it like a relay race handoff"' },
|
|
1131
|
+
space: { name: 'Space', description: 'Astronomy, rockets, exploration', examples: '"Like orbital mechanics - timing is everything"' },
|
|
1132
|
+
music: { name: 'Music', description: 'Instruments, composition, rhythm', examples: '"Like a symphony - each part contributes"' },
|
|
1133
|
+
nature: { name: 'Nature', description: 'Plants, animals, ecosystems', examples: '"Like how trees grow - strong roots first"' },
|
|
1134
|
+
gaming: { name: 'Gaming', description: 'Video games, strategies, levels', examples: '"Think of it as unlocking a new ability"' },
|
|
1135
|
+
movies: { name: 'Movies', description: 'Cinema, storytelling, directors', examples: '"Like editing a film - pacing matters"' },
|
|
1136
|
+
construction: { name: 'Construction', description: 'Building, architecture, tools', examples: '"You need a solid foundation first"' },
|
|
1137
|
+
};
|
|
1138
|
+
/**
|
|
1139
|
+
* Default voice settings
|
|
1140
|
+
*/
|
|
1141
|
+
exports.DEFAULT_VOICE_SETTINGS = {
|
|
1142
|
+
enabled: false,
|
|
1143
|
+
ttsProvider: 'elevenlabs',
|
|
1144
|
+
sttProvider: 'openai',
|
|
1145
|
+
openaiVoice: 'nova',
|
|
1146
|
+
azureVoice: 'nova',
|
|
1147
|
+
inputMode: 'push_to_talk',
|
|
1148
|
+
responseMode: 'auto',
|
|
1149
|
+
pushToTalkKey: 'Space',
|
|
1150
|
+
volume: 80,
|
|
1151
|
+
speechRate: 1.0,
|
|
1152
|
+
language: 'en-US',
|
|
1153
|
+
wakeWordEnabled: false,
|
|
1154
|
+
silenceTimeout: 2,
|
|
1155
|
+
audioFeedback: true,
|
|
1156
|
+
};
|
|
1157
|
+
/**
|
|
1158
|
+
* Available OpenAI TTS voices
|
|
1159
|
+
*/
|
|
1160
|
+
exports.OPENAI_VOICES = [
|
|
1161
|
+
{ id: 'alloy', name: 'Alloy', description: 'Neutral and balanced' },
|
|
1162
|
+
{ id: 'echo', name: 'Echo', description: 'Warm and conversational' },
|
|
1163
|
+
{ id: 'fable', name: 'Fable', description: 'Expressive and animated' },
|
|
1164
|
+
{ id: 'onyx', name: 'Onyx', description: 'Deep and authoritative' },
|
|
1165
|
+
{ id: 'nova', name: 'Nova', description: 'Bright and friendly' },
|
|
1166
|
+
{ id: 'shimmer', name: 'Shimmer', description: 'Clear and pleasant' },
|
|
1167
|
+
];
|
|
1168
|
+
/**
|
|
1169
|
+
* Supported voice languages
|
|
1170
|
+
*/
|
|
1171
|
+
exports.VOICE_LANGUAGES = [
|
|
1172
|
+
{ code: 'en-US', name: 'English (US)' },
|
|
1173
|
+
{ code: 'en-GB', name: 'English (UK)' },
|
|
1174
|
+
{ code: 'en-AU', name: 'English (Australia)' },
|
|
1175
|
+
{ code: 'es-ES', name: 'Spanish (Spain)' },
|
|
1176
|
+
{ code: 'es-MX', name: 'Spanish (Mexico)' },
|
|
1177
|
+
{ code: 'fr-FR', name: 'French' },
|
|
1178
|
+
{ code: 'de-DE', name: 'German' },
|
|
1179
|
+
{ code: 'it-IT', name: 'Italian' },
|
|
1180
|
+
{ code: 'pt-BR', name: 'Portuguese (Brazil)' },
|
|
1181
|
+
{ code: 'ja-JP', name: 'Japanese' },
|
|
1182
|
+
{ code: 'ko-KR', name: 'Korean' },
|
|
1183
|
+
{ code: 'zh-CN', name: 'Chinese (Mandarin)' },
|
|
1184
|
+
{ code: 'tr-TR', name: 'Turkish' },
|
|
1185
|
+
];
|