@hybridaione/hybridclaw 0.12.10 → 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 (445) hide show
  1. package/CHANGELOG.md +131 -5
  2. package/README.md +32 -7
  3. package/community-skills/himalaya/SKILL.md +1 -1
  4. package/config.example.json +8 -1
  5. package/console/dist/assets/chat-BSXPZ8qI.css +1 -0
  6. package/console/dist/assets/chat-FEmn1-LG.js +93 -0
  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-CCSFrUcy.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 +33 -13
  14. package/container/dist/index.js.map +1 -1
  15. package/container/dist/model-retry.js +104 -0
  16. package/container/dist/model-retry.js.map +1 -1
  17. package/container/dist/providers/anthropic.js +714 -0
  18. package/container/dist/providers/anthropic.js.map +1 -0
  19. package/container/dist/providers/auxiliary.js +4 -0
  20. package/container/dist/providers/auxiliary.js.map +1 -1
  21. package/container/dist/providers/hybridai.js +14 -7
  22. package/container/dist/providers/hybridai.js.map +1 -1
  23. package/container/dist/providers/provider-ids.js +1 -0
  24. package/container/dist/providers/provider-ids.js.map +1 -1
  25. package/container/dist/providers/router.js +11 -0
  26. package/container/dist/providers/router.js.map +1 -1
  27. package/container/dist/providers/shared.js +22 -20
  28. package/container/dist/providers/shared.js.map +1 -1
  29. package/container/dist/runtime-paths.js +5 -2
  30. package/container/dist/runtime-paths.js.map +1 -1
  31. package/container/dist/tool-parallelism.js +1 -3
  32. package/container/dist/tool-parallelism.js.map +1 -1
  33. package/container/dist/tools.js +277 -130
  34. package/container/dist/tools.js.map +1 -1
  35. package/container/dist/types.js.map +1 -1
  36. package/container/package-lock.json +2 -2
  37. package/container/package.json +1 -1
  38. package/container/shared/anthropic-utils.d.ts +10 -0
  39. package/container/shared/anthropic-utils.js +31 -0
  40. package/container/shared/message-tool-channels.d.ts +29 -0
  41. package/container/shared/message-tool-channels.js +47 -0
  42. package/container/shared/provider-context.d.ts +1 -0
  43. package/container/shared/provider-context.js +6 -1
  44. package/container/src/browser-tools.ts +5 -0
  45. package/container/src/index.ts +41 -3
  46. package/container/src/model-retry.ts +134 -0
  47. package/container/src/providers/anthropic.ts +883 -0
  48. package/container/src/providers/auxiliary.ts +4 -0
  49. package/container/src/providers/hybridai.ts +16 -6
  50. package/container/src/providers/provider-ids.ts +1 -0
  51. package/container/src/providers/router.ts +15 -0
  52. package/container/src/providers/shared.ts +23 -20
  53. package/container/src/runtime-paths.ts +6 -2
  54. package/container/src/tool-parallelism.ts +1 -3
  55. package/container/src/tools.ts +321 -145
  56. package/container/src/types.ts +7 -1
  57. package/dist/agent/prompt-hooks.d.ts.map +1 -1
  58. package/dist/agent/prompt-hooks.js +59 -61
  59. package/dist/agent/prompt-hooks.js.map +1 -1
  60. package/dist/agents/agent-config-command.d.ts +12 -0
  61. package/dist/agents/agent-config-command.d.ts.map +1 -0
  62. package/dist/agents/agent-config-command.js +372 -0
  63. package/dist/agents/agent-config-command.js.map +1 -0
  64. package/dist/agents/agent-registry.d.ts.map +1 -1
  65. package/dist/agents/agent-registry.js +0 -1
  66. package/dist/agents/agent-registry.js.map +1 -1
  67. package/dist/agents/agent-runtime-config.d.ts +3 -0
  68. package/dist/agents/agent-runtime-config.d.ts.map +1 -0
  69. package/dist/agents/agent-runtime-config.js +65 -0
  70. package/dist/agents/agent-runtime-config.js.map +1 -0
  71. package/dist/audit/observability-ingest.d.ts.map +1 -1
  72. package/dist/audit/observability-ingest.js +36 -8
  73. package/dist/audit/observability-ingest.js.map +1 -1
  74. package/dist/auth/anthropic-auth.d.ts +42 -0
  75. package/dist/auth/anthropic-auth.d.ts.map +1 -0
  76. package/dist/auth/anthropic-auth.js +200 -0
  77. package/dist/auth/anthropic-auth.js.map +1 -0
  78. package/dist/auth/google-auth.d.ts +45 -0
  79. package/dist/auth/google-auth.d.ts.map +1 -0
  80. package/dist/auth/google-auth.js +322 -0
  81. package/dist/auth/google-auth.js.map +1 -0
  82. package/dist/channels/channel-registry.d.ts.map +1 -1
  83. package/dist/channels/channel-registry.js +0 -3
  84. package/dist/channels/channel-registry.js.map +1 -1
  85. package/dist/channels/channel-runtime-factory.d.ts +31 -0
  86. package/dist/channels/channel-runtime-factory.d.ts.map +1 -0
  87. package/dist/channels/channel-runtime-factory.js +68 -0
  88. package/dist/channels/channel-runtime-factory.js.map +1 -0
  89. package/dist/channels/discord/reactions.d.ts.map +1 -1
  90. package/dist/channels/discord/reactions.js +21 -10
  91. package/dist/channels/discord/reactions.js.map +1 -1
  92. package/dist/channels/discord/runtime.d.ts.map +1 -1
  93. package/dist/channels/discord/runtime.js +18 -6
  94. package/dist/channels/discord/runtime.js.map +1 -1
  95. package/dist/channels/discord/stream.d.ts.map +1 -1
  96. package/dist/channels/discord/stream.js +6 -1
  97. package/dist/channels/discord/stream.js.map +1 -1
  98. package/dist/channels/discord/transport-errors.d.ts +12 -0
  99. package/dist/channels/discord/transport-errors.d.ts.map +1 -0
  100. package/dist/channels/discord/transport-errors.js +59 -0
  101. package/dist/channels/discord/transport-errors.js.map +1 -0
  102. package/dist/channels/discord/typing.d.ts.map +1 -1
  103. package/dist/channels/discord/typing.js +8 -2
  104. package/dist/channels/discord/typing.js.map +1 -1
  105. package/dist/channels/email/connection.d.ts.map +1 -1
  106. package/dist/channels/email/connection.js +42 -4
  107. package/dist/channels/email/connection.js.map +1 -1
  108. package/dist/channels/email/runtime.d.ts +8 -9
  109. package/dist/channels/email/runtime.d.ts.map +1 -1
  110. package/dist/channels/email/runtime.js +24 -31
  111. package/dist/channels/email/runtime.js.map +1 -1
  112. package/dist/channels/imessage/runtime.d.ts +7 -8
  113. package/dist/channels/imessage/runtime.d.ts.map +1 -1
  114. package/dist/channels/imessage/runtime.js +19 -23
  115. package/dist/channels/imessage/runtime.js.map +1 -1
  116. package/dist/channels/message-tool-advertising.d.ts +6 -0
  117. package/dist/channels/message-tool-advertising.d.ts.map +1 -0
  118. package/dist/channels/message-tool-advertising.js +20 -0
  119. package/dist/channels/message-tool-advertising.js.map +1 -0
  120. package/dist/channels/msteams/runtime.d.ts.map +1 -1
  121. package/dist/channels/msteams/runtime.js +0 -5
  122. package/dist/channels/msteams/runtime.js.map +1 -1
  123. package/dist/channels/msteams/stream.d.ts.map +1 -1
  124. package/dist/channels/msteams/stream.js +0 -2
  125. package/dist/channels/msteams/stream.js.map +1 -1
  126. package/dist/channels/msteams/typing.d.ts.map +1 -1
  127. package/dist/channels/msteams/typing.js +0 -2
  128. package/dist/channels/msteams/typing.js.map +1 -1
  129. package/dist/channels/msteams/utils.d.ts +1 -1
  130. package/dist/channels/msteams/utils.d.ts.map +1 -1
  131. package/dist/channels/msteams/utils.js +1 -3
  132. package/dist/channels/msteams/utils.js.map +1 -1
  133. package/dist/channels/slack/runtime.d.ts.map +1 -1
  134. package/dist/channels/slack/runtime.js +183 -191
  135. package/dist/channels/slack/runtime.js.map +1 -1
  136. package/dist/channels/slack/slash-commands.d.ts.map +1 -1
  137. package/dist/channels/slack/slash-commands.js +1 -3
  138. package/dist/channels/slack/slash-commands.js.map +1 -1
  139. package/dist/channels/voice/conversation-relay.js +1 -1
  140. package/dist/channels/voice/conversation-relay.js.map +1 -1
  141. package/dist/channels/voice/runtime.d.ts.map +1 -1
  142. package/dist/channels/voice/runtime.js +1 -3
  143. package/dist/channels/voice/runtime.js.map +1 -1
  144. package/dist/channels/voice/twilio-manager.d.ts.map +1 -1
  145. package/dist/channels/voice/twilio-manager.js +2 -6
  146. package/dist/channels/voice/twilio-manager.js.map +1 -1
  147. package/dist/channels/whatsapp/connection.d.ts.map +1 -1
  148. package/dist/channels/whatsapp/connection.js +124 -14
  149. package/dist/channels/whatsapp/connection.js.map +1 -1
  150. package/dist/channels/whatsapp/runtime.d.ts +8 -9
  151. package/dist/channels/whatsapp/runtime.d.ts.map +1 -1
  152. package/dist/channels/whatsapp/runtime.js +21 -31
  153. package/dist/channels/whatsapp/runtime.js.map +1 -1
  154. package/dist/cli/agent-command.d.ts.map +1 -1
  155. package/dist/cli/agent-command.js +52 -17
  156. package/dist/cli/agent-command.js.map +1 -1
  157. package/dist/cli/auth-command.d.ts.map +1 -1
  158. package/dist/cli/auth-command.js +423 -87
  159. package/dist/cli/auth-command.js.map +1 -1
  160. package/dist/cli/help.d.ts +2 -0
  161. package/dist/cli/help.d.ts.map +1 -1
  162. package/dist/cli/help.js +60 -4
  163. package/dist/cli/help.js.map +1 -1
  164. package/dist/cli/skill-command.d.ts.map +1 -1
  165. package/dist/cli/skill-command.js +18 -0
  166. package/dist/cli/skill-command.js.map +1 -1
  167. package/dist/cli.d.ts.map +1 -1
  168. package/dist/cli.js +2 -0
  169. package/dist/cli.js.map +1 -1
  170. package/dist/command-registry.d.ts.map +1 -1
  171. package/dist/command-registry.js +42 -0
  172. package/dist/command-registry.js.map +1 -1
  173. package/dist/commands/btw-command.d.ts +3 -0
  174. package/dist/commands/btw-command.d.ts.map +1 -0
  175. package/dist/commands/btw-command.js +57 -0
  176. package/dist/commands/btw-command.js.map +1 -0
  177. package/dist/config/config.d.ts +5 -0
  178. package/dist/config/config.d.ts.map +1 -1
  179. package/dist/config/config.js +13 -3
  180. package/dist/config/config.js.map +1 -1
  181. package/dist/config/runtime-config.d.ts +9 -1
  182. package/dist/config/runtime-config.d.ts.map +1 -1
  183. package/dist/config/runtime-config.js +63 -0
  184. package/dist/config/runtime-config.js.map +1 -1
  185. package/dist/doctor/checks/credentials.d.ts.map +1 -1
  186. package/dist/doctor/checks/credentials.js +1 -0
  187. package/dist/doctor/checks/credentials.js.map +1 -1
  188. package/dist/doctor/checks/providers.d.ts.map +1 -1
  189. package/dist/doctor/checks/providers.js +29 -1
  190. package/dist/doctor/checks/providers.js.map +1 -1
  191. package/dist/doctor/provider-probes.d.ts +1 -0
  192. package/dist/doctor/provider-probes.d.ts.map +1 -1
  193. package/dist/doctor/provider-probes.js +77 -1
  194. package/dist/doctor/provider-probes.js.map +1 -1
  195. package/dist/doctor/utils.d.ts.map +1 -1
  196. package/dist/doctor/utils.js +0 -2
  197. package/dist/doctor/utils.js.map +1 -1
  198. package/dist/evals/locomo-official-scoring.d.ts.map +1 -1
  199. package/dist/evals/locomo-official-scoring.js +0 -1
  200. package/dist/evals/locomo-official-scoring.js.map +1 -1
  201. package/dist/gateway/docs.d.ts.map +1 -1
  202. package/dist/gateway/docs.js +91 -27
  203. package/dist/gateway/docs.js.map +1 -1
  204. package/dist/gateway/gateway-http-server.d.ts.map +1 -1
  205. package/dist/gateway/gateway-http-server.js +31 -23
  206. package/dist/gateway/gateway-http-server.js.map +1 -1
  207. package/dist/gateway/gateway-provider-service.d.ts.map +1 -1
  208. package/dist/gateway/gateway-provider-service.js +15 -0
  209. package/dist/gateway/gateway-provider-service.js.map +1 -1
  210. package/dist/gateway/gateway-service.d.ts.map +1 -1
  211. package/dist/gateway/gateway-service.js +31 -2
  212. package/dist/gateway/gateway-service.js.map +1 -1
  213. package/dist/gateway/gateway-types.d.ts +1 -1
  214. package/dist/gateway/gateway-types.d.ts.map +1 -1
  215. package/dist/gateway/gateway-types.js.map +1 -1
  216. package/dist/gateway/gateway.js +4 -1
  217. package/dist/gateway/gateway.js.map +1 -1
  218. package/dist/gateway/skill-commands.d.ts.map +1 -1
  219. package/dist/gateway/skill-commands.js +22 -1
  220. package/dist/gateway/skill-commands.js.map +1 -1
  221. package/dist/infra/container-runner.d.ts.map +1 -1
  222. package/dist/infra/container-runner.js +39 -19
  223. package/dist/infra/container-runner.js.map +1 -1
  224. package/dist/infra/host-runner.d.ts.map +1 -1
  225. package/dist/infra/host-runner.js +29 -15
  226. package/dist/infra/host-runner.js.map +1 -1
  227. package/dist/infra/ipc.d.ts +2 -1
  228. package/dist/infra/ipc.d.ts.map +1 -1
  229. package/dist/infra/ipc.js +5 -2
  230. package/dist/infra/ipc.js.map +1 -1
  231. package/dist/infra/worker-signature.d.ts +2 -0
  232. package/dist/infra/worker-signature.d.ts.map +1 -1
  233. package/dist/infra/worker-signature.js +2 -0
  234. package/dist/infra/worker-signature.js.map +1 -1
  235. package/dist/logger.d.ts +6 -0
  236. package/dist/logger.d.ts.map +1 -1
  237. package/dist/logger.js +39 -15
  238. package/dist/logger.js.map +1 -1
  239. package/dist/memory/memory-consolidation.d.ts.map +1 -1
  240. package/dist/memory/memory-consolidation.js +0 -8
  241. package/dist/memory/memory-consolidation.js.map +1 -1
  242. package/dist/memory/memory-service.d.ts.map +1 -1
  243. package/dist/memory/memory-service.js +0 -2
  244. package/dist/memory/memory-service.js.map +1 -1
  245. package/dist/observability/otel.js +0 -1
  246. package/dist/observability/otel.js.map +1 -1
  247. package/dist/onboarding.d.ts +1 -1
  248. package/dist/onboarding.d.ts.map +1 -1
  249. package/dist/onboarding.js +165 -51
  250. package/dist/onboarding.js.map +1 -1
  251. package/dist/providers/anthropic-discovery.d.ts +18 -0
  252. package/dist/providers/anthropic-discovery.d.ts.map +1 -0
  253. package/dist/providers/anthropic-discovery.js +169 -0
  254. package/dist/providers/anthropic-discovery.js.map +1 -0
  255. package/dist/providers/anthropic-utils.d.ts +12 -0
  256. package/dist/providers/anthropic-utils.d.ts.map +1 -0
  257. package/dist/providers/anthropic-utils.js +27 -0
  258. package/dist/providers/anthropic-utils.js.map +1 -0
  259. package/dist/providers/anthropic.d.ts +0 -1
  260. package/dist/providers/anthropic.d.ts.map +1 -1
  261. package/dist/providers/anthropic.js +42 -3
  262. package/dist/providers/anthropic.js.map +1 -1
  263. package/dist/providers/auxiliary.d.ts.map +1 -1
  264. package/dist/providers/auxiliary.js +9 -0
  265. package/dist/providers/auxiliary.js.map +1 -1
  266. package/dist/providers/codex-constants.d.ts.map +1 -1
  267. package/dist/providers/codex-constants.js +0 -5
  268. package/dist/providers/codex-constants.js.map +1 -1
  269. package/dist/providers/codex-discovery.d.ts.map +1 -1
  270. package/dist/providers/codex-discovery.js +29 -48
  271. package/dist/providers/codex-discovery.js.map +1 -1
  272. package/dist/providers/huggingface-discovery.d.ts.map +1 -1
  273. package/dist/providers/huggingface-discovery.js +26 -39
  274. package/dist/providers/huggingface-discovery.js.map +1 -1
  275. package/dist/providers/hybridai-discovery.d.ts.map +1 -1
  276. package/dist/providers/hybridai-discovery.js +70 -63
  277. package/dist/providers/hybridai-discovery.js.map +1 -1
  278. package/dist/providers/hybridai-models.d.ts.map +1 -1
  279. package/dist/providers/hybridai-models.js +0 -10
  280. package/dist/providers/hybridai-models.js.map +1 -1
  281. package/dist/providers/mistral-discovery.d.ts.map +1 -1
  282. package/dist/providers/mistral-discovery.js +45 -51
  283. package/dist/providers/mistral-discovery.js.map +1 -1
  284. package/dist/providers/model-catalog.d.ts.map +1 -1
  285. package/dist/providers/model-catalog.js +18 -1
  286. package/dist/providers/model-catalog.js.map +1 -1
  287. package/dist/providers/openai-compat-discovery.d.ts.map +1 -1
  288. package/dist/providers/openai-compat-discovery.js +20 -37
  289. package/dist/providers/openai-compat-discovery.js.map +1 -1
  290. package/dist/providers/openrouter-discovery.d.ts.map +1 -1
  291. package/dist/providers/openrouter-discovery.js +42 -48
  292. package/dist/providers/openrouter-discovery.js.map +1 -1
  293. package/dist/providers/provider-ids.d.ts +2 -2
  294. package/dist/providers/provider-ids.d.ts.map +1 -1
  295. package/dist/providers/provider-ids.js +2 -1
  296. package/dist/providers/provider-ids.js.map +1 -1
  297. package/dist/providers/recommended-models.d.ts.map +1 -1
  298. package/dist/providers/recommended-models.js +0 -1
  299. package/dist/providers/recommended-models.js.map +1 -1
  300. package/dist/providers/task-routing.d.ts.map +1 -1
  301. package/dist/providers/task-routing.js +6 -2
  302. package/dist/providers/task-routing.js.map +1 -1
  303. package/dist/providers/types.d.ts +1 -0
  304. package/dist/providers/types.d.ts.map +1 -1
  305. package/dist/providers/utils.d.ts +11 -1
  306. package/dist/providers/utils.d.ts.map +1 -1
  307. package/dist/providers/utils.js +36 -6
  308. package/dist/providers/utils.js.map +1 -1
  309. package/dist/security/mount-security.d.ts.map +1 -1
  310. package/dist/security/mount-security.js +0 -1
  311. package/dist/security/mount-security.js.map +1 -1
  312. package/dist/security/redact.d.ts +2 -0
  313. package/dist/security/redact.d.ts.map +1 -1
  314. package/dist/security/redact.js +13 -1
  315. package/dist/security/redact.js.map +1 -1
  316. package/dist/security/runtime-secrets.d.ts +1 -1
  317. package/dist/security/runtime-secrets.d.ts.map +1 -1
  318. package/dist/security/runtime-secrets.js +1 -0
  319. package/dist/security/runtime-secrets.js.map +1 -1
  320. package/dist/skills/skill-import-commons.d.ts +16 -0
  321. package/dist/skills/skill-import-commons.d.ts.map +1 -0
  322. package/dist/skills/skill-import-commons.js +95 -0
  323. package/dist/skills/skill-import-commons.js.map +1 -0
  324. package/dist/skills/skills-import-github.d.ts +0 -1
  325. package/dist/skills/skills-import-github.d.ts.map +1 -1
  326. package/dist/skills/skills-import-github.js +2 -46
  327. package/dist/skills/skills-import-github.js.map +1 -1
  328. package/dist/skills/skills-import-hubs.d.ts.map +1 -1
  329. package/dist/skills/skills-import-hubs.js +7 -42
  330. package/dist/skills/skills-import-hubs.js.map +1 -1
  331. package/dist/skills/skills-import.d.ts.map +1 -1
  332. package/dist/skills/skills-import.js +2 -1
  333. package/dist/skills/skills-import.js.map +1 -1
  334. package/dist/skills/skills-install.d.ts +3 -0
  335. package/dist/skills/skills-install.d.ts.map +1 -1
  336. package/dist/skills/skills-install.js +48 -0
  337. package/dist/skills/skills-install.js.map +1 -1
  338. package/dist/skills/skills.d.ts.map +1 -1
  339. package/dist/skills/skills.js +1 -4
  340. package/dist/skills/skills.js.map +1 -1
  341. package/dist/tui-approval-prompt.d.ts.map +1 -1
  342. package/dist/tui-approval-prompt.js +0 -2
  343. package/dist/tui-approval-prompt.js.map +1 -1
  344. package/dist/tui-slash-command.d.ts.map +1 -1
  345. package/dist/tui-slash-command.js +1 -0
  346. package/dist/tui-slash-command.js.map +1 -1
  347. package/dist/tui.d.ts.map +1 -1
  348. package/dist/tui.js +0 -4
  349. package/dist/tui.js.map +1 -1
  350. package/dist/types/container.d.ts +4 -0
  351. package/dist/types/container.d.ts.map +1 -1
  352. package/dist/types/models.d.ts +2 -0
  353. package/dist/types/models.d.ts.map +1 -1
  354. package/dist/types/models.js.map +1 -1
  355. package/dist/types/scheduler.d.ts.map +1 -1
  356. package/dist/utils/transport-errors.d.ts +3 -0
  357. package/dist/utils/transport-errors.d.ts.map +1 -0
  358. package/dist/utils/transport-errors.js +153 -0
  359. package/dist/utils/transport-errors.js.map +1 -0
  360. package/dist/{channels/voice/utils.d.ts → utils/type-guards.d.ts} +1 -1
  361. package/dist/utils/type-guards.d.ts.map +1 -0
  362. package/dist/utils/type-guards.js +4 -0
  363. package/dist/utils/type-guards.js.map +1 -0
  364. package/docs/404.html +1 -1
  365. package/docs/about/index.html +13 -0
  366. package/docs/agents.html +0 -7
  367. package/docs/chat.html +199 -12
  368. package/docs/content/README.md +31 -26
  369. package/docs/content/channels/overview.md +3 -0
  370. package/docs/content/developer-guide/approvals.md +7 -5
  371. package/docs/content/extensibility/README.md +4 -0
  372. package/docs/content/extensibility/agent-packages.md +61 -0
  373. package/docs/content/extensibility/skills.md +10 -9
  374. package/docs/content/getting-started/authentication.md +45 -11
  375. package/docs/content/guides/bundled-skills.md +5 -5
  376. package/docs/content/guides/skills/README.md +4 -4
  377. package/docs/content/guides/skills/development.md +115 -1
  378. package/docs/content/guides/skills/integrations.md +113 -4
  379. package/docs/content/guides/skills/publishing.md +38 -5
  380. package/docs/content/reference/commands.md +44 -14
  381. package/docs/content/reference/configuration.md +17 -9
  382. package/docs/content/reference/model-selection.md +19 -10
  383. package/docs/content/tutorials/README.md +88 -0
  384. package/docs/content/tutorials/_category_.json +5 -0
  385. package/docs/content/tutorials/brand-guidelines-check.md +287 -0
  386. package/docs/content/tutorials/campaign-pulse-digest.md +143 -0
  387. package/docs/content/tutorials/customer-feedback-digest.md +120 -0
  388. package/docs/content/tutorials/daily-pipeline-standup.md +125 -0
  389. package/docs/content/tutorials/devrel-engine.md +159 -0
  390. package/docs/content/tutorials/feature-explainer-videos.md +161 -0
  391. package/docs/content/tutorials/forwarded-lead-triage.md +133 -0
  392. package/docs/content/tutorials/invoice-receipt-collector.md +245 -0
  393. package/docs/content/tutorials/mini-feature-manual.md +197 -0
  394. package/docs/content/tutorials/morning-competitor-briefing.md +250 -0
  395. package/docs/content/tutorials/newsletter-engine.md +157 -0
  396. package/docs/content/tutorials/post-demo-follow-up-pack.md +134 -0
  397. package/docs/content/tutorials/proposal-generator.md +139 -0
  398. package/docs/content/tutorials/release-launch-kit.md +156 -0
  399. package/docs/content/tutorials/team-telegram-deal-desk.md +146 -0
  400. package/docs/content/tutorials/webinar-machine.md +179 -0
  401. package/docs/content/tutorials/weekly-content-calendar.md +135 -0
  402. package/docs/content/tutorials/whatsapp-lead-follow-up.md +131 -0
  403. package/docs/development/README.md +13 -10
  404. package/docs/development/extensibility/README.md +4 -0
  405. package/docs/development/extensibility/agent-packages.md +61 -0
  406. package/docs/development/extensibility/skills.md +10 -9
  407. package/docs/development/getting-started/authentication.md +45 -10
  408. package/docs/development/guides/bundled-skills.md +5 -5
  409. package/docs/development/guides/skills/README.md +4 -4
  410. package/docs/development/guides/skills/development.md +115 -1
  411. package/docs/development/guides/skills/integrations.md +113 -4
  412. package/docs/development/guides/skills/publishing.md +38 -5
  413. package/docs/development/internals/approvals.md +7 -5
  414. package/docs/development/reference/commands.md +37 -11
  415. package/docs/development/reference/configuration.md +12 -8
  416. package/docs/development/reference/model-selection.md +15 -3
  417. package/docs/index.html +1 -1
  418. package/docs/static/docs.js +89 -3
  419. package/package.json +1 -1
  420. package/skills/1password/SKILL.md +2 -2
  421. package/skills/excalidraw/SKILL.md +146 -0
  422. package/skills/excalidraw/agents/openai.yaml +4 -0
  423. package/skills/excalidraw/references/colors.md +45 -0
  424. package/skills/excalidraw/references/dark-mode.md +37 -0
  425. package/skills/excalidraw/references/examples.md +266 -0
  426. package/skills/excalidraw/scripts/upload.mjs +112 -0
  427. package/skills/gh-issues/SKILL.md +539 -0
  428. package/skills/gog/SKILL.md +131 -0
  429. package/skills/google-workspace/SKILL.md +19 -13
  430. package/skills/gws/SKILL.md +106 -0
  431. package/skills/gws/references/calendar.md +41 -0
  432. package/skills/gws/references/drive-docs-sheets.md +57 -0
  433. package/skills/gws/references/gmail.md +37 -0
  434. package/skills/gws/references/workflows.md +39 -0
  435. package/skills/manim-video/SKILL.md +2 -2
  436. package/skills/pdf/scripts/create_pdf.mjs +0 -1
  437. package/skills/personality/SKILL.md +1 -0
  438. package/skills/wordpress/SKILL.md +1 -1
  439. package/console/dist/assets/chat-99PtDMpR.js +0 -93
  440. package/console/dist/assets/chat-Bsx9fu6P.css +0 -1
  441. package/console/dist/assets/index-DQoS6dsR.css +0 -1
  442. package/console/dist/assets/index-Oer5XQrC.js +0 -15
  443. package/dist/channels/voice/utils.d.ts.map +0 -1
  444. package/dist/channels/voice/utils.js +0 -4
  445. package/dist/channels/voice/utils.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,136 @@
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
+
103
+ ## [0.12.11](https://github.com/HybridAIOne/hybridclaw/tree/v0.12.11)
104
+
105
+ ### Added
106
+
107
+ - **Ephemeral `/btw` side-question command**: Added `/btw <question>` across
108
+ local and Discord slash-command surfaces. It answers side questions from
109
+ recent conversation context with a tool-less model call, without persisting
110
+ the side exchange to session history.
111
+ - **Concurrent `/btw` threads in browser chat**: The built-in `/chat` surface
112
+ accepts `/btw ...` while a primary run is active and renders those replies in
113
+ a distinct side-thread presentation.
114
+ - **Bash tool state can persist between calls**: Added persistent bash state
115
+ support so bash tool calls can preserve
116
+ working directory, exported environment variables, and aliases for the active
117
+ session by default, plus `container.persistBashState` and a matching
118
+ `/admin/config` toggle (`Persistent bash state`) to disable this behavior
119
+ when stateless shell calls are preferred.
120
+
121
+ ### Fixed
122
+
123
+ - **Expected transport outages stay local and less noisy**: Discord, Email
124
+ IMAP, and WhatsApp transport handlers now classify expected transient
125
+ transport failures, keep reconnect loops local, and rate-limit repetitive
126
+ outage logs.
127
+ - **Cloud artifact path remapping remains stable across workspace roots**:
128
+ Artifact remapping now preserves host-resolved workspace paths when runtime
129
+ and display roots differ, keeping generated files downloadable and attachable
130
+ in cloud-backed sessions.
131
+ - **Remote skill import guardrails close unsafe/over-budget paths**: GitHub
132
+ and skill-hub imports now enforce shared file-count/byte budgets during
133
+ streaming downloads and consistently reject unsafe relative paths.
134
+
5
135
  ## [0.12.10](https://github.com/HybridAIOne/hybridclaw/tree/v0.12.10)
