@poolzin/pool-bot 2026.2.21 → 2026.2.23

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 (378) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/agents/api-key-rotation.js +47 -0
  3. package/dist/agents/apply-patch-update.js +19 -9
  4. package/dist/agents/apply-patch.js +72 -47
  5. package/dist/agents/bash-tools.exec.js +141 -559
  6. package/dist/agents/cli-backends.js +49 -6
  7. package/dist/agents/cli-runner/helpers.js +69 -152
  8. package/dist/agents/cli-runner.js +70 -19
  9. package/dist/agents/identity.js +20 -1
  10. package/dist/agents/image-sanitization.js +9 -0
  11. package/dist/agents/live-auth-keys.js +123 -26
  12. package/dist/agents/live-model-filter.js +13 -4
  13. package/dist/agents/model-catalog.js +40 -9
  14. package/dist/agents/model-forward-compat.js +60 -23
  15. package/dist/agents/model-selection.js +134 -41
  16. package/dist/agents/pi-auth-json.js +2 -2
  17. package/dist/agents/pi-embedded-helpers/bootstrap.js +65 -15
  18. package/dist/agents/pi-embedded-helpers/errors.js +140 -15
  19. package/dist/agents/pi-embedded-helpers/images.js +22 -12
  20. package/dist/agents/pi-embedded-helpers.js +2 -2
  21. package/dist/agents/pi-embedded-runner/abort.js +10 -3
  22. package/dist/agents/pi-embedded-runner/compact.js +230 -32
  23. package/dist/agents/pi-embedded-runner/extra-params.js +203 -12
  24. package/dist/agents/pi-embedded-runner/google.js +109 -19
  25. package/dist/agents/pi-embedded-runner/history.js +35 -17
  26. package/dist/agents/pi-embedded-runner/run/attempt.js +386 -95
  27. package/dist/agents/pi-embedded-runner/run/images.js +81 -55
  28. package/dist/agents/pi-embedded-runner/run/payloads.js +89 -39
  29. package/dist/agents/pi-embedded-runner/run.js +193 -25
  30. package/dist/agents/pi-embedded-runner/run.overflow-compaction.mocks.shared.js +2 -2
  31. package/dist/agents/pi-embedded-runner/runs.js +17 -8
  32. package/dist/agents/pi-embedded-runner/tool-result-context-guard.js +262 -0
  33. package/dist/agents/pi-embedded-runner.js +1 -1
  34. package/dist/agents/pi-embedded-subscribe.handlers.tools.js +180 -10
  35. package/dist/agents/pi-embedded-subscribe.js +37 -0
  36. package/dist/agents/pi-embedded-subscribe.tools.js +127 -30
  37. package/dist/agents/pi-model-discovery.js +9 -2
  38. package/dist/agents/pi-tool-definition-adapter.js +60 -8
  39. package/dist/agents/pi-tools.before-tool-call.js +1 -1
  40. package/dist/agents/pi-tools.js +113 -94
  41. package/dist/agents/pi-tools.read.js +337 -38
  42. package/dist/agents/poolbot-tools.js +14 -5
  43. package/dist/agents/sandbox/docker.js +10 -5
  44. package/dist/agents/sandbox/registry.js +96 -46
  45. package/dist/agents/sandbox/sanitize-env-vars.js +82 -0
  46. package/dist/agents/sandbox-paths.js +43 -10
  47. package/dist/agents/session-tool-result-guard-wrapper.js +23 -11
  48. package/dist/agents/session-tool-result-guard.js +39 -39
  49. package/dist/agents/session-transcript-repair.js +36 -33
  50. package/dist/agents/session-write-lock.js +62 -44
  51. package/dist/agents/skills/frontmatter.js +49 -88
  52. package/dist/agents/skills/workspace.js +335 -28
  53. package/dist/agents/subagent-announce.js +508 -174
  54. package/dist/agents/subagent-registry.js +45 -4
  55. package/dist/agents/subagent-spawn.js +16 -33
  56. package/dist/agents/system-prompt-report.js +27 -10
  57. package/dist/agents/system-prompt.js +26 -32
  58. package/dist/agents/tool-call-id.js +69 -17
  59. package/dist/agents/tool-display-common.js +1 -1
  60. package/dist/agents/tool-images.js +64 -31
  61. package/dist/agents/tools/canvas-tool.js +17 -11
  62. package/dist/agents/tools/common.js +37 -19
  63. package/dist/agents/tools/cron-tool.js +40 -38
  64. package/dist/agents/tools/gateway.js +70 -2
  65. package/dist/agents/tools/message-tool.js +181 -40
  66. package/dist/agents/tools/nodes-tool.js +128 -36
  67. package/dist/agents/tools/nodes-utils.js +12 -38
  68. package/dist/agents/tools/session-status-tool.js +24 -71
  69. package/dist/agents/tools/sessions-helpers.js +38 -210
  70. package/dist/agents/tools/sessions-spawn-tool.js +28 -198
  71. package/dist/agents/tools/telegram-actions.js +58 -7
  72. package/dist/agents/tools/web-fetch-utils.js +112 -7
  73. package/dist/agents/tools/web-fetch.js +279 -175
  74. package/dist/agents/tools/web-shared.js +71 -8
  75. package/dist/agents/usage.js +25 -16
  76. package/dist/auto-reply/commands-registry.data.js +85 -11
  77. package/dist/auto-reply/dispatch.js +40 -21
  78. package/dist/auto-reply/reply/abort.js +102 -33
  79. package/dist/auto-reply/reply/commands-core.js +82 -33
  80. package/dist/auto-reply/reply/commands-export-session.js +1 -1
  81. package/dist/auto-reply/reply/commands-info.js +41 -12
  82. package/dist/auto-reply/reply/commands-subagents.js +352 -100
  83. package/dist/auto-reply/reply/commands-system-prompt.js +2 -2
  84. package/dist/auto-reply/reply/dispatch-from-config.js +100 -29
  85. package/dist/auto-reply/reply/elevated-unavailable.js +1 -1
  86. package/dist/auto-reply/reply/inbound-meta.js +12 -1
  87. package/dist/auto-reply/reply/mentions.js +18 -11
  88. package/dist/auto-reply/reply/normalize-reply.js +17 -8
  89. package/dist/auto-reply/reply/reply-dispatcher.js +62 -10
  90. package/dist/auto-reply/reply/session.js +102 -21
  91. package/dist/auto-reply/reply/streaming-directives.js +16 -5
  92. package/dist/auto-reply/status.js +73 -50
  93. package/dist/browser/extension-relay.js +3 -3
  94. package/dist/browser/http-auth.js +1 -1
  95. package/dist/browser/paths.js +2 -2
  96. package/dist/build-info.json +3 -3
  97. package/dist/channels/allowlist-match.js +20 -0
  98. package/dist/channels/allowlists/resolve-utils.js +65 -2
  99. package/dist/channels/chat-type.js +8 -4
  100. package/dist/channels/dock.js +127 -35
  101. package/dist/channels/draft-stream-loop.js +6 -2
  102. package/dist/channels/plugins/actions/telegram.js +42 -18
  103. package/dist/channels/plugins/allowlist-match.js +1 -1
  104. package/dist/channels/plugins/group-mentions.js +51 -41
  105. package/dist/channels/plugins/message-action-names.js +2 -0
  106. package/dist/channels/plugins/message-actions.js +24 -5
  107. package/dist/channels/plugins/normalize/discord.js +26 -4
  108. package/dist/channels/plugins/normalize/signal.js +35 -22
  109. package/dist/channels/plugins/onboarding/helpers.js +8 -26
  110. package/dist/channels/plugins/outbound/imessage.js +15 -14
  111. package/dist/channels/registry.js +20 -7
  112. package/dist/cli/acp-cli.js +7 -5
  113. package/dist/cli/browser-cli-extension.js +25 -12
  114. package/dist/cli/browser-cli-state.cookies-storage.js +25 -6
  115. package/dist/cli/browser-cli-state.js +101 -145
  116. package/dist/cli/command-options.js +28 -0
  117. package/dist/cli/completion-cli.js +6 -6
  118. package/dist/cli/cron-cli/register.cron-add.js +25 -1
  119. package/dist/cli/cron-cli/register.cron-edit.js +44 -0
  120. package/dist/cli/cron-cli/shared.js +7 -1
  121. package/dist/cli/daemon-cli/lifecycle-core.js +23 -21
  122. package/dist/cli/daemon-cli/lifecycle.js +23 -247
  123. package/dist/cli/daemon-cli/register-service-commands.js +25 -4
  124. package/dist/cli/daemon-cli.js +1 -0
  125. package/dist/cli/devices-cli.js +33 -20
  126. package/dist/cli/gateway-cli/register.js +37 -105
  127. package/dist/cli/gateway-cli/run.js +49 -11
  128. package/dist/cli/nodes-camera.js +59 -4
  129. package/dist/cli/nodes-cli/register.camera.js +27 -24
  130. package/dist/cli/nodes-cli/rpc.js +21 -38
  131. package/dist/cli/qr-cli.js +2 -2
  132. package/dist/cli/skills-cli.format.js +2 -2
  133. package/dist/cli/update-cli/progress.js +2 -2
  134. package/dist/cli/update-cli/restart-helper.js +28 -7
  135. package/dist/cli/update-cli/shared.js +7 -7
  136. package/dist/cli/update-cli/status.js +1 -1
  137. package/dist/cli/update-cli/update-command.js +14 -8
  138. package/dist/cli/update-cli/wizard.js +2 -2
  139. package/dist/cli/update-cli.js +21 -1027
  140. package/dist/commands/auth-choice.apply.anthropic.js +10 -2
  141. package/dist/commands/channels/add-mutators.js +3 -35
  142. package/dist/commands/channels/add.js +39 -51
  143. package/dist/commands/config-validation.js +1 -1
  144. package/dist/commands/configure.gateway-auth.js +52 -15
  145. package/dist/commands/configure.gateway.js +84 -40
  146. package/dist/commands/doctor-completion.js +3 -3
  147. package/dist/commands/doctor-config-flow.js +536 -16
  148. package/dist/commands/doctor-gateway-services.js +103 -79
  149. package/dist/commands/doctor-memory-search.js +9 -9
  150. package/dist/commands/doctor-platform-notes.js +57 -30
  151. package/dist/commands/doctor-prompter.js +26 -15
  152. package/dist/commands/doctor-session-locks.js +1 -1
  153. package/dist/commands/doctor.js +21 -9
  154. package/dist/commands/model-picker.js +120 -95
  155. package/dist/commands/models/set.js +2 -21
  156. package/dist/commands/models/shared.js +65 -37
  157. package/dist/commands/onboard-helpers.js +81 -39
  158. package/dist/commands/openai-codex-oauth.js +1 -1
  159. package/dist/commands/sessions.js +52 -53
  160. package/dist/commands/status.summary.js +52 -34
  161. package/dist/commands/test-wizard-helpers.js +2 -2
  162. package/dist/config/defaults.js +79 -42
  163. package/dist/config/group-policy.js +50 -18
  164. package/dist/config/includes.js +37 -10
  165. package/dist/config/schema.help.js +5 -4
  166. package/dist/config/schema.hints.js +2 -2
  167. package/dist/config/schema.labels.js +1 -0
  168. package/dist/config/sessions/group.js +12 -11
  169. package/dist/config/sessions/paths.js +137 -11
  170. package/dist/config/sessions/store.js +185 -65
  171. package/dist/config/sessions/types.js +15 -1
  172. package/dist/config/sessions.js +1 -0
  173. package/dist/config/telegram-custom-commands.js +3 -2
  174. package/dist/config/types.js +2 -0
  175. package/dist/config/zod-schema.agent-defaults.js +6 -27
  176. package/dist/config/zod-schema.agent-runtime.js +171 -79
  177. package/dist/config/zod-schema.providers-core.js +138 -65
  178. package/dist/config/zod-schema.session.js +49 -22
  179. package/dist/control-ui/assets/index-HRr1grwl.js.map +1 -1
  180. package/dist/cron/isolated-agent/run.js +224 -57
  181. package/dist/cron/normalize.js +48 -45
  182. package/dist/cron/run-log.js +14 -0
  183. package/dist/cron/service/jobs.js +190 -28
  184. package/dist/cron/service/normalize.js +29 -11
  185. package/dist/cron/service/store.js +30 -44
  186. package/dist/cron/service/timer.js +182 -96
  187. package/dist/cron/service.js +3 -0
  188. package/dist/cron/stagger.js +37 -0
  189. package/dist/daemon/inspect.js +132 -92
  190. package/dist/daemon/runtime-paths.js +25 -4
  191. package/dist/daemon/service-audit.js +47 -16
  192. package/dist/discord/accounts.js +23 -20
  193. package/dist/discord/monitor/agent-components.js +1115 -219
  194. package/dist/discord/monitor/allow-list.js +114 -34
  195. package/dist/discord/monitor/listeners.js +204 -97
  196. package/dist/discord/monitor/message-handler.js +21 -10
  197. package/dist/discord/monitor/message-handler.preflight.js +195 -101
  198. package/dist/discord/monitor/message-handler.process.js +384 -123
  199. package/dist/discord/monitor/message-utils.js +86 -23
  200. package/dist/discord/monitor/native-command.js +77 -57
  201. package/dist/discord/monitor/provider.js +122 -117
  202. package/dist/discord/monitor/reply-context.js +20 -16
  203. package/dist/discord/monitor/reply-delivery.js +40 -8
  204. package/dist/discord/monitor/rest-fetch.js +22 -0
  205. package/dist/discord/monitor/threading.js +117 -24
  206. package/dist/discord/send.js +2 -1
  207. package/dist/discord/send.outbound.js +124 -11
  208. package/dist/discord/send.shared.js +112 -72
  209. package/dist/discord/voice-message.js +3 -3
  210. package/dist/gateway/auth.js +119 -44
  211. package/dist/gateway/call.js +76 -34
  212. package/dist/gateway/channel-health-monitor.js +57 -50
  213. package/dist/gateway/client.js +63 -29
  214. package/dist/gateway/control-ui-contract.js +1 -1
  215. package/dist/gateway/gateway-config-prompts.shared.js +2 -2
  216. package/dist/gateway/net.js +109 -1
  217. package/dist/gateway/protocol/index.js +5 -8
  218. package/dist/gateway/protocol/schema/agent.js +19 -1
  219. package/dist/gateway/protocol/schema/channels.js +21 -0
  220. package/dist/gateway/protocol/schema/cron.js +43 -30
  221. package/dist/gateway/protocol/schema/protocol-schemas.js +6 -11
  222. package/dist/gateway/protocol/schema/sessions.js +5 -1
  223. package/dist/gateway/protocol/schema.js +0 -1
  224. package/dist/gateway/server/presence-events.js +12 -0
  225. package/dist/gateway/server/ws-connection/message-handler.js +203 -212
  226. package/dist/gateway/server/ws-connection.js +58 -21
  227. package/dist/gateway/server-broadcast.js +18 -13
  228. package/dist/gateway/server-cron.js +177 -10
  229. package/dist/gateway/server-methods/agent-job.js +131 -38
  230. package/dist/gateway/server-methods/send.js +60 -14
  231. package/dist/gateway/server-methods/sessions.js +160 -96
  232. package/dist/gateway/server-methods/system.js +5 -7
  233. package/dist/gateway/server-methods-list.js +8 -0
  234. package/dist/gateway/server-methods.js +24 -8
  235. package/dist/gateway/server-node-events.js +278 -68
  236. package/dist/gateway/session-utils.fs.js +316 -75
  237. package/dist/gateway/session-utils.js +224 -70
  238. package/dist/gateway/sessions-patch.js +63 -20
  239. package/dist/gateway/test-temp-config.js +1 -1
  240. package/dist/gateway/tools-invoke-http.js +118 -70
  241. package/dist/gateway/ws-log.js +135 -107
  242. package/dist/hooks/frontmatter.js +36 -82
  243. package/dist/hooks/install.js +149 -139
  244. package/dist/hooks/internal-hooks.js +29 -4
  245. package/dist/hooks/plugin-hooks.js +2 -1
  246. package/dist/imessage/monitor/deliver.js +10 -4
  247. package/dist/imessage/monitor/monitor-provider.js +138 -375
  248. package/dist/imessage/monitor/runtime.js +4 -8
  249. package/dist/imessage/send.js +65 -19
  250. package/dist/infra/exec-approvals-allowlist.js +7 -0
  251. package/dist/infra/exec-approvals.js +35 -920
  252. package/dist/infra/exec-safe-bin-trust.js +64 -0
  253. package/dist/infra/heartbeat-runner.js +207 -134
  254. package/dist/infra/heartbeat-wake.js +183 -22
  255. package/dist/infra/install-source-utils.js +47 -0
  256. package/dist/infra/net/ssrf.js +170 -36
  257. package/dist/infra/outbound/deliver.js +224 -58
  258. package/dist/infra/outbound/message-action-spec.js +12 -5
  259. package/dist/infra/outbound/outbound-session.js +27 -25
  260. package/dist/infra/poolbot-root.js +32 -22
  261. package/dist/infra/ports.js +14 -11
  262. package/dist/infra/skills-remote.js +48 -37
  263. package/dist/infra/system-events.js +25 -11
  264. package/dist/infra/system-presence.js +26 -33
  265. package/dist/infra/tmp-poolbot-dir.js +81 -2
  266. package/dist/infra/wsl.js +37 -1
  267. package/dist/line/bot-message-context.js +163 -191
  268. package/dist/logging/subsystem.js +59 -22
  269. package/dist/markdown/ir.js +124 -50
  270. package/dist/media/store.js +1 -1
  271. package/dist/media-understanding/runner.entries.js +42 -25
  272. package/dist/media-understanding/runner.js +53 -488
  273. package/dist/memory/embeddings-gemini.js +53 -38
  274. package/dist/memory/manager-embedding-ops.js +48 -69
  275. package/dist/pairing/pairing-store.js +178 -119
  276. package/dist/plugin-sdk/index.js +34 -6
  277. package/dist/plugins/hooks.js +135 -14
  278. package/dist/plugins/install.js +190 -152
  279. package/dist/polls.js +11 -0
  280. package/dist/routing/resolve-route.js +190 -56
  281. package/dist/routing/session-key.js +38 -22
  282. package/dist/runtime.js +35 -9
  283. package/dist/security/audit-channel.js +1 -1
  284. package/dist/sessions/session-key-utils.js +29 -11
  285. package/dist/shared/frontmatter.js +5 -5
  286. package/dist/shared/node-list-types.js +1 -0
  287. package/dist/shared/string-normalization.js +15 -0
  288. package/dist/signal/monitor/event-handler.js +68 -36
  289. package/dist/signal/send.js +29 -37
  290. package/dist/slack/monitor/allow-list.js +10 -11
  291. package/dist/slack/monitor/commands.js +14 -3
  292. package/dist/slack/monitor/events/interactions.js +4 -4
  293. package/dist/slack/monitor/media.js +224 -16
  294. package/dist/slack/monitor/message-handler/dispatch.js +247 -13
  295. package/dist/slack/monitor/message-handler/prepare.js +128 -45
  296. package/dist/slack/monitor/slash.js +357 -144
  297. package/dist/slack/streaming.js +77 -0
  298. package/dist/telegram/accounts.js +40 -13
  299. package/dist/telegram/allowed-updates.js +3 -0
  300. package/dist/telegram/bot/delivery.js +129 -66
  301. package/dist/telegram/bot/helpers.js +136 -122
  302. package/dist/telegram/bot-handlers.js +600 -339
  303. package/dist/telegram/bot-message-context.js +115 -73
  304. package/dist/telegram/bot-message-dispatch.js +235 -104
  305. package/dist/telegram/bot-native-command-menu.js +3 -1
  306. package/dist/telegram/bot-native-commands.js +213 -193
  307. package/dist/telegram/bot.js +24 -132
  308. package/dist/telegram/draft-stream.js +84 -75
  309. package/dist/telegram/format.js +150 -6
  310. package/dist/telegram/send.js +415 -255
  311. package/dist/telegram/targets.js +21 -2
  312. package/dist/telegram/update-offset-store.js +19 -3
  313. package/dist/terminal/restore.js +5 -2
  314. package/dist/test-utils/fetch-mock.js +5 -0
  315. package/dist/version.js +18 -5
  316. package/dist/web/auto-reply/monitor/broadcast.js +7 -3
  317. package/dist/web/auto-reply/monitor/on-message.js +6 -3
  318. package/dist/web/inbound/media.js +34 -8
  319. package/dist/web/inbound/monitor.js +34 -17
  320. package/dist/web/inbound/send-api.js +18 -17
  321. package/dist/web/outbound.js +12 -5
  322. package/dist/wizard/clack-prompter.js +40 -7
  323. package/extensions/bluebubbles/package.json +1 -1
  324. package/extensions/copilot-proxy/package.json +1 -1
  325. package/extensions/device-pair/index.ts +2 -2
  326. package/extensions/diagnostics-otel/package.json +1 -1
  327. package/extensions/discord/package.json +1 -1
  328. package/extensions/feishu/package.json +1 -1
  329. package/extensions/google-antigravity-auth/package.json +1 -1
  330. package/extensions/google-gemini-cli-auth/package.json +1 -1
  331. package/extensions/googlechat/package.json +1 -1
  332. package/extensions/imessage/package.json +1 -1
  333. package/extensions/irc/package.json +1 -1
  334. package/extensions/irc/src/accounts.ts +1 -1
  335. package/extensions/irc/src/onboarding.ts +4 -4
  336. package/extensions/line/package.json +1 -1
  337. package/extensions/llm-task/package.json +1 -1
  338. package/extensions/lobster/package.json +1 -1
  339. package/extensions/matrix/CHANGELOG.md +10 -0
  340. package/extensions/matrix/package.json +1 -1
  341. package/extensions/mattermost/package.json +1 -1
  342. package/extensions/memory-core/package.json +1 -1
  343. package/extensions/memory-lancedb/package.json +1 -1
  344. package/extensions/minimax-portal-auth/package.json +1 -1
  345. package/extensions/msteams/CHANGELOG.md +10 -0
  346. package/extensions/msteams/package.json +1 -1
  347. package/extensions/nextcloud-talk/package.json +1 -1
  348. package/extensions/nostr/CHANGELOG.md +10 -0
  349. package/extensions/nostr/package.json +1 -1
  350. package/extensions/open-prose/package.json +1 -1
  351. package/extensions/openai-codex-auth/package.json +1 -1
  352. package/extensions/signal/package.json +1 -1
  353. package/extensions/slack/package.json +1 -1
  354. package/extensions/telegram/package.json +1 -1
  355. package/extensions/tlon/package.json +1 -1
  356. package/extensions/twitch/CHANGELOG.md +10 -0
  357. package/extensions/twitch/package.json +1 -1
  358. package/extensions/voice-call/CHANGELOG.md +10 -0
  359. package/extensions/voice-call/package.json +1 -1
  360. package/extensions/whatsapp/package.json +1 -1
  361. package/extensions/zalo/CHANGELOG.md +10 -0
  362. package/extensions/zalo/package.json +1 -1
  363. package/extensions/zalouser/CHANGELOG.md +10 -0
  364. package/extensions/zalouser/package.json +1 -1
  365. package/package.json +1 -1
  366. package/skills/apple-reminders/SKILL.md +100 -49
  367. package/skills/coding-agent/SKILL.md +34 -28
  368. package/skills/github/SKILL.md +131 -16
  369. package/skills/imsg/SKILL.md +112 -15
  370. package/skills/openhue/SKILL.md +101 -19
  371. package/skills/tmux/SKILL.md +111 -79
  372. package/skills/weather/SKILL.md +88 -25
  373. package/dist/agents/openclaw-tools.js +0 -151
  374. package/dist/agents/tool-security.js +0 -96
  375. package/dist/gateway/url-validation.js +0 -94
  376. package/dist/infra/openclaw-root.js +0 -109
  377. package/dist/infra/tmp-openclaw-dir.js +0 -81
  378. package/dist/media/path-sanitization.js +0 -78
