@hybridaione/hybridclaw 0.12.4 → 0.12.6

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 (458) hide show
  1. package/AGENTS.md +5 -4
  2. package/CHANGELOG.md +120 -16
  3. package/README.md +75 -16
  4. package/SECURITY.md +20 -2
  5. package/config.example.json +53 -0
  6. package/console/dist/assets/chat-BFZkUicV.js +93 -0
  7. package/console/dist/assets/chat-CKhyYUgY.css +1 -0
  8. package/console/dist/assets/cx-Dzb14TPi.js +1 -0
  9. package/console/dist/assets/index-BFbE8-iL.css +1 -0
  10. package/console/dist/assets/index-BLDth_j-.js +15 -0
  11. package/console/dist/assets/query-DYNohPrB.js +1 -0
  12. package/console/dist/assets/rolldown-runtime-DF2fYuay.js +1 -0
  13. package/console/dist/assets/router-CUFYqD1a.js +1 -0
  14. package/console/dist/assets/terminal-BQbAhdr-.js +1 -0
  15. package/console/dist/assets/{terminal-DShGVqqW.js → terminal-CzORQPl2.js} +2 -2
  16. package/console/dist/assets/vendor-C4WPVvdh.js +9 -0
  17. package/console/dist/index.html +7 -2
  18. package/console/package.json +3 -0
  19. package/container/dist/approval-policy.js +402 -266
  20. package/container/dist/approval-policy.js.map +1 -1
  21. package/container/dist/index.js +7 -5
  22. package/container/dist/index.js.map +1 -1
  23. package/container/dist/model-retry.js +1 -1
  24. package/container/dist/model-retry.js.map +1 -1
  25. package/container/dist/providers/hybridai.js +2 -1
  26. package/container/dist/providers/hybridai.js.map +1 -1
  27. package/container/dist/providers/local-openai-compat.js +2 -1
  28. package/container/dist/providers/local-openai-compat.js.map +1 -1
  29. package/container/dist/providers/stream-utils.js +31 -0
  30. package/container/dist/providers/stream-utils.js.map +1 -0
  31. package/container/package-lock.json +19 -3
  32. package/container/package.json +3 -2
  33. package/container/shared/network-policy.d.ts +34 -0
  34. package/container/shared/network-policy.js +209 -0
  35. package/container/src/approval-policy.ts +511 -277
  36. package/container/src/index.ts +7 -0
  37. package/container/src/model-retry.ts +1 -1
  38. package/container/src/providers/hybridai.ts +5 -1
  39. package/container/src/providers/local-openai-compat.ts +5 -1
  40. package/container/src/providers/stream-utils.ts +37 -0
  41. package/dist/agent/prompt-hooks.d.ts.map +1 -1
  42. package/dist/agent/prompt-hooks.js +34 -1
  43. package/dist/agent/prompt-hooks.js.map +1 -1
  44. package/dist/approval-commands.d.ts +1 -1
  45. package/dist/approval-commands.d.ts.map +1 -1
  46. package/dist/approval-commands.js +0 -1
  47. package/dist/approval-commands.js.map +1 -1
  48. package/dist/auth/codex-auth.d.ts.map +1 -1
  49. package/dist/auth/codex-auth.js +1 -3
  50. package/dist/auth/codex-auth.js.map +1 -1
  51. package/dist/channels/channel-registry.d.ts.map +1 -1
  52. package/dist/channels/channel-registry.js +5 -1
  53. package/dist/channels/channel-registry.js.map +1 -1
  54. package/dist/channels/channel.d.ts +3 -2
  55. package/dist/channels/channel.d.ts.map +1 -1
  56. package/dist/channels/channel.js +10 -0
  57. package/dist/channels/channel.js.map +1 -1
  58. package/dist/channels/discord/delivery.d.ts.map +1 -1
  59. package/dist/channels/discord/delivery.js +2 -1
  60. package/dist/channels/discord/delivery.js.map +1 -1
  61. package/dist/channels/discord/human-delay.d.ts +0 -1
  62. package/dist/channels/discord/human-delay.d.ts.map +1 -1
  63. package/dist/channels/discord/human-delay.js +0 -6
  64. package/dist/channels/discord/human-delay.js.map +1 -1
  65. package/dist/channels/discord/reactions.d.ts.map +1 -1
  66. package/dist/channels/discord/reactions.js +1 -3
  67. package/dist/channels/discord/reactions.js.map +1 -1
  68. package/dist/channels/discord/retry.d.ts +4 -0
  69. package/dist/channels/discord/retry.d.ts.map +1 -0
  70. package/dist/channels/discord/retry.js +32 -0
  71. package/dist/channels/discord/retry.js.map +1 -0
  72. package/dist/channels/discord/runtime.d.ts.map +1 -1
  73. package/dist/channels/discord/runtime.js +1 -38
  74. package/dist/channels/discord/runtime.js.map +1 -1
  75. package/dist/channels/discord/stream.d.ts.map +1 -1
  76. package/dist/channels/discord/stream.js +15 -46
  77. package/dist/channels/discord/stream.js.map +1 -1
  78. package/dist/channels/email/connection.d.ts.map +1 -1
  79. package/dist/channels/email/connection.js +13 -2
  80. package/dist/channels/email/connection.js.map +1 -1
  81. package/dist/channels/msteams/retry.d.ts.map +1 -1
  82. package/dist/channels/msteams/retry.js +13 -25
  83. package/dist/channels/msteams/retry.js.map +1 -1
  84. package/dist/channels/msteams/runtime.d.ts.map +1 -1
  85. package/dist/channels/msteams/runtime.js +11 -1
  86. package/dist/channels/msteams/runtime.js.map +1 -1
  87. package/dist/channels/prompt-adapters.d.ts.map +1 -1
  88. package/dist/channels/prompt-adapters.js +9 -1
  89. package/dist/channels/prompt-adapters.js.map +1 -1
  90. package/dist/channels/telegram/delivery.d.ts.map +1 -1
  91. package/dist/channels/telegram/delivery.js +8 -20
  92. package/dist/channels/telegram/delivery.js.map +1 -1
  93. package/dist/channels/voice/channel-id.d.ts +4 -0
  94. package/dist/channels/voice/channel-id.d.ts.map +1 -0
  95. package/dist/channels/voice/channel-id.js +23 -0
  96. package/dist/channels/voice/channel-id.js.map +1 -0
  97. package/dist/channels/voice/conversation-relay.d.ts +70 -0
  98. package/dist/channels/voice/conversation-relay.d.ts.map +1 -0
  99. package/dist/channels/voice/conversation-relay.js +196 -0
  100. package/dist/channels/voice/conversation-relay.js.map +1 -0
  101. package/dist/channels/voice/runtime.d.ts +22 -0
  102. package/dist/channels/voice/runtime.d.ts.map +1 -0
  103. package/dist/channels/voice/runtime.js +582 -0
  104. package/dist/channels/voice/runtime.js.map +1 -0
  105. package/dist/channels/voice/security.d.ts +20 -0
  106. package/dist/channels/voice/security.d.ts.map +1 -0
  107. package/dist/channels/voice/security.js +62 -0
  108. package/dist/channels/voice/security.js.map +1 -0
  109. package/dist/channels/voice/session.d.ts +57 -0
  110. package/dist/channels/voice/session.d.ts.map +1 -0
  111. package/dist/channels/voice/session.js +208 -0
  112. package/dist/channels/voice/session.js.map +1 -0
  113. package/dist/channels/voice/text.d.ts +7 -0
  114. package/dist/channels/voice/text.d.ts.map +1 -0
  115. package/dist/channels/voice/text.js +161 -0
  116. package/dist/channels/voice/text.js.map +1 -0
  117. package/dist/channels/voice/twilio-manager.d.ts +26 -0
  118. package/dist/channels/voice/twilio-manager.d.ts.map +1 -0
  119. package/dist/channels/voice/twilio-manager.js +120 -0
  120. package/dist/channels/voice/twilio-manager.js.map +1 -0
  121. package/dist/channels/voice/utils.d.ts +2 -0
  122. package/dist/channels/voice/utils.d.ts.map +1 -0
  123. package/dist/channels/voice/utils.js +4 -0
  124. package/dist/channels/voice/utils.js.map +1 -0
  125. package/dist/channels/voice/webhook.d.ts +13 -0
  126. package/dist/channels/voice/webhook.d.ts.map +1 -0
  127. package/dist/channels/voice/webhook.js +73 -0
  128. package/dist/channels/voice/webhook.js.map +1 -0
  129. package/dist/channels/whatsapp/connection.d.ts.map +1 -1
  130. package/dist/channels/whatsapp/connection.js +16 -2
  131. package/dist/channels/whatsapp/connection.js.map +1 -1
  132. package/dist/cli/help.d.ts +2 -0
  133. package/dist/cli/help.d.ts.map +1 -1
  134. package/dist/cli/help.js +64 -3
  135. package/dist/cli/help.js.map +1 -1
  136. package/dist/cli/secret-command.d.ts +2 -0
  137. package/dist/cli/secret-command.d.ts.map +1 -0
  138. package/dist/cli/secret-command.js +208 -0
  139. package/dist/cli/secret-command.js.map +1 -0
  140. package/dist/cli.d.ts.map +1 -1
  141. package/dist/cli.js +20 -1
  142. package/dist/cli.js.map +1 -1
  143. package/dist/command-registry.d.ts.map +1 -1
  144. package/dist/command-registry.js +343 -7
  145. package/dist/command-registry.js.map +1 -1
  146. package/dist/commands/policy-command.d.ts +9 -0
  147. package/dist/commands/policy-command.d.ts.map +1 -0
  148. package/dist/commands/policy-command.js +381 -0
  149. package/dist/commands/policy-command.js.map +1 -0
  150. package/dist/config/config.d.ts +13 -0
  151. package/dist/config/config.d.ts.map +1 -1
  152. package/dist/config/config.js +28 -0
  153. package/dist/config/config.js.map +1 -1
  154. package/dist/config/runtime-config-revisions.d.ts +15 -0
  155. package/dist/config/runtime-config-revisions.d.ts.map +1 -1
  156. package/dist/config/runtime-config-revisions.js +38 -1
  157. package/dist/config/runtime-config-revisions.js.map +1 -1
  158. package/dist/config/runtime-config.d.ts +48 -3
  159. package/dist/config/runtime-config.d.ts.map +1 -1
  160. package/dist/config/runtime-config.js +194 -3
  161. package/dist/config/runtime-config.js.map +1 -1
  162. package/dist/doctor/checks/index.d.ts.map +1 -1
  163. package/dist/doctor/checks/index.js +2 -0
  164. package/dist/doctor/checks/index.js.map +1 -1
  165. package/dist/doctor/checks/resource-hygiene.d.ts +43 -0
  166. package/dist/doctor/checks/resource-hygiene.d.ts.map +1 -0
  167. package/dist/doctor/checks/resource-hygiene.js +654 -0
  168. package/dist/doctor/checks/resource-hygiene.js.map +1 -0
  169. package/dist/doctor/resource-hygiene.d.ts +12 -0
  170. package/dist/doctor/resource-hygiene.d.ts.map +1 -0
  171. package/dist/doctor/resource-hygiene.js +126 -0
  172. package/dist/doctor/resource-hygiene.js.map +1 -0
  173. package/dist/doctor/types.d.ts +1 -0
  174. package/dist/doctor/types.d.ts.map +1 -1
  175. package/dist/doctor/utils.d.ts +3 -1
  176. package/dist/doctor/utils.d.ts.map +1 -1
  177. package/dist/doctor/utils.js +16 -0
  178. package/dist/doctor/utils.js.map +1 -1
  179. package/dist/doctor.d.ts.map +1 -1
  180. package/dist/doctor.js +15 -17
  181. package/dist/doctor.js.map +1 -1
  182. package/dist/errors/gateway-request-error.d.ts +5 -0
  183. package/dist/errors/gateway-request-error.d.ts.map +1 -0
  184. package/dist/errors/gateway-request-error.js +18 -0
  185. package/dist/errors/gateway-request-error.js.map +1 -0
  186. package/dist/gateway/docs.d.ts.map +1 -1
  187. package/dist/gateway/docs.js +119 -44
  188. package/dist/gateway/docs.js.map +1 -1
  189. package/dist/gateway/gateway-chat-service.d.ts.map +1 -1
  190. package/dist/gateway/gateway-chat-service.js +4 -1
  191. package/dist/gateway/gateway-chat-service.js.map +1 -1
  192. package/dist/gateway/gateway-error-utils.d.ts.map +1 -1
  193. package/dist/gateway/gateway-error-utils.js +1 -0
  194. package/dist/gateway/gateway-error-utils.js.map +1 -1
  195. package/dist/gateway/gateway-http-proxy.d.ts +10 -0
  196. package/dist/gateway/gateway-http-proxy.d.ts.map +1 -0
  197. package/dist/gateway/gateway-http-proxy.js +479 -0
  198. package/dist/gateway/gateway-http-proxy.js.map +1 -0
  199. package/dist/gateway/gateway-http-server.d.ts.map +1 -1
  200. package/dist/gateway/gateway-http-server.js +512 -452
  201. package/dist/gateway/gateway-http-server.js.map +1 -1
  202. package/dist/gateway/gateway-http-utils.d.ts +11 -0
  203. package/dist/gateway/gateway-http-utils.d.ts.map +1 -0
  204. package/dist/gateway/gateway-http-utils.js +59 -0
  205. package/dist/gateway/gateway-http-utils.js.map +1 -0
  206. package/dist/gateway/gateway-plugin-service.d.ts.map +1 -1
  207. package/dist/gateway/gateway-plugin-service.js +4 -1
  208. package/dist/gateway/gateway-plugin-service.js.map +1 -1
  209. package/dist/gateway/gateway-service.d.ts +48 -18
  210. package/dist/gateway/gateway-service.d.ts.map +1 -1
  211. package/dist/gateway/gateway-service.js +814 -39
  212. package/dist/gateway/gateway-service.js.map +1 -1
  213. package/dist/gateway/gateway-types.d.ts +105 -0
  214. package/dist/gateway/gateway-types.d.ts.map +1 -1
  215. package/dist/gateway/gateway-types.js.map +1 -1
  216. package/dist/gateway/gateway.js +248 -22
  217. package/dist/gateway/gateway.js.map +1 -1
  218. package/dist/gateway/pending-approvals.d.ts +4 -0
  219. package/dist/gateway/pending-approvals.d.ts.map +1 -1
  220. package/dist/gateway/pending-approvals.js +17 -0
  221. package/dist/gateway/pending-approvals.js.map +1 -1
  222. package/dist/gateway/text-channel-commands.d.ts +2 -1
  223. package/dist/gateway/text-channel-commands.d.ts.map +1 -1
  224. package/dist/gateway/text-channel-commands.js +5 -10
  225. package/dist/gateway/text-channel-commands.js.map +1 -1
  226. package/dist/infra/container-runner.d.ts.map +1 -1
  227. package/dist/infra/container-runner.js +2 -0
  228. package/dist/infra/container-runner.js.map +1 -1
  229. package/dist/infra/host-runner.d.ts.map +1 -1
  230. package/dist/infra/host-runner.js +1 -0
  231. package/dist/infra/host-runner.js.map +1 -1
  232. package/dist/logger.js +23 -4
  233. package/dist/logger.js.map +1 -1
  234. package/dist/media/pdf-context.js +1 -1
  235. package/dist/media/pdf-context.js.map +1 -1
  236. package/dist/memory/db.d.ts.map +1 -1
  237. package/dist/memory/db.js +4 -2
  238. package/dist/memory/db.js.map +1 -1
  239. package/dist/onboarding.d.ts.map +1 -1
  240. package/dist/onboarding.js +115 -2
  241. package/dist/onboarding.js.map +1 -1
  242. package/dist/policy/network-policy.d.ts +3 -0
  243. package/dist/policy/network-policy.d.ts.map +1 -0
  244. package/dist/policy/network-policy.js +2 -0
  245. package/dist/policy/network-policy.js.map +1 -0
  246. package/dist/policy/policy-cli.d.ts +2 -0
  247. package/dist/policy/policy-cli.d.ts.map +1 -0
  248. package/dist/policy/policy-cli.js +12 -0
  249. package/dist/policy/policy-cli.js.map +1 -0
  250. package/dist/policy/policy-presets.d.ts +29 -0
  251. package/dist/policy/policy-presets.d.ts.map +1 -0
  252. package/dist/policy/policy-presets.js +155 -0
  253. package/dist/policy/policy-presets.js.map +1 -0
  254. package/dist/policy/policy-store.d.ts +31 -0
  255. package/dist/policy/policy-store.d.ts.map +1 -0
  256. package/dist/policy/policy-store.js +251 -0
  257. package/dist/policy/policy-store.js.map +1 -0
  258. package/dist/providers/anthropic.d.ts +1 -1
  259. package/dist/providers/anthropic.d.ts.map +1 -1
  260. package/dist/providers/anthropic.js +2 -7
  261. package/dist/providers/anthropic.js.map +1 -1
  262. package/dist/providers/huggingface.d.ts +1 -1
  263. package/dist/providers/huggingface.d.ts.map +1 -1
  264. package/dist/providers/huggingface.js +3 -8
  265. package/dist/providers/huggingface.js.map +1 -1
  266. package/dist/providers/local-ollama.js +2 -2
  267. package/dist/providers/local-ollama.js.map +1 -1
  268. package/dist/providers/mistral.d.ts +1 -1
  269. package/dist/providers/mistral.d.ts.map +1 -1
  270. package/dist/providers/mistral.js +3 -8
  271. package/dist/providers/mistral.js.map +1 -1
  272. package/dist/providers/openai.d.ts +1 -1
  273. package/dist/providers/openai.d.ts.map +1 -1
  274. package/dist/providers/openai.js +3 -8
  275. package/dist/providers/openai.js.map +1 -1
  276. package/dist/providers/openrouter.d.ts +1 -1
  277. package/dist/providers/openrouter.d.ts.map +1 -1
  278. package/dist/providers/openrouter.js +3 -8
  279. package/dist/providers/openrouter.js.map +1 -1
  280. package/dist/providers/provider-utils.d.ts +10 -0
  281. package/dist/providers/provider-utils.d.ts.map +1 -0
  282. package/dist/providers/provider-utils.js +21 -0
  283. package/dist/providers/provider-utils.js.map +1 -0
  284. package/dist/scheduler/scheduler.d.ts.map +1 -1
  285. package/dist/scheduler/scheduler.js +7 -0
  286. package/dist/scheduler/scheduler.js.map +1 -1
  287. package/dist/scheduler/system-jobs.d.ts +25 -0
  288. package/dist/scheduler/system-jobs.d.ts.map +1 -0
  289. package/dist/scheduler/system-jobs.js +27 -0
  290. package/dist/scheduler/system-jobs.js.map +1 -0
  291. package/dist/security/runtime-secrets.d.ts +1 -1
  292. package/dist/security/runtime-secrets.d.ts.map +1 -1
  293. package/dist/security/runtime-secrets.js +1 -0
  294. package/dist/security/runtime-secrets.js.map +1 -1
  295. package/dist/session/session-context.d.ts.map +1 -1
  296. package/dist/session/session-context.js +1 -0
  297. package/dist/session/session-context.js.map +1 -1
  298. package/dist/session/session-maintenance.d.ts.map +1 -1
  299. package/dist/session/session-maintenance.js +6 -1
  300. package/dist/session/session-maintenance.js.map +1 -1
  301. package/dist/session/session-reset.d.ts.map +1 -1
  302. package/dist/session/session-reset.js +3 -0
  303. package/dist/session/session-reset.js.map +1 -1
  304. package/dist/skills/skill-errors.d.ts +6 -0
  305. package/dist/skills/skill-errors.d.ts.map +1 -0
  306. package/dist/skills/skill-errors.js +9 -0
  307. package/dist/skills/skill-errors.js.map +1 -0
  308. package/dist/skills/skills-import-github.d.ts.map +1 -1
  309. package/dist/skills/skills-import-github.js +7 -10
  310. package/dist/skills/skills-import-github.js.map +1 -1
  311. package/dist/skills/skills-import-hubs.d.ts.map +1 -1
  312. package/dist/skills/skills-import-hubs.js +2 -5
  313. package/dist/skills/skills-import-hubs.js.map +1 -1
  314. package/dist/skills/skills-import.d.ts +1 -0
  315. package/dist/skills/skills-import.d.ts.map +1 -1
  316. package/dist/skills/skills-import.js +91 -14
  317. package/dist/skills/skills-import.js.map +1 -1
  318. package/dist/skills/skills.d.ts +9 -0
  319. package/dist/skills/skills.d.ts.map +1 -1
  320. package/dist/skills/skills.js +110 -2
  321. package/dist/skills/skills.js.map +1 -1
  322. package/dist/tui-approval-prompt.d.ts +24 -0
  323. package/dist/tui-approval-prompt.d.ts.map +1 -0
  324. package/dist/tui-approval-prompt.js +344 -0
  325. package/dist/tui-approval-prompt.js.map +1 -0
  326. package/dist/tui-approval.d.ts +1 -0
  327. package/dist/tui-approval.d.ts.map +1 -1
  328. package/dist/tui-approval.js +16 -1
  329. package/dist/tui-approval.js.map +1 -1
  330. package/dist/tui-banner.d.ts.map +1 -1
  331. package/dist/tui-banner.js +1 -0
  332. package/dist/tui-banner.js.map +1 -1
  333. package/dist/tui-exit-summary.d.ts +8 -0
  334. package/dist/tui-exit-summary.d.ts.map +1 -0
  335. package/dist/tui-exit-summary.js +16 -0
  336. package/dist/tui-exit-summary.js.map +1 -0
  337. package/dist/tui-session.d.ts +7 -0
  338. package/dist/tui-session.d.ts.map +1 -1
  339. package/dist/tui-session.js +9 -0
  340. package/dist/tui-session.js.map +1 -1
  341. package/dist/tui-skill-config.d.ts +1 -1
  342. package/dist/tui-skill-config.d.ts.map +1 -1
  343. package/dist/tui-slash-command.d.ts.map +1 -1
  344. package/dist/tui-slash-command.js +0 -3
  345. package/dist/tui-slash-command.js.map +1 -1
  346. package/dist/tui.d.ts.map +1 -1
  347. package/dist/tui.js +86 -52
  348. package/dist/tui.js.map +1 -1
  349. package/dist/utils/transport-retry.d.ts +10 -0
  350. package/dist/utils/transport-retry.d.ts.map +1 -0
  351. package/dist/utils/transport-retry.js +42 -0
  352. package/dist/utils/transport-retry.js.map +1 -0
  353. package/dist/workspace.d.ts +1 -0
  354. package/dist/workspace.d.ts.map +1 -1
  355. package/dist/workspace.js +14 -5
  356. package/dist/workspace.js.map +1 -1
  357. package/docs/404.html +3 -3
  358. package/docs/content/README.md +72 -0
  359. package/docs/content/_category_.json +5 -0
  360. package/docs/content/agents.md +86 -0
  361. package/docs/content/channels/README.md +35 -0
  362. package/docs/content/channels/_category_.json +5 -0
  363. package/docs/content/channels/admin-console.md +75 -0
  364. package/docs/content/channels/discord.md +78 -0
  365. package/docs/content/channels/email.md +103 -0
  366. package/docs/content/channels/imessage.md +357 -0
  367. package/docs/content/channels/local-config-and-secrets.md +58 -0
  368. package/docs/content/channels/msteams.md +136 -0
  369. package/docs/content/channels/overview.md +64 -0
  370. package/docs/content/channels/policies-and-allowlists.md +56 -0
  371. package/docs/content/channels/slack.md +414 -0
  372. package/docs/content/channels/telegram.md +160 -0
  373. package/docs/content/channels/whatsapp.md +98 -0
  374. package/docs/content/developer-guide/README.md +21 -0
  375. package/docs/content/developer-guide/_category_.json +5 -0
  376. package/docs/content/developer-guide/approvals.md +257 -0
  377. package/docs/content/developer-guide/architecture.md +114 -0
  378. package/docs/content/developer-guide/memory.md +379 -0
  379. package/docs/content/developer-guide/runtime.md +407 -0
  380. package/docs/content/developer-guide/session-routing.md +113 -0
  381. package/docs/content/extensibility/README.md +191 -0
  382. package/docs/content/extensibility/_category_.json +5 -0
  383. package/docs/content/extensibility/adaptive-skills.md +120 -0
  384. package/docs/content/extensibility/agent-packages.md +454 -0
  385. package/docs/content/extensibility/gbrain-plugin.md +606 -0
  386. package/docs/content/extensibility/honcho-memory-plugin.md +489 -0
  387. package/docs/content/extensibility/mempalace-memory-plugin.md +523 -0
  388. package/docs/content/extensibility/otel-plugin.md +269 -0
  389. package/docs/content/extensibility/plugins.md +413 -0
  390. package/docs/content/extensibility/qmd-memory-plugin.md +178 -0
  391. package/docs/content/extensibility/skills.md +172 -0
  392. package/docs/content/getting-started/README.md +27 -0
  393. package/docs/content/getting-started/_category_.json +5 -0
  394. package/docs/content/getting-started/authentication.md +167 -0
  395. package/docs/content/getting-started/first-channel.md +73 -0
  396. package/docs/content/getting-started/installation.md +53 -0
  397. package/docs/content/getting-started/quickstart.md +113 -0
  398. package/docs/content/guides/README.md +23 -0
  399. package/docs/content/guides/_category_.json +5 -0
  400. package/docs/content/guides/bundled-skills.md +43 -0
  401. package/docs/content/guides/local-providers.md +49 -0
  402. package/docs/content/guides/office-dependencies.md +50 -0
  403. package/docs/content/guides/remote-access.md +205 -0
  404. package/docs/content/guides/tui-mcp.md +35 -0
  405. package/docs/content/guides/twilio-voice.md +453 -0
  406. package/docs/content/guides/voice-tts.md +133 -0
  407. package/docs/content/reference/README.md +20 -0
  408. package/docs/content/reference/_category_.json +5 -0
  409. package/docs/content/reference/commands.md +423 -0
  410. package/docs/content/reference/configuration.md +270 -0
  411. package/docs/content/reference/diagnostics.md +60 -0
  412. package/docs/content/reference/faq.md +133 -0
  413. package/docs/content/reference/model-selection.md +98 -0
  414. package/docs/content/reference/tools/README.md +13 -0
  415. package/docs/content/reference/tools/_category_.json +5 -0
  416. package/docs/content/reference/tools/web-search.md +74 -0
  417. package/docs/development/agents.md +1 -0
  418. package/docs/development/getting-started/channels.md +12 -5
  419. package/docs/development/getting-started/quickstart.md +4 -0
  420. package/docs/development/guides/README.md +3 -1
  421. package/docs/development/guides/twilio-voice.md +453 -0
  422. package/docs/development/guides/voice-tts.md +4 -0
  423. package/docs/development/index.html +3 -3
  424. package/docs/development/internals/README.md +2 -0
  425. package/docs/development/internals/approvals.md +257 -0
  426. package/docs/development/internals/architecture.md +68 -4
  427. package/docs/development/internals/memory.md +1 -1
  428. package/docs/development/internals/runtime.md +2 -1
  429. package/docs/development/internals/session-routing.md +1 -1
  430. package/docs/development/reference/commands.md +17 -1
  431. package/docs/development/reference/configuration.md +18 -6
  432. package/docs/docs/index.html +3 -3
  433. package/docs/index.html +21 -21
  434. package/docs/static/docs.js +84 -20
  435. package/package.json +3 -1
  436. package/presets/brave.yaml +13 -0
  437. package/presets/discord.yaml +13 -0
  438. package/presets/github.yaml +18 -0
  439. package/presets/huggingface.yaml +13 -0
  440. package/presets/jira.yaml +13 -0
  441. package/presets/npm.yaml +13 -0
  442. package/presets/outlook.yaml +13 -0
  443. package/presets/pypi.yaml +13 -0
  444. package/presets/slack.yaml +13 -0
  445. package/skills/hybridclaw-help/SKILL.md +6 -6
  446. package/skills/pdf/SKILL.md +13 -0
  447. package/skills/pdf/reference.md +26 -0
  448. package/skills/pdf/scripts/create_pdf.mjs +127 -0
  449. package/skills/salesforce/SKILL.md +145 -0
  450. package/skills/salesforce/agents/openai.yaml +4 -0
  451. package/skills/salesforce/references/metadata-and-queries.md +109 -0
  452. package/skills/salesforce/scripts/__pycache__/salesforce_query.cpython-314.pyc +0 -0
  453. package/skills/salesforce/scripts/salesforce_query.py +892 -0
  454. package/skills/xlsx/SKILL.md +32 -3
  455. package/skills/xlsx/scripts/create_xlsx.cjs +251 -0
  456. package/templates/README.md +1 -1
  457. package/console/dist/assets/index-Bkj0YVZ5.js +0 -23
  458. package/console/dist/assets/index-DOYcGDs8.css +0 -1
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
@@ -363,7 +364,7 @@ When the user says "bump release":
363
364
  - Do not include personal identity, real phone numbers, or live config values
