@hybridaione/hybridclaw 0.12.11 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (398) hide show
  1. package/CHANGELOG.md +99 -1
  2. package/README.md +23 -5
  3. package/community-skills/himalaya/SKILL.md +1 -1
  4. package/config.example.json +6 -0
  5. package/console/dist/assets/chat-BSXPZ8qI.css +1 -0
  6. package/console/dist/assets/{chat-BzfDrs0I.js → chat-FEmn1-LG.js} +25 -25
  7. package/console/dist/assets/index-D63KL_Xr.js +15 -0
  8. package/console/dist/assets/index-DbvykpXR.css +1 -0
  9. package/console/dist/assets/{terminal-CHC7yoWJ.js → terminal-Bg7qhQCF.js} +1 -1
  10. package/console/dist/index.html +7 -7
  11. package/container/dist/browser-tools.js +2 -1
  12. package/container/dist/browser-tools.js.map +1 -1
  13. package/container/dist/index.js +25 -9
  14. package/container/dist/index.js.map +1 -1
  15. package/container/dist/providers/anthropic.js +714 -0
  16. package/container/dist/providers/anthropic.js.map +1 -0
  17. package/container/dist/providers/auxiliary.js +4 -0
  18. package/container/dist/providers/auxiliary.js.map +1 -1
  19. package/container/dist/providers/hybridai.js +14 -7
  20. package/container/dist/providers/hybridai.js.map +1 -1
  21. package/container/dist/providers/provider-ids.js +1 -0
  22. package/container/dist/providers/provider-ids.js.map +1 -1
  23. package/container/dist/providers/router.js +11 -0
  24. package/container/dist/providers/router.js.map +1 -1
  25. package/container/dist/providers/shared.js +22 -20
  26. package/container/dist/providers/shared.js.map +1 -1
  27. package/container/dist/tool-parallelism.js +0 -2
  28. package/container/dist/tool-parallelism.js.map +1 -1
  29. package/container/dist/tools.js +43 -31
  30. package/container/dist/tools.js.map +1 -1
  31. package/container/dist/types.js.map +1 -1
  32. package/container/package-lock.json +2 -2
  33. package/container/package.json +1 -1
  34. package/container/shared/anthropic-utils.d.ts +10 -0
  35. package/container/shared/anthropic-utils.js +31 -0
  36. package/container/shared/message-tool-channels.d.ts +29 -0
  37. package/container/shared/message-tool-channels.js +47 -0
  38. package/container/shared/provider-context.d.ts +1 -0
  39. package/container/shared/provider-context.js +6 -1
  40. package/container/src/browser-tools.ts +5 -0
  41. package/container/src/index.ts +32 -1
  42. package/container/src/providers/anthropic.ts +883 -0
  43. package/container/src/providers/auxiliary.ts +4 -0
  44. package/container/src/providers/hybridai.ts +16 -6
  45. package/container/src/providers/provider-ids.ts +1 -0
  46. package/container/src/providers/router.ts +15 -0
  47. package/container/src/providers/shared.ts +23 -20
  48. package/container/src/tool-parallelism.ts +0 -2
  49. package/container/src/tools.ts +49 -33
  50. package/container/src/types.ts +6 -1
  51. package/dist/agent/prompt-hooks.d.ts.map +1 -1
  52. package/dist/agent/prompt-hooks.js +52 -58
  53. package/dist/agent/prompt-hooks.js.map +1 -1
  54. package/dist/agents/agent-config-command.d.ts +12 -0
  55. package/dist/agents/agent-config-command.d.ts.map +1 -0
  56. package/dist/agents/agent-config-command.js +372 -0
  57. package/dist/agents/agent-config-command.js.map +1 -0
  58. package/dist/agents/agent-registry.d.ts.map +1 -1
  59. package/dist/agents/agent-registry.js +0 -1
  60. package/dist/agents/agent-registry.js.map +1 -1
  61. package/dist/agents/agent-runtime-config.d.ts +3 -0
  62. package/dist/agents/agent-runtime-config.d.ts.map +1 -0
  63. package/dist/agents/agent-runtime-config.js +65 -0
  64. package/dist/agents/agent-runtime-config.js.map +1 -0
  65. package/dist/auth/anthropic-auth.d.ts +42 -0
  66. package/dist/auth/anthropic-auth.d.ts.map +1 -0
  67. package/dist/auth/anthropic-auth.js +200 -0
  68. package/dist/auth/anthropic-auth.js.map +1 -0
  69. package/dist/auth/google-auth.d.ts +45 -0
  70. package/dist/auth/google-auth.d.ts.map +1 -0
  71. package/dist/auth/google-auth.js +322 -0
  72. package/dist/auth/google-auth.js.map +1 -0
  73. package/dist/channels/channel-registry.d.ts.map +1 -1
  74. package/dist/channels/channel-registry.js +0 -3
  75. package/dist/channels/channel-registry.js.map +1 -1
  76. package/dist/channels/channel-runtime-factory.d.ts +31 -0
  77. package/dist/channels/channel-runtime-factory.d.ts.map +1 -0
  78. package/dist/channels/channel-runtime-factory.js +68 -0
  79. package/dist/channels/channel-runtime-factory.js.map +1 -0
  80. package/dist/channels/discord/runtime.d.ts.map +1 -1
  81. package/dist/channels/discord/runtime.js +5 -1
  82. package/dist/channels/discord/runtime.js.map +1 -1
  83. package/dist/channels/email/runtime.d.ts +8 -9
  84. package/dist/channels/email/runtime.d.ts.map +1 -1
  85. package/dist/channels/email/runtime.js +24 -31
  86. package/dist/channels/email/runtime.js.map +1 -1
  87. package/dist/channels/imessage/runtime.d.ts +7 -8
  88. package/dist/channels/imessage/runtime.d.ts.map +1 -1
  89. package/dist/channels/imessage/runtime.js +19 -23
  90. package/dist/channels/imessage/runtime.js.map +1 -1
  91. package/dist/channels/message-tool-advertising.d.ts +6 -0
  92. package/dist/channels/message-tool-advertising.d.ts.map +1 -0
  93. package/dist/channels/message-tool-advertising.js +20 -0
  94. package/dist/channels/message-tool-advertising.js.map +1 -0
  95. package/dist/channels/msteams/runtime.d.ts.map +1 -1
  96. package/dist/channels/msteams/runtime.js +0 -5
  97. package/dist/channels/msteams/runtime.js.map +1 -1
  98. package/dist/channels/msteams/stream.d.ts.map +1 -1
  99. package/dist/channels/msteams/stream.js +0 -2
  100. package/dist/channels/msteams/stream.js.map +1 -1
  101. package/dist/channels/msteams/typing.d.ts.map +1 -1
  102. package/dist/channels/msteams/typing.js +0 -2
  103. package/dist/channels/msteams/typing.js.map +1 -1
  104. package/dist/channels/msteams/utils.d.ts +1 -1
  105. package/dist/channels/msteams/utils.d.ts.map +1 -1
  106. package/dist/channels/msteams/utils.js +1 -3
  107. package/dist/channels/msteams/utils.js.map +1 -1
  108. package/dist/channels/slack/runtime.d.ts.map +1 -1
  109. package/dist/channels/slack/runtime.js +183 -191
  110. package/dist/channels/slack/runtime.js.map +1 -1
  111. package/dist/channels/slack/slash-commands.d.ts.map +1 -1
  112. package/dist/channels/slack/slash-commands.js +1 -3
  113. package/dist/channels/slack/slash-commands.js.map +1 -1
  114. package/dist/channels/voice/conversation-relay.js +1 -1
  115. package/dist/channels/voice/conversation-relay.js.map +1 -1
  116. package/dist/channels/voice/runtime.d.ts.map +1 -1
  117. package/dist/channels/voice/runtime.js +1 -3
  118. package/dist/channels/voice/runtime.js.map +1 -1
  119. package/dist/channels/voice/twilio-manager.d.ts.map +1 -1
  120. package/dist/channels/voice/twilio-manager.js +2 -6
  121. package/dist/channels/voice/twilio-manager.js.map +1 -1
  122. package/dist/channels/whatsapp/connection.d.ts.map +1 -1
  123. package/dist/channels/whatsapp/connection.js +19 -1
  124. package/dist/channels/whatsapp/connection.js.map +1 -1
  125. package/dist/channels/whatsapp/runtime.d.ts +8 -9
  126. package/dist/channels/whatsapp/runtime.d.ts.map +1 -1
  127. package/dist/channels/whatsapp/runtime.js +21 -31
  128. package/dist/channels/whatsapp/runtime.js.map +1 -1
  129. package/dist/cli/agent-command.d.ts.map +1 -1
  130. package/dist/cli/agent-command.js +52 -17
  131. package/dist/cli/agent-command.js.map +1 -1
  132. package/dist/cli/auth-command.d.ts.map +1 -1
  133. package/dist/cli/auth-command.js +423 -87
  134. package/dist/cli/auth-command.js.map +1 -1
  135. package/dist/cli/help.d.ts +2 -0
  136. package/dist/cli/help.d.ts.map +1 -1
  137. package/dist/cli/help.js +60 -4
  138. package/dist/cli/help.js.map +1 -1
  139. package/dist/cli/skill-command.d.ts.map +1 -1
  140. package/dist/cli/skill-command.js +18 -0
  141. package/dist/cli/skill-command.js.map +1 -1
  142. package/dist/cli.d.ts.map +1 -1
  143. package/dist/cli.js +2 -0
  144. package/dist/cli.js.map +1 -1
  145. package/dist/command-registry.d.ts.map +1 -1
  146. package/dist/command-registry.js +18 -0
  147. package/dist/command-registry.js.map +1 -1
  148. package/dist/config/config.d.ts +4 -0
  149. package/dist/config/config.d.ts.map +1 -1
  150. package/dist/config/config.js +11 -3
  151. package/dist/config/config.js.map +1 -1
  152. package/dist/config/runtime-config.d.ts +8 -1
  153. package/dist/config/runtime-config.d.ts.map +1 -1
  154. package/dist/config/runtime-config.js +61 -0
  155. package/dist/config/runtime-config.js.map +1 -1
  156. package/dist/doctor/checks/credentials.d.ts.map +1 -1
  157. package/dist/doctor/checks/credentials.js +1 -0
  158. package/dist/doctor/checks/credentials.js.map +1 -1
  159. package/dist/doctor/checks/providers.d.ts.map +1 -1
  160. package/dist/doctor/checks/providers.js +29 -1
  161. package/dist/doctor/checks/providers.js.map +1 -1
  162. package/dist/doctor/provider-probes.d.ts +1 -0
  163. package/dist/doctor/provider-probes.d.ts.map +1 -1
  164. package/dist/doctor/provider-probes.js +77 -1
  165. package/dist/doctor/provider-probes.js.map +1 -1
  166. package/dist/doctor/utils.d.ts.map +1 -1
  167. package/dist/doctor/utils.js +0 -2
  168. package/dist/doctor/utils.js.map +1 -1
  169. package/dist/evals/locomo-official-scoring.d.ts.map +1 -1
  170. package/dist/evals/locomo-official-scoring.js +0 -1
  171. package/dist/evals/locomo-official-scoring.js.map +1 -1
  172. package/dist/gateway/docs.d.ts.map +1 -1
  173. package/dist/gateway/docs.js +91 -27
  174. package/dist/gateway/docs.js.map +1 -1
  175. package/dist/gateway/gateway-http-server.d.ts.map +1 -1
  176. package/dist/gateway/gateway-http-server.js +31 -23
  177. package/dist/gateway/gateway-http-server.js.map +1 -1
  178. package/dist/gateway/gateway-provider-service.d.ts.map +1 -1
  179. package/dist/gateway/gateway-provider-service.js +15 -0
  180. package/dist/gateway/gateway-provider-service.js.map +1 -1
  181. package/dist/gateway/gateway-service.d.ts.map +1 -1
  182. package/dist/gateway/gateway-service.js +18 -2
  183. package/dist/gateway/gateway-service.js.map +1 -1
  184. package/dist/gateway/gateway-types.d.ts +1 -1
  185. package/dist/gateway/gateway-types.d.ts.map +1 -1
  186. package/dist/gateway/gateway-types.js.map +1 -1
  187. package/dist/gateway/gateway.js +4 -1
  188. package/dist/gateway/gateway.js.map +1 -1
  189. package/dist/gateway/skill-commands.d.ts.map +1 -1
  190. package/dist/gateway/skill-commands.js +22 -1
  191. package/dist/gateway/skill-commands.js.map +1 -1
  192. package/dist/infra/container-runner.d.ts.map +1 -1
  193. package/dist/infra/container-runner.js +28 -14
  194. package/dist/infra/container-runner.js.map +1 -1
  195. package/dist/infra/host-runner.d.ts.map +1 -1
  196. package/dist/infra/host-runner.js +27 -14
  197. package/dist/infra/host-runner.js.map +1 -1
  198. package/dist/infra/ipc.d.ts +2 -1
  199. package/dist/infra/ipc.d.ts.map +1 -1
  200. package/dist/infra/ipc.js +5 -2
  201. package/dist/infra/ipc.js.map +1 -1
  202. package/dist/infra/worker-signature.d.ts +2 -0
  203. package/dist/infra/worker-signature.d.ts.map +1 -1
  204. package/dist/infra/worker-signature.js +2 -0
  205. package/dist/infra/worker-signature.js.map +1 -1
  206. package/dist/logger.d.ts.map +1 -1
  207. package/dist/logger.js +0 -2
  208. package/dist/logger.js.map +1 -1
  209. package/dist/memory/memory-consolidation.d.ts.map +1 -1
  210. package/dist/memory/memory-consolidation.js +0 -8
  211. package/dist/memory/memory-consolidation.js.map +1 -1
  212. package/dist/memory/memory-service.d.ts.map +1 -1
  213. package/dist/memory/memory-service.js +0 -2
  214. package/dist/memory/memory-service.js.map +1 -1
  215. package/dist/observability/otel.js +0 -1
  216. package/dist/observability/otel.js.map +1 -1
  217. package/dist/onboarding.d.ts +1 -1
  218. package/dist/onboarding.d.ts.map +1 -1
  219. package/dist/onboarding.js +165 -51
  220. package/dist/onboarding.js.map +1 -1
  221. package/dist/providers/anthropic-discovery.d.ts +18 -0
  222. package/dist/providers/anthropic-discovery.d.ts.map +1 -0
  223. package/dist/providers/anthropic-discovery.js +169 -0
  224. package/dist/providers/anthropic-discovery.js.map +1 -0
  225. package/dist/providers/anthropic-utils.d.ts +12 -0
  226. package/dist/providers/anthropic-utils.d.ts.map +1 -0
  227. package/dist/providers/anthropic-utils.js +27 -0
  228. package/dist/providers/anthropic-utils.js.map +1 -0
  229. package/dist/providers/anthropic.d.ts +0 -1
  230. package/dist/providers/anthropic.d.ts.map +1 -1
  231. package/dist/providers/anthropic.js +42 -3
  232. package/dist/providers/anthropic.js.map +1 -1
  233. package/dist/providers/auxiliary.d.ts.map +1 -1
  234. package/dist/providers/auxiliary.js +9 -0
  235. package/dist/providers/auxiliary.js.map +1 -1
  236. package/dist/providers/codex-constants.d.ts.map +1 -1
  237. package/dist/providers/codex-constants.js +0 -5
  238. package/dist/providers/codex-constants.js.map +1 -1
  239. package/dist/providers/codex-discovery.d.ts.map +1 -1
  240. package/dist/providers/codex-discovery.js +29 -48
  241. package/dist/providers/codex-discovery.js.map +1 -1
  242. package/dist/providers/huggingface-discovery.d.ts.map +1 -1
  243. package/dist/providers/huggingface-discovery.js +26 -39
  244. package/dist/providers/huggingface-discovery.js.map +1 -1
  245. package/dist/providers/hybridai-discovery.d.ts.map +1 -1
  246. package/dist/providers/hybridai-discovery.js +70 -63
  247. package/dist/providers/hybridai-discovery.js.map +1 -1
  248. package/dist/providers/hybridai-models.d.ts.map +1 -1
  249. package/dist/providers/hybridai-models.js +0 -10
  250. package/dist/providers/hybridai-models.js.map +1 -1
  251. package/dist/providers/mistral-discovery.d.ts.map +1 -1
  252. package/dist/providers/mistral-discovery.js +45 -51
  253. package/dist/providers/mistral-discovery.js.map +1 -1
  254. package/dist/providers/model-catalog.d.ts.map +1 -1
  255. package/dist/providers/model-catalog.js +18 -1
  256. package/dist/providers/model-catalog.js.map +1 -1
  257. package/dist/providers/openai-compat-discovery.d.ts.map +1 -1
  258. package/dist/providers/openai-compat-discovery.js +20 -37
  259. package/dist/providers/openai-compat-discovery.js.map +1 -1
  260. package/dist/providers/openrouter-discovery.d.ts.map +1 -1
  261. package/dist/providers/openrouter-discovery.js +42 -48
  262. package/dist/providers/openrouter-discovery.js.map +1 -1
  263. package/dist/providers/provider-ids.d.ts +2 -2
  264. package/dist/providers/provider-ids.d.ts.map +1 -1
  265. package/dist/providers/provider-ids.js +2 -1
  266. package/dist/providers/provider-ids.js.map +1 -1
  267. package/dist/providers/recommended-models.d.ts.map +1 -1
  268. package/dist/providers/recommended-models.js +0 -1
  269. package/dist/providers/recommended-models.js.map +1 -1
  270. package/dist/providers/task-routing.d.ts.map +1 -1
  271. package/dist/providers/task-routing.js +6 -2
  272. package/dist/providers/task-routing.js.map +1 -1
  273. package/dist/providers/types.d.ts +1 -0
  274. package/dist/providers/types.d.ts.map +1 -1
  275. package/dist/providers/utils.d.ts +11 -1
  276. package/dist/providers/utils.d.ts.map +1 -1
  277. package/dist/providers/utils.js +36 -6
  278. package/dist/providers/utils.js.map +1 -1
  279. package/dist/security/mount-security.d.ts.map +1 -1
  280. package/dist/security/mount-security.js +0 -1
  281. package/dist/security/mount-security.js.map +1 -1
  282. package/dist/security/redact.d.ts +2 -0
  283. package/dist/security/redact.d.ts.map +1 -1
  284. package/dist/security/redact.js +13 -1
  285. package/dist/security/redact.js.map +1 -1
  286. package/dist/security/runtime-secrets.d.ts +1 -1
  287. package/dist/security/runtime-secrets.d.ts.map +1 -1
  288. package/dist/security/runtime-secrets.js +1 -0
  289. package/dist/security/runtime-secrets.js.map +1 -1
  290. package/dist/skills/skills-install.d.ts +3 -0
  291. package/dist/skills/skills-install.d.ts.map +1 -1
  292. package/dist/skills/skills-install.js +48 -0
  293. package/dist/skills/skills-install.js.map +1 -1
  294. package/dist/skills/skills.d.ts.map +1 -1
  295. package/dist/skills/skills.js +1 -4
  296. package/dist/skills/skills.js.map +1 -1
  297. package/dist/tui-approval-prompt.d.ts.map +1 -1
  298. package/dist/tui-approval-prompt.js +0 -2
  299. package/dist/tui-approval-prompt.js.map +1 -1
  300. package/dist/tui-slash-command.d.ts.map +1 -1
  301. package/dist/tui-slash-command.js +1 -0
  302. package/dist/tui-slash-command.js.map +1 -1
  303. package/dist/tui.d.ts.map +1 -1
  304. package/dist/tui.js +0 -4
  305. package/dist/tui.js.map +1 -1
  306. package/dist/types/container.d.ts +3 -0
  307. package/dist/types/container.d.ts.map +1 -1
  308. package/dist/types/models.d.ts +2 -0
  309. package/dist/types/models.d.ts.map +1 -1
  310. package/dist/types/models.js.map +1 -1
  311. package/dist/types/scheduler.d.ts.map +1 -1
  312. package/dist/utils/transport-errors.d.ts.map +1 -1
  313. package/dist/utils/transport-errors.js +0 -3
  314. package/dist/utils/transport-errors.js.map +1 -1
  315. package/dist/{channels/voice/utils.d.ts → utils/type-guards.d.ts} +1 -1
  316. package/dist/utils/type-guards.d.ts.map +1 -0
  317. package/dist/utils/type-guards.js +4 -0
  318. package/dist/utils/type-guards.js.map +1 -0
  319. package/docs/404.html +1 -1
  320. package/docs/about/index.html +13 -0
  321. package/docs/agents.html +0 -7
  322. package/docs/chat.html +2 -1
  323. package/docs/content/README.md +31 -31
  324. package/docs/content/developer-guide/approvals.md +7 -5
  325. package/docs/content/extensibility/README.md +4 -0
  326. package/docs/content/extensibility/agent-packages.md +61 -0
  327. package/docs/content/extensibility/skills.md +10 -9
  328. package/docs/content/getting-started/authentication.md +45 -11
  329. package/docs/content/guides/bundled-skills.md +5 -5
  330. package/docs/content/guides/skills/README.md +4 -4
  331. package/docs/content/guides/skills/development.md +115 -1
  332. package/docs/content/guides/skills/integrations.md +113 -4
  333. package/docs/content/guides/skills/publishing.md +38 -5
  334. package/docs/content/reference/commands.md +36 -12
  335. package/docs/content/reference/configuration.md +12 -8
  336. package/docs/content/reference/model-selection.md +19 -10
  337. package/docs/content/tutorials/README.md +88 -0
  338. package/docs/content/tutorials/_category_.json +5 -0
  339. package/docs/content/tutorials/brand-guidelines-check.md +287 -0
  340. package/docs/content/tutorials/campaign-pulse-digest.md +143 -0
  341. package/docs/content/tutorials/customer-feedback-digest.md +120 -0
  342. package/docs/content/tutorials/daily-pipeline-standup.md +125 -0
  343. package/docs/content/tutorials/devrel-engine.md +159 -0
  344. package/docs/content/tutorials/feature-explainer-videos.md +161 -0
  345. package/docs/content/tutorials/forwarded-lead-triage.md +133 -0
  346. package/docs/content/tutorials/invoice-receipt-collector.md +245 -0
  347. package/docs/content/tutorials/mini-feature-manual.md +197 -0
  348. package/docs/content/tutorials/morning-competitor-briefing.md +250 -0
  349. package/docs/content/tutorials/newsletter-engine.md +157 -0
  350. package/docs/content/tutorials/post-demo-follow-up-pack.md +134 -0
  351. package/docs/content/tutorials/proposal-generator.md +139 -0
  352. package/docs/content/tutorials/release-launch-kit.md +156 -0
  353. package/docs/content/tutorials/team-telegram-deal-desk.md +146 -0
  354. package/docs/content/tutorials/webinar-machine.md +179 -0
  355. package/docs/content/tutorials/weekly-content-calendar.md +135 -0
  356. package/docs/content/tutorials/whatsapp-lead-follow-up.md +131 -0
  357. package/docs/development/README.md +13 -10
  358. package/docs/development/extensibility/README.md +4 -0
  359. package/docs/development/extensibility/agent-packages.md +61 -0
  360. package/docs/development/extensibility/skills.md +10 -9
  361. package/docs/development/getting-started/authentication.md +45 -10
  362. package/docs/development/guides/bundled-skills.md +5 -5
  363. package/docs/development/guides/skills/README.md +4 -4
  364. package/docs/development/guides/skills/development.md +115 -1
  365. package/docs/development/guides/skills/integrations.md +113 -4
  366. package/docs/development/guides/skills/publishing.md +38 -5
  367. package/docs/development/internals/approvals.md +7 -5
  368. package/docs/development/reference/commands.md +37 -11
  369. package/docs/development/reference/configuration.md +12 -8
  370. package/docs/development/reference/model-selection.md +15 -3
  371. package/docs/index.html +1 -1
  372. package/docs/static/docs.js +89 -3
  373. package/package.json +1 -1
  374. package/skills/1password/SKILL.md +2 -2
  375. package/skills/excalidraw/SKILL.md +146 -0
  376. package/skills/excalidraw/agents/openai.yaml +4 -0
  377. package/skills/excalidraw/references/colors.md +45 -0
  378. package/skills/excalidraw/references/dark-mode.md +37 -0
  379. package/skills/excalidraw/references/examples.md +266 -0
  380. package/skills/excalidraw/scripts/upload.mjs +112 -0
  381. package/skills/gh-issues/SKILL.md +539 -0
  382. package/skills/gog/SKILL.md +131 -0
  383. package/skills/google-workspace/SKILL.md +19 -13
  384. package/skills/gws/SKILL.md +106 -0
  385. package/skills/gws/references/calendar.md +41 -0
  386. package/skills/gws/references/drive-docs-sheets.md +57 -0
  387. package/skills/gws/references/gmail.md +37 -0
  388. package/skills/gws/references/workflows.md +39 -0
  389. package/skills/manim-video/SKILL.md +2 -2
  390. package/skills/pdf/scripts/create_pdf.mjs +0 -1
  391. package/skills/personality/SKILL.md +1 -0
  392. package/skills/wordpress/SKILL.md +1 -1
  393. package/console/dist/assets/chat-DAI4OGIa.css +0 -1
  394. package/console/dist/assets/index-Cr9FpxIn.js +0 -15
  395. package/console/dist/assets/index-DQoS6dsR.css +0 -1
  396. package/dist/channels/voice/utils.d.ts.map +0 -1
  397. package/dist/channels/voice/utils.js +0 -4
  398. package/dist/channels/voice/utils.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,104 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## [0.13.0](https://github.com/HybridAIOne/hybridclaw/tree/v0.13.0) - 2026-04-22
