profclaw 2.0.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (477) hide show
  1. package/.env.example +14 -2
  2. package/CHANGELOG.md +37 -0
  3. package/CONTRIBUTING.md +20 -0
  4. package/Dockerfile +39 -23
  5. package/README.md +174 -40
  6. package/dist/agents/agent-summary.d.ts +44 -0
  7. package/dist/agents/agent-summary.js +176 -0
  8. package/dist/agents/auto-memory.d.ts +59 -0
  9. package/dist/agents/auto-memory.js +310 -0
  10. package/dist/agents/checkpoint-manager.d.ts +76 -0
  11. package/dist/agents/checkpoint-manager.js +156 -0
  12. package/dist/agents/circuit-breaker.d.ts +54 -0
  13. package/dist/agents/circuit-breaker.js +153 -0
  14. package/dist/agents/context-compactor.d.ts +70 -0
  15. package/dist/agents/context-compactor.js +361 -0
  16. package/dist/agents/conversation-branch.d.ts +55 -0
  17. package/dist/agents/conversation-branch.js +115 -0
  18. package/dist/agents/error-recovery.d.ts +44 -0
  19. package/dist/agents/error-recovery.js +197 -0
  20. package/dist/agents/events.d.ts +76 -0
  21. package/dist/agents/events.js +8 -0
  22. package/dist/agents/executor.d.ts +35 -1
  23. package/dist/agents/executor.js +573 -124
  24. package/dist/agents/file-snapshots.d.ts +72 -0
  25. package/dist/agents/file-snapshots.js +182 -0
  26. package/dist/agents/index.d.ts +2 -0
  27. package/dist/agents/orchestrator.d.ts +183 -0
  28. package/dist/agents/orchestrator.js +495 -0
  29. package/dist/agents/permissions.d.ts +63 -0
  30. package/dist/agents/permissions.js +138 -0
  31. package/dist/agents/plan-mode.d.ts +71 -0
  32. package/dist/agents/plan-mode.js +186 -0
  33. package/dist/agents/prompt-suggestions.d.ts +33 -0
  34. package/dist/agents/prompt-suggestions.js +208 -0
  35. package/dist/agents/rate-limit-monitor.d.ts +56 -0
  36. package/dist/agents/rate-limit-monitor.js +224 -0
  37. package/dist/agents/result-store.d.ts +37 -0
  38. package/dist/agents/result-store.js +104 -0
  39. package/dist/agents/session-diff.d.ts +43 -0
  40. package/dist/agents/session-diff.js +258 -0
  41. package/dist/agents/tool-loader.d.ts +65 -0
  42. package/dist/agents/tool-loader.js +273 -0
  43. package/dist/agents/transcript.d.ts +96 -0
  44. package/dist/agents/transcript.js +267 -0
  45. package/dist/agents/worktree-manager.d.ts +80 -0
  46. package/dist/agents/worktree-manager.js +203 -0
  47. package/dist/auth/middleware.js +14 -0
  48. package/dist/chat/agentic-executor.d.ts +7 -0
  49. package/dist/chat/agentic-executor.js +253 -30
  50. package/dist/chat/conversations.d.ts +2 -0
  51. package/dist/chat/conversations.js +8 -0
  52. package/dist/chat/execution/executor.d.ts +8 -0
  53. package/dist/chat/execution/executor.js +157 -103
  54. package/dist/chat/execution/index.js +5 -1
  55. package/dist/chat/execution/tool-router.js +40 -14
  56. package/dist/chat/execution/tools/canvas.d.ts +2 -2
  57. package/dist/chat/execution/tools/code-tools.d.ts +66 -0
  58. package/dist/chat/execution/tools/code-tools.js +353 -0
  59. package/dist/chat/execution/tools/complete-task.d.ts +2 -2
  60. package/dist/chat/execution/tools/cron-tool.d.ts +26 -10
  61. package/dist/chat/execution/tools/cron-tool.js +48 -3
  62. package/dist/chat/execution/tools/decompose-task.d.ts +58 -0
  63. package/dist/chat/execution/tools/decompose-task.js +166 -0
  64. package/dist/chat/execution/tools/exec.d.ts +5 -2
  65. package/dist/chat/execution/tools/exec.js +294 -155
  66. package/dist/chat/execution/tools/feed-tools.d.ts +77 -0
  67. package/dist/chat/execution/tools/feed-tools.js +142 -0
  68. package/dist/chat/execution/tools/file-ops.d.ts +1 -1
  69. package/dist/chat/execution/tools/github.d.ts +2 -2
  70. package/dist/chat/execution/tools/index.d.ts +14 -2
  71. package/dist/chat/execution/tools/index.js +86 -12
  72. package/dist/chat/execution/tools/integrations.d.ts +8 -8
  73. package/dist/chat/execution/tools/multi-patch.d.ts +53 -0
  74. package/dist/chat/execution/tools/multi-patch.js +373 -0
  75. package/dist/chat/execution/tools/openai-image-gen.d.ts +2 -2
  76. package/dist/chat/execution/tools/plan-tools.d.ts +80 -0
  77. package/dist/chat/execution/tools/plan-tools.js +134 -0
  78. package/dist/chat/execution/tools/profclaw-ops.d.ts +6 -6
  79. package/dist/chat/execution/tools/repl-tool.d.ts +46 -0
  80. package/dist/chat/execution/tools/repl-tool.js +207 -0
  81. package/dist/chat/execution/tools/sessions-send.d.ts +2 -2
  82. package/dist/chat/execution/tools/slack-actions.d.ts +2 -2
  83. package/dist/chat/execution/tools/system.d.ts +4 -4
  84. package/dist/chat/execution/tools/todo-tool.d.ts +72 -0
  85. package/dist/chat/execution/tools/todo-tool.js +152 -0
  86. package/dist/chat/execution/tools/tool-search.d.ts +50 -0
  87. package/dist/chat/execution/tools/tool-search.js +155 -0
  88. package/dist/chat/execution/types.d.ts +21 -14
  89. package/dist/chat/execution/workflows/executor.d.ts +11 -0
  90. package/dist/chat/execution/workflows/executor.js +99 -1
  91. package/dist/chat/execution/workflows/types.d.ts +35 -2
  92. package/dist/chat/format/index.d.ts +1 -0
  93. package/dist/chat/format/index.js +1 -0
  94. package/dist/chat/format/markdown-convert.d.ts +23 -0
  95. package/dist/chat/format/markdown-convert.js +149 -0
  96. package/dist/chat/index.d.ts +1 -1
  97. package/dist/chat/index.js +1 -1
  98. package/dist/chat/message-handler.js +58 -6
  99. package/dist/chat/proactive/index.d.ts +62 -0
  100. package/dist/chat/proactive/index.js +147 -0
  101. package/dist/chat/prompt-adapter.js +2 -0
  102. package/dist/chat/providers/irc/index.d.ts +2 -2
  103. package/dist/chat/providers/telegram/index.d.ts +2 -0
  104. package/dist/chat/providers/telegram/index.js +21 -2
  105. package/dist/chat/system-prompts.d.ts +3 -3
  106. package/dist/chat/system-prompts.js +116 -61
  107. package/dist/chat/tools.d.ts +6 -6
  108. package/dist/cli/commands/auth.js +64 -1
  109. package/dist/cli/commands/chat.js +1327 -138
  110. package/dist/cli/commands/doctor.js +222 -16
  111. package/dist/cli/commands/history.d.ts +3 -0
  112. package/dist/cli/commands/history.js +138 -0
  113. package/dist/cli/commands/import.d.ts +44 -0
  114. package/dist/cli/commands/import.js +526 -0
  115. package/dist/cli/commands/init.d.ts +13 -0
  116. package/dist/cli/commands/init.js +381 -0
  117. package/dist/cli/commands/onboard.js +210 -30
  118. package/dist/cli/commands/plan.d.ts +13 -0
  119. package/dist/cli/commands/plan.js +184 -0
  120. package/dist/cli/commands/serve.d.ts +7 -0
  121. package/dist/cli/commands/serve.js +77 -18
  122. package/dist/cli/commands/setup.js +84 -3
  123. package/dist/cli/commands/status.js +54 -0
  124. package/dist/cli/commands/tools.js +13 -13
  125. package/dist/cli/commands/tui.js +26 -1
  126. package/dist/cli/index.js +19 -0
  127. package/dist/cli/ink/App.d.ts +13 -0
  128. package/dist/cli/ink/App.js +6 -0
  129. package/dist/cli/ink/ChatApp.d.ts +60 -0
  130. package/dist/cli/ink/ChatApp.js +325 -0
  131. package/dist/cli/ink/DashboardApp.d.ts +3 -0
  132. package/dist/cli/ink/DashboardApp.js +143 -0
  133. package/dist/cli/ink/components/AgentStatus.d.ts +17 -0
  134. package/dist/cli/ink/components/AgentStatus.js +33 -0
  135. package/dist/cli/ink/components/ChannelList.d.ts +17 -0
  136. package/dist/cli/ink/components/ChannelList.js +33 -0
  137. package/dist/cli/ink/components/ConnectionStatus.d.ts +19 -0
  138. package/dist/cli/ink/components/ConnectionStatus.js +50 -0
  139. package/dist/cli/ink/components/CostBar.d.ts +19 -0
  140. package/dist/cli/ink/components/CostBar.js +35 -0
  141. package/dist/cli/ink/components/HookStatus.d.ts +15 -0
  142. package/dist/cli/ink/components/HookStatus.js +7 -0
  143. package/dist/cli/ink/components/PermissionPrompt.d.ts +21 -0
  144. package/dist/cli/ink/components/PermissionPrompt.js +51 -0
  145. package/dist/cli/ink/components/PlanView.d.ts +23 -0
  146. package/dist/cli/ink/components/PlanView.js +26 -0
  147. package/dist/cli/ink/components/ProviderList.d.ts +16 -0
  148. package/dist/cli/ink/components/ProviderList.js +16 -0
  149. package/dist/cli/ink/components/SessionHeader.d.ts +15 -0
  150. package/dist/cli/ink/components/SessionHeader.js +15 -0
  151. package/dist/cli/ink/components/StreamingMessage.d.ts +20 -0
  152. package/dist/cli/ink/components/StreamingMessage.js +27 -0
  153. package/dist/cli/ink/components/SuggestionBar.d.ts +15 -0
  154. package/dist/cli/ink/components/SuggestionBar.js +28 -0
  155. package/dist/cli/ink/components/SystemHealth.d.ts +20 -0
  156. package/dist/cli/ink/components/SystemHealth.js +39 -0
  157. package/dist/cli/ink/components/TaskList.d.ts +17 -0
  158. package/dist/cli/ink/components/TaskList.js +59 -0
  159. package/dist/cli/ink/components/ToolCall.d.ts +17 -0
  160. package/dist/cli/ink/components/ToolCall.js +43 -0
  161. package/dist/cli/ink/index.d.ts +23 -0
  162. package/dist/cli/ink/index.js +15 -0
  163. package/dist/cli/ink/keybindings.d.ts +35 -0
  164. package/dist/cli/ink/keybindings.js +105 -0
  165. package/dist/cli/ink/markdown-renderer.d.ts +47 -0
  166. package/dist/cli/ink/markdown-renderer.js +380 -0
  167. package/dist/cli/ink/output-styles.d.ts +39 -0
  168. package/dist/cli/ink/output-styles.js +119 -0
  169. package/dist/cli/interactive/auto-serve.d.ts +38 -0
  170. package/dist/cli/interactive/auto-serve.js +209 -0
  171. package/dist/cli/interactive/index.d.ts +25 -0
  172. package/dist/cli/interactive/index.js +23 -0
  173. package/dist/cli/interactive/picker.d.ts +28 -0
  174. package/dist/cli/interactive/picker.js +153 -0
  175. package/dist/cli/interactive/renderer.d.ts +26 -0
  176. package/dist/cli/interactive/renderer.js +555 -0
  177. package/dist/cli/interactive/repl.d.ts +14 -0
  178. package/dist/cli/interactive/repl.js +1516 -0
  179. package/dist/cli/interactive/stream-client.d.ts +59 -0
  180. package/dist/cli/interactive/stream-client.js +506 -0
  181. package/dist/cli/interactive/types.d.ts +121 -0
  182. package/dist/cli/interactive/types.js +10 -0
  183. package/dist/cli/utils/api.d.ts +9 -0
  184. package/dist/cli/utils/api.js +58 -2
  185. package/dist/cron/natural-language.d.ts +54 -0
  186. package/dist/cron/natural-language.js +569 -0
  187. package/dist/cron/scheduler.d.ts +34 -4
  188. package/dist/cron/scheduler.js +141 -9
  189. package/dist/cron/templates.d.ts +1 -1
  190. package/dist/cron/templates.js +219 -0
  191. package/dist/feeds/feed-engine.d.ts +149 -0
  192. package/dist/feeds/feed-engine.js +600 -0
  193. package/dist/feeds/index.d.ts +9 -0
  194. package/dist/feeds/index.js +8 -0
  195. package/dist/gateway/router.js +6 -1
  196. package/dist/hooks/built-in/audit-log.d.ts +11 -0
  197. package/dist/hooks/built-in/audit-log.js +84 -0
  198. package/dist/hooks/built-in/cost-warning.d.ts +10 -0
  199. package/dist/hooks/built-in/cost-warning.js +59 -0
  200. package/dist/hooks/built-in/dangerous-tool.d.ts +32 -0
  201. package/dist/hooks/built-in/dangerous-tool.js +80 -0
  202. package/dist/hooks/built-in/index.d.ts +14 -0
  203. package/dist/hooks/built-in/index.js +20 -0
  204. package/dist/hooks/index.d.ts +3 -0
  205. package/dist/hooks/index.js +6 -0
  206. package/dist/hooks/loader.d.ts +17 -0
  207. package/dist/hooks/loader.js +142 -0
  208. package/dist/hooks/registry.d.ts +62 -0
  209. package/dist/hooks/registry.js +127 -0
  210. package/dist/integrations/web-search.js +6 -3
  211. package/dist/memory/index.d.ts +1 -0
  212. package/dist/memory/index.js +2 -0
  213. package/dist/memory/memory-service.js +14 -13
  214. package/dist/memory/observational.d.ts +62 -0
  215. package/dist/memory/observational.js +396 -0
  216. package/dist/middleware/content-filter.d.ts +22 -0
  217. package/dist/middleware/content-filter.js +69 -0
  218. package/dist/middleware/request-validator.d.ts +159 -0
  219. package/dist/middleware/request-validator.js +93 -0
  220. package/dist/plugins/sdk.d.ts +22 -0
  221. package/dist/plugins/sdk.js +17 -1
  222. package/dist/projects/types.d.ts +10 -10
  223. package/dist/providers/ai-sdk.d.ts +11 -0
  224. package/dist/providers/ai-sdk.js +78 -19
  225. package/dist/providers/core/models.js +67 -1
  226. package/dist/providers/core/types.d.ts +3 -0
  227. package/dist/providers/index.d.ts +1 -0
  228. package/dist/providers/index.js +1 -0
  229. package/dist/providers/smart-router.d.ts +118 -0
  230. package/dist/providers/smart-router.js +685 -0
  231. package/dist/providers/types.d.ts +16 -16
  232. package/dist/routes/agents.js +50 -0
  233. package/dist/routes/auth.js +8 -1
  234. package/dist/routes/chat.js +259 -14
  235. package/dist/routes/costs.js +32 -0
  236. package/dist/routes/cron.js +80 -5
  237. package/dist/routes/feeds.d.ts +10 -0
  238. package/dist/routes/feeds.js +168 -0
  239. package/dist/routes/mcp.js +21 -0
  240. package/dist/routes/memory.js +130 -0
  241. package/dist/routes/skills.js +129 -0
  242. package/dist/routes/teams.d.ts +9 -0
  243. package/dist/routes/teams.js +210 -0
  244. package/dist/routes/tools.js +14 -0
  245. package/dist/routes/users.js +2 -0
  246. package/dist/server/route-loader.js +3 -1
  247. package/dist/server/stream-bridge.d.ts +19 -0
  248. package/dist/server/stream-bridge.js +38 -0
  249. package/dist/server.js +310 -36
  250. package/dist/skills/marketplace.d.ts +87 -0
  251. package/dist/skills/marketplace.js +268 -0
  252. package/dist/storage/index.d.ts +14 -0
  253. package/dist/storage/index.js +64 -3
  254. package/dist/storage/schema.d.ts +4 -4
  255. package/dist/storage/schema.js +1 -1
  256. package/dist/teams/index.d.ts +110 -0
  257. package/dist/teams/index.js +365 -0
  258. package/dist/tickets/types.d.ts +39 -39
  259. package/dist/types/summary.d.ts +5 -5
  260. package/dist/utils/auto-update.d.ts +23 -0
  261. package/dist/utils/auto-update.js +157 -0
  262. package/dist/utils/offline-detect.d.ts +55 -0
  263. package/dist/utils/offline-detect.js +121 -0
  264. package/dist/utils/pid-file.d.ts +36 -0
  265. package/dist/utils/pid-file.js +125 -0
  266. package/dist/utils/prevent-sleep.d.ts +27 -0
  267. package/dist/utils/prevent-sleep.js +95 -0
  268. package/dist/utils/sanitizer.d.ts +57 -0
  269. package/dist/utils/sanitizer.js +174 -0
  270. package/docker-compose.yml +13 -137
  271. package/package.json +31 -6
  272. package/skills/deploy-cloudflare/SKILL.md +62 -0
  273. package/skills/deploy-vercel/SKILL.md +67 -0
  274. package/skills/docker-deploy/SKILL.md +158 -0
  275. package/skills/full-stack-builder/SKILL.md +92 -0
  276. package/skills/humanizer/SKILL.md +488 -0
  277. package/skills/profclaw-assistant/SKILL.md +85 -56
  278. package/ui/dist/assets/ActivityView-Da6HQ8ws.js +1 -0
  279. package/ui/dist/assets/AgentList-H58R0kX3.js +1 -0
  280. package/ui/dist/assets/AnalyticsDashboard-B28AeRsc.js +1 -0
  281. package/ui/dist/assets/AreaChart-DwLzeAQ8.js +1 -0
  282. package/ui/dist/assets/CartesianChart-piKQsTAR.js +36 -0
  283. package/ui/dist/assets/ChatView-Dbj8rxU5.js +10 -0
  284. package/ui/dist/assets/CostsDashboard-C6F5df0F.js +1 -0
  285. package/ui/dist/assets/EstimateSelect-wga0rUKX.js +1 -0
  286. package/ui/dist/assets/FeedDashboard-Ef6FEzEf.js +1 -0
  287. package/ui/dist/assets/FloatingChatbot-0yhkUeCq.js +2 -0
  288. package/ui/dist/assets/InviteCodeManagement-tUXfx4Bc.js +2 -0
  289. package/ui/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  290. package/ui/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  291. package/ui/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  292. package/ui/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  293. package/ui/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  294. package/ui/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  295. package/ui/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  296. package/ui/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  297. package/ui/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  298. package/ui/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  299. package/ui/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  300. package/ui/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  301. package/ui/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  302. package/ui/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  303. package/ui/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  304. package/ui/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  305. package/ui/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  306. package/ui/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  307. package/ui/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  308. package/ui/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  309. package/ui/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  310. package/ui/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  311. package/ui/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  312. package/ui/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  313. package/ui/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  314. package/ui/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  315. package/ui/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  316. package/ui/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  317. package/ui/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  318. package/ui/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  319. package/ui/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  320. package/ui/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  321. package/ui/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  322. package/ui/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  323. package/ui/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  324. package/ui/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  325. package/ui/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  326. package/ui/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  327. package/ui/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  328. package/ui/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  329. package/ui/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  330. package/ui/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  331. package/ui/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  332. package/ui/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  333. package/ui/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  334. package/ui/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  335. package/ui/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  336. package/ui/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  337. package/ui/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  338. package/ui/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  339. package/ui/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  340. package/ui/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  341. package/ui/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  342. package/ui/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  343. package/ui/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  344. package/ui/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  345. package/ui/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  346. package/ui/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  347. package/ui/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  348. package/ui/dist/assets/MarketplacePage-DGrLtolR.js +1 -0
  349. package/ui/dist/assets/{ProjectDetail--gPfvATB.js → ProjectDetail-BgWvA6UP.js} +2 -2
  350. package/ui/dist/assets/ProjectIcon-TDuliqwg.js +1 -0
  351. package/ui/dist/assets/ProjectList-DXgM4187.js +1 -0
  352. package/ui/dist/assets/{Settings-1kaf7VHE.js → Settings-xA8Zhi3p.js} +3 -3
  353. package/ui/dist/assets/StatusIndicator-B8vfFAxg.js +1 -0
  354. package/ui/dist/assets/{SummaryDetail-DV3AmONk.js → SummaryDetail-eedRfTtF.js} +2 -2
  355. package/ui/dist/assets/SummaryList-CLNX2P84.js +1 -0
  356. package/ui/dist/assets/TaskDetail-BtWclNiR.js +1 -0
  357. package/ui/dist/assets/TaskList-JjODAgSc.js +1 -0
  358. package/ui/dist/assets/TeamsPage-CBK5iAyx.js +1 -0
  359. package/ui/dist/assets/TicketBoard-C9aJNNYp.js +1 -0
  360. package/ui/dist/assets/TicketDetail-CV5JmL31.js +1 -0
  361. package/ui/dist/assets/TicketList-68V4lzUz.js +1 -0
  362. package/ui/dist/assets/UserManagement-DKTb6UpE.js +2 -0
  363. package/ui/dist/assets/ViewSwitcher-BvdQht2Y.js +1 -0
  364. package/ui/dist/assets/alert-dialog-O6qBOv_f.js +1 -0
  365. package/ui/dist/assets/{archive-BsLa7brF.js → archive-CX7UvZpf.js} +1 -1
  366. package/ui/dist/assets/badge-BbfnwDJP.js +1 -0
  367. package/ui/dist/assets/{bug-CmZI7jqM.js → bug-3WX0394-.js} +1 -1
  368. package/ui/dist/assets/{calendar-Bf0t2B82.js → calendar-buq77TaS.js} +1 -1
  369. package/ui/dist/assets/{chevron-up-CoUsOvZj.js → chevron-up-4ymsBJRo.js} +1 -1
  370. package/ui/dist/assets/{circle-x-Dgw11LgT.js → circle-x-ByXtwR6Y.js} +1 -1
  371. package/ui/dist/assets/constants-CVdDh7p0.js +1 -0
  372. package/ui/dist/assets/{cpu-DiPMQICV.js → cpu-CiuoCeDY.js} +1 -1
  373. package/ui/dist/assets/{database-BwTfupDi.js → database-BWXSBg5a.js} +1 -1
  374. package/ui/dist/assets/dialog-lDg4NvMV.js +1 -0
  375. package/ui/dist/assets/dollar-sign-Dmijd6DP.js +1 -0
  376. package/ui/dist/assets/{ellipsis-UJx4Xnf6.js → ellipsis-vT-5SVIp.js} +1 -1
  377. package/ui/dist/assets/{ellipsis-vertical-DoULYEKn.js → ellipsis-vertical-B4tAX_bL.js} +1 -1
  378. package/ui/dist/assets/feature-markdown-DBo5Q7uq.js +289 -0
  379. package/ui/dist/assets/{file-code-B2UrJLwi.js → file-code-ChOWdKXf.js} +1 -1
  380. package/ui/dist/assets/{folder-open-BJi577JH.js → folder-open-CkOUbIiP.js} +1 -1
  381. package/ui/dist/assets/{funnel-PkaD_HSR.js → funnel-uZkoSPP-.js} +1 -1
  382. package/ui/dist/assets/{git-branch-C_K30am0.js → git-branch-CwvUxj7C.js} +1 -1
  383. package/ui/dist/assets/{git-commit-horizontal-IT6ecxWQ.js → git-commit-horizontal-lxPzCvhD.js} +1 -1
  384. package/ui/dist/assets/{globe-f-jjCa_g.js → globe-D_WpJdsj.js} +1 -1
  385. package/ui/dist/assets/{hash-DNEv8Elo.js → hash-CA0hJ7vh.js} +1 -1
  386. package/ui/dist/assets/{history-BQSBo_1Q.js → history-CEWMLELs.js} +1 -1
  387. package/ui/dist/assets/inbox-ehtOptTV.js +1 -0
  388. package/ui/dist/assets/{index-nS3EErDg.js → index-C1rhbml4.js} +3 -3
  389. package/ui/dist/assets/index-CR8gfCHv.js +1 -0
  390. package/ui/dist/assets/index-DVXMpWai.js +1 -0
  391. package/ui/dist/assets/index-DaDJMM2v.js +1 -0
  392. package/ui/dist/assets/index-Djdq_0xu.js +1 -0
  393. package/ui/dist/assets/index-M46Gcb8K.css +1 -0
  394. package/ui/dist/assets/index-sEBN7w8J.js +109 -0
  395. package/ui/dist/assets/layers-C6Mhf8Nk.js +1 -0
  396. package/ui/dist/assets/{layout-dashboard-CcKt1hXw.js → layout-dashboard-BRUM0kpT.js} +1 -1
  397. package/ui/dist/assets/{lightbulb-Jhp7FvbU.js → lightbulb-CN2q1O5l.js} +1 -1
  398. package/ui/dist/assets/{link-2-DdO7ostF.js → link-2-CC4E28yJ.js} +1 -1
  399. package/ui/dist/assets/markdown-renderer-C6ENbB0u.js +10 -0
  400. package/ui/dist/assets/markdown-renderer-CfVKi3_s.css +1 -0
  401. package/ui/dist/assets/{message-square-CBgH65X7.js → message-square-Bbb241am.js} +1 -1
  402. package/ui/dist/assets/package-CwT3IzFx.js +1 -0
  403. package/ui/dist/assets/{pencil-CYXCEPQh.js → pencil-CDmiHzoj.js} +1 -1
  404. package/ui/dist/assets/{play-d1ONaH0-.js → play-tjy5jMQX.js} +1 -1
  405. package/ui/dist/assets/popover-CFHZf3pE.js +1 -0
  406. package/ui/dist/assets/progress-BboUHuLf.js +1 -0
  407. package/ui/dist/assets/{rocket-DhvUetsk.js → rocket--8ZHgdXJ.js} +1 -1
  408. package/ui/dist/assets/select-n108rXny.js +1 -0
  409. package/ui/dist/assets/{send-P0r5D7td.js → send-Cu7MR2Qh.js} +1 -1
  410. package/ui/dist/assets/server-DmodxZp-.js +1 -0
  411. package/ui/dist/assets/{settings-2-ocj5uHGx.js → settings-2-CkRNqkxj.js} +1 -1
  412. package/ui/dist/assets/sheet-7aUJkyzU.js +1 -0
  413. package/ui/dist/assets/{shield-check-DfVdE34l.js → shield-check-ViI3nMKE.js} +1 -1
  414. package/ui/dist/assets/{shield-off-8l0J6R-8.js → shield-off-DN3tagkn.js} +1 -1
  415. package/ui/dist/assets/skeleton-C0E1Nfro.js +1 -0
  416. package/ui/dist/assets/{smartphone-77_g3SQn.js → smartphone-5FghiXpA.js} +1 -1
  417. package/ui/dist/assets/{square-Ckzsr3Rn.js → square-DiNSx8K7.js} +1 -1
  418. package/ui/dist/assets/star-DhdFVidS.js +1 -0
  419. package/ui/dist/assets/switch-CIgVbZqQ.js +1 -0
  420. package/ui/dist/assets/table-BC56FVMV.js +1 -0
  421. package/ui/dist/assets/{tag-C35mgoEv.js → tag-CH_vQliw.js} +1 -1
  422. package/ui/dist/assets/textarea-CxDiKFXZ.js +1 -0
  423. package/ui/dist/assets/{timer-DHJBS2w1.js → timer-CdGVTb60.js} +1 -1
  424. package/ui/dist/assets/tooltip-BuW9A5UO.js +1 -0
  425. package/ui/dist/assets/{trash-2-keO5tKPE.js → trash-2-CucZJL0N.js} +1 -1
  426. package/ui/dist/assets/trending-down-BCezC1z2.js +1 -0
  427. package/ui/dist/assets/{trending-up-BBv8KbrY.js → trending-up-C5OYX2k2.js} +1 -1
  428. package/ui/dist/assets/vendor-query-C0p7b53x.js +4 -0
  429. package/ui/dist/assets/vendor-react-Mc5_kfYG.js +12 -0
  430. package/ui/dist/assets/vendor-ui-CXPAUBFv.js +51 -0
  431. package/ui/dist/assets/{wand-sparkles-BusQ52ZK.js → wand-sparkles-BaH6pJnc.js} +1 -1
  432. package/ui/dist/assets/{wrench-02YaOSiK.js → wrench-CjxjP6ok.js} +1 -1
  433. package/ui/dist/index.html +5 -2
  434. package/ui/dist/assets/ActivityView-BeshZXmE.js +0 -1
  435. package/ui/dist/assets/AgentList-QVHeldPi.js +0 -1
  436. package/ui/dist/assets/AnalyticsDashboard-C9R97dXE.js +0 -1
  437. package/ui/dist/assets/AreaChart-B73gaiVQ.js +0 -1
  438. package/ui/dist/assets/CartesianChart-CXYL2R-A.js +0 -36
  439. package/ui/dist/assets/ChatView-qjZErlrp.js +0 -10
  440. package/ui/dist/assets/CostsDashboard-O4DCLy1i.js +0 -1
  441. package/ui/dist/assets/EstimateSelect-1hQf4Osk.js +0 -1
  442. package/ui/dist/assets/FloatingChatbot-BZBzrJxd.js +0 -2
  443. package/ui/dist/assets/InviteCodeManagement-LEoGqYeA.js +0 -2
  444. package/ui/dist/assets/ProjectIcon-Chd_ofsw.js +0 -1
  445. package/ui/dist/assets/ProjectList-BvUfVB6c.js +0 -4
  446. package/ui/dist/assets/StatusIndicator-pRfkNcdV.js +0 -1
  447. package/ui/dist/assets/SummaryList-B6kXiTxL.js +0 -1
  448. package/ui/dist/assets/TaskDetail-CV6CzbOS.js +0 -1
  449. package/ui/dist/assets/TaskList-DL7brQKd.js +0 -1
  450. package/ui/dist/assets/TicketBoard-CrkkFj7C.js +0 -1
  451. package/ui/dist/assets/TicketDetail-hnnYclpD.js +0 -1
  452. package/ui/dist/assets/TicketList-CsDAyQCL.js +0 -1
  453. package/ui/dist/assets/UserManagement-BGFQyTSr.js +0 -2
  454. package/ui/dist/assets/ViewSwitcher-CnL0OqA8.js +0 -1
  455. package/ui/dist/assets/alert-dialog-SKM6Gjz4.js +0 -7
  456. package/ui/dist/assets/badge-CVHH1a-v.js +0 -1
  457. package/ui/dist/assets/brain-6o_RHVpe.js +0 -1
  458. package/ui/dist/assets/constants-Q5Zivl-a.js +0 -1
  459. package/ui/dist/assets/dialog-BUqN9Psj.js +0 -1
  460. package/ui/dist/assets/index-BUmnwPQr.js +0 -1
  461. package/ui/dist/assets/index-BfF5G4Cw.js +0 -1
  462. package/ui/dist/assets/index-C8N375c2.js +0 -1
  463. package/ui/dist/assets/index-CuxnqVVz.css +0 -1
  464. package/ui/dist/assets/index-CzMM3QOk.js +0 -1
  465. package/ui/dist/assets/index-lJlNPFVJ.js +0 -67
  466. package/ui/dist/assets/layers-jFqVrWMD.js +0 -1
  467. package/ui/dist/assets/markdown-renderer-n1ToC4XQ.js +0 -36
  468. package/ui/dist/assets/popover-CrmZgoWu.js +0 -1
  469. package/ui/dist/assets/progress-uv4SPkL5.js +0 -1
  470. package/ui/dist/assets/select-CeQ8AHGy.js +0 -1
  471. package/ui/dist/assets/server-CVHTZB72.js +0 -1
  472. package/ui/dist/assets/sheet-DuQExSho.js +0 -1
  473. package/ui/dist/assets/skeleton-TFiFJ3nB.js +0 -1
  474. package/ui/dist/assets/switch-CAePkd6k.js +0 -1
  475. package/ui/dist/assets/table-ZjAZ7hkt.js +0 -1
  476. package/ui/dist/assets/textarea-DsVPnSgR.js +0 -1
  477. package/ui/dist/assets/tooltip-BYmQ331W.js +0 -1
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Feed Tools
3
+ *
4
+ * AI agent tools for managing RSS/Atom feeds and news digests.
5
+ * Allows agents to add feeds, poll for articles, and generate digests.
6
+ */
7
+ import { z } from 'zod';
8
+ // Param schemas
9
+ const FeedListParams = z.object({
10
+ category: z.string().optional().describe('Filter by category (e.g., "ai", "security", "dev")'),
11
+ enabled: z.boolean().optional().describe('Filter by enabled status'),
12
+ });
13
+ const FeedAddParams = z.object({
14
+ name: z.string().min(1).describe('Name for the feed'),
15
+ url: z.string().url().describe('RSS/Atom feed URL'),
16
+ category: z.string().optional().describe('Category (e.g., "ai", "security", "dev")'),
17
+ tags: z.array(z.string()).optional().describe('Tags for filtering'),
18
+ });
19
+ const FeedBundleInstallParams = z.object({
20
+ bundle: z.string().describe('Bundle name to install (e.g., "ai-news", "dev-news", "security")'),
21
+ });
22
+ const FeedPollParams = z.object({
23
+ feedId: z.string().optional().describe('Specific feed ID to poll. If omitted, polls all due feeds.'),
24
+ });
25
+ const FeedDigestParams = z.object({
26
+ category: z.string().optional().describe('Filter articles by feed category'),
27
+ hours: z.number().optional().describe('Look back N hours (default: 24)'),
28
+ limit: z.number().optional().describe('Max articles to return (default: 20)'),
29
+ });
30
+ const FeedDiscoverParams = z.object({
31
+ url: z.string().url().describe('Website URL to discover feed from'),
32
+ });
33
+ // Tools
34
+ export const feedListTool = {
35
+ name: 'feed_list',
36
+ description: 'List configured RSS/Atom feeds. Shows feed names, URLs, categories, and article counts.',
37
+ category: 'data',
38
+ parameters: FeedListParams,
39
+ securityLevel: 'safe',
40
+ async execute(_context, params) {
41
+ const { listFeeds } = await import('../../../feeds/index.js');
42
+ const feeds = await listFeeds({ category: params.category, enabled: params.enabled });
43
+ if (feeds.length === 0) {
44
+ return { success: true, output: 'No feeds configured. Use feed_add to add feeds or feed_bundle_install to add a bundle.' };
45
+ }
46
+ const lines = feeds.map((f) => `- ${f.name} (${f.category}) - ${f.articleCount} articles${f.enabled ? '' : ' [disabled]'}`);
47
+ return { success: true, output: `${feeds.length} feeds:\n${lines.join('\n')}`, data: feeds };
48
+ },
49
+ };
50
+ export const feedAddTool = {
51
+ name: 'feed_add',
52
+ description: 'Add a new RSS/Atom feed source. The feed will be polled automatically for new articles.',
53
+ category: 'data',
54
+ parameters: FeedAddParams,
55
+ securityLevel: 'safe',
56
+ async execute(_context, params) {
57
+ const { addFeed } = await import('../../../feeds/index.js');
58
+ try {
59
+ const feed = await addFeed(params);
60
+ return { success: true, output: `Added feed: ${feed.name} (${feed.category}) - ${feed.url}`, data: feed };
61
+ }
62
+ catch (error) {
63
+ return { success: false, error: { code: 'FEED_ADD_FAILED', message: error instanceof Error ? error.message : 'Failed' } };
64
+ }
65
+ },
66
+ };
67
+ export const feedBundleInstallTool = {
68
+ name: 'feed_bundle_install',
69
+ description: 'Install a pre-configured bundle of RSS feeds. Available bundles: ai-news, dev-news, security.',
70
+ category: 'data',
71
+ parameters: FeedBundleInstallParams,
72
+ securityLevel: 'safe',
73
+ async execute(_context, params) {
74
+ const { addFeedBundle, FEED_BUNDLES } = await import('../../../feeds/index.js');
75
+ if (!FEED_BUNDLES[params.bundle]) {
76
+ return { success: false, error: { code: 'BUNDLE_NOT_FOUND', message: `Unknown bundle: ${params.bundle}. Available: ${Object.keys(FEED_BUNDLES).join(', ')}` } };
77
+ }
78
+ const feeds = await addFeedBundle(params.bundle);
79
+ return { success: true, output: `Installed ${feeds.length} feeds from "${params.bundle}" bundle:\n${feeds.map((f) => `- ${f.name}`).join('\n')}`, data: { installed: feeds.length, feeds } };
80
+ },
81
+ };
82
+ export const feedPollTool = {
83
+ name: 'feed_poll',
84
+ description: 'Poll RSS/Atom feeds for new articles. Can poll a specific feed or all due feeds.',
85
+ category: 'data',
86
+ parameters: FeedPollParams,
87
+ securityLevel: 'safe',
88
+ async execute(_context, params) {
89
+ if (params.feedId) {
90
+ const { pollFeed } = await import('../../../feeds/index.js');
91
+ const result = await pollFeed(params.feedId);
92
+ return { success: !result.errors, output: result.errors ? `Poll failed: ${result.errors}` : `Found ${result.newArticles} new articles`, data: result };
93
+ }
94
+ const { pollAllFeeds } = await import('../../../feeds/index.js');
95
+ const result = await pollAllFeeds();
96
+ return { success: true, output: `Polled ${result.total} feeds: ${result.newArticles} new articles, ${result.errors} errors`, data: result };
97
+ },
98
+ };
99
+ export const feedDigestTool = {
100
+ name: 'feed_digest',
101
+ description: 'Get recent articles from RSS feeds for building a news digest. Returns article titles, summaries, and URLs.',
102
+ category: 'data',
103
+ parameters: FeedDigestParams,
104
+ securityLevel: 'safe',
105
+ async execute(_context, params) {
106
+ const { getDigestArticles, markAsDigested } = await import('../../../feeds/index.js');
107
+ const hours = params.hours || 24;
108
+ const since = new Date(Date.now() - hours * 60 * 60 * 1000);
109
+ const articles = await getDigestArticles({ since, category: params.category, limit: params.limit || 20, undigestedOnly: true });
110
+ if (articles.length === 0) {
111
+ return { success: true, output: `No new articles in the last ${hours} hours${params.category ? ` for category "${params.category}"` : ''}. Try polling feeds first with feed_poll.` };
112
+ }
113
+ await markAsDigested(articles.map((a) => a.id));
114
+ const lines = articles.map((a, i) => `${i + 1}. ${a.title}\n ${a.url}\n ${a.summary || '(no summary)'}`);
115
+ return { success: true, output: `${articles.length} articles from the last ${hours} hours:\n\n${lines.join('\n\n')}`, data: articles };
116
+ },
117
+ };
118
+ export const feedDiscoverTool = {
119
+ name: 'feed_discover',
120
+ description: 'Auto-discover an RSS/Atom feed URL from a website. Checks link tags and common feed paths.',
121
+ category: 'data',
122
+ parameters: FeedDiscoverParams,
123
+ securityLevel: 'safe',
124
+ async execute(_context, params) {
125
+ const { discoverFeedUrl } = await import('../../../feeds/index.js');
126
+ const feedUrl = await discoverFeedUrl(params.url);
127
+ if (feedUrl) {
128
+ return { success: true, output: `Found feed: ${feedUrl}\nUse feed_add to subscribe.`, data: { feedUrl } };
129
+ }
130
+ return { success: true, output: `No feed found at ${params.url}. The site may not have an RSS/Atom feed.` };
131
+ },
132
+ };
133
+ // Export all feed tools as array (cast for generic compatibility)
134
+ export const feedTools = [
135
+ feedListTool,
136
+ feedAddTool,
137
+ feedBundleInstallTool,
138
+ feedPollTool,
139
+ feedDigestTool,
140
+ feedDiscoverTool,
141
+ ];
142
+ //# sourceMappingURL=feed-tools.js.map
@@ -66,8 +66,8 @@ declare const GrepParamsSchema: z.ZodObject<{
66
66
  pattern: string;
67
67
  path?: string | undefined;
68
68
  context?: number | undefined;
69
- maxResults?: number | undefined;
70
69
  glob?: string | undefined;
70
+ maxResults?: number | undefined;
71
71
  }>;
