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.
- package/.env.example +14 -2
- package/CHANGELOG.md +54 -34
- package/CONTRIBUTING.md +23 -5
- package/Dockerfile +39 -23
- package/README.md +271 -72
- package/dist/agents/agent-summary.d.ts +44 -0
- package/dist/agents/agent-summary.js +176 -0
- package/dist/agents/auto-memory.d.ts +59 -0
- package/dist/agents/auto-memory.js +310 -0
- package/dist/agents/checkpoint-manager.d.ts +76 -0
- package/dist/agents/checkpoint-manager.js +156 -0
- package/dist/agents/circuit-breaker.d.ts +54 -0
- package/dist/agents/circuit-breaker.js +153 -0
- package/dist/agents/context-compactor.d.ts +70 -0
- package/dist/agents/context-compactor.js +361 -0
- package/dist/agents/conversation-branch.d.ts +55 -0
- package/dist/agents/conversation-branch.js +115 -0
- package/dist/agents/error-recovery.d.ts +44 -0
- package/dist/agents/error-recovery.js +197 -0
- package/dist/agents/events.d.ts +76 -0
- package/dist/agents/events.js +8 -0
- package/dist/agents/executor.d.ts +35 -1
- package/dist/agents/executor.js +573 -124
- package/dist/agents/file-snapshots.d.ts +72 -0
- package/dist/agents/file-snapshots.js +182 -0
- package/dist/agents/index.d.ts +2 -0
- package/dist/agents/orchestrator.d.ts +183 -0
- package/dist/agents/orchestrator.js +495 -0
- package/dist/agents/permissions.d.ts +63 -0
- package/dist/agents/permissions.js +138 -0
- package/dist/agents/plan-mode.d.ts +71 -0
- package/dist/agents/plan-mode.js +186 -0
- package/dist/agents/prompt-suggestions.d.ts +33 -0
- package/dist/agents/prompt-suggestions.js +208 -0
- package/dist/agents/rate-limit-monitor.d.ts +56 -0
- package/dist/agents/rate-limit-monitor.js +224 -0
- package/dist/agents/result-store.d.ts +37 -0
- package/dist/agents/result-store.js +104 -0
- package/dist/agents/session-diff.d.ts +43 -0
- package/dist/agents/session-diff.js +258 -0
- package/dist/agents/tool-loader.d.ts +65 -0
- package/dist/agents/tool-loader.js +273 -0
- package/dist/agents/transcript.d.ts +96 -0
- package/dist/agents/transcript.js +267 -0
- package/dist/agents/worktree-manager.d.ts +80 -0
- package/dist/agents/worktree-manager.js +203 -0
- package/dist/auth/middleware.js +14 -0
- package/dist/chat/agentic-executor.d.ts +7 -0
- package/dist/chat/agentic-executor.js +253 -30
- package/dist/chat/conversations.d.ts +2 -0
- package/dist/chat/conversations.js +8 -0
- package/dist/chat/execution/executor.d.ts +8 -0
- package/dist/chat/execution/executor.js +157 -103
- package/dist/chat/execution/index.js +5 -1
- package/dist/chat/execution/tool-router.js +40 -14
- package/dist/chat/execution/tools/canvas.d.ts +2 -2
- package/dist/chat/execution/tools/code-tools.d.ts +66 -0
- package/dist/chat/execution/tools/code-tools.js +353 -0
- package/dist/chat/execution/tools/complete-task.d.ts +2 -2
- package/dist/chat/execution/tools/cron-tool.d.ts +26 -10
- package/dist/chat/execution/tools/cron-tool.js +48 -3
- package/dist/chat/execution/tools/decompose-task.d.ts +58 -0
- package/dist/chat/execution/tools/decompose-task.js +166 -0
- package/dist/chat/execution/tools/exec.d.ts +5 -2
- package/dist/chat/execution/tools/exec.js +294 -155
- package/dist/chat/execution/tools/feed-tools.d.ts +77 -0
- package/dist/chat/execution/tools/feed-tools.js +142 -0
- package/dist/chat/execution/tools/file-ops.d.ts +1 -1
- package/dist/chat/execution/tools/github.d.ts +2 -2
- package/dist/chat/execution/tools/index.d.ts +15 -3
- package/dist/chat/execution/tools/index.js +125 -12
- package/dist/chat/execution/tools/integrations.d.ts +8 -8
- package/dist/chat/execution/tools/multi-patch.d.ts +53 -0
- package/dist/chat/execution/tools/multi-patch.js +373 -0
- package/dist/chat/execution/tools/openai-image-gen.d.ts +2 -2
- package/dist/chat/execution/tools/plan-tools.d.ts +80 -0
- package/dist/chat/execution/tools/plan-tools.js +134 -0
- package/dist/chat/execution/tools/profclaw-ops.d.ts +6 -6
- package/dist/chat/execution/tools/repl-tool.d.ts +46 -0
- package/dist/chat/execution/tools/repl-tool.js +207 -0
- package/dist/chat/execution/tools/sessions-send.d.ts +2 -2
- package/dist/chat/execution/tools/slack-actions.d.ts +2 -2
- package/dist/chat/execution/tools/system.d.ts +4 -4
- package/dist/chat/execution/tools/todo-tool.d.ts +72 -0
- package/dist/chat/execution/tools/todo-tool.js +152 -0
- package/dist/chat/execution/tools/tool-search.d.ts +50 -0
- package/dist/chat/execution/tools/tool-search.js +155 -0
- package/dist/chat/execution/types.d.ts +21 -14
- package/dist/chat/execution/workflows/executor.d.ts +11 -0
- package/dist/chat/execution/workflows/executor.js +99 -1
- package/dist/chat/execution/workflows/types.d.ts +35 -2
- package/dist/chat/format/index.d.ts +1 -0
- package/dist/chat/format/index.js +1 -0
- package/dist/chat/format/markdown-convert.d.ts +23 -0
- package/dist/chat/format/markdown-convert.js +149 -0
- package/dist/chat/index.d.ts +1 -1
- package/dist/chat/index.js +1 -1
- package/dist/chat/message-handler.js +58 -6
- package/dist/chat/proactive/index.d.ts +62 -0
- package/dist/chat/proactive/index.js +147 -0
- package/dist/chat/prompt-adapter.js +2 -0
- package/dist/chat/providers/irc/index.d.ts +2 -2
- package/dist/chat/providers/slack/index.d.ts +2 -2
- package/dist/chat/providers/telegram/index.d.ts +2 -0
- package/dist/chat/providers/telegram/index.js +21 -2
- package/dist/chat/system-prompts.d.ts +3 -3
- package/dist/chat/system-prompts.js +116 -61
- package/dist/chat/tools.d.ts +6 -6
- package/dist/cli/commands/auth.js +64 -1
- package/dist/cli/commands/chat.js +1327 -138
- package/dist/cli/commands/doctor.js +222 -16
- package/dist/cli/commands/history.d.ts +3 -0
- package/dist/cli/commands/history.js +138 -0
- package/dist/cli/commands/import.d.ts +44 -0
- package/dist/cli/commands/import.js +526 -0
- package/dist/cli/commands/init.d.ts +13 -0
- package/dist/cli/commands/init.js +381 -0
- package/dist/cli/commands/models.js +39 -26
- package/dist/cli/commands/onboard.js +263 -98
- package/dist/cli/commands/plan.d.ts +13 -0
- package/dist/cli/commands/plan.js +184 -0
- package/dist/cli/commands/serve.d.ts +7 -0
- package/dist/cli/commands/serve.js +77 -18
- package/dist/cli/commands/setup.js +375 -91
- package/dist/cli/commands/status.js +54 -0
- package/dist/cli/commands/tools.js +13 -13
- package/dist/cli/commands/tui.js +26 -1
- package/dist/cli/index.js +19 -6
- package/dist/cli/ink/App.d.ts +13 -0
- package/dist/cli/ink/App.js +6 -0
- package/dist/cli/ink/ChatApp.d.ts +60 -0
- package/dist/cli/ink/ChatApp.js +325 -0
- package/dist/cli/ink/DashboardApp.d.ts +3 -0
- package/dist/cli/ink/DashboardApp.js +143 -0
- package/dist/cli/ink/components/AgentStatus.d.ts +17 -0
- package/dist/cli/ink/components/AgentStatus.js +33 -0
- package/dist/cli/ink/components/ChannelList.d.ts +17 -0
- package/dist/cli/ink/components/ChannelList.js +33 -0
- package/dist/cli/ink/components/ConnectionStatus.d.ts +19 -0
- package/dist/cli/ink/components/ConnectionStatus.js +50 -0
- package/dist/cli/ink/components/CostBar.d.ts +19 -0
- package/dist/cli/ink/components/CostBar.js +35 -0
- package/dist/cli/ink/components/HookStatus.d.ts +15 -0
- package/dist/cli/ink/components/HookStatus.js +7 -0
- package/dist/cli/ink/components/PermissionPrompt.d.ts +21 -0
- package/dist/cli/ink/components/PermissionPrompt.js +51 -0
- package/dist/cli/ink/components/PlanView.d.ts +23 -0
- package/dist/cli/ink/components/PlanView.js +26 -0
- package/dist/cli/ink/components/ProviderList.d.ts +16 -0
- package/dist/cli/ink/components/ProviderList.js +16 -0
- package/dist/cli/ink/components/SessionHeader.d.ts +15 -0
- package/dist/cli/ink/components/SessionHeader.js +15 -0
- package/dist/cli/ink/components/StreamingMessage.d.ts +20 -0
- package/dist/cli/ink/components/StreamingMessage.js +27 -0
- package/dist/cli/ink/components/SuggestionBar.d.ts +15 -0
- package/dist/cli/ink/components/SuggestionBar.js +28 -0
- package/dist/cli/ink/components/SystemHealth.d.ts +20 -0
- package/dist/cli/ink/components/SystemHealth.js +39 -0
- package/dist/cli/ink/components/TaskList.d.ts +17 -0
- package/dist/cli/ink/components/TaskList.js +59 -0
- package/dist/cli/ink/components/ToolCall.d.ts +17 -0
- package/dist/cli/ink/components/ToolCall.js +43 -0
- package/dist/cli/ink/index.d.ts +23 -0
- package/dist/cli/ink/index.js +15 -0
- package/dist/cli/ink/keybindings.d.ts +35 -0
- package/dist/cli/ink/keybindings.js +105 -0
- package/dist/cli/ink/markdown-renderer.d.ts +47 -0
- package/dist/cli/ink/markdown-renderer.js +380 -0
- package/dist/cli/ink/output-styles.d.ts +39 -0
- package/dist/cli/ink/output-styles.js +119 -0
- package/dist/cli/interactive/auto-serve.d.ts +38 -0
- package/dist/cli/interactive/auto-serve.js +209 -0
- package/dist/cli/interactive/index.d.ts +25 -0
- package/dist/cli/interactive/index.js +23 -0
- package/dist/cli/interactive/picker.d.ts +28 -0
- package/dist/cli/interactive/picker.js +153 -0
- package/dist/cli/interactive/renderer.d.ts +26 -0
- package/dist/cli/interactive/renderer.js +555 -0
- package/dist/cli/interactive/repl.d.ts +14 -0
- package/dist/cli/interactive/repl.js +1516 -0
- package/dist/cli/interactive/stream-client.d.ts +59 -0
- package/dist/cli/interactive/stream-client.js +506 -0
- package/dist/cli/interactive/types.d.ts +121 -0
- package/dist/cli/interactive/types.js +10 -0
- package/dist/cli/providers.d.ts +15 -0
- package/dist/cli/providers.js +41 -0
- package/dist/cli/utils/api.d.ts +9 -0
- package/dist/cli/utils/api.js +58 -2
- package/dist/core/deployment.js +2 -0
- package/dist/cron/natural-language.d.ts +54 -0
- package/dist/cron/natural-language.js +569 -0
- package/dist/cron/scheduler.d.ts +34 -4
- package/dist/cron/scheduler.js +141 -9
- package/dist/cron/templates.d.ts +1 -1
- package/dist/cron/templates.js +219 -0
- package/dist/feeds/feed-engine.d.ts +149 -0
- package/dist/feeds/feed-engine.js +600 -0
- package/dist/feeds/index.d.ts +9 -0
- package/dist/feeds/index.js +8 -0
- package/dist/gateway/router.js +6 -1
- package/dist/hooks/built-in/audit-log.d.ts +11 -0
- package/dist/hooks/built-in/audit-log.js +84 -0
- package/dist/hooks/built-in/cost-warning.d.ts +10 -0
- package/dist/hooks/built-in/cost-warning.js +59 -0
- package/dist/hooks/built-in/dangerous-tool.d.ts +32 -0
- package/dist/hooks/built-in/dangerous-tool.js +80 -0
- package/dist/hooks/built-in/index.d.ts +14 -0
- package/dist/hooks/built-in/index.js +20 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.js +6 -0
- package/dist/hooks/loader.d.ts +17 -0
- package/dist/hooks/loader.js +142 -0
- package/dist/hooks/registry.d.ts +62 -0
- package/dist/hooks/registry.js +127 -0
- package/dist/integrations/web-search.js +6 -3
- package/dist/memory/index.d.ts +1 -0
- package/dist/memory/index.js +2 -0
- package/dist/memory/memory-service.js +14 -13
- package/dist/memory/observational.d.ts +62 -0
- package/dist/memory/observational.js +396 -0
- package/dist/middleware/content-filter.d.ts +22 -0
- package/dist/middleware/content-filter.js +69 -0
- package/dist/middleware/request-validator.d.ts +159 -0
- package/dist/middleware/request-validator.js +93 -0
- package/dist/plugins/sdk.d.ts +22 -0
- package/dist/plugins/sdk.js +17 -1
- package/dist/projects/types.d.ts +10 -10
- package/dist/providers/ai-sdk.d.ts +11 -0
- package/dist/providers/ai-sdk.js +97 -18
- package/dist/providers/core/models.js +67 -1
- package/dist/providers/core/types.d.ts +3 -0
- package/dist/providers/index.d.ts +1 -0
- package/dist/providers/index.js +1 -0
- package/dist/providers/smart-router.d.ts +118 -0
- package/dist/providers/smart-router.js +685 -0
- package/dist/providers/types.d.ts +16 -16
- package/dist/routes/agents.js +50 -0
- package/dist/routes/auth.js +8 -1
- package/dist/routes/channels.d.ts +12 -0
- package/dist/routes/channels.js +166 -0
- package/dist/routes/chat.js +259 -14
- package/dist/routes/costs.js +32 -0
- package/dist/routes/cron.js +80 -5
- package/dist/routes/feeds.d.ts +10 -0
- package/dist/routes/feeds.js +168 -0
- package/dist/routes/mcp.js +21 -0
- package/dist/routes/memory.js +130 -0
- package/dist/routes/skills.js +129 -0
- package/dist/routes/teams.d.ts +9 -0
- package/dist/routes/teams.js +210 -0
- package/dist/routes/tools.js +14 -0
- package/dist/routes/users.js +2 -0
- package/dist/server/route-loader.js +4 -1
- package/dist/server/stream-bridge.d.ts +19 -0
- package/dist/server/stream-bridge.js +38 -0
- package/dist/server.js +421 -141
- package/dist/skills/marketplace.d.ts +87 -0
- package/dist/skills/marketplace.js +268 -0
- package/dist/storage/index.d.ts +14 -0
- package/dist/storage/index.js +64 -3
- package/dist/storage/schema.d.ts +4 -4
- package/dist/storage/schema.js +1 -1
- package/dist/teams/index.d.ts +110 -0
- package/dist/teams/index.js +365 -0
- package/dist/tickets/types.d.ts +39 -39
- package/dist/types/summary.d.ts +5 -5
- package/dist/utils/auto-update.d.ts +23 -0
- package/dist/utils/auto-update.js +157 -0
- package/dist/utils/offline-detect.d.ts +55 -0
- package/dist/utils/offline-detect.js +121 -0
- package/dist/utils/pid-file.d.ts +36 -0
- package/dist/utils/pid-file.js +125 -0
- package/dist/utils/prevent-sleep.d.ts +27 -0
- package/dist/utils/prevent-sleep.js +95 -0
- package/dist/utils/sanitizer.d.ts +57 -0
- package/dist/utils/sanitizer.js +174 -0
- package/docker-compose.yml +13 -137
- package/package.json +31 -6
- package/skills/deploy-cloudflare/SKILL.md +62 -0
- package/skills/deploy-vercel/SKILL.md +67 -0
- package/skills/docker-deploy/SKILL.md +158 -0
- package/skills/full-stack-builder/SKILL.md +92 -0
- package/skills/git-workflow/SKILL.md +3 -3
- package/skills/humanizer/SKILL.md +488 -0
- package/skills/profclaw-assistant/SKILL.md +85 -56
- package/ui/dist/assets/ActivityView-Da6HQ8ws.js +1 -0
- package/ui/dist/assets/AgentList-H58R0kX3.js +1 -0
- package/ui/dist/assets/AnalyticsDashboard-B28AeRsc.js +1 -0
- package/ui/dist/assets/AreaChart-DwLzeAQ8.js +1 -0
- package/ui/dist/assets/CartesianChart-piKQsTAR.js +36 -0
- package/ui/dist/assets/ChatView-Dbj8rxU5.js +10 -0
- package/ui/dist/assets/CostsDashboard-C6F5df0F.js +1 -0
- package/ui/dist/assets/EstimateSelect-wga0rUKX.js +1 -0
- package/ui/dist/assets/FeedDashboard-Ef6FEzEf.js +1 -0
- package/ui/dist/assets/FloatingChatbot-0yhkUeCq.js +2 -0
- package/ui/dist/assets/InviteCodeManagement-tUXfx4Bc.js +2 -0
- package/ui/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/ui/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/ui/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/ui/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/ui/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/ui/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/ui/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/ui/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/ui/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/ui/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/ui/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/ui/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/ui/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/ui/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/ui/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/ui/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/ui/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/ui/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/ui/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/ui/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/ui/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/ui/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/ui/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/ui/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/ui/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/ui/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/ui/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/ui/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/ui/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/ui/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/ui/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/ui/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/ui/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/ui/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/ui/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/ui/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/ui/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/ui/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/ui/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/ui/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/ui/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/ui/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/ui/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/ui/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/ui/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/ui/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/ui/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/ui/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/ui/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/ui/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/ui/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/ui/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/ui/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/ui/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/ui/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/ui/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/ui/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/ui/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/ui/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/ui/dist/assets/MarketplacePage-DGrLtolR.js +1 -0
- package/ui/dist/assets/{ProjectDetail-DlYUcOss.js → ProjectDetail-BgWvA6UP.js} +2 -2
- package/ui/dist/assets/ProjectIcon-TDuliqwg.js +1 -0
- package/ui/dist/assets/ProjectList-DXgM4187.js +1 -0
- package/ui/dist/assets/{Settings-CgPqzUvj.js → Settings-xA8Zhi3p.js} +3 -3
- package/ui/dist/assets/StatusIndicator-B8vfFAxg.js +1 -0
- package/ui/dist/assets/{SummaryDetail-CwLAfHgJ.js → SummaryDetail-eedRfTtF.js} +2 -2
- package/ui/dist/assets/SummaryList-CLNX2P84.js +1 -0
- package/ui/dist/assets/TaskDetail-BtWclNiR.js +1 -0
- package/ui/dist/assets/TaskList-JjODAgSc.js +1 -0
- package/ui/dist/assets/TeamsPage-CBK5iAyx.js +1 -0
- package/ui/dist/assets/TicketBoard-C9aJNNYp.js +1 -0
- package/ui/dist/assets/TicketDetail-CV5JmL31.js +1 -0
- package/ui/dist/assets/TicketList-68V4lzUz.js +1 -0
- package/ui/dist/assets/UserManagement-DKTb6UpE.js +2 -0
- package/ui/dist/assets/ViewSwitcher-BvdQht2Y.js +1 -0
- package/ui/dist/assets/alert-dialog-O6qBOv_f.js +1 -0
- package/ui/dist/assets/{archive-CGck7gxR.js → archive-CX7UvZpf.js} +1 -1
- package/ui/dist/assets/badge-BbfnwDJP.js +1 -0
- package/ui/dist/assets/{bug-DqSGPUUE.js → bug-3WX0394-.js} +1 -1
- package/ui/dist/assets/{calendar-BuZ4zbPW.js → calendar-buq77TaS.js} +1 -1
- package/ui/dist/assets/{chevron-up-DcJ4LL_N.js → chevron-up-4ymsBJRo.js} +1 -1
- package/ui/dist/assets/{circle-x-C78PNZjF.js → circle-x-ByXtwR6Y.js} +1 -1
- package/ui/dist/assets/constants-CVdDh7p0.js +1 -0
- package/ui/dist/assets/{cpu-Ck6AoG8c.js → cpu-CiuoCeDY.js} +1 -1
- package/ui/dist/assets/{database-CA2w8Lvt.js → database-BWXSBg5a.js} +1 -1
- package/ui/dist/assets/dialog-lDg4NvMV.js +1 -0
- package/ui/dist/assets/dollar-sign-Dmijd6DP.js +1 -0
- package/ui/dist/assets/{ellipsis-FhHKRbfl.js → ellipsis-vT-5SVIp.js} +1 -1
- package/ui/dist/assets/{ellipsis-vertical-CO0UqE4-.js → ellipsis-vertical-B4tAX_bL.js} +1 -1
- package/ui/dist/assets/feature-markdown-DBo5Q7uq.js +289 -0
- package/ui/dist/assets/{file-code-ChnhYYj1.js → file-code-ChOWdKXf.js} +1 -1
- package/ui/dist/assets/{folder-open-CHwA1-ve.js → folder-open-CkOUbIiP.js} +1 -1
- package/ui/dist/assets/{funnel-ByEjRFNB.js → funnel-uZkoSPP-.js} +1 -1
- package/ui/dist/assets/{git-branch-GTOPQgU4.js → git-branch-CwvUxj7C.js} +1 -1
- package/ui/dist/assets/{git-commit-horizontal-F5M84Kut.js → git-commit-horizontal-lxPzCvhD.js} +1 -1
- package/ui/dist/assets/{globe-CQWfr7hT.js → globe-D_WpJdsj.js} +1 -1
- package/ui/dist/assets/{hash-nKC9gtLg.js → hash-CA0hJ7vh.js} +1 -1
- package/ui/dist/assets/{history-DfFSA9xJ.js → history-CEWMLELs.js} +1 -1
- package/ui/dist/assets/inbox-ehtOptTV.js +1 -0
- package/ui/dist/assets/{index-a4Fxq0Hb.js → index-C1rhbml4.js} +3 -3
- package/ui/dist/assets/index-CR8gfCHv.js +1 -0
- package/ui/dist/assets/index-DVXMpWai.js +1 -0
- package/ui/dist/assets/index-DaDJMM2v.js +1 -0
- package/ui/dist/assets/index-Djdq_0xu.js +1 -0
- package/ui/dist/assets/index-M46Gcb8K.css +1 -0
- package/ui/dist/assets/index-sEBN7w8J.js +109 -0
- package/ui/dist/assets/layers-C6Mhf8Nk.js +1 -0
- package/ui/dist/assets/{layout-dashboard-WmgjMhWF.js → layout-dashboard-BRUM0kpT.js} +1 -1
- package/ui/dist/assets/{lightbulb-Bo8hEr7B.js → lightbulb-CN2q1O5l.js} +1 -1
- package/ui/dist/assets/{link-2-YqrpQXBH.js → link-2-CC4E28yJ.js} +1 -1
- package/ui/dist/assets/markdown-renderer-C6ENbB0u.js +10 -0
- package/ui/dist/assets/markdown-renderer-CfVKi3_s.css +1 -0
- package/ui/dist/assets/{message-square-CD0H5hot.js → message-square-Bbb241am.js} +1 -1
- package/ui/dist/assets/package-CwT3IzFx.js +1 -0
- package/ui/dist/assets/{pencil-DpFnj5dn.js → pencil-CDmiHzoj.js} +1 -1
- package/ui/dist/assets/{play-DVgea_jT.js → play-tjy5jMQX.js} +1 -1
- package/ui/dist/assets/popover-CFHZf3pE.js +1 -0
- package/ui/dist/assets/progress-BboUHuLf.js +1 -0
- package/ui/dist/assets/{rocket-BFxPYGx9.js → rocket--8ZHgdXJ.js} +1 -1
- package/ui/dist/assets/select-n108rXny.js +1 -0
- package/ui/dist/assets/{send-eYnW_7n-.js → send-Cu7MR2Qh.js} +1 -1
- package/ui/dist/assets/server-DmodxZp-.js +1 -0
- package/ui/dist/assets/{settings-2-scXUOuE_.js → settings-2-CkRNqkxj.js} +1 -1
- package/ui/dist/assets/sheet-7aUJkyzU.js +1 -0
- package/ui/dist/assets/{shield-check-PEr7nmVw.js → shield-check-ViI3nMKE.js} +1 -1
- package/ui/dist/assets/{shield-off-CLtXio62.js → shield-off-DN3tagkn.js} +1 -1
- package/ui/dist/assets/skeleton-C0E1Nfro.js +1 -0
- package/ui/dist/assets/{smartphone-DusFfY0U.js → smartphone-5FghiXpA.js} +1 -1
- package/ui/dist/assets/{square-e1yxB2eR.js → square-DiNSx8K7.js} +1 -1
- package/ui/dist/assets/star-DhdFVidS.js +1 -0
- package/ui/dist/assets/switch-CIgVbZqQ.js +1 -0
- package/ui/dist/assets/table-BC56FVMV.js +1 -0
- package/ui/dist/assets/{tag-tAwMmQ9G.js → tag-CH_vQliw.js} +1 -1
- package/ui/dist/assets/textarea-CxDiKFXZ.js +1 -0
- package/ui/dist/assets/{timer-Vel1N3RP.js → timer-CdGVTb60.js} +1 -1
- package/ui/dist/assets/tooltip-BuW9A5UO.js +1 -0
- package/ui/dist/assets/{trash-2-eM-CNwsZ.js → trash-2-CucZJL0N.js} +1 -1
- package/ui/dist/assets/trending-down-BCezC1z2.js +1 -0
- package/ui/dist/assets/{trending-up-BGafmjRo.js → trending-up-C5OYX2k2.js} +1 -1
- package/ui/dist/assets/vendor-query-C0p7b53x.js +4 -0
- package/ui/dist/assets/vendor-react-Mc5_kfYG.js +12 -0
- package/ui/dist/assets/vendor-ui-CXPAUBFv.js +51 -0
- package/ui/dist/assets/{wand-sparkles-DPvcd9Pi.js → wand-sparkles-BaH6pJnc.js} +1 -1
- package/ui/dist/assets/{wrench-B8s3zYVV.js → wrench-CjxjP6ok.js} +1 -1
- package/ui/dist/index.html +5 -2
- package/dist/chat/auto-reply.d.ts +0 -90
- package/dist/chat/auto-reply.js +0 -272
- package/dist/chat/execution/pty.d.ts +0 -92
- package/dist/chat/execution/pty.js +0 -285
- package/dist/chat/execution/tools/glinr-ops.d.ts +0 -202
- package/dist/chat/execution/tools/glinr-ops.js +0 -694
- package/dist/cli/commands/browser.d.ts +0 -3
- package/dist/cli/commands/browser.js +0 -138
- package/dist/cli/commands/canvas.d.ts +0 -3
- package/dist/cli/commands/canvas.js +0 -155
- package/dist/cli/commands/nodes.d.ts +0 -3
- package/dist/cli/commands/nodes.js +0 -193
- package/dist/diagnostics/exporters.d.ts +0 -21
- package/dist/diagnostics/exporters.js +0 -138
- package/dist/diagnostics/index.d.ts +0 -10
- package/dist/diagnostics/index.js +0 -9
- package/dist/diagnostics/middleware.d.ts +0 -12
- package/dist/diagnostics/middleware.js +0 -58
- package/dist/diagnostics/tracer.d.ts +0 -133
- package/dist/diagnostics/tracer.js +0 -257
- package/dist/discovery/index.d.ts +0 -8
- package/dist/discovery/index.js +0 -7
- package/dist/discovery/mdns.d.ts +0 -40
- package/dist/discovery/mdns.js +0 -249
- package/dist/plugins/registry.d.ts +0 -122
- package/dist/plugins/registry.js +0 -352
- package/dist/plugins/sandbox.d.ts +0 -77
- package/dist/plugins/sandbox.js +0 -287
- package/dist/plugins/search/brave.d.ts +0 -9
- package/dist/plugins/search/brave.js +0 -157
- package/dist/plugins/search/duckduckgo.d.ts +0 -9
- package/dist/plugins/search/duckduckgo.js +0 -171
- package/dist/plugins/search/index.d.ts +0 -13
- package/dist/plugins/search/index.js +0 -23
- package/dist/plugins/search/searxng.d.ts +0 -9
- package/dist/plugins/search/searxng.js +0 -170
- package/dist/plugins/search/serper.d.ts +0 -9
- package/dist/plugins/search/serper.js +0 -135
- package/dist/plugins/search/tavily.d.ts +0 -9
- package/dist/plugins/search/tavily.js +0 -146
- package/dist/providers/adapters/anthropic.d.ts +0 -26
- package/dist/providers/adapters/anthropic.js +0 -306
- package/dist/providers/adapters/base.d.ts +0 -53
- package/dist/providers/adapters/base.js +0 -99
- package/dist/providers/adapters/ollama.d.ts +0 -30
- package/dist/providers/adapters/ollama.js +0 -292
- package/dist/utils/ai-cache.d.ts +0 -72
- package/dist/utils/ai-cache.js +0 -204
- package/dist/utils/file-lock.d.ts +0 -85
- package/dist/utils/file-lock.js +0 -204
- package/ui/dist/assets/ActivityView-DIPQSJ_d.js +0 -1
- package/ui/dist/assets/AgentList-CqyaYrcq.js +0 -1
- package/ui/dist/assets/AnalyticsDashboard-C-mjuGHT.js +0 -1
- package/ui/dist/assets/AreaChart-CfYWmbtr.js +0 -1
- package/ui/dist/assets/CartesianChart-BaQ3It0c.js +0 -36
- package/ui/dist/assets/ChatView-DxxQy6pl.js +0 -10
- package/ui/dist/assets/CostsDashboard-CDBBcGkg.js +0 -1
- package/ui/dist/assets/EstimateSelect-CDjf5qKl.js +0 -1
- package/ui/dist/assets/FloatingChatbot-CZHjvJIe.js +0 -2
- package/ui/dist/assets/InviteCodeManagement-DTm-IPTm.js +0 -2
- package/ui/dist/assets/ProjectIcon-BMRpnM04.js +0 -1
- package/ui/dist/assets/ProjectList-D85TN0i0.js +0 -4
- package/ui/dist/assets/StatusIndicator-yig0uZEA.js +0 -1
- package/ui/dist/assets/SummaryList-BvS5Idnu.js +0 -1
- package/ui/dist/assets/TaskDetail-zarC1fOt.js +0 -1
- package/ui/dist/assets/TaskList-CyJq3ANE.js +0 -1
- package/ui/dist/assets/TicketBoard-BlWr3-iH.js +0 -1
- package/ui/dist/assets/TicketDetail-DmqWKj2W.js +0 -1
- package/ui/dist/assets/TicketList-Scj4pMWa.js +0 -1
- package/ui/dist/assets/UserManagement-BH7uG7dw.js +0 -2
- package/ui/dist/assets/ViewSwitcher-3HzZUdWn.js +0 -1
- package/ui/dist/assets/alert-dialog-DWPb2IfQ.js +0 -7
- package/ui/dist/assets/badge-DEmc3Z_l.js +0 -1
- package/ui/dist/assets/brain-CfFdLVqb.js +0 -1
- package/ui/dist/assets/constants-DhDjZe4P.js +0 -1
- package/ui/dist/assets/dialog-BOdGWhgE.js +0 -1
- package/ui/dist/assets/index--JkIxVXb.js +0 -67
- package/ui/dist/assets/index-Ca3vk7Gq.js +0 -1
- package/ui/dist/assets/index-DHGvP9mp.js +0 -1
- package/ui/dist/assets/index-DeI8lKRR.js +0 -1
- package/ui/dist/assets/index-WclMPci1.css +0 -1
- package/ui/dist/assets/index-Z4-RtZcs.js +0 -1
- package/ui/dist/assets/layers-DFeLExSa.js +0 -1
- package/ui/dist/assets/markdown-renderer-Croje6Xe.js +0 -36
- package/ui/dist/assets/popover-JXecfWG5.js +0 -1
- package/ui/dist/assets/progress-C1ghf1Fu.js +0 -1
- package/ui/dist/assets/select-MADP8m6Q.js +0 -1
- package/ui/dist/assets/server-CPMaysH8.js +0 -1
- package/ui/dist/assets/sheet-r6NSOxi-.js +0 -1
- package/ui/dist/assets/skeleton-C9oEzNlU.js +0 -1
- package/ui/dist/assets/switch-tNs0n-kz.js +0 -1
- package/ui/dist/assets/table-CXxtLicg.js +0 -1
- package/ui/dist/assets/textarea-BjiEeIWh.js +0 -1
- 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
|
package/dist/plugins/sdk.d.ts
CHANGED
|
@@ -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
|
package/dist/plugins/sdk.js
CHANGED
|
@@ -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
|
-
|
|
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
|
package/dist/projects/types.d.ts
CHANGED
|
@@ -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" | "
|
|
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" | "
|
|
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" | "
|
|
139
|
+
platform: "jira" | "linear" | "github" | "monday" | "plane";
|
|
140
140
|
externalId: string;
|
|
141
141
|
externalUrl?: string | undefined;
|
|
142
142
|
}, {
|
|
143
|
-
platform: "jira" | "linear" | "github" | "
|
|
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" | "
|
|
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" | "
|
|
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" | "
|
|
200
|
+
platform: "jira" | "linear" | "github" | "monday" | "plane";
|
|
201
201
|
externalId: string;
|
|
202
202
|
externalUrl?: string | undefined;
|
|
203
203
|
}, {
|
|
204
|
-
platform: "jira" | "linear" | "github" | "
|
|
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" | "
|
|
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" | "
|
|
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[];
|
package/dist/providers/ai-sdk.js
CHANGED
|
@@ -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
|
|
30
|
-
|
|
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
|
|
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
|
-
|
|
684
|
-
|
|
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
|
-
|
|
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 (
|
|
817
|
+
if (deployment === 'default' || !deployment) {
|
|
742
818
|
const azureConfig = this.configs.get('azure');
|
|
743
|
-
deployment = azureConfig?.defaultModel
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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);
|