@superblocksteam/vite-plugin-file-sync 2.0.77 → 2.0.78-next.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/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts.map +1 -1
- package/dist/ai-service/agent/prompts/build-base-system-prompt.js +26 -0
- package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
- package/dist/ai-service/agent/tool-message-utils.d.ts.map +1 -1
- package/dist/ai-service/agent/tool-message-utils.js +13 -0
- package/dist/ai-service/agent/tool-message-utils.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/api-executor.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/api-executor.js +102 -7
- package/dist/ai-service/agent/tools/apis/api-executor.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/build-api-artifact.d.ts +17 -0
- package/dist/ai-service/agent/tools/apis/build-api-artifact.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/build-api-artifact.js +20 -12
- package/dist/ai-service/agent/tools/apis/build-api-artifact.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/build-api.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/build-api.js +9 -1
- package/dist/ai-service/agent/tools/apis/build-api.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/get-api-docs.d.ts +46 -0
- package/dist/ai-service/agent/tools/apis/get-api-docs.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/get-api-docs.js +326 -58
- package/dist/ai-service/agent/tools/apis/get-api-docs.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/integration-types.d.ts +20 -1
- package/dist/ai-service/agent/tools/apis/integration-types.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/integration-types.js +1033 -288
- package/dist/ai-service/agent/tools/apis/integration-types.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/test-api.d.ts +1 -1
- package/dist/ai-service/agent/tools/apis/write-api.d.ts +2 -2
- package/dist/ai-service/agent/tools/build-manage-checklist.d.ts +1 -1
- package/dist/ai-service/agent/tools/build-read-file.d.ts +1 -1
- package/dist/ai-service/agent/tools/integrations/execute-request.d.ts +1 -1
- package/dist/ai-service/agent/tools/integrations/metadata.js +1 -1
- package/dist/ai-service/agent/tools/integrations/metadata.js.map +1 -1
- package/dist/ai-service/agent/tools.d.ts.map +1 -1
- package/dist/ai-service/agent/tools.js +18 -10
- package/dist/ai-service/agent/tools.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/ask-multi-choice.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/ask-multi-choice.js +11 -7
- package/dist/ai-service/agent/tools2/tools/ask-multi-choice.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js +27 -5
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/grep-metadata-ripgrep.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/grep-metadata-ripgrep.js +78 -7
- package/dist/ai-service/agent/tools2/tools/grep-metadata-ripgrep.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/grep-metadata.d.ts +6 -2
- package/dist/ai-service/agent/tools2/tools/grep-metadata.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/grep-metadata.js +26 -0
- package/dist/ai-service/agent/tools2/tools/grep-metadata.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/index.d.ts +2 -0
- package/dist/ai-service/agent/tools2/tools/index.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/index.js +2 -0
- package/dist/ai-service/agent/tools2/tools/index.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/list-attachments.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/list-attachments.js +2 -3
- package/dist/ai-service/agent/tools2/tools/list-attachments.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/start-test-run.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/start-test-run.js +51 -6
- package/dist/ai-service/agent/tools2/tools/start-test-run.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/web-fetch.d.ts +28 -0
- package/dist/ai-service/agent/tools2/tools/web-fetch.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/web-fetch.js +274 -0
- package/dist/ai-service/agent/tools2/tools/web-fetch.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/web-search.d.ts +25 -0
- package/dist/ai-service/agent/tools2/tools/web-search.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/web-search.js +210 -0
- package/dist/ai-service/agent/tools2/tools/web-search.js.map +1 -0
- package/dist/ai-service/attachments/store.d.ts +4 -4
- package/dist/ai-service/attachments/store.d.ts.map +1 -1
- package/dist/ai-service/attachments/store.js.map +1 -1
- package/dist/ai-service/chat/chat-session-store.d.ts +19 -4
- package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
- package/dist/ai-service/chat/chat-session-store.js +32 -6
- package/dist/ai-service/chat/chat-session-store.js.map +1 -1
- package/dist/ai-service/clark-provider/clark-language-model.d.ts.map +1 -1
- package/dist/ai-service/clark-provider/clark-language-model.js +11 -2
- package/dist/ai-service/clark-provider/clark-language-model.js.map +1 -1
- package/dist/ai-service/const.d.ts +3 -2
- package/dist/ai-service/const.d.ts.map +1 -1
- package/dist/ai-service/const.js +3 -2
- package/dist/ai-service/const.js.map +1 -1
- package/dist/ai-service/context-download.d.ts +4 -1
- package/dist/ai-service/context-download.d.ts.map +1 -1
- package/dist/ai-service/context-download.js +36 -7
- package/dist/ai-service/context-download.js.map +1 -1
- package/dist/ai-service/features.d.ts +8 -0
- package/dist/ai-service/features.d.ts.map +1 -1
- package/dist/ai-service/features.js +8 -0
- package/dist/ai-service/features.js.map +1 -1
- package/dist/ai-service/index.d.ts +1 -0
- package/dist/ai-service/index.d.ts.map +1 -1
- package/dist/ai-service/index.js +101 -18
- package/dist/ai-service/index.js.map +1 -1
- package/dist/ai-service/integrations/store.d.ts +14 -2
- package/dist/ai-service/integrations/store.d.ts.map +1 -1
- package/dist/ai-service/integrations/store.js +19 -2
- package/dist/ai-service/integrations/store.js.map +1 -1
- package/dist/ai-service/judge/judge-eval-service-runner.d.ts.map +1 -1
- package/dist/ai-service/judge/judge-eval-service-runner.js +7 -0
- package/dist/ai-service/judge/judge-eval-service-runner.js.map +1 -1
- package/dist/ai-service/llm/client.d.ts +29 -11
- package/dist/ai-service/llm/client.d.ts.map +1 -1
- package/dist/ai-service/llm/client.js +95 -78
- package/dist/ai-service/llm/client.js.map +1 -1
- package/dist/ai-service/llm/context/context.d.ts +2 -1
- package/dist/ai-service/llm/context/context.d.ts.map +1 -1
- package/dist/ai-service/llm/context/context.js.map +1 -1
- package/dist/ai-service/llm/context/conversation-context.d.ts +89 -0
- package/dist/ai-service/llm/context/conversation-context.d.ts.map +1 -0
- package/dist/ai-service/llm/context/conversation-context.js +13 -0
- package/dist/ai-service/llm/context/conversation-context.js.map +1 -0
- package/dist/ai-service/llm/context/index.d.ts +1 -0
- package/dist/ai-service/llm/context/index.d.ts.map +1 -1
- package/dist/ai-service/llm/context/utils/get-loaded-context.d.ts +12 -0
- package/dist/ai-service/llm/context/utils/get-loaded-context.d.ts.map +1 -0
- package/dist/ai-service/llm/context/utils/get-loaded-context.js +7 -0
- package/dist/ai-service/llm/context/utils/get-loaded-context.js.map +1 -0
- package/dist/ai-service/llm/context/utils/index.d.ts +1 -5
- package/dist/ai-service/llm/context/utils/index.d.ts.map +1 -1
- package/dist/ai-service/llm/context/utils/index.js +1 -5
- package/dist/ai-service/llm/context/utils/index.js.map +1 -1
- package/dist/ai-service/llm/context-v2/adapter.d.ts +26 -0
- package/dist/ai-service/llm/context-v2/adapter.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/adapter.js +88 -0
- package/dist/ai-service/llm/context-v2/adapter.js.map +1 -0
- package/dist/ai-service/llm/context-v2/caching.d.ts +39 -0
- package/dist/ai-service/llm/context-v2/caching.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/caching.js +48 -0
- package/dist/ai-service/llm/context-v2/caching.js.map +1 -0
- package/dist/ai-service/llm/context-v2/compactor.d.ts +16 -0
- package/dist/ai-service/llm/context-v2/compactor.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/compactor.js +164 -0
- package/dist/ai-service/llm/context-v2/compactor.js.map +1 -0
- package/dist/ai-service/llm/context-v2/config.d.ts +6 -0
- package/dist/ai-service/llm/context-v2/config.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/config.js +8 -0
- package/dist/ai-service/llm/context-v2/config.js.map +1 -0
- package/dist/ai-service/llm/context-v2/context.d.ts +61 -0
- package/dist/ai-service/llm/context-v2/context.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/context.js +238 -0
- package/dist/ai-service/llm/context-v2/context.js.map +1 -0
- package/dist/ai-service/llm/context-v2/index.d.ts +16 -0
- package/dist/ai-service/llm/context-v2/index.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/index.js +16 -0
- package/dist/ai-service/llm/context-v2/index.js.map +1 -0
- package/dist/ai-service/llm/context-v2/manager.d.ts +57 -0
- package/dist/ai-service/llm/context-v2/manager.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/manager.js +129 -0
- package/dist/ai-service/llm/context-v2/manager.js.map +1 -0
- package/dist/ai-service/llm/context-v2/migrations/index.d.ts +8 -0
- package/dist/ai-service/llm/context-v2/migrations/index.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/migrations/index.js +8 -0
- package/dist/ai-service/llm/context-v2/migrations/index.js.map +1 -0
- package/dist/ai-service/llm/context-v2/migrations/registry.d.ts +19 -0
- package/dist/ai-service/llm/context-v2/migrations/registry.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/migrations/registry.js +32 -0
- package/dist/ai-service/llm/context-v2/migrations/registry.js.map +1 -0
- package/dist/ai-service/llm/context-v2/migrations/runner.d.ts +3 -0
- package/dist/ai-service/llm/context-v2/migrations/runner.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/migrations/runner.js +61 -0
- package/dist/ai-service/llm/context-v2/migrations/runner.js.map +1 -0
- package/dist/ai-service/llm/context-v2/migrations/types.d.ts +22 -0
- package/dist/ai-service/llm/context-v2/migrations/types.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/migrations/types.js +33 -0
- package/dist/ai-service/llm/context-v2/migrations/types.js.map +1 -0
- package/dist/ai-service/llm/context-v2/migrations/v1-to-v2.d.ts +29 -0
- package/dist/ai-service/llm/context-v2/migrations/v1-to-v2.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/migrations/v1-to-v2.js +143 -0
- package/dist/ai-service/llm/context-v2/migrations/v1-to-v2.js.map +1 -0
- package/dist/ai-service/llm/context-v2/operation-queue.d.ts +9 -0
- package/dist/ai-service/llm/context-v2/operation-queue.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/operation-queue.js +13 -0
- package/dist/ai-service/llm/context-v2/operation-queue.js.map +1 -0
- package/dist/ai-service/llm/context-v2/phase1-tool-summarizer.d.ts +16 -0
- package/dist/ai-service/llm/context-v2/phase1-tool-summarizer.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/phase1-tool-summarizer.js +135 -0
- package/dist/ai-service/llm/context-v2/phase1-tool-summarizer.js.map +1 -0
- package/dist/ai-service/llm/context-v2/phase2-session-summarizer.d.ts +20 -0
- package/dist/ai-service/llm/context-v2/phase2-session-summarizer.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/phase2-session-summarizer.js +213 -0
- package/dist/ai-service/llm/context-v2/phase2-session-summarizer.js.map +1 -0
- package/dist/ai-service/llm/context-v2/prompts/compaction.d.ts +11 -0
- package/dist/ai-service/llm/context-v2/prompts/compaction.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/prompts/compaction.js +57 -0
- package/dist/ai-service/llm/context-v2/prompts/compaction.js.map +1 -0
- package/dist/ai-service/llm/context-v2/session-capture.d.ts +18 -0
- package/dist/ai-service/llm/context-v2/session-capture.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/session-capture.js +64 -0
- package/dist/ai-service/llm/context-v2/session-capture.js.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/index.d.ts +14 -0
- package/dist/ai-service/llm/context-v2/storage/index.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/index.js +2 -0
- package/dist/ai-service/llm/context-v2/storage/index.js.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/local.d.ts +25 -0
- package/dist/ai-service/llm/context-v2/storage/local.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/local.js +71 -0
- package/dist/ai-service/llm/context-v2/storage/local.js.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/types.d.ts +12 -0
- package/dist/ai-service/llm/context-v2/storage/types.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/types.js +2 -0
- package/dist/ai-service/llm/context-v2/storage/types.js.map +1 -0
- package/dist/ai-service/llm/context-v2/token-tracker.d.ts +4 -0
- package/dist/ai-service/llm/context-v2/token-tracker.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/token-tracker.js +13 -0
- package/dist/ai-service/llm/context-v2/token-tracker.js.map +1 -0
- package/dist/ai-service/llm/context-v2/truncation-fallback.d.ts +10 -0
- package/dist/ai-service/llm/context-v2/truncation-fallback.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/truncation-fallback.js +120 -0
- package/dist/ai-service/llm/context-v2/truncation-fallback.js.map +1 -0
- package/dist/ai-service/llm/context-v2/turns.d.ts +23 -0
- package/dist/ai-service/llm/context-v2/turns.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/turns.js +61 -0
- package/dist/ai-service/llm/context-v2/turns.js.map +1 -0
- package/dist/ai-service/llm/context-v2/types.d.ts +100 -0
- package/dist/ai-service/llm/context-v2/types.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/types.js +262 -0
- package/dist/ai-service/llm/context-v2/types.js.map +1 -0
- package/dist/ai-service/llm/error.d.ts +4 -0
- package/dist/ai-service/llm/error.d.ts.map +1 -1
- package/dist/ai-service/llm/error.js +26 -0
- package/dist/ai-service/llm/error.js.map +1 -1
- package/dist/ai-service/llm/impl/clark.d.ts.map +1 -1
- package/dist/ai-service/llm/impl/clark.js +3 -2
- package/dist/ai-service/llm/impl/clark.js.map +1 -1
- package/dist/ai-service/llm/interaction/adapters/vercel.d.ts.map +1 -1
- package/dist/ai-service/llm/interaction/adapters/vercel.js +3 -1
- package/dist/ai-service/llm/interaction/adapters/vercel.js.map +1 -1
- package/dist/ai-service/llm/provider.d.ts +2 -2
- package/dist/ai-service/llm/provider.d.ts.map +1 -1
- package/dist/ai-service/llm/provider.js +2 -2
- package/dist/ai-service/llm/provider.js.map +1 -1
- package/dist/ai-service/llm/stream/event-bus.d.ts +1 -1
- package/dist/ai-service/llm/stream/event-bus.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/observers/context.d.ts +2 -9
- package/dist/ai-service/llm/stream/observers/context.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/observers/context.js +4 -4
- package/dist/ai-service/llm/stream/observers/context.js.map +1 -1
- package/dist/ai-service/llm/stream/observers/llmobs.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/observers/llmobs.js +2 -1
- package/dist/ai-service/llm/stream/observers/llmobs.js.map +1 -1
- package/dist/ai-service/llm/stream/observers/logging.js +1 -1
- package/dist/ai-service/llm/stream/observers/logging.js.map +1 -1
- package/dist/ai-service/llm/stream/orchestrator.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/orchestrator.js +22 -13
- package/dist/ai-service/llm/stream/orchestrator.js.map +1 -1
- package/dist/ai-service/llm/stream/session.d.ts +3 -0
- package/dist/ai-service/llm/stream/session.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/session.js +2 -0
- package/dist/ai-service/llm/stream/session.js.map +1 -1
- package/dist/ai-service/llm/utils.d.ts +2 -2
- package/dist/ai-service/llm/utils.d.ts.map +1 -1
- package/dist/ai-service/llm/utils.js +27 -10
- package/dist/ai-service/llm/utils.js.map +1 -1
- package/dist/ai-service/llm/workflow-metrics.d.ts +14 -0
- package/dist/ai-service/llm/workflow-metrics.d.ts.map +1 -0
- package/dist/ai-service/llm/workflow-metrics.js +19 -0
- package/dist/ai-service/llm/workflow-metrics.js.map +1 -0
- package/dist/ai-service/security/safety-classifier.d.ts +2 -0
- package/dist/ai-service/security/safety-classifier.d.ts.map +1 -1
- package/dist/ai-service/security/safety-classifier.js +9 -6
- package/dist/ai-service/security/safety-classifier.js.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.d.ts +15 -0
- package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.js +3 -4
- package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/agent-planning.js +32 -18
- package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/awaiting-user.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/awaiting-user.js +34 -0
- package/dist/ai-service/state-machine/handlers/awaiting-user.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/idle.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/idle.js +6 -1
- package/dist/ai-service/state-machine/handlers/idle.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.js +84 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/runtime-reviewing.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/runtime-reviewing.js +6 -1
- package/dist/ai-service/state-machine/handlers/runtime-reviewing.js.map +1 -1
- package/dist/ai-service/state-machine/helpers/peer.d.ts +7 -0
- package/dist/ai-service/state-machine/helpers/peer.d.ts.map +1 -1
- package/dist/ai-service/state-machine/helpers/peer.js +24 -8
- package/dist/ai-service/state-machine/helpers/peer.js.map +1 -1
- package/dist/ai-service/transform/api-builder/shared.d.ts +5 -0
- package/dist/ai-service/transform/api-builder/shared.d.ts.map +1 -1
- package/dist/ai-service/transform/api-builder/shared.js +13 -1
- package/dist/ai-service/transform/api-builder/shared.js.map +1 -1
- package/dist/ai-service/transform/api-builder/to-sdk-transformer.d.ts +11 -0
- package/dist/ai-service/transform/api-builder/to-sdk-transformer.d.ts.map +1 -1
- package/dist/ai-service/transform/api-builder/to-sdk-transformer.js +11 -4
- package/dist/ai-service/transform/api-builder/to-sdk-transformer.js.map +1 -1
- package/dist/ai-service/transform/api-builder/to-yaml-transformer.d.ts +4 -0
- package/dist/ai-service/transform/api-builder/to-yaml-transformer.d.ts.map +1 -1
- package/dist/ai-service/transform/api-builder/to-yaml-transformer.js +7 -0
- package/dist/ai-service/transform/api-builder/to-yaml-transformer.js.map +1 -1
- package/dist/binding-extraction/extract-identifiers.d.ts.map +1 -1
- package/dist/binding-extraction/extract-identifiers.js +39 -3
- package/dist/binding-extraction/extract-identifiers.js.map +1 -1
- package/dist/clark-log-forwarder.d.ts.map +1 -1
- package/dist/clark-log-forwarder.js +1 -0
- package/dist/clark-log-forwarder.js.map +1 -1
- package/dist/resolver.d.ts.map +1 -1
- package/dist/resolver.js +4 -1
- package/dist/resolver.js.map +1 -1
- package/dist/router-parser.d.ts.map +1 -1
- package/dist/router-parser.js +34 -9
- package/dist/router-parser.js.map +1 -1
- package/package.json +23 -18
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Web Fetch Tool
|
|
3
|
+
*
|
|
4
|
+
* Fetches content from a URL, converts HTML to markdown,
|
|
5
|
+
* and processes it with an LLM based on a user prompt.
|
|
6
|
+
*/
|
|
7
|
+
import { generateObject } from "ai";
|
|
8
|
+
import TurndownService from "turndown";
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import { getLogger, getErrorMeta } from "../../../../util/logger.js";
|
|
11
|
+
import { createToolFactory, PermissionLevel, ToolCategory } from "../types.js";
|
|
12
|
+
/**
|
|
13
|
+
* Schema for structured LLM response.
|
|
14
|
+
* Uses generateObject pattern from safety-classifier for Clark API compatibility.
|
|
15
|
+
*/
|
|
16
|
+
const WebFetchResponseSchema = z.object({
|
|
17
|
+
content: z
|
|
18
|
+
.string()
|
|
19
|
+
.describe("The extracted information as plain markdown text (NOT JSON). Use markdown formatting for headers, lists, bold, etc."),
|
|
20
|
+
});
|
|
21
|
+
/**
|
|
22
|
+
* System prompt for web content extraction.
|
|
23
|
+
*/
|
|
24
|
+
const WEB_FETCH_SYSTEM_PROMPT = `You are a helpful assistant that extracts and summarizes information from web page content.
|
|
25
|
+
Analyze the provided web page content and respond to the user's prompt with relevant information.
|
|
26
|
+
Be concise and focus on the information requested.
|
|
27
|
+
|
|
28
|
+
IMPORTANT: Return your response as plain markdown text, NOT as JSON. Use markdown formatting (headers, lists, bold, etc.) to structure your response clearly.`;
|
|
29
|
+
/**
|
|
30
|
+
* Cache duration in milliseconds (15 minutes).
|
|
31
|
+
*/
|
|
32
|
+
const CACHE_DURATION_MS = 15 * 60 * 1000;
|
|
33
|
+
/**
|
|
34
|
+
* Maximum content length to send to LLM (characters).
|
|
35
|
+
*/
|
|
36
|
+
const MAX_CONTENT_LENGTH = 100_000;
|
|
37
|
+
/**
|
|
38
|
+
* Simple TTL-based cache for fetched content.
|
|
39
|
+
*/
|
|
40
|
+
class WebFetchCache {
|
|
41
|
+
cache = new Map();
|
|
42
|
+
get(url) {
|
|
43
|
+
const entry = this.cache.get(url);
|
|
44
|
+
if (!entry)
|
|
45
|
+
return undefined;
|
|
46
|
+
if (Date.now() - entry.timestamp > CACHE_DURATION_MS) {
|
|
47
|
+
this.cache.delete(url);
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
return entry.content;
|
|
51
|
+
}
|
|
52
|
+
set(url, content) {
|
|
53
|
+
this.cache.set(url, { content, timestamp: Date.now() });
|
|
54
|
+
}
|
|
55
|
+
clear() {
|
|
56
|
+
this.cache.clear();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// Module-level cache instance
|
|
60
|
+
const fetchCache = new WebFetchCache();
|
|
61
|
+
/**
|
|
62
|
+
* Turndown service for HTML to markdown conversion.
|
|
63
|
+
*/
|
|
64
|
+
const turndownService = new TurndownService({
|
|
65
|
+
headingStyle: "atx",
|
|
66
|
+
codeBlockStyle: "fenced",
|
|
67
|
+
});
|
|
68
|
+
// Remove script, style, and other non-content elements
|
|
69
|
+
turndownService.remove(["script", "style", "nav", "footer", "header", "aside"]);
|
|
70
|
+
/**
|
|
71
|
+
* Converts HTML to markdown.
|
|
72
|
+
*
|
|
73
|
+
* @param html - HTML content
|
|
74
|
+
* @returns Markdown content
|
|
75
|
+
*/
|
|
76
|
+
function htmlToMarkdown(html) {
|
|
77
|
+
return turndownService.turndown(html);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Upgrades HTTP URLs to HTTPS.
|
|
81
|
+
*
|
|
82
|
+
* @param url - URL to upgrade
|
|
83
|
+
* @returns HTTPS URL
|
|
84
|
+
*/
|
|
85
|
+
function upgradeToHttps(url) {
|
|
86
|
+
if (url.startsWith("http://")) {
|
|
87
|
+
return url.replace("http://", "https://");
|
|
88
|
+
}
|
|
89
|
+
return url;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Validates a URL is safe to fetch (SSRF protection).
|
|
93
|
+
* Blocks requests to private IP ranges and localhost.
|
|
94
|
+
*
|
|
95
|
+
* @param url - URL to validate
|
|
96
|
+
* @returns true if the URL is safe to fetch
|
|
97
|
+
*/
|
|
98
|
+
function isAllowedUrl(url) {
|
|
99
|
+
const parsed = new URL(url);
|
|
100
|
+
const hostname = parsed.hostname.toLowerCase();
|
|
101
|
+
// Block localhost
|
|
102
|
+
if (hostname === "localhost") {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
// Block private IP ranges
|
|
106
|
+
if (hostname.startsWith("127.") || // Loopback
|
|
107
|
+
hostname.startsWith("10.") || // Class A private
|
|
108
|
+
hostname.startsWith("192.168.") || // Class C private
|
|
109
|
+
hostname.startsWith("169.254.") || // Link-local
|
|
110
|
+
hostname.startsWith("172.") // Check Class B private range (172.16-31.x.x)
|
|
111
|
+
) {
|
|
112
|
+
// For 172.x, need to check if it's in the 172.16.0.0 - 172.31.255.255 range
|
|
113
|
+
if (hostname.startsWith("172.")) {
|
|
114
|
+
const parts = hostname.split(".");
|
|
115
|
+
const secondOctet = parseInt(parts[1] ?? "0", 10);
|
|
116
|
+
if (secondOctet >= 16 && secondOctet <= 31) {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
// Block IPv6 localhost and private ranges
|
|
125
|
+
if (hostname === "[::1]" ||
|
|
126
|
+
hostname.startsWith("[fc") ||
|
|
127
|
+
hostname.startsWith("[fd") ||
|
|
128
|
+
hostname.startsWith("[fe80")) {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
return true;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Truncates content if it exceeds the maximum length.
|
|
135
|
+
*
|
|
136
|
+
* @param content - Content to truncate
|
|
137
|
+
* @param maxLength - Maximum length
|
|
138
|
+
* @returns Truncated content with note if applicable
|
|
139
|
+
*/
|
|
140
|
+
function truncateContent(content, maxLength) {
|
|
141
|
+
if (content.length <= maxLength) {
|
|
142
|
+
return content;
|
|
143
|
+
}
|
|
144
|
+
return (content.slice(0, maxLength) +
|
|
145
|
+
"\n\n[Content truncated - original length: " +
|
|
146
|
+
content.length +
|
|
147
|
+
" characters]");
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Web fetch tool factory.
|
|
151
|
+
*
|
|
152
|
+
* Fetches URL content, converts to markdown, and processes with LLM.
|
|
153
|
+
*/
|
|
154
|
+
export const webFetchToolFactory = createToolFactory("web_fetch", ({ llmProvider }) => ({
|
|
155
|
+
description: `
|
|
156
|
+
Fetches content from a URL and extracts specific information using an AI model.
|
|
157
|
+
|
|
158
|
+
WHEN TO USE:
|
|
159
|
+
- After web_search returns relevant URLs that need deeper exploration
|
|
160
|
+
- When the user provides a documentation URL, GitHub link, or any webpage
|
|
161
|
+
- To get detailed information from official docs, release notes, or changelogs
|
|
162
|
+
- To verify information found in search snippets by reading the full page
|
|
163
|
+
- After installing a new library - read the official docs to learn correct usage patterns
|
|
164
|
+
|
|
165
|
+
Use this tool to follow up on web_search results when snippets don't provide enough detail.
|
|
166
|
+
|
|
167
|
+
Usage:
|
|
168
|
+
- Provide a URL and a prompt describing what information to extract
|
|
169
|
+
- HTTP URLs are automatically upgraded to HTTPS
|
|
170
|
+
- HTML content is converted to markdown before processing
|
|
171
|
+
- Results are cached for 15 minutes for faster repeated access
|
|
172
|
+
|
|
173
|
+
When a URL redirects to a different host, the tool will inform you
|
|
174
|
+
and provide the redirect URL. Make a new request with that URL.
|
|
175
|
+
|
|
176
|
+
Parameters:
|
|
177
|
+
- url: The URL to fetch content from (required)
|
|
178
|
+
- prompt: What information to extract from the page (required)
|
|
179
|
+
|
|
180
|
+
Examples:
|
|
181
|
+
- Fetch API docs: url="https://docs.example.com/api", prompt="List all available endpoints"
|
|
182
|
+
- Get pricing info: url="https://example.com/pricing", prompt="What are the pricing tiers?"
|
|
183
|
+
- Extract changelog: url="https://github.com/org/repo/releases", prompt="Summarize recent changes"
|
|
184
|
+
`,
|
|
185
|
+
category: ToolCategory.GENERAL,
|
|
186
|
+
defaultPermission: PermissionLevel.ALLOW,
|
|
187
|
+
readOnly: true,
|
|
188
|
+
inputSchema: z.object({
|
|
189
|
+
url: z.string().url().describe("The URL to fetch content from"),
|
|
190
|
+
prompt: z
|
|
191
|
+
.string()
|
|
192
|
+
.describe("The prompt describing what information to extract"),
|
|
193
|
+
}),
|
|
194
|
+
execute: async ({ url, prompt }, options) => {
|
|
195
|
+
const logger = getLogger();
|
|
196
|
+
try {
|
|
197
|
+
// Upgrade HTTP to HTTPS
|
|
198
|
+
const secureUrl = upgradeToHttps(url);
|
|
199
|
+
// SSRF protection: block private IPs and localhost
|
|
200
|
+
if (!isAllowedUrl(secureUrl)) {
|
|
201
|
+
throw new Error("URL not allowed: cannot fetch from localhost or private IP ranges");
|
|
202
|
+
}
|
|
203
|
+
// Check cache first
|
|
204
|
+
let markdown = fetchCache.get(secureUrl);
|
|
205
|
+
if (!markdown) {
|
|
206
|
+
// Fetch the URL
|
|
207
|
+
const response = await fetch(secureUrl, {
|
|
208
|
+
signal: options?.abortSignal,
|
|
209
|
+
redirect: "follow",
|
|
210
|
+
headers: {
|
|
211
|
+
"User-Agent": "Mozilla/5.0 (compatible; WebFetch/1.0; +https://superblocks.com)",
|
|
212
|
+
Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
|
|
213
|
+
},
|
|
214
|
+
});
|
|
215
|
+
if (!response.ok) {
|
|
216
|
+
throw new Error(`Fetch returned status ${response.status}`);
|
|
217
|
+
}
|
|
218
|
+
// Check for cross-host redirect
|
|
219
|
+
const originalHost = new URL(secureUrl).host;
|
|
220
|
+
const finalHost = new URL(response.url).host;
|
|
221
|
+
if (response.redirected && originalHost !== finalHost) {
|
|
222
|
+
return {
|
|
223
|
+
type: "redirect",
|
|
224
|
+
redirectUrl: response.url,
|
|
225
|
+
message: `URL redirected to a different host. Make a new request with the redirect URL: ${response.url}`,
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
// Get content and convert to markdown
|
|
229
|
+
const html = await response.text();
|
|
230
|
+
markdown = htmlToMarkdown(html);
|
|
231
|
+
// Cache the result
|
|
232
|
+
fetchCache.set(secureUrl, markdown);
|
|
233
|
+
}
|
|
234
|
+
// Truncate content if needed
|
|
235
|
+
const truncatedContent = truncateContent(markdown, MAX_CONTENT_LENGTH);
|
|
236
|
+
// Process with LLM using generateObject pattern (like safety-classifier)
|
|
237
|
+
const model = llmProvider.modelForTask("fast");
|
|
238
|
+
const { object: result } = await generateObject({
|
|
239
|
+
model,
|
|
240
|
+
schema: WebFetchResponseSchema,
|
|
241
|
+
system: WEB_FETCH_SYSTEM_PROMPT,
|
|
242
|
+
prompt: `User prompt: ${prompt}\n\nWeb page content:\n${truncatedContent}`,
|
|
243
|
+
abortSignal: options?.abortSignal,
|
|
244
|
+
});
|
|
245
|
+
return { content: result.content };
|
|
246
|
+
}
|
|
247
|
+
catch (error) {
|
|
248
|
+
logger.error("Web fetch failed", getErrorMeta({ url, error }));
|
|
249
|
+
if (error instanceof Error && error.name === "AbortError") {
|
|
250
|
+
throw new Error("Web fetch was aborted");
|
|
251
|
+
}
|
|
252
|
+
if (error instanceof Error) {
|
|
253
|
+
throw new Error(`Failed to fetch URL: ${error.message}`);
|
|
254
|
+
}
|
|
255
|
+
throw new Error("Failed to fetch URL: Unknown error");
|
|
256
|
+
}
|
|
257
|
+
},
|
|
258
|
+
getSummary: (input, output) => {
|
|
259
|
+
const isRedirect = "type" in output &&
|
|
260
|
+
output.type === "redirect" &&
|
|
261
|
+
"redirectUrl" in output;
|
|
262
|
+
if (isRedirect) {
|
|
263
|
+
return {
|
|
264
|
+
input: `url: "${input.url}"`,
|
|
265
|
+
output: `Redirected to ${output.redirectUrl}`,
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
return {
|
|
269
|
+
input: `url: "${input.url}"`,
|
|
270
|
+
output: `Processed ${output.content.length} chars`,
|
|
271
|
+
};
|
|
272
|
+
},
|
|
273
|
+
}));
|
|
274
|
+
//# sourceMappingURL=web-fetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-fetch.js","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools2/tools/web-fetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Web Search Tool
|
|
3
|
+
*
|
|
4
|
+
* Searches the web using DuckDuckGo's HTML search.
|
|
5
|
+
* Supports filtering by allowed/blocked domains.
|
|
6
|
+
*/
|
|
7
|
+
interface SearchResult {
|
|
8
|
+
title: string;
|
|
9
|
+
link: string;
|
|
10
|
+
snippet: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Web search tool factory.
|
|
14
|
+
*
|
|
15
|
+
* Searches the web using DuckDuckGo's HTML search.
|
|
16
|
+
*/
|
|
17
|
+
export declare const webSearchToolFactory: import("../types.js").ToolFactory<unknown, import("../types.js").Tool<{
|
|
18
|
+
query: string;
|
|
19
|
+
allowed_domains?: string[] | undefined;
|
|
20
|
+
blocked_domains?: string[] | undefined;
|
|
21
|
+
}, {
|
|
22
|
+
results: SearchResult[];
|
|
23
|
+
}>>;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=web-search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-search.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools2/tools/web-search.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA8BH,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAiHD;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;;;;;aAgDT,YAAY,EAAE;GA8CnC,CAAC"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Web Search Tool
|
|
3
|
+
*
|
|
4
|
+
* Searches the web using DuckDuckGo's HTML search.
|
|
5
|
+
* Supports filtering by allowed/blocked domains.
|
|
6
|
+
*/
|
|
7
|
+
import * as cheerio from "cheerio";
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
import { getErrorMeta, getLogger } from "../../../../util/logger.js";
|
|
10
|
+
import { createToolFactory, PermissionLevel, ToolCategory } from "../types.js";
|
|
11
|
+
/**
|
|
12
|
+
* Headers to mimic a browser request.
|
|
13
|
+
*/
|
|
14
|
+
const BROWSER_HEADERS = {
|
|
15
|
+
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
|
|
16
|
+
Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8",
|
|
17
|
+
"Accept-Language": "en-US,en;q=0.9",
|
|
18
|
+
"Accept-Encoding": "gzip, deflate, br",
|
|
19
|
+
"Cache-Control": "no-cache",
|
|
20
|
+
Pragma: "no-cache",
|
|
21
|
+
"Sec-Ch-Ua": '"Google Chrome";v="131", "Chromium";v="131", "Not_A Brand";v="24"',
|
|
22
|
+
"Sec-Ch-Ua-Mobile": "?0",
|
|
23
|
+
"Sec-Ch-Ua-Platform": '"macOS"',
|
|
24
|
+
"Sec-Fetch-Dest": "document",
|
|
25
|
+
"Sec-Fetch-Mode": "navigate",
|
|
26
|
+
"Sec-Fetch-Site": "none",
|
|
27
|
+
"Sec-Fetch-User": "?1",
|
|
28
|
+
"Upgrade-Insecure-Requests": "1",
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Extracts the actual URL from a DuckDuckGo redirect URL.
|
|
32
|
+
*
|
|
33
|
+
* DuckDuckGo wraps URLs in their redirect format like:
|
|
34
|
+
* //duckduckgo.com/l/?uddg=https%3A%2F%2Fexample.com&rut=...
|
|
35
|
+
*
|
|
36
|
+
* @param ddgUrl - The DuckDuckGo redirect URL
|
|
37
|
+
* @returns The actual destination URL, or the original URL if parsing fails
|
|
38
|
+
*/
|
|
39
|
+
function extractUrlFromDdgRedirect(ddgUrl) {
|
|
40
|
+
try {
|
|
41
|
+
// Handle relative URLs starting with //
|
|
42
|
+
const fullUrl = ddgUrl.startsWith("//") ? `https:${ddgUrl}` : ddgUrl;
|
|
43
|
+
const url = new URL(fullUrl);
|
|
44
|
+
const uddg = url.searchParams.get("uddg");
|
|
45
|
+
if (uddg) {
|
|
46
|
+
return decodeURIComponent(uddg);
|
|
47
|
+
}
|
|
48
|
+
return ddgUrl;
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
getLogger().debug("Failed to parse DDG redirect URL", { ddgUrl, error });
|
|
52
|
+
return ddgUrl;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Parses DuckDuckGo HTML search results and extracts search results.
|
|
57
|
+
*
|
|
58
|
+
* @param html - The HTML content from DuckDuckGo search
|
|
59
|
+
* @returns Array of search results
|
|
60
|
+
*/
|
|
61
|
+
function parseDuckDuckGoResults(html) {
|
|
62
|
+
const $ = cheerio.load(html);
|
|
63
|
+
const results = [];
|
|
64
|
+
// DuckDuckGo results are in div.result elements
|
|
65
|
+
// Each result has:
|
|
66
|
+
// - h2.result__title containing a.result__a (title and link)
|
|
67
|
+
// - a.result__snippet (description)
|
|
68
|
+
$("div.result").each((_index, element) => {
|
|
69
|
+
const $el = $(element);
|
|
70
|
+
// Skip ads (they have badge--ad class)
|
|
71
|
+
if ($el.find(".badge--ad").length > 0) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
// Find the title link
|
|
75
|
+
const $titleLink = $el.find("h2.result__title a.result__a").first();
|
|
76
|
+
const title = $titleLink.text().trim();
|
|
77
|
+
const rawLink = $titleLink.attr("href") || "";
|
|
78
|
+
// Extract the actual URL from DuckDuckGo's redirect
|
|
79
|
+
const link = extractUrlFromDdgRedirect(rawLink);
|
|
80
|
+
// Find the snippet
|
|
81
|
+
const snippet = $el.find("a.result__snippet").first().text().trim();
|
|
82
|
+
// Only add valid results
|
|
83
|
+
if (title && link && link.startsWith("http")) {
|
|
84
|
+
results.push({ title, link, snippet });
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
return results;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Filters results by allowed and blocked domains.
|
|
91
|
+
*
|
|
92
|
+
* @param results - Array of search results
|
|
93
|
+
* @param allowedDomains - Only include results from these domains (if provided)
|
|
94
|
+
* @param blockedDomains - Exclude results from these domains
|
|
95
|
+
* @returns Filtered results
|
|
96
|
+
*/
|
|
97
|
+
function filterByDomains(results, allowedDomains, blockedDomains) {
|
|
98
|
+
return results.filter((result) => {
|
|
99
|
+
try {
|
|
100
|
+
const domain = new URL(result.link).hostname.toLowerCase();
|
|
101
|
+
// Check blocked domains first
|
|
102
|
+
if (blockedDomains?.length) {
|
|
103
|
+
const isBlocked = blockedDomains.some((blocked) => domain.includes(blocked.toLowerCase()));
|
|
104
|
+
if (isBlocked)
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
// Check allowed domains (if specified)
|
|
108
|
+
if (allowedDomains?.length) {
|
|
109
|
+
const isAllowed = allowedDomains.some((allowed) => domain.includes(allowed.toLowerCase()));
|
|
110
|
+
if (!isAllowed)
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
// Invalid URL, exclude it
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Web search tool factory.
|
|
123
|
+
*
|
|
124
|
+
* Searches the web using DuckDuckGo's HTML search.
|
|
125
|
+
*/
|
|
126
|
+
export const webSearchToolFactory = createToolFactory("web_search", () => ({
|
|
127
|
+
description: `
|
|
128
|
+
Searches the web and returns results. Use this tool PROACTIVELY when the user's question likely requires current information.
|
|
129
|
+
|
|
130
|
+
WHEN TO USE (proactively search when):
|
|
131
|
+
- User asks about current versions, releases, or "latest" anything
|
|
132
|
+
- User asks about recent changes, updates, or deprecations
|
|
133
|
+
- User asks about best practices or recommendations (these evolve)
|
|
134
|
+
- You're uncertain about specific library APIs, syntax, or features
|
|
135
|
+
- User asks to compare tools or libraries
|
|
136
|
+
- Troubleshooting errors or issues that may have known solutions
|
|
137
|
+
- You just installed a new library - ALWAYS search for its docs before using it
|
|
138
|
+
- Any question where your training data might be outdated
|
|
139
|
+
|
|
140
|
+
DO NOT wait for the user to explicitly ask you to search - if the question benefits from current information, search first.
|
|
141
|
+
|
|
142
|
+
Usage:
|
|
143
|
+
- Provide a search query to find relevant web pages
|
|
144
|
+
- Optionally filter results by allowed or blocked domains
|
|
145
|
+
- Returns titles, links, and snippets for each result
|
|
146
|
+
|
|
147
|
+
Parameters:
|
|
148
|
+
- query: The search query (required, min 2 characters)
|
|
149
|
+
- allowed_domains: Only include results from these domains
|
|
150
|
+
- blocked_domains: Exclude results from these domains
|
|
151
|
+
|
|
152
|
+
Examples:
|
|
153
|
+
- Basic search: query="react hooks tutorial"
|
|
154
|
+
- Filter by domain: query="typescript generics", allowed_domains=["developer.mozilla.org", "typescriptlang.org"]
|
|
155
|
+
- Exclude domains: query="python async", blocked_domains=["w3schools.com"]
|
|
156
|
+
`,
|
|
157
|
+
category: ToolCategory.GENERAL,
|
|
158
|
+
defaultPermission: PermissionLevel.ALLOW,
|
|
159
|
+
readOnly: true,
|
|
160
|
+
inputSchema: z.object({
|
|
161
|
+
query: z.string().min(2).describe("The search query"),
|
|
162
|
+
allowed_domains: z
|
|
163
|
+
.array(z.string())
|
|
164
|
+
.optional()
|
|
165
|
+
.describe("Only include results from these domains"),
|
|
166
|
+
blocked_domains: z
|
|
167
|
+
.array(z.string())
|
|
168
|
+
.optional()
|
|
169
|
+
.describe("Exclude results from these domains"),
|
|
170
|
+
}),
|
|
171
|
+
execute: async ({ query, allowed_domains, blocked_domains }, options) => {
|
|
172
|
+
try {
|
|
173
|
+
// Use DuckDuckGo HTML search (works without JavaScript)
|
|
174
|
+
const searchUrl = `https://html.duckduckgo.com/html/?q=${encodeURIComponent(query)}`;
|
|
175
|
+
// Fetch search results
|
|
176
|
+
const response = await fetch(searchUrl, {
|
|
177
|
+
headers: {
|
|
178
|
+
...BROWSER_HEADERS,
|
|
179
|
+
Referer: "https://html.duckduckgo.com/",
|
|
180
|
+
},
|
|
181
|
+
redirect: "follow",
|
|
182
|
+
signal: options?.abortSignal,
|
|
183
|
+
});
|
|
184
|
+
if (!response.ok) {
|
|
185
|
+
throw new Error(`Search returned status ${response.status}`);
|
|
186
|
+
}
|
|
187
|
+
const html = await response.text();
|
|
188
|
+
// Parse results
|
|
189
|
+
let results = parseDuckDuckGoResults(html);
|
|
190
|
+
// Filter by domains
|
|
191
|
+
results = filterByDomains(results, allowed_domains, blocked_domains);
|
|
192
|
+
return { results };
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
getLogger().error("Web search failed", getErrorMeta({ query, error }));
|
|
196
|
+
if (error instanceof Error && error.name === "AbortError") {
|
|
197
|
+
throw new Error("Web search was aborted");
|
|
198
|
+
}
|
|
199
|
+
if (error instanceof Error) {
|
|
200
|
+
throw new Error(`Failed to search: ${error.message}`);
|
|
201
|
+
}
|
|
202
|
+
throw new Error("Failed to search: Unknown error");
|
|
203
|
+
}
|
|
204
|
+
},
|
|
205
|
+
getSummary: (input, output) => ({
|
|
206
|
+
input: `query: "${input.query}"`,
|
|
207
|
+
output: `Found ${output.results.length} result${output.results.length === 1 ? "" : "s"}`,
|
|
208
|
+
}),
|
|
209
|
+
}));
|
|
210
|
+
//# sourceMappingURL=web-search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-search.js","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools2/tools/web-search.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Attachments are persisted through Context.setAttachments() which ensures
|
|
5
5
|
* they are included in Context serialization (toRecord/fromRecord).
|
|
6
6
|
*/
|
|
7
|
-
import type {
|
|
7
|
+
import type { LoadedContext } from "../llm/context/utils/get-loaded-context.js";
|
|
8
8
|
import type { Attachment } from "@superblocksteam/library-shared/types";
|
|
9
9
|
/** Common fields for all stored attachments */
|
|
10
10
|
interface StoredAttachmentBase {
|
|
@@ -56,9 +56,9 @@ export interface AttachmentInfo {
|
|
|
56
56
|
}
|
|
57
57
|
export declare class AttachmentsStore {
|
|
58
58
|
private getAttachments;
|
|
59
|
-
appendAttachments(context:
|
|
60
|
-
listAttachments(context:
|
|
61
|
-
getAttachmentsByIds(context:
|
|
59
|
+
appendAttachments(context: LoadedContext, attachments: Attachment[], originalMessage?: string): StoredAttachment[];
|
|
60
|
+
listAttachments(context: LoadedContext): AttachmentInfo[];
|
|
61
|
+
getAttachmentsByIds(context: LoadedContext, ids: number[]): StoredAttachment[];
|
|
62
62
|
static toAttachments(stored: StoredAttachment[]): Attachment[];
|
|
63
63
|
}
|
|
64
64
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/ai-service/attachments/store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/ai-service/attachments/store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAexE,+CAA+C;AAC/C,UAAU,oBAAoB;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,8BAA8B;AAC9B,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB;IACjE,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,4BAA4B;AAC5B,MAAM,WAAW,mBAAoB,SAAQ,oBAAoB;IAC/D,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,yDAAyD;AACzD,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IAChE,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,yFAAyF;AACzF,MAAM,MAAM,gBAAgB,GACxB,qBAAqB,GACrB,mBAAmB,GACnB,oBAAoB,CAAC;AAEzB;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,WAAW,EAAE,gBAAgB,EAAE,CAAC;CACjC,CAAC;AAEF,oFAAoF;AACpF,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,cAAc;IAStB,iBAAiB,CACf,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,UAAU,EAAE,EACzB,eAAe,CAAC,EAAE,MAAM,GACvB,gBAAgB,EAAE;IA8ErB,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,cAAc,EAAE;IAYzD,mBAAmB,CACjB,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,MAAM,EAAE,GACZ,gBAAgB,EAAE;IAwBrB,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,UAAU,EAAE;CAiC/D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/ai-service/attachments/store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAIjD,sEAAsE;AACtE,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B;;GAEG;AACH,SAAS,eAAe,CAAC,OAA2B;IAClD,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,OAAO,CAAC,MAAM,IAAI,kBAAkB;QAAE,OAAO,OAAO,CAAC;IACzD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,GAAG,OAAO,CAAC;AACxD,CAAC;AA4DD,MAAM,OAAO,gBAAgB;IACnB,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/ai-service/attachments/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,27 @@
|
|
|
1
1
|
import { type AiChangeInfoPush, type AiMessagePush, type AiChatMessage, type AiChatSummary, type Attachment } from "@superblocksteam/library-shared/types";
|
|
2
2
|
import { type Logger } from "../../util/logger.js";
|
|
3
3
|
import type { AutoConnectingRpcClient } from "../../server-rpc/index.js";
|
|
4
|
+
import type { AiWorkflowEvent } from "@superblocksteam/shared";
|
|
4
5
|
export type AiChatItem = AiChatMessage | AiChatSummary;
|
|
5
6
|
export type AiChatSummaryWithOutcome = AiChatSummary & {
|
|
6
7
|
outcome: "accepted" | "rejected" | "unknown";
|
|
7
8
|
};
|
|
8
9
|
export declare function isAiChatMessage(item: AiChatItem): item is AiChatMessage;
|
|
9
10
|
export declare function isAiChatSummary(item: AiChatItem): item is AiChatSummary;
|
|
11
|
+
/**
|
|
12
|
+
* Default maximum number of messages to load from the server.
|
|
13
|
+
* This prevents large requests from failing when there are many messages.
|
|
14
|
+
*/
|
|
15
|
+
export declare const DEFAULT_MESSAGE_LIMIT = 3000;
|
|
10
16
|
interface ChatSessionStoreConfig {
|
|
11
17
|
applicationId: string;
|
|
12
18
|
rpcClient: AutoConnectingRpcClient;
|
|
13
19
|
logger: Logger;
|
|
20
|
+
/**
|
|
21
|
+
* Maximum number of messages to load from the server.
|
|
22
|
+
* Defaults to DEFAULT_MESSAGE_LIMIT (1000).
|
|
23
|
+
*/
|
|
24
|
+
messageLimit?: number;
|
|
14
25
|
}
|
|
15
26
|
export declare class ChatSessionStore {
|
|
16
27
|
private applicationId;
|
|
@@ -20,6 +31,7 @@ export declare class ChatSessionStore {
|
|
|
20
31
|
private inFlightLoadFromServer;
|
|
21
32
|
private loadedFromServer;
|
|
22
33
|
private inProgressMessages;
|
|
34
|
+
private messageLimit;
|
|
23
35
|
constructor(config: ChatSessionStoreConfig);
|
|
24
36
|
/***
|
|
25
37
|
* Validates and sanitizes the attachments array
|
|
@@ -41,13 +53,15 @@ export declare class ChatSessionStore {
|
|
|
41
53
|
truncateAfterTimestamp(sinceTimestamp: number): Promise<void>;
|
|
42
54
|
recordUser(text: string, options?: {
|
|
43
55
|
attachments?: Array<Attachment>;
|
|
44
|
-
}): Promise<
|
|
45
|
-
recordUserAcceptance(): Promise<
|
|
46
|
-
recordUserRejection(): Promise<
|
|
56
|
+
}): Promise<string>;
|
|
57
|
+
recordUserAcceptance(): Promise<string>;
|
|
58
|
+
recordUserRejection(): Promise<string>;
|
|
47
59
|
recordUserResponse(text: string, responseType: "multi_choice_response" | "plan_response", metadata: {
|
|
48
60
|
responseToMessageId: string;
|
|
49
61
|
selectedChoiceIndices?: number[];
|
|
50
|
-
|
|
62
|
+
enableTesting?: boolean;
|
|
63
|
+
approved?: boolean;
|
|
64
|
+
}): Promise<string>;
|
|
51
65
|
recordInProgressMessage(payload: {
|
|
52
66
|
id: string;
|
|
53
67
|
text: string;
|
|
@@ -57,6 +71,7 @@ export declare class ChatSessionStore {
|
|
|
57
71
|
recordAssistant(payload: AiMessagePush): Promise<void>;
|
|
58
72
|
recordAssistantChangeInfo(payload: AiChangeInfoPush): Promise<void>;
|
|
59
73
|
private appendMessage;
|
|
74
|
+
submitWorkflowSummary(summary: AiWorkflowEvent): Promise<void>;
|
|
60
75
|
private determineSummaryOutcome;
|
|
61
76
|
recordSummary(summaryData: {
|
|
62
77
|
summary: string;
|