@@ -1,30 +1,112 @@
1
1
  ---
2
2
  name: openhue
3
- description: Control Philips Hue lights/scenes via the OpenHue CLI.
3
+ description: Control Philips Hue lights and scenes via the OpenHue CLI.
4
4
  homepage: https://www.openhue.io/cli
5
- metadata: {"poolbot":{"emoji":"💡","requires":{"bins":["openhue"]},"install":[{"id":"brew","kind":"brew","formula":"openhue/cli/openhue-cli","bins":["openhue"],"label":"Install OpenHue CLI (brew)"}]}}
5
+ metadata:
6
+ {
7
+ "poolbot":
8
+ {
9
+ "emoji": "💡",
10
+ "requires": { "bins": ["openhue"] },
11
+ "install":
12
+ [
13
+ {
14
+ "id": "brew",
15
+ "kind": "brew",
16
+ "formula": "openhue/cli/openhue-cli",
17
+ "bins": ["openhue"],
18
+ "label": "Install OpenHue CLI (brew)",
19
+ },
20
+ ],
21
+ },
22
+ }
6
23
  ---
7
24
 
8
25
  # OpenHue CLI
9
26
 
10
- Use `openhue` to control Hue lights and scenes via a Hue Bridge.
27
+ Use `openhue` to control Philips Hue lights and scenes via a Hue Bridge.
11
28
 