6
136
 
7
137
  ### Added
@@ -29,10 +159,6 @@
29
159
  output artifacts are remapped against the active workspace path even when the
30
160
  runtime exposes a different display root such as `/app`, keeping generated
31
161
  files downloadable and attachable from chat surfaces.
32
- - **Web chat history search respects authenticated session identity**:
33
- `/api/chat/recent` title search now uses the signed session subject for
34
- authenticated browser sessions, restoring recent-search access after the auth
35
- regression in the initial chat-search rollout.
36
162
 
37
163
  ## [0.12.9](https://github.com/HybridAIOne/hybridclaw/tree/v0.12.9)
38
164
 
@@ -1251,7 +1377,7 @@
1251
1377
  through shared routing for Discord, WhatsApp, email, and local clients,
1252
1378
  including native vision/audio injection paths and stronger preference for
1253
1379
  current-turn local files over history rediscovery.
1254
- - **Auxiliary task/provider routing**: Added Hermes-style auxiliary routing and
1380
+ - **Auxiliary task/provider routing**: Added auxiliary routing and
1255
1381
  tighter provider fallback handling so deferred or background tasks pick the
1256
1382
  right model more predictably.
1257
1383
  - **Discord activation config cleanup**: Removed the obsolete
package/README.md CHANGED
@@ -95,6 +95,9 @@ Once the gateway is running, open HybridClaw locally:
95
95
  - Web Chat: `http://127.0.0.1:9090/chat`