6
+
7
+ ### Added
8
+
9
+ - **Direct Anthropic provider**: Added first-class `anthropic/...` model
10
+ routing with `hybridclaw auth login anthropic`, direct Messages API support,
11
+ optional official `claude -p` transport in host sandbox mode, runtime model
12
+ discovery, doctor/onboarding coverage, and container-side Anthropic provider
13
+ execution.
14
+ - **JSON agent configuration command**: Added `hybridclaw agent config` for
15
+ platform-generated agent JSON payloads. The command can upsert agent
16
+ metadata, write bootstrap markdown files, optionally activate the agent, and
17
+ import `imageAsset` URLs or local files into the agent workspace.
18
+ - **Bundled `gog` Google Workspace skill**: Added API-backed Gmail, Google
19
+ Calendar, Drive, Contacts, Sheets, and Docs workflows through the `gog` CLI,
20
+ including the Homebrew install helper and Google OAuth setup via
21
+ `hybridclaw auth login google`. HybridClaw stores the OAuth client secret
22
+ and refresh token in encrypted runtime secrets, mints short-lived access
23
+ tokens on the host, and injects only `GOG_ACCESS_TOKEN` plus `GOG_ACCOUNT`
24
+ into the agent runtime.
25
+ - **Bundled `gws` Google Workspace skill**: Added a Google Workspace CLI skill
26
+ with progressive disclosure, auth preflight, and focused reference material
27
+ for Calendar, Gmail, Drive, Docs, Sheets, and common workflows.
28
+ - **Bundled `gh-issues` skill**: Added a HybridClaw-native GitHub issue queue
29
+ workflow that can fetch live issue lists, filter batches, confirm selected
30
+ issues, deduplicate issue-fix branches, delegate focused PRs, watch queues,
31
+ and revisit review feedback on open issue-fix PRs.
32
+ - **Bundled `excalidraw` skill**: Added editable `.excalidraw` diagram
33
+ creation and revision guidance with reference material for colors, dark
34
+ mode, examples, and an upload helper.
35
+ - **Small-business workflow tutorials**: Added a top-level Tutorials section
36
+ covering practical owner, GTM, marketing, sales, DevRel, content, webinar,
37
+ invoicing, and release-launch workflows.
38
+ - **Roman personality option**: Added a bundled Roman personality profile.
39
+ - **Console view switch and chat route refresh**: Added a shared view switch,
40
+ larger admin brand treatment, collapsible desktop navigation, and a refreshed
41
+ top-level `/chat` SPA route.
42
+ - **Release image promotion action**: Added a dedicated GitHub Action for
43
+ release image promotion and tightened release-image workflow caching.
44
+
45
+ ### Changed
46
+
47
+ - **Anthropic provider handling is production-routed**: Anthropic auth status,
48
+ provider probing, model discovery, task routing, stream parsing, timeout
49
+ behavior, Claude CLI credential lookup, and credential environment handling
50
+ now use provider-specific code paths instead of OpenAI-compatible fallbacks.
51
+ - **Google Workspace skill routing prefers `gog` for API access**: The
52
+ browser-oriented `google-workspace` skill now defers to the bundled `gog`
53
+ skill when API-backed Gmail, Calendar, Drive, Contacts, Sheets, or Docs
54
+ access is available.
55
+ - **Browser chat is the primary local web surface**: The gateway root routes to
56
+ chat, `/chat` is mounted as a top-level console SPA route, the standalone
57
+ chat view owns its viewport, and server-rendered pages use document
58
+ navigation where appropriate.
59
+ - **Chat composer and message actions were refined**: Assistant message actions
60
+ are always visible, regenerate precedes copy, the composer uses a two-row
61
+ layout and the full main-column width, active sessions use accent text, and
62
+ the new-conversation/send controls use lighter chrome.
63
+ - **Channel runtime lifecycle code is shared**: Built-in channel transports now
64
+ use a shared runtime factory for common lifecycle handling, with explicit
65
+ opt-outs where a transport needs custom behavior.
66
+ - **Provider discovery is more consistent**: Discovery caches and lookup
67
+ aliases are shared across providers, HybridAI model alias lookup is indexed,
68
+ provider integer parsing is centralized, and discovery refresh failures are
69
+ logged consistently.
70
+ - **Prompt and tool summaries are cleaner**: Message-tool advertising is scoped
71
+ to active channels, and prompt hook output avoids redundant comment noise.
72
+
73
+ ### Fixed
74
+
75
+ - **Gateway restarts no longer hang during shutdown**: The gateway shutdown
76
+ path now drains pending credential-save work in order, avoiding a restart
77
+ hang during WhatsApp shutdown.
78
+ - **Honcho memory prefetch races are closed**: Prompt-context assembly waits
79
+ for in-flight Honcho prefetch work before reading memory context.
80
+ - **Inactive channel send tools no longer leak into prompts**: The runtime only
81
+ advertises message-send tools for channels that are active in the current
82
+ configuration.
83
+ - **OpenRouter free-model lookups normalize correctly**: OpenRouter discovery
84
+ handles free model lookup aliases consistently.
85
+ - **Slack runtime sends are guarded more tightly**: Slack send handling now
86
+ validates runtime state before attempting delivery.
87
+ - **Agent avatars load behind web auth**: Chat agent avatars are fetched with
88
+ authenticated requests and eagerly loaded when chat state initializes.
89
+ - **Chat replay restores request context from history**: Regenerating from a
90
+ historic assistant message hydrates the stored replay request before
91
+ resubmitting.
92
+ - **Collapsed sidebars keep the expected width**: The collapsed console rail
93
+ shrinks to icon width and exposes nav tooltips instead of leaving excess
94
+ sidebar space.
95
+ - **Google Workspace replies preserve user-visible addresses**: Assistant
96
+ replies and streamed chat text no longer redact ordinary email addresses
97
+ before they reach the user. Redaction still applies to audit, logging,
98
+ approval/control previews, and observability paths.
99
+ - **HybridAI streaming avoids duplicate assistant text**: The HybridAI stream
100
+ adapter now handles chunks that include both cumulative `message.content` and
101
+ incremental `delta.content` without emitting the same text twice.
102
+
5
103
  ## [0.12.11](https://github.com/HybridAIOne/hybridclaw/tree/v0.12.11)