72
72
  declare const EditFileParamsSchema: z.ZodObject<{
73
73
  path: z.ZodString;
@@ -14,7 +14,7 @@ declare const GithubPrParamsSchema: z.ZodObject<{
14
14
  base: z.ZodDefault<z.ZodOptional<z.ZodString>>;
15
15
  head: z.ZodOptional<z.ZodString>;
16
16
  }, "strip", z.ZodTypeAny, {
17
- action: "comment" | "create" | "get" | "diff" | "list" | "merge";
17
+ action: "comment" | "create" | "get" | "list" | "diff" | "merge";
18
18
  base: string;
19
19
  title?: string | undefined;
20
20
  repo?: string | undefined;
@@ -22,7 +22,7 @@ declare const GithubPrParamsSchema: z.ZodObject<{
22
22
  head?: string | undefined;
23
23
  pr_number?: number | undefined;
24
24
  }, {
25
- action: "comment" | "create" | "get" | "diff" | "list" | "merge";
25
+ action: "comment" | "create" | "get" | "list" | "diff" | "merge";
26
26
  title?: string | undefined;
27
27
  repo?: string | undefined;
28
28
  body?: string | undefined;
@@ -7,6 +7,8 @@ import type { ToolDefinition } from '../types.js';
7
7
  export { execTool } from './exec.js';
8
8
  export { webFetchTool } from './web-fetch.js';
9
9
  export { readFileTool, writeFileTool, searchFilesTool, grepTool, editFileTool, directoryTreeTool, patchApplyTool } from './file-ops.js';
10
+ export { multiPatchTool } from './multi-patch.js';
11
+ export type { MultiPatchParams, MultiPatchResult, MultiPatchFileResult } from './multi-patch.js';
10
12
  export { githubPrTool } from './github.js';
11
13
  export { testRunTool } from './test-run.js';
12
14
  export { imageAnalyzeTool } from './image-analyze.js';
@@ -20,10 +22,13 @@ export { agentsListTool } from './agents-list.js';
20
22
  export { memorySearchTool, memoryGetTool, memoryStatsTool } from './memory-tools.js';
21
23
  export { webSearchTool } from './web-search.js';
22
24
  export { completeTaskTool } from './complete-task.js';
25
+ export { decomposeTaskTool } from './decompose-task.js';
26
+ export type { DecomposeTaskParams } from './decompose-task.js';
23
27
  export { cronCreateTool, cronListTool, cronTriggerTool, cronPauseTool, cronArchiveTool, cronDeleteTool, cronHistoryTool, cronTools, } from './cron-tool.js';
24
28
  export { createTicketTool, createProjectTool, listTicketsTool, listProjectsTool, updateTicketTool, getTicketTool, profclawTools, } from './profclaw-ops.js';
25
29
  export type { CronCreateParams, CronCreateResult, CronListParams, CronListResult, CronTriggerParams, CronTriggerResult, CronPauseParams, CronPauseResult, CronArchiveParams, CronArchiveResult, CronDeleteParams, CronDeleteResult, CronHistoryParams, CronHistoryResult, } from './cron-tool.js';
26
- export { browserNavigateTool, browserSnapshotTool, browserClickTool, browserTypeTool, browserSearchTool, browserScreenshotTool, browserPagesTool, browserCloseTool, browserTools, } from './browser.js';
30
+ export { typeCheckTool, lintTool, buildTool, formatTool, projectInfoTool, createPrTool, codeTools, } from './code-tools.js';
31
+ export { feedListTool, feedAddTool, feedBundleInstallTool, feedPollTool, feedDigestTool, feedDiscoverTool, feedTools, } from './feed-tools.js';
27
32
  export { canvasRenderTool } from './canvas.js';
28
33
  export type { CanvasRenderResult, CanvasArtifact } from './canvas.js';
29
34
  export { getArtifact, listArtifacts, clearArtifacts } from './canvas.js';
@@ -44,6 +49,10 @@ export type { SlackActionsResult } from './slack-actions.js';
44
49
  export { telegramActionsTool } from './telegram-actions.js';
45
50
  export type { TelegramActionsResult } from './telegram-actions.js';
46
51
  export { spawnSessionTool, sendMessageTool, receiveMessagesTool, listSessionsTool, sessionSpawnTools, } from './session-spawn.js';
52
+ export { replTool, listReplSessions, closeReplSession, getReplSessionsMap, } from './repl-tool.js';
53
+ export type { REPLSession, REPLResult, ReplExecuteParams } from './repl-tool.js';
54
+ export { todoWriteTool, todoReadTool, clearTodos, getTodos, getTodoStore, } from './todo-tool.js';
55
+ export type { TodoItem, TodoStatus, TodoPriority, TodoWriteResult, TodoReadResult, TodoWriteParams, TodoReadParams, } from './todo-tool.js';
47
56
  export type { ExecResult } from './exec.js';
48
57
  export type { WebFetchResult } from './web-fetch.js';
49
58
  export type { ReadFileResult, WriteFileResult, SearchFilesResult, GrepResult, GrepMatch, EditFileResult, DirectoryTreeResult, PatchApplyResult } from './file-ops.js';
@@ -59,6 +68,9 @@ export type { BrowserNavigateResult, BrowserSnapshotResult, BrowserClickResult,
59
68
  export declare const builtinTools: ToolDefinition[];
60
69
  /**
61
70
  * Register all built-in tools (with tier assignments and mode gating)
71
+ *
72
+ * Browser and canvas tools are loaded dynamically to avoid pulling in
73
+ * playwright-core (~72MB) in modes that don't need it.
62
74
  */
63
- export declare function registerBuiltinTools(): void;
75
+ export declare function registerBuiltinTools(): Promise<void>;
64
76
  //# sourceMappingURL=index.d.ts.map
@@ -37,14 +37,30 @@ import { completeTaskTool } from './complete-task.js';
37
37
  import { cronTools } from './cron-tool.js';
38
38
  // profClaw ops tools (ticket, project management)
39
39
  import { profclawTools } from './profclaw-ops.js';
40
- // Browser tools
41
- import { browserTools } from './browser.js';
42
- // Canvas tools
40
+ // Browser tools — lazy loaded (playwright-core is ~72MB RSS)
41
+ let _browserTools = null;
42
+ async function loadBrowserTools() {
43
+ if (!_browserTools) {
44
+ const mod = await import('./browser.js');
45
+ _browserTools = mod.browserTools;
46
+ }
47
+ return _browserTools;
48
+ }
49
+ // Canvas tools — no heavy deps, safe to import statically
43
50
  import { canvasRenderTool } from './canvas.js';
44
51
  // Session spawn tools (hierarchical agent sessions)
45
52
  import { sessionSpawnTools } from './session-spawn.js';
46
53
  // Integration tools (screen capture, clipboard, notifications)
47
54
  import { screenCaptureTool, clipboardReadTool, clipboardWriteTool, notifyTool } from './integrations.js';
55
+ // Feed tools
56
+ import { feedTools } from './feed-tools.js';
57
+ // Code tools (typecheck, lint, build, format, project_info, create_pr)
58
+ import { codeTools } from './code-tools.js';
59
+ // Multi-file patch tool
60
+ import { multiPatchTool } from './multi-patch.js';
61
+ // REPL and Todo tools
62
+ import { replTool } from './repl-tool.js';
63
+ import { todoWriteTool, todoReadTool } from './todo-tool.js';
48
64
  // Phase 3 parity tools
49
65
  import { openaiImageGenTool } from './openai-image-gen.js';
50
66
  import { ttsSpeakTool } from './tts-speak.js';
@@ -53,10 +69,13 @@ import { subagentOrchestrateTool } from './subagent-orchestrate.js';
53
69
  import { discordActionsTool } from './discord-actions.js';
54
70
  import { slackActionsTool } from './slack-actions.js';
55
71
  import { telegramActionsTool } from './telegram-actions.js';
72
+ // Decompose task tool (checkpoint / resume)
73
+ import { decomposeTaskTool } from './decompose-task.js';
56
74
  // Export individual tools
57
75
  export { execTool } from './exec.js';
58
76
  export { webFetchTool } from './web-fetch.js';
59
77
  export { readFileTool, writeFileTool, searchFilesTool, grepTool, editFileTool, directoryTreeTool, patchApplyTool } from './file-ops.js';
78
+ export { multiPatchTool } from './multi-patch.js';
60
79
  // GitHub tools exports
61
80
  export { githubPrTool } from './github.js';
62
81
  // Test tools exports
@@ -77,12 +96,17 @@ export { memorySearchTool, memoryGetTool, memoryStatsTool } from './memory-tools
77
96
  export { webSearchTool } from './web-search.js';
78
97
  // Task completion tool exports
79
98
  export { completeTaskTool } from './complete-task.js';
99
+ // Decompose task tool exports
100
+ export { decomposeTaskTool } from './decompose-task.js';
80
101
  // Cron tools exports
81
102
  export { cronCreateTool, cronListTool, cronTriggerTool, cronPauseTool, cronArchiveTool, cronDeleteTool, cronHistoryTool, cronTools, } from './cron-tool.js';
82
103
  // profClaw ops tools exports
83
104
  export { createTicketTool, createProjectTool, listTicketsTool, listProjectsTool, updateTicketTool, getTicketTool, profclawTools, } from './profclaw-ops.js';
84
- // Browser tools exports
85
- export { browserNavigateTool, browserSnapshotTool, browserClickTool, browserTypeTool, browserSearchTool, browserScreenshotTool, browserPagesTool, browserCloseTool, browserTools, } from './browser.js';
105
+ // Code tools exports
106
+ export { typeCheckTool, lintTool, buildTool, formatTool, projectInfoTool, createPrTool, codeTools, } from './code-tools.js';
107
+ // Feed tools exports
108
+ export { feedListTool, feedAddTool, feedBundleInstallTool, feedPollTool, feedDigestTool, feedDiscoverTool, feedTools, } from './feed-tools.js';
109
+ // Browser tools — import directly from './browser.js' when needed (lazy loaded to save ~72MB)
86
110
  // Canvas tools exports
87
111
  export { canvasRenderTool } from './canvas.js';
88
112
  export { getArtifact, listArtifacts, clearArtifacts } from './canvas.js';
@@ -98,6 +122,10 @@ export { slackActionsTool } from './slack-actions.js';
98
122
  export { telegramActionsTool } from './telegram-actions.js';
99
123
  // Session spawn tools exports (hierarchical agent sessions)
100
124
  export { spawnSessionTool, sendMessageTool, receiveMessagesTool, listSessionsTool, sessionSpawnTools, } from './session-spawn.js';
125
+ // REPL tool exports
126
+ export { replTool, listReplSessions, closeReplSession, getReplSessionsMap, } from './repl-tool.js';
127
+ // Todo tool exports
128
+ export { todoWriteTool, todoReadTool, clearTodos, getTodos, getTodoStore, } from './todo-tool.js';
101
129
  // Tool Tier Assignments
102
130
  /**
103
131
  * Tool tier map: assigns each tool to essential/standard/full tier.
@@ -124,13 +152,15 @@ const TOOL_TIER_MAP = {
124
152
  git_status: 'essential',
125
153
  web_fetch: 'essential',
126
154
  complete_task: 'essential',
155
+ decompose_task: 'standard',
127
156
  // Standard tier - needs moderate reasoning (14B+)
128
157
  git_diff: 'standard',
129
158
  git_log: 'standard',
130
159
  git_commit: 'standard',
131
160
  git_branch: 'standard',
132
161
  patch_apply: 'standard',
133
- web_search: 'standard',
162
+ multi_patch: 'standard',
163
+ web_search: 'essential',
134
164
  memory_search: 'standard',
135
165
  memory_get: 'standard',
136
166
  memory_stats: 'standard',
@@ -149,6 +179,22 @@ const TOOL_TIER_MAP = {
149
179
  link_understand: 'standard',
150
180
  github_pr: 'standard',
151
181
  notify: 'standard',
182
+ feed_list: 'standard',
183
+ feed_add: 'standard',
184
+ feed_bundle_install: 'standard',
185
+ feed_poll: 'standard',
186
+ feed_digest: 'standard',
187
+ feed_discover: 'standard',
188
+ typecheck: 'standard',
189
+ lint: 'standard',
190
+ build: 'standard',
191
+ format: 'standard',
192
+ project_info: 'essential',
193
+ create_pr: 'standard',
194
+ // REPL and Todo tools — standard (need moderate reasoning)
195
+ repl_execute: 'standard',
196
+ todo_write: 'standard',
197
+ todo_read: 'standard',
152
198
  // Full tier - only for large/frontier models (everything else)
153
199
  // git_stash, git_remote, canvas_render, all session tools,
154
200
  // all browser tools, all cron tools, all integration tools,
@@ -173,6 +219,7 @@ const rawBuiltinTools = [
173
219
  grepTool,
174
220
  directoryTreeTool,
175
221
  patchApplyTool,
222
+ multiPatchTool,
176
223
  imageAnalyzeTool,
177
224
  canvasRenderTool,
178
225
  // Git tools (7)
@@ -202,12 +249,12 @@ const rawBuiltinTools = [
202
249
  memoryStatsTool,
203
250
  // Web search (1)
204
251
  webSearchTool,
205
- // Task completion (1)
252
+ // Task completion + decomposition (2)
206
253
  completeTaskTool,
254
+ decomposeTaskTool,
207
255
  // Cron tools (7)
208
256
  ...cronTools,
209
- // Browser tools (8)
210
- ...browserTools,
257
+ // Browser tools (8) — loaded dynamically in registerBuiltinTools
211
258
  // profClaw ops tools (6)
212
259
  ...profclawTools,
213
260
  // Session spawn tools (4) - hierarchical agent sessions
@@ -223,6 +270,15 @@ const rawBuiltinTools = [
223
270
  clipboardReadTool,
224
271
  clipboardWriteTool,
225
272
  notifyTool,
273
+ // Feed tools (6)
274
+ ...feedTools,
275
+ // Code tools (6) - typecheck, lint, build, format, project_info, create_pr
276
+ ...codeTools,
277
+ // REPL tool (1)
278
+ replTool,
279
+ // Todo tools (2)
280
+ todoWriteTool,
281
+ todoReadTool,
226
282
  // Phase 3 parity tools (7)
227
283
  openaiImageGenTool,
228
284
  ttsSpeakTool,
@@ -243,6 +299,10 @@ const CRON_TOOL_NAMES = new Set([
243
299
  'cron_create', 'cron_list', 'cron_trigger', 'cron_pause',
244
300
  'cron_archive', 'cron_delete', 'cron_history',
245
301
  ]);
302
+ const FEED_TOOL_NAMES = new Set([
303
+ 'feed_list', 'feed_add', 'feed_bundle_install', 'feed_poll',
304
+ 'feed_digest', 'feed_discover',
305
+ ]);
246
306
  const CHANNEL_TOOL_NAMES = new Set([
247
307
  'discord_actions', 'slack_actions', 'telegram_actions',
248
308
  ]);
@@ -252,16 +312,30 @@ const INTEGRATION_TOOL_NAMES = new Set([
252
312
  ]);
253
313
  /**
254
314
  * Register all built-in tools (with tier assignments and mode gating)
315
+ *
316
+ * Browser and canvas tools are loaded dynamically to avoid pulling in
317
+ * playwright-core (~72MB) in modes that don't need it.
255
318
  */
256
- export function registerBuiltinTools() {
319
+ export async function registerBuiltinTools() {
257
320
  const registry = getToolRegistry();
258
- const modeFilteredTools = builtinTools.filter((tool) => {
259
- // Browser tools: pro only (browser_tools capability)
321
+ // Dynamically load heavy tools only when their capability is enabled
322
+ // Browser tools pull in playwright-core (~72MB) so we skip in pico/mini
323
+ const dynamicTools = [];
324
+ if (hasCapability('browser_tools')) {
325
+ const browser = await loadBrowserTools();
326
+ dynamicTools.push(...browser);
327
+ }
328
+ const allTools = [...builtinTools, ...applyTiers(dynamicTools)];
329
+ const modeFilteredTools = allTools.filter((tool) => {
330
+ // Browser tools: pro only (browser_tools capability) — already gated above
260
331
  if (BROWSER_TOOL_NAMES.has(tool.name))
261
332
  return hasCapability('browser_tools');
262
333
  // Cron tools: mini+ (cron capability)
263
334
  if (CRON_TOOL_NAMES.has(tool.name))
264
335
  return hasCapability('cron');
336
+ // Feed tools: mini+ (cron capability - feeds are part of automation)
337
+ if (FEED_TOOL_NAMES.has(tool.name))
338
+ return hasCapability('cron');
265
339
  // Channel action tools: mini+ (chat_channels capability)
266
340
  if (CHANNEL_TOOL_NAMES.has(tool.name))
267
341
  return hasCapability('chat_channels');
@@ -11,15 +11,15 @@ declare const ScreenCaptureParamsSchema: z.ZodObject<{
11
11
  width: z.ZodNumber;
12
12
  height: z.ZodNumber;
13
13
  }, "strip", z.ZodTypeAny, {
14
- width: number;
15
- height: number;
16
14
  x: number;
17
15
  y: number;
18
- }, {
19
16
  width: number;
20
17
  height: number;
18
+ }, {
21
19
  x: number;
22
20
  y: number;
21
+ width: number;
22
+ height: number;
23
23
  }>>;
24
24
  format: z.ZodDefault<z.ZodOptional<z.ZodEnum<["png", "jpg"]>>>;
25
25
  output: z.ZodOptional<z.ZodString>;
@@ -28,21 +28,21 @@ declare const ScreenCaptureParamsSchema: z.ZodObject<{
28
28
  display: number;
29
29
  output?: string | undefined;
30
30
  region?: {
31
- width: number;
32
- height: number;
33
31
  x: number;
34
32
  y: number;
33
+ width: number;
34
+ height: number;
35
35
  } | undefined;
36
36
  }, {
37
37
  output?: string | undefined;
38
38
  format?: "png" | "jpg" | undefined;
39
+ display?: number | undefined;
39
40
  region?: {
40
- width: number;
41
- height: number;
42
41
  x: number;
43
42
  y: number;
43
+ width: number;
44
+ height: number;
44
45
  } | undefined;
45
- display?: number | undefined;
46
46
  }>;
47
47
  declare const ClipboardReadParamsSchema: z.ZodObject<{
48
48
  format: z.ZodDefault<z.ZodOptional<z.ZodEnum<["text", "html"]>>>;
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Multi-File Patch Tool
3
+ *
4
+ * Applies OpenAI-style multi-file patches that can add, update, and delete
5
+ * multiple files in a single operation.
6
+ *
7
+ * Format:
8
+ * *** Begin Patch
9
+ * *** Add File: path/to/new.ts
10
+ * [file content]
11
+ * *** Update File: path/to/existing.ts
12
+ * @@ context @@
13
+ * -old line
14
+ * +new line
15
+ * *** Delete File: path/to/remove.ts
16
+ * *** End Patch
17
+ */
18
+ import { z } from 'zod';
19
+ import type { ToolDefinition } from '../types.js';
20
+ declare const MultiPatchParamsSchema: z.ZodObject<{
21
+ patch: z.ZodString;
22
+ workdir: z.ZodOptional<z.ZodString>;
23
+ }, "strip", z.ZodTypeAny, {
24
+ patch: string;
25
+ workdir?: string | undefined;
26
+ }, {
27
+ patch: string;
28
+ workdir?: string | undefined;
29
+ }>;
30
+ export type MultiPatchParams = z.infer<typeof MultiPatchParamsSchema>;
31
+ export interface MultiPatchFileResult {
32
+ /** The file path that was targeted. */
33
+ path: string;
34
+ /** Operation performed on this file. */
35
+ operation: 'add' | 'update' | 'delete';
36
+ /** Whether the operation succeeded. */
37
+ success: boolean;
38
+ /** Number of hunks applied (update only). */
39
+ hunks?: number;
40
+ /** Error message if the operation failed. */
41
+ error?: string;
42
+ }
43
+ export interface MultiPatchResult {
44
+ /** Per-file results. */
45
+ files: MultiPatchFileResult[];
46
+ /** Total files successfully changed. */
47
+ applied: number;
48
+ /** Total files that failed. */
49
+ failed: number;
50
+ }
51
+ export declare const multiPatchTool: ToolDefinition<MultiPatchParams, MultiPatchResult>;
52
+ export {};
53
+ //# sourceMappingURL=multi-patch.d.ts.map