@hybridaione/hybridclaw 0.12.5 → 0.12.7
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/AGENTS.md +23 -2
- package/CHANGELOG.md +190 -1
- package/README.md +35 -6
- package/config.example.json +98 -0
- package/console/dist/assets/chat-9p59eGtz.js +93 -0
- package/console/dist/assets/chat-CKhyYUgY.css +1 -0
- package/console/dist/assets/cx-Dzb14TPi.js +1 -0
- package/console/dist/assets/index-DH54vb4K.css +1 -0
- package/console/dist/assets/index-UavkasGt.js +15 -0
- package/console/dist/assets/query-DYNohPrB.js +1 -0
- package/console/dist/assets/rolldown-runtime-DF2fYuay.js +1 -0
- package/console/dist/assets/router-CUFYqD1a.js +1 -0
- package/console/dist/assets/{terminal-BZDT_b4f.js → terminal-CzORQPl2.js} +2 -2
- package/console/dist/assets/terminal-DeXdduvj.js +1 -0
- package/console/dist/assets/vendor-C4WPVvdh.js +9 -0
- package/console/dist/index.html +7 -2
- package/console/package.json +3 -0
- package/container/dist/approval-policy.js +402 -266
- package/container/dist/approval-policy.js.map +1 -1
- package/container/dist/index.js +9 -7
- package/container/dist/index.js.map +1 -1
- package/container/dist/model-retry.js +4 -4
- package/container/dist/model-retry.js.map +1 -1
- package/container/dist/providers/hybridai.js +5 -4
- package/container/dist/providers/hybridai.js.map +1 -1
- package/container/dist/providers/local-ollama.js +3 -3
- package/container/dist/providers/local-ollama.js.map +1 -1
- package/container/dist/providers/local-openai-compat.js +5 -4
- package/container/dist/providers/local-openai-compat.js.map +1 -1
- package/container/dist/providers/openai-codex.js +2 -2
- package/container/dist/providers/openai-codex.js.map +1 -1
- package/container/dist/providers/provider-ids.js +18 -0
- package/container/dist/providers/provider-ids.js.map +1 -1
- package/container/dist/providers/shared.js +4 -4
- package/container/dist/providers/stream-utils.js +31 -0
- package/container/dist/providers/stream-utils.js.map +1 -0
- package/container/package-lock.json +19 -3
- package/container/package.json +3 -2
- package/container/shared/model-names.js +9 -0
- package/container/shared/network-policy.d.ts +34 -0
- package/container/shared/network-policy.js +209 -0
- package/container/src/approval-policy.ts +511 -277
- package/container/src/index.ts +9 -2
- package/container/src/model-retry.ts +4 -4
- package/container/src/providers/hybridai.ts +8 -4
- package/container/src/providers/local-ollama.ts +3 -3
- package/container/src/providers/local-openai-compat.ts +8 -4
- package/container/src/providers/openai-codex.ts +2 -2
- package/container/src/providers/provider-ids.ts +21 -4
- package/container/src/providers/shared.ts +4 -4
- package/container/src/providers/stream-utils.ts +37 -0
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +8 -0
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/prompt-hooks.d.ts.map +1 -1
- package/dist/agent/prompt-hooks.js +33 -0
- package/dist/agent/prompt-hooks.js.map +1 -1
- package/dist/approval-commands.d.ts +1 -1
- package/dist/approval-commands.d.ts.map +1 -1
- package/dist/approval-commands.js +0 -1
- package/dist/approval-commands.js.map +1 -1
- package/dist/channels/channel-registry.d.ts.map +1 -1
- package/dist/channels/channel-registry.js +5 -1
- package/dist/channels/channel-registry.js.map +1 -1
- package/dist/channels/channel.d.ts +3 -2
- package/dist/channels/channel.d.ts.map +1 -1
- package/dist/channels/channel.js +10 -0
- package/dist/channels/channel.js.map +1 -1
- package/dist/channels/msteams/runtime.d.ts.map +1 -1
- package/dist/channels/msteams/runtime.js +11 -1
- package/dist/channels/msteams/runtime.js.map +1 -1
- package/dist/channels/prompt-adapters.d.ts.map +1 -1
- package/dist/channels/prompt-adapters.js +9 -1
- package/dist/channels/prompt-adapters.js.map +1 -1
- package/dist/channels/voice/channel-id.d.ts +4 -0
- package/dist/channels/voice/channel-id.d.ts.map +1 -0
- package/dist/channels/voice/channel-id.js +23 -0
- package/dist/channels/voice/channel-id.js.map +1 -0
- package/dist/channels/voice/conversation-relay.d.ts +70 -0
- package/dist/channels/voice/conversation-relay.d.ts.map +1 -0
- package/dist/channels/voice/conversation-relay.js +196 -0
- package/dist/channels/voice/conversation-relay.js.map +1 -0
- package/dist/channels/voice/runtime.d.ts +22 -0
- package/dist/channels/voice/runtime.d.ts.map +1 -0
- package/dist/channels/voice/runtime.js +582 -0
- package/dist/channels/voice/runtime.js.map +1 -0
- package/dist/channels/voice/security.d.ts +20 -0
- package/dist/channels/voice/security.d.ts.map +1 -0
- package/dist/channels/voice/security.js +62 -0
- package/dist/channels/voice/security.js.map +1 -0
- package/dist/channels/voice/session.d.ts +57 -0
- package/dist/channels/voice/session.d.ts.map +1 -0
- package/dist/channels/voice/session.js +208 -0
- package/dist/channels/voice/session.js.map +1 -0
- package/dist/channels/voice/text.d.ts +7 -0
- package/dist/channels/voice/text.d.ts.map +1 -0
- package/dist/channels/voice/text.js +161 -0
- package/dist/channels/voice/text.js.map +1 -0
- package/dist/channels/voice/twilio-manager.d.ts +26 -0
- package/dist/channels/voice/twilio-manager.d.ts.map +1 -0
- package/dist/channels/voice/twilio-manager.js +120 -0
- package/dist/channels/voice/twilio-manager.js.map +1 -0
- package/dist/channels/voice/utils.d.ts +2 -0
- package/dist/channels/voice/utils.d.ts.map +1 -0
- package/dist/channels/voice/utils.js +4 -0
- package/dist/channels/voice/utils.js.map +1 -0
- package/dist/channels/voice/webhook.d.ts +13 -0
- package/dist/channels/voice/webhook.d.ts.map +1 -0
- package/dist/channels/voice/webhook.js +73 -0
- package/dist/channels/voice/webhook.js.map +1 -0
- package/dist/channels/whatsapp/connection.d.ts.map +1 -1
- package/dist/channels/whatsapp/connection.js +15 -2
- package/dist/channels/whatsapp/connection.js.map +1 -1
- package/dist/cli/auth-command.d.ts.map +1 -1
- package/dist/cli/auth-command.js +205 -4
- 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 +65 -3
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/plugin-command.d.ts.map +1 -1
- package/dist/cli/plugin-command.js +12 -17
- package/dist/cli/plugin-command.js.map +1 -1
- package/dist/cli/secret-command.d.ts +2 -0
- package/dist/cli/secret-command.d.ts.map +1 -0
- package/dist/cli/secret-command.js +208 -0
- package/dist/cli/secret-command.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +20 -1
- package/dist/cli.js.map +1 -1
- package/dist/command-registry.d.ts.map +1 -1
- package/dist/command-registry.js +416 -13
- package/dist/command-registry.js.map +1 -1
- package/dist/commands/policy-command.d.ts +9 -0
- package/dist/commands/policy-command.d.ts.map +1 -0
- package/dist/commands/policy-command.js +381 -0
- package/dist/commands/policy-command.js.map +1 -0
- package/dist/config/config.d.ts +40 -0
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +105 -1
- package/dist/config/config.js.map +1 -1
- package/dist/config/runtime-config.d.ts +83 -1
- package/dist/config/runtime-config.d.ts.map +1 -1
- package/dist/config/runtime-config.js +315 -2
- package/dist/config/runtime-config.js.map +1 -1
- package/dist/doctor/checks/index.d.ts.map +1 -1
- package/dist/doctor/checks/index.js +2 -0
- package/dist/doctor/checks/index.js.map +1 -1
- package/dist/doctor/checks/resource-hygiene.d.ts +43 -0
- package/dist/doctor/checks/resource-hygiene.d.ts.map +1 -0
- package/dist/doctor/checks/resource-hygiene.js +654 -0
- package/dist/doctor/checks/resource-hygiene.js.map +1 -0
- package/dist/doctor/provider-probes.d.ts.map +1 -1
- package/dist/doctor/provider-probes.js +15 -7
- package/dist/doctor/provider-probes.js.map +1 -1
- package/dist/doctor/resource-hygiene.d.ts +12 -0
- package/dist/doctor/resource-hygiene.d.ts.map +1 -0
- package/dist/doctor/resource-hygiene.js +126 -0
- package/dist/doctor/resource-hygiene.js.map +1 -0
- package/dist/doctor/types.d.ts +1 -0
- package/dist/doctor/types.d.ts.map +1 -1
- package/dist/doctor/utils.d.ts +3 -1
- package/dist/doctor/utils.d.ts.map +1 -1
- package/dist/doctor/utils.js +16 -0
- package/dist/doctor/utils.js.map +1 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +15 -17
- package/dist/doctor.js.map +1 -1
- package/dist/errors/gateway-request-error.d.ts +5 -0
- package/dist/errors/gateway-request-error.d.ts.map +1 -0
- package/dist/errors/gateway-request-error.js +18 -0
- package/dist/errors/gateway-request-error.js.map +1 -0
- package/dist/gateway/docs.d.ts.map +1 -1
- package/dist/gateway/docs.js +112 -0
- package/dist/gateway/docs.js.map +1 -1
- package/dist/gateway/gateway-chat-service.d.ts.map +1 -1
- package/dist/gateway/gateway-chat-service.js +15 -2
- package/dist/gateway/gateway-chat-service.js.map +1 -1
- package/dist/gateway/gateway-error-utils.d.ts.map +1 -1
- package/dist/gateway/gateway-error-utils.js +1 -0
- package/dist/gateway/gateway-error-utils.js.map +1 -1
- package/dist/gateway/gateway-http-proxy.d.ts +10 -0
- package/dist/gateway/gateway-http-proxy.d.ts.map +1 -0
- package/dist/gateway/gateway-http-proxy.js +479 -0
- package/dist/gateway/gateway-http-proxy.js.map +1 -0
- package/dist/gateway/gateway-http-server.d.ts.map +1 -1
- package/dist/gateway/gateway-http-server.js +289 -393
- package/dist/gateway/gateway-http-server.js.map +1 -1
- package/dist/gateway/gateway-http-utils.d.ts +11 -0
- package/dist/gateway/gateway-http-utils.d.ts.map +1 -0
- package/dist/gateway/gateway-http-utils.js +59 -0
- package/dist/gateway/gateway-http-utils.js.map +1 -0
- package/dist/gateway/gateway-plugin-service.d.ts.map +1 -1
- package/dist/gateway/gateway-plugin-service.js +17 -2
- package/dist/gateway/gateway-plugin-service.js.map +1 -1
- package/dist/gateway/gateway-provider-service.d.ts +10 -0
- package/dist/gateway/gateway-provider-service.d.ts.map +1 -0
- package/dist/gateway/gateway-provider-service.js +139 -0
- package/dist/gateway/gateway-provider-service.js.map +1 -0
- package/dist/gateway/gateway-service.d.ts +22 -5
- package/dist/gateway/gateway-service.d.ts.map +1 -1
- package/dist/gateway/gateway-service.js +390 -225
- package/dist/gateway/gateway-service.js.map +1 -1
- package/dist/gateway/gateway-types.d.ts +65 -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 +253 -22
- package/dist/gateway/gateway.js.map +1 -1
- package/dist/gateway/pending-approvals.d.ts +4 -0
- package/dist/gateway/pending-approvals.d.ts.map +1 -1
- package/dist/gateway/pending-approvals.js +17 -0
- package/dist/gateway/pending-approvals.js.map +1 -1
- package/dist/gateway/skill-commands.d.ts.map +1 -1
- package/dist/gateway/skill-commands.js +75 -1
- package/dist/gateway/skill-commands.js.map +1 -1
- package/dist/gateway/text-channel-commands.d.ts.map +1 -1
- package/dist/gateway/text-channel-commands.js +4 -10
- package/dist/gateway/text-channel-commands.js.map +1 -1
- package/dist/infra/container-runner.d.ts.map +1 -1
- package/dist/infra/container-runner.js +10 -0
- 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 +9 -0
- package/dist/infra/host-runner.js.map +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +30 -4
- package/dist/logger.js.map +1 -1
- package/dist/media/pdf-context.js +1 -1
- package/dist/media/pdf-context.js.map +1 -1
- package/dist/migration/agent-home-migration.d.ts.map +1 -1
- package/dist/migration/agent-home-migration.js +5 -3
- package/dist/migration/agent-home-migration.js.map +1 -1
- package/dist/observability/otel.d.ts +36 -0
- package/dist/observability/otel.d.ts.map +1 -0
- package/dist/observability/otel.js +145 -0
- package/dist/observability/otel.js.map +1 -0
- package/dist/plugins/plugin-dependencies.d.ts +4 -1
- package/dist/plugins/plugin-dependencies.d.ts.map +1 -1
- package/dist/plugins/plugin-dependencies.js +18 -8
- package/dist/plugins/plugin-dependencies.js.map +1 -1
- package/dist/plugins/plugin-install.d.ts +6 -0
- package/dist/plugins/plugin-install.d.ts.map +1 -1
- package/dist/plugins/plugin-install.js +31 -7
- package/dist/plugins/plugin-install.js.map +1 -1
- package/dist/policy/network-policy.d.ts +3 -0
- package/dist/policy/network-policy.d.ts.map +1 -0
- package/dist/policy/network-policy.js +2 -0
- package/dist/policy/network-policy.js.map +1 -0
- package/dist/policy/policy-cli.d.ts +2 -0
- package/dist/policy/policy-cli.d.ts.map +1 -0
- package/dist/policy/policy-cli.js +12 -0
- package/dist/policy/policy-cli.js.map +1 -0
- package/dist/policy/policy-presets.d.ts +29 -0
- package/dist/policy/policy-presets.d.ts.map +1 -0
- package/dist/policy/policy-presets.js +155 -0
- package/dist/policy/policy-presets.js.map +1 -0
- package/dist/policy/policy-store.d.ts +31 -0
- package/dist/policy/policy-store.d.ts.map +1 -0
- package/dist/policy/policy-store.js +251 -0
- package/dist/policy/policy-store.js.map +1 -0
- package/dist/providers/anthropic.d.ts +1 -1
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +2 -7
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/codex-constants.d.ts +1 -0
- package/dist/providers/codex-constants.d.ts.map +1 -1
- package/dist/providers/codex-constants.js +6 -0
- 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 +17 -5
- package/dist/providers/codex-discovery.js.map +1 -1
- package/dist/providers/factory.d.ts.map +1 -1
- package/dist/providers/factory.js +11 -1
- package/dist/providers/factory.js.map +1 -1
- package/dist/providers/huggingface-discovery.d.ts.map +1 -1
- package/dist/providers/huggingface-discovery.js +5 -2
- package/dist/providers/huggingface-discovery.js.map +1 -1
- package/dist/providers/huggingface-utils.d.ts +0 -3
- package/dist/providers/huggingface-utils.d.ts.map +1 -1
- package/dist/providers/huggingface-utils.js +0 -9
- package/dist/providers/huggingface-utils.js.map +1 -1
- package/dist/providers/huggingface.d.ts +1 -1
- package/dist/providers/huggingface.d.ts.map +1 -1
- package/dist/providers/huggingface.js +8 -10
- package/dist/providers/huggingface.js.map +1 -1
- package/dist/providers/local-ollama.js +2 -2
- package/dist/providers/local-ollama.js.map +1 -1
- package/dist/providers/mistral-discovery.d.ts.map +1 -1
- package/dist/providers/mistral-discovery.js +5 -2
- package/dist/providers/mistral-discovery.js.map +1 -1
- package/dist/providers/mistral-utils.d.ts +0 -3
- package/dist/providers/mistral-utils.d.ts.map +1 -1
- package/dist/providers/mistral-utils.js +0 -5
- package/dist/providers/mistral-utils.js.map +1 -1
- package/dist/providers/mistral.d.ts +1 -1
- package/dist/providers/mistral.d.ts.map +1 -1
- package/dist/providers/mistral.js +6 -10
- package/dist/providers/mistral.js.map +1 -1
- package/dist/providers/model-catalog.d.ts +1 -5
- package/dist/providers/model-catalog.d.ts.map +1 -1
- package/dist/providers/model-catalog.js +80 -20
- package/dist/providers/model-catalog.js.map +1 -1
- package/dist/providers/model-names.d.ts +1 -0
- package/dist/providers/model-names.d.ts.map +1 -1
- package/dist/providers/model-names.js +5 -0
- package/dist/providers/model-names.js.map +1 -1
- package/dist/providers/openai-compat-discovery.d.ts +20 -0
- package/dist/providers/openai-compat-discovery.d.ts.map +1 -0
- package/dist/providers/openai-compat-discovery.js +183 -0
- package/dist/providers/openai-compat-discovery.js.map +1 -0
- package/dist/providers/openai-compat-remote.d.ts +27 -0
- package/dist/providers/openai-compat-remote.d.ts.map +1 -0
- package/dist/providers/openai-compat-remote.js +171 -0
- package/dist/providers/openai-compat-remote.js.map +1 -0
- package/dist/providers/openai.d.ts +1 -1
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +3 -8
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/openrouter-discovery.d.ts.map +1 -1
- package/dist/providers/openrouter-discovery.js +5 -2
- package/dist/providers/openrouter-discovery.js.map +1 -1
- package/dist/providers/openrouter-utils.d.ts +0 -3
- package/dist/providers/openrouter-utils.d.ts.map +1 -1
- package/dist/providers/openrouter-utils.js +0 -5
- package/dist/providers/openrouter-utils.js.map +1 -1
- package/dist/providers/openrouter.d.ts +1 -1
- package/dist/providers/openrouter.d.ts.map +1 -1
- package/dist/providers/openrouter.js +6 -10
- package/dist/providers/openrouter.js.map +1 -1
- package/dist/providers/provider-aliases.d.ts +4 -0
- package/dist/providers/provider-aliases.d.ts.map +1 -0
- package/dist/providers/provider-aliases.js +25 -0
- package/dist/providers/provider-aliases.js.map +1 -0
- package/dist/providers/provider-ids.d.ts +3 -3
- package/dist/providers/provider-ids.d.ts.map +1 -1
- package/dist/providers/provider-ids.js +18 -0
- package/dist/providers/provider-ids.js.map +1 -1
- package/dist/providers/provider-utils.d.ts +10 -0
- package/dist/providers/provider-utils.d.ts.map +1 -0
- package/dist/providers/provider-utils.js +21 -0
- package/dist/providers/provider-utils.js.map +1 -0
- package/dist/providers/task-routing.d.ts.map +1 -1
- package/dist/providers/task-routing.js +13 -16
- package/dist/providers/task-routing.js.map +1 -1
- package/dist/scheduler/scheduler.d.ts.map +1 -1
- package/dist/scheduler/scheduler.js +7 -0
- package/dist/scheduler/scheduler.js.map +1 -1
- package/dist/scheduler/system-jobs.d.ts +25 -0
- package/dist/scheduler/system-jobs.d.ts.map +1 -0
- package/dist/scheduler/system-jobs.js +27 -0
- package/dist/scheduler/system-jobs.js.map +1 -0
- 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 +9 -0
- package/dist/security/runtime-secrets.js.map +1 -1
- package/dist/session/session-context.d.ts.map +1 -1
- package/dist/session/session-context.js +1 -0
- package/dist/session/session-context.js.map +1 -1
- package/dist/session/session-maintenance.d.ts.map +1 -1
- package/dist/session/session-maintenance.js +6 -1
- package/dist/session/session-maintenance.js.map +1 -1
- package/dist/session/session-reset.d.ts.map +1 -1
- package/dist/session/session-reset.js +3 -0
- package/dist/session/session-reset.js.map +1 -1
- package/dist/skills/skill-errors.d.ts +6 -0
- package/dist/skills/skill-errors.d.ts.map +1 -0
- package/dist/skills/skill-errors.js +9 -0
- package/dist/skills/skill-errors.js.map +1 -0
- package/dist/skills/skills-import-github.d.ts.map +1 -1
- package/dist/skills/skills-import-github.js +7 -10
- 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 +1 -2
- package/dist/skills/skills-import-hubs.js.map +1 -1
- package/dist/skills/skills-import.d.ts +1 -0
- package/dist/skills/skills-import.d.ts.map +1 -1
- package/dist/skills/skills-import.js +91 -14
- package/dist/skills/skills-import.js.map +1 -1
- package/dist/skills/skills.d.ts +9 -0
- package/dist/skills/skills.d.ts.map +1 -1
- package/dist/skills/skills.js +114 -2
- package/dist/skills/skills.js.map +1 -1
- package/dist/tui-approval.js +1 -1
- package/dist/tui-approval.js.map +1 -1
- package/dist/tui-banner.d.ts.map +1 -1
- package/dist/tui-banner.js +1 -0
- package/dist/tui-banner.js.map +1 -1
- package/dist/tui-skill-config.d.ts +1 -1
- package/dist/tui-skill-config.d.ts.map +1 -1
- package/dist/tui-slash-command.d.ts.map +1 -1
- package/dist/tui-slash-command.js +2 -3
- package/dist/tui-slash-command.js.map +1 -1
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +23 -19
- package/dist/tui.js.map +1 -1
- package/dist/utils/text-format.d.ts +1 -0
- package/dist/utils/text-format.d.ts.map +1 -1
- package/dist/utils/text-format.js +3 -0
- package/dist/utils/text-format.js.map +1 -1
- package/dist/workspace.d.ts +17 -0
- package/dist/workspace.d.ts.map +1 -1
- package/dist/workspace.js +66 -2
- package/dist/workspace.js.map +1 -1
- package/docs/content/README.md +14 -12
- package/docs/content/agents.md +5 -0
- package/docs/content/channels/README.md +1 -0
- package/docs/content/channels/admin-console.md +20 -3
- package/docs/content/channels/overview.md +4 -1
- package/docs/content/developer-guide/README.md +2 -0
- package/docs/content/developer-guide/approvals.md +257 -0
- package/docs/content/developer-guide/memory.md +1 -1
- package/docs/content/developer-guide/runtime.md +21 -1
- package/docs/content/developer-guide/session-routing.md +1 -1
- package/docs/content/extensibility/README.md +4 -2
- package/docs/content/extensibility/byterover-memory-plugin.md +390 -0
- package/docs/content/extensibility/gbrain-plugin.md +89 -3
- package/docs/content/extensibility/honcho-memory-plugin.md +88 -2
- package/docs/content/extensibility/mem0-memory-plugin.md +180 -0
- package/docs/content/extensibility/memory-plugins.md +142 -0
- package/docs/content/extensibility/mempalace-memory-plugin.md +113 -2
- package/docs/content/extensibility/plugins.md +7 -0
- package/docs/content/extensibility/qmd-memory-plugin.md +98 -4
- package/docs/content/extensibility/skills.md +4 -0
- package/docs/content/getting-started/authentication.md +50 -8
- package/docs/content/getting-started/first-channel.md +3 -0
- package/docs/content/getting-started/quickstart.md +4 -3
- package/docs/content/guides/README.md +3 -1
- package/docs/content/guides/bundled-skills.md +4 -2
- package/docs/content/guides/office-dependencies.md +1 -1
- package/docs/content/guides/remote-access.md +1 -1
- package/docs/content/guides/skills/README.md +45 -0
- package/docs/content/guides/skills/apple.md +112 -0
- package/docs/content/guides/skills/communication.md +82 -0
- package/docs/content/guides/skills/development.md +175 -0
- package/docs/content/guides/skills/integrations.md +249 -0
- package/docs/content/guides/skills/memory-knowledge.md +189 -0
- package/docs/content/guides/skills/office.md +248 -0
- package/docs/content/guides/skills/productivity.md +116 -0
- package/docs/content/guides/skills/publishing.md +136 -0
- package/docs/content/guides/twilio-voice.md +453 -0
- package/docs/content/guides/voice-tts.md +5 -1
- package/docs/content/reference/commands.md +50 -5
- package/docs/content/reference/configuration.md +33 -8
- package/docs/content/reference/diagnostics.md +9 -0
- package/docs/content/reference/faq.md +5 -3
- package/docs/content/reference/model-selection.md +50 -2
- package/docs/development/agents.md +3 -0
- package/docs/development/extensibility/README.md +2 -2
- package/docs/development/extensibility/byterover-memory-plugin.md +390 -0
- package/docs/development/extensibility/gbrain-plugin.md +89 -3
- package/docs/development/extensibility/honcho-memory-plugin.md +88 -2
- package/docs/development/extensibility/mem0-memory-plugin.md +180 -0
- package/docs/development/extensibility/memory-plugins.md +128 -0
- package/docs/development/extensibility/mempalace-memory-plugin.md +133 -2
- package/docs/development/extensibility/plugins.md +7 -0
- package/docs/development/extensibility/qmd-memory-plugin.md +117 -4
- package/docs/development/getting-started/authentication.md +38 -6
- package/docs/development/getting-started/channels.md +12 -5
- package/docs/development/guides/README.md +3 -1
- package/docs/development/guides/bundled-skills.md +4 -2
- package/docs/development/guides/office-dependencies.md +1 -1
- package/docs/development/guides/remote-access.md +1 -1
- package/docs/development/guides/skills/README.md +45 -0
- package/docs/development/guides/skills/apple.md +112 -0
- package/docs/development/guides/skills/communication.md +82 -0
- package/docs/development/guides/skills/development.md +175 -0
- package/docs/development/guides/skills/integrations.md +249 -0
- package/docs/development/guides/skills/memory-knowledge.md +189 -0
- package/docs/development/guides/skills/office.md +248 -0
- package/docs/development/guides/skills/productivity.md +116 -0
- package/docs/development/guides/skills/publishing.md +136 -0
- package/docs/development/guides/twilio-voice.md +453 -0
- package/docs/development/guides/voice-tts.md +5 -1
- package/docs/development/internals/README.md +2 -0
- package/docs/development/internals/approvals.md +257 -0
- package/docs/development/internals/memory.md +1 -1
- package/docs/development/internals/runtime.md +2 -1
- package/docs/development/internals/session-routing.md +1 -1
- package/docs/development/reference/commands.md +23 -1
- package/docs/development/reference/configuration.md +20 -6
- package/docs/development/reference/faq.md +5 -3
- package/docs/development/reference/model-selection.md +41 -2
- package/docs/static/docs.css +84 -0
- package/docs/static/docs.js +137 -15
- package/package.json +8 -1
- package/presets/brave.yaml +13 -0
- package/presets/discord.yaml +13 -0
- package/presets/github.yaml +18 -0
- package/presets/huggingface.yaml +13 -0
- package/presets/jira.yaml +13 -0
- package/presets/npm.yaml +13 -0
- package/presets/outlook.yaml +13 -0
- package/presets/pypi.yaml +13 -0
- package/presets/slack.yaml +13 -0
- package/skills/pdf/SKILL.md +13 -51
- package/skills/pdf/reference.md +26 -0
- package/skills/pdf/scripts/create_pdf.mjs +127 -0
- package/skills/salesforce/SKILL.md +145 -0
- package/skills/salesforce/agents/openai.yaml +4 -0
- package/skills/salesforce/references/metadata-and-queries.md +109 -0
- package/skills/salesforce/scripts/salesforce_query.py +892 -0
- package/skills/xlsx/SKILL.md +32 -3
- package/skills/xlsx/scripts/create_xlsx.cjs +251 -0
- package/console/dist/assets/index-B6FqEYWi.css +0 -1
- package/console/dist/assets/index-tnmE9Yuc.js +0 -23
package/AGENTS.md
CHANGED
|
@@ -21,7 +21,7 @@ HybridClaw is a personal AI assistant bot for Discord, powered by HybridAI.
|
|
|
21
21
|
Enterprise-grade Node.js 22 application with gateway service, TUI client, and
|
|
22
22
|
Docker-sandboxed container runtime.
|
|
23
23
|
|
|
24
|
-
**Version:** 0.
|
|
24
|
+
**Version:** 0.12.6  |  **Package:** `@hybridaione/hybridclaw`
|
|
25
25
|
 |  **License:** see `LICENSE`
