@hybridaione/hybridclaw 0.22.0 → 0.24.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 (604) hide show
  1. package/AGENTS.md +13 -5
  2. package/CHANGELOG.md +205 -0
  3. package/README.md +178 -409
  4. package/SECURITY.md +10 -4
  5. package/config.example.json +2 -1
  6. package/console/dist/assets/chat-B93tgCqc.js +96 -0
  7. package/console/dist/assets/index-BEIJ5kEP.css +1 -0
  8. package/console/dist/assets/index-BGTqIrpz.js +80 -0
  9. package/console/dist/assets/query-o_Dd9s85.js +1 -0
  10. package/console/dist/assets/router-DoNPHesn.js +1 -0
  11. package/console/dist/assets/terminal-CCHv1x3w.js +7 -0
  12. package/console/dist/assets/terminal-g781NRbK.js +1 -0
  13. package/console/dist/assets/terminal-kHJ-D0s7.css +1 -0
  14. package/console/dist/assets/{vendor-WdvgvXHT.js → vendor-GuSYcVD5.js} +2 -2
  15. package/console/dist/index.html +5 -5
  16. package/console/package.json +9 -8
  17. package/container/dist/browser-tools.js +2 -1
  18. package/container/dist/browser-tools.js.map +1 -1
  19. package/container/dist/codex-app-server.js +1 -0
  20. package/container/dist/codex-app-server.js.map +1 -1
  21. package/container/dist/codex-hybridclaw-mcp.js +1 -1
  22. package/container/dist/codex-hybridclaw-mcp.js.map +1 -1
  23. package/container/dist/context-guard.js +4 -2
  24. package/container/dist/context-guard.js.map +1 -1
  25. package/container/dist/index.js +97 -179
  26. package/container/dist/index.js.map +1 -1
  27. package/container/dist/model-behavior.js +14 -0
  28. package/container/dist/model-behavior.js.map +1 -0
  29. package/container/dist/providers/auxiliary.js +3 -0
  30. package/container/dist/providers/auxiliary.js.map +1 -1
  31. package/container/dist/providers/hybridai.js +4 -2
  32. package/container/dist/providers/hybridai.js.map +1 -1
  33. package/container/dist/providers/local-ollama.js +16 -7
  34. package/container/dist/providers/local-ollama.js.map +1 -1
  35. package/container/dist/providers/local-openai-compat.js +84 -31
  36. package/container/dist/providers/local-openai-compat.js.map +1 -1
  37. package/container/dist/providers/openai-codex.js +7 -4
  38. package/container/dist/providers/openai-codex.js.map +1 -1
  39. package/container/dist/providers/router.js +13 -1
  40. package/container/dist/providers/router.js.map +1 -1
  41. package/container/dist/providers/shared.js +27 -4
  42. package/container/dist/providers/shared.js.map +1 -1
  43. package/container/dist/providers/tool-call-normalizer.js +45 -48
  44. package/container/dist/providers/tool-call-normalizer.js.map +1 -1
  45. package/container/dist/shutdown-output.js +10 -0
  46. package/container/dist/shutdown-output.js.map +1 -0
  47. package/container/dist/tool-approval.js +135 -0
  48. package/container/dist/tool-approval.js.map +1 -0
  49. package/container/dist/tools.js +90 -2
  50. package/container/dist/tools.js.map +1 -1
  51. package/container/dist/types.js.map +1 -1
  52. package/container/npm-shrinkwrap.json +22 -23
  53. package/container/package-lock.json +22 -23
  54. package/container/package.json +6 -6
  55. package/container/shared/unicode-utils.d.ts +5 -0
  56. package/container/shared/unicode-utils.js +55 -0
  57. package/container/src/browser-tools.ts +4 -1
  58. package/container/src/codex-app-server.ts +3 -0
  59. package/container/src/codex-app-types.ts +1 -0
  60. package/container/src/codex-hybridclaw-mcp.ts +1 -0
  61. package/container/src/context-guard.ts +10 -2
  62. package/container/src/index.ts +123 -197
  63. package/container/src/model-behavior.ts +24 -0
  64. package/container/src/providers/auxiliary.ts +3 -0
  65. package/container/src/providers/hybridai.ts +4 -2
  66. package/container/src/providers/local-ollama.ts +22 -3
  67. package/container/src/providers/local-openai-compat.ts +108 -55
  68. package/container/src/providers/openai-codex.ts +7 -4
  69. package/container/src/providers/router.ts +21 -0
  70. package/container/src/providers/shared.ts +54 -7
  71. package/container/src/providers/tool-call-normalizer.ts +49 -51
  72. package/container/src/shutdown-output.ts +13 -0
  73. package/container/src/tool-approval.ts +199 -0
  74. package/container/src/tools.ts +106 -0
  75. package/container/src/types.ts +14 -0
  76. package/dist/a2a/a2a-inbound.d.ts +12 -4
  77. package/dist/a2a/a2a-inbound.d.ts.map +1 -1
  78. package/dist/a2a/a2a-inbound.js +282 -58
  79. package/dist/a2a/a2a-inbound.js.map +1 -1
  80. package/dist/a2a/a2a-outbox-delivery.d.ts.map +1 -1
  81. package/dist/a2a/a2a-outbox-delivery.js +3 -2
  82. package/dist/a2a/a2a-outbox-delivery.js.map +1 -1
  83. package/dist/a2a/a2a-outbox-persistence.d.ts.map +1 -1
  84. package/dist/a2a/a2a-outbox-persistence.js +1 -3
  85. package/dist/a2a/a2a-outbox-persistence.js.map +1 -1
  86. package/dist/a2a/envelope.d.ts +3 -0
  87. package/dist/a2a/envelope.d.ts.map +1 -1
  88. package/dist/a2a/envelope.js +64 -3
  89. package/dist/a2a/envelope.js.map +1 -1
  90. package/dist/a2a/identity-resolver.d.ts.map +1 -1
  91. package/dist/a2a/identity-resolver.js +5 -2
  92. package/dist/a2a/identity-resolver.js.map +1 -1
  93. package/dist/a2a/pairing.d.ts +69 -0
  94. package/dist/a2a/pairing.d.ts.map +1 -0
  95. package/dist/a2a/pairing.js +562 -0
  96. package/dist/a2a/pairing.js.map +1 -0
  97. package/dist/a2a/trust-ledger.d.ts +9 -1
  98. package/dist/a2a/trust-ledger.d.ts.map +1 -1
  99. package/dist/a2a/trust-ledger.js +17 -4
  100. package/dist/a2a/trust-ledger.js.map +1 -1
  101. package/dist/a2a/utils.d.ts +1 -1
  102. package/dist/a2a/utils.d.ts.map +1 -1
  103. package/dist/a2a/utils.js +1 -3
  104. package/dist/a2a/utils.js.map +1 -1
  105. package/dist/agent/conversation.d.ts.map +1 -1
  106. package/dist/agent/conversation.js +4 -0
  107. package/dist/agent/conversation.js.map +1 -1
  108. package/dist/agent/executor-types.d.ts +2 -1
  109. package/dist/agent/executor-types.d.ts.map +1 -1
  110. package/dist/agent/prompt-hooks.d.ts.map +1 -1
  111. package/dist/agent/prompt-hooks.js +32 -1
  112. package/dist/agent/prompt-hooks.js.map +1 -1
  113. package/dist/agents/agent-config-command.d.ts.map +1 -1
  114. package/dist/agents/agent-config-command.js +14 -4
  115. package/dist/agents/agent-config-command.js.map +1 -1
  116. package/dist/agents/agent-registry.d.ts.map +1 -1
  117. package/dist/agents/agent-registry.js +33 -1
  118. package/dist/agents/agent-registry.js.map +1 -1
  119. package/dist/agents/agent-runtime-config.d.ts.map +1 -1
  120. package/dist/agents/agent-runtime-config.js +3 -2
  121. package/dist/agents/agent-runtime-config.js.map +1 -1
  122. package/dist/agents/agent-types.d.ts +12 -0
  123. package/dist/agents/agent-types.d.ts.map +1 -1
  124. package/dist/agents/agent-types.js +92 -0
  125. package/dist/agents/agent-types.js.map +1 -1
  126. package/dist/agents/claw-archive.d.ts.map +1 -1
  127. package/dist/agents/claw-archive.js +1 -3
  128. package/dist/agents/claw-archive.js.map +1 -1
  129. package/dist/agents/claw-manifest.d.ts.map +1 -1
  130. package/dist/agents/claw-manifest.js +1 -3
  131. package/dist/agents/claw-manifest.js.map +1 -1
  132. package/dist/audit/observability-ingest.d.ts.map +1 -1
  133. package/dist/audit/observability-ingest.js +6 -2
  134. package/dist/audit/observability-ingest.js.map +1 -1
  135. package/dist/auth/anthropic-auth.d.ts.map +1 -1
  136. package/dist/auth/anthropic-auth.js +1 -3
  137. package/dist/auth/anthropic-auth.js.map +1 -1
  138. package/dist/auth/codex-auth.d.ts.map +1 -1
  139. package/dist/auth/codex-auth.js +1 -3
  140. package/dist/auth/codex-auth.js.map +1 -1
  141. package/dist/board/card-store.d.ts +4 -2
  142. package/dist/board/card-store.d.ts.map +1 -1
  143. package/dist/board/card-store.js +28 -8
  144. package/dist/board/card-store.js.map +1 -1
  145. package/dist/browser/managed-browser-tenant-policy.d.ts.map +1 -1
  146. package/dist/browser/managed-browser-tenant-policy.js +1 -3
  147. package/dist/browser/managed-browser-tenant-policy.js.map +1 -1
  148. package/dist/channels/agent-addressing.d.ts +3 -0
  149. package/dist/channels/agent-addressing.d.ts.map +1 -0
  150. package/dist/channels/agent-addressing.js +29 -0
  151. package/dist/channels/agent-addressing.js.map +1 -0
  152. package/dist/channels/discord/inbound.d.ts.map +1 -1
  153. package/dist/channels/discord/inbound.js +2 -1
  154. package/dist/channels/discord/inbound.js.map +1 -1
  155. package/dist/channels/email/delivery.d.ts +1 -0
  156. package/dist/channels/email/delivery.d.ts.map +1 -1
  157. package/dist/channels/email/delivery.js +11 -1
  158. package/dist/channels/email/delivery.js.map +1 -1
  159. package/dist/channels/email/runtime.d.ts +2 -0
  160. package/dist/channels/email/runtime.d.ts.map +1 -1
  161. package/dist/channels/email/runtime.js +2 -0
  162. package/dist/channels/email/runtime.js.map +1 -1
  163. package/dist/channels/message/tool-actions.d.ts.map +1 -1
  164. package/dist/channels/message/tool-actions.js +32 -13
  165. package/dist/channels/message/tool-actions.js.map +1 -1
  166. package/dist/channels/msteams/inbound.d.ts.map +1 -1
  167. package/dist/channels/msteams/inbound.js +13 -11
  168. package/dist/channels/msteams/inbound.js.map +1 -1
  169. package/dist/channels/whatsapp/inbound.d.ts.map +1 -1
  170. package/dist/channels/whatsapp/inbound.js +2 -1
  171. package/dist/channels/whatsapp/inbound.js.map +1 -1
  172. package/dist/cli/agent-command.d.ts.map +1 -1
  173. package/dist/cli/agent-command.js +122 -0
  174. package/dist/cli/agent-command.js.map +1 -1
  175. package/dist/cli/auth-command.d.ts.map +1 -1
  176. package/dist/cli/auth-command.js +129 -16
  177. package/dist/cli/auth-command.js.map +1 -1
  178. package/dist/cli/coworker-command.d.ts +2 -0
  179. package/dist/cli/coworker-command.d.ts.map +1 -0
  180. package/dist/cli/coworker-command.js +460 -0
  181. package/dist/cli/coworker-command.js.map +1 -0
  182. package/dist/cli/help.d.ts +1 -0
  183. package/dist/cli/help.d.ts.map +1 -1
  184. package/dist/cli/help.js +52 -1
  185. package/dist/cli/help.js.map +1 -1
  186. package/dist/cli/secret-command.d.ts.map +1 -1
  187. package/dist/cli/secret-command.js +2 -2
  188. package/dist/cli/secret-command.js.map +1 -1
  189. package/dist/cli.d.ts.map +1 -1
  190. package/dist/cli.js +7 -0
  191. package/dist/cli.js.map +1 -1
  192. package/dist/command-registry.d.ts.map +1 -1
  193. package/dist/command-registry.js +31 -0
  194. package/dist/command-registry.js.map +1 -1
  195. package/dist/commands/aux-command.d.ts +7 -0
  196. package/dist/commands/aux-command.d.ts.map +1 -0
  197. package/dist/commands/aux-command.js +135 -0
  198. package/dist/commands/aux-command.js.map +1 -0
  199. package/dist/commands/second-opinion-web-search.d.ts.map +1 -1
  200. package/dist/commands/second-opinion-web-search.js +1 -3
  201. package/dist/commands/second-opinion-web-search.js.map +1 -1
  202. package/dist/config/app-version.d.ts +2 -0
  203. package/dist/config/app-version.d.ts.map +1 -0
  204. package/dist/config/app-version.js +49 -0
  205. package/dist/config/app-version.js.map +1 -0
  206. package/dist/config/config.d.ts +6 -1
  207. package/dist/config/config.d.ts.map +1 -1
  208. package/dist/config/config.js +19 -47
  209. package/dist/config/config.js.map +1 -1
  210. package/dist/config/runtime-config.d.ts +3 -2
  211. package/dist/config/runtime-config.d.ts.map +1 -1
  212. package/dist/config/runtime-config.js +139 -7
  213. package/dist/config/runtime-config.js.map +1 -1
  214. package/dist/distill/analysis.d.ts +58 -0
  215. package/dist/distill/analysis.d.ts.map +1 -0
  216. package/dist/distill/analysis.js +181 -0
  217. package/dist/distill/analysis.js.map +1 -0
  218. package/dist/distill/audit.d.ts +12 -0
  219. package/dist/distill/audit.d.ts.map +1 -0
  220. package/dist/distill/audit.js +35 -0
  221. package/dist/distill/audit.js.map +1 -0
  222. package/dist/distill/collectors.d.ts +16 -0
  223. package/dist/distill/collectors.d.ts.map +1 -0
  224. package/dist/distill/collectors.js +436 -0
  225. package/dist/distill/collectors.js.map +1 -0
  226. package/dist/distill/consent.d.ts +21 -0
  227. package/dist/distill/consent.d.ts.map +1 -0
  228. package/dist/distill/consent.js +109 -0
  229. package/dist/distill/consent.js.map +1 -0
  230. package/dist/distill/corpus.d.ts +27 -0
  231. package/dist/distill/corpus.d.ts.map +1 -0
  232. package/dist/distill/corpus.js +123 -0
  233. package/dist/distill/corpus.js.map +1 -0
  234. package/dist/distill/corrections.d.ts +16 -0
  235. package/dist/distill/corrections.d.ts.map +1 -0
  236. package/dist/distill/corrections.js +83 -0
  237. package/dist/distill/corrections.js.map +1 -0
  238. package/dist/distill/eval.d.ts +47 -0
  239. package/dist/distill/eval.d.ts.map +1 -0
  240. package/dist/distill/eval.js +137 -0
  241. package/dist/distill/eval.js.map +1 -0
  242. package/dist/distill/export.d.ts +46 -0
  243. package/dist/distill/export.d.ts.map +1 -0
  244. package/dist/distill/export.js +198 -0
  245. package/dist/distill/export.js.map +1 -0
  246. package/dist/distill/forget.d.ts +14 -0
  247. package/dist/distill/forget.d.ts.map +1 -0
  248. package/dist/distill/forget.js +118 -0
  249. package/dist/distill/forget.js.map +1 -0
  250. package/dist/distill/interview.d.ts +14 -0
  251. package/dist/distill/interview.d.ts.map +1 -0
  252. package/dist/distill/interview.js +132 -0
  253. package/dist/distill/interview.js.map +1 -0
  254. package/dist/distill/masking.d.ts +17 -0
  255. package/dist/distill/masking.d.ts.map +1 -0
  256. package/dist/distill/masking.js +57 -0
  257. package/dist/distill/masking.js.map +1 -0
  258. package/dist/distill/merge.d.ts +32 -0
  259. package/dist/distill/merge.d.ts.map +1 -0
  260. package/dist/distill/merge.js +328 -0
  261. package/dist/distill/merge.js.map +1 -0
  262. package/dist/distill/paths.d.ts +32 -0
  263. package/dist/distill/paths.d.ts.map +1 -0
  264. package/dist/distill/paths.js +85 -0
  265. package/dist/distill/paths.js.map +1 -0
  266. package/dist/distill/pipeline.d.ts +23 -0
  267. package/dist/distill/pipeline.d.ts.map +1 -0
  268. package/dist/distill/pipeline.js +133 -0
  269. package/dist/distill/pipeline.js.map +1 -0
  270. package/dist/distill/render.d.ts +22 -0
  271. package/dist/distill/render.d.ts.map +1 -0
  272. package/dist/distill/render.js +286 -0
  273. package/dist/distill/render.js.map +1 -0
  274. package/dist/distill/run.d.ts +26 -0
  275. package/dist/distill/run.d.ts.map +1 -0
  276. package/dist/distill/run.js +141 -0
  277. package/dist/distill/run.js.map +1 -0
  278. package/dist/distill/state.d.ts +6 -0
  279. package/dist/distill/state.d.ts.map +1 -0
  280. package/dist/distill/state.js +17 -0
  281. package/dist/distill/state.js.map +1 -0
  282. package/dist/distill/subject.d.ts +18 -0
  283. package/dist/distill/subject.d.ts.map +1 -0
  284. package/dist/distill/subject.js +65 -0
  285. package/dist/distill/subject.js.map +1 -0
  286. package/dist/distill/types.d.ts +199 -0
  287. package/dist/distill/types.d.ts.map +1 -0
  288. package/dist/distill/types.js +24 -0
  289. package/dist/distill/types.js.map +1 -0
  290. package/dist/evals/hybridai-skills-command.d.ts.map +1 -1
  291. package/dist/evals/hybridai-skills-command.js +1 -3
  292. package/dist/evals/hybridai-skills-command.js.map +1 -1
  293. package/dist/evals/trace-preparation.d.ts.map +1 -1
  294. package/dist/evals/trace-preparation.js +1 -3
  295. package/dist/evals/trace-preparation.js.map +1 -1
  296. package/dist/gateway/agent-addressing.d.ts +33 -0
  297. package/dist/gateway/agent-addressing.d.ts.map +1 -0
  298. package/dist/gateway/agent-addressing.js +170 -0
  299. package/dist/gateway/agent-addressing.js.map +1 -0
  300. package/dist/gateway/auth-token.d.ts +1 -0
  301. package/dist/gateway/auth-token.d.ts.map +1 -1
  302. package/dist/gateway/auth-token.js +3 -3
  303. package/dist/gateway/auth-token.js.map +1 -1
  304. package/dist/gateway/chat-approval.d.ts.map +1 -1
  305. package/dist/gateway/chat-approval.js +3 -0
  306. package/dist/gateway/chat-approval.js.map +1 -1
  307. package/dist/gateway/coworker-liveness.d.ts.map +1 -1
  308. package/dist/gateway/coworker-liveness.js +2 -1
  309. package/dist/gateway/coworker-liveness.js.map +1 -1
  310. package/dist/gateway/gateway-admin-secrets.d.ts +8 -0
  311. package/dist/gateway/gateway-admin-secrets.d.ts.map +1 -1
  312. package/dist/gateway/gateway-admin-secrets.js +5 -0
  313. package/dist/gateway/gateway-admin-secrets.js.map +1 -1
  314. package/dist/gateway/gateway-chat-service.d.ts.map +1 -1
  315. package/dist/gateway/gateway-chat-service.js +252 -22
  316. package/dist/gateway/gateway-chat-service.js.map +1 -1
  317. package/dist/gateway/gateway-distill-service.d.ts +143 -0
  318. package/dist/gateway/gateway-distill-service.d.ts.map +1 -0
  319. package/dist/gateway/gateway-distill-service.js +485 -0
  320. package/dist/gateway/gateway-distill-service.js.map +1 -0
  321. package/dist/gateway/gateway-fleet-topology.d.ts +15 -0
  322. package/dist/gateway/gateway-fleet-topology.d.ts.map +1 -0
  323. package/dist/gateway/gateway-fleet-topology.js +146 -0
  324. package/dist/gateway/gateway-fleet-topology.js.map +1 -0
  325. package/dist/gateway/gateway-http-proxy.d.ts.map +1 -1
  326. package/dist/gateway/gateway-http-proxy.js +460 -75
  327. package/dist/gateway/gateway-http-proxy.js.map +1 -1
  328. package/dist/gateway/gateway-http-server.d.ts.map +1 -1
  329. package/dist/gateway/gateway-http-server.js +414 -75
  330. package/dist/gateway/gateway-http-server.js.map +1 -1
  331. package/dist/gateway/gateway-plugin-service.d.ts.map +1 -1
  332. package/dist/gateway/gateway-plugin-service.js +1 -3
  333. package/dist/gateway/gateway-plugin-service.js.map +1 -1
  334. package/dist/gateway/gateway-scheduled-task-service.d.ts.map +1 -1
  335. package/dist/gateway/gateway-scheduled-task-service.js +5 -5
  336. package/dist/gateway/gateway-scheduled-task-service.js.map +1 -1
  337. package/dist/gateway/gateway-service.d.ts +19 -4
  338. package/dist/gateway/gateway-service.d.ts.map +1 -1
  339. package/dist/gateway/gateway-service.js +421 -44
  340. package/dist/gateway/gateway-service.js.map +1 -1
  341. package/dist/gateway/gateway-types.d.ts +112 -6
  342. package/dist/gateway/gateway-types.d.ts.map +1 -1
  343. package/dist/gateway/gateway-types.js.map +1 -1
  344. package/dist/gateway/gateway-utils.d.ts.map +1 -1
  345. package/dist/gateway/gateway-utils.js +2 -9
  346. package/dist/gateway/gateway-utils.js.map +1 -1
  347. package/dist/gateway/gateway.js +15 -3
  348. package/dist/gateway/gateway.js.map +1 -1
  349. package/dist/gateway/openai-compatible-model.d.ts.map +1 -1
  350. package/dist/gateway/openai-compatible-model.js +27 -18
  351. package/dist/gateway/openai-compatible-model.js.map +1 -1
  352. package/dist/gateway/output-guard-admin.d.ts.map +1 -1
  353. package/dist/gateway/output-guard-admin.js +1 -3
  354. package/dist/gateway/output-guard-admin.js.map +1 -1
  355. package/dist/gateway/proactive-delivery.d.ts +2 -0
  356. package/dist/gateway/proactive-delivery.d.ts.map +1 -1
  357. package/dist/gateway/proactive-delivery.js +8 -1
  358. package/dist/gateway/proactive-delivery.js.map +1 -1
  359. package/dist/gateway/proxy-agent.d.ts +11 -0
  360. package/dist/gateway/proxy-agent.d.ts.map +1 -0
  361. package/dist/gateway/proxy-agent.js +366 -0
  362. package/dist/gateway/proxy-agent.js.map +1 -0
  363. package/dist/gateway/response-ratings.d.ts.map +1 -1
  364. package/dist/gateway/response-ratings.js +80 -0
  365. package/dist/gateway/response-ratings.js.map +1 -1
  366. package/dist/gateway/secret-command-guard.d.ts +6 -0
  367. package/dist/gateway/secret-command-guard.d.ts.map +1 -0
  368. package/dist/gateway/secret-command-guard.js +22 -0
  369. package/dist/gateway/secret-command-guard.js.map +1 -0
  370. package/dist/gateway/text-channel-commands.d.ts +2 -1
  371. package/dist/gateway/text-channel-commands.d.ts.map +1 -1
  372. package/dist/gateway/text-channel-commands.js +22 -5
  373. package/dist/gateway/text-channel-commands.js.map +1 -1
  374. package/dist/identity/actor.d.ts +27 -0
  375. package/dist/identity/actor.d.ts.map +1 -0
  376. package/dist/identity/actor.js +123 -0
  377. package/dist/identity/actor.js.map +1 -0
  378. package/dist/identity/agent-id.d.ts.map +1 -1
  379. package/dist/identity/agent-id.js +1 -3
  380. package/dist/identity/agent-id.js.map +1 -1
  381. package/dist/infra/container-runner.d.ts.map +1 -1
  382. package/dist/infra/container-runner.js +15 -4
  383. package/dist/infra/container-runner.js.map +1 -1
  384. package/dist/infra/container-setup.d.ts.map +1 -1
  385. package/dist/infra/container-setup.js +1 -3
  386. package/dist/infra/container-setup.js.map +1 -1
  387. package/dist/infra/host-runner.d.ts.map +1 -1
  388. package/dist/infra/host-runner.js +8 -3
  389. package/dist/infra/host-runner.js.map +1 -1
  390. package/dist/infra/host-runtime-setup.d.ts.map +1 -1
  391. package/dist/infra/host-runtime-setup.js +13 -5
  392. package/dist/infra/host-runtime-setup.js.map +1 -1
  393. package/dist/infra/install-root.d.ts +1 -0
  394. package/dist/infra/install-root.d.ts.map +1 -1
  395. package/dist/infra/install-root.js +5 -0
  396. package/dist/infra/install-root.js.map +1 -1
  397. package/dist/infra/warm-runner-utils.d.ts +1 -0
  398. package/dist/infra/warm-runner-utils.d.ts.map +1 -1
  399. package/dist/infra/warm-runner-utils.js +10 -1
  400. package/dist/infra/warm-runner-utils.js.map +1 -1
  401. package/dist/infra/worker-signature.d.ts +7 -0
  402. package/dist/infra/worker-signature.d.ts.map +1 -1
  403. package/dist/infra/worker-signature.js +7 -0
  404. package/dist/infra/worker-signature.js.map +1 -1
  405. package/dist/logger.d.ts.map +1 -1
  406. package/dist/logger.js +7 -0
  407. package/dist/logger.js.map +1 -1
  408. package/dist/memory/cloud-memory.d.ts +16 -0
  409. package/dist/memory/cloud-memory.d.ts.map +1 -0
  410. package/dist/memory/cloud-memory.js +333 -0
  411. package/dist/memory/cloud-memory.js.map +1 -0
  412. package/dist/memory/db.d.ts +26 -1
  413. package/dist/memory/db.d.ts.map +1 -1
  414. package/dist/memory/db.js +286 -15
  415. package/dist/memory/db.js.map +1 -1
  416. package/dist/migration/agent-home-migration.d.ts.map +1 -1
  417. package/dist/migration/agent-home-migration.js +1 -3
  418. package/dist/migration/agent-home-migration.js.map +1 -1
  419. package/dist/observability/otel.d.ts.map +1 -1
  420. package/dist/observability/otel.js +26 -0
  421. package/dist/observability/otel.js.map +1 -1
  422. package/dist/observability/sentry.d.ts +10 -0
  423. package/dist/observability/sentry.d.ts.map +1 -0
  424. package/dist/observability/sentry.js +121 -0
  425. package/dist/observability/sentry.js.map +1 -0
  426. package/dist/plugins/plugin-manager.d.ts.map +1 -1
  427. package/dist/plugins/plugin-manager.js +1 -3
  428. package/dist/plugins/plugin-manager.js.map +1 -1
  429. package/dist/providers/auxiliary.d.ts.map +1 -1
  430. package/dist/providers/auxiliary.js +12 -7
  431. package/dist/providers/auxiliary.js.map +1 -1
  432. package/dist/providers/factory.d.ts.map +1 -1
  433. package/dist/providers/factory.js +13 -0
  434. package/dist/providers/factory.js.map +1 -1
  435. package/dist/providers/hybridai-bots.d.ts +1 -0
  436. package/dist/providers/hybridai-bots.d.ts.map +1 -1
  437. package/dist/providers/hybridai-bots.js +14 -5
  438. package/dist/providers/hybridai-bots.js.map +1 -1
  439. package/dist/providers/local-discovery.d.ts +2 -1
  440. package/dist/providers/local-discovery.d.ts.map +1 -1
  441. package/dist/providers/local-discovery.js +118 -38
  442. package/dist/providers/local-discovery.js.map +1 -1
  443. package/dist/providers/local-endpoints.d.ts +17 -0
  444. package/dist/providers/local-endpoints.d.ts.map +1 -0
  445. package/dist/providers/local-endpoints.js +58 -0
  446. package/dist/providers/local-endpoints.js.map +1 -0
  447. package/dist/providers/local-health.d.ts.map +1 -1
  448. package/dist/providers/local-health.js +15 -4
  449. package/dist/providers/local-health.js.map +1 -1
  450. package/dist/providers/local-ollama.d.ts.map +1 -1
  451. package/dist/providers/local-ollama.js +21 -6
  452. package/dist/providers/local-ollama.js.map +1 -1
  453. package/dist/providers/local-openai-compat.d.ts.map +1 -1
  454. package/dist/providers/local-openai-compat.js +57 -15
  455. package/dist/providers/local-openai-compat.js.map +1 -1
  456. package/dist/providers/local-types.d.ts +11 -1
  457. package/dist/providers/local-types.d.ts.map +1 -1
  458. package/dist/providers/model-catalog.d.ts.map +1 -1
  459. package/dist/providers/model-catalog.js +23 -9
  460. package/dist/providers/model-catalog.js.map +1 -1
  461. package/dist/providers/model-names.d.ts.map +1 -1
  462. package/dist/providers/model-names.js +6 -0
  463. package/dist/providers/model-names.js.map +1 -1
  464. package/dist/providers/task-routing.d.ts.map +1 -1
  465. package/dist/providers/task-routing.js +9 -2
  466. package/dist/providers/task-routing.js.map +1 -1
  467. package/dist/providers/types.d.ts +3 -2
  468. package/dist/providers/types.d.ts.map +1 -1
  469. package/dist/scheduler/heartbeat-prompt.d.ts +2 -0
  470. package/dist/scheduler/heartbeat-prompt.d.ts.map +1 -0
  471. package/dist/scheduler/heartbeat-prompt.js +2 -0
  472. package/dist/scheduler/heartbeat-prompt.js.map +1 -0
  473. package/dist/scheduler/heartbeat.d.ts.map +1 -1
  474. package/dist/scheduler/heartbeat.js +6 -6
  475. package/dist/scheduler/heartbeat.js.map +1 -1
  476. package/dist/scheduler/scheduler.d.ts +0 -5
  477. package/dist/scheduler/scheduler.d.ts.map +1 -1
  478. package/dist/scheduler/scheduler.js +19 -7
  479. package/dist/scheduler/scheduler.js.map +1 -1
  480. package/dist/security/admin-rbac.d.ts +2 -1
  481. package/dist/security/admin-rbac.d.ts.map +1 -1
  482. package/dist/security/admin-rbac.js +5 -0
  483. package/dist/security/admin-rbac.js.map +1 -1
  484. package/dist/security/runtime-secrets.d.ts +1 -0
  485. package/dist/security/runtime-secrets.d.ts.map +1 -1
  486. package/dist/security/runtime-secrets.js +12 -3
  487. package/dist/security/runtime-secrets.js.map +1 -1
  488. package/dist/security/secret-refs.d.ts.map +1 -1
  489. package/dist/security/secret-refs.js +1 -3
  490. package/dist/security/secret-refs.js.map +1 -1
  491. package/dist/session/session-trace-export.d.ts.map +1 -1
  492. package/dist/session/session-trace-export.js +3 -3
  493. package/dist/session/session-trace-export.js.map +1 -1
  494. package/dist/session/token-efficiency.d.ts.map +1 -1
  495. package/dist/session/token-efficiency.js +32 -5
  496. package/dist/session/token-efficiency.js.map +1 -1
  497. package/dist/skills/adaptive-skills-types.d.ts +3 -0
  498. package/dist/skills/adaptive-skills-types.d.ts.map +1 -1
  499. package/dist/skills/agent-scoreboard.d.ts.map +1 -1
  500. package/dist/skills/agent-scoreboard.js +1 -0
  501. package/dist/skills/agent-scoreboard.js.map +1 -1
  502. package/dist/tui-approval-prompt.d.ts.map +1 -1
  503. package/dist/tui-approval-prompt.js +7 -50
  504. package/dist/tui-approval-prompt.js.map +1 -1
  505. package/dist/tui-banner.d.ts.map +1 -1
  506. package/dist/tui-banner.js +3 -32
  507. package/dist/tui-banner.js.map +1 -1
  508. package/dist/tui-skill-config.d.ts.map +1 -1
  509. package/dist/tui-skill-config.js +7 -47
  510. package/dist/tui-skill-config.js.map +1 -1
  511. package/dist/tui-slash-menu.d.ts.map +1 -1
  512. package/dist/tui-slash-menu.js +47 -0
  513. package/dist/tui-slash-menu.js.map +1 -1
  514. package/dist/tui-thinking.d.ts.map +1 -1
  515. package/dist/tui-thinking.js +2 -44
  516. package/dist/tui-thinking.js.map +1 -1
  517. package/dist/tui.d.ts +1 -0
  518. package/dist/tui.d.ts.map +1 -1
  519. package/dist/tui.js +42 -116
  520. package/dist/tui.js.map +1 -1
  521. package/dist/tunnel/tailscale-tunnel-provider.d.ts.map +1 -1
  522. package/dist/tunnel/tailscale-tunnel-provider.js +1 -3
  523. package/dist/tunnel/tailscale-tunnel-provider.js.map +1 -1
  524. package/dist/types/audit.d.ts +2 -0
  525. package/dist/types/audit.d.ts.map +1 -1
  526. package/dist/types/container.d.ts +8 -0
  527. package/dist/types/container.d.ts.map +1 -1
  528. package/dist/types/execution.d.ts +3 -0
  529. package/dist/types/execution.d.ts.map +1 -1
  530. package/dist/types/model-behavior.d.ts +10 -0
  531. package/dist/types/model-behavior.d.ts.map +1 -0
  532. package/dist/types/model-behavior.js +14 -0
  533. package/dist/types/model-behavior.js.map +1 -0
  534. package/dist/types/models.d.ts +2 -0
  535. package/dist/types/models.d.ts.map +1 -1
  536. package/dist/types/models.js.map +1 -1
  537. package/dist/types/session.d.ts +1 -0
  538. package/dist/types/session.d.ts.map +1 -1
  539. package/dist/update.d.ts.map +1 -1
  540. package/dist/update.js +9 -1
  541. package/dist/update.js.map +1 -1
  542. package/dist/usage/media-generation-usage.d.ts.map +1 -1
  543. package/dist/usage/media-generation-usage.js +1 -3
  544. package/dist/usage/media-generation-usage.js.map +1 -1
  545. package/dist/utils/ansi.d.ts +14 -0
  546. package/dist/utils/ansi.d.ts.map +1 -0
  547. package/dist/utils/ansi.js +151 -0
  548. package/dist/utils/ansi.js.map +1 -0
  549. package/dist/workspace.d.ts +4 -3
  550. package/dist/workspace.d.ts.map +1 -1
  551. package/dist/workspace.js +108 -5
  552. package/dist/workspace.js.map +1 -1
  553. package/docs/content/README.md +23 -1
  554. package/docs/content/channels/admin-console.md +28 -1
  555. package/docs/content/developer-guide/README.md +2 -0
  556. package/docs/content/developer-guide/approvals.md +3 -0
  557. package/docs/content/developer-guide/desktop-release.md +199 -0
  558. package/docs/content/developer-guide/memory.md +27 -1
  559. package/docs/content/developer-guide/runtime.md +31 -1
  560. package/docs/content/extensibility/skills.md +13 -3
  561. package/docs/content/getting-started/installation.md +49 -13
  562. package/docs/content/guides/README.md +3 -0
  563. package/docs/content/guides/bundled-skills.md +10 -4
  564. package/docs/content/guides/hatching-task-ideas.md +149 -0
  565. package/docs/content/guides/human-distillation.md +115 -0
  566. package/docs/content/guides/local-providers.md +27 -3
  567. package/docs/content/guides/skills/README.md +12 -6
  568. package/docs/content/guides/skills/business-skills.md +23 -0
  569. package/docs/content/guides/skills/development.md +159 -0
  570. package/docs/content/guides/skills/integrations.md +47 -1
  571. package/docs/content/guides/skills/productivity.md +48 -1
  572. package/docs/content/internal/roadmap.md +77 -60
  573. package/docs/content/reference/commands.md +17 -8
  574. package/docs/content/reference/configuration.md +14 -0
  575. package/docs/content/reference/model-selection.md +11 -7
  576. package/docs/index.html +2 -2
  577. package/docs/static/docs.js +1 -0
  578. package/npm-shrinkwrap.json +1704 -1691
  579. package/package.json +30 -25
  580. package/scripts/postinstall-container.mjs +20 -11
  581. package/skills/blink/SKILL.md +244 -0
  582. package/skills/blink/blink.cjs +2767 -0
  583. package/skills/byd-battery/SKILL.md +181 -0
  584. package/skills/byd-battery/byd-battery.cjs +1454 -0
  585. package/skills/hue/SKILL.md +378 -0
  586. package/skills/hue/hue.cjs +524 -0
  587. package/skills/human-distill/SKILL.md +138 -0
  588. package/skills/human-distill/references/extraction-contract.md +96 -0
  589. package/skills/human-distill/references/interview-protocol.md +47 -0
  590. package/skills/human-distill/references/mirroring.md +50 -0
  591. package/skills/human-distill/references/six-dimensions.md +60 -0
  592. package/skills/mailchimp/SKILL.md +296 -0
  593. package/skills/mailchimp/mailchimp.cjs +1274 -0
  594. package/templates/BOOTSTRAP.md +72 -7
  595. package/templates/TASK_IDEAS.md +149 -0
  596. package/templates/USER.md +19 -0
  597. package/console/dist/assets/chat-D-0oOWq6.js +0 -94
  598. package/console/dist/assets/index-SFw3GH_b.js +0 -80
  599. package/console/dist/assets/index-z7-uHEVk.css +0 -1
  600. package/console/dist/assets/query-ME417NFS.js +0 -1
  601. package/console/dist/assets/router-BkmmjtJ_.js +0 -1
  602. package/console/dist/assets/terminal-CaRX6YXB.js +0 -7
  603. package/console/dist/assets/terminal-TdnZ7DQy.css +0 -1
  604. package/console/dist/assets/terminal-p-Sr8mRs.js +0 -1