6
104
 
7
105
  ### Added
@@ -1279,7 +1377,7 @@
1279
1377
  through shared routing for Discord, WhatsApp, email, and local clients,
1280
1378
  including native vision/audio injection paths and stronger preference for
1281
1379
  current-turn local files over history rediscovery.
1282
- - **Auxiliary task/provider routing**: Added Hermes-style auxiliary routing and
1380
+ - **Auxiliary task/provider routing**: Added auxiliary routing and
1283
1381
  tighter provider fallback handling so deferred or background tasks pick the
1284
1382
  right model more predictably.
1285
1383
  - **Discord activation config cleanup**: Removed the obsolete
package/README.md CHANGED
@@ -114,6 +114,9 @@ Once the gateway is running, open HybridClaw locally:
114
114
  - `/admin/agents` edits allowlisted bootstrap markdown files such as
115
115
  `AGENTS.md`, keeps saved revisions, and restores earlier versions from the
116
116
  browser.
117
+ - `hybridclaw agent config` accepts generated JSON payloads to upsert agent
118
+ metadata, write bootstrap markdown, import profile images into the agent
119
+ workspace, and optionally activate the agent.
117
120
  - `/admin/channels` edits transport config, encrypted channel credentials,
118
121
  Twilio voice settings, and per-channel instructions that are injected into
