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
|
@@ -9,15 +9,15 @@
|
|
|
9
9
|
import { MODEL_ALIASES } from '../providers/core/models.js';
|
|
10
10
|
import { getSkillsRegistry } from '../skills/index.js';
|
|
11
11
|
// === Core profClaw Context ===
|
|
12
|
-
export const PROFCLAW_CONTEXT = `You are profClaw
|
|
13
|
-
|
|
14
|
-
profClaw is a task orchestration platform for AI-assisted development - managing tickets, routing work to AI agents, and tracking progress.
|
|
12
|
+
export const PROFCLAW_CONTEXT = `You are profClaw, a personal AI assistant running inside profClaw engine.
|
|
13
|
+
You help with coding, research, automation, and general tasks. You have access to tools - use them.
|
|
15
14
|
|
|
16
15
|
## Response Style
|
|
17
|
-
- Be
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
16
|
+
- Be concise and direct. No filler, no preamble.
|
|
17
|
+
- Do NOT use emoji headers, LaTeX, or excessive formatting.
|
|
18
|
+
- Use short paragraphs and plain markdown (headers, bold, code blocks only when needed).
|
|
19
|
+
- Match the user's tone — casual question gets a casual answer.
|
|
20
|
+
- Lead with the answer, then explain only if needed.`;
|
|
21
21
|
// === Grounding Suffix (appended to prevent hallucinations) ===
|
|
22
22
|
export const GROUNDING_SUFFIX = `
|
|
23
23
|
|
|
@@ -35,48 +35,62 @@ If asked to "run" or "execute" something, explain that you can help write or dra
|
|
|
35
35
|
// === Tool-Enabled Mode Suffix (replaces grounding when tools are available) ===
|
|
36
36
|
export const TOOL_ENABLED_SUFFIX = `
|
|
37
37
|
|
|
38
|
-
##
|
|
39
|
-
You have
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
-
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
4. If a tool fails, explain the error and suggest alternatives
|
|
51
|
-
|
|
52
|
-
**IMPORTANT**: When a tool returns "pending" or "requires approval", tell the user you're waiting for their approval in the UI, then STOP and wait. Do not continue until approval is given.
|
|
53
|
-
|
|
54
|
-
**After approval**: Once a tool is approved and executed, summarize the results and continue helping the user.`;
|
|
38
|
+
## Tools — YOU MUST USE THEM
|
|
39
|
+
You have real tools that execute actions. You are NOT limited to text responses.
|
|
40
|
+
|
|
41
|
+
ALWAYS call a tool when the user asks you to:
|
|
42
|
+
- Search the web → call web_search
|
|
43
|
+
- Read a URL or website → call web_fetch
|
|
44
|
+
- Read a file → call read_file
|
|
45
|
+
- Run a command → call exec
|
|
46
|
+
- Write a file → call write_file
|
|
47
|
+
|
|
48
|
+
Do NOT say "I can't browse the web" or "I can't access files." You CAN. Call the tool.
|
|
49
|
+
If you're unsure, call the tool anyway — it's better to try and fail than refuse.`;
|
|
55
50
|
// === Agent Mode Suffix (for autonomous operation) ===
|
|
56
51
|
export const AGENT_MODE_SUFFIX = `
|
|
57
52
|
|
|
53
|
+
## Tool Call Style
|
|
54
|
+
Do not narrate routine tool calls - just call the tool.
|
|
55
|
+
Narrate only for multi-step work, complex problems, or sensitive actions.
|
|
56
|
+
When a tool exists for an action, use it directly. Never say "I can't do that" when a tool can.
|
|
57
|
+
|
|
58
58
|
## Tool Usage
|
|
59
|
-
You have
|
|
60
|
-
|
|
61
|
-
**
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
**
|
|
73
|
-
- Chain tools
|
|
74
|
-
- Use parallel
|
|
75
|
-
- Do NOT ask
|
|
76
|
-
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
59
|
+
You have tools. Use them when the task requires external data or actions.
|
|
60
|
+
|
|
61
|
+
**ALWAYS use tools for:**
|
|
62
|
+
- Any search/lookup/research request -> web_search
|
|
63
|
+
- Reading a URL/website -> web_fetch
|
|
64
|
+
- File operations -> read_file, write_file, edit_file, grep
|
|
65
|
+
- Running commands -> exec
|
|
66
|
+
- Git/GitHub operations -> git_*, github_pr, create_pr
|
|
67
|
+
- Code quality -> typecheck, lint, build, test_run
|
|
68
|
+
- "What is X?" about anything specific -> web_search (do NOT guess)
|
|
69
|
+
|
|
70
|
+
**Skip tools only for:** greetings, thanks, simple math, questions about yourself.
|
|
71
|
+
|
|
72
|
+
**Rules:**
|
|
73
|
+
- Chain tools for multi-step tasks. Do not stop after one call.
|
|
74
|
+
- Use parallel calls when steps are independent.
|
|
75
|
+
- Do NOT ask permission. Just execute.
|
|
76
|
+
- If a tool fails, try an alternative approach.
|
|
77
|
+
- After completing work, call complete_task with a brief summary.
|
|
78
|
+
- For text-only replies, do NOT call complete_task.
|
|
79
|
+
|
|
80
|
+
## Skills
|
|
81
|
+
You have access to skills (see Available Skills list). Before starting a complex task:
|
|
82
|
+
1. Scan the skills list for a relevant skill
|
|
83
|
+
2. If found, read the skill's SKILL.md with read_file to get detailed instructions
|
|
84
|
+
3. Follow the skill's workflow
|
|
85
|
+
|
|
86
|
+
## Workspace
|
|
87
|
+
Treat the current directory as your workspace. Use relative paths.
|
|
88
|
+
When modifying code: read first, then edit, then verify (typecheck/test).
|
|
89
|
+
|
|
90
|
+
## Safety
|
|
91
|
+
Do not pursue independent goals beyond the user's request.
|
|
92
|
+
Prioritize safety and human oversight. If instructions conflict, ask.
|
|
93
|
+
Do not manipulate access controls or bypass safeguards.`;
|
|
80
94
|
export const CHAT_PRESETS = [
|
|
81
95
|
{
|
|
82
96
|
id: 'profclaw-assistant',
|
|
@@ -236,6 +250,36 @@ export async function buildSystemPrompt(presetId, context, options) {
|
|
|
236
250
|
// Find the preset
|
|
237
251
|
const preset = CHAT_PRESETS.find((p) => p.id === presetId) || CHAT_PRESETS[0];
|
|
238
252
|
let prompt = preset.prompt;
|
|
253
|
+
// Inject workspace context (CLAUDE.md, project type)
|
|
254
|
+
// OpenClaw pattern: load project context files into system prompt
|
|
255
|
+
try {
|
|
256
|
+
const { existsSync, readFileSync } = await import('node:fs');
|
|
257
|
+
const { join } = await import('node:path');
|
|
258
|
+
const cwd = process.cwd();
|
|
259
|
+
const contextFiles = [];
|
|
260
|
+
// Only inject MEMORY.md (lightweight project context)
|
|
261
|
+
// AGENTS.md/CLAUDE.md are dev docs, not useful for chat — they cause
|
|
262
|
+
// small models to regurgitate raw context instead of answering naturally
|
|
263
|
+
const candidates = ['MEMORY.md'];
|
|
264
|
+
const maxChars = 800; // Keep tight for small models
|
|
265
|
+
for (const file of candidates) {
|
|
266
|
+
const path = join(cwd, file);
|
|
267
|
+
if (existsSync(path)) {
|
|
268
|
+
try {
|
|
269
|
+
const content = readFileSync(path, 'utf-8').slice(0, maxChars);
|
|
270
|
+
contextFiles.push({ name: file, content });
|
|
271
|
+
}
|
|
272
|
+
catch { /* skip unreadable */ }
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
if (contextFiles.length > 0) {
|
|
276
|
+
prompt += '\n\n# Background (do NOT repeat this to the user)\n';
|
|
277
|
+
for (const f of contextFiles) {
|
|
278
|
+
prompt += `\n${f.content}\n`;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
catch { /* skip on error */ }
|
|
239
283
|
// Inject dynamic context if available
|
|
240
284
|
if (context) {
|
|
241
285
|
const contextParts = [];
|
|
@@ -275,12 +319,11 @@ ${context.ticket.description ? `- **Description**: ${context.ticket.description}
|
|
|
275
319
|
|
|
276
320
|
The user is currently viewing or discussing this ticket.`);
|
|
277
321
|
}
|
|
278
|
-
|
|
322
|
+
// Only include activity when there's meaningful data (saves tokens on quiet instances)
|
|
323
|
+
if (context.recentActivity && (context.recentActivity.tasksCompleted > 0 || context.recentActivity.tasksPending > 0)) {
|
|
279
324
|
contextParts.push(`
|
|
280
|
-
##
|
|
281
|
-
|
|
282
|
-
- Tasks pending: ${context.recentActivity.tasksPending}
|
|
283
|
-
- Active agents: ${context.recentActivity.activeAgents.join(', ') || 'None'}`);
|
|
325
|
+
## Activity
|
|
326
|
+
${context.recentActivity.tasksCompleted} completed, ${context.recentActivity.tasksPending} pending`);
|
|
284
327
|
}
|
|
285
328
|
if (context.user) {
|
|
286
329
|
contextParts.push(`
|
|
@@ -292,20 +335,32 @@ ${context.user.role ? `- Role: ${context.user.role}` : ''}`);
|
|
|
292
335
|
prompt += '\n\n---\n' + contextParts.join('\n');
|
|
293
336
|
}
|
|
294
337
|
}
|
|
295
|
-
// Add model aliases section (
|
|
296
|
-
|
|
338
|
+
// Add model aliases section — skip for local models (saves ~150 tokens)
|
|
339
|
+
const isLocalModel = context?.runtime?.provider === 'ollama';
|
|
340
|
+
if (options?.includeModelAliases !== false && !isLocalModel) {
|
|
297
341
|
prompt += buildModelAliasesSection();
|
|
298
342
|
}
|
|
299
|
-
// Inject skills
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
343
|
+
// Inject skills summary — only for tool-enabled/agent modes
|
|
344
|
+
// Regular chat doesn't need the full skill list (saves ~800 tokens per message)
|
|
345
|
+
if (options?.enableTools || options?.agentMode) {
|
|
346
|
+
try {
|
|
347
|
+
const registry = getSkillsRegistry();
|
|
348
|
+
const entries = registry.getAllEntries();
|
|
349
|
+
if (entries.length > 0) {
|
|
350
|
+
// Only include top 15 most relevant skills, not all 55
|
|
351
|
+
const prioritySkills = entries
|
|
352
|
+
.filter((e) => e.enabled !== false)
|
|
353
|
+
.sort((a, b) => (b.metadata?.priority ?? 0) - (a.metadata?.priority ?? 0))
|
|
354
|
+
.slice(0, 15);
|
|
355
|
+
const skillLines = prioritySkills
|
|
356
|
+
.map((e) => `- ${e.name}: ${e.description || 'No description'}`)
|
|
357
|
+
.join('\n');
|
|
358
|
+
prompt += `\n\n## Skills (${entries.length} available, top ${prioritySkills.length} shown)\nUse read_file on skills/<name>/SKILL.md for details.\n${skillLines}`;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
catch {
|
|
362
|
+
// Skills not initialized yet - skip
|
|
305
363
|
}
|
|
306
|
-
}
|
|
307
|
-
catch {
|
|
308
|
-
// Skills not initialized yet - skip
|
|
309
364
|
}
|
|
310
365
|
// Add appropriate suffix based on mode
|
|
311
366
|
if (options?.agentMode) {
|
package/dist/chat/tools.d.ts
CHANGED
|
@@ -34,7 +34,7 @@ export declare const CreateTicketToolSchema: z.ZodObject<{
|
|
|
34
34
|
storyPoints: z.ZodOptional<z.ZodNumber>;
|
|
35
35
|
}, "strip", z.ZodTypeAny, {
|
|
36
36
|
title: string;
|
|
37
|
-
priority: "critical" | "medium" | "
|
|
37
|
+
priority: "critical" | "medium" | "low" | "high";
|
|
38
38
|
type: "task" | "bug" | "story" | "epic" | "subtask";
|
|
39
39
|
projectKey: string;
|
|
40
40
|
description?: string | undefined;
|
|
@@ -44,7 +44,7 @@ export declare const CreateTicketToolSchema: z.ZodObject<{
|
|
|
44
44
|
title: string;
|
|
45
45
|
projectKey: string;
|
|
46
46
|
description?: string | undefined;
|
|
47
|
-
priority?: "critical" | "medium" | "
|
|
47
|
+
priority?: "critical" | "medium" | "low" | "high" | undefined;
|
|
48
48
|
type?: "task" | "bug" | "story" | "epic" | "subtask" | undefined;
|
|
49
49
|
labels?: string[] | undefined;
|
|
50
50
|
storyPoints?: number | undefined;
|
|
@@ -176,7 +176,7 @@ export declare const CHAT_TOOLS: {
|
|
|
176
176
|
storyPoints: z.ZodOptional<z.ZodNumber>;
|
|
177
177
|
}, "strip", z.ZodTypeAny, {
|
|
178
178
|
title: string;
|
|
179
|
-
priority: "critical" | "medium" | "
|
|
179
|
+
priority: "critical" | "medium" | "low" | "high";
|
|
180
180
|
type: "task" | "bug" | "story" | "epic" | "subtask";
|
|
181
181
|
projectKey: string;
|
|
182
182
|
description?: string | undefined;
|
|
@@ -186,7 +186,7 @@ export declare const CHAT_TOOLS: {
|
|
|
186
186
|
title: string;
|
|
187
187
|
projectKey: string;
|
|
188
188
|
description?: string | undefined;
|
|
189
|
-
priority?: "critical" | "medium" | "
|
|
189
|
+
priority?: "critical" | "medium" | "low" | "high" | undefined;
|
|
190
190
|
type?: "task" | "bug" | "story" | "epic" | "subtask" | undefined;
|
|
191
191
|
labels?: string[] | undefined;
|
|
192
192
|
storyPoints?: number | undefined;
|
|
@@ -294,7 +294,7 @@ export declare function getToolDefinitions(): {
|
|
|
294
294
|
storyPoints: z.ZodOptional<z.ZodNumber>;
|
|
295
295
|
}, "strip", z.ZodTypeAny, {
|
|
296
296
|
title: string;
|
|
297
|
-
priority: "critical" | "medium" | "
|
|
297
|
+
priority: "critical" | "medium" | "low" | "high";
|
|
298
298
|
type: "task" | "bug" | "story" | "epic" | "subtask";
|
|
299
299
|
projectKey: string;
|
|
300
300
|
description?: string | undefined;
|
|
@@ -304,7 +304,7 @@ export declare function getToolDefinitions(): {
|
|
|
304
304
|
title: string;
|
|
305
305
|
projectKey: string;
|
|
306
306
|
description?: string | undefined;
|
|
307
|
-
priority?: "critical" | "medium" | "
|
|
307
|
+
priority?: "critical" | "medium" | "low" | "high" | undefined;
|
|
308
308
|
type?: "task" | "bug" | "story" | "epic" | "subtask" | undefined;
|
|
309
309
|
labels?: string[] | undefined;
|
|
310
310
|
storyPoints?: number | undefined;
|
|
@@ -12,7 +12,7 @@ import chalk from 'chalk';
|
|
|
12
12
|
import { randomUUID } from 'crypto';
|
|
13
13
|
import { eq } from 'drizzle-orm';
|
|
14
14
|
import { initStorage, getDb } from '../../storage/index.js';
|
|
15
|
-
import { users, sessions, inviteCodes } from '../../storage/schema.js';
|
|
15
|
+
import { users, sessions, inviteCodes, userPreferences } from '../../storage/schema.js';
|
|
16
16
|
import { generateInviteCode, hashInviteCode, hashPassword, generateRecoveryCodes, hashRecoveryCodes, } from '../../auth/password.js';
|
|
17
17
|
import { updateSettings } from '../../settings/index.js';
|
|
18
18
|
import { createTable, success, error, info, warn } from '../utils/output.js';
|
|
@@ -276,6 +276,69 @@ export function authCommands() {
|
|
|
276
276
|
process.exit(1);
|
|
277
277
|
}
|
|
278
278
|
});
|
|
279
|
+
// profclaw auth create-admin
|
|
280
|
+
auth
|
|
281
|
+
.command('create-admin')
|
|
282
|
+
.description('Create an admin user (for headless/pico setups)')
|
|
283
|
+
.option('--email <email>', 'Email address')
|
|
284
|
+
.option('--password <password>', 'Password (min 8 characters)')
|
|
285
|
+
.option('--name <name>', 'Display name')
|
|
286
|
+
.action(async (options) => {
|
|
287
|
+
if (!options.email || !options.password || !options.name) {
|
|
288
|
+
console.log('');
|
|
289
|
+
console.log('Usage: profclaw auth create-admin --email <email> --password <pass> --name <name>');
|
|
290
|
+
console.log('');
|
|
291
|
+
console.log(' --email Email address for the admin account');
|
|
292
|
+
console.log(' --password Password (min 8 characters)');
|
|
293
|
+
console.log(' --name Display name');
|
|
294
|
+
process.exit(1);
|
|
295
|
+
}
|
|
296
|
+
try {
|
|
297
|
+
const db = await ensureDb();
|
|
298
|
+
const existing = await db
|
|
299
|
+
.select({ id: users.id })
|
|
300
|
+
.from(users)
|
|
301
|
+
.where(eq(users.email, options.email.toLowerCase()))
|
|
302
|
+
.limit(1);
|
|
303
|
+
if (existing.length > 0) {
|
|
304
|
+
error(`User already exists: ${options.email}`);
|
|
305
|
+
process.exit(1);
|
|
306
|
+
}
|
|
307
|
+
if (options.password.length < 8) {
|
|
308
|
+
error('Password must be at least 8 characters');
|
|
309
|
+
process.exit(1);
|
|
310
|
+
}
|
|
311
|
+
const userId = randomUUID();
|
|
312
|
+
const now = new Date();
|
|
313
|
+
await db.insert(users).values({
|
|
314
|
+
id: userId,
|
|
315
|
+
email: options.email.toLowerCase(),
|
|
316
|
+
passwordHash: hashPassword(options.password),
|
|
317
|
+
name: options.name,
|
|
318
|
+
role: 'admin',
|
|
319
|
+
status: 'active',
|
|
320
|
+
createdAt: now,
|
|
321
|
+
updatedAt: now,
|
|
322
|
+
});
|
|
323
|
+
await db.insert(userPreferences).values({
|
|
324
|
+
id: randomUUID(),
|
|
325
|
+
userId,
|
|
326
|
+
updatedAt: now,
|
|
327
|
+
});
|
|
328
|
+
console.log('');
|
|
329
|
+
success(`Admin user created`);
|
|
330
|
+
console.log('');
|
|
331
|
+
console.log(` Name: ${chalk.bold(options.name)}`);
|
|
332
|
+
console.log(` Email: ${chalk.bold(options.email.toLowerCase())}`);
|
|
333
|
+
console.log(` Role: ${chalk.yellow('admin')}`);
|
|
334
|
+
console.log(` ID: ${chalk.dim(userId)}`);
|
|
335
|
+
console.log('');
|
|
336
|
+
}
|
|
337
|
+
catch (err) {
|
|
338
|
+
error(err instanceof Error ? err.message : 'Failed to create admin user');
|
|
339
|
+
process.exit(1);
|
|
340
|
+
}
|
|
341
|
+
});
|
|
279
342
|
// profclaw auth set-mode
|
|
280
343
|
auth
|
|
281
344
|
.command('set-mode <mode>')
|