364
365
  in tests, examples, docs, or commits.
365
366
  - Do not edit `.dockerignore` without verifying the resulting Docker image
366
- still contains all runtime-required files (especially `docs/development/`).
367
+ still contains all runtime-required files (especially `docs/content/`).
367
368
  Build the image and confirm the affected paths exist inside it before
368
369
  marking the change complete.
369
370
  - Do not edit `node_modules/` or vendored files.
@@ -406,7 +407,7 @@ When multiple agents may be working on this repo concurrently:
406
407
  | `CONTRIBUTING.md` | Human contributors | Quickstart, PR workflow |
407
408
  | `SECURITY.md` | Security reviewers | Runtime security controls |
408
409
  | `TRUST_MODEL.md` | Operators | Trust acceptance policy |
409
- | `docs/development/` | Maintainers | Architecture, runtime, testing |
410
+ | `docs/content/` | Maintainers | User docs, developer guide, reference |
410
411
  | `templates/*.md` | Product runtime | Agent workspace bootstrap |
411
412
 
412
413
  ---
package/CHANGELOG.md CHANGED
@@ -1,6 +1,122 @@
1
1
  # Changelog
2
2
 
3
- ## [Coming up]
3
+ ## [0.12.6](https://github.com/HybridAIOne/hybridclaw/tree/v0.12.6)
4
+
5
+ ### Added
6
+
7
+ - **Twilio voice channel**: Added a built-in Twilio ConversationRelay phone
8
+ channel with inbound webhook handling, outbound `hybridclaw gateway voice
9
+ call <number>` support, admin-console setup, and a dedicated setup and
10
+ troubleshooting guide.
11
+ - **Salesforce skill**: New bundled skill for enterprise CRM integration with
12
+ OAuth token binding, a dedicated `secret` CLI surface for credential
13
+ management, and hardened field-level configuration.
14
+ - **Local skill import**: `skill import` now accepts local filesystem
15
+ directories and `.zip` archives as sources, with persistent import-source
16
+ markers so locally-imported skills retain personal trust across restarts.
17
+ - **Admin approvals policy console**: New `/admin/approvals` interface for
18
+ viewing and managing approval policies from the browser.
19
+ - **Console chat UI**: Migrated the legacy standalone chat UI into the console
20
+ React app with unified channels selection and improved upstream error
21
+ handling.
22
+ - **Doctor resource hygiene**: `hybridclaw doctor` now includes a resource
23
+ hygiene maintenance pass that detects and cleans stale gateway artifacts,
24
+ with cached DB snapshots and disk-state diffing for efficient checks.
25
+ - **Fetch Email-Config button**: The admin email channel editor includes a
26
+ one-click button to fetch and validate HybridAI mailbox credentials.
27
+ - **XLSX skill creation script**: Bundled creation script prevents silent
28
+ generation failures when the xlsx skill produces spreadsheet output.
29
+ - **ToggleGroup component**: New `ToggleGroup` / `ToggleGroupItem` UI
30
+ primitive used across the admin console for binary-toggle controls.
31
+ - **Provider health panel**: Inline login action and inactive-provider
32
+ collapse in the admin console for quicker provider triage.
33
+
34
+ ### Changed
35
+
36
+ - **Per-channel instructions in `/admin/channels`**: The admin console now
37
+ lets operators edit transport-specific prompt guidance, and runtime config
38
+ exposes the same values under `channelInstructions.*` so channels such as
39
+ voice can enforce spoken-output rules without editing prompt files directly.
40
+ - **OAuth token domain binding**: Bearer tokens are now bound to their OAuth
41
+ issuer domain to prevent cross-domain exfiltration, and the gateway proxy
42
+ auto-captures tokens using config constants instead of raw environment
43
+ variables.
44
+ - **Secret CLI simplification**: Removed the `[--raw]` option from
45
+ `secret show` and `secret set`, streamlining the operator-facing surface.
46
+ - **CI pipeline split**: Unit tests now run as parallel lint and test jobs
47
+ with a shared `setup-node-workspace` composite action and PR-level
48
+ concurrency groups that cancel stale runs.
49
+ - **Security scanner hints**: Block messages now include actionable override
50
+ hints so operators understand how to respond to policy violations.
51
+ - **DRY provider utilities**: Refactored model-matching and `agentId`
52
+ normalization into shared provider utilities with prefix-aware matching.
53
+
54
+ ### Fixed
55
+
56
+ - **Voice approval and relay handling**: Spoken approval replies normalize more
57
+ reliably, voice turns skip the usual yellow implicit wait, and the Twilio
58
+ relay path handles disconnect, interrupt, and runtime-unavailable cases more
59
+ cleanly instead of dropping into noisier failure states.
60
+ - **Memory-flush pool slot leak**: Host processes spawned during memory-flush
61
+ no longer leak worker pool slots, and empty sessions are cleaned up
62
+ automatically.
63
+ - **Stream terminated retry**: Terminated stream errors are now retried
64
+ correctly, preserving PDF creation workflows across transport retries.
65
+ - **Skill scanning and promotion**: Runtime-created skills in agent workspace
66
+ directories now appear in `/skill list` and are promoted to the managed
67
+ directory on save.
68
+ - **Teams webhook resilience**: Missing Teams credentials on incoming webhook
69
+ requests are handled gracefully instead of crashing the handler.
70
+ - **AuthProvider callback stability**: Stabilized React `AuthProvider`
71
+ callbacks with memoized context values to prevent unnecessary re-renders.
72
+ - **Upstream error mapping**: Nested HybridAI error payloads are unwrapped
73
+ and mapped to `502` responses to avoid gateway auth confusion, with
74
+ `no-store` cache headers on error responses.
75
+ - **Skip-skill-scan persistence**: The `--skip-skill-scan` CLI decision is
76
+ now persisted so the runtime guard honors it across restarts.
77
+
78
+ ## [0.12.5](https://github.com/HybridAIOne/hybridclaw/tree/v0.12.5)
79
+
80
+ ### Added
81
+
82
+ - **Admin agent file editor**: The admin console now includes `/admin/agents`
83
+ for editing each registered agent's allowlisted workspace bootstrap markdown
84
+ files, with saved revision history and restore controls.
85
+
86
+ ### Changed
87
+
88
+ - **Local TUI approval workflow**: Pending approvals in `hybridclaw tui` open a
89
+ keyboard-driven picker with `Up`/`Down` navigation, `Enter` confirmation,
90
+ number-key quick select, `Esc` to skip, and a text fallback for
91
+ non-interactive terminals.
92
+ - **Admin destructive-action confirmations**: Browser-based operator flows now
93
+ use explicit confirmation dialogs for destructive actions so restarts,
94
+ deletes, and similar changes require a deliberate confirm step.
95
+
96
+ ### Fixed
97
+
98
+ - **TUI approval replay handling**: Replayed or restated approval prompts reuse
99
+ cached approval details more reliably, and web `/approve` flows preserve
100
+ pending-approval metadata so follow-up approvals reopen the same picker
101
+ instead of dropping back to raw text.
102
+ - **TUI exit summaries**: Exit output either shows the remote usage/tool/file
103
+ totals for the session or an explicit unavailable summary, and gateway
104
+ history breakdowns resolve canonical TUI session ids consistently for
105
+ tool/file counts.
106
+ - **Invalid runtime-config recovery**: Interactive onboarding can restore the
107
+ last known-good saved config snapshot, or roll back to the newest saved
108
+ revision, when `config.json` becomes invalid JSON instead of leaving setup
109
+ stuck on in-memory defaults.
110
+ - **Transport retry backoff**: Retry-aware channel transports honor
111
+ service-provided `Retry-After` delays and reject invalid retry values early
112
+ instead of silently retrying with bad timing.
113
+ - **Email first-sync cursor handling**: The built-in email transport seeds a
114
+ missing mailbox cursor from the current mailbox head so old inbox mail is not
115
+ replayed as new traffic on first startup, while later restarts still deliver
116
+ mail that arrived while the gateway was offline.
117
+ - **WhatsApp startup reliability**: The built-in WhatsApp transport disables
118
+ Baileys init queries that can trigger intermittent `400`/`bad-request`
119
+ failures during startup and pairing.
4
120
 
