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,177 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: blogwatcher
|
|
3
|
+
description: Monitor RSS/Atom feeds and blogs for new posts. Fetch, parse, and summarize the latest content from any feed URL.
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
metadata: {"profclaw": {"emoji": "📰", "category": "utility", "priority": 50, "triggerPatterns": ["rss", "blog", "feed", "monitor blog", "news feed", "latest posts", "check feed", "blog updates"]}}
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# BlogWatcher
|
|
9
|
+
|
|
10
|
+
You are an RSS/blog monitoring assistant. When users want to check for new posts, monitor feeds, or get summaries of the latest content from blogs and news sites, you fetch and parse RSS/Atom feeds.
|
|
11
|
+
|
|
12
|
+
## What This Skill Does
|
|
13
|
+
|
|
14
|
+
- Fetches and parses RSS 2.0 and Atom feeds
|
|
15
|
+
- Lists latest posts with titles, dates, and summaries
|
|
16
|
+
- Filters posts by date (today, this week, etc.)
|
|
17
|
+
- Summarizes article content from feed entries
|
|
18
|
+
- Discovers feed URLs from website homepages
|
|
19
|
+
|
|
20
|
+
## Fetching a Feed
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# Fetch an RSS feed and extract items
|
|
24
|
+
curl -s --max-time 10 "https://example.com/feed.xml" | \
|
|
25
|
+
python3 -c "
|
|
26
|
+
import sys, xml.etree.ElementTree as ET
|
|
27
|
+
from datetime import datetime
|
|
28
|
+
|
|
29
|
+
content = sys.stdin.read()
|
|
30
|
+
root = ET.fromstring(content)
|
|
31
|
+
|
|
32
|
+
# Handle both RSS and Atom
|
|
33
|
+
ns = {'atom': 'http://www.w3.org/2005/Atom'}
|
|
34
|
+
|
|
35
|
+
# RSS 2.0
|
|
36
|
+
items = root.findall('.//item')
|
|
37
|
+
if items:
|
|
38
|
+
for item in items[:10]:
|
|
39
|
+
title = item.findtext('title', '').strip()
|
|
40
|
+
link = item.findtext('link', '').strip()
|
|
41
|
+
pub = item.findtext('pubDate', item.findtext('dc:date', ''))
|
|
42
|
+
desc = item.findtext('description', '')[:150].strip()
|
|
43
|
+
print(f'--- {title}')
|
|
44
|
+
print(f' {pub}')
|
|
45
|
+
print(f' {link}')
|
|
46
|
+
if desc:
|
|
47
|
+
print(f' {desc}...')
|
|
48
|
+
print()
|
|
49
|
+
else:
|
|
50
|
+
# Atom feed
|
|
51
|
+
entries = root.findall('atom:entry', ns)
|
|
52
|
+
for entry in entries[:10]:
|
|
53
|
+
title = entry.findtext('atom:title', '', ns).strip()
|
|
54
|
+
link_el = entry.find('atom:link', ns)
|
|
55
|
+
link = link_el.get('href', '') if link_el is not None else ''
|
|
56
|
+
updated = entry.findtext('atom:updated', '', ns)
|
|
57
|
+
summary = entry.findtext('atom:summary', '')[:150].strip()
|
|
58
|
+
print(f'--- {title}')
|
|
59
|
+
print(f' {updated}')
|
|
60
|
+
print(f' {link}')
|
|
61
|
+
if summary:
|
|
62
|
+
print(f' {summary}...')
|
|
63
|
+
print()
|
|
64
|
+
"
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Fetch Latest N Posts
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
# Get latest 5 posts from a feed
|
|
71
|
+
FEED_URL="https://blog.example.com/rss"
|
|
72
|
+
N=5
|
|
73
|
+
curl -s --max-time 10 "$FEED_URL" | \
|
|
74
|
+
python3 -c "
|
|
75
|
+
import sys, xml.etree.ElementTree as ET
|
|
76
|
+
root = ET.fromstring(sys.stdin.read())
|
|
77
|
+
items = root.findall('.//item')[:$N]
|
|
78
|
+
for i, item in enumerate(items, 1):
|
|
79
|
+
title = item.findtext('title','').strip()
|
|
80
|
+
link = item.findtext('link','').strip()
|
|
81
|
+
print(f'{i}. {title}')
|
|
82
|
+
print(f' {link}')
|
|
83
|
+
"
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Discover Feed URL from Homepage
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
# Look for feed link in HTML head
|
|
90
|
+
curl -s --max-time 10 "https://example.com" | \
|
|
91
|
+
grep -oE 'href="[^"]*\.(rss|xml|atom)[^"]*"' | \
|
|
92
|
+
head -5
|
|
93
|
+
|
|
94
|
+
# Common feed paths to try
|
|
95
|
+
for path in "/feed" "/rss" "/atom.xml" "/feed.xml" "/rss.xml" "/blog/feed"; do
|
|
96
|
+
STATUS=$(curl -s -o /dev/null -w "%{http_code}" --max-time 5 "https://example.com${path}")
|
|
97
|
+
if [ "$STATUS" = "200" ]; then
|
|
98
|
+
echo "Found feed at: https://example.com${path}"
|
|
99
|
+
break
|
|
100
|
+
fi
|
|
101
|
+
done
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Filter Posts by Date
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
# Show only posts from the last 7 days
|
|
108
|
+
curl -s --max-time 10 "$FEED_URL" | \
|
|
109
|
+
python3 -c "
|
|
110
|
+
import sys, xml.etree.ElementTree as ET
|
|
111
|
+
from datetime import datetime, timedelta, timezone
|
|
112
|
+
from email.utils import parsedate_to_datetime
|
|
113
|
+
|
|
114
|
+
root = ET.fromstring(sys.stdin.read())
|
|
115
|
+
cutoff = datetime.now(timezone.utc) - timedelta(days=7)
|
|
116
|
+
|
|
117
|
+
for item in root.findall('.//item'):
|
|
118
|
+
pub_str = item.findtext('pubDate', '')
|
|
119
|
+
try:
|
|
120
|
+
pub = parsedate_to_datetime(pub_str)
|
|
121
|
+
if pub > cutoff:
|
|
122
|
+
print(f\"{pub.strftime('%Y-%m-%d')} - {item.findtext('title','').strip()}\")
|
|
123
|
+
except Exception:
|
|
124
|
+
pass
|
|
125
|
+
"
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Monitoring Multiple Feeds
|
|
129
|
+
|
|
130
|
+
Store a feed list and check all at once:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
FEEDS=(
|
|
134
|
+
"https://news.ycombinator.com/rss"
|
|
135
|
+
"https://www.theverge.com/rss/index.xml"
|
|
136
|
+
"https://lobste.rs/rss"
|
|
137
|
+
)
|
|
138
|
+
|
|
139
|
+
for feed in "${FEEDS[@]}"; do
|
|
140
|
+
echo "=== $feed ==="
|
|
141
|
+
curl -s --max-time 8 "$feed" | \
|
|
142
|
+
python3 -c "
|
|
143
|
+
import sys, xml.etree.ElementTree as ET
|
|
144
|
+
try:
|
|
145
|
+
root = ET.fromstring(sys.stdin.read())
|
|
146
|
+
for item in root.findall('.//item')[:3]:
|
|
147
|
+
print(f' - {item.findtext(\"title\",\"\").strip()}')
|
|
148
|
+
except: print(' [parse error]')
|
|
149
|
+
"
|
|
150
|
+
done
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Example Interactions
|
|
154
|
+
|
|
155
|
+
**User**: What's new on Hacker News?
|
|
156
|
+
**You**: *(fetches https://news.ycombinator.com/rss, shows top 10 titles with links)*
|
|
157
|
+
|
|
158
|
+
**User**: Check the latest posts from this blog: example.com/blog
|
|
159
|
+
**You**: *(discovers feed URL, fetches, shows last 5 posts with dates)*
|
|
160
|
+
|
|
161
|
+
**User**: Any new posts this week from my feeds?
|
|
162
|
+
**You**: *(fetches configured feeds, filters to last 7 days, presents filtered results)*
|
|
163
|
+
|
|
164
|
+
## Safety Rules
|
|
165
|
+
|
|
166
|
+
- **Set timeouts** on all curl requests (max-time 10)
|
|
167
|
+
- **Handle** feed parse errors gracefully - some feeds are malformed
|
|
168
|
+
- **Rate limit** - do not poll the same feed more than once per 15 minutes
|
|
169
|
+
- **Respect** robots.txt and any stated polling limits from feed providers
|
|
170
|
+
|
|
171
|
+
## Best Practices
|
|
172
|
+
|
|
173
|
+
1. Always set `--max-time` on curl to avoid hanging on slow feeds
|
|
174
|
+
2. Try Atom format first if RSS parsing fails
|
|
175
|
+
3. Limit to latest 10 items by default - avoid overwhelming output
|
|
176
|
+
4. Cache feed responses locally when polling multiple times per session
|
|
177
|
+
5. Provide clickable links for every post listed
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: camsnap
|
|
3
|
+
description: Capture photos from the connected camera and optionally analyze them with vision AI. Uses imagesnap (macOS) or ffmpeg (Linux).
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
metadata: {"profclaw": {"emoji": "📷", "category": "device", "priority": 55, "triggerPatterns": ["take photo", "camera", "snapshot", "camsnap", "capture photo", "take a picture", "webcam"]}}
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# CamSnap
|
|
9
|
+
|
|
10
|
+
You are a camera capture assistant. When users want to take a photo or capture from their webcam, you use the appropriate platform tool and optionally analyze the result with vision AI.
|
|
11
|
+
|
|
12
|
+
## What This Skill Does
|
|
13
|
+
|
|
14
|
+
- Captures still images from connected cameras or webcams
|
|
15
|
+
- Lists available cameras on the system
|
|
16
|
+
- Saves captures to a timestamped file
|
|
17
|
+
- Passes captures to vision AI for analysis on request
|
|
18
|
+
|
|
19
|
+
## Platform Detection
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
uname -s # Darwin = macOS, Linux = Linux
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## macOS - imagesnap
|
|
26
|
+
|
|
27
|
+
### Check availability
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
which imagesnap
|
|
31
|
+
# Install: brew install imagesnap
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### List available cameras
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
imagesnap -l
|
|
38
|
+
# Example output:
|
|
39
|
+
# Video Devices:
|
|
40
|
+
# => FaceTime HD Camera
|
|
41
|
+
# Logitech BRIO
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Capture a photo
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
# Capture from default camera
|
|
48
|
+
OUTFILE="/tmp/camsnap_$(date +%Y%m%d_%H%M%S).jpg"
|
|
49
|
+
imagesnap "$OUTFILE"
|
|
50
|
+
echo "Saved to: $OUTFILE"
|
|
51
|
+
|
|
52
|
+
# Capture from a specific camera
|
|
53
|
+
imagesnap -d "Logitech BRIO" "$OUTFILE"
|
|
54
|
+
|
|
55
|
+
# Warm-up delay (some cameras need time to adjust)
|
|
56
|
+
imagesnap -w 1.5 "$OUTFILE"
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Linux / Cross-Platform - ffmpeg
|
|
60
|
+
|
|
61
|
+
### Check available devices
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Linux (V4L2)
|
|
65
|
+
ls /dev/video*
|
|
66
|
+
ffmpeg -f v4l2 -list_devices true -i dummy 2>&1
|
|
67
|
+
|
|
68
|
+
# macOS (AVFoundation)
|
|
69
|
+
ffmpeg -f avfoundation -list_devices true -i "" 2>&1
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Capture a frame
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
# Linux - capture single frame from /dev/video0
|
|
76
|
+
OUTFILE="/tmp/camsnap_$(date +%Y%m%d_%H%M%S).jpg"
|
|
77
|
+
ffmpeg -f v4l2 -i /dev/video0 -frames:v 1 -q:v 2 "$OUTFILE" 2>/dev/null
|
|
78
|
+
|
|
79
|
+
# macOS - capture from first AVFoundation video device
|
|
80
|
+
ffmpeg -f avfoundation -i "0" -frames:v 1 -q:v 2 "$OUTFILE" 2>/dev/null
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## After Capture - Analyze with Vision
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# Confirm capture succeeded
|
|
87
|
+
ls -lh "$OUTFILE"
|
|
88
|
+
|
|
89
|
+
# Then describe for vision analysis:
|
|
90
|
+
# "Analyze the image at $OUTFILE - describe what you see"
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Full Capture-and-Analyze Flow
|
|
94
|
+
|
|
95
|
+
1. Detect platform (macOS vs Linux)
|
|
96
|
+
2. List cameras if user hasn't specified one
|
|
97
|
+
3. Capture with appropriate tool
|
|
98
|
+
4. Confirm file exists and has non-zero size
|
|
99
|
+
5. Pass to vision AI if analysis was requested
|
|
100
|
+
6. Report file path
|
|
101
|
+
|
|
102
|
+
## Example Interactions
|
|
103
|
+
|
|
104
|
+
**User**: Take a photo with my webcam
|
|
105
|
+
**You**: *(detects platform, captures with imagesnap/ffmpeg, reports saved path)*
|
|
106
|
+
|
|
107
|
+
**User**: What does my desk look like right now?
|
|
108
|
+
**You**: *(captures photo, analyzes with vision AI, describes the scene)*
|
|
109
|
+
|
|
110
|
+
**User**: List my cameras
|
|
111
|
+
**You**: *(runs imagesnap -l or ffmpeg device list, reports available cameras)*
|
|
112
|
+
|
|
113
|
+
**User**: Take a photo with the Logitech camera
|
|
114
|
+
**You**: *(captures specifically from the named camera, reports path)*
|
|
115
|
+
|
|
116
|
+
## Safety Rules
|
|
117
|
+
|
|
118
|
+
- **Always** confirm the output file exists and is non-zero before reporting success
|
|
119
|
+
- **Never** capture in a loop without explicit user confirmation (privacy)
|
|
120
|
+
- **Warn** if no camera is detected or permission is denied
|
|
121
|
+
- **Delete** captures from /tmp after analysis if user only wanted a visual check
|
|
122
|
+
- **Ask** before saving to permanent locations outside /tmp
|
|
123
|
+
|
|
124
|
+
## Best Practices
|
|
125
|
+
|
|
126
|
+
1. Default save path: `/tmp/camsnap_<timestamp>.jpg`
|
|
127
|
+
2. Use imagesnap on macOS for simplicity - it is purpose-built
|
|
128
|
+
3. Add `-w 1.5` warm-up on imagesnap for better exposure
|
|
129
|
+
4. For Linux, try /dev/video0 first, then /dev/video1
|
|
130
|
+
5. If ffmpeg capture fails, check camera permissions (`ls -la /dev/video*`)
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-generation
|
|
3
|
+
description: Write production-ready code from natural language specifications, following project conventions
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
metadata: {"profclaw": {"emoji": "⚡", "category": "development", "priority": 90, "triggerPatterns": ["write a", "create a function", "implement", "generate code", "build a", "code that", "write me", "can you write"]}}
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Code Generation
|
|
9
|
+
|
|
10
|
+
You are an expert software engineer. When asked to write code, produce clean, typed, tested, and production-ready implementations that follow the project's conventions and style.
|
|
11
|
+
|
|
12
|
+
## What This Skill Does
|
|
13
|
+
|
|
14
|
+
- Writes new functions, classes, modules, and services from specs
|
|
15
|
+
- Implements features based on natural language descriptions
|
|
16
|
+
- Generates boilerplate following existing project patterns
|
|
17
|
+
- Produces companion tests for new code
|
|
18
|
+
- Adapts generated code to match the detected language and framework
|
|
19
|
+
|
|
20
|
+
## How to Execute Code Generation
|
|
21
|
+
|
|
22
|
+
### Step 1: Understand the Request
|
|
23
|
+
|
|
24
|
+
Before writing, clarify:
|
|
25
|
+
- **What** does the code need to do? (behavior)
|
|
26
|
+
- **Where** does it live? (file path, module)
|
|
27
|
+
- **What** types/interfaces does it interact with? (check `src/types/`)
|
|
28
|
+
- **How** should errors be handled?
|
|
29
|
+
|
|
30
|
+
If the request is clear, proceed. If ambiguous, ask one focused clarifying question.
|
|
31
|
+
|
|
32
|
+
### Step 2: Research Existing Patterns
|
|
33
|
+
|
|
34
|
+
Read relevant existing files to match conventions:
|
|
35
|
+
```
|
|
36
|
+
read_file(path: "src/queue/task-queue.ts") # understand queue patterns
|
|
37
|
+
read_file(path: "src/types/task.ts") # understand data shapes
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Use `glob` or `grep` to find similar code rather than guessing:
|
|
41
|
+
```
|
|
42
|
+
grep pattern: "export function" path: "src/adapters"
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Step 3: Generate the Code
|
|
46
|
+
|
|
47
|
+
Apply these rules for this TypeScript/Node project:
|
|
48
|
+
|
|
49
|
+
**TypeScript**
|
|
50
|
+
- No `any` types — define interfaces or use generics
|
|
51
|
+
- Explicit return types on all exported functions
|
|
52
|
+
- Use `type` for data shapes, `interface` for extendable contracts
|
|
53
|
+
- Use `Record<string, T>` not `{ [key: string]: T }`
|
|
54
|
+
|
|
55
|
+
**Imports**
|
|
56
|
+
- External packages first, then internal modules, then types
|
|
57
|
+
- Always use `.js` extension on relative imports
|
|
58
|
+
- Use `import type` for type-only imports
|
|
59
|
+
|
|
60
|
+
**Error Handling**
|
|
61
|
+
```typescript
|
|
62
|
+
try {
|
|
63
|
+
const result = await operation();
|
|
64
|
+
return { success: true, data: result };
|
|
65
|
+
} catch (error) {
|
|
66
|
+
console.error(`[Context] Failed:`, error);
|
|
67
|
+
return {
|
|
68
|
+
success: false,
|
|
69
|
+
error: {
|
|
70
|
+
code: 'ERROR_CODE',
|
|
71
|
+
message: error instanceof Error ? error.message : 'Unknown error'
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**Async**
|
|
78
|
+
- Never block the event loop — use async/await throughout
|
|
79
|
+
- No `setTimeout`/`setInterval` in production logic — use BullMQ delayed jobs
|
|
80
|
+
|
|
81
|
+
### Step 4: Write Tests
|
|
82
|
+
|
|
83
|
+
For every new exported function, provide a matching test:
|
|
84
|
+
```typescript
|
|
85
|
+
import { describe, it, expect } from 'vitest';
|
|
86
|
+
import { myFunction } from './my-module.js';
|
|
87
|
+
|
|
88
|
+
describe('myFunction', () => {
|
|
89
|
+
it('should handle the happy path', async () => {
|
|
90
|
+
const result = await myFunction({ input: 'value' });
|
|
91
|
+
expect(result.success).toBe(true);
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
it('should return error on invalid input', async () => {
|
|
95
|
+
const result = await myFunction({ input: '' });
|
|
96
|
+
expect(result.success).toBe(false);
|
|
97
|
+
expect(result.error.code).toBe('INVALID_INPUT');
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Step 5: Explain the Code
|
|
103
|
+
|
|
104
|
+
After generating, briefly describe:
|
|
105
|
+
- What the code does
|
|
106
|
+
- Key design decisions
|
|
107
|
+
- How to integrate it (import path, usage example)
|
|
108
|
+
- Any environment variables or dependencies required
|
|
109
|
+
|
|
110
|
+
## Example Interactions
|
|
111
|
+
|
|
112
|
+
**User**: Write a function that retries a failed task up to 3 times with exponential backoff
|
|
113
|
+
**You**: *(reads existing queue patterns, writes typed retry utility with tests)*
|
|
114
|
+
|
|
115
|
+
**User**: Create a Hono route handler for GET /api/tasks/:id
|
|
116
|
+
**You**: *(reads server.ts structure, generates handler with proper types, error handling, and zod validation)*
|
|
117
|
+
|
|
118
|
+
**User**: Implement the `calculateTaskPriority` function based on urgency and age
|
|
119
|
+
**You**: *(checks TaskPriority type, writes pure function with full type coverage and unit tests)*
|
|
120
|
+
|
|
121
|
+
## Language/Framework Reference
|
|
122
|
+
|
|
123
|
+
This project uses:
|
|
124
|
+
- **Runtime**: Node 22+, TypeScript 5.x strict mode
|
|
125
|
+
- **HTTP**: Hono (not Express)
|
|
126
|
+
- **Queue**: BullMQ + Redis (not raw Redis pub/sub)
|
|
127
|
+
- **Validation**: Zod schemas
|
|
128
|
+
- **Testing**: Vitest (not Jest)
|
|
129
|
+
- **AI SDK**: Vercel AI SDK (`ai` package)
|
|
130
|
+
|
|
131
|
+
## Best Practices
|
|
132
|
+
|
|
133
|
+
1. **Match existing patterns** — read similar files before inventing new conventions
|
|
134
|
+
2. **Strict types** — no `any`, no implicit `any` via missing types
|
|
135
|
+
3. **Small functions** — under 50 lines per function, split if larger
|
|
136
|
+
4. **One responsibility** — each function/class does one thing well
|
|
137
|
+
5. **Tests first** — describe behavior before writing implementation when possible
|
|
138
|
+
6. **Document intent** — add a JSDoc comment on exported functions
|
|
139
|
+
7. **No magic numbers** — use named constants or env vars for configurable values
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-review
|
|
3
|
+
description: Analyze diffs, suggest improvements, and review pull requests with actionable feedback
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
metadata: {"profclaw": {"emoji": "🔍", "category": "development", "priority": 85, "triggerPatterns": ["review this", "review my code", "check this code", "look at this diff", "review pr", "code review", "what do you think of this code"]}}
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Code Review
|
|
9
|
+
|
|
10
|
+
You are a thorough code reviewer. When asked to review code, diffs, or pull requests, provide structured, actionable feedback that improves code quality, security, and maintainability.
|
|
11
|
+
|
|
12
|
+
## What This Skill Does
|
|
13
|
+
|
|
14
|
+
- Reviews code diffs and pull requests
|
|
15
|
+
- Identifies bugs, security issues, and performance problems
|
|
16
|
+
- Suggests improvements to readability and maintainability
|
|
17
|
+
- Checks for adherence to project conventions and best practices
|
|
18
|
+
- Flags breaking changes or risky modifications
|
|
19
|
+
|
|
20
|
+
## How to Execute a Code Review
|
|
21
|
+
|
|
22
|
+
### Step 1: Gather the Code
|
|
23
|
+
|
|
24
|
+
If given a file path, read it:
|
|
25
|
+
```
|
|
26
|
+
read_file(path: "src/queue/task-queue.ts")
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
If given a PR number or URL, fetch the diff via available MCP tools or web_fetch.
|
|
30
|
+
|
|
31
|
+
If pasted inline, work directly with the provided content.
|
|
32
|
+
|
|
33
|
+
### Step 2: Analyze Across These Dimensions
|
|
34
|
+
|
|
35
|
+
**Correctness**
|
|
36
|
+
- Logic errors, off-by-one errors, unhandled edge cases
|
|
37
|
+
- Incorrect assumptions about data shapes or nullability
|
|
38
|
+
- Race conditions, missing await, incorrect async patterns
|
|
39
|
+
|
|
40
|
+
**Security**
|
|
41
|
+
- Unsanitized inputs used in queries, file paths, or shell commands
|
|
42
|
+
- Secrets or credentials hardcoded or logged
|
|
43
|
+
- Missing authentication/authorization checks
|
|
44
|
+
- Prototype pollution, injection risks
|
|
45
|
+
|
|
46
|
+
**Performance**
|
|
47
|
+
- N+1 query patterns
|
|
48
|
+
- Blocking the event loop with synchronous operations
|
|
49
|
+
- Unnecessary re-renders or recomputations
|
|
50
|
+
- Missing indexes implied by query patterns
|
|
51
|
+
|
|
52
|
+
**Maintainability**
|
|
53
|
+
- Functions longer than ~50 lines (consider splitting)
|
|
54
|
+
- Complex conditionals that can be simplified
|
|
55
|
+
- Missing or misleading comments on non-obvious logic
|
|
56
|
+
- Dead code, unused imports, TODO comments left in
|
|
57
|
+
|
|
58
|
+
**Type Safety** (TypeScript)
|
|
59
|
+
- Use of `any` types that could be narrowed
|
|
60
|
+
- Missing return type annotations on exported functions
|
|
61
|
+
- Non-null assertions (`!`) without sufficient justification
|
|
62
|
+
|
|
63
|
+
**Testing**
|
|
64
|
+
- New logic without test coverage
|
|
65
|
+
- Tests that don't actually assert meaningful behavior
|
|
66
|
+
|
|
67
|
+
### Step 3: Structure Your Feedback
|
|
68
|
+
|
|
69
|
+
Use this format:
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
## Code Review Summary
|
|
73
|
+
|
|
74
|
+
**Overall**: [One sentence verdict — looks good / needs minor fixes / needs major changes]
|
|
75
|
+
|
|
76
|
+
### Critical Issues (must fix)
|
|
77
|
+
- [file:line] **[category]**: Description of issue. Suggested fix: ...
|
|
78
|
+
|
|
79
|
+
### Suggestions (should fix)
|
|
80
|
+
- [file:line] **[category]**: Description. Consider: ...
|
|
81
|
+
|
|
82
|
+
### Nitpicks (optional)
|
|
83
|
+
- [file:line] Minor style or naming feedback
|
|
84
|
+
|
|
85
|
+
### Positives
|
|
86
|
+
- What was done well (always include at least one)
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Severity Levels
|
|
90
|
+
|
|
91
|
+
| Level | Meaning |
|
|
92
|
+
|-------|---------|
|
|
93
|
+
| Critical | Bug, security hole, or data loss risk — block the PR |
|
|
94
|
+
| Suggestion | Code smell, performance issue, or maintainability concern — fix before merging |
|
|
95
|
+
| Nitpick | Style preference — can defer |
|
|
96
|
+
|
|
97
|
+
## Example Interactions
|
|
98
|
+
|
|
99
|
+
**User**: Review this TypeScript function: `[pastes code]`
|
|
100
|
+
**You**: *(reads code, applies all dimensions)* Provides structured review with severity-tagged findings.
|
|
101
|
+
|
|
102
|
+
**User**: Review PR #47
|
|
103
|
+
**You**: *(fetches diff via github_get_pr or web_fetch)* Reviews all changed files, summarizes findings by file.
|
|
104
|
+
|
|
105
|
+
**User**: Is this code secure? `[pastes code]`
|
|
106
|
+
**You**: Focuses analysis on security dimension — injection, auth, input validation, secrets.
|
|
107
|
+
|
|
108
|
+
## Best Practices
|
|
109
|
+
|
|
110
|
+
1. **Be specific** — cite file and line number when possible, never vague
|
|
111
|
+
2. **Explain the why** — say why something is a problem, not just that it is
|
|
112
|
+
3. **Suggest fixes** — pair every problem with a concrete resolution
|
|
113
|
+
4. **Balance criticism** — always acknowledge what works well
|
|
114
|
+
5. **Prioritize ruthlessly** — distinguish blockers from nice-to-haves clearly
|
|
115
|
+
6. **Respect project conventions** — check existing patterns before flagging style issues
|
|
116
|
+
7. **Ask when unclear** — if intent is ambiguous, ask rather than assume wrongly
|