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.
Files changed (526) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1638 -0
  3. package/bin/cowork.js +42 -0
  4. package/build/entitlements.mac.plist +16 -0
  5. package/build/icon.icns +0 -0
  6. package/build/icon.png +0 -0
  7. package/dist/electron/electron/activity/ActivityRepository.js +190 -0
  8. package/dist/electron/electron/agent/browser/browser-service.js +639 -0
  9. package/dist/electron/electron/agent/context-manager.js +225 -0
  10. package/dist/electron/electron/agent/custom-skill-loader.js +566 -0
  11. package/dist/electron/electron/agent/daemon.js +975 -0
  12. package/dist/electron/electron/agent/executor.js +3561 -0
  13. package/dist/electron/electron/agent/llm/anthropic-provider.js +155 -0
  14. package/dist/electron/electron/agent/llm/bedrock-provider.js +202 -0
  15. package/dist/electron/electron/agent/llm/gemini-provider.js +375 -0
  16. package/dist/electron/electron/agent/llm/index.js +34 -0
  17. package/dist/electron/electron/agent/llm/ollama-provider.js +263 -0
  18. package/dist/electron/electron/agent/llm/openai-oauth.js +101 -0
  19. package/dist/electron/electron/agent/llm/openai-provider.js +657 -0
  20. package/dist/electron/electron/agent/llm/openrouter-provider.js +232 -0
  21. package/dist/electron/electron/agent/llm/pricing.js +160 -0
  22. package/dist/electron/electron/agent/llm/provider-factory.js +880 -0
  23. package/dist/electron/electron/agent/llm/types.js +178 -0
  24. package/dist/electron/electron/agent/queue-manager.js +378 -0
  25. package/dist/electron/electron/agent/sandbox/docker-sandbox.js +402 -0
  26. package/dist/electron/electron/agent/sandbox/macos-sandbox.js +407 -0
  27. package/dist/electron/electron/agent/sandbox/runner.js +410 -0
  28. package/dist/electron/electron/agent/sandbox/sandbox-factory.js +228 -0
  29. package/dist/electron/electron/agent/sandbox/security-utils.js +258 -0
  30. package/dist/electron/electron/agent/search/brave-provider.js +119 -0
  31. package/dist/electron/electron/agent/search/google-provider.js +100 -0
  32. package/dist/electron/electron/agent/search/index.js +28 -0
  33. package/dist/electron/electron/agent/search/provider-factory.js +395 -0
  34. package/dist/electron/electron/agent/search/serpapi-provider.js +112 -0
  35. package/dist/electron/electron/agent/search/tavily-provider.js +90 -0
  36. package/dist/electron/electron/agent/search/types.js +40 -0
  37. package/dist/electron/electron/agent/security/index.js +12 -0
  38. package/dist/electron/electron/agent/security/input-sanitizer.js +303 -0
  39. package/dist/electron/electron/agent/security/output-filter.js +217 -0
  40. package/dist/electron/electron/agent/skill-eligibility.js +281 -0
  41. package/dist/electron/electron/agent/skill-registry.js +396 -0
  42. package/dist/electron/electron/agent/skills/document.js +878 -0
  43. package/dist/electron/electron/agent/skills/image-generator.js +225 -0
  44. package/dist/electron/electron/agent/skills/organizer.js +141 -0
  45. package/dist/electron/electron/agent/skills/presentation.js +367 -0
  46. package/dist/electron/electron/agent/skills/spreadsheet.js +165 -0
  47. package/dist/electron/electron/agent/tools/browser-tools.js +523 -0
  48. package/dist/electron/electron/agent/tools/builtin-settings.js +384 -0
  49. package/dist/electron/electron/agent/tools/canvas-tools.js +530 -0
  50. package/dist/electron/electron/agent/tools/cron-tools.js +577 -0
  51. package/dist/electron/electron/agent/tools/edit-tools.js +194 -0
  52. package/dist/electron/electron/agent/tools/file-tools.js +719 -0
  53. package/dist/electron/electron/agent/tools/glob-tools.js +283 -0
  54. package/dist/electron/electron/agent/tools/grep-tools.js +387 -0
  55. package/dist/electron/electron/agent/tools/image-tools.js +111 -0
  56. package/dist/electron/electron/agent/tools/mention-tools.js +282 -0
  57. package/dist/electron/electron/agent/tools/node-tools.js +476 -0
  58. package/dist/electron/electron/agent/tools/registry.js +2719 -0
  59. package/dist/electron/electron/agent/tools/search-tools.js +91 -0
  60. package/dist/electron/electron/agent/tools/shell-tools.js +574 -0
  61. package/dist/electron/electron/agent/tools/skill-tools.js +274 -0
  62. package/dist/electron/electron/agent/tools/system-tools.js +578 -0
  63. package/dist/electron/electron/agent/tools/web-fetch-tools.js +444 -0
  64. package/dist/electron/electron/agent/tools/x-tools.js +264 -0
  65. package/dist/electron/electron/agents/AgentRoleRepository.js +420 -0
  66. package/dist/electron/electron/agents/HeartbeatService.js +356 -0
  67. package/dist/electron/electron/agents/MentionRepository.js +197 -0
  68. package/dist/electron/electron/agents/TaskSubscriptionRepository.js +168 -0
  69. package/dist/electron/electron/agents/WorkingStateRepository.js +229 -0
  70. package/dist/electron/electron/canvas/canvas-manager.js +714 -0
  71. package/dist/electron/electron/canvas/canvas-preload.js +53 -0
  72. package/dist/electron/electron/canvas/canvas-protocol.js +195 -0
  73. package/dist/electron/electron/canvas/canvas-store.js +174 -0
  74. package/dist/electron/electron/canvas/index.js +13 -0
  75. package/dist/electron/electron/control-plane/client.js +364 -0
  76. package/dist/electron/electron/control-plane/handlers.js +572 -0
  77. package/dist/electron/electron/control-plane/index.js +41 -0
  78. package/dist/electron/electron/control-plane/node-manager.js +264 -0
  79. package/dist/electron/electron/control-plane/protocol.js +194 -0
  80. package/dist/electron/electron/control-plane/remote-client.js +437 -0
  81. package/dist/electron/electron/control-plane/server.js +640 -0
  82. package/dist/electron/electron/control-plane/settings.js +369 -0
  83. package/dist/electron/electron/control-plane/ssh-tunnel.js +549 -0
  84. package/dist/electron/electron/cron/index.js +30 -0
  85. package/dist/electron/electron/cron/schedule.js +190 -0
  86. package/dist/electron/electron/cron/service.js +614 -0
  87. package/dist/electron/electron/cron/store.js +155 -0
  88. package/dist/electron/electron/cron/types.js +82 -0
  89. package/dist/electron/electron/cron/webhook.js +258 -0
  90. package/dist/electron/electron/database/SecureSettingsRepository.js +444 -0
  91. package/dist/electron/electron/database/TaskLabelRepository.js +120 -0
  92. package/dist/electron/electron/database/repositories.js +1781 -0
  93. package/dist/electron/electron/database/schema.js +978 -0
  94. package/dist/electron/electron/extensions/index.js +33 -0
  95. package/dist/electron/electron/extensions/loader.js +313 -0
  96. package/dist/electron/electron/extensions/registry.js +485 -0
  97. package/dist/electron/electron/extensions/types.js +11 -0
  98. package/dist/electron/electron/gateway/channel-registry.js +1102 -0
  99. package/dist/electron/electron/gateway/channels/bluebubbles-client.js +479 -0
  100. package/dist/electron/electron/gateway/channels/bluebubbles.js +432 -0
  101. package/dist/electron/electron/gateway/channels/discord.js +975 -0
  102. package/dist/electron/electron/gateway/channels/email-client.js +593 -0
  103. package/dist/electron/electron/gateway/channels/email.js +443 -0
  104. package/dist/electron/electron/gateway/channels/google-chat.js +631 -0
  105. package/dist/electron/electron/gateway/channels/imessage-client.js +363 -0
  106. package/dist/electron/electron/gateway/channels/imessage.js +465 -0
  107. package/dist/electron/electron/gateway/channels/index.js +36 -0
  108. package/dist/electron/electron/gateway/channels/line-client.js +470 -0
  109. package/dist/electron/electron/gateway/channels/line.js +479 -0
  110. package/dist/electron/electron/gateway/channels/matrix-client.js +432 -0
  111. package/dist/electron/electron/gateway/channels/matrix.js +592 -0
  112. package/dist/electron/electron/gateway/channels/mattermost-client.js +394 -0
  113. package/dist/electron/electron/gateway/channels/mattermost.js +496 -0
  114. package/dist/electron/electron/gateway/channels/signal-client.js +500 -0
  115. package/dist/electron/electron/gateway/channels/signal.js +582 -0
  116. package/dist/electron/electron/gateway/channels/slack.js +415 -0
  117. package/dist/electron/electron/gateway/channels/teams.js +596 -0
  118. package/dist/electron/electron/gateway/channels/telegram.js +1390 -0
  119. package/dist/electron/electron/gateway/channels/twitch-client.js +502 -0
  120. package/dist/electron/electron/gateway/channels/twitch.js +396 -0
  121. package/dist/electron/electron/gateway/channels/types.js +8 -0
  122. package/dist/electron/electron/gateway/channels/whatsapp.js +953 -0
  123. package/dist/electron/electron/gateway/context-policy.js +268 -0
  124. package/dist/electron/electron/gateway/index.js +1063 -0
  125. package/dist/electron/electron/gateway/infrastructure.js +496 -0
  126. package/dist/electron/electron/gateway/router.js +2700 -0
  127. package/dist/electron/electron/gateway/security.js +375 -0
  128. package/dist/electron/electron/gateway/session.js +115 -0
  129. package/dist/electron/electron/gateway/tunnel.js +503 -0
  130. package/dist/electron/electron/guardrails/guardrail-manager.js +348 -0
  131. package/dist/electron/electron/hooks/gmail-watcher.js +300 -0
  132. package/dist/electron/electron/hooks/index.js +46 -0
  133. package/dist/electron/electron/hooks/mappings.js +381 -0
  134. package/dist/electron/electron/hooks/server.js +480 -0
  135. package/dist/electron/electron/hooks/settings.js +447 -0
  136. package/dist/electron/electron/hooks/types.js +41 -0
  137. package/dist/electron/electron/ipc/canvas-handlers.js +158 -0
  138. package/dist/electron/electron/ipc/handlers.js +3138 -0
  139. package/dist/electron/electron/ipc/mission-control-handlers.js +141 -0
  140. package/dist/electron/electron/main.js +448 -0
  141. package/dist/electron/electron/mcp/client/MCPClientManager.js +330 -0
  142. package/dist/electron/electron/mcp/client/MCPServerConnection.js +437 -0
  143. package/dist/electron/electron/mcp/client/transports/SSETransport.js +304 -0
  144. package/dist/electron/electron/mcp/client/transports/StdioTransport.js +307 -0
  145. package/dist/electron/electron/mcp/client/transports/WebSocketTransport.js +329 -0
  146. package/dist/electron/electron/mcp/host/MCPHostServer.js +354 -0
  147. package/dist/electron/electron/mcp/host/ToolAdapter.js +100 -0
  148. package/dist/electron/electron/mcp/registry/MCPRegistryManager.js +497 -0
  149. package/dist/electron/electron/mcp/settings.js +446 -0
  150. package/dist/electron/electron/mcp/types.js +59 -0
  151. package/dist/electron/electron/memory/MemoryService.js +435 -0
  152. package/dist/electron/electron/notifications/index.js +17 -0
  153. package/dist/electron/electron/notifications/service.js +118 -0
  154. package/dist/electron/electron/notifications/store.js +144 -0
  155. package/dist/electron/electron/preload.js +842 -0
  156. package/dist/electron/electron/reports/StandupReportService.js +272 -0
  157. package/dist/electron/electron/security/concurrency.js +293 -0
  158. package/dist/electron/electron/security/index.js +15 -0
  159. package/dist/electron/electron/security/policy-manager.js +435 -0
  160. package/dist/electron/electron/settings/appearance-manager.js +193 -0
  161. package/dist/electron/electron/settings/personality-manager.js +724 -0
  162. package/dist/electron/electron/settings/x-manager.js +58 -0
  163. package/dist/electron/electron/tailscale/exposure.js +188 -0
  164. package/dist/electron/electron/tailscale/index.js +28 -0
  165. package/dist/electron/electron/tailscale/settings.js +205 -0
  166. package/dist/electron/electron/tailscale/tailscale.js +355 -0
  167. package/dist/electron/electron/tray/QuickInputWindow.js +568 -0
  168. package/dist/electron/electron/tray/TrayManager.js +895 -0
  169. package/dist/electron/electron/tray/index.js +9 -0
  170. package/dist/electron/electron/updater/index.js +6 -0
  171. package/dist/electron/electron/updater/update-manager.js +418 -0
  172. package/dist/electron/electron/utils/env-migration.js +209 -0
  173. package/dist/electron/electron/utils/process.js +102 -0
  174. package/dist/electron/electron/utils/rate-limiter.js +104 -0
  175. package/dist/electron/electron/utils/validation.js +419 -0
  176. package/dist/electron/electron/utils/x-cli.js +177 -0
  177. package/dist/electron/electron/voice/VoiceService.js +507 -0
  178. package/dist/electron/electron/voice/index.js +14 -0
  179. package/dist/electron/electron/voice/voice-settings-manager.js +359 -0
  180. package/dist/electron/shared/channelMessages.js +170 -0
  181. package/dist/electron/shared/types.js +1185 -0
  182. package/package.json +159 -0
  183. package/resources/skills/1password.json +10 -0
  184. package/resources/skills/add-documentation.json +31 -0
  185. package/resources/skills/analyze-csv.json +17 -0
  186. package/resources/skills/apple-notes.json +10 -0
  187. package/resources/skills/apple-reminders.json +10 -0
  188. package/resources/skills/auto-commenter.json +10 -0
  189. package/resources/skills/bear-notes.json +10 -0
  190. package/resources/skills/bird.json +35 -0
  191. package/resources/skills/blogwatcher.json +10 -0
  192. package/resources/skills/blucli.json +10 -0
  193. package/resources/skills/bluebubbles.json +10 -0
  194. package/resources/skills/camsnap.json +10 -0
  195. package/resources/skills/clean-imports.json +18 -0
  196. package/resources/skills/code-review.json +18 -0
  197. package/resources/skills/coding-agent.json +10 -0
  198. package/resources/skills/compare-files.json +23 -0
  199. package/resources/skills/convert-code.json +34 -0
  200. package/resources/skills/create-changelog.json +24 -0
  201. package/resources/skills/debug-error.json +17 -0
  202. package/resources/skills/dependency-check.json +10 -0
  203. package/resources/skills/discord.json +10 -0
  204. package/resources/skills/eightctl.json +10 -0
  205. package/resources/skills/explain-code.json +29 -0
  206. package/resources/skills/extract-todos.json +18 -0
  207. package/resources/skills/food-order.json +10 -0
  208. package/resources/skills/gemini.json +10 -0
  209. package/resources/skills/generate-readme.json +10 -0
  210. package/resources/skills/gifgrep.json +10 -0
  211. package/resources/skills/git-commit.json +10 -0
  212. package/resources/skills/github.json +10 -0
  213. package/resources/skills/gog.json +10 -0
  214. package/resources/skills/goplaces.json +10 -0
  215. package/resources/skills/himalaya.json +10 -0
  216. package/resources/skills/imsg.json +10 -0
  217. package/resources/skills/karpathy-guidelines.json +12 -0
  218. package/resources/skills/last30days.json +26 -0
  219. package/resources/skills/local-places.json +10 -0
  220. package/resources/skills/mcporter.json +10 -0
  221. package/resources/skills/model-usage.json +10 -0
  222. package/resources/skills/nano-banana-pro.json +10 -0
  223. package/resources/skills/nano-pdf.json +10 -0
  224. package/resources/skills/notion.json +10 -0
  225. package/resources/skills/obsidian.json +10 -0
  226. package/resources/skills/openai-image-gen.json +10 -0
  227. package/resources/skills/openai-whisper-api.json +10 -0
  228. package/resources/skills/openai-whisper.json +10 -0
  229. package/resources/skills/openhue.json +10 -0
  230. package/resources/skills/oracle.json +10 -0
  231. package/resources/skills/ordercli.json +10 -0
  232. package/resources/skills/peekaboo.json +10 -0
  233. package/resources/skills/project-structure.json +10 -0
  234. package/resources/skills/proofread.json +17 -0
  235. package/resources/skills/refactor-code.json +31 -0
  236. package/resources/skills/rename-symbol.json +23 -0
  237. package/resources/skills/sag.json +10 -0
  238. package/resources/skills/security-audit.json +18 -0
  239. package/resources/skills/session-logs.json +10 -0
  240. package/resources/skills/sherpa-onnx-tts.json +10 -0
  241. package/resources/skills/skill-creator.json +15 -0
  242. package/resources/skills/skill-hub.json +29 -0
  243. package/resources/skills/slack.json +10 -0
  244. package/resources/skills/songsee.json +10 -0
  245. package/resources/skills/sonoscli.json +10 -0
  246. package/resources/skills/spotify-player.json +10 -0
  247. package/resources/skills/startup-cfo.json +55 -0
  248. package/resources/skills/summarize-folder.json +18 -0
  249. package/resources/skills/summarize.json +10 -0
  250. package/resources/skills/things-mac.json +10 -0
  251. package/resources/skills/tmux.json +10 -0
  252. package/resources/skills/translate.json +36 -0
  253. package/resources/skills/trello.json +10 -0
  254. package/resources/skills/video-frames.json +10 -0
  255. package/resources/skills/voice-call.json +10 -0
  256. package/resources/skills/wacli.json +10 -0
  257. package/resources/skills/weather.json +10 -0
  258. package/resources/skills/write-tests.json +31 -0
  259. package/src/electron/activity/ActivityRepository.ts +238 -0
  260. package/src/electron/agent/browser/browser-service.ts +721 -0
  261. package/src/electron/agent/context-manager.ts +257 -0
  262. package/src/electron/agent/custom-skill-loader.ts +634 -0
  263. package/src/electron/agent/daemon.ts +1097 -0
  264. package/src/electron/agent/executor.ts +4017 -0
  265. package/src/electron/agent/llm/anthropic-provider.ts +175 -0
  266. package/src/electron/agent/llm/bedrock-provider.ts +236 -0
  267. package/src/electron/agent/llm/gemini-provider.ts +422 -0
  268. package/src/electron/agent/llm/index.ts +9 -0
  269. package/src/electron/agent/llm/ollama-provider.ts +347 -0
  270. package/src/electron/agent/llm/openai-oauth.ts +127 -0
  271. package/src/electron/agent/llm/openai-provider.ts +686 -0
  272. package/src/electron/agent/llm/openrouter-provider.ts +273 -0
  273. package/src/electron/agent/llm/pricing.ts +180 -0
  274. package/src/electron/agent/llm/provider-factory.ts +971 -0
  275. package/src/electron/agent/llm/types.ts +291 -0
  276. package/src/electron/agent/queue-manager.ts +408 -0
  277. package/src/electron/agent/sandbox/docker-sandbox.ts +453 -0
  278. package/src/electron/agent/sandbox/macos-sandbox.ts +426 -0
  279. package/src/electron/agent/sandbox/runner.ts +453 -0
  280. package/src/electron/agent/sandbox/sandbox-factory.ts +337 -0
  281. package/src/electron/agent/sandbox/security-utils.ts +251 -0
  282. package/src/electron/agent/search/brave-provider.ts +141 -0
  283. package/src/electron/agent/search/google-provider.ts +131 -0
  284. package/src/electron/agent/search/index.ts +6 -0
  285. package/src/electron/agent/search/provider-factory.ts +450 -0
  286. package/src/electron/agent/search/serpapi-provider.ts +138 -0
  287. package/src/electron/agent/search/tavily-provider.ts +108 -0
  288. package/src/electron/agent/search/types.ts +118 -0
  289. package/src/electron/agent/security/index.ts +20 -0
  290. package/src/electron/agent/security/input-sanitizer.ts +380 -0
  291. package/src/electron/agent/security/output-filter.ts +259 -0
  292. package/src/electron/agent/skill-eligibility.ts +334 -0
  293. package/src/electron/agent/skill-registry.ts +457 -0
  294. package/src/electron/agent/skills/document.ts +1070 -0
  295. package/src/electron/agent/skills/image-generator.ts +272 -0
  296. package/src/electron/agent/skills/organizer.ts +131 -0
  297. package/src/electron/agent/skills/presentation.ts +418 -0
  298. package/src/electron/agent/skills/spreadsheet.ts +166 -0
  299. package/src/electron/agent/tools/browser-tools.ts +546 -0
  300. package/src/electron/agent/tools/builtin-settings.ts +422 -0
  301. package/src/electron/agent/tools/canvas-tools.ts +572 -0
  302. package/src/electron/agent/tools/cron-tools.ts +723 -0
  303. package/src/electron/agent/tools/edit-tools.ts +196 -0
  304. package/src/electron/agent/tools/file-tools.ts +811 -0
  305. package/src/electron/agent/tools/glob-tools.ts +303 -0
  306. package/src/electron/agent/tools/grep-tools.ts +432 -0
  307. package/src/electron/agent/tools/image-tools.ts +126 -0
  308. package/src/electron/agent/tools/mention-tools.ts +371 -0
  309. package/src/electron/agent/tools/node-tools.ts +550 -0
  310. package/src/electron/agent/tools/registry.ts +3052 -0
  311. package/src/electron/agent/tools/search-tools.ts +111 -0
  312. package/src/electron/agent/tools/shell-tools.ts +651 -0
  313. package/src/electron/agent/tools/skill-tools.ts +340 -0
  314. package/src/electron/agent/tools/system-tools.ts +665 -0
  315. package/src/electron/agent/tools/web-fetch-tools.ts +528 -0
  316. package/src/electron/agent/tools/x-tools.ts +267 -0
  317. package/src/electron/agents/AgentRoleRepository.ts +557 -0
  318. package/src/electron/agents/HeartbeatService.ts +469 -0
  319. package/src/electron/agents/MentionRepository.ts +242 -0
  320. package/src/electron/agents/TaskSubscriptionRepository.ts +231 -0
  321. package/src/electron/agents/WorkingStateRepository.ts +278 -0
  322. package/src/electron/canvas/canvas-manager.ts +818 -0
  323. package/src/electron/canvas/canvas-preload.ts +102 -0
  324. package/src/electron/canvas/canvas-protocol.ts +174 -0
  325. package/src/electron/canvas/canvas-store.ts +200 -0
  326. package/src/electron/canvas/index.ts +8 -0
  327. package/src/electron/control-plane/client.ts +527 -0
  328. package/src/electron/control-plane/handlers.ts +723 -0
  329. package/src/electron/control-plane/index.ts +51 -0
  330. package/src/electron/control-plane/node-manager.ts +322 -0
  331. package/src/electron/control-plane/protocol.ts +269 -0
  332. package/src/electron/control-plane/remote-client.ts +517 -0
  333. package/src/electron/control-plane/server.ts +853 -0
  334. package/src/electron/control-plane/settings.ts +401 -0
  335. package/src/electron/control-plane/ssh-tunnel.ts +624 -0
  336. package/src/electron/cron/index.ts +9 -0
  337. package/src/electron/cron/schedule.ts +217 -0
  338. package/src/electron/cron/service.ts +743 -0
  339. package/src/electron/cron/store.ts +165 -0
  340. package/src/electron/cron/types.ts +291 -0
  341. package/src/electron/cron/webhook.ts +303 -0
  342. package/src/electron/database/SecureSettingsRepository.ts +514 -0
  343. package/src/electron/database/TaskLabelRepository.ts +148 -0
  344. package/src/electron/database/repositories.ts +2397 -0
  345. package/src/electron/database/schema.ts +1017 -0
  346. package/src/electron/extensions/index.ts +18 -0
  347. package/src/electron/extensions/loader.ts +336 -0
  348. package/src/electron/extensions/registry.ts +546 -0
  349. package/src/electron/extensions/types.ts +372 -0
  350. package/src/electron/gateway/channel-registry.ts +1267 -0
  351. package/src/electron/gateway/channels/bluebubbles-client.ts +641 -0
  352. package/src/electron/gateway/channels/bluebubbles.ts +509 -0
  353. package/src/electron/gateway/channels/discord.ts +1150 -0
  354. package/src/electron/gateway/channels/email-client.ts +708 -0
  355. package/src/electron/gateway/channels/email.ts +516 -0
  356. package/src/electron/gateway/channels/google-chat.ts +760 -0
  357. package/src/electron/gateway/channels/imessage-client.ts +473 -0
  358. package/src/electron/gateway/channels/imessage.ts +520 -0
  359. package/src/electron/gateway/channels/index.ts +21 -0
  360. package/src/electron/gateway/channels/line-client.ts +598 -0
  361. package/src/electron/gateway/channels/line.ts +559 -0
  362. package/src/electron/gateway/channels/matrix-client.ts +632 -0
  363. package/src/electron/gateway/channels/matrix.ts +655 -0
  364. package/src/electron/gateway/channels/mattermost-client.ts +526 -0
  365. package/src/electron/gateway/channels/mattermost.ts +550 -0
  366. package/src/electron/gateway/channels/signal-client.ts +722 -0
  367. package/src/electron/gateway/channels/signal.ts +666 -0
  368. package/src/electron/gateway/channels/slack.ts +458 -0
  369. package/src/electron/gateway/channels/teams.ts +681 -0
  370. package/src/electron/gateway/channels/telegram.ts +1727 -0
  371. package/src/electron/gateway/channels/twitch-client.ts +665 -0
  372. package/src/electron/gateway/channels/twitch.ts +468 -0
  373. package/src/electron/gateway/channels/types.ts +1002 -0
  374. package/src/electron/gateway/channels/whatsapp.ts +1101 -0
  375. package/src/electron/gateway/context-policy.ts +382 -0
  376. package/src/electron/gateway/index.ts +1274 -0
  377. package/src/electron/gateway/infrastructure.ts +645 -0
  378. package/src/electron/gateway/router.ts +3206 -0
  379. package/src/electron/gateway/security.ts +422 -0
  380. package/src/electron/gateway/session.ts +144 -0
  381. package/src/electron/gateway/tunnel.ts +626 -0
  382. package/src/electron/guardrails/guardrail-manager.ts +380 -0
  383. package/src/electron/hooks/gmail-watcher.ts +355 -0
  384. package/src/electron/hooks/index.ts +30 -0
  385. package/src/electron/hooks/mappings.ts +404 -0
  386. package/src/electron/hooks/server.ts +574 -0
  387. package/src/electron/hooks/settings.ts +466 -0
  388. package/src/electron/hooks/types.ts +245 -0
  389. package/src/electron/ipc/canvas-handlers.ts +223 -0
  390. package/src/electron/ipc/handlers.ts +3661 -0
  391. package/src/electron/ipc/mission-control-handlers.ts +182 -0
  392. package/src/electron/main.ts +496 -0
  393. package/src/electron/mcp/client/MCPClientManager.ts +406 -0
  394. package/src/electron/mcp/client/MCPServerConnection.ts +514 -0
  395. package/src/electron/mcp/client/transports/SSETransport.ts +360 -0
  396. package/src/electron/mcp/client/transports/StdioTransport.ts +355 -0
  397. package/src/electron/mcp/client/transports/WebSocketTransport.ts +384 -0
  398. package/src/electron/mcp/host/MCPHostServer.ts +388 -0
  399. package/src/electron/mcp/host/ToolAdapter.ts +140 -0
  400. package/src/electron/mcp/registry/MCPRegistryManager.ts +565 -0
  401. package/src/electron/mcp/settings.ts +468 -0
  402. package/src/electron/mcp/types.ts +371 -0
  403. package/src/electron/memory/MemoryService.ts +523 -0
  404. package/src/electron/notifications/index.ts +16 -0
  405. package/src/electron/notifications/service.ts +161 -0
  406. package/src/electron/notifications/store.ts +163 -0
  407. package/src/electron/preload.ts +2845 -0
  408. package/src/electron/reports/StandupReportService.ts +356 -0
  409. package/src/electron/security/concurrency.ts +333 -0
  410. package/src/electron/security/index.ts +17 -0
  411. package/src/electron/security/policy-manager.ts +539 -0
  412. package/src/electron/settings/appearance-manager.ts +182 -0
  413. package/src/electron/settings/personality-manager.ts +800 -0
  414. package/src/electron/settings/x-manager.ts +62 -0
  415. package/src/electron/tailscale/exposure.ts +262 -0
  416. package/src/electron/tailscale/index.ts +34 -0
  417. package/src/electron/tailscale/settings.ts +218 -0
  418. package/src/electron/tailscale/tailscale.ts +379 -0
  419. package/src/electron/tray/QuickInputWindow.ts +609 -0
  420. package/src/electron/tray/TrayManager.ts +1005 -0
  421. package/src/electron/tray/index.ts +6 -0
  422. package/src/electron/updater/index.ts +1 -0
  423. package/src/electron/updater/update-manager.ts +447 -0
  424. package/src/electron/utils/env-migration.ts +203 -0
  425. package/src/electron/utils/process.ts +124 -0
  426. package/src/electron/utils/rate-limiter.ts +130 -0
  427. package/src/electron/utils/validation.ts +493 -0
  428. package/src/electron/utils/x-cli.ts +198 -0
  429. package/src/electron/voice/VoiceService.ts +583 -0
  430. package/src/electron/voice/index.ts +9 -0
  431. package/src/electron/voice/voice-settings-manager.ts +403 -0
  432. package/src/renderer/App.tsx +775 -0
  433. package/src/renderer/components/ActivityFeed.tsx +407 -0
  434. package/src/renderer/components/ActivityFeedItem.tsx +285 -0
  435. package/src/renderer/components/AgentRoleCard.tsx +343 -0
  436. package/src/renderer/components/AgentRoleEditor.tsx +805 -0
  437. package/src/renderer/components/AgentSquadSettings.tsx +295 -0
  438. package/src/renderer/components/AgentWorkingStatePanel.tsx +411 -0
  439. package/src/renderer/components/AppearanceSettings.tsx +122 -0
  440. package/src/renderer/components/ApprovalDialog.tsx +100 -0
  441. package/src/renderer/components/BlueBubblesSettings.tsx +505 -0
  442. package/src/renderer/components/BuiltinToolsSettings.tsx +307 -0
  443. package/src/renderer/components/CanvasPreview.tsx +1189 -0
  444. package/src/renderer/components/CommandOutput.tsx +202 -0
  445. package/src/renderer/components/ContextPolicySettings.tsx +523 -0
  446. package/src/renderer/components/ControlPlaneSettings.tsx +1134 -0
  447. package/src/renderer/components/DisclaimerModal.tsx +124 -0
  448. package/src/renderer/components/DiscordSettings.tsx +436 -0
  449. package/src/renderer/components/EmailSettings.tsx +606 -0
  450. package/src/renderer/components/ExtensionsSettings.tsx +542 -0
  451. package/src/renderer/components/FileViewer.tsx +224 -0
  452. package/src/renderer/components/GoogleChatSettings.tsx +535 -0
  453. package/src/renderer/components/GuardrailSettings.tsx +487 -0
  454. package/src/renderer/components/HooksSettings.tsx +581 -0
  455. package/src/renderer/components/ImessageSettings.tsx +484 -0
  456. package/src/renderer/components/LineSettings.tsx +483 -0
  457. package/src/renderer/components/MCPRegistryBrowser.tsx +386 -0
  458. package/src/renderer/components/MCPSettings.tsx +943 -0
  459. package/src/renderer/components/MainContent.tsx +2433 -0
  460. package/src/renderer/components/MatrixSettings.tsx +510 -0
  461. package/src/renderer/components/MattermostSettings.tsx +473 -0
  462. package/src/renderer/components/MemorySettings.tsx +247 -0
  463. package/src/renderer/components/MentionBadge.tsx +87 -0
  464. package/src/renderer/components/MentionInput.tsx +409 -0
  465. package/src/renderer/components/MentionList.tsx +476 -0
  466. package/src/renderer/components/MissionControlPanel.tsx +1995 -0
  467. package/src/renderer/components/NodesSettings.tsx +316 -0
  468. package/src/renderer/components/NotificationPanel.tsx +481 -0
  469. package/src/renderer/components/Onboarding/AwakeningOrb.tsx +44 -0
  470. package/src/renderer/components/Onboarding/Onboarding.tsx +443 -0
  471. package/src/renderer/components/Onboarding/TypewriterText.tsx +102 -0
  472. package/src/renderer/components/Onboarding/index.ts +3 -0
  473. package/src/renderer/components/OnboardingModal.tsx +698 -0
  474. package/src/renderer/components/PairingCodeDisplay.tsx +324 -0
  475. package/src/renderer/components/PersonalitySettings.tsx +597 -0
  476. package/src/renderer/components/QueueSettings.tsx +119 -0
  477. package/src/renderer/components/QuickTaskFAB.tsx +71 -0
  478. package/src/renderer/components/RightPanel.tsx +413 -0
  479. package/src/renderer/components/ScheduledTasksSettings.tsx +1328 -0
  480. package/src/renderer/components/SearchSettings.tsx +328 -0
  481. package/src/renderer/components/Settings.tsx +1504 -0
  482. package/src/renderer/components/Sidebar.tsx +344 -0
  483. package/src/renderer/components/SignalSettings.tsx +673 -0
  484. package/src/renderer/components/SkillHubBrowser.tsx +458 -0
  485. package/src/renderer/components/SkillParameterModal.tsx +185 -0
  486. package/src/renderer/components/SkillsSettings.tsx +451 -0
  487. package/src/renderer/components/SlackSettings.tsx +442 -0
  488. package/src/renderer/components/StandupReportViewer.tsx +614 -0
  489. package/src/renderer/components/TaskBoard.tsx +498 -0
  490. package/src/renderer/components/TaskBoardCard.tsx +357 -0
  491. package/src/renderer/components/TaskBoardColumn.tsx +211 -0
  492. package/src/renderer/components/TaskLabelManager.tsx +472 -0
  493. package/src/renderer/components/TaskQueuePanel.tsx +144 -0
  494. package/src/renderer/components/TaskQuickActions.tsx +492 -0
  495. package/src/renderer/components/TaskTimeline.tsx +216 -0
  496. package/src/renderer/components/TaskView.tsx +162 -0
  497. package/src/renderer/components/TeamsSettings.tsx +518 -0
  498. package/src/renderer/components/TelegramSettings.tsx +421 -0
  499. package/src/renderer/components/Toast.tsx +76 -0
  500. package/src/renderer/components/TraySettings.tsx +189 -0
  501. package/src/renderer/components/TwitchSettings.tsx +511 -0
  502. package/src/renderer/components/UpdateSettings.tsx +295 -0
  503. package/src/renderer/components/VoiceIndicator.tsx +270 -0
  504. package/src/renderer/components/VoiceSettings.tsx +867 -0
  505. package/src/renderer/components/WhatsAppSettings.tsx +721 -0
  506. package/src/renderer/components/WorkingStateEditor.tsx +309 -0
  507. package/src/renderer/components/WorkingStateHistory.tsx +481 -0
  508. package/src/renderer/components/WorkspaceSelector.tsx +150 -0
  509. package/src/renderer/components/XSettings.tsx +311 -0
  510. package/src/renderer/global.d.ts +9 -0
  511. package/src/renderer/hooks/useAgentContext.ts +153 -0
  512. package/src/renderer/hooks/useOnboardingFlow.ts +548 -0
  513. package/src/renderer/hooks/useVoiceInput.ts +268 -0
  514. package/src/renderer/index.html +12 -0
  515. package/src/renderer/main.tsx +10 -0
  516. package/src/renderer/public/cowork-os-logo.png +0 -0
  517. package/src/renderer/quick-input.html +164 -0
  518. package/src/renderer/styles/index.css +14504 -0
  519. package/src/renderer/utils/agentMessages.ts +749 -0
  520. package/src/renderer/utils/voice-directives.ts +169 -0
  521. package/src/shared/channelMessages.ts +213 -0
  522. package/src/shared/types.ts +3608 -0
  523. package/tsconfig.electron.json +26 -0
  524. package/tsconfig.json +26 -0
  525. package/tsconfig.node.json +10 -0
  526. 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
+ ];