5
121
  ## [0.12.4](https://github.com/HybridAIOne/hybridclaw/tree/v0.12.4)
6
122
 
@@ -19,24 +135,12 @@
19
135
  - **Admin console dialog and toast UX**: Replaced inline banners with
20
136
  accessible dialog/toast primitives, tightened scheduler and jobs feedback
21
137
  flows, and refined the mobile topbar/sidebar interaction.
22
- - **Per-agent skill filtering**: Agent `skills` settings now narrow the
138
+ - **Per-agent skill filtering**: Agent `skills` settings narrow the
23
139
  globally enabled skill set, while omitting `skills` keeps the existing
24
140
  global scope for backward compatibility.
25
141
  - **Approval presentation across channels**: Gateway approval copy and channel
26
- actions now render more consistently, preserve approval ids correctly, and
27
- align Discord and Slack approval flows more closely.
28
-
29
- ### Fixed
30
-
31
- - **Slack slash-command ergonomics**: Slack slash commands use shorter
32
- `/hc-*` names, keep runtime command coverage aligned with the shipped
33
- manifest, and avoid review regressions in channel setup/documentation flows.
34
- - **Scheduler delivery state reporting**: One-shot deliveries now report retry
35
- and review outcomes more clearly instead of leaving ambiguous scheduler state
36
- after gateway or console handoff.
37
- - **Console accessibility edge cases**: Toast and dialog flows now keep
38
- backdrops interactive, ignore closed dialogs in Escape-key handling, and
39
- harden focus/visibility coordination during layered UI interactions.
142
+ actions render more consistently across Discord, Slack, and
143
+ gateway-managed approval surfaces.
40
144
 