96
96
  - Web Chat keeps a recent-session sidebar and can search conversation titles
97
97
  with contextual snippets before you reopen an older browser session
98
+ - Web Chat accepts `/btw <question>` side questions while a primary run is
99
+ active, so you can ask an ephemeral follow-up without interrupting the
100
+ current run
98
101
  - Admin Console: `http://127.0.0.1:9090/admin` for channels, versioned agent files,
99
102
  scheduler, audit, config, and channel-specific instructions
100
103
  - Agent Dashboard: `http://127.0.0.1:9090/agents`
@@ -111,6 +114,9 @@ Once the gateway is running, open HybridClaw locally:
111
114
  - `/admin/agents` edits allowlisted bootstrap markdown files such as
112
115
  `AGENTS.md`, keeps saved revisions, and restores earlier versions from the
113
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.
114
120
  - `/admin/channels` edits transport config, encrypted channel credentials,
115
121
  Twilio voice settings, and per-channel instructions that are injected into
116
122
  prompts at runtime.
@@ -118,6 +124,9 @@ Once the gateway is running, open HybridClaw locally:
118
124
  - `/admin/gateway` reloads runtime config and refreshes secrets from the
119
125
  browser without tearing down the enclosing workspace container; keep
120
126
  `hybridclaw gateway restart` for local/manual full restarts.
