@hybridaione/hybridclaw 0.13.1 → 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 +94 -0
- package/README.md +38 -9
- package/SECURITY.md +33 -0
- package/config.example.json +28 -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-D03p0Tw7.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 +137 -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 +114 -19
- 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 +214 -26
- 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 +5 -2
- 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 +186 -103
- package/container/src/browser-tools.ts +114 -5
- package/container/src/extensions.ts +74 -9
- package/container/src/index.ts +132 -10
- 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 +234 -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 +5 -0
- 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 +6 -20
- 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/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 +1 -0
- package/dist/channels/whatsapp/debounce.d.ts.map +1 -1
- package/dist/channels/whatsapp/debounce.js +7 -0
- package/dist/channels/whatsapp/debounce.js.map +1 -1
- package/dist/channels/whatsapp/runtime.js +1 -1
- 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-registry.d.ts.map +1 -1
- package/dist/command-registry.js +114 -6
- package/dist/command-registry.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.map +1 -1
- package/dist/config/config.js +9 -3
- 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 +86 -4
- package/dist/config/runtime-config.d.ts.map +1 -1
- package/dist/config/runtime-config.js +364 -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/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 +93 -7
- package/dist/gateway/gateway-chat-service.js.map +1 -1
- 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 +231 -3
- 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-service.d.ts +20 -7
- package/dist/gateway/gateway-service.d.ts.map +1 -1
- package/dist/gateway/gateway-service.js +384 -77
- package/dist/gateway/gateway-service.js.map +1 -1
- package/dist/gateway/gateway-session-status.d.ts +6 -0
- package/dist/gateway/gateway-session-status.d.ts.map +1 -1
- package/dist/gateway/gateway-session-status.js +107 -4
- 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 +148 -92
- package/dist/gateway/skill-commands.js.map +1 -1
- package/dist/infra/container-runner.d.ts.map +1 -1
- package/dist/infra/container-runner.js +54 -12
- 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 +52 -12
- 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 +64 -4
- package/dist/memory/db.d.ts.map +1 -1
- package/dist/memory/db.js +811 -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/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-skill-config.d.ts +1 -1
- package/dist/tui-skill-config.d.ts.map +1 -1
- package/dist/tui-thinking.d.ts +4 -0
- package/dist/tui-thinking.d.ts.map +1 -1
- package/dist/tui-thinking.js +146 -3
- package/dist/tui-thinking.js.map +1 -1
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +46 -46
- 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 -21
- 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 +78 -1
- 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 +36 -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-B3W1Ca_5.js +0 -93
- package/console/dist/assets/chat-BWpulWPN.css +0 -1
- package/console/dist/assets/cx-D_Ee3160.js +0 -1
- package/console/dist/assets/index-BnOCY0ZR.css +0 -1
- package/console/dist/assets/index-DIF3rME4.js +0 -15
- package/docs/chat.html +0 -4417
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,100 @@
|
|
|
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
|
+
|
|
5
99
|
## [0.13.1](https://github.com/HybridAIOne/hybridclaw/tree/v0.13.1) - 2026-04-24
|
|
6
100
|
|
|
7
101
|
### 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,22 +119,34 @@ 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.
|
|
127
138
|
- `proactive.delegation.model` can pin delegated work to a different model
|
|
128
139
|
from the parent turn; `/status` shows delegate token totals and local-token
|
|
129
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.
|
|
130
144
|
- `container.persistBashState` controls whether bash tool calls share shell
|
|
131
145
|
state (`cd`, exported env vars, aliases) across turns in the same active
|
|
132
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.
|
|
133
150
|
- Generated artifacts remain downloadable and attachable even when the sandbox
|
|
134
151
|
exposes a custom workspace display root such as `/app`.
|
|
135
152
|
- `hybridclaw tui` includes live delegate progress, pulsing tool rows,
|
|
@@ -142,6 +159,9 @@ Once the gateway is running, open HybridClaw locally:
|
|
|
142
159
|
`config.json` becomes invalid.
|
|
143
160
|
- `hybridclaw skill import` supports community sources, local directories,
|
|
144
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.
|
|
145
165
|
- The bundled tutorials cover owner, GTM, marketing, sales, DevRel, content,
|
|
146
166
|
invoicing, webinar, and release-launch workflows that can run from the TUI,
|
|
147
167
|
web chat, or connected channels.
|
|
@@ -161,6 +181,10 @@ Once the gateway is running, open HybridClaw locally:
|
|
|
161
181
|
Kimi, MiniMax, DashScope, Xiaomi, Kilo Code, and local backends such as
|
|
162
182
|
Ollama, LM Studio, llama.cpp, and vLLM. Remote OpenAI-compatible providers
|
|
163
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.
|
|
164
188
|
- Anthropic can run through the direct Messages API with `ANTHROPIC_API_KEY`
|
|
165
189
|
or through the official Claude CLI transport in host sandbox mode.
|
|
166
190
|
- Brave, Perplexity, and Tavily web-search credentials can live in the
|
|
@@ -172,6 +196,8 @@ Once the gateway is running, open HybridClaw locally:
|
|
|
172
196
|
- Skills can be enabled or disabled globally or per channel from
|
|
173
197
|
`hybridclaw skill enable|disable`, TUI `/skill config`, or the admin
|
|
174
198
|
`Skills` page.
|
|
199
|
+
- Packaged skills can declare versioned manifests, capabilities, required
|
|
200
|
+
credentials, supported channels, and per-agent autonomy policy.
|
|
175
201
|
- Bundled skills include API-backed Google Workspace workflows (`gog`, `gws`),
|
|
176
202
|
GitHub issue queue processing (`gh-issues`), and editable Excalidraw diagram
|
|
177
203
|
creation.
|
|
@@ -210,6 +236,8 @@ Once the gateway is running, open HybridClaw locally:
|
|
|
210
236
|
## Security and governance built in
|
|
211
237
|
|
|
212
238
|
- secure credential storage
|
|
239
|
+
- optional confidential-info redaction before model calls
|
|
240
|
+
- retroactive audit leak scanning
|
|
213
241
|
- sandboxed execution
|
|
214
242
|
- approvals
|
|
215
243
|
- audit trails with hash chain
|
|
@@ -233,7 +261,7 @@ Once the gateway is running, open HybridClaw locally:
|
|
|
233
261
|
|
|
234
262
|
## Architecture
|
|
235
263
|
|
|
236
|
-
- **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
|
|
237
265
|
- **TUI client** — thin client over HTTP (`/api/chat`, `/api/command`) with
|
|
238
266
|
a structured startup banner that surfaces model, sandbox, gateway, and
|
|
239
267
|
chatbot context before the first prompt, live delegate status/progress,
|
|
@@ -268,6 +296,7 @@ Browse the full manual at
|
|
|
268
296
|
[Discord](https://www.hybridclaw.io/docs/channels/discord),
|
|
269
297
|
[Slack](https://www.hybridclaw.io/docs/channels/slack),
|
|
270
298
|
[Telegram](https://www.hybridclaw.io/docs/channels/telegram),
|
|
299
|
+
[Signal](https://www.hybridclaw.io/docs/channels/signal),
|
|
271
300
|
[Email](https://www.hybridclaw.io/docs/channels/email),
|
|
272
301
|
[WhatsApp](https://www.hybridclaw.io/docs/channels/whatsapp),
|
|
273
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",
|