@hybridaione/hybridclaw 0.13.0 → 0.14.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 +146 -0
- package/README.md +50 -13
- package/SECURITY.md +33 -0
- package/config.example.json +29 -2
- package/console/dist/assets/chat-DSj1yysO.js +93 -0
- package/console/dist/assets/chat-rX_Zff0A.css +1 -0
- package/console/dist/assets/cx-DXBDPsU_.js +1 -0
- package/console/dist/assets/index-B2-VRNy7.css +1 -0
- package/console/dist/assets/index-BPAyWCYB.js +15 -0
- package/console/dist/assets/{router-CUFYqD1a.js → router-NXexqZsi.js} +1 -1
- package/console/dist/assets/{terminal-Bg7qhQCF.js → terminal-Cax15rBK.js} +1 -1
- package/console/dist/assets/{vendor-C4WPVvdh.js → vendor-BCIzCfhA.js} +1 -1
- package/console/dist/index.html +5 -5
- package/container/dist/approval-policy.js +152 -85
- package/container/dist/approval-policy.js.map +1 -1
- package/container/dist/browser-tools.js +96 -5
- package/container/dist/browser-tools.js.map +1 -1
- package/container/dist/extensions.js +63 -9
- package/container/dist/extensions.js.map +1 -1
- package/container/dist/index.js +118 -20
- package/container/dist/index.js.map +1 -1
- package/container/dist/providers/anthropic.js +42 -4
- package/container/dist/providers/anthropic.js.map +1 -1
- package/container/dist/providers/auxiliary.js +3 -0
- package/container/dist/providers/auxiliary.js.map +1 -1
- package/container/dist/providers/hybridai.js +61 -5
- package/container/dist/providers/hybridai.js.map +1 -1
- package/container/dist/providers/local-ollama.js +44 -4
- package/container/dist/providers/local-ollama.js.map +1 -1
- package/container/dist/providers/local-openai-compat.js +234 -27
- package/container/dist/providers/local-openai-compat.js.map +1 -1
- package/container/dist/providers/openai-codex.js +41 -7
- package/container/dist/providers/openai-codex.js.map +1 -1
- package/container/dist/providers/router.js +27 -2
- package/container/dist/providers/router.js.map +1 -1
- package/container/dist/providers/shared.js +53 -0
- package/container/dist/providers/shared.js.map +1 -1
- package/container/dist/providers/thinking-extractor.js +25 -3
- package/container/dist/providers/thinking-extractor.js.map +1 -1
- package/container/dist/providers/tool-call-normalizer.js +66 -6
- package/container/dist/providers/tool-call-normalizer.js.map +1 -1
- package/container/dist/stakes-classifier.js +316 -0
- package/container/dist/stakes-classifier.js.map +1 -0
- package/container/dist/stalled-turns.js +5 -0
- package/container/dist/stalled-turns.js.map +1 -1
- package/container/dist/text-normalization.js +6 -0
- package/container/dist/text-normalization.js.map +1 -0
- package/container/dist/token-usage.js +53 -0
- package/container/dist/token-usage.js.map +1 -1
- package/container/dist/tools.js +7 -4
- package/container/dist/tools.js.map +1 -1
- package/container/dist/types.js.map +1 -1
- package/container/dist/web-fetch.js +127 -15
- package/container/dist/web-fetch.js.map +1 -1
- package/container/package-lock.json +2 -2
- package/container/package.json +1 -1
- package/container/shared/boolean-utils.d.ts +8 -0
- package/container/shared/boolean-utils.js +19 -0
- package/container/shared/message-tool-channels.d.ts +1 -0
- package/container/shared/message-tool-channels.js +2 -0
- package/container/shared/network-policy.d.ts +38 -0
- package/container/shared/network-policy.js +121 -0
- package/container/shared/policy-engine.d.ts +65 -0
- package/container/shared/policy-engine.js +62 -0
- package/container/shared/skill-policy.d.ts +57 -0
- package/container/shared/skill-policy.js +164 -0
- package/container/shared/stakes-classifier.d.ts +36 -0
- package/container/shared/stakes-classifier.js +1 -0
- package/container/src/approval-policy.ts +203 -103
- package/container/src/browser-tools.ts +114 -5
- package/container/src/extensions.ts +74 -9
- package/container/src/index.ts +136 -11
- package/container/src/providers/anthropic.ts +44 -3
- package/container/src/providers/auxiliary.ts +3 -0
- package/container/src/providers/hybridai.ts +63 -4
- package/container/src/providers/local-ollama.ts +46 -3
- package/container/src/providers/local-openai-compat.ts +271 -27
- package/container/src/providers/openai-codex.ts +43 -12
- package/container/src/providers/router.ts +34 -6
- package/container/src/providers/shared.ts +86 -0
- package/container/src/providers/thinking-extractor.ts +26 -2
- package/container/src/providers/tool-call-normalizer.ts +69 -6
- package/container/src/stakes-classifier.ts +469 -0
- package/container/src/stalled-turns.ts +12 -0
- package/container/src/text-normalization.ts +5 -0
- package/container/src/token-usage.ts +74 -0
- package/container/src/tools.ts +7 -2
- package/container/src/types.ts +29 -0
- package/container/src/web-fetch.ts +139 -15
- package/dist/a2a/envelope.d.ts +35 -0
- package/dist/a2a/envelope.d.ts.map +1 -0
- package/dist/a2a/envelope.js +188 -0
- package/dist/a2a/envelope.js.map +1 -0
- package/dist/a2a/identity.d.ts +5 -0
- package/dist/a2a/identity.d.ts.map +1 -0
- package/dist/a2a/identity.js +86 -0
- package/dist/a2a/identity.js.map +1 -0
- package/dist/a2a/store.d.ts +7 -0
- package/dist/a2a/store.d.ts.map +1 -0
- package/dist/a2a/store.js +128 -0
- package/dist/a2a/store.js.map +1 -0
- package/dist/a2a/utils.d.ts +2 -0
- package/dist/a2a/utils.d.ts.map +1 -0
- package/dist/a2a/utils.js +4 -0
- package/dist/a2a/utils.js.map +1 -0
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +37 -28
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/executor-types.d.ts +1 -0
- package/dist/agent/executor-types.d.ts.map +1 -1
- package/dist/agent/prompt-hooks.d.ts +3 -5
- package/dist/agent/prompt-hooks.d.ts.map +1 -1
- package/dist/agent/prompt-hooks.js +8 -21
- package/dist/agent/prompt-hooks.js.map +1 -1
- package/dist/agent/prompt-parts.d.ts +8 -0
- package/dist/agent/prompt-parts.d.ts.map +1 -0
- package/dist/agent/prompt-parts.js +39 -0
- package/dist/agent/prompt-parts.js.map +1 -0
- package/dist/agents/agent-registry.d.ts.map +1 -1
- package/dist/agents/agent-registry.js +83 -21
- package/dist/agents/agent-registry.js.map +1 -1
- package/dist/agents/agent-runtime-config.d.ts.map +1 -1
- package/dist/agents/agent-runtime-config.js +5 -1
- package/dist/agents/agent-runtime-config.js.map +1 -1
- package/dist/agents/agent-types.d.ts +12 -0
- package/dist/agents/agent-types.d.ts.map +1 -1
- package/dist/agents/agent-types.js +49 -0
- package/dist/agents/agent-types.js.map +1 -1
- package/dist/audit/audit-cli.d.ts.map +1 -1
- package/dist/audit/audit-cli.js +14 -0
- package/dist/audit/audit-cli.js.map +1 -1
- package/dist/audit/audit-events.d.ts.map +1 -1
- package/dist/audit/audit-events.js +43 -7
- package/dist/audit/audit-events.js.map +1 -1
- package/dist/audit/leak-scanner-cli.d.ts +2 -0
- package/dist/audit/leak-scanner-cli.d.ts.map +1 -0
- package/dist/audit/leak-scanner-cli.js +342 -0
- package/dist/audit/leak-scanner-cli.js.map +1 -0
- package/dist/audit/leak-scanner.d.ts +116 -0
- package/dist/audit/leak-scanner.d.ts.map +1 -0
- package/dist/audit/leak-scanner.js +466 -0
- package/dist/audit/leak-scanner.js.map +1 -0
- package/dist/audit/observability-ingest.d.ts.map +1 -1
- package/dist/audit/observability-ingest.js +2 -9
- package/dist/audit/observability-ingest.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/discord/runtime.d.ts.map +1 -1
- package/dist/channels/discord/runtime.js +2 -1
- package/dist/channels/discord/runtime.js.map +1 -1
- package/dist/channels/message/tool-actions.d.ts.map +1 -1
- package/dist/channels/message/tool-actions.js +87 -3
- package/dist/channels/message/tool-actions.js.map +1 -1
- package/dist/channels/message-tool-advertising.d.ts.map +1 -1
- package/dist/channels/message-tool-advertising.js +1 -0
- package/dist/channels/message-tool-advertising.js.map +1 -1
- package/dist/channels/prompt-adapters.d.ts.map +1 -1
- package/dist/channels/prompt-adapters.js +3 -0
- package/dist/channels/prompt-adapters.js.map +1 -1
- package/dist/channels/signal/api.d.ts +65 -0
- package/dist/channels/signal/api.d.ts.map +1 -0
- package/dist/channels/signal/api.js +167 -0
- package/dist/channels/signal/api.js.map +1 -0
- package/dist/channels/signal/delivery.d.ts +18 -0
- package/dist/channels/signal/delivery.d.ts.map +1 -0
- package/dist/channels/signal/delivery.js +126 -0
- package/dist/channels/signal/delivery.js.map +1 -0
- package/dist/channels/signal/inbound.d.ts +30 -0
- package/dist/channels/signal/inbound.d.ts.map +1 -0
- package/dist/channels/signal/inbound.js +162 -0
- package/dist/channels/signal/inbound.js.map +1 -0
- package/dist/channels/signal/pairing-state.d.ts +18 -0
- package/dist/channels/signal/pairing-state.d.ts.map +1 -0
- package/dist/channels/signal/pairing-state.js +57 -0
- package/dist/channels/signal/pairing-state.js.map +1 -0
- package/dist/channels/signal/pairing.d.ts +14 -0
- package/dist/channels/signal/pairing.d.ts.map +1 -0
- package/dist/channels/signal/pairing.js +135 -0
- package/dist/channels/signal/pairing.js.map +1 -0
- package/dist/channels/signal/prompt-adapter.d.ts +3 -0
- package/dist/channels/signal/prompt-adapter.d.ts.map +1 -0
- package/dist/channels/signal/prompt-adapter.js +25 -0
- package/dist/channels/signal/prompt-adapter.js.map +1 -0
- package/dist/channels/signal/runtime.d.ts +10 -0
- package/dist/channels/signal/runtime.d.ts.map +1 -0
- package/dist/channels/signal/runtime.js +220 -0
- package/dist/channels/signal/runtime.js.map +1 -0
- package/dist/channels/signal/target.d.ts +12 -0
- package/dist/channels/signal/target.d.ts.map +1 -0
- package/dist/channels/signal/target.js +63 -0
- package/dist/channels/signal/target.js.map +1 -0
- package/dist/channels/signal/typing.d.ts +11 -0
- package/dist/channels/signal/typing.d.ts.map +1 -0
- package/dist/channels/signal/typing.js +64 -0
- package/dist/channels/signal/typing.js.map +1 -0
- package/dist/channels/voice/runtime.d.ts.map +1 -1
- package/dist/channels/voice/runtime.js +5 -3
- package/dist/channels/voice/runtime.js.map +1 -1
- package/dist/channels/whatsapp/debounce.d.ts +2 -0
- package/dist/channels/whatsapp/debounce.d.ts.map +1 -1
- package/dist/channels/whatsapp/debounce.js +14 -0
- package/dist/channels/whatsapp/debounce.js.map +1 -1
- package/dist/channels/whatsapp/runtime.d.ts.map +1 -1
- package/dist/channels/whatsapp/runtime.js +57 -6
- package/dist/channels/whatsapp/runtime.js.map +1 -1
- package/dist/cli/channels-command.d.ts.map +1 -1
- package/dist/cli/channels-command.js +270 -2
- package/dist/cli/channels-command.js.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +19 -6
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/skill-command.d.ts.map +1 -1
- package/dist/cli/skill-command.js +124 -68
- package/dist/cli/skill-command.js.map +1 -1
- package/dist/cli/verbosity.d.ts +30 -0
- package/dist/cli/verbosity.d.ts.map +1 -0
- package/dist/cli/verbosity.js +42 -0
- package/dist/cli/verbosity.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +42 -15
- package/dist/cli.js.map +1 -1
- package/dist/command-parsing.d.ts +12 -0
- package/dist/command-parsing.d.ts.map +1 -0
- package/dist/command-parsing.js +30 -0
- package/dist/command-parsing.js.map +1 -0
- package/dist/command-registry.d.ts.map +1 -1
- package/dist/command-registry.js +114 -6
- package/dist/command-registry.js.map +1 -1
- package/dist/commands/policy-command.d.ts.map +1 -1
- package/dist/commands/policy-command.js +9 -14
- package/dist/commands/policy-command.js.map +1 -1
- package/dist/config/cli-flags.d.ts +8 -1
- package/dist/config/cli-flags.d.ts.map +1 -1
- package/dist/config/cli-flags.js +121 -34
- package/dist/config/cli-flags.js.map +1 -1
- package/dist/config/config.d.ts +4 -0
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +25 -13
- package/dist/config/config.js.map +1 -1
- package/dist/config/runtime-config-revisions.d.ts +15 -0
- package/dist/config/runtime-config-revisions.d.ts.map +1 -1
- package/dist/config/runtime-config-revisions.js +151 -40
- package/dist/config/runtime-config-revisions.js.map +1 -1
- package/dist/config/runtime-config.d.ts +87 -4
- package/dist/config/runtime-config.d.ts.map +1 -1
- package/dist/config/runtime-config.js +366 -14
- package/dist/config/runtime-config.js.map +1 -1
- package/dist/doctor/checks/config.d.ts.map +1 -1
- package/dist/doctor/checks/config.js +85 -6
- package/dist/doctor/checks/config.js.map +1 -1
- package/dist/doctor/checks/resource-hygiene.d.ts +6 -0
- package/dist/doctor/checks/resource-hygiene.d.ts.map +1 -1
- package/dist/doctor/checks/resource-hygiene.js +164 -0
- package/dist/doctor/checks/resource-hygiene.js.map +1 -1
- package/dist/evals/eval-profile.d.ts +1 -1
- package/dist/evals/eval-profile.d.ts.map +1 -1
- package/dist/evals/eval-profile.js +2 -2
- package/dist/evals/eval-profile.js.map +1 -1
- package/dist/evals/hybridai-skills-command.d.ts.map +1 -1
- package/dist/evals/hybridai-skills-command.js +9 -0
- package/dist/evals/hybridai-skills-command.js.map +1 -1
- package/dist/gateway/concierge-commands.d.ts.map +1 -1
- package/dist/gateway/concierge-commands.js +5 -4
- package/dist/gateway/concierge-commands.js.map +1 -1
- package/dist/gateway/context-usage.d.ts +25 -0
- package/dist/gateway/context-usage.d.ts.map +1 -0
- package/dist/gateway/context-usage.js +32 -0
- package/dist/gateway/context-usage.js.map +1 -0
- package/dist/gateway/gateway-agent-cards.d.ts +1 -0
- package/dist/gateway/gateway-agent-cards.d.ts.map +1 -1
- package/dist/gateway/gateway-agent-cards.js +1 -0
- package/dist/gateway/gateway-agent-cards.js.map +1 -1
- package/dist/gateway/gateway-chat-service.d.ts +1 -0
- package/dist/gateway/gateway-chat-service.d.ts.map +1 -1
- package/dist/gateway/gateway-chat-service.js +114 -18
- package/dist/gateway/gateway-chat-service.js.map +1 -1
- package/dist/gateway/gateway-client.d.ts +2 -2
- package/dist/gateway/gateway-client.d.ts.map +1 -1
- package/dist/gateway/gateway-client.js +5 -0
- package/dist/gateway/gateway-client.js.map +1 -1
- package/dist/gateway/gateway-http-server.d.ts.map +1 -1
- package/dist/gateway/gateway-http-server.js +233 -4
- package/dist/gateway/gateway-http-server.js.map +1 -1
- package/dist/gateway/gateway-lifecycle.d.ts +5 -0
- package/dist/gateway/gateway-lifecycle.d.ts.map +1 -1
- package/dist/gateway/gateway-lifecycle.js +5 -0
- package/dist/gateway/gateway-lifecycle.js.map +1 -1
- package/dist/gateway/gateway-plugin-service.d.ts.map +1 -1
- package/dist/gateway/gateway-plugin-service.js +11 -10
- package/dist/gateway/gateway-plugin-service.js.map +1 -1
- package/dist/gateway/gateway-service.d.ts +36 -7
- package/dist/gateway/gateway-service.d.ts.map +1 -1
- package/dist/gateway/gateway-service.js +1105 -242
- package/dist/gateway/gateway-service.js.map +1 -1
- package/dist/gateway/gateway-session-status.d.ts +12 -0
- package/dist/gateway/gateway-session-status.d.ts.map +1 -1
- package/dist/gateway/gateway-session-status.js +125 -5
- package/dist/gateway/gateway-session-status.js.map +1 -1
- package/dist/gateway/gateway-types.d.ts +102 -22
- package/dist/gateway/gateway-types.d.ts.map +1 -1
- package/dist/gateway/gateway-types.js.map +1 -1
- package/dist/gateway/gateway.js +205 -29
- package/dist/gateway/gateway.js.map +1 -1
- package/dist/gateway/qr-svg.d.ts +2 -0
- package/dist/gateway/qr-svg.d.ts.map +1 -0
- package/dist/gateway/qr-svg.js +30 -0
- package/dist/gateway/qr-svg.js.map +1 -0
- package/dist/gateway/skill-commands.d.ts.map +1 -1
- package/dist/gateway/skill-commands.js +158 -103
- 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 -3
- 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 +58 -16
- 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 +56 -16
- package/dist/infra/host-runner.js.map +1 -1
- package/dist/infra/model-response-debug.d.ts +2 -0
- package/dist/infra/model-response-debug.d.ts.map +1 -0
- package/dist/infra/model-response-debug.js +49 -0
- package/dist/infra/model-response-debug.js.map +1 -0
- package/dist/infra/stream-debug.d.ts +2 -0
- package/dist/infra/stream-debug.d.ts.map +1 -1
- package/dist/infra/stream-debug.js +11 -1
- package/dist/infra/stream-debug.js.map +1 -1
- package/dist/media/path-utils.d.ts +1 -1
- package/dist/media/path-utils.d.ts.map +1 -1
- package/dist/media/path-utils.js +1 -11
- package/dist/media/path-utils.js.map +1 -1
- package/dist/media/pdf-context.d.ts.map +1 -1
- package/dist/media/pdf-context.js +2 -11
- package/dist/media/pdf-context.js.map +1 -1
- package/dist/memory/db.d.ts +65 -4
- package/dist/memory/db.d.ts.map +1 -1
- package/dist/memory/db.js +825 -48
- package/dist/memory/db.js.map +1 -1
- package/dist/memory/memory-service.d.ts +6 -1
- package/dist/memory/memory-service.d.ts.map +1 -1
- package/dist/memory/memory-service.js +3 -1
- package/dist/memory/memory-service.js.map +1 -1
- package/dist/plugins/plugin-install.d.ts.map +1 -1
- package/dist/plugins/plugin-install.js +2 -6
- package/dist/plugins/plugin-install.js.map +1 -1
- package/dist/policy/network-policy.d.ts +1 -1
- package/dist/policy/network-policy.d.ts.map +1 -1
- package/dist/policy/network-policy.js +1 -1
- package/dist/policy/network-policy.js.map +1 -1
- package/dist/policy/policy-engine.d.ts +3 -0
- package/dist/policy/policy-engine.d.ts.map +1 -0
- package/dist/policy/policy-engine.js +2 -0
- package/dist/policy/policy-engine.js.map +1 -0
- package/dist/policy/skill-policy.d.ts +6 -0
- package/dist/policy/skill-policy.d.ts.map +1 -0
- package/dist/policy/skill-policy.js +20 -0
- package/dist/policy/skill-policy.js.map +1 -0
- package/dist/providers/anthropic-discovery.d.ts +3 -0
- package/dist/providers/anthropic-discovery.d.ts.map +1 -1
- package/dist/providers/anthropic-discovery.js +16 -0
- package/dist/providers/anthropic-discovery.js.map +1 -1
- package/dist/providers/codex-discovery.d.ts +4 -0
- package/dist/providers/codex-discovery.d.ts.map +1 -1
- package/dist/providers/codex-discovery.js +3 -0
- package/dist/providers/codex-discovery.js.map +1 -1
- package/dist/providers/huggingface-discovery.d.ts +3 -0
- package/dist/providers/huggingface-discovery.d.ts.map +1 -1
- package/dist/providers/huggingface-discovery.js +22 -0
- package/dist/providers/huggingface-discovery.js.map +1 -1
- package/dist/providers/hybridai-discovery.d.ts +8 -0
- package/dist/providers/hybridai-discovery.d.ts.map +1 -1
- package/dist/providers/hybridai-discovery.js +18 -0
- 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 +4 -120
- package/dist/providers/hybridai-models.js.map +1 -1
- package/dist/providers/mistral-discovery.d.ts +3 -0
- package/dist/providers/mistral-discovery.d.ts.map +1 -1
- package/dist/providers/mistral-discovery.js +17 -0
- package/dist/providers/mistral-discovery.js.map +1 -1
- package/dist/providers/model-catalog.d.ts +9 -0
- package/dist/providers/model-catalog.d.ts.map +1 -1
- package/dist/providers/model-catalog.js +107 -8
- package/dist/providers/model-catalog.js.map +1 -1
- package/dist/providers/model-lookup.d.ts +3 -0
- package/dist/providers/model-lookup.d.ts.map +1 -0
- package/dist/providers/model-lookup.js +39 -0
- package/dist/providers/model-lookup.js.map +1 -0
- package/dist/providers/model-metadata.d.ts +20 -0
- package/dist/providers/model-metadata.d.ts.map +1 -0
- package/dist/providers/model-metadata.js +230 -0
- package/dist/providers/model-metadata.js.map +1 -0
- package/dist/providers/openai-compat-discovery.d.ts +3 -0
- package/dist/providers/openai-compat-discovery.d.ts.map +1 -1
- package/dist/providers/openai-compat-discovery.js +45 -7
- package/dist/providers/openai-compat-discovery.js.map +1 -1
- package/dist/providers/openrouter-discovery.d.ts +8 -0
- package/dist/providers/openrouter-discovery.d.ts.map +1 -1
- package/dist/providers/openrouter-discovery.js +16 -0
- package/dist/providers/openrouter-discovery.js.map +1 -1
- package/dist/providers/pricing-discovery.d.ts +6 -0
- package/dist/providers/pricing-discovery.d.ts.map +1 -0
- package/dist/providers/pricing-discovery.js +54 -0
- package/dist/providers/pricing-discovery.js.map +1 -0
- package/dist/providers/utils.d.ts.map +1 -1
- package/dist/providers/utils.js +5 -1
- package/dist/providers/utils.js.map +1 -1
- package/dist/scheduler/heartbeat.d.ts.map +1 -1
- package/dist/scheduler/heartbeat.js +1 -0
- package/dist/scheduler/heartbeat.js.map +1 -1
- package/dist/scheduler/scheduled-task-runner.d.ts.map +1 -1
- package/dist/scheduler/scheduled-task-runner.js +1 -0
- package/dist/scheduler/scheduled-task-runner.js.map +1 -1
- package/dist/security/confidential-redact.d.ts +41 -0
- package/dist/security/confidential-redact.d.ts.map +1 -0
- package/dist/security/confidential-redact.js +169 -0
- package/dist/security/confidential-redact.js.map +1 -0
- package/dist/security/confidential-rules.d.ts +28 -0
- package/dist/security/confidential-rules.d.ts.map +1 -0
- package/dist/security/confidential-rules.js +150 -0
- package/dist/security/confidential-rules.js.map +1 -0
- package/dist/security/confidential-runtime.d.ts +37 -0
- package/dist/security/confidential-runtime.d.ts.map +1 -0
- package/dist/security/confidential-runtime.js +215 -0
- package/dist/security/confidential-runtime.js.map +1 -0
- package/dist/security/media-paths.d.ts.map +1 -1
- package/dist/security/media-paths.js +2 -7
- package/dist/security/media-paths.js.map +1 -1
- package/dist/security/mount-config.d.ts.map +1 -1
- package/dist/security/mount-config.js +3 -10
- package/dist/security/mount-config.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 +2 -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-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/adaptive-skills-types.d.ts +38 -0
- package/dist/skills/adaptive-skills-types.d.ts.map +1 -1
- package/dist/skills/agent-scoreboard.d.ts +32 -0
- package/dist/skills/agent-scoreboard.d.ts.map +1 -0
- package/dist/skills/agent-scoreboard.js +360 -0
- package/dist/skills/agent-scoreboard.js.map +1 -0
- package/dist/skills/skill-formatters.d.ts +10 -0
- package/dist/skills/skill-formatters.d.ts.map +1 -0
- package/dist/skills/skill-formatters.js +91 -0
- package/dist/skills/skill-formatters.js.map +1 -0
- package/dist/skills/skill-import-args.d.ts +1 -1
- package/dist/skills/skill-import-args.d.ts.map +1 -1
- package/dist/skills/skill-install-mode.d.ts +17 -0
- package/dist/skills/skill-install-mode.d.ts.map +1 -0
- package/dist/skills/skill-install-mode.js +39 -0
- package/dist/skills/skill-install-mode.js.map +1 -0
- package/dist/skills/skill-manifest.d.ts +30 -0
- package/dist/skills/skill-manifest.d.ts.map +1 -0
- package/dist/skills/skill-manifest.js +237 -0
- package/dist/skills/skill-manifest.js.map +1 -0
- package/dist/skills/skill-run-events.d.ts +72 -0
- package/dist/skills/skill-run-events.d.ts.map +1 -0
- package/dist/skills/skill-run-events.js +137 -0
- package/dist/skills/skill-run-events.js.map +1 -0
- package/dist/skills/skill-run-trajectories.d.ts +21 -0
- package/dist/skills/skill-run-trajectories.d.ts.map +1 -0
- package/dist/skills/skill-run-trajectories.js +120 -0
- package/dist/skills/skill-run-trajectories.js.map +1 -0
- 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 +4 -4
- package/dist/skills/skills-import.js.map +1 -1
- package/dist/skills/skills-lifecycle.d.ts +54 -0
- package/dist/skills/skills-lifecycle.d.ts.map +1 -0
- package/dist/skills/skills-lifecycle.js +514 -0
- package/dist/skills/skills-lifecycle.js.map +1 -0
- package/dist/skills/skills-observation.d.ts +7 -0
- package/dist/skills/skills-observation.d.ts.map +1 -1
- package/dist/skills/skills-observation.js +145 -32
- package/dist/skills/skills-observation.js.map +1 -1
- package/dist/skills/skills.d.ts +3 -0
- package/dist/skills/skills.d.ts.map +1 -1
- package/dist/skills/skills.js +63 -17
- package/dist/skills/skills.js.map +1 -1
- package/dist/tui-proactive.d.ts.map +1 -1
- package/dist/tui-proactive.js +10 -1
- package/dist/tui-proactive.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-thinking.d.ts +5 -0
- package/dist/tui-thinking.d.ts.map +1 -1
- package/dist/tui-thinking.js +157 -3
- package/dist/tui-thinking.js.map +1 -1
- package/dist/tui.d.ts +4 -0
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +304 -38
- package/dist/tui.js.map +1 -1
- package/dist/tunnel/ngrok-tunnel-provider.d.ts +40 -0
- package/dist/tunnel/ngrok-tunnel-provider.d.ts.map +1 -0
- package/dist/tunnel/ngrok-tunnel-provider.js +119 -0
- package/dist/tunnel/ngrok-tunnel-provider.js.map +1 -0
- package/dist/tunnel/tunnel-provider.d.ts +13 -0
- package/dist/tunnel/tunnel-provider.d.ts.map +1 -0
- package/dist/tunnel/tunnel-provider.js +2 -0
- package/dist/tunnel/tunnel-provider.js.map +1 -0
- package/dist/types/container.d.ts +1 -0
- package/dist/types/container.d.ts.map +1 -1
- package/dist/types/execution.d.ts +7 -0
- package/dist/types/execution.d.ts.map +1 -1
- package/dist/types/session.d.ts +4 -0
- package/dist/types/session.d.ts.map +1 -1
- package/dist/types/usage.d.ts +13 -0
- package/dist/types/usage.d.ts.map +1 -1
- package/dist/utils/path.d.ts +2 -0
- package/dist/utils/path.d.ts.map +1 -0
- package/dist/utils/path.js +12 -0
- package/dist/utils/path.js.map +1 -0
- package/dist/utils/secret-prompt.d.ts.map +1 -1
- package/dist/utils/secret-prompt.js +9 -2
- package/dist/utils/secret-prompt.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 +5 -0
- package/dist/utils/text-format.js.map +1 -1
- package/docs/content/README.md +21 -14
- package/docs/content/channels/README.md +1 -0
- package/docs/content/channels/admin-console.md +13 -2
- package/docs/content/channels/overview.md +1 -0
- package/docs/content/channels/policies-and-allowlists.md +3 -0
- package/docs/content/channels/signal.md +259 -0
- package/docs/content/developer-guide/approvals.md +84 -4
- package/docs/content/developer-guide/runtime.md +6 -2
- package/docs/content/extensibility/adaptive-skills.md +10 -1
- package/docs/content/extensibility/skills.md +24 -4
- package/docs/content/getting-started/first-channel.md +3 -0
- package/docs/content/getting-started/installation.md +59 -0
- package/docs/content/getting-started/quickstart.md +10 -0
- package/docs/content/guides/remote-access.md +16 -0
- package/docs/content/guides/skills/README.md +2 -0
- package/docs/content/guides/skills/business-skills.md +114 -0
- package/docs/content/internal/roadmap.md +131 -0
- package/docs/content/manifesto.md +79 -0
- package/docs/content/reference/commands.md +30 -6
- package/docs/content/reference/configuration.md +43 -6
- package/docs/content/reference/diagnostics.md +11 -0
- package/docs/content/reference/model-selection.md +12 -0
- package/docs/development/README.md +17 -13
- package/docs/development/extensibility/adaptive-skills.md +10 -1
- package/docs/development/extensibility/skills.md +24 -4
- package/docs/development/getting-started/README.md +1 -1
- package/docs/development/getting-started/channels.md +3 -2
- package/docs/development/getting-started/installation.md +61 -1
- package/docs/development/getting-started/quickstart.md +7 -0
- package/docs/development/guides/remote-access.md +16 -0
- package/docs/development/guides/skills/README.md +2 -0
- package/docs/development/guides/skills/business-skills.md +114 -0
- package/docs/development/internals/approvals.md +78 -1
- package/docs/development/reference/commands.md +32 -7
- package/docs/development/reference/configuration.md +28 -6
- package/docs/development/reference/diagnostics.md +11 -0
- package/docs/development/reference/model-selection.md +12 -0
- package/docs/index.html +12 -12
- package/docs/static/docs.js +4 -1
- package/package.json +2 -1
- package/console/dist/assets/chat-BSXPZ8qI.css +0 -1
- package/console/dist/assets/chat-FEmn1-LG.js +0 -93
- package/console/dist/assets/cx-D_Ee3160.js +0 -1
- package/console/dist/assets/index-D63KL_Xr.js +0 -15
- package/console/dist/assets/index-DbvykpXR.css +0 -1
- package/docs/chat.html +0 -4417
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,152 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## [0.14.0](https://github.com/HybridAIOne/hybridclaw/tree/v0.14.0) - 2026-04-28
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- **Signal channel**: HybridClaw can connect to Signal through a
|
|
10
|
+
`signal-cli` compatible daemon, with private-by-default DM and group
|
|
11
|
+
policies, outbound chunk pacing, reconnect handling, admin QR linking, and a
|
|
12
|
+
full setup guide.
|
|
13
|
+
- **Confidential-info filter and audit leak scanner**: Operators can define
|
|
14
|
+
NDA-class client, project, person, keyword, and regex rules in
|
|
15
|
+
`.confidential.yml`; prompts are redacted before model calls, responses are
|
|
16
|
+
rehydrated for the user, and `hybridclaw audit scan-leaks` can inspect
|
|
17
|
+
historic audit logs with severity and type filters.
|
|
18
|
+
- **Admin statistics and agent scoreboard**: The admin console adds
|
|
19
|
+
`/admin/statistics` for session, message, token, cost, and channel trends,
|
|
20
|
+
plus `/admin/agent-scoreboard` for per-agent skill scores, best skills,
|
|
21
|
+
reliability, timing, and CV links.
|
|
22
|
+
- **Live context usage controls**: Web chat shows a live context-usage ring,
|
|
23
|
+
local sessions support `/context`, and compaction headroom is visible before
|
|
24
|
+
long-running chats hit the model window.
|
|
25
|
+
- **Packaged skill lifecycle**: Production skills can declare manifests with
|
|
26
|
+
package id, version, capabilities, required credentials, and supported
|
|
27
|
+
channels. Operators can install, upgrade, uninstall, list revisions, and roll
|
|
28
|
+
back managed skills with audited snapshots.
|
|
29
|
+
- **Skill autonomy and stakes policy foundations**: `skills.autonomy` records
|
|
30
|
+
per-agent skill autonomy levels, the container approval policy can classify
|
|
31
|
+
high-stakes actions, and conditional skill availability can be routed through
|
|
32
|
+
the generalized policy engine.
|
|
33
|
+
- **Deployment config and ngrok tunnel provider**: Runtime config now declares
|
|
34
|
+
local or cloud deployment mode, public URLs, tunnel provider intent, and a
|
|
35
|
+
built-in ngrok tunnel provider backed by the encrypted `NGROK_AUTHTOKEN`
|
|
36
|
+
secret.
|
|
37
|
+
- **Nix and Homebrew packaging groundwork**: The repo ships a multi-arch Nix
|
|
38
|
+
flake, NixOS service module, contributor dev shell, packaging notes, and a
|
|
39
|
+
preview Homebrew formula for future tap publication.
|
|
40
|
+
- **Model metadata, pricing, and monthly usage rollups**: `/model info`,
|
|
41
|
+
`/usage`, and the admin Models page surface discovered context windows,
|
|
42
|
+
output limits, capabilities, pricing, and monthly per-model spend when
|
|
43
|
+
providers expose that metadata.
|
|
44
|
+
- **Headful browser control**: Browser tools can run a visible Chrome session
|
|
45
|
+
when a user explicitly asks for headed/headful control, while shared browser
|
|
46
|
+
login profiles stay reusable for automation.
|
|
47
|
+
- **Agent-to-agent and trajectory persistence foundations**: The runtime can
|
|
48
|
+
persist A2A envelopes and opt-in redacted skill-run trajectories, creating
|
|
49
|
+
the data trail needed for multi-agent handoffs, skill evaluation, and future
|
|
50
|
+
workflow tuning.
|
|
51
|
+
|
|
52
|
+
### Changed
|
|
53
|
+
|
|
54
|
+
- **Browser chat is more operational**: Chat navigation is session-id driven,
|
|
55
|
+
recent sessions keep richer snippets, the composer can switch agents, slash
|
|
56
|
+
result streams render correctly, and context-ring data is shared with the
|
|
57
|
+
`/context` command.
|
|
58
|
+
- **Agent terminology and profile data are consistent**: The UI and internal
|
|
59
|
+
persistence moved from coworker compatibility naming to agent naming, while
|
|
60
|
+
agent configs gained owner, role, and CV fields.
|
|
61
|
+
- **Model and provider status is discovery-led**: Provider catalogs cache
|
|
62
|
+
runtime discovery, merge pinned entries with discovered models, remove stale
|
|
63
|
+
static pricing assumptions, and keep status/model-info output focused on the
|
|
64
|
+
active model.
|
|
65
|
+
- **Approval and policy evaluation is more explicit**: Approval tiers can be
|
|
66
|
+
influenced by autonomy level and stakes classification, invalid policy
|
|
67
|
+
regexes and thresholds warn early, and unsafe realpath inspection during
|
|
68
|
+
approval classification is avoided.
|
|
69
|
+
- **Local diagnostics are more precise**: Gateway debug startup flags can
|
|
70
|
+
capture raw model responses and last prompts for local troubleshooting, and
|
|
71
|
+
`doctor` resource hygiene can reclaim stale gateway artifacts more safely.
|
|
72
|
+
- **TUI and status reporting are quieter and more useful**: Proactive polling
|
|
73
|
+
runs less often, streamed TUI responses preserve visible text, transient tool
|
|
74
|
+
lines truncate cleanly, and status output includes tokens-per-second and
|
|
75
|
+
time-to-first-token aware metrics.
|
|
76
|
+
|
|
77
|
+
### Fixed
|
|
78
|
+
|
|
79
|
+
- **Web fetch is guarded against SSRF**: Plain HTTP retrieval now enforces
|
|
80
|
+
private-network protections more consistently before escalating to browser
|
|
81
|
+
tools.
|
|
82
|
+
- **Headful browser launches require system Chrome**: Visible browser control
|
|
83
|
+
refuses unstable headed macOS fallback launches and reports the required
|
|
84
|
+
Chrome executable setup instead.
|
|
85
|
+
- **Voice turns survive relay reconnects**: Twilio voice relay reconnects no
|
|
86
|
+
longer lose the active turn state while the gateway is handling a call.
|
|
87
|
+
- **Chat history and streaming edge cases are closed**: Result-only slash
|
|
88
|
+
streams render, tool-call sentinels are stripped before storage, regenerated
|
|
89
|
+
replies include tools used, context rings stay visible, and `/chat.html`
|
|
90
|
+
redirects preserve query strings.
|
|
91
|
+
- **Skill lifecycle and manifest handling are stricter**: Managed skill
|
|
92
|
+
installs require installed status records, validate snapshot entries, cap
|
|
93
|
+
restored file modes, preserve unknown deployment tunnel providers, and reject
|
|
94
|
+
upgrades for uninstalled packages.
|
|
95
|
+
- **Channel runtimes shut down more predictably**: WhatsApp and voice shutdown
|
|
96
|
+
paths cancel stale work, Signal delivery validates daemon/account state, and
|
|
97
|
+
channel send tools remain scoped to active transports.
|
|
98
|
+
|
|
99
|
+
## [0.13.1](https://github.com/HybridAIOne/hybridclaw/tree/v0.13.1) - 2026-04-24
|
|
100
|
+
|
|
101
|
+
### Added
|
|
102
|
+
|
|
103
|
+
- **Delegation runtime reporting**: Delegated agent runs now persist their own
|
|
104
|
+
request logs, audit tool events, model usage, token counts, and artifacts.
|
|
105
|
+
`/status` rolls first-level delegate usage into the session summary when a
|
|
106
|
+
dedicated delegate model is configured.
|
|
107
|
+
- **Dedicated proactive delegate model**: Added
|
|
108
|
+
`proactive.delegation.model`, allowing operators to run delegated tasks on a
|
|
109
|
+
different model from the parent orchestration turn.
|
|
110
|
+
- **Live delegate progress in the TUI**: Delegate batches now stream status
|
|
111
|
+
blocks, child tool progress, token totals, and synthesized final-answer
|
|
112
|
+
deltas into local TUI sessions without interrupting the active prompt.
|
|
113
|
+
- **Shared gateway command parsing helpers**: Added common parsing utilities
|
|
114
|
+
for command ids, lower-case subcommands, and integer arguments across
|
|
115
|
+
policy, concierge, skill, session, usage, export, audit, and schedule
|
|
116
|
+
commands.
|
|
117
|
+
|
|
118
|
+
### Changed
|
|
119
|
+
|
|
120
|
+
- **Delegation prompts and approvals are clearer**: Delegation metadata moves
|
|
121
|
+
into the child user prompt, subagents get more explicit tool-use guidance,
|
|
122
|
+
duplicate delegate task titles are tracked independently, and `delegate` is
|
|
123
|
+
classified as green because child tool calls are approved separately.
|
|
124
|
+
- **TUI activity rendering is more stable**: Running tools pulse in place,
|
|
125
|
+
completed tools switch to a green checkmark, streamed text row counts are
|
|
126
|
+
tracked incrementally, and delegate tool calls suppress partial parent text
|
|
127
|
+
until delegate output is ready.
|
|
128
|
+
- **Console chat navigation is easier to reach**: The chat sidebar collapses
|
|
129
|
+
to an icon rail on desktop, exposes a mobile topbar trigger, and respects
|
|
130
|
+
reduced-motion preferences.
|
|
131
|
+
- **Encrypted web-search credentials feed runtimes consistently**: Brave,
|
|
132
|
+
Perplexity, and Tavily API keys are resolved through the runtime secret store
|
|
133
|
+
and injected into host/container agent runtimes from the active encrypted
|
|
134
|
+
credentials, with environment variables used as fallback.
|
|
135
|
+
- **Liquid/LFM local model tool prompts are more compatible**: Local
|
|
136
|
+
OpenAI-compatible Liquid/LFM requests include a compact tool list in the
|
|
137
|
+
system prompt while preserving normal tool-choice request fields.
|
|
138
|
+
|
|
139
|
+
### Fixed
|
|
140
|
+
|
|
141
|
+
- **WhatsApp shutdown no longer waits on stale inbound batches**: Runtime
|
|
142
|
+
shutdown cancels debounced WhatsApp batches, aborts in-flight handlers,
|
|
143
|
+
stops typing indicators, and avoids starting new typing state after shutdown
|
|
144
|
+
begins.
|
|
145
|
+
- **Console audit inspection stays visible while browsing events**: The audit
|
|
146
|
+
detail panel remains sticky as the event list scrolls.
|
|
147
|
+
- **Whitespace-padded command arguments normalize consistently**: Gateway
|
|
148
|
+
command handlers now trim ids and lower-case subcommands through shared
|
|
149
|
+
helpers before dispatching.
|
|
150
|
+
|
|
5
151
|
## [0.13.0](https://github.com/HybridAIOne/hybridclaw/tree/v0.13.0) - 2026-04-22
|
|
6
152
|
|
|
7
153
|
### Added
|
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,
|
|
23
|
-
Twilio voice, or the web. Run it locally, deploy it for business
|
|
24
|
-
and keep your agents, secrets, and data under your control.
|
|
22
|
+
Connect it to Discord, Slack, Signal, WhatsApp, Telegram, Microsoft Teams,
|
|
23
|
+
email, Twilio voice, or the web. Run it locally, deploy it for business
|
|
24
|
+
workflows, 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, config, and channel-specific instructions
|
|
81
|
+
scheduler, audit, statistics, 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
|
|
|
@@ -95,16 +95,21 @@ 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 shows live context-window usage, accepts `/context`, and lets you
|
|
99
|
+
switch the active agent from the composer
|
|
98
100
|
- Web Chat accepts `/btw <question>` side questions while a primary run is
|
|
99
101
|
active, so you can ask an ephemeral follow-up without interrupting the
|
|
100
102
|
current run
|
|
101
103
|
- Admin Console: `http://127.0.0.1:9090/admin` for channels, versioned agent files,
|
|
102
|
-
scheduler, audit, config, and channel-specific instructions
|
|
104
|
+
scheduler, audit, statistics, config, and channel-specific instructions
|
|
103
105
|
- Agent Dashboard: `http://127.0.0.1:9090/agents`
|
|
104
|
-
- or connect Slack, WhatsApp, Telegram, Discord, Microsoft Teams, Email
|
|
106
|
+
- or connect Slack, Signal, WhatsApp, Telegram, Discord, Microsoft Teams, Email
|
|
105
107
|
|
|
106
108
|
## Operator workflows
|
|
107
109
|
|
|
110
|
+
- Install from npm, source, or the multi-arch Nix flake; a preview Homebrew
|
|
111
|
+
formula is available for `--HEAD` builds while stable tap publication is
|
|
112
|
+
prepared.
|
|
108
113
|
- `hybridclaw gateway status` reports sandbox/runtime details, and in
|
|
109
114
|
container mode it includes the configured image name plus the resolved
|
|
110
115
|
version and short image id.
|
|
@@ -114,23 +119,39 @@ Once the gateway is running, open HybridClaw locally:
|
|
|
114
119
|
- `/admin/agents` edits allowlisted bootstrap markdown files such as
|
|
115
120
|
`AGENTS.md`, keeps saved revisions, and restores earlier versions from the
|
|
116
121
|
browser.
|
|
122
|
+
- `/admin/statistics` reports message, session, token, cost, and channel trends
|
|
123
|
+
across a selected date range.
|
|
124
|
+
- `/admin/agent-scoreboard` ranks agents by observed skill scores, reliability,
|
|
125
|
+
timing, best skills, and CV links.
|
|
117
126
|
- `hybridclaw agent config` accepts generated JSON payloads to upsert agent
|
|
118
127
|
metadata, write bootstrap markdown, import profile images into the agent
|
|
119
128
|
workspace, and optionally activate the agent.
|
|
120
129
|
- `/admin/channels` edits transport config, encrypted channel credentials,
|
|
121
|
-
Twilio voice settings, and per-channel instructions that
|
|
122
|
-
prompts at runtime.
|
|
130
|
+
Signal QR linking, Twilio voice settings, and per-channel instructions that
|
|
131
|
+
are injected into prompts at runtime.
|
|
123
132
|
- `/admin/approvals` manages approval policies from the browser.
|
|
124
133
|
- `/admin/gateway` reloads runtime config and refreshes secrets from the
|
|
125
134
|
browser without tearing down the enclosing workspace container; keep
|
|
126
135
|
`hybridclaw gateway restart` for local/manual full restarts.
|
|
136
|
+
- `/context` and the web chat context ring show current context-window usage,
|
|
137
|
+
remaining headroom, and compaction counts for the active session.
|
|
138
|
+
- `proactive.delegation.model` can pin delegated work to a different model
|
|
139
|
+
from the parent turn; `/status` shows delegate token totals and local-token
|
|
140
|
+
share when that split is configured.
|
|
141
|
+
- `deployment.mode`, `deployment.public_url`, and `deployment.tunnel.provider`
|
|
142
|
+
describe local/cloud exposure. The built-in ngrok tunnel provider reads
|
|
143
|
+
`NGROK_AUTHTOKEN` from the encrypted runtime secret store.
|
|
127
144
|
- `container.persistBashState` controls whether bash tool calls share shell
|
|
128
145
|
state (`cd`, exported env vars, aliases) across turns in the same active
|
|
129
146
|
runtime session; `/admin/config` exposes the same setting as `Persistent bash state`.
|
|
147
|
+
- `hybridclaw audit scan-leaks` scans historical audit logs against optional
|
|
148
|
+
`.confidential.yml` rules for NDA-class client, project, person, keyword,
|
|
149
|
+
and regex matches.
|
|
130
150
|
- Generated artifacts remain downloadable and attachable even when the sandbox
|
|
131
151
|
exposes a custom workspace display root such as `/app`.
|
|
132
|
-
- `hybridclaw tui` includes
|
|
133
|
-
|
|
152
|
+
- `hybridclaw tui` includes live delegate progress, pulsing tool rows,
|
|
153
|
+
completion checkmarks, a keyboard-driven approval picker, and a ready-to-run
|
|
154
|
+
`hybridclaw tui --resume <sessionId>` command on exit.
|
|
134
155
|
- `hybridclaw doctor` checks runtime health including resource hygiene
|
|
135
156
|
maintenance for stale gateway artifacts.
|
|
136
157
|
- `hybridclaw onboarding` and related local setup flows can restore the last
|
|
@@ -138,6 +159,9 @@ Once the gateway is running, open HybridClaw locally:
|
|
|
138
159
|
`config.json` becomes invalid.
|
|
139
160
|
- `hybridclaw skill import` supports community sources, local directories,
|
|
140
161
|
and `.zip` archives.
|
|
162
|
+
- `hybridclaw skill install <source>`, `skill upgrade`, `skill revisions`, and
|
|
163
|
+
`skill rollback` manage packaged business skills with manifests, audit
|
|
164
|
+
events, and snapshots.
|
|
141
165
|
- The bundled tutorials cover owner, GTM, marketing, sales, DevRel, content,
|
|
142
166
|
invoicing, webinar, and release-launch workflows that can run from the TUI,
|
|
143
167
|
web chat, or connected channels.
|
|
@@ -157,14 +181,23 @@ Once the gateway is running, open HybridClaw locally:
|
|
|
157
181
|
Kimi, MiniMax, DashScope, Xiaomi, Kilo Code, and local backends such as
|
|
158
182
|
Ollama, LM Studio, llama.cpp, and vLLM. Remote OpenAI-compatible providers
|
|
159
183
|
can merge runtime-discovered model catalogs with operator-pinned lists.
|
|
184
|
+
- `/model info`, `/usage monthly`, `/usage model monthly`, and the admin
|
|
185
|
+
Models page surface discovered context windows, output limits, model
|
|
186
|
+
capabilities, pricing, and per-model monthly spend where provider metadata is
|
|
187
|
+
available.
|
|
160
188
|
- Anthropic can run through the direct Messages API with `ANTHROPIC_API_KEY`
|
|
161
189
|
or through the official Claude CLI transport in host sandbox mode.
|
|
190
|
+
- Brave, Perplexity, and Tavily web-search credentials can live in the
|
|
191
|
+
encrypted runtime secret store and are passed into host or container agent
|
|
192
|
+
runtimes from the active config.
|
|
162
193
|
- Google OAuth credentials for Workspace skills live in the encrypted runtime
|
|
163
194
|
secret store; agent runtimes receive short-lived access tokens for `gog` and
|
|
164
195
|
`gws` instead of long-lived refresh tokens.
|
|
165
196
|
- Skills can be enabled or disabled globally or per channel from
|
|
166
197
|
`hybridclaw skill enable|disable`, TUI `/skill config`, or the admin
|
|
167
198
|
`Skills` page.
|
|
199
|
+
- Packaged skills can declare versioned manifests, capabilities, required
|
|
200
|
+
credentials, supported channels, and per-agent autonomy policy.
|
|
168
201
|
- Bundled skills include API-backed Google Workspace workflows (`gog`, `gws`),
|
|
169
202
|
GitHub issue queue processing (`gh-issues`), and editable Excalidraw diagram
|
|
170
203
|
creation.
|
|
@@ -203,6 +236,8 @@ Once the gateway is running, open HybridClaw locally:
|
|
|
203
236
|
## Security and governance built in
|
|
204
237
|
|
|
205
238
|
- secure credential storage
|
|
239
|
+
- optional confidential-info redaction before model calls
|
|
240
|
+
- retroactive audit leak scanning
|
|
206
241
|
- sandboxed execution
|
|
207
242
|
- approvals
|
|
208
243
|
- audit trails with hash chain
|
|
@@ -226,11 +261,12 @@ Once the gateway is running, open HybridClaw locally:
|
|
|
226
261
|
|
|
227
262
|
## Architecture
|
|
228
263
|
|
|
229
|
-
- **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
|
|
264
|
+
- **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, Signal, Microsoft Teams, Telegram, iMessage, WhatsApp, Twilio voice, and email
|
|
230
265
|
- **TUI client** — thin client over HTTP (`/api/chat`, `/api/command`) with
|
|
231
266
|
a structured startup banner that surfaces model, sandbox, gateway, and
|
|
232
|
-
chatbot context before the first prompt,
|
|
233
|
-
pending approvals, and an exit summary
|
|
267
|
+
chatbot context before the first prompt, live delegate status/progress,
|
|
268
|
+
an interactive approval picker for pending approvals, and an exit summary
|
|
269
|
+
with a ready-to-run resume command
|
|
234
270
|
- **Container** (Docker, ephemeral) — HybridAI API client, sandboxed tool executor, and preinstalled browser automation runtime with cursor-aware snapshots for JS-heavy custom UI
|
|
235
271
|
- Communication via file-based IPC (input.json / output.json)
|
|
236
272
|
|
|
@@ -260,6 +296,7 @@ Browse the full manual at
|
|
|
260
296
|
[Discord](https://www.hybridclaw.io/docs/channels/discord),
|
|
261
297
|
[Slack](https://www.hybridclaw.io/docs/channels/slack),
|
|
262
298
|
[Telegram](https://www.hybridclaw.io/docs/channels/telegram),
|
|
299
|
+
[Signal](https://www.hybridclaw.io/docs/channels/signal),
|
|
263
300
|
[Email](https://www.hybridclaw.io/docs/channels/email),
|
|
264
301
|
[WhatsApp](https://www.hybridclaw.io/docs/channels/whatsapp),
|
|
265
302
|
[iMessage](https://www.hybridclaw.io/docs/channels/imessage), and
|
package/SECURITY.md
CHANGED
|
@@ -101,6 +101,39 @@ Implementation: [src/session/session-key.ts](./src/session/session-key.ts),
|
|
|
101
101
|
[src/session/session-routing.ts](./src/session/session-routing.ts),
|
|
102
102
|
[src/memory/db.ts](./src/memory/db.ts)
|
|
103
103
|
|
|
104
|
+
### 4.1) Confidential-Info Filter (NDA / secret-leak detector)
|
|
105
|
+
|
|
106
|
+
Optional, opt-in filter that prevents NDA-class business data from leaving the
|
|
107
|
+
host:
|
|
108
|
+
|
|
109
|
+
- Define rules in `.confidential.yml`. The loader checks the current working
|
|
110
|
+
directory first (`./.confidential.yml`) and then
|
|
111
|
+
`~/.hybridclaw/.confidential.yml`; first hit wins. The file holds clients,
|
|
112
|
+
projects, people, keywords, and regex patterns, each tagged with a
|
|
113
|
+
sensitivity level.
|
|
114
|
+
- Before every prompt is sent to a model, matches are replaced with stable
|
|
115
|
+
placeholders (`«CONF:CLIENT_001»`); the mapping is held in process memory and
|
|
116
|
+
forgotten when the request ends.
|
|
117
|
+
- Streaming text deltas and the final response are rehydrated for the user, so
|
|
118
|
+
the model never sees the original strings but the user sees real names.
|
|
119
|
+
- Disabled via `HYBRIDCLAW_CONFIDENTIAL_DISABLE=1` for debugging or dry-runs.
|
|
120
|
+
|
|
121
|
+
A retroactive scanner walks existing audit logs to surface possible past leaks
|
|
122
|
+
and assigns a 0-100 risk score:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
hybridclaw audit scan-leaks # scan every session
|
|
126
|
+
hybridclaw audit scan-leaks <sessionId> # scan one session
|
|
127
|
+
hybridclaw audit scan-leaks --level high # critical/high only
|
|
128
|
+
hybridclaw audit scan-leaks --type in,out # prompts and model responses only
|
|
129
|
+
hybridclaw audit scan-leaks --json # machine-readable report
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Implementation: [src/security/confidential-rules.ts](./src/security/confidential-rules.ts),
|
|
133
|
+
[src/security/confidential-redact.ts](./src/security/confidential-redact.ts),
|
|
134
|
+
[src/security/confidential-runtime.ts](./src/security/confidential-runtime.ts),
|
|
135
|
+
[src/audit/leak-scanner.ts](./src/audit/leak-scanner.ts).
|
|
136
|
+
|
|
104
137
|
### 5) Audit & Tamper Evidence
|
|
105
138
|
|
|
106
139
|
Security-relevant behavior is written to structured audit logs:
|
package/config.example.json
CHANGED
|
@@ -1,23 +1,32 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version":
|
|
2
|
+
"version": 23,
|
|
3
3
|
"security": {
|
|
4
4
|
"trustModelAccepted": false,
|
|
5
5
|
"trustModelAcceptedAt": "",
|
|
6
6
|
"trustModelVersion": "",
|
|
7
7
|
"trustModelAcceptedBy": ""
|
|
8
8
|
},
|
|
9
|
+
"deployment": {
|
|
10
|
+
"mode": "local",
|
|
11
|
+
"public_url": "",
|
|
12
|
+
"tunnel": {
|
|
13
|
+
"provider": "manual"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
9
16
|
"skills": {
|
|
10
17
|
"extraDirs": [],
|
|
11
18
|
"disabled": [],
|
|
12
19
|
"channelDisabled": {
|
|
13
20
|
"discord": [],
|
|
14
21
|
"msteams": [],
|
|
22
|
+
"signal": [],
|
|
15
23
|
"slack": [],
|
|
16
24
|
"telegram": [],
|
|
17
25
|
"voice": [],
|
|
18
26
|
"whatsapp": [],
|
|
19
27
|
"email": []
|
|
20
|
-
}
|
|
28
|
+
},
|
|
29
|
+
"installed": []
|
|
21
30
|
},
|
|
22
31
|
"tools": {
|
|
23
32
|
"disabled": []
|
|
@@ -25,6 +34,7 @@
|
|
|
25
34
|
"channelInstructions": {
|
|
26
35
|
"discord": "",
|
|
27
36
|
"msteams": "",
|
|
37
|
+
"signal": "",
|
|
28
38
|
"slack": "",
|
|
29
39
|
"telegram": "",
|
|
30
40
|
"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.",
|
|
@@ -35,6 +45,10 @@
|
|
|
35
45
|
"adaptiveSkills": {
|
|
36
46
|
"enabled": false,
|
|
37
47
|
"observationEnabled": true,
|
|
48
|
+
"trajectoryCapture": {
|
|
49
|
+
"enabledAgentIds": [],
|
|
50
|
+
"storeDir": ""
|
|
51
|
+
},
|
|
38
52
|
"inspectionIntervalMs": 3600000,
|
|
39
53
|
"observationRetentionDays": 30,
|
|
40
54
|
"trailingWindowHours": 168,
|
|
@@ -157,6 +171,18 @@
|
|
|
157
171
|
"textChunkLimit": 4000,
|
|
158
172
|
"mediaMaxMb": 20
|
|
159
173
|
},
|
|
174
|
+
"signal": {
|
|
175
|
+
"enabled": false,
|
|
176
|
+
"daemonUrl": "http://127.0.0.1:8080",
|
|
177
|
+
"account": "",
|
|
178
|
+
"dmPolicy": "allowlist",
|
|
179
|
+
"groupPolicy": "disabled",
|
|
180
|
+
"allowFrom": [],
|
|
181
|
+
"groupAllowFrom": [],
|
|
182
|
+
"textChunkLimit": 4000,
|
|
183
|
+
"reconnectIntervalMs": 5000,
|
|
184
|
+
"outboundDelayMs": 350
|
|
185
|
+
},
|
|
160
186
|
"whatsapp": {
|
|
161
187
|
"dmPolicy": "pairing",
|
|
162
188
|
"groupPolicy": "disabled",
|
|
@@ -525,6 +551,7 @@
|
|
|
525
551
|
},
|
|
526
552
|
"delegation": {
|
|
527
553
|
"enabled": true,
|
|
554
|
+
"model": "",
|
|
528
555
|
"maxConcurrent": 3,
|
|
529
556
|
"maxDepth": 2,
|
|
530
557
|
"maxPerTurn": 3
|