profclaw 2.0.0 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +14 -2
- package/CHANGELOG.md +37 -0
- package/CONTRIBUTING.md +20 -0
- package/Dockerfile +39 -23
- package/README.md +174 -40
- 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 +14 -2
- package/dist/chat/execution/tools/index.js +86 -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/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/onboard.js +210 -30
- 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 +84 -3
- 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 -0
- 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/utils/api.d.ts +9 -0
- package/dist/cli/utils/api.js +58 -2
- 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 +78 -19
- 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/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 +3 -1
- package/dist/server/stream-bridge.d.ts +19 -0
- package/dist/server/stream-bridge.js +38 -0
- package/dist/server.js +310 -36
- 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/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--gPfvATB.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-1kaf7VHE.js → Settings-xA8Zhi3p.js} +3 -3
- package/ui/dist/assets/StatusIndicator-B8vfFAxg.js +1 -0
- package/ui/dist/assets/{SummaryDetail-DV3AmONk.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-BsLa7brF.js → archive-CX7UvZpf.js} +1 -1
- package/ui/dist/assets/badge-BbfnwDJP.js +1 -0
- package/ui/dist/assets/{bug-CmZI7jqM.js → bug-3WX0394-.js} +1 -1
- package/ui/dist/assets/{calendar-Bf0t2B82.js → calendar-buq77TaS.js} +1 -1
- package/ui/dist/assets/{chevron-up-CoUsOvZj.js → chevron-up-4ymsBJRo.js} +1 -1
- package/ui/dist/assets/{circle-x-Dgw11LgT.js → circle-x-ByXtwR6Y.js} +1 -1
- package/ui/dist/assets/constants-CVdDh7p0.js +1 -0
- package/ui/dist/assets/{cpu-DiPMQICV.js → cpu-CiuoCeDY.js} +1 -1
- package/ui/dist/assets/{database-BwTfupDi.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-UJx4Xnf6.js → ellipsis-vT-5SVIp.js} +1 -1
- package/ui/dist/assets/{ellipsis-vertical-DoULYEKn.js → ellipsis-vertical-B4tAX_bL.js} +1 -1
- package/ui/dist/assets/feature-markdown-DBo5Q7uq.js +289 -0
- package/ui/dist/assets/{file-code-B2UrJLwi.js → file-code-ChOWdKXf.js} +1 -1
- package/ui/dist/assets/{folder-open-BJi577JH.js → folder-open-CkOUbIiP.js} +1 -1
- package/ui/dist/assets/{funnel-PkaD_HSR.js → funnel-uZkoSPP-.js} +1 -1
- package/ui/dist/assets/{git-branch-C_K30am0.js → git-branch-CwvUxj7C.js} +1 -1
- package/ui/dist/assets/{git-commit-horizontal-IT6ecxWQ.js → git-commit-horizontal-lxPzCvhD.js} +1 -1
- package/ui/dist/assets/{globe-f-jjCa_g.js → globe-D_WpJdsj.js} +1 -1
- package/ui/dist/assets/{hash-DNEv8Elo.js → hash-CA0hJ7vh.js} +1 -1
- package/ui/dist/assets/{history-BQSBo_1Q.js → history-CEWMLELs.js} +1 -1
- package/ui/dist/assets/inbox-ehtOptTV.js +1 -0
- package/ui/dist/assets/{index-nS3EErDg.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-CcKt1hXw.js → layout-dashboard-BRUM0kpT.js} +1 -1
- package/ui/dist/assets/{lightbulb-Jhp7FvbU.js → lightbulb-CN2q1O5l.js} +1 -1
- package/ui/dist/assets/{link-2-DdO7ostF.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-CBgH65X7.js → message-square-Bbb241am.js} +1 -1
- package/ui/dist/assets/package-CwT3IzFx.js +1 -0
- package/ui/dist/assets/{pencil-CYXCEPQh.js → pencil-CDmiHzoj.js} +1 -1
- package/ui/dist/assets/{play-d1ONaH0-.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-DhvUetsk.js → rocket--8ZHgdXJ.js} +1 -1
- package/ui/dist/assets/select-n108rXny.js +1 -0
- package/ui/dist/assets/{send-P0r5D7td.js → send-Cu7MR2Qh.js} +1 -1
- package/ui/dist/assets/server-DmodxZp-.js +1 -0
- package/ui/dist/assets/{settings-2-ocj5uHGx.js → settings-2-CkRNqkxj.js} +1 -1
- package/ui/dist/assets/sheet-7aUJkyzU.js +1 -0
- package/ui/dist/assets/{shield-check-DfVdE34l.js → shield-check-ViI3nMKE.js} +1 -1
- package/ui/dist/assets/{shield-off-8l0J6R-8.js → shield-off-DN3tagkn.js} +1 -1
- package/ui/dist/assets/skeleton-C0E1Nfro.js +1 -0
- package/ui/dist/assets/{smartphone-77_g3SQn.js → smartphone-5FghiXpA.js} +1 -1
- package/ui/dist/assets/{square-Ckzsr3Rn.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-C35mgoEv.js → tag-CH_vQliw.js} +1 -1
- package/ui/dist/assets/textarea-CxDiKFXZ.js +1 -0
- package/ui/dist/assets/{timer-DHJBS2w1.js → timer-CdGVTb60.js} +1 -1
- package/ui/dist/assets/tooltip-BuW9A5UO.js +1 -0
- package/ui/dist/assets/{trash-2-keO5tKPE.js → trash-2-CucZJL0N.js} +1 -1
- package/ui/dist/assets/trending-down-BCezC1z2.js +1 -0
- package/ui/dist/assets/{trending-up-BBv8KbrY.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-BusQ52ZK.js → wand-sparkles-BaH6pJnc.js} +1 -1
- package/ui/dist/assets/{wrench-02YaOSiK.js → wrench-CjxjP6ok.js} +1 -1
- package/ui/dist/index.html +5 -2
- package/ui/dist/assets/ActivityView-BeshZXmE.js +0 -1
- package/ui/dist/assets/AgentList-QVHeldPi.js +0 -1
- package/ui/dist/assets/AnalyticsDashboard-C9R97dXE.js +0 -1
- package/ui/dist/assets/AreaChart-B73gaiVQ.js +0 -1
- package/ui/dist/assets/CartesianChart-CXYL2R-A.js +0 -36
- package/ui/dist/assets/ChatView-qjZErlrp.js +0 -10
- package/ui/dist/assets/CostsDashboard-O4DCLy1i.js +0 -1
- package/ui/dist/assets/EstimateSelect-1hQf4Osk.js +0 -1
- package/ui/dist/assets/FloatingChatbot-BZBzrJxd.js +0 -2
- package/ui/dist/assets/InviteCodeManagement-LEoGqYeA.js +0 -2
- package/ui/dist/assets/ProjectIcon-Chd_ofsw.js +0 -1
- package/ui/dist/assets/ProjectList-BvUfVB6c.js +0 -4
- package/ui/dist/assets/StatusIndicator-pRfkNcdV.js +0 -1
- package/ui/dist/assets/SummaryList-B6kXiTxL.js +0 -1
- package/ui/dist/assets/TaskDetail-CV6CzbOS.js +0 -1
- package/ui/dist/assets/TaskList-DL7brQKd.js +0 -1
- package/ui/dist/assets/TicketBoard-CrkkFj7C.js +0 -1
- package/ui/dist/assets/TicketDetail-hnnYclpD.js +0 -1
- package/ui/dist/assets/TicketList-CsDAyQCL.js +0 -1
- package/ui/dist/assets/UserManagement-BGFQyTSr.js +0 -2
- package/ui/dist/assets/ViewSwitcher-CnL0OqA8.js +0 -1
- package/ui/dist/assets/alert-dialog-SKM6Gjz4.js +0 -7
- package/ui/dist/assets/badge-CVHH1a-v.js +0 -1
- package/ui/dist/assets/brain-6o_RHVpe.js +0 -1
- package/ui/dist/assets/constants-Q5Zivl-a.js +0 -1
- package/ui/dist/assets/dialog-BUqN9Psj.js +0 -1
- package/ui/dist/assets/index-BUmnwPQr.js +0 -1
- package/ui/dist/assets/index-BfF5G4Cw.js +0 -1
- package/ui/dist/assets/index-C8N375c2.js +0 -1
- package/ui/dist/assets/index-CuxnqVVz.css +0 -1
- package/ui/dist/assets/index-CzMM3QOk.js +0 -1
- package/ui/dist/assets/index-lJlNPFVJ.js +0 -67
- package/ui/dist/assets/layers-jFqVrWMD.js +0 -1
- package/ui/dist/assets/markdown-renderer-n1ToC4XQ.js +0 -36
- package/ui/dist/assets/popover-CrmZgoWu.js +0 -1
- package/ui/dist/assets/progress-uv4SPkL5.js +0 -1
- package/ui/dist/assets/select-CeQ8AHGy.js +0 -1
- package/ui/dist/assets/server-CVHTZB72.js +0 -1
- package/ui/dist/assets/sheet-DuQExSho.js +0 -1
- package/ui/dist/assets/skeleton-TFiFJ3nB.js +0 -1
- package/ui/dist/assets/switch-CAePkd6k.js +0 -1
- package/ui/dist/assets/table-ZjAZ7hkt.js +0 -1
- package/ui/dist/assets/textarea-DsVPnSgR.js +0 -1
- package/ui/dist/assets/tooltip-BYmQ331W.js +0 -1
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error Recovery Advisor
|
|
3
|
+
*
|
|
4
|
+
* Analyzes API errors and returns an ordered list of recovery actions.
|
|
5
|
+
* The caller drives the actual recovery; this module is purely advisory.
|
|
6
|
+
*/
|
|
7
|
+
// === Constants ===
|
|
8
|
+
const WAIT_RATE_LIMIT_MS = 10_000; // 10 s initial back-off for 429
|
|
9
|
+
const WAIT_OVERLOADED_MS = 5_000; // 5 s for 503
|
|
10
|
+
const WAIT_TIMEOUT_MS = 2_000; // 2 s before retrying after timeout
|
|
11
|
+
// Provider preference for alternatives (local-first)
|
|
12
|
+
const PROVIDER_PREFERENCE = ['ollama', 'anthropic', 'openai', 'azure', 'google', 'cerebras'];
|
|
13
|
+
// === Helpers ===
|
|
14
|
+
function pickAlternativeProvider(current, available) {
|
|
15
|
+
return available
|
|
16
|
+
.filter(p => p !== current)
|
|
17
|
+
.sort((a, b) => PROVIDER_PREFERENCE.indexOf(a) - PROVIDER_PREFERENCE.indexOf(b))[0];
|
|
18
|
+
}
|
|
19
|
+
function containsAny(haystack, needles) {
|
|
20
|
+
const lower = haystack.toLowerCase();
|
|
21
|
+
return needles.some(n => lower.includes(n));
|
|
22
|
+
}
|
|
23
|
+
// === ErrorRecoveryAdvisor ===
|
|
24
|
+
export class ErrorRecoveryAdvisor {
|
|
25
|
+
/**
|
|
26
|
+
* Analyze an error and return an ordered list of recommended recovery actions.
|
|
27
|
+
*
|
|
28
|
+
* Rules applied (in priority order):
|
|
29
|
+
* 401 / 403 → abort (auth errors cannot be retried)
|
|
30
|
+
* 429 (rate limit) → wait + switch_provider (if available) + retry
|
|
31
|
+
* 503 (server overloaded) → wait + retry
|
|
32
|
+
* 400 (bad request) → reduce_context or switch_model
|
|
33
|
+
* ECONNREFUSED / ENOTFOUND → switch_provider
|
|
34
|
+
* timeout → wait briefly + retry with reduce_context hint
|
|
35
|
+
* context_length_exceeded → reduce_context + switch_model
|
|
36
|
+
* content filter → switch_model
|
|
37
|
+
* generic retry-eligible → retry (up to maxRetries)
|
|
38
|
+
*/
|
|
39
|
+
advise(error, context) {
|
|
40
|
+
const { statusCode, code, message, provider, model } = error;
|
|
41
|
+
const { availableProviders, retryCount, maxRetries } = context;
|
|
42
|
+
const actions = [];
|
|
43
|
+
const msgLower = message.toLowerCase();
|
|
44
|
+
const codeLower = (code ?? '').toLowerCase();
|
|
45
|
+
// --- Auth errors: no recovery possible ---
|
|
46
|
+
if (statusCode === 401 || statusCode === 403) {
|
|
47
|
+
actions.push({
|
|
48
|
+
type: 'abort',
|
|
49
|
+
description: `Authentication failed for ${provider}. Check your API key or credentials.`,
|
|
50
|
+
});
|
|
51
|
+
return actions;
|
|
52
|
+
}
|
|
53
|
+
// --- Rate limit (429) ---
|
|
54
|
+
if (statusCode === 429 || containsAny(msgLower, ['rate limit', 'too many requests', 'ratelimit'])) {
|
|
55
|
+
const backOffMs = WAIT_RATE_LIMIT_MS * Math.pow(2, Math.min(retryCount, 3));
|
|
56
|
+
actions.push({
|
|
57
|
+
type: 'wait',
|
|
58
|
+
description: `Rate limit hit on ${provider}. Waiting ${backOffMs / 1000}s before retry.`,
|
|
59
|
+
waitMs: backOffMs,
|
|
60
|
+
});
|
|
61
|
+
const alternative = pickAlternativeProvider(provider, availableProviders);
|
|
62
|
+
if (alternative) {
|
|
63
|
+
actions.push({
|
|
64
|
+
type: 'switch_provider',
|
|
65
|
+
description: `Switch to ${alternative} to avoid rate limit on ${provider}.`,
|
|
66
|
+
provider: alternative,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
if (retryCount < maxRetries) {
|
|
70
|
+
actions.push({
|
|
71
|
+
type: 'retry',
|
|
72
|
+
description: `Retry request on ${provider} after waiting (attempt ${retryCount + 1}/${maxRetries}).`,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
return actions;
|
|
76
|
+
}
|
|
77
|
+
// --- Server overloaded (503) ---
|
|
78
|
+
if (statusCode === 503 || containsAny(msgLower, ['overloaded', 'service unavailable', 'server error'])) {
|
|
79
|
+
actions.push({
|
|
80
|
+
type: 'wait',
|
|
81
|
+
description: `${provider} is overloaded. Waiting ${WAIT_OVERLOADED_MS / 1000}s.`,
|
|
82
|
+
waitMs: WAIT_OVERLOADED_MS,
|
|
83
|
+
});
|
|
84
|
+
if (retryCount < maxRetries) {
|
|
85
|
+
actions.push({
|
|
86
|
+
type: 'retry',
|
|
87
|
+
description: `Retry on ${provider} after server overload (attempt ${retryCount + 1}/${maxRetries}).`,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
return actions;
|
|
91
|
+
}
|
|
92
|
+
// --- Context length exceeded ---
|
|
93
|
+
if (containsAny(msgLower, ['context length', 'context_length_exceeded', 'maximum context', 'too long', 'token limit'])
|
|
94
|
+
|| codeLower === 'context_length_exceeded') {
|
|
95
|
+
actions.push({
|
|
96
|
+
type: 'reduce_context',
|
|
97
|
+
description: 'Message is too long for the current model. Reduce context or summarize earlier turns.',
|
|
98
|
+
});
|
|
99
|
+
actions.push({
|
|
100
|
+
type: 'switch_model',
|
|
101
|
+
description: `Switch to a model with a larger context window than ${model}.`,
|
|
102
|
+
model,
|
|
103
|
+
});
|
|
104
|
+
return actions;
|
|
105
|
+
}
|
|
106
|
+
// --- Content filter ---
|
|
107
|
+
if (containsAny(msgLower, ['content filter', 'content_filter', 'safety', 'policy violation', 'blocked'])) {
|
|
108
|
+
actions.push({
|
|
109
|
+
type: 'switch_model',
|
|
110
|
+
description: `Content was filtered by ${provider}. Try a different model with different safety settings.`,
|
|
111
|
+
model,
|
|
112
|
+
});
|
|
113
|
+
actions.push({
|
|
114
|
+
type: 'abort',
|
|
115
|
+
description: 'If the issue persists, rephrase your request to avoid the content filter.',
|
|
116
|
+
});
|
|
117
|
+
return actions;
|
|
118
|
+
}
|
|
119
|
+
// --- Bad request (400) ---
|
|
120
|
+
if (statusCode === 400) {
|
|
121
|
+
actions.push({
|
|
122
|
+
type: 'reduce_context',
|
|
123
|
+
description: 'Request was malformed or too large. Try reducing context size.',
|
|
124
|
+
});
|
|
125
|
+
actions.push({
|
|
126
|
+
type: 'switch_model',
|
|
127
|
+
description: `The model ${model} may not support this request format. Try a different model.`,
|
|
128
|
+
model,
|
|
129
|
+
});
|
|
130
|
+
return actions;
|
|
131
|
+
}
|
|
132
|
+
// --- Connection refused / DNS failure ---
|
|
133
|
+
if (codeLower === 'econnrefused'
|
|
134
|
+
|| codeLower === 'enotfound'
|
|
135
|
+
|| containsAny(msgLower, ['econnrefused', 'enotfound', 'connection refused', 'network error'])) {
|
|
136
|
+
const alternative = pickAlternativeProvider(provider, availableProviders);
|
|
137
|
+
if (alternative) {
|
|
138
|
+
actions.push({
|
|
139
|
+
type: 'switch_provider',
|
|
140
|
+
description: `Cannot reach ${provider}. Switch to ${alternative}.`,
|
|
141
|
+
provider: alternative,
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
actions.push({
|
|
146
|
+
type: 'abort',
|
|
147
|
+
description: `Cannot reach ${provider} and no alternative providers are available.`,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
return actions;
|
|
151
|
+
}
|
|
152
|
+
// --- Timeout ---
|
|
153
|
+
if (codeLower === 'etimedout'
|
|
154
|
+
|| codeLower === 'econnaborted'
|
|
155
|
+
|| containsAny(msgLower, ['timeout', 'timed out', 'request timeout'])) {
|
|
156
|
+
actions.push({
|
|
157
|
+
type: 'wait',
|
|
158
|
+
description: `Request timed out. Waiting ${WAIT_TIMEOUT_MS / 1000}s before retry.`,
|
|
159
|
+
waitMs: WAIT_TIMEOUT_MS,
|
|
160
|
+
});
|
|
161
|
+
if (retryCount < maxRetries) {
|
|
162
|
+
actions.push({
|
|
163
|
+
type: 'retry',
|
|
164
|
+
description: `Retry with a shorter prompt or context (attempt ${retryCount + 1}/${maxRetries}).`,
|
|
165
|
+
});
|
|
166
|
+
actions.push({
|
|
167
|
+
type: 'reduce_context',
|
|
168
|
+
description: 'Reducing context may help the request complete within the timeout.',
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
return actions;
|
|
172
|
+
}
|
|
173
|
+
// --- Generic: retry if budget allows ---
|
|
174
|
+
if (retryCount < maxRetries) {
|
|
175
|
+
actions.push({
|
|
176
|
+
type: 'retry',
|
|
177
|
+
description: `Retry request (attempt ${retryCount + 1}/${maxRetries}).`,
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
actions.push({
|
|
182
|
+
type: 'abort',
|
|
183
|
+
description: `Max retries (${maxRetries}) reached. Cannot recover automatically.`,
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
return actions;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
// === Singleton ===
|
|
190
|
+
let _advisor;
|
|
191
|
+
export function getErrorRecoveryAdvisor() {
|
|
192
|
+
if (!_advisor) {
|
|
193
|
+
_advisor = new ErrorRecoveryAdvisor();
|
|
194
|
+
}
|
|
195
|
+
return _advisor;
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=error-recovery.js.map
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Streaming Events
|
|
3
|
+
*
|
|
4
|
+
* Discriminated union of all events that the AgentExecutor can yield
|
|
5
|
+
* from its async generator stream() method.
|
|
6
|
+
*/
|
|
7
|
+
export type AgentEvent = {
|
|
8
|
+
type: 'session:start';
|
|
9
|
+
sessionId: string;
|
|
10
|
+
config: Record<string, unknown>;
|
|
11
|
+
} | {
|
|
12
|
+
type: 'step:start';
|
|
13
|
+
stepIndex: number;
|
|
14
|
+
} | {
|
|
15
|
+
type: 'tool:call';
|
|
16
|
+
toolName: string;
|
|
17
|
+
args: unknown;
|
|
18
|
+
toolCallId: string;
|
|
19
|
+
} | {
|
|
20
|
+
type: 'tool:result';
|
|
21
|
+
toolCallId: string;
|
|
22
|
+
result: unknown;
|
|
23
|
+
duration: number;
|
|
24
|
+
success: boolean;
|
|
25
|
+
} | {
|
|
26
|
+
type: 'tool:error';
|
|
27
|
+
toolCallId: string;
|
|
28
|
+
error: string;
|
|
29
|
+
} | {
|
|
30
|
+
type: 'content';
|
|
31
|
+
text: string;
|
|
32
|
+
delta: string;
|
|
33
|
+
} | {
|
|
34
|
+
type: 'thinking';
|
|
35
|
+
text: string;
|
|
36
|
+
} | {
|
|
37
|
+
type: 'cost:update';
|
|
38
|
+
inputTokens: number;
|
|
39
|
+
outputTokens: number;
|
|
40
|
+
estimatedCost: number;
|
|
41
|
+
} | {
|
|
42
|
+
type: 'circuit:open';
|
|
43
|
+
toolName: string;
|
|
44
|
+
cooldownMs: number;
|
|
45
|
+
} | {
|
|
46
|
+
type: 'step:complete';
|
|
47
|
+
stepIndex: number;
|
|
48
|
+
toolCalls: number;
|
|
49
|
+
hasContent: boolean;
|
|
50
|
+
} | {
|
|
51
|
+
type: 'session:complete';
|
|
52
|
+
result: Record<string, unknown>;
|
|
53
|
+
totalSteps: number;
|
|
54
|
+
totalTokens: number;
|
|
55
|
+
} | {
|
|
56
|
+
type: 'session:error';
|
|
57
|
+
error: string;
|
|
58
|
+
stack?: string;
|
|
59
|
+
} | {
|
|
60
|
+
type: 'session:abort';
|
|
61
|
+
reason: string;
|
|
62
|
+
} | {
|
|
63
|
+
type: 'checkpoint:saved';
|
|
64
|
+
sessionId: string;
|
|
65
|
+
step: number;
|
|
66
|
+
} | {
|
|
67
|
+
type: 'checkpoint:resumed';
|
|
68
|
+
sessionId: string;
|
|
69
|
+
step: number;
|
|
70
|
+
} | {
|
|
71
|
+
type: 'budget:warning';
|
|
72
|
+
usedPercent: number;
|
|
73
|
+
tokensUsed: number;
|
|
74
|
+
tokensMax: number;
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -9,19 +9,47 @@
|
|
|
9
9
|
import type { LanguageModel, ModelMessage, ToolSet } from "ai";
|
|
10
10
|
import { EventEmitter } from "node:events";
|
|
11
11
|
import type { AgentState, AgentConfig, AgentEvents } from "./types.js";
|
|
12
|
+
import type { AgentEvent } from "./events.js";
|
|
13
|
+
import type { ExecutorCheckpoint } from "./checkpoint-manager.js";
|
|
14
|
+
/** Handler called by the executor to execute a tool by name */
|
|
15
|
+
export type ToolExecuteHandler = (name: string, args: Record<string, unknown>) => Promise<unknown>;
|
|
12
16
|
type ExecutorTools = ToolSet;
|
|
13
17
|
export declare class AgentExecutor extends EventEmitter<AgentEvents> {
|
|
14
18
|
private state;
|
|
15
19
|
private config;
|
|
16
20
|
private abortController;
|
|
17
21
|
private isRunning;
|
|
22
|
+
private resultStore;
|
|
23
|
+
private circuitBreaker;
|
|
24
|
+
private hooks;
|
|
25
|
+
private compactor;
|
|
26
|
+
private checkpointManager;
|
|
18
27
|
constructor(sessionId: string, conversationId: string, goal: string, config?: Partial<AgentConfig>);
|
|
28
|
+
/**
|
|
29
|
+
* Async generator that streams agent events as they happen.
|
|
30
|
+
*
|
|
31
|
+
* Yields AgentEvent values in real time: session:start, step:start,
|
|
32
|
+
* tool:call, tool:result/tool:error, content, cost:update, step:complete,
|
|
33
|
+
* and finally session:complete, session:error, or session:abort.
|
|
34
|
+
*
|
|
35
|
+
* This is the canonical implementation; run() delegates here.
|
|
36
|
+
*/
|
|
37
|
+
stream(model: LanguageModel, messages: ModelMessage[], tools: ExecutorTools, onToolExecute?: ToolExecuteHandler, providerHint?: string): AsyncGenerator<AgentEvent>;
|
|
19
38
|
/**
|
|
20
39
|
* Run the agent until completion or stop condition.
|
|
21
40
|
* Uses AI SDK's native multi-step execution — a single generateText call
|
|
22
41
|
* with stopWhen + onStepFinish replaces the old manual loop.
|
|
42
|
+
*
|
|
43
|
+
* Backward-compatible: delegates to stream() and returns the final AgentState.
|
|
44
|
+
*/
|
|
45
|
+
run(model: LanguageModel, messages: ModelMessage[], tools: ExecutorTools, onToolExecute?: ToolExecuteHandler, providerHint?: string): Promise<AgentState>;
|
|
46
|
+
/**
|
|
47
|
+
* Resume execution from a saved checkpoint.
|
|
48
|
+
*
|
|
49
|
+
* Restores the message history and step counter from the checkpoint, emits a
|
|
50
|
+
* checkpoint:resumed event, then continues with generateText from that point.
|
|
23
51
|
*/
|
|
24
|
-
|
|
52
|
+
resume(checkpoint: ExecutorCheckpoint, model: LanguageModel, tools: ExecutorTools, onToolExecute?: ToolExecuteHandler, providerHint?: string): AsyncGenerator<AgentEvent>;
|
|
25
53
|
/**
|
|
26
54
|
* Cancel the running agent.
|
|
27
55
|
*/
|
|
@@ -45,6 +73,12 @@ export declare class AgentExecutor extends EventEmitter<AgentEvents> {
|
|
|
45
73
|
* after each step, the SDK calls execute() and feeds results back.
|
|
46
74
|
*/
|
|
47
75
|
private wrapToolsWithExecute;
|
|
76
|
+
/**
|
|
77
|
+
* Like wrapToolsWithExecute, but additionally pushes tool:call, tool:result,
|
|
78
|
+
* and tool:error AgentEvents via the provided push callback so that the
|
|
79
|
+
* stream() generator can yield them in real time.
|
|
80
|
+
*/
|
|
81
|
+
private wrapToolsWithExecuteAndEvents;
|
|
48
82
|
/**
|
|
49
83
|
* Check custom stop conditions that can't be expressed via AI SDK's stopWhen.
|
|
50
84
|
* These include consecutive failures, same tool repeated, budget, timeout, etc.
|