12
- Setup
13
- - Discover bridges: `openhue discover`
14
- - Guided setup: `openhue setup`
29
+ ## When to Use
15
30
 
16
- Read
17
- - `openhue get light --json`
18
- - `openhue get room --json`
19
- - `openhue get scene --json`
31
+ ✅ **USE this skill when:**
20
32
 
21
- Write
22
- - Turn on: `openhue set light <id-or-name> --on`
23
- - Turn off: `openhue set light <id-or-name> --off`
24
- - Brightness: `openhue set light <id> --on --brightness 50`
25
- - Color: `openhue set light <id> --on --rgb #3399FF`
26
- - Scene: `openhue set scene <scene-id>`
33
+ - "Turn on/off the lights"
34
+ - "Dim the living room lights"
35
+ - "Set a scene" or "movie mode"
36
+ - Controlling specific Hue rooms or zones
37
+ - Adjusting brightness, color, or color temperature
27
38
 
28
- Notes
29
- - You may need to press the Hue Bridge button during setup.
30
- - Use `--room "Room Name"` when light names are ambiguous.
39
+ ## When NOT to Use
40
+
41
+ **DON'T use this skill when:**
42
+
43
+ - Non-Hue smart devices (other brands) → not supported
44
+ - HomeKit scenes or Shortcuts → use Apple's ecosystem
45
+ - TV or entertainment system control
46
+ - Thermostat or HVAC
47
+ - Smart plugs (unless Hue smart plugs)
48
+
49
+ ## Common Commands
50
+
51
+ ### List Resources
52
+
53
+ ```bash
54
+ openhue get light # List all lights
55
+ openhue get room # List all rooms
56
+ openhue get scene # List all scenes
57
+ ```
58
+
59
+ ### Control Lights
60
+
61
+ ```bash
62
+ # Turn on/off
63
+ openhue set light "Bedroom Lamp" --on
64
+ openhue set light "Bedroom Lamp" --off
65
+
66
+ # Brightness (0-100)
67
+ openhue set light "Bedroom Lamp" --on --brightness 50
68
+
69
+ # Color temperature (warm to cool: 153-500 mirek)
70
+ openhue set light "Bedroom Lamp" --on --temperature 300
71
+
72
+ # Color (by name or hex)
73
+ openhue set light "Bedroom Lamp" --on --color red
74
+ openhue set light "Bedroom Lamp" --on --rgb "#FF5500"
75
+ ```
76
+
77
+ ### Control Rooms
78
+
79
+ ```bash
80
+ # Turn off entire room
81
+ openhue set room "Bedroom" --off
82
+
83
+ # Set room brightness
84
+ openhue set room "Bedroom" --on --brightness 30
85
+ ```
86
+
87
+ ### Scenes
88
+
89
+ ```bash
90
+ # Activate scene
91
+ openhue set scene "Relax" --room "Bedroom"
92
+ openhue set scene "Concentrate" --room "Office"
93
+ ```
94
+
95
+ ## Quick Presets
96
+
97
+ ```bash
98
+ # Bedtime (dim warm)
99
+ openhue set room "Bedroom" --on --brightness 20 --temperature 450
100
+
101
+ # Work mode (bright cool)
102
+ openhue set room "Office" --on --brightness 100 --temperature 250
103
+
104
+ # Movie mode (dim)
105
+ openhue set room "Living Room" --on --brightness 10
106
+ ```
107
+
108
+ ## Notes
109
+
110
+ - Bridge must be on local network
111
+ - First run requires button press on Hue bridge to pair
112
+ - Colors only work on color-capable bulbs (not white-only)
@@ -1,121 +1,153 @@
1
1
  ---