41
145
  ## [0.12.3](https://github.com/HybridAIOne/hybridclaw/tree/v0.12.3)
42
146
 
package/README.md CHANGED
@@ -19,9 +19,28 @@ 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
+
26
+ [Quick Start](https://www.hybridclaw.io/docs/getting-started/quickstart) ·
27
+ [Installation](https://www.hybridclaw.io/docs/getting-started/installation) ·
28
+ [Configuration](https://www.hybridclaw.io/docs/reference/configuration) ·
29
+ [Migration](https://www.hybridclaw.io/docs/reference/commands#migration) ·
30
+ [Contributing](./CONTRIBUTING.md) ·
31
+ [Support](./SUPPORT.md)
32
+
33
+ ## Pick your path
34
+
35
+ - Want the shortest path to a running assistant? Start with
36
+ [Quick Start](https://www.hybridclaw.io/docs/getting-started/quickstart).
37
+ - Want the full setup flow with providers, channels, and admin surfaces? Start
38
+ with [Installation](https://www.hybridclaw.io/docs/getting-started/installation)
39
+ and [Authentication](https://www.hybridclaw.io/docs/getting-started/authentication).
40
+ - Want to migrate from OpenClaw or Hermes? Start with the
41
+ [migration commands](https://www.hybridclaw.io/docs/reference/commands#migration).
42
+ - Want to contribute from source? Start with [CONTRIBUTING.md](./CONTRIBUTING.md)
43
+ and the maintainer docs under [docs/content/README.md](./docs/content/README.md).
25
44
 
26
45
  ## Coming from OpenClaw or Hermes?
27
46
 
@@ -58,7 +77,8 @@ hybridclaw tui
58
77
  Open locally:
59
78
 
60
79
  - Chat UI: `http://127.0.0.1:9090/chat`
61
- - Admin UI: `http://127.0.0.1:9090/admin` for channels, scheduler, audit, and config
80
+ - Admin UI: `http://127.0.0.1:9090/admin` for channels, versioned agent files,
81
+ scheduler, audit, config, and channel-specific instructions
62
82
  - Agents UI: `http://127.0.0.1:9090/agents`
63
83
  - OpenAI-compatible API: `http://127.0.0.1:9090/v1/models` and `http://127.0.0.1:9090/v1/chat/completions`
64
84
 
@@ -73,10 +93,34 @@ operator and maintainer manual lives at
73
93
  Once the gateway is running, open HybridClaw locally:
74
94
 
75
95
  - Web Chat: `http://127.0.0.1:9090/chat`
76
- - Admin Console: `http://127.0.0.1:9090/admin` for channels, scheduler, audit, and config
96
+ - Admin Console: `http://127.0.0.1:9090/admin` for channels, versioned agent files,
97
+ scheduler, audit, config, and channel-specific instructions
77
98
  - Agent Dashboard: `http://127.0.0.1:9090/agents`
78
99
  - or connect Slack, WhatsApp, Telegram, Discord, Microsoft Teams, Email
79
100
 
101
+ ## Operator workflows
102
+
103
+ - `/admin/agents` edits allowlisted bootstrap markdown files such as
104
+ `AGENTS.md`, keeps saved revisions, and restores earlier versions from the
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.
110
+ - `hybridclaw tui` includes a keyboard-driven approval picker and prints a
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.
114
+ - `hybridclaw onboarding` and related local setup flows can restore the last
115
+ known-good saved config snapshot or roll back to a tracked revision when
116
+ `config.json` becomes invalid.
117
+ - `hybridclaw skill import` supports community sources, local directories,
118
+ and `.zip` archives.
119
+ - Channel delivery stays predictable: email seeds its first mailbox cursor from
120
+ the current head instead of replaying old inbox mail, retry-aware transports
121
+ honor server `Retry-After` backoff, and WhatsApp startup avoids intermittent
122
+ init-query bad-request failures.
123
+
80
124
  ## How HybridClaw compares
81
125
 
82
126
  | Capability | HybridClaw | OpenClaw | Hermes Agent |
@@ -111,6 +155,7 @@ Once the gateway is running, open HybridClaw locally:
111
155
  ## Built for real workflows
112
156
 
113
157
  - channels
158
+ - versioned agent workspace prompt files with saved revisions and restore
114
159
  - browser sessions
115
160
  - office docs
116
161
  - skills / plugins / MCP
@@ -124,10 +169,11 @@ Once the gateway is running, open HybridClaw locally:
124
169
 
125
170
  ## Architecture
126
171
 
127
- - **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
172
+ - **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
128
173
  - **TUI client** — thin client over HTTP (`/api/chat`, `/api/command`) with
129
174
  a structured startup banner that surfaces model, sandbox, gateway, and
130
- chatbot context before the first prompt
175
+ chatbot context before the first prompt, an interactive approval picker for
176
+ pending approvals, and an exit summary with a ready-to-run resume command
131
177
  - **Container** (Docker, ephemeral) — HybridAI API client, sandboxed tool executor, and preinstalled browser automation runtime with cursor-aware snapshots for JS-heavy custom UI
132
178
  - Communication via file-based IPC (input.json / output.json)
133
179
 
@@ -141,8 +187,8 @@ Browse the full manual at
141
187
  [Authentication](https://www.hybridclaw.io/docs/getting-started/authentication), and
142
188
  [Quick Start](https://www.hybridclaw.io/docs/getting-started/quickstart)
143
189
  - Enterprise deployment:
144
- [Runtime Internals](https://www.hybridclaw.io/docs/internals/runtime) and
145
- [Architecture](https://www.hybridclaw.io/docs/internals/architecture)
190
+ [Runtime Internals](https://www.hybridclaw.io/docs/developer-guide/runtime) and
191
+ [Architecture](https://www.hybridclaw.io/docs/developer-guide/architecture)
146
192
  - Operations:
147
193
  [Remote Access](https://www.hybridclaw.io/docs/guides/remote-access)
148
194
  - Security:
@@ -151,10 +197,16 @@ Browse the full manual at
151
197
  [Commands: Migration](https://www.hybridclaw.io/docs/reference/commands#migration) and
152
198
  [FAQ](https://www.hybridclaw.io/docs/reference/faq#can-i-migrate-an-existing-openclaw-or-hermes-agent-home)
153
199
  - Channels:
154
- [Channel Setup](https://www.hybridclaw.io/docs/getting-started/channels),
155
- [Slack](https://www.hybridclaw.io/docs/slack),
156
- [iMessage](https://www.hybridclaw.io/docs/imessage), and
157
- [MS Teams](https://www.hybridclaw.io/docs/msteams)
200
+ [Connect Your First Channel](https://www.hybridclaw.io/docs/getting-started/first-channel),
201
+ [Overview](https://www.hybridclaw.io/docs/channels/overview),
202
+ [Twilio Voice](https://www.hybridclaw.io/docs/guides/twilio-voice),
203
+ [Discord](https://www.hybridclaw.io/docs/channels/discord),
204
+ [Slack](https://www.hybridclaw.io/docs/channels/slack),
205
+ [Telegram](https://www.hybridclaw.io/docs/channels/telegram),
206
+ [Email](https://www.hybridclaw.io/docs/channels/email),
207
+ [WhatsApp](https://www.hybridclaw.io/docs/channels/whatsapp),
208
+ [iMessage](https://www.hybridclaw.io/docs/channels/imessage), and
209
+ [Microsoft Teams](https://www.hybridclaw.io/docs/channels/msteams)
158
210
  - Skills and plugins:
159
211
  [Extensibility](https://www.hybridclaw.io/docs/extensibility),
160
212
  [Bundled Skills](https://www.hybridclaw.io/docs/guides/bundled-skills),
@@ -171,20 +223,27 @@ Browse the full manual at
171
223
 
172
224
  ## Contributing
173
225
 
174
- Mini quick start:
226
+ Contributor quick start:
175
227
 
176
228
  ```bash
177
229
  npm install
178
230
  npm run setup
179
231
  npm run build
232
+ npm run typecheck
233
+ npm run test:unit
180
234
  ```
181
235
 
182
236
  Use `npm run typecheck`, `npm run lint`, and targeted tests for code changes.
183
- For docs-only changes, verify links, commands, and examples. See
184
- [CONTRIBUTING.md](./CONTRIBUTING.md) for the full workflow and check matrix.
237
+ For docs-only changes, verify links, commands, and examples. GitHub issue forms
238
+ cover bug reports, setup help, feature requests, and docs fixes, and the PR
239
+ template asks for validation and scope boundaries up front. See
240
+ [CONTRIBUTING.md](./CONTRIBUTING.md) for the full workflow, check matrix, and
241
+ community guidance.
185
242
 
186
243
  ## Community
187
244
 
188
245
  - Discord: [discord.gg/jsVW4vJw27](https://discord.gg/jsVW4vJw27)
189
246
  - Issues: [github.com/HybridAIOne/hybridclaw/issues](https://github.com/HybridAIOne/hybridclaw/issues)
190
247
  - Discussions: [github.com/HybridAIOne/hybridclaw/discussions](https://github.com/HybridAIOne/hybridclaw/discussions)
248
+ - Support guide: [SUPPORT.md](./SUPPORT.md)
249
+ - Community standards: [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md)
package/SECURITY.md CHANGED
@@ -20,7 +20,7 @@ System prompts include safety constraints for every conversation turn:
20
20
  - Do not exfiltrate credentials, tokens, or private keys.
21
21
  - Prefer least-privilege actions and avoid destructive operations without explicit intent.
22
22
 
23
- Implementation: [src/prompt-hooks.ts](./src/prompt-hooks.ts)
23
+ Implementation: [src/agent/prompt-hooks.ts](./src/agent/prompt-hooks.ts)
24
24
 
25
25
  ### 1.1) Browser Authentication Flows
26
26
 
@@ -67,7 +67,8 @@ Tool execution runs inside Docker with sandbox constraints:
67
67
  - controlled workspace/IPC mounts
68
68
  - additional mount allowlist validation
69
69
 
70
- Implementation: [src/container-runner.ts](./src/container-runner.ts), [src/mount-security.ts](./src/mount-security.ts)
70
+ Implementation: [src/infra/container-runner.ts](./src/infra/container-runner.ts),
71
+ [src/security/mount-security.ts](./src/security/mount-security.ts)
71
72
 
72
73
  ### 4) Session Isolation
73
74
 
@@ -123,3 +124,20 @@ If compromise is suspected:
123
124
  3. Review mount allowlist, workspace files, and `sessionRouting.identityLinks`.
124
125
  4. Inspect denied/authorization events with `hybridclaw audit approvals --denied`.
125
126
  5. Validate audit integrity with `hybridclaw audit verify`.
127
+
128
+ ## Reporting A Vulnerability
129
+
130
+ Do not report security vulnerabilities in public GitHub issues or Discussions.
131
+
132
+ Report vulnerabilities privately to
133
+ [support@hybridai.one](mailto:support@hybridai.one?subject=HybridClaw%20security%20report)
134
+ with:
135
+
136
+ - affected HybridClaw version
137
+ - deployment details and operating system
138
+ - reproduction steps or proof-of-concept
139
+ - impact assessment
140
+ - suggested mitigation if you have one
141
+
142
+ Please redact secrets, tokens, and personal data from any attached logs or
143
+ screenshots.
@@ -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",
@@ -459,6 +489,29 @@
459
489
  },
460
490
  "scheduler": {
461
491
  "jobs": [
492
+ {
493
+ "id": "resource-hygiene",
494
+ "name": "Resource Hygiene",
495
+ "description": "Runs conservative doctor-based resource hygiene twice daily and auto-applies only safe cleanup.",
496
+ "schedule": {
497
+ "kind": "every",
498
+ "at": null,
499
+ "everyMs": 43200000,
500
+ "expr": null,
501
+ "tz": "UTC"
502
+ },
503
+ "action": {
504
+ "kind": "system_event",
505
+ "message": "resource_hygiene_maintenance"
506
+ },
507
+ "delivery": {
508
+ "kind": "last-channel",
509
+ "channel": "",
510
+ "to": "",
511
+ "webhookUrl": ""
512
+ },
513
+ "enabled": true
514
+ },
462
515
  {
463
516
  "id": "morning-standup",
464
517
  "name": "Daily Standup Report",