profclaw 0.0.1-beta.3 → 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 (535) hide show
  1. package/.env.example +14 -2
  2. package/CHANGELOG.md +54 -34
  3. package/CONTRIBUTING.md +23 -5
  4. package/Dockerfile +39 -23
  5. package/README.md +271 -72
  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 +15 -3
  71. package/dist/chat/execution/tools/index.js +125 -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/slack/index.d.ts +2 -2
  104. package/dist/chat/providers/telegram/index.d.ts +2 -0
  105. package/dist/chat/providers/telegram/index.js +21 -2
  106. package/dist/chat/system-prompts.d.ts +3 -3
  107. package/dist/chat/system-prompts.js +116 -61
  108. package/dist/chat/tools.d.ts +6 -6
  109. package/dist/cli/commands/auth.js +64 -1
  110. package/dist/cli/commands/chat.js +1327 -138
  111. package/dist/cli/commands/doctor.js +222 -16
  112. package/dist/cli/commands/history.d.ts +3 -0
  113. package/dist/cli/commands/history.js +138 -0
  114. package/dist/cli/commands/import.d.ts +44 -0
  115. package/dist/cli/commands/import.js +526 -0
  116. package/dist/cli/commands/init.d.ts +13 -0
  117. package/dist/cli/commands/init.js +381 -0
  118. package/dist/cli/commands/models.js +39 -26
  119. package/dist/cli/commands/onboard.js +263 -98
  120. package/dist/cli/commands/plan.d.ts +13 -0
  121. package/dist/cli/commands/plan.js +184 -0
  122. package/dist/cli/commands/serve.d.ts +7 -0
  123. package/dist/cli/commands/serve.js +77 -18
  124. package/dist/cli/commands/setup.js +375 -91
  125. package/dist/cli/commands/status.js +54 -0
  126. package/dist/cli/commands/tools.js +13 -13
  127. package/dist/cli/commands/tui.js +26 -1
  128. package/dist/cli/index.js +19 -6
  129. package/dist/cli/ink/App.d.ts +13 -0
  130. package/dist/cli/ink/App.js +6 -0
  131. package/dist/cli/ink/ChatApp.d.ts +60 -0
  132. package/dist/cli/ink/ChatApp.js +325 -0
  133. package/dist/cli/ink/DashboardApp.d.ts +3 -0
  134. package/dist/cli/ink/DashboardApp.js +143 -0
  135. package/dist/cli/ink/components/AgentStatus.d.ts +17 -0
  136. package/dist/cli/ink/components/AgentStatus.js +33 -0
  137. package/dist/cli/ink/components/ChannelList.d.ts +17 -0
  138. package/dist/cli/ink/components/ChannelList.js +33 -0
  139. package/dist/cli/ink/components/ConnectionStatus.d.ts +19 -0
  140. package/dist/cli/ink/components/ConnectionStatus.js +50 -0
  141. package/dist/cli/ink/components/CostBar.d.ts +19 -0
  142. package/dist/cli/ink/components/CostBar.js +35 -0
  143. package/dist/cli/ink/components/HookStatus.d.ts +15 -0
  144. package/dist/cli/ink/components/HookStatus.js +7 -0
  145. package/dist/cli/ink/components/PermissionPrompt.d.ts +21 -0
  146. package/dist/cli/ink/components/PermissionPrompt.js +51 -0
  147. package/dist/cli/ink/components/PlanView.d.ts +23 -0
  148. package/dist/cli/ink/components/PlanView.js +26 -0
  149. package/dist/cli/ink/components/ProviderList.d.ts +16 -0
  150. package/dist/cli/ink/components/ProviderList.js +16 -0
  151. package/dist/cli/ink/components/SessionHeader.d.ts +15 -0
  152. package/dist/cli/ink/components/SessionHeader.js +15 -0
  153. package/dist/cli/ink/components/StreamingMessage.d.ts +20 -0
  154. package/dist/cli/ink/components/StreamingMessage.js +27 -0
  155. package/dist/cli/ink/components/SuggestionBar.d.ts +15 -0
  156. package/dist/cli/ink/components/SuggestionBar.js +28 -0
  157. package/dist/cli/ink/components/SystemHealth.d.ts +20 -0
  158. package/dist/cli/ink/components/SystemHealth.js +39 -0
  159. package/dist/cli/ink/components/TaskList.d.ts +17 -0
  160. package/dist/cli/ink/components/TaskList.js +59 -0
  161. package/dist/cli/ink/components/ToolCall.d.ts +17 -0
  162. package/dist/cli/ink/components/ToolCall.js +43 -0
  163. package/dist/cli/ink/index.d.ts +23 -0
  164. package/dist/cli/ink/index.js +15 -0
  165. package/dist/cli/ink/keybindings.d.ts +35 -0
  166. package/dist/cli/ink/keybindings.js +105 -0
  167. package/dist/cli/ink/markdown-renderer.d.ts +47 -0
  168. package/dist/cli/ink/markdown-renderer.js +380 -0
  169. package/dist/cli/ink/output-styles.d.ts +39 -0
  170. package/dist/cli/ink/output-styles.js +119 -0
  171. package/dist/cli/interactive/auto-serve.d.ts +38 -0
  172. package/dist/cli/interactive/auto-serve.js +209 -0
  173. package/dist/cli/interactive/index.d.ts +25 -0
  174. package/dist/cli/interactive/index.js +23 -0
  175. package/dist/cli/interactive/picker.d.ts +28 -0
  176. package/dist/cli/interactive/picker.js +153 -0
  177. package/dist/cli/interactive/renderer.d.ts +26 -0
  178. package/dist/cli/interactive/renderer.js +555 -0
  179. package/dist/cli/interactive/repl.d.ts +14 -0
  180. package/dist/cli/interactive/repl.js +1516 -0
  181. package/dist/cli/interactive/stream-client.d.ts +59 -0
  182. package/dist/cli/interactive/stream-client.js +506 -0
  183. package/dist/cli/interactive/types.d.ts +121 -0
  184. package/dist/cli/interactive/types.js +10 -0
  185. package/dist/cli/providers.d.ts +15 -0
  186. package/dist/cli/providers.js +41 -0
  187. package/dist/cli/utils/api.d.ts +9 -0
  188. package/dist/cli/utils/api.js +58 -2
  189. package/dist/core/deployment.js +2 -0
  190. package/dist/cron/natural-language.d.ts +54 -0
  191. package/dist/cron/natural-language.js +569 -0
  192. package/dist/cron/scheduler.d.ts +34 -4
  193. package/dist/cron/scheduler.js +141 -9
  194. package/dist/cron/templates.d.ts +1 -1
  195. package/dist/cron/templates.js +219 -0
  196. package/dist/feeds/feed-engine.d.ts +149 -0
  197. package/dist/feeds/feed-engine.js +600 -0
  198. package/dist/feeds/index.d.ts +9 -0
  199. package/dist/feeds/index.js +8 -0
  200. package/dist/gateway/router.js +6 -1
  201. package/dist/hooks/built-in/audit-log.d.ts +11 -0
  202. package/dist/hooks/built-in/audit-log.js +84 -0
  203. package/dist/hooks/built-in/cost-warning.d.ts +10 -0
  204. package/dist/hooks/built-in/cost-warning.js +59 -0
  205. package/dist/hooks/built-in/dangerous-tool.d.ts +32 -0
  206. package/dist/hooks/built-in/dangerous-tool.js +80 -0
  207. package/dist/hooks/built-in/index.d.ts +14 -0
  208. package/dist/hooks/built-in/index.js +20 -0
  209. package/dist/hooks/index.d.ts +3 -0
  210. package/dist/hooks/index.js +6 -0
  211. package/dist/hooks/loader.d.ts +17 -0
  212. package/dist/hooks/loader.js +142 -0
  213. package/dist/hooks/registry.d.ts +62 -0
  214. package/dist/hooks/registry.js +127 -0
  215. package/dist/integrations/web-search.js +6 -3
  216. package/dist/memory/index.d.ts +1 -0
  217. package/dist/memory/index.js +2 -0
  218. package/dist/memory/memory-service.js +14 -13
  219. package/dist/memory/observational.d.ts +62 -0
  220. package/dist/memory/observational.js +396 -0
  221. package/dist/middleware/content-filter.d.ts +22 -0
  222. package/dist/middleware/content-filter.js +69 -0
  223. package/dist/middleware/request-validator.d.ts +159 -0
  224. package/dist/middleware/request-validator.js +93 -0
  225. package/dist/plugins/sdk.d.ts +22 -0
  226. package/dist/plugins/sdk.js +17 -1
  227. package/dist/projects/types.d.ts +10 -10
  228. package/dist/providers/ai-sdk.d.ts +11 -0
  229. package/dist/providers/ai-sdk.js +97 -18
  230. package/dist/providers/core/models.js +67 -1
  231. package/dist/providers/core/types.d.ts +3 -0
  232. package/dist/providers/index.d.ts +1 -0
  233. package/dist/providers/index.js +1 -0
  234. package/dist/providers/smart-router.d.ts +118 -0
  235. package/dist/providers/smart-router.js +685 -0
  236. package/dist/providers/types.d.ts +16 -16
  237. package/dist/routes/agents.js +50 -0
  238. package/dist/routes/auth.js +8 -1
  239. package/dist/routes/channels.d.ts +12 -0
  240. package/dist/routes/channels.js +166 -0
  241. package/dist/routes/chat.js +259 -14
  242. package/dist/routes/costs.js +32 -0
  243. package/dist/routes/cron.js +80 -5
  244. package/dist/routes/feeds.d.ts +10 -0
  245. package/dist/routes/feeds.js +168 -0
  246. package/dist/routes/mcp.js +21 -0
  247. package/dist/routes/memory.js +130 -0
  248. package/dist/routes/skills.js +129 -0
  249. package/dist/routes/teams.d.ts +9 -0
  250. package/dist/routes/teams.js +210 -0
  251. package/dist/routes/tools.js +14 -0
  252. package/dist/routes/users.js +2 -0
  253. package/dist/server/route-loader.js +4 -1
  254. package/dist/server/stream-bridge.d.ts +19 -0
  255. package/dist/server/stream-bridge.js +38 -0
  256. package/dist/server.js +421 -141
  257. package/dist/skills/marketplace.d.ts +87 -0
  258. package/dist/skills/marketplace.js +268 -0
  259. package/dist/storage/index.d.ts +14 -0
  260. package/dist/storage/index.js +64 -3
  261. package/dist/storage/schema.d.ts +4 -4
  262. package/dist/storage/schema.js +1 -1
  263. package/dist/teams/index.d.ts +110 -0
  264. package/dist/teams/index.js +365 -0
  265. package/dist/tickets/types.d.ts +39 -39
  266. package/dist/types/summary.d.ts +5 -5
  267. package/dist/utils/auto-update.d.ts +23 -0
  268. package/dist/utils/auto-update.js +157 -0
  269. package/dist/utils/offline-detect.d.ts +55 -0
  270. package/dist/utils/offline-detect.js +121 -0
  271. package/dist/utils/pid-file.d.ts +36 -0
  272. package/dist/utils/pid-file.js +125 -0
  273. package/dist/utils/prevent-sleep.d.ts +27 -0
  274. package/dist/utils/prevent-sleep.js +95 -0
  275. package/dist/utils/sanitizer.d.ts +57 -0
  276. package/dist/utils/sanitizer.js +174 -0
  277. package/docker-compose.yml +13 -137
  278. package/package.json +31 -6
  279. package/skills/deploy-cloudflare/SKILL.md +62 -0
  280. package/skills/deploy-vercel/SKILL.md +67 -0
  281. package/skills/docker-deploy/SKILL.md +158 -0
  282. package/skills/full-stack-builder/SKILL.md +92 -0
  283. package/skills/git-workflow/SKILL.md +3 -3
  284. package/skills/humanizer/SKILL.md +488 -0
  285. package/skills/profclaw-assistant/SKILL.md +85 -56
  286. package/ui/dist/assets/ActivityView-Da6HQ8ws.js +1 -0
  287. package/ui/dist/assets/AgentList-H58R0kX3.js +1 -0
  288. package/ui/dist/assets/AnalyticsDashboard-B28AeRsc.js +1 -0
  289. package/ui/dist/assets/AreaChart-DwLzeAQ8.js +1 -0
  290. package/ui/dist/assets/CartesianChart-piKQsTAR.js +36 -0
  291. package/ui/dist/assets/ChatView-Dbj8rxU5.js +10 -0
  292. package/ui/dist/assets/CostsDashboard-C6F5df0F.js +1 -0
  293. package/ui/dist/assets/EstimateSelect-wga0rUKX.js +1 -0
  294. package/ui/dist/assets/FeedDashboard-Ef6FEzEf.js +1 -0
  295. package/ui/dist/assets/FloatingChatbot-0yhkUeCq.js +2 -0
  296. package/ui/dist/assets/InviteCodeManagement-tUXfx4Bc.js +2 -0
  297. package/ui/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  298. package/ui/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  299. package/ui/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  300. package/ui/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  301. package/ui/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  302. package/ui/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  303. package/ui/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  304. package/ui/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  305. package/ui/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  306. package/ui/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  307. package/ui/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  308. package/ui/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  309. package/ui/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  310. package/ui/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  311. package/ui/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  312. package/ui/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  313. package/ui/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  314. package/ui/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  315. package/ui/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  316. package/ui/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  317. package/ui/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  318. package/ui/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  319. package/ui/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  320. package/ui/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  321. package/ui/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  322. package/ui/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  323. package/ui/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  324. package/ui/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  325. package/ui/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  326. package/ui/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  327. package/ui/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  328. package/ui/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  329. package/ui/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  330. package/ui/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  331. package/ui/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  332. package/ui/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  333. package/ui/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  334. package/ui/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  335. package/ui/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  336. package/ui/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  337. package/ui/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  338. package/ui/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  339. package/ui/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  340. package/ui/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  341. package/ui/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  342. package/ui/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  343. package/ui/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  344. package/ui/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  345. package/ui/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  346. package/ui/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  347. package/ui/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  348. package/ui/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  349. package/ui/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  350. package/ui/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  351. package/ui/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  352. package/ui/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  353. package/ui/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  354. package/ui/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  355. package/ui/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  356. package/ui/dist/assets/MarketplacePage-DGrLtolR.js +1 -0
  357. package/ui/dist/assets/{ProjectDetail-DlYUcOss.js → ProjectDetail-BgWvA6UP.js} +2 -2
  358. package/ui/dist/assets/ProjectIcon-TDuliqwg.js +1 -0
  359. package/ui/dist/assets/ProjectList-DXgM4187.js +1 -0
  360. package/ui/dist/assets/{Settings-CgPqzUvj.js → Settings-xA8Zhi3p.js} +3 -3
  361. package/ui/dist/assets/StatusIndicator-B8vfFAxg.js +1 -0
  362. package/ui/dist/assets/{SummaryDetail-CwLAfHgJ.js → SummaryDetail-eedRfTtF.js} +2 -2
  363. package/ui/dist/assets/SummaryList-CLNX2P84.js +1 -0
  364. package/ui/dist/assets/TaskDetail-BtWclNiR.js +1 -0
  365. package/ui/dist/assets/TaskList-JjODAgSc.js +1 -0
  366. package/ui/dist/assets/TeamsPage-CBK5iAyx.js +1 -0
  367. package/ui/dist/assets/TicketBoard-C9aJNNYp.js +1 -0
  368. package/ui/dist/assets/TicketDetail-CV5JmL31.js +1 -0
  369. package/ui/dist/assets/TicketList-68V4lzUz.js +1 -0
  370. package/ui/dist/assets/UserManagement-DKTb6UpE.js +2 -0
  371. package/ui/dist/assets/ViewSwitcher-BvdQht2Y.js +1 -0
  372. package/ui/dist/assets/alert-dialog-O6qBOv_f.js +1 -0
  373. package/ui/dist/assets/{archive-CGck7gxR.js → archive-CX7UvZpf.js} +1 -1
  374. package/ui/dist/assets/badge-BbfnwDJP.js +1 -0
  375. package/ui/dist/assets/{bug-DqSGPUUE.js → bug-3WX0394-.js} +1 -1
  376. package/ui/dist/assets/{calendar-BuZ4zbPW.js → calendar-buq77TaS.js} +1 -1
  377. package/ui/dist/assets/{chevron-up-DcJ4LL_N.js → chevron-up-4ymsBJRo.js} +1 -1
  378. package/ui/dist/assets/{circle-x-C78PNZjF.js → circle-x-ByXtwR6Y.js} +1 -1
  379. package/ui/dist/assets/constants-CVdDh7p0.js +1 -0
  380. package/ui/dist/assets/{cpu-Ck6AoG8c.js → cpu-CiuoCeDY.js} +1 -1
  381. package/ui/dist/assets/{database-CA2w8Lvt.js → database-BWXSBg5a.js} +1 -1
  382. package/ui/dist/assets/dialog-lDg4NvMV.js +1 -0
  383. package/ui/dist/assets/dollar-sign-Dmijd6DP.js +1 -0
  384. package/ui/dist/assets/{ellipsis-FhHKRbfl.js → ellipsis-vT-5SVIp.js} +1 -1
  385. package/ui/dist/assets/{ellipsis-vertical-CO0UqE4-.js → ellipsis-vertical-B4tAX_bL.js} +1 -1
  386. package/ui/dist/assets/feature-markdown-DBo5Q7uq.js +289 -0
  387. package/ui/dist/assets/{file-code-ChnhYYj1.js → file-code-ChOWdKXf.js} +1 -1
  388. package/ui/dist/assets/{folder-open-CHwA1-ve.js → folder-open-CkOUbIiP.js} +1 -1
  389. package/ui/dist/assets/{funnel-ByEjRFNB.js → funnel-uZkoSPP-.js} +1 -1
  390. package/ui/dist/assets/{git-branch-GTOPQgU4.js → git-branch-CwvUxj7C.js} +1 -1
  391. package/ui/dist/assets/{git-commit-horizontal-F5M84Kut.js → git-commit-horizontal-lxPzCvhD.js} +1 -1
  392. package/ui/dist/assets/{globe-CQWfr7hT.js → globe-D_WpJdsj.js} +1 -1
  393. package/ui/dist/assets/{hash-nKC9gtLg.js → hash-CA0hJ7vh.js} +1 -1
  394. package/ui/dist/assets/{history-DfFSA9xJ.js → history-CEWMLELs.js} +1 -1
  395. package/ui/dist/assets/inbox-ehtOptTV.js +1 -0
  396. package/ui/dist/assets/{index-a4Fxq0Hb.js → index-C1rhbml4.js} +3 -3
  397. package/ui/dist/assets/index-CR8gfCHv.js +1 -0
  398. package/ui/dist/assets/index-DVXMpWai.js +1 -0
  399. package/ui/dist/assets/index-DaDJMM2v.js +1 -0
  400. package/ui/dist/assets/index-Djdq_0xu.js +1 -0
  401. package/ui/dist/assets/index-M46Gcb8K.css +1 -0
  402. package/ui/dist/assets/index-sEBN7w8J.js +109 -0
  403. package/ui/dist/assets/layers-C6Mhf8Nk.js +1 -0
  404. package/ui/dist/assets/{layout-dashboard-WmgjMhWF.js → layout-dashboard-BRUM0kpT.js} +1 -1
  405. package/ui/dist/assets/{lightbulb-Bo8hEr7B.js → lightbulb-CN2q1O5l.js} +1 -1
  406. package/ui/dist/assets/{link-2-YqrpQXBH.js → link-2-CC4E28yJ.js} +1 -1
  407. package/ui/dist/assets/markdown-renderer-C6ENbB0u.js +10 -0
  408. package/ui/dist/assets/markdown-renderer-CfVKi3_s.css +1 -0
  409. package/ui/dist/assets/{message-square-CD0H5hot.js → message-square-Bbb241am.js} +1 -1
  410. package/ui/dist/assets/package-CwT3IzFx.js +1 -0
  411. package/ui/dist/assets/{pencil-DpFnj5dn.js → pencil-CDmiHzoj.js} +1 -1
  412. package/ui/dist/assets/{play-DVgea_jT.js → play-tjy5jMQX.js} +1 -1
  413. package/ui/dist/assets/popover-CFHZf3pE.js +1 -0
  414. package/ui/dist/assets/progress-BboUHuLf.js +1 -0
  415. package/ui/dist/assets/{rocket-BFxPYGx9.js → rocket--8ZHgdXJ.js} +1 -1
  416. package/ui/dist/assets/select-n108rXny.js +1 -0
  417. package/ui/dist/assets/{send-eYnW_7n-.js → send-Cu7MR2Qh.js} +1 -1
  418. package/ui/dist/assets/server-DmodxZp-.js +1 -0
  419. package/ui/dist/assets/{settings-2-scXUOuE_.js → settings-2-CkRNqkxj.js} +1 -1
  420. package/ui/dist/assets/sheet-7aUJkyzU.js +1 -0
  421. package/ui/dist/assets/{shield-check-PEr7nmVw.js → shield-check-ViI3nMKE.js} +1 -1
  422. package/ui/dist/assets/{shield-off-CLtXio62.js → shield-off-DN3tagkn.js} +1 -1
  423. package/ui/dist/assets/skeleton-C0E1Nfro.js +1 -0
  424. package/ui/dist/assets/{smartphone-DusFfY0U.js → smartphone-5FghiXpA.js} +1 -1
  425. package/ui/dist/assets/{square-e1yxB2eR.js → square-DiNSx8K7.js} +1 -1
  426. package/ui/dist/assets/star-DhdFVidS.js +1 -0
  427. package/ui/dist/assets/switch-CIgVbZqQ.js +1 -0
  428. package/ui/dist/assets/table-BC56FVMV.js +1 -0
  429. package/ui/dist/assets/{tag-tAwMmQ9G.js → tag-CH_vQliw.js} +1 -1
  430. package/ui/dist/assets/textarea-CxDiKFXZ.js +1 -0
  431. package/ui/dist/assets/{timer-Vel1N3RP.js → timer-CdGVTb60.js} +1 -1
  432. package/ui/dist/assets/tooltip-BuW9A5UO.js +1 -0
  433. package/ui/dist/assets/{trash-2-eM-CNwsZ.js → trash-2-CucZJL0N.js} +1 -1
  434. package/ui/dist/assets/trending-down-BCezC1z2.js +1 -0
  435. package/ui/dist/assets/{trending-up-BGafmjRo.js → trending-up-C5OYX2k2.js} +1 -1
  436. package/ui/dist/assets/vendor-query-C0p7b53x.js +4 -0
  437. package/ui/dist/assets/vendor-react-Mc5_kfYG.js +12 -0
  438. package/ui/dist/assets/vendor-ui-CXPAUBFv.js +51 -0
  439. package/ui/dist/assets/{wand-sparkles-DPvcd9Pi.js → wand-sparkles-BaH6pJnc.js} +1 -1
  440. package/ui/dist/assets/{wrench-B8s3zYVV.js → wrench-CjxjP6ok.js} +1 -1
  441. package/ui/dist/index.html +5 -2
  442. package/dist/chat/auto-reply.d.ts +0 -90
  443. package/dist/chat/auto-reply.js +0 -272
  444. package/dist/chat/execution/pty.d.ts +0 -92
  445. package/dist/chat/execution/pty.js +0 -285
  446. package/dist/chat/execution/tools/glinr-ops.d.ts +0 -202
  447. package/dist/chat/execution/tools/glinr-ops.js +0 -694
  448. package/dist/cli/commands/browser.d.ts +0 -3
  449. package/dist/cli/commands/browser.js +0 -138
  450. package/dist/cli/commands/canvas.d.ts +0 -3
  451. package/dist/cli/commands/canvas.js +0 -155
  452. package/dist/cli/commands/nodes.d.ts +0 -3
  453. package/dist/cli/commands/nodes.js +0 -193
  454. package/dist/diagnostics/exporters.d.ts +0 -21
  455. package/dist/diagnostics/exporters.js +0 -138
  456. package/dist/diagnostics/index.d.ts +0 -10
  457. package/dist/diagnostics/index.js +0 -9
  458. package/dist/diagnostics/middleware.d.ts +0 -12
  459. package/dist/diagnostics/middleware.js +0 -58
  460. package/dist/diagnostics/tracer.d.ts +0 -133
  461. package/dist/diagnostics/tracer.js +0 -257
  462. package/dist/discovery/index.d.ts +0 -8
  463. package/dist/discovery/index.js +0 -7
  464. package/dist/discovery/mdns.d.ts +0 -40
  465. package/dist/discovery/mdns.js +0 -249
  466. package/dist/plugins/registry.d.ts +0 -122
  467. package/dist/plugins/registry.js +0 -352
  468. package/dist/plugins/sandbox.d.ts +0 -77
  469. package/dist/plugins/sandbox.js +0 -287
  470. package/dist/plugins/search/brave.d.ts +0 -9
  471. package/dist/plugins/search/brave.js +0 -157
  472. package/dist/plugins/search/duckduckgo.d.ts +0 -9
  473. package/dist/plugins/search/duckduckgo.js +0 -171
  474. package/dist/plugins/search/index.d.ts +0 -13
  475. package/dist/plugins/search/index.js +0 -23
  476. package/dist/plugins/search/searxng.d.ts +0 -9
  477. package/dist/plugins/search/searxng.js +0 -170
  478. package/dist/plugins/search/serper.d.ts +0 -9
  479. package/dist/plugins/search/serper.js +0 -135
  480. package/dist/plugins/search/tavily.d.ts +0 -9
  481. package/dist/plugins/search/tavily.js +0 -146
  482. package/dist/providers/adapters/anthropic.d.ts +0 -26
  483. package/dist/providers/adapters/anthropic.js +0 -306
  484. package/dist/providers/adapters/base.d.ts +0 -53
  485. package/dist/providers/adapters/base.js +0 -99
  486. package/dist/providers/adapters/ollama.d.ts +0 -30
  487. package/dist/providers/adapters/ollama.js +0 -292
  488. package/dist/utils/ai-cache.d.ts +0 -72
  489. package/dist/utils/ai-cache.js +0 -204
  490. package/dist/utils/file-lock.d.ts +0 -85
  491. package/dist/utils/file-lock.js +0 -204
  492. package/ui/dist/assets/ActivityView-DIPQSJ_d.js +0 -1
  493. package/ui/dist/assets/AgentList-CqyaYrcq.js +0 -1
  494. package/ui/dist/assets/AnalyticsDashboard-C-mjuGHT.js +0 -1
  495. package/ui/dist/assets/AreaChart-CfYWmbtr.js +0 -1
  496. package/ui/dist/assets/CartesianChart-BaQ3It0c.js +0 -36
  497. package/ui/dist/assets/ChatView-DxxQy6pl.js +0 -10
  498. package/ui/dist/assets/CostsDashboard-CDBBcGkg.js +0 -1
  499. package/ui/dist/assets/EstimateSelect-CDjf5qKl.js +0 -1
  500. package/ui/dist/assets/FloatingChatbot-CZHjvJIe.js +0 -2
  501. package/ui/dist/assets/InviteCodeManagement-DTm-IPTm.js +0 -2
  502. package/ui/dist/assets/ProjectIcon-BMRpnM04.js +0 -1
  503. package/ui/dist/assets/ProjectList-D85TN0i0.js +0 -4
  504. package/ui/dist/assets/StatusIndicator-yig0uZEA.js +0 -1
  505. package/ui/dist/assets/SummaryList-BvS5Idnu.js +0 -1
  506. package/ui/dist/assets/TaskDetail-zarC1fOt.js +0 -1
  507. package/ui/dist/assets/TaskList-CyJq3ANE.js +0 -1
  508. package/ui/dist/assets/TicketBoard-BlWr3-iH.js +0 -1
  509. package/ui/dist/assets/TicketDetail-DmqWKj2W.js +0 -1
  510. package/ui/dist/assets/TicketList-Scj4pMWa.js +0 -1
  511. package/ui/dist/assets/UserManagement-BH7uG7dw.js +0 -2
  512. package/ui/dist/assets/ViewSwitcher-3HzZUdWn.js +0 -1
  513. package/ui/dist/assets/alert-dialog-DWPb2IfQ.js +0 -7
  514. package/ui/dist/assets/badge-DEmc3Z_l.js +0 -1
  515. package/ui/dist/assets/brain-CfFdLVqb.js +0 -1
  516. package/ui/dist/assets/constants-DhDjZe4P.js +0 -1
  517. package/ui/dist/assets/dialog-BOdGWhgE.js +0 -1
  518. package/ui/dist/assets/index--JkIxVXb.js +0 -67
  519. package/ui/dist/assets/index-Ca3vk7Gq.js +0 -1
  520. package/ui/dist/assets/index-DHGvP9mp.js +0 -1
  521. package/ui/dist/assets/index-DeI8lKRR.js +0 -1
  522. package/ui/dist/assets/index-WclMPci1.css +0 -1
  523. package/ui/dist/assets/index-Z4-RtZcs.js +0 -1
  524. package/ui/dist/assets/layers-DFeLExSa.js +0 -1
  525. package/ui/dist/assets/markdown-renderer-Croje6Xe.js +0 -36
  526. package/ui/dist/assets/popover-JXecfWG5.js +0 -1
  527. package/ui/dist/assets/progress-C1ghf1Fu.js +0 -1
  528. package/ui/dist/assets/select-MADP8m6Q.js +0 -1
  529. package/ui/dist/assets/server-CPMaysH8.js +0 -1
  530. package/ui/dist/assets/sheet-r6NSOxi-.js +0 -1
  531. package/ui/dist/assets/skeleton-C9oEzNlU.js +0 -1
  532. package/ui/dist/assets/switch-tNs0n-kz.js +0 -1
  533. package/ui/dist/assets/table-CXxtLicg.js +0 -1
  534. package/ui/dist/assets/textarea-BjiEeIWh.js +0 -1
  535. package/ui/dist/assets/tooltip-ZMwtfr1J.js +0 -1
