@hybridaione/hybridclaw 0.12.5 → 0.12.7

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