@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.
Files changed (545) hide show
  1. package/CHANGELOG.md +94 -0
  2. package/README.md +38 -9
  3. package/SECURITY.md +33 -0
  4. package/config.example.json +28 -2
  5. package/console/dist/assets/chat-DSj1yysO.js +93 -0
  6. package/console/dist/assets/chat-rX_Zff0A.css +1 -0
  7. package/console/dist/assets/cx-DXBDPsU_.js +1 -0
  8. package/console/dist/assets/index-B2-VRNy7.css +1 -0
  9. package/console/dist/assets/index-BPAyWCYB.js +15 -0
  10. package/console/dist/assets/{router-CUFYqD1a.js → router-NXexqZsi.js} +1 -1
  11. package/console/dist/assets/{terminal-D03p0Tw7.js → terminal-Cax15rBK.js} +1 -1
  12. package/console/dist/assets/{vendor-C4WPVvdh.js → vendor-BCIzCfhA.js} +1 -1
  13. package/console/dist/index.html +5 -5
  14. package/container/dist/approval-policy.js +137 -85
  15. package/container/dist/approval-policy.js.map +1 -1
  16. package/container/dist/browser-tools.js +96 -5
  17. package/container/dist/browser-tools.js.map +1 -1
  18. package/container/dist/extensions.js +63 -9
  19. package/container/dist/extensions.js.map +1 -1
  20. package/container/dist/index.js +114 -19
  21. package/container/dist/index.js.map +1 -1
  22. package/container/dist/providers/anthropic.js +42 -4
  23. package/container/dist/providers/anthropic.js.map +1 -1
  24. package/container/dist/providers/auxiliary.js +3 -0
  25. package/container/dist/providers/auxiliary.js.map +1 -1
  26. package/container/dist/providers/hybridai.js +61 -5
  27. package/container/dist/providers/hybridai.js.map +1 -1
  28. package/container/dist/providers/local-ollama.js +44 -4
  29. package/container/dist/providers/local-ollama.js.map +1 -1
  30. package/container/dist/providers/local-openai-compat.js +214 -26
  31. package/container/dist/providers/local-openai-compat.js.map +1 -1
  32. package/container/dist/providers/openai-codex.js +41 -7
  33. package/container/dist/providers/openai-codex.js.map +1 -1
  34. package/container/dist/providers/router.js +27 -2
  35. package/container/dist/providers/router.js.map +1 -1
  36. package/container/dist/providers/shared.js +53 -0
  37. package/container/dist/providers/shared.js.map +1 -1
  38. package/container/dist/providers/thinking-extractor.js +25 -3
  39. package/container/dist/providers/thinking-extractor.js.map +1 -1
  40. package/container/dist/providers/tool-call-normalizer.js +66 -6
  41. package/container/dist/providers/tool-call-normalizer.js.map +1 -1
  42. package/container/dist/stakes-classifier.js +316 -0
  43. package/container/dist/stakes-classifier.js.map +1 -0
  44. package/container/dist/stalled-turns.js +5 -0
  45. package/container/dist/stalled-turns.js.map +1 -1
  46. package/container/dist/text-normalization.js +6 -0
  47. package/container/dist/text-normalization.js.map +1 -0
  48. package/container/dist/token-usage.js +53 -0
  49. package/container/dist/token-usage.js.map +1 -1
  50. package/container/dist/tools.js +5 -2
  51. package/container/dist/tools.js.map +1 -1
  52. package/container/dist/types.js.map +1 -1
  53. package/container/dist/web-fetch.js +127 -15
  54. package/container/dist/web-fetch.js.map +1 -1
  55. package/container/package-lock.json +2 -2
  56. package/container/package.json +1 -1
  57. package/container/shared/boolean-utils.d.ts +8 -0
  58. package/container/shared/boolean-utils.js +19 -0
  59. package/container/shared/message-tool-channels.d.ts +1 -0
  60. package/container/shared/message-tool-channels.js +2 -0
  61. package/container/shared/network-policy.d.ts +38 -0
  62. package/container/shared/network-policy.js +121 -0
  63. package/container/shared/policy-engine.d.ts +65 -0
  64. package/container/shared/policy-engine.js +62 -0
  65. package/container/shared/skill-policy.d.ts +57 -0
  66. package/container/shared/skill-policy.js +164 -0
  67. package/container/shared/stakes-classifier.d.ts +36 -0
  68. package/container/shared/stakes-classifier.js +1 -0
  69. package/container/src/approval-policy.ts +186 -103
  70. package/container/src/browser-tools.ts +114 -5
  71. package/container/src/extensions.ts +74 -9
  72. package/container/src/index.ts +132 -10
  73. package/container/src/providers/anthropic.ts +44 -3
  74. package/container/src/providers/auxiliary.ts +3 -0
  75. package/container/src/providers/hybridai.ts +63 -4
  76. package/container/src/providers/local-ollama.ts +46 -3
  77. package/container/src/providers/local-openai-compat.ts +234 -27
  78. package/container/src/providers/openai-codex.ts +43 -12
  79. package/container/src/providers/router.ts +34 -6
  80. package/container/src/providers/shared.ts +86 -0
  81. package/container/src/providers/thinking-extractor.ts +26 -2
  82. package/container/src/providers/tool-call-normalizer.ts +69 -6
  83. package/container/src/stakes-classifier.ts +469 -0
  84. package/container/src/stalled-turns.ts +12 -0
  85. package/container/src/text-normalization.ts +5 -0
  86. package/container/src/token-usage.ts +74 -0
  87. package/container/src/tools.ts +5 -0
  88. package/container/src/types.ts +29 -0
  89. package/container/src/web-fetch.ts +139 -15
  90. package/dist/a2a/envelope.d.ts +35 -0
  91. package/dist/a2a/envelope.d.ts.map +1 -0
  92. package/dist/a2a/envelope.js +188 -0
  93. package/dist/a2a/envelope.js.map +1 -0
  94. package/dist/a2a/identity.d.ts +5 -0
  95. package/dist/a2a/identity.d.ts.map +1 -0
  96. package/dist/a2a/identity.js +86 -0
  97. package/dist/a2a/identity.js.map +1 -0
  98. package/dist/a2a/store.d.ts +7 -0
  99. package/dist/a2a/store.d.ts.map +1 -0
  100. package/dist/a2a/store.js +128 -0
  101. package/dist/a2a/store.js.map +1 -0
  102. package/dist/a2a/utils.d.ts +2 -0
  103. package/dist/a2a/utils.d.ts.map +1 -0
  104. package/dist/a2a/utils.js +4 -0
  105. package/dist/a2a/utils.js.map +1 -0
  106. package/dist/agent/agent.d.ts.map +1 -1
  107. package/dist/agent/agent.js +37 -28
  108. package/dist/agent/agent.js.map +1 -1
  109. package/dist/agent/executor-types.d.ts +1 -0
  110. package/dist/agent/executor-types.d.ts.map +1 -1
  111. package/dist/agent/prompt-hooks.d.ts +3 -5
  112. package/dist/agent/prompt-hooks.d.ts.map +1 -1
  113. package/dist/agent/prompt-hooks.js +6 -20
  114. package/dist/agent/prompt-hooks.js.map +1 -1
  115. package/dist/agent/prompt-parts.d.ts +8 -0
  116. package/dist/agent/prompt-parts.d.ts.map +1 -0
  117. package/dist/agent/prompt-parts.js +39 -0
  118. package/dist/agent/prompt-parts.js.map +1 -0
  119. package/dist/agents/agent-registry.d.ts.map +1 -1
  120. package/dist/agents/agent-registry.js +83 -21
  121. package/dist/agents/agent-registry.js.map +1 -1
  122. package/dist/agents/agent-runtime-config.d.ts.map +1 -1
  123. package/dist/agents/agent-runtime-config.js +5 -1
  124. package/dist/agents/agent-runtime-config.js.map +1 -1
  125. package/dist/agents/agent-types.d.ts +12 -0
  126. package/dist/agents/agent-types.d.ts.map +1 -1
  127. package/dist/agents/agent-types.js +49 -0
  128. package/dist/agents/agent-types.js.map +1 -1
  129. package/dist/audit/audit-cli.d.ts.map +1 -1
  130. package/dist/audit/audit-cli.js +14 -0
  131. package/dist/audit/audit-cli.js.map +1 -1
  132. package/dist/audit/audit-events.d.ts.map +1 -1
  133. package/dist/audit/audit-events.js +43 -7
  134. package/dist/audit/audit-events.js.map +1 -1
  135. package/dist/audit/leak-scanner-cli.d.ts +2 -0
  136. package/dist/audit/leak-scanner-cli.d.ts.map +1 -0
  137. package/dist/audit/leak-scanner-cli.js +342 -0
  138. package/dist/audit/leak-scanner-cli.js.map +1 -0
  139. package/dist/audit/leak-scanner.d.ts +116 -0
  140. package/dist/audit/leak-scanner.d.ts.map +1 -0
  141. package/dist/audit/leak-scanner.js +466 -0
  142. package/dist/audit/leak-scanner.js.map +1 -0
  143. package/dist/audit/observability-ingest.d.ts.map +1 -1
  144. package/dist/audit/observability-ingest.js +2 -9
  145. package/dist/audit/observability-ingest.js.map +1 -1
  146. package/dist/channels/channel-registry.d.ts.map +1 -1
  147. package/dist/channels/channel-registry.js +5 -1
  148. package/dist/channels/channel-registry.js.map +1 -1
  149. package/dist/channels/channel.d.ts +3 -2
  150. package/dist/channels/channel.d.ts.map +1 -1
  151. package/dist/channels/channel.js +10 -0
  152. package/dist/channels/channel.js.map +1 -1
  153. package/dist/channels/message/tool-actions.d.ts.map +1 -1
  154. package/dist/channels/message/tool-actions.js +87 -3
  155. package/dist/channels/message/tool-actions.js.map +1 -1
  156. package/dist/channels/message-tool-advertising.d.ts.map +1 -1
  157. package/dist/channels/message-tool-advertising.js +1 -0
  158. package/dist/channels/message-tool-advertising.js.map +1 -1
  159. package/dist/channels/prompt-adapters.d.ts.map +1 -1
  160. package/dist/channels/prompt-adapters.js +3 -0
  161. package/dist/channels/prompt-adapters.js.map +1 -1
  162. package/dist/channels/signal/api.d.ts +65 -0
  163. package/dist/channels/signal/api.d.ts.map +1 -0
  164. package/dist/channels/signal/api.js +167 -0
  165. package/dist/channels/signal/api.js.map +1 -0
  166. package/dist/channels/signal/delivery.d.ts +18 -0
  167. package/dist/channels/signal/delivery.d.ts.map +1 -0
  168. package/dist/channels/signal/delivery.js +126 -0
  169. package/dist/channels/signal/delivery.js.map +1 -0
  170. package/dist/channels/signal/inbound.d.ts +30 -0
  171. package/dist/channels/signal/inbound.d.ts.map +1 -0
  172. package/dist/channels/signal/inbound.js +162 -0
  173. package/dist/channels/signal/inbound.js.map +1 -0
  174. package/dist/channels/signal/pairing-state.d.ts +18 -0
  175. package/dist/channels/signal/pairing-state.d.ts.map +1 -0
  176. package/dist/channels/signal/pairing-state.js +57 -0
  177. package/dist/channels/signal/pairing-state.js.map +1 -0
  178. package/dist/channels/signal/pairing.d.ts +14 -0
  179. package/dist/channels/signal/pairing.d.ts.map +1 -0
  180. package/dist/channels/signal/pairing.js +135 -0
  181. package/dist/channels/signal/pairing.js.map +1 -0
  182. package/dist/channels/signal/prompt-adapter.d.ts +3 -0
  183. package/dist/channels/signal/prompt-adapter.d.ts.map +1 -0
  184. package/dist/channels/signal/prompt-adapter.js +25 -0
  185. package/dist/channels/signal/prompt-adapter.js.map +1 -0
  186. package/dist/channels/signal/runtime.d.ts +10 -0
  187. package/dist/channels/signal/runtime.d.ts.map +1 -0
  188. package/dist/channels/signal/runtime.js +220 -0
  189. package/dist/channels/signal/runtime.js.map +1 -0
  190. package/dist/channels/signal/target.d.ts +12 -0
  191. package/dist/channels/signal/target.d.ts.map +1 -0
  192. package/dist/channels/signal/target.js +63 -0
  193. package/dist/channels/signal/target.js.map +1 -0
  194. package/dist/channels/signal/typing.d.ts +11 -0
  195. package/dist/channels/signal/typing.d.ts.map +1 -0
  196. package/dist/channels/signal/typing.js +64 -0
  197. package/dist/channels/signal/typing.js.map +1 -0
  198. package/dist/channels/voice/runtime.d.ts.map +1 -1
  199. package/dist/channels/voice/runtime.js +5 -3
  200. package/dist/channels/voice/runtime.js.map +1 -1
  201. package/dist/channels/whatsapp/debounce.d.ts +1 -0
  202. package/dist/channels/whatsapp/debounce.d.ts.map +1 -1
  203. package/dist/channels/whatsapp/debounce.js +7 -0
  204. package/dist/channels/whatsapp/debounce.js.map +1 -1
  205. package/dist/channels/whatsapp/runtime.js +1 -1
  206. package/dist/channels/whatsapp/runtime.js.map +1 -1
  207. package/dist/cli/channels-command.d.ts.map +1 -1
  208. package/dist/cli/channels-command.js +270 -2
  209. package/dist/cli/channels-command.js.map +1 -1
  210. package/dist/cli/help.d.ts.map +1 -1
  211. package/dist/cli/help.js +19 -6
  212. package/dist/cli/help.js.map +1 -1
  213. package/dist/cli/skill-command.d.ts.map +1 -1
  214. package/dist/cli/skill-command.js +124 -68
  215. package/dist/cli/skill-command.js.map +1 -1
  216. package/dist/cli/verbosity.d.ts +30 -0
  217. package/dist/cli/verbosity.d.ts.map +1 -0
  218. package/dist/cli/verbosity.js +42 -0
  219. package/dist/cli/verbosity.js.map +1 -0
  220. package/dist/cli.d.ts.map +1 -1
  221. package/dist/cli.js +42 -15
  222. package/dist/cli.js.map +1 -1
  223. package/dist/command-registry.d.ts.map +1 -1
  224. package/dist/command-registry.js +114 -6
  225. package/dist/command-registry.js.map +1 -1
  226. package/dist/config/cli-flags.d.ts +8 -1
  227. package/dist/config/cli-flags.d.ts.map +1 -1
  228. package/dist/config/cli-flags.js +121 -34
  229. package/dist/config/cli-flags.js.map +1 -1
  230. package/dist/config/config.d.ts.map +1 -1
  231. package/dist/config/config.js +9 -3
  232. package/dist/config/config.js.map +1 -1
  233. package/dist/config/runtime-config-revisions.d.ts +15 -0
  234. package/dist/config/runtime-config-revisions.d.ts.map +1 -1
  235. package/dist/config/runtime-config-revisions.js +151 -40
  236. package/dist/config/runtime-config-revisions.js.map +1 -1
  237. package/dist/config/runtime-config.d.ts +86 -4
  238. package/dist/config/runtime-config.d.ts.map +1 -1
  239. package/dist/config/runtime-config.js +364 -14
  240. package/dist/config/runtime-config.js.map +1 -1
  241. package/dist/doctor/checks/config.d.ts.map +1 -1
  242. package/dist/doctor/checks/config.js +85 -6
  243. package/dist/doctor/checks/config.js.map +1 -1
  244. package/dist/doctor/checks/resource-hygiene.d.ts +6 -0
  245. package/dist/doctor/checks/resource-hygiene.d.ts.map +1 -1
  246. package/dist/doctor/checks/resource-hygiene.js +164 -0
  247. package/dist/doctor/checks/resource-hygiene.js.map +1 -1
  248. package/dist/evals/eval-profile.d.ts +1 -1
  249. package/dist/evals/eval-profile.d.ts.map +1 -1
  250. package/dist/evals/eval-profile.js +2 -2
  251. package/dist/evals/eval-profile.js.map +1 -1
  252. package/dist/evals/hybridai-skills-command.d.ts.map +1 -1
  253. package/dist/evals/hybridai-skills-command.js +9 -0
  254. package/dist/evals/hybridai-skills-command.js.map +1 -1
  255. package/dist/gateway/context-usage.d.ts +25 -0
  256. package/dist/gateway/context-usage.d.ts.map +1 -0
  257. package/dist/gateway/context-usage.js +32 -0
  258. package/dist/gateway/context-usage.js.map +1 -0
  259. package/dist/gateway/gateway-agent-cards.d.ts +1 -0
  260. package/dist/gateway/gateway-agent-cards.d.ts.map +1 -1
  261. package/dist/gateway/gateway-agent-cards.js +1 -0
  262. package/dist/gateway/gateway-agent-cards.js.map +1 -1
  263. package/dist/gateway/gateway-chat-service.d.ts +1 -0
  264. package/dist/gateway/gateway-chat-service.d.ts.map +1 -1
  265. package/dist/gateway/gateway-chat-service.js +93 -7
  266. package/dist/gateway/gateway-chat-service.js.map +1 -1
  267. package/dist/gateway/gateway-client.d.ts.map +1 -1
  268. package/dist/gateway/gateway-client.js +5 -0
  269. package/dist/gateway/gateway-client.js.map +1 -1
  270. package/dist/gateway/gateway-http-server.d.ts.map +1 -1
  271. package/dist/gateway/gateway-http-server.js +231 -3
  272. package/dist/gateway/gateway-http-server.js.map +1 -1
  273. package/dist/gateway/gateway-lifecycle.d.ts +5 -0
  274. package/dist/gateway/gateway-lifecycle.d.ts.map +1 -1
  275. package/dist/gateway/gateway-lifecycle.js +5 -0
  276. package/dist/gateway/gateway-lifecycle.js.map +1 -1
  277. package/dist/gateway/gateway-service.d.ts +20 -7
  278. package/dist/gateway/gateway-service.d.ts.map +1 -1
  279. package/dist/gateway/gateway-service.js +384 -77
  280. package/dist/gateway/gateway-service.js.map +1 -1
  281. package/dist/gateway/gateway-session-status.d.ts +6 -0
  282. package/dist/gateway/gateway-session-status.d.ts.map +1 -1
  283. package/dist/gateway/gateway-session-status.js +107 -4
  284. package/dist/gateway/gateway-session-status.js.map +1 -1
  285. package/dist/gateway/gateway-types.d.ts +102 -22
  286. package/dist/gateway/gateway-types.d.ts.map +1 -1
  287. package/dist/gateway/gateway-types.js.map +1 -1
  288. package/dist/gateway/gateway.js +205 -29
  289. package/dist/gateway/gateway.js.map +1 -1
  290. package/dist/gateway/qr-svg.d.ts +2 -0
  291. package/dist/gateway/qr-svg.d.ts.map +1 -0
  292. package/dist/gateway/qr-svg.js +30 -0
  293. package/dist/gateway/qr-svg.js.map +1 -0
  294. package/dist/gateway/skill-commands.d.ts.map +1 -1
  295. package/dist/gateway/skill-commands.js +148 -92
  296. package/dist/gateway/skill-commands.js.map +1 -1
  297. package/dist/infra/container-runner.d.ts.map +1 -1
  298. package/dist/infra/container-runner.js +54 -12
  299. package/dist/infra/container-runner.js.map +1 -1
  300. package/dist/infra/host-runner.d.ts.map +1 -1
  301. package/dist/infra/host-runner.js +52 -12
  302. package/dist/infra/host-runner.js.map +1 -1
  303. package/dist/infra/model-response-debug.d.ts +2 -0
  304. package/dist/infra/model-response-debug.d.ts.map +1 -0
  305. package/dist/infra/model-response-debug.js +49 -0
  306. package/dist/infra/model-response-debug.js.map +1 -0
  307. package/dist/infra/stream-debug.d.ts +2 -0
  308. package/dist/infra/stream-debug.d.ts.map +1 -1
  309. package/dist/infra/stream-debug.js +11 -1
  310. package/dist/infra/stream-debug.js.map +1 -1
  311. package/dist/media/path-utils.d.ts +1 -1
  312. package/dist/media/path-utils.d.ts.map +1 -1
  313. package/dist/media/path-utils.js +1 -11
  314. package/dist/media/path-utils.js.map +1 -1
  315. package/dist/media/pdf-context.d.ts.map +1 -1
  316. package/dist/media/pdf-context.js +2 -11
  317. package/dist/media/pdf-context.js.map +1 -1
  318. package/dist/memory/db.d.ts +64 -4
  319. package/dist/memory/db.d.ts.map +1 -1
  320. package/dist/memory/db.js +811 -48
  321. package/dist/memory/db.js.map +1 -1
  322. package/dist/memory/memory-service.d.ts +6 -1
  323. package/dist/memory/memory-service.d.ts.map +1 -1
  324. package/dist/memory/memory-service.js +3 -1
  325. package/dist/memory/memory-service.js.map +1 -1
  326. package/dist/plugins/plugin-install.d.ts.map +1 -1
  327. package/dist/plugins/plugin-install.js +2 -6
  328. package/dist/plugins/plugin-install.js.map +1 -1
  329. package/dist/policy/network-policy.d.ts +1 -1
  330. package/dist/policy/network-policy.d.ts.map +1 -1
  331. package/dist/policy/network-policy.js +1 -1
  332. package/dist/policy/network-policy.js.map +1 -1
  333. package/dist/policy/policy-engine.d.ts +3 -0
  334. package/dist/policy/policy-engine.d.ts.map +1 -0
  335. package/dist/policy/policy-engine.js +2 -0
  336. package/dist/policy/policy-engine.js.map +1 -0
  337. package/dist/policy/skill-policy.d.ts +6 -0
  338. package/dist/policy/skill-policy.d.ts.map +1 -0
  339. package/dist/policy/skill-policy.js +20 -0
  340. package/dist/policy/skill-policy.js.map +1 -0
  341. package/dist/providers/anthropic-discovery.d.ts +3 -0
  342. package/dist/providers/anthropic-discovery.d.ts.map +1 -1
  343. package/dist/providers/anthropic-discovery.js +16 -0
  344. package/dist/providers/anthropic-discovery.js.map +1 -1
  345. package/dist/providers/codex-discovery.d.ts +4 -0
  346. package/dist/providers/codex-discovery.d.ts.map +1 -1
  347. package/dist/providers/codex-discovery.js +3 -0
  348. package/dist/providers/codex-discovery.js.map +1 -1
  349. package/dist/providers/huggingface-discovery.d.ts +3 -0
  350. package/dist/providers/huggingface-discovery.d.ts.map +1 -1
  351. package/dist/providers/huggingface-discovery.js +22 -0
  352. package/dist/providers/huggingface-discovery.js.map +1 -1
  353. package/dist/providers/hybridai-discovery.d.ts +8 -0
  354. package/dist/providers/hybridai-discovery.d.ts.map +1 -1
  355. package/dist/providers/hybridai-discovery.js +18 -0
  356. package/dist/providers/hybridai-discovery.js.map +1 -1
  357. package/dist/providers/hybridai-models.d.ts.map +1 -1
  358. package/dist/providers/hybridai-models.js +4 -120
  359. package/dist/providers/hybridai-models.js.map +1 -1
  360. package/dist/providers/mistral-discovery.d.ts +3 -0
  361. package/dist/providers/mistral-discovery.d.ts.map +1 -1
  362. package/dist/providers/mistral-discovery.js +17 -0
  363. package/dist/providers/mistral-discovery.js.map +1 -1
  364. package/dist/providers/model-catalog.d.ts +9 -0
  365. package/dist/providers/model-catalog.d.ts.map +1 -1
  366. package/dist/providers/model-catalog.js +107 -8
  367. package/dist/providers/model-catalog.js.map +1 -1
  368. package/dist/providers/model-lookup.d.ts +3 -0
  369. package/dist/providers/model-lookup.d.ts.map +1 -0
  370. package/dist/providers/model-lookup.js +39 -0
  371. package/dist/providers/model-lookup.js.map +1 -0
  372. package/dist/providers/model-metadata.d.ts +20 -0
  373. package/dist/providers/model-metadata.d.ts.map +1 -0
  374. package/dist/providers/model-metadata.js +230 -0
  375. package/dist/providers/model-metadata.js.map +1 -0
  376. package/dist/providers/openai-compat-discovery.d.ts +3 -0
  377. package/dist/providers/openai-compat-discovery.d.ts.map +1 -1
  378. package/dist/providers/openai-compat-discovery.js +45 -7
  379. package/dist/providers/openai-compat-discovery.js.map +1 -1
  380. package/dist/providers/openrouter-discovery.d.ts +8 -0
  381. package/dist/providers/openrouter-discovery.d.ts.map +1 -1
  382. package/dist/providers/openrouter-discovery.js +16 -0
  383. package/dist/providers/openrouter-discovery.js.map +1 -1
  384. package/dist/providers/pricing-discovery.d.ts +6 -0
  385. package/dist/providers/pricing-discovery.d.ts.map +1 -0
  386. package/dist/providers/pricing-discovery.js +54 -0
  387. package/dist/providers/pricing-discovery.js.map +1 -0
  388. package/dist/providers/utils.d.ts.map +1 -1
  389. package/dist/providers/utils.js +5 -1
  390. package/dist/providers/utils.js.map +1 -1
  391. package/dist/scheduler/heartbeat.d.ts.map +1 -1
  392. package/dist/scheduler/heartbeat.js +1 -0
  393. package/dist/scheduler/heartbeat.js.map +1 -1
  394. package/dist/scheduler/scheduled-task-runner.d.ts.map +1 -1
  395. package/dist/scheduler/scheduled-task-runner.js +1 -0
  396. package/dist/scheduler/scheduled-task-runner.js.map +1 -1
  397. package/dist/security/confidential-redact.d.ts +41 -0
  398. package/dist/security/confidential-redact.d.ts.map +1 -0
  399. package/dist/security/confidential-redact.js +169 -0
  400. package/dist/security/confidential-redact.js.map +1 -0
  401. package/dist/security/confidential-rules.d.ts +28 -0
  402. package/dist/security/confidential-rules.d.ts.map +1 -0
  403. package/dist/security/confidential-rules.js +150 -0
  404. package/dist/security/confidential-rules.js.map +1 -0
  405. package/dist/security/confidential-runtime.d.ts +37 -0
  406. package/dist/security/confidential-runtime.d.ts.map +1 -0
  407. package/dist/security/confidential-runtime.js +215 -0
  408. package/dist/security/confidential-runtime.js.map +1 -0
  409. package/dist/security/media-paths.d.ts.map +1 -1
  410. package/dist/security/media-paths.js +2 -7
  411. package/dist/security/media-paths.js.map +1 -1
  412. package/dist/security/mount-config.d.ts.map +1 -1
  413. package/dist/security/mount-config.js +3 -10
  414. package/dist/security/mount-config.js.map +1 -1
  415. package/dist/session/session-context.d.ts.map +1 -1
  416. package/dist/session/session-context.js +1 -0
  417. package/dist/session/session-context.js.map +1 -1
  418. package/dist/session/session-reset.d.ts.map +1 -1
  419. package/dist/session/session-reset.js +3 -0
  420. package/dist/session/session-reset.js.map +1 -1
  421. package/dist/skills/adaptive-skills-types.d.ts +38 -0
  422. package/dist/skills/adaptive-skills-types.d.ts.map +1 -1
  423. package/dist/skills/agent-scoreboard.d.ts +32 -0
  424. package/dist/skills/agent-scoreboard.d.ts.map +1 -0
  425. package/dist/skills/agent-scoreboard.js +360 -0
  426. package/dist/skills/agent-scoreboard.js.map +1 -0
  427. package/dist/skills/skill-formatters.d.ts +10 -0
  428. package/dist/skills/skill-formatters.d.ts.map +1 -0
  429. package/dist/skills/skill-formatters.js +91 -0
  430. package/dist/skills/skill-formatters.js.map +1 -0
  431. package/dist/skills/skill-import-args.d.ts +1 -1
  432. package/dist/skills/skill-import-args.d.ts.map +1 -1
  433. package/dist/skills/skill-install-mode.d.ts +17 -0
  434. package/dist/skills/skill-install-mode.d.ts.map +1 -0
  435. package/dist/skills/skill-install-mode.js +39 -0
  436. package/dist/skills/skill-install-mode.js.map +1 -0
  437. package/dist/skills/skill-manifest.d.ts +30 -0
  438. package/dist/skills/skill-manifest.d.ts.map +1 -0
  439. package/dist/skills/skill-manifest.js +237 -0
  440. package/dist/skills/skill-manifest.js.map +1 -0
  441. package/dist/skills/skill-run-events.d.ts +72 -0
  442. package/dist/skills/skill-run-events.d.ts.map +1 -0
  443. package/dist/skills/skill-run-events.js +137 -0
  444. package/dist/skills/skill-run-events.js.map +1 -0
  445. package/dist/skills/skill-run-trajectories.d.ts +21 -0
  446. package/dist/skills/skill-run-trajectories.d.ts.map +1 -0
  447. package/dist/skills/skill-run-trajectories.js +120 -0
  448. package/dist/skills/skill-run-trajectories.js.map +1 -0
  449. package/dist/skills/skills-import.d.ts +1 -0
  450. package/dist/skills/skills-import.d.ts.map +1 -1
  451. package/dist/skills/skills-import.js +4 -4
  452. package/dist/skills/skills-import.js.map +1 -1
  453. package/dist/skills/skills-lifecycle.d.ts +54 -0
  454. package/dist/skills/skills-lifecycle.d.ts.map +1 -0
  455. package/dist/skills/skills-lifecycle.js +514 -0
  456. package/dist/skills/skills-lifecycle.js.map +1 -0
  457. package/dist/skills/skills-observation.d.ts +7 -0
  458. package/dist/skills/skills-observation.d.ts.map +1 -1
  459. package/dist/skills/skills-observation.js +145 -32
  460. package/dist/skills/skills-observation.js.map +1 -1
  461. package/dist/skills/skills.d.ts +3 -0
  462. package/dist/skills/skills.d.ts.map +1 -1
  463. package/dist/skills/skills.js +63 -17
  464. package/dist/skills/skills.js.map +1 -1
  465. package/dist/tui-skill-config.d.ts +1 -1
  466. package/dist/tui-skill-config.d.ts.map +1 -1
  467. package/dist/tui-thinking.d.ts +4 -0
  468. package/dist/tui-thinking.d.ts.map +1 -1
  469. package/dist/tui-thinking.js +146 -3
  470. package/dist/tui-thinking.js.map +1 -1
  471. package/dist/tui.d.ts.map +1 -1
  472. package/dist/tui.js +46 -46
  473. package/dist/tui.js.map +1 -1
  474. package/dist/tunnel/ngrok-tunnel-provider.d.ts +40 -0
  475. package/dist/tunnel/ngrok-tunnel-provider.d.ts.map +1 -0
  476. package/dist/tunnel/ngrok-tunnel-provider.js +119 -0
  477. package/dist/tunnel/ngrok-tunnel-provider.js.map +1 -0
  478. package/dist/tunnel/tunnel-provider.d.ts +13 -0
  479. package/dist/tunnel/tunnel-provider.d.ts.map +1 -0
  480. package/dist/tunnel/tunnel-provider.js +2 -0
  481. package/dist/tunnel/tunnel-provider.js.map +1 -0
  482. package/dist/types/container.d.ts +1 -0
  483. package/dist/types/container.d.ts.map +1 -1
  484. package/dist/types/execution.d.ts +7 -0
  485. package/dist/types/execution.d.ts.map +1 -1
  486. package/dist/types/session.d.ts +4 -0
  487. package/dist/types/session.d.ts.map +1 -1
  488. package/dist/types/usage.d.ts +13 -0
  489. package/dist/types/usage.d.ts.map +1 -1
  490. package/dist/utils/path.d.ts +2 -0
  491. package/dist/utils/path.d.ts.map +1 -0
  492. package/dist/utils/path.js +12 -0
  493. package/dist/utils/path.js.map +1 -0
  494. package/dist/utils/secret-prompt.d.ts.map +1 -1
  495. package/dist/utils/secret-prompt.js +9 -2
  496. package/dist/utils/secret-prompt.js.map +1 -1
  497. package/dist/utils/text-format.d.ts +1 -0
  498. package/dist/utils/text-format.d.ts.map +1 -1
  499. package/dist/utils/text-format.js +5 -0
  500. package/dist/utils/text-format.js.map +1 -1
  501. package/docs/content/README.md +21 -21
  502. package/docs/content/channels/README.md +1 -0
  503. package/docs/content/channels/admin-console.md +13 -2
  504. package/docs/content/channels/overview.md +1 -0
  505. package/docs/content/channels/policies-and-allowlists.md +3 -0
  506. package/docs/content/channels/signal.md +259 -0
  507. package/docs/content/developer-guide/approvals.md +78 -1
  508. package/docs/content/extensibility/adaptive-skills.md +10 -1
  509. package/docs/content/extensibility/skills.md +24 -4
  510. package/docs/content/getting-started/first-channel.md +3 -0
  511. package/docs/content/getting-started/installation.md +59 -0
  512. package/docs/content/getting-started/quickstart.md +10 -0
  513. package/docs/content/guides/remote-access.md +16 -0
  514. package/docs/content/guides/skills/README.md +2 -0
  515. package/docs/content/guides/skills/business-skills.md +114 -0
  516. package/docs/content/internal/roadmap.md +131 -0
  517. package/docs/content/manifesto.md +79 -0
  518. package/docs/content/reference/commands.md +30 -6
  519. package/docs/content/reference/configuration.md +36 -6
  520. package/docs/content/reference/diagnostics.md +11 -0
  521. package/docs/content/reference/model-selection.md +12 -0
  522. package/docs/development/README.md +17 -13
  523. package/docs/development/extensibility/adaptive-skills.md +10 -1
  524. package/docs/development/extensibility/skills.md +24 -4
  525. package/docs/development/getting-started/README.md +1 -1
  526. package/docs/development/getting-started/channels.md +3 -2
  527. package/docs/development/getting-started/installation.md +61 -1
  528. package/docs/development/getting-started/quickstart.md +7 -0
  529. package/docs/development/guides/remote-access.md +16 -0
  530. package/docs/development/guides/skills/README.md +2 -0
  531. package/docs/development/guides/skills/business-skills.md +114 -0
  532. package/docs/development/internals/approvals.md +78 -1
  533. package/docs/development/reference/commands.md +32 -7
  534. package/docs/development/reference/configuration.md +28 -6
  535. package/docs/development/reference/diagnostics.md +11 -0
  536. package/docs/development/reference/model-selection.md +12 -0
  537. package/docs/index.html +12 -12
  538. package/docs/static/docs.js +4 -1
  539. package/package.json +2 -1
  540. package/console/dist/assets/chat-B3W1Ca_5.js +0 -93
  541. package/console/dist/assets/chat-BWpulWPN.css +0 -1
  542. package/console/dist/assets/cx-D_Ee3160.js +0 -1
  543. package/console/dist/assets/index-BnOCY0ZR.css +0 -1
  544. package/console/dist/assets/index-DIF3rME4.js +0 -15
  545. 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, email,
23
- Twilio voice, or the web. Run it locally, deploy it for business workflows,
24
- and keep your agents, secrets, and data under your control.
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 are injected into
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:
@@ -1,23 +1,32 @@
1
1
  {
2
- "version": 21,
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",