@@ -0,0 +1,159 @@
1
+ /**
2
+ * Request Validation Middleware
3
+ *
4
+ * Zod-based body validation for critical API endpoints.
5
+ * Returns structured 400 errors with field-level details.
6
+ */
7
+ import { type Context, type Next } from 'hono';
8
+ import { z } from 'zod';
9
+ /**
10
+ * POST /api/chat/quick
11
+ */
12
+ export declare const ChatQuickSchema: z.ZodObject<{
13
+ prompt: z.ZodString;
14
+ model: z.ZodOptional<z.ZodString>;
15
+ provider: z.ZodOptional<z.ZodString>;
16
+ systemPrompt: z.ZodOptional<z.ZodString>;
17
+ temperature: z.ZodOptional<z.ZodNumber>;
18
+ }, "strip", z.ZodTypeAny, {
19
+ prompt: string;
20
+ model?: string | undefined;
21
+ provider?: string | undefined;
22
+ systemPrompt?: string | undefined;
23
+ temperature?: number | undefined;
24
+ }, {
25
+ prompt: string;
26
+ model?: string | undefined;
27
+ provider?: string | undefined;
28
+ systemPrompt?: string | undefined;
29
+ temperature?: number | undefined;
30
+ }>;
31
+ /**
32
+ * POST /api/chat/conversations/:id/messages
33
+ */
34
+ export declare const ChatMessageSchema: z.ZodObject<{
35
+ content: z.ZodString;
36
+ model: z.ZodOptional<z.ZodString>;
37
+ provider: z.ZodOptional<z.ZodString>;
38
+ temperature: z.ZodOptional<z.ZodNumber>;
39
+ maxTokens: z.ZodOptional<z.ZodNumber>;
40
+ }, "strip", z.ZodTypeAny, {
41
+ content: string;
42
+ model?: string | undefined;
43
+ provider?: string | undefined;
44
+ maxTokens?: number | undefined;
45
+ temperature?: number | undefined;
46
+ }, {
47
+ content: string;
48
+ model?: string | undefined;
49
+ provider?: string | undefined;
50
+ maxTokens?: number | undefined;
51
+ temperature?: number | undefined;
52
+ }>;
53
+ /**
54
+ * POST /api/chat/conversations
55
+ */
56
+ export declare const CreateConversationSchema: z.ZodObject<{
57
+ mode: z.ZodOptional<z.ZodEnum<["chat", "agentic"]>>;
58
+ presetId: z.ZodOptional<z.ZodString>;
59
+ title: z.ZodOptional<z.ZodString>;
60
+ taskId: z.ZodOptional<z.ZodString>;
61
+ ticketId: z.ZodOptional<z.ZodString>;
62
+ projectId: z.ZodOptional<z.ZodString>;
63
+ }, "strip", z.ZodTypeAny, {
64
+ taskId?: string | undefined;
65
+ title?: string | undefined;
66
+ mode?: "chat" | "agentic" | undefined;
67
+ ticketId?: string | undefined;
68
+ projectId?: string | undefined;
69
+ presetId?: string | undefined;
70
+ }, {
71
+ taskId?: string | undefined;
72
+ title?: string | undefined;
73
+ mode?: "chat" | "agentic" | undefined;
74
+ ticketId?: string | undefined;
75
+ projectId?: string | undefined;
76
+ presetId?: string | undefined;
77
+ }>;
78
+ /**
79
+ * POST /api/tasks
80
+ */
81
+ export declare const CreateTaskSchema: z.ZodObject<{
82
+ title: z.ZodString;
83
+ input: z.ZodOptional<z.ZodString>;
84
+ priority: z.ZodOptional<z.ZodNumber>;
85
+ }, "strip", z.ZodTypeAny, {
86
+ title: string;
87
+ priority?: number | undefined;
88
+ input?: string | undefined;
89
+ }, {
90
+ title: string;
91
+ priority?: number | undefined;
92
+ input?: string | undefined;
93
+ }>;
94
+ /**
95
+ * POST /api/gateway/execute-secure
96
+ */
97
+ export declare const GatewayExecuteSchema: z.ZodObject<{
98
+ task: z.ZodObject<{
99
+ id: z.ZodOptional<z.ZodString>;
100
+ title: z.ZodOptional<z.ZodString>;
101
+ input: z.ZodOptional<z.ZodString>;
102
+ }, "strip", z.ZodTypeAny, {
103
+ title?: string | undefined;
104
+ id?: string | undefined;
105
+ input?: string | undefined;
106
+ }, {
107
+ title?: string | undefined;
108
+ id?: string | undefined;
109
+ input?: string | undefined;
110
+ }>;
111
+ preferredAgent: z.ZodOptional<z.ZodString>;
112
+ workflow: z.ZodOptional<z.ZodString>;
113
+ timeoutMs: z.ZodOptional<z.ZodNumber>;
114
+ priority: z.ZodOptional<z.ZodNumber>;
115
+ autonomous: z.ZodOptional<z.ZodBoolean>;
116
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
117
+ }, "strip", z.ZodTypeAny, {
118
+ task: {
119
+ title?: string | undefined;
120
+ id?: string | undefined;
121
+ input?: string | undefined;
122
+ };
123
+ priority?: number | undefined;
124
+ autonomous?: boolean | undefined;
125
+ workflow?: string | undefined;
126
+ context?: Record<string, unknown> | undefined;
127
+ timeoutMs?: number | undefined;
128
+ preferredAgent?: string | undefined;
129
+ }, {
130
+ task: {
131
+ title?: string | undefined;
132
+ id?: string | undefined;
133
+ input?: string | undefined;
134
+ };
135
+ priority?: number | undefined;
136
+ autonomous?: boolean | undefined;
137
+ workflow?: string | undefined;
138
+ context?: Record<string, unknown> | undefined;
139
+ timeoutMs?: number | undefined;
140
+ preferredAgent?: string | undefined;
141
+ }>;
142
+ export type ChatQuickInput = z.infer<typeof ChatQuickSchema>;
143
+ export type ChatMessageInput = z.infer<typeof ChatMessageSchema>;
144
+ export type CreateConversationInput = z.infer<typeof CreateConversationSchema>;
145
+ export type CreateTaskInput = z.infer<typeof CreateTaskSchema>;
146
+ export type GatewayExecuteInput = z.infer<typeof GatewayExecuteSchema>;
147
+ /**
148
+ * Creates a Hono middleware that validates the JSON request body against a Zod schema.
149
+ *
150
+ * On success the parsed data is stored at `c.get('validatedBody')`.
151
+ * On failure a structured 400 is returned with per-field error details.
152
+ *
153
+ * Usage:
154
+ * app.post('/api/chat/quick', validateBody(ChatQuickSchema), async (c) => {
155
+ * const body = c.get('validatedBody') as ChatQuickInput;
156
+ * });
157
+ */
158
+ export declare function validateBody<T>(schema: z.ZodSchema<T>): (c: Context, next: Next) => Promise<Response | void>;
159
+ //# sourceMappingURL=request-validator.d.ts.map
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Request Validation Middleware
3
+ *
4
+ * Zod-based body validation for critical API endpoints.
5
+ * Returns structured 400 errors with field-level details.
6
+ */
7
+ import { z } from 'zod';
8
+ // ─── Schemas ─────────────────────────────────────────────────────────────────
9
+ /**
10
+ * POST /api/chat/quick
11
+ */
12
+ export const ChatQuickSchema = z.object({
13
+ prompt: z.string().min(1).max(100_000),
14
+ model: z.string().max(100).optional(),
15
+ provider: z.string().max(50).optional(),
16
+ systemPrompt: z.string().max(10_000).optional(),
17
+ temperature: z.number().min(0).max(2).optional(),
18
+ });
19
+ /**
20
+ * POST /api/chat/conversations/:id/messages
21
+ */
22
+ export const ChatMessageSchema = z.object({
23
+ content: z.string().min(1).max(100_000),
24
+ model: z.string().max(100).optional(),
25
+ provider: z.string().max(50).optional(),
26
+ temperature: z.number().min(0).max(2).optional(),
27
+ maxTokens: z.number().int().positive().optional(),
28
+ });
29
+ /**
30
+ * POST /api/chat/conversations
31
+ */
32
+ export const CreateConversationSchema = z.object({
33
+ mode: z.enum(['chat', 'agentic']).optional(),
34
+ presetId: z.string().max(100).optional(),
35
+ title: z.string().max(200).optional(),
36
+ taskId: z.string().max(100).optional(),
37
+ ticketId: z.string().max(100).optional(),
38
+ projectId: z.string().max(100).optional(),
39
+ });
40
+ /**
41
+ * POST /api/tasks
42
+ */
43
+ export const CreateTaskSchema = z.object({
44
+ title: z.string().min(1).max(500),
45
+ input: z.string().min(1).max(100_000).optional(),
46
+ priority: z.number().int().min(1).max(10).optional(),
47
+ });
48
+ /**
49
+ * POST /api/gateway/execute-secure
50
+ */
51
+ export const GatewayExecuteSchema = z.object({
52
+ task: z.object({
53
+ id: z.string().max(100).optional(),
54
+ title: z.string().min(1).max(500).optional(),
55
+ input: z.string().max(100_000).optional(),
56
+ }),
57
+ preferredAgent: z.string().max(100).optional(),
58
+ workflow: z.string().max(50).optional(),
59
+ timeoutMs: z.number().int().min(0).max(600_000).optional(),
60
+ priority: z.number().int().min(1).max(10).optional(),
61
+ autonomous: z.boolean().optional(),
62
+ context: z.record(z.unknown()).optional(),
63
+ });
64
+ // ─── Middleware factory ───────────────────────────────────────────────────────
65
+ /**
66
+ * Creates a Hono middleware that validates the JSON request body against a Zod schema.
67
+ *
68
+ * On success the parsed data is stored at `c.get('validatedBody')`.
69
+ * On failure a structured 400 is returned with per-field error details.
70
+ *
71
+ * Usage:
72
+ * app.post('/api/chat/quick', validateBody(ChatQuickSchema), async (c) => {
73
+ * const body = c.get('validatedBody') as ChatQuickInput;
74
+ * });
75
+ */
76
+ export function validateBody(schema) {
77
+ return async (c, next) => {
78
+ const body = await c.req.json().catch(() => null);
79
+ if (body === null || typeof body !== 'object' || Array.isArray(body)) {
80
+ return c.json({ error: 'Invalid JSON body' }, 400);
81
+ }
82
+ const result = schema.safeParse(body);
83
+ if (!result.success) {
84
+ return c.json({
85
+ error: 'Validation failed',
86
+ details: result.error.flatten().fieldErrors,
87
+ }, 400);
88
+ }
89
+ c.set('validatedBody', result.data);
90
+ await next();
91
+ };
92
+ }
93
+ //# sourceMappingURL=request-validator.js.map
@@ -27,9 +27,31 @@ export interface ProfClawPlugin {
27
27
  skills?: Array<{
28
28
  id: string;
29
29
  name: string;
30
+ description?: string;
30
31
  }>;
31
32
  searchProvider?: unknown;
32
33
  activate?(): Promise<void>;
33
34
  deactivate?(): Promise<void>;
35
+ /** Middleware hooks for intercepting tool execution */
36
+ hooks?: {
37
+ beforeToolExec?: (toolName: string, args: Record<string, unknown>) => Promise<Record<string, unknown>>;
38
+ afterToolExec?: (toolName: string, result: unknown) => Promise<unknown>;
39
+ beforePrompt?: (prompt: string) => Promise<string>;
40
+ };
34
41
  }
