profclaw 0.0.1-beta.1
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 +215 -0
- package/CHANGELOG.md +49 -0
- package/CONTRIBUTING.md +119 -0
- package/Dockerfile +107 -0
- package/LICENSE +661 -0
- package/README.md +196 -0
- package/config/agents.yml +55 -0
- package/config/budget.yml +15 -0
- package/config/pricing.yml +46 -0
- package/config/settings.yml +168 -0
- package/dist/adapters/claude-code.d.ts +46 -0
- package/dist/adapters/claude-code.js +215 -0
- package/dist/adapters/index.d.ts +4 -0
- package/dist/adapters/index.js +4 -0
- package/dist/adapters/ollama.d.ts +45 -0
- package/dist/adapters/ollama.js +277 -0
- package/dist/adapters/openclaw.d.ts +60 -0
- package/dist/adapters/openclaw.js +289 -0
- package/dist/adapters/registry.d.ts +56 -0
- package/dist/adapters/registry.js +163 -0
- package/dist/agents/executor.d.ts +78 -0
- package/dist/agents/executor.js +657 -0
- package/dist/agents/index.d.ts +10 -0
- package/dist/agents/index.js +27 -0
- package/dist/agents/stop-conditions.d.ts +108 -0
- package/dist/agents/stop-conditions.js +299 -0
- package/dist/agents/types.d.ts +185 -0
- package/dist/agents/types.js +14 -0
- package/dist/ai/embedding-service.d.ts +96 -0
- package/dist/ai/embedding-service.js +333 -0
- package/dist/auth/api-tokens.d.ts +71 -0
- package/dist/auth/api-tokens.js +235 -0
- package/dist/auth/auth-service.d.ts +75 -0
- package/dist/auth/auth-service.js +557 -0
- package/dist/auth/device-identity.d.ts +96 -0
- package/dist/auth/device-identity.js +250 -0
- package/dist/auth/github-oauth.d.ts +20 -0
- package/dist/auth/github-oauth.js +59 -0
- package/dist/auth/jira-oauth.d.ts +25 -0
- package/dist/auth/jira-oauth.js +75 -0
- package/dist/auth/linear-oauth.d.ts +21 -0
- package/dist/auth/linear-oauth.js +59 -0
- package/dist/auth/middleware.d.ts +44 -0
- package/dist/auth/middleware.js +190 -0
- package/dist/auth/pairing-codes.d.ts +109 -0
- package/dist/auth/pairing-codes.js +274 -0
- package/dist/auth/password.d.ts +53 -0
- package/dist/auth/password.js +126 -0
- package/dist/auth/qr-pairing.d.ts +36 -0
- package/dist/auth/qr-pairing.js +138 -0
- package/dist/auth/slack-oauth.d.ts +31 -0
- package/dist/auth/slack-oauth.js +80 -0
- package/dist/backup/index.d.ts +50 -0
- package/dist/backup/index.js +184 -0
- package/dist/browser/adapters.d.ts +25 -0
- package/dist/browser/adapters.js +32 -0
- package/dist/browser/cli.d.ts +19 -0
- package/dist/browser/cli.js +277 -0
- package/dist/browser/compression.d.ts +32 -0
- package/dist/browser/compression.js +269 -0
- package/dist/browser/extensions.d.ts +144 -0
- package/dist/browser/extensions.js +251 -0
- package/dist/browser/index.d.ts +37 -0
- package/dist/browser/index.js +43 -0
- package/dist/browser/refs.d.ts +46 -0
- package/dist/browser/refs.js +120 -0
- package/dist/browser/search.d.ts +36 -0
- package/dist/browser/search.js +193 -0
- package/dist/browser/service.d.ts +94 -0
- package/dist/browser/service.js +358 -0
- package/dist/browser/snapshot.d.ts +19 -0
- package/dist/browser/snapshot.js +250 -0
- package/dist/browser/tools.d.ts +259 -0
- package/dist/browser/tools.js +463 -0
- package/dist/browser/types.d.ts +134 -0
- package/dist/browser/types.js +17 -0
- package/dist/chat/agentic-executor.d.ts +108 -0
- package/dist/chat/agentic-executor.js +739 -0
- package/dist/chat/api-key-detector.d.ts +41 -0
- package/dist/chat/api-key-detector.js +290 -0
- package/dist/chat/auto-reply.d.ts +90 -0
- package/dist/chat/auto-reply.js +272 -0
- package/dist/chat/conversations.d.ts +91 -0
- package/dist/chat/conversations.js +297 -0
- package/dist/chat/execution/audit.d.ts +192 -0
- package/dist/chat/execution/audit.js +323 -0
- package/dist/chat/execution/executor.d.ts +56 -0
- package/dist/chat/execution/executor.js +654 -0
- package/dist/chat/execution/guardrails.d.ts +98 -0
- package/dist/chat/execution/guardrails.js +571 -0
- package/dist/chat/execution/index.d.ts +61 -0
- package/dist/chat/execution/index.js +129 -0
- package/dist/chat/execution/model-capability.d.ts +34 -0
- package/dist/chat/execution/model-capability.js +96 -0
- package/dist/chat/execution/process-pool.d.ts +110 -0
- package/dist/chat/execution/process-pool.js +290 -0
- package/dist/chat/execution/pty.d.ts +92 -0
- package/dist/chat/execution/pty.js +285 -0
- package/dist/chat/execution/rate-limiter.d.ts +87 -0
- package/dist/chat/execution/rate-limiter.js +305 -0
- package/dist/chat/execution/registry.d.ts +54 -0
- package/dist/chat/execution/registry.js +220 -0
- package/dist/chat/execution/sandbox.d.ts +109 -0
- package/dist/chat/execution/sandbox.js +684 -0
- package/dist/chat/execution/secrets.d.ts +45 -0
- package/dist/chat/execution/secrets.js +338 -0
- package/dist/chat/execution/security.d.ts +179 -0
- package/dist/chat/execution/security.js +739 -0
- package/dist/chat/execution/self-correction.d.ts +162 -0
- package/dist/chat/execution/self-correction.js +557 -0
- package/dist/chat/execution/session-manager.d.ts +79 -0
- package/dist/chat/execution/session-manager.js +356 -0
- package/dist/chat/execution/session-spawn/config.d.ts +37 -0
- package/dist/chat/execution/session-spawn/config.js +83 -0
- package/dist/chat/execution/session-spawn/index.d.ts +10 -0
- package/dist/chat/execution/session-spawn/index.js +10 -0
- package/dist/chat/execution/session-spawn/manager.d.ts +35 -0
- package/dist/chat/execution/session-spawn/manager.js +418 -0
- package/dist/chat/execution/session-spawn/types.d.ts +117 -0
- package/dist/chat/execution/session-spawn/types.js +16 -0
- package/dist/chat/execution/smart-prompts.d.ts +34 -0
- package/dist/chat/execution/smart-prompts.js +151 -0
- package/dist/chat/execution/stream-results.d.ts +65 -0
- package/dist/chat/execution/stream-results.js +156 -0
- package/dist/chat/execution/tool-router.d.ts +76 -0
- package/dist/chat/execution/tool-router.js +296 -0
- package/dist/chat/execution/tools/agents-list.d.ts +49 -0
- package/dist/chat/execution/tools/agents-list.js +165 -0
- package/dist/chat/execution/tools/browser.d.ts +12 -0
- package/dist/chat/execution/tools/browser.js +14 -0
- package/dist/chat/execution/tools/canvas.d.ts +61 -0
- package/dist/chat/execution/tools/canvas.js +150 -0
- package/dist/chat/execution/tools/complete-task.d.ts +72 -0
- package/dist/chat/execution/tools/complete-task.js +104 -0
- package/dist/chat/execution/tools/cron-tool.d.ts +204 -0
- package/dist/chat/execution/tools/cron-tool.js +680 -0
- package/dist/chat/execution/tools/discord-actions.d.ts +120 -0
- package/dist/chat/execution/tools/discord-actions.js +361 -0
- package/dist/chat/execution/tools/exec.d.ts +43 -0
- package/dist/chat/execution/tools/exec.js +223 -0
- package/dist/chat/execution/tools/file-ops.d.ts +175 -0
- package/dist/chat/execution/tools/file-ops.js +723 -0
- package/dist/chat/execution/tools/git.d.ts +143 -0
- package/dist/chat/execution/tools/git.js +395 -0
- package/dist/chat/execution/tools/github.d.ts +42 -0
- package/dist/chat/execution/tools/github.js +184 -0
- package/dist/chat/execution/tools/glinr-ops.d.ts +202 -0
- package/dist/chat/execution/tools/glinr-ops.js +694 -0
- package/dist/chat/execution/tools/image-analyze.d.ts +29 -0
- package/dist/chat/execution/tools/image-analyze.js +127 -0
- package/dist/chat/execution/tools/index.d.ts +64 -0
- package/dist/chat/execution/tools/index.js +245 -0
- package/dist/chat/execution/tools/integrations.d.ts +109 -0
- package/dist/chat/execution/tools/integrations.js +237 -0
- package/dist/chat/execution/tools/link-understand.d.ts +34 -0
- package/dist/chat/execution/tools/link-understand.js +307 -0
- package/dist/chat/execution/tools/maintenance.d.ts +29 -0
- package/dist/chat/execution/tools/maintenance.js +105 -0
- package/dist/chat/execution/tools/memory-tools.d.ts +76 -0
- package/dist/chat/execution/tools/memory-tools.js +278 -0
- package/dist/chat/execution/tools/openai-image-gen.d.ts +51 -0
- package/dist/chat/execution/tools/openai-image-gen.js +212 -0
- package/dist/chat/execution/tools/profclaw-ops.d.ts +204 -0
- package/dist/chat/execution/tools/profclaw-ops.js +665 -0
- package/dist/chat/execution/tools/session-spawn.d.ts +146 -0
- package/dist/chat/execution/tools/session-spawn.js +544 -0
- package/dist/chat/execution/tools/session-status.d.ts +38 -0
- package/dist/chat/execution/tools/session-status.js +185 -0
- package/dist/chat/execution/tools/sessions-list.d.ts +49 -0
- package/dist/chat/execution/tools/sessions-list.js +153 -0
- package/dist/chat/execution/tools/sessions-send.d.ts +48 -0
- package/dist/chat/execution/tools/sessions-send.js +207 -0
- package/dist/chat/execution/tools/sessions-spawn.d.ts +51 -0
- package/dist/chat/execution/tools/sessions-spawn.js +137 -0
- package/dist/chat/execution/tools/slack-actions.d.ts +90 -0
- package/dist/chat/execution/tools/slack-actions.js +272 -0
- package/dist/chat/execution/tools/subagent-orchestrate.d.ts +66 -0
- package/dist/chat/execution/tools/subagent-orchestrate.js +313 -0
- package/dist/chat/execution/tools/system.d.ts +121 -0
- package/dist/chat/execution/tools/system.js +415 -0
- package/dist/chat/execution/tools/telegram-actions.d.ts +126 -0
- package/dist/chat/execution/tools/telegram-actions.js +339 -0
- package/dist/chat/execution/tools/test-run.d.ts +43 -0
- package/dist/chat/execution/tools/test-run.js +391 -0
- package/dist/chat/execution/tools/tts-speak.d.ts +39 -0
- package/dist/chat/execution/tools/tts-speak.js +199 -0
- package/dist/chat/execution/tools/web-fetch.d.ts +42 -0
- package/dist/chat/execution/tools/web-fetch.js +247 -0
- package/dist/chat/execution/tools/web-search.d.ts +53 -0
- package/dist/chat/execution/tools/web-search.js +130 -0
- package/dist/chat/execution/types.d.ts +337 -0
- package/dist/chat/execution/types.js +8 -0
- package/dist/chat/execution/workflows/built-in.d.ts +10 -0
- package/dist/chat/execution/workflows/built-in.js +249 -0
- package/dist/chat/execution/workflows/executor.d.ts +13 -0
- package/dist/chat/execution/workflows/executor.js +259 -0
- package/dist/chat/execution/workflows/index.d.ts +5 -0
- package/dist/chat/execution/workflows/index.js +5 -0
- package/dist/chat/execution/workflows/trigger.d.ts +15 -0
- package/dist/chat/execution/workflows/trigger.js +111 -0
- package/dist/chat/execution/workflows/types.d.ts +80 -0
- package/dist/chat/execution/workflows/types.js +2 -0
- package/dist/chat/failover/error.d.ts +73 -0
- package/dist/chat/failover/error.js +412 -0
- package/dist/chat/failover/index.d.ts +10 -0
- package/dist/chat/failover/index.js +11 -0
- package/dist/chat/failover/model-fallback.d.ts +97 -0
- package/dist/chat/failover/model-fallback.js +328 -0
- package/dist/chat/failover/types.d.ts +47 -0
- package/dist/chat/failover/types.js +8 -0
- package/dist/chat/format/chunk.d.ts +59 -0
- package/dist/chat/format/chunk.js +253 -0
- package/dist/chat/format/index.d.ts +7 -0
- package/dist/chat/format/index.js +7 -0
- package/dist/chat/format/tool-result-formatter.d.ts +30 -0
- package/dist/chat/format/tool-result-formatter.js +177 -0
- package/dist/chat/group.d.ts +232 -0
- package/dist/chat/group.js +311 -0
- package/dist/chat/index.d.ts +21 -0
- package/dist/chat/index.js +30 -0
- package/dist/chat/memory.d.ts +108 -0
- package/dist/chat/memory.js +343 -0
- package/dist/chat/message-handler.d.ts +38 -0
- package/dist/chat/message-handler.js +274 -0
- package/dist/chat/proactive/index.d.ts +167 -0
- package/dist/chat/proactive/index.js +721 -0
- package/dist/chat/prompt-adapter.d.ts +52 -0
- package/dist/chat/prompt-adapter.js +245 -0
- package/dist/chat/providers/dingtalk/index.d.ts +69 -0
- package/dist/chat/providers/dingtalk/index.js +225 -0
- package/dist/chat/providers/discord/index.d.ts +264 -0
- package/dist/chat/providers/discord/index.js +657 -0
- package/dist/chat/providers/feishu/index.d.ts +97 -0
- package/dist/chat/providers/feishu/index.js +362 -0
- package/dist/chat/providers/googlechat/index.d.ts +269 -0
- package/dist/chat/providers/googlechat/index.js +634 -0
- package/dist/chat/providers/imessage/index.d.ts +61 -0
- package/dist/chat/providers/imessage/index.js +166 -0
- package/dist/chat/providers/index.d.ts +76 -0
- package/dist/chat/providers/index.js +430 -0
- package/dist/chat/providers/irc/index.d.ts +101 -0
- package/dist/chat/providers/irc/index.js +557 -0
- package/dist/chat/providers/line/index.d.ts +113 -0
- package/dist/chat/providers/line/index.js +434 -0
- package/dist/chat/providers/matrix/index.d.ts +161 -0
- package/dist/chat/providers/matrix/index.js +559 -0
- package/dist/chat/providers/mattermost/index.d.ts +106 -0
- package/dist/chat/providers/mattermost/index.js +425 -0
- package/dist/chat/providers/msteams/index.d.ts +198 -0
- package/dist/chat/providers/msteams/index.js +694 -0
- package/dist/chat/providers/nextcloud/index.d.ts +52 -0
- package/dist/chat/providers/nextcloud/index.js +156 -0
- package/dist/chat/providers/nostr/index.d.ts +60 -0
- package/dist/chat/providers/nostr/index.js +200 -0
- package/dist/chat/providers/qq/index.d.ts +57 -0
- package/dist/chat/providers/qq/index.js +260 -0
- package/dist/chat/providers/registry.d.ts +89 -0
- package/dist/chat/providers/registry.js +213 -0
- package/dist/chat/providers/signal/index.d.ts +88 -0
- package/dist/chat/providers/signal/index.js +357 -0
- package/dist/chat/providers/slack/index.d.ts +52 -0
- package/dist/chat/providers/slack/index.js +477 -0
- package/dist/chat/providers/synology/index.d.ts +50 -0
- package/dist/chat/providers/synology/index.js +138 -0
- package/dist/chat/providers/telegram/index.d.ts +148 -0
- package/dist/chat/providers/telegram/index.js +492 -0
- package/dist/chat/providers/tlon/index.d.ts +44 -0
- package/dist/chat/providers/tlon/index.js +243 -0
- package/dist/chat/providers/twitch/index.d.ts +79 -0
- package/dist/chat/providers/twitch/index.js +349 -0
- package/dist/chat/providers/types.d.ts +437 -0
- package/dist/chat/providers/types.js +14 -0
- package/dist/chat/providers/webchat/index.d.ts +38 -0
- package/dist/chat/providers/webchat/index.js +214 -0
- package/dist/chat/providers/wecom/index.d.ts +62 -0
- package/dist/chat/providers/wecom/index.js +228 -0
- package/dist/chat/providers/whatsapp/index.d.ts +147 -0
- package/dist/chat/providers/whatsapp/index.js +396 -0
- package/dist/chat/providers/zalo/index.d.ts +54 -0
- package/dist/chat/providers/zalo/index.js +158 -0
- package/dist/chat/providers/zalo-personal/index.d.ts +53 -0
- package/dist/chat/providers/zalo-personal/index.js +212 -0
- package/dist/chat/skills.d.ts +82 -0
- package/dist/chat/skills.js +410 -0
- package/dist/chat/system-prompts.d.ts +76 -0
- package/dist/chat/system-prompts.js +407 -0
- package/dist/chat/tool-handler.d.ts +57 -0
- package/dist/chat/tool-handler.js +336 -0
- package/dist/chat/tools.d.ts +373 -0
- package/dist/chat/tools.js +512 -0
- package/dist/cli/commands/agent.d.ts +3 -0
- package/dist/cli/commands/agent.js +108 -0
- package/dist/cli/commands/auth.d.ts +12 -0
- package/dist/cli/commands/auth.js +301 -0
- package/dist/cli/commands/browser.d.ts +3 -0
- package/dist/cli/commands/browser.js +138 -0
- package/dist/cli/commands/canvas.d.ts +3 -0
- package/dist/cli/commands/canvas.js +155 -0
- package/dist/cli/commands/channels.d.ts +3 -0
- package/dist/cli/commands/channels.js +167 -0
- package/dist/cli/commands/chat.d.ts +9 -0
- package/dist/cli/commands/chat.js +360 -0
- package/dist/cli/commands/completion.d.ts +3 -0
- package/dist/cli/commands/completion.js +170 -0
- package/dist/cli/commands/config.d.ts +3 -0
- package/dist/cli/commands/config.js +193 -0
- package/dist/cli/commands/cost.d.ts +3 -0
- package/dist/cli/commands/cost.js +134 -0
- package/dist/cli/commands/daemon.d.ts +3 -0
- package/dist/cli/commands/daemon.js +381 -0
- package/dist/cli/commands/devices.d.ts +3 -0
- package/dist/cli/commands/devices.js +150 -0
- package/dist/cli/commands/doctor.d.ts +3 -0
- package/dist/cli/commands/doctor.js +295 -0
- package/dist/cli/commands/logs.d.ts +3 -0
- package/dist/cli/commands/logs.js +139 -0
- package/dist/cli/commands/mcp.d.ts +15 -0
- package/dist/cli/commands/mcp.js +157 -0
- package/dist/cli/commands/memory.d.ts +3 -0
- package/dist/cli/commands/memory.js +170 -0
- package/dist/cli/commands/models.d.ts +3 -0
- package/dist/cli/commands/models.js +197 -0
- package/dist/cli/commands/nodes.d.ts +3 -0
- package/dist/cli/commands/nodes.js +193 -0
- package/dist/cli/commands/onboard.d.ts +13 -0
- package/dist/cli/commands/onboard.js +360 -0
- package/dist/cli/commands/plugin.d.ts +15 -0
- package/dist/cli/commands/plugin.js +226 -0
- package/dist/cli/commands/provider.d.ts +16 -0
- package/dist/cli/commands/provider.js +320 -0
- package/dist/cli/commands/security.d.ts +3 -0
- package/dist/cli/commands/security.js +180 -0
- package/dist/cli/commands/serve.d.ts +3 -0
- package/dist/cli/commands/serve.js +179 -0
- package/dist/cli/commands/session.d.ts +3 -0
- package/dist/cli/commands/session.js +172 -0
- package/dist/cli/commands/setup.d.ts +13 -0
- package/dist/cli/commands/setup.js +636 -0
- package/dist/cli/commands/skill.d.ts +15 -0
- package/dist/cli/commands/skill.js +191 -0
- package/dist/cli/commands/status.d.ts +3 -0
- package/dist/cli/commands/status.js +71 -0
- package/dist/cli/commands/summary.d.ts +3 -0
- package/dist/cli/commands/summary.js +160 -0
- package/dist/cli/commands/task.d.ts +3 -0
- package/dist/cli/commands/task.js +170 -0
- package/dist/cli/commands/ticket.d.ts +3 -0
- package/dist/cli/commands/ticket.js +421 -0
- package/dist/cli/commands/tools.d.ts +9 -0
- package/dist/cli/commands/tools.js +508 -0
- package/dist/cli/commands/tui.d.ts +3 -0
- package/dist/cli/commands/tui.js +158 -0
- package/dist/cli/commands/tunnel.d.ts +3 -0
- package/dist/cli/commands/tunnel.js +135 -0
- package/dist/cli/commands/webhooks.d.ts +3 -0
- package/dist/cli/commands/webhooks.js +191 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.js +127 -0
- package/dist/cli/utils/api.d.ts +17 -0
- package/dist/cli/utils/api.js +63 -0
- package/dist/cli/utils/config.d.ts +31 -0
- package/dist/cli/utils/config.js +81 -0
- package/dist/cli/utils/output.d.ts +58 -0
- package/dist/cli/utils/output.js +148 -0
- package/dist/core/deployment.d.ts +30 -0
- package/dist/core/deployment.js +114 -0
- package/dist/core/sandbox-config.d.ts +63 -0
- package/dist/core/sandbox-config.js +148 -0
- package/dist/costs/budget.d.ts +28 -0
- package/dist/costs/budget.js +57 -0
- package/dist/costs/persistence.d.ts +77 -0
- package/dist/costs/persistence.js +210 -0
- package/dist/costs/pricing.d.ts +16 -0
- package/dist/costs/pricing.js +39 -0
- package/dist/costs/token-tracker.d.ts +34 -0
- package/dist/costs/token-tracker.js +141 -0
- package/dist/cron/heartbeat.d.ts +23 -0
- package/dist/cron/heartbeat.js +109 -0
- package/dist/cron/index.d.ts +22 -0
- package/dist/cron/index.js +37 -0
- package/dist/cron/issue-poller.d.ts +15 -0
- package/dist/cron/issue-poller.js +174 -0
- package/dist/cron/scheduler.d.ts +315 -0
- package/dist/cron/scheduler.js +1008 -0
- package/dist/cron/stale-checker.d.ts +16 -0
- package/dist/cron/stale-checker.js +61 -0
- package/dist/cron/templates.d.ts +107 -0
- package/dist/cron/templates.js +395 -0
- package/dist/diagnostics/exporters.d.ts +21 -0
- package/dist/diagnostics/exporters.js +138 -0
- package/dist/diagnostics/index.d.ts +10 -0
- package/dist/diagnostics/index.js +9 -0
- package/dist/diagnostics/middleware.d.ts +12 -0
- package/dist/diagnostics/middleware.js +58 -0
- package/dist/diagnostics/tracer.d.ts +133 -0
- package/dist/diagnostics/tracer.js +257 -0
- package/dist/discovery/index.d.ts +8 -0
- package/dist/discovery/index.js +7 -0
- package/dist/discovery/mdns.d.ts +40 -0
- package/dist/discovery/mdns.js +249 -0
- package/dist/gateway/index.d.ts +35 -0
- package/dist/gateway/index.js +36 -0
- package/dist/gateway/router.d.ts +110 -0
- package/dist/gateway/router.js +649 -0
- package/dist/gateway/types.d.ts +275 -0
- package/dist/gateway/types.js +2 -0
- package/dist/gateway/workflows.d.ts +37 -0
- package/dist/gateway/workflows.js +748 -0
- package/dist/hooks/agent-webhook.d.ts +277 -0
- package/dist/hooks/agent-webhook.js +197 -0
- package/dist/hooks/index.d.ts +13 -0
- package/dist/hooks/index.js +15 -0
- package/dist/hooks/prompt-submit.d.ts +45 -0
- package/dist/hooks/prompt-submit.js +111 -0
- package/dist/hooks/schemas.d.ts +563 -0
- package/dist/hooks/schemas.js +108 -0
- package/dist/hooks/session-end.d.ts +25 -0
- package/dist/hooks/session-end.js +153 -0
- package/dist/hooks/tool-use.d.ts +41 -0
- package/dist/hooks/tool-use.js +201 -0
- package/dist/hooks/types.d.ts +76 -0
- package/dist/hooks/types.js +7 -0
- package/dist/integrations/cloudflare-tunnel.d.ts +78 -0
- package/dist/integrations/cloudflare-tunnel.js +268 -0
- package/dist/integrations/github-client.d.ts +27 -0
- package/dist/integrations/github-client.js +79 -0
- package/dist/integrations/github-projects.d.ts +97 -0
- package/dist/integrations/github-projects.js +433 -0
- package/dist/integrations/github-ticket-sync.d.ts +82 -0
- package/dist/integrations/github-ticket-sync.js +352 -0
- package/dist/integrations/github.d.ts +11 -0
- package/dist/integrations/github.js +241 -0
- package/dist/integrations/jira-client.d.ts +30 -0
- package/dist/integrations/jira-client.js +67 -0
- package/dist/integrations/jira.d.ts +13 -0
- package/dist/integrations/jira.js +108 -0
- package/dist/integrations/linear-client.d.ts +23 -0
- package/dist/integrations/linear-client.js +52 -0
- package/dist/integrations/linear.d.ts +15 -0
- package/dist/integrations/linear.js +312 -0
- package/dist/integrations/tailscale.d.ts +68 -0
- package/dist/integrations/tailscale.js +173 -0
- package/dist/integrations/web-search.d.ts +112 -0
- package/dist/integrations/web-search.js +287 -0
- package/dist/intelligence/index.d.ts +8 -0
- package/dist/intelligence/index.js +8 -0
- package/dist/intelligence/ollama.d.ts +50 -0
- package/dist/intelligence/ollama.js +213 -0
- package/dist/intelligence/rules.d.ts +39 -0
- package/dist/intelligence/rules.js +308 -0
- package/dist/labels/index.d.ts +93 -0
- package/dist/labels/index.js +248 -0
- package/dist/mcp/browser-tools.d.ts +10 -0
- package/dist/mcp/browser-tools.js +16 -0
- package/dist/mcp/client.d.ts +54 -0
- package/dist/mcp/client.js +153 -0
- package/dist/mcp/index.d.ts +12 -0
- package/dist/mcp/index.js +13 -0
- package/dist/mcp/server.d.ts +40 -0
- package/dist/mcp/server.js +826 -0
- package/dist/mcp/tool-adapter.d.ts +49 -0
- package/dist/mcp/tool-adapter.js +193 -0
- package/dist/memory/experience-store.d.ts +121 -0
- package/dist/memory/experience-store.js +439 -0
- package/dist/memory/index.d.ts +8 -0
- package/dist/memory/index.js +25 -0
- package/dist/memory/memory-service.d.ts +312 -0
- package/dist/memory/memory-service.js +1172 -0
- package/dist/memory/memory-watcher.d.ts +116 -0
- package/dist/memory/memory-watcher.js +239 -0
- package/dist/middleware/logging.d.ts +34 -0
- package/dist/middleware/logging.js +184 -0
- package/dist/middleware/rate-limit.d.ts +29 -0
- package/dist/middleware/rate-limit.js +91 -0
- package/dist/notifications/in-app.d.ts +28 -0
- package/dist/notifications/in-app.js +53 -0
- package/dist/notifications/index.d.ts +3 -0
- package/dist/notifications/index.js +3 -0
- package/dist/notifications/push.d.ts +74 -0
- package/dist/notifications/push.js +175 -0
- package/dist/notifications/slack.d.ts +32 -0
- package/dist/notifications/slack.js +157 -0
- package/dist/plugins/clawhub.d.ts +70 -0
- package/dist/plugins/clawhub.js +260 -0
- package/dist/plugins/loader.d.ts +23 -0
- package/dist/plugins/loader.js +140 -0
- package/dist/plugins/marketplace.d.ts +77 -0
- package/dist/plugins/marketplace.js +275 -0
- package/dist/plugins/registry.d.ts +122 -0
- package/dist/plugins/registry.js +352 -0
- package/dist/plugins/sandbox.d.ts +77 -0
- package/dist/plugins/sandbox.js +287 -0
- package/dist/plugins/scaffolder.d.ts +28 -0
- package/dist/plugins/scaffolder.js +409 -0
- package/dist/plugins/sdk.d.ts +35 -0
- package/dist/plugins/sdk.js +8 -0
- package/dist/plugins/search/brave.d.ts +9 -0
- package/dist/plugins/search/brave.js +157 -0
- package/dist/plugins/search/duckduckgo.d.ts +9 -0
- package/dist/plugins/search/duckduckgo.js +171 -0
- package/dist/plugins/search/index.d.ts +13 -0
- package/dist/plugins/search/index.js +23 -0
- package/dist/plugins/search/searxng.d.ts +9 -0
- package/dist/plugins/search/searxng.js +170 -0
- package/dist/plugins/search/serper.d.ts +9 -0
- package/dist/plugins/search/serper.js +135 -0
- package/dist/plugins/search/tavily.d.ts +9 -0
- package/dist/plugins/search/tavily.js +146 -0
- package/dist/plugins/types.d.ts +174 -0
- package/dist/plugins/types.js +8 -0
- package/dist/projects/index.d.ts +133 -0
- package/dist/projects/index.js +897 -0
- package/dist/projects/types.d.ts +444 -0
- package/dist/projects/types.js +207 -0
- package/dist/providers/adapters/anthropic.d.ts +26 -0
- package/dist/providers/adapters/anthropic.js +306 -0
- package/dist/providers/adapters/base.d.ts +53 -0
- package/dist/providers/adapters/base.js +99 -0
- package/dist/providers/adapters/ollama.d.ts +30 -0
- package/dist/providers/adapters/ollama.js +292 -0
- package/dist/providers/ai-sdk.d.ts +178 -0
- package/dist/providers/ai-sdk.js +1552 -0
- package/dist/providers/core/index.d.ts +8 -0
- package/dist/providers/core/index.js +10 -0
- package/dist/providers/core/models.d.ts +31 -0
- package/dist/providers/core/models.js +949 -0
- package/dist/providers/core/types.d.ts +117 -0
- package/dist/providers/core/types.js +83 -0
- package/dist/providers/index.d.ts +7 -0
- package/dist/providers/index.js +7 -0
- package/dist/providers/registry.d.ts +93 -0
- package/dist/providers/registry.js +228 -0
- package/dist/providers/schema-utils.d.ts +23 -0
- package/dist/providers/schema-utils.js +545 -0
- package/dist/providers/types.d.ts +609 -0
- package/dist/providers/types.js +279 -0
- package/dist/queue/failure-handler.d.ts +93 -0
- package/dist/queue/failure-handler.js +379 -0
- package/dist/queue/index.d.ts +23 -0
- package/dist/queue/index.js +86 -0
- package/dist/queue/memory-queue.d.ts +30 -0
- package/dist/queue/memory-queue.js +429 -0
- package/dist/queue/notifications.d.ts +6 -0
- package/dist/queue/notifications.js +128 -0
- package/dist/queue/task-queue.d.ts +55 -0
- package/dist/queue/task-queue.js +518 -0
- package/dist/queue/webhook-queue.d.ts +47 -0
- package/dist/queue/webhook-queue.js +158 -0
- package/dist/routes/agents.d.ts +4 -0
- package/dist/routes/agents.js +45 -0
- package/dist/routes/auth.d.ts +19 -0
- package/dist/routes/auth.js +492 -0
- package/dist/routes/backup.d.ts +6 -0
- package/dist/routes/backup.js +71 -0
- package/dist/routes/chat.d.ts +10 -0
- package/dist/routes/chat.js +1678 -0
- package/dist/routes/clawhub.d.ts +8 -0
- package/dist/routes/clawhub.js +89 -0
- package/dist/routes/costs.d.ts +4 -0
- package/dist/routes/costs.js +78 -0
- package/dist/routes/cron.d.ts +11 -0
- package/dist/routes/cron.js +708 -0
- package/dist/routes/devices.d.ts +9 -0
- package/dist/routes/devices.js +490 -0
- package/dist/routes/discord.d.ts +15 -0
- package/dist/routes/discord.js +524 -0
- package/dist/routes/dlq.d.ts +4 -0
- package/dist/routes/dlq.js +64 -0
- package/dist/routes/gateway.d.ts +4 -0
- package/dist/routes/gateway.js +253 -0
- package/dist/routes/health.d.ts +29 -0
- package/dist/routes/health.js +296 -0
- package/dist/routes/hooks.d.ts +4 -0
- package/dist/routes/hooks.js +170 -0
- package/dist/routes/import.d.ts +9 -0
- package/dist/routes/import.js +540 -0
- package/dist/routes/index.d.ts +38 -0
- package/dist/routes/index.js +39 -0
- package/dist/routes/integrations.d.ts +10 -0
- package/dist/routes/integrations.js +200 -0
- package/dist/routes/labels.d.ts +8 -0
- package/dist/routes/labels.js +240 -0
- package/dist/routes/mcp.d.ts +14 -0
- package/dist/routes/mcp.js +125 -0
- package/dist/routes/memory.d.ts +10 -0
- package/dist/routes/memory.js +622 -0
- package/dist/routes/notifications.d.ts +9 -0
- package/dist/routes/notifications.js +154 -0
- package/dist/routes/oobe.d.ts +10 -0
- package/dist/routes/oobe.js +405 -0
- package/dist/routes/openapi.d.ts +9 -0
- package/dist/routes/openapi.js +537 -0
- package/dist/routes/plugins.d.ts +8 -0
- package/dist/routes/plugins.js +108 -0
- package/dist/routes/projects.d.ts +8 -0
- package/dist/routes/projects.js +592 -0
- package/dist/routes/push.d.ts +8 -0
- package/dist/routes/push.js +75 -0
- package/dist/routes/search.d.ts +4 -0
- package/dist/routes/search.js +189 -0
- package/dist/routes/security.d.ts +10 -0
- package/dist/routes/security.js +189 -0
- package/dist/routes/settings.d.ts +4 -0
- package/dist/routes/settings.js +119 -0
- package/dist/routes/setup.d.ts +11 -0
- package/dist/routes/setup.js +525 -0
- package/dist/routes/skills.d.ts +13 -0
- package/dist/routes/skills.js +152 -0
- package/dist/routes/slack.d.ts +12 -0
- package/dist/routes/slack.js +999 -0
- package/dist/routes/states.d.ts +8 -0
- package/dist/routes/states.js +123 -0
- package/dist/routes/stats.d.ts +6 -0
- package/dist/routes/stats.js +369 -0
- package/dist/routes/summaries.d.ts +4 -0
- package/dist/routes/summaries.js +344 -0
- package/dist/routes/sync.d.ts +13 -0
- package/dist/routes/sync.js +268 -0
- package/dist/routes/tasks.d.ts +4 -0
- package/dist/routes/tasks.js +473 -0
- package/dist/routes/telegram.d.ts +14 -0
- package/dist/routes/telegram.js +420 -0
- package/dist/routes/tickets.d.ts +4 -0
- package/dist/routes/tickets.js +1090 -0
- package/dist/routes/tokens.d.ts +4 -0
- package/dist/routes/tokens.js +83 -0
- package/dist/routes/tools.d.ts +14 -0
- package/dist/routes/tools.js +790 -0
- package/dist/routes/tunnels.d.ts +8 -0
- package/dist/routes/tunnels.js +145 -0
- package/dist/routes/users.d.ts +15 -0
- package/dist/routes/users.js +998 -0
- package/dist/routes/voice.d.ts +8 -0
- package/dist/routes/voice.js +127 -0
- package/dist/routes/webchat.d.ts +11 -0
- package/dist/routes/webchat.js +173 -0
- package/dist/routes/webhook-dedup.d.ts +11 -0
- package/dist/routes/webhook-dedup.js +49 -0
- package/dist/routes/webhooks.d.ts +4 -0
- package/dist/routes/webhooks.js +71 -0
- package/dist/routes/whatsapp.d.ts +14 -0
- package/dist/routes/whatsapp.js +391 -0
- package/dist/security/audit-scanner.d.ts +32 -0
- package/dist/security/audit-scanner.js +217 -0
- package/dist/security/fs-guard.d.ts +41 -0
- package/dist/security/fs-guard.js +206 -0
- package/dist/security/prompt-guard.d.ts +47 -0
- package/dist/security/prompt-guard.js +198 -0
- package/dist/security/ssrf-guard.d.ts +38 -0
- package/dist/security/ssrf-guard.js +266 -0
- package/dist/security/types.d.ts +92 -0
- package/dist/security/types.js +8 -0
- package/dist/server/route-loader.d.ts +15 -0
- package/dist/server/route-loader.js +135 -0
- package/dist/server.d.ts +5 -0
- package/dist/server.js +835 -0
- package/dist/settings/index.d.ts +841 -0
- package/dist/settings/index.js +451 -0
- package/dist/skills/compiler.d.ts +83 -0
- package/dist/skills/compiler.js +358 -0
- package/dist/skills/frontmatter.d.ts +33 -0
- package/dist/skills/frontmatter.js +175 -0
- package/dist/skills/index.d.ts +19 -0
- package/dist/skills/index.js +24 -0
- package/dist/skills/installer.d.ts +22 -0
- package/dist/skills/installer.js +220 -0
- package/dist/skills/loader.d.ts +72 -0
- package/dist/skills/loader.js +484 -0
- package/dist/skills/prompt-builder.d.ts +48 -0
- package/dist/skills/prompt-builder.js +135 -0
- package/dist/skills/registry.d.ts +115 -0
- package/dist/skills/registry.js +225 -0
- package/dist/skills/types.d.ts +202 -0
- package/dist/skills/types.js +24 -0
- package/dist/states/index.d.ts +64 -0
- package/dist/states/index.js +142 -0
- package/dist/storage/adapter.d.ts +146 -0
- package/dist/storage/adapter.js +2 -0
- package/dist/storage/index.d.ts +48 -0
- package/dist/storage/index.js +135 -0
- package/dist/storage/libsql.d.ts +99 -0
- package/dist/storage/libsql.js +1873 -0
- package/dist/storage/migrations.d.ts +65 -0
- package/dist/storage/migrations.js +289 -0
- package/dist/storage/schema.d.ts +10185 -0
- package/dist/storage/schema.js +1113 -0
- package/dist/summaries/extractor.d.ts +56 -0
- package/dist/summaries/extractor.js +377 -0
- package/dist/summaries/index.d.ts +13 -0
- package/dist/summaries/index.js +14 -0
- package/dist/summaries/storage.d.ts +51 -0
- package/dist/summaries/storage.js +101 -0
- package/dist/summaries/templates.d.ts +68 -0
- package/dist/summaries/templates.js +245 -0
- package/dist/sync/adapters/base.d.ts +42 -0
- package/dist/sync/adapters/base.js +142 -0
- package/dist/sync/adapters/github.d.ts +45 -0
- package/dist/sync/adapters/github.js +445 -0
- package/dist/sync/adapters/linear.d.ts +40 -0
- package/dist/sync/adapters/linear.js +434 -0
- package/dist/sync/config.d.ts +388 -0
- package/dist/sync/config.js +281 -0
- package/dist/sync/engine.d.ts +112 -0
- package/dist/sync/engine.js +623 -0
- package/dist/sync/index.d.ts +31 -0
- package/dist/sync/index.js +34 -0
- package/dist/sync/integration.d.ts +53 -0
- package/dist/sync/integration.js +231 -0
- package/dist/sync/types.d.ts +249 -0
- package/dist/sync/types.js +30 -0
- package/dist/tickets/index.d.ts +139 -0
- package/dist/tickets/index.js +1406 -0
- package/dist/tickets/types.d.ts +817 -0
- package/dist/tickets/types.js +310 -0
- package/dist/tools/adapters.d.ts +56 -0
- package/dist/tools/adapters.js +183 -0
- package/dist/tools/index.d.ts +66 -0
- package/dist/tools/index.js +105 -0
- package/dist/tools/types.d.ts +117 -0
- package/dist/tools/types.js +20 -0
- package/dist/types/agent.d.ts +101 -0
- package/dist/types/agent.js +2 -0
- package/dist/types/errors.d.ts +150 -0
- package/dist/types/errors.js +338 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.js +3 -0
- package/dist/types/summary.d.ts +638 -0
- package/dist/types/summary.js +137 -0
- package/dist/types/task.d.ts +123 -0
- package/dist/types/task.js +46 -0
- package/dist/utils/ai-cache.d.ts +72 -0
- package/dist/utils/ai-cache.js +204 -0
- package/dist/utils/ai-inference.d.ts +57 -0
- package/dist/utils/ai-inference.js +190 -0
- package/dist/utils/ai-responder.d.ts +44 -0
- package/dist/utils/ai-responder.js +272 -0
- package/dist/utils/circuit-breaker.d.ts +139 -0
- package/dist/utils/circuit-breaker.js +281 -0
- package/dist/utils/config-loader.d.ts +12 -0
- package/dist/utils/config-loader.js +44 -0
- package/dist/utils/crypto.d.ts +10 -0
- package/dist/utils/crypto.js +59 -0
- package/dist/utils/env-validator.d.ts +44 -0
- package/dist/utils/env-validator.js +236 -0
- package/dist/utils/file-lock.d.ts +85 -0
- package/dist/utils/file-lock.js +204 -0
- package/dist/utils/logger.d.ts +153 -0
- package/dist/utils/logger.js +282 -0
- package/dist/utils/metrics.d.ts +183 -0
- package/dist/utils/metrics.js +345 -0
- package/dist/utils/security.d.ts +90 -0
- package/dist/utils/security.js +347 -0
- package/dist/voice/index.d.ts +79 -0
- package/dist/voice/index.js +144 -0
- package/dist/voice/stt/whisper.d.ts +13 -0
- package/dist/voice/stt/whisper.js +116 -0
- package/dist/voice/tts/elevenlabs.d.ts +18 -0
- package/dist/voice/tts/elevenlabs.js +178 -0
- package/dist/voice/tts/openai-tts.d.ts +19 -0
- package/dist/voice/tts/openai-tts.js +127 -0
- package/dist/voice/tts/system.d.ts +26 -0
- package/dist/voice/tts/system.js +146 -0
- package/dist/voice/wake-word.d.ts +44 -0
- package/dist/voice/wake-word.js +145 -0
- package/docker-compose.yml +222 -0
- package/package.json +154 -0
- package/profclaw.mjs +24 -0
- package/skills/1password/SKILL.md +155 -0
- package/skills/api-tester/SKILL.md +177 -0
- package/skills/apple-notes/SKILL.md +167 -0
- package/skills/apple-reminders/SKILL.md +178 -0
- package/skills/bear-notes/SKILL.md +166 -0
- package/skills/blogwatcher/SKILL.md +177 -0
- package/skills/camsnap/SKILL.md +130 -0
- package/skills/code-generation/SKILL.md +139 -0
- package/skills/code-review/SKILL.md +116 -0
- package/skills/coding-agent/SKILL.md +184 -0
- package/skills/cron-manager/SKILL.md +141 -0
- package/skills/debug-helper/SKILL.md +134 -0
- package/skills/docker-ops/SKILL.md +246 -0
- package/skills/file-manager/SKILL.md +160 -0
- package/skills/git-workflow/SKILL.md +171 -0
- package/skills/github-issues/SKILL.md +244 -0
- package/skills/gog/SKILL.md +191 -0
- package/skills/goplaces/SKILL.md +156 -0
- package/skills/healthcheck/SKILL.md +270 -0
- package/skills/himalaya/SKILL.md +165 -0
- package/skills/mcp-discovery/SKILL.md +109 -0
- package/skills/memory-manager/SKILL.md +151 -0
- package/skills/model-usage/SKILL.md +177 -0
- package/skills/nano-banana-pro/SKILL.md +214 -0
- package/skills/nano-pdf/SKILL.md +165 -0
- package/skills/notion/SKILL.md +147 -0
- package/skills/obsidian/SKILL.md +163 -0
- package/skills/openai-image-gen/SKILL.md +194 -0
- package/skills/openai-whisper/SKILL.md +98 -0
- package/skills/openai-whisper-api/SKILL.md +130 -0
- package/skills/openhue/SKILL.md +203 -0
- package/skills/oracle/SKILL.md +236 -0
- package/skills/phone-control/SKILL.md +201 -0
- package/skills/profclaw-assistant/SKILL.md +81 -0
- package/skills/profclaw-projects/SKILL.md +68 -0
- package/skills/profclaw-tickets/SKILL.md +91 -0
- package/skills/session-logs/SKILL.md +216 -0
- package/skills/sherpa-onnx-tts/SKILL.md +134 -0
- package/skills/skill-creator/SKILL.md +183 -0
- package/skills/songsee/SKILL.md +170 -0
- package/skills/spotify-player/SKILL.md +254 -0
- package/skills/summarize/SKILL.md +155 -0
- package/skills/system-admin/SKILL.md +179 -0
- package/skills/things-mac/SKILL.md +179 -0
- package/skills/tmux/SKILL.md +170 -0
- package/skills/trello/SKILL.md +154 -0
- package/skills/video-frames/SKILL.md +127 -0
- package/skills/weather/SKILL.md +186 -0
- package/skills/web-research/SKILL.md +128 -0
- package/skills/xurl/SKILL.md +198 -0
- package/ui/README.md +73 -0
- package/ui/dist/assets/ActivityView-CkPgKhwm.js +1 -0
- package/ui/dist/assets/AgentList-C3SVdeEz.js +1 -0
- package/ui/dist/assets/AnalyticsDashboard-DVU--vlP.js +1 -0
- package/ui/dist/assets/AreaChart-B5qMEGWj.js +1 -0
- package/ui/dist/assets/CartesianChart-B50bcUJi.js +36 -0
- package/ui/dist/assets/ChatView-BZFJs7w_.js +10 -0
- package/ui/dist/assets/CostsDashboard-ChfH8BlG.js +1 -0
- package/ui/dist/assets/EstimateSelect-CLpB4NQO.js +1 -0
- package/ui/dist/assets/FloatingChatbot-CBzBY9a0.js +2 -0
- package/ui/dist/assets/InviteCodeManagement-DsbdPa6W.js +2 -0
- package/ui/dist/assets/ProjectDetail-BEM3tFXg.js +2 -0
- package/ui/dist/assets/ProjectDetail-D1-0B2xV.css +1 -0
- package/ui/dist/assets/ProjectIcon-CN1FmFAk.js +1 -0
- package/ui/dist/assets/ProjectList-DSDaNhxQ.js +4 -0
- package/ui/dist/assets/Settings-dPVcqC_d.js +6 -0
- package/ui/dist/assets/StatusIndicator-DA3NAo_b.js +1 -0
- package/ui/dist/assets/SummaryDetail-Bjnf9lT8.js +27 -0
- package/ui/dist/assets/SummaryList-ENwKDBKW.js +1 -0
- package/ui/dist/assets/TaskDetail-DnwG6MzB.js +1 -0
- package/ui/dist/assets/TaskList-D9Ug_HiV.js +1 -0
- package/ui/dist/assets/TicketBoard-CviH1571.js +1 -0
- package/ui/dist/assets/TicketDetail-8Jk8O-33.js +1 -0
- package/ui/dist/assets/TicketList-B-iV4rRA.js +1 -0
- package/ui/dist/assets/UserManagement-CPZ8s7s2.js +2 -0
- package/ui/dist/assets/ViewSwitcher-BUyOOWDI.js +1 -0
- package/ui/dist/assets/alert-dialog-BOmnTkN-.js +7 -0
- package/ui/dist/assets/archive-D5my9zOG.js +1 -0
- package/ui/dist/assets/badge-B4ov81_m.js +1 -0
- package/ui/dist/assets/brain-C53ElFLD.js +1 -0
- package/ui/dist/assets/bug-D0TJoCYn.js +1 -0
- package/ui/dist/assets/calendar-BkWIhKa1.js +1 -0
- package/ui/dist/assets/chevron-up-BRTtndUZ.js +1 -0
- package/ui/dist/assets/circle-x-BN89YhbS.js +1 -0
- package/ui/dist/assets/constants-fc7TFI7u.js +1 -0
- package/ui/dist/assets/cpu-B41x1-vV.js +1 -0
- package/ui/dist/assets/database-D9Cnfmzj.js +1 -0
- package/ui/dist/assets/defineProperty-CoXUr7_6.js +2 -0
- package/ui/dist/assets/dialog-DrWB4EYD.js +1 -0
- package/ui/dist/assets/element-adapter-DL0DQilL.js +4 -0
- package/ui/dist/assets/ellipsis-NuUWekvu.js +1 -0
- package/ui/dist/assets/ellipsis-vertical-BueMfuCw.js +1 -0
- package/ui/dist/assets/file-code-HR9829Jc.js +1 -0
- package/ui/dist/assets/folder-open-C_7oYEqe.js +1 -0
- package/ui/dist/assets/funnel-B5gmNXGf.js +1 -0
- package/ui/dist/assets/git-branch-BRMiJmV3.js +1 -0
- package/ui/dist/assets/git-commit-horizontal-CXOUQeJI.js +1 -0
- package/ui/dist/assets/globe-CCspjvus.js +1 -0
- package/ui/dist/assets/hash-g3102kPC.js +1 -0
- package/ui/dist/assets/history-CNqcBBrV.js +1 -0
- package/ui/dist/assets/index-27mTPKuh.js +1 -0
- package/ui/dist/assets/index-BMx3fH-e.js +1 -0
- package/ui/dist/assets/index-C9jNQXzL.js +1 -0
- package/ui/dist/assets/index-CEZ6R2Uw.js +7 -0
- package/ui/dist/assets/index-DURTouJI.js +1 -0
- package/ui/dist/assets/index-WclMPci1.css +1 -0
- package/ui/dist/assets/index-kb4AJXUB.js +67 -0
- package/ui/dist/assets/layers-CLXiHN6o.js +1 -0
- package/ui/dist/assets/layout-dashboard-B07MFhBs.js +1 -0
- package/ui/dist/assets/lightbulb-B2dgG5ks.js +1 -0
- package/ui/dist/assets/link-2-BxNmr9hL.js +1 -0
- package/ui/dist/assets/markdown-renderer-CjU6hBcW.js +36 -0
- package/ui/dist/assets/message-square-Bf2-CVbt.js +1 -0
- package/ui/dist/assets/pencil-D096Ey62.js +1 -0
- package/ui/dist/assets/play-DfdcSI3x.js +1 -0
- package/ui/dist/assets/popover-BV0QJDQq.js +1 -0
- package/ui/dist/assets/progress-DjPEDJfI.js +1 -0
- package/ui/dist/assets/rocket-CPsTc-5G.js +1 -0
- package/ui/dist/assets/select-LsO16slr.js +1 -0
- package/ui/dist/assets/send-BDYBZDUZ.js +1 -0
- package/ui/dist/assets/server-B3k6noce.js +1 -0
- package/ui/dist/assets/settings-2-Cu4xTjhG.js +1 -0
- package/ui/dist/assets/sheet-BScLnPKX.js +1 -0
- package/ui/dist/assets/shield-check-CQqkwufI.js +1 -0
- package/ui/dist/assets/shield-off-ZFruH9KO.js +1 -0
- package/ui/dist/assets/skeleton-CtkIA_MU.js +1 -0
- package/ui/dist/assets/smartphone-DnoksVkc.js +1 -0
- package/ui/dist/assets/square-uD9ZHMfW.js +1 -0
- package/ui/dist/assets/switch-MQPnwGJK.js +1 -0
- package/ui/dist/assets/table-B8cqlywA.js +1 -0
- package/ui/dist/assets/tag-wEJQRWlV.js +1 -0
- package/ui/dist/assets/textarea-D5LJCOGl.js +1 -0
- package/ui/dist/assets/timer-mbGHegmr.js +1 -0
- package/ui/dist/assets/tooltip-Df1CunSp.js +1 -0
- package/ui/dist/assets/trash-2-B4oAXsX-.js +1 -0
- package/ui/dist/assets/trending-up-BGWxvlmZ.js +1 -0
- package/ui/dist/assets/wand-sparkles-CZy4xvL3.js +1 -0
- package/ui/dist/assets/wrench-ByZkjO6m.js +1 -0
- package/ui/dist/audio-worklets/vad-processor.js +132 -0
- package/ui/dist/brand/profclaw-appicon-192.png +0 -0
- package/ui/dist/brand/profclaw-appicon-512.png +0 -0
- package/ui/dist/brand/profclaw-appicon-shadow.svg +51 -0
- package/ui/dist/brand/profclaw-appicon.svg +50 -0
- package/ui/dist/brand/profclaw-favicon-coral-bg-128.png +0 -0
- package/ui/dist/brand/profclaw-favicon-coral-bg-64.png +0 -0
- package/ui/dist/brand/profclaw-favicon-coral-bg.svg +52 -0
- package/ui/dist/brand/profclaw-favicon-coral-body-128.png +0 -0
- package/ui/dist/brand/profclaw-favicon-coral-body.svg +41 -0
- package/ui/dist/brand/profclaw-favicon-shadow-128.png +0 -0
- package/ui/dist/brand/profclaw-favicon-shadow-64.png +0 -0
- package/ui/dist/brand/profclaw-favicon-shadow.svg +51 -0
- package/ui/dist/brand/profclaw-mark-coral-256.png +0 -0
- package/ui/dist/brand/profclaw-mark-coral-64.png +0 -0
- package/ui/dist/brand/profclaw-mark-coral.svg +31 -0
- package/ui/dist/brand/profclaw-mono-white.svg +18 -0
- package/ui/dist/brand/profclaw-text-dark.svg +18 -0
- package/ui/dist/brand/profclaw-text-light.svg +18 -0
- package/ui/dist/brand/profclaw-wordmark-dark.svg +48 -0
- package/ui/dist/brand/profclaw-wordmark-light.svg +48 -0
- package/ui/dist/brand/safari-pinned-tab.svg +15 -0
- package/ui/dist/favicon/android-chrome-192x192.png +0 -0
- package/ui/dist/favicon/android-chrome-384x384.png +0 -0
- package/ui/dist/favicon/android-chrome-512x512.png +0 -0
- package/ui/dist/favicon/apple-touch-icon.png +0 -0
- package/ui/dist/favicon/browserconfig.xml +9 -0
- package/ui/dist/favicon/favicon-16x16.png +0 -0
- package/ui/dist/favicon/favicon-32x32.png +0 -0
- package/ui/dist/favicon/favicon.ico +0 -0
- package/ui/dist/favicon/mstile-150x150.png +0 -0
- package/ui/dist/favicon/safari-pinned-tab.svg +46 -0
- package/ui/dist/favicon/site.webmanifest +22 -0
- package/ui/dist/index.html +32 -0
- package/ui/dist/manifest.json +49 -0
- package/ui/dist/sw.js +124 -0
- package/ui/dist/vite.svg +1 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model-Adaptive Prompt System
|
|
3
|
+
*
|
|
4
|
+
* Adapts system prompts based on model capability:
|
|
5
|
+
* - Reasoning models (Claude, GPT-4): high-level goals, natural language
|
|
6
|
+
* - Instruction models (GPT-3.5, Haiku): step-by-step instructions
|
|
7
|
+
* - Basic models (Llama 7B, Phi): explicit fill-in-the-blank, strict format
|
|
8
|
+
*
|
|
9
|
+
* Also handles:
|
|
10
|
+
* - Context budget awareness (auto-truncate based on context window)
|
|
11
|
+
* - Few-shot examples for small models
|
|
12
|
+
* - Tool usage instructions adapted per level
|
|
13
|
+
*/
|
|
14
|
+
export type ModelCapabilityLevel = 'reasoning' | 'instruction' | 'basic';
|
|
15
|
+
export interface AdaptPromptOptions {
|
|
16
|
+
modelId: string;
|
|
17
|
+
systemPrompt: string;
|
|
18
|
+
conversationHistory?: Array<{
|
|
19
|
+
role: string;
|
|
20
|
+
content: string;
|
|
21
|
+
}>;
|
|
22
|
+
contextWindowSize?: number;
|
|
23
|
+
toolDescriptions?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface AdaptedPrompt {
|
|
26
|
+
systemPrompt: string;
|
|
27
|
+
truncatedHistory?: Array<{
|
|
28
|
+
role: string;
|
|
29
|
+
content: string;
|
|
30
|
+
}>;
|
|
31
|
+
adaptationLevel: ModelCapabilityLevel;
|
|
32
|
+
estimatedTokens: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Classify a model's capability level based on its ID
|
|
36
|
+
*/
|
|
37
|
+
export declare function classifyModelCapability(modelId: string): ModelCapabilityLevel;
|
|
38
|
+
/**
|
|
39
|
+
* Adapt a system prompt for a specific model's capability level.
|
|
40
|
+
* Adds appropriate prefixes, guidance, and truncates history to fit context budget.
|
|
41
|
+
*/
|
|
42
|
+
export declare function adaptPromptForModel(options: AdaptPromptOptions): AdaptedPrompt;
|
|
43
|
+
/**
|
|
44
|
+
* Get adaptation info for display purposes (e.g. in debug UI or session status)
|
|
45
|
+
*/
|
|
46
|
+
export declare function getAdaptationInfo(modelId: string): {
|
|
47
|
+
level: ModelCapabilityLevel;
|
|
48
|
+
description: string;
|
|
49
|
+
maxTools: string;
|
|
50
|
+
historyBudget: string;
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=prompt-adapter.d.ts.map
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model-Adaptive Prompt System
|
|
3
|
+
*
|
|
4
|
+
* Adapts system prompts based on model capability:
|
|
5
|
+
* - Reasoning models (Claude, GPT-4): high-level goals, natural language
|
|
6
|
+
* - Instruction models (GPT-3.5, Haiku): step-by-step instructions
|
|
7
|
+
* - Basic models (Llama 7B, Phi): explicit fill-in-the-blank, strict format
|
|
8
|
+
*
|
|
9
|
+
* Also handles:
|
|
10
|
+
* - Context budget awareness (auto-truncate based on context window)
|
|
11
|
+
* - Few-shot examples for small models
|
|
12
|
+
* - Tool usage instructions adapted per level
|
|
13
|
+
*/
|
|
14
|
+
import { logger } from '../utils/logger.js';
|
|
15
|
+
// --- Model Classification ---
|
|
16
|
+
const REASONING_PATTERNS = [
|
|
17
|
+
/claude-(3\.5|4|opus|sonnet-4)/i,
|
|
18
|
+
/gpt-4o|gpt-4-turbo|gpt-4\.5/i,
|
|
19
|
+
/gemini-(pro|1\.5|2\.0)/i,
|
|
20
|
+
/o[13]-/i,
|
|
21
|
+
/deepseek-(v3|r1|chat)/i,
|
|
22
|
+
/qwen-?2\.5-(72b|110b)/i,
|
|
23
|
+
/llama-?3\.1-405b/i,
|
|
24
|
+
];
|
|
25
|
+
const INSTRUCTION_PATTERNS = [
|
|
26
|
+
/claude.*haiku/i,
|
|
27
|
+
/gpt-3\.5/i,
|
|
28
|
+
/gemini.*flash/i,
|
|
29
|
+
/mistral-(large|medium)/i,
|
|
30
|
+
/llama-?3\.(1-70b|3-70b)/i,
|
|
31
|
+
/qwen-?2\.5-(32b|14b)/i,
|
|
32
|
+
/command-r/i,
|
|
33
|
+
/mixtral/i,
|
|
34
|
+
];
|
|
35
|
+
// Everything else defaults to 'basic'
|
|
36
|
+
/**
|
|
37
|
+
* Classify a model's capability level based on its ID
|
|
38
|
+
*/
|
|
39
|
+
export function classifyModelCapability(modelId) {
|
|
40
|
+
if (REASONING_PATTERNS.some((p) => p.test(modelId)))
|
|
41
|
+
return 'reasoning';
|
|
42
|
+
if (INSTRUCTION_PATTERNS.some((p) => p.test(modelId)))
|
|
43
|
+
return 'instruction';
|
|
44
|
+
// Check for size indicator in model ID (e.g. "llama-13b", "phi-7b")
|
|
45
|
+
const sizeMatch = modelId.match(/(\d+)b$/i);
|
|
46
|
+
if (sizeMatch) {
|
|
47
|
+
const size = parseInt(sizeMatch[1], 10);
|
|
48
|
+
if (size >= 70)
|
|
49
|
+
return 'instruction';
|
|
50
|
+
if (size >= 30)
|
|
51
|
+
return 'instruction';
|
|
52
|
+
}
|
|
53
|
+
// Unknown - default to instruction (safe middle ground)
|
|
54
|
+
return 'instruction';
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Get estimated context window size for a model
|
|
58
|
+
*/
|
|
59
|
+
function getContextWindow(modelId) {
|
|
60
|
+
if (/claude|gpt-4o|gemini-(1\.5|2)/i.test(modelId))
|
|
61
|
+
return 128000;
|
|
62
|
+
if (/gpt-4-turbo/i.test(modelId))
|
|
63
|
+
return 128000;
|
|
64
|
+
if (/gpt-3\.5/i.test(modelId))
|
|
65
|
+
return 16385;
|
|
66
|
+
if (/llama-?3/i.test(modelId))
|
|
67
|
+
return 131072;
|
|
68
|
+
if (/qwen/i.test(modelId))
|
|
69
|
+
return 32768;
|
|
70
|
+
if (/mistral/i.test(modelId))
|
|
71
|
+
return 32768;
|
|
72
|
+
if (/phi/i.test(modelId))
|
|
73
|
+
return 16384;
|
|
74
|
+
if (/gemma/i.test(modelId))
|
|
75
|
+
return 8192;
|
|
76
|
+
return 32768;
|
|
77
|
+
}
|
|
78
|
+
// --- Prompt Adaptations ---
|
|
79
|
+
const ADAPTATIONS = {
|
|
80
|
+
reasoning: {
|
|
81
|
+
// No prefix needed - these models understand natural language well
|
|
82
|
+
systemPromptPrefix: '',
|
|
83
|
+
toolUsageGuidance: `Use the available tools as needed to accomplish the user's request. Choose the most appropriate tool for each step.`,
|
|
84
|
+
// Natural language response is fine
|
|
85
|
+
responseFormat: '',
|
|
86
|
+
// Can handle long history
|
|
87
|
+
maxHistoryTokens: 100000,
|
|
88
|
+
// Not needed for reasoning models
|
|
89
|
+
fewShotExamples: [],
|
|
90
|
+
},
|
|
91
|
+
instruction: {
|
|
92
|
+
systemPromptPrefix: `IMPORTANT: Follow these instructions carefully. Complete each step in order.\n\n`,
|
|
93
|
+
toolUsageGuidance: `When using tools:
|
|
94
|
+
1. Read the tool description carefully before using it
|
|
95
|
+
2. Provide all required parameters
|
|
96
|
+
3. Check the result before proceeding to the next step
|
|
97
|
+
4. If a tool fails, explain the error to the user`,
|
|
98
|
+
responseFormat: `Format your responses clearly with markdown. Use bullet points for lists.`,
|
|
99
|
+
// More limited context budget
|
|
100
|
+
maxHistoryTokens: 12000,
|
|
101
|
+
fewShotExamples: [
|
|
102
|
+
`User: "Read the file config.json"
|
|
103
|
+
Assistant: I'll read that file for you.
|
|
104
|
+
[Uses read_file tool with path="config.json"]
|
|
105
|
+
Here's the content of config.json: ...`,
|
|
106
|
+
],
|
|
107
|
+
},
|
|
108
|
+
basic: {
|
|
109
|
+
systemPromptPrefix: `You are a helpful assistant with access to tools. Follow these rules EXACTLY:
|
|
110
|
+
1. Answer the user's question directly
|
|
111
|
+
2. Use ONLY the tools listed below when needed
|
|
112
|
+
3. Do NOT make up tool names - use only what is available
|
|
113
|
+
4. Keep responses short and clear\n\n`,
|
|
114
|
+
toolUsageGuidance: `TOOL USAGE RULES:
|
|
115
|
+
- Use tools ONLY when the user asks you to do something (read files, search, execute commands)
|
|
116
|
+
- Do NOT use tools just to answer simple questions
|
|
117
|
+
- When using a tool, provide ALL required parameters exactly
|
|
118
|
+
- After using a tool, summarize the result in 1-2 sentences`,
|
|
119
|
+
responseFormat: `RESPONSE FORMAT:
|
|
120
|
+
- Keep responses under 200 words unless the user asks for detail
|
|
121
|
+
- Use simple language
|
|
122
|
+
- Do NOT use complex markdown formatting
|
|
123
|
+
- Answer the question first, then explain if needed`,
|
|
124
|
+
// Very limited context budget
|
|
125
|
+
maxHistoryTokens: 4000,
|
|
126
|
+
fewShotExamples: [
|
|
127
|
+
`User: "What's in the src folder?"
|
|
128
|
+
Assistant: I'll list the files in src/ for you.
|
|
129
|
+
[Uses search_files with directory="src", pattern="*"]
|
|
130
|
+
The src/ folder contains: index.ts, server.ts, types.ts, and folders: chat/, routes/, providers/.`,
|
|
131
|
+
`User: "Run the tests"
|
|
132
|
+
Assistant: Running tests now.
|
|
133
|
+
[Uses exec with command="pnpm test"]
|
|
134
|
+
Tests completed: 45 passed, 0 failed.`,
|
|
135
|
+
],
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
// --- Core Function ---
|
|
139
|
+
/**
|
|
140
|
+
* Adapt a system prompt for a specific model's capability level.
|
|
141
|
+
* Adds appropriate prefixes, guidance, and truncates history to fit context budget.
|
|
142
|
+
*/
|
|
143
|
+
export function adaptPromptForModel(options) {
|
|
144
|
+
const level = classifyModelCapability(options.modelId);
|
|
145
|
+
const adaptation = ADAPTATIONS[level];
|
|
146
|
+
const contextWindow = options.contextWindowSize ?? getContextWindow(options.modelId);
|
|
147
|
+
// Suppress unused variable warning - contextWindow reserved for future budget checks
|
|
148
|
+
void contextWindow;
|
|
149
|
+
// Build adapted system prompt
|
|
150
|
+
const parts = [];
|
|
151
|
+
// Prefix for instruction/basic models
|
|
152
|
+
if (adaptation.systemPromptPrefix) {
|
|
153
|
+
parts.push(adaptation.systemPromptPrefix);
|
|
154
|
+
}
|
|
155
|
+
// Original system prompt
|
|
156
|
+
parts.push(options.systemPrompt);
|
|
157
|
+
// Tool usage guidance (only when tools are available)
|
|
158
|
+
if (options.toolDescriptions) {
|
|
159
|
+
parts.push('\n\n' + adaptation.toolUsageGuidance);
|
|
160
|
+
}
|
|
161
|
+
// Response format guidance for non-reasoning models
|
|
162
|
+
if (adaptation.responseFormat) {
|
|
163
|
+
parts.push('\n\n' + adaptation.responseFormat);
|
|
164
|
+
}
|
|
165
|
+
// Few-shot examples for basic models
|
|
166
|
+
if (adaptation.fewShotExamples.length > 0) {
|
|
167
|
+
parts.push('\n\n## Examples\n');
|
|
168
|
+
for (const example of adaptation.fewShotExamples) {
|
|
169
|
+
parts.push(example);
|
|
170
|
+
parts.push('');
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
const adaptedPrompt = parts.join('\n');
|
|
174
|
+
// Truncate conversation history based on context budget
|
|
175
|
+
let truncatedHistory = options.conversationHistory;
|
|
176
|
+
if (truncatedHistory && truncatedHistory.length > 0) {
|
|
177
|
+
truncatedHistory = truncateHistory(truncatedHistory, adaptation.maxHistoryTokens);
|
|
178
|
+
}
|
|
179
|
+
const estimatedTokens = estimateTokenCount(adaptedPrompt);
|
|
180
|
+
logger.debug('[PromptAdapter] Adapted prompt', {
|
|
181
|
+
model: options.modelId,
|
|
182
|
+
level,
|
|
183
|
+
originalLength: options.systemPrompt.length,
|
|
184
|
+
adaptedLength: adaptedPrompt.length,
|
|
185
|
+
estimatedTokens,
|
|
186
|
+
historyMessages: truncatedHistory?.length ?? 0,
|
|
187
|
+
});
|
|
188
|
+
return {
|
|
189
|
+
systemPrompt: adaptedPrompt,
|
|
190
|
+
truncatedHistory,
|
|
191
|
+
adaptationLevel: level,
|
|
192
|
+
estimatedTokens,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Truncate conversation history to fit within token budget.
|
|
197
|
+
* Always preserves the first message (task context), then keeps most recent messages.
|
|
198
|
+
*/
|
|
199
|
+
function truncateHistory(history, maxTokens) {
|
|
200
|
+
if (history.length <= 2)
|
|
201
|
+
return history;
|
|
202
|
+
let totalTokens = 0;
|
|
203
|
+
const result = [];
|
|
204
|
+
// Always keep first message (usually contains task context)
|
|
205
|
+
result.push(history[0]);
|
|
206
|
+
totalTokens += estimateTokenCount(history[0].content);
|
|
207
|
+
// Add messages from the end (most recent) until budget is exhausted
|
|
208
|
+
const remaining = history.slice(1);
|
|
209
|
+
const reversed = [...remaining].reverse();
|
|
210
|
+
const toAdd = [];
|
|
211
|
+
for (const msg of reversed) {
|
|
212
|
+
const msgTokens = estimateTokenCount(msg.content);
|
|
213
|
+
if (totalTokens + msgTokens > maxTokens)
|
|
214
|
+
break;
|
|
215
|
+
totalTokens += msgTokens;
|
|
216
|
+
toAdd.unshift(msg);
|
|
217
|
+
}
|
|
218
|
+
result.push(...toAdd);
|
|
219
|
+
return result;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Rough token count estimate (1 token ~= 4 chars for English text)
|
|
223
|
+
*/
|
|
224
|
+
function estimateTokenCount(text) {
|
|
225
|
+
return Math.ceil(text.length / 4);
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Get adaptation info for display purposes (e.g. in debug UI or session status)
|
|
229
|
+
*/
|
|
230
|
+
export function getAdaptationInfo(modelId) {
|
|
231
|
+
const level = classifyModelCapability(modelId);
|
|
232
|
+
const adaptation = ADAPTATIONS[level];
|
|
233
|
+
const descriptions = {
|
|
234
|
+
reasoning: 'Full capability - natural language, all tools, long context',
|
|
235
|
+
instruction: 'Instruction-following - step-by-step guidance, standard tools',
|
|
236
|
+
basic: 'Basic - explicit rules, essential tools only, short context',
|
|
237
|
+
};
|
|
238
|
+
return {
|
|
239
|
+
level,
|
|
240
|
+
description: descriptions[level],
|
|
241
|
+
maxTools: level === 'basic' ? '8-10' : level === 'instruction' ? '25-30' : 'all',
|
|
242
|
+
historyBudget: `~${adaptation.maxHistoryTokens} tokens`,
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
//# sourceMappingURL=prompt-adapter.js.map
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DingTalk Provider - webhook-based robot integration.
|
|
3
|
+
* Outbound: POST text to robot webhook URL (optional HMAC-SHA256 signing).
|
|
4
|
+
* Inbound: parse callback payloads for direct and group messages.
|
|
5
|
+
* API base: https://oapi.dingtalk.com
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
import type { ChatProvider, DingTalkAccountConfig } from '../types.js';
|
|
9
|
+
declare const DingTalkMsgType: {
|
|
10
|
+
readonly TEXT: "text";
|
|
11
|
+
readonly IMAGE: "image";
|
|
12
|
+
readonly AUDIO: "audio";
|
|
13
|
+
readonly VIDEO: "video";
|
|
14
|
+
readonly FILE: "file";
|
|
15
|
+
};
|
|
16
|
+
type DingTalkMsgTypeValue = (typeof DingTalkMsgType)[keyof typeof DingTalkMsgType];
|
|
17
|
+
interface DingTalkInboundPayload {
|
|
18
|
+
msgtype: DingTalkMsgTypeValue;
|
|
19
|
+
text?: {
|
|
20
|
+
content: string;
|
|
21
|
+
};
|
|
22
|
+
msgId?: string;
|
|
23
|
+
senderNick: string;
|
|
24
|
+
senderId: string;
|
|
25
|
+
conversationType: '1' | '2';
|
|
26
|
+
conversationId: string;
|
|
27
|
+
conversationTitle?: string;
|
|
28
|
+
}
|
|
29
|
+
export declare const DingTalkAccountConfigSchema: z.ZodObject<{
|
|
30
|
+
id: z.ZodString;
|
|
31
|
+
name: z.ZodOptional<z.ZodString>;
|
|
32
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
33
|
+
isDefault: z.ZodOptional<z.ZodBoolean>;
|
|
34
|
+
provider: z.ZodLiteral<"dingtalk">;
|
|
35
|
+
appKey: z.ZodOptional<z.ZodString>;
|
|
36
|
+
appSecret: z.ZodOptional<z.ZodString>;
|
|
37
|
+
robotCode: z.ZodOptional<z.ZodString>;
|
|
38
|
+
webhookUrl: z.ZodOptional<z.ZodString>;
|
|
39
|
+
webhookSecret: z.ZodOptional<z.ZodString>;
|
|
40
|
+
}, "strip", z.ZodTypeAny, {
|
|
41
|
+
id: string;
|
|
42
|
+
provider: "dingtalk";
|
|
43
|
+
enabled: boolean;
|
|
44
|
+
name?: string | undefined;
|
|
45
|
+
isDefault?: boolean | undefined;
|
|
46
|
+
webhookSecret?: string | undefined;
|
|
47
|
+
webhookUrl?: string | undefined;
|
|
48
|
+
appSecret?: string | undefined;
|
|
49
|
+
appKey?: string | undefined;
|
|
50
|
+
robotCode?: string | undefined;
|
|
51
|
+
}, {
|
|
52
|
+
id: string;
|
|
53
|
+
provider: "dingtalk";
|
|
54
|
+
name?: string | undefined;
|
|
55
|
+
isDefault?: boolean | undefined;
|
|
56
|
+
enabled?: boolean | undefined;
|
|
57
|
+
webhookSecret?: string | undefined;
|
|
58
|
+
webhookUrl?: string | undefined;
|
|
59
|
+
appSecret?: string | undefined;
|
|
60
|
+
appKey?: string | undefined;
|
|
61
|
+
robotCode?: string | undefined;
|
|
62
|
+
}>;
|
|
63
|
+
type DingTalkConfig = z.infer<typeof DingTalkAccountConfigSchema>;
|
|
64
|
+
export declare function setDingTalkConfig(config: DingTalkConfig): void;
|
|
65
|
+
export declare function clearDingTalkConfig(): void;
|
|
66
|
+
export declare const dingtalkProvider: ChatProvider<DingTalkAccountConfig>;
|
|
67
|
+
export type { DingTalkConfig, DingTalkInboundPayload };
|
|
68
|
+
export { DingTalkMsgType };
|
|
69
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DingTalk Provider - webhook-based robot integration.
|
|
3
|
+
* Outbound: POST text to robot webhook URL (optional HMAC-SHA256 signing).
|
|
4
|
+
* Inbound: parse callback payloads for direct and group messages.
|
|
5
|
+
* API base: https://oapi.dingtalk.com
|
|
6
|
+
*/
|
|
7
|
+
import { createHmac } from 'node:crypto';
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
import { logger } from '../../../utils/logger.js';
|
|
10
|
+
// --- types ---
|
|
11
|
+
const DingTalkMsgType = {
|
|
12
|
+
TEXT: 'text',
|
|
13
|
+
IMAGE: 'image',
|
|
14
|
+
AUDIO: 'audio',
|
|
15
|
+
VIDEO: 'video',
|
|
16
|
+
FILE: 'file',
|
|
17
|
+
};
|
|
18
|
+
// --- config ---
|
|
19
|
+
export const DingTalkAccountConfigSchema = z.object({
|
|
20
|
+
id: z.string(),
|
|
21
|
+
name: z.string().optional(),
|
|
22
|
+
enabled: z.boolean().default(true),
|
|
23
|
+
isDefault: z.boolean().optional(),
|
|
24
|
+
provider: z.literal('dingtalk'),
|
|
25
|
+
appKey: z.string().optional(),
|
|
26
|
+
appSecret: z.string().optional(),
|
|
27
|
+
robotCode: z.string().optional(),
|
|
28
|
+
webhookUrl: z.string().url().optional(),
|
|
29
|
+
webhookSecret: z.string().optional(),
|
|
30
|
+
});
|
|
31
|
+
// --- metadata ---
|
|
32
|
+
const meta = {
|
|
33
|
+
id: 'dingtalk',
|
|
34
|
+
name: 'DingTalk',
|
|
35
|
+
description: 'DingTalk robot webhook integration for direct and group chat',
|
|
36
|
+
icon: 'DingTalk icon',
|
|
37
|
+
docsUrl: 'https://open.dingtalk.com/document/robots/custom-robot-access',
|
|
38
|
+
order: 13,
|
|
39
|
+
color: '#0089FF',
|
|
40
|
+
};
|
|
41
|
+
const capabilities = {
|
|
42
|
+
chatTypes: ['direct', 'group'],
|
|
43
|
+
send: true,
|
|
44
|
+
receive: true,
|
|
45
|
+
slashCommands: false,
|
|
46
|
+
interactiveComponents: false,
|
|
47
|
+
reactions: false,
|
|
48
|
+
edit: false,
|
|
49
|
+
delete: false,
|
|
50
|
+
threads: false,
|
|
51
|
+
media: true,
|
|
52
|
+
richBlocks: false,
|
|
53
|
+
oauth: false,
|
|
54
|
+
webhooks: true,
|
|
55
|
+
realtime: false,
|
|
56
|
+
};
|
|
57
|
+
// --- state and helpers ---
|
|
58
|
+
let currentConfig = null;
|
|
59
|
+
function buildSignedUrl(webhookUrl, secret) {
|
|
60
|
+
const timestamp = Date.now();
|
|
61
|
+
const sign = encodeURIComponent(createHmac('sha256', secret).update(`${timestamp}\n${secret}`, 'utf8').digest('base64'));
|
|
62
|
+
return `${webhookUrl}×tamp=${timestamp}&sign=${sign}`;
|
|
63
|
+
}
|
|
64
|
+
async function postWebhook(webhookUrl, body, secret) {
|
|
65
|
+
const url = secret ? buildSignedUrl(webhookUrl, secret) : webhookUrl;
|
|
66
|
+
try {
|
|
67
|
+
const response = await fetch(url, {
|
|
68
|
+
method: 'POST',
|
|
69
|
+
headers: { 'Content-Type': 'application/json' },
|
|
70
|
+
body: JSON.stringify(body),
|
|
71
|
+
});
|
|
72
|
+
const data = await response.json();
|
|
73
|
+
if (data.errcode !== 0) {
|
|
74
|
+
logger.warn('[DingTalk] Webhook error:', { errcode: data.errcode, errmsg: data.errmsg });
|
|
75
|
+
return { ok: false, error: `DingTalk error ${data.errcode}: ${data.errmsg}` };
|
|
76
|
+
}
|
|
77
|
+
return { ok: true };
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
logger.error('[DingTalk] Webhook call failed:', error instanceof Error ? error : undefined);
|
|
81
|
+
return { ok: false, error: error instanceof Error ? error.message : 'Unknown error' };
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// --- auth adapter ---
|
|
85
|
+
const authAdapter = {
|
|
86
|
+
getAuthUrl(_state, _scopes) {
|
|
87
|
+
throw new Error('DingTalk does not use OAuth. Configure a custom robot and supply webhookUrl in config.');
|
|
88
|
+
},
|
|
89
|
+
async exchangeCode(_code) {
|
|
90
|
+
throw new Error('DingTalk webhook integration does not use OAuth authorization codes.');
|
|
91
|
+
},
|
|
92
|
+
verifyWebhook(signature, timestamp, _body) {
|
|
93
|
+
const secret = currentConfig?.webhookSecret ?? currentConfig?.appSecret;
|
|
94
|
+
if (!secret) {
|
|
95
|
+
logger.warn('[DingTalk] verifyWebhook: no secret configured, skipping verification');
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
const ts = parseInt(timestamp, 10);
|
|
99
|
+
if (isNaN(ts) || Math.abs(Date.now() - ts) > 3_600_000) {
|
|
100
|
+
logger.warn('[DingTalk] verifyWebhook: timestamp out of allowed range');
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
try {
|
|
104
|
+
const expected = createHmac('sha256', secret)
|
|
105
|
+
.update(`${timestamp}\n${secret}`, 'utf8')
|
|
106
|
+
.digest('base64');
|
|
107
|
+
return signature === expected;
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
logger.error('[DingTalk] verifyWebhook failed:', error instanceof Error ? error : undefined);
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
// --- outbound adapter ---
|
|
116
|
+
const outboundAdapter = {
|
|
117
|
+
async send(message) {
|
|
118
|
+
const cfg = currentConfig;
|
|
119
|
+
if (!cfg?.webhookUrl) {
|
|
120
|
+
return { success: false, error: 'webhookUrl is required for DingTalk outbound messages' };
|
|
121
|
+
}
|
|
122
|
+
const result = await postWebhook(cfg.webhookUrl, { msgtype: 'text', text: { content: message.text ?? '' } }, cfg.webhookSecret);
|
|
123
|
+
return result.ok
|
|
124
|
+
? { success: true }
|
|
125
|
+
: { success: false, error: result.error ?? 'Failed to send message' };
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
// --- inbound adapter ---
|
|
129
|
+
const MEDIA_TYPES = [DingTalkMsgType.IMAGE, DingTalkMsgType.AUDIO, DingTalkMsgType.VIDEO, DingTalkMsgType.FILE];
|
|
130
|
+
const MEDIA_TYPE_MAP = {
|
|
131
|
+
image: 'image', video: 'video', audio: 'audio', file: 'file',
|
|
132
|
+
};
|
|
133
|
+
const inboundAdapter = {
|
|
134
|
+
parseMessage(payload) {
|
|
135
|
+
if (payload === null || typeof payload !== 'object')
|
|
136
|
+
return null;
|
|
137
|
+
const raw = payload;
|
|
138
|
+
if (!raw.msgtype || !raw.conversationId) {
|
|
139
|
+
logger.debug('[DingTalk] parseMessage: missing required fields, skipping');
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
if (![DingTalkMsgType.TEXT, ...MEDIA_TYPES].includes(raw.msgtype)) {
|
|
143
|
+
logger.debug(`[DingTalk] parseMessage: unsupported type '${raw.msgtype}', skipping`);
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
const attachments = [];
|
|
147
|
+
if (MEDIA_TYPES.includes(raw.msgtype)) {
|
|
148
|
+
const attachType = MEDIA_TYPE_MAP[raw.msgtype];
|
|
149
|
+
if (attachType)
|
|
150
|
+
attachments.push({ type: attachType });
|
|
151
|
+
}
|
|
152
|
+
return {
|
|
153
|
+
id: raw.msgId ?? `dt-${Date.now()}`,
|
|
154
|
+
provider: 'dingtalk',
|
|
155
|
+
accountId: currentConfig?.id ?? 'default',
|
|
156
|
+
senderId: raw.senderId,
|
|
157
|
+
senderName: raw.senderNick,
|
|
158
|
+
senderUsername: raw.senderId,
|
|
159
|
+
chatType: raw.conversationType === '1' ? 'direct' : 'group',
|
|
160
|
+
chatId: raw.conversationId,
|
|
161
|
+
chatName: raw.conversationTitle,
|
|
162
|
+
threadId: undefined,
|
|
163
|
+
replyToId: undefined,
|
|
164
|
+
text: raw.text?.content ?? '',
|
|
165
|
+
rawContent: raw,
|
|
166
|
+
timestamp: new Date(),
|
|
167
|
+
attachments: attachments.length > 0 ? attachments : undefined,
|
|
168
|
+
};
|
|
169
|
+
},
|
|
170
|
+
parseCommand(_payload) { return null; },
|
|
171
|
+
parseAction(_payload) { return null; },
|
|
172
|
+
buildCommandResponse(response) {
|
|
173
|
+
return { msgtype: DingTalkMsgType.TEXT, text: { content: response.text ?? '' } };
|
|
174
|
+
},
|
|
175
|
+
buildActionResponse(response) {
|
|
176
|
+
return { msgtype: DingTalkMsgType.TEXT, text: { content: response.text ?? '' } };
|
|
177
|
+
},
|
|
178
|
+
};
|
|
179
|
+
// --- status adapter ---
|
|
180
|
+
const statusAdapter = {
|
|
181
|
+
isConfigured(config) {
|
|
182
|
+
return !!config.webhookUrl;
|
|
183
|
+
},
|
|
184
|
+
async checkHealth(config) {
|
|
185
|
+
if (!config.webhookUrl) {
|
|
186
|
+
return { connected: false, error: 'webhookUrl is required' };
|
|
187
|
+
}
|
|
188
|
+
const start = Date.now();
|
|
189
|
+
try {
|
|
190
|
+
const response = await fetch('https://oapi.dingtalk.com/', { method: 'HEAD' });
|
|
191
|
+
return {
|
|
192
|
+
connected: response.status < 500,
|
|
193
|
+
latencyMs: Date.now() - start,
|
|
194
|
+
details: {
|
|
195
|
+
webhookConfigured: true,
|
|
196
|
+
signingEnabled: !!config.webhookSecret,
|
|
197
|
+
appKeyConfigured: !!config.appKey,
|
|
198
|
+
robotCodeConfigured: !!config.robotCode,
|
|
199
|
+
},
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
catch (error) {
|
|
203
|
+
return {
|
|
204
|
+
connected: false,
|
|
205
|
+
latencyMs: Date.now() - start,
|
|
206
|
+
error: error instanceof Error ? error.message : 'Network error reaching DingTalk API',
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
},
|
|
210
|
+
};
|
|
211
|
+
// --- config helpers and provider export ---
|
|
212
|
+
export function setDingTalkConfig(config) { currentConfig = config; }
|
|
213
|
+
export function clearDingTalkConfig() { currentConfig = null; }
|
|
214
|
+
export const dingtalkProvider = {
|
|
215
|
+
meta,
|
|
216
|
+
capabilities,
|
|
217
|
+
defaultConfig: { provider: 'dingtalk', enabled: true },
|
|
218
|
+
configSchema: DingTalkAccountConfigSchema,
|
|
219
|
+
auth: authAdapter,
|
|
220
|
+
outbound: outboundAdapter,
|
|
221
|
+
inbound: inboundAdapter,
|
|
222
|
+
status: statusAdapter,
|
|
223
|
+
};
|
|
224
|
+
export { DingTalkMsgType };
|
|
225
|
+
//# sourceMappingURL=index.js.map
|