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
package/.env.example
CHANGED
|
@@ -197,13 +197,25 @@ POOL_QUEUE_TIMEOUT_MS=30000
|
|
|
197
197
|
# SEARCH & EMBEDDINGS
|
|
198
198
|
# ════════════════════════════════════════════════════════════════════════════════
|
|
199
199
|
|
|
200
|
-
# Web search via SearXNG
|
|
201
|
-
SEARXNG_URL=https://searx.tiekoetter.com
|
|
200
|
+
# Web search via SearXNG (self-hosted only — public instances rate-limit heavily)
|
|
201
|
+
# SEARXNG_URL=https://searx.tiekoetter.com # disabled: 429 Too Many Requests
|
|
202
|
+
|
|
203
|
+
# Preferred: set one of these instead (sign up for a free tier key)
|
|
204
|
+
# BRAVE_API_KEY= # https://api.search.brave.com (2000 free/month)
|
|
205
|
+
# SERPER_API_KEY= # https://serper.dev (2500 free)
|
|
206
|
+
# TAVILY_API_KEY= # https://tavily.com (1000 free/month)
|
|
202
207
|
|
|
203
208
|
# Embedding provider: local, openai, voyage
|
|
204
209
|
EMBEDDING_PROVIDER=local
|
|
205
210
|
# VOYAGE_API_KEY=xxx
|
|
206
211
|
|
|
212
|
+
# ════════════════════════════════════════════════════════════════════════════════
|
|
213
|
+
# CONTENT MODERATION (optional)
|
|
214
|
+
# ════════════════════════════════════════════════════════════════════════════════
|
|
215
|
+
|
|
216
|
+
# Content moderation (optional, uses glin-profanity)
|
|
217
|
+
# CONTENT_FILTER=true
|
|
218
|
+
|
|
207
219
|
# ════════════════════════════════════════════════════════════════════════════════
|
|
208
220
|
# DOCKER / MONITORING (docker-compose only)
|
|
209
221
|
# ════════════════════════════════════════════════════════════════════════════════
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,43 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [2.3.0](https://github.com/profclaw/profclaw/compare/v2.2.0...v2.3.0) (2026-04-13)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* integrate glin-profanity content filter + thesvg brand icons ([#44](https://github.com/profclaw/profclaw/issues/44)) ([67b84d6](https://github.com/profclaw/profclaw/commit/67b84d6f20247f9933007fcbbd6b44ec911406c8))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* npm OIDC publish - upgrade to npm 11, unset NODE_AUTH_TOKEN ([a49ffdd](https://github.com/profclaw/profclaw/commit/a49ffddfc982a43245c23178d3d3d61eef5148db))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Performance Improvements
|
|
19
|
+
|
|
20
|
+
* parallel multi-arch Docker builds + pico image in CI ([5fd0d5c](https://github.com/profclaw/profclaw/commit/5fd0d5c3b5b0da877a879ac4636e202bdedc36d7))
|
|
21
|
+
|
|
22
|
+
## [2.2.0](https://github.com/profclaw/profclaw/compare/v2.1.0...v2.2.0) (2026-04-13)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Features
|
|
26
|
+
|
|
27
|
+
* pico auth bypass, docs overhaul, issue templates, quickstart guide ([#32](https://github.com/profclaw/profclaw/issues/32)) ([d80b7ac](https://github.com/profclaw/profclaw/commit/d80b7ac6b63a72cf163791138c99c13baca8ab39))
|
|
28
|
+
* token optimization, Qwen 3 support, tool routing ([#30](https://github.com/profclaw/profclaw/issues/30)) ([6a3d2bd](https://github.com/profclaw/profclaw/commit/6a3d2bd91fd5b72514e5170a29d5a30e0548f315))
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
### Bug Fixes
|
|
32
|
+
|
|
33
|
+
* add missing @tiptap/core and @tiptap/suggestion to ui deps ([557abe1](https://github.com/profclaw/profclaw/commit/557abe109fe1f6ff71c1444fa1e53f93a6d24820))
|
|
34
|
+
|
|
35
|
+
## [2.1.0](https://github.com/profclaw/profclaw/compare/v2.0.0...v2.1.0) (2026-04-11)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
### Features
|
|
39
|
+
|
|
40
|
+
* engine hardening, Ink TUI, launch-ready enhancements ([#21](https://github.com/profclaw/profclaw/issues/21)) ([7bb38cf](https://github.com/profclaw/profclaw/commit/7bb38cf4006a2c68ec3c7cda70e8808964654c48))
|
|
41
|
+
|
|
5
42
|
## [2.0.0](https://github.com/profclaw/profclaw/releases/tag/v2.0.0) (2026-03-14)
|
|
6
43
|
|
|
7
44
|
Initial public beta release.
|
package/CONTRIBUTING.md
CHANGED
|
@@ -112,6 +112,26 @@ skills/ - Built-in skill definitions
|
|
|
112
112
|
2. Register in `src/chat/execution/tools/index.ts`
|
|
113
113
|
3. Add tests
|
|
114
114
|
|
|
115
|
+
## Release checklist
|
|
116
|
+
|
|
117
|
+
For maintainers publishing a new version:
|
|
118
|
+
|
|
119
|
+
1. Merge PRs to `main`
|
|
120
|
+
2. Release-please auto-creates a release PR (bumps version, updates CHANGELOG)
|
|
121
|
+
3. Merge the release PR. This creates a git tag and triggers npm publish via CI.
|
|
122
|
+
4. Build and push Docker images locally:
|
|
123
|
+
```bash
|
|
124
|
+
./scripts/release-docker.sh
|
|
125
|
+
```
|
|
126
|
+
The script builds both main and pico images, shows sizes, and asks before pushing to ghcr.io.
|
|
127
|
+
5. Verify the release:
|
|
128
|
+
```bash
|
|
129
|
+
npm info profclaw version # npm
|
|
130
|
+
docker pull ghcr.io/profclaw/profclaw:latest # Docker
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Docker images are built locally (not in CI) to save GitHub Actions minutes. The script handles ghcr.io login via `gh auth`.
|
|
134
|
+
|
|
115
135
|
## License
|
|
116
136
|
|
|
117
137
|
By contributing, you agree that your contributions will be licensed under the AGPL-3.0 license.
|
package/Dockerfile
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# ====================
|
|
2
2
|
# Stage 1: Base
|
|
3
3
|
# ====================
|
|
4
|
-
FROM node:22-
|
|
4
|
+
FROM node:22-slim AS base
|
|
5
5
|
|
|
6
6
|
# Install pnpm
|
|
7
7
|
RUN corepack enable && corepack prepare pnpm@latest --activate
|
|
@@ -19,60 +19,76 @@ RUN pnpm install --frozen-lockfile
|
|
|
19
19
|
# Stage 3: Dependencies (UI)
|
|
20
20
|
# ====================
|
|
21
21
|
FROM base AS ui-deps
|
|
22
|
-
WORKDIR /app
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
WORKDIR /app
|
|
23
|
+
# Workspace lockfile lives at root — copy both for pnpm resolution
|
|
24
|
+
COPY pnpm-lock.yaml pnpm-workspace.yaml package.json ./
|
|
25
|
+
COPY ui/package.json ./ui/
|
|
26
|
+
RUN pnpm install --frozen-lockfile --filter ui
|
|
25
27
|
|
|
26
28
|
# ====================
|
|
27
|
-
# Stage 4: Build Backend (tsc only
|
|
29
|
+
# Stage 4: Build Backend (tsc only)
|
|
28
30
|
# ====================
|
|
29
31
|
FROM base AS build-backend
|
|
30
32
|
COPY --from=deps /app/node_modules ./node_modules
|
|
31
33
|
COPY . .
|
|
32
|
-
RUN ./node_modules/.bin/tsc --project tsconfig.json
|
|
34
|
+
RUN ./node_modules/.bin/tsc --project tsconfig.json --skipLibCheck
|
|
33
35
|
|
|
34
36
|
# ====================
|
|
35
|
-
# Stage 5: Build UI
|
|
37
|
+
# Stage 5: Build UI (vite build)
|
|
36
38
|
# ====================
|
|
37
39
|
FROM base AS build-ui
|
|
38
40
|
WORKDIR /app/ui
|
|
41
|
+
COPY --from=ui-deps /app/node_modules ../node_modules
|
|
39
42
|
COPY --from=ui-deps /app/ui/node_modules ./node_modules
|
|
40
43
|
COPY ui/ ./
|
|
41
44
|
RUN pnpm build
|
|
42
45
|
|
|
43
46
|
# ====================
|
|
44
|
-
# Stage 6: Production
|
|
47
|
+
# Stage 6: Production dependencies (pruned)
|
|
48
|
+
# ====================
|
|
49
|
+
FROM base AS prod-deps
|
|
50
|
+
COPY package.json pnpm-lock.yaml* ./
|
|
51
|
+
RUN pnpm install --frozen-lockfile --prod && \
|
|
52
|
+
# Remove unnecessary files from node_modules to reduce image size
|
|
53
|
+
find node_modules -name "*.d.ts" -delete 2>/dev/null || true && \
|
|
54
|
+
find node_modules -name "*.map" -delete 2>/dev/null || true && \
|
|
55
|
+
find node_modules -name "README*" -delete 2>/dev/null || true && \
|
|
56
|
+
find node_modules -name "CHANGELOG*" -delete 2>/dev/null || true && \
|
|
57
|
+
find node_modules -name "LICENSE*" -delete 2>/dev/null || true && \
|
|
58
|
+
find node_modules -name ".npmignore" -delete 2>/dev/null || true && \
|
|
59
|
+
find node_modules -type d -name "test" -prune -exec rm -rf {} + 2>/dev/null || true && \
|
|
60
|
+
find node_modules -type d -name "tests" -prune -exec rm -rf {} + 2>/dev/null || true && \
|
|
61
|
+
find node_modules -type d -name "__tests__" -prune -exec rm -rf {} + 2>/dev/null || true
|
|
62
|
+
|
|
63
|
+
# ====================
|
|
64
|
+
# Stage 7: Production (pro mode - full features)
|
|
45
65
|
# ====================
|
|
46
|
-
FROM node:22-
|
|
66
|
+
FROM node:22-slim AS production
|
|
47
67
|
|
|
48
|
-
# Install Chromium for Playwright, git for agent sandbox
|
|
49
|
-
RUN
|
|
68
|
+
# Install runtime dependencies: Chromium for Playwright, git for agent sandbox
|
|
69
|
+
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
50
70
|
chromium \
|
|
51
|
-
nss \
|
|
52
|
-
freetype \
|
|
53
|
-
harfbuzz \
|
|
54
71
|
ca-certificates \
|
|
55
|
-
ttf-freefont \
|
|
56
72
|
curl \
|
|
57
73
|
git \
|
|
58
|
-
&& rm -rf /var/
|
|
74
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
59
75
|
|
|
60
76
|
# Enable pnpm via corepack (for agent sandbox: clone, build, lint)
|
|
61
77
|
RUN corepack enable && corepack prepare pnpm@latest --activate
|
|
62
78
|
|
|
63
79
|
# Set Playwright to use system Chromium
|
|
64
80
|
ENV PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1
|
|
65
|
-
ENV PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH=/usr/bin/chromium
|
|
81
|
+
ENV PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH=/usr/bin/chromium
|
|
66
82
|
|
|
67
83
|
# Create non-root user for security
|
|
68
|
-
RUN
|
|
69
|
-
|
|
84
|
+
RUN groupadd -g 1001 profclaw && \
|
|
85
|
+
useradd -u 1001 -g profclaw -s /bin/bash -m profclaw
|
|
70
86
|
|
|
71
87
|
WORKDIR /app
|
|
72
88
|
|
|
73
|
-
# Copy
|
|
89
|
+
# Copy pruned production deps (smaller than full node_modules)
|
|
90
|
+
COPY --from=prod-deps /app/node_modules ./node_modules
|
|
74
91
|
COPY --from=build-backend /app/dist ./dist
|
|
75
|
-
COPY --from=build-backend /app/node_modules ./node_modules
|
|
76
92
|
COPY --from=build-backend /app/package.json ./
|
|
77
93
|
|
|
78
94
|
# Copy runtime config (settings.yml for storage tier, queue, etc.)
|
|
@@ -90,13 +106,13 @@ RUN mkdir -p /app/data && \
|
|
|
90
106
|
chmod +x /app/dist/cli/index.js 2>/dev/null || true && \
|
|
91
107
|
chown -R profclaw:profclaw /app
|
|
92
108
|
|
|
93
|
-
# Production environment
|
|
109
|
+
# Production environment defaults (override via env_file or environment)
|
|
94
110
|
ENV NODE_ENV=production
|
|
95
111
|
ENV PORT=3000
|
|
96
112
|
ENV PROFCLAW_MODE=pro
|
|
97
113
|
|
|
98
114
|
# Health check
|
|
99
|
-
HEALTHCHECK --interval=30s --timeout=10s --start-period=
|
|
115
|
+
HEALTHCHECK --interval=30s --timeout=10s --start-period=10s --retries=3 \
|
|
100
116
|
CMD curl -f http://localhost:${PORT}/health || exit 1
|
|
101
117
|
|
|
102
118
|
# Switch to non-root user
|
package/README.md
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
<h1 align="center">profClaw</h1>
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
|
-
<b>
|
|
9
|
-
|
|
8
|
+
<b>Self-hosted AI agent engine for developers.</b><br>
|
|
9
|
+
35 providers · 72 tools · 22 channels · runs on anything.
|
|
10
10
|
</p>
|
|
11
11
|
|
|
12
12
|
<p align="center">
|
|
@@ -14,6 +14,9 @@
|
|
|
14
14
|
<a href="LICENSE"><img src="https://img.shields.io/badge/License-AGPL--3.0-blue.svg?style=for-the-badge" alt="License: AGPL-3.0"></a>
|
|
15
15
|
<img src="https://img.shields.io/badge/Node.js-22%2B-339933?style=for-the-badge&logo=node.js&logoColor=white" alt="Node.js 22+">
|
|
16
16
|
<a href="https://github.com/profclaw/profclaw/pkgs/container/profclaw"><img src="https://img.shields.io/badge/Docker-ghcr.io-2496ED?style=for-the-badge&logo=docker&logoColor=white" alt="Docker"></a>
|
|
17
|
+
<img src="https://img.shields.io/badge/providers-35-f43f5e?style=for-the-badge" alt="35 providers">
|
|
18
|
+
<img src="https://img.shields.io/badge/tools-72-fb7185?style=for-the-badge" alt="72 tools">
|
|
19
|
+
<img src="https://img.shields.io/badge/channels-22-e11d48?style=for-the-badge" alt="22 channels">
|
|
17
20
|
</p>
|
|
18
21
|
|
|
19
22
|
<p align="center">
|
|
@@ -24,11 +27,22 @@
|
|
|
24
27
|
|
|
25
28
|
---
|
|
26
29
|
|
|
30
|
+
<p align="center">
|
|
31
|
+
<img src="docs-local/demos/hero-chat.gif" alt="profClaw chat with Gemma 4, local and free" width="700">
|
|
32
|
+
</p>
|
|
33
|
+
|
|
34
|
+
<p align="center"><i>Chat with Gemma 4 locally. Zero cost. Runs on your Mac.</i></p>
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
27
38
|
## Table of Contents
|
|
28
39
|
|
|
29
40
|
- [Why profClaw](#why-profclaw)
|
|
30
41
|
- [Features](#features)
|
|
31
|
-
- [
|
|
42
|
+
- [Quick Start](#quick-start)
|
|
43
|
+
- [Interactive TUI](#interactive-tui)
|
|
44
|
+
- [Slash Commands](#slash-commands)
|
|
45
|
+
- [Headless Mode](#headless-mode)
|
|
32
46
|
- [Deployment Modes](#deployment-modes)
|
|
33
47
|
- [Where It Runs](#where-it-runs)
|
|
34
48
|
- [Configuration](#configuration)
|
|
@@ -43,50 +57,57 @@
|
|
|
43
57
|
|
|
44
58
|
## Why profClaw
|
|
45
59
|
|
|
46
|
-
Most AI coding tools are
|
|
47
|
-
|
|
48
|
-
- **Local-first** - runs on your machine, your data stays local
|
|
49
|
-
- **Multi-agent orchestration** - routes tasks to the right agent (Claude, GPT, Ollama) based on capability scoring, not just round-robin
|
|
50
|
-
- **Real task queue** - BullMQ with dead letter queue, retry with backoff, priority scheduling
|
|
51
|
-
- **Built-in project management** - tickets, Kanban, sprints, burndown charts, bi-directional sync with GitHub/Jira/Linear
|
|
52
|
-
- **22 chat channels** - talk to your AI through Slack, Discord, Telegram, WhatsApp, Teams, or 17 others
|
|
53
|
-
- **Cost tracking** - per-token budget management with alerts at 50/80/100%
|
|
54
|
-
- **72 built-in tools** - file ops, git, browser automation, cron, web search, canvas, voice
|
|
55
|
-
- **Mode-aware** - scales from a Raspberry Pi (pico) to a full team server (pro)
|
|
60
|
+
Most AI coding tools are cloud-only (Cursor, Devin) or single-purpose CLIs (Aider, SWE-Agent). profClaw runs on your machine, talks to 35 providers (or none, Ollama works offline), and does more than chat.
|
|
56
61
|
|
|
57
|
-
|
|
62
|
+
- Local-first. Your data stays on your hardware.
|
|
63
|
+
- 35 AI providers, including Ollama for fully offline usage.
|
|
64
|
+
- Interactive TUI with streaming markdown, syntax highlighting, and a model switcher.
|
|
65
|
+
- Routes tasks to the right agent based on capability scoring.
|
|
66
|
+
- Real task queue with retry, backoff, and dead letter handling (BullMQ + Redis).
|
|
67
|
+
- 22 chat channels: Slack, Discord, Telegram, WhatsApp, Teams, and more.
|
|
68
|
+
- Per-token cost tracking with budget alerts.
|
|
69
|
+
- 72 built-in tools: file ops, git, browser automation, cron, web search, voice.
|
|
70
|
+
- Pico mode runs on a Raspberry Pi Zero 2W in ~140MB RAM.
|
|
58
71
|
|
|
59
72
|
## Features
|
|
60
73
|
|
|
61
74
|
| | |
|
|
62
75
|
|---|---|
|
|
63
|
-
|
|
|
64
|
-
|
|
|
65
|
-
|
|
|
66
|
-
|
|
|
67
|
-
|
|
|
68
|
-
|
|
|
69
|
-
|
|
|
70
|
-
|
|
|
76
|
+
| 35 AI providers | Anthropic, OpenAI, Google, Groq, Ollama, DeepSeek, Bedrock, and 28 more |
|
|
77
|
+
| 22 chat channels | Slack, Discord, Telegram, WhatsApp, iMessage, Matrix, Teams, and 15 more |
|
|
78
|
+
| 72 built-in tools | File ops, git, browser automation, cron, web search, canvas, voice |
|
|
79
|
+
| 50 skills | Coding agent, GitHub issues, Notion, Obsidian, image gen, and more |
|
|
80
|
+
| Interactive TUI | Streaming markdown, syntax highlighting, slash picker, model selector |
|
|
81
|
+
| MCP server | Model Context Protocol. Works with Claude Desktop, Cursor, any MCP client |
|
|
82
|
+
| Voice I/O | Whisper STT + TTS (ElevenLabs/OpenAI/system) + talk mode |
|
|
83
|
+
| Plugin SDK | Build and share plugins via npm or ClawHub |
|
|
84
|
+
| 3 deployment modes | Pico (~140MB), Mini (~145MB), Pro (full features) |
|
|
85
|
+
|
|
86
|
+
## Quick Start
|
|
71
87
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
88
|
+
```bash
|
|
89
|
+
npm install -g profclaw
|
|
90
|
+
profclaw init
|
|
91
|
+
profclaw chat --tui
|
|
92
|
+
```
|
|
75
93
|
|
|
76
94
|
```bash
|
|
77
|
-
|
|
95
|
+
# Verify
|
|
96
|
+
curl http://localhost:3000/health
|
|
78
97
|
```
|
|
79
98
|
|
|
80
|
-
|
|
99
|
+
`profclaw init` scans your project, detects your stack, and writes a `PROFCLAW.md` context file. It picks up any AI provider keys already in your environment.
|
|
81
100
|
|
|
82
|
-
|
|
101
|
+
`profclaw chat --tui` opens the terminal UI with streaming responses, code highlighting, slash commands, and a model selector.
|
|
102
|
+
|
|
103
|
+
### Full setup wizard
|
|
83
104
|
|
|
84
105
|
```bash
|
|
85
|
-
|
|
86
|
-
profclaw setup
|
|
87
|
-
profclaw serve
|
|
106
|
+
npx profclaw onboard
|
|
88
107
|
```
|
|
89
108
|
|
|
109
|
+
Walks you through provider setup, config, and server start. Takes about 5 minutes.
|
|
110
|
+
|
|
90
111
|
### Docker
|
|
91
112
|
|
|
92
113
|
```bash
|
|
@@ -118,15 +139,107 @@ docker compose --profile ai up -d
|
|
|
118
139
|
curl -fsSL https://raw.githubusercontent.com/profclaw/profclaw/main/install.sh | bash
|
|
119
140
|
```
|
|
120
141
|
|
|
142
|
+
## Interactive TUI
|
|
143
|
+
|
|
144
|
+
<p align="center">
|
|
145
|
+
<img src="docs-local/demos/tasks-demo.gif" alt="profClaw task management" width="700">
|
|
146
|
+
</p>
|
|
147
|
+
|
|
148
|
+
profClaw has a full terminal UI. No browser needed.
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
profclaw chat --tui
|
|
152
|
+
# or
|
|
153
|
+
profclaw tui
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
What you get:
|
|
157
|
+
|
|
158
|
+
- Streaming markdown rendered as the model responds
|
|
159
|
+
- Syntax-highlighted code blocks (100+ languages)
|
|
160
|
+
- Slash command picker: type `/` to browse skills
|
|
161
|
+
- Model selector: switch providers mid-conversation with `Ctrl+M`
|
|
162
|
+
- Tool execution panel showing every call, argument, and result
|
|
163
|
+
- Session history and full keyboard navigation
|
|
164
|
+
|
|
165
|
+
```
|
|
166
|
+
┌─ profClaw v2.x.x ─────────────────────────────────────────────┐
|
|
167
|
+
│ [Chat] [Tools] │
|
|
168
|
+
│ │
|
|
169
|
+
│ You: Review src/auth.ts for security issues │
|
|
170
|
+
│ │
|
|
171
|
+
│ Agent: I'll analyze auth.ts for security issues. read_file │
|
|
172
|
+
│ ───────── │
|
|
173
|
+
│ ## Security Analysis auth.ts │
|
|
174
|
+
│ │
|
|
175
|
+
│ **Critical**: JWT secret read from env without analyze │
|
|
176
|
+
│ fallback guard on line 42. If `JWT_SECRET` is ──────── │
|
|
177
|
+
│ undefined the app will sign tokens with `undefined`. auth.ts │
|
|
178
|
+
│ ... │
|
|
179
|
+
└─────────────────────────────── [claude-sonnet-4-6] [pro] ──────┘
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## Slash Commands
|
|
183
|
+
|
|
184
|
+
Type `/` in any chat to run a skill. Skills are plain Markdown files, easy to create your own.
|
|
185
|
+
|
|
186
|
+
| Command | What it does |
|
|
187
|
+
|---|---|
|
|
188
|
+
| `/commit` | Write a conventional commit message for staged changes |
|
|
189
|
+
| `/review-pr 42` | Full code review of a pull request |
|
|
190
|
+
| `/deploy` | Run your deploy script with rollback awareness |
|
|
191
|
+
| `/summarize src/` | Summarize all files in a directory |
|
|
192
|
+
| `/web-research "topic"` | Research a topic across the web |
|
|
193
|
+
| `/analyze-code file.ts` | Security, performance, and style analysis |
|
|
194
|
+
| `/ticket PROJ-123` | Pull ticket context into the conversation |
|
|
195
|
+
| `/image "prompt"` | Generate an image via configured image provider |
|
|
196
|
+
| `/help` | List all available slash commands |
|
|
197
|
+
| `/exit` | Exit the current session |
|
|
198
|
+
|
|
199
|
+
See [Skills docs](https://profclaw.ai/docs/skills/overview) for all 50 built-in skills and how to create your own with a plain Markdown file.
|
|
200
|
+
|
|
201
|
+
## Headless Mode
|
|
202
|
+
|
|
203
|
+
<p align="center">
|
|
204
|
+
<img src="docs-local/demos/tools-demo.gif" alt="profClaw agentic tool calling" width="700">
|
|
205
|
+
</p>
|
|
206
|
+
|
|
207
|
+
Run agents from scripts, CI pipelines, or other services:
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
# One-shot message
|
|
211
|
+
profclaw chat "Summarize the last 10 git commits"
|
|
212
|
+
|
|
213
|
+
# JSON output for scripting
|
|
214
|
+
profclaw chat "List open TODOs in src/" --output json
|
|
215
|
+
|
|
216
|
+
# Run a skill headlessly
|
|
217
|
+
profclaw skill run commit --message "feat: add auth"
|
|
218
|
+
|
|
219
|
+
# Agent task with file context
|
|
220
|
+
profclaw agent run "Review src/ for security issues" --files src/
|
|
221
|
+
|
|
222
|
+
# Verify your setup
|
|
223
|
+
profclaw doctor
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
REST API:
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
curl -X POST http://localhost:3000/api/chat/message \
|
|
230
|
+
-H "Content-Type: application/json" \
|
|
231
|
+
-d '{"message": "List open GitHub issues", "provider": "anthropic"}'
|
|
232
|
+
```
|
|
233
|
+
|
|
121
234
|
## Deployment Modes
|
|
122
235
|
|
|
123
|
-
|
|
236
|
+
Same binary, different scale. Set `PROFCLAW_MODE` and go:
|
|
124
237
|
|
|
125
238
|
| Mode | What you get | RAM | Best for |
|
|
126
239
|
|------|-------------|-----|----------|
|
|
127
240
|
| **pico** | Agent + tools + 1 chat channel + cron. No UI. | ~140MB | Raspberry Pi, $5 VPS, home server |
|
|
128
241
|
| **mini** | + Dashboard, integrations, 3 channels | ~145MB | Personal dev server, small VPS |
|
|
129
|
-
| **pro** | + All channels, Redis queues, plugins, browser tools | ~
|
|
242
|
+
| **pro** | + All channels, Redis queues, plugins, browser tools | ~200MB | Teams, production |
|
|
130
243
|
|
|
131
244
|
Set via `PROFCLAW_MODE=pico|mini|pro` environment variable.
|
|
132
245
|
|
|
@@ -146,7 +259,7 @@ profClaw requires Node.js 22+. For bare-metal embedded devices (ESP32, Arduino),
|
|
|
146
259
|
|
|
147
260
|
## Configuration
|
|
148
261
|
|
|
149
|
-
The setup wizard (`profclaw
|
|
262
|
+
The setup wizard (`profclaw onboard`) handles everything interactively. Or set environment variables:
|
|
150
263
|
|
|
151
264
|
```bash
|
|
152
265
|
# AI Provider (pick one)
|
|
@@ -162,7 +275,9 @@ PORT=3000
|
|
|
162
275
|
REDIS_URL=redis://localhost:6379 # Required for pro mode
|
|
163
276
|
```
|
|
164
277
|
|
|
165
|
-
|
|
278
|
+
Run `profclaw doctor` to verify your configuration at any time.
|
|
279
|
+
|
|
280
|
+
See [`.env.example`](.env.example) for all 130+ options.
|
|
166
281
|
|
|
167
282
|
## AI Providers
|
|
168
283
|
|
|
@@ -183,7 +298,8 @@ See [`.env.example`](.env.example) for all options.
|
|
|
183
298
|
| Together | Open models | No |
|
|
184
299
|
| Fireworks | Open models | No |
|
|
185
300
|
| Mistral | Mistral Large, Codestral | No |
|
|
186
|
-
|
|
|
301
|
+
| LM Studio | Local models | Yes |
|
|
302
|
+
| ... and 21 more | HuggingFace, NVIDIA NIM, Cerebras, Replicate, Zhipu, Moonshot, Qwen, etc. | |
|
|
187
303
|
|
|
188
304
|
## Chat Channels
|
|
189
305
|
|
|
@@ -216,9 +332,11 @@ See [`.env.example`](.env.example) for all options.
|
|
|
216
332
|
|
|
217
333
|
| Platform | Features |
|
|
218
334
|
|----------|----------|
|
|
219
|
-
|
|
|
220
|
-
|
|
|
221
|
-
|
|
|
335
|
+
| GitHub | Webhooks, OAuth, issue sync, PR automation |
|
|
336
|
+
| Jira | Webhooks, OAuth, issue sync, transitions |
|
|
337
|
+
| Linear | Webhooks, OAuth, issue sync |
|
|
338
|
+
| Cloudflare | Workers deployment, KV, D1 |
|
|
339
|
+
| Tailscale | Private network access |
|
|
222
340
|
|
|
223
341
|
## Architecture
|
|
224
342
|
|
|
@@ -234,12 +352,21 @@ src/
|
|
|
234
352
|
providers/ 35 AI SDK providers
|
|
235
353
|
skills/ Skill loader and registry
|
|
236
354
|
mcp/ MCP server (stdio + SSE)
|
|
355
|
+
tui/ Interactive terminal UI (ink + blessed)
|
|
237
356
|
types/ Shared TypeScript types
|
|
238
357
|
|
|
239
358
|
ui/src/ React 19 + Vite dashboard (mini/pro only)
|
|
240
|
-
skills/ Built-in skill definitions
|
|
359
|
+
skills/ Built-in skill definitions (Markdown)
|
|
241
360
|
```
|
|
242
361
|
|
|
362
|
+
Design decisions:
|
|
363
|
+
- Same binary scales from pico to pro. Features are gated at runtime.
|
|
364
|
+
- Adding an AI provider is one file implementing `ModelAdapter`.
|
|
365
|
+
- Skills are plain `.md` files. No code needed.
|
|
366
|
+
- BullMQ for production queues, in-memory fallback for pico/mini.
|
|
367
|
+
|
|
368
|
+
See [Architecture docs](https://profclaw.ai/docs/architecture/overview) for a deep dive.
|
|
369
|
+
|
|
243
370
|
## Development
|
|
244
371
|
|
|
245
372
|
```bash
|
|
@@ -256,6 +383,13 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for full guidelines.
|
|
|
256
383
|
|
|
257
384
|
See [SECURITY.md](SECURITY.md) for our security policy and how to report vulnerabilities.
|
|
258
385
|
|
|
386
|
+
## Need help?
|
|
387
|
+
|
|
388
|
+
- [Quickstart guide](https://docs.profclaw.ai/guides/quickstart)
|
|
389
|
+
- [Full docs](https://docs.profclaw.ai)
|
|
390
|
+
- [Report a bug](https://github.com/profclaw/profclaw/issues/new?template=bug_report.md)
|
|
391
|
+
- [Discord](https://discord.gg/profclaw)
|
|
392
|
+
|
|
259
393
|
## License
|
|
260
394
|
|
|
261
395
|
[AGPL-3.0](LICENSE)
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Summary Tracker
|
|
3
|
+
*
|
|
4
|
+
* Provides real-time 1-2 word progress summaries of what agents are doing,
|
|
5
|
+
* suitable for display in CLI/UI progress indicators.
|
|
6
|
+
*/
|
|
7
|
+
export interface AgentSummary {
|
|
8
|
+
sessionId: string;
|
|
9
|
+
status: 'idle' | 'thinking' | 'executing' | 'waiting';
|
|
10
|
+
currentAction: string;
|
|
11
|
+
lastToolName?: string;
|
|
12
|
+
lastToolArgs?: string;
|
|
13
|
+
stepCount: number;
|
|
14
|
+
tokensUsed: number;
|
|
15
|
+
startedAt: number;
|
|
16
|
+
updatedAt: number;
|
|
17
|
+
}
|
|
18
|
+
type SseBroadcaster = (eventType: string, data: Record<string, unknown>) => void;
|
|
19
|
+
export declare class AgentSummaryTracker {
|
|
20
|
+
private summaries;
|
|
21
|
+
private broadcaster;
|
|
22
|
+
registerSSEBroadcaster(broadcaster: SseBroadcaster): void;
|
|
23
|
+
start(sessionId: string): void;
|
|
24
|
+
update(sessionId: string, updates: Partial<AgentSummary>): void;
|
|
25
|
+
/**
|
|
26
|
+
* Auto-generate a human-readable summary from a tool call.
|
|
27
|
+
*
|
|
28
|
+
* Examples:
|
|
29
|
+
* read_file({ path: '/src/auth.ts' }) → "Reading auth.ts"
|
|
30
|
+
* write_file({ path: '/src/fix.ts' }) → "Writing fix.ts"
|
|
31
|
+
* bash({ command: 'npm test' }) → "Running npm test"
|
|
32
|
+
* search_files({ query: 'login' }) → "Searching for 'login'"
|
|
33
|
+
* git_commit({ message: 'fix: auth' }) → "Committing changes"
|
|
34
|
+
* complete_task → "Completing task"
|
|
35
|
+
* default → "Using {toolName}"
|
|
36
|
+
*/
|
|
37
|
+
summarizeToolCall(sessionId: string, toolName: string, args: unknown): string;
|
|
38
|
+
get(sessionId: string): AgentSummary | undefined;
|
|
39
|
+
getAll(): AgentSummary[];
|
|
40
|
+
end(sessionId: string): void;
|
|
41
|
+
}
|
|
42
|
+
export declare function getAgentSummaryTracker(): AgentSummaryTracker;
|
|
43
|
+
export {};
|
|
44
|
+
//# sourceMappingURL=agent-summary.d.ts.map
|