42
+ /**
43
+ * Helper for plugin authors to define a plugin with type safety.
44
+ *
45
+ * @example
46
+ * ```ts
47
+ * import { definePlugin } from '@profclaw/sdk';
48
+ *
49
+ * export default definePlugin({
50
+ * metadata: { id: 'my-plugin', name: 'My Plugin', version: '1.0.0' },
51
+ * tools: [myCustomTool],
52
+ * activate: async () => console.log('Plugin loaded!'),
53
+ * });
54
+ * ```
55
+ */
56
+ export declare function definePlugin(plugin: ProfClawPlugin): ProfClawPlugin;
35
57
  //# sourceMappingURL=sdk.d.ts.map
@@ -4,5 +4,21 @@
4
4
  * Public types and interfaces for building profClaw plugins.
5
5
  * Third-party plugins implement ProfClawPlugin to extend the system.
6
6
  */
7
- export {};
7
+ /**
8
+ * Helper for plugin authors to define a plugin with type safety.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import { definePlugin } from '@profclaw/sdk';
13
+ *
14
+ * export default definePlugin({
15
+ * metadata: { id: 'my-plugin', name: 'My Plugin', version: '1.0.0' },
16
+ * tools: [myCustomTool],
17
+ * activate: async () => console.log('Plugin loaded!'),
18
+ * });
19
+ * ```
20
+ */
21
+ export function definePlugin(plugin) {
22
+ return plugin;
23
+ }
8
24
  //# sourceMappingURL=sdk.js.map