2
2
  name: tmux
3
3
  description: Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output.
4
- metadata: {"poolbot":{"emoji":"🧵","os":["darwin","linux"],"requires":{"bins":["tmux"]}}}
4
+ metadata:
5
+ { "poolbot": { "emoji": "🧵", "os": ["darwin", "linux"], "requires": { "bins": ["tmux"] } } }
5
6
  ---
6
7
 
7
- # tmux Skill (Pool Bot)
8
+ # tmux Session Control
8
9
 
9
- Use tmux only when you need an interactive TTY. Prefer exec background mode for long-running, non-interactive tasks.
10
+ Control tmux sessions by sending keystrokes and reading output. Essential for managing Claude Code sessions.
10
11
 
11
- ## Quickstart (isolated socket, exec tool)
12
+ ## When to Use
12
13
 
13
- ```bash
14
- SOCKET_DIR="${CLAWDBOT_TMUX_SOCKET_DIR:-${TMPDIR:-/tmp}/poolbot-tmux-sockets}"
15
- mkdir -p "$SOCKET_DIR"
16
- SOCKET="$SOCKET_DIR/poolbot.sock"
17
- SESSION=poolbot-python
18
-
19
- tmux -S "$SOCKET" new -d -s "$SESSION" -n shell
20
- tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- 'PYTHON_BASIC_REPL=1 python3 -q' Enter
21
- tmux -S "$SOCKET" capture-pane -p -J -t "$SESSION":0.0 -S -200
22
- ```
14
+ ✅ **USE this skill when:**
23
15
 