119
122
  prompts at runtime.
@@ -135,6 +138,9 @@ Once the gateway is running, open HybridClaw locally:
135
138
  `config.json` becomes invalid.
136
139
  - `hybridclaw skill import` supports community sources, local directories,
137
140
  and `.zip` archives.
141
+ - The bundled tutorials cover owner, GTM, marketing, sales, DevRel, content,
142
+ invoicing, webinar, and release-launch workflows that can run from the TUI,
143
+ web chat, or connected channels.
138
144
  - `hybridclaw eval hybridai-skills` turns the bundled skills pages' "Try it
139
145
  yourself" prompts into a local eval suite, and live summaries surface the
140
146
  observed skill, artifact presence, and counted tool-call totals.
@@ -146,14 +152,22 @@ Once the gateway is running, open HybridClaw locally:
146
152
 
147
153
  ## Models, Skills, and Memory
148
154
 
149
- - `hybridclaw auth login` and `/model list` cover HybridAI, Codex, OpenRouter,
150
- Mistral, Hugging Face, Gemini, DeepSeek, xAI, Z.AI, Kimi, MiniMax,
151
- DashScope, Xiaomi, Kilo Code, and local backends such as Ollama, LM Studio,
152
- llama.cpp, and vLLM. Remote OpenAI-compatible providers can merge
153
- runtime-discovered model catalogs with operator-pinned lists.
155
+ - `hybridclaw auth login` and `/model list` cover HybridAI, Codex,
156
+ Anthropic, OpenRouter, Mistral, Hugging Face, Gemini, DeepSeek, xAI, Z.AI,
157
+ Kimi, MiniMax, DashScope, Xiaomi, Kilo Code, and local backends such as
158
+ Ollama, LM Studio, llama.cpp, and vLLM. Remote OpenAI-compatible providers
159
+ can merge runtime-discovered model catalogs with operator-pinned lists.
160
+ - Anthropic can run through the direct Messages API with `ANTHROPIC_API_KEY`
161
+ or through the official Claude CLI transport in host sandbox mode.
162
+ - Google OAuth credentials for Workspace skills live in the encrypted runtime
163
+ secret store; agent runtimes receive short-lived access tokens for `gog` and
164
+ `gws` instead of long-lived refresh tokens.
154
165
  - Skills can be enabled or disabled globally or per channel from