127
+ - `container.persistBashState` controls whether bash tool calls share shell
128
+ state (`cd`, exported env vars, aliases) across turns in the same active
129
+ runtime session; `/admin/config` exposes the same setting as `Persistent bash state`.
121
130
  - Generated artifacts remain downloadable and attachable even when the sandbox
122
131
  exposes a custom workspace display root such as `/app`.
123
132
  - `hybridclaw tui` includes a keyboard-driven approval picker and prints a
@@ -129,24 +138,36 @@ Once the gateway is running, open HybridClaw locally:
129
138
  `config.json` becomes invalid.
130
139
  - `hybridclaw skill import` supports community sources, local directories,
131
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.
132
144
  - `hybridclaw eval hybridai-skills` turns the bundled skills pages' "Try it
133
145
  yourself" prompts into a local eval suite, and live summaries surface the
134
146
  observed skill, artifact presence, and counted tool-call totals.
135
147
  - Channel delivery stays predictable: email seeds its first mailbox cursor from
136
148
  the current head instead of replaying old inbox mail, retry-aware transports
137
- honor server `Retry-After` backoff, and WhatsApp startup avoids intermittent
138
- init-query bad-request failures.
149
+ honor server `Retry-After` backoff, expected transient Discord/Email/WhatsApp
150
+ transport outages stay local with rate-limited logging, and WhatsApp startup
151
+ avoids intermittent init-query bad-request failures.
139
152
 
