@dexto/core 1.1.4 → 1.1.6
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/README.md +125 -0
- package/dist/agent/DextoAgent.cjs +793 -0
- package/dist/agent/DextoAgent.d.cts +473 -0
- package/dist/agent/DextoAgent.d.ts +473 -0
- package/dist/agent/DextoAgent.js +774 -0
- package/dist/agent/agentCard.cjs +44 -0
- package/dist/agent/agentCard.d.cts +20 -0
- package/dist/agent/agentCard.d.ts +20 -0
- package/dist/agent/agentCard.js +20 -0
- package/dist/agent/error-codes.cjs +35 -0
- package/dist/agent/error-codes.d.cts +14 -0
- package/dist/agent/error-codes.d.ts +14 -0
- package/dist/agent/error-codes.js +11 -0
- package/dist/agent/errors.cjs +84 -0
- package/dist/agent/errors.d.cts +40 -0
- package/dist/agent/errors.d.ts +40 -0
- package/dist/agent/errors.js +60 -0
- package/dist/agent/index.cjs +44 -0
- package/dist/agent/index.d.cts +60 -0
- package/dist/agent/index.d.ts +60 -0
- package/dist/agent/index.js +13 -0
- package/dist/agent/registry/error-codes.cjs +42 -0
- package/dist/agent/registry/error-codes.d.cts +20 -0
- package/dist/agent/registry/error-codes.d.ts +20 -0
- package/dist/agent/registry/error-codes.js +18 -0
- package/dist/agent/registry/errors.cjs +158 -0
- package/dist/agent/registry/errors.d.cts +67 -0
- package/dist/agent/registry/errors.d.ts +67 -0
- package/dist/{chunk-PI6XFMEW.js → agent/registry/errors.js} +43 -50
- package/dist/agent/registry/registry.cjs +291 -0
- package/dist/agent/registry/registry.d.cts +67 -0
- package/dist/agent/registry/registry.d.ts +67 -0
- package/dist/agent/registry/registry.js +256 -0
- package/dist/agent/registry/types.cjs +41 -0
- package/dist/agent/registry/types.d.cts +100 -0
- package/dist/agent/registry/types.d.ts +100 -0
- package/dist/agent/registry/types.js +16 -0
- package/dist/agent/schemas.cjs +113 -0
- package/dist/agent/schemas.d.cts +1502 -0
- package/dist/agent/schemas.d.ts +1502 -0
- package/dist/agent/schemas.js +88 -0
- package/dist/agent/state-manager.cjs +214 -0
- package/dist/agent/state-manager.d.cts +97 -0
- package/dist/agent/state-manager.d.ts +97 -0
- package/dist/agent/state-manager.js +190 -0
- package/dist/config/agent-resolver.cjs +153 -0
- package/dist/config/agent-resolver.d.cts +15 -0
- package/dist/config/agent-resolver.d.ts +15 -0
- package/dist/config/agent-resolver.js +122 -0
- package/dist/config/error-codes.cjs +39 -0
- package/dist/config/error-codes.d.cts +17 -0
- package/dist/config/error-codes.d.ts +17 -0
- package/dist/config/error-codes.js +15 -0
- package/dist/config/errors.cjs +126 -0
- package/dist/config/errors.d.cts +49 -0
- package/dist/config/errors.d.ts +49 -0
- package/dist/config/errors.js +102 -0
- package/dist/config/index.cjs +26 -0
- package/dist/config/index.d.cts +7 -0
- package/dist/config/index.d.ts +7 -0
- package/dist/config/index.js +3 -0
- package/dist/config/loader.cjs +119 -0
- package/dist/config/loader.d.cts +19 -0
- package/dist/config/loader.d.ts +19 -0
- package/dist/config/loader.js +85 -0
- package/dist/config/writer.cjs +182 -0
- package/dist/config/writer.d.cts +38 -0
- package/dist/config/writer.d.ts +38 -0
- package/dist/config/writer.js +146 -0
- package/dist/context/compression/middle-removal.cjs +95 -0
- package/dist/context/compression/middle-removal.d.cts +48 -0
- package/dist/context/compression/middle-removal.d.ts +48 -0
- package/dist/context/compression/middle-removal.js +71 -0
- package/dist/context/compression/oldest-removal.cjs +70 -0
- package/dist/context/compression/oldest-removal.d.cts +43 -0
- package/dist/context/compression/oldest-removal.d.ts +43 -0
- package/dist/context/compression/oldest-removal.js +46 -0
- package/dist/context/compression/types.cjs +16 -0
- package/dist/context/compression/types.d.cts +21 -0
- package/dist/context/compression/types.d.ts +21 -0
- package/dist/context/compression/types.js +0 -0
- package/dist/context/error-codes.cjs +41 -0
- package/dist/context/error-codes.d.cts +19 -0
- package/dist/context/error-codes.d.ts +19 -0
- package/dist/context/error-codes.js +17 -0
- package/dist/context/errors.cjs +146 -0
- package/dist/context/errors.d.cts +36 -0
- package/dist/context/errors.d.ts +36 -0
- package/dist/context/errors.js +122 -0
- package/dist/context/index.cjs +24 -0
- package/dist/context/index.d.cts +19 -0
- package/dist/context/index.d.ts +19 -0
- package/dist/context/index.js +2 -0
- package/dist/context/manager.cjs +516 -0
- package/dist/context/manager.d.cts +254 -0
- package/dist/context/manager.d.ts +254 -0
- package/dist/context/manager.js +492 -0
- package/dist/context/types.cjs +16 -0
- package/dist/context/types.d.cts +113 -0
- package/dist/context/types.d.ts +113 -0
- package/dist/context/types.js +0 -0
- package/dist/context/utils.cjs +406 -0
- package/dist/context/utils.d.cts +79 -0
- package/dist/context/utils.d.ts +79 -0
- package/dist/context/utils.js +374 -0
- package/dist/errors/DextoBaseError.cjs +36 -0
- package/dist/errors/DextoBaseError.d.cts +15 -0
- package/dist/errors/DextoBaseError.d.ts +15 -0
- package/dist/errors/DextoBaseError.js +12 -0
- package/dist/errors/DextoRuntimeError.cjs +50 -0
- package/dist/errors/DextoRuntimeError.d.cts +37 -0
- package/dist/errors/DextoRuntimeError.d.ts +37 -0
- package/dist/errors/DextoRuntimeError.js +26 -0
- package/dist/errors/DextoValidationError.cjs +118 -0
- package/dist/errors/DextoValidationError.d.cts +65 -0
- package/dist/errors/DextoValidationError.d.ts +65 -0
- package/dist/{chunk-XFQLRBHE.js → errors/DextoValidationError.js} +4 -32
- package/dist/errors/index.cjs +42 -0
- package/dist/errors/index.d.cts +18 -0
- package/dist/errors/index.d.ts +18 -0
- package/dist/errors/index.js +13 -0
- package/dist/errors/result-bridge.cjs +38 -0
- package/dist/errors/result-bridge.d.cts +39 -0
- package/dist/errors/result-bridge.d.ts +39 -0
- package/dist/errors/result-bridge.js +14 -0
- package/dist/errors/types.cjs +54 -0
- package/dist/errors/types.d.cts +62 -0
- package/dist/errors/types.d.ts +62 -0
- package/dist/errors/types.js +29 -0
- package/dist/events/index.cjs +169 -0
- package/dist/events/index.d.cts +272 -0
- package/dist/events/index.d.ts +272 -0
- package/dist/events/index.js +136 -0
- package/dist/index.browser.cjs +9 -220
- package/dist/index.browser.d.cts +53 -379
- package/dist/index.browser.d.ts +53 -379
- package/dist/index.browser.js +4 -210
- package/dist/index.cjs +31 -15266
- package/dist/index.d.cts +89 -6842
- package/dist/index.d.ts +89 -6842
- package/dist/index.js +14 -9914
- package/dist/llm/error-codes.cjs +48 -0
- package/dist/llm/error-codes.d.cts +26 -0
- package/dist/llm/error-codes.d.ts +26 -0
- package/dist/llm/error-codes.js +24 -0
- package/dist/llm/errors.cjs +108 -0
- package/dist/llm/errors.d.cts +58 -0
- package/dist/llm/errors.d.ts +58 -0
- package/dist/llm/errors.js +84 -0
- package/dist/llm/formatters/anthropic.cjs +246 -0
- package/dist/llm/formatters/anthropic.d.cts +45 -0
- package/dist/llm/formatters/anthropic.d.ts +45 -0
- package/dist/llm/formatters/anthropic.js +227 -0
- package/dist/llm/formatters/factory.cjs +51 -0
- package/dist/llm/formatters/factory.d.cts +12 -0
- package/dist/llm/formatters/factory.d.ts +12 -0
- package/dist/llm/formatters/factory.js +27 -0
- package/dist/llm/formatters/openai.cjs +167 -0
- package/dist/llm/formatters/openai.d.cts +38 -0
- package/dist/llm/formatters/openai.d.ts +38 -0
- package/dist/llm/formatters/openai.js +147 -0
- package/dist/llm/formatters/types.cjs +16 -0
- package/dist/llm/formatters/types.d.cts +43 -0
- package/dist/llm/formatters/types.d.ts +43 -0
- package/dist/llm/formatters/types.js +0 -0
- package/dist/llm/formatters/vercel.cjs +411 -0
- package/dist/llm/formatters/vercel.d.cts +48 -0
- package/dist/llm/formatters/vercel.d.ts +48 -0
- package/dist/llm/formatters/vercel.js +387 -0
- package/dist/llm/index.cjs +34 -0
- package/dist/llm/index.d.cts +39 -0
- package/dist/llm/index.d.ts +39 -0
- package/dist/llm/index.js +7 -0
- package/dist/llm/registry.cjs +881 -0
- package/dist/llm/registry.d.cts +176 -0
- package/dist/llm/registry.d.ts +176 -0
- package/dist/{chunk-J6AXCN3H.js → llm/registry.js} +25 -455
- package/dist/llm/resolver.cjs +154 -0
- package/dist/llm/resolver.d.cts +34 -0
- package/dist/llm/resolver.d.ts +34 -0
- package/dist/llm/resolver.js +136 -0
- package/dist/llm/schemas.cjs +188 -0
- package/dist/llm/schemas.d.cts +111 -0
- package/dist/llm/schemas.d.ts +111 -0
- package/dist/llm/schemas.js +172 -0
- package/dist/llm/services/anthropic.cjs +398 -0
- package/dist/llm/services/anthropic.d.cts +65 -0
- package/dist/llm/services/anthropic.d.ts +65 -0
- package/dist/llm/services/anthropic.js +374 -0
- package/dist/llm/services/factory.cjs +164 -0
- package/dist/llm/services/factory.d.cts +39 -0
- package/dist/llm/services/factory.d.ts +39 -0
- package/dist/llm/services/factory.js +130 -0
- package/dist/llm/services/index.cjs +22 -0
- package/dist/llm/services/index.d.cts +21 -0
- package/dist/llm/services/index.d.ts +21 -0
- package/dist/llm/services/index.js +1 -0
- package/dist/llm/services/openai.cjs +470 -0
- package/dist/llm/services/openai.d.cts +65 -0
- package/dist/llm/services/openai.d.ts +65 -0
- package/dist/llm/services/openai.js +446 -0
- package/dist/llm/services/test-utils.integration.cjs +169 -0
- package/dist/llm/services/test-utils.integration.d.cts +83 -0
- package/dist/llm/services/test-utils.integration.d.ts +83 -0
- package/dist/llm/services/test-utils.integration.js +142 -0
- package/dist/llm/services/types.cjs +16 -0
- package/dist/llm/services/types.d.cts +56 -0
- package/dist/llm/services/types.d.ts +56 -0
- package/dist/llm/services/types.js +0 -0
- package/dist/llm/services/vercel.cjs +525 -0
- package/dist/llm/services/vercel.d.cts +72 -0
- package/dist/llm/services/vercel.d.ts +72 -0
- package/dist/llm/services/vercel.js +506 -0
- package/dist/llm/tokenizer/anthropic.cjs +43 -0
- package/dist/llm/tokenizer/anthropic.d.cts +21 -0
- package/dist/llm/tokenizer/anthropic.d.ts +21 -0
- package/dist/llm/tokenizer/anthropic.js +19 -0
- package/dist/llm/tokenizer/default.cjs +41 -0
- package/dist/llm/tokenizer/default.d.cts +16 -0
- package/dist/llm/tokenizer/default.d.ts +16 -0
- package/dist/llm/tokenizer/default.js +17 -0
- package/dist/llm/tokenizer/factory.cjs +44 -0
- package/dist/llm/tokenizer/factory.d.cts +12 -0
- package/dist/llm/tokenizer/factory.d.ts +12 -0
- package/dist/llm/tokenizer/factory.js +20 -0
- package/dist/llm/tokenizer/google.cjs +52 -0
- package/dist/llm/tokenizer/google.d.cts +31 -0
- package/dist/llm/tokenizer/google.d.ts +31 -0
- package/dist/llm/tokenizer/google.js +28 -0
- package/dist/llm/tokenizer/openai.cjs +108 -0
- package/dist/llm/tokenizer/openai.d.cts +32 -0
- package/dist/llm/tokenizer/openai.d.ts +32 -0
- package/dist/llm/tokenizer/openai.js +83 -0
- package/dist/llm/tokenizer/types.cjs +33 -0
- package/dist/llm/tokenizer/types.d.cts +19 -0
- package/dist/llm/tokenizer/types.d.ts +19 -0
- package/dist/llm/tokenizer/types.js +9 -0
- package/dist/llm/types.cjs +42 -0
- package/dist/llm/types.d.cts +29 -0
- package/dist/llm/types.d.ts +29 -0
- package/dist/llm/types.js +16 -0
- package/dist/llm/validation.cjs +162 -0
- package/dist/llm/validation.d.cts +60 -0
- package/dist/llm/validation.d.ts +60 -0
- package/dist/llm/validation.js +138 -0
- package/dist/logger/browser.cjs +86 -0
- package/dist/logger/browser.d.cts +29 -0
- package/dist/logger/browser.d.ts +29 -0
- package/dist/logger/browser.js +61 -0
- package/dist/logger/index.cjs +22 -0
- package/dist/logger/index.d.cts +1 -0
- package/dist/logger/index.d.ts +1 -0
- package/dist/logger/index.js +1 -0
- package/dist/logger/logger.cjs +362 -0
- package/dist/logger/logger.d.cts +52 -0
- package/dist/logger/logger.d.ts +52 -0
- package/dist/logger/logger.js +327 -0
- package/dist/mcp/error-codes.cjs +38 -0
- package/dist/mcp/error-codes.d.cts +16 -0
- package/dist/mcp/error-codes.d.ts +16 -0
- package/dist/mcp/error-codes.js +14 -0
- package/dist/mcp/errors.cjs +131 -0
- package/dist/mcp/errors.d.cts +72 -0
- package/dist/mcp/errors.d.ts +72 -0
- package/dist/mcp/errors.js +107 -0
- package/dist/mcp/index.cjs +34 -0
- package/dist/mcp/index.d.cts +26 -0
- package/dist/mcp/index.d.ts +26 -0
- package/dist/mcp/index.js +7 -0
- package/dist/mcp/manager.cjs +473 -0
- package/dist/mcp/manager.d.cts +163 -0
- package/dist/mcp/manager.d.ts +163 -0
- package/dist/mcp/manager.js +449 -0
- package/dist/mcp/mcp-client.cjs +420 -0
- package/dist/mcp/mcp-client.d.cts +108 -0
- package/dist/mcp/mcp-client.d.ts +108 -0
- package/dist/mcp/mcp-client.js +396 -0
- package/dist/mcp/resolver.cjs +78 -0
- package/dist/mcp/resolver.d.cts +22 -0
- package/dist/mcp/resolver.d.ts +22 -0
- package/dist/mcp/resolver.js +56 -0
- package/dist/mcp/schemas.cjs +82 -0
- package/dist/mcp/schemas.d.cts +266 -0
- package/dist/mcp/schemas.d.ts +266 -0
- package/dist/mcp/schemas.js +54 -0
- package/dist/mcp/types.cjs +16 -0
- package/dist/mcp/types.d.cts +21 -0
- package/dist/mcp/types.d.ts +21 -0
- package/dist/mcp/types.js +0 -0
- package/dist/preferences/constants.cjs +28 -0
- package/dist/preferences/constants.d.cts +3 -0
- package/dist/preferences/constants.d.ts +3 -0
- package/dist/preferences/constants.js +4 -0
- package/dist/preferences/error-codes.cjs +35 -0
- package/dist/preferences/error-codes.d.cts +9 -0
- package/dist/preferences/error-codes.d.ts +9 -0
- package/dist/preferences/error-codes.js +11 -0
- package/dist/preferences/errors.cjs +75 -0
- package/dist/preferences/errors.d.cts +33 -0
- package/dist/preferences/errors.d.ts +33 -0
- package/dist/preferences/errors.js +50 -0
- package/dist/preferences/index.cjs +55 -0
- package/dist/preferences/index.d.cts +21 -0
- package/dist/preferences/index.d.ts +21 -0
- package/dist/preferences/index.js +31 -0
- package/dist/preferences/loader.cjs +136 -0
- package/dist/preferences/loader.d.cts +45 -0
- package/dist/preferences/loader.d.ts +45 -0
- package/dist/preferences/loader.js +107 -0
- package/dist/preferences/schemas.cjs +74 -0
- package/dist/preferences/schemas.d.cts +104 -0
- package/dist/preferences/schemas.d.ts +104 -0
- package/dist/preferences/schemas.js +47 -0
- package/dist/search/index.cjs +28 -0
- package/dist/search/index.d.cts +5 -0
- package/dist/search/index.d.ts +5 -0
- package/dist/search/index.js +4 -0
- package/dist/search/search-service.cjs +245 -0
- package/dist/search/search-service.d.cts +47 -0
- package/dist/search/search-service.d.ts +47 -0
- package/dist/search/search-service.js +221 -0
- package/dist/search/types.cjs +16 -0
- package/dist/search/types.d.cts +78 -0
- package/dist/search/types.d.ts +78 -0
- package/dist/search/types.js +0 -0
- package/dist/session/chat-session.cjs +354 -0
- package/dist/session/chat-session.d.cts +284 -0
- package/dist/session/chat-session.d.ts +284 -0
- package/dist/session/chat-session.js +333 -0
- package/dist/session/error-codes.cjs +35 -0
- package/dist/session/error-codes.d.cts +13 -0
- package/dist/session/error-codes.d.ts +13 -0
- package/dist/session/error-codes.js +11 -0
- package/dist/session/errors.cjs +93 -0
- package/dist/session/errors.d.cts +58 -0
- package/dist/session/errors.d.ts +58 -0
- package/dist/session/errors.js +69 -0
- package/dist/session/history/database.cjs +95 -0
- package/dist/session/history/database.d.cts +28 -0
- package/dist/session/history/database.d.ts +28 -0
- package/dist/session/history/database.js +71 -0
- package/dist/session/history/factory.cjs +31 -0
- package/dist/session/history/factory.d.cts +11 -0
- package/dist/session/history/factory.d.ts +11 -0
- package/dist/session/history/factory.js +7 -0
- package/dist/session/history/types.cjs +16 -0
- package/dist/session/history/types.d.cts +17 -0
- package/dist/session/history/types.d.ts +17 -0
- package/dist/session/history/types.js +0 -0
- package/dist/session/index.cjs +37 -0
- package/dist/session/index.d.cts +53 -0
- package/dist/session/index.d.ts +53 -0
- package/dist/session/index.js +10 -0
- package/dist/session/schemas.cjs +32 -0
- package/dist/session/schemas.d.cts +16 -0
- package/dist/session/schemas.d.ts +16 -0
- package/dist/session/schemas.js +8 -0
- package/dist/session/session-manager.cjs +481 -0
- package/dist/session/session-manager.d.cts +219 -0
- package/dist/session/session-manager.d.ts +219 -0
- package/dist/session/session-manager.js +457 -0
- package/dist/storage/backend/cache-backend.cjs +16 -0
- package/dist/storage/backend/cache-backend.d.cts +15 -0
- package/dist/storage/backend/cache-backend.d.ts +15 -0
- package/dist/storage/backend/cache-backend.js +0 -0
- package/dist/storage/backend/database-backend.cjs +16 -0
- package/dist/storage/backend/database-backend.d.cts +19 -0
- package/dist/storage/backend/database-backend.d.ts +19 -0
- package/dist/storage/backend/database-backend.js +0 -0
- package/dist/storage/backend/memory-backend.cjs +140 -0
- package/dist/storage/backend/memory-backend.d.cts +34 -0
- package/dist/storage/backend/memory-backend.d.ts +34 -0
- package/dist/storage/backend/memory-backend.js +116 -0
- package/dist/storage/backend/postgres-backend.cjs +231 -0
- package/dist/storage/backend/postgres-backend.d.cts +37 -0
- package/dist/storage/backend/postgres-backend.d.ts +37 -0
- package/dist/{postgres-backend-WMWS7RAT.js → storage/backend/postgres-backend.js} +3 -12
- package/dist/storage/backend/redis-backend.cjs +184 -0
- package/dist/storage/backend/redis-backend.d.cts +36 -0
- package/dist/storage/backend/redis-backend.d.ts +36 -0
- package/dist/{redis-backend-BNLN3XHX.js → storage/backend/redis-backend.js} +3 -12
- package/dist/storage/backend/sqlite-backend.cjs +271 -0
- package/dist/storage/backend/sqlite-backend.d.cts +35 -0
- package/dist/storage/backend/sqlite-backend.d.ts +35 -0
- package/dist/{sqlite-backend-AR6XNK2Q.js → storage/backend/sqlite-backend.js} +6 -17
- package/dist/storage/backend/types.cjs +16 -0
- package/dist/storage/backend/types.d.cts +14 -0
- package/dist/storage/backend/types.d.ts +14 -0
- package/dist/storage/backend/types.js +0 -0
- package/dist/storage/error-codes.cjs +36 -0
- package/dist/storage/error-codes.d.cts +14 -0
- package/dist/storage/error-codes.d.ts +14 -0
- package/dist/storage/error-codes.js +12 -0
- package/dist/storage/errors.cjs +104 -0
- package/dist/storage/errors.d.cts +63 -0
- package/dist/storage/errors.d.ts +63 -0
- package/dist/{chunk-F2QFAECT.js → storage/errors.js} +23 -30
- package/dist/storage/index.cjs +33 -0
- package/dist/storage/index.d.cts +7 -0
- package/dist/storage/index.d.ts +7 -0
- package/dist/storage/index.js +7 -0
- package/dist/storage/schemas.cjs +113 -0
- package/dist/storage/schemas.d.cts +856 -0
- package/dist/storage/schemas.d.ts +856 -0
- package/dist/storage/schemas.js +89 -0
- package/dist/storage/storage-manager.cjs +208 -0
- package/dist/storage/storage-manager.d.cts +52 -0
- package/dist/storage/storage-manager.d.ts +52 -0
- package/dist/storage/storage-manager.js +173 -0
- package/dist/storage/types.cjs +16 -0
- package/dist/storage/types.d.cts +5 -0
- package/dist/storage/types.d.ts +5 -0
- package/dist/storage/types.js +0 -0
- package/dist/systemPrompt/contributors.cjs +146 -0
- package/dist/systemPrompt/contributors.d.cts +44 -0
- package/dist/systemPrompt/contributors.d.ts +44 -0
- package/dist/systemPrompt/contributors.js +120 -0
- package/dist/systemPrompt/error-codes.cjs +35 -0
- package/dist/systemPrompt/error-codes.d.cts +13 -0
- package/dist/systemPrompt/error-codes.d.ts +13 -0
- package/dist/systemPrompt/error-codes.js +11 -0
- package/dist/systemPrompt/errors.cjs +93 -0
- package/dist/systemPrompt/errors.d.cts +55 -0
- package/dist/systemPrompt/errors.d.ts +55 -0
- package/dist/systemPrompt/errors.js +69 -0
- package/dist/systemPrompt/in-built-prompts.cjs +68 -0
- package/dist/systemPrompt/in-built-prompts.d.cts +28 -0
- package/dist/systemPrompt/in-built-prompts.d.ts +28 -0
- package/dist/systemPrompt/in-built-prompts.js +42 -0
- package/dist/systemPrompt/index.cjs +30 -0
- package/dist/systemPrompt/index.d.cts +14 -0
- package/dist/systemPrompt/index.d.ts +14 -0
- package/dist/systemPrompt/index.js +5 -0
- package/dist/systemPrompt/manager.cjs +93 -0
- package/dist/systemPrompt/manager.d.cts +31 -0
- package/dist/systemPrompt/manager.d.ts +31 -0
- package/dist/systemPrompt/manager.js +69 -0
- package/dist/systemPrompt/registry.cjs +51 -0
- package/dist/systemPrompt/registry.d.cts +20 -0
- package/dist/systemPrompt/registry.d.ts +20 -0
- package/dist/systemPrompt/registry.js +15 -0
- package/dist/systemPrompt/schemas.cjs +107 -0
- package/dist/systemPrompt/schemas.d.cts +401 -0
- package/dist/systemPrompt/schemas.d.ts +401 -0
- package/dist/systemPrompt/schemas.js +81 -0
- package/dist/systemPrompt/types.cjs +16 -0
- package/dist/systemPrompt/types.d.cts +19 -0
- package/dist/systemPrompt/types.d.ts +19 -0
- package/dist/systemPrompt/types.js +0 -0
- package/dist/tools/confirmation/allowed-tools-provider/factory.cjs +44 -0
- package/dist/tools/confirmation/allowed-tools-provider/factory.d.cts +19 -0
- package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts +19 -0
- package/dist/tools/confirmation/allowed-tools-provider/factory.js +20 -0
- package/dist/tools/confirmation/allowed-tools-provider/in-memory.cjs +62 -0
- package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.cts +17 -0
- package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.ts +17 -0
- package/dist/tools/confirmation/allowed-tools-provider/in-memory.js +38 -0
- package/dist/tools/confirmation/allowed-tools-provider/storage.cjs +68 -0
- package/dist/tools/confirmation/allowed-tools-provider/storage.d.cts +26 -0
- package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts +26 -0
- package/dist/tools/confirmation/allowed-tools-provider/storage.js +44 -0
- package/dist/tools/confirmation/allowed-tools-provider/types.cjs +16 -0
- package/dist/tools/confirmation/allowed-tools-provider/types.d.cts +35 -0
- package/dist/tools/confirmation/allowed-tools-provider/types.d.ts +35 -0
- package/dist/tools/confirmation/allowed-tools-provider/types.js +0 -0
- package/dist/tools/confirmation/event-based-confirmation-provider.cjs +158 -0
- package/dist/tools/confirmation/event-based-confirmation-provider.d.cts +41 -0
- package/dist/tools/confirmation/event-based-confirmation-provider.d.ts +41 -0
- package/dist/tools/confirmation/event-based-confirmation-provider.js +134 -0
- package/dist/tools/confirmation/factory.cjs +52 -0
- package/dist/tools/confirmation/factory.d.cts +37 -0
- package/dist/tools/confirmation/factory.d.ts +37 -0
- package/dist/tools/confirmation/factory.js +28 -0
- package/dist/tools/confirmation/noop-confirmation-provider.cjs +49 -0
- package/dist/tools/confirmation/noop-confirmation-provider.d.cts +22 -0
- package/dist/tools/confirmation/noop-confirmation-provider.d.ts +22 -0
- package/dist/tools/confirmation/noop-confirmation-provider.js +25 -0
- package/dist/tools/confirmation/types.cjs +16 -0
- package/dist/tools/confirmation/types.d.cts +46 -0
- package/dist/tools/confirmation/types.d.ts +46 -0
- package/dist/tools/confirmation/types.js +0 -0
- package/dist/tools/error-codes.cjs +40 -0
- package/dist/tools/error-codes.d.cts +18 -0
- package/dist/tools/error-codes.d.ts +18 -0
- package/dist/tools/error-codes.js +16 -0
- package/dist/tools/errors.cjs +164 -0
- package/dist/tools/errors.d.cts +97 -0
- package/dist/tools/errors.d.ts +97 -0
- package/dist/tools/errors.js +140 -0
- package/dist/tools/index.cjs +37 -0
- package/dist/tools/index.d.cts +19 -0
- package/dist/tools/index.d.ts +19 -0
- package/dist/tools/index.js +8 -0
- package/dist/tools/internal-tools/implementations/search-history-tool.cjs +61 -0
- package/dist/tools/internal-tools/implementations/search-history-tool.d.cts +15 -0
- package/dist/tools/internal-tools/implementations/search-history-tool.d.ts +15 -0
- package/dist/tools/internal-tools/implementations/search-history-tool.js +37 -0
- package/dist/tools/internal-tools/index.cjs +24 -0
- package/dist/tools/internal-tools/index.d.cts +13 -0
- package/dist/tools/internal-tools/index.d.ts +13 -0
- package/dist/tools/internal-tools/index.js +2 -0
- package/dist/tools/internal-tools/provider.cjs +159 -0
- package/dist/tools/internal-tools/provider.d.cts +66 -0
- package/dist/tools/internal-tools/provider.d.ts +66 -0
- package/dist/tools/internal-tools/provider.js +135 -0
- package/dist/tools/internal-tools/registry.cjs +43 -0
- package/dist/tools/internal-tools/registry.d.cts +45 -0
- package/dist/tools/internal-tools/registry.d.ts +45 -0
- package/dist/tools/internal-tools/registry.js +17 -0
- package/dist/tools/schemas.cjs +45 -0
- package/dist/tools/schemas.d.cts +21 -0
- package/dist/tools/schemas.d.ts +21 -0
- package/dist/tools/schemas.js +20 -0
- package/dist/tools/tool-manager.cjs +275 -0
- package/dist/tools/tool-manager.d.cts +106 -0
- package/dist/tools/tool-manager.d.ts +106 -0
- package/dist/tools/tool-manager.js +251 -0
- package/dist/tools/types.cjs +16 -0
- package/dist/tools/types.d.cts +66 -0
- package/dist/tools/types.d.ts +66 -0
- package/dist/tools/types.js +0 -0
- package/dist/utils/api-key-resolver.cjs +62 -0
- package/dist/utils/api-key-resolver.d.cts +23 -0
- package/dist/utils/api-key-resolver.d.ts +23 -0
- package/dist/utils/api-key-resolver.js +36 -0
- package/dist/utils/api-key-store.cjs +56 -0
- package/dist/utils/api-key-store.d.cts +26 -0
- package/dist/utils/api-key-store.d.ts +26 -0
- package/dist/utils/api-key-store.js +30 -0
- package/dist/utils/env.cjs +154 -0
- package/dist/utils/env.d.cts +29 -0
- package/dist/utils/env.d.ts +29 -0
- package/dist/utils/env.js +118 -0
- package/dist/utils/error-conversion.cjs +53 -0
- package/dist/utils/error-conversion.d.cts +13 -0
- package/dist/utils/error-conversion.d.ts +13 -0
- package/dist/utils/error-conversion.js +29 -0
- package/dist/utils/execution-context.cjs +85 -0
- package/dist/utils/execution-context.d.cts +21 -0
- package/dist/utils/execution-context.d.ts +21 -0
- package/dist/utils/execution-context.js +49 -0
- package/dist/{chunk-MVKLS3LM.js → utils/fs-walk.cjs} +27 -18
- package/dist/utils/fs-walk.d.cts +9 -0
- package/dist/utils/fs-walk.d.ts +9 -0
- package/dist/utils/fs-walk.js +18 -0
- package/dist/utils/index.cjs +44 -0
- package/dist/utils/index.d.cts +63 -0
- package/dist/utils/index.d.ts +63 -0
- package/dist/utils/index.js +12 -0
- package/dist/utils/path.cjs +197 -0
- package/dist/utils/path.d.cts +54 -0
- package/dist/utils/path.d.ts +54 -0
- package/dist/utils/path.js +159 -0
- package/dist/utils/port-utils.cjs +37 -0
- package/dist/utils/port-utils.d.cts +11 -0
- package/dist/utils/port-utils.d.ts +11 -0
- package/dist/utils/port-utils.js +13 -0
- package/dist/utils/port-utils.spec.cjs +26 -0
- package/dist/utils/port-utils.spec.d.cts +2 -0
- package/dist/utils/port-utils.spec.d.ts +2 -0
- package/dist/utils/port-utils.spec.js +25 -0
- package/dist/utils/redactor.cjs +105 -0
- package/dist/utils/redactor.d.cts +18 -0
- package/dist/utils/redactor.d.ts +18 -0
- package/dist/utils/redactor.js +81 -0
- package/dist/utils/result.cjs +115 -0
- package/dist/utils/result.d.cts +180 -0
- package/dist/utils/result.d.ts +180 -0
- package/dist/utils/result.js +82 -0
- package/dist/utils/safe-stringify.cjs +57 -0
- package/dist/utils/safe-stringify.d.cts +7 -0
- package/dist/utils/safe-stringify.d.ts +7 -0
- package/dist/utils/safe-stringify.js +33 -0
- package/dist/utils/schema.cjs +42 -0
- package/dist/utils/schema.d.cts +6 -0
- package/dist/utils/schema.d.ts +6 -0
- package/dist/utils/schema.js +18 -0
- package/dist/utils/service-initializer.cjs +119 -0
- package/dist/utils/service-initializer.d.cts +63 -0
- package/dist/utils/service-initializer.d.ts +63 -0
- package/dist/utils/service-initializer.js +95 -0
- package/dist/utils/user-info.cjs +30 -0
- package/dist/utils/user-info.d.cts +3 -0
- package/dist/utils/user-info.d.ts +3 -0
- package/dist/utils/user-info.js +6 -0
- package/dist/utils/zod-schema-converter.cjs +112 -0
- package/dist/utils/zod-schema-converter.d.cts +13 -0
- package/dist/utils/zod-schema-converter.d.ts +13 -0
- package/dist/utils/zod-schema-converter.js +87 -0
- package/package.json +2 -2
- package/dist/chunk-D62MHQBE.js +0 -2203
- package/dist/chunk-FCJVTIBV.js +0 -535
- package/dist/chunk-TPERKLLN.js +0 -75
- package/dist/errors-ZZ4Z3FKB.js +0 -10
- package/dist/loader-HBNEYPQZ.js +0 -20
- package/dist/path-TP7WBDED.js +0 -21
- package/dist/registry-Z4DFXODW.js +0 -14
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var search_service_exports = {};
|
|
20
|
+
__export(search_service_exports, {
|
|
21
|
+
SearchService: () => SearchService
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(search_service_exports);
|
|
24
|
+
var import_logger = require("../logger/index.js");
|
|
25
|
+
class SearchService {
|
|
26
|
+
constructor(database) {
|
|
27
|
+
this.database = database;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Search for messages across all sessions or within a specific session
|
|
31
|
+
*/
|
|
32
|
+
async searchMessages(query, options = {}) {
|
|
33
|
+
const { sessionId, role, limit = 20, offset = 0 } = options;
|
|
34
|
+
if (!query.trim()) {
|
|
35
|
+
return {
|
|
36
|
+
results: [],
|
|
37
|
+
total: 0,
|
|
38
|
+
hasMore: false,
|
|
39
|
+
query,
|
|
40
|
+
options
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
try {
|
|
44
|
+
import_logger.logger.debug(`Searching messages for query: "${query}"`, {
|
|
45
|
+
sessionId,
|
|
46
|
+
role,
|
|
47
|
+
limit,
|
|
48
|
+
offset
|
|
49
|
+
});
|
|
50
|
+
const allResults = [];
|
|
51
|
+
const sessionIds = sessionId ? [sessionId] : await this.getSessionIds();
|
|
52
|
+
for (const sId of sessionIds) {
|
|
53
|
+
const sessionResults = await this.searchInSession(query, sId, role);
|
|
54
|
+
allResults.push(...sessionResults);
|
|
55
|
+
}
|
|
56
|
+
const sortedResults = this.sortResults(allResults, query);
|
|
57
|
+
const total = sortedResults.length;
|
|
58
|
+
const paginatedResults = sortedResults.slice(offset, offset + limit);
|
|
59
|
+
const hasMore = offset + limit < total;
|
|
60
|
+
return {
|
|
61
|
+
results: paginatedResults,
|
|
62
|
+
total,
|
|
63
|
+
hasMore,
|
|
64
|
+
query,
|
|
65
|
+
options
|
|
66
|
+
};
|
|
67
|
+
} catch (error) {
|
|
68
|
+
import_logger.logger.error(
|
|
69
|
+
`Error searching messages: ${error instanceof Error ? error.message : String(error)}`
|
|
70
|
+
);
|
|
71
|
+
return {
|
|
72
|
+
results: [],
|
|
73
|
+
total: 0,
|
|
74
|
+
hasMore: false,
|
|
75
|
+
query,
|
|
76
|
+
options
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Search for sessions that contain the query
|
|
82
|
+
*/
|
|
83
|
+
async searchSessions(query) {
|
|
84
|
+
if (!query.trim()) {
|
|
85
|
+
return {
|
|
86
|
+
results: [],
|
|
87
|
+
total: 0,
|
|
88
|
+
hasMore: false,
|
|
89
|
+
query
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
try {
|
|
93
|
+
import_logger.logger.debug(`Searching sessions for query: "${query}"`);
|
|
94
|
+
const sessionResults = [];
|
|
95
|
+
const sessionIds = await this.getSessionIds();
|
|
96
|
+
for (const sessionId of sessionIds) {
|
|
97
|
+
const messageResults = await this.searchInSession(query, sessionId);
|
|
98
|
+
if (messageResults.length > 0) {
|
|
99
|
+
const sessionMetadata = await this.getSessionMetadata(sessionId);
|
|
100
|
+
if (sessionMetadata) {
|
|
101
|
+
const firstMatch = messageResults[0];
|
|
102
|
+
if (firstMatch) {
|
|
103
|
+
sessionResults.push({
|
|
104
|
+
sessionId,
|
|
105
|
+
matchCount: messageResults.length,
|
|
106
|
+
firstMatch,
|
|
107
|
+
metadata: sessionMetadata
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
const sortedResults = sessionResults.sort((a, b) => {
|
|
114
|
+
if (a.matchCount !== b.matchCount) {
|
|
115
|
+
return b.matchCount - a.matchCount;
|
|
116
|
+
}
|
|
117
|
+
return b.metadata.lastActivity - a.metadata.lastActivity;
|
|
118
|
+
});
|
|
119
|
+
return {
|
|
120
|
+
results: sortedResults,
|
|
121
|
+
total: sortedResults.length,
|
|
122
|
+
hasMore: false,
|
|
123
|
+
query
|
|
124
|
+
};
|
|
125
|
+
} catch (error) {
|
|
126
|
+
import_logger.logger.error(
|
|
127
|
+
`Error searching sessions: ${error instanceof Error ? error.message : String(error)}`
|
|
128
|
+
);
|
|
129
|
+
return {
|
|
130
|
+
results: [],
|
|
131
|
+
total: 0,
|
|
132
|
+
hasMore: false,
|
|
133
|
+
query
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Search for messages within a specific session
|
|
139
|
+
*/
|
|
140
|
+
async searchInSession(query, sessionId, role) {
|
|
141
|
+
const messagesKey = `messages:${sessionId}`;
|
|
142
|
+
const MAX_MESSAGES_PER_SEARCH = 1e4;
|
|
143
|
+
const messages = await this.database.getRange(
|
|
144
|
+
messagesKey,
|
|
145
|
+
0,
|
|
146
|
+
MAX_MESSAGES_PER_SEARCH
|
|
147
|
+
);
|
|
148
|
+
const results = [];
|
|
149
|
+
const lowerQuery = query.toLowerCase();
|
|
150
|
+
for (let i = 0; i < messages.length; i++) {
|
|
151
|
+
const message = messages[i];
|
|
152
|
+
if (!message) {
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
if (role && message.role !== role) {
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
const searchableText = this.extractSearchableText(message);
|
|
159
|
+
if (!searchableText) {
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
const lowerText = searchableText.toLowerCase();
|
|
163
|
+
const matchIndex = lowerText.indexOf(lowerQuery);
|
|
164
|
+
if (matchIndex !== -1) {
|
|
165
|
+
const matchedText = searchableText.substring(matchIndex, matchIndex + query.length);
|
|
166
|
+
const context = this.getContext(searchableText, matchIndex, query.length);
|
|
167
|
+
results.push({
|
|
168
|
+
sessionId,
|
|
169
|
+
message,
|
|
170
|
+
matchedText,
|
|
171
|
+
context,
|
|
172
|
+
messageIndex: i
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return results;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Extract searchable text from a message
|
|
180
|
+
*/
|
|
181
|
+
extractSearchableText(message) {
|
|
182
|
+
if (!message.content) {
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
if (typeof message.content === "string") {
|
|
186
|
+
return message.content;
|
|
187
|
+
}
|
|
188
|
+
if (Array.isArray(message.content)) {
|
|
189
|
+
return message.content.filter((part) => part.type === "text").map((part) => "text" in part ? part.text : "").join(" ");
|
|
190
|
+
}
|
|
191
|
+
return null;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Get context around a match for preview
|
|
195
|
+
*/
|
|
196
|
+
getContext(text, matchIndex, matchLength, contextLength = 50) {
|
|
197
|
+
const start = Math.max(0, matchIndex - contextLength);
|
|
198
|
+
const end = Math.min(text.length, matchIndex + matchLength + contextLength);
|
|
199
|
+
let context = text.substring(start, end);
|
|
200
|
+
if (start > 0) {
|
|
201
|
+
context = "..." + context;
|
|
202
|
+
}
|
|
203
|
+
if (end < text.length) {
|
|
204
|
+
context = context + "...";
|
|
205
|
+
}
|
|
206
|
+
return context;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Sort search results by relevance
|
|
210
|
+
*/
|
|
211
|
+
sortResults(results, query) {
|
|
212
|
+
const lowerQuery = query.toLowerCase();
|
|
213
|
+
return results.sort((a, b) => {
|
|
214
|
+
const aText = this.extractSearchableText(a.message)?.toLowerCase() || "";
|
|
215
|
+
const bText = this.extractSearchableText(b.message)?.toLowerCase() || "";
|
|
216
|
+
const aExactMatch = aText.includes(` ${lowerQuery} `) || aText.startsWith(lowerQuery) || aText.endsWith(lowerQuery);
|
|
217
|
+
const bExactMatch = bText.includes(` ${lowerQuery} `) || bText.startsWith(lowerQuery) || bText.endsWith(lowerQuery);
|
|
218
|
+
if (aExactMatch && !bExactMatch) return -1;
|
|
219
|
+
if (!aExactMatch && bExactMatch) return 1;
|
|
220
|
+
return b.messageIndex - a.messageIndex;
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Get all session IDs
|
|
225
|
+
*/
|
|
226
|
+
async getSessionIds() {
|
|
227
|
+
const sessionKeys = await this.database.list("session:");
|
|
228
|
+
return sessionKeys.map((key) => key.replace("session:", ""));
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Get session metadata
|
|
232
|
+
*/
|
|
233
|
+
async getSessionMetadata(sessionId) {
|
|
234
|
+
const sessionKey = `session:${sessionId}`;
|
|
235
|
+
const sessionData = await this.database.get(sessionKey);
|
|
236
|
+
if (!sessionData) {
|
|
237
|
+
throw new Error(`Session metadata not found: ${sessionId}`);
|
|
238
|
+
}
|
|
239
|
+
return sessionData;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
243
|
+
0 && (module.exports = {
|
|
244
|
+
SearchService
|
|
245
|
+
});
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { DatabaseBackend } from '../storage/backend/database-backend.cjs';
|
|
2
|
+
import { SearchOptions, SearchResponse, SessionSearchResponse } from './types.cjs';
|
|
3
|
+
import '../context/types.cjs';
|
|
4
|
+
import '../llm/types.cjs';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Service for searching through conversation history
|
|
8
|
+
* TODO: remove duplicate stuff related to session manager instead of directly using DB
|
|
9
|
+
*/
|
|
10
|
+
declare class SearchService {
|
|
11
|
+
private database;
|
|
12
|
+
constructor(database: DatabaseBackend);
|
|
13
|
+
/**
|
|
14
|
+
* Search for messages across all sessions or within a specific session
|
|
15
|
+
*/
|
|
16
|
+
searchMessages(query: string, options?: SearchOptions): Promise<SearchResponse>;
|
|
17
|
+
/**
|
|
18
|
+
* Search for sessions that contain the query
|
|
19
|
+
*/
|
|
20
|
+
searchSessions(query: string): Promise<SessionSearchResponse>;
|
|
21
|
+
/**
|
|
22
|
+
* Search for messages within a specific session
|
|
23
|
+
*/
|
|
24
|
+
private searchInSession;
|
|
25
|
+
/**
|
|
26
|
+
* Extract searchable text from a message
|
|
27
|
+
*/
|
|
28
|
+
private extractSearchableText;
|
|
29
|
+
/**
|
|
30
|
+
* Get context around a match for preview
|
|
31
|
+
*/
|
|
32
|
+
private getContext;
|
|
33
|
+
/**
|
|
34
|
+
* Sort search results by relevance
|
|
35
|
+
*/
|
|
36
|
+
private sortResults;
|
|
37
|
+
/**
|
|
38
|
+
* Get all session IDs
|
|
39
|
+
*/
|
|
40
|
+
private getSessionIds;
|
|
41
|
+
/**
|
|
42
|
+
* Get session metadata
|
|
43
|
+
*/
|
|
44
|
+
private getSessionMetadata;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export { SearchService };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { DatabaseBackend } from '../storage/backend/database-backend.js';
|
|
2
|
+
import { SearchOptions, SearchResponse, SessionSearchResponse } from './types.js';
|
|
3
|
+
import '../context/types.js';
|
|
4
|
+
import '../llm/types.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Service for searching through conversation history
|
|
8
|
+
* TODO: remove duplicate stuff related to session manager instead of directly using DB
|
|
9
|
+
*/
|
|
10
|
+
declare class SearchService {
|
|
11
|
+
private database;
|
|
12
|
+
constructor(database: DatabaseBackend);
|
|
13
|
+
/**
|
|
14
|
+
* Search for messages across all sessions or within a specific session
|
|
15
|
+
*/
|
|
16
|
+
searchMessages(query: string, options?: SearchOptions): Promise<SearchResponse>;
|
|
17
|
+
/**
|
|
18
|
+
* Search for sessions that contain the query
|
|
19
|
+
*/
|
|
20
|
+
searchSessions(query: string): Promise<SessionSearchResponse>;
|
|
21
|
+
/**
|
|
22
|
+
* Search for messages within a specific session
|
|
23
|
+
*/
|
|
24
|
+
private searchInSession;
|
|
25
|
+
/**
|
|
26
|
+
* Extract searchable text from a message
|
|
27
|
+
*/
|
|
28
|
+
private extractSearchableText;
|
|
29
|
+
/**
|
|
30
|
+
* Get context around a match for preview
|
|
31
|
+
*/
|
|
32
|
+
private getContext;
|
|
33
|
+
/**
|
|
34
|
+
* Sort search results by relevance
|
|
35
|
+
*/
|
|
36
|
+
private sortResults;
|
|
37
|
+
/**
|
|
38
|
+
* Get all session IDs
|
|
39
|
+
*/
|
|
40
|
+
private getSessionIds;
|
|
41
|
+
/**
|
|
42
|
+
* Get session metadata
|
|
43
|
+
*/
|
|
44
|
+
private getSessionMetadata;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export { SearchService };
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import { logger } from "../logger/index.js";
|
|
2
|
+
class SearchService {
|
|
3
|
+
constructor(database) {
|
|
4
|
+
this.database = database;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Search for messages across all sessions or within a specific session
|
|
8
|
+
*/
|
|
9
|
+
async searchMessages(query, options = {}) {
|
|
10
|
+
const { sessionId, role, limit = 20, offset = 0 } = options;
|
|
11
|
+
if (!query.trim()) {
|
|
12
|
+
return {
|
|
13
|
+
results: [],
|
|
14
|
+
total: 0,
|
|
15
|
+
hasMore: false,
|
|
16
|
+
query,
|
|
17
|
+
options
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
try {
|
|
21
|
+
logger.debug(`Searching messages for query: "${query}"`, {
|
|
22
|
+
sessionId,
|
|
23
|
+
role,
|
|
24
|
+
limit,
|
|
25
|
+
offset
|
|
26
|
+
});
|
|
27
|
+
const allResults = [];
|
|
28
|
+
const sessionIds = sessionId ? [sessionId] : await this.getSessionIds();
|
|
29
|
+
for (const sId of sessionIds) {
|
|
30
|
+
const sessionResults = await this.searchInSession(query, sId, role);
|
|
31
|
+
allResults.push(...sessionResults);
|
|
32
|
+
}
|
|
33
|
+
const sortedResults = this.sortResults(allResults, query);
|
|
34
|
+
const total = sortedResults.length;
|
|
35
|
+
const paginatedResults = sortedResults.slice(offset, offset + limit);
|
|
36
|
+
const hasMore = offset + limit < total;
|
|
37
|
+
return {
|
|
38
|
+
results: paginatedResults,
|
|
39
|
+
total,
|
|
40
|
+
hasMore,
|
|
41
|
+
query,
|
|
42
|
+
options
|
|
43
|
+
};
|
|
44
|
+
} catch (error) {
|
|
45
|
+
logger.error(
|
|
46
|
+
`Error searching messages: ${error instanceof Error ? error.message : String(error)}`
|
|
47
|
+
);
|
|
48
|
+
return {
|
|
49
|
+
results: [],
|
|
50
|
+
total: 0,
|
|
51
|
+
hasMore: false,
|
|
52
|
+
query,
|
|
53
|
+
options
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Search for sessions that contain the query
|
|
59
|
+
*/
|
|
60
|
+
async searchSessions(query) {
|
|
61
|
+
if (!query.trim()) {
|
|
62
|
+
return {
|
|
63
|
+
results: [],
|
|
64
|
+
total: 0,
|
|
65
|
+
hasMore: false,
|
|
66
|
+
query
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
try {
|
|
70
|
+
logger.debug(`Searching sessions for query: "${query}"`);
|
|
71
|
+
const sessionResults = [];
|
|
72
|
+
const sessionIds = await this.getSessionIds();
|
|
73
|
+
for (const sessionId of sessionIds) {
|
|
74
|
+
const messageResults = await this.searchInSession(query, sessionId);
|
|
75
|
+
if (messageResults.length > 0) {
|
|
76
|
+
const sessionMetadata = await this.getSessionMetadata(sessionId);
|
|
77
|
+
if (sessionMetadata) {
|
|
78
|
+
const firstMatch = messageResults[0];
|
|
79
|
+
if (firstMatch) {
|
|
80
|
+
sessionResults.push({
|
|
81
|
+
sessionId,
|
|
82
|
+
matchCount: messageResults.length,
|
|
83
|
+
firstMatch,
|
|
84
|
+
metadata: sessionMetadata
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
const sortedResults = sessionResults.sort((a, b) => {
|
|
91
|
+
if (a.matchCount !== b.matchCount) {
|
|
92
|
+
return b.matchCount - a.matchCount;
|
|
93
|
+
}
|
|
94
|
+
return b.metadata.lastActivity - a.metadata.lastActivity;
|
|
95
|
+
});
|
|
96
|
+
return {
|
|
97
|
+
results: sortedResults,
|
|
98
|
+
total: sortedResults.length,
|
|
99
|
+
hasMore: false,
|
|
100
|
+
query
|
|
101
|
+
};
|
|
102
|
+
} catch (error) {
|
|
103
|
+
logger.error(
|
|
104
|
+
`Error searching sessions: ${error instanceof Error ? error.message : String(error)}`
|
|
105
|
+
);
|
|
106
|
+
return {
|
|
107
|
+
results: [],
|
|
108
|
+
total: 0,
|
|
109
|
+
hasMore: false,
|
|
110
|
+
query
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Search for messages within a specific session
|
|
116
|
+
*/
|
|
117
|
+
async searchInSession(query, sessionId, role) {
|
|
118
|
+
const messagesKey = `messages:${sessionId}`;
|
|
119
|
+
const MAX_MESSAGES_PER_SEARCH = 1e4;
|
|
120
|
+
const messages = await this.database.getRange(
|
|
121
|
+
messagesKey,
|
|
122
|
+
0,
|
|
123
|
+
MAX_MESSAGES_PER_SEARCH
|
|
124
|
+
);
|
|
125
|
+
const results = [];
|
|
126
|
+
const lowerQuery = query.toLowerCase();
|
|
127
|
+
for (let i = 0; i < messages.length; i++) {
|
|
128
|
+
const message = messages[i];
|
|
129
|
+
if (!message) {
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
if (role && message.role !== role) {
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
const searchableText = this.extractSearchableText(message);
|
|
136
|
+
if (!searchableText) {
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
const lowerText = searchableText.toLowerCase();
|
|
140
|
+
const matchIndex = lowerText.indexOf(lowerQuery);
|
|
141
|
+
if (matchIndex !== -1) {
|
|
142
|
+
const matchedText = searchableText.substring(matchIndex, matchIndex + query.length);
|
|
143
|
+
const context = this.getContext(searchableText, matchIndex, query.length);
|
|
144
|
+
results.push({
|
|
145
|
+
sessionId,
|
|
146
|
+
message,
|
|
147
|
+
matchedText,
|
|
148
|
+
context,
|
|
149
|
+
messageIndex: i
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return results;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Extract searchable text from a message
|
|
157
|
+
*/
|
|
158
|
+
extractSearchableText(message) {
|
|
159
|
+
if (!message.content) {
|
|
160
|
+
return null;
|
|
161
|
+
}
|
|
162
|
+
if (typeof message.content === "string") {
|
|
163
|
+
return message.content;
|
|
164
|
+
}
|
|
165
|
+
if (Array.isArray(message.content)) {
|
|
166
|
+
return message.content.filter((part) => part.type === "text").map((part) => "text" in part ? part.text : "").join(" ");
|
|
167
|
+
}
|
|
168
|
+
return null;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Get context around a match for preview
|
|
172
|
+
*/
|
|
173
|
+
getContext(text, matchIndex, matchLength, contextLength = 50) {
|
|
174
|
+
const start = Math.max(0, matchIndex - contextLength);
|
|
175
|
+
const end = Math.min(text.length, matchIndex + matchLength + contextLength);
|
|
176
|
+
let context = text.substring(start, end);
|
|
177
|
+
if (start > 0) {
|
|
178
|
+
context = "..." + context;
|
|
179
|
+
}
|
|
180
|
+
if (end < text.length) {
|
|
181
|
+
context = context + "...";
|
|
182
|
+
}
|
|
183
|
+
return context;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Sort search results by relevance
|
|
187
|
+
*/
|
|
188
|
+
sortResults(results, query) {
|
|
189
|
+
const lowerQuery = query.toLowerCase();
|
|
190
|
+
return results.sort((a, b) => {
|
|
191
|
+
const aText = this.extractSearchableText(a.message)?.toLowerCase() || "";
|
|
192
|
+
const bText = this.extractSearchableText(b.message)?.toLowerCase() || "";
|
|
193
|
+
const aExactMatch = aText.includes(` ${lowerQuery} `) || aText.startsWith(lowerQuery) || aText.endsWith(lowerQuery);
|
|
194
|
+
const bExactMatch = bText.includes(` ${lowerQuery} `) || bText.startsWith(lowerQuery) || bText.endsWith(lowerQuery);
|
|
195
|
+
if (aExactMatch && !bExactMatch) return -1;
|
|
196
|
+
if (!aExactMatch && bExactMatch) return 1;
|
|
197
|
+
return b.messageIndex - a.messageIndex;
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Get all session IDs
|
|
202
|
+
*/
|
|
203
|
+
async getSessionIds() {
|
|
204
|
+
const sessionKeys = await this.database.list("session:");
|
|
205
|
+
return sessionKeys.map((key) => key.replace("session:", ""));
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Get session metadata
|
|
209
|
+
*/
|
|
210
|
+
async getSessionMetadata(sessionId) {
|
|
211
|
+
const sessionKey = `session:${sessionId}`;
|
|
212
|
+
const sessionData = await this.database.get(sessionKey);
|
|
213
|
+
if (!sessionData) {
|
|
214
|
+
throw new Error(`Session metadata not found: ${sessionId}`);
|
|
215
|
+
}
|
|
216
|
+
return sessionData;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
export {
|
|
220
|
+
SearchService
|
|
221
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
+
var types_exports = {};
|
|
16
|
+
module.exports = __toCommonJS(types_exports);
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { InternalMessage } from '../context/types.cjs';
|
|
2
|
+
import '../llm/types.cjs';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Options for searching messages
|
|
6
|
+
*/
|
|
7
|
+
interface SearchOptions {
|
|
8
|
+
/** Limit search to a specific session */
|
|
9
|
+
sessionId?: string;
|
|
10
|
+
/** Filter by message role */
|
|
11
|
+
role?: 'user' | 'assistant' | 'system' | 'tool';
|
|
12
|
+
/** Maximum number of results to return */
|
|
13
|
+
limit?: number;
|
|
14
|
+
/** Offset for pagination */
|
|
15
|
+
offset?: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Result of a message search
|
|
19
|
+
*/
|
|
20
|
+
interface SearchResult {
|
|
21
|
+
/** Session ID where the message was found */
|
|
22
|
+
sessionId: string;
|
|
23
|
+
/** The message that matched the search */
|
|
24
|
+
message: InternalMessage;
|
|
25
|
+
/** The specific text that matched the search query */
|
|
26
|
+
matchedText: string;
|
|
27
|
+
/** Context around the match for preview */
|
|
28
|
+
context: string;
|
|
29
|
+
/** Index of the message within the session */
|
|
30
|
+
messageIndex: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Result of a session search
|
|
34
|
+
*/
|
|
35
|
+
interface SessionSearchResult {
|
|
36
|
+
/** Session ID */
|
|
37
|
+
sessionId: string;
|
|
38
|
+
/** Number of messages that matched in this session */
|
|
39
|
+
matchCount: number;
|
|
40
|
+
/** Preview of the first matching message */
|
|
41
|
+
firstMatch: SearchResult;
|
|
42
|
+
/** Session metadata */
|
|
43
|
+
metadata: {
|
|
44
|
+
createdAt: number;
|
|
45
|
+
lastActivity: number;
|
|
46
|
+
messageCount: number;
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Response format for search API
|
|
51
|
+
*/
|
|
52
|
+
interface SearchResponse {
|
|
53
|
+
/** Array of search results */
|
|
54
|
+
results: SearchResult[];
|
|
55
|
+
/** Total number of results available */
|
|
56
|
+
total: number;
|
|
57
|
+
/** Whether there are more results beyond the current page */
|
|
58
|
+
hasMore: boolean;
|
|
59
|
+
/** Query that was searched */
|
|
60
|
+
query: string;
|
|
61
|
+
/** Options used for the search */
|
|
62
|
+
options: SearchOptions;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Response format for session search API
|
|
66
|
+
*/
|
|
67
|
+
interface SessionSearchResponse {
|
|
68
|
+
/** Array of session search results */
|
|
69
|
+
results: SessionSearchResult[];
|
|
70
|
+
/** Total number of sessions with matches */
|
|
71
|
+
total: number;
|
|
72
|
+
/** Whether there are more results beyond the current page */
|
|
73
|
+
hasMore: boolean;
|
|
74
|
+
/** Query that was searched */
|
|
75
|
+
query: string;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export type { SearchOptions, SearchResponse, SearchResult, SessionSearchResponse, SessionSearchResult };
|