@compresr/sdk 1.3.2 → 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 +10 -80
- package/dist/cjs/schemas/compression.d.ts.map +1 -1
- package/dist/cjs/schemas/compression.js +4 -57
- 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 +10 -80
- package/dist/esm/schemas/compression.d.ts.map +1 -1
- package/dist/esm/schemas/compression.js +3 -56
- 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 +89 -4
package/README.md
CHANGED
|
@@ -1,263 +1,327 @@
|
|
|
1
1
|
# Compresr TypeScript SDK
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
[](https://www.typescriptlang.org/)
|
|
5
|
-
[](LICENSE)
|
|
3
|
+
Query-aware LLM context compression — reduce LLM API costs by 30-70%.
|
|
6
4
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
## Installation
|
|
5
|
+
## Install
|
|
10
6
|
|
|
11
7
|
```bash
|
|
12
|
-
npm install compresr
|
|
13
|
-
# or
|
|
14
|
-
yarn add compresr
|
|
15
|
-
# or
|
|
16
|
-
pnpm add compresr
|
|
8
|
+
npm install @compresr/sdk
|
|
17
9
|
```
|
|
18
10
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
### API Key Setup
|
|
22
|
-
|
|
23
|
-
Get your API key from [compresr.ai](https://compresr.ai):
|
|
11
|
+
Get an API key at [compresr.ai](https://compresr.ai).
|
|
24
12
|
|
|
25
|
-
|
|
26
|
-
2. Navigate to Dashboard → API Keys
|
|
27
|
-
3. Click "Create New Key" and copy it (shown only once!)
|
|
28
|
-
|
|
29
|
-
### Basic Usage
|
|
13
|
+
## Quick start
|
|
30
14
|
|
|
31
15
|
```typescript
|
|
32
|
-
import { CompressionClient } from 'compresr';
|
|
16
|
+
import { CompressionClient } from '@compresr/sdk';
|
|
33
17
|
|
|
34
|
-
const client = new CompressionClient({ apiKey: '
|
|
18
|
+
const client = new CompressionClient({ apiKey: 'cmp_...' });
|
|
35
19
|
|
|
36
|
-
// Agnostic compression (espresso_v1) — no query needed
|
|
37
20
|
const result = await client.compress({
|
|
38
|
-
context: '
|
|
21
|
+
context: 'Long passage to compress...',
|
|
22
|
+
query: 'What is the main conclusion?',
|
|
23
|
+
targetCompressionRatio: 0.5,
|
|
39
24
|
});
|
|
40
25
|
|
|
41
|
-
console.log(`
|
|
42
|
-
console.log(
|
|
43
|
-
console.log(`Saved: ${result.data.tokens_saved} tokens`);
|
|
26
|
+
console.log(`Saved ${result.data?.tokens_saved} tokens`);
|
|
27
|
+
console.log(result.data?.compressed_context);
|
|
44
28
|
```
|
|
45
29
|
|
|
46
|
-
|
|
30
|
+
The default model is `latte_v1` (query-aware). Pass any other model name your
|
|
31
|
+
account has access to via `compressionModelName: '...'` — the backend
|
|
32
|
+
validates.
|
|
33
|
+
|
|
34
|
+
## Batch
|
|
47
35
|
|
|
48
36
|
```typescript
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
compressionModelName: 'latte_v1',
|
|
37
|
+
const batch = await client.compressBatch({
|
|
38
|
+
contexts: ['Doc 1...', 'Doc 2...', 'Doc 3...'],
|
|
39
|
+
queries: 'What is self-attention?',
|
|
40
|
+
targetCompressionRatio: 0.5,
|
|
54
41
|
});
|
|
55
42
|
|
|
56
|
-
console.log(
|
|
57
|
-
|
|
43
|
+
console.log(`Total saved: ${batch.data?.total_tokens_saved} tokens`);
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Streaming
|
|
47
|
+
|
|
48
|
+
```typescript
|
|
49
|
+
for await (const chunk of client.compressStream({
|
|
50
|
+
context: '...',
|
|
51
|
+
query: '...',
|
|
52
|
+
})) {
|
|
53
|
+
process.stdout.write(chunk.content);
|
|
54
|
+
}
|
|
58
55
|
```
|
|
59
56
|
|
|
60
|
-
## Compression
|
|
57
|
+
## Compression options
|
|
58
|
+
|
|
59
|
+
| Param | Purpose |
|
|
60
|
+
|---|---|
|
|
61
|
+
| `query` | Question the LLM is trying to answer — drives `latte_v1` compression |
|
|
62
|
+
| `targetCompressionRatio` | `0-1` strength or `>1` for Nx factor (max 200) |
|
|
63
|
+
| `coarse` | `true` = paragraph-level (default, faster); `false` = token-level (fine-grained) |
|
|
64
|
+
| `heuristicChunking` | Structure-preserving chunking |
|
|
65
|
+
| `disablePlaceholders` | Disable placeholder tokens in output |
|
|
66
|
+
|
|
67
|
+
## Error handling
|
|
68
|
+
|
|
69
|
+
```typescript
|
|
70
|
+
import {
|
|
71
|
+
AuthenticationError,
|
|
72
|
+
RateLimitError,
|
|
73
|
+
ValidationError,
|
|
74
|
+
CompresrError,
|
|
75
|
+
} from '@compresr/sdk';
|
|
76
|
+
|
|
77
|
+
try {
|
|
78
|
+
await client.compress({ context, query });
|
|
79
|
+
} catch (err) {
|
|
80
|
+
if (err instanceof AuthenticationError) console.error('Invalid API key');
|
|
81
|
+
else if (err instanceof RateLimitError) console.error('Rate limited');
|
|
82
|
+
else if (err instanceof ValidationError) console.error('Bad request:', err);
|
|
83
|
+
else if (err instanceof CompresrError) console.error('API error:', err);
|
|
84
|
+
}
|
|
85
|
+
```
|
|
61
86
|
|
|
62
|
-
|
|
63
|
-
|-------|-------|-------------|
|
|
64
|
-
| `espresso_v1` | Not needed | Agnostic compression — good for system prompts, documents |
|
|
65
|
-
| `latte_v1` | **Required** | Query-specific — preserves tokens relevant to your question |
|
|
87
|
+
## Drop-in agent client
|
|
66
88
|
|
|
67
|
-
|
|
89
|
+
`@compresr/sdk/agents` ships a tiny provider-shape facade layer on top of
|
|
90
|
+
LangChain.js. One `CompressionClient` exposes three call surfaces — Anthropic
|
|
91
|
+
`messages.create`, OpenAI `chat.completions.create`, and a native `run` — all
|
|
92
|
+
backed by the same engine (`createAgent` + `CompresrToolMiddleware`). Every
|
|
93
|
+
tool output above `minTokens` is auto-compressed before it re-enters the
|
|
94
|
+
model's context.
|
|
68
95
|
|
|
69
|
-
|
|
96
|
+
- Pass `temperature`, `topP`, `maxTokens`, `stopSequences`, `presencePenalty`,
|
|
97
|
+
`frequencyPenalty`, `seed`, etc. to any facade — they're forwarded to the
|
|
98
|
+
underlying chat model per call via `.bind(...)` (no cache pollution).
|
|
70
99
|
|
|
71
100
|
```typescript
|
|
72
|
-
import { CompressionClient } from 'compresr';
|
|
101
|
+
import { CompressionClient } from '@compresr/sdk';
|
|
102
|
+
import { WebSearchTool } from '@compresr/sdk/agents';
|
|
73
103
|
|
|
74
104
|
const client = new CompressionClient({
|
|
75
|
-
apiKey:
|
|
76
|
-
|
|
77
|
-
|
|
105
|
+
apiKey: process.env.COMPRESR_API_KEY!,
|
|
106
|
+
llm: 'anthropic', // bare provider — model lives at the call site
|
|
107
|
+
llmApiKey: process.env.ANTHROPIC_API_KEY!,
|
|
108
|
+
compression: { targetCompressionRatio: 0.5, minTokens: 300 },
|
|
78
109
|
});
|
|
79
110
|
```
|
|
80
111
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
#### `compress(options): Promise<CompressResponse>`
|
|
112
|
+
Use `llm: 'anthropic:claude-haiku-4-5'` if you want a default — but the call-site `model:` always wins.
|
|
84
113
|
|
|
85
|
-
|
|
114
|
+
### Anthropic shape
|
|
86
115
|
|
|
87
116
|
```typescript
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
coarse: false, // Optional: paragraph-level (latte_v1 only)
|
|
117
|
+
const msg = await client.messages.create({
|
|
118
|
+
model: 'claude-haiku-4-5',
|
|
119
|
+
maxTokens: 512,
|
|
120
|
+
messages: [{ role: 'user', content: "What's the latest AI news?" }],
|
|
121
|
+
tools: [search],
|
|
94
122
|
});
|
|
95
123
|
```
|
|
96
124
|
|
|
97
|
-
|
|
125
|
+
### OpenAI shape
|
|
126
|
+
|
|
127
|
+
```typescript
|
|
128
|
+
const completion = await client.chat.completions.create({
|
|
129
|
+
model: 'gpt-4o-mini',
|
|
130
|
+
messages: [{ role: 'user', content: "Summarize today's top story." }],
|
|
131
|
+
tools: [search],
|
|
132
|
+
});
|
|
133
|
+
```
|
|
98
134
|
|
|
99
|
-
|
|
135
|
+
### Native shape
|
|
100
136
|
|
|
101
137
|
```typescript
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
})) {
|
|
105
|
-
if (!chunk.done) {
|
|
106
|
-
process.stdout.write(chunk.content);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
138
|
+
const result = await client.run({ prompt: 'Hello', tools: [search], maxTokens: 512 });
|
|
139
|
+
console.log(result.text, result.citations, result.compresrStats);
|
|
109
140
|
```
|
|
110
141
|
|
|
111
|
-
|
|
142
|
+
### Tools
|
|
112
143
|
|
|
113
|
-
|
|
144
|
+
`WebSearchTool` returns a LangChain.js `BaseTool` — usable across all three
|
|
145
|
+
facades.
|
|
114
146
|
|
|
115
147
|
```typescript
|
|
116
|
-
|
|
117
|
-
const result = await client.compressBatch({
|
|
118
|
-
contexts: ['Doc 1...', 'Doc 2...', 'Doc 3...'],
|
|
119
|
-
queries: 'What are the key points?',
|
|
120
|
-
compressionModelName: 'latte_v1', // Optional (default for batch)
|
|
121
|
-
});
|
|
148
|
+
import { WebSearchTool } from '@compresr/sdk/agents';
|
|
122
149
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
150
|
+
const tavily = await WebSearchTool.tavily({
|
|
151
|
+
apiKey: process.env.TAVILY_API_KEY!,
|
|
152
|
+
maxResults: 5,
|
|
153
|
+
allowedDomains: ['arxiv.org'],
|
|
127
154
|
});
|
|
128
155
|
|
|
129
|
-
|
|
156
|
+
const brave = await WebSearchTool.brave({
|
|
157
|
+
apiKey: process.env.BRAVE_API_KEY!,
|
|
158
|
+
maxResults: 5,
|
|
159
|
+
});
|
|
130
160
|
```
|
|
131
161
|
|
|
132
|
-
|
|
162
|
+
`WebSearchTool` is also re-exported from `@compresr/sdk` for convenience, but
|
|
163
|
+
`@compresr/sdk/agents` is the recommended import path — heavy LangChain peers
|
|
164
|
+
stay dynamic, so the subpath only pulls them in when you touch the surface.
|
|
165
|
+
|
|
166
|
+
### Custom tools
|
|
133
167
|
|
|
134
|
-
|
|
168
|
+
Any LangChain.js tool works. Use the standard `tool({...})` decorator and
|
|
169
|
+
Compresr compresses its output the same way:
|
|
135
170
|
|
|
136
171
|
```typescript
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
172
|
+
import { tool } from '@langchain/core/tools';
|
|
173
|
+
import { z } from 'zod';
|
|
174
|
+
|
|
175
|
+
const fetchDocs = tool(
|
|
176
|
+
async ({ query }) => fetchInternalDocs(query),
|
|
177
|
+
{
|
|
178
|
+
name: 'fetch_docs',
|
|
179
|
+
description: 'Search the internal docs corpus',
|
|
180
|
+
schema: z.object({ query: z.string() }),
|
|
181
|
+
},
|
|
182
|
+
);
|
|
183
|
+
|
|
184
|
+
await client.run({ prompt: 'How does billing work?', tools: [fetchDocs] });
|
|
149
185
|
```
|
|
150
186
|
|
|
151
|
-
###
|
|
187
|
+
### Provider switching
|
|
188
|
+
|
|
189
|
+
Swap providers by changing one line — the facades stay the same:
|
|
152
190
|
|
|
153
191
|
```typescript
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
results: CompressBatchItemResult[];
|
|
158
|
-
total_original_tokens: number;
|
|
159
|
-
total_compressed_tokens: number;
|
|
160
|
-
total_tokens_saved: number;
|
|
161
|
-
average_compression_ratio: number;
|
|
162
|
-
count: number;
|
|
163
|
-
} | null;
|
|
164
|
-
}
|
|
192
|
+
new CompressionClient({ apiKey, llm: 'anthropic:claude-haiku-4-5', llmApiKey });
|
|
193
|
+
new CompressionClient({ apiKey, llm: 'openai:gpt-4o-mini', llmApiKey });
|
|
194
|
+
new CompressionClient({ apiKey, llm: 'google_genai:gemini-2.5-flash', llmApiKey });
|
|
165
195
|
```
|
|
166
196
|
|
|
167
|
-
|
|
197
|
+
Streaming (`messages.stream`, `chat.completions.stream`) is a Phase-2 item
|
|
198
|
+
and currently throws `CompresrError('streaming not yet implemented')`.
|
|
168
199
|
|
|
169
|
-
|
|
170
|
-
import { CompressionClient } from 'compresr';
|
|
171
|
-
import OpenAI from 'openai';
|
|
200
|
+
### Why no provider-native server search?
|
|
172
201
|
|
|
173
|
-
|
|
174
|
-
|
|
202
|
+
Anthropic `web_search_20250305`, OpenAI `web_search_preview`, and Gemini
|
|
203
|
+
`google_search` execute server-side and return encrypted or opaque content
|
|
204
|
+
that Compresr can't read — so it can't compress them either. Use
|
|
205
|
+
`WebSearchTool.tavily` / `WebSearchTool.brave` if you want compressible
|
|
206
|
+
search output in the agent loop.
|
|
175
207
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
208
|
+
## Framework integrations
|
|
209
|
+
|
|
210
|
+
Optional peer dependencies — install only what you use:
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
npm install langchain @langchain/core # engine for the agents layer
|
|
214
|
+
npm install @langchain/anthropic # for anthropic:... models
|
|
215
|
+
npm install @langchain/openai # for openai:... models
|
|
216
|
+
npm install @langchain/google-genai # for google_genai:... models
|
|
217
|
+
npm install @langchain/tavily # for WebSearchTool.tavily
|
|
218
|
+
npm install @langchain/community # for WebSearchTool.brave
|
|
219
|
+
npm install @langchain/langgraph # for LangGraph integration
|
|
220
|
+
npm install llamaindex # for LlamaIndex integration
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### LangChain — middleware, tool wrapper, retriever
|
|
180
224
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
225
|
+
```typescript
|
|
226
|
+
import { createAgent } from 'langchain';
|
|
227
|
+
import {
|
|
228
|
+
compresrToolMiddleware,
|
|
229
|
+
wrapToolWithCompression,
|
|
230
|
+
CompresrExtractor,
|
|
231
|
+
} from '@compresr/sdk/integrations/langchain';
|
|
232
|
+
|
|
233
|
+
const agent = createAgent({
|
|
234
|
+
model,
|
|
235
|
+
tools: [webSearch],
|
|
236
|
+
middleware: [
|
|
237
|
+
compresrToolMiddleware({
|
|
238
|
+
apiKey: process.env.COMPRESR_API_KEY!,
|
|
239
|
+
queryArg: 'query',
|
|
240
|
+
}),
|
|
187
241
|
],
|
|
188
242
|
});
|
|
243
|
+
```
|
|
189
244
|
|
|
190
|
-
|
|
245
|
+
### LangGraph — compression as a graph node
|
|
246
|
+
|
|
247
|
+
```typescript
|
|
248
|
+
import { makeCompresrNode } from '@compresr/sdk/integrations/langgraph';
|
|
249
|
+
|
|
250
|
+
graph.addNode(
|
|
251
|
+
'compress',
|
|
252
|
+
makeCompresrNode<State>({
|
|
253
|
+
apiKey: process.env.COMPRESR_API_KEY!,
|
|
254
|
+
contextKey: 'retrieved_text',
|
|
255
|
+
queryKey: 'user_question',
|
|
256
|
+
})
|
|
257
|
+
);
|
|
191
258
|
```
|
|
192
259
|
|
|
193
|
-
|
|
260
|
+
### LlamaIndex — node postprocessor for RAG
|
|
194
261
|
|
|
195
262
|
```typescript
|
|
196
|
-
import {
|
|
197
|
-
CompressionClient,
|
|
198
|
-
CompresrError,
|
|
199
|
-
AuthenticationError,
|
|
200
|
-
ValidationError,
|
|
201
|
-
RateLimitError,
|
|
202
|
-
} from 'compresr';
|
|
263
|
+
import { CompresrNodePostprocessor } from '@compresr/sdk/integrations/llamaindex';
|
|
203
264
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
} else if (error instanceof RateLimitError) {
|
|
212
|
-
console.error('Rate limited. Retry after:', error.retryAfter, 'seconds');
|
|
213
|
-
} else if (error instanceof CompresrError) {
|
|
214
|
-
console.error('API error:', error.message, 'Code:', error.code);
|
|
215
|
-
}
|
|
216
|
-
}
|
|
265
|
+
const queryEngine = index.asQueryEngine({
|
|
266
|
+
nodePostprocessors: [
|
|
267
|
+
new CompresrNodePostprocessor({
|
|
268
|
+
apiKey: process.env.COMPRESR_API_KEY!,
|
|
269
|
+
}),
|
|
270
|
+
],
|
|
271
|
+
});
|
|
217
272
|
```
|
|
218
273
|
|
|
219
|
-
###
|
|
274
|
+
### Unified query API
|
|
275
|
+
|
|
276
|
+
Every integration that accepts a query exposes the same three knobs:
|
|
277
|
+
|
|
278
|
+
| Param | Purpose |
|
|
279
|
+
|---|---|
|
|
280
|
+
| `query` | Static query — same for every call |
|
|
281
|
+
| `queryExtractor` | Callable that derives the query from the call context |
|
|
282
|
+
| `queryArg` / `queryKey` | Name of the tool arg / state key to use as the query |
|
|
283
|
+
|
|
284
|
+
Priority: `query` > `queryExtractor` > `queryArg`/`queryKey` > smart-pick
|
|
285
|
+
from common arg keys (`query`, `question`, `search_query`, ...) > last user
|
|
286
|
+
message in history.
|
|
287
|
+
|
|
288
|
+
### Tutorials
|
|
289
|
+
|
|
290
|
+
Runnable end-to-end examples under `tutorial/`:
|
|
291
|
+
|
|
292
|
+
- `01-quickstart.ts` — core `CompressionClient`.
|
|
293
|
+
- `02-langchain.ts` — middleware + tool wrapper + retriever.
|
|
294
|
+
- `03-langgraph.ts` — compression node in a 3-node graph.
|
|
295
|
+
- `04-llamaindex.ts` — node postprocessor + tool wrapper.
|
|
296
|
+
- `05-agents.md` — drop-in agent client (Anthropic / OpenAI / native facades).
|
|
220
297
|
|
|
221
|
-
|
|
222
|
-
|-------|-------------|
|
|
223
|
-
| `AuthenticationError` | Invalid or missing API key |
|
|
224
|
-
| `ValidationError` | Invalid request parameters |
|
|
225
|
-
| `RateLimitError` | Too many requests (includes `retryAfter`) |
|
|
226
|
-
| `ScopeError` | API key lacks required permissions |
|
|
227
|
-
| `ServerError` | Internal server error |
|
|
228
|
-
| `ConnectionError` | Network/connection failure |
|
|
229
|
-
| `NotFoundError` | Resource not found |
|
|
298
|
+
Run any with `npx tsx --env-file=../.env tutorial/01-quickstart.ts`.
|
|
230
299
|
|
|
231
300
|
## Requirements
|
|
232
301
|
|
|
233
|
-
- Node.js
|
|
234
|
-
- TypeScript 5.0+ (optional,
|
|
302
|
+
- Node.js 20+ (uses native `fetch`)
|
|
303
|
+
- TypeScript 5.0+ (optional, recommended)
|
|
304
|
+
- Optional peers: `@langchain/core>=0.3`, `langchain>=1.0`,
|
|
305
|
+
`@langchain/anthropic>=1.0`, `@langchain/openai>=1.0`,
|
|
306
|
+
`@langchain/google-genai>=0.2`, `@langchain/tavily>=0.1`,
|
|
307
|
+
`@langchain/community>=0.3`, `@langchain/langgraph>=0.2`,
|
|
308
|
+
`llamaindex>=0.8` (install only what you use)
|
|
235
309
|
|
|
236
310
|
## Development
|
|
237
311
|
|
|
238
312
|
```bash
|
|
239
|
-
# Install dependencies
|
|
240
313
|
npm install
|
|
241
|
-
|
|
242
|
-
#
|
|
243
|
-
npm test
|
|
244
|
-
|
|
245
|
-
# Run integration tests (requires COMPRESR_API_KEY)
|
|
246
|
-
npm run test:integration
|
|
247
|
-
|
|
248
|
-
# Build
|
|
314
|
+
npm test # unit tests
|
|
315
|
+
npm run test:integration # live tests (requires COMPRESR_API_KEY)
|
|
249
316
|
npm run build
|
|
250
|
-
|
|
251
|
-
# Lint
|
|
252
|
-
npm run lint
|
|
253
317
|
```
|
|
254
318
|
|
|
255
|
-
##
|
|
319
|
+
## License
|
|
256
320
|
|
|
257
|
-
|
|
258
|
-
- [API Documentation](https://compresr.ai/docs)
|
|
259
|
-
- [GitHub Issues](https://github.com/compresr/sdk/issues)
|
|
321
|
+
Apache 2.0 — see [LICENSE](LICENSE).
|
|
260
322
|
|
|
261
|
-
##
|
|
323
|
+
## Support
|
|
262
324
|
|
|
263
|
-
|
|
325
|
+
- Docs: [compresr.ai/docs](https://compresr.ai/docs)
|
|
326
|
+
- Issues: [GitHub](https://github.com/Compresr-ai/Compresr-SDK/issues)
|
|
327
|
+
- Email: support@compresr.ai
|
|
@@ -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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"}
|