140
153
  ## Models, Skills, and Memory
141
154
 
142
- - `hybridclaw auth login` and `/model list` cover HybridAI, Codex, OpenRouter,
143
- Mistral, Hugging Face, Gemini, DeepSeek, xAI, Z.AI, Kimi, MiniMax,
144
- DashScope, Xiaomi, Kilo Code, and local backends such as Ollama, LM Studio,
145
- llama.cpp, and vLLM. Remote OpenAI-compatible providers can merge
146
- 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.
147
165
  - Skills can be enabled or disabled globally or per channel from
148
166
  `hybridclaw skill enable|disable`, TUI `/skill config`, or the admin
149
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.
150
171
  - Built-in office skills handle longer PDF creation flows cleanly: the bundled
151
172
  PDF creator wraps long lines, honors explicit `\n`, and adds pages
152
173
  automatically when reports or invoices spill past the first page.
@@ -243,6 +264,10 @@ Browse the full manual at
243
264
  [WhatsApp](https://www.hybridclaw.io/docs/channels/whatsapp),
244
265
  [iMessage](https://www.hybridclaw.io/docs/channels/imessage), and
245
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
246
271
  - Skills and plugins:
247
272
  [Extensibility](https://www.hybridclaw.io/docs/extensibility),
248
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",
@@ -373,7 +379,8 @@
373
379
  "binds": [],
374
380
  "additionalMounts": "",
375
381
  "maxOutputBytes": 10485760,
376
- "maxConcurrent": 5
382
+ "maxConcurrent": 5,
383
+ "persistBashState": true
377
384
  },
378
385
  "mcpServers": {
379
386
  "filesystem": {
@@ -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}