@compresr/sdk 1.3.1 → 1.5.0
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/LICENSE +201 -0
- package/README.md +237 -173
- package/dist/cjs/agents/engine.d.ts +121 -0
- package/dist/cjs/agents/engine.d.ts.map +1 -0
- package/dist/cjs/agents/engine.js +517 -0
- package/dist/cjs/agents/engine.js.map +1 -0
- package/dist/cjs/agents/facades/anthropic.d.ts +26 -0
- package/dist/cjs/agents/facades/anthropic.d.ts.map +1 -0
- package/dist/cjs/agents/facades/anthropic.js +46 -0
- package/dist/cjs/agents/facades/anthropic.js.map +1 -0
- package/dist/cjs/agents/facades/index.d.ts +4 -0
- package/dist/cjs/agents/facades/index.d.ts.map +1 -0
- package/dist/cjs/agents/facades/index.js +10 -0
- package/dist/cjs/agents/facades/index.js.map +1 -0
- package/dist/cjs/agents/facades/native.d.ts +29 -0
- package/dist/cjs/agents/facades/native.d.ts.map +1 -0
- package/dist/cjs/agents/facades/native.js +27 -0
- package/dist/cjs/agents/facades/native.js.map +1 -0
- package/dist/cjs/agents/facades/openai.d.ts +32 -0
- package/dist/cjs/agents/facades/openai.d.ts.map +1 -0
- package/dist/cjs/agents/facades/openai.js +55 -0
- package/dist/cjs/agents/facades/openai.js.map +1 -0
- package/dist/cjs/agents/index.d.ts +23 -0
- package/dist/cjs/agents/index.d.ts.map +1 -0
- package/dist/cjs/agents/index.js +37 -0
- package/dist/cjs/agents/index.js.map +1 -0
- package/dist/cjs/agents/normalized.d.ts +59 -0
- package/dist/cjs/agents/normalized.d.ts.map +1 -0
- package/dist/cjs/agents/normalized.js +35 -0
- package/dist/cjs/agents/normalized.js.map +1 -0
- package/dist/cjs/agents/schemas/anthropic.d.ts +46 -0
- package/dist/cjs/agents/schemas/anthropic.d.ts.map +1 -0
- package/dist/cjs/agents/schemas/anthropic.js +55 -0
- package/dist/cjs/agents/schemas/anthropic.js.map +1 -0
- package/dist/cjs/agents/schemas/index.d.ts +3 -0
- package/dist/cjs/agents/schemas/index.d.ts.map +1 -0
- package/dist/cjs/agents/schemas/index.js +8 -0
- package/dist/cjs/agents/schemas/index.js.map +1 -0
- package/dist/cjs/agents/schemas/openai.d.ts +51 -0
- package/dist/cjs/agents/schemas/openai.d.ts.map +1 -0
- package/dist/cjs/agents/schemas/openai.js +60 -0
- package/dist/cjs/agents/schemas/openai.js.map +1 -0
- package/dist/cjs/agents/tools/index.d.ts +2 -0
- package/dist/cjs/agents/tools/index.d.ts.map +1 -0
- package/dist/cjs/agents/tools/index.js +7 -0
- package/dist/cjs/agents/tools/index.js.map +1 -0
- package/dist/cjs/agents/tools/web-search.d.ts +56 -0
- package/dist/cjs/agents/tools/web-search.d.ts.map +1 -0
- package/dist/cjs/agents/tools/web-search.js +128 -0
- package/dist/cjs/agents/tools/web-search.js.map +1 -0
- package/dist/cjs/clients/compression.d.ts +39 -147
- package/dist/cjs/clients/compression.d.ts.map +1 -1
- package/dist/cjs/clients/compression.js +114 -194
- package/dist/cjs/clients/compression.js.map +1 -1
- package/dist/cjs/clients/index.d.ts +1 -1
- package/dist/cjs/clients/index.d.ts.map +1 -1
- package/dist/cjs/clients/index.js.map +1 -1
- package/dist/cjs/config/constants.d.ts +3 -28
- package/dist/cjs/config/constants.d.ts.map +1 -1
- package/dist/cjs/config/constants.js +4 -43
- package/dist/cjs/config/constants.js.map +1 -1
- package/dist/cjs/config/endpoints.d.ts +3 -15
- package/dist/cjs/config/endpoints.d.ts.map +1 -1
- package/dist/cjs/config/endpoints.js +3 -20
- package/dist/cjs/config/endpoints.js.map +1 -1
- package/dist/cjs/config/index.d.ts +1 -1
- package/dist/cjs/config/index.d.ts.map +1 -1
- package/dist/cjs/config/index.js +1 -7
- package/dist/cjs/config/index.js.map +1 -1
- package/dist/cjs/errors/exceptions.d.ts.map +1 -1
- package/dist/cjs/errors/exceptions.js +0 -6
- package/dist/cjs/errors/exceptions.js.map +1 -1
- package/dist/cjs/http/client.d.ts +5 -17
- package/dist/cjs/http/client.d.ts.map +1 -1
- package/dist/cjs/http/client.js +110 -115
- package/dist/cjs/http/client.js.map +1 -1
- package/dist/cjs/index.d.ts +7 -15
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +22 -25
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/integrations/_shared/client.d.ts +13 -0
- package/dist/cjs/integrations/_shared/client.d.ts.map +1 -0
- package/dist/cjs/integrations/_shared/client.js +21 -0
- package/dist/cjs/integrations/_shared/client.js.map +1 -0
- package/dist/cjs/integrations/_shared/compress.d.ts +28 -0
- package/dist/cjs/integrations/_shared/compress.d.ts.map +1 -0
- package/dist/cjs/integrations/_shared/compress.js +38 -0
- package/dist/cjs/integrations/_shared/compress.js.map +1 -0
- package/dist/cjs/integrations/_shared/errors.d.ts +20 -0
- package/dist/cjs/integrations/_shared/errors.d.ts.map +1 -0
- package/dist/cjs/integrations/_shared/errors.js +49 -0
- package/dist/cjs/integrations/_shared/errors.js.map +1 -0
- package/dist/cjs/integrations/_shared/filters.d.ts +20 -0
- package/dist/cjs/integrations/_shared/filters.d.ts.map +1 -0
- package/dist/cjs/integrations/_shared/filters.js +33 -0
- package/dist/cjs/integrations/_shared/filters.js.map +1 -0
- package/dist/cjs/integrations/_shared/index.d.ts +7 -0
- package/dist/cjs/integrations/_shared/index.d.ts.map +1 -0
- package/dist/cjs/integrations/_shared/index.js +26 -0
- package/dist/cjs/integrations/_shared/index.js.map +1 -0
- package/dist/cjs/integrations/_shared/query.d.ts +48 -0
- package/dist/cjs/integrations/_shared/query.d.ts.map +1 -0
- package/dist/cjs/integrations/_shared/query.js +141 -0
- package/dist/cjs/integrations/_shared/query.js.map +1 -0
- package/dist/cjs/integrations/_shared/tokens.d.ts +20 -0
- package/dist/cjs/integrations/_shared/tokens.d.ts.map +1 -0
- package/dist/cjs/integrations/_shared/tokens.js +26 -0
- package/dist/cjs/integrations/_shared/tokens.js.map +1 -0
- package/dist/cjs/integrations/langchain/index.d.ts +10 -0
- package/dist/cjs/integrations/langchain/index.d.ts.map +1 -0
- package/dist/cjs/integrations/langchain/index.js +18 -0
- package/dist/cjs/integrations/langchain/index.js.map +1 -0
- package/dist/cjs/integrations/langchain/middleware.d.ts +94 -0
- package/dist/cjs/integrations/langchain/middleware.d.ts.map +1 -0
- package/dist/cjs/integrations/langchain/middleware.js +273 -0
- package/dist/cjs/integrations/langchain/middleware.js.map +1 -0
- package/dist/cjs/integrations/langchain/retriever.d.ts +54 -0
- package/dist/cjs/integrations/langchain/retriever.d.ts.map +1 -0
- package/dist/cjs/integrations/langchain/retriever.js +118 -0
- package/dist/cjs/integrations/langchain/retriever.js.map +1 -0
- package/dist/cjs/integrations/langchain/wrappers.d.ts +39 -0
- package/dist/cjs/integrations/langchain/wrappers.d.ts.map +1 -0
- package/dist/cjs/integrations/langchain/wrappers.js +88 -0
- package/dist/cjs/integrations/langchain/wrappers.js.map +1 -0
- package/dist/cjs/integrations/langgraph/checkpoint.d.ts +49 -0
- package/dist/cjs/integrations/langgraph/checkpoint.d.ts.map +1 -0
- package/dist/cjs/integrations/langgraph/checkpoint.js +79 -0
- package/dist/cjs/integrations/langgraph/checkpoint.js.map +1 -0
- package/dist/cjs/integrations/langgraph/handoff.d.ts +44 -0
- package/dist/cjs/integrations/langgraph/handoff.d.ts.map +1 -0
- package/dist/cjs/integrations/langgraph/handoff.js +86 -0
- package/dist/cjs/integrations/langgraph/handoff.js.map +1 -0
- package/dist/cjs/integrations/langgraph/index.d.ts +18 -0
- package/dist/cjs/integrations/langgraph/index.d.ts.map +1 -0
- package/dist/cjs/integrations/langgraph/index.js +28 -0
- package/dist/cjs/integrations/langgraph/index.js.map +1 -0
- package/dist/cjs/integrations/langgraph/nodes.d.ts +34 -0
- package/dist/cjs/integrations/langgraph/nodes.d.ts.map +1 -0
- package/dist/cjs/integrations/langgraph/nodes.js +54 -0
- package/dist/cjs/integrations/langgraph/nodes.js.map +1 -0
- package/dist/cjs/integrations/langgraph/store.d.ts +76 -0
- package/dist/cjs/integrations/langgraph/store.d.ts.map +1 -0
- package/dist/cjs/integrations/langgraph/store.js +121 -0
- package/dist/cjs/integrations/langgraph/store.js.map +1 -0
- package/dist/cjs/integrations/llamaindex/index.d.ts +10 -0
- package/dist/cjs/integrations/llamaindex/index.d.ts.map +1 -0
- package/dist/cjs/integrations/llamaindex/index.js +15 -0
- package/dist/cjs/integrations/llamaindex/index.js.map +1 -0
- package/dist/cjs/integrations/llamaindex/memory.d.ts +74 -0
- package/dist/cjs/integrations/llamaindex/memory.d.ts.map +1 -0
- package/dist/cjs/integrations/llamaindex/memory.js +95 -0
- package/dist/cjs/integrations/llamaindex/memory.js.map +1 -0
- package/dist/cjs/integrations/llamaindex/postprocessor.d.ts +66 -0
- package/dist/cjs/integrations/llamaindex/postprocessor.d.ts.map +1 -0
- package/dist/cjs/integrations/llamaindex/postprocessor.js +172 -0
- package/dist/cjs/integrations/llamaindex/postprocessor.js.map +1 -0
- package/dist/cjs/integrations/llamaindex/wrappers.d.ts +38 -0
- package/dist/cjs/integrations/llamaindex/wrappers.d.ts.map +1 -0
- package/dist/cjs/integrations/llamaindex/wrappers.js +46 -0
- package/dist/cjs/integrations/llamaindex/wrappers.js.map +1 -0
- package/dist/cjs/logger.d.ts +18 -0
- package/dist/cjs/logger.d.ts.map +1 -0
- package/dist/cjs/logger.js +41 -0
- package/dist/cjs/logger.js.map +1 -0
- package/dist/cjs/schemas/compression.d.ts +33 -103
- package/dist/cjs/schemas/compression.d.ts.map +1 -1
- package/dist/cjs/schemas/compression.js +6 -59
- package/dist/cjs/schemas/compression.js.map +1 -1
- package/dist/cjs/schemas/index.d.ts +1 -4
- package/dist/cjs/schemas/index.d.ts.map +1 -1
- package/dist/cjs/schemas/index.js +1 -8
- package/dist/cjs/schemas/index.js.map +1 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/agents/engine.d.ts +121 -0
- package/dist/esm/agents/engine.d.ts.map +1 -0
- package/dist/esm/agents/engine.js +478 -0
- package/dist/esm/agents/engine.js.map +1 -0
- package/dist/esm/agents/facades/anthropic.d.ts +26 -0
- package/dist/esm/agents/facades/anthropic.d.ts.map +1 -0
- package/dist/esm/agents/facades/anthropic.js +43 -0
- package/dist/esm/agents/facades/anthropic.js.map +1 -0
- package/dist/esm/agents/facades/index.d.ts +4 -0
- package/dist/esm/agents/facades/index.d.ts.map +1 -0
- package/dist/esm/agents/facades/index.js +4 -0
- package/dist/esm/agents/facades/index.js.map +1 -0
- package/dist/esm/agents/facades/native.d.ts +29 -0
- package/dist/esm/agents/facades/native.d.ts.map +1 -0
- package/dist/esm/agents/facades/native.js +24 -0
- package/dist/esm/agents/facades/native.js.map +1 -0
- package/dist/esm/agents/facades/openai.d.ts +32 -0
- package/dist/esm/agents/facades/openai.d.ts.map +1 -0
- package/dist/esm/agents/facades/openai.js +52 -0
- package/dist/esm/agents/facades/openai.js.map +1 -0
- package/dist/esm/agents/index.d.ts +23 -0
- package/dist/esm/agents/index.d.ts.map +1 -0
- package/dist/esm/agents/index.js +23 -0
- package/dist/esm/agents/index.js.map +1 -0
- package/dist/esm/agents/normalized.d.ts +59 -0
- package/dist/esm/agents/normalized.d.ts.map +1 -0
- package/dist/esm/agents/normalized.js +31 -0
- package/dist/esm/agents/normalized.js.map +1 -0
- package/dist/esm/agents/schemas/anthropic.d.ts +46 -0
- package/dist/esm/agents/schemas/anthropic.d.ts.map +1 -0
- package/dist/esm/agents/schemas/anthropic.js +52 -0
- package/dist/esm/agents/schemas/anthropic.js.map +1 -0
- package/dist/esm/agents/schemas/index.d.ts +3 -0
- package/dist/esm/agents/schemas/index.d.ts.map +1 -0
- package/dist/esm/agents/schemas/index.js +3 -0
- package/dist/esm/agents/schemas/index.js.map +1 -0
- package/dist/esm/agents/schemas/openai.d.ts +51 -0
- package/dist/esm/agents/schemas/openai.d.ts.map +1 -0
- package/dist/esm/agents/schemas/openai.js +57 -0
- package/dist/esm/agents/schemas/openai.js.map +1 -0
- package/dist/esm/agents/tools/index.d.ts +2 -0
- package/dist/esm/agents/tools/index.d.ts.map +1 -0
- package/dist/esm/agents/tools/index.js +2 -0
- package/dist/esm/agents/tools/index.js.map +1 -0
- package/dist/esm/agents/tools/web-search.d.ts +56 -0
- package/dist/esm/agents/tools/web-search.d.ts.map +1 -0
- package/dist/esm/agents/tools/web-search.js +91 -0
- package/dist/esm/agents/tools/web-search.js.map +1 -0
- package/dist/esm/clients/compression.d.ts +39 -147
- package/dist/esm/clients/compression.d.ts.map +1 -1
- package/dist/esm/clients/compression.js +117 -197
- package/dist/esm/clients/compression.js.map +1 -1
- package/dist/esm/clients/index.d.ts +1 -1
- package/dist/esm/clients/index.d.ts.map +1 -1
- package/dist/esm/clients/index.js.map +1 -1
- package/dist/esm/config/constants.d.ts +3 -28
- package/dist/esm/config/constants.d.ts.map +1 -1
- package/dist/esm/config/constants.js +3 -42
- package/dist/esm/config/constants.js.map +1 -1
- package/dist/esm/config/endpoints.d.ts +3 -15
- package/dist/esm/config/endpoints.d.ts.map +1 -1
- package/dist/esm/config/endpoints.js +3 -20
- package/dist/esm/config/endpoints.js.map +1 -1
- package/dist/esm/config/index.d.ts +1 -1
- package/dist/esm/config/index.d.ts.map +1 -1
- package/dist/esm/config/index.js +1 -1
- package/dist/esm/config/index.js.map +1 -1
- package/dist/esm/errors/exceptions.d.ts.map +1 -1
- package/dist/esm/errors/exceptions.js +0 -6
- package/dist/esm/errors/exceptions.js.map +1 -1
- package/dist/esm/http/client.d.ts +5 -17
- package/dist/esm/http/client.d.ts.map +1 -1
- package/dist/esm/http/client.js +110 -115
- package/dist/esm/http/client.js.map +1 -1
- package/dist/esm/index.d.ts +7 -15
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +7 -13
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/integrations/_shared/client.d.ts +13 -0
- package/dist/esm/integrations/_shared/client.d.ts.map +1 -0
- package/dist/esm/integrations/_shared/client.js +17 -0
- package/dist/esm/integrations/_shared/client.js.map +1 -0
- package/dist/esm/integrations/_shared/compress.d.ts +28 -0
- package/dist/esm/integrations/_shared/compress.d.ts.map +1 -0
- package/dist/esm/integrations/_shared/compress.js +35 -0
- package/dist/esm/integrations/_shared/compress.js.map +1 -0
- package/dist/esm/integrations/_shared/errors.d.ts +20 -0
- package/dist/esm/integrations/_shared/errors.d.ts.map +1 -0
- package/dist/esm/integrations/_shared/errors.js +44 -0
- package/dist/esm/integrations/_shared/errors.js.map +1 -0
- package/dist/esm/integrations/_shared/filters.d.ts +20 -0
- package/dist/esm/integrations/_shared/filters.d.ts.map +1 -0
- package/dist/esm/integrations/_shared/filters.js +30 -0
- package/dist/esm/integrations/_shared/filters.js.map +1 -0
- package/dist/esm/integrations/_shared/index.d.ts +7 -0
- package/dist/esm/integrations/_shared/index.d.ts.map +1 -0
- package/dist/esm/integrations/_shared/index.js +7 -0
- package/dist/esm/integrations/_shared/index.js.map +1 -0
- package/dist/esm/integrations/_shared/query.d.ts +48 -0
- package/dist/esm/integrations/_shared/query.d.ts.map +1 -0
- package/dist/esm/integrations/_shared/query.js +135 -0
- package/dist/esm/integrations/_shared/query.js.map +1 -0
- package/dist/esm/integrations/_shared/tokens.d.ts +20 -0
- package/dist/esm/integrations/_shared/tokens.d.ts.map +1 -0
- package/dist/esm/integrations/_shared/tokens.js +23 -0
- package/dist/esm/integrations/_shared/tokens.js.map +1 -0
- package/dist/esm/integrations/langchain/index.d.ts +10 -0
- package/dist/esm/integrations/langchain/index.d.ts.map +1 -0
- package/dist/esm/integrations/langchain/index.js +9 -0
- package/dist/esm/integrations/langchain/index.js.map +1 -0
- package/dist/esm/integrations/langchain/middleware.d.ts +94 -0
- package/dist/esm/integrations/langchain/middleware.d.ts.map +1 -0
- package/dist/esm/integrations/langchain/middleware.js +268 -0
- package/dist/esm/integrations/langchain/middleware.js.map +1 -0
- package/dist/esm/integrations/langchain/retriever.d.ts +54 -0
- package/dist/esm/integrations/langchain/retriever.d.ts.map +1 -0
- package/dist/esm/integrations/langchain/retriever.js +114 -0
- package/dist/esm/integrations/langchain/retriever.js.map +1 -0
- package/dist/esm/integrations/langchain/wrappers.d.ts +39 -0
- package/dist/esm/integrations/langchain/wrappers.d.ts.map +1 -0
- package/dist/esm/integrations/langchain/wrappers.js +84 -0
- package/dist/esm/integrations/langchain/wrappers.js.map +1 -0
- package/dist/esm/integrations/langgraph/checkpoint.d.ts +49 -0
- package/dist/esm/integrations/langgraph/checkpoint.d.ts.map +1 -0
- package/dist/esm/integrations/langgraph/checkpoint.js +75 -0
- package/dist/esm/integrations/langgraph/checkpoint.js.map +1 -0
- package/dist/esm/integrations/langgraph/handoff.d.ts +44 -0
- package/dist/esm/integrations/langgraph/handoff.d.ts.map +1 -0
- package/dist/esm/integrations/langgraph/handoff.js +83 -0
- package/dist/esm/integrations/langgraph/handoff.js.map +1 -0
- package/dist/esm/integrations/langgraph/index.d.ts +18 -0
- package/dist/esm/integrations/langgraph/index.d.ts.map +1 -0
- package/dist/esm/integrations/langgraph/index.js +17 -0
- package/dist/esm/integrations/langgraph/index.js.map +1 -0
- package/dist/esm/integrations/langgraph/nodes.d.ts +34 -0
- package/dist/esm/integrations/langgraph/nodes.d.ts.map +1 -0
- package/dist/esm/integrations/langgraph/nodes.js +51 -0
- package/dist/esm/integrations/langgraph/nodes.js.map +1 -0
- package/dist/esm/integrations/langgraph/store.d.ts +76 -0
- package/dist/esm/integrations/langgraph/store.d.ts.map +1 -0
- package/dist/esm/integrations/langgraph/store.js +117 -0
- package/dist/esm/integrations/langgraph/store.js.map +1 -0
- package/dist/esm/integrations/llamaindex/index.d.ts +10 -0
- package/dist/esm/integrations/llamaindex/index.d.ts.map +1 -0
- package/dist/esm/integrations/llamaindex/index.js +9 -0
- package/dist/esm/integrations/llamaindex/index.js.map +1 -0
- package/dist/esm/integrations/llamaindex/memory.d.ts +74 -0
- package/dist/esm/integrations/llamaindex/memory.d.ts.map +1 -0
- package/dist/esm/integrations/llamaindex/memory.js +91 -0
- package/dist/esm/integrations/llamaindex/memory.js.map +1 -0
- package/dist/esm/integrations/llamaindex/postprocessor.d.ts +66 -0
- package/dist/esm/integrations/llamaindex/postprocessor.d.ts.map +1 -0
- package/dist/esm/integrations/llamaindex/postprocessor.js +168 -0
- package/dist/esm/integrations/llamaindex/postprocessor.js.map +1 -0
- package/dist/esm/integrations/llamaindex/wrappers.d.ts +38 -0
- package/dist/esm/integrations/llamaindex/wrappers.d.ts.map +1 -0
- package/dist/esm/integrations/llamaindex/wrappers.js +43 -0
- package/dist/esm/integrations/llamaindex/wrappers.js.map +1 -0
- package/dist/esm/logger.d.ts +18 -0
- package/dist/esm/logger.d.ts.map +1 -0
- package/dist/esm/logger.js +37 -0
- package/dist/esm/logger.js.map +1 -0
- package/dist/esm/schemas/compression.d.ts +33 -103
- package/dist/esm/schemas/compression.d.ts.map +1 -1
- package/dist/esm/schemas/compression.js +5 -58
- package/dist/esm/schemas/compression.js.map +1 -1
- package/dist/esm/schemas/index.d.ts +1 -4
- package/dist/esm/schemas/index.d.ts.map +1 -1
- package/dist/esm/schemas/index.js +1 -6
- package/dist/esm/schemas/index.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/package.json +91 -6
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Schema exports
|
|
3
|
-
*/
|
|
4
1
|
export { BaseResponseSchema, StreamChunkSchema, HealthResponseSchema, type BaseResponse, type StreamChunk, type HealthResponse, } from './common.js';
|
|
5
|
-
export { CompressRequestSchema,
|
|
2
|
+
export { CompressRequestSchema, CompressBatchInputSchema, CompressBatchRequestSchema, CompressResultSchema, CompressBatchItemResultSchema, CompressBatchResultSchema, CompressResponseSchema, CompressBatchResponseSchema, type CompressRequest, type CompressBatchInput, type CompressBatchRequest, type CompressResult, type CompressBatchItemResult, type CompressBatchResult, type CompressResponse, type CompressBatchResponse, } from './compression.js';
|
|
6
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/schemas/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,cAAc,GACpB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,0BAA0B,EAC1B,oBAAoB,EACpB,6BAA6B,EAC7B,yBAAyB,EACzB,sBAAsB,EACtB,2BAA2B,EAC3B,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,GAC3B,MAAM,kBAAkB,CAAC"}
|
|
@@ -1,19 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Schema exports
|
|
4
|
-
*/
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.CompressBatchResponseSchema = exports.CompressResponseSchema = exports.CompressBatchResultSchema = exports.CompressBatchItemResultSchema = exports.CompressResultSchema = exports.CompressBatchRequestSchema = exports.CompressBatchInputSchema = exports.
|
|
7
|
-
// Common
|
|
3
|
+
exports.CompressBatchResponseSchema = exports.CompressResponseSchema = exports.CompressBatchResultSchema = exports.CompressBatchItemResultSchema = exports.CompressResultSchema = exports.CompressBatchRequestSchema = exports.CompressBatchInputSchema = exports.CompressRequestSchema = exports.HealthResponseSchema = exports.StreamChunkSchema = exports.BaseResponseSchema = void 0;
|
|
8
4
|
var common_js_1 = require("./common.js");
|
|
9
5
|
Object.defineProperty(exports, "BaseResponseSchema", { enumerable: true, get: function () { return common_js_1.BaseResponseSchema; } });
|
|
10
6
|
Object.defineProperty(exports, "StreamChunkSchema", { enumerable: true, get: function () { return common_js_1.StreamChunkSchema; } });
|
|
11
7
|
Object.defineProperty(exports, "HealthResponseSchema", { enumerable: true, get: function () { return common_js_1.HealthResponseSchema; } });
|
|
12
|
-
// Compression
|
|
13
8
|
var compression_js_1 = require("./compression.js");
|
|
14
9
|
Object.defineProperty(exports, "CompressRequestSchema", { enumerable: true, get: function () { return compression_js_1.CompressRequestSchema; } });
|
|
15
|
-
Object.defineProperty(exports, "AgnosticBatchInputSchema", { enumerable: true, get: function () { return compression_js_1.AgnosticBatchInputSchema; } });
|
|
16
|
-
Object.defineProperty(exports, "AgnosticBatchRequestSchema", { enumerable: true, get: function () { return compression_js_1.AgnosticBatchRequestSchema; } });
|
|
17
10
|
Object.defineProperty(exports, "CompressBatchInputSchema", { enumerable: true, get: function () { return compression_js_1.CompressBatchInputSchema; } });
|
|
18
11
|
Object.defineProperty(exports, "CompressBatchRequestSchema", { enumerable: true, get: function () { return compression_js_1.CompressBatchRequestSchema; } });
|
|
19
12
|
Object.defineProperty(exports, "CompressResultSchema", { enumerable: true, get: function () { return compression_js_1.CompressResultSchema; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/schemas/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/schemas/index.ts"],"names":[],"mappings":";;;AAAA,yCAOqB;AANnB,+GAAA,kBAAkB,OAAA;AAClB,8GAAA,iBAAiB,OAAA;AACjB,iHAAA,oBAAoB,OAAA;AAMtB,mDAiB0B;AAhBxB,uHAAA,qBAAqB,OAAA;AACrB,0HAAA,wBAAwB,OAAA;AACxB,4HAAA,0BAA0B,OAAA;AAC1B,sHAAA,oBAAoB,OAAA;AACpB,+HAAA,6BAA6B,OAAA;AAC7B,2HAAA,yBAAyB,OAAA;AACzB,wHAAA,sBAAsB,OAAA;AACtB,6HAAA,2BAA2B,OAAA"}
|
package/dist/cjs/version.d.ts
CHANGED
package/dist/cjs/version.js
CHANGED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider-agnostic agent engine — TypeScript port of Wave 2A.
|
|
3
|
+
*
|
|
4
|
+
* ``CompresrEngine`` wraps LangChain.js's ``initChatModel`` + ``createAgent``
|
|
5
|
+
* with Compresr's ``compresrToolMiddleware`` and normalizes the final
|
|
6
|
+
* ``AIMessage`` into a provider-shape-free :class:`NormalizedResult` that
|
|
7
|
+
* facades will remap back into provider-native shapes.
|
|
8
|
+
*
|
|
9
|
+
* Mirrors Python ``compresr/agents/engine.py``.
|
|
10
|
+
*/
|
|
11
|
+
import type { CompressionClient } from '../clients/compression.js';
|
|
12
|
+
import { type ErrorPolicy } from '../integrations/_shared/index.js';
|
|
13
|
+
import { type NormalizedResult } from './normalized.js';
|
|
14
|
+
/**
|
|
15
|
+
* Immutable bundle of compression knobs forwarded to the tool middleware.
|
|
16
|
+
*
|
|
17
|
+
* Mirrors Python ``compresr.integrations._shared.CompressionPolicy``.
|
|
18
|
+
*/
|
|
19
|
+
export interface CompressionPolicyOptions {
|
|
20
|
+
targetCompressionRatio?: number;
|
|
21
|
+
compressionModelName?: string;
|
|
22
|
+
coarse?: boolean;
|
|
23
|
+
minTokens?: number;
|
|
24
|
+
onError?: ErrorPolicy;
|
|
25
|
+
allowTools?: Iterable<string>;
|
|
26
|
+
ignoreTools?: Iterable<string>;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Parse an LLM spec into ``{ provider, modelName }``.
|
|
30
|
+
*
|
|
31
|
+
* Accepted forms:
|
|
32
|
+
* - Bare provider: ``"anthropic"`` -> ``{ provider, modelName: undefined }``.
|
|
33
|
+
* The model must then be supplied at the call site.
|
|
34
|
+
* - LangChain-style colon: ``"anthropic:claude-opus-4-8"``.
|
|
35
|
+
* - Vercel-style slash: ``"anthropic/claude-opus-4-8"`` — normalized to the
|
|
36
|
+
* colon form to match LangChain.js's ``initChatModel`` convention.
|
|
37
|
+
*/
|
|
38
|
+
export declare function parseLlmSpec(llm: string): {
|
|
39
|
+
provider: string;
|
|
40
|
+
modelName: string | undefined;
|
|
41
|
+
};
|
|
42
|
+
export interface CompresrEngineOptions {
|
|
43
|
+
compresrClient: CompressionClient;
|
|
44
|
+
llm: string;
|
|
45
|
+
llmApiKey?: string;
|
|
46
|
+
policy?: CompressionPolicyOptions;
|
|
47
|
+
}
|
|
48
|
+
export interface RunOptions {
|
|
49
|
+
messages: ReadonlyArray<unknown>;
|
|
50
|
+
tools?: ReadonlyArray<unknown>;
|
|
51
|
+
system?: string;
|
|
52
|
+
maxTokens?: number;
|
|
53
|
+
config?: Record<string, unknown>;
|
|
54
|
+
/**
|
|
55
|
+
* Per-call model name. If omitted, falls back to the engine's default
|
|
56
|
+
* (the model encoded in ``llm: 'provider:model'`` at construction).
|
|
57
|
+
* When neither is provided, ``run`` throws ``CompresrError("missing_model")``.
|
|
58
|
+
*/
|
|
59
|
+
model?: string;
|
|
60
|
+
temperature?: number;
|
|
61
|
+
topP?: number;
|
|
62
|
+
topK?: number;
|
|
63
|
+
/** Gemini-native alias of ``maxTokens``. The engine aliases when needed. */
|
|
64
|
+
maxOutputTokens?: number;
|
|
65
|
+
stop?: string[];
|
|
66
|
+
stopSequences?: string[];
|
|
67
|
+
presencePenalty?: number;
|
|
68
|
+
frequencyPenalty?: number;
|
|
69
|
+
seed?: number;
|
|
70
|
+
logprobs?: boolean;
|
|
71
|
+
topLogprobs?: number;
|
|
72
|
+
}
|
|
73
|
+
interface LangChainBindings {
|
|
74
|
+
initChatModel: (modelStr: string, kwargs?: Record<string, unknown>) => unknown;
|
|
75
|
+
createAgent: (params: Record<string, unknown>) => unknown;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Test seam — lets vitest stub LangChain without monkey-patching
|
|
79
|
+
* ``node_modules``.
|
|
80
|
+
*
|
|
81
|
+
* @internal — not a stable public API; reserved for SDK tests only.
|
|
82
|
+
*/
|
|
83
|
+
export declare function _setLangChainBindings(b: LangChainBindings | undefined): void;
|
|
84
|
+
export declare class CompresrEngine {
|
|
85
|
+
readonly provider: string;
|
|
86
|
+
/**
|
|
87
|
+
* Default model bound to the engine, parsed from the constructor's ``llm``
|
|
88
|
+
* spec. ``undefined`` when the spec is a bare provider — in that case the
|
|
89
|
+
* model must be supplied per-call on :meth:`run`.
|
|
90
|
+
*/
|
|
91
|
+
readonly defaultModelName: string | undefined;
|
|
92
|
+
private readonly compresrClient;
|
|
93
|
+
private readonly llmApiKey?;
|
|
94
|
+
private readonly policy;
|
|
95
|
+
private readonly chatModels;
|
|
96
|
+
constructor(options: CompresrEngineOptions);
|
|
97
|
+
/**
|
|
98
|
+
* Back-compat alias for ``defaultModelName`` — returns the constructor
|
|
99
|
+
* default and may be ``undefined`` when the engine was built with a bare
|
|
100
|
+
* provider ``llm`` spec.
|
|
101
|
+
*/
|
|
102
|
+
get modelName(): string | undefined;
|
|
103
|
+
private getChatModel;
|
|
104
|
+
private buildMiddleware;
|
|
105
|
+
private buildAgent;
|
|
106
|
+
/**
|
|
107
|
+
* Pull every option whose key lives in :data:`LLM_BIND_OPTIONS` and return a
|
|
108
|
+
* fresh object — the caller passes it to ``chat.bind(...)``. Non-LLM keys
|
|
109
|
+
* are silently ignored, which keeps the public ``RunOptions`` interface
|
|
110
|
+
* forgiving when callers mix in custom config.
|
|
111
|
+
*
|
|
112
|
+
* Gemini quirk: LangChain.js's ``ChatGoogleGenerativeAI`` uses
|
|
113
|
+
* ``maxOutputTokens`` instead of ``maxTokens``. We alias when the caller
|
|
114
|
+
* provided ``maxTokens`` without an explicit ``maxOutputTokens``.
|
|
115
|
+
*/
|
|
116
|
+
private extractBindOptions;
|
|
117
|
+
run(options: RunOptions): Promise<NormalizedResult>;
|
|
118
|
+
private normalize;
|
|
119
|
+
}
|
|
120
|
+
export {};
|
|
121
|
+
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/agents/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,478 @@
|
|
|
1
|
+
import { CompresrError } from '../errors/index.js';
|
|
2
|
+
import { getLogger } from '../logger.js';
|
|
3
|
+
import { DEFAULT_MIN_TOKENS, DEFAULT_MODEL, DEFAULT_POLICY, DEFAULT_RATIO, } from '../integrations/_shared/index.js';
|
|
4
|
+
import { defaultCompresrStats, } from './normalized.js';
|
|
5
|
+
const KNOWN_PROVIDERS = new Set(['anthropic', 'openai', 'google_genai']);
|
|
6
|
+
/**
|
|
7
|
+
* Options that propagate to the underlying chat model via ``.bind(...)`` per call.
|
|
8
|
+
*
|
|
9
|
+
* Covers Anthropic / OpenAI / Gemini. LangChain.js normalizes most of these
|
|
10
|
+
* across providers; unsupported keys are silently ignored upstream. Binding is
|
|
11
|
+
* applied to a fresh wrapper per call so the cached chat model is never
|
|
12
|
+
* polluted across requests.
|
|
13
|
+
*/
|
|
14
|
+
const LLM_BIND_OPTIONS = new Set([
|
|
15
|
+
'temperature',
|
|
16
|
+
'topP',
|
|
17
|
+
'topK',
|
|
18
|
+
'maxTokens',
|
|
19
|
+
'maxOutputTokens',
|
|
20
|
+
'stop',
|
|
21
|
+
'stopSequences',
|
|
22
|
+
'presencePenalty',
|
|
23
|
+
'frequencyPenalty',
|
|
24
|
+
'seed',
|
|
25
|
+
'logprobs',
|
|
26
|
+
'topLogprobs',
|
|
27
|
+
]);
|
|
28
|
+
function resolvePolicy(input) {
|
|
29
|
+
const base = input ?? {};
|
|
30
|
+
const policy = {
|
|
31
|
+
targetCompressionRatio: base.targetCompressionRatio ?? DEFAULT_RATIO,
|
|
32
|
+
compressionModelName: base.compressionModelName ?? DEFAULT_MODEL,
|
|
33
|
+
minTokens: base.minTokens ?? DEFAULT_MIN_TOKENS,
|
|
34
|
+
onError: base.onError ?? DEFAULT_POLICY,
|
|
35
|
+
...(base.coarse !== undefined ? { coarse: base.coarse } : {}),
|
|
36
|
+
...(base.allowTools !== undefined
|
|
37
|
+
? { allowTools: [...base.allowTools] }
|
|
38
|
+
: {}),
|
|
39
|
+
...(base.ignoreTools !== undefined
|
|
40
|
+
? { ignoreTools: [...base.ignoreTools] }
|
|
41
|
+
: {}),
|
|
42
|
+
};
|
|
43
|
+
return policy;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Parse an LLM spec into ``{ provider, modelName }``.
|
|
47
|
+
*
|
|
48
|
+
* Accepted forms:
|
|
49
|
+
* - Bare provider: ``"anthropic"`` -> ``{ provider, modelName: undefined }``.
|
|
50
|
+
* The model must then be supplied at the call site.
|
|
51
|
+
* - LangChain-style colon: ``"anthropic:claude-opus-4-8"``.
|
|
52
|
+
* - Vercel-style slash: ``"anthropic/claude-opus-4-8"`` — normalized to the
|
|
53
|
+
* colon form to match LangChain.js's ``initChatModel`` convention.
|
|
54
|
+
*/
|
|
55
|
+
export function parseLlmSpec(llm) {
|
|
56
|
+
// Accept Vercel-style "anthropic/claude-..." by normalizing the first
|
|
57
|
+
// separator to a colon.
|
|
58
|
+
const normalized = llm.includes(':')
|
|
59
|
+
? llm
|
|
60
|
+
: llm.includes('/')
|
|
61
|
+
? llm.replace('/', ':')
|
|
62
|
+
: llm;
|
|
63
|
+
if (!normalized.includes(':')) {
|
|
64
|
+
// Bare provider — model deferred to the call site.
|
|
65
|
+
const provider = normalized.trim();
|
|
66
|
+
if (!provider) {
|
|
67
|
+
throw new CompresrError("llm must be a provider (e.g. 'anthropic') or 'provider:model' " +
|
|
68
|
+
"(e.g. 'anthropic:claude-opus-4-8')", 'invalid_llm_spec');
|
|
69
|
+
}
|
|
70
|
+
return { provider, modelName: undefined };
|
|
71
|
+
}
|
|
72
|
+
const idx = normalized.indexOf(':');
|
|
73
|
+
const provider = normalized.slice(0, idx).trim();
|
|
74
|
+
const modelName = normalized.slice(idx + 1).trim();
|
|
75
|
+
if (!provider || !modelName) {
|
|
76
|
+
throw new CompresrError("llm must be 'provider:model' (e.g. 'anthropic:claude-opus-4-8')", 'invalid_llm_spec');
|
|
77
|
+
}
|
|
78
|
+
return { provider, modelName };
|
|
79
|
+
}
|
|
80
|
+
let cachedLc;
|
|
81
|
+
async function importLangChain() {
|
|
82
|
+
if (cachedLc)
|
|
83
|
+
return cachedLc;
|
|
84
|
+
let mod;
|
|
85
|
+
try {
|
|
86
|
+
mod = (await import('langchain'));
|
|
87
|
+
}
|
|
88
|
+
catch (exc) {
|
|
89
|
+
throw new CompresrError('CompresrEngine requires langchain>=1.0. Install with: ' +
|
|
90
|
+
'npm install langchain @langchain/core', 'missing_peer_dependency');
|
|
91
|
+
}
|
|
92
|
+
const initChatModel = mod.initChatModel;
|
|
93
|
+
const createAgent = mod.createAgent;
|
|
94
|
+
if (typeof initChatModel !== 'function' || typeof createAgent !== 'function') {
|
|
95
|
+
throw new CompresrError('langchain package is missing initChatModel / createAgent — ' +
|
|
96
|
+
'upgrade to langchain>=1.0.', 'missing_peer_dependency');
|
|
97
|
+
}
|
|
98
|
+
cachedLc = { initChatModel, createAgent };
|
|
99
|
+
return cachedLc;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Test seam — lets vitest stub LangChain without monkey-patching
|
|
103
|
+
* ``node_modules``.
|
|
104
|
+
*
|
|
105
|
+
* @internal — not a stable public API; reserved for SDK tests only.
|
|
106
|
+
*/
|
|
107
|
+
export function _setLangChainBindings(b) {
|
|
108
|
+
cachedLc = b;
|
|
109
|
+
}
|
|
110
|
+
// ---------------------------------------------------------------------------
|
|
111
|
+
// Normalization helpers
|
|
112
|
+
// ---------------------------------------------------------------------------
|
|
113
|
+
function contentText(msg) {
|
|
114
|
+
const content = msg?.content;
|
|
115
|
+
if (typeof content === 'string')
|
|
116
|
+
return content;
|
|
117
|
+
if (Array.isArray(content)) {
|
|
118
|
+
const parts = [];
|
|
119
|
+
for (const block of content) {
|
|
120
|
+
if (block && typeof block === 'object') {
|
|
121
|
+
const b = block;
|
|
122
|
+
if (b.type === 'text' && typeof b.text === 'string') {
|
|
123
|
+
parts.push(b.text);
|
|
124
|
+
}
|
|
125
|
+
else if (typeof b.text === 'string') {
|
|
126
|
+
parts.push(b.text);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
else if (typeof block === 'string') {
|
|
130
|
+
parts.push(block);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return parts.join('');
|
|
134
|
+
}
|
|
135
|
+
return '';
|
|
136
|
+
}
|
|
137
|
+
function normalizeContentBlocks(msg) {
|
|
138
|
+
const m = msg;
|
|
139
|
+
if (Array.isArray(m?.content_blocks) && m.content_blocks.length > 0) {
|
|
140
|
+
return [...m.content_blocks];
|
|
141
|
+
}
|
|
142
|
+
if (Array.isArray(m?.content)) {
|
|
143
|
+
return [...m.content];
|
|
144
|
+
}
|
|
145
|
+
return [];
|
|
146
|
+
}
|
|
147
|
+
function normalizeToolUses(msg) {
|
|
148
|
+
const tcs = msg?.tool_calls;
|
|
149
|
+
if (!Array.isArray(tcs))
|
|
150
|
+
return [];
|
|
151
|
+
const out = [];
|
|
152
|
+
for (const raw of tcs) {
|
|
153
|
+
if (!raw || typeof raw !== 'object')
|
|
154
|
+
continue;
|
|
155
|
+
const tc = raw;
|
|
156
|
+
out.push({
|
|
157
|
+
...(tc.id !== undefined ? { id: tc.id } : {}),
|
|
158
|
+
...(tc.name !== undefined ? { name: tc.name } : {}),
|
|
159
|
+
...(tc.args !== undefined ? { input: tc.args } : {}),
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
return out;
|
|
163
|
+
}
|
|
164
|
+
function extractCitations(msg) {
|
|
165
|
+
const out = [];
|
|
166
|
+
const blocks = normalizeContentBlocks(msg);
|
|
167
|
+
for (const block of blocks) {
|
|
168
|
+
if (!block || typeof block !== 'object')
|
|
169
|
+
continue;
|
|
170
|
+
const b = block;
|
|
171
|
+
// Anthropic-style citations on text blocks
|
|
172
|
+
for (const cit of b.citations ?? []) {
|
|
173
|
+
if (!cit || typeof cit !== 'object')
|
|
174
|
+
continue;
|
|
175
|
+
const c = cit;
|
|
176
|
+
if (c.type === undefined || c.type === 'web_search_result_location') {
|
|
177
|
+
if (!c.url)
|
|
178
|
+
continue;
|
|
179
|
+
out.push({
|
|
180
|
+
url: c.url,
|
|
181
|
+
...(c.title !== undefined ? { title: c.title } : {}),
|
|
182
|
+
...(c.cited_text !== undefined ? { citedText: c.cited_text } : {}),
|
|
183
|
+
providerMetadata: { ...c },
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
// OpenAI Responses: annotations with type="url_citation"
|
|
188
|
+
for (const ann of b.annotations ?? []) {
|
|
189
|
+
if (!ann || typeof ann !== 'object')
|
|
190
|
+
continue;
|
|
191
|
+
const a = ann;
|
|
192
|
+
if (a.type === 'url_citation') {
|
|
193
|
+
if (!a.url)
|
|
194
|
+
continue;
|
|
195
|
+
out.push({
|
|
196
|
+
url: a.url,
|
|
197
|
+
...(a.title !== undefined ? { title: a.title } : {}),
|
|
198
|
+
...(a.text !== undefined
|
|
199
|
+
? { citedText: a.text }
|
|
200
|
+
: a.cited_text !== undefined
|
|
201
|
+
? { citedText: a.cited_text }
|
|
202
|
+
: {}),
|
|
203
|
+
providerMetadata: { ...a },
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
// Gemini grounding metadata
|
|
209
|
+
const responseMetadata = msg?.response_metadata ?? {};
|
|
210
|
+
const grounding = responseMetadata['grounding_metadata'] ??
|
|
211
|
+
{};
|
|
212
|
+
const chunks = grounding['grounding_chunks'];
|
|
213
|
+
if (Array.isArray(chunks)) {
|
|
214
|
+
for (const chunk of chunks) {
|
|
215
|
+
if (!chunk || typeof chunk !== 'object')
|
|
216
|
+
continue;
|
|
217
|
+
const web = (chunk.web ?? {});
|
|
218
|
+
if (!web.uri)
|
|
219
|
+
continue;
|
|
220
|
+
out.push({
|
|
221
|
+
url: web.uri,
|
|
222
|
+
...(web.title !== undefined ? { title: web.title } : {}),
|
|
223
|
+
providerMetadata: { ...chunk },
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return out;
|
|
228
|
+
}
|
|
229
|
+
function normalizeStopReason(msg) {
|
|
230
|
+
const meta = msg
|
|
231
|
+
?.response_metadata;
|
|
232
|
+
const stop = meta?.['stop_reason'] ?? meta?.['finish_reason'];
|
|
233
|
+
if (typeof stop === 'string' && stop)
|
|
234
|
+
return stop;
|
|
235
|
+
return 'end_turn';
|
|
236
|
+
}
|
|
237
|
+
function normalizeUsage(msg) {
|
|
238
|
+
const direct = msg
|
|
239
|
+
?.usage_metadata;
|
|
240
|
+
if (direct && typeof direct === 'object') {
|
|
241
|
+
return coerceUsage(direct);
|
|
242
|
+
}
|
|
243
|
+
const meta = msg
|
|
244
|
+
?.response_metadata;
|
|
245
|
+
const u = meta?.['usage'];
|
|
246
|
+
if (u && typeof u === 'object') {
|
|
247
|
+
return coerceUsage(u);
|
|
248
|
+
}
|
|
249
|
+
return {};
|
|
250
|
+
}
|
|
251
|
+
function coerceUsage(raw) {
|
|
252
|
+
const out = {};
|
|
253
|
+
for (const [k, v] of Object.entries(raw)) {
|
|
254
|
+
if (typeof v === 'number')
|
|
255
|
+
out[k] = v;
|
|
256
|
+
else if (typeof v === 'string' && !Number.isNaN(Number(v))) {
|
|
257
|
+
out[k] = Number(v);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
return out;
|
|
261
|
+
}
|
|
262
|
+
function lastAiMessage(messages) {
|
|
263
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
264
|
+
const msg = messages[i];
|
|
265
|
+
const ctor = msg?.constructor?.name;
|
|
266
|
+
if (ctor === 'AIMessage')
|
|
267
|
+
return msg;
|
|
268
|
+
}
|
|
269
|
+
return messages.length > 0 ? messages[messages.length - 1] : null;
|
|
270
|
+
}
|
|
271
|
+
// ---------------------------------------------------------------------------
|
|
272
|
+
// CompresrEngine
|
|
273
|
+
// ---------------------------------------------------------------------------
|
|
274
|
+
export class CompresrEngine {
|
|
275
|
+
provider;
|
|
276
|
+
/**
|
|
277
|
+
* Default model bound to the engine, parsed from the constructor's ``llm``
|
|
278
|
+
* spec. ``undefined`` when the spec is a bare provider — in that case the
|
|
279
|
+
* model must be supplied per-call on :meth:`run`.
|
|
280
|
+
*/
|
|
281
|
+
defaultModelName;
|
|
282
|
+
compresrClient;
|
|
283
|
+
llmApiKey;
|
|
284
|
+
policy;
|
|
285
|
+
chatModels = new Map();
|
|
286
|
+
constructor(options) {
|
|
287
|
+
const { provider, modelName } = parseLlmSpec(options.llm);
|
|
288
|
+
if (!KNOWN_PROVIDERS.has(provider)) {
|
|
289
|
+
// Warn-only — LangChain may know providers we don't.
|
|
290
|
+
getLogger().warn(`agents: unknown provider '${provider}'. ` +
|
|
291
|
+
`Supported: ${[...KNOWN_PROVIDERS].join(', ')}.`);
|
|
292
|
+
}
|
|
293
|
+
this.provider = provider;
|
|
294
|
+
this.defaultModelName = modelName;
|
|
295
|
+
this.compresrClient = options.compresrClient;
|
|
296
|
+
if (options.llmApiKey !== undefined) {
|
|
297
|
+
this.llmApiKey = options.llmApiKey;
|
|
298
|
+
}
|
|
299
|
+
this.policy = resolvePolicy(options.policy);
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Back-compat alias for ``defaultModelName`` — returns the constructor
|
|
303
|
+
* default and may be ``undefined`` when the engine was built with a bare
|
|
304
|
+
* provider ``llm`` spec.
|
|
305
|
+
*/
|
|
306
|
+
get modelName() {
|
|
307
|
+
return this.defaultModelName;
|
|
308
|
+
}
|
|
309
|
+
async getChatModel(modelName) {
|
|
310
|
+
const cached = this.chatModels.get(modelName);
|
|
311
|
+
if (cached !== undefined)
|
|
312
|
+
return cached;
|
|
313
|
+
const { initChatModel } = await importLangChain();
|
|
314
|
+
const kwargs = {};
|
|
315
|
+
if (this.llmApiKey !== undefined)
|
|
316
|
+
kwargs['apiKey'] = this.llmApiKey;
|
|
317
|
+
let chat;
|
|
318
|
+
if (this.provider === 'openai') {
|
|
319
|
+
try {
|
|
320
|
+
chat = initChatModel(`${this.provider}:${modelName}`, {
|
|
321
|
+
...kwargs,
|
|
322
|
+
outputVersion: 'responses/v1',
|
|
323
|
+
});
|
|
324
|
+
this.chatModels.set(modelName, chat);
|
|
325
|
+
return chat;
|
|
326
|
+
}
|
|
327
|
+
catch {
|
|
328
|
+
// older @langchain/openai rejects unknown kwargs
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
chat = initChatModel(`${this.provider}:${modelName}`, kwargs);
|
|
332
|
+
this.chatModels.set(modelName, chat);
|
|
333
|
+
return chat;
|
|
334
|
+
}
|
|
335
|
+
async buildMiddleware() {
|
|
336
|
+
// Lazy-load the existing langchain middleware so importing the engine
|
|
337
|
+
// doesn't drag in @langchain/core at module load.
|
|
338
|
+
const { compresrToolMiddleware } = await import('../integrations/langchain/middleware.js');
|
|
339
|
+
const mwOpts = {
|
|
340
|
+
client: this.compresrClient,
|
|
341
|
+
targetCompressionRatio: this.policy.targetCompressionRatio,
|
|
342
|
+
compressionModel: this.policy.compressionModelName,
|
|
343
|
+
minTokens: this.policy.minTokens,
|
|
344
|
+
onError: this.policy.onError,
|
|
345
|
+
};
|
|
346
|
+
if (this.policy.coarse !== undefined)
|
|
347
|
+
mwOpts['coarse'] = this.policy.coarse;
|
|
348
|
+
if (this.policy.allowTools !== undefined) {
|
|
349
|
+
mwOpts['allowTools'] = this.policy.allowTools;
|
|
350
|
+
}
|
|
351
|
+
if (this.policy.ignoreTools !== undefined) {
|
|
352
|
+
mwOpts['ignoreTools'] = this.policy.ignoreTools;
|
|
353
|
+
}
|
|
354
|
+
return [
|
|
355
|
+
compresrToolMiddleware(mwOpts),
|
|
356
|
+
];
|
|
357
|
+
}
|
|
358
|
+
async buildAgent(chat, tools, system) {
|
|
359
|
+
const { createAgent } = await importLangChain();
|
|
360
|
+
const middleware = await this.buildMiddleware();
|
|
361
|
+
const params = {
|
|
362
|
+
model: chat,
|
|
363
|
+
tools: [...tools],
|
|
364
|
+
middleware,
|
|
365
|
+
};
|
|
366
|
+
if (system !== undefined)
|
|
367
|
+
params['systemPrompt'] = system;
|
|
368
|
+
try {
|
|
369
|
+
return createAgent(params);
|
|
370
|
+
}
|
|
371
|
+
catch (exc) {
|
|
372
|
+
// Only retry without ``systemPrompt`` when the error clearly signals
|
|
373
|
+
// an unknown-keyword failure from an older LangChain. Otherwise
|
|
374
|
+
// re-throw so we don't mask unrelated bugs (auth, validation, etc.).
|
|
375
|
+
const message = exc instanceof Error ? exc.message : String(exc);
|
|
376
|
+
const isUnknownKwarg = /unexpected keyword|unknown (?:argument|kwarg|option)|not a known argument|systemPrompt/i.test(message);
|
|
377
|
+
if (!isUnknownKwarg || system === undefined) {
|
|
378
|
+
throw exc;
|
|
379
|
+
}
|
|
380
|
+
delete params['systemPrompt'];
|
|
381
|
+
return createAgent(params);
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* Pull every option whose key lives in :data:`LLM_BIND_OPTIONS` and return a
|
|
386
|
+
* fresh object — the caller passes it to ``chat.bind(...)``. Non-LLM keys
|
|
387
|
+
* are silently ignored, which keeps the public ``RunOptions`` interface
|
|
388
|
+
* forgiving when callers mix in custom config.
|
|
389
|
+
*
|
|
390
|
+
* Gemini quirk: LangChain.js's ``ChatGoogleGenerativeAI`` uses
|
|
391
|
+
* ``maxOutputTokens`` instead of ``maxTokens``. We alias when the caller
|
|
392
|
+
* provided ``maxTokens`` without an explicit ``maxOutputTokens``.
|
|
393
|
+
*/
|
|
394
|
+
extractBindOptions(options) {
|
|
395
|
+
const out = {};
|
|
396
|
+
for (const [key, value] of Object.entries(options)) {
|
|
397
|
+
if (value === undefined)
|
|
398
|
+
continue;
|
|
399
|
+
if (LLM_BIND_OPTIONS.has(key)) {
|
|
400
|
+
out[key] = value;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
if (this.provider === 'google_genai' &&
|
|
404
|
+
out['maxTokens'] !== undefined &&
|
|
405
|
+
out['maxOutputTokens'] === undefined) {
|
|
406
|
+
const { maxTokens, ...rest } = out;
|
|
407
|
+
return { ...rest, maxOutputTokens: maxTokens };
|
|
408
|
+
}
|
|
409
|
+
return out;
|
|
410
|
+
}
|
|
411
|
+
async run(options) {
|
|
412
|
+
const effectiveModel = options.model ?? this.defaultModelName;
|
|
413
|
+
if (effectiveModel === undefined) {
|
|
414
|
+
throw new CompresrError("model is required — set it on the client " +
|
|
415
|
+
"(llm: 'anthropic:claude-...') or pass it to messages.create({ model: '...' }).", 'missing_model');
|
|
416
|
+
}
|
|
417
|
+
const tools = options.tools ?? [];
|
|
418
|
+
const cachedChat = await this.getChatModel(effectiveModel);
|
|
419
|
+
const bindOptions = this.extractBindOptions(options);
|
|
420
|
+
// Bind per call so the cached chat instance stays unpolluted across
|
|
421
|
+
// concurrent requests with different temperature / maxTokens / etc.
|
|
422
|
+
let chat = cachedChat;
|
|
423
|
+
if (Object.keys(bindOptions).length > 0) {
|
|
424
|
+
const bindable = cachedChat;
|
|
425
|
+
if (typeof bindable.bind === 'function') {
|
|
426
|
+
chat = bindable.bind(bindOptions);
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
const agent = (await this.buildAgent(chat, tools, options.system));
|
|
430
|
+
let result;
|
|
431
|
+
try {
|
|
432
|
+
result = await Promise.resolve(agent.invoke({ messages: [...options.messages] }, options.config ?? {}));
|
|
433
|
+
}
|
|
434
|
+
catch (exc) {
|
|
435
|
+
// Re-wrap LangChain failures so callers always see a CompresrError
|
|
436
|
+
// (parity with Python M1). The original error is preserved via
|
|
437
|
+
// ``cause`` for debugging.
|
|
438
|
+
if (exc instanceof CompresrError)
|
|
439
|
+
throw exc;
|
|
440
|
+
const message = exc instanceof Error ? exc.message : String(exc);
|
|
441
|
+
const wrapped = new CompresrError(`Agent execution failed: ${message}`, 'agent_execution_failed');
|
|
442
|
+
// Native ``Error.cause`` is part of ES2022 — preserve the original
|
|
443
|
+
// for debugging without losing CompresrError typing.
|
|
444
|
+
wrapped.cause = exc;
|
|
445
|
+
throw wrapped;
|
|
446
|
+
}
|
|
447
|
+
return this.normalize(result);
|
|
448
|
+
}
|
|
449
|
+
normalize(agentResult) {
|
|
450
|
+
const messages = agentResult && typeof agentResult === 'object'
|
|
451
|
+
? (agentResult.messages ?? [])
|
|
452
|
+
: [];
|
|
453
|
+
const msg = lastAiMessage(messages);
|
|
454
|
+
if (msg == null) {
|
|
455
|
+
return {
|
|
456
|
+
text: '',
|
|
457
|
+
contentBlocks: [],
|
|
458
|
+
toolUses: [],
|
|
459
|
+
citations: [],
|
|
460
|
+
stopReason: 'end_turn',
|
|
461
|
+
usage: {},
|
|
462
|
+
compresrStats: defaultCompresrStats(),
|
|
463
|
+
raw: null,
|
|
464
|
+
};
|
|
465
|
+
}
|
|
466
|
+
return {
|
|
467
|
+
text: contentText(msg),
|
|
468
|
+
contentBlocks: normalizeContentBlocks(msg),
|
|
469
|
+
toolUses: normalizeToolUses(msg),
|
|
470
|
+
citations: extractCitations(msg),
|
|
471
|
+
stopReason: normalizeStopReason(msg),
|
|
472
|
+
usage: normalizeUsage(msg),
|
|
473
|
+
compresrStats: defaultCompresrStats(),
|
|
474
|
+
raw: msg,
|
|
475
|
+
};
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
//# sourceMappingURL=engine.js.map
|