24
- After starting a session, always print monitor commands:
16
+ - Monitoring Claude/Codex sessions in tmux
17
+ - Sending input to interactive terminal applications
18
+ - Scraping output from long-running processes in tmux
19
+ - Navigating tmux panes/windows programmatically
20
+ - Checking on background work in existing sessions
25
21
 
26
- ```
27
- To monitor:
28
- tmux -S "$SOCKET" attach -t "$SESSION"
29
- tmux -S "$SOCKET" capture-pane -p -J -t "$SESSION":0.0 -S -200
22
+ ## When NOT to Use
23
+
24
+ **DON'T use this skill when:**
25
+
26
+ - Running one-off shell commands → use `exec` tool directly
27
+ - Starting new background processes → use `exec` with `background:true`
28
+ - Non-interactive scripts → use `exec` tool
29
+ - The process isn't in tmux
30
+ - You need to create a new tmux session → use `exec` with `tmux new-session`
31
+
32
+ ## Example Sessions
33
+
34
+ | Session | Purpose |
35
+ | ----------------------- | --------------------------- |
36
+ | `shared` | Primary interactive session |
37
+ | `worker-2` - `worker-8` | Parallel worker sessions |
38
+
39
+ ## Common Commands
40
+
41
+ ### List Sessions
42
+
43
+ ```bash
44
+ tmux list-sessions
45
+ tmux ls
30
46
  ```
31
47
 
32
- ## Socket convention
48
+ ### Capture Output
33
49
 
34
- - Use `CLAWDBOT_TMUX_SOCKET_DIR` (default `${TMPDIR:-/tmp}/poolbot-tmux-sockets`).
35
- - Default socket path: `"$CLAWDBOT_TMUX_SOCKET_DIR/poolbot.sock"`.
50
+ ```bash
51
+ # Last 20 lines of pane
52
+ tmux capture-pane -t shared -p | tail -20
36
53
 
