@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.
- package/CHANGELOG.md +131 -5
- package/README.md +32 -7
- package/community-skills/himalaya/SKILL.md +1 -1
- package/config.example.json +8 -1
- package/console/dist/assets/chat-BSXPZ8qI.css +1 -0
- package/console/dist/assets/chat-FEmn1-LG.js +93 -0
- package/console/dist/assets/index-D63KL_Xr.js +15 -0
- package/console/dist/assets/index-DbvykpXR.css +1 -0
- package/console/dist/assets/{terminal-CCSFrUcy.js → terminal-Bg7qhQCF.js} +1 -1
- package/console/dist/index.html +7 -7
- package/container/dist/browser-tools.js +2 -1
- package/container/dist/browser-tools.js.map +1 -1
- package/container/dist/index.js +33 -13
- package/container/dist/index.js.map +1 -1
- package/container/dist/model-retry.js +104 -0
- package/container/dist/model-retry.js.map +1 -1
- package/container/dist/providers/anthropic.js +714 -0
- package/container/dist/providers/anthropic.js.map +1 -0
- package/container/dist/providers/auxiliary.js +4 -0
- package/container/dist/providers/auxiliary.js.map +1 -1
- package/container/dist/providers/hybridai.js +14 -7
- package/container/dist/providers/hybridai.js.map +1 -1
- package/container/dist/providers/provider-ids.js +1 -0
- package/container/dist/providers/provider-ids.js.map +1 -1
- package/container/dist/providers/router.js +11 -0
- package/container/dist/providers/router.js.map +1 -1
- package/container/dist/providers/shared.js +22 -20
- package/container/dist/providers/shared.js.map +1 -1
- package/container/dist/runtime-paths.js +5 -2
- package/container/dist/runtime-paths.js.map +1 -1
- package/container/dist/tool-parallelism.js +1 -3
- package/container/dist/tool-parallelism.js.map +1 -1
- package/container/dist/tools.js +277 -130
- package/container/dist/tools.js.map +1 -1
- package/container/dist/types.js.map +1 -1
- package/container/package-lock.json +2 -2
- package/container/package.json +1 -1
- package/container/shared/anthropic-utils.d.ts +10 -0
- package/container/shared/anthropic-utils.js +31 -0
- package/container/shared/message-tool-channels.d.ts +29 -0
- package/container/shared/message-tool-channels.js +47 -0
- package/container/shared/provider-context.d.ts +1 -0
- package/container/shared/provider-context.js +6 -1
- package/container/src/browser-tools.ts +5 -0
- package/container/src/index.ts +41 -3
- package/container/src/model-retry.ts +134 -0
- package/container/src/providers/anthropic.ts +883 -0
- package/container/src/providers/auxiliary.ts +4 -0
- package/container/src/providers/hybridai.ts +16 -6
- package/container/src/providers/provider-ids.ts +1 -0
- package/container/src/providers/router.ts +15 -0
- package/container/src/providers/shared.ts +23 -20
- package/container/src/runtime-paths.ts +6 -2
- package/container/src/tool-parallelism.ts +1 -3
- package/container/src/tools.ts +321 -145
- package/container/src/types.ts +7 -1
- package/dist/agent/prompt-hooks.d.ts.map +1 -1
- package/dist/agent/prompt-hooks.js +59 -61
- package/dist/agent/prompt-hooks.js.map +1 -1
- package/dist/agents/agent-config-command.d.ts +12 -0
- package/dist/agents/agent-config-command.d.ts.map +1 -0
- package/dist/agents/agent-config-command.js +372 -0
- package/dist/agents/agent-config-command.js.map +1 -0
- package/dist/agents/agent-registry.d.ts.map +1 -1
- package/dist/agents/agent-registry.js +0 -1
- package/dist/agents/agent-registry.js.map +1 -1
- package/dist/agents/agent-runtime-config.d.ts +3 -0
- package/dist/agents/agent-runtime-config.d.ts.map +1 -0
- package/dist/agents/agent-runtime-config.js +65 -0
- package/dist/agents/agent-runtime-config.js.map +1 -0
- package/dist/audit/observability-ingest.d.ts.map +1 -1
- package/dist/audit/observability-ingest.js +36 -8
- package/dist/audit/observability-ingest.js.map +1 -1
- package/dist/auth/anthropic-auth.d.ts +42 -0
- package/dist/auth/anthropic-auth.d.ts.map +1 -0
- package/dist/auth/anthropic-auth.js +200 -0
- package/dist/auth/anthropic-auth.js.map +1 -0
- package/dist/auth/google-auth.d.ts +45 -0
- package/dist/auth/google-auth.d.ts.map +1 -0
- package/dist/auth/google-auth.js +322 -0
- package/dist/auth/google-auth.js.map +1 -0
- package/dist/channels/channel-registry.d.ts.map +1 -1
- package/dist/channels/channel-registry.js +0 -3
- package/dist/channels/channel-registry.js.map +1 -1
- package/dist/channels/channel-runtime-factory.d.ts +31 -0
- package/dist/channels/channel-runtime-factory.d.ts.map +1 -0
- package/dist/channels/channel-runtime-factory.js +68 -0
- package/dist/channels/channel-runtime-factory.js.map +1 -0
- package/dist/channels/discord/reactions.d.ts.map +1 -1
- package/dist/channels/discord/reactions.js +21 -10
- package/dist/channels/discord/reactions.js.map +1 -1
- package/dist/channels/discord/runtime.d.ts.map +1 -1
- package/dist/channels/discord/runtime.js +18 -6
- package/dist/channels/discord/runtime.js.map +1 -1
- package/dist/channels/discord/stream.d.ts.map +1 -1
- package/dist/channels/discord/stream.js +6 -1
- package/dist/channels/discord/stream.js.map +1 -1
- package/dist/channels/discord/transport-errors.d.ts +12 -0
- package/dist/channels/discord/transport-errors.d.ts.map +1 -0
- package/dist/channels/discord/transport-errors.js +59 -0
- package/dist/channels/discord/transport-errors.js.map +1 -0
- package/dist/channels/discord/typing.d.ts.map +1 -1
- package/dist/channels/discord/typing.js +8 -2
- package/dist/channels/discord/typing.js.map +1 -1
- package/dist/channels/email/connection.d.ts.map +1 -1
- package/dist/channels/email/connection.js +42 -4
- package/dist/channels/email/connection.js.map +1 -1
- package/dist/channels/email/runtime.d.ts +8 -9
- package/dist/channels/email/runtime.d.ts.map +1 -1
- package/dist/channels/email/runtime.js +24 -31
- package/dist/channels/email/runtime.js.map +1 -1
- package/dist/channels/imessage/runtime.d.ts +7 -8
- package/dist/channels/imessage/runtime.d.ts.map +1 -1
- package/dist/channels/imessage/runtime.js +19 -23
- package/dist/channels/imessage/runtime.js.map +1 -1
- package/dist/channels/message-tool-advertising.d.ts +6 -0
- package/dist/channels/message-tool-advertising.d.ts.map +1 -0
- package/dist/channels/message-tool-advertising.js +20 -0
- package/dist/channels/message-tool-advertising.js.map +1 -0
- package/dist/channels/msteams/runtime.d.ts.map +1 -1
- package/dist/channels/msteams/runtime.js +0 -5
- package/dist/channels/msteams/runtime.js.map +1 -1
- package/dist/channels/msteams/stream.d.ts.map +1 -1
- package/dist/channels/msteams/stream.js +0 -2
- package/dist/channels/msteams/stream.js.map +1 -1
- package/dist/channels/msteams/typing.d.ts.map +1 -1
- package/dist/channels/msteams/typing.js +0 -2
- package/dist/channels/msteams/typing.js.map +1 -1
- package/dist/channels/msteams/utils.d.ts +1 -1
- package/dist/channels/msteams/utils.d.ts.map +1 -1
- package/dist/channels/msteams/utils.js +1 -3
- package/dist/channels/msteams/utils.js.map +1 -1
- package/dist/channels/slack/runtime.d.ts.map +1 -1
- package/dist/channels/slack/runtime.js +183 -191
- package/dist/channels/slack/runtime.js.map +1 -1
- package/dist/channels/slack/slash-commands.d.ts.map +1 -1
- package/dist/channels/slack/slash-commands.js +1 -3
- package/dist/channels/slack/slash-commands.js.map +1 -1
- package/dist/channels/voice/conversation-relay.js +1 -1
- package/dist/channels/voice/conversation-relay.js.map +1 -1
- package/dist/channels/voice/runtime.d.ts.map +1 -1
- package/dist/channels/voice/runtime.js +1 -3
- package/dist/channels/voice/runtime.js.map +1 -1
- package/dist/channels/voice/twilio-manager.d.ts.map +1 -1
- package/dist/channels/voice/twilio-manager.js +2 -6
- package/dist/channels/voice/twilio-manager.js.map +1 -1
- package/dist/channels/whatsapp/connection.d.ts.map +1 -1
- package/dist/channels/whatsapp/connection.js +124 -14
- package/dist/channels/whatsapp/connection.js.map +1 -1
- package/dist/channels/whatsapp/runtime.d.ts +8 -9
- package/dist/channels/whatsapp/runtime.d.ts.map +1 -1
- package/dist/channels/whatsapp/runtime.js +21 -31
- package/dist/channels/whatsapp/runtime.js.map +1 -1
- package/dist/cli/agent-command.d.ts.map +1 -1
- package/dist/cli/agent-command.js +52 -17
- package/dist/cli/agent-command.js.map +1 -1
- package/dist/cli/auth-command.d.ts.map +1 -1
- package/dist/cli/auth-command.js +423 -87
- package/dist/cli/auth-command.js.map +1 -1
- package/dist/cli/help.d.ts +2 -0
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +60 -4
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/skill-command.d.ts.map +1 -1
- package/dist/cli/skill-command.js +18 -0
- package/dist/cli/skill-command.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/command-registry.d.ts.map +1 -1
- package/dist/command-registry.js +42 -0
- package/dist/command-registry.js.map +1 -1
- package/dist/commands/btw-command.d.ts +3 -0
- package/dist/commands/btw-command.d.ts.map +1 -0
- package/dist/commands/btw-command.js +57 -0
- package/dist/commands/btw-command.js.map +1 -0
- package/dist/config/config.d.ts +5 -0
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +13 -3
- package/dist/config/config.js.map +1 -1
- package/dist/config/runtime-config.d.ts +9 -1
- package/dist/config/runtime-config.d.ts.map +1 -1
- package/dist/config/runtime-config.js +63 -0
- package/dist/config/runtime-config.js.map +1 -1
- package/dist/doctor/checks/credentials.d.ts.map +1 -1
- package/dist/doctor/checks/credentials.js +1 -0
- package/dist/doctor/checks/credentials.js.map +1 -1
- package/dist/doctor/checks/providers.d.ts.map +1 -1
- package/dist/doctor/checks/providers.js +29 -1
- package/dist/doctor/checks/providers.js.map +1 -1
- package/dist/doctor/provider-probes.d.ts +1 -0
- package/dist/doctor/provider-probes.d.ts.map +1 -1
- package/dist/doctor/provider-probes.js +77 -1
- package/dist/doctor/provider-probes.js.map +1 -1
- package/dist/doctor/utils.d.ts.map +1 -1
- package/dist/doctor/utils.js +0 -2
- package/dist/doctor/utils.js.map +1 -1
- package/dist/evals/locomo-official-scoring.d.ts.map +1 -1
- package/dist/evals/locomo-official-scoring.js +0 -1
- package/dist/evals/locomo-official-scoring.js.map +1 -1
- package/dist/gateway/docs.d.ts.map +1 -1
- package/dist/gateway/docs.js +91 -27
- package/dist/gateway/docs.js.map +1 -1
- package/dist/gateway/gateway-http-server.d.ts.map +1 -1
- package/dist/gateway/gateway-http-server.js +31 -23
- package/dist/gateway/gateway-http-server.js.map +1 -1
- package/dist/gateway/gateway-provider-service.d.ts.map +1 -1
- package/dist/gateway/gateway-provider-service.js +15 -0
- package/dist/gateway/gateway-provider-service.js.map +1 -1
- package/dist/gateway/gateway-service.d.ts.map +1 -1
- package/dist/gateway/gateway-service.js +31 -2
- package/dist/gateway/gateway-service.js.map +1 -1
- package/dist/gateway/gateway-types.d.ts +1 -1
- package/dist/gateway/gateway-types.d.ts.map +1 -1
- package/dist/gateway/gateway-types.js.map +1 -1
- package/dist/gateway/gateway.js +4 -1
- package/dist/gateway/gateway.js.map +1 -1
- package/dist/gateway/skill-commands.d.ts.map +1 -1
- package/dist/gateway/skill-commands.js +22 -1
- package/dist/gateway/skill-commands.js.map +1 -1
- package/dist/infra/container-runner.d.ts.map +1 -1
- package/dist/infra/container-runner.js +39 -19
- package/dist/infra/container-runner.js.map +1 -1
- package/dist/infra/host-runner.d.ts.map +1 -1
- package/dist/infra/host-runner.js +29 -15
- package/dist/infra/host-runner.js.map +1 -1
- package/dist/infra/ipc.d.ts +2 -1
- package/dist/infra/ipc.d.ts.map +1 -1
- package/dist/infra/ipc.js +5 -2
- package/dist/infra/ipc.js.map +1 -1
- package/dist/infra/worker-signature.d.ts +2 -0
- package/dist/infra/worker-signature.d.ts.map +1 -1
- package/dist/infra/worker-signature.js +2 -0
- package/dist/infra/worker-signature.js.map +1 -1
- package/dist/logger.d.ts +6 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +39 -15
- package/dist/logger.js.map +1 -1
- package/dist/memory/memory-consolidation.d.ts.map +1 -1
- package/dist/memory/memory-consolidation.js +0 -8
- package/dist/memory/memory-consolidation.js.map +1 -1
- package/dist/memory/memory-service.d.ts.map +1 -1
- package/dist/memory/memory-service.js +0 -2
- package/dist/memory/memory-service.js.map +1 -1
- package/dist/observability/otel.js +0 -1
- package/dist/observability/otel.js.map +1 -1
- package/dist/onboarding.d.ts +1 -1
- package/dist/onboarding.d.ts.map +1 -1
- package/dist/onboarding.js +165 -51
- package/dist/onboarding.js.map +1 -1
- package/dist/providers/anthropic-discovery.d.ts +18 -0
- package/dist/providers/anthropic-discovery.d.ts.map +1 -0
- package/dist/providers/anthropic-discovery.js +169 -0
- package/dist/providers/anthropic-discovery.js.map +1 -0
- package/dist/providers/anthropic-utils.d.ts +12 -0
- package/dist/providers/anthropic-utils.d.ts.map +1 -0
- package/dist/providers/anthropic-utils.js +27 -0
- package/dist/providers/anthropic-utils.js.map +1 -0
- package/dist/providers/anthropic.d.ts +0 -1
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +42 -3
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/auxiliary.d.ts.map +1 -1
- package/dist/providers/auxiliary.js +9 -0
- package/dist/providers/auxiliary.js.map +1 -1
- package/dist/providers/codex-constants.d.ts.map +1 -1
- package/dist/providers/codex-constants.js +0 -5
- package/dist/providers/codex-constants.js.map +1 -1
- package/dist/providers/codex-discovery.d.ts.map +1 -1
- package/dist/providers/codex-discovery.js +29 -48
- package/dist/providers/codex-discovery.js.map +1 -1
- package/dist/providers/huggingface-discovery.d.ts.map +1 -1
- package/dist/providers/huggingface-discovery.js +26 -39
- package/dist/providers/huggingface-discovery.js.map +1 -1
- package/dist/providers/hybridai-discovery.d.ts.map +1 -1
- package/dist/providers/hybridai-discovery.js +70 -63
- package/dist/providers/hybridai-discovery.js.map +1 -1
- package/dist/providers/hybridai-models.d.ts.map +1 -1
- package/dist/providers/hybridai-models.js +0 -10
- package/dist/providers/hybridai-models.js.map +1 -1
- package/dist/providers/mistral-discovery.d.ts.map +1 -1
- package/dist/providers/mistral-discovery.js +45 -51
- package/dist/providers/mistral-discovery.js.map +1 -1
- package/dist/providers/model-catalog.d.ts.map +1 -1
- package/dist/providers/model-catalog.js +18 -1
- package/dist/providers/model-catalog.js.map +1 -1
- package/dist/providers/openai-compat-discovery.d.ts.map +1 -1
- package/dist/providers/openai-compat-discovery.js +20 -37
- package/dist/providers/openai-compat-discovery.js.map +1 -1
- package/dist/providers/openrouter-discovery.d.ts.map +1 -1
- package/dist/providers/openrouter-discovery.js +42 -48
- package/dist/providers/openrouter-discovery.js.map +1 -1
- package/dist/providers/provider-ids.d.ts +2 -2
- package/dist/providers/provider-ids.d.ts.map +1 -1
- package/dist/providers/provider-ids.js +2 -1
- package/dist/providers/provider-ids.js.map +1 -1
- package/dist/providers/recommended-models.d.ts.map +1 -1
- package/dist/providers/recommended-models.js +0 -1
- package/dist/providers/recommended-models.js.map +1 -1
- package/dist/providers/task-routing.d.ts.map +1 -1
- package/dist/providers/task-routing.js +6 -2
- package/dist/providers/task-routing.js.map +1 -1
- package/dist/providers/types.d.ts +1 -0
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/utils.d.ts +11 -1
- package/dist/providers/utils.d.ts.map +1 -1
- package/dist/providers/utils.js +36 -6
- package/dist/providers/utils.js.map +1 -1
- package/dist/security/mount-security.d.ts.map +1 -1
- package/dist/security/mount-security.js +0 -1
- package/dist/security/mount-security.js.map +1 -1
- package/dist/security/redact.d.ts +2 -0
- package/dist/security/redact.d.ts.map +1 -1
- package/dist/security/redact.js +13 -1
- package/dist/security/redact.js.map +1 -1
- package/dist/security/runtime-secrets.d.ts +1 -1
- package/dist/security/runtime-secrets.d.ts.map +1 -1
- package/dist/security/runtime-secrets.js +1 -0
- package/dist/security/runtime-secrets.js.map +1 -1
- package/dist/skills/skill-import-commons.d.ts +16 -0
- package/dist/skills/skill-import-commons.d.ts.map +1 -0
- package/dist/skills/skill-import-commons.js +95 -0
- package/dist/skills/skill-import-commons.js.map +1 -0
- package/dist/skills/skills-import-github.d.ts +0 -1
- package/dist/skills/skills-import-github.d.ts.map +1 -1
- package/dist/skills/skills-import-github.js +2 -46
- package/dist/skills/skills-import-github.js.map +1 -1
- package/dist/skills/skills-import-hubs.d.ts.map +1 -1
- package/dist/skills/skills-import-hubs.js +7 -42
- package/dist/skills/skills-import-hubs.js.map +1 -1
- package/dist/skills/skills-import.d.ts.map +1 -1
- package/dist/skills/skills-import.js +2 -1
- package/dist/skills/skills-import.js.map +1 -1
- package/dist/skills/skills-install.d.ts +3 -0
- package/dist/skills/skills-install.d.ts.map +1 -1
- package/dist/skills/skills-install.js +48 -0
- package/dist/skills/skills-install.js.map +1 -1
- package/dist/skills/skills.d.ts.map +1 -1
- package/dist/skills/skills.js +1 -4
- package/dist/skills/skills.js.map +1 -1
- package/dist/tui-approval-prompt.d.ts.map +1 -1
- package/dist/tui-approval-prompt.js +0 -2
- package/dist/tui-approval-prompt.js.map +1 -1
- package/dist/tui-slash-command.d.ts.map +1 -1
- package/dist/tui-slash-command.js +1 -0
- package/dist/tui-slash-command.js.map +1 -1
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +0 -4
- package/dist/tui.js.map +1 -1
- package/dist/types/container.d.ts +4 -0
- package/dist/types/container.d.ts.map +1 -1
- package/dist/types/models.d.ts +2 -0
- package/dist/types/models.d.ts.map +1 -1
- package/dist/types/models.js.map +1 -1
- package/dist/types/scheduler.d.ts.map +1 -1
- package/dist/utils/transport-errors.d.ts +3 -0
- package/dist/utils/transport-errors.d.ts.map +1 -0
- package/dist/utils/transport-errors.js +153 -0
- package/dist/utils/transport-errors.js.map +1 -0
- package/dist/{channels/voice/utils.d.ts → utils/type-guards.d.ts} +1 -1
- package/dist/utils/type-guards.d.ts.map +1 -0
- package/dist/utils/type-guards.js +4 -0
- package/dist/utils/type-guards.js.map +1 -0
- package/docs/404.html +1 -1
- package/docs/about/index.html +13 -0
- package/docs/agents.html +0 -7
- package/docs/chat.html +199 -12
- package/docs/content/README.md +31 -26
- package/docs/content/channels/overview.md +3 -0
- package/docs/content/developer-guide/approvals.md +7 -5
- package/docs/content/extensibility/README.md +4 -0
- package/docs/content/extensibility/agent-packages.md +61 -0
- package/docs/content/extensibility/skills.md +10 -9
- package/docs/content/getting-started/authentication.md +45 -11
- package/docs/content/guides/bundled-skills.md +5 -5
- package/docs/content/guides/skills/README.md +4 -4
- package/docs/content/guides/skills/development.md +115 -1
- package/docs/content/guides/skills/integrations.md +113 -4
- package/docs/content/guides/skills/publishing.md +38 -5
- package/docs/content/reference/commands.md +44 -14
- package/docs/content/reference/configuration.md +17 -9
- package/docs/content/reference/model-selection.md +19 -10
- package/docs/content/tutorials/README.md +88 -0
- package/docs/content/tutorials/_category_.json +5 -0
- package/docs/content/tutorials/brand-guidelines-check.md +287 -0
- package/docs/content/tutorials/campaign-pulse-digest.md +143 -0
- package/docs/content/tutorials/customer-feedback-digest.md +120 -0
- package/docs/content/tutorials/daily-pipeline-standup.md +125 -0
- package/docs/content/tutorials/devrel-engine.md +159 -0
- package/docs/content/tutorials/feature-explainer-videos.md +161 -0
- package/docs/content/tutorials/forwarded-lead-triage.md +133 -0
- package/docs/content/tutorials/invoice-receipt-collector.md +245 -0
- package/docs/content/tutorials/mini-feature-manual.md +197 -0
- package/docs/content/tutorials/morning-competitor-briefing.md +250 -0
- package/docs/content/tutorials/newsletter-engine.md +157 -0
- package/docs/content/tutorials/post-demo-follow-up-pack.md +134 -0
- package/docs/content/tutorials/proposal-generator.md +139 -0
- package/docs/content/tutorials/release-launch-kit.md +156 -0
- package/docs/content/tutorials/team-telegram-deal-desk.md +146 -0
- package/docs/content/tutorials/webinar-machine.md +179 -0
- package/docs/content/tutorials/weekly-content-calendar.md +135 -0
- package/docs/content/tutorials/whatsapp-lead-follow-up.md +131 -0
- package/docs/development/README.md +13 -10
- package/docs/development/extensibility/README.md +4 -0
- package/docs/development/extensibility/agent-packages.md +61 -0
- package/docs/development/extensibility/skills.md +10 -9
- package/docs/development/getting-started/authentication.md +45 -10
- package/docs/development/guides/bundled-skills.md +5 -5
- package/docs/development/guides/skills/README.md +4 -4
- package/docs/development/guides/skills/development.md +115 -1
- package/docs/development/guides/skills/integrations.md +113 -4
- package/docs/development/guides/skills/publishing.md +38 -5
- package/docs/development/internals/approvals.md +7 -5
- package/docs/development/reference/commands.md +37 -11
- package/docs/development/reference/configuration.md +12 -8
- package/docs/development/reference/model-selection.md +15 -3
- package/docs/index.html +1 -1
- package/docs/static/docs.js +89 -3
- package/package.json +1 -1
- package/skills/1password/SKILL.md +2 -2
- package/skills/excalidraw/SKILL.md +146 -0
- package/skills/excalidraw/agents/openai.yaml +4 -0
- package/skills/excalidraw/references/colors.md +45 -0
- package/skills/excalidraw/references/dark-mode.md +37 -0
- package/skills/excalidraw/references/examples.md +266 -0
- package/skills/excalidraw/scripts/upload.mjs +112 -0
- package/skills/gh-issues/SKILL.md +539 -0
- package/skills/gog/SKILL.md +131 -0
- package/skills/google-workspace/SKILL.md +19 -13
- package/skills/gws/SKILL.md +106 -0
- package/skills/gws/references/calendar.md +41 -0
- package/skills/gws/references/drive-docs-sheets.md +57 -0
- package/skills/gws/references/gmail.md +37 -0
- package/skills/gws/references/workflows.md +39 -0
- package/skills/manim-video/SKILL.md +2 -2
- package/skills/pdf/scripts/create_pdf.mjs +0 -1
- package/skills/personality/SKILL.md +1 -0
- package/skills/wordpress/SKILL.md +1 -1
- package/console/dist/assets/chat-99PtDMpR.js +0 -93
- package/console/dist/assets/chat-Bsx9fu6P.css +0 -1
- package/console/dist/assets/index-DQoS6dsR.css +0 -1
- package/console/dist/assets/index-Oer5XQrC.js +0 -15
- package/dist/channels/voice/utils.d.ts.map +0 -1
- package/dist/channels/voice/utils.js +0 -4
- 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
|
|
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,
|
|
138
|
-
|
|
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,
|
|
143
|
-
Mistral, Hugging Face, Gemini, DeepSeek, xAI, Z.AI,
|
|
144
|
-
DashScope, Xiaomi, Kilo Code, and local backends such as
|
|
145
|
-
llama.cpp, and vLLM. Remote OpenAI-compatible providers
|
|
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:
|
package/config.example.json
CHANGED
|
@@ -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}
|