155
166
  `hybridclaw skill enable|disable`, TUI `/skill config`, or the admin
156
167
  `Skills` page.
168
+ - Bundled skills include API-backed Google Workspace workflows (`gog`, `gws`),
169
+ GitHub issue queue processing (`gh-issues`), and editable Excalidraw diagram
170
+ creation.
157
171
  - Built-in office skills handle longer PDF creation flows cleanly: the bundled
158
172
  PDF creator wraps long lines, honors explicit `\n`, and adds pages
159
173
  automatically when reports or invoices spill past the first page.
@@ -250,6 +264,10 @@ Browse the full manual at
250
264
  [WhatsApp](https://www.hybridclaw.io/docs/channels/whatsapp),
251
265
  [iMessage](https://www.hybridclaw.io/docs/channels/imessage), and
252
266
  [Microsoft Teams](https://www.hybridclaw.io/docs/channels/msteams)
267
+ - Tutorials:
268
+ [Practical Workflows](https://www.hybridclaw.io/docs/tutorials) for owner,
269
+ GTM, marketing, sales, DevRel, content, invoicing, webinar, and release
270
+ launch workflows
253
271
  - Skills and plugins:
254
272
  [Extensibility](https://www.hybridclaw.io/docs/extensibility),
255
273
  [Bundled Skills](https://www.hybridclaw.io/docs/guides/bundled-skills),
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: himalaya
3
- description: Manage email with the Himalaya CLI: configure accounts, list folders, read or search messages, draft replies, send mail, or download attachments from the terminal.
3
+ description: "Manage email with the Himalaya CLI: configure accounts, list folders, read or search messages, draft replies, send mail, or download attachments from the terminal."
4
4
  user-invocable: true
5
5
  metadata:
6
6
  hybridclaw:
@@ -231,6 +231,12 @@
231
231
  "codex": {
232
232
  "baseUrl": "https://chatgpt.com/backend-api/codex"
233
233
  },
234
+ "anthropic": {
235
+ "enabled": false,
236
+ "baseUrl": "https://api.anthropic.com/v1",
237
+ "method": "api-key",
238
+ "models": ["anthropic/claude-sonnet-4-6"]
239
+ },
234
240
  "openrouter": {
235
241
  "enabled": false,
236
242
  "baseUrl": "https://openrouter.ai/api/v1",
@@ -0,0 +1 @@
1
+ ._chatPage_1dlp4_1{width:100%;height:100dvh;min-height:0;display:flex;overflow:hidden}._chatPage_1dlp4_1>div{height:100%;min-height:0}._chatSidebarHeader_1dlp4_17{justify-content:space-between;align-items:center;gap:8px;padding:0 4px;display:flex}._chatSidebarContent_1dlp4_25{flex-direction:column;gap:8px;padding:0 4px;display:flex;overflow:hidden}._newChatButton_1dlp4_33{appearance:none;width:100%;color:inherit;font:inherit;border-radius:var(--radius-sm);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:12px;padding:18px 8px;font-weight:500;transition:background .12s;display:flex}._newChatButton_1dlp4_33:hover{background:var(--panel-bg)}._newChatButton_1dlp4_33>span:first-child{justify-content:center;width:20px;font-size:1.25rem;line-height:1;display:inline-flex}._sidebarLabel_1dlp4_63{text-transform:uppercase;letter-spacing:.08em;color:var(--muted-foreground);margin:12px 0 4px;padding:0 6px;font-size:.7rem;font-weight:700}._sessionList_1dlp4_73{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}._sessionItem_1dlp4_82{appearance:none;border-radius:var(--radius-sm);cursor:pointer;text-align:left;width:100%;font:inherit;color:inherit;background:0 0;border:0;flex-direction:column;gap:2px;padding:8px 10px;transition:background .12s;display:flex;overflow:hidden}._sessionItem_1dlp4_82:hover{background:var(--panel-bg)}._sessionItemActive_1dlp4_104 ._sessionTitle_1dlp4_104,._sessionItemActive_1dlp4_104 ._sessionSnippet_1dlp4_105{color:var(--primary)}._sessionItemPending_1dlp4_109{animation:1s ease-in-out infinite _sessionPulse_1dlp4_1}@keyframes _sessionPulse_1dlp4_1{0%,to{opacity:1}50%{opacity:.5}}._sessionTitle_1dlp4_104{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:.875rem;font-weight:500;overflow:hidden}._sessionTime_1dlp4_132{color:var(--muted-foreground);font-size:.72rem}._sessionSnippet_1dlp4_105{color:var(--muted-foreground);white-space:nowrap;text-overflow:ellipsis;font-size:.76rem;overflow:hidden}._sidebarSearchWrap_1dlp4_145{padding:10px 0 4px}._sidebarSearch_1dlp4_145{border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--panel-bg);width:100%;color:var(--text);font:inherit;padding:9px 11px}._sidebarSearch_1dlp4_145::placeholder{color:var(--muted-foreground)}._sidebarSearch_1dlp4_145:focus{outline:2px solid var(--accent-soft);outline-offset:1px;border-color:var(--ring)}._sidebarStatus_1dlp4_169{color:var(--muted-foreground);padding:6px 10px;font-size:.82rem}._chatTopbar_1dlp4_175{flex-shrink:0;justify-content:flex-end;padding:24px 24px 0;display:flex}._chatMain_1dlp4_182{background:var(--page-bg);flex-direction:column;flex:auto;min-width:0;min-height:0;display:flex;position:relative;overflow:hidden}._messageArea_1dlp4_193{scroll-behavior:smooth;flex:auto;min-height:0;padding:16px 24px 12px;overflow-y:auto}._messageList_1dlp4_201{flex-direction:column;gap:12px;width:100%;display:flex}._sidebarCollapseButton_1dlp4_208{align-self:center}._emptyState_1dlp4_212{flex-direction:column;flex:auto;justify-content:center;align-items:center;min-height:0;padding:48px 24px;display:flex}._greeting_1dlp4_222{color:var(--muted-foreground);text-align:center;letter-spacing:-.02em;font-size:clamp(1.6rem,3vw,2.2rem);font-weight:700;line-height:1.3}._messageBlock_1dlp4_231{flex-direction:column;gap:6px;display:flex}._messageBlockUser_1dlp4_237{align-items:flex-end}._messageBlockAssistant_1dlp4_241,._messageBlockSystem_1dlp4_242{align-items:flex-start}._agentLabel_1dlp4_246{color:var(--muted-foreground);align-items:center;gap:6px;padding:0 4px;font-size:.75rem;font-weight:600;display:flex}._agentAvatar_1dlp4_256{object-fit:cover;border-radius:999px;width:20px;height:20px}._agentInitial_1dlp4_263{background:var(--primary);width:20px;height:20px;color:var(--primary-foreground);border-radius:999px;justify-content:center;align-items:center;font-size:.65rem;font-weight:700;display:flex}._bubble_1dlp4_276{word-wrap:break-word;overflow-wrap:break-word;border-radius:14px;max-width:85%;padding:10px 14px;font-size:.92rem;line-height:1.55}._bubbleUser_1dlp4_286{background:linear-gradient(135deg, var(--primary), var(--ring));color:var(--primary-foreground);border-bottom-right-radius:4px}._bubbleAssistant_1dlp4_292{background:var(--card);color:var(--card-foreground);border:1px solid var(--line);box-shadow:var(--shadow-card);border-bottom-left-radius:4px}._bubbleSystem_1dlp4_300{background:var(--accent-soft);color:var(--accent-foreground);text-align:center;align-self:center;max-width:90%;font-size:.84rem}._markdownContent_1dlp4_309{line-height:1.6}._markdownContent_1dlp4_309 h1,._markdownContent_1dlp4_309 h2,._markdownContent_1dlp4_309 h3{color:var(--foreground);letter-spacing:-.02em;margin:.6em 0 .3em;font-weight:600}._markdownContent_1dlp4_309 h1{font-size:1.25rem}._markdownContent_1dlp4_309 h2{font-size:1.12rem}._markdownContent_1dlp4_309 h3{font-size:1rem}._markdownContent_1dlp4_309 p{margin:.4em 0}._markdownContent_1dlp4_309 ul,._markdownContent_1dlp4_309 ol{margin:.4em 0;padding-left:20px}._markdownContent_1dlp4_309 li{margin:2px 0}._markdownContent_1dlp4_309 blockquote{border-left:3px solid var(--line-strong);color:var(--muted-foreground);margin:.5em 0;padding:4px 12px}._markdownContent_1dlp4_309 code{background:var(--muted);color:var(--foreground);border-radius:4px;padding:2px 5px;font-size:.86em}._markdownContent_1dlp4_309 pre{background:var(--terminal);color:var(--terminal-foreground);border-radius:var(--radius-sm);margin:.5em 0;padding:12px 14px;font-size:.84rem;line-height:1.5;overflow-x:auto}._markdownContent_1dlp4_309 pre code{color:inherit;font-size:inherit;background:0 0;border-radius:0;padding:0}._markdownContent_1dlp4_309 hr{border:none;border-top:1px solid var(--line);margin:.8em 0}._markdownContent_1dlp4_309 a{color:var(--primary);text-decoration:none}._markdownContent_1dlp4_309 a:hover{text-decoration:underline}._markdownContent_1dlp4_309 table{border-collapse:collapse;width:100%;margin:.5em 0;font-size:.86rem}._markdownContent_1dlp4_309 th,._markdownContent_1dlp4_309 td{border:1px solid var(--line);text-align:left;padding:6px 10px}._markdownContent_1dlp4_309 th{background:var(--muted);font-weight:600}._markdownContent_1dlp4_309 tbody tr:nth-child(2n){background:var(--muted)}._messageActions_1dlp4_420{gap:4px;padding:0 4px;display:flex}._messageActions_1dlp4_420 ._actionButton_1dlp4_426{width:24px;height:24px;min-height:unset;color:var(--muted-foreground);border-radius:var(--radius-sm);background:0 0;border-color:#0000;font-size:.82rem}._messageActions_1dlp4_420 ._actionButton_1dlp4_426:hover{background:var(--muted);color:var(--foreground)}._actionButtonSuccess_1dlp4_442{color:var(--success)}._branchSwitcher_1dlp4_446{color:var(--muted-foreground);align-items:center;gap:4px;padding:0 4px;font-size:.75rem;display:inline-flex}._branchButton_1dlp4_455{width:22px;height:22px;min-height:unset;border-radius:999px;font-size:.8rem}._branchButton_1dlp4_455:hover{background:var(--muted);color:var(--text)}._branchButton_1dlp4_455:disabled{opacity:.4;cursor:default}._approvalActions_1dlp4_473{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}._approvalAllow_1dlp4_480{border-color:var(--success-border);background:var(--success-soft);color:var(--success)}._artifactCard_1dlp4_486{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--muted);align-items:center;gap:10px;margin-top:8px;padding:10px 14px;display:flex}._artifactFilename_1dlp4_497{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:.84rem;font-weight:500;overflow:hidden}._artifactBadge_1dlp4_506{background:var(--accent-soft);color:var(--accent-foreground);border-radius:4px;flex-shrink:0;padding:2px 6px;font-size:.7rem;font-weight:500}._artifactDownload_1dlp4_516{color:var(--primary);cursor:pointer;background:0 0;border:none;flex-shrink:0;margin-left:auto;padding:0;font-size:.82rem;text-decoration:none}._artifactDownload_1dlp4_516:hover{text-decoration:underline}._artifactDownload_1dlp4_516:disabled{opacity:.6;cursor:default;text-decoration:none}._artifactPreview_1dlp4_538{border-radius:var(--radius-sm);max-width:100%;margin-top:8px}._artifactPreview_1dlp4_538 img{border-radius:var(--radius-sm);max-width:100%}._thinking_1dlp4_549{align-items:center;gap:4px;padding:10px 14px;display:flex}._thinkingDot_1dlp4_556{background:var(--muted-foreground);border-radius:999px;width:7px;height:7px;animation:1.2s ease-in-out infinite _thinkingBounce_1dlp4_1}._thinkingDot_1dlp4_556:nth-child(2){animation-delay:.15s}._thinkingDot_1dlp4_556:nth-child(3){animation-delay:.3s}@keyframes _thinkingBounce_1dlp4_1{0%,80%,to{opacity:.4;transform:scale(.6)}40%{opacity:1;transform:scale(1)}}._composerWrapper_1dlp4_585{flex-shrink:0;padding:0 24px 20px}._composer_1dlp4_585{border:1px solid var(--line-strong);background:var(--panel-bg);width:100%;box-shadow:var(--shadow-raised);border-radius:16px;flex-direction:column;gap:8px;padding:12px 16px;transition:border-color .15s;display:flex}._pendingMediaRow_1dlp4_603{flex-wrap:wrap;gap:6px;padding:10px 14px 0;display:flex}._mediaChip_1dlp4_610{background:var(--muted);color:var(--text);border-radius:6px;align-items:center;gap:4px;max-width:180px;padding:4px 8px;font-size:.78rem;display:inline-flex}._mediaChipName_1dlp4_622{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}._mediaChipRemove_1dlp4_628{width:16px;height:16px;color:var(--muted-foreground);cursor:pointer;background:0 0;border:none;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;font-size:.7rem;display:flex}._mediaChipRemove_1dlp4_628:hover{color:var(--danger)}._composerRow_1dlp4_647{align-items:flex-end;gap:8px;padding:10px 14px;display:flex}._composerActions_1dlp4_654{justify-content:space-between;align-items:center;gap:8px;display:flex}._composerInput_1dlp4_661{resize:none;min-height:36px;max-height:180px;color:var(--text);background:0 0;border:none;outline:none;flex:auto;padding:0;font-size:.92rem;line-height:36px}._composerInput_1dlp4_661:not(:placeholder-shown){padding:6px 0;line-height:1.5}._composerInput_1dlp4_661::placeholder{color:var(--muted-foreground)}._attachButton_1dlp4_684,._sendButton_1dlp4_685{cursor:pointer;border:none;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;transition:background .12s,color .12s;display:flex}._attachButton_1dlp4_684:focus-visible,._sendButton_1dlp4_685:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 55%, transparent);outline-offset:2px}._attachButton_1dlp4_684{color:var(--muted-foreground);background:0 0;font-size:1.2rem}._attachButton_1dlp4_684:hover{background:var(--muted);color:var(--text)}._sendButton_1dlp4_685{color:var(--muted-foreground);border:1px solid var(--line-strong);background:0 0;font-size:.9rem}._sendButton_1dlp4_685:hover:not(:disabled){background:var(--muted);color:var(--text)}._sendButton_1dlp4_685:disabled{opacity:.5;cursor:default}._sendButton_1dlp4_685._stopping_1dlp4_734{background:var(--danger-soft);color:var(--danger)}._slashSuggestions_1dlp4_739{background:var(--popover);border:1px solid var(--line);border-radius:var(--radius-md);max-height:220px;box-shadow:var(--shadow-popover);z-index:20;margin-bottom:4px;position:absolute;bottom:100%;left:0;right:0;overflow-y:auto}._suggestionItem_1dlp4_754{cursor:pointer;flex-direction:column;gap:2px;padding:8px 14px;transition:background .1s;display:flex}._suggestionItem_1dlp4_754:hover,._suggestionItemActive_1dlp4_764{background:var(--muted)}._suggestionLabel_1dlp4_768{color:var(--text);font-size:.86rem;font-weight:500}._suggestionDesc_1dlp4_774{color:var(--muted-foreground);font-size:.76rem}._errorBanner_1dlp4_779{border-radius:var(--radius-sm);background:var(--danger-soft);border:1px solid var(--danger-border);color:var(--danger);width:calc(100% - 48px);max-width:860px;margin:0 auto;padding:8px 14px;font-size:.84rem}._editArea_1dlp4_793{resize:vertical;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--panel-bg);width:100%;min-height:48px;max-height:200px;color:var(--text);padding:8px 10px;font-family:inherit;font-size:.92rem;line-height:1.5}._editButtons_1dlp4_808{gap:6px;margin-top:6px;display:flex}@media (width<=900px){._messageArea_1dlp4_193{padding:16px 16px 8px}._composerWrapper_1dlp4_585{padding:0 16px 12px}._slashSuggestions_1dlp4_739{max-height:40vh}}@media (width<=480px){._bubbleUser_1dlp4_286,._bubbleAssistant_1dlp4_292{max-width:95%}._messageArea_1dlp4_193{padding:12px 8px 8px}._composerWrapper_1dlp4_585{padding:0 8px 8px}._emptyState_1dlp4_212 h1{font-size:1.2rem}}@media (prefers-reduced-motion:reduce){._thinkingDot_1dlp4_556,._sessionItemPending_1dlp4_109{animation:none}}._button_kxq2k_1{white-space:nowrap;cursor:pointer;border-radius:var(--radius-sm);box-sizing:border-box;border:1px solid #0000;outline:none;flex-shrink:0;justify-content:center;align-items:center;gap:6px;font-size:.875rem;font-weight:500;line-height:1;text-decoration:none;transition:background .15s,border-color .15s,opacity .15s;display:inline-flex}._button_kxq2k_1:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 55%, transparent);outline-offset:2px}._button_kxq2k_1:disabled,._button_kxq2k_1[data-disabled]{cursor:default;opacity:.72}._button_kxq2k_1:disabled{pointer-events:none}._button_kxq2k_1[data-loading]{cursor:progress}._button_kxq2k_1 svg{pointer-events:none;flex-shrink:0}._default_kxq2k_50{background:var(--primary);border-color:var(--primary);color:var(--primary-foreground)}._default_kxq2k_50:hover:not(:disabled):not([data-disabled]){opacity:.9}._ghost_kxq2k_60{background:var(--panel-bg);border-color:var(--line-strong);color:var(--text)}._ghost_kxq2k_60:hover:not(:disabled):not([data-disabled]){background:var(--muted)}._outline_kxq2k_70{border-color:var(--line-strong);color:var(--text);background:0 0}._outline_kxq2k_70:hover:not(:disabled):not([data-disabled]){background:var(--muted)}._danger_kxq2k_80{background:var(--danger-soft);border-color:var(--danger-border);color:var(--danger)}._danger_kxq2k_80:hover:not(:disabled):not([data-disabled]){opacity:.85}._sizeDefault_kxq2k_92{min-height:36px;padding:9px 12px}._sizeSm_kxq2k_97{min-height:30px;padding:6px 10px;font-size:.8125rem}._sizeIcon_kxq2k_103{width:36px;height:36px;min-height:unset;padding:0}