37
- ## Targeting panes and naming
54
+ # Entire scrollback
55
+ tmux capture-pane -t shared -p -S -
38
56
 
39
- - Target format: `session:window.pane` (defaults to `:0.0`).
40
- - Keep names short; avoid spaces.
41
- - Inspect: `tmux -S "$SOCKET" list-sessions`, `tmux -S "$SOCKET" list-panes -a`.
57
+ # Specific pane in window
58
+ tmux capture-pane -t shared:0.0 -p
59
+ ```
42
60
 
43
- ## Finding sessions
61
+ ### Send Keys
44
62
 
45
- - List sessions on your socket: `{baseDir}/scripts/find-sessions.sh -S "$SOCKET"`.
46
- - Scan all sockets: `{baseDir}/scripts/find-sessions.sh --all` (uses `CLAWDBOT_TMUX_SOCKET_DIR`).
63
+ ```bash
64
+ # Send text (doesn't press Enter)
65
+ tmux send-keys -t shared "hello"
66
+
67
+ # Send text + Enter
68
+ tmux send-keys -t shared "y" Enter
69
+
70
+ # Send special keys
71
+ tmux send-keys -t shared Enter
72
+ tmux send-keys -t shared Escape
73
+ tmux send-keys -t shared C-c # Ctrl+C
74
+ tmux send-keys -t shared C-d # Ctrl+D (EOF)
75
+ tmux send-keys -t shared C-z # Ctrl+Z (suspend)
76
+ ```
47
77
 
48
- ## Sending input safely
78
+ ### Window/Pane Navigation
49
79
 
50
- - Prefer literal sends: `tmux -S "$SOCKET" send-keys -t target -l -- "$cmd"`.
51
- - Control keys: `tmux -S "$SOCKET" send-keys -t target C-c`.
80
+ ```bash
81
+ # Select window
82
+ tmux select-window -t shared:0
52
83
 
53
- ## Watching output
84
+ # Select pane
85
+ tmux select-pane -t shared:0.1
54
86
 
55
- - Capture recent history: `tmux -S "$SOCKET" capture-pane -p -J -t target -S -200`.
56
- - Wait for prompts: `{baseDir}/scripts/wait-for-text.sh -t session:0.0 -p 'pattern'`.
57
- - Attaching is OK; detach with `Ctrl+b d`.
87
+ # List windows
88
+ tmux list-windows -t shared
89
+ ```
58
90
 
59
- ## Spawning processes
91
+ ### Session Management
60
92
 
61
- - For python REPLs, set `PYTHON_BASIC_REPL=1` (non-basic REPL breaks send-keys flows).
93
+ ```bash
94
+ # Create new session
95
+ tmux new-session -d -s newsession
62
96
 
63
- ## Windows / WSL
97
+ # Kill session
98
+ tmux kill-session -t sessionname
64
99
 
65
- - tmux is supported on macOS/Linux. On Windows, use WSL and install tmux inside WSL.
66
- - This skill is gated to `darwin`/`linux` and requires `tmux` on PATH.
100
+ # Rename session
101
+ tmux rename-session -t old new
102
+ ```
67
103
 
68
- ## Orchestrating Coding Agents (Codex, Claude Code)
104
+ ## Sending Input Safely
69
105
 
70
- tmux excels at running multiple coding agents in parallel:
106
+ For interactive TUIs (Claude Code, Codex, etc.), split text and Enter into separate sends to avoid paste/multiline edge cases:
71
107
 
72
108
  ```bash
73
- SOCKET="${TMPDIR:-/tmp}/codex-army.sock"
109
+ tmux send-keys -t shared -l -- "Please apply the patch in src/foo.ts"
110
+ sleep 0.1
111
+ tmux send-keys -t shared Enter
112
+ ```
74
113
 
75
- # Create multiple sessions
76
- for i in 1 2 3 4 5; do
77
- tmux -S "$SOCKET" new-session -d -s "agent-$i"
78
- done
114
+ ## Claude Code Session Patterns
79
115
 
80
- # Launch agents in different workdirs
81
- tmux -S "$SOCKET" send-keys -t agent-1 "cd /tmp/project1 && codex --yolo 'Fix bug X'" Enter
82
- tmux -S "$SOCKET" send-keys -t agent-2 "cd /tmp/project2 && codex --yolo 'Fix bug Y'" Enter
83
-
84
- # Poll for completion (check if prompt returned)
85
- for sess in agent-1 agent-2; do
86
- if tmux -S "$SOCKET" capture-pane -p -t "$sess" -S -3 | grep -q "❯"; then
87
- echo "$sess: DONE"
88
- else
89
- echo "$sess: Running..."
90
- fi
91
- done
116
+ ### Check if Session Needs Input
92
117
 
93
- # Get full output from completed session
94
- tmux -S "$SOCKET" capture-pane -p -t agent-1 -S -500
118
+ ```bash
119
+ # Look for prompts
120
+ tmux capture-pane -t worker-3 -p | tail -10 | grep -E "❯|Yes.*No|proceed|permission"
95
121
  ```
96
122
 
97
- **Tips:**
98
- - Use separate git worktrees for parallel fixes (no branch conflicts)
99
- - `pnpm install` first before running codex in fresh clones
100
- - Check for shell prompt (`❯` or `$`) to detect completion
101
- - Codex needs `--yolo` or `--full-auto` for non-interactive fixes
123
+ ### Approve Claude Code Prompt
102
124
 
103
- ## Cleanup
125
+ ```bash
126
+ # Send 'y' and Enter
127
+ tmux send-keys -t worker-3 'y' Enter
104
128
 
105
- - Kill a session: `tmux -S "$SOCKET" kill-session -t "$SESSION"`.
106
- - Kill all sessions on a socket: `tmux -S "$SOCKET" list-sessions -F '#{session_name}' | xargs -r -n1 tmux -S "$SOCKET" kill-session -t`.
107
- - Remove everything on the private socket: `tmux -S "$SOCKET" kill-server`.
129
+ # Or select numbered option
130
+ tmux send-keys -t worker-3 '2' Enter
131
+ ```
108
132
 
109
- ## Helper: wait-for-text.sh
133
+ ### Check All Sessions Status
110
134
 
111
- `{baseDir}/scripts/wait-for-text.sh` polls a pane for a regex (or fixed string) with a timeout.
135
+ ```bash
136
+ for s in shared worker-2 worker-3 worker-4 worker-5 worker-6 worker-7 worker-8; do
137
+ echo "=== $s ==="
138
+ tmux capture-pane -t $s -p 2>/dev/null | tail -5
139
+ done
140
+ ```
141
+
142
+ ### Send Task to Session
112
143
 
113
144
  ```bash