package/AGENTS.md CHANGED
@@ -171,8 +171,11 @@ should verify no broken references.
171
171
 
172
172
  ### Prerequisites
173
173
 
174
- - Node.js 22 (matches CI and `engines` field)
175
- - npm
174
+ - Node.js 22 (matches CI and the `engines` field)
175
+ - npm 11.10+ — run `corepack enable` so repo commands use the `packageManager`
176
+ pin (`npm@11.10.0`). Contributors need this version because npm's
177
+ `min-release-age` supply-chain gate (see `SECURITY.md`) only takes effect on
178
+ npm 11.10+; it is deliberately not enforced on end users via `engines.npm`.
176
179
  - Docker when working on container-mode behavior or image builds
177
180
 
178
181
  ### Common Commands
@@ -347,11 +350,16 @@ Skill resolution order (first match wins):
347
350
  When the user says "bump release":
348
351
 
349
352
  1. Bump the requested semantic version (if unspecified, default to patch).
350
- 2. Update version strings in:
353
+ 2. Update `package.json` to the new version, then run `npm run version:sync`
354
+ to propagate it through product package metadata:
351
355
  - `package.json`
352
- - `package-lock.json` (root `version` and `packages[""]`)
356
+ - `package-lock.json` and `npm-shrinkwrap.json` (root `version`,
357
+ `packages[""]`, and product workspace entries)
358
+ - `console/package.json`
359
+ - `desktop/package.json`
353
360
  - `container/package.json`
