beeai-framework 0.1.15 → 0.1.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/acp/agents/agent.cjs.map +1 -1
- package/dist/adapters/acp/agents/agent.d.cts +3 -14
- package/dist/adapters/acp/agents/agent.d.ts +3 -14
- package/dist/adapters/acp/agents/agent.js.map +1 -1
- package/dist/adapters/acp/agents/events.d.cts +2 -13
- package/dist/adapters/acp/agents/events.d.ts +2 -13
- package/dist/adapters/acp/agents/types.d.cts +1 -12
- package/dist/adapters/acp/agents/types.d.ts +1 -12
- package/dist/adapters/amazon-bedrock/backend/chat.cjs.map +1 -1
- package/dist/adapters/amazon-bedrock/backend/chat.d.cts +3 -14
- package/dist/adapters/amazon-bedrock/backend/chat.d.ts +3 -14
- package/dist/adapters/amazon-bedrock/backend/chat.js.map +1 -1
- package/dist/adapters/amazon-bedrock/backend/client.cjs.map +1 -1
- package/dist/adapters/amazon-bedrock/backend/client.d.cts +1 -12
- package/dist/adapters/amazon-bedrock/backend/client.d.ts +1 -12
- package/dist/adapters/amazon-bedrock/backend/client.js.map +1 -1
- package/dist/adapters/amazon-bedrock/backend/embedding.cjs.map +1 -1
- package/dist/adapters/amazon-bedrock/backend/embedding.d.cts +3 -14
- package/dist/adapters/amazon-bedrock/backend/embedding.d.ts +3 -14
- package/dist/adapters/amazon-bedrock/backend/embedding.js.map +1 -1
- package/dist/adapters/anthropic/backend/chat.cjs.map +1 -1
- package/dist/adapters/anthropic/backend/chat.d.cts +3 -14
- package/dist/adapters/anthropic/backend/chat.d.ts +3 -14
- package/dist/adapters/anthropic/backend/chat.js.map +1 -1
- package/dist/adapters/anthropic/backend/client.cjs +1 -4
- package/dist/adapters/anthropic/backend/client.cjs.map +1 -1
- package/dist/adapters/anthropic/backend/client.d.cts +1 -12
- package/dist/adapters/anthropic/backend/client.d.ts +1 -12
- package/dist/adapters/anthropic/backend/client.js +3 -6
- package/dist/adapters/anthropic/backend/client.js.map +1 -1
- package/dist/adapters/anthropic/backend/embedding.cjs.map +1 -1
- package/dist/adapters/anthropic/backend/embedding.d.cts +3 -14
- package/dist/adapters/anthropic/backend/embedding.d.ts +3 -14
- package/dist/adapters/anthropic/backend/embedding.js.map +1 -1
- package/dist/adapters/azure-openai/backend/chat.cjs.map +1 -1
- package/dist/adapters/azure-openai/backend/chat.d.cts +3 -14
- package/dist/adapters/azure-openai/backend/chat.d.ts +3 -14
- package/dist/adapters/azure-openai/backend/chat.js.map +1 -1
- package/dist/adapters/azure-openai/backend/client.cjs.map +1 -1
- package/dist/adapters/azure-openai/backend/client.d.cts +1 -12
- package/dist/adapters/azure-openai/backend/client.d.ts +1 -12
- package/dist/adapters/azure-openai/backend/client.js.map +1 -1
- package/dist/adapters/azure-openai/backend/embedding.cjs.map +1 -1
- package/dist/adapters/azure-openai/backend/embedding.d.cts +3 -14
- package/dist/adapters/azure-openai/backend/embedding.d.ts +3 -14
- package/dist/adapters/azure-openai/backend/embedding.js.map +1 -1
- package/dist/adapters/beeai_platform/agents/agent.cjs.map +1 -1
- package/dist/adapters/beeai_platform/agents/agent.d.cts +2 -2
- package/dist/adapters/beeai_platform/agents/agent.d.ts +2 -2
- package/dist/adapters/beeai_platform/agents/agent.js.map +1 -1
- package/dist/adapters/beeai_platform/agents/events.d.cts +2 -13
- package/dist/adapters/beeai_platform/agents/events.d.ts +2 -13
- package/dist/adapters/beeai_platform/agents/types.d.cts +1 -12
- package/dist/adapters/beeai_platform/agents/types.d.ts +1 -12
- package/dist/adapters/dummy/backend/chat.cjs +9 -9
- package/dist/adapters/dummy/backend/chat.cjs.map +1 -1
- package/dist/adapters/dummy/backend/chat.d.cts +2 -2
- package/dist/adapters/dummy/backend/chat.d.ts +2 -2
- package/dist/adapters/dummy/backend/chat.js +9 -9
- package/dist/adapters/dummy/backend/chat.js.map +1 -1
- package/dist/adapters/dummy/backend/embedding.cjs +9 -9
- package/dist/adapters/dummy/backend/embedding.cjs.map +1 -1
- package/dist/adapters/dummy/backend/embedding.d.cts +3 -14
- package/dist/adapters/dummy/backend/embedding.d.ts +3 -14
- package/dist/adapters/dummy/backend/embedding.js +9 -9
- package/dist/adapters/dummy/backend/embedding.js.map +1 -1
- package/dist/adapters/google-vertex/backend/chat.cjs.map +1 -1
- package/dist/adapters/google-vertex/backend/chat.d.cts +3 -14
- package/dist/adapters/google-vertex/backend/chat.d.ts +3 -14
- package/dist/adapters/google-vertex/backend/chat.js.map +1 -1
- package/dist/adapters/google-vertex/backend/client.cjs.map +1 -1
- package/dist/adapters/google-vertex/backend/client.d.cts +1 -12
- package/dist/adapters/google-vertex/backend/client.d.ts +1 -12
- package/dist/adapters/google-vertex/backend/client.js.map +1 -1
- package/dist/adapters/google-vertex/backend/embedding.cjs.map +1 -1
- package/dist/adapters/google-vertex/backend/embedding.d.cts +3 -14
- package/dist/adapters/google-vertex/backend/embedding.d.ts +3 -14
- package/dist/adapters/google-vertex/backend/embedding.js.map +1 -1
- package/dist/adapters/groq/backend/chat.cjs.map +1 -1
- package/dist/adapters/groq/backend/chat.d.cts +3 -14
- package/dist/adapters/groq/backend/chat.d.ts +3 -14
- package/dist/adapters/groq/backend/chat.js.map +1 -1
- package/dist/adapters/groq/backend/client.cjs.map +1 -1
- package/dist/adapters/groq/backend/client.d.cts +1 -12
- package/dist/adapters/groq/backend/client.d.ts +1 -12
- package/dist/adapters/groq/backend/client.js.map +1 -1
- package/dist/adapters/groq/backend/embedding.cjs.map +1 -1
- package/dist/adapters/groq/backend/embedding.d.cts +3 -14
- package/dist/adapters/groq/backend/embedding.d.ts +3 -14
- package/dist/adapters/groq/backend/embedding.js.map +1 -1
- package/dist/adapters/langchain/backend/chat.cjs.map +1 -1
- package/dist/adapters/langchain/backend/chat.d.cts +2 -2
- package/dist/adapters/langchain/backend/chat.d.ts +2 -2
- package/dist/adapters/langchain/backend/chat.js.map +1 -1
- package/dist/adapters/langchain/backend/embedding.cjs.map +1 -1
- package/dist/adapters/langchain/backend/embedding.d.cts +3 -14
- package/dist/adapters/langchain/backend/embedding.d.ts +3 -14
- package/dist/adapters/langchain/backend/embedding.js.map +1 -1
- package/dist/adapters/langchain/tools.cjs.map +1 -1
- package/dist/adapters/langchain/tools.d.cts +1 -1
- package/dist/adapters/langchain/tools.d.ts +1 -1
- package/dist/adapters/langchain/tools.js.map +1 -1
- package/dist/adapters/mcp/serve/http_server.cjs.map +1 -1
- package/dist/adapters/mcp/serve/http_server.d.cts +1 -12
- package/dist/adapters/mcp/serve/http_server.d.ts +1 -12
- package/dist/adapters/mcp/serve/http_server.js.map +1 -1
- package/dist/adapters/mcp/serve/in_memory_store.cjs.map +1 -1
- package/dist/adapters/mcp/serve/in_memory_store.d.cts +1 -12
- package/dist/adapters/mcp/serve/in_memory_store.d.ts +1 -12
- package/dist/adapters/mcp/serve/in_memory_store.js.map +1 -1
- package/dist/adapters/mcp/serve/server.cjs.map +1 -1
- package/dist/adapters/mcp/serve/server.d.cts +1 -12
- package/dist/adapters/mcp/serve/server.d.ts +1 -12
- package/dist/adapters/mcp/serve/server.js.map +1 -1
- package/dist/adapters/ollama/backend/chat.cjs.map +1 -1
- package/dist/adapters/ollama/backend/chat.d.cts +3 -14
- package/dist/adapters/ollama/backend/chat.d.ts +3 -14
- package/dist/adapters/ollama/backend/chat.js.map +1 -1
- package/dist/adapters/ollama/backend/client.cjs +12 -3
- package/dist/adapters/ollama/backend/client.cjs.map +1 -1
- package/dist/adapters/ollama/backend/client.d.cts +4 -13
- package/dist/adapters/ollama/backend/client.d.ts +4 -13
- package/dist/adapters/ollama/backend/client.js +13 -4
- package/dist/adapters/ollama/backend/client.js.map +1 -1
- package/dist/adapters/ollama/backend/embedding.cjs.map +1 -1
- package/dist/adapters/ollama/backend/embedding.d.cts +3 -14
- package/dist/adapters/ollama/backend/embedding.d.ts +3 -14
- package/dist/adapters/ollama/backend/embedding.js.map +1 -1
- package/dist/adapters/openai/backend/chat.cjs.map +1 -1
- package/dist/adapters/openai/backend/chat.d.cts +3 -14
- package/dist/adapters/openai/backend/chat.d.ts +3 -14
- package/dist/adapters/openai/backend/chat.js.map +1 -1
- package/dist/adapters/openai/backend/client.cjs +1 -4
- package/dist/adapters/openai/backend/client.cjs.map +1 -1
- package/dist/adapters/openai/backend/client.d.cts +1 -12
- package/dist/adapters/openai/backend/client.d.ts +1 -12
- package/dist/adapters/openai/backend/client.js +3 -6
- package/dist/adapters/openai/backend/client.js.map +1 -1
- package/dist/adapters/openai/backend/embedding.cjs.map +1 -1
- package/dist/adapters/openai/backend/embedding.d.cts +3 -14
- package/dist/adapters/openai/backend/embedding.d.ts +3 -14
- package/dist/adapters/openai/backend/embedding.js.map +1 -1
- package/dist/adapters/vercel/backend/chat.cjs +2 -2
- package/dist/adapters/vercel/backend/chat.cjs.map +1 -1
- package/dist/adapters/vercel/backend/chat.d.cts +2 -2
- package/dist/adapters/vercel/backend/chat.d.ts +2 -2
- package/dist/adapters/vercel/backend/chat.js +2 -2
- package/dist/adapters/vercel/backend/chat.js.map +1 -1
- package/dist/adapters/vercel/backend/embedding.cjs.map +1 -1
- package/dist/adapters/vercel/backend/embedding.d.cts +3 -14
- package/dist/adapters/vercel/backend/embedding.d.ts +3 -14
- package/dist/adapters/vercel/backend/embedding.js.map +1 -1
- package/dist/adapters/vercel/backend/utils.cjs +11 -2
- package/dist/adapters/vercel/backend/utils.cjs.map +1 -1
- package/dist/adapters/vercel/backend/utils.d.cts +3 -13
- package/dist/adapters/vercel/backend/utils.d.ts +3 -13
- package/dist/adapters/vercel/backend/utils.js +11 -3
- package/dist/adapters/vercel/backend/utils.js.map +1 -1
- package/dist/adapters/watsonx/backend/chat.cjs +13 -13
- package/dist/adapters/watsonx/backend/chat.cjs.map +1 -1
- package/dist/adapters/watsonx/backend/chat.d.cts +2 -2
- package/dist/adapters/watsonx/backend/chat.d.ts +2 -2
- package/dist/adapters/watsonx/backend/chat.js +13 -13
- package/dist/adapters/watsonx/backend/chat.js.map +1 -1
- package/dist/adapters/watsonx/backend/client.cjs.map +1 -1
- package/dist/adapters/watsonx/backend/client.d.cts +1 -12
- package/dist/adapters/watsonx/backend/client.d.ts +1 -12
- package/dist/adapters/watsonx/backend/client.js.map +1 -1
- package/dist/adapters/watsonx/backend/embedding.cjs.map +1 -1
- package/dist/adapters/watsonx/backend/embedding.d.cts +3 -14
- package/dist/adapters/watsonx/backend/embedding.d.ts +3 -14
- package/dist/adapters/watsonx/backend/embedding.js.map +1 -1
- package/dist/adapters/xai/backend/chat.cjs +24 -0
- package/dist/adapters/xai/backend/chat.cjs.map +1 -0
- package/dist/adapters/xai/backend/chat.d.cts +39 -0
- package/dist/adapters/xai/backend/chat.d.ts +39 -0
- package/dist/adapters/xai/backend/chat.js +22 -0
- package/dist/adapters/xai/backend/chat.js.map +1 -0
- package/dist/adapters/xai/backend/client.cjs +26 -0
- package/dist/adapters/xai/backend/client.cjs.map +1 -0
- package/dist/adapters/xai/backend/client.d.cts +17 -0
- package/dist/adapters/xai/backend/client.d.ts +17 -0
- package/dist/adapters/xai/backend/client.js +24 -0
- package/dist/adapters/xai/backend/client.js.map +1 -0
- package/dist/{agent-CgsoqVL5.d.ts → agent-CUzHyTQd.d.ts} +3 -3
- package/dist/{agent-Ca5UE2P1.d.cts → agent-Cqh2zuKJ.d.cts} +3 -3
- package/dist/agents/base.cjs.map +1 -1
- package/dist/agents/base.d.cts +2 -2
- package/dist/agents/base.d.ts +2 -2
- package/dist/agents/base.js.map +1 -1
- package/dist/agents/experimental/replan/agent.cjs +8 -8
- package/dist/agents/experimental/replan/agent.cjs.map +1 -1
- package/dist/agents/experimental/replan/agent.d.cts +4 -15
- package/dist/agents/experimental/replan/agent.d.ts +4 -15
- package/dist/agents/experimental/replan/agent.js +8 -8
- package/dist/agents/experimental/replan/agent.js.map +1 -1
- package/dist/agents/experimental/replan/prompts.cjs.map +1 -1
- package/dist/agents/experimental/replan/prompts.d.cts +1 -1
- package/dist/agents/experimental/replan/prompts.d.ts +1 -1
- package/dist/agents/experimental/replan/prompts.js.map +1 -1
- package/dist/agents/experimental/streamlit/agent.cjs +9 -9
- package/dist/agents/experimental/streamlit/agent.cjs.map +1 -1
- package/dist/agents/experimental/streamlit/agent.d.cts +4 -15
- package/dist/agents/experimental/streamlit/agent.d.ts +4 -15
- package/dist/agents/experimental/streamlit/agent.js +9 -9
- package/dist/agents/experimental/streamlit/agent.js.map +1 -1
- package/dist/agents/experimental/streamlit/prompts.cjs.map +1 -1
- package/dist/agents/experimental/streamlit/prompts.d.cts +1 -12
- package/dist/agents/experimental/streamlit/prompts.d.ts +1 -12
- package/dist/agents/experimental/streamlit/prompts.js.map +1 -1
- package/dist/agents/react/agent.cjs +8 -8
- package/dist/agents/react/agent.cjs.map +1 -1
- package/dist/agents/react/agent.d.cts +4 -4
- package/dist/agents/react/agent.d.ts +4 -4
- package/dist/agents/react/agent.js +8 -8
- package/dist/agents/react/agent.js.map +1 -1
- package/dist/agents/react/prompts.cjs.map +1 -1
- package/dist/agents/react/prompts.d.cts +1 -12
- package/dist/agents/react/prompts.d.ts +1 -12
- package/dist/agents/react/prompts.js.map +1 -1
- package/dist/agents/react/runners/base.cjs +2 -2
- package/dist/agents/react/runners/base.cjs.map +1 -1
- package/dist/agents/react/runners/base.d.cts +4 -4
- package/dist/agents/react/runners/base.d.ts +4 -4
- package/dist/agents/react/runners/base.js +2 -2
- package/dist/agents/react/runners/base.js.map +1 -1
- package/dist/agents/react/runners/deep-think/prompts.cjs.map +1 -1
- package/dist/agents/react/runners/deep-think/prompts.d.cts +1 -12
- package/dist/agents/react/runners/deep-think/prompts.d.ts +1 -12
- package/dist/agents/react/runners/deep-think/prompts.js.map +1 -1
- package/dist/agents/react/runners/deep-think/runner.cjs.map +1 -1
- package/dist/agents/react/runners/deep-think/runner.d.cts +4 -4
- package/dist/agents/react/runners/deep-think/runner.d.ts +4 -4
- package/dist/agents/react/runners/deep-think/runner.js.map +1 -1
- package/dist/agents/react/runners/default/runner.cjs.map +1 -1
- package/dist/agents/react/runners/default/runner.d.cts +4 -4
- package/dist/agents/react/runners/default/runner.d.ts +4 -4
- package/dist/agents/react/runners/default/runner.js.map +1 -1
- package/dist/agents/react/runners/default/runner.spec.cjs.map +1 -1
- package/dist/agents/react/runners/default/runner.spec.js.map +1 -1
- package/dist/agents/react/runners/granite/prompts.cjs.map +1 -1
- package/dist/agents/react/runners/granite/prompts.d.cts +1 -12
- package/dist/agents/react/runners/granite/prompts.d.ts +1 -12
- package/dist/agents/react/runners/granite/prompts.js.map +1 -1
- package/dist/agents/react/runners/granite/runner.cjs.map +1 -1
- package/dist/agents/react/runners/granite/runner.d.cts +4 -4
- package/dist/agents/react/runners/granite/runner.d.ts +4 -4
- package/dist/agents/react/runners/granite/runner.js.map +1 -1
- package/dist/agents/react/types.d.cts +3 -14
- package/dist/agents/react/types.d.ts +3 -14
- package/dist/agents/toolCalling/agent.cjs +9 -9
- package/dist/agents/toolCalling/agent.cjs.map +1 -1
- package/dist/agents/toolCalling/agent.d.cts +4 -15
- package/dist/agents/toolCalling/agent.d.ts +4 -15
- package/dist/agents/toolCalling/agent.js +9 -9
- package/dist/agents/toolCalling/agent.js.map +1 -1
- package/dist/agents/toolCalling/prompts.cjs.map +1 -1
- package/dist/agents/toolCalling/prompts.d.cts +1 -12
- package/dist/agents/toolCalling/prompts.d.ts +1 -12
- package/dist/agents/toolCalling/prompts.js.map +1 -1
- package/dist/agents/toolCalling/types.d.cts +2 -13
- package/dist/agents/toolCalling/types.d.ts +2 -13
- package/dist/agents/types.d.cts +2 -2
- package/dist/agents/types.d.ts +2 -2
- package/dist/backend/backend.cjs.map +1 -1
- package/dist/backend/backend.d.cts +3 -14
- package/dist/backend/backend.d.ts +3 -14
- package/dist/backend/backend.js.map +1 -1
- package/dist/backend/chat.cjs.map +1 -1
- package/dist/backend/chat.d.cts +2 -2
- package/dist/backend/chat.d.ts +2 -2
- package/dist/backend/chat.js.map +1 -1
- package/dist/backend/client.cjs.map +1 -1
- package/dist/backend/client.d.cts +1 -12
- package/dist/backend/client.d.ts +1 -12
- package/dist/backend/client.js.map +1 -1
- package/dist/backend/constants.cjs +8 -0
- package/dist/backend/constants.cjs.map +1 -1
- package/dist/backend/constants.d.cts +6 -12
- package/dist/backend/constants.d.ts +6 -12
- package/dist/backend/constants.js +8 -0
- package/dist/backend/constants.js.map +1 -1
- package/dist/backend/core.d.cts +2 -2
- package/dist/backend/core.d.ts +2 -2
- package/dist/backend/embedding.cjs.map +1 -1
- package/dist/backend/embedding.d.cts +2 -2
- package/dist/backend/embedding.d.ts +2 -2
- package/dist/backend/embedding.js.map +1 -1
- package/dist/backend/errors.cjs.map +1 -1
- package/dist/backend/errors.d.cts +1 -12
- package/dist/backend/errors.d.ts +1 -12
- package/dist/backend/errors.js.map +1 -1
- package/dist/backend/message.cjs.map +1 -1
- package/dist/backend/message.d.cts +1 -12
- package/dist/backend/message.d.ts +1 -12
- package/dist/backend/message.js.map +1 -1
- package/dist/backend/utils.cjs.map +1 -1
- package/dist/backend/utils.d.cts +2 -2
- package/dist/backend/utils.d.ts +2 -2
- package/dist/backend/utils.js.map +1 -1
- package/dist/{base-szR2Izbt.d.cts → base-Bc-Xv1jG.d.cts} +2 -13
- package/dist/{base-BOCDDBvG.d.ts → base-BrMAtrc_.d.ts} +2 -13
- package/dist/cache/base.cjs.map +1 -1
- package/dist/cache/base.d.cts +1 -12
- package/dist/cache/base.d.ts +1 -12
- package/dist/cache/base.js.map +1 -1
- package/dist/cache/decoratorCache.cjs +2 -2
- package/dist/cache/decoratorCache.cjs.map +1 -1
- package/dist/cache/decoratorCache.d.cts +1 -12
- package/dist/cache/decoratorCache.d.ts +1 -12
- package/dist/cache/decoratorCache.js +2 -2
- package/dist/cache/decoratorCache.js.map +1 -1
- package/dist/cache/fileCache.cjs.map +1 -1
- package/dist/cache/fileCache.d.cts +1 -12
- package/dist/cache/fileCache.d.ts +1 -12
- package/dist/cache/fileCache.js.map +1 -1
- package/dist/cache/nullCache.cjs.map +1 -1
- package/dist/cache/nullCache.d.cts +1 -12
- package/dist/cache/nullCache.d.ts +1 -12
- package/dist/cache/nullCache.js.map +1 -1
- package/dist/cache/slidingCache.cjs.map +1 -1
- package/dist/cache/slidingCache.d.cts +1 -12
- package/dist/cache/slidingCache.d.ts +1 -12
- package/dist/cache/slidingCache.js.map +1 -1
- package/dist/cache/unconstrainedCache.cjs.map +1 -1
- package/dist/cache/unconstrainedCache.d.cts +1 -12
- package/dist/cache/unconstrainedCache.d.ts +1 -12
- package/dist/cache/unconstrainedCache.js.map +1 -1
- package/dist/{chat-DvMzAHj6.d.cts → chat-CR4yfOR9.d.cts} +3 -14
- package/dist/{chat-BdN8hGWn.d.ts → chat-W9j8T6UU.d.ts} +3 -14
- package/dist/context.cjs +3 -4
- package/dist/context.cjs.map +1 -1
- package/dist/context.d.cts +2 -13
- package/dist/context.d.ts +2 -13
- package/dist/context.js +3 -4
- package/dist/context.js.map +1 -1
- package/dist/emitter/emitter.cjs.map +1 -1
- package/dist/emitter/emitter.d.cts +1 -1
- package/dist/emitter/emitter.d.ts +1 -1
- package/dist/emitter/emitter.js.map +1 -1
- package/dist/emitter/errors.cjs.map +1 -1
- package/dist/emitter/errors.d.cts +1 -12
- package/dist/emitter/errors.d.ts +1 -12
- package/dist/emitter/errors.js.map +1 -1
- package/dist/emitter/types.d.cts +1 -1
- package/dist/emitter/types.d.ts +1 -1
- package/dist/emitter/utils.cjs.map +1 -1
- package/dist/emitter/utils.d.cts +1 -12
- package/dist/emitter/utils.d.ts +1 -12
- package/dist/emitter/utils.js.map +1 -1
- package/dist/{emitter-C3dO-s2P.d.ts → emitter-C9nwGLt6.d.ts} +3 -25
- package/dist/{emitter-D5Mu0EEH.d.cts → emitter-DWEsd-ud.d.cts} +3 -25
- package/dist/errors.cjs.map +1 -1
- package/dist/errors.d.cts +1 -12
- package/dist/errors.d.ts +1 -12
- package/dist/errors.js.map +1 -1
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/internals/env.cjs.map +1 -1
- package/dist/internals/env.d.cts +1 -12
- package/dist/internals/env.d.ts +1 -12
- package/dist/internals/env.js.map +1 -1
- package/dist/internals/fetcher.cjs +8 -8
- package/dist/internals/fetcher.cjs.map +1 -1
- package/dist/internals/fetcher.d.cts +2 -13
- package/dist/internals/fetcher.d.ts +2 -13
- package/dist/internals/fetcher.js +8 -8
- package/dist/internals/fetcher.js.map +1 -1
- package/dist/internals/helpers/array.cjs.map +1 -1
- package/dist/internals/helpers/array.d.cts +1 -12
- package/dist/internals/helpers/array.d.ts +1 -12
- package/dist/internals/helpers/array.js.map +1 -1
- package/dist/internals/helpers/cancellation.cjs.map +1 -1
- package/dist/internals/helpers/cancellation.d.cts +1 -12
- package/dist/internals/helpers/cancellation.d.ts +1 -12
- package/dist/internals/helpers/cancellation.js.map +1 -1
- package/dist/internals/helpers/counter.cjs.map +1 -1
- package/dist/internals/helpers/counter.d.cts +1 -12
- package/dist/internals/helpers/counter.d.ts +1 -12
- package/dist/internals/helpers/counter.js.map +1 -1
- package/dist/internals/helpers/general.cjs.map +1 -1
- package/dist/internals/helpers/general.d.cts +1 -12
- package/dist/internals/helpers/general.d.ts +1 -12
- package/dist/internals/helpers/general.js.map +1 -1
- package/dist/internals/helpers/guards.cjs.map +1 -1
- package/dist/internals/helpers/guards.d.cts +1 -12
- package/dist/internals/helpers/guards.d.ts +1 -12
- package/dist/internals/helpers/guards.js.map +1 -1
- package/dist/internals/helpers/hash.cjs.map +1 -1
- package/dist/internals/helpers/hash.d.cts +1 -12
- package/dist/internals/helpers/hash.d.ts +1 -12
- package/dist/internals/helpers/hash.js.map +1 -1
- package/dist/internals/helpers/map.cjs.map +1 -1
- package/dist/internals/helpers/map.d.cts +1 -12
- package/dist/internals/helpers/map.d.ts +1 -12
- package/dist/internals/helpers/map.js.map +1 -1
- package/dist/internals/helpers/math.cjs.map +1 -1
- package/dist/internals/helpers/math.d.cts +1 -12
- package/dist/internals/helpers/math.d.ts +1 -12
- package/dist/internals/helpers/math.js.map +1 -1
- package/dist/internals/helpers/number.cjs.map +1 -1
- package/dist/internals/helpers/number.d.cts +1 -12
- package/dist/internals/helpers/number.d.ts +1 -12
- package/dist/internals/helpers/number.js.map +1 -1
- package/dist/internals/helpers/object.cjs.map +1 -1
- package/dist/internals/helpers/object.d.cts +1 -12
- package/dist/internals/helpers/object.d.ts +1 -12
- package/dist/internals/helpers/object.js.map +1 -1
- package/dist/internals/helpers/paginate.cjs.map +1 -1
- package/dist/internals/helpers/paginate.d.cts +1 -12
- package/dist/internals/helpers/paginate.d.ts +1 -12
- package/dist/internals/helpers/paginate.js.map +1 -1
- package/dist/internals/helpers/promise.cjs +1 -3
- package/dist/internals/helpers/promise.cjs.map +1 -1
- package/dist/internals/helpers/promise.d.cts +1 -12
- package/dist/internals/helpers/promise.d.ts +1 -12
- package/dist/internals/helpers/promise.js +1 -3
- package/dist/internals/helpers/promise.js.map +1 -1
- package/dist/internals/helpers/prototype.cjs.map +1 -1
- package/dist/internals/helpers/prototype.d.cts +1 -12
- package/dist/internals/helpers/prototype.d.ts +1 -12
- package/dist/internals/helpers/prototype.js.map +1 -1
- package/dist/internals/helpers/retry.cjs.map +1 -1
- package/dist/internals/helpers/retry.d.cts +1 -12
- package/dist/internals/helpers/retry.d.ts +1 -12
- package/dist/internals/helpers/retry.js.map +1 -1
- package/dist/internals/helpers/retryable.cjs.map +1 -1
- package/dist/internals/helpers/retryable.d.cts +1 -12
- package/dist/internals/helpers/retryable.d.ts +1 -12
- package/dist/internals/helpers/retryable.js.map +1 -1
- package/dist/internals/helpers/schema.cjs.map +1 -1
- package/dist/internals/helpers/schema.d.cts +1 -12
- package/dist/internals/helpers/schema.d.ts +1 -12
- package/dist/internals/helpers/schema.js.map +1 -1
- package/dist/internals/helpers/stream.cjs.map +1 -1
- package/dist/internals/helpers/stream.d.cts +1 -12
- package/dist/internals/helpers/stream.d.ts +1 -12
- package/dist/internals/helpers/stream.js.map +1 -1
- package/dist/internals/helpers/string.cjs.map +1 -1
- package/dist/internals/helpers/string.d.cts +1 -12
- package/dist/internals/helpers/string.d.ts +1 -12
- package/dist/internals/helpers/string.js.map +1 -1
- package/dist/internals/helpers/weakRef.cjs.map +1 -1
- package/dist/internals/helpers/weakRef.d.cts +1 -12
- package/dist/internals/helpers/weakRef.d.ts +1 -12
- package/dist/internals/helpers/weakRef.js.map +1 -1
- package/dist/internals/serializable.cjs.map +1 -1
- package/dist/internals/serializable.d.cts +1 -12
- package/dist/internals/serializable.d.ts +1 -12
- package/dist/internals/serializable.js.map +1 -1
- package/dist/internals/types.cjs.map +1 -1
- package/dist/internals/types.d.cts +1 -12
- package/dist/internals/types.d.ts +1 -12
- package/dist/internals/types.js.map +1 -1
- package/dist/logger/logger.cjs.map +1 -1
- package/dist/logger/logger.js.map +1 -1
- package/dist/logger/pretty.cjs.map +1 -1
- package/dist/logger/pretty.js.map +1 -1
- package/dist/memory/base.cjs.map +1 -1
- package/dist/memory/base.js.map +1 -1
- package/dist/memory/slidingMemory.cjs.map +1 -1
- package/dist/memory/slidingMemory.d.cts +1 -1
- package/dist/memory/slidingMemory.d.ts +1 -1
- package/dist/memory/slidingMemory.js.map +1 -1
- package/dist/memory/summarizeMemory.cjs.map +1 -1
- package/dist/memory/summarizeMemory.d.cts +2 -2
- package/dist/memory/summarizeMemory.d.ts +2 -2
- package/dist/memory/summarizeMemory.js.map +1 -1
- package/dist/memory/tokenMemory.cjs.map +1 -1
- package/dist/memory/tokenMemory.js.map +1 -1
- package/dist/memory/unconstrainedMemory.cjs.map +1 -1
- package/dist/memory/unconstrainedMemory.js.map +1 -1
- package/dist/parsers/errors.cjs.map +1 -1
- package/dist/parsers/errors.d.cts +1 -12
- package/dist/parsers/errors.d.ts +1 -12
- package/dist/parsers/errors.js.map +1 -1
- package/dist/parsers/field.cjs +2 -2
- package/dist/parsers/field.cjs.map +1 -1
- package/dist/parsers/field.js +2 -2
- package/dist/parsers/field.js.map +1 -1
- package/dist/parsers/linePrefix.cjs +15 -15
- package/dist/parsers/linePrefix.cjs.map +1 -1
- package/dist/parsers/linePrefix.d.cts +2 -13
- package/dist/parsers/linePrefix.d.ts +2 -13
- package/dist/parsers/linePrefix.js +15 -15
- package/dist/parsers/linePrefix.js.map +1 -1
- package/dist/serializer/error.cjs.map +1 -1
- package/dist/serializer/error.d.cts +1 -12
- package/dist/serializer/error.d.ts +1 -12
- package/dist/serializer/error.js.map +1 -1
- package/dist/serializer/serializer.cjs.map +1 -1
- package/dist/serializer/serializer.d.cts +1 -1
- package/dist/serializer/serializer.d.ts +1 -1
- package/dist/serializer/serializer.js.map +1 -1
- package/dist/serializer/utils.cjs +1 -2
- package/dist/serializer/utils.cjs.map +1 -1
- package/dist/serializer/utils.d.cts +1 -1
- package/dist/serializer/utils.d.ts +1 -1
- package/dist/serializer/utils.js +1 -2
- package/dist/serializer/utils.js.map +1 -1
- package/dist/{serializer-Dz4AIM2O.d.cts → serializer-BKn50Vnx.d.cts} +2 -24
- package/dist/{serializer-BswFRdT8.d.ts → serializer-CQxucveV.d.ts} +2 -24
- package/dist/serve/server.cjs +1 -2
- package/dist/serve/server.cjs.map +1 -1
- package/dist/serve/server.d.cts +1 -12
- package/dist/serve/server.d.ts +1 -12
- package/dist/serve/server.js +1 -2
- package/dist/serve/server.js.map +1 -1
- package/dist/template.cjs.map +1 -1
- package/dist/template.d.cts +1 -12
- package/dist/template.d.ts +1 -12
- package/dist/template.js.map +1 -1
- package/dist/tools/arxiv.cjs.map +1 -1
- package/dist/tools/arxiv.d.cts +2 -13
- package/dist/tools/arxiv.d.ts +2 -13
- package/dist/tools/arxiv.js.map +1 -1
- package/dist/tools/base.cjs.map +1 -1
- package/dist/tools/base.d.cts +1 -1
- package/dist/tools/base.d.ts +1 -1
- package/dist/tools/base.js.map +1 -1
- package/dist/tools/calculator.cjs.map +1 -1
- package/dist/tools/calculator.d.cts +2 -13
- package/dist/tools/calculator.d.ts +2 -13
- package/dist/tools/calculator.js.map +1 -1
- package/dist/tools/custom.cjs.map +1 -1
- package/dist/tools/custom.d.cts +3 -14
- package/dist/tools/custom.d.ts +3 -14
- package/dist/tools/custom.js.map +1 -1
- package/dist/tools/database/elasticsearch.cjs.map +1 -1
- package/dist/tools/database/elasticsearch.d.cts +2 -13
- package/dist/tools/database/elasticsearch.d.ts +2 -13
- package/dist/tools/database/elasticsearch.js.map +1 -1
- package/dist/tools/database/metadata.cjs.map +1 -1
- package/dist/tools/database/metadata.d.cts +1 -12
- package/dist/tools/database/metadata.d.ts +1 -12
- package/dist/tools/database/metadata.js.map +1 -1
- package/dist/tools/database/milvus.cjs.map +1 -1
- package/dist/tools/database/milvus.d.cts +2 -13
- package/dist/tools/database/milvus.d.ts +2 -13
- package/dist/tools/database/milvus.js.map +1 -1
- package/dist/tools/database/qdrant.cjs.map +1 -1
- package/dist/tools/database/qdrant.d.cts +2 -13
- package/dist/tools/database/qdrant.d.ts +2 -13
- package/dist/tools/database/qdrant.js.map +1 -1
- package/dist/tools/database/sql.cjs.map +1 -1
- package/dist/tools/database/sql.d.cts +2 -13
- package/dist/tools/database/sql.d.ts +2 -13
- package/dist/tools/database/sql.js.map +1 -1
- package/dist/tools/llm.cjs +3 -3
- package/dist/tools/llm.cjs.map +1 -1
- package/dist/tools/llm.d.cts +3 -14
- package/dist/tools/llm.d.ts +3 -14
- package/dist/tools/llm.js +3 -3
- package/dist/tools/llm.js.map +1 -1
- package/dist/tools/mcp.cjs +2 -1
- package/dist/tools/mcp.cjs.map +1 -1
- package/dist/tools/mcp.d.cts +2 -13
- package/dist/tools/mcp.d.ts +2 -13
- package/dist/tools/mcp.js +2 -1
- package/dist/tools/mcp.js.map +1 -1
- package/dist/tools/openapi.cjs.map +1 -1
- package/dist/tools/openapi.d.cts +1 -1
- package/dist/tools/openapi.d.ts +1 -1
- package/dist/tools/openapi.js.map +1 -1
- package/dist/tools/python/output.cjs.map +1 -1
- package/dist/tools/python/output.d.cts +2 -13
- package/dist/tools/python/output.d.ts +2 -13
- package/dist/tools/python/output.js.map +1 -1
- package/dist/tools/python/python.cjs.map +1 -1
- package/dist/tools/python/python.d.cts +2 -2
- package/dist/tools/python/python.d.ts +2 -2
- package/dist/tools/python/python.js.map +1 -1
- package/dist/tools/python/storage.cjs.map +1 -1
- package/dist/tools/python/storage.d.cts +1 -12
- package/dist/tools/python/storage.d.ts +1 -12
- package/dist/tools/python/storage.js.map +1 -1
- package/dist/tools/search/base.cjs.map +1 -1
- package/dist/tools/search/base.d.cts +2 -13
- package/dist/tools/search/base.d.ts +2 -13
- package/dist/tools/search/base.js.map +1 -1
- package/dist/tools/search/duckDuckGoSearch.cjs +7 -1
- package/dist/tools/search/duckDuckGoSearch.cjs.map +1 -1
- package/dist/tools/search/duckDuckGoSearch.d.cts +2 -13
- package/dist/tools/search/duckDuckGoSearch.d.ts +2 -13
- package/dist/tools/search/duckDuckGoSearch.js +7 -1
- package/dist/tools/search/duckDuckGoSearch.js.map +1 -1
- package/dist/tools/search/googleSearch.cjs.map +1 -1
- package/dist/tools/search/googleSearch.d.cts +1 -1
- package/dist/tools/search/googleSearch.d.ts +1 -1
- package/dist/tools/search/googleSearch.js.map +1 -1
- package/dist/tools/search/searXNGSearch.cjs.map +1 -1
- package/dist/tools/search/searXNGSearch.d.cts +2 -13
- package/dist/tools/search/searXNGSearch.d.ts +2 -13
- package/dist/tools/search/searXNGSearch.js.map +1 -1
- package/dist/tools/search/wikipedia.cjs +11 -11
- package/dist/tools/search/wikipedia.cjs.map +1 -1
- package/dist/tools/search/wikipedia.d.cts +1 -1
- package/dist/tools/search/wikipedia.d.ts +1 -1
- package/dist/tools/search/wikipedia.js +11 -11
- package/dist/tools/search/wikipedia.js.map +1 -1
- package/dist/tools/similarity.cjs.map +1 -1
- package/dist/tools/similarity.d.cts +2 -13
- package/dist/tools/similarity.d.ts +2 -13
- package/dist/tools/similarity.js.map +1 -1
- package/dist/tools/weather/openMeteo.cjs.map +1 -1
- package/dist/tools/weather/openMeteo.d.cts +2 -13
- package/dist/tools/weather/openMeteo.d.ts +2 -13
- package/dist/tools/weather/openMeteo.js.map +1 -1
- package/dist/tools/web/webCrawler.cjs.map +1 -1
- package/dist/tools/web/webCrawler.d.cts +1 -1
- package/dist/tools/web/webCrawler.d.ts +1 -1
- package/dist/tools/web/webCrawler.js.map +1 -1
- package/dist/version.cjs +1 -1
- package/dist/version.cjs.map +1 -1
- package/dist/version.d.cts +1 -12
- package/dist/version.d.ts +1 -12
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/dist/workflows/agent.cjs.map +1 -1
- package/dist/workflows/agent.d.cts +3 -3
- package/dist/workflows/agent.d.ts +3 -3
- package/dist/workflows/agent.js.map +1 -1
- package/dist/workflows/workflow.cjs +3 -3
- package/dist/workflows/workflow.cjs.map +1 -1
- package/dist/workflows/workflow.d.cts +1 -1
- package/dist/workflows/workflow.d.ts +1 -1
- package/dist/workflows/workflow.js +3 -3
- package/dist/workflows/workflow.js.map +1 -1
- package/package.json +37 -82
package/dist/memory/base.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["base.ts"],"names":["MemoryError","FrameworkError","MemoryFatalError","
|
|
1
|
+
{"version":3,"sources":["../../src/memory/base.ts"],"names":["MemoryError","FrameworkError","MemoryFatalError","message","errors","options","isFatal","isRetryable","BaseMemory","Serializable","addMany","messages","start","counter","msg","add","undefined","deleteMany","delete","splice","deleteCount","items","total","length","Math","max","min","deletedItems","slice","isEmpty","asReadOnly","ReadOnlyMemory","Symbol","iterator","source","register","index","reset","createSnapshot","loadSnapshot","state","Object","assign"],"mappings":"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","file":"base.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Message } from \"@/backend/message.js\";\nimport { FrameworkError, FrameworkErrorOptions } from \"@/errors.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\n\nexport class MemoryError extends FrameworkError {}\nexport class MemoryFatalError extends MemoryError {\n constructor(message: string, errors?: Error[], options?: FrameworkErrorOptions) {\n super(message, errors, {\n isFatal: true,\n isRetryable: false,\n ...options,\n });\n }\n}\n\nexport abstract class BaseMemory<TState = unknown> extends Serializable<TState> {\n abstract get messages(): readonly Message[];\n\n abstract add(message: Message, index?: number): Promise<void>;\n\n abstract delete(message: Message): Promise<boolean>;\n abstract reset(): void;\n\n async addMany(messages: Iterable<Message> | AsyncIterable<Message>, start?: number) {\n let counter = 0;\n for await (const msg of messages) {\n await this.add(msg, start === undefined ? undefined : start + counter);\n counter += 1;\n }\n }\n\n async deleteMany(messages: Iterable<Message> | AsyncIterable<Message>) {\n for await (const msg of messages) {\n await this.delete(msg);\n }\n }\n\n async splice(start: number, deleteCount: number, ...items: Message[]) {\n const total = this.messages.length;\n\n start = start < 0 ? Math.max(total + start, 0) : start;\n deleteCount = Math.min(deleteCount, total - start);\n\n const deletedItems = this.messages.slice(start, start + deleteCount);\n await this.deleteMany(deletedItems);\n await this.addMany(items, start);\n\n return deletedItems;\n }\n\n isEmpty() {\n return this.messages.length === 0;\n }\n\n asReadOnly() {\n return new ReadOnlyMemory(this);\n }\n\n [Symbol.iterator]() {\n return this.messages[Symbol.iterator]();\n }\n\n abstract loadSnapshot(state: TState): void;\n abstract createSnapshot(): TState;\n}\n\nexport class ReadOnlyMemory<T extends BaseMemory = BaseMemory> extends BaseMemory<{ source: T }> {\n constructor(public readonly source: T) {\n super();\n }\n\n static {\n this.register();\n }\n\n // eslint-disable-next-line unused-imports/no-unused-vars\n async add(message: Message, index?: number) {}\n\n // eslint-disable-next-line unused-imports/no-unused-vars\n async delete(message: Message) {\n return false;\n }\n\n get messages(): readonly Message[] {\n return this.source.messages;\n }\n\n reset(): void {}\n\n createSnapshot() {\n return { source: this.source };\n }\n\n loadSnapshot(state: { source: T }) {\n Object.assign(this, state);\n }\n}\n"]}
|
package/dist/memory/base.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["base.ts"],"names":["MemoryError","FrameworkError","MemoryFatalError","
|
|
1
|
+
{"version":3,"sources":["../../src/memory/base.ts"],"names":["MemoryError","FrameworkError","MemoryFatalError","message","errors","options","isFatal","isRetryable","BaseMemory","Serializable","addMany","messages","start","counter","msg","add","undefined","deleteMany","delete","splice","deleteCount","items","total","length","Math","max","min","deletedItems","slice","isEmpty","asReadOnly","ReadOnlyMemory","Symbol","iterator","source","register","index","reset","createSnapshot","loadSnapshot","state","Object","assign"],"mappings":"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","file":"base.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Message } from \"@/backend/message.js\";\nimport { FrameworkError, FrameworkErrorOptions } from \"@/errors.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\n\nexport class MemoryError extends FrameworkError {}\nexport class MemoryFatalError extends MemoryError {\n constructor(message: string, errors?: Error[], options?: FrameworkErrorOptions) {\n super(message, errors, {\n isFatal: true,\n isRetryable: false,\n ...options,\n });\n }\n}\n\nexport abstract class BaseMemory<TState = unknown> extends Serializable<TState> {\n abstract get messages(): readonly Message[];\n\n abstract add(message: Message, index?: number): Promise<void>;\n\n abstract delete(message: Message): Promise<boolean>;\n abstract reset(): void;\n\n async addMany(messages: Iterable<Message> | AsyncIterable<Message>, start?: number) {\n let counter = 0;\n for await (const msg of messages) {\n await this.add(msg, start === undefined ? undefined : start + counter);\n counter += 1;\n }\n }\n\n async deleteMany(messages: Iterable<Message> | AsyncIterable<Message>) {\n for await (const msg of messages) {\n await this.delete(msg);\n }\n }\n\n async splice(start: number, deleteCount: number, ...items: Message[]) {\n const total = this.messages.length;\n\n start = start < 0 ? Math.max(total + start, 0) : start;\n deleteCount = Math.min(deleteCount, total - start);\n\n const deletedItems = this.messages.slice(start, start + deleteCount);\n await this.deleteMany(deletedItems);\n await this.addMany(items, start);\n\n return deletedItems;\n }\n\n isEmpty() {\n return this.messages.length === 0;\n }\n\n asReadOnly() {\n return new ReadOnlyMemory(this);\n }\n\n [Symbol.iterator]() {\n return this.messages[Symbol.iterator]();\n }\n\n abstract loadSnapshot(state: TState): void;\n abstract createSnapshot(): TState;\n}\n\nexport class ReadOnlyMemory<T extends BaseMemory = BaseMemory> extends BaseMemory<{ source: T }> {\n constructor(public readonly source: T) {\n super();\n }\n\n static {\n this.register();\n }\n\n // eslint-disable-next-line unused-imports/no-unused-vars\n async add(message: Message, index?: number) {}\n\n // eslint-disable-next-line unused-imports/no-unused-vars\n async delete(message: Message) {\n return false;\n }\n\n get messages(): readonly Message[] {\n return this.source.messages;\n }\n\n reset(): void {}\n\n createSnapshot() {\n return { source: this.source };\n }\n\n loadSnapshot(state: { source: T }) {\n Object.assign(this, state);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["slidingMemory.ts"],"names":["SlidingMemory","BaseMemory","messages","config","
|
|
1
|
+
{"version":3,"sources":["../../src/memory/slidingMemory.ts"],"names":["SlidingMemory","BaseMemory","messages","config","handlers","removalSelector","aliases","register","add","message","index","size","isOverflow","length","pipe","castArray","filter","isTruthy","forEach","indexOf","MemoryFatalError","context","splice","ensureRange","min","max","delete","removeFromArray","reset","createSnapshot","shallowCopy","loadSnapshot","state","Object","assign"],"mappings":";;;;;;;;;;AAsBO,MAAMA,sBAAsBC,mBAAAA,CAAAA;EAtBnC;;;AAuBkBC,EAAAA,QAAAA,GAAsB,EAAA;AACtBC,EAAAA,MAAAA;AAEhB,EAAA,WAAA,CAAYA,MAAAA,EAAkC;AAC5C,IAAA,KAAA,EAAK;AACL,IAAA,IAAA,CAAKA,MAAAA,GAAS;MACZ,GAAGA,MAAAA;MACHC,QAAAA,EAAU;AACRC,QAAAA,eAAAA,EACEF,MAAAA,CAAOC,QAAAA,EAAUC,eAAAA,KAAoB,CAACH,QAAAA,KAAwB;AAACA,UAAAA,QAAAA,CAAS,CAAA;;AAC5E;AACF,KAAA;AACF;EAEA;AACE,IAAA,MAAMI,OAAAA,GAAU;AAAC,MAAA;;AACjB,IAAA,IAAA,CAAKC,SAASD,OAAAA,CAAAA;AAChB;EAEA,MAAME,GAAAA,CAAIC,SAAkBC,KAAAA,EAAgB;AAC1C,IAAA,MAAM,EAAEC,IAAAA,EAAMP,QAAAA,EAAQ,GAAK,IAAA,CAAKD,MAAAA;AAChC,IAAA,MAAMS,6BAAa,MAAA,CAAA,MAAM,IAAA,CAAKV,QAAAA,CAASW,MAAAA,GAAS,IAAIF,IAAAA,EAAjC,YAAA,CAAA;AAEnB,IAAA,IAAIC,YAAAA,EAAc;AAChBE,MAAAA,WAAAA,CACE,IAAA,CAAKZ,QAAAA,EACLE,QAAAA,CAASC,eAAAA,EACTU,mBAAAA,EACAC,cAAOC,eAAAA,CAAAA,EACPC,cAAAA,CAAQ,CAACT,QAAAA,KAAAA;AACP,QAAA,MAAMC,MAAAA,GAAQ,IAAA,CAAKR,QAAAA,CAASiB,OAAAA,CAAQV,QAAAA,CAAAA;AACpC,QAAA,IAAIC,WAAU,EAAA,EAAI;AAChB,UAAA,MAAM,IAAIU,yBAAAA,CAAiB,CAAA,mCAAA,CAAA,EAAuC,EAAA,EAAI;YACpEC,OAAAA,EAAS;cAAEZ,OAAAA,EAAAA,QAAAA;AAASP,cAAAA,QAAAA,EAAU,IAAA,CAAKA;AAAS;WAC9C,CAAA;AACF;AACA,QAAA,IAAA,CAAKA,QAAAA,CAASoB,MAAAA,CAAOZ,MAAAA,EAAO,CAAA,CAAA;AAC9B,OAAA,CAAA,CAAA;AAGF,MAAA,IAAIE,YAAAA,EAAc;AAChB,QAAA,MAAM,IAAIQ,0BACR,CAAA,uFAAA,CAAyF,CAAA;AAE7F;AACF;AAEAV,IAAAA,KAAAA,GAAQa,sBAAAA,CAAYb,KAAAA,IAAS,IAAA,CAAKR,QAAAA,CAASW,MAAAA,EAAQ;MAAEW,GAAAA,EAAK,CAAA;AAAGC,MAAAA,GAAAA,EAAK,KAAKvB,QAAAA,CAASW;KAAO,CAAA;AACvF,IAAA,IAAA,CAAKX,QAAAA,CAASoB,MAAAA,CAAOZ,KAAAA,EAAO,CAAA,EAAGD,OAAAA,CAAAA;AACjC;AAEA,EAAA,MAAMiB,OAAOjB,OAAAA,EAAkB;AAC7B,IAAA,OAAOkB,yBAAAA,CAAgB,IAAA,CAAKzB,QAAAA,EAAUO,OAAAA,CAAAA;AACxC;EAEAmB,KAAAA,GAAQ;AACN,IAAA,IAAA,CAAK1B,SAASW,MAAAA,GAAS,CAAA;AACzB;EAEAgB,cAAAA,GAAiB;AACf,IAAA,OAAO;MAAE1B,MAAAA,EAAQ2B,qBAAAA,CAAY,KAAK3B,MAAM,CAAA;MAAGD,QAAAA,EAAU4B,qBAAAA,CAAY,KAAK5B,QAAQ;AAAE,KAAA;AAClF;AAEA6B,EAAAA,YAAAA,CAAaC,KAAAA,EAA+C;AAC1DC,IAAAA,MAAAA,CAAOC,MAAAA,CAAO,MAAMF,KAAAA,CAAAA;AACtB;AACF","file":"slidingMemory.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Message } from \"@/backend/message.js\";\nimport { BaseMemory, MemoryFatalError } from \"@/memory/base.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { filter, forEach, isTruthy, pipe } from \"remeda\";\nimport { castArray, removeFromArray } from \"@/internals/helpers/array.js\";\nimport { RequiredNested } from \"@/internals/types.js\";\nimport { ensureRange } from \"@/internals/helpers/number.js\";\n\nexport interface Handlers {\n removalSelector: (messages: Message[]) => Message | Message[];\n}\n\nexport interface SlidingWindowMemoryInput {\n size: number;\n handlers?: Partial<Handlers>;\n}\n\nexport class SlidingMemory extends BaseMemory {\n public readonly messages: Message[] = [];\n public readonly config: RequiredNested<SlidingWindowMemoryInput>;\n\n constructor(config: SlidingWindowMemoryInput) {\n super();\n this.config = {\n ...config,\n handlers: {\n removalSelector:\n config.handlers?.removalSelector ?? ((messages: Message[]) => [messages[0]]),\n },\n };\n }\n\n static {\n const aliases = [\"SlidingWindowMemory\"];\n this.register(aliases);\n }\n\n async add(message: Message, index?: number) {\n const { size, handlers } = this.config;\n const isOverflow = () => this.messages.length + 1 > size;\n\n if (isOverflow()) {\n pipe(\n this.messages,\n handlers.removalSelector,\n castArray,\n filter(isTruthy),\n forEach((message) => {\n const index = this.messages.indexOf(message);\n if (index === -1) {\n throw new MemoryFatalError(`Cannot delete non existing message.`, [], {\n context: { message, messages: this.messages },\n });\n }\n this.messages.splice(index, 1);\n }),\n );\n\n if (isOverflow()) {\n throw new MemoryFatalError(\n `Custom memory removalSelector did not return any message. Memory overflow has occurred.`,\n );\n }\n }\n\n index = ensureRange(index ?? this.messages.length, { min: 0, max: this.messages.length });\n this.messages.splice(index, 0, message);\n }\n\n async delete(message: Message) {\n return removeFromArray(this.messages, message);\n }\n\n reset() {\n this.messages.length = 0;\n }\n\n createSnapshot() {\n return { config: shallowCopy(this.config), messages: shallowCopy(this.messages) };\n }\n\n loadSnapshot(state: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, state);\n }\n}\n"]}
|
|
@@ -2,9 +2,9 @@ import { Message, MessageContentPart } from '../backend/message.cjs';
|
|
|
2
2
|
import { BaseMemory } from './base.cjs';
|
|
3
3
|
import { RequiredNested } from '../internals/types.cjs';
|
|
4
4
|
import '../internals/serializable.cjs';
|
|
5
|
+
import '../internals/helpers/guards.cjs';
|
|
5
6
|
import 'ai';
|
|
6
7
|
import '../errors.cjs';
|
|
7
|
-
import '../internals/helpers/guards.cjs';
|
|
8
8
|
|
|
9
9
|
interface Handlers {
|
|
10
10
|
removalSelector: (messages: Message[]) => Message | Message[];
|
|
@@ -2,9 +2,9 @@ import { Message, MessageContentPart } from '../backend/message.js';
|
|
|
2
2
|
import { BaseMemory } from './base.js';
|
|
3
3
|
import { RequiredNested } from '../internals/types.js';
|
|
4
4
|
import '../internals/serializable.js';
|
|
5
|
+
import '../internals/helpers/guards.js';
|
|
5
6
|
import 'ai';
|
|
6
7
|
import '../errors.js';
|
|
7
|
-
import '../internals/helpers/guards.js';
|
|
8
8
|
|
|
9
9
|
interface Handlers {
|
|
10
10
|
removalSelector: (messages: Message[]) => Message | Message[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["slidingMemory.ts"],"names":["SlidingMemory","BaseMemory","messages","config","
|
|
1
|
+
{"version":3,"sources":["../../src/memory/slidingMemory.ts"],"names":["SlidingMemory","BaseMemory","messages","config","handlers","removalSelector","aliases","register","add","message","index","size","isOverflow","length","pipe","castArray","filter","isTruthy","forEach","indexOf","MemoryFatalError","context","splice","ensureRange","min","max","delete","removeFromArray","reset","createSnapshot","shallowCopy","loadSnapshot","state","Object","assign"],"mappings":";;;;;;;;AAsBO,MAAMA,sBAAsBC,UAAAA,CAAAA;EAtBnC;;;AAuBkBC,EAAAA,QAAAA,GAAsB,EAAA;AACtBC,EAAAA,MAAAA;AAEhB,EAAA,WAAA,CAAYA,MAAAA,EAAkC;AAC5C,IAAA,KAAA,EAAK;AACL,IAAA,IAAA,CAAKA,MAAAA,GAAS;MACZ,GAAGA,MAAAA;MACHC,QAAAA,EAAU;AACRC,QAAAA,eAAAA,EACEF,MAAAA,CAAOC,QAAAA,EAAUC,eAAAA,KAAoB,CAACH,QAAAA,KAAwB;AAACA,UAAAA,QAAAA,CAAS,CAAA;;AAC5E;AACF,KAAA;AACF;EAEA;AACE,IAAA,MAAMI,OAAAA,GAAU;AAAC,MAAA;;AACjB,IAAA,IAAA,CAAKC,SAASD,OAAAA,CAAAA;AAChB;EAEA,MAAME,GAAAA,CAAIC,SAAkBC,KAAAA,EAAgB;AAC1C,IAAA,MAAM,EAAEC,IAAAA,EAAMP,QAAAA,EAAQ,GAAK,IAAA,CAAKD,MAAAA;AAChC,IAAA,MAAMS,6BAAa,MAAA,CAAA,MAAM,IAAA,CAAKV,QAAAA,CAASW,MAAAA,GAAS,IAAIF,IAAAA,EAAjC,YAAA,CAAA;AAEnB,IAAA,IAAIC,YAAAA,EAAc;AAChBE,MAAAA,IAAAA,CACE,IAAA,CAAKZ,QAAAA,EACLE,QAAAA,CAASC,eAAAA,EACTU,SAAAA,EACAC,OAAOC,QAAAA,CAAAA,EACPC,OAAAA,CAAQ,CAACT,QAAAA,KAAAA;AACP,QAAA,MAAMC,MAAAA,GAAQ,IAAA,CAAKR,QAAAA,CAASiB,OAAAA,CAAQV,QAAAA,CAAAA;AACpC,QAAA,IAAIC,WAAU,EAAA,EAAI;AAChB,UAAA,MAAM,IAAIU,gBAAAA,CAAiB,CAAA,mCAAA,CAAA,EAAuC,EAAA,EAAI;YACpEC,OAAAA,EAAS;cAAEZ,OAAAA,EAAAA,QAAAA;AAASP,cAAAA,QAAAA,EAAU,IAAA,CAAKA;AAAS;WAC9C,CAAA;AACF;AACA,QAAA,IAAA,CAAKA,QAAAA,CAASoB,MAAAA,CAAOZ,MAAAA,EAAO,CAAA,CAAA;AAC9B,OAAA,CAAA,CAAA;AAGF,MAAA,IAAIE,YAAAA,EAAc;AAChB,QAAA,MAAM,IAAIQ,iBACR,CAAA,uFAAA,CAAyF,CAAA;AAE7F;AACF;AAEAV,IAAAA,KAAAA,GAAQa,WAAAA,CAAYb,KAAAA,IAAS,IAAA,CAAKR,QAAAA,CAASW,MAAAA,EAAQ;MAAEW,GAAAA,EAAK,CAAA;AAAGC,MAAAA,GAAAA,EAAK,KAAKvB,QAAAA,CAASW;KAAO,CAAA;AACvF,IAAA,IAAA,CAAKX,QAAAA,CAASoB,MAAAA,CAAOZ,KAAAA,EAAO,CAAA,EAAGD,OAAAA,CAAAA;AACjC;AAEA,EAAA,MAAMiB,OAAOjB,OAAAA,EAAkB;AAC7B,IAAA,OAAOkB,eAAAA,CAAgB,IAAA,CAAKzB,QAAAA,EAAUO,OAAAA,CAAAA;AACxC;EAEAmB,KAAAA,GAAQ;AACN,IAAA,IAAA,CAAK1B,SAASW,MAAAA,GAAS,CAAA;AACzB;EAEAgB,cAAAA,GAAiB;AACf,IAAA,OAAO;MAAE1B,MAAAA,EAAQ2B,WAAAA,CAAY,KAAK3B,MAAM,CAAA;MAAGD,QAAAA,EAAU4B,WAAAA,CAAY,KAAK5B,QAAQ;AAAE,KAAA;AAClF;AAEA6B,EAAAA,YAAAA,CAAaC,KAAAA,EAA+C;AAC1DC,IAAAA,MAAAA,CAAOC,MAAAA,CAAO,MAAMF,KAAAA,CAAAA;AACtB;AACF","file":"slidingMemory.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Message } from \"@/backend/message.js\";\nimport { BaseMemory, MemoryFatalError } from \"@/memory/base.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { filter, forEach, isTruthy, pipe } from \"remeda\";\nimport { castArray, removeFromArray } from \"@/internals/helpers/array.js\";\nimport { RequiredNested } from \"@/internals/types.js\";\nimport { ensureRange } from \"@/internals/helpers/number.js\";\n\nexport interface Handlers {\n removalSelector: (messages: Message[]) => Message | Message[];\n}\n\nexport interface SlidingWindowMemoryInput {\n size: number;\n handlers?: Partial<Handlers>;\n}\n\nexport class SlidingMemory extends BaseMemory {\n public readonly messages: Message[] = [];\n public readonly config: RequiredNested<SlidingWindowMemoryInput>;\n\n constructor(config: SlidingWindowMemoryInput) {\n super();\n this.config = {\n ...config,\n handlers: {\n removalSelector:\n config.handlers?.removalSelector ?? ((messages: Message[]) => [messages[0]]),\n },\n };\n }\n\n static {\n const aliases = [\"SlidingWindowMemory\"];\n this.register(aliases);\n }\n\n async add(message: Message, index?: number) {\n const { size, handlers } = this.config;\n const isOverflow = () => this.messages.length + 1 > size;\n\n if (isOverflow()) {\n pipe(\n this.messages,\n handlers.removalSelector,\n castArray,\n filter(isTruthy),\n forEach((message) => {\n const index = this.messages.indexOf(message);\n if (index === -1) {\n throw new MemoryFatalError(`Cannot delete non existing message.`, [], {\n context: { message, messages: this.messages },\n });\n }\n this.messages.splice(index, 1);\n }),\n );\n\n if (isOverflow()) {\n throw new MemoryFatalError(\n `Custom memory removalSelector did not return any message. Memory overflow has occurred.`,\n );\n }\n }\n\n index = ensureRange(index ?? this.messages.length, { min: 0, max: this.messages.length });\n this.messages.splice(index, 0, message);\n }\n\n async delete(message: Message) {\n return removeFromArray(this.messages, message);\n }\n\n reset() {\n this.messages.length = 0;\n }\n\n createSnapshot() {\n return { config: shallowCopy(this.config), messages: shallowCopy(this.messages) };\n }\n\n loadSnapshot(state: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, state);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["summarizeMemory.ts"],"names":["SummarizeMemoryTemplate","PromptTemplate","schema","z","object","summary","string","template","SummarizeMemory","BaseMemory","llm","
|
|
1
|
+
{"version":3,"sources":["../../src/memory/summarizeMemory.ts"],"names":["SummarizeMemoryTemplate","PromptTemplate","schema","z","object","summary","string","template","SummarizeMemory","BaseMemory","llm","config","register","messages","currentSummary","AssistantMessage","delete","message","add","_index","response","create","SystemMessage","render","role","text","getTextContent","reset","createSnapshot","shallowCopy","loadSnapshot","state","Object","assign"],"mappings":";;;;;;;;;;AAiBO,MAAMA,uBAAAA,GAA0B,IAAIC,2BAAAA,CAAe;AACxDC,EAAAA,MAAAA,EAAQC,MAAEC,MAAAA,CAAO;AACfC,IAAAA,OAAAA,EAASF,MAAEG,MAAAA;GACb,CAAA;EACAC,QAAAA,EAAU,CAAA;;;;AAIZ,CAAA;AAEO,MAAMC,wBAAwBC,mBAAAA,CAAAA;EA3BrC;;;EA4BYJ,OAAAA,GAAU,EAAA;AACVE,EAAAA,QAAAA;AACAG,EAAAA,GAAAA;AAEV,EAAA,WAAA,CAAYC,MAAAA,EAA8B;AACxC,IAAA,KAAA,EAAK;AACL,IAAA,IAAA,CAAKJ,QAAAA,GAAWI,OAAOJ,QAAAA,IAAYP,uBAAAA;AACnC,IAAA,IAAA,CAAKU,MAAMC,MAAAA,CAAOD,GAAAA;AACpB;EAEA;AACE,IAAA,IAAA,CAAKE,QAAAA,EAAQ;AACf;AAEA,EAAA,IAAIC,QAAAA,GAAsB;AACxB,IAAA,MAAMC,iBAAiB,IAAA,CAAKT,OAAAA;AAC5B,IAAA,IAAI,CAACS,cAAAA,EAAgB;AACnB,MAAA,OAAO,EAAA;AACT;AAEA,IAAA,OAAO;AAAC,MAAA,IAAIC,6BAAiBD,cAAAA;;AAC/B;;AAGA,EAAA,MAAME,OAAOC,OAAAA,EAAkB;AAC7B,IAAA,OAAO,KAAA;AACT;EAEA,MAAMC,GAAAA,CAAID,SAAkBE,MAAAA,EAAiB;AAC3C,IAAA,MAAMC,QAAAA,GAAW,MAAM,IAAA,CAAKV,GAAAA,CAAIW,MAAAA,CAAO;MACrCR,QAAAA,EAAU;QACR,IAAIS,yBAAAA,CACF,IAAA,CAAKf,QAAAA,CAASgB,MAAAA,CAAO;AACnBlB,UAAAA,OAAAA,EAAS,IAAA,CAAKA;AAChB,SAAA,CAAA,CAAA;AAEF,QAAA,IAAIU,4BAAAA,CAAiB,CAAA;EAC3BE,OAAAA,CAAQO,IAAI,CAAA,EAAA,EAAKP,OAAAA,CAAQQ,IAAI;;;AAG9B,CAAA;;KAEG,CAAA;AACA,IAAA,IAAA,CAAKpB,OAAAA,GAAUe,SAASM,cAAAA,EAAc;AACxC;EAEAC,KAAAA,GAAQ;AACN,IAAA,IAAA,CAAKtB,OAAAA,GAAU,EAAA;AACjB;EAEAuB,cAAAA,GAAiB;AACf,IAAA,OAAO;AACLvB,MAAAA,OAAAA,EAAS,IAAA,CAAKA,OAAAA;AACdE,MAAAA,QAAAA,EAAU,IAAA,CAAKA,QAAAA;AACfG,MAAAA,GAAAA,EAAK,IAAA,CAAKA,GAAAA;MACVG,QAAAA,EAAUgB,qBAAAA,CAAY,KAAKhB,QAAQ;AACrC,KAAA;AACF;AAEAiB,EAAAA,YAAAA,CAAaC,KAAAA,EAA+C;AAC1DC,IAAAA,MAAAA,CAAOC,MAAAA,CAAO,MAAMF,KAAAA,CAAAA;AACtB;AACF","file":"summarizeMemory.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AssistantMessage, Message, SystemMessage } from \"@/backend/message.js\";\nimport { BaseMemory } from \"@/memory/base.js\";\nimport { PromptTemplate } from \"@/template.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { z } from \"zod\";\nimport { ChatModel } from \"@/backend/chat.js\";\n\nexport interface SummarizeMemoryInput {\n llm: ChatModel;\n template?: typeof SummarizeMemoryTemplate;\n}\n\nexport const SummarizeMemoryTemplate = new PromptTemplate({\n schema: z.object({\n summary: z.string(),\n }),\n template: `Progressively summarize the lines of conversation provided, adding onto the previous summary returning a new summary.\n\nCurrent summary:\n{{summary}}`,\n});\n\nexport class SummarizeMemory extends BaseMemory {\n protected summary = \"\";\n protected template;\n protected llm;\n\n constructor(config: SummarizeMemoryInput) {\n super();\n this.template = config.template ?? SummarizeMemoryTemplate;\n this.llm = config.llm;\n }\n\n static {\n this.register();\n }\n\n get messages(): Message[] {\n const currentSummary = this.summary;\n if (!currentSummary) {\n return [];\n }\n\n return [new AssistantMessage(currentSummary)];\n }\n\n // eslint-disable-next-line unused-imports/no-unused-vars\n async delete(message: Message) {\n return false;\n }\n\n async add(message: Message, _index?: number) {\n const response = await this.llm.create({\n messages: [\n new SystemMessage(\n this.template.render({\n summary: this.summary,\n }),\n ),\n new AssistantMessage(`New lines of conversation:\n${message.role}: ${message.text}\n\nNew summary:\n`),\n ],\n });\n this.summary = response.getTextContent();\n }\n\n reset() {\n this.summary = \"\";\n }\n\n createSnapshot() {\n return {\n summary: this.summary,\n template: this.template,\n llm: this.llm,\n messages: shallowCopy(this.messages),\n };\n }\n\n loadSnapshot(state: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, state);\n }\n}\n"]}
|
|
@@ -2,7 +2,7 @@ import { Message, MessageContentPart } from '../backend/message.cjs';
|
|
|
2
2
|
import { BaseMemory } from './base.cjs';
|
|
3
3
|
import { PromptTemplate } from '../template.cjs';
|
|
4
4
|
import { z } from 'zod';
|
|
5
|
-
import { m as ChatModel } from '../chat-
|
|
5
|
+
import { m as ChatModel } from '../chat-CR4yfOR9.cjs';
|
|
6
6
|
import '../internals/serializable.cjs';
|
|
7
7
|
import '../internals/types.cjs';
|
|
8
8
|
import '../internals/helpers/guards.cjs';
|
|
@@ -10,7 +10,7 @@ import 'ai';
|
|
|
10
10
|
import '../errors.cjs';
|
|
11
11
|
import 'ajv';
|
|
12
12
|
import '../context.cjs';
|
|
13
|
-
import '../emitter-
|
|
13
|
+
import '../emitter-DWEsd-ud.cjs';
|
|
14
14
|
import '../internals/helpers/promise.cjs';
|
|
15
15
|
import 'promise-based-task';
|
|
16
16
|
import '../cache/base.cjs';
|
|
@@ -2,7 +2,7 @@ import { Message, MessageContentPart } from '../backend/message.js';
|
|
|
2
2
|
import { BaseMemory } from './base.js';
|
|
3
3
|
import { PromptTemplate } from '../template.js';
|
|
4
4
|
import { z } from 'zod';
|
|
5
|
-
import { m as ChatModel } from '../chat-
|
|
5
|
+
import { m as ChatModel } from '../chat-W9j8T6UU.js';
|
|
6
6
|
import '../internals/serializable.js';
|
|
7
7
|
import '../internals/types.js';
|
|
8
8
|
import '../internals/helpers/guards.js';
|
|
@@ -10,7 +10,7 @@ import 'ai';
|
|
|
10
10
|
import '../errors.js';
|
|
11
11
|
import 'ajv';
|
|
12
12
|
import '../context.js';
|
|
13
|
-
import '../emitter-
|
|
13
|
+
import '../emitter-C9nwGLt6.js';
|
|
14
14
|
import '../internals/helpers/promise.js';
|
|
15
15
|
import 'promise-based-task';
|
|
16
16
|
import '../cache/base.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["summarizeMemory.ts"],"names":["SummarizeMemoryTemplate","PromptTemplate","schema","z","object","summary","string","template","SummarizeMemory","BaseMemory","llm","
|
|
1
|
+
{"version":3,"sources":["../../src/memory/summarizeMemory.ts"],"names":["SummarizeMemoryTemplate","PromptTemplate","schema","z","object","summary","string","template","SummarizeMemory","BaseMemory","llm","config","register","messages","currentSummary","AssistantMessage","delete","message","add","_index","response","create","SystemMessage","render","role","text","getTextContent","reset","createSnapshot","shallowCopy","loadSnapshot","state","Object","assign"],"mappings":";;;;;;;;AAiBO,MAAMA,uBAAAA,GAA0B,IAAIC,cAAAA,CAAe;AACxDC,EAAAA,MAAAA,EAAQC,EAAEC,MAAAA,CAAO;AACfC,IAAAA,OAAAA,EAASF,EAAEG,MAAAA;GACb,CAAA;EACAC,QAAAA,EAAU,CAAA;;;;AAIZ,CAAA;AAEO,MAAMC,wBAAwBC,UAAAA,CAAAA;EA3BrC;;;EA4BYJ,OAAAA,GAAU,EAAA;AACVE,EAAAA,QAAAA;AACAG,EAAAA,GAAAA;AAEV,EAAA,WAAA,CAAYC,MAAAA,EAA8B;AACxC,IAAA,KAAA,EAAK;AACL,IAAA,IAAA,CAAKJ,QAAAA,GAAWI,OAAOJ,QAAAA,IAAYP,uBAAAA;AACnC,IAAA,IAAA,CAAKU,MAAMC,MAAAA,CAAOD,GAAAA;AACpB;EAEA;AACE,IAAA,IAAA,CAAKE,QAAAA,EAAQ;AACf;AAEA,EAAA,IAAIC,QAAAA,GAAsB;AACxB,IAAA,MAAMC,iBAAiB,IAAA,CAAKT,OAAAA;AAC5B,IAAA,IAAI,CAACS,cAAAA,EAAgB;AACnB,MAAA,OAAO,EAAA;AACT;AAEA,IAAA,OAAO;AAAC,MAAA,IAAIC,iBAAiBD,cAAAA;;AAC/B;;AAGA,EAAA,MAAME,OAAOC,OAAAA,EAAkB;AAC7B,IAAA,OAAO,KAAA;AACT;EAEA,MAAMC,GAAAA,CAAID,SAAkBE,MAAAA,EAAiB;AAC3C,IAAA,MAAMC,QAAAA,GAAW,MAAM,IAAA,CAAKV,GAAAA,CAAIW,MAAAA,CAAO;MACrCR,QAAAA,EAAU;QACR,IAAIS,aAAAA,CACF,IAAA,CAAKf,QAAAA,CAASgB,MAAAA,CAAO;AACnBlB,UAAAA,OAAAA,EAAS,IAAA,CAAKA;AAChB,SAAA,CAAA,CAAA;AAEF,QAAA,IAAIU,gBAAAA,CAAiB,CAAA;EAC3BE,OAAAA,CAAQO,IAAI,CAAA,EAAA,EAAKP,OAAAA,CAAQQ,IAAI;;;AAG9B,CAAA;;KAEG,CAAA;AACA,IAAA,IAAA,CAAKpB,OAAAA,GAAUe,SAASM,cAAAA,EAAc;AACxC;EAEAC,KAAAA,GAAQ;AACN,IAAA,IAAA,CAAKtB,OAAAA,GAAU,EAAA;AACjB;EAEAuB,cAAAA,GAAiB;AACf,IAAA,OAAO;AACLvB,MAAAA,OAAAA,EAAS,IAAA,CAAKA,OAAAA;AACdE,MAAAA,QAAAA,EAAU,IAAA,CAAKA,QAAAA;AACfG,MAAAA,GAAAA,EAAK,IAAA,CAAKA,GAAAA;MACVG,QAAAA,EAAUgB,WAAAA,CAAY,KAAKhB,QAAQ;AACrC,KAAA;AACF;AAEAiB,EAAAA,YAAAA,CAAaC,KAAAA,EAA+C;AAC1DC,IAAAA,MAAAA,CAAOC,MAAAA,CAAO,MAAMF,KAAAA,CAAAA;AACtB;AACF","file":"summarizeMemory.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AssistantMessage, Message, SystemMessage } from \"@/backend/message.js\";\nimport { BaseMemory } from \"@/memory/base.js\";\nimport { PromptTemplate } from \"@/template.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { z } from \"zod\";\nimport { ChatModel } from \"@/backend/chat.js\";\n\nexport interface SummarizeMemoryInput {\n llm: ChatModel;\n template?: typeof SummarizeMemoryTemplate;\n}\n\nexport const SummarizeMemoryTemplate = new PromptTemplate({\n schema: z.object({\n summary: z.string(),\n }),\n template: `Progressively summarize the lines of conversation provided, adding onto the previous summary returning a new summary.\n\nCurrent summary:\n{{summary}}`,\n});\n\nexport class SummarizeMemory extends BaseMemory {\n protected summary = \"\";\n protected template;\n protected llm;\n\n constructor(config: SummarizeMemoryInput) {\n super();\n this.template = config.template ?? SummarizeMemoryTemplate;\n this.llm = config.llm;\n }\n\n static {\n this.register();\n }\n\n get messages(): Message[] {\n const currentSummary = this.summary;\n if (!currentSummary) {\n return [];\n }\n\n return [new AssistantMessage(currentSummary)];\n }\n\n // eslint-disable-next-line unused-imports/no-unused-vars\n async delete(message: Message) {\n return false;\n }\n\n async add(message: Message, _index?: number) {\n const response = await this.llm.create({\n messages: [\n new SystemMessage(\n this.template.render({\n summary: this.summary,\n }),\n ),\n new AssistantMessage(`New lines of conversation:\n${message.role}: ${message.text}\n\nNew summary:\n`),\n ],\n });\n this.summary = response.getTextContent();\n }\n\n reset() {\n this.summary = \"\";\n }\n\n createSnapshot() {\n return {\n summary: this.summary,\n template: this.template,\n llm: this.llm,\n messages: shallowCopy(this.messages),\n };\n }\n\n loadSnapshot(state: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, state);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["tokenMemory.ts"],"names":["simpleEstimate","msg","Math","ceil","text","length","simpleTokenize","msgs","sum","map","TokenMemory","BaseMemory","messages","threshold","syncThreshold","maxTokens","tokensByMessage","WeakMap","handlers","constructor","config","capacityThreshold","estimate","role","tokenize","removalSelector","R","clamp","min","max","TypeError","register","tokensUsed","get","tokensCount","isDirty","some","dirty","add","message","index","meta","has","MemoryFatalError","messageToDelete","exists","delete","set","ensureRange","splice","sync","removeFromArray","Promise","all","cache","addMany","reset","stats","messagesCount","createSnapshot","shallowCopy","filter","_","value","undefined","loadSnapshot","state","Object","assign"],"mappings":"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","file":"tokenMemory.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseMemory, MemoryFatalError } from \"@/memory/base.js\";\nimport * as R from \"remeda\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { removeFromArray } from \"@/internals/helpers/array.js\";\nimport { map, sum } from \"remeda\";\nimport { ensureRange } from \"@/internals/helpers/number.js\";\nimport { Message } from \"@/backend/message.js\";\n\nexport interface Handlers {\n estimate: (messages: Message) => number;\n tokenize: (messages: Message[]) => Promise<number>;\n removalSelector: (messages: Message[]) => Message;\n}\n\nconst simpleEstimate: Handlers[\"estimate\"] = (msg: Message) => Math.ceil(msg.text.length / 4);\nconst simpleTokenize: Handlers[\"tokenize\"] = async (msgs: Message[]) =>\n sum(map(msgs, simpleEstimate)); // TODO\n\nexport interface TokenMemoryInput {\n maxTokens?: number;\n syncThreshold?: number;\n capacityThreshold?: number;\n handlers?: Partial<Handlers>;\n}\n\ninterface TokenByMessage {\n tokensCount: number;\n dirty: boolean;\n}\n\nexport class TokenMemory extends BaseMemory {\n public readonly messages: Message[] = [];\n\n protected threshold;\n protected syncThreshold;\n protected maxTokens: number | null = null;\n protected tokensByMessage = new WeakMap<Message, TokenByMessage>();\n public readonly handlers: Handlers;\n\n constructor(config: TokenMemoryInput = {}) {\n super();\n this.maxTokens = config.maxTokens ?? null;\n this.threshold = config.capacityThreshold ?? 0.75;\n this.syncThreshold = config.syncThreshold ?? 0.25;\n this.handlers = {\n ...config?.handlers,\n estimate:\n config?.handlers?.estimate || ((msg) => Math.ceil((msg.role.length + msg.text.length) / 4)),\n tokenize: config?.handlers?.tokenize || simpleTokenize,\n removalSelector: config.handlers?.removalSelector || ((messages) => messages[0]),\n };\n if (!R.clamp({ min: 0, max: 1 })(this.threshold)) {\n throw new TypeError('\"capacityThreshold\" must be a number in range (0, 1>');\n }\n }\n\n static {\n this.register();\n }\n\n get tokensUsed(): number {\n return sum(this.messages.map((msg) => this.tokensByMessage.get(msg)!.tokensCount!));\n }\n\n get isDirty(): boolean {\n return this.messages.some((msg) => this.tokensByMessage.get(msg)?.dirty !== false);\n }\n\n async add(message: Message, index?: number) {\n if (this.maxTokens === null) {\n // TODO: improve\n this.maxTokens = 128_000;\n }\n\n const meta = this.tokensByMessage.has(message)\n ? this.tokensByMessage.get(message)!\n : { tokensCount: this.handlers.estimate(message), dirty: true };\n\n if (meta.tokensCount > this.maxTokens) {\n throw new MemoryFatalError(\n `Retrieved message (${meta.tokensCount} tokens) cannot fit inside current memory (${this.maxTokens} tokens)`,\n );\n }\n\n while (this.tokensUsed > this.maxTokens - meta.tokensCount) {\n const messageToDelete = this.handlers.removalSelector(this.messages);\n const exists = await this.delete(messageToDelete);\n\n if (!messageToDelete || !exists) {\n throw new MemoryFatalError('The \"removalSelector\" handler must return a valid message!');\n }\n }\n\n this.tokensByMessage.set(message, meta);\n\n index = ensureRange(index ?? this.messages.length, { min: 0, max: this.messages.length });\n this.messages.splice(index, 0, message);\n\n if (this.isDirty && this.tokensUsed / this.maxTokens >= this.syncThreshold) {\n await this.sync();\n }\n }\n\n async delete(message: Message) {\n return removeFromArray(this.messages, message);\n }\n\n async sync() {\n const messages = await Promise.all(\n this.messages.map(async (msg) => {\n const cache = this.tokensByMessage.get(msg);\n if (cache?.dirty !== false) {\n const tokensCount = await this.handlers.tokenize([msg]);\n this.tokensByMessage.set(msg, { tokensCount, dirty: false });\n }\n return msg;\n }),\n );\n\n this.messages.length = 0;\n await this.addMany(messages);\n }\n\n reset() {\n for (const msg of this.messages) {\n this.tokensByMessage.delete(msg);\n }\n this.messages.length = 0;\n }\n\n stats() {\n return {\n tokensUsed: this.tokensUsed,\n maxTokens: this.maxTokens,\n messagesCount: this.messages.length,\n isDirty: this.isDirty,\n };\n }\n\n createSnapshot() {\n return {\n threshold: this.threshold,\n syncThreshold: this.syncThreshold,\n messages: shallowCopy(this.messages),\n handlers: shallowCopy(this.handlers),\n maxTokens: this.maxTokens,\n tokensByMessage: this.messages\n .map((message) => [message, this.tokensByMessage.get(message)])\n .filter(([_, value]) => value !== undefined) as [Message, number][],\n };\n }\n\n loadSnapshot({ tokensByMessage, ...state }: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, state, {\n tokensByMessage: new WeakMap(tokensByMessage),\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/memory/tokenMemory.ts"],"names":["simpleEstimate","msg","Math","ceil","text","length","simpleTokenize","msgs","sum","map","TokenMemory","BaseMemory","messages","threshold","syncThreshold","maxTokens","tokensByMessage","WeakMap","handlers","config","capacityThreshold","estimate","role","tokenize","removalSelector","R","clamp","min","max","TypeError","register","tokensUsed","get","tokensCount","isDirty","some","dirty","add","message","index","meta","has","MemoryFatalError","messageToDelete","exists","delete","set","ensureRange","splice","sync","removeFromArray","Promise","all","cache","addMany","reset","stats","messagesCount","createSnapshot","shallowCopy","filter","_","value","undefined","loadSnapshot","state","Object","assign"],"mappings":"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","file":"tokenMemory.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { BaseMemory, MemoryFatalError } from \"@/memory/base.js\";\nimport * as R from \"remeda\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { removeFromArray } from \"@/internals/helpers/array.js\";\nimport { map, sum } from \"remeda\";\nimport { ensureRange } from \"@/internals/helpers/number.js\";\nimport { Message } from \"@/backend/message.js\";\n\nexport interface Handlers {\n estimate: (messages: Message) => number;\n tokenize: (messages: Message[]) => Promise<number>;\n removalSelector: (messages: Message[]) => Message;\n}\n\nconst simpleEstimate: Handlers[\"estimate\"] = (msg: Message) => Math.ceil(msg.text.length / 4);\nconst simpleTokenize: Handlers[\"tokenize\"] = async (msgs: Message[]) =>\n sum(map(msgs, simpleEstimate)); // TODO\n\nexport interface TokenMemoryInput {\n maxTokens?: number;\n syncThreshold?: number;\n capacityThreshold?: number;\n handlers?: Partial<Handlers>;\n}\n\ninterface TokenByMessage {\n tokensCount: number;\n dirty: boolean;\n}\n\nexport class TokenMemory extends BaseMemory {\n public readonly messages: Message[] = [];\n\n protected threshold;\n protected syncThreshold;\n protected maxTokens: number | null = null;\n protected tokensByMessage = new WeakMap<Message, TokenByMessage>();\n public readonly handlers: Handlers;\n\n constructor(config: TokenMemoryInput = {}) {\n super();\n this.maxTokens = config.maxTokens ?? null;\n this.threshold = config.capacityThreshold ?? 0.75;\n this.syncThreshold = config.syncThreshold ?? 0.25;\n this.handlers = {\n ...config?.handlers,\n estimate:\n config?.handlers?.estimate || ((msg) => Math.ceil((msg.role.length + msg.text.length) / 4)),\n tokenize: config?.handlers?.tokenize || simpleTokenize,\n removalSelector: config.handlers?.removalSelector || ((messages) => messages[0]),\n };\n if (!R.clamp({ min: 0, max: 1 })(this.threshold)) {\n throw new TypeError('\"capacityThreshold\" must be a number in range (0, 1>');\n }\n }\n\n static {\n this.register();\n }\n\n get tokensUsed(): number {\n return sum(this.messages.map((msg) => this.tokensByMessage.get(msg)!.tokensCount!));\n }\n\n get isDirty(): boolean {\n return this.messages.some((msg) => this.tokensByMessage.get(msg)?.dirty !== false);\n }\n\n async add(message: Message, index?: number) {\n if (this.maxTokens === null) {\n // TODO: improve\n this.maxTokens = 128_000;\n }\n\n const meta = this.tokensByMessage.has(message)\n ? this.tokensByMessage.get(message)!\n : { tokensCount: this.handlers.estimate(message), dirty: true };\n\n if (meta.tokensCount > this.maxTokens) {\n throw new MemoryFatalError(\n `Retrieved message (${meta.tokensCount} tokens) cannot fit inside current memory (${this.maxTokens} tokens)`,\n );\n }\n\n while (this.tokensUsed > this.maxTokens - meta.tokensCount) {\n const messageToDelete = this.handlers.removalSelector(this.messages);\n const exists = await this.delete(messageToDelete);\n\n if (!messageToDelete || !exists) {\n throw new MemoryFatalError('The \"removalSelector\" handler must return a valid message!');\n }\n }\n\n this.tokensByMessage.set(message, meta);\n\n index = ensureRange(index ?? this.messages.length, { min: 0, max: this.messages.length });\n this.messages.splice(index, 0, message);\n\n if (this.isDirty && this.tokensUsed / this.maxTokens >= this.syncThreshold) {\n await this.sync();\n }\n }\n\n async delete(message: Message) {\n return removeFromArray(this.messages, message);\n }\n\n async sync() {\n const messages = await Promise.all(\n this.messages.map(async (msg) => {\n const cache = this.tokensByMessage.get(msg);\n if (cache?.dirty !== false) {\n const tokensCount = await this.handlers.tokenize([msg]);\n this.tokensByMessage.set(msg, { tokensCount, dirty: false });\n }\n return msg;\n }),\n );\n\n this.messages.length = 0;\n await this.addMany(messages);\n }\n\n reset() {\n for (const msg of this.messages) {\n this.tokensByMessage.delete(msg);\n }\n this.messages.length = 0;\n }\n\n stats() {\n return {\n tokensUsed: this.tokensUsed,\n maxTokens: this.maxTokens,\n messagesCount: this.messages.length,\n isDirty: this.isDirty,\n };\n }\n\n createSnapshot() {\n return {\n threshold: this.threshold,\n syncThreshold: this.syncThreshold,\n messages: shallowCopy(this.messages),\n handlers: shallowCopy(this.handlers),\n maxTokens: this.maxTokens,\n tokensByMessage: this.messages\n .map((message) => [message, this.tokensByMessage.get(message)])\n .filter(([_, value]) => value !== undefined) as [Message, number][],\n };\n }\n\n loadSnapshot({ tokensByMessage, ...state }: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, state, {\n tokensByMessage: new WeakMap(tokensByMessage),\n });\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["tokenMemory.ts"],"names":["simpleEstimate","msg","Math","ceil","text","length","simpleTokenize","msgs","sum","map","TokenMemory","BaseMemory","messages","threshold","syncThreshold","maxTokens","tokensByMessage","WeakMap","handlers","constructor","config","capacityThreshold","estimate","role","tokenize","removalSelector","R","clamp","min","max","TypeError","register","tokensUsed","get","tokensCount","isDirty","some","dirty","add","message","index","meta","has","MemoryFatalError","messageToDelete","exists","delete","set","ensureRange","splice","sync","removeFromArray","Promise","all","cache","addMany","reset","stats","messagesCount","createSnapshot","shallowCopy","filter","_","value","undefined","loadSnapshot","state","Object","assign"],"mappings":"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","file":"tokenMemory.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseMemory, MemoryFatalError } from \"@/memory/base.js\";\nimport * as R from \"remeda\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { removeFromArray } from \"@/internals/helpers/array.js\";\nimport { map, sum } from \"remeda\";\nimport { ensureRange } from \"@/internals/helpers/number.js\";\nimport { Message } from \"@/backend/message.js\";\n\nexport interface Handlers {\n estimate: (messages: Message) => number;\n tokenize: (messages: Message[]) => Promise<number>;\n removalSelector: (messages: Message[]) => Message;\n}\n\nconst simpleEstimate: Handlers[\"estimate\"] = (msg: Message) => Math.ceil(msg.text.length / 4);\nconst simpleTokenize: Handlers[\"tokenize\"] = async (msgs: Message[]) =>\n sum(map(msgs, simpleEstimate)); // TODO\n\nexport interface TokenMemoryInput {\n maxTokens?: number;\n syncThreshold?: number;\n capacityThreshold?: number;\n handlers?: Partial<Handlers>;\n}\n\ninterface TokenByMessage {\n tokensCount: number;\n dirty: boolean;\n}\n\nexport class TokenMemory extends BaseMemory {\n public readonly messages: Message[] = [];\n\n protected threshold;\n protected syncThreshold;\n protected maxTokens: number | null = null;\n protected tokensByMessage = new WeakMap<Message, TokenByMessage>();\n public readonly handlers: Handlers;\n\n constructor(config: TokenMemoryInput = {}) {\n super();\n this.maxTokens = config.maxTokens ?? null;\n this.threshold = config.capacityThreshold ?? 0.75;\n this.syncThreshold = config.syncThreshold ?? 0.25;\n this.handlers = {\n ...config?.handlers,\n estimate:\n config?.handlers?.estimate || ((msg) => Math.ceil((msg.role.length + msg.text.length) / 4)),\n tokenize: config?.handlers?.tokenize || simpleTokenize,\n removalSelector: config.handlers?.removalSelector || ((messages) => messages[0]),\n };\n if (!R.clamp({ min: 0, max: 1 })(this.threshold)) {\n throw new TypeError('\"capacityThreshold\" must be a number in range (0, 1>');\n }\n }\n\n static {\n this.register();\n }\n\n get tokensUsed(): number {\n return sum(this.messages.map((msg) => this.tokensByMessage.get(msg)!.tokensCount!));\n }\n\n get isDirty(): boolean {\n return this.messages.some((msg) => this.tokensByMessage.get(msg)?.dirty !== false);\n }\n\n async add(message: Message, index?: number) {\n if (this.maxTokens === null) {\n // TODO: improve\n this.maxTokens = 128_000;\n }\n\n const meta = this.tokensByMessage.has(message)\n ? this.tokensByMessage.get(message)!\n : { tokensCount: this.handlers.estimate(message), dirty: true };\n\n if (meta.tokensCount > this.maxTokens) {\n throw new MemoryFatalError(\n `Retrieved message (${meta.tokensCount} tokens) cannot fit inside current memory (${this.maxTokens} tokens)`,\n );\n }\n\n while (this.tokensUsed > this.maxTokens - meta.tokensCount) {\n const messageToDelete = this.handlers.removalSelector(this.messages);\n const exists = await this.delete(messageToDelete);\n\n if (!messageToDelete || !exists) {\n throw new MemoryFatalError('The \"removalSelector\" handler must return a valid message!');\n }\n }\n\n this.tokensByMessage.set(message, meta);\n\n index = ensureRange(index ?? this.messages.length, { min: 0, max: this.messages.length });\n this.messages.splice(index, 0, message);\n\n if (this.isDirty && this.tokensUsed / this.maxTokens >= this.syncThreshold) {\n await this.sync();\n }\n }\n\n async delete(message: Message) {\n return removeFromArray(this.messages, message);\n }\n\n async sync() {\n const messages = await Promise.all(\n this.messages.map(async (msg) => {\n const cache = this.tokensByMessage.get(msg);\n if (cache?.dirty !== false) {\n const tokensCount = await this.handlers.tokenize([msg]);\n this.tokensByMessage.set(msg, { tokensCount, dirty: false });\n }\n return msg;\n }),\n );\n\n this.messages.length = 0;\n await this.addMany(messages);\n }\n\n reset() {\n for (const msg of this.messages) {\n this.tokensByMessage.delete(msg);\n }\n this.messages.length = 0;\n }\n\n stats() {\n return {\n tokensUsed: this.tokensUsed,\n maxTokens: this.maxTokens,\n messagesCount: this.messages.length,\n isDirty: this.isDirty,\n };\n }\n\n createSnapshot() {\n return {\n threshold: this.threshold,\n syncThreshold: this.syncThreshold,\n messages: shallowCopy(this.messages),\n handlers: shallowCopy(this.handlers),\n maxTokens: this.maxTokens,\n tokensByMessage: this.messages\n .map((message) => [message, this.tokensByMessage.get(message)])\n .filter(([_, value]) => value !== undefined) as [Message, number][],\n };\n }\n\n loadSnapshot({ tokensByMessage, ...state }: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, state, {\n tokensByMessage: new WeakMap(tokensByMessage),\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/memory/tokenMemory.ts"],"names":["simpleEstimate","msg","Math","ceil","text","length","simpleTokenize","msgs","sum","map","TokenMemory","BaseMemory","messages","threshold","syncThreshold","maxTokens","tokensByMessage","WeakMap","handlers","config","capacityThreshold","estimate","role","tokenize","removalSelector","R","clamp","min","max","TypeError","register","tokensUsed","get","tokensCount","isDirty","some","dirty","add","message","index","meta","has","MemoryFatalError","messageToDelete","exists","delete","set","ensureRange","splice","sync","removeFromArray","Promise","all","cache","addMany","reset","stats","messagesCount","createSnapshot","shallowCopy","filter","_","value","undefined","loadSnapshot","state","Object","assign"],"mappings":"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","file":"tokenMemory.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { BaseMemory, MemoryFatalError } from \"@/memory/base.js\";\nimport * as R from \"remeda\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { removeFromArray } from \"@/internals/helpers/array.js\";\nimport { map, sum } from \"remeda\";\nimport { ensureRange } from \"@/internals/helpers/number.js\";\nimport { Message } from \"@/backend/message.js\";\n\nexport interface Handlers {\n estimate: (messages: Message) => number;\n tokenize: (messages: Message[]) => Promise<number>;\n removalSelector: (messages: Message[]) => Message;\n}\n\nconst simpleEstimate: Handlers[\"estimate\"] = (msg: Message) => Math.ceil(msg.text.length / 4);\nconst simpleTokenize: Handlers[\"tokenize\"] = async (msgs: Message[]) =>\n sum(map(msgs, simpleEstimate)); // TODO\n\nexport interface TokenMemoryInput {\n maxTokens?: number;\n syncThreshold?: number;\n capacityThreshold?: number;\n handlers?: Partial<Handlers>;\n}\n\ninterface TokenByMessage {\n tokensCount: number;\n dirty: boolean;\n}\n\nexport class TokenMemory extends BaseMemory {\n public readonly messages: Message[] = [];\n\n protected threshold;\n protected syncThreshold;\n protected maxTokens: number | null = null;\n protected tokensByMessage = new WeakMap<Message, TokenByMessage>();\n public readonly handlers: Handlers;\n\n constructor(config: TokenMemoryInput = {}) {\n super();\n this.maxTokens = config.maxTokens ?? null;\n this.threshold = config.capacityThreshold ?? 0.75;\n this.syncThreshold = config.syncThreshold ?? 0.25;\n this.handlers = {\n ...config?.handlers,\n estimate:\n config?.handlers?.estimate || ((msg) => Math.ceil((msg.role.length + msg.text.length) / 4)),\n tokenize: config?.handlers?.tokenize || simpleTokenize,\n removalSelector: config.handlers?.removalSelector || ((messages) => messages[0]),\n };\n if (!R.clamp({ min: 0, max: 1 })(this.threshold)) {\n throw new TypeError('\"capacityThreshold\" must be a number in range (0, 1>');\n }\n }\n\n static {\n this.register();\n }\n\n get tokensUsed(): number {\n return sum(this.messages.map((msg) => this.tokensByMessage.get(msg)!.tokensCount!));\n }\n\n get isDirty(): boolean {\n return this.messages.some((msg) => this.tokensByMessage.get(msg)?.dirty !== false);\n }\n\n async add(message: Message, index?: number) {\n if (this.maxTokens === null) {\n // TODO: improve\n this.maxTokens = 128_000;\n }\n\n const meta = this.tokensByMessage.has(message)\n ? this.tokensByMessage.get(message)!\n : { tokensCount: this.handlers.estimate(message), dirty: true };\n\n if (meta.tokensCount > this.maxTokens) {\n throw new MemoryFatalError(\n `Retrieved message (${meta.tokensCount} tokens) cannot fit inside current memory (${this.maxTokens} tokens)`,\n );\n }\n\n while (this.tokensUsed > this.maxTokens - meta.tokensCount) {\n const messageToDelete = this.handlers.removalSelector(this.messages);\n const exists = await this.delete(messageToDelete);\n\n if (!messageToDelete || !exists) {\n throw new MemoryFatalError('The \"removalSelector\" handler must return a valid message!');\n }\n }\n\n this.tokensByMessage.set(message, meta);\n\n index = ensureRange(index ?? this.messages.length, { min: 0, max: this.messages.length });\n this.messages.splice(index, 0, message);\n\n if (this.isDirty && this.tokensUsed / this.maxTokens >= this.syncThreshold) {\n await this.sync();\n }\n }\n\n async delete(message: Message) {\n return removeFromArray(this.messages, message);\n }\n\n async sync() {\n const messages = await Promise.all(\n this.messages.map(async (msg) => {\n const cache = this.tokensByMessage.get(msg);\n if (cache?.dirty !== false) {\n const tokensCount = await this.handlers.tokenize([msg]);\n this.tokensByMessage.set(msg, { tokensCount, dirty: false });\n }\n return msg;\n }),\n );\n\n this.messages.length = 0;\n await this.addMany(messages);\n }\n\n reset() {\n for (const msg of this.messages) {\n this.tokensByMessage.delete(msg);\n }\n this.messages.length = 0;\n }\n\n stats() {\n return {\n tokensUsed: this.tokensUsed,\n maxTokens: this.maxTokens,\n messagesCount: this.messages.length,\n isDirty: this.isDirty,\n };\n }\n\n createSnapshot() {\n return {\n threshold: this.threshold,\n syncThreshold: this.syncThreshold,\n messages: shallowCopy(this.messages),\n handlers: shallowCopy(this.handlers),\n maxTokens: this.maxTokens,\n tokensByMessage: this.messages\n .map((message) => [message, this.tokensByMessage.get(message)])\n .filter(([_, value]) => value !== undefined) as [Message, number][],\n };\n }\n\n loadSnapshot({ tokensByMessage, ...state }: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, state, {\n tokensByMessage: new WeakMap(tokensByMessage),\n });\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["unconstrainedMemory.ts"],"names":["UnconstrainedMemory","BaseMemory","messages","register","add","message","index","ensureRange","length","min","max","splice","delete","removeFromArray","reset","loadSnapshot","snapshot","Object","assign","createSnapshot","shallowCopy"],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../src/memory/unconstrainedMemory.ts"],"names":["UnconstrainedMemory","BaseMemory","messages","register","add","message","index","ensureRange","length","min","max","splice","delete","removeFromArray","reset","loadSnapshot","snapshot","Object","assign","createSnapshot","shallowCopy"],"mappings":";;;;;;;;;AAWO,MAAMA,4BAA4BC,mBAAAA,CAAAA;EAXzC;;;AAYSC,EAAAA,QAAAA,GAAsB,EAAA;EAE7B;AACE,IAAA,IAAA,CAAKC,QAAAA,EAAQ;AACf;EAEA,MAAMC,GAAAA,CAAIC,SAAkBC,KAAAA,EAAgB;AAC1CA,IAAAA,KAAAA,GAAQC,sBAAAA,CAAYD,KAAAA,IAAS,IAAA,CAAKJ,QAAAA,CAASM,MAAAA,EAAQ;MAAEC,GAAAA,EAAK,CAAA;AAAGC,MAAAA,GAAAA,EAAK,KAAKR,QAAAA,CAASM;KAAO,CAAA;AACvF,IAAA,IAAA,CAAKN,QAAAA,CAASS,MAAAA,CAAOL,KAAAA,EAAO,CAAA,EAAGD,OAAAA,CAAAA;AACjC;AAEA,EAAA,MAAMO,OAAOP,OAAAA,EAAkB;AAC7B,IAAA,OAAOQ,yBAAAA,CAAgB,IAAA,CAAKX,QAAAA,EAAUG,OAAAA,CAAAA;AACxC;EAEAS,KAAAA,GAAQ;AACN,IAAA,IAAA,CAAKZ,SAASM,MAAAA,GAAS,CAAA;AACzB;AAEAO,EAAAA,YAAAA,CAAaC,QAAAA,EAAkD;AAC7DC,IAAAA,MAAAA,CAAOC,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB;EAEAG,cAAAA,GAAiB;AACf,IAAA,OAAO;MACLjB,QAAAA,EAAUkB,qBAAAA,CAAY,KAAKlB,QAAQ;AACrC,KAAA;AACF;AACF","file":"unconstrainedMemory.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { BaseMemory } from \"@/memory/base.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { removeFromArray } from \"@/internals/helpers/array.js\";\nimport { ensureRange } from \"@/internals/helpers/number.js\";\nimport { Message } from \"@/backend/message.js\";\n\nexport class UnconstrainedMemory extends BaseMemory {\n public messages: Message[] = [];\n\n static {\n this.register();\n }\n\n async add(message: Message, index?: number) {\n index = ensureRange(index ?? this.messages.length, { min: 0, max: this.messages.length });\n this.messages.splice(index, 0, message);\n }\n\n async delete(message: Message) {\n return removeFromArray(this.messages, message);\n }\n\n reset() {\n this.messages.length = 0;\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n\n createSnapshot() {\n return {\n messages: shallowCopy(this.messages),\n };\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["unconstrainedMemory.ts"],"names":["UnconstrainedMemory","BaseMemory","messages","register","add","message","index","ensureRange","length","min","max","splice","delete","removeFromArray","reset","loadSnapshot","snapshot","Object","assign","createSnapshot","shallowCopy"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../src/memory/unconstrainedMemory.ts"],"names":["UnconstrainedMemory","BaseMemory","messages","register","add","message","index","ensureRange","length","min","max","splice","delete","removeFromArray","reset","loadSnapshot","snapshot","Object","assign","createSnapshot","shallowCopy"],"mappings":";;;;;;;AAWO,MAAMA,4BAA4BC,UAAAA,CAAAA;EAXzC;;;AAYSC,EAAAA,QAAAA,GAAsB,EAAA;EAE7B;AACE,IAAA,IAAA,CAAKC,QAAAA,EAAQ;AACf;EAEA,MAAMC,GAAAA,CAAIC,SAAkBC,KAAAA,EAAgB;AAC1CA,IAAAA,KAAAA,GAAQC,WAAAA,CAAYD,KAAAA,IAAS,IAAA,CAAKJ,QAAAA,CAASM,MAAAA,EAAQ;MAAEC,GAAAA,EAAK,CAAA;AAAGC,MAAAA,GAAAA,EAAK,KAAKR,QAAAA,CAASM;KAAO,CAAA;AACvF,IAAA,IAAA,CAAKN,QAAAA,CAASS,MAAAA,CAAOL,KAAAA,EAAO,CAAA,EAAGD,OAAAA,CAAAA;AACjC;AAEA,EAAA,MAAMO,OAAOP,OAAAA,EAAkB;AAC7B,IAAA,OAAOQ,eAAAA,CAAgB,IAAA,CAAKX,QAAAA,EAAUG,OAAAA,CAAAA;AACxC;EAEAS,KAAAA,GAAQ;AACN,IAAA,IAAA,CAAKZ,SAASM,MAAAA,GAAS,CAAA;AACzB;AAEAO,EAAAA,YAAAA,CAAaC,QAAAA,EAAkD;AAC7DC,IAAAA,MAAAA,CAAOC,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB;EAEAG,cAAAA,GAAiB;AACf,IAAA,OAAO;MACLjB,QAAAA,EAAUkB,WAAAA,CAAY,KAAKlB,QAAQ;AACrC,KAAA;AACF;AACF","file":"unconstrainedMemory.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { BaseMemory } from \"@/memory/base.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { removeFromArray } from \"@/internals/helpers/array.js\";\nimport { ensureRange } from \"@/internals/helpers/number.js\";\nimport { Message } from \"@/backend/message.js\";\n\nexport class UnconstrainedMemory extends BaseMemory {\n public messages: Message[] = [];\n\n static {\n this.register();\n }\n\n async add(message: Message, index?: number) {\n index = ensureRange(index ?? this.messages.length, { min: 0, max: this.messages.length });\n this.messages.splice(index, 0, message);\n }\n\n async delete(message: Message) {\n return removeFromArray(this.messages, message);\n }\n\n reset() {\n this.messages.length = 0;\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n\n createSnapshot() {\n return {\n messages: shallowCopy(this.messages),\n };\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["errors.ts"],"names":["LinePrefixParserError","FrameworkError","isFatal","isRetryable","context","reason","Reason","NoDataReceived","InvalidTransition","NotStartNode","NotEndNode","AlreadyCompleted","InvalidSchema","
|
|
1
|
+
{"version":3,"sources":["../../src/parsers/errors.ts"],"names":["LinePrefixParserError","FrameworkError","isFatal","isRetryable","context","reason","Reason","NoDataReceived","InvalidTransition","NotStartNode","NotEndNode","AlreadyCompleted","InvalidSchema","message","errors","options"],"mappings":";;;;;;AAeO,MAAMA,8BAA8BC,yBAAAA,CAAAA;EAf3C;;;EAgBEC,OAAAA,GAAU,IAAA;EACVC,WAAAA,GAAc,IAAA;AACLC,EAAAA,OAAAA;AACAC,EAAAA,MAAAA;AAET,EAAA,OAAOC,MAAAA,GAAS;IACdC,cAAAA,EAAgB,gBAAA;IAChBC,iBAAAA,EAAmB,mBAAA;IACnBC,YAAAA,EAAc,cAAA;IACdC,UAAAA,EAAY,YAAA;IACZC,gBAAAA,EAAkB,kBAAA;IAClBC,aAAAA,EAAe;AACjB,GAAA;EAEA,WAAA,CACEC,OAAAA,EACAC,QACAC,OAAAA,EAIA;AACA,IAAA,KAAA,CAAMF,OAAAA,EAASC,QAAQC,OAAAA,CAAAA;AAEvB,IAAA,IAAA,CAAKX,UAAUW,OAAAA,CAAQX,OAAAA;AACvB,IAAA,IAAA,CAAKC,SAASU,OAAAA,CAAQV,MAAAA;AACxB;AACF","file":"errors.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FrameworkError, FrameworkErrorOptions } from \"@/errors.js\";\nimport { ValueOf } from \"@/internals/types.js\";\n\ninterface Context {\n lines: string;\n excludedLines: string;\n finalState: Record<string, any>;\n partialState: Record<string, any>;\n}\n\nexport class LinePrefixParserError extends FrameworkError {\n isFatal = true;\n isRetryable = true;\n readonly context: Context;\n readonly reason: ValueOf<typeof LinePrefixParserError.Reason>;\n\n static Reason = {\n NoDataReceived: \"NoDataReceived\",\n InvalidTransition: \"InvalidTransition\",\n NotStartNode: \"NotStartNode\",\n NotEndNode: \"NotEndNode\",\n AlreadyCompleted: \"AlreadyCompleted\",\n InvalidSchema: \"InvalidSchema\",\n } as const;\n\n constructor(\n message: string,\n errors: Error[],\n options: FrameworkErrorOptions & {\n context: Context;\n reason: ValueOf<typeof LinePrefixParserError.Reason>;\n },\n ) {\n super(message, errors, options);\n\n this.context = options.context;\n this.reason = options.reason;\n }\n}\n"]}
|
|
@@ -4,18 +4,7 @@ import '../internals/helpers/guards.cjs';
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Copyright 2025 © BeeAI a Series of LF Projects, LLC
|
|
7
|
-
*
|
|
8
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
9
|
-
* you may not use this file except in compliance with the License.
|
|
10
|
-
* You may obtain a copy of the License at
|
|
11
|
-
*
|
|
12
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
13
|
-
*
|
|
14
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
15
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
16
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
17
|
-
* See the License for the specific language governing permissions and
|
|
18
|
-
* limitations under the License.
|
|
7
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
19
8
|
*/
|
|
20
9
|
|
|
21
10
|
interface Context {
|
package/dist/parsers/errors.d.ts
CHANGED
|
@@ -4,18 +4,7 @@ import '../internals/helpers/guards.js';
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Copyright 2025 © BeeAI a Series of LF Projects, LLC
|
|
7
|
-
*
|
|
8
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
9
|
-
* you may not use this file except in compliance with the License.
|
|
10
|
-
* You may obtain a copy of the License at
|
|
11
|
-
*
|
|
12
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
13
|
-
*
|
|
14
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
15
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
16
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
17
|
-
* See the License for the specific language governing permissions and
|
|
18
|
-
* limitations under the License.
|
|
7
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
19
8
|
*/
|
|
20
9
|
|
|
21
10
|
interface Context {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["errors.ts"],"names":["LinePrefixParserError","FrameworkError","isFatal","isRetryable","context","reason","Reason","NoDataReceived","InvalidTransition","NotStartNode","NotEndNode","AlreadyCompleted","InvalidSchema","
|
|
1
|
+
{"version":3,"sources":["../../src/parsers/errors.ts"],"names":["LinePrefixParserError","FrameworkError","isFatal","isRetryable","context","reason","Reason","NoDataReceived","InvalidTransition","NotStartNode","NotEndNode","AlreadyCompleted","InvalidSchema","message","errors","options"],"mappings":";;;;AAeO,MAAMA,8BAA8BC,cAAAA,CAAAA;EAf3C;;;EAgBEC,OAAAA,GAAU,IAAA;EACVC,WAAAA,GAAc,IAAA;AACLC,EAAAA,OAAAA;AACAC,EAAAA,MAAAA;AAET,EAAA,OAAOC,MAAAA,GAAS;IACdC,cAAAA,EAAgB,gBAAA;IAChBC,iBAAAA,EAAmB,mBAAA;IACnBC,YAAAA,EAAc,cAAA;IACdC,UAAAA,EAAY,YAAA;IACZC,gBAAAA,EAAkB,kBAAA;IAClBC,aAAAA,EAAe;AACjB,GAAA;EAEA,WAAA,CACEC,OAAAA,EACAC,QACAC,OAAAA,EAIA;AACA,IAAA,KAAA,CAAMF,OAAAA,EAASC,QAAQC,OAAAA,CAAAA;AAEvB,IAAA,IAAA,CAAKX,UAAUW,OAAAA,CAAQX,OAAAA;AACvB,IAAA,IAAA,CAAKC,SAASU,OAAAA,CAAQV,MAAAA;AACxB;AACF","file":"errors.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FrameworkError, FrameworkErrorOptions } from \"@/errors.js\";\nimport { ValueOf } from \"@/internals/types.js\";\n\ninterface Context {\n lines: string;\n excludedLines: string;\n finalState: Record<string, any>;\n partialState: Record<string, any>;\n}\n\nexport class LinePrefixParserError extends FrameworkError {\n isFatal = true;\n isRetryable = true;\n readonly context: Context;\n readonly reason: ValueOf<typeof LinePrefixParserError.Reason>;\n\n static Reason = {\n NoDataReceived: \"NoDataReceived\",\n InvalidTransition: \"InvalidTransition\",\n NotStartNode: \"NotStartNode\",\n NotEndNode: \"NotEndNode\",\n AlreadyCompleted: \"AlreadyCompleted\",\n InvalidSchema: \"InvalidSchema\",\n } as const;\n\n constructor(\n message: string,\n errors: Error[],\n options: FrameworkErrorOptions & {\n context: Context;\n reason: ValueOf<typeof LinePrefixParserError.Reason>;\n },\n ) {\n super(message, errors, options);\n\n this.context = options.context;\n this.reason = options.reason;\n }\n}\n"]}
|
package/dist/parsers/field.cjs
CHANGED
|
@@ -73,10 +73,10 @@ class JSONParserField extends ParserField {
|
|
|
73
73
|
input;
|
|
74
74
|
stream;
|
|
75
75
|
jsonParser;
|
|
76
|
-
errored;
|
|
76
|
+
errored = false;
|
|
77
77
|
ref;
|
|
78
78
|
constructor(input) {
|
|
79
|
-
super(), this.input = input
|
|
79
|
+
super(), this.input = input;
|
|
80
80
|
if (input.base === void 0) {
|
|
81
81
|
throw new errors_cjs.ValueError(`Base must be defined!`);
|
|
82
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["field.ts"],"names":["ParserField","Serializable","raw","write","chunk","end","createSnapshot","loadSnapshot","snapshot","Object","assign","ZodParserField","register","constructor","schema","get","parse","getPartial","JSONParserField","stream","jsonParser","errored","ref","input","base","undefined","ValueError","init","value","shallowCopy","JSONParser","emitPartialTokens","emitPartialValues","jsonrepairTransform","on","toString","onValue","key","stack","keys","map","s","concat","filter","String","length","prefix","setProp","matchPair","startChar","index","indexOf","substring","merged","match","findFirstPair","push","inputToParse","parseBrokenJson","pair","closed","isEnded","Promise","resolve","reject","onEnd","onError","cacheKey","SingletonCacheKeyFn"],"mappings":"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","file":"field.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ZodSchema } from \"zod\";\nimport { setProp } from \"@/internals/helpers/object.js\";\nimport { ValueError } from \"@/errors.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { JSONParser } from \"@streamparser/json\";\nimport { jsonrepairTransform } from \"jsonrepair/stream\";\nimport { Cache, SingletonCacheKeyFn } from \"@/cache/decoratorCache.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { parseBrokenJson } from \"@/internals/helpers/schema.js\";\nimport { findFirstPair } from \"@/internals/helpers/string.js\";\n\nexport abstract class ParserField<T, TPartial> extends Serializable {\n public raw = \"\";\n\n abstract get(): T;\n abstract getPartial(): TPartial;\n\n write(chunk: string) {\n this.raw += chunk;\n }\n\n async end() {}\n\n createSnapshot() {\n return { raw: this.raw };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport class ZodParserField<T> extends ParserField<T, string> {\n static {\n this.register();\n }\n\n constructor(protected readonly schema: ZodSchema<T>) {\n super();\n }\n\n get(): T {\n return this.schema.parse(this.raw);\n }\n\n getPartial(): string {\n return this.raw;\n }\n\n createSnapshot() {\n return { ...super.createSnapshot(), schema: this.schema };\n }\n}\n\nexport class JSONParserField<T> extends ParserField<T, Partial<T>> {\n protected stream!: ReturnType<typeof jsonrepairTransform>;\n protected jsonParser!: JSONParser;\n protected errored = false;\n protected ref!: { value: Partial<T> };\n\n constructor(\n protected readonly input: {\n schema: ZodSchema<T>;\n base: Partial<T>;\n matchPair?: [string, string];\n },\n ) {\n super();\n if (input.base === undefined) {\n throw new ValueError(`Base must be defined!`);\n }\n this.init();\n }\n\n @Cache({ cacheKey: SingletonCacheKeyFn })\n protected init() {\n this.ref = { value: shallowCopy(this.input.base) };\n this.jsonParser = new JSONParser({ emitPartialTokens: false, emitPartialValues: true });\n this.stream = jsonrepairTransform();\n this.stream.on(\"data\", (chunk) => {\n if (this.errored) {\n return;\n }\n\n try {\n this.jsonParser.write(chunk.toString());\n } catch {\n this.errored = true;\n }\n });\n this.jsonParser.onValue = ({ value, key, stack }) => {\n const keys = stack\n .map((s) => s.key)\n .concat(key)\n .filter((s) => s !== undefined)\n .map(String);\n\n if (keys.length === 0 && value === undefined) {\n return;\n }\n const prefix: keyof typeof this.ref = \"value\";\n setProp(this.ref, [prefix, ...keys], value);\n };\n }\n\n write(chunk: string) {\n if (this.input.matchPair) {\n if (!this.raw) {\n const startChar = this.input.matchPair[0];\n const index = chunk.indexOf(startChar);\n if (index === -1) {\n return;\n }\n chunk = chunk.substring(index);\n } else {\n const merged = this.raw.concat(chunk);\n const match = findFirstPair(merged, this.input.matchPair);\n if (match) {\n if (match.end < this.raw.length) {\n return;\n }\n chunk = merged.substring(this.raw.length, match.end);\n }\n }\n }\n\n super.write(chunk);\n try {\n this.stream.push(chunk);\n } catch {\n this.errored = true;\n }\n }\n\n get() {\n const inputToParse = this.errored\n ? parseBrokenJson(this.raw, {\n pair: this.input.matchPair,\n })\n : this.ref.value;\n\n return this.input.schema.parse(inputToParse);\n }\n\n getPartial() {\n return this.ref.value;\n }\n\n async end() {\n if (this.stream.closed || this.jsonParser.isEnded || this.errored) {\n return;\n }\n\n return new Promise<void>((resolve, reject) => {\n this.jsonParser.onEnd = resolve;\n this.jsonParser.onError = reject;\n\n this.stream.push(null);\n this.jsonParser.end();\n });\n }\n\n createSnapshot() {\n return { ...super.createSnapshot(), input: this.input, errored: this.errored };\n }\n\n loadSnapshot({ raw, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, { raw: \"\", ...snapshot });\n this.init();\n this.write(raw);\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace ParserField {\n export type inferValue<T> = T extends ParserField<infer L, unknown> ? L : never;\n export type inferPartialValue<T> = T extends ParserField<any, infer L> ? L : never;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/parsers/field.ts"],"names":["ParserField","Serializable","raw","write","chunk","end","createSnapshot","loadSnapshot","snapshot","Object","assign","ZodParserField","register","schema","get","parse","getPartial","JSONParserField","stream","jsonParser","errored","ref","input","base","undefined","ValueError","init","value","shallowCopy","JSONParser","emitPartialTokens","emitPartialValues","jsonrepairTransform","on","toString","onValue","key","stack","keys","map","s","concat","filter","String","length","prefix","setProp","matchPair","startChar","index","indexOf","substring","merged","match","findFirstPair","push","inputToParse","parseBrokenJson","pair","closed","isEnded","Promise","resolve","reject","onEnd","onError","cacheKey","SingletonCacheKeyFn"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAgBO,MAAeA,oBAAiCC,6BAAAA,CAAAA;AAAAA,EAAAA;;;EAC9CC,GAAAA,GAAM,EAAA;AAKbC,EAAAA,KAAAA,CAAMC,KAAAA,EAAe;AACnB,IAAA,IAAA,CAAKF,GAAAA,IAAOE,KAAAA;AACd;AAEA,EAAA,MAAMC,GAAAA,GAAM;AAAC;EAEbC,cAAAA,GAAiB;AACf,IAAA,OAAO;AAAEJ,MAAAA,GAAAA,EAAK,IAAA,CAAKA;AAAI,KAAA;AACzB;AAEAK,EAAAA,YAAAA,CAAaC,QAAAA,EAAkD;AAC7DC,IAAAA,MAAAA,CAAOC,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB;AACF;AAEO,MAAMG,uBAA0BX,WAAAA,CAAAA;AAAAA,EAAAA;;;;EACrC;AACE,IAAA,IAAA,CAAKY,QAAAA,EAAQ;AACf;AAEA,EAAA,WAAA,CAA+BC,MAAAA,EAAsB;AACnD,IAAA,KAAA,EAAK,EAAA,KADwBA,MAAAA,GAAAA,MAAAA;AAE/B;EAEAC,GAAAA,GAAS;AACP,IAAA,OAAO,IAAA,CAAKD,MAAAA,CAAOE,KAAAA,CAAM,IAAA,CAAKb,GAAG,CAAA;AACnC;EAEAc,UAAAA,GAAqB;AACnB,IAAA,OAAO,IAAA,CAAKd,GAAAA;AACd;EAEAI,cAAAA,GAAiB;AACf,IAAA,OAAO;AAAE,MAAA,GAAG,MAAMA,cAAAA,EAAAA;AAAkBO,MAAAA,MAAAA,EAAQ,IAAA,CAAKA;AAAO,KAAA;AAC1D;AACF;AAEO,MAAMI,wBAA2BjB,WAAAA,CAAAA;AAAAA,EAAAA;;;;AAC5BkB,EAAAA,MAAAA;AACAC,EAAAA,UAAAA;EACAC,OAAAA,GAAU,KAAA;AACVC,EAAAA,GAAAA;AAEV,EAAA,WAAA,CACqBC,KAAAA,EAKnB;AACA,IAAA,KAAA,EAAK,EAAA,KANcA,KAAAA,GAAAA,KAAAA;AAOnB,IAAA,IAAIA,KAAAA,CAAMC,SAASC,MAAAA,EAAW;AAC5B,MAAA,MAAM,IAAIC,sBAAW,CAAA,qBAAA,CAAuB,CAAA;AAC9C;AACA,IAAA,IAAA,CAAKC,IAAAA,EAAI;AACX;EAGUA,IAAAA,GAAO;AACf,IAAA,IAAA,CAAKL,GAAAA,GAAM;MAAEM,KAAAA,EAAOC,qBAAAA,CAAY,IAAA,CAAKN,KAAAA,CAAMC,IAAI;AAAE,KAAA;AACjD,IAAA,IAAA,CAAKJ,UAAAA,GAAa,IAAIU,eAAAA,CAAW;MAAEC,iBAAAA,EAAmB,KAAA;MAAOC,iBAAAA,EAAmB;KAAK,CAAA;AACrF,IAAA,IAAA,CAAKb,SAASc,0BAAAA,EAAAA;AACd,IAAA,IAAA,CAAKd,MAAAA,CAAOe,EAAAA,CAAG,MAAA,EAAQ,CAAC7B,KAAAA,KAAAA;AACtB,MAAA,IAAI,KAAKgB,OAAAA,EAAS;AAChB,QAAA;AACF;AAEA,MAAA,IAAI;AACF,QAAA,IAAA,CAAKD,UAAAA,CAAWhB,KAAAA,CAAMC,KAAAA,CAAM8B,QAAAA,EAAQ,CAAA;OACtC,CAAA,MAAQ;AACN,QAAA,IAAA,CAAKd,OAAAA,GAAU,IAAA;AACjB;KACF,CAAA;AACA,IAAA,IAAA,CAAKD,WAAWgB,OAAAA,GAAU,CAAC,EAAER,KAAAA,EAAOS,GAAAA,EAAKC,OAAK,KAAE;AAC9C,MAAA,MAAMC,OAAOD,KAAAA,CACVE,GAAAA,CAAI,CAACC,CAAAA,KAAMA,CAAAA,CAAEJ,GAAG,CAAA,CAChBK,MAAAA,CAAOL,GAAAA,CAAAA,CACPM,OAAO,CAACF,CAAAA,KAAMA,MAAMhB,MAAAA,CAAAA,CACpBe,IAAII,MAAAA,CAAAA;AAEP,MAAA,IAAIL,IAAAA,CAAKM,MAAAA,KAAW,CAAA,IAAKjB,KAAAA,KAAUH,MAAAA,EAAW;AAC5C,QAAA;AACF;AACA,MAAA,MAAMqB,MAAAA,GAAgC,OAAA;AACtCC,MAAAA,kBAAAA,CAAQ,KAAKzB,GAAAA,EAAK;AAACwB,QAAAA,MAAAA;AAAWP,QAAAA,GAAAA;SAAOX,KAAAA,CAAAA;AACvC,KAAA;AACF;AAEAxB,EAAAA,KAAAA,CAAMC,KAAAA,EAAe;AACnB,IAAA,IAAI,IAAA,CAAKkB,MAAMyB,SAAAA,EAAW;AACxB,MAAA,IAAI,CAAC,KAAK7C,GAAAA,EAAK;AACb,QAAA,MAAM8C,SAAAA,GAAY,IAAA,CAAK1B,KAAAA,CAAMyB,SAAAA,CAAU,CAAA,CAAA;AACvC,QAAA,MAAME,KAAAA,GAAQ7C,KAAAA,CAAM8C,OAAAA,CAAQF,SAAAA,CAAAA;AAC5B,QAAA,IAAIC,UAAU,EAAA,EAAI;AAChB,UAAA;AACF;AACA7C,QAAAA,KAAAA,GAAQA,KAAAA,CAAM+C,UAAUF,KAAAA,CAAAA;OAC1B,MAAO;AACL,QAAA,MAAMG,MAAAA,GAAS,IAAA,CAAKlD,GAAAA,CAAIuC,MAAAA,CAAOrC,KAAAA,CAAAA;AAC/B,QAAA,MAAMiD,KAAAA,GAAQC,wBAAAA,CAAcF,MAAAA,EAAQ,IAAA,CAAK9B,MAAMyB,SAAS,CAAA;AACxD,QAAA,IAAIM,KAAAA,EAAO;AACT,UAAA,IAAIA,KAAAA,CAAMhD,GAAAA,GAAM,IAAA,CAAKH,GAAAA,CAAI0C,MAAAA,EAAQ;AAC/B,YAAA;AACF;AACAxC,UAAAA,KAAAA,GAAQgD,OAAOD,SAAAA,CAAU,IAAA,CAAKjD,GAAAA,CAAI0C,MAAAA,EAAQS,MAAMhD,GAAG,CAAA;AACrD;AACF;AACF;AAEA,IAAA,KAAA,CAAMF,MAAMC,KAAAA,CAAAA;AACZ,IAAA,IAAI;AACF,MAAA,IAAA,CAAKc,MAAAA,CAAOqC,KAAKnD,KAAAA,CAAAA;KACnB,CAAA,MAAQ;AACN,MAAA,IAAA,CAAKgB,OAAAA,GAAU,IAAA;AACjB;AACF;EAEAN,GAAAA,GAAM;AACJ,IAAA,MAAM0C,YAAAA,GAAe,IAAA,CAAKpC,OAAAA,GACtBqC,0BAAAA,CAAgB,KAAKvD,GAAAA,EAAK;AACxBwD,MAAAA,IAAAA,EAAM,KAAKpC,KAAAA,CAAMyB;KACnB,CAAA,GACA,KAAK1B,GAAAA,CAAIM,KAAAA;AAEb,IAAA,OAAO,IAAA,CAAKL,KAAAA,CAAMT,MAAAA,CAAOE,KAAAA,CAAMyC,YAAAA,CAAAA;AACjC;EAEAxC,UAAAA,GAAa;AACX,IAAA,OAAO,KAAKK,GAAAA,CAAIM,KAAAA;AAClB;AAEA,EAAA,MAAMtB,GAAAA,GAAM;AACV,IAAA,IAAI,KAAKa,MAAAA,CAAOyC,MAAAA,IAAU,KAAKxC,UAAAA,CAAWyC,OAAAA,IAAW,KAAKxC,OAAAA,EAAS;AACjE,MAAA;AACF;AAEA,IAAA,OAAO,IAAIyC,OAAAA,CAAc,CAACC,OAAAA,EAASC,MAAAA,KAAAA;AACjC,MAAA,IAAA,CAAK5C,WAAW6C,KAAAA,GAAQF,OAAAA;AACxB,MAAA,IAAA,CAAK3C,WAAW8C,OAAAA,GAAUF,MAAAA;AAE1B,MAAA,IAAA,CAAK7C,MAAAA,CAAOqC,KAAK,IAAA,CAAA;AACjB,MAAA,IAAA,CAAKpC,WAAWd,GAAAA,EAAG;KACrB,CAAA;AACF;EAEAC,cAAAA,GAAiB;AACf,IAAA,OAAO;AAAE,MAAA,GAAG,MAAMA,cAAAA,EAAAA;AAAkBgB,MAAAA,KAAAA,EAAO,IAAA,CAAKA,KAAAA;AAAOF,MAAAA,OAAAA,EAAS,IAAA,CAAKA;AAAQ,KAAA;AAC/E;AAEAb,EAAAA,YAAAA,CAAa,EAAEL,GAAAA,EAAK,GAAGM,QAAAA,EAAAA,EAAoD;AACzEC,IAAAA,MAAAA,CAAOC,OAAO,IAAA,EAAM;MAAER,GAAAA,EAAK,EAAA;MAAI,GAAGM;KAAS,CAAA;AAC3C,IAAA,IAAA,CAAKkB,IAAAA,EAAI;AACT,IAAA,IAAA,CAAKvB,MAAMD,GAAAA,CAAAA;AACb;AACF;;;IAjGWgE,QAAAA,EAAUC","file":"field.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ZodSchema } from \"zod\";\nimport { setProp } from \"@/internals/helpers/object.js\";\nimport { ValueError } from \"@/errors.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { JSONParser } from \"@streamparser/json\";\nimport { jsonrepairTransform } from \"jsonrepair/stream\";\nimport { Cache, SingletonCacheKeyFn } from \"@/cache/decoratorCache.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { parseBrokenJson } from \"@/internals/helpers/schema.js\";\nimport { findFirstPair } from \"@/internals/helpers/string.js\";\n\nexport abstract class ParserField<T, TPartial> extends Serializable {\n public raw = \"\";\n\n abstract get(): T;\n abstract getPartial(): TPartial;\n\n write(chunk: string) {\n this.raw += chunk;\n }\n\n async end() {}\n\n createSnapshot() {\n return { raw: this.raw };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport class ZodParserField<T> extends ParserField<T, string> {\n static {\n this.register();\n }\n\n constructor(protected readonly schema: ZodSchema<T>) {\n super();\n }\n\n get(): T {\n return this.schema.parse(this.raw);\n }\n\n getPartial(): string {\n return this.raw;\n }\n\n createSnapshot() {\n return { ...super.createSnapshot(), schema: this.schema };\n }\n}\n\nexport class JSONParserField<T> extends ParserField<T, Partial<T>> {\n protected stream!: ReturnType<typeof jsonrepairTransform>;\n protected jsonParser!: JSONParser;\n protected errored = false;\n protected ref!: { value: Partial<T> };\n\n constructor(\n protected readonly input: {\n schema: ZodSchema<T>;\n base: Partial<T>;\n matchPair?: [string, string];\n },\n ) {\n super();\n if (input.base === undefined) {\n throw new ValueError(`Base must be defined!`);\n }\n this.init();\n }\n\n @Cache({ cacheKey: SingletonCacheKeyFn })\n protected init() {\n this.ref = { value: shallowCopy(this.input.base) };\n this.jsonParser = new JSONParser({ emitPartialTokens: false, emitPartialValues: true });\n this.stream = jsonrepairTransform();\n this.stream.on(\"data\", (chunk) => {\n if (this.errored) {\n return;\n }\n\n try {\n this.jsonParser.write(chunk.toString());\n } catch {\n this.errored = true;\n }\n });\n this.jsonParser.onValue = ({ value, key, stack }) => {\n const keys = stack\n .map((s) => s.key)\n .concat(key)\n .filter((s) => s !== undefined)\n .map(String);\n\n if (keys.length === 0 && value === undefined) {\n return;\n }\n const prefix: keyof typeof this.ref = \"value\";\n setProp(this.ref, [prefix, ...keys], value);\n };\n }\n\n write(chunk: string) {\n if (this.input.matchPair) {\n if (!this.raw) {\n const startChar = this.input.matchPair[0];\n const index = chunk.indexOf(startChar);\n if (index === -1) {\n return;\n }\n chunk = chunk.substring(index);\n } else {\n const merged = this.raw.concat(chunk);\n const match = findFirstPair(merged, this.input.matchPair);\n if (match) {\n if (match.end < this.raw.length) {\n return;\n }\n chunk = merged.substring(this.raw.length, match.end);\n }\n }\n }\n\n super.write(chunk);\n try {\n this.stream.push(chunk);\n } catch {\n this.errored = true;\n }\n }\n\n get() {\n const inputToParse = this.errored\n ? parseBrokenJson(this.raw, {\n pair: this.input.matchPair,\n })\n : this.ref.value;\n\n return this.input.schema.parse(inputToParse);\n }\n\n getPartial() {\n return this.ref.value;\n }\n\n async end() {\n if (this.stream.closed || this.jsonParser.isEnded || this.errored) {\n return;\n }\n\n return new Promise<void>((resolve, reject) => {\n this.jsonParser.onEnd = resolve;\n this.jsonParser.onError = reject;\n\n this.stream.push(null);\n this.jsonParser.end();\n });\n }\n\n createSnapshot() {\n return { ...super.createSnapshot(), input: this.input, errored: this.errored };\n }\n\n loadSnapshot({ raw, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, { raw: \"\", ...snapshot });\n this.init();\n this.write(raw);\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace ParserField {\n export type inferValue<T> = T extends ParserField<infer L, unknown> ? L : never;\n export type inferPartialValue<T> = T extends ParserField<any, infer L> ? L : never;\n}\n"]}
|
package/dist/parsers/field.js
CHANGED
|
@@ -71,10 +71,10 @@ class JSONParserField extends ParserField {
|
|
|
71
71
|
input;
|
|
72
72
|
stream;
|
|
73
73
|
jsonParser;
|
|
74
|
-
errored;
|
|
74
|
+
errored = false;
|
|
75
75
|
ref;
|
|
76
76
|
constructor(input) {
|
|
77
|
-
super(), this.input = input
|
|
77
|
+
super(), this.input = input;
|
|
78
78
|
if (input.base === void 0) {
|
|
79
79
|
throw new ValueError(`Base must be defined!`);
|
|
80
80
|
}
|