114
- {baseDir}/scripts/wait-for-text.sh -t session:0.0 -p 'pattern' [-F] [-T 20] [-i 0.5] [-l 2000]
145
+ tmux send-keys -t worker-4 "Fix the bug in auth.js" Enter
115
146
  ```
116
147
 
117
- - `-t`/`--target` pane target (required)
118
- - `-p`/`--pattern` regex to match (required); add `-F` for fixed string
119
- - `-T` timeout seconds (integer, default 15)
120
- - `-i` poll interval seconds (default 0.5)
121
- - `-l` history lines to search (integer, default 1000)
148
+ ## Notes
149
+
150
+ - Use `capture-pane -p` to print to stdout (essential for scripting)
151
+ - `-S -` captures entire scrollback history
152
+ - Target format: `session:window.pane` (e.g., `shared:0.0`)
153
+ - Sessions persist across SSH disconnects
@@ -1,49 +1,112 @@
1
1
  ---
2
2
  name: weather
3
- description: Get current weather and forecasts (no API key required).
3
+ description: "Get current weather and forecasts via wttr.in or Open-Meteo. Use when: user asks about weather, temperature, or forecasts for any location. NOT for: historical weather data, severe weather alerts, or detailed meteorological analysis. No API key needed."
4
4
  homepage: https://wttr.in/:help
5
- metadata: {"poolbot":{"emoji":"🌤️","requires":{"bins":["curl"]}}}
5
+ metadata: { "poolbot": { "emoji": "🌤️", "requires": { "bins": ["curl"] } } }
6
6
  ---
7
7
 
8
- # Weather
8
+ # Weather Skill
9
9
 
10
- Two free services, no API keys needed.
10
+ Get current weather conditions and forecasts.
11
11
 
12
- ## wttr.in (primary)
12
+ ## When to Use
13
+
14
+ ✅ **USE this skill when:**
15
+
16
+ - "What's the weather?"
17
+ - "Will it rain today/tomorrow?"
18
+ - "Temperature in [city]"
19
+ - "Weather forecast for the week"
20
+ - Travel planning weather checks
21
+
22
+ ## When NOT to Use
23
+
24
+ ❌ **DON'T use this skill when:**
25
+
26
+ - Historical weather data → use weather archives/APIs
27
+ - Climate analysis or trends → use specialized data sources
28
+ - Hyper-local microclimate data → use local sensors
29
+ - Severe weather alerts → check official NWS sources
30
+ - Aviation/marine weather → use specialized services (METAR, etc.)
31
+
32
+ ## Location
33
+
34
+ Always include a city, region, or airport code in weather queries.
35
+
36
+ ## Commands
37
+
38
+ ### Current Weather
39
+
40
+ ```bash
41
+ # One-line summary
42
+ curl "wttr.in/London?format=3"
43
+
44
+ # Detailed current conditions
45
+ curl "wttr.in/London?0"
46
+
47
+ # Specific city
48
+ curl "wttr.in/New+York?format=3"
49
+ ```
50
+
51
+ ### Forecasts
13
52
 
14
- Quick one-liner:
15
53
  ```bash
16
- curl -s "wttr.in/London?format=3"
17
- # Output: London: ⛅️ +8°C
54
+ # 3-day forecast
55
+ curl "wttr.in/London"
56
+
57
+ # Week forecast
58
+ curl "wttr.in/London?format=v2"
59
+
60
+ # Specific day (0=today, 1=tomorrow, 2=day after)
61
+ curl "wttr.in/London?1"
18
62
  ```
19
63
 
20
- Compact format:
64
+ ### Format Options
65
+
21
66
  ```bash
22
- curl -s "wttr.in/London?format=%l:+%c+%t+%h+%w"
23
- # Output: London: ⛅️ +8°C 71% ↙5km/h
67
+ # One-liner
68
+ curl "wttr.in/London?format=%l:+%c+%t+%w"
69
+
70
+ # JSON output
71
+ curl "wttr.in/London?format=j1"
72
+
73
+ # PNG image
74
+ curl "wttr.in/London.png"
24
75
  ```
25
76
 
26
- Full forecast:
77
+ ### Format Codes
78
+
79
+ - `%c` — Weather condition emoji
80
+ - `%t` — Temperature
81
+ - `%f` — "Feels like"
82
+ - `%w` — Wind
83
+ - `%h` — Humidity
84
+ - `%p` — Precipitation
85
+ - `%l` — Location
86
+
87
+ ## Quick Responses
88
+
89
+ **"What's the weather?"**
90
+
27
91
  ```bash
28
- curl -s "wttr.in/London?T"
92
+ curl -s "wttr.in/London?format=%l:+%c+%t+(feels+like+%f),+%w+wind,+%h+humidity"
29
93
  ```
30
94
 
31
- Format codes: `%c` condition · `%t` temp · `%h` humidity · `%w` wind · `%l` location · `%m` moon
95
+ **"Will it rain?"**
32
96
 
33
- Tips:
34
- - URL-encode spaces: `wttr.in/New+York`
35
- - Airport codes: `wttr.in/JFK`
36
- - Units: `?m` (metric) `?u` (USCS)
37
- - Today only: `?1` · Current only: `?0`
38
- - PNG: `curl -s "wttr.in/Berlin.png" -o /tmp/weather.png`
97
+ ```bash
98
+ curl -s "wttr.in/London?format=%l:+%c+%p"
99
+ ```
39
100
 
40
- ## Open-Meteo (fallback, JSON)
101
+ **"Weekend forecast"**
41
102
 
42
- Free, no key, good for programmatic use:
43
103
  ```bash