354
- - `container/package-lock.json` (root `version` and `packages[""]`)
361
+ - `container/package-lock.json` and `container/npm-shrinkwrap.json` (root
362
+ `version` and `packages[""]`)
355
363
  - any user-facing version text (for example `src/tui.ts` banner)
356
364
  3. Move `CHANGELOG.md` release notes from `Unreleased` to the new version
357
365
  heading (or create one).
package/CHANGELOG.md CHANGED
@@ -2,6 +2,211 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## [0.24.0](https://github.com/HybridAIOne/hybridclaw/tree/v0.24.0) - 2026-06-11
6
+
7
+ ### Added
8
+
9
+ - **Human distillation (R72)**: New `hybridclaw coworker` command group and
10
+ bundled `human-distill` skill that distills a real person's source material
11
+ into a coworker agent. Collectors normalise Slack exports, mbox email,
12
+ meeting transcripts, chat JSONL, documents, and gap-driven interview
13
+ questionnaires into an agent-scoped corpus with quality weighting, stable
14
+ provenance ids, and third-party PII masking at ingest. A resumable
15
+ ingest → analyse → build → merge → correct pipeline writes the persona into
16
+ the standard identity files (`IDENTITY.md`, `SOUL.md`, `USER.md`, `CV.md`)
17
+ and a generated work-module skill, with `/admin/distill` managing subjects,
18
+ consent, source uploads, corpus documents, and runs from the browser. Every
19
+ claim cites corpus documents (uncited claims are flagged, not written),
20
+ every merge is an F4-versioned reversible edit, and conflicting evidence is
21
+ surfaced as operator review items. Distilling a real, named human is
22
+ hard-blocked until a consent artefact is recorded; all lifecycle actions
23
+ emit hash-chained `distill.*` audit events; `coworker forget` erases corpus,
24
+ persona, work module, runs, and revision snapshots as one identifier set.
25
+ Includes a leakage/fidelity eval (`coworker eval`), conversational
26
+ corrections (`coworker correct`), and one-bundle multi-host export/install
27
+ for Claude Code, Codex, OpenClaw, and HybridClaw. Manifesto: Principle VII -
28
+ A coworker you can trust with real responsibility.
29
+ - **Cloud memory sync**: Agents now sync local memory files (`MEMORY.md`,
30
+ `USER.md`, and recent daily memory notes) with the HybridAI cloud and receive
31
+ shared installation- and company-scoped memory back for prompt context. Sync
32
+ runs at conversation start and periodically every five minutes with
33
+ per-agent rate limiting, requires `HYBRIDAI_API_KEY`, `HYBRIDAI_BASE_URL`
34
+ (HTTPS only), and `HYBRIDAI_CHATBOT_ID`, and stays disabled when those are
35
+ unset. Shared memory appears read-only in the agent file editor under a
36
+ "Shared memory" group.
37
+ - **A2A operator pairing**: Added `/admin/a2a-trust` for pairing two HybridClaw
38
+ instances: operators fetch a peer Agent Card by URL or canonical DNS
39
+ identifier, preview its identity and key fingerprint, and trust it with an
40
+ optional peer-side approval prompt. Incoming pairing requests arrive through
41
+ a rate-limited `/a2a/pairing/requests` endpoint and can be approved or
42
+ declined from the console with audit-trail decision reasons.
43
+ - **Inbound A2A envelopes**: Added a JSON-RPC Agent Card envelope receiver for
44
+ cross-instance A2A delivery, including canonical sender/recipient metadata,
45
+ idempotent persistence, signed bearer-token validation, read-only admin
46
+ inbox visibility, and audit events for malformed or rejected envelopes.
47
+ - **HybridAI proxy agents**: Agents can now proxy conversations to hosted
48
+ HybridAI chatbots via per-agent `proxy` config, SecretRef-backed API keys,
49
+ HTTPS-only upstreams, selectable channel- or user-scoped conversation ids,
50
+ streaming response forwarding, and `/status` visibility for proxy mode.
51
+ - **Explicit agent addressing**: Chat channels and web chat can address
52
+ specific agents inline, with mention autocomplete, avatar-backed mention
53
+ pills, canonical recipient handling, and fanout hardening for local
54
+ proactive delivery.
55
+ - **`byd-battery` skill**: Added read-only monitoring for BYD Battery-Box
56
+ Premium HVS/HVM/LVS/LVL home-storage systems over local Modbus TCP or
57
+ Fronius inverter delegation, covering state of charge, pack telemetry, cell
58
+ extremes, tower/module inventory, decoded alarms, firmware info, and energy
59
+ counters, with allowlisted register ranges and no write operations.
60
+ - **`mailchimp` skill**: Added Mailchimp Marketing and Mailchimp
61
+ Transactional/Mandrill workflows for credential checks, audience/member
62
+ reads, guarded subscriber and tag mutations, campaign draft/content/report
63
+ operations, automations, journeys, and approval-gated campaign or
64
+ transactional sends through the gateway HTTP proxy.
65
+ - **Amber approval cards**: Web chat approval prompts now render as structured
66
+ confirmation cards with an approval-tier badge, parsed action/tool/reason
67
+ detail rows, and separated confirm/deny and trust-scope button groups.
68
+ - **Named local model endpoints**: Local provider config now supports
69
+ additional named Ollama, LM Studio, llama.cpp, and vLLM endpoints with
70
+ endpoint-prefixed model ids, CLI setup via `--name`, and per-endpoint model
71
+ behavior flags for Qwen thinking markup and Gemma tool-call formats.
72
+ - **Auxiliary model testing**: Added `/aux test <task> <prompt>` so operators
73
+ can exercise configured auxiliary model routes directly and see the
74
+ provider/model used for the request.
75
+ - **Response rating forwarding**: Thumbs up/down ratings on web chat responses
76
+ are forwarded to the HybridAI feedback API when HybridAI authentication is
77
+ active, alongside the existing local rating store and audit events.
78
+ Forwarding is non-blocking and skips silently when auth is unavailable.
79
+
80
+ ### Changed
81
+
82
+ - **README and skill docs positioning**: The public README and skills docs now
83
+ lead with HybridClaw's validated business-skill workflow: helper-backed
84
+ production skills, eval scenarios, approval tiers, credential boundaries, and
85
+ `Qwen/Qwen3.6-27B-FP8` as the small-model validation baseline.
86
+ - **Multi-agent and credential-isolation positioning**: The README and docs
87
+ now call out multi-instance A2A workflows, hosted proxy agents, explicit
88
+ addressing, and SecretRef-backed execution that keeps raw credentials out of
89
+ model context.
90
+ - **HybridAI Cloud launch path**: The README, docs landing page, and
91
+ installation guide now link to the managed HybridClaw cloud offering at
92
+ `hybridclaw.io`.
93
+ - **Desktop release order docs**: The macOS desktop release guide now
94
+ recommends building and notarizing from the exact version tag, uploading
95
+ desktop assets to a draft GitHub Release, then publishing after assets are
96
+ verified.
97
+ - **Provider request payloads**: Empty tool definitions are omitted from
98
+ HybridAI, OpenAI-compatible, Codex, and Ollama provider requests instead of
99
+ sending empty `tools` arrays.
100
+ - **Local vLLM tool behavior**: OpenAI-compatible local providers infer and
101
+ remember native-tool fallback support, count prompt-side tool overhead in
102
+ context guards, refresh named-endpoint metadata, and parse Gemma text tool
103
+ calls emitted before or after Markdown wrappers.
104
+ - **Structured actors in audit data**: Audit/event records now carry unified
105
+ actor identities across A2A envelopes, board cards, adaptive-skill
106
+ observations, scoreboards, and structured audit queries.
107
+ - **Coworker liveness scan**: Skill scans during coworker liveness checks use
108
+ set-based agent filtering, speeding up gateways with many agents.
109
+ - **Release version sync tooling**: `npm run version:sync` now keeps root,
110
+ console, desktop, container, lockfile, and shrinkwrap package versions in
111
+ sync, with `release:check` validating the same invariant.
112
+ - **Dependency updates**: Routine minor and patch dependency updates across the
113
+ gateway, console, container, and desktop packages, plus overrides that lift
114
+ transitive `shell-quote` and `tmp` to patched releases flagged by npm audit.
115
+
116
+ ### Fixed
117
+
118
+ - **Gateway token timing safety**: Gateway API and bearer token checks use
119
+ constant-time comparison to avoid timing side channels.
120
+ - **Delegation identifiers**: Delegation session and batch job identifiers use
121
+ cryptographic UUIDs instead of seeded pseudo-random strings.
122
+ - **Containment check stalls**: Media and artifact path containment checks
123
+ resolve real paths asynchronously so large directory validation no longer
124
+ blocks the gateway event loop.
125
+ - **TUI ANSI truncation**: Terminal output truncation handles incomplete ANSI
126
+ escape sequences and wide glyphs without corrupting styled text.
127
+ - **Duplicate hatching after onboarding**: Switching agents after onboarding
128
+ no longer re-triggers the workspace bootstrap kickoff, and bootstrap job
129
+ detection recognizes both bulleted and numbered job lists.
130
+ - **Host runtime dependency detection**: Source-checkout host runtime checks
131
+ no longer misreport container dependencies as missing when npm hoists a
132
+ package whose `exports` map does not expose `package.json` (e.g.
133
+ `dompurify`).
134
+ - **Installer and setup hardening**: The one-line installer, postinstall
135
+ container setup, Node version guard, and Homebrew/source-checkout paths handle
136
+ no-sudo installs, user npm prefixes, and container dependency setup more
137
+ reliably.
138
+
139
+ ## [0.23.0](https://github.com/HybridAIOne/hybridclaw/tree/v0.23.0) - 2026-06-09
140
+
141
+ ### Added
142
+
143
+ - **`blink` skill**: Added Blink camera and video-doorbell workflows for
144
+ OAuth v2 login with PIN handoff, device/network/camera inventory, motion
145
+ clip listing and artifact-backed downloads, guarded arm/disarm and motion
146
+ control plans, and fresh-thumbnail refresh handling that keeps Blink media
147
+ bytes out of model context.
148
+ - **`hue` skill**: Added Philips Hue Bridge support for local CLIP v2 reads,
149
+ bridge-link credential capture, self-signed bridge TLS handling, guarded
150
+ light/group/scene/behavior changes, Remote API token refresh support, and
151
+ LAN policy diagnostics for Hue Bridge requests.
152
+ - **Fleet topology admin UI**: Added `/admin/fleet-topology` for viewing the
153
+ local A2A instance identity, checking trusted child instances through their
154
+ Agent Card URLs, and adding, editing, or removing A2A trust-ledger peers from
155
+ the console.
156
+ - **Admin secrets console**: Added `/admin/secrets` as a write-only secret
157
+ manager that lists set and declared-but-empty secrets by metadata, supports
158
+ overwrite and unset actions, and never returns cleartext secret values to the
159
+ browser.
160
+ - **Chat code rendering**: Web chat now syntax-highlights completed code
161
+ blocks, shows language labels, and provides a touch-reachable copy button
162
+ with success feedback while skipping highlighter work for actively streaming
163
+ messages.
164
+ - **Sentry error reporting**: `hybridclaw env set SENTRY_DSN <dsn>` enables
165
+ optional gateway Sentry reporting for startup failures, uncaught exceptions,
166
+ unhandled rejections, and errors recorded through shared gateway/agent spans,
167
+ with default `production` environment, automatic
168
+ `hybridclaw@<package-version>` release naming, secret redaction, and graceful
169
+ shutdown flushes.
170
+ - **Scheduler heartbeat polling action**: Config-backed scheduler jobs can use
171
+ the explicit `heartbeat_poll` action kind so empty `HEARTBEAT.md` files are
172
+ skipped before any model turn is started.
173
+
174
+ ### Changed
175
+
176
+ - **Installer and npm policy alignment**: The bootstrap installer works more
177
+ cleanly on fresh Debian/Ubuntu hosts and no-sudo system Node setups, while
178
+ contributor docs, CI, Docker, and package metadata pin npm 11.10+ without
179
+ forcing consumer-facing `engines.npm` warnings.
180
+ - **Second-opinion TUI formatting**: `/second-opinion` output in the terminal
181
+ wraps long model-comparison and validation responses instead of spilling past
182
+ the viewport.
183
+ - **Skill setup guidance**: Skill authoring docs now require chat-friendly
184
+ `/env` and `/secret` setup alternatives alongside local `hybridclaw env` and
185
+ `hybridclaw secret` commands.
186
+ - **Web agent hatching kickoff**: Switching to an agent with an active
187
+ `BOOTSTRAP.md` in web chat now sends a hidden kickoff turn so hatching starts
188
+ immediately while the visible slash-command response remains local command
189
+ output.
190
+
191
+ ### Fixed
192
+
193
+ - **Interrupted agent shutdown output**: Container/runtime shutdown output now
194
+ distinguishes expected interrupted-run signal errors from real runtime
195
+ failures.
196
+ - **Slash autocomplete flags**: TUI slash-command autocomplete keeps literal
197
+ argument and flag completions instead of rewriting them.
198
+ - **Chat delete guard**: Deleting browser chat sessions is blocked while a run
199
+ is still active for that session.
200
+ - **Malformed Unicode in prompts**: Container utilities sanitize malformed
201
+ Unicode so provider prompts and local OpenAI-compatible requests do not fail
202
+ on invalid surrogate data.
203
+ - **Trace export identity preservation**: Session trace exports preserve trace
204
+ hash identifiers while applying secret redaction.
205
+ - **Web approval buttons**: Approval buttons now emit gateway-supported
206
+ commands: `Allow once` sends `/approve yes`, `Allow always` sends
207
+ `/approve all`, and scoped buttons send their matching `session` or `agent`
208
+ approvals.
209
+
5
210
  ## [0.22.0](https://github.com/HybridAIOne/hybridclaw/tree/v0.22.0) - 2026-06-05
6
211
 
7
212
  ### Added