@@ -28,7 +28,7 @@ export declare const ProjectExternalLinkSchema: z.ZodObject<{
28
28
  id: string;
29
29
  createdAt: string;
30
30
  projectId: string;
31
- platform: "jira" | "linear" | "github" | "plane" | "monday";
31
+ platform: "jira" | "linear" | "github" | "monday" | "plane";
32
32
  externalId: string;
33
33
  syncEnabled: boolean;
34
34
  syncDirection: "push" | "bidirectional" | "pull";
@@ -39,7 +39,7 @@ export declare const ProjectExternalLinkSchema: z.ZodObject<{
39
39
  id: string;
40
40
  createdAt: string;
41
41
  projectId: string;
42
- platform: "jira" | "linear" | "github" | "plane" | "monday";
42
+ platform: "jira" | "linear" | "github" | "monday" | "plane";
43
43
  externalId: string;
44
44
  externalUrl?: string | undefined;
45
45
  syncEnabled?: boolean | undefined;
@@ -136,11 +136,11 @@ export declare const CreateProjectSchema: z.ZodObject<{
136
136
  externalId: z.ZodString;
137
137
  externalUrl: z.ZodOptional<z.ZodString>;
138
138
  }, "strip", z.ZodTypeAny, {
139
- platform: "jira" | "linear" | "github" | "plane" | "monday";
139
+ platform: "jira" | "linear" | "github" | "monday" | "plane";
140
140
  externalId: string;
141
141
  externalUrl?: string | undefined;
142
142
  }, {
143
- platform: "jira" | "linear" | "github" | "plane" | "monday";
143
+ platform: "jira" | "linear" | "github" | "monday" | "plane";
144
144
  externalId: string;
145
145
  externalUrl?: string | undefined;
146
146
  }>>;
@@ -157,7 +157,7 @@ export declare const CreateProjectSchema: z.ZodObject<{
157
157
  boardView?: boolean | undefined;
158
158
  lead?: string | undefined;
159
159
  externalLink?: {
160
- platform: "jira" | "linear" | "github" | "plane" | "monday";
160
+ platform: "jira" | "linear" | "github" | "monday" | "plane";
161
161
  externalId: string;
162
162
  externalUrl?: string | undefined;
163
163
  } | undefined;
@@ -174,7 +174,7 @@ export declare const CreateProjectSchema: z.ZodObject<{
174
174
  boardView?: boolean | undefined;
175
175
  lead?: string | undefined;
176
176
  externalLink?: {
177
- platform: "jira" | "linear" | "github" | "plane" | "monday";
177
+ platform: "jira" | "linear" | "github" | "monday" | "plane";
178
178
  externalId: string;
179
179
  externalUrl?: string | undefined;
180
180
  } | undefined;
@@ -197,11 +197,11 @@ export declare const UpdateProjectSchema: z.ZodObject<Omit<{
197
197
  externalId: z.ZodString;
198
198
  externalUrl: z.ZodOptional<z.ZodString>;
199
199
  }, "strip", z.ZodTypeAny, {
200
- platform: "jira" | "linear" | "github" | "plane" | "monday";
200
+ platform: "jira" | "linear" | "github" | "monday" | "plane";
201
201
  externalId: string;
202
202
  externalUrl?: string | undefined;
203
203
  }, {
204
- platform: "jira" | "linear" | "github" | "plane" | "monday";
204
+ platform: "jira" | "linear" | "github" | "monday" | "plane";
205
205
  externalId: string;
206
206
  externalUrl?: string | undefined;
207
207
  }>>>;
@@ -217,7 +217,7 @@ export declare const UpdateProjectSchema: z.ZodObject<Omit<{
217
217
  boardView?: boolean | undefined;
218
218
  lead?: string | undefined;
219
219
  externalLink?: {
220
- platform: "jira" | "linear" | "github" | "plane" | "monday";
220
+ platform: "jira" | "linear" | "github" | "monday" | "plane";
221
221
  externalId: string;
222
222
  externalUrl?: string | undefined;
223
223
  } | undefined;
@@ -233,7 +233,7 @@ export declare const UpdateProjectSchema: z.ZodObject<Omit<{
233
233
  boardView?: boolean | undefined;
234
234
  lead?: string | undefined;
235
235
  externalLink?: {
236
- platform: "jira" | "linear" | "github" | "plane" | "monday";
236
+ platform: "jira" | "linear" | "github" | "monday" | "plane";
237
237
  externalId: string;
238
238
  externalUrl?: string | undefined;
239
239
  } | undefined;
@@ -53,6 +53,17 @@ declare class AIProviderManager {
53
53
  provider: ProviderType;
54
54
  model: string;
55
55
  };
56
+ /**
57
+ * Get the default model for a provider, respecting runtime config.
58
+ * For Azure, uses the deployment name instead of the static "gpt-4o".
59
+ */
60
+ getDefaultModelForProvider(provider: ProviderType): string;
61
+ /**
62
+ * Resolve a model name to an Azure deployment.
63
+ * Azure uses deployment names (e.g. "gpt4o") instead of model IDs (e.g. "gpt-4o").
64
+ * Checks: configured deployment name → env var → strip dashes from model name.
65
+ */
66
+ private resolveToAzureDeployment;
56
67
  getModel(provider: ProviderType, modelId: string): Promise<LanguageModel>;
57
68
  getModelInfo(modelId: string): ModelInfo | undefined;
58
69
  getModelsForProvider(provider: ProviderType): ModelInfo[];
@@ -26,8 +26,12 @@ async function withRetry(fn, maxRetries = AI_MAX_RETRIES) {
26
26
  return await fn();
27
27
  }
28
28
  catch (error) {
29
- const isRetryable = error instanceof Error &&
30
- (/429|503|rate.limit|too.many|service.unavailable|ECONNRESET|ETIMEDOUT|fetch.failed/i.test(error.message));
29
+ const msg = error instanceof Error ? error.message : '';
30
+ // Don't retry quota exhaustion — it won't resolve with backoff
31
+ const isQuotaError = /quota|exceeded your current|billing/i.test(msg);
32
+ const isRetryable = !isQuotaError &&
33
+ error instanceof Error &&
34
+ (/429|503|rate.limit|too.many|service.unavailable|ECONNRESET|ETIMEDOUT|fetch.failed/i.test(msg));
31
35
  if (!isRetryable || attempt === maxRetries)
32
36
  throw error;
33
37
  const delay = Math.min(1000 * 2 ** attempt, 10000);
@@ -43,6 +47,26 @@ async function withRetry(fn, maxRetries = AI_MAX_RETRIES) {
43
47
  // Core types & data — single source of truth in core/
44
48
  import { ProviderType, PROVIDER_STATUS, } from './core/types.js';
45
49
  import { MODEL_ALIASES, MODEL_CATALOG } from './core/models.js';
50
+ /** Sensible default model per provider (used when no model is specified). */
51
+ const PROVIDER_DEFAULT_MODEL = {
52
+ ollama: 'llama3.2',
53
+ anthropic: 'claude-sonnet-4-5-20250929',
54
+ openai: 'gpt-4o',
55
+ google: 'gemini-2.0-flash',
56
+ azure: 'gpt-4o', // Resolved at runtime via deploymentName config
57
+ groq: 'llama-3.3-70b-versatile',
58
+ cerebras: 'llama-3.3-70b',
59
+ fireworks: 'accounts/fireworks/models/llama-v3p1-70b-instruct',
60
+ together: 'meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo',
61
+ deepseek: 'deepseek-chat',
62
+ mistral: 'mistral-large-latest',
63
+ xai: 'grok-2',
64
+ cohere: 'command-r-plus',
65
+ perplexity: 'sonar',
66
+ bedrock: 'anthropic.claude-3-5-sonnet-20241022-v2:0',
67
+ replicate: 'meta/meta-llama-3-70b-instruct',
68
+ openrouter: 'anthropic/claude-sonnet-4-5-20250929',
69
+ };
46
70
  // Re-export for consumers that import from providers/ai-sdk or providers/index
47
71
  export { ProviderType, PROVIDER_STATUS, MODEL_ALIASES, MODEL_CATALOG, };
48
72
  // Pre-compiled regex patterns for performance (avoid recompilation on each call)
@@ -152,17 +176,17 @@ class AIProviderManager {
152
176
  enabled: true,
153
177
  });
154
178
  }
155
- // Azure OpenAI (supports both standard and Foundry modes)
179
+ // Azure OpenAI (supports both base URL and resource name modes)
156
180
  if (process.env.AZURE_OPENAI_API_KEY) {
157
- // Check if using Foundry (custom base URL) or standard (resource name)
158
181
  const baseUrl = process.env.AZURE_OPENAI_BASE_URL || process.env.AZURE_OPENAI_ENDPOINT;
159
- const resourceName = process.env.AZURE_OPENAI_RESOURCE_NAME;
182
+ const resourceName = process.env.AZURE_OPENAI_RESOURCE_NAME || process.env.AZURE_RESOURCE_NAME;
160
183
  if (baseUrl || resourceName) {
161
184
  this.configure('azure', {
162
185
  type: 'azure',
163
186
  apiKey: process.env.AZURE_OPENAI_API_KEY,
187
+ // Prefer explicit base URL over resource name (resource name constructs URL automatically)
164
188
  baseUrl: baseUrl,
165
- resourceName: resourceName,
189
+ resourceName: baseUrl ? undefined : resourceName, // Don't use resourceName if baseUrl is set
166
190
  deploymentName: process.env.AZURE_OPENAI_DEPLOYMENT_NAME,
167
191
  apiVersion: process.env.AZURE_OPENAI_API_VERSION,
168
192
  enabled: true,
@@ -669,7 +693,7 @@ class AIProviderManager {
669
693
  }
670
694
  }
671
695
  resolveModel(modelOrAlias) {
672
- // Check if it's a full provider/model path
696
+ // Check if it's a full provider/model path (e.g. "azure/gpt4o", "ollama/llama3.2")
673
697
  if (modelOrAlias.includes('/')) {
674
698
  const [provider, model] = modelOrAlias.split('/');
675
699
  return { provider: provider, model };
@@ -680,15 +704,35 @@ class AIProviderManager {
680
704
  // For Azure, use the configured deployment name instead of the default alias model
681
705
  if (alias.provider === 'azure') {
682
706
  const azureConfig = this.configs.get('azure');
683
- if (azureConfig?.defaultModel) {
684
- return { provider: 'azure', model: azureConfig.defaultModel };
707
+ const azureModel = azureConfig?.defaultModel
708
+ || azureConfig?.deploymentName
709
+ || process.env.AZURE_OPENAI_DEPLOYMENT_NAME;
710
+ if (azureModel) {
711
+ return { provider: 'azure', model: azureModel };
685
712
  }
686
713
  }
687
- return alias;
714
+ // If the alias points to a configured provider, use it directly
715
+ if (this.isConfigured(alias.provider)) {
716
+ return alias;
717
+ }
718
+ // If the alias provider isn't configured, try Azure as a fallback
719
+ // (Azure can serve OpenAI models like gpt-4o via deployment names)
720
+ if (this.isConfigured('azure') && (alias.provider === 'openai')) {
721
+ return this.resolveToAzureDeployment(modelOrAlias);
722
+ }
688
723
  }
689
724
  // Try to find in catalog
690
725
  const catalogModel = MODEL_CATALOG.find((m) => m.id === modelOrAlias);
691
726
  if (catalogModel) {
727
+ // If the catalog provider is configured, use it
728
+ if (this.isConfigured(catalogModel.provider)) {
729
+ return { provider: catalogModel.provider, model: catalogModel.id };
730
+ }
731
+ // OpenAI models can be served by Azure via deployment names
732
+ if (catalogModel.provider === 'openai' && this.isConfigured('azure')) {
733
+ return this.resolveToAzureDeployment(modelOrAlias);
734
+ }
735
+ // Fallback: use catalog as-is (will fail at API call time with clear error)
692
736
  return { provider: catalogModel.provider, model: catalogModel.id };
693
737
  }
694
738
  // Default to the auto-selected default provider
@@ -697,6 +741,38 @@ class AIProviderManager {
697
741
  const defaultModel = defaultConfig?.defaultModel || modelOrAlias;
698
742
  return { provider: this.defaultProvider, model: defaultModel };
699
743
  }
744
+ /**
745
+ * Get the default model for a provider, respecting runtime config.
746
+ * For Azure, uses the deployment name instead of the static "gpt-4o".
747
+ */
748
+ getDefaultModelForProvider(provider) {
749
+ if (provider === 'azure') {
750
+ const config = this.configs.get('azure');
751
+ return config?.deploymentName
752
+ || config?.defaultModel
753
+ || process.env.AZURE_OPENAI_DEPLOYMENT_NAME
754
+ || PROVIDER_DEFAULT_MODEL.azure
755
+ || 'gpt-4o';
756
+ }
757
+ return PROVIDER_DEFAULT_MODEL[provider] || 'llama3.2';
758
+ }
759
+ /**
760
+ * Resolve a model name to an Azure deployment.
761
+ * Azure uses deployment names (e.g. "gpt4o") instead of model IDs (e.g. "gpt-4o").
762
+ * Checks: configured deployment name → env var → strip dashes from model name.
763
+ */
764
+ resolveToAzureDeployment(modelOrAlias) {
765
+ const azureConfig = this.configs.get('azure');
766
+ // Use configured deployment name if it looks like it matches the requested model
767
+ const deployment = azureConfig?.deploymentName
768
+ || process.env.AZURE_OPENAI_DEPLOYMENT_NAME;
769
+ if (deployment) {
770
+ return { provider: 'azure', model: deployment };
771
+ }
772
+ // Try stripping dashes (gpt-4o → gpt4o) as Azure often uses this convention
773
+ const stripped = modelOrAlias.replace(/-/g, '');
774
+ return { provider: 'azure', model: stripped };
775
+ }
700
776
  async getModel(provider, modelId) {
701
777
  await this.ensureProvider(provider);
702
778
  const key = this.providerKey(provider);
@@ -738,9 +814,12 @@ class AIProviderManager {
738
814
  // Azure uses .chat() method for deployment-based access
739
815
  if (provider === 'azure') {
740
816
  let deployment = modelId;
741
- if (modelId === 'default') {
817
+ if (deployment === 'default' || !deployment) {
742
818
  const azureConfig = this.configs.get('azure');
743
- deployment = azureConfig?.defaultModel || modelId;
819
+ deployment = azureConfig?.defaultModel
820
+ || azureConfig?.deploymentName
821
+ || process.env.AZURE_OPENAI_DEPLOYMENT_NAME
822
+ || 'default';
744
823
  if (deployment === 'default') {
745
824
  throw new Error('Azure deployment not configured. Set defaultModel in Azure config or AZURE_OPENAI_DEPLOYMENT_NAME.');
746
825
  }
@@ -773,7 +852,7 @@ class AIProviderManager {
773
852
  // Resolve model
774
853
  const modelRef = request.model
775
854
  ? this.resolveModel(request.model)
776
- : { provider: this.defaultProvider, model: 'llama3.2' };
855
+ : { provider: this.defaultProvider, model: this.getDefaultModelForProvider(this.defaultProvider) };
777
856
  const model = await this.getModel(modelRef.provider, modelRef.model);
778
857
  // Convert messages to AI SDK format
779
858
  const messages = request.messages.map((msg) => ({
@@ -831,7 +910,7 @@ class AIProviderManager {
831
910
  // Resolve model
832
911
  const modelRef = request.model
833
912
  ? this.resolveModel(request.model)
834
- : { provider: this.defaultProvider, model: 'llama3.2' };
913
+ : { provider: this.defaultProvider, model: this.getDefaultModelForProvider(this.defaultProvider) };
835
914
  const model = await this.getModel(modelRef.provider, modelRef.model);
836
915
  // Convert messages
837
916
  const messages = request.messages.map((msg) => ({
@@ -911,7 +990,7 @@ class AIProviderManager {
911
990
  // Resolve model
912
991
  const modelRef = request.model
913
992
  ? this.resolveModel(request.model)
914
- : { provider: this.defaultProvider, model: 'llama3.2' };
993
+ : { provider: this.defaultProvider, model: this.getDefaultModelForProvider(this.defaultProvider) };
915
994
  const model = await this.getModel(modelRef.provider, modelRef.model);
916
995
  // Check if model supports native tools
917
996
  const toolSupport = this.modelSupportsTools(modelRef.model || modelRef.provider + '/' + modelRef.model);
@@ -1058,7 +1137,7 @@ class AIProviderManager {
1058
1137
  modelSupportsTools(modelOrAlias) {
1059
1138
  const modelRef = modelOrAlias
1060
1139
  ? this.resolveModel(modelOrAlias)
1061
- : { provider: this.defaultProvider, model: 'llama3.2' };
1140
+ : { provider: this.defaultProvider, model: this.getDefaultModelForProvider(this.defaultProvider) };
1062
1141
  // Azure OpenAI: All GPT-4, GPT-4o, and GPT-3.5-turbo models support function calling
1063
1142
  // We check provider first since Azure deployment names won't be in MODEL_CATALOG
1064
1143
  if (modelRef.provider === 'azure') {
@@ -1103,7 +1182,7 @@ class AIProviderManager {
1103
1182
  // Resolve model
1104
1183
  const modelRef = request.model
1105
1184
  ? this.resolveModel(request.model)
1106
- : { provider: this.defaultProvider, model: 'llama3.2' };
1185
+ : { provider: this.defaultProvider, model: this.getDefaultModelForProvider(this.defaultProvider) };
1107
1186
  const model = await this.getModel(modelRef.provider, modelRef.model);
1108
1187
  // Check if model supports native tool calling
1109
1188
  const toolSupport = this.modelSupportsTools(request.model);
@@ -1277,7 +1356,7 @@ class AIProviderManager {
1277
1356
  // Resolve model
1278
1357
  const modelRef = request.model
1279
1358
  ? this.resolveModel(request.model)
1280
- : { provider: this.defaultProvider, model: 'llama3.2' };
1359
+ : { provider: this.defaultProvider, model: this.getDefaultModelForProvider(this.defaultProvider) };
1281
1360
  const model = await this.getModel(modelRef.provider, modelRef.model);
1282
1361
  // Convert messages
1283
1362
  const messages = toAiMessages(request.messages);