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,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Summary Extractor
|
|
3
|
+
*
|
|
4
|
+
* Extracts structured summaries from agent outputs without
|
|
5
|
+
* requiring additional AI calls (zero-cost extraction).
|
|
6
|
+
*/
|
|
7
|
+
import type { CreateSummaryInput, FileChange, Decision, Blocker, ArtifactReference } from '../types/summary.js';
|
|
8
|
+
import type { TaskResult, TaskArtifact } from '../types/task.js';
|
|
9
|
+
import type { SessionAggregate, HookInference } from '../hooks/types.js';
|
|
10
|
+
export declare const FILE_CREATED_PATTERN: RegExp;
|
|
11
|
+
export declare const FILE_MODIFIED_PATTERN: RegExp;
|
|
12
|
+
export declare const FILE_DELETED_PATTERN: RegExp;
|
|
13
|
+
export declare const COMMIT_SHA_PATTERN: RegExp;
|
|
14
|
+
export declare const PR_URL_PATTERN: RegExp;
|
|
15
|
+
export declare const GITHUB_ISSUE_PATTERN: RegExp;
|
|
16
|
+
export declare const GENERIC_ISSUE_PATTERN: RegExp;
|
|
17
|
+
export declare const BRANCH_PATTERN: RegExp;
|
|
18
|
+
export declare const DECISION_PATTERNS: RegExp[];
|
|
19
|
+
export declare const ERROR_PATTERN: RegExp;
|
|
20
|
+
export declare const WARNING_PATTERN: RegExp;
|
|
21
|
+
export declare const SUMMARY_SECTION_PATTERN: RegExp;
|
|
22
|
+
export declare const WHY_SECTION_PATTERN: RegExp;
|
|
23
|
+
export declare const HOW_SECTION_PATTERN: RegExp;
|
|
24
|
+
/**
|
|
25
|
+
* Extract a summary from a task result
|
|
26
|
+
*/
|
|
27
|
+
export declare function extractFromTaskResult(result: TaskResult, context?: {
|
|
28
|
+
taskId?: string;
|
|
29
|
+
agent?: string;
|
|
30
|
+
model?: string;
|
|
31
|
+
startedAt?: Date;
|
|
32
|
+
}): Promise<CreateSummaryInput>;
|
|
33
|
+
/**
|
|
34
|
+
* Extract a summary from session aggregate
|
|
35
|
+
*/
|
|
36
|
+
export declare function extractFromSession(session: SessionAggregate, inference?: HookInference): CreateSummaryInput;
|
|
37
|
+
/**
|
|
38
|
+
* Extract a summary from raw agent output
|
|
39
|
+
*/
|
|
40
|
+
export declare function extractFromRawOutput(output: string, context?: {
|
|
41
|
+
agent?: string;
|
|
42
|
+
model?: string;
|
|
43
|
+
taskId?: string;
|
|
44
|
+
sessionId?: string;
|
|
45
|
+
}): CreateSummaryInput;
|
|
46
|
+
export declare function extractFileChanges(output: string, artifacts?: TaskArtifact[]): FileChange[];
|
|
47
|
+
export declare function extractDecisions(output: string): Decision[];
|
|
48
|
+
export declare function extractBlockers(output: string, error?: TaskResult['error']): Blocker[];
|
|
49
|
+
export declare function extractArtifacts(output: string, taskArtifacts?: TaskArtifact[]): ArtifactReference[];
|
|
50
|
+
export declare function extractSection(output: string, pattern: RegExp): string | undefined;
|
|
51
|
+
export declare function generateWhatChanged(files: FileChange[], artifacts: ArtifactReference[]): string;
|
|
52
|
+
export declare function isValidFilePath(path: string): boolean;
|
|
53
|
+
export declare function inferTaskType(output: string, files: FileChange[], title?: string): string;
|
|
54
|
+
export declare function inferComponent(files: FileChange[]): string | undefined;
|
|
55
|
+
export declare function generateSmartTitle(whatChanged: string, files: FileChange[], artifacts: ArtifactReference[], taskType: string): string;
|
|
56
|
+
//# sourceMappingURL=extractor.d.ts.map
|
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Summary Extractor
|
|
3
|
+
*
|
|
4
|
+
* Extracts structured summaries from agent outputs without
|
|
5
|
+
* requiring additional AI calls (zero-cost extraction).
|
|
6
|
+
*/
|
|
7
|
+
import { getSettings } from '../settings/index.js';
|
|
8
|
+
import { getOllamaService } from '../intelligence/ollama.js';
|
|
9
|
+
// Patterns for extraction
|
|
10
|
+
export const FILE_CREATED_PATTERN = /(?:created?|added?|wrote?|new file)[:\s]+[`"']?([a-zA-Z0-9_\-\.\/]+\.[a-z0-9]+|(?:\.[a-z0-9_\-]+))[`"']?/gi;
|
|
11
|
+
export const FILE_MODIFIED_PATTERN = /(?:modified?|updated?|changed?|edited?|wrote?)[:\s]+[`"']?([a-zA-Z0-9_\-\.\/]+\.[a-z0-9]+|(?:\.[a-z0-9_\-]+))[`"']?/gi;
|
|
12
|
+
export const FILE_DELETED_PATTERN = /(?:deleted?|removed?)[:\s]+[`"']?([a-zA-Z0-9_\-\.\/]+\.[a-z0-9]+|(?:\.[a-z0-9_\-]+))[`"']?/gi;
|
|
13
|
+
export const COMMIT_SHA_PATTERN = /\b([a-f0-9]{7,40})\b/g;
|
|
14
|
+
export const PR_URL_PATTERN = /https:\/\/(?:github\.com|gitlab\.com)\/[^/]+\/[^/]+\/(?:pull|merge_requests)\/(\d+)/gi;
|
|
15
|
+
export const GITHUB_ISSUE_PATTERN = /#(\d+)/g;
|
|
16
|
+
export const GENERIC_ISSUE_PATTERN = /\b([A-Z]{2,10}-\d+)\b/g;
|
|
17
|
+
export const BRANCH_PATTERN = /(?:branch|checkout|switch|on)[:\s]+[`"']?([a-zA-Z0-9_\-./]+)[`"']?/gi;
|
|
18
|
+
export const DECISION_PATTERNS = [
|
|
19
|
+
/(?:decided?|chose?|opted?|selected?|used|implemented)(?:\s+to)?[:\s]+(.+?)(?:\.|\n|$)/gi,
|
|
20
|
+
/(?:instead of|rather than)[:\s]+(.+?)(?:,|\.|\n|$)/gi,
|
|
21
|
+
];
|
|
22
|
+
export const ERROR_PATTERN = /(?:error|failed?|couldn't|cannot|issue)[:\s]+(.+?)(?:\.|$)/gi;
|
|
23
|
+
export const WARNING_PATTERN = /(?:warning|warn|caution)[:\s]+(.+?)(?:\.|$)/gi;
|
|
24
|
+
export const SUMMARY_SECTION_PATTERN = /##?\s*(?:summary|what changed|changes)[:\s]*\n([\s\S]*?)(?=\n##|$)/i;
|
|
25
|
+
export const WHY_SECTION_PATTERN = /##?\s*(?:why|motivation|reason)[:\s]*\n([\s\S]*?)(?=\n##|$)/i;
|
|
26
|
+
export const HOW_SECTION_PATTERN = /##?\s*(?:how|approach|implementation)[:\s]*\n([\s\S]*?)(?=\n##|$)/i;
|
|
27
|
+
const TASK_TYPE_KEYWORDS = {
|
|
28
|
+
bug_fix: ['fix', 'bug', 'issue', 'error', 'crash', 'broken', 'repair', 'patch', 'resolve'],
|
|
29
|
+
feature: ['add', 'new', 'implement', 'create', 'feature', 'introduce', 'enable'],
|
|
30
|
+
refactor: ['refactor', 'restructure', 'reorganize', 'clean', 'improve', 'simplify', 'extract'],
|
|
31
|
+
documentation: ['docs', 'documentation', 'readme', 'comment', 'jsdoc', 'typedoc', 'explain'],
|
|
32
|
+
test: ['test', 'spec', 'coverage', 'mock', 'stub', 'jest', 'vitest', 'testing'],
|
|
33
|
+
performance: ['performance', 'perf', 'speed', 'optimize', 'cache', 'lazy', 'faster', 'memory'],
|
|
34
|
+
security: ['security', 'auth', 'password', 'permission', 'vulnerability', 'xss', 'csrf', 'token', 'encrypt'],
|
|
35
|
+
chore: ['chore', 'upgrade', 'dependency', 'package', 'version', 'config', 'lint', 'build', 'gitignore'],
|
|
36
|
+
};
|
|
37
|
+
const COMPONENT_PATTERNS = [
|
|
38
|
+
{ pattern: /\/(components?|ui)\//i, component: 'ui' },
|
|
39
|
+
{ pattern: /\/(views?|pages?|screens?)\//i, component: 'views' },
|
|
40
|
+
{ pattern: /\/(api|routes?|endpoints?)\//i, component: 'api' },
|
|
41
|
+
{ pattern: /\/(utils?|helpers?|lib)\//i, component: 'utils' },
|
|
42
|
+
{ pattern: /\/(hooks?)\//i, component: 'hooks' },
|
|
43
|
+
{ pattern: /\/(store|state|redux|context)\//i, component: 'state' },
|
|
44
|
+
{ pattern: /\/(types?|interfaces?)\//i, component: 'types' },
|
|
45
|
+
{ pattern: /\/(tests?|specs?|__tests__)\//i, component: 'tests' },
|
|
46
|
+
{ pattern: /\/(styles?|css|scss)\//i, component: 'styles' },
|
|
47
|
+
{ pattern: /\/(auth|authentication|login)\//i, component: 'auth' },
|
|
48
|
+
{ pattern: /\/(database|db|storage|models?)\//i, component: 'database' },
|
|
49
|
+
{ pattern: /\/(config|settings)\//i, component: 'config' },
|
|
50
|
+
];
|
|
51
|
+
/**
|
|
52
|
+
* Extract a summary from a task result
|
|
53
|
+
*/
|
|
54
|
+
export async function extractFromTaskResult(result, context) {
|
|
55
|
+
const settings = await getSettings();
|
|
56
|
+
if (settings.aiProvider?.defaultProvider === 'ollama') {
|
|
57
|
+
const ollama = getOllamaService();
|
|
58
|
+
const summary = await ollama.generateSummary(result, { taskId: context?.taskId, agent: context?.agent, model: context?.model });
|
|
59
|
+
return {
|
|
60
|
+
...summary,
|
|
61
|
+
taskId: context?.taskId,
|
|
62
|
+
agent: context?.agent || 'ollama',
|
|
63
|
+
model: context?.model,
|
|
64
|
+
rawOutput: result.output,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
const output = result.output || '';
|
|
68
|
+
const summary = extractFromRawOutput(output, {
|
|
69
|
+
taskId: context?.taskId,
|
|
70
|
+
agent: context?.agent,
|
|
71
|
+
model: context?.model,
|
|
72
|
+
});
|
|
73
|
+
if (result.error) {
|
|
74
|
+
summary.blockers = [
|
|
75
|
+
...(summary.blockers || []),
|
|
76
|
+
{ description: result.error.message, severity: 'error', resolved: false },
|
|
77
|
+
];
|
|
78
|
+
}
|
|
79
|
+
return summary;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Extract a summary from session aggregate
|
|
83
|
+
*/
|
|
84
|
+
export function extractFromSession(session, inference) {
|
|
85
|
+
let filesChanged = [];
|
|
86
|
+
if (session.filesCreated?.length || session.filesModified?.length) {
|
|
87
|
+
filesChanged = [
|
|
88
|
+
...(session.filesCreated || []).map(path => ({ path, action: 'created' })),
|
|
89
|
+
...(session.filesModified || []).map(path => ({ path, action: 'modified' }))
|
|
90
|
+
];
|
|
91
|
+
}
|
|
92
|
+
else if (session.summary) {
|
|
93
|
+
filesChanged = extractFileChanges(session.summary);
|
|
94
|
+
}
|
|
95
|
+
const artifacts = session.summary ? extractArtifacts(session.summary) : [];
|
|
96
|
+
const whatChanged = inference?.commitMessage
|
|
97
|
+
|| (session.summary ? generateWhatChanged(filesChanged, artifacts) : 'Session activity');
|
|
98
|
+
const taskType = inference?.taskType || (session.summary ? inferTaskType(session.summary, filesChanged) : 'chore');
|
|
99
|
+
const title = inference?.commitMessage || generateSmartTitle(whatChanged, filesChanged, artifacts, taskType);
|
|
100
|
+
return {
|
|
101
|
+
sessionId: session.sessionId,
|
|
102
|
+
agent: 'claude-code',
|
|
103
|
+
startedAt: session.startTime,
|
|
104
|
+
completedAt: session.endTime,
|
|
105
|
+
durationMs: session.endTime && session.startTime
|
|
106
|
+
? session.endTime.getTime() - session.startTime.getTime()
|
|
107
|
+
: undefined,
|
|
108
|
+
title,
|
|
109
|
+
whatChanged,
|
|
110
|
+
filesChanged,
|
|
111
|
+
taskType,
|
|
112
|
+
component: inference?.component,
|
|
113
|
+
linkedIssue: inference?.linkedIssue,
|
|
114
|
+
linkedPr: inference?.linkedPr,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Extract a summary from raw agent output
|
|
119
|
+
*/
|
|
120
|
+
export function extractFromRawOutput(output, context) {
|
|
121
|
+
const filesChanged = extractFileChanges(output);
|
|
122
|
+
const decisions = extractDecisions(output);
|
|
123
|
+
const blockers = extractBlockers(output);
|
|
124
|
+
const artifacts = extractArtifacts(output);
|
|
125
|
+
const whatChanged = extractSection(output, SUMMARY_SECTION_PATTERN) ||
|
|
126
|
+
generateWhatChanged(filesChanged, artifacts);
|
|
127
|
+
const whyChanged = extractSection(output, WHY_SECTION_PATTERN);
|
|
128
|
+
const howChanged = extractSection(output, HOW_SECTION_PATTERN);
|
|
129
|
+
const taskType = inferTaskType(output, filesChanged);
|
|
130
|
+
const component = inferComponent(filesChanged);
|
|
131
|
+
const title = generateSmartTitle(whatChanged, filesChanged, artifacts, taskType);
|
|
132
|
+
const linkedPr = artifacts.find(a => a.type === 'pull_request')?.url;
|
|
133
|
+
const linkedIssue = artifacts.find(a => a.identifier && /^[A-Z]{2,10}-\d+$/.test(a.identifier))?.identifier
|
|
134
|
+
|| artifacts.find(a => a.type === 'other' && a.title === 'Issue')?.identifier;
|
|
135
|
+
return {
|
|
136
|
+
taskId: context?.taskId,
|
|
137
|
+
sessionId: context?.sessionId,
|
|
138
|
+
agent: context?.agent || 'unknown',
|
|
139
|
+
model: context?.model,
|
|
140
|
+
title,
|
|
141
|
+
whatChanged,
|
|
142
|
+
whyChanged,
|
|
143
|
+
howChanged,
|
|
144
|
+
filesChanged,
|
|
145
|
+
decisions,
|
|
146
|
+
blockers,
|
|
147
|
+
artifacts,
|
|
148
|
+
taskType,
|
|
149
|
+
component,
|
|
150
|
+
linkedIssue,
|
|
151
|
+
linkedPr,
|
|
152
|
+
rawOutput: output,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
export function extractFileChanges(output, artifacts) {
|
|
156
|
+
const changes = [];
|
|
157
|
+
const seen = new Set();
|
|
158
|
+
if (artifacts) {
|
|
159
|
+
for (const a of artifacts) {
|
|
160
|
+
if (a.type === 'file' && a.path && !seen.has(a.path)) {
|
|
161
|
+
seen.add(a.path);
|
|
162
|
+
changes.push({ path: a.path, action: 'modified' });
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
const addFromPattern = (pattern, action) => {
|
|
167
|
+
let match;
|
|
168
|
+
pattern.lastIndex = 0;
|
|
169
|
+
while ((match = pattern.exec(output)) !== null) {
|
|
170
|
+
const path = match[1];
|
|
171
|
+
if (path && !seen.has(path) && isValidFilePath(path)) {
|
|
172
|
+
seen.add(path);
|
|
173
|
+
changes.push({ path, action });
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
addFromPattern(FILE_CREATED_PATTERN, 'created');
|
|
178
|
+
addFromPattern(FILE_MODIFIED_PATTERN, 'modified');
|
|
179
|
+
addFromPattern(FILE_DELETED_PATTERN, 'deleted');
|
|
180
|
+
return changes;
|
|
181
|
+
}
|
|
182
|
+
export function extractDecisions(output) {
|
|
183
|
+
const decisions = [];
|
|
184
|
+
for (const pattern of DECISION_PATTERNS) {
|
|
185
|
+
pattern.lastIndex = 0;
|
|
186
|
+
let match;
|
|
187
|
+
while ((match = pattern.exec(output)) !== null) {
|
|
188
|
+
const description = match[1].trim();
|
|
189
|
+
if (description.length > 5 && description.length < 500) {
|
|
190
|
+
decisions.push({ description });
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return decisions.slice(0, 10);
|
|
195
|
+
}
|
|
196
|
+
export function extractBlockers(output, error) {
|
|
197
|
+
const blockers = [];
|
|
198
|
+
if (error) {
|
|
199
|
+
blockers.push({ description: error.message, severity: 'error', resolved: false });
|
|
200
|
+
}
|
|
201
|
+
ERROR_PATTERN.lastIndex = 0;
|
|
202
|
+
let match;
|
|
203
|
+
while ((match = ERROR_PATTERN.exec(output)) !== null) {
|
|
204
|
+
const d = match[1].trim();
|
|
205
|
+
if (d.length > 2)
|
|
206
|
+
blockers.push({ description: d, severity: 'error', resolved: true });
|
|
207
|
+
}
|
|
208
|
+
WARNING_PATTERN.lastIndex = 0;
|
|
209
|
+
while ((match = WARNING_PATTERN.exec(output)) !== null) {
|
|
210
|
+
const d = match[1].trim();
|
|
211
|
+
if (d.length > 2)
|
|
212
|
+
blockers.push({ description: d, severity: 'warning', resolved: true });
|
|
213
|
+
}
|
|
214
|
+
return blockers.slice(0, 10);
|
|
215
|
+
}
|
|
216
|
+
export function extractArtifacts(output, taskArtifacts) {
|
|
217
|
+
const artifacts = [];
|
|
218
|
+
const seen = new Set();
|
|
219
|
+
if (taskArtifacts) {
|
|
220
|
+
for (const a of taskArtifacts) {
|
|
221
|
+
const key = `${a.type}:${a.url || a.sha || a.path}`;
|
|
222
|
+
if (!seen.has(key)) {
|
|
223
|
+
seen.add(key);
|
|
224
|
+
artifacts.push({ type: a.type, url: a.url, identifier: a.sha });
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
PR_URL_PATTERN.lastIndex = 0;
|
|
229
|
+
let match;
|
|
230
|
+
while ((match = PR_URL_PATTERN.exec(output)) !== null) {
|
|
231
|
+
const key = `pr:${match[1]}`;
|
|
232
|
+
if (!seen.has(key)) {
|
|
233
|
+
seen.add(key);
|
|
234
|
+
artifacts.push({ type: 'pull_request', url: match[0], identifier: match[1] });
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
COMMIT_SHA_PATTERN.lastIndex = 0;
|
|
238
|
+
while ((match = COMMIT_SHA_PATTERN.exec(output)) !== null) {
|
|
239
|
+
const sha = match[1];
|
|
240
|
+
if (sha.length >= 7 && !seen.has(`commit:${sha}`)) {
|
|
241
|
+
seen.add(`commit:${sha}`);
|
|
242
|
+
artifacts.push({ type: 'commit', identifier: sha });
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
GENERIC_ISSUE_PATTERN.lastIndex = 0;
|
|
246
|
+
while ((match = GENERIC_ISSUE_PATTERN.exec(output)) !== null) {
|
|
247
|
+
const issueId = match[1];
|
|
248
|
+
if (!seen.has(`issue:${issueId}`)) {
|
|
249
|
+
seen.add(`issue:${issueId}`);
|
|
250
|
+
artifacts.push({ type: 'other', identifier: issueId, title: 'Issue' });
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
return artifacts;
|
|
254
|
+
}
|
|
255
|
+
export function extractSection(output, pattern) {
|
|
256
|
+
const match = output.match(pattern);
|
|
257
|
+
return match && match[1] ? match[1].trim().slice(0, 1000) : undefined;
|
|
258
|
+
}
|
|
259
|
+
export function generateWhatChanged(files, artifacts) {
|
|
260
|
+
const parts = [];
|
|
261
|
+
const created = files.filter(f => f.action === 'created');
|
|
262
|
+
const modified = files.filter(f => f.action === 'modified');
|
|
263
|
+
const deleted = files.filter(f => f.action === 'deleted');
|
|
264
|
+
if (created.length > 0)
|
|
265
|
+
parts.push(`Created ${created.length} file(s)`);
|
|
266
|
+
if (modified.length > 0)
|
|
267
|
+
parts.push(`Modified ${modified.length} file(s)`);
|
|
268
|
+
if (deleted.length > 0)
|
|
269
|
+
parts.push(`Deleted ${deleted.length} file(s)`);
|
|
270
|
+
const prs = artifacts.filter(a => a.type === 'pull_request');
|
|
271
|
+
if (prs.length > 0)
|
|
272
|
+
parts.push(`Created ${prs.length} PR(s)`);
|
|
273
|
+
return parts.join('. ') || 'No changes detected';
|
|
274
|
+
}
|
|
275
|
+
export function isValidFilePath(path) {
|
|
276
|
+
const hasExtension = /\.[a-zA-Z0-9]+$/.test(path);
|
|
277
|
+
const isConfig = /^\.?[a-zA-Z]+rc|config|package\.json|tsconfig|\.gitignore/i.test(path);
|
|
278
|
+
const isValidChars = /^[a-zA-Z0-9_./-]+$/.test(path);
|
|
279
|
+
return isValidChars && (hasExtension || isConfig) && path.length < 200;
|
|
280
|
+
}
|
|
281
|
+
export function inferTaskType(output, files, title) {
|
|
282
|
+
const text = `${title || ''} ${output}`.toLowerCase();
|
|
283
|
+
const scores = {};
|
|
284
|
+
for (const [taskType, keywords] of Object.entries(TASK_TYPE_KEYWORDS)) {
|
|
285
|
+
scores[taskType] = 0;
|
|
286
|
+
for (const keyword of keywords) {
|
|
287
|
+
const regex = new RegExp(`\\b${keyword}\\b`, 'gi');
|
|
288
|
+
const matches = text.match(regex);
|
|
289
|
+
if (matches)
|
|
290
|
+
scores[taskType] += matches.length;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
for (const file of files) {
|
|
294
|
+
if (/\.test\.|\.spec\.|__tests__/i.test(file.path))
|
|
295
|
+
scores.test = (scores.test || 0) + 2;
|
|
296
|
+
if (/\.md$|readme|docs?\//i.test(file.path))
|
|
297
|
+
scores.documentation = (scores.documentation || 0) + 2;
|
|
298
|
+
if (/\.gitignore|config|package\.json/i.test(file.path))
|
|
299
|
+
scores.chore = (scores.chore || 0) + 2;
|
|
300
|
+
}
|
|
301
|
+
let max = 0, type = 'feature';
|
|
302
|
+
for (const [t, s] of Object.entries(scores)) {
|
|
303
|
+
if (s > max) {
|
|
304
|
+
max = s;
|
|
305
|
+
type = t;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
return max > 0 ? type : 'feature';
|
|
309
|
+
}
|
|
310
|
+
export function inferComponent(files) {
|
|
311
|
+
if (files.length === 0)
|
|
312
|
+
return undefined;
|
|
313
|
+
const counts = {};
|
|
314
|
+
for (const file of files) {
|
|
315
|
+
for (const { pattern, component } of COMPONENT_PATTERNS) {
|
|
316
|
+
if (pattern.test(file.path)) {
|
|
317
|
+
counts[component] = (counts[component] || 0) + 1;
|
|
318
|
+
break;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
let max = 0, primary;
|
|
323
|
+
for (const [c, count] of Object.entries(counts)) {
|
|
324
|
+
if (count > max) {
|
|
325
|
+
max = count;
|
|
326
|
+
primary = c;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
return primary;
|
|
330
|
+
}
|
|
331
|
+
export function generateSmartTitle(whatChanged, files, artifacts, taskType) {
|
|
332
|
+
const typePrefix = {
|
|
333
|
+
bug_fix: 'Fix',
|
|
334
|
+
feature: 'Add',
|
|
335
|
+
refactor: 'Refactor',
|
|
336
|
+
documentation: 'Document',
|
|
337
|
+
test: 'Test',
|
|
338
|
+
performance: 'Optimize',
|
|
339
|
+
security: 'Secure',
|
|
340
|
+
chore: 'Update',
|
|
341
|
+
};
|
|
342
|
+
const prefix = typePrefix[taskType] || 'Update';
|
|
343
|
+
if (files.length === 0 && artifacts.length > 0) {
|
|
344
|
+
const pr = artifacts.find(a => a.type === 'pull_request');
|
|
345
|
+
if (pr)
|
|
346
|
+
return `Create PR #${pr.identifier}`;
|
|
347
|
+
}
|
|
348
|
+
if (files.length > 0) {
|
|
349
|
+
const paths = files.map(f => f.path);
|
|
350
|
+
const commonDir = findCommonDir(paths);
|
|
351
|
+
if (commonDir && files.length > 1) {
|
|
352
|
+
const dirName = commonDir.split('/').pop() || commonDir;
|
|
353
|
+
return `${prefix} ${dirName} (${files.length} files)`;
|
|
354
|
+
}
|
|
355
|
+
const fileName = files[0].path.split('/').pop() || files[0].path;
|
|
356
|
+
const cleanName = fileName.replace(/\.[^/.]+$/, '');
|
|
357
|
+
return `${prefix} ${cleanName || fileName}`;
|
|
358
|
+
}
|
|
359
|
+
return prefix;
|
|
360
|
+
}
|
|
361
|
+
function findCommonDir(paths) {
|
|
362
|
+
if (paths.length <= 1)
|
|
363
|
+
return undefined;
|
|
364
|
+
const parts = paths[0].split('/');
|
|
365
|
+
if (parts.length <= 1)
|
|
366
|
+
return undefined;
|
|
367
|
+
let common = parts.slice(0, -1);
|
|
368
|
+
for (let i = 1; i < paths.length; i++) {
|
|
369
|
+
const current = paths[i].split('/').slice(0, -1);
|
|
370
|
+
let j = 0;
|
|
371
|
+
while (j < common.length && j < current.length && common[j] === current[j])
|
|
372
|
+
j++;
|
|
373
|
+
common = common.slice(0, j);
|
|
374
|
+
}
|
|
375
|
+
return common.length > 0 ? common.join('/') : undefined;
|
|
376
|
+
}
|
|
377
|
+
//# sourceMappingURL=extractor.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured Summaries Module
|
|
3
|
+
*
|
|
4
|
+
* Provides functionality for extracting, storing, and querying
|
|
5
|
+
* structured summaries from AI agent task executions.
|
|
6
|
+
*
|
|
7
|
+
* Phase 7: Structured Summaries
|
|
8
|
+
*/
|
|
9
|
+
export { createSummary, getSummary, getTaskSummaries, getSessionSummaries, querySummaries, searchSummaries, getSummaryStats, getRecentSummaries, deleteSummary, clearAllSummaries, } from './storage.js';
|
|
10
|
+
export { extractFromTaskResult, extractFromSession, extractFromRawOutput, } from './extractor.js';
|
|
11
|
+
export type { Summary, CreateSummaryInput, SummaryQuery, SummaryStats, FileChange, Decision, Blocker, Artifact, TokenUsage, Cost, } from '../types/summary.js';
|
|
12
|
+
export { SummarySchema, CreateSummaryInputSchema, SummaryQuerySchema, } from '../types/summary.js';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured Summaries Module
|
|
3
|
+
*
|
|
4
|
+
* Provides functionality for extracting, storing, and querying
|
|
5
|
+
* structured summaries from AI agent task executions.
|
|
6
|
+
*
|
|
7
|
+
* Phase 7: Structured Summaries
|
|
8
|
+
*/
|
|
9
|
+
// Storage operations
|
|
10
|
+
export { createSummary, getSummary, getTaskSummaries, getSessionSummaries, querySummaries, searchSummaries, getSummaryStats, getRecentSummaries, deleteSummary, clearAllSummaries, } from './storage.js';
|
|
11
|
+
// Extraction functions
|
|
12
|
+
export { extractFromTaskResult, extractFromSession, extractFromRawOutput, } from './extractor.js';
|
|
13
|
+
export { SummarySchema, CreateSummaryInputSchema, SummaryQuerySchema, } from '../types/summary.js';
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Summary Storage Wrapper
|
|
3
|
+
*
|
|
4
|
+
* Re-routes summary operations to the persistent storage module.
|
|
5
|
+
*/
|
|
6
|
+
import type { Summary, CreateSummaryInput, SummaryQuery, SummaryStats } from '../types/summary.js';
|
|
7
|
+
/**
|
|
8
|
+
* Create a new summary
|
|
9
|
+
*/
|
|
10
|
+
export declare function createSummary(input: CreateSummaryInput): Promise<Summary>;
|
|
11
|
+
/**
|
|
12
|
+
* Get a summary by ID
|
|
13
|
+
* @param includeRawOutput - If true, fetches raw output from blob storage (lazy load)
|
|
14
|
+
*/
|
|
15
|
+
export declare function getSummary(id: string, includeRawOutput?: boolean): Promise<Summary | null>;
|
|
16
|
+
/**
|
|
17
|
+
* Get summaries for a task
|
|
18
|
+
*/
|
|
19
|
+
export declare function getTaskSummaries(taskId: string): Promise<Summary[]>;
|
|
20
|
+
/**
|
|
21
|
+
* Get summaries for a session
|
|
22
|
+
*/
|
|
23
|
+
export declare function getSessionSummaries(sessionId: string): Promise<Summary[]>;
|
|
24
|
+
/**
|
|
25
|
+
* Query summaries with filters
|
|
26
|
+
*/
|
|
27
|
+
export declare function querySummaries(query: Partial<SummaryQuery>): Promise<{
|
|
28
|
+
summaries: Summary[];
|
|
29
|
+
total: number;
|
|
30
|
+
}>;
|
|
31
|
+
/**
|
|
32
|
+
* Search summaries by text
|
|
33
|
+
*/
|
|
34
|
+
export declare function searchSummaries(searchText: string, limit?: number): Promise<Summary[]>;
|
|
35
|
+
/**
|
|
36
|
+
* Get summary statistics
|
|
37
|
+
*/
|
|
38
|
+
export declare function getSummaryStats(): Promise<SummaryStats>;
|
|
39
|
+
/**
|
|
40
|
+
* Get recent summaries
|
|
41
|
+
*/
|
|
42
|
+
export declare function getRecentSummaries(limit?: number): Promise<Summary[]>;
|
|
43
|
+
/**
|
|
44
|
+
* Delete a summary
|
|
45
|
+
*/
|
|
46
|
+
export declare function deleteSummary(id: string): Promise<boolean>;
|
|
47
|
+
/**
|
|
48
|
+
* Clear all summaries (for testing)
|
|
49
|
+
*/
|
|
50
|
+
export declare function clearAllSummaries(): Promise<void>;
|
|
51
|
+
//# sourceMappingURL=storage.d.ts.map
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Summary Storage Wrapper
|
|
3
|
+
*
|
|
4
|
+
* Re-routes summary operations to the persistent storage module.
|
|
5
|
+
*/
|
|
6
|
+
import { getStorage } from '../storage/index.js';
|
|
7
|
+
import { getEmbeddingService } from '../ai/embedding-service.js';
|
|
8
|
+
import { logger } from '../utils/logger.js';
|
|
9
|
+
import { randomUUID } from 'crypto';
|
|
10
|
+
/**
|
|
11
|
+
* Create a new summary
|
|
12
|
+
*/
|
|
13
|
+
export async function createSummary(input) {
|
|
14
|
+
const summary = await getStorage().createSummary(input);
|
|
15
|
+
// Trigger embedding generation in background
|
|
16
|
+
generateAndStoreSummaryEmbedding(summary).catch(err => {
|
|
17
|
+
logger.error(`[Storage] Failed to generate embedding for summary ${summary.id}:`, err);
|
|
18
|
+
});
|
|
19
|
+
return summary;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Background task to generate and store entity embedding
|
|
23
|
+
*/
|
|
24
|
+
async function generateAndStoreSummaryEmbedding(summary) {
|
|
25
|
+
const service = getEmbeddingService();
|
|
26
|
+
const storage = getStorage();
|
|
27
|
+
if (!storage.storeEmbedding)
|
|
28
|
+
return;
|
|
29
|
+
// Combine key fields for better semantic representation
|
|
30
|
+
const textToIndex = `
|
|
31
|
+
Title: ${summary.title}
|
|
32
|
+
Changes: ${summary.whatChanged}
|
|
33
|
+
Rationale: ${summary.whyChanged || ''}
|
|
34
|
+
Decisions: ${summary.decisions.map(d => d.description).join(', ')}
|
|
35
|
+
Type: ${summary.taskType || ''}
|
|
36
|
+
Component: ${summary.component || ''}
|
|
37
|
+
`.trim();
|
|
38
|
+
const embedding = await service.generateEmbedding(textToIndex);
|
|
39
|
+
await storage.storeEmbedding(randomUUID(), 'summary', summary.id, embedding, 'semantic-v1');
|
|
40
|
+
logger.debug(`[Storage] Stored embedding for summary ${summary.id}`);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Get a summary by ID
|
|
44
|
+
* @param includeRawOutput - If true, fetches raw output from blob storage (lazy load)
|
|
45
|
+
*/
|
|
46
|
+
export async function getSummary(id, includeRawOutput = false) {
|
|
47
|
+
return await getStorage().getSummary(id, includeRawOutput);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get summaries for a task
|
|
51
|
+
*/
|
|
52
|
+
export async function getTaskSummaries(taskId) {
|
|
53
|
+
return await getStorage().getTaskSummaries(taskId);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Get summaries for a session
|
|
57
|
+
*/
|
|
58
|
+
export async function getSessionSummaries(sessionId) {
|
|
59
|
+
const result = await getStorage().querySummaries({ sessionId });
|
|
60
|
+
return result.summaries;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Query summaries with filters
|
|
64
|
+
*/
|
|
65
|
+
export async function querySummaries(query) {
|
|
66
|
+
return await getStorage().querySummaries(query);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Search summaries by text
|
|
70
|
+
*/
|
|
71
|
+
export async function searchSummaries(searchText, limit = 20) {
|
|
72
|
+
const result = await getStorage().querySummaries({ search: searchText, limit });
|
|
73
|
+
return result.summaries;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Get summary statistics
|
|
77
|
+
*/
|
|
78
|
+
export async function getSummaryStats() {
|
|
79
|
+
return await getStorage().getSummaryStats();
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Get recent summaries
|
|
83
|
+
*/
|
|
84
|
+
export async function getRecentSummaries(limit = 50) {
|
|
85
|
+
const result = await getStorage().querySummaries({ limit });
|
|
86
|
+
return result.summaries;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Delete a summary
|
|
90
|
+
*/
|
|
91
|
+
export async function deleteSummary(id) {
|
|
92
|
+
return await getStorage().deleteSummary(id);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Clear all summaries (for testing)
|
|
96
|
+
*/
|
|
97
|
+
export async function clearAllSummaries() {
|
|
98
|
+
// Not implemented in production storage for safety
|
|
99
|
+
console.warn('[Storage] clearAllSummaries called but not implemented for persistent storage');
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=storage.js.map
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { Summary } from '../types/summary.js';
|
|
2
|
+
/**
|
|
3
|
+
* Summary Templates - Generate formatted output from task summaries
|
|
4
|
+
*
|
|
5
|
+
* Supports:
|
|
6
|
+
* - PR descriptions (GitHub, GitLab, Bitbucket)
|
|
7
|
+
* - Changelog entries (Keep a Changelog format)
|
|
8
|
+
* - Release notes
|
|
9
|
+
* - Commit messages (Conventional Commits)
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Task type templates with conventional commit prefixes and changelog categories
|
|
13
|
+
*/
|
|
14
|
+
export declare const TASK_TYPE_TEMPLATES: Record<string, {
|
|
15
|
+
title: string;
|
|
16
|
+
prPrefix: string;
|
|
17
|
+
changelogCategory: 'Added' | 'Changed' | 'Fixed' | 'Removed' | 'Security' | 'Deprecated';
|
|
18
|
+
emoji: string;
|
|
19
|
+
}>;
|
|
20
|
+
/**
|
|
21
|
+
* PR description format options
|
|
22
|
+
*/
|
|
23
|
+
export interface PRDescriptionOptions {
|
|
24
|
+
format?: 'github' | 'gitlab' | 'bitbucket' | 'simple';
|
|
25
|
+
includeFileChanges?: boolean;
|
|
26
|
+
includeDecisions?: boolean;
|
|
27
|
+
includeBlockers?: boolean;
|
|
28
|
+
includeTokenStats?: boolean;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Generate a GitHub-formatted Pull Request description from a summary
|
|
32
|
+
*/
|
|
33
|
+
export declare function generatePRDescription(summary: Summary, options?: PRDescriptionOptions): string;
|
|
34
|
+
/**
|
|
35
|
+
* Changelog options
|
|
36
|
+
*/
|
|
37
|
+
export interface ChangelogOptions {
|
|
38
|
+
version?: string;
|
|
39
|
+
date?: string;
|
|
40
|
+
format?: 'keepachangelog' | 'simple' | 'grouped';
|
|
41
|
+
includeIssueLinks?: boolean;
|
|
42
|
+
issueLinkBase?: string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Generate a release changelog from a collection of summaries
|
|
46
|
+
* Uses Keep a Changelog format by default
|
|
47
|
+
*/
|
|
48
|
+
export declare function generateChangelog(summaries: Summary[], options?: ChangelogOptions | string): string;
|
|
49
|
+
/**
|
|
50
|
+
* Generate release notes from summaries
|
|
51
|
+
*/
|
|
52
|
+
export declare function generateReleaseNotes(summaries: Summary[], options?: {
|
|
53
|
+
version: string;
|
|
54
|
+
title?: string;
|
|
55
|
+
includeStats?: boolean;
|
|
56
|
+
}): string;
|
|
57
|
+
/**
|
|
58
|
+
* Get conventional commit prefix for a task type
|
|
59
|
+
*/
|
|
60
|
+
export declare function getConventionalCommitPrefix(taskType: string): string;
|
|
61
|
+
/**
|
|
62
|
+
* Generate a conventional commit message from a summary
|
|
63
|
+
*/
|
|
64
|
+
export declare function generateCommitMessage(summary: Summary, options?: {
|
|
65
|
+
maxLength?: number;
|
|
66
|
+
includeBody?: boolean;
|
|
67
|
+
}): string;
|
|
68
|
+
//# sourceMappingURL=templates.d.ts.map
|