44
- curl -s "https://api.open-meteo.com/v1/forecast?latitude=51.5&longitude=-0.12&current_weather=true"
104
+ curl "wttr.in/London?format=v2"
45
105
  ```
46
106
 
47
- Find coordinates for a city, then query. Returns JSON with temp, windspeed, weathercode.
107
+ ## Notes
48
108
 
49
- Docs: https://open-meteo.com/en/docs
109
+ - No API key needed (uses wttr.in)
110
+ - Rate limited; don't spam requests
111
+ - Works for most global cities
112
+ - Supports airport codes: `curl wttr.in/ORD`
@@ -1,151 +0,0 @@
1
- import { resolvePluginTools } from "../plugins/tools.js";
2
- import { resolveSessionAgentId } from "./agent-scope.js";
3
- import { createAgentsListTool } from "./tools/agents-list-tool.js";
4
- import { createBrowserTool } from "./tools/browser-tool.js";
5
- import { createCanvasTool } from "./tools/canvas-tool.js";
6
- import { createCronTool } from "./tools/cron-tool.js";
7
- import { createGatewayTool } from "./tools/gateway-tool.js";
8
- import { createDeepResearchTool } from "./tools/deep-research-tool.js";
9
- import { createImageGenerateTool } from "./tools/image-generate-tool.js";
10
- import { createImageTool } from "./tools/image-tool.js";
11
- import { createMessageTool } from "./tools/message-tool.js";
12
- import { createNodesTool } from "./tools/nodes-tool.js";
13
- import { createSessionStatusTool } from "./tools/session-status-tool.js";
14
- import { createSessionsHistoryTool } from "./tools/sessions-history-tool.js";
15
- import { createSessionsListTool } from "./tools/sessions-list-tool.js";
16
- import { createSessionsSendTool } from "./tools/sessions-send-tool.js";
17
- import { createSessionsSpawnTool } from "./tools/sessions-spawn-tool.js";
18
- import { createSubagentsTool } from "./tools/subagents-tool.js";
19
- import { createTtsTool } from "./tools/tts-tool.js";
20
- import { createWebFetchTool, createWebSearchTool } from "./tools/web-tools.js";
21
- import { resolveWorkspaceRoot } from "./workspace-dir.js";
22
- export function createOpenClawTools(options) {
23
- const workspaceDir = resolveWorkspaceRoot(options?.workspaceDir);
24
- const imageTool = options?.agentDir?.trim()
25
- ? createImageTool({
26
- config: options?.config,
27
- agentDir: options.agentDir,
28
- workspaceDir,
29
- sandbox: options?.sandboxRoot && options?.sandboxFsBridge
30
- ? { root: options.sandboxRoot, bridge: options.sandboxFsBridge }
31
- : undefined,
32
- modelHasVision: options?.modelHasVision,
33
- })
34
- : null;
35
- const imageGenerateTool = createImageGenerateTool({
36
- config: options?.config,
37
- agentDir: options?.agentDir,
38
- sandboxRoot: options?.sandboxRoot,
39
- });
40
- const webSearchTool = createWebSearchTool({
41
- config: options?.config,
42
- sandboxed: options?.sandboxed,
43
- });
44
- const webFetchTool = createWebFetchTool({
45
- config: options?.config,
46
- sandboxed: options?.sandboxed,
47
- });
48
- const messageTool = options?.disableMessageTool
49
- ? null
50
- : createMessageTool({
51
- agentAccountId: options?.agentAccountId,
52
- agentSessionKey: options?.agentSessionKey,
53
- config: options?.config,
54
- currentChannelId: options?.currentChannelId,
55
- currentChannelProvider: options?.agentChannel,
56
- currentThreadTs: options?.currentThreadTs,
57
- replyToMode: options?.replyToMode,
58
- hasRepliedRef: options?.hasRepliedRef,
59
- sandboxRoot: options?.sandboxRoot,
60
- requireExplicitTarget: options?.requireExplicitMessageTarget,
61
- });
62
- const tools = [
63
- createBrowserTool({
64
- sandboxBridgeUrl: options?.sandboxBrowserBridgeUrl,
65
- allowHostControl: options?.allowHostBrowserControl,
66
- }),
67
- createCanvasTool(),
68
- createNodesTool({
69
- agentSessionKey: options?.agentSessionKey,
70
- config: options?.config,
71
- }),
72
- createCronTool({
73
- agentSessionKey: options?.agentSessionKey,
74
- }),
75
- ...(messageTool ? [messageTool] : []),
76
- createTtsTool({
77
- agentChannel: options?.agentChannel,
78
- config: options?.config,
79
- }),
80
- createGatewayTool({
81
- agentSessionKey: options?.agentSessionKey,
82
- config: options?.config,
83
- }),
84
- createAgentsListTool({
85
- agentSessionKey: options?.agentSessionKey,
86
- requesterAgentIdOverride: options?.requesterAgentIdOverride,
87
- }),
88
- createSessionsListTool({
89
- agentSessionKey: options?.agentSessionKey,
90
- sandboxed: options?.sandboxed,
91
- }),
92
- createSessionsHistoryTool({
93
- agentSessionKey: options?.agentSessionKey,
94
- sandboxed: options?.sandboxed,
95
- }),
96
- createSessionsSendTool({
97
- agentSessionKey: options?.agentSessionKey,
98
- agentChannel: options?.agentChannel,
99
- sandboxed: options?.sandboxed,
100
- }),
101
- createSessionsSpawnTool({
102
- agentSessionKey: options?.agentSessionKey,
103
- agentChannel: options?.agentChannel,
104
- agentAccountId: options?.agentAccountId,
105
- agentTo: options?.agentTo,
106
- agentThreadId: options?.agentThreadId,
107
- agentGroupId: options?.agentGroupId,
108
- agentGroupChannel: options?.agentGroupChannel,
109
- agentGroupSpace: options?.agentGroupSpace,
110
- sandboxed: options?.sandboxed,
111
- requesterAgentIdOverride: options?.requesterAgentIdOverride,
112
- }),
113
- createSubagentsTool({
114
- agentSessionKey: options?.agentSessionKey,
115
- }),
116
- createSessionStatusTool({
117
- agentSessionKey: options?.agentSessionKey,
118
- config: options?.config,
119
- }),
120
- ...(webSearchTool ? [webSearchTool] : []),
121
- ...(webFetchTool ? [webFetchTool] : []),
122
- ...(imageTool ? [imageTool] : []),
123
- ...(imageGenerateTool ? [imageGenerateTool] : []),
124
- ];
125
- // Z.AI-powered research tool (gracefully absent when no key configured)
126
- const deepResearchTool = createDeepResearchTool({
127
- config: options?.config,
128
- agentDir: options?.agentDir,
129
- sandboxRoot: options?.sandboxRoot,
130
- });
131
- if (deepResearchTool)
132
- tools.push(deepResearchTool);
133
- const pluginTools = resolvePluginTools({
134
- context: {
135
- config: options?.config,
136
- workspaceDir,
137
- agentDir: options?.agentDir,
138
- agentId: resolveSessionAgentId({
139
- sessionKey: options?.agentSessionKey,
140
- config: options?.config,
141
- }),
142
- sessionKey: options?.agentSessionKey,
143
- messageChannel: options?.agentChannel,
144
- agentAccountId: options?.agentAccountId,
145
- sandboxed: options?.sandboxed,
146
- },
147
- existingToolNames: new Set(tools.map((tool) => tool.name)),
148
- toolAllowlist: options?.pluginToolAllowlist,
149
- });
150
- return [...tools, ...pluginTools];
151
- }