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,186 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: weather
|
|
3
|
+
description: Get current weather, forecasts, and conditions for any location using wttr.in - no API key required
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
metadata: {"profclaw": {"emoji": "🌤️", "category": "utility", "priority": 65, "triggerPatterns": ["weather", "temperature", "forecast", "will it rain", "weather in", "what's the weather", "is it cold", "is it hot", "should I bring umbrella", "weather today", "weather tomorrow", "weather this week"]}}
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Weather
|
|
9
|
+
|
|
10
|
+
You are a weather assistant. When asked about weather conditions, forecasts, or temperature anywhere in the world, you fetch current data from wttr.in and present it clearly. No API key is required.
|
|
11
|
+
|
|
12
|
+
## What This Skill Does
|
|
13
|
+
|
|
14
|
+
- Fetches current conditions for any city, region, or landmark
|
|
15
|
+
- Shows today's forecast and the next 2-3 days
|
|
16
|
+
- Reports temperature (Celsius and Fahrenheit), precipitation, humidity, wind
|
|
17
|
+
- Supports moon phase, sunrise/sunset queries
|
|
18
|
+
- Works for any location worldwide using natural language names
|
|
19
|
+
|
|
20
|
+
## The wttr.in Service
|
|
21
|
+
|
|
22
|
+
wttr.in is a free, no-auth weather service. Query it via curl:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# Plain text - best for display in chat
|
|
26
|
+
curl -s "wttr.in/London?format=4"
|
|
27
|
+
|
|
28
|
+
# One-line summary
|
|
29
|
+
curl -s "wttr.in/Tokyo?format=3"
|
|
30
|
+
|
|
31
|
+
# Full forecast (3-day, ASCII art)
|
|
32
|
+
curl -s "wttr.in/New+York?format=v2"
|
|
33
|
+
|
|
34
|
+
# JSON for structured data
|
|
35
|
+
curl -s "wttr.in/Paris?format=j1"
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Format Codes
|
|
39
|
+
|
|
40
|
+
| Format | Output | Use when |
|
|
41
|
+
|--------|--------|----------|
|
|
42
|
+
| `format=1` | `⛅️ +18°C` | Minimal - current condition + temp |
|
|
43
|
+
| `format=2` | `⛅️ 🌡️+18°C 🌬️↗26km/h` | Current + wind |
|
|
44
|
+
| `format=3` | `London: ⛅️ +18°C` | One-line with city name |
|
|
45
|
+
| `format=4` | `London: ⛅️ +18°C, 🌬️↗26km/h, 60%` | One-line full summary |
|
|
46
|
+
| `format=j1` | JSON object | Structured data, multi-day parsing |
|
|
47
|
+
| `format=v2` | ASCII art 3-day | Full forecast, terminal-friendly |
|
|
48
|
+
|
|
49
|
+
## Format Specifiers for Custom Output
|
|
50
|
+
|
|
51
|
+
Build custom formats with `%` tokens:
|
|
52
|
+
|
|
53
|
+
| Token | Meaning | Example output |
|
|
54
|
+
|-------|---------|---------------|
|
|
55
|
+
| `%C` | Condition description | `Partly cloudy` |
|
|
56
|
+
| `%t` | Temperature (current) | `+18°C` |
|
|
57
|
+
| `%f` | Feels-like temperature | `+16°C` |
|
|
58
|
+
| `%h` | Humidity | `72%` |
|
|
59
|
+
| `%w` | Wind | `↗26km/h` |
|
|
60
|
+
| `%p` | Precipitation (mm/3h) | `1.2 mm` |
|
|
61
|
+
| `%P` | Pressure (hPa) | `1013 hPa` |
|
|
62
|
+
| `%m` | Moon phase | `🌒` |
|
|
63
|
+
| `%S` | Sunrise | `06:32:14` |
|
|
64
|
+
| `%s` | Sunset | `20:15:42` |
|
|
65
|
+
| `%d` | Description (extended) | `Light rain shower` |
|
|
66
|
+
|
|
67
|
+
Example custom format:
|
|
68
|
+
```bash
|
|
69
|
+
curl -s "wttr.in/Berlin?format=%C+%t+%h+%w"
|
|
70
|
+
# Output: Partly cloudy +15°C 68% ↗18km/h
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Common Queries
|
|
74
|
+
|
|
75
|
+
### Current weather
|
|
76
|
+
```bash
|
|
77
|
+
curl -s "wttr.in/Sydney?format=4"
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### 3-day forecast (JSON, parse with Python)
|
|
81
|
+
```bash
|
|
82
|
+
curl -s "wttr.in/Mumbai?format=j1" | python3 -c "
|
|
83
|
+
import sys, json
|
|
84
|
+
d = json.load(sys.stdin)
|
|
85
|
+
cur = d['current_condition'][0]
|
|
86
|
+
print(f\"Current: {cur['weatherDesc'][0]['value']}, {cur['temp_C']}°C / {cur['temp_F']}°F\")
|
|
87
|
+
print(f\"Feels like: {cur['FeelsLikeC']}°C\")
|
|
88
|
+
print(f\"Humidity: {cur['humidity']}%\")
|
|
89
|
+
print(f\"Wind: {cur['windspeedKmph']} km/h {cur['winddir16Point']}\")
|
|
90
|
+
for day in d['weather']:
|
|
91
|
+
print(f\"{day['date']}: High {day['maxtempC']}°C, Low {day['mintempC']}°C\")
|
|
92
|
+
"
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Weather with units
|
|
96
|
+
```bash
|
|
97
|
+
# Metric (Celsius, km/h) - default
|
|
98
|
+
curl -s "wttr.in/Chicago?format=4&m"
|
|
99
|
+
|
|
100
|
+
# US customary (Fahrenheit, mph)
|
|
101
|
+
curl -s "wttr.in/Chicago?format=4&u"
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Sunrise and sunset
|
|
105
|
+
```bash
|
|
106
|
+
curl -s "wttr.in/Oslo?format=%S+/+%s"
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Moon phase
|
|
110
|
+
```bash
|
|
111
|
+
curl -s "wttr.in/Moon?format=%m"
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Location Formats
|
|
115
|
+
|
|
116
|
+
wttr.in accepts many location formats:
|
|
117
|
+
|
|
118
|
+
| Input | Example |
|
|
119
|
+
|-------|---------|
|
|
120
|
+
| City name | `London`, `New+York`, `San+Francisco` |
|
|
121
|
+
| Airport code | `JFK`, `LHR`, `SYD` |
|
|
122
|
+
| Coordinates | `-33.8688,151.2093` |
|
|
123
|
+
| Domain/IP lookup | omit location for requester's IP |
|
|
124
|
+
| Landmark | `Eiffel+Tower`, `Statue+of+Liberty` |
|
|
125
|
+
|
|
126
|
+
Replace spaces with `+` in URLs.
|
|
127
|
+
|
|
128
|
+
## How to Fetch Weather
|
|
129
|
+
|
|
130
|
+
### Step 1: Extract the Location
|
|
131
|
+
|
|
132
|
+
Parse the location from the user's message:
|
|
133
|
+
- "weather in Tokyo" - location: `Tokyo`
|
|
134
|
+
- "is it raining in New York?" - location: `New+York`
|
|
135
|
+
- "what's the temperature" - no location; ask "Which city?" or use system location if available
|
|
136
|
+
|
|
137
|
+
### Step 2: Choose the Right Format
|
|
138
|
+
|
|
139
|
+
- Simple question ("what's the weather in X?") - use `format=4` for one clean line
|
|
140
|
+
- "Full forecast" or "this week" - use `format=j1` with the Python parser
|
|
141
|
+
- "Will it rain?" - use `format=j1`, check `precipMM` in hourly data
|
|
142
|
+
- "Feels like / humidity / wind" - use custom format string
|
|
143
|
+
|
|
144
|
+
### Step 3: Execute and Present
|
|
145
|
+
|
|
146
|
+
Run via the `exec` tool. Format the output conversationally:
|
|
147
|
+
|
|
148
|
+
Good response:
|
|
149
|
+
```
|
|
150
|
+
London right now: Partly Cloudy, 14°C (57°F), humidity 71%, wind 22 km/h NW.
|
|
151
|
+
This week: Rain expected Thursday, clearing by the weekend. High of 17°C on Saturday.
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Not just raw output:
|
|
155
|
+
```
|
|
156
|
+
London: ⛅️ +14°C, 🌬️↗22km/h, 71%
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### Step 4: Answer the Underlying Question
|
|
160
|
+
|
|
161
|
+
If the user asked "should I bring an umbrella?", don't just show the forecast - answer the question:
|
|
162
|
+
- "Yes - there is 80% chance of rain this afternoon and tomorrow morning."
|
|
163
|
+
- "No umbrella needed - dry and sunny through the weekend."
|
|
164
|
+
|
|
165
|
+
## Example Interactions
|
|
166
|
+
|
|
167
|
+
**User**: What's the weather in Paris?
|
|
168
|
+
**You**: *(runs `curl -s "wttr.in/Paris?format=4"`, formats output: "Paris: Overcast, 11°C (52°F), wind 15 km/h SW.")*
|
|
169
|
+
|
|
170
|
+
**User**: Will it rain in Tokyo this week?
|
|
171
|
+
**You**: *(runs JSON query, parses precipitation forecast, answers: "Light rain expected Tuesday and Wednesday (2-4 mm/day). Thursday onward looks clear.")*
|
|
172
|
+
|
|
173
|
+
**User**: What's the temperature difference between London and New York right now?
|
|
174
|
+
**You**: *(runs two parallel format=4 queries, compares temperatures, presents side-by-side)*
|
|
175
|
+
|
|
176
|
+
**User**: When does the sun set in Oslo today?
|
|
177
|
+
**You**: *(runs `curl -s "wttr.in/Oslo?format=%S+/+%s"`, returns "Sunrise: 05:47, Sunset: 21:12 (local time)")*
|
|
178
|
+
|
|
179
|
+
## Best Practices
|
|
180
|
+
|
|
181
|
+
1. **Always name the location** in your response - never just say "the weather is..."
|
|
182
|
+
2. **Convert units** when context suggests the user's locale (°C for most, °F for US)
|
|
183
|
+
3. **Answer the question, not just the data** - interpret forecast for the user's actual need
|
|
184
|
+
4. **Note the data freshness** - wttr.in updates every ~30 minutes; add "as of now" if precision matters
|
|
185
|
+
5. **Handle ambiguous locations** - if "Springfield" or similar, ask which state/country
|
|
186
|
+
6. **Graceful failure** - if wttr.in is unreachable, say so and suggest checking weather.com
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: web-research
|
|
3
|
+
description: Search the web, summarize findings, and cite sources to answer questions with current information
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
metadata: {"profclaw": {"emoji": "🌐", "category": "productivity", "priority": 70, "triggerPatterns": ["search for", "look up", "find out", "research", "what is the latest", "current version", "documentation for", "how does", "what are the best"]}}
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Web Research
|
|
9
|
+
|
|
10
|
+
You are a research assistant. When asked to find, look up, or research something, you search the web efficiently, synthesize findings from multiple sources, and present a clear, cited summary.
|
|
11
|
+
|
|
12
|
+
## What This Skill Does
|
|
13
|
+
|
|
14
|
+
- Searches the web for technical documentation, news, and reference material
|
|
15
|
+
- Fetches and reads specific URLs for detailed content
|
|
16
|
+
- Synthesizes findings from multiple sources into a clear summary
|
|
17
|
+
- Always cites sources so users can verify and read further
|
|
18
|
+
- Identifies outdated information and flags when results may be stale
|
|
19
|
+
|
|
20
|
+
## How to Execute Research
|
|
21
|
+
|
|
22
|
+
### Step 1: Form Effective Search Queries
|
|
23
|
+
|
|
24
|
+
Good queries are specific and include context:
|
|
25
|
+
- Include the technology name and version: "BullMQ v5 delayed jobs documentation"
|
|
26
|
+
- Include the year for current info: "Node.js 22 built-in features 2025"
|
|
27
|
+
- Use official terms: "Hono middleware chaining" not "hono how to use middleware"
|
|
28
|
+
|
|
29
|
+
Avoid:
|
|
30
|
+
- Vague queries: "how does redis work"
|
|
31
|
+
- Too broad: "javascript best practices"
|
|
32
|
+
|
|
33
|
+
### Step 2: Search and Evaluate Results
|
|
34
|
+
|
|
35
|
+
Use `web_search` to find sources, then `web_fetch` to read specific pages in depth.
|
|
36
|
+
|
|
37
|
+
Evaluate sources by:
|
|
38
|
+
| Source type | Trust level |
|
|
39
|
+
|-------------|-------------|
|
|
40
|
+
| Official docs (docs.example.com) | High |
|
|
41
|
+
| GitHub repo README or issues | High |
|
|
42
|
+
| MDN, npm, pkg.go.dev | High |
|
|
43
|
+
| Stack Overflow accepted answers | Medium (check date) |
|
|
44
|
+
| Blog posts | Medium (check author and date) |
|
|
45
|
+
| Reddit/Discord | Low (corroborate) |
|
|
46
|
+
|
|
47
|
+
### Step 3: Cross-Reference Key Facts
|
|
48
|
+
|
|
49
|
+
For important claims, verify with at least 2 sources before stating as fact. If sources conflict, present both versions and note the discrepancy.
|
|
50
|
+
|
|
51
|
+
### Step 4: Synthesize and Cite
|
|
52
|
+
|
|
53
|
+
Present findings in this structure:
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
## [Topic]
|
|
57
|
+
|
|
58
|
+
[2-3 sentence summary of the key finding]
|
|
59
|
+
|
|
60
|
+
### Key Points
|
|
61
|
+
- Point one (Source: [Title](URL))
|
|
62
|
+
- Point two (Source: [Title](URL))
|
|
63
|
+
- Point three
|
|
64
|
+
|
|
65
|
+
### Code Example (if applicable)
|
|
66
|
+
[relevant snippet]
|
|
67
|
+
|
|
68
|
+
### Sources
|
|
69
|
+
- [Source Title 1](URL)
|
|
70
|
+
- [Source Title 2](URL)
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Always include a "Sources" section at the end.
|
|
74
|
+
|
|
75
|
+
## Research Strategies by Request Type
|
|
76
|
+
|
|
77
|
+
### "What's the latest version of X?"
|
|
78
|
+
1. Search "[package] npm latest version" or check npmjs.com
|
|
79
|
+
2. Cross-check with GitHub releases
|
|
80
|
+
3. Note breaking changes if upgrading
|
|
81
|
+
|
|
82
|
+
### "How do I use X feature?"
|
|
83
|
+
1. Check official documentation first
|
|
84
|
+
2. Look for a quick start or examples section
|
|
85
|
+
3. Find a working code example
|
|
86
|
+
4. Note version requirements
|
|
87
|
+
|
|
88
|
+
### "What's the difference between X and Y?"
|
|
89
|
+
1. Read official docs for both
|
|
90
|
+
2. Look for comparison articles
|
|
91
|
+
3. Check benchmarks if performance is relevant
|
|
92
|
+
4. Summarize trade-offs in a table
|
|
93
|
+
|
|
94
|
+
### "Is X a good choice for Y use case?"
|
|
95
|
+
1. Read the project's stated use cases
|
|
96
|
+
2. Find case studies or production users
|
|
97
|
+
3. Check GitHub stars, issues, and last commit date (activity signal)
|
|
98
|
+
4. Present pros/cons objectively
|
|
99
|
+
|
|
100
|
+
## Handling Uncertainty
|
|
101
|
+
|
|
102
|
+
When you're not sure about something:
|
|
103
|
+
- Say "I found conflicting information — here are both perspectives:"
|
|
104
|
+
- Say "This source is from 2022 — the API may have changed"
|
|
105
|
+
- Say "I couldn't find authoritative documentation on this — here's what I found:"
|
|
106
|
+
|
|
107
|
+
Never fabricate citations or present guesses as facts.
|
|
108
|
+
|
|
109
|
+
## Example Interactions
|
|
110
|
+
|
|
111
|
+
**User**: What's the latest stable version of BullMQ and what's new?
|
|
112
|
+
**You**: *(web_search for BullMQ releases, web_fetch npm page and GitHub releases, summarizes with changelog highlights and source links)*
|
|
113
|
+
|
|
114
|
+
**User**: Research the best Redis connection pooling strategies for Node.js
|
|
115
|
+
**You**: *(searches for ioredis and node-redis pool docs, finds community comparisons, synthesizes into structured summary with citations)*
|
|
116
|
+
|
|
117
|
+
**User**: Find the Hono documentation for middleware
|
|
118
|
+
**You**: *(web_fetch hono.dev/docs/concepts/middleware, extracts key usage patterns, returns summary with link to full docs)*
|
|
119
|
+
|
|
120
|
+
## Best Practices
|
|
121
|
+
|
|
122
|
+
1. **Cite everything** — never present web-sourced information without a link
|
|
123
|
+
2. **Check dates** — note when articles or docs were last updated
|
|
124
|
+
3. **Prefer primary sources** — official docs over blog posts
|
|
125
|
+
4. **Be honest about gaps** — say when you can't find reliable information
|
|
126
|
+
5. **Summarize, don't dump** — extract what's relevant, not everything you found
|
|
127
|
+
6. **Flag version specifics** — always note which version documentation applies to
|
|
128
|
+
7. **Search iteratively** — if first query yields poor results, try alternative terms
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: xurl
|
|
3
|
+
description: URL and clipboard utilities - copy/paste, shorten URLs, expand short links, extract URLs from text
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
metadata: {"profclaw": {"emoji": "🔗", "category": "utility", "priority": 30, "triggerPatterns": ["clipboard", "copy url", "shorten url", "expand url", "url", "copy to clipboard", "paste clipboard", "what's my clipboard", "extract links", "qr code", "bitly", "tinyurl"]}}
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# xurl - URL and Clipboard Utilities
|
|
9
|
+
|
|
10
|
+
You are a URL and clipboard utility assistant. When users want to copy text to the clipboard, read the clipboard, shorten or expand URLs, extract links from text, or generate QR codes, you use the appropriate system tools and APIs.
|
|
11
|
+
|
|
12
|
+
## What This Skill Does
|
|
13
|
+
|
|
14
|
+
- Read and write the system clipboard
|
|
15
|
+
- Shorten URLs via TinyURL (no key) or bit.ly (with key)
|
|
16
|
+
- Expand shortened/redirected URLs to their final destination
|
|
17
|
+
- Extract all URLs from a block of text
|
|
18
|
+
- Encode/decode URLs
|
|
19
|
+
- Generate QR codes from URLs or text
|
|
20
|
+
- Check if a URL is alive (returns 2xx)
|
|
21
|
+
|
|
22
|
+
## Clipboard Tools
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# Detect platform
|
|
26
|
+
uname -s # Darwin = macOS, Linux = Linux
|
|
27
|
+
|
|
28
|
+
# macOS
|
|
29
|
+
pbcopy # write to clipboard (stdin)
|
|
30
|
+
pbpaste # read from clipboard (stdout)
|
|
31
|
+
|
|
32
|
+
# Linux (install: sudo apt install xclip)
|
|
33
|
+
xclip -selection clipboard # write to clipboard (stdin)
|
|
34
|
+
xclip -selection clipboard -out # read from clipboard (stdout)
|
|
35
|
+
|
|
36
|
+
# Linux alternative (xdotool ecosystem)
|
|
37
|
+
xsel --clipboard --input # write
|
|
38
|
+
xsel --clipboard --output # read
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Copy text to clipboard
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# macOS
|
|
45
|
+
echo "https://example.com" | pbcopy
|
|
46
|
+
|
|
47
|
+
# Linux
|
|
48
|
+
echo "https://example.com" | xclip -selection clipboard
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Read clipboard contents
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# macOS
|
|
55
|
+
pbpaste
|
|
56
|
+
|
|
57
|
+
# Linux
|
|
58
|
+
xclip -selection clipboard -out
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Shortening URLs
|
|
62
|
+
|
|
63
|
+
### TinyURL (no API key required)
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
LONG_URL="https://example.com/very/long/path?with=params&and=more"
|
|
67
|
+
|
|
68
|
+
curl -s "https://tinyurl.com/api-create.php?url=$(python3 -c "import urllib.parse; print(urllib.parse.quote('${LONG_URL}'))")"
|
|
69
|
+
# Returns: https://tinyurl.com/abc123
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### bit.ly (requires BITLY_API_KEY)
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
curl -s -X POST "https://api-ssl.bitly.com/v4/shorten" \
|
|
76
|
+
-H "Authorization: Bearer ${BITLY_API_KEY}" \
|
|
77
|
+
-H "Content-Type: application/json" \
|
|
78
|
+
-d "{\"long_url\": \"${LONG_URL}\"}" \
|
|
79
|
+
| python3 -c "import sys,json; print(json.load(sys.stdin)['link'])"
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
If `BITLY_API_KEY` is not set, fall back to TinyURL automatically.
|
|
83
|
+
|
|
84
|
+
## Expanding URLs
|
|
85
|
+
|
|
86
|
+
Follow all redirects and show the final destination:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
SHORT_URL="https://bit.ly/abc123"
|
|
90
|
+
|
|
91
|
+
# Get final URL after all redirects
|
|
92
|
+
curl -sLI "${SHORT_URL}" -o /dev/null -w "%{url_effective}\n"
|
|
93
|
+
|
|
94
|
+
# Show each redirect step
|
|
95
|
+
curl -sI --max-redirs 20 "${SHORT_URL}" | grep -i "^location:"
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Extracting URLs from Text
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
TEXT="Check out https://example.com and also http://foo.bar/path?q=1 for more info."
|
|
102
|
+
|
|
103
|
+
# Extract all http/https URLs
|
|
104
|
+
echo "${TEXT}" | grep -oE 'https?://[^[:space:]"<>]+'
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## URL Encoding and Decoding
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
# Encode a URL component
|
|
111
|
+
python3 -c "import urllib.parse; print(urllib.parse.quote('hello world & more'))"
|
|
112
|
+
# Output: hello%20world%20%26%20more
|
|
113
|
+
|
|
114
|
+
# Decode a URL-encoded string
|
|
115
|
+
python3 -c "import urllib.parse; print(urllib.parse.unquote('hello%20world%20%26%20more'))"
|
|
116
|
+
# Output: hello world & more
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## URL Health Check
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
URL="https://example.com"
|
|
123
|
+
|
|
124
|
+
# Check if URL returns a success response
|
|
125
|
+
STATUS=$(curl -s -o /dev/null -w "%{http_code}" --max-time 10 "${URL}")
|
|
126
|
+
echo "HTTP ${STATUS}"
|
|
127
|
+
|
|
128
|
+
# HTTP 2xx = alive, 4xx/5xx = error, 000 = unreachable
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## QR Code Generation
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
# Check if qrencode is installed
|
|
135
|
+
which qrencode || echo "install: brew install qrencode"
|
|
136
|
+
|
|
137
|
+
# Generate QR code in terminal (UTF-8 art)
|
|
138
|
+
qrencode -t UTF8 "https://example.com"
|
|
139
|
+
|
|
140
|
+
# Generate QR code as PNG file
|
|
141
|
+
qrencode -o /tmp/qr.png "https://example.com"
|
|
142
|
+
|
|
143
|
+
# Print QR code inline in terminal
|
|
144
|
+
qrencode -t ANSIUTF8 "https://example.com"
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Combined Workflow: Shorten and Copy
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
LONG_URL="https://example.com/very/long/path"
|
|
151
|
+
|
|
152
|
+
# Shorten
|
|
153
|
+
SHORT=$(curl -s "https://tinyurl.com/api-create.php?url=${LONG_URL}")
|
|
154
|
+
|
|
155
|
+
# Copy to clipboard (macOS)
|
|
156
|
+
echo "${SHORT}" | pbcopy
|
|
157
|
+
|
|
158
|
+
echo "Shortened and copied: ${SHORT}"
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## Error Handling
|
|
162
|
+
|
|
163
|
+
| Error | Response |
|
|
164
|
+
|-------|----------|
|
|
165
|
+
| `pbcopy`/`pbpaste` not found on Linux | "On Linux, install xclip: `sudo apt install xclip`" |
|
|
166
|
+
| `xclip` not found | "Install xclip with `sudo apt install xclip` or `sudo pacman -S xclip`" |
|
|
167
|
+
| TinyURL API fails | "TinyURL is unavailable. Try again shortly, or set `BITLY_API_KEY` for a more reliable shortener." |
|
|
168
|
+
| `BITLY_API_KEY` not set | Automatically fall back to TinyURL without complaining |
|
|
169
|
+
| URL health check returns 000 | "Cannot reach that URL - it may be down or the address is wrong." |
|
|
170
|
+
| `qrencode` not installed | "Install qrencode with `brew install qrencode` (macOS) or `sudo apt install qrencode` (Linux)" |
|
|
171
|
+
| Invalid URL format | "That does not look like a valid URL. Make sure it starts with http:// or https://" |
|
|
172
|
+
|
|
173
|
+
## Safety Rules
|
|
174
|
+
|
|
175
|
+
- Never read the clipboard without the user explicitly asking (it may contain passwords or sensitive data)
|
|
176
|
+
- When copying to clipboard, always confirm what was copied so the user knows their previous content was replaced
|
|
177
|
+
- Do not auto-shorten URLs without being asked - the user may want the full URL for transparency
|
|
178
|
+
- Do not follow redirects on URLs from untrusted sources without warning the user
|
|
179
|
+
|
|
180
|
+
## Example Interactions
|
|
181
|
+
|
|
182
|
+
**User**: Copy this URL to my clipboard: https://example.com/long-path
|
|
183
|
+
**You**: *(runs `echo "https://example.com/long-path" | pbcopy`)* Copied to clipboard.
|
|
184
|
+
|
|
185
|
+
**User**: What's in my clipboard?
|
|
186
|
+
**You**: *(runs `pbpaste`)* Your clipboard contains: `https://example.com/long-path`
|
|
187
|
+
|
|
188
|
+
**User**: Shorten https://example.com/very/long/path/to/something
|
|
189
|
+
**You**: *(calls TinyURL API)* Shortened URL: https://tinyurl.com/abc123
|
|
190
|
+
|
|
191
|
+
**User**: Where does https://bit.ly/xyz go?
|
|
192
|
+
**You**: *(runs curl follow redirect)* That short link points to: https://www.example.com/the-actual-page
|
|
193
|
+
|
|
194
|
+
**User**: Extract all links from this text: "Visit https://foo.com or https://bar.org for details."
|
|
195
|
+
**You**: Found 2 URLs: https://foo.com, https://bar.org
|
|
196
|
+
|
|
197
|
+
**User**: Make a QR code for my website https://example.com
|
|
198
|
+
**You**: *(runs qrencode -t UTF8)* [QR code displayed in terminal]
|
package/ui/README.md
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# React + TypeScript + Vite
|
|
2
|
+
|
|
3
|
+
This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
|
|
4
|
+
|
|
5
|
+
Currently, two official plugins are available:
|
|
6
|
+
|
|
7
|
+
- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) (or [oxc](https://oxc.rs) when used in [rolldown-vite](https://vite.dev/guide/rolldown)) for Fast Refresh
|
|
8
|
+
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
|
|
9
|
+
|
|
10
|
+
## React Compiler
|
|
11
|
+
|
|
12
|
+
The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation).
|
|
13
|
+
|
|
14
|
+
## Expanding the ESLint configuration
|
|
15
|
+
|
|
16
|
+
If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:
|
|
17
|
+
|
|
18
|
+
```js
|
|
19
|
+
export default defineConfig([
|
|
20
|
+
globalIgnores(['dist']),
|
|
21
|
+
{
|
|
22
|
+
files: ['**/*.{ts,tsx}'],
|
|
23
|
+
extends: [
|
|
24
|
+
// Other configs...
|
|
25
|
+
|
|
26
|
+
// Remove tseslint.configs.recommended and replace with this
|
|
27
|
+
tseslint.configs.recommendedTypeChecked,
|
|
28
|
+
// Alternatively, use this for stricter rules
|
|
29
|
+
tseslint.configs.strictTypeChecked,
|
|
30
|
+
// Optionally, add this for stylistic rules
|
|
31
|
+
tseslint.configs.stylisticTypeChecked,
|
|
32
|
+
|
|
33
|
+
// Other configs...
|
|
34
|
+
],
|
|
35
|
+
languageOptions: {
|
|
36
|
+
parserOptions: {
|
|
37
|
+
project: ['./tsconfig.node.json', './tsconfig.app.json'],
|
|
38
|
+
tsconfigRootDir: import.meta.dirname,
|
|
39
|
+
},
|
|
40
|
+
// other options...
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
])
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules:
|
|
47
|
+
|
|
48
|
+
```js
|
|
49
|
+
// eslint.config.js
|
|
50
|
+
import reactX from 'eslint-plugin-react-x'
|
|
51
|
+
import reactDom from 'eslint-plugin-react-dom'
|
|
52
|
+
|
|
53
|
+
export default defineConfig([
|
|
54
|
+
globalIgnores(['dist']),
|
|
55
|
+
{
|
|
56
|
+
files: ['**/*.{ts,tsx}'],
|
|
57
|
+
extends: [
|
|
58
|
+
// Other configs...
|
|
59
|
+
// Enable lint rules for React
|
|
60
|
+
reactX.configs['recommended-typescript'],
|
|
61
|
+
// Enable lint rules for React DOM
|
|
62
|
+
reactDom.configs.recommended,
|
|
63
|
+
],
|
|
64
|
+
languageOptions: {
|
|
65
|
+
parserOptions: {
|
|
66
|
+
project: ['./tsconfig.node.json', './tsconfig.app.json'],
|
|
67
|
+
tsconfigRootDir: import.meta.dirname,
|
|
68
|
+
},
|
|
69
|
+
// other options...
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
])
|
|
73
|
+
```
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as z,n as I,r as x,u as K,o as h,m as d,t as w,j as e,k as c,a1 as Q,b as f,f as j,i as p,C as A,aK as B,g as E,U as V,v as $}from"./index-kb4AJXUB.js";import{B as L}from"./badge-B4ov81_m.js";import{S as g}from"./skeleton-CtkIA_MU.js";import{S as k,a as C,b,c as S,d as a}from"./select-LsO16slr.js";import{T as U}from"./trash-2-B4oAXsX-.js";import"./chevron-up-BRTtndUZ.js";const _=[["path",{d:"M18 6 7 17l-5-5",key:"116fxf"}],["path",{d:"m22 10-7.5 7.5L13 16",key:"ke71qq"}]],D=z("check-check",_);function O({type:i}){switch(i){case"success":return e.jsx(A,{className:"h-4 w-4 text-green-400"});case"error":return e.jsx($,{className:"h-4 w-4 text-red-400"});case"warning":return e.jsx(V,{className:"h-4 w-4 text-amber-400"});default:return e.jsx(E,{className:"h-4 w-4 text-blue-400"})}}function P(i){const o=Date.now()-i,l=Math.floor(o/1e3);if(l<60)return"just now";const n=Math.floor(l/60);if(n<60)return`${n}m ago`;const t=Math.floor(n/60);return t<24?`${t}h ago`:`${Math.floor(t/24)}d ago`}function Z(){const i=I(),[r,o]=x.useState("all"),[l,n]=x.useState("all"),[t,u]=x.useState(!1),{data:y,isLoading:M}=K({queryKey:["notifications","activity"],queryFn:()=>d.notifications.list({limit:100}),refetchInterval:3e4}),T=h({mutationFn:s=>d.notifications.markRead(s),onSuccess:()=>{i.invalidateQueries({queryKey:["notifications"]})}}),N=h({mutationFn:()=>d.notifications.markAllRead(),onSuccess:()=>{i.invalidateQueries({queryKey:["notifications"]}),w.success("All notifications marked as read")}}),q=h({mutationFn:s=>d.notifications.delete(s),onSuccess:()=>{i.invalidateQueries({queryKey:["notifications"]}),w.success("Notification deleted")}}),F=y?.notifications??[],m=y?.unreadCount??0,v=F.filter(s=>!(r!=="all"&&s.type!==r||l!=="all"&&s.category!==l||t&&s.read));return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold tracking-tight",children:"Activity"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:m>0?`${m} unread`:"All caught up"})]}),m>0&&e.jsxs(c,{variant:"outline",size:"sm",onClick:()=>N.mutate(),disabled:N.isPending,className:"gap-2",children:[e.jsx(D,{className:"h-4 w-4"}),"Mark all read"]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsxs(k,{value:r,onValueChange:s=>o(s),children:[e.jsx(C,{className:"w-[140px]",children:e.jsx(b,{placeholder:"Type"})}),e.jsxs(S,{children:[e.jsx(a,{value:"all",children:"All types"}),e.jsx(a,{value:"success",children:"Success"}),e.jsx(a,{value:"error",children:"Error"}),e.jsx(a,{value:"warning",children:"Warning"}),e.jsx(a,{value:"info",children:"Info"})]})]}),e.jsxs(k,{value:l,onValueChange:s=>n(s),children:[e.jsx(C,{className:"w-[140px]",children:e.jsx(b,{placeholder:"Category"})}),e.jsxs(S,{children:[e.jsx(a,{value:"all",children:"All categories"}),e.jsx(a,{value:"task",children:"Task"}),e.jsx(a,{value:"ticket",children:"Ticket"}),e.jsx(a,{value:"system",children:"System"}),e.jsx(a,{value:"agent",children:"Agent"}),e.jsx(a,{value:"chat",children:"Chat"}),e.jsx(a,{value:"cron",children:"Cron"})]})]}),e.jsxs(c,{variant:t?"default":"outline",size:"sm",onClick:()=>u(!t),className:"gap-2",children:[e.jsx(Q,{className:"h-4 w-4"}),"Unread only"]}),(r!=="all"||l!=="all"||t)&&e.jsx(c,{variant:"ghost",size:"sm",onClick:()=>{o("all"),n("all"),u(!1)},children:"Clear filters"})]}),M?e.jsx("div",{className:"space-y-3",children:Array.from({length:5}).map((s,R)=>e.jsx(f,{className:"glass rounded-2xl",children:e.jsx(j,{className:"p-4",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(g,{className:"h-8 w-8 rounded-xl"}),e.jsxs("div",{className:"flex-1 space-y-2",children:[e.jsx(g,{className:"h-4 w-48"}),e.jsx(g,{className:"h-3 w-32"})]})]})})},R))}):v.length>0?e.jsx("div",{className:"space-y-2",children:v.map(s=>e.jsx(f,{className:p("glass rounded-2xl overflow-hidden transition-all hover-lift",!s.read&&"border-primary/20"),children:e.jsx(j,{className:"p-4",children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"flex items-start gap-3 flex-1 min-w-0",children:[e.jsx("div",{className:p("h-8 w-8 rounded-xl flex items-center justify-center flex-shrink-0",s.type==="success"&&"bg-green-500/10",s.type==="error"&&"bg-red-500/10",s.type==="warning"&&"bg-amber-500/10",s.type==="info"&&"bg-blue-500/10"),children:e.jsx(O,{type:s.type})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:p("text-sm font-medium truncate",!s.read&&"font-bold"),children:s.title}),!s.read&&e.jsx("span",{className:"h-2 w-2 rounded-full bg-primary flex-shrink-0"})]}),s.description&&e.jsx("p",{className:"text-xs text-muted-foreground mt-0.5 line-clamp-2",children:s.description}),e.jsxs("div",{className:"flex items-center gap-2 mt-1.5",children:[e.jsx(L,{variant:"outline",className:"text-[10px] px-1.5 py-0",children:s.category}),e.jsx("span",{className:"text-[10px] text-muted-foreground",children:P(s.createdAt)})]})]})]}),e.jsxs("div",{className:"flex items-center gap-1 flex-shrink-0",children:[!s.read&&e.jsx(c,{variant:"ghost",size:"icon",className:"h-7 w-7 rounded-lg",onClick:()=>T.mutate(s.id),title:"Mark as read",children:e.jsx(A,{className:"h-3.5 w-3.5"})}),e.jsx(c,{variant:"ghost",size:"icon",className:"h-7 w-7 rounded-lg text-muted-foreground hover:text-destructive",onClick:()=>q.mutate(s.id),title:"Delete",children:e.jsx(U,{className:"h-3.5 w-3.5"})})]})]})})},s.id))}):e.jsx(f,{className:"glass rounded-2xl",children:e.jsxs(j,{className:"py-16 text-center",children:[e.jsx(B,{className:"h-12 w-12 mx-auto text-muted-foreground opacity-20 mb-4"}),e.jsx("h3",{className:"text-lg font-medium mb-1",children:"No notifications"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:r!=="all"||l!=="all"||t?"No notifications match your filters":"You're all caught up"})]})})]})}export{Z as ActivityView};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{u as o,j as e,M as r,B as d,k as i,S as x,i as c,g as m,V as h}from"./index-kb4AJXUB.js";import{S as u}from"./StatusIndicator-DA3NAo_b.js";import{C as p}from"./cpu-B41x1-vV.js";import{S as g}from"./shield-check-CQqkwufI.js";const j="http://localhost:3000";function f(){return o({queryKey:["agents"],queryFn:async()=>{const s=await fetch(`${j}/api/agents`);if(!s.ok)throw new Error("Failed to fetch agents");return(await s.json()).agents},refetchInterval:1e4})}function k(){const{data:s,isLoading:t,error:l}=f();return t?e.jsxs("div",{className:"flex flex-col gap-6",children:[e.jsxs("header",{children:[e.jsx("h2",{className:"text-2xl font-bold tracking-tight",children:"Agent Status"}),e.jsx("p",{className:"text-muted-foreground text-sm",children:"Monitor your active AI workforce."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:[1,2,3].map(a=>e.jsx("div",{className:"h-48 rounded-2xl premium-card animate-pulse"},a))})]}):l?e.jsxs("div",{className:"premium-card rounded-2xl p-12 text-center",children:[e.jsx(r,{className:"h-12 w-12 mx-auto text-red-500 mb-4 opacity-50"}),e.jsx("h3",{className:"text-lg font-semibold",children:"Failed to load agents"}),e.jsx("p",{className:"text-muted-foreground text-sm",children:"Make sure the backend is running at http://localhost:3000"})]}):e.jsxs("div",{className:"flex flex-col gap-6",children:[e.jsxs("header",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold tracking-tight",children:"Agent Status"}),e.jsx("p",{className:"text-muted-foreground text-sm",children:"Monitor and manage your autonomous AI agents."})]}),e.jsxs("div",{className:"flex items-center gap-2 px-4 py-2 rounded-full premium-card border-primary/10",children:[e.jsx(r,{className:"h-4 w-4 text-primary"}),e.jsxs("span",{className:"text-xs font-bold uppercase tracking-wider",children:[s?.length||0," Agents Registered"]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:[s?.map(a=>e.jsx(N,{agent:a},a.type)),s?.length===0&&e.jsxs("div",{className:"col-span-full glass-heavy rounded-[24px] p-12 text-center border-dashed border-2 border-white/5",children:[e.jsx(d,{className:"h-16 w-16 mx-auto text-muted-foreground mb-4 opacity-20"}),e.jsx("h3",{className:"text-xl font-bold",children:"No agents active"}),e.jsx("p",{className:"text-muted-foreground max-w-md mx-auto mb-6",children:"Connect an agent adapter like OpenClaw or Claude Code to start orchestrating tasks."}),e.jsx(i,{variant:"black",className:"px-6 h-10 rounded-full",onClick:()=>{},children:"Go to Settings"})]})]})]})}function N({agent:s}){const t=s.type==="openclaw"?x:s.type==="claude-code"?d:p;return e.jsxs("div",{className:"group relative premium-card rounded-2xl p-6 hover-lift transition-liquid overflow-hidden",children:[e.jsx("div",{className:c("absolute -top-12 -right-12 w-32 h-32 rounded-full blur-[60px] opacity-20 group-hover:opacity-40 transition-opacity",s.healthy.healthy?"bg-green-500":"bg-red-500")}),e.jsxs("div",{className:"flex items-start justify-between mb-8",children:[e.jsxs("div",{className:"flex gap-4",children:[e.jsx("div",{className:"h-12 w-12 rounded-xl glass-heavy flex items-center justify-center border-primary/10 shadow-lg",children:e.jsx(t,{className:"h-6 w-6 text-primary"})}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base font-bold capitalize",children:s.name}),e.jsx("p",{className:"text-[10px] text-muted-foreground font-mono uppercase tracking-tight",children:s.type})]})]}),e.jsx(u,{status:s.healthy.healthy?"online":"error",size:"md"})]}),e.jsxs("div",{className:"space-y-4 mb-8",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsx(n,{label:"Success",value:s.stats.completed,className:"text-green-500/80"}),e.jsx(n,{label:"Failed",value:s.stats.failed,className:"text-red-500/80"})]}),e.jsxs("div",{className:"flex items-center justify-between px-1",children:[e.jsxs("div",{className:"flex items-center gap-1.5 text-muted-foreground",children:[e.jsx(m,{className:"h-3.5 w-3.5"}),e.jsx("span",{className:"text-[11px] font-medium",children:"Avg duration:"})]}),e.jsxs("span",{className:"text-[11px] font-bold",children:[(s.stats.avgDuration/1e3).toFixed(1),"s"]})]}),e.jsxs("div",{className:"flex items-center justify-between px-1",children:[e.jsxs("div",{className:"flex items-center gap-1.5 text-muted-foreground",children:[e.jsx(r,{className:"h-3.5 w-3.5"}),e.jsx("span",{className:"text-[11px] font-medium",children:"Latency:"})]}),e.jsxs("span",{className:"text-[11px] font-bold text-blue-400",children:[s.healthy.latencyMs,"ms"]})]})]}),e.jsxs("div",{className:"pt-4 border-t border-white/5 flex items-center justify-between",children:[e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"premium-label",children:"Last Active"}),e.jsx("span",{className:"text-[11px] font-medium leading-relaxed",children:s.lastActivity?new Date(s.lastActivity).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):"Never"})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(i,{variant:"ghost",size:"icon",className:"h-8 w-8 rounded-lg",children:e.jsx(h,{className:"h-3.5 w-3.5 text-muted-foreground"})}),e.jsxs(i,{variant:"outline",size:"sm",className:"h-8 gap-2 rounded-lg",children:[e.jsx(g,{className:"h-3.5 w-3.5 text-blue-400"}),e.jsx("span",{className:"text-[10px] font-bold",children:"CONFIG"})]})]})]})]})}function n({label:s,value:t,className:l}){return e.jsxs("div",{className:"flex flex-col px-3 py-2 rounded-xl bg-primary/5 border border-primary/5",children:[e.jsx("span",{className:"premium-label",children:s}),e.jsx("span",{className:c("text-lg font-bold leading-tight",l),children:t})]})}export{k as AgentList};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as R,j as e,u as f,L as ee,a as T,T as A,F as se,C as te,b as p,d as I,e as q,f as g,Z as ae,S as re,B as F,g as le,h as N,i as m,k as ie,R as ne,l as ce,A as oe,m as j}from"./index-kb4AJXUB.js";import{B as de}from"./badge-B4ov81_m.js";import{R as B,C as xe,X as me,Y as he,T as z,L as ue,a as fe}from"./CartesianChart-B50bcUJi.js";import{A as pe,a as M,P as ge,b as je}from"./AreaChart-B5qMEGWj.js";import{T as P}from"./trending-up-BGWxvlmZ.js";import{G as ve}from"./git-branch-BRMiJmV3.js";const Ne=[["path",{d:"m7 7 10 10",key:"1fmybs"}],["path",{d:"M17 7v10H7",key:"6fjiku"}]],ye=R("arrow-down-right",Ne);const be=[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]],ke=R("arrow-up-right",be);const we=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],Ce=R("wifi-off",we),Ae={created:"#3b82f6",completed:"#22c55e"};function Le({data:a,title:n,showLegend:r=!0,colors:c}){const l={...Ae,...c},d=a.map(i=>({...i,displayDate:new Date(i.date).toLocaleDateString("en-US",{month:"short",day:"numeric"})})),o=(i,t)=>t%5===0?i:"";return a.length===0?e.jsx("div",{className:"flex items-center justify-center h-full text-muted-foreground text-sm",children:"No data available"}):e.jsxs("div",{className:"w-full h-full",children:[n&&e.jsx("h4",{className:"text-sm font-medium text-muted-foreground mb-2",children:n}),e.jsx(B,{width:"100%",height:"100%",children:e.jsxs(pe,{data:d,margin:{top:10,right:10,left:-20,bottom:0},children:[e.jsxs("defs",{children:[e.jsxs("linearGradient",{id:"colorCreated",x1:"0",y1:"0",x2:"0",y2:"1",children:[e.jsx("stop",{offset:"5%",stopColor:l.created,stopOpacity:.3}),e.jsx("stop",{offset:"95%",stopColor:l.created,stopOpacity:0})]}),e.jsxs("linearGradient",{id:"colorCompleted",x1:"0",y1:"0",x2:"0",y2:"1",children:[e.jsx("stop",{offset:"5%",stopColor:l.completed,stopOpacity:.3}),e.jsx("stop",{offset:"95%",stopColor:l.completed,stopOpacity:0})]})]}),e.jsx(xe,{strokeDasharray:"3 3",stroke:"rgba(255,255,255,0.05)"}),e.jsx(me,{dataKey:"displayDate",tick:{fontSize:10,fill:"var(--muted-foreground)"},tickFormatter:o,axisLine:{stroke:"rgba(255,255,255,0.1)"},tickLine:{stroke:"rgba(255,255,255,0.1)"}}),e.jsx(he,{tick:{fontSize:10,fill:"var(--muted-foreground)"},axisLine:{stroke:"rgba(255,255,255,0.1)"},tickLine:{stroke:"rgba(255,255,255,0.1)"},allowDecimals:!1}),e.jsx(z,{content:({active:i,payload:t,label:k})=>i&&t&&t.length?e.jsxs("div",{className:"glass-heavy px-3 py-2 rounded-lg text-sm border border-white/10",children:[e.jsx("p",{className:"font-medium mb-1",children:k}),t.map(u=>e.jsxs("p",{style:{color:u.color},children:[u.name,": ",u.value]},u.name))]}):null}),r&&e.jsx(ue,{verticalAlign:"top",height:36,iconType:"circle",iconSize:8,wrapperStyle:{fontSize:"11px"}}),e.jsx(M,{type:"monotone",dataKey:"created",name:"Created",stroke:l.created,strokeWidth:2,fillOpacity:1,fill:"url(#colorCreated)"}),e.jsx(M,{type:"monotone",dataKey:"completed",name:"Completed",stroke:l.completed,strokeWidth:2,fillOpacity:1,fill:"url(#colorCompleted)"})]})})]})}const v=5e3,h={pending:"#facc15",in_progress:"#3b82f6",completed:"#22c55e",failed:"#ef4444"},Te={urgent:"text-red-500",high:"text-orange-400",medium:"text-yellow-400",low:"text-blue-400",none:"text-gray-400"};function b({label:a,value:n,icon:r,trend:c,gradient:l,href:d}){const o=e.jsxs("div",{className:m("group relative overflow-hidden rounded-3xl glass-heavy p-5 transition-all duration-300","hover:shadow-xl hover:scale-[1.02]",d&&"cursor-pointer"),children:[e.jsx("div",{className:m("absolute -top-8 -right-8 h-24 w-24 rounded-full opacity-20 blur-2xl transition-opacity duration-300 group-hover:opacity-30",l)}),e.jsxs("div",{className:"relative flex items-start justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-[11px] font-bold text-muted-foreground/70 uppercase tracking-wider",children:a}),e.jsx("p",{className:"text-3xl font-black mt-1.5 tracking-tight",children:n}),c&&e.jsxs("div",{className:"flex items-center gap-1 mt-1.5",children:[c.positive?e.jsx(ke,{className:"h-3 w-3 text-emerald-500"}):e.jsx(ye,{className:"h-3 w-3 text-red-400"}),e.jsx("span",{className:m("text-[11px] font-semibold",c.positive?"text-emerald-500":"text-red-400"),children:c.value})]})]}),e.jsx("div",{className:m("h-11 w-11 rounded-xl flex items-center justify-center shadow-lg",l),children:e.jsx(r,{className:"h-5 w-5 text-white"})})]}),d&&e.jsx(ce,{className:"absolute right-4 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground/20 group-hover:text-muted-foreground/50 transition-colors"})]});return d?e.jsx(N,{to:d,children:o}):o}function Re({completed:a,running:n,pending:r,failed:c}){const l=[{name:"Completed",value:a,color:h.completed},{name:"Running",value:n,color:h.in_progress},{name:"Pending",value:r,color:h.pending},{name:"Failed",value:c,color:h.failed}].filter(o=>o.value>0),d=a+n+r+c;return d===0?e.jsx("div",{className:"h-full w-full flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"h-12 w-12 rounded-full bg-muted/20 flex items-center justify-center mx-auto mb-2",children:e.jsx(T,{className:"h-5 w-5 text-muted-foreground/40"})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"No tasks"})]})}):e.jsxs("div",{className:"relative h-full w-full",children:[e.jsx(B,{width:"100%",height:"100%",children:e.jsxs(ge,{children:[e.jsx(je,{data:l,cx:"50%",cy:"50%",innerRadius:35,outerRadius:50,paddingAngle:2,dataKey:"value",strokeWidth:0,children:l.map((o,i)=>e.jsx(fe,{fill:o.color},`cell-${i}`))}),e.jsx(z,{content:({active:o,payload:i})=>{if(o&&i&&i.length){const t=i[0].payload;return e.jsxs("div",{className:"px-2.5 py-1.5 rounded-lg bg-black/90 text-white text-xs border border-white/10",children:[t.name,": ",t.value]})}return null}})]})}),e.jsx("div",{className:"absolute inset-0 flex flex-col items-center justify-center pointer-events-none","aria-hidden":"true",children:e.jsx("span",{className:"text-xl font-bold",children:d})})]})}function L({icon:a,title:n,href:r,linkText:c}){return e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("h3",{className:"text-sm font-semibold",children:n})]}),r&&e.jsxs(N,{to:r,className:"text-xs text-primary hover:text-primary/80 font-medium flex items-center gap-1",children:[c||"View All"," ",e.jsx(oe,{className:"h-3 w-3"})]})]})}function K({icon:a,title:n,action:r}){return e.jsxs("div",{className:"flex flex-col items-center justify-center py-6 text-center",children:[e.jsx("div",{className:"h-10 w-10 rounded-xl bg-muted/10 flex items-center justify-center mb-2",children:e.jsx(a,{className:"h-5 w-5 text-muted-foreground/40","aria-hidden":"true"})}),e.jsx("p",{className:"text-xs text-muted-foreground mb-2",children:n}),r&&e.jsx(N,{to:r.href,className:"text-xs text-primary hover:underline font-medium",children:r.label})]})}function Oe({onRetry:a}){return e.jsxs("div",{className:"flex flex-col items-center justify-center min-h-[60vh] text-center px-4",children:[e.jsx("div",{className:"h-20 w-20 rounded-2xl bg-red-500/10 flex items-center justify-center mb-6 border border-red-500/20",children:e.jsx(Ce,{className:"h-10 w-10 text-red-400"})}),e.jsx("h2",{className:"text-xl font-bold mb-2",children:"Backend Offline"}),e.jsx("p",{className:"text-muted-foreground text-sm max-w-md mb-6",children:"Unable to connect to the API. Make sure the server is running."}),e.jsx("code",{className:"px-4 py-2 rounded-lg bg-black/20 font-mono text-sm text-muted-foreground mb-4",children:"pnpm dev"}),e.jsxs(ie,{onClick:a,variant:"outline",className:"rounded-xl gap-2",children:[e.jsx(ne,{className:"h-4 w-4"}),"Retry"]})]})}function Me(){const{data:a,isLoading:n,error:r,refetch:c}=f({queryKey:["tasks"],queryFn:()=>j.tasks.list({limit:100}),refetchInterval:s=>s.state.error?!1:v}),{data:l,isLoading:d,error:o,refetch:i}=f({queryKey:["summaries","stats"],queryFn:()=>j.summaries.stats(),refetchInterval:s=>s.state.error?!1:v*2}),{data:t,isLoading:k,error:u,refetch:E}=f({queryKey:["stats","dashboard"],queryFn:()=>j.stats.dashboard(),refetchInterval:s=>s.state.error?!1:v*2}),{data:$,refetch:G}=f({queryKey:["tickets","recent"],queryFn:()=>j.tickets.list({limit:5,sortBy:"updatedAt",sortOrder:"desc"}),refetchInterval:s=>s.state.error?!1:v*2}),{data:U,refetch:H}=f({queryKey:["gateway","agents"],queryFn:()=>j.gateway.agents(),refetchInterval:s=>s.state.error?!1:v*4}),V=r||o||u,O=n||d||k,W=()=>{c(),i(),E(),G(),H()};if(V&&!O)return e.jsx(Oe,{onRetry:W});const x=a?.tasks??[],X=x.filter(s=>s.status==="pending").length,w=x.filter(s=>s.status==="in_progress").length,S=x.filter(s=>s.status==="completed").length,Y=x.filter(s=>s.status==="failed").length,Z=t?.tickets.total??0,D=t?.tickets.open??0,Q=t?.projects.total??0,C=t?.sprints.active??0,_=$?.tickets??[],y=U?.agents??[],J=y.filter(s=>s.health?.healthy).length;return O?e.jsx("div",{className:"flex items-center justify-center min-h-[60vh]",children:e.jsxs("div",{className:"text-center",children:[e.jsx(ee,{className:"h-8 w-8 animate-spin text-primary mx-auto mb-3"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Loading analytics..."})]})}):e.jsxs("div",{className:"space-y-6 max-w-7xl mx-auto",children:[e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold tracking-tight",children:"Analytics"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Overview of your AI operations and metrics"})]})}),e.jsxs("div",{className:"grid gap-4 grid-cols-2 lg:grid-cols-4",children:[e.jsx(b,{label:"Tasks",value:x.length,icon:T,trend:w>0?{value:`${w} running`,positive:!0}:void 0,gradient:"bg-gradient-to-br from-rose-400 to-rose-600",href:"/tasks"}),e.jsx(b,{label:"Tickets",value:Z,icon:A,trend:D>0?{value:`${D} open`,positive:!0}:void 0,gradient:"bg-gradient-to-br from-rose-500 to-rose-700",href:"/tickets"}),e.jsx(b,{label:"Projects",value:Q,icon:se,trend:C>0?{value:`${C} sprints`,positive:!0}:void 0,gradient:"bg-gradient-to-br from-rose-300 to-rose-500",href:"/projects"}),e.jsx(b,{label:"Completed",value:S,icon:te,gradient:"bg-gradient-to-br from-emerald-400 to-emerald-600"})]}),e.jsxs("div",{className:"grid gap-6 lg:grid-cols-5",children:[e.jsxs("div",{className:"lg:col-span-3 space-y-6",children:[e.jsxs(p,{className:"glass overflow-hidden",children:[e.jsx(I,{className:"pb-3",children:e.jsxs(q,{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(P,{className:"h-4 w-4 text-muted-foreground"}),"Activity Overview"]})}),e.jsx(g,{children:e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxs("div",{className:"h-32",children:[e.jsx(Re,{completed:S,running:w,pending:X,failed:Y}),e.jsx("div",{className:"flex justify-center gap-3 mt-2",children:[{color:h.completed,label:"Done"},{color:h.in_progress,label:"Active"},{color:h.pending,label:"Pending"}].map(s=>e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("div",{className:"h-2 w-2 rounded-full",style:{backgroundColor:s.color}}),e.jsx("span",{className:"text-[10px] text-muted-foreground",children:s.label})]},s.label))})]}),e.jsxs("div",{className:"col-span-2 grid grid-cols-2 gap-3",children:[e.jsxs("div",{className:"p-3 rounded-xl bg-muted/10",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx(ae,{className:"h-3.5 w-3.5 text-amber-400"}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"Sprints"})]}),e.jsx("p",{className:"text-lg font-bold",children:C})]}),e.jsxs("div",{className:"p-3 rounded-xl bg-muted/10",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx(re,{className:"h-3.5 w-3.5 text-violet-400"}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"AI Created"})]}),e.jsx("p",{className:"text-lg font-bold",children:t?.tickets.aiCreated??0})]}),e.jsxs("div",{className:"p-3 rounded-xl bg-muted/10",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx(ve,{className:"h-3.5 w-3.5 text-cyan-400"}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"Files Changed"})]}),e.jsx("p",{className:"text-lg font-bold",children:l?.filesChangedCount??0})]}),e.jsxs("div",{className:"p-3 rounded-xl bg-muted/10",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx(F,{className:"h-3.5 w-3.5 text-green-400"}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"Agents"})]}),e.jsxs("p",{className:"text-lg font-bold",children:[J,"/",y.length]})]})]})]})})]}),(t?.velocity.tasks?.length??0)>0&&e.jsxs(p,{className:"glass",children:[e.jsx(I,{className:"pb-2",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs(q,{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(P,{className:"h-4 w-4 text-muted-foreground"}),"Velocity (30 days)"]}),e.jsx("div",{className:"flex items-center gap-4 text-xs text-muted-foreground",children:e.jsxs("span",{children:["Avg: ",e.jsx("strong",{className:"text-foreground",children:t?.velocity.weeklyAvg.created??0}),"/wk"]})})]})}),e.jsx(g,{className:"h-48",children:e.jsx(Le,{data:t?.velocity.tasks??[],showLegend:!0,colors:{created:"#fb7185",completed:"#22c55e"}})})]}),e.jsxs("div",{children:[e.jsx(L,{icon:le,title:"Recent Tasks",href:"/tasks"}),e.jsx(p,{className:"glass",children:e.jsx(g,{className:"p-3",children:x.length>0?e.jsx("div",{className:"space-y-1",children:x.slice(0,5).map(s=>e.jsxs(N,{to:`/tasks/${s.id}`,className:"flex items-center justify-between p-2.5 rounded-xl hover:bg-muted/20 transition-colors group",children:[e.jsxs("div",{className:"flex-1 min-w-0 mr-3",children:[e.jsx("p",{className:"truncate text-sm font-medium group-hover:text-primary transition-colors",children:s.title}),e.jsx("p",{className:"text-[10px] text-muted-foreground uppercase",children:s.source})]}),e.jsx(de,{variant:s.status==="completed"?"success":s.status==="failed"?"destructive":s.status==="in_progress"?"info":"secondary",className:m("text-[10px]",s.status==="in_progress"&&"animate-pulse"),children:s.status.replace("_"," ")})]},s.id))}):e.jsx(K,{icon:T,title:"No tasks yet",action:{label:"Create Task",href:"/tasks?create=true"}})})})]})]}),e.jsxs("div",{className:"lg:col-span-2 space-y-6",children:[e.jsxs("div",{children:[e.jsx(L,{icon:A,title:"Recent Tickets",href:"/tickets"}),e.jsx(p,{className:"glass",children:e.jsx(g,{className:"p-3",children:_.length>0?e.jsx("div",{className:"space-y-1",children:_.slice(0,5).map(s=>e.jsxs(N,{to:`/tickets/${s.id}`,className:"flex items-center gap-2 p-2.5 rounded-xl hover:bg-muted/20 transition-colors group",children:[e.jsxs("span",{className:m("text-[10px] font-mono shrink-0",Te[s.priority]),children:["#",s.sequence]}),e.jsx("p",{className:"truncate text-sm font-medium group-hover:text-primary transition-colors flex-1",children:s.title})]},s.id))}):e.jsx(K,{icon:A,title:"No tickets",action:{label:"Create Ticket",href:"/tickets?create=true"}})})})]}),y.length>0&&e.jsxs("div",{children:[e.jsx(L,{icon:F,title:"AI Agents",href:"/gateway",linkText:"Configure"}),e.jsx(p,{className:"glass",children:e.jsx(g,{className:"p-3",children:e.jsx("div",{className:"space-y-1",children:y.slice(0,4).map(s=>e.jsxs("div",{className:"flex items-center gap-3 p-2.5 rounded-xl bg-muted/5",children:[e.jsx("div",{className:m("h-2 w-2 rounded-full shrink-0",s.health?.healthy?"bg-green-500":"bg-gray-500"),"aria-label":s.health?.healthy?"Healthy":"Offline"}),e.jsx("span",{className:"text-sm font-medium capitalize flex-1",children:s.name||s.type.replace(/-/g," ")}),e.jsx("span",{className:"text-[10px] text-muted-foreground","aria-hidden":"true",children:s.health?.healthy?"Active":"Offline"})]},s.type))})})})]})]})]})]})}export{Me as AnalyticsDashboard};
|