|
|
26
26
|
|
|
27
27
|
Architecture: gateway (core runtime, SQLite persistence, REST API, Discord
|
|
@@ -45,8 +45,9 @@ src/
|
|
|
45
45
|
agent/ Agent execution: conversation loop, tool executor, prompt hooks, delegation
|
|
46
46
|
audit/ Append-only audit trail, approval tracking, hash-chain integrity
|
|
47
47
|
auth/ HybridAI and OpenAI Codex authentication flows
|
|
48
|
-
channels/discord
|
|
48
|
+
channels/ Channel transports (discord, slack, telegram, email, whatsapp, msteams, voice, imessage)
|
|
49
49
|
config/ CLI flag parsing, runtime config management
|
|
50
|
+
doctor/ Doctor checks and resource hygiene maintenance
|
|
50
51
|
gateway/ Core gateway service: HTTP APIs, health, session mgmt, approvals
|
|
51
52
|
infra/ Container setup, IPC (file-based), worker signatures, runners
|
|
52
53
|
memory/ SQLite database, semantic memory, compaction, consolidation, chunking
|
|
@@ -90,6 +91,26 @@ User message → Gateway (HTTP/Discord) → ContainerInput (JSON)
|
|
|
90
91
|
| Approval rule | `.hybridclaw/policy.yaml` | §7.4 |
|
|
91
92
|
| Template | `templates/<name>.md` + `src/workspace.ts` | §7.5 |
|
|
92
93
|
|
|
94
|
+
### OpenTelemetry (Distributed Tracing)
|
|
95
|
+
|
|
96
|
+
The gateway supports optional OpenTelemetry instrumentation for distributed
|
|
97
|
+
tracing in cloud deployments. OTel is OFF by default (zero overhead).
|
|
98
|
+
|
|
99
|
+
| Env Var | Purpose |
|
|
100
|
+
|----------------------------------|--------------------------------------------------------------|
|
|
101
|
+
| `OTEL_ENABLED=true` | Enable OTel SDK initialization |
|
|
102
|
+
| `OTEL_EXPORTER_OTLP_ENDPOINT` | OTLP collector endpoint (also enables OTel if set) |
|
|
103
|
+
| `OTEL_EXPORTER_OTLP_PROTOCOL` | `grpc` (default) or `http/protobuf` |
|
|
104
|
+
| `OTEL_SERVICE_NAME` | Service name reported in spans (default: `hybridclaw-gateway`)|
|
|
105
|
+
|
|
106
|
+
When enabled, spans are emitted for: gateway message handling, agent runs,
|
|
107
|
+
host/container execution, and skill loading. Trace context (traceId, spanId)
|
|
108
|
+
is injected into structured log lines for correlation.
|
|
109
|
+
|
|
110
|
+
Implementation: `src/observability/otel.ts`. The SDK packages
|
|
111
|
+
(`@opentelemetry/sdk-node`, exporters) are dynamically imported only when
|
|
112
|
+
OTel is active.
|
|
113
|
+
|
|
93
114
|
---
|
|
94
115
|
|
|
95
116
|
## 3) Engineering Principles
|
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,191 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## Unreleased
|
|
4
|
+
|
|
5
|
+
## [0.12.7](https://github.com/HybridAIOne/hybridclaw/tree/v0.12.7)
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- **Nine new external API providers**: Google Gemini (`gemini/`), DeepSeek
|
|
10
|
+
(`deepseek/`), xAI / Grok (`xai/`), Z.AI / GLM (`zai/`), Kimi / Moonshot
|
|
11
|
+
(`kimi/`), MiniMax (`minimax/`), DashScope / Qwen (`dashscope/`), Xiaomi
|
|
12
|
+
MiMo (`xiaomi/`), and Kilo Code (`kilo/`). Each provider supports
|
|
13
|
+
`auth login`, `auth status`, and `auth logout` with `--api-key`,
|
|
14
|
+
`--base-url`, `--model`, and `--no-default` flags, plus full runtime config
|
|
15
|
+
enablement and model-prefix routing.
|
|
16
|
+
- **Runtime model discovery for OpenAI-compat remote providers**: The nine
|
|
17
|
+
providers above now auto-discover their current model lineups at runtime
|
|
18
|
+
via `GET <baseUrl>/models` and surface them through `/model list <provider>`
|
|
19
|
+
alongside any user-pinned entries in `<provider>.models`. Discovered models
|
|
20
|
+
are cached for one hour, deduplicated with pinned entries, and silently
|
|
21
|
+
fall back to the configured list if the provider's `/v1/models` endpoint is
|
|
22
|
+
unreachable, absent (404), or otherwise errors.
|
|
23
|
+
- **ByteRover memory plugin**: New bundled `byterover-memory` external memory
|
|
24
|
+
provider that injects prompt-time recall through `brv query`, exposes
|
|
25
|
+
`brv_query` / `brv_curate` / `brv_status` model tools, and curates
|
|
26
|
+
completed turns, native memory writes, and pre-compaction summaries into
|
|
27
|
+
ByteRover's Context Tree. Works offline by default with optional cloud sync.
|
|
28
|
+
- **Mem0 memory plugin**: New bundled `mem0-memory` external memory provider
|
|
29
|
+
that layers Mem0 profile and search recall on top of built-in memory,
|
|
30
|
+
exposes `mem0_profile` / `mem0_search` / `mem0_conclude` tools and a local
|
|
31
|
+
`/mem0 ...` command surface, mirrors completed turns and explicit native
|
|
32
|
+
memory writes into Mem0, prefetches profile context on `session_start`, and
|
|
33
|
+
curates compaction snapshots before older turns are archived.
|
|
34
|
+
- **Skill availability controls**: Added `hybridclaw skill enable <name>
|
|
35
|
+
[--channel <kind>]`, `hybridclaw skill disable <name> [--channel <kind>]`,
|
|
36
|
+
interactive TUI `/skill config` toggles, and matching gateway slash-command
|
|
37
|
+
support for enabling or disabling skills globally or per channel.
|
|
38
|
+
- **OpenTelemetry distributed tracing**: The gateway can now emit spans for
|
|
39
|
+
message handling, agent runs, host/container execution, and skill loading to
|
|
40
|
+
OTLP collectors when `OTEL_ENABLED=true` or
|
|
41
|
+
`OTEL_EXPORTER_OTLP_ENDPOINT` is set, with `traceId` / `spanId` correlation
|
|
42
|
+
injected into structured logs.
|
|
43
|
+
- **Memory plugin and skills docs expansion**: Added a memory-plugin
|
|
44
|
+
comparison guide, per-category bundled-skills guides, and richer browser
|
|
45
|
+
docs prompt blocks with copy buttons and styled callouts.
|
|
46
|
+
|
|
47
|
+
### Changed
|
|
48
|
+
|
|
49
|
+
- **Model and provider surfaces now share one registry**: `/model list`,
|
|
50
|
+
`/model info`, provider status output, and `/admin/models` now use the same
|
|
51
|
+
data-driven provider catalog, show model counts consistently, and sort
|
|
52
|
+
enabled or reachable providers first in the admin console.
|
|
53
|
+
- **Fresh installs default HybridAI to `gpt-5.4-mini`**: New runtime homes now
|
|
54
|
+
seed `hybridai.defaultModel` from the shared `DEFAULT_HYBRIDAI_MODEL`
|
|
55
|
+
constant so onboarding, migration, and fresh-install defaults stay aligned.
|
|
56
|
+
- **Kilo Code base URL migrated to `https://api.kilo.ai/api/gateway`**: The
|
|
57
|
+
retired `api.kilocode.ai` host now serves a marketing site, so the default
|
|
58
|
+
Kilo Code base URL has been updated across `config.ts`, the runtime config
|
|
59
|
+
defaults, the `auth login kilo` normalizer (suffix `/api/gateway`), and
|
|
60
|
+
`config.example.json`. Persisted runtime configs still pointing at
|
|
61
|
+
`https://api.kilocode.ai/v1` are silently migrated to the new URL on load
|
|
62
|
+
so existing installations self-heal.
|
|
63
|
+
- **Codex model catalog handling is more resilient**: HybridClaw now pins the
|
|
64
|
+
`client_version` needed for the full upstream Codex catalog and ships static
|
|
65
|
+
supplemental entries for UI-known Codex variants when the upstream list is
|
|
66
|
+
temporarily incomplete.
|
|
67
|
+
- **Renamed `HybridAIRequestError` → `ProviderRequestError`**: The error class
|
|
68
|
+
wraps failures from every OpenAI-compat provider (HybridAI, OpenRouter,
|
|
69
|
+
Mistral, Kilo Code, local Ollama, etc.), so the HybridAI-specific name was
|
|
70
|
+
misleading. The error-message prefix now reads `Provider API error <status>`
|
|
71
|
+
instead of `HybridAI API error <status>`. `HybridAIRequestError` is kept as
|
|
72
|
+
a deprecated alias for backward compatibility; new code should import
|
|
73
|
+
`ProviderRequestError` directly.
|
|
74
|
+
- **Simpler `formatModelForDisplay` rule**: Models that already carry a
|
|
75
|
+
provider prefix (`kilo/...`, `gemini/...`, etc.) no longer incorrectly pick
|
|
76
|
+
up a leading `hybridai/`. The function now treats any slash-containing
|
|
77
|
+
non-`hybridai/` model as already-namespaced, removing the fragile
|
|
78
|
+
`NON_HYBRID_PROVIDER_PREFIXES` whitelist dependency for this path.
|
|
79
|
+
- **TUI reply metadata is clearer**: The usage footer now shows the active
|
|
80
|
+
skill name alongside tools and plugins when a response was driven by a
|
|
81
|
+
skill.
|
|
82
|
+
- **Plugin dependency checks are quieter**: `plugin install` and
|
|
83
|
+
`plugin check` now treat global binaries as satisfying declared
|
|
84
|
+
dependencies, skipping unnecessary npm or pip installs and approval prompts
|
|
85
|
+
when the required executable is already on `PATH`.
|
|
86
|
+
- **Memory plugin docs standardized**: All six memory-plugin doc pages now follow
|
|
87
|
+
the same structure: Prerequisites, HybridClaw Setup, Config, Commands,
|
|
88
|
+
Example Prompts & Use Cases, Tips & Tricks, and Troubleshooting. Added
|
|
89
|
+
external links, local vs cloud options, and researched tips for each.
|
|
90
|
+
- **Browser docs prompt UX expanded**: The docs shell now groups tips and
|
|
91
|
+
multi-step prompts into styled callouts, adds copy buttons for try-it
|
|
92
|
+
blocks, and publishes bundled-skill pages grouped by category.
|
|
93
|
+
|
|
94
|
+
### Fixed
|
|
95
|
+
|
|
96
|
+
- **Bundled ESM skill scripts resolve repo-managed dependencies in the
|
|
97
|
+
sandbox**: Source-checkout container runs now symlink the workspace
|
|
98
|
+
`node_modules` directory into the agent workspace so bundled skill scripts
|
|
99
|
+
can import repo dependencies consistently inside Docker.
|
|
100
|
+
- **`/auth status` suggestions list every supported provider**: Slash-command
|
|
101
|
+
provider completion and status suggestions now include the full provider set
|
|
102
|
+
instead of omitting newer backends.
|
|
103
|
+
- **Mem0 sync no longer sends unsupported `app_id` fields**: Stored-turn
|
|
104
|
+
mirroring and later recall now work against Mem0's accepted write shape.
|
|
105
|
+
- **Dream consolidation works for cloud sessions**: `/dream` memory
|
|
106
|
+
consolidation now runs correctly when the session is backed by cloud state.
|
|
107
|
+
- **Fresh-install model migration tracks the shared default constant**:
|
|
108
|
+
Migration logic now respects `DEFAULT_HYBRIDAI_MODEL` instead of relying on
|
|
109
|
+
a stale sentinel when deciding whether a runtime home is still on the
|
|
110
|
+
original default model.
|
|
111
|
+
- **Browser docs renderer edge cases**: Separate callout blocks no longer
|
|
112
|
+
merge together, copy actions strip leading numbering more reliably, and the
|
|
113
|
+
docs copy icon renders and positions consistently across browsers.
|
|
114
|
+
|
|
115
|
+
## [0.12.6](https://github.com/HybridAIOne/hybridclaw/tree/v0.12.6)
|
|
116
|
+
|
|
117
|
+
### Added
|
|
118
|
+
|
|
119
|
+
- **Twilio voice channel**: Added a built-in Twilio ConversationRelay phone
|
|
120
|
+
channel with inbound webhook handling, outbound `hybridclaw gateway voice
|
|
121
|
+
call <number>` support, admin-console setup, and a dedicated setup and
|
|
122
|
+
troubleshooting guide.
|
|
123
|
+
- **Salesforce skill**: New bundled skill for enterprise CRM integration with
|
|
124
|
+
OAuth token binding, a dedicated `secret` CLI surface for credential
|
|
125
|
+
management, and hardened field-level configuration.
|
|
126
|
+
- **Local skill import**: `skill import` now accepts local filesystem
|
|
127
|
+
directories and `.zip` archives as sources, with persistent import-source
|
|
128
|
+
markers so locally-imported skills retain personal trust across restarts.
|
|
129
|
+
- **Admin approvals policy console**: New `/admin/approvals` interface for
|
|
130
|
+
viewing and managing approval policies from the browser.
|
|
131
|
+
- **Console chat UI**: Migrated the legacy standalone chat UI into the console
|
|
132
|
+
React app with unified channels selection and improved upstream error
|
|
133
|
+
handling.
|
|
134
|
+
- **Doctor resource hygiene**: `hybridclaw doctor` now includes a resource
|
|
135
|
+
hygiene maintenance pass that detects and cleans stale gateway artifacts,
|
|
136
|
+
with cached DB snapshots and disk-state diffing for efficient checks.
|
|
137
|
+
- **Fetch Email-Config button**: The admin email channel editor includes a
|
|
138
|
+
one-click button to fetch and validate HybridAI mailbox credentials.
|
|
139
|
+
- **XLSX skill creation script**: Bundled creation script prevents silent
|
|
140
|
+
generation failures when the xlsx skill produces spreadsheet output.
|
|
141
|
+
- **ToggleGroup component**: New `ToggleGroup` / `ToggleGroupItem` UI
|
|
142
|
+
primitive used across the admin console for binary-toggle controls.
|
|
143
|
+
- **Provider health panel**: Inline login action and inactive-provider
|
|
144
|
+
collapse in the admin console for quicker provider triage.
|
|
145
|
+
|
|
146
|
+
### Changed
|
|
147
|
+
|
|
148
|
+
- **Per-channel instructions in `/admin/channels`**: The admin console now
|
|
149
|
+
lets operators edit transport-specific prompt guidance, and runtime config
|
|
150
|
+
exposes the same values under `channelInstructions.*` so channels such as
|
|
151
|
+
voice can enforce spoken-output rules without editing prompt files directly.
|
|
152
|
+
- **OAuth token domain binding**: Bearer tokens are now bound to their OAuth
|
|
153
|
+
issuer domain to prevent cross-domain exfiltration, and the gateway proxy
|
|
154
|
+
auto-captures tokens using config constants instead of raw environment
|
|
155
|
+
variables.
|
|
156
|
+
- **Secret CLI simplification**: Removed the `[--raw]` option from
|
|
157
|
+
`secret show` and `secret set`, streamlining the operator-facing surface.
|
|
158
|
+
- **CI pipeline split**: Unit tests now run as parallel lint and test jobs
|
|
159
|
+
with a shared `setup-node-workspace` composite action and PR-level
|
|
160
|
+
concurrency groups that cancel stale runs.
|
|
161
|
+
- **Security scanner hints**: Block messages now include actionable override
|
|
162
|
+
hints so operators understand how to respond to policy violations.
|
|
163
|
+
- **DRY provider utilities**: Refactored model-matching and `agentId`
|
|
164
|
+
normalization into shared provider utilities with prefix-aware matching.
|
|
165
|
+
|
|
166
|
+
### Fixed
|
|
167
|
+
|
|
168
|
+
- **Voice approval and relay handling**: Spoken approval replies normalize more
|
|
169
|
+
reliably, voice turns skip the usual yellow implicit wait, and the Twilio
|
|
170
|
+
relay path handles disconnect, interrupt, and runtime-unavailable cases more
|
|
171
|
+
cleanly instead of dropping into noisier failure states.
|
|
172
|
+
- **Memory-flush pool slot leak**: Host processes spawned during memory-flush
|
|
173
|
+
no longer leak worker pool slots, and empty sessions are cleaned up
|
|
174
|
+
automatically.
|
|
175
|
+
- **Stream terminated retry**: Terminated stream errors are now retried
|
|
176
|
+
correctly, preserving PDF creation workflows across transport retries.
|
|
177
|
+
- **Skill scanning and promotion**: Runtime-created skills in agent workspace
|
|
178
|
+
directories now appear in `/skill list` and are promoted to the managed
|
|
179
|
+
directory on save.
|
|
180
|
+
- **Teams webhook resilience**: Missing Teams credentials on incoming webhook
|
|
181
|
+
requests are handled gracefully instead of crashing the handler.
|
|
182
|
+
- **AuthProvider callback stability**: Stabilized React `AuthProvider`
|
|
183
|
+
callbacks with memoized context values to prevent unnecessary re-renders.
|
|
184
|
+
- **Upstream error mapping**: Nested HybridAI error payloads are unwrapped
|
|
185
|
+
and mapped to `502` responses to avoid gateway auth confusion, with
|
|
186
|
+
`no-store` cache headers on error responses.
|
|
187
|
+
- **Skip-skill-scan persistence**: The `--skip-skill-scan` CLI decision is
|
|
188
|
+
now persisted so the runtime guard honors it across restarts.
|
|
4
189
|
|
|
5
190
|
## [0.12.5](https://github.com/HybridAIOne/hybridclaw/tree/v0.12.5)
|
|
6
191
|
|
|
@@ -56,6 +241,10 @@
|
|
|
56
241
|
- **Immediate one-shot scheduler jobs**: Added config-backed `one_shot` jobs
|
|
57
242
|
that run immediately, retry up to `maxRetries`, preserve review state, and
|
|
58
243
|
surface richer delivery output across the gateway and admin scheduler UI.
|
|
244
|
+
- **Mem0 memory plugin**: Added a bundled `mem0-memory` plugin so local
|
|
245
|
+
HybridClaw installs can mirror turns into Mem0 cloud memory, inject
|
|
246
|
+
prompt-time Mem0 recall, expose `mem0_*` tools, and mirror explicit native
|
|
247
|
+
memory writes back into Mem0.
|
|
59
248
|
|
|
60
249
|
### Changed
|
|
61
250
|
|
package/README.md
CHANGED
|
@@ -19,9 +19,9 @@ security, and operational visibility. It combines sandboxed execution, secure
|
|
|
19
19
|
credentials, approvals, persistent memory, and admin surfaces behind a single
|
|
20
20
|
gateway.
|
|
21
21
|
|
|
22
|
-
Connect it to Discord, Slack, WhatsApp, Telegram, Microsoft Teams, email,
|
|
23
|
-
locally, deploy it for business workflows,
|
|
24
|
-
data under your control.
|
|
22
|
+
Connect it to Discord, Slack, WhatsApp, Telegram, Microsoft Teams, email,
|
|
23
|
+
Twilio voice, or the web. Run it locally, deploy it for business workflows,
|
|
24
|
+
and keep your agents, secrets, and data under your control.
|
|
25
25
|
|
|
26
26
|
[Quick Start](https://www.hybridclaw.io/docs/getting-started/quickstart) ·
|
|
27
27
|
[Installation](https://www.hybridclaw.io/docs/getting-started/installation) ·
|
|
@@ -78,7 +78,7 @@ Open locally:
|
|
|
78
78
|
|
|
79
79
|
- Chat UI: `http://127.0.0.1:9090/chat`
|
|
80
80
|
- Admin UI: `http://127.0.0.1:9090/admin` for channels, versioned agent files,
|
|
81
|
-
scheduler, audit, and
|
|
81
|
+
scheduler, audit, config, and channel-specific instructions
|
|
82
82
|
- Agents UI: `http://127.0.0.1:9090/agents`
|
|
83
83
|
- OpenAI-compatible API: `http://127.0.0.1:9090/v1/models` and `http://127.0.0.1:9090/v1/chat/completions`
|
|
84
84
|
|
|
@@ -94,7 +94,7 @@ Once the gateway is running, open HybridClaw locally:
|
|
|
94
94
|
|
|
95
95
|
- Web Chat: `http://127.0.0.1:9090/chat`
|
|
96
96
|
- Admin Console: `http://127.0.0.1:9090/admin` for channels, versioned agent files,
|
|
97
|
-
scheduler, audit, and
|
|
97
|
+
scheduler, audit, config, and channel-specific instructions
|
|
98
98
|
- Agent Dashboard: `http://127.0.0.1:9090/agents`
|
|
99
99
|
- or connect Slack, WhatsApp, Telegram, Discord, Microsoft Teams, Email
|
|
100
100
|
|
|
@@ -103,16 +103,41 @@ Once the gateway is running, open HybridClaw locally:
|
|
|
103
103
|
- `/admin/agents` edits allowlisted bootstrap markdown files such as
|
|
104
104
|
`AGENTS.md`, keeps saved revisions, and restores earlier versions from the
|
|
105
105
|
browser.
|
|
106
|
+
- `/admin/channels` edits transport config, encrypted channel credentials,
|
|
107
|
+
Twilio voice settings, and per-channel instructions that are injected into
|
|
108
|
+
prompts at runtime.
|
|
109
|
+
- `/admin/approvals` manages approval policies from the browser.
|
|
106
110
|
- `hybridclaw tui` includes a keyboard-driven approval picker and prints a
|
|
107
111
|
ready-to-run `hybridclaw tui --resume <sessionId>` command on exit.
|
|
112
|
+
- `hybridclaw doctor` checks runtime health including resource hygiene
|
|
113
|
+
maintenance for stale gateway artifacts.
|
|
108
114
|
- `hybridclaw onboarding` and related local setup flows can restore the last
|
|
109
115
|
known-good saved config snapshot or roll back to a tracked revision when
|
|
110
116
|
`config.json` becomes invalid.
|
|
117
|
+
- `hybridclaw skill import` supports community sources, local directories,
|
|
118
|
+
and `.zip` archives.
|
|
111
119
|
- Channel delivery stays predictable: email seeds its first mailbox cursor from
|
|
112
120
|
the current head instead of replaying old inbox mail, retry-aware transports
|
|
113
121
|
honor server `Retry-After` backoff, and WhatsApp startup avoids intermittent
|
|
114
122
|
init-query bad-request failures.
|
|
115
123
|
|
|
124
|
+
## Models, Skills, and Memory
|
|
125
|
+
|
|
126
|
+
- `hybridclaw auth login` and `/model list` cover HybridAI, Codex, OpenRouter,
|
|
127
|
+
Mistral, Hugging Face, Gemini, DeepSeek, xAI, Z.AI, Kimi, MiniMax,
|
|
128
|
+
DashScope, Xiaomi, Kilo Code, and local backends such as Ollama, LM Studio,
|
|
129
|
+
llama.cpp, and vLLM. Remote OpenAI-compatible providers can merge
|
|
130
|
+
runtime-discovered model catalogs with operator-pinned lists.
|
|
131
|
+
- Skills can be enabled or disabled globally or per channel from
|
|
132
|
+
`hybridclaw skill enable|disable`, TUI `/skill config`, or the admin
|
|
133
|
+
`Skills` page.
|
|
134
|
+
- Built-in memory can stay standalone or layer with ByteRover, Mem0, Honcho,
|
|
135
|
+
MemPalace, QMD, and GBrain plugins depending on whether you want
|
|
136
|
+
local-first recall, hosted memory, or domain-specific retrieval.
|
|
137
|
+
- Optional OpenTelemetry tracing exports gateway and agent spans to OTLP
|
|
138
|
+
backends and annotates structured logs with trace ids for cross-system
|
|
139
|
+
correlation.
|
|
140
|
+
|
|
116
141
|
## How HybridClaw compares
|
|
117
142
|
|
|
118
143
|
| Capability | HybridClaw | OpenClaw | Hermes Agent |
|
|
@@ -161,7 +186,7 @@ Once the gateway is running, open HybridClaw locally:
|
|
|
161
186
|
|
|
162
187
|
## Architecture
|
|
163
188
|
|
|
164
|
-
- **Gateway service** (Node.js) — shared message/command handlers, SQLite persistence (KV + semantic + knowledge graph + canonical sessions + usage events), scheduler, heartbeat, web/API, loopback OpenAI-compatible API, and channel integrations for Discord, Slack, Microsoft Teams, Telegram, iMessage, WhatsApp, and email
|
|
189
|
+
- **Gateway service** (Node.js) — shared message/command handlers, SQLite persistence (KV + semantic + knowledge graph + canonical sessions + usage events), scheduler, heartbeat, web/API, loopback OpenAI-compatible API, and channel integrations for Discord, Slack, Microsoft Teams, Telegram, iMessage, WhatsApp, Twilio voice, and email
|
|
165
190
|
- **TUI client** — thin client over HTTP (`/api/chat`, `/api/command`) with
|
|
166
191
|
a structured startup banner that surfaces model, sandbox, gateway, and
|
|
167
192
|
chatbot context before the first prompt, an interactive approval picker for
|
|
@@ -191,6 +216,7 @@ Browse the full manual at
|
|
|
191
216
|
- Channels:
|
|
192
217
|
[Connect Your First Channel](https://www.hybridclaw.io/docs/getting-started/first-channel),
|
|
193
218
|
[Overview](https://www.hybridclaw.io/docs/channels/overview),
|
|
219
|
+
[Twilio Voice](https://www.hybridclaw.io/docs/guides/twilio-voice),
|
|
194
220
|
[Discord](https://www.hybridclaw.io/docs/channels/discord),
|
|
195
221
|
[Slack](https://www.hybridclaw.io/docs/channels/slack),
|
|
196
222
|
[Telegram](https://www.hybridclaw.io/docs/channels/telegram),
|
|
@@ -202,7 +228,10 @@ Browse the full manual at
|
|
|
202
228
|
[Extensibility](https://www.hybridclaw.io/docs/extensibility),
|
|
203
229
|
[Bundled Skills](https://www.hybridclaw.io/docs/guides/bundled-skills),
|
|
204
230
|
[Plugin System](https://www.hybridclaw.io/docs/extensibility/plugins),
|
|
231
|
+
[Memory Plugins](https://www.hybridclaw.io/docs/extensibility/memory-plugins),
|
|
232
|
+
[ByteRover Memory Plugin](https://www.hybridclaw.io/docs/extensibility/byterover-memory-plugin),
|
|
205
233
|
[GBrain Plugin](https://www.hybridclaw.io/docs/extensibility/gbrain-plugin),
|
|
234
|
+
[Mem0 Memory Plugin](https://www.hybridclaw.io/docs/extensibility/mem0-memory-plugin),
|
|
206
235
|
[Honcho Memory Plugin](https://www.hybridclaw.io/docs/extensibility/honcho-memory-plugin), and
|
|
207
236
|
[MemPalace Memory Plugin](https://www.hybridclaw.io/docs/extensibility/mempalace-memory-plugin)
|
|
208
237
|
- Configuration:
|
package/config.example.json
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
"msteams": [],
|
|
15
15
|
"slack": [],
|
|
16
16
|
"telegram": [],
|
|
17
|
+
"voice": [],
|
|
17
18
|
"whatsapp": [],
|
|
18
19
|
"email": []
|
|
19
20
|
}
|
|
@@ -21,6 +22,16 @@
|
|
|
21
22
|
"tools": {
|
|
22
23
|
"disabled": []
|
|
23
24
|
},
|
|
25
|
+
"channelInstructions": {
|
|
26
|
+
"discord": "",
|
|
27
|
+
"msteams": "",
|
|
28
|
+
"slack": "",
|
|
29
|
+
"telegram": "",
|
|
30
|
+
"voice": "This is a live phone call. Produce plain spoken text only.\nKeep each reply short and conversational, usually one or two short sentences.\nAbsolutely no markdown, bullets, numbered lists, headings, code fences, tables, JSON, or decorative formatting.\nDo not narrate internal reasoning, planning, tool usage, or stage directions. Say only what the caller should hear.\nDo not spell punctuation, formatting marks, or raw URLs unless the caller explicitly asks for exact characters.",
|
|
31
|
+
"whatsapp": "",
|
|
32
|
+
"email": "",
|
|
33
|
+
"imessage": ""
|
|
34
|
+
},
|
|
24
35
|
"adaptiveSkills": {
|
|
25
36
|
"enabled": false,
|
|
26
37
|
"observationEnabled": true,
|
|
@@ -157,6 +168,25 @@
|
|
|
157
168
|
"ackReaction": "👀",
|
|
158
169
|
"mediaMaxMb": 20
|
|
159
170
|
},
|
|
171
|
+
"voice": {
|
|
172
|
+
"enabled": false,
|
|
173
|
+
"provider": "twilio",
|
|
174
|
+
"twilio": {
|
|
175
|
+
"accountSid": "",
|
|
176
|
+
"authToken": "",
|
|
177
|
+
"fromNumber": ""
|
|
178
|
+
},
|
|
179
|
+
"relay": {
|
|
180
|
+
"ttsProvider": "default",
|
|
181
|
+
"voice": "",
|
|
182
|
+
"transcriptionProvider": "default",
|
|
183
|
+
"language": "en-US",
|
|
184
|
+
"interruptible": true,
|
|
185
|
+
"welcomeGreeting": "Hello! How can I help you today?"
|
|
186
|
+
},
|
|
187
|
+
"webhookPath": "/voice",
|
|
188
|
+
"maxConcurrentCalls": 8
|
|
189
|
+
},
|
|
160
190
|
"imessage": {
|
|
161
191
|
"enabled": false,
|
|
162
192
|
"backend": "local",
|
|
@@ -216,6 +246,51 @@
|
|
|
216
246
|
"baseUrl": "https://router.huggingface.co/v1",
|
|
217
247
|
"models": ["huggingface/meta-llama/Llama-3.1-8B-Instruct"]
|
|
218
248
|
},
|
|
249
|
+
"gemini": {
|
|
250
|
+
"enabled": false,
|
|
251
|
+
"baseUrl": "https://generativelanguage.googleapis.com/v1beta/openai",
|
|
252
|
+
"models": ["gemini/gemini-2.5-pro"]
|
|
253
|
+
},
|
|
254
|
+
"deepseek": {
|
|
255
|
+
"enabled": false,
|
|
256
|
+
"baseUrl": "https://api.deepseek.com/v1",
|
|
257
|
+
"models": ["deepseek/deepseek-chat"]
|
|
258
|
+
},
|
|
259
|
+
"xai": {
|
|
260
|
+
"enabled": false,
|
|
261
|
+
"baseUrl": "https://api.x.ai/v1",
|
|
262
|
+
"models": ["xai/grok-3"]
|
|
263
|
+
},
|
|
264
|
+
"zai": {
|
|
265
|
+
"enabled": false,
|
|
266
|
+
"baseUrl": "https://api.z.ai/api/paas/v4",
|
|
267
|
+
"models": ["zai/glm-5.1"]
|
|
268
|
+
},
|
|
269
|
+
"kimi": {
|
|
270
|
+
"enabled": false,
|
|
271
|
+
"baseUrl": "https://api.moonshot.ai/v1",
|
|
272
|
+
"models": ["kimi/kimi-k2.5"]
|
|
273
|
+
},
|
|
274
|
+
"minimax": {
|
|
275
|
+
"enabled": false,
|
|
276
|
+
"baseUrl": "https://api.minimax.io/v1",
|
|
277
|
+
"models": ["minimax/MiniMax-M2"]
|
|
278
|
+
},
|
|
279
|
+
"dashscope": {
|
|
280
|
+
"enabled": false,
|
|
281
|
+
"baseUrl": "https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
|
|
282
|
+
"models": ["dashscope/qwen3-coder-plus"]
|
|
283
|
+
},
|
|
284
|
+
"xiaomi": {
|
|
285
|
+
"enabled": false,
|
|
286
|
+
"baseUrl": "https://api.xiaomimimo.com/v1",
|
|
287
|
+
"models": ["xiaomi/MiMo-7B-RL"]
|
|
288
|
+
},
|
|
289
|
+
"kilo": {
|
|
290
|
+
"enabled": false,
|
|
291
|
+
"baseUrl": "https://api.kilo.ai/api/gateway",
|
|
292
|
+
"models": ["kilo/anthropic/claude-sonnet-4.6"]
|
|
293
|
+
},
|
|
219
294
|
"local": {
|
|
220
295
|
"backends": {
|
|
221
296
|
"ollama": {
|
|
@@ -459,6 +534,29 @@
|
|
|
459
534
|
},
|
|
460
535
|
"scheduler": {
|
|
461
536
|
"jobs": [
|
|
537
|
+
{
|
|
538
|
+
"id": "resource-hygiene",
|
|
539
|
+
"name": "Resource Hygiene",
|
|
540
|
+
"description": "Runs conservative doctor-based resource hygiene twice daily and auto-applies only safe cleanup.",
|
|
541
|
+
"schedule": {
|
|
542
|
+
"kind": "every",
|
|
543
|
+
"at": null,
|
|
544
|
+
"everyMs": 43200000,
|
|
545
|
+
"expr": null,
|
|
546
|
+
"tz": "UTC"
|
|
547
|
+
},
|
|
548
|
+
"action": {
|
|
549
|
+
"kind": "system_event",
|
|
550
|
+
"message": "resource_hygiene_maintenance"
|
|
551
|
+
},
|
|
552
|
+
"delivery": {
|
|
553
|
+
"kind": "last-channel",
|
|
554
|
+
"channel": "",
|
|
555
|
+
"to": "",
|
|
556
|
+
"webhookUrl": ""
|
|
557
|
+
},
|
|
558
|
+
"enabled": true
|
|
559
|
+
},
|
|
462
560
|
{
|
|
463
561
|
"id": "morning-standup",
|
|
464
562
|
"name": "Daily Standup Report",
|