@langchain/angular 0.1.3 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +260 -3
- package/dist/_virtual/_@oxc-project_runtime@0.115.0/helpers/decorate.cjs +9 -0
- package/dist/_virtual/_@oxc-project_runtime@0.115.0/helpers/decorate.js +9 -0
- package/dist/context.cjs +143 -0
- package/dist/context.cjs.map +1 -0
- package/dist/context.d.cts +175 -0
- package/dist/context.d.cts.map +1 -0
- package/dist/context.d.ts +175 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +139 -0
- package/dist/context.js.map +1 -0
- package/dist/index.cjs +111 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +68 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +68 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +102 -4
- package/dist/index.js.map +1 -1
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.1_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27._db5dc2b7d473236f1e1bf7d3e1a7ed18/node_modules/@langchain/langgraph/dist/channels/base.d.cts +83 -0
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.1_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27._db5dc2b7d473236f1e1bf7d3e1a7ed18/node_modules/@langchain/langgraph/dist/channels/base.d.cts.map +1 -0
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.1_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27._db5dc2b7d473236f1e1bf7d3e1a7ed18/node_modules/@langchain/langgraph/dist/channels/base.d.ts +83 -0
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.1_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27._db5dc2b7d473236f1e1bf7d3e1a7ed18/node_modules/@langchain/langgraph/dist/channels/base.d.ts.map +1 -0
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.1_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27._db5dc2b7d473236f1e1bf7d3e1a7ed18/node_modules/@langchain/langgraph/dist/constants.d.cts +42 -0
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.1_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27._db5dc2b7d473236f1e1bf7d3e1a7ed18/node_modules/@langchain/langgraph/dist/constants.d.cts.map +1 -0
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.1_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27._db5dc2b7d473236f1e1bf7d3e1a7ed18/node_modules/@langchain/langgraph/dist/constants.d.ts +42 -0
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.1_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27._db5dc2b7d473236f1e1bf7d3e1a7ed18/node_modules/@langchain/langgraph/dist/constants.d.ts.map +1 -0
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.1_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27._db5dc2b7d473236f1e1bf7d3e1a7ed18/node_modules/@langchain/langgraph/dist/graph/zod/index.d.cts +2 -0
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.1_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27._db5dc2b7d473236f1e1bf7d3e1a7ed18/node_modules/@langchain/langgraph/dist/graph/zod/index.d.ts +2 -0
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.1_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27._db5dc2b7d473236f1e1bf7d3e1a7ed18/node_modules/@langchain/langgraph/dist/graph/zod/meta.d.cts +109 -0
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.1_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27._db5dc2b7d473236f1e1bf7d3e1a7ed18/node_modules/@langchain/langgraph/dist/graph/zod/meta.d.cts.map +1 -0
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.1_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27._db5dc2b7d473236f1e1bf7d3e1a7ed18/node_modules/@langchain/langgraph/dist/graph/zod/meta.d.ts +109 -0
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.1_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27._db5dc2b7d473236f1e1bf7d3e1a7ed18/node_modules/@langchain/langgraph/dist/graph/zod/meta.d.ts.map +1 -0
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.1_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27._db5dc2b7d473236f1e1bf7d3e1a7ed18/node_modules/@langchain/langgraph/dist/graph/zod/plugin.d.cts +31 -0
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.1_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27._db5dc2b7d473236f1e1bf7d3e1a7ed18/node_modules/@langchain/langgraph/dist/graph/zod/plugin.d.cts.map +1 -0
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.1_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27._db5dc2b7d473236f1e1bf7d3e1a7ed18/node_modules/@langchain/langgraph/dist/graph/zod/plugin.d.ts +31 -0
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.1_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27._db5dc2b7d473236f1e1bf7d3e1a7ed18/node_modules/@langchain/langgraph/dist/graph/zod/plugin.d.ts.map +1 -0
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.1_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27._db5dc2b7d473236f1e1bf7d3e1a7ed18/node_modules/@langchain/langgraph/dist/graph/zod/zod-registry.d.cts +49 -0
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.1_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27._db5dc2b7d473236f1e1bf7d3e1a7ed18/node_modules/@langchain/langgraph/dist/graph/zod/zod-registry.d.cts.map +1 -0
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.1_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27._db5dc2b7d473236f1e1bf7d3e1a7ed18/node_modules/@langchain/langgraph/dist/graph/zod/zod-registry.d.ts +49 -0
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.1_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27._db5dc2b7d473236f1e1bf7d3e1a7ed18/node_modules/@langchain/langgraph/dist/graph/zod/zod-registry.d.ts.map +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/ReactAgent.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/ReactAgent.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/index.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/index.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/contextEditing.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/contextEditing.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/dynamicSystemPrompt.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/dynamicSystemPrompt.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/hitl.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/hitl.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/llmToolSelector.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/llmToolSelector.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/modelCallLimit.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/modelCallLimit.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/modelFallback.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/modelFallback.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/modelRetry.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/modelRetry.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/pii.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/pii.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/piiRedaction.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/piiRedaction.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/provider/anthropic/promptCaching.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/provider/anthropic/promptCaching.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/provider/openai/moderation.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/provider/openai/moderation.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/summarization.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/summarization.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/todoListMiddleware.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/todoListMiddleware.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/toolCallLimit.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/toolCallLimit.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/toolEmulator.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/toolEmulator.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/toolRetry.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/toolRetry.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/types.d.cts +2 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware/types.d.ts +2 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware.d.cts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/middleware.d.ts +1 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/types.d.cts +2 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/agents/types.d.ts +2 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/index.d.cts +2 -0
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/index.d.ts +2 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/ZodError.d.cts +155 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/ZodError.d.cts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/ZodError.d.ts +155 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/ZodError.d.ts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/helpers/errorUtil.d.cts +13 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/helpers/errorUtil.d.cts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/helpers/errorUtil.d.ts +13 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/helpers/errorUtil.d.ts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/helpers/parseUtil.d.cts +63 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/helpers/parseUtil.d.cts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/helpers/parseUtil.d.ts +63 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/helpers/parseUtil.d.ts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/helpers/typeAliases.d.cts +5 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/helpers/typeAliases.d.cts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/helpers/typeAliases.d.ts +5 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/helpers/typeAliases.d.ts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/helpers/util.d.cts +64 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/helpers/util.d.cts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/helpers/util.d.ts +64 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/helpers/util.d.ts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/standard-schema.d.cts +106 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/standard-schema.d.cts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/standard-schema.d.ts +106 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/standard-schema.d.ts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/types.d.cts +291 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/types.d.cts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/types.d.ts +291 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/types.d.ts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/checks.d.cts +29 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/checks.d.cts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/checks.d.ts +29 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/checks.d.ts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/core.d.cts +29 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/core.d.cts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/core.d.ts +29 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/core.d.ts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/errors.d.cts +105 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/errors.d.cts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/errors.d.ts +105 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/errors.d.ts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/json-schema.d.cts +70 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/json-schema.d.cts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/json-schema.d.ts +70 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/json-schema.d.ts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/registries.d.cts +24 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/registries.d.cts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/registries.d.ts +24 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/registries.d.ts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/schemas.d.cts +97 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/schemas.d.cts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/schemas.d.ts +97 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/schemas.d.ts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/standard-schema.d.cts +79 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/standard-schema.d.cts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/standard-schema.d.ts +79 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/standard-schema.d.ts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/to-json-schema.d.cts +52 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/to-json-schema.d.cts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/to-json-schema.d.ts +52 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/to-json-schema.d.ts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/util.d.cts +17 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/util.d.cts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/util.d.ts +17 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/util.d.ts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/versions.d.cts +9 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/versions.d.cts.map +1 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/versions.d.ts +9 -0
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/versions.d.ts.map +1 -0
- package/dist/stream.custom.cjs +22 -1
- package/dist/stream.custom.cjs.map +1 -1
- package/dist/stream.custom.js +22 -1
- package/dist/stream.custom.js.map +1 -1
- package/package.json +9 -11
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @langchain/angular
|
|
2
2
|
|
|
3
|
-
Angular SDK for building AI-powered applications with [LangChain](https://
|
|
3
|
+
Angular SDK for building AI-powered applications with [Deep Agents](https://docs.langchain.com/oss/javascript/deepagents/overview), [LangChain](https://docs.langchain.com/oss/javascript/langchain/overview) and [LangGraph](https://docs.langchain.com/oss/javascript/langgraph/overview). It provides a `useStream` function that manages streaming, state, branching, and interrupts using Angular's Signals API.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
@@ -312,6 +312,142 @@ export class ChatComponent {
|
|
|
312
312
|
|
|
313
313
|
Switching threads via `switchThread()` cancels all pending runs and clears the queue.
|
|
314
314
|
|
|
315
|
+
## Service Pattern
|
|
316
|
+
|
|
317
|
+
For projects that prefer Angular's dependency injection, `StreamService` provides an `@Injectable()` base class that wraps `useStream`. Extend it with your own service to enable DI, testability, and shared state across components:
|
|
318
|
+
|
|
319
|
+
```typescript
|
|
320
|
+
import { Injectable, Component, inject } from "@angular/core";
|
|
321
|
+
import { StreamService } from "@langchain/angular";
|
|
322
|
+
import type { BaseMessage } from "langchain";
|
|
323
|
+
|
|
324
|
+
interface ChatState {
|
|
325
|
+
messages: BaseMessage[];
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
@Injectable({ providedIn: "root" })
|
|
329
|
+
export class ChatService extends StreamService<ChatState> {
|
|
330
|
+
constructor() {
|
|
331
|
+
super({
|
|
332
|
+
assistantId: "agent",
|
|
333
|
+
apiUrl: "http://localhost:2024",
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
@Component({
|
|
339
|
+
standalone: true,
|
|
340
|
+
template: `
|
|
341
|
+
<div>
|
|
342
|
+
@for (msg of chat.messages(); track msg.id ?? $index) {
|
|
343
|
+
<div>{{ str(msg.content) }}</div>
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
<button
|
|
347
|
+
[disabled]="chat.isLoading()"
|
|
348
|
+
(click)="onSubmit()"
|
|
349
|
+
>
|
|
350
|
+
Send
|
|
351
|
+
</button>
|
|
352
|
+
</div>
|
|
353
|
+
`,
|
|
354
|
+
})
|
|
355
|
+
export class ChatComponent {
|
|
356
|
+
chat = inject(ChatService);
|
|
357
|
+
|
|
358
|
+
str(v: unknown) {
|
|
359
|
+
return typeof v === "string" ? v : JSON.stringify(v);
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
onSubmit() {
|
|
363
|
+
void this.chat.submit({
|
|
364
|
+
messages: [{ type: "human", content: "Hello!" }],
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
The service exposes the same signals and methods as `useStream` (`values`, `messages`, `isLoading`, `submit`, `stop`, etc.).
|
|
371
|
+
|
|
372
|
+
### Shared State Across Components
|
|
373
|
+
|
|
374
|
+
Because the service is provided through DI, multiple components can inject the same instance and share stream state:
|
|
375
|
+
|
|
376
|
+
```typescript
|
|
377
|
+
@Component({
|
|
378
|
+
standalone: true,
|
|
379
|
+
selector: "app-message-list",
|
|
380
|
+
template: `
|
|
381
|
+
@for (msg of chat.messages(); track msg.id ?? $index) {
|
|
382
|
+
<div>{{ msg.content }}</div>
|
|
383
|
+
}
|
|
384
|
+
`,
|
|
385
|
+
})
|
|
386
|
+
export class MessageListComponent {
|
|
387
|
+
chat = inject(ChatService);
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
@Component({
|
|
391
|
+
standalone: true,
|
|
392
|
+
imports: [MessageListComponent],
|
|
393
|
+
template: `
|
|
394
|
+
<app-message-list />
|
|
395
|
+
<button (click)="onSubmit()">Send</button>
|
|
396
|
+
`,
|
|
397
|
+
})
|
|
398
|
+
export class ChatPageComponent {
|
|
399
|
+
chat = inject(ChatService);
|
|
400
|
+
|
|
401
|
+
onSubmit() {
|
|
402
|
+
void this.chat.submit({
|
|
403
|
+
messages: [{ type: "human", content: "Hello!" }],
|
|
404
|
+
});
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
### Custom Transport with StreamService
|
|
410
|
+
|
|
411
|
+
```typescript
|
|
412
|
+
import { Injectable } from "@angular/core";
|
|
413
|
+
import { StreamService, FetchStreamTransport } from "@langchain/angular";
|
|
414
|
+
import type { BaseMessage } from "langchain";
|
|
415
|
+
|
|
416
|
+
@Injectable({ providedIn: "root" })
|
|
417
|
+
export class CustomChatService extends StreamService<{
|
|
418
|
+
messages: BaseMessage[];
|
|
419
|
+
}> {
|
|
420
|
+
constructor() {
|
|
421
|
+
super({
|
|
422
|
+
transport: new FetchStreamTransport({
|
|
423
|
+
url: "https://my-api.example.com/stream",
|
|
424
|
+
}),
|
|
425
|
+
threadId: null,
|
|
426
|
+
onThreadId: (id) => console.log("Thread created:", id),
|
|
427
|
+
});
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
### Testing
|
|
433
|
+
|
|
434
|
+
Services can be mocked or overridden in tests using Angular's standard DI testing utilities:
|
|
435
|
+
|
|
436
|
+
```typescript
|
|
437
|
+
import { TestBed } from "@angular/core/testing";
|
|
438
|
+
|
|
439
|
+
const mockService = {
|
|
440
|
+
messages: signal([]),
|
|
441
|
+
isLoading: signal(false),
|
|
442
|
+
submit: vi.fn(),
|
|
443
|
+
stop: vi.fn(),
|
|
444
|
+
};
|
|
445
|
+
|
|
446
|
+
TestBed.configureTestingModule({
|
|
447
|
+
providers: [{ provide: ChatService, useValue: mockService }],
|
|
448
|
+
});
|
|
449
|
+
```
|
|
450
|
+
|
|
315
451
|
## Custom Transport
|
|
316
452
|
|
|
317
453
|
Instead of connecting to a LangGraph API, you can provide your own streaming transport. Pass a `transport` object instead of `assistantId` to use a custom backend:
|
|
@@ -371,11 +507,132 @@ export class ChatComponent {
|
|
|
371
507
|
}
|
|
372
508
|
```
|
|
373
509
|
|
|
374
|
-
The custom transport interface returns the same properties as the standard `useStream` function, including `getMessagesMetadata`, `branch`, `setBranch`, `switchThread`, and all message/interrupt/subagent helpers. When using a custom transport, `getMessagesMetadata` returns stream metadata sent alongside messages during streaming; `branch` and `setBranch` provide local branch state management.
|
|
510
|
+
The custom transport interface returns the same properties as the standard `useStream` function, including `getMessagesMetadata`, `branch`, `setBranch`, `switchThread`, and all message/interrupt/subagent helpers. When using a custom transport, `getMessagesMetadata` returns stream metadata sent alongside messages during streaming; `branch` and `setBranch` provide local branch state management. `onFinish` is also supported and receives a synthetic `ThreadState` built from the final locally streamed values; the run metadata argument is `undefined`.
|
|
511
|
+
|
|
512
|
+
## Sharing State with `provideStream`
|
|
513
|
+
|
|
514
|
+
When multiple components need the same stream (a message list, a header, an input bar), use `provideStream` and `injectStream` to share a single stream instance via Angular's dependency injection:
|
|
515
|
+
|
|
516
|
+
```typescript
|
|
517
|
+
import { Component } from "@angular/core";
|
|
518
|
+
import { provideStream, injectStream } from "@langchain/angular";
|
|
519
|
+
|
|
520
|
+
@Component({
|
|
521
|
+
selector: "app-chat-container",
|
|
522
|
+
providers: [provideStream({ assistantId: "agent", apiUrl: "http://localhost:2024" })],
|
|
523
|
+
template: `
|
|
524
|
+
<app-chat-header />
|
|
525
|
+
<app-message-list />
|
|
526
|
+
<app-message-input />
|
|
527
|
+
`,
|
|
528
|
+
})
|
|
529
|
+
export class ChatContainerComponent {}
|
|
530
|
+
|
|
531
|
+
@Component({
|
|
532
|
+
selector: "app-chat-header",
|
|
533
|
+
template: `
|
|
534
|
+
<header>
|
|
535
|
+
<h1>Chat</h1>
|
|
536
|
+
@if (stream.isLoading()) {
|
|
537
|
+
<span>Thinking...</span>
|
|
538
|
+
}
|
|
539
|
+
@if (stream.error()) {
|
|
540
|
+
<span>Error occurred</span>
|
|
541
|
+
}
|
|
542
|
+
</header>
|
|
543
|
+
`,
|
|
544
|
+
})
|
|
545
|
+
export class ChatHeaderComponent {
|
|
546
|
+
stream = injectStream();
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
@Component({
|
|
550
|
+
selector: "app-message-list",
|
|
551
|
+
template: `
|
|
552
|
+
@for (msg of stream.messages(); track msg.id ?? $index) {
|
|
553
|
+
<div>{{ str(msg.content) }}</div>
|
|
554
|
+
}
|
|
555
|
+
`,
|
|
556
|
+
})
|
|
557
|
+
export class MessageListComponent {
|
|
558
|
+
stream = injectStream();
|
|
559
|
+
|
|
560
|
+
str(v: unknown) {
|
|
561
|
+
return typeof v === "string" ? v : JSON.stringify(v);
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
@Component({
|
|
566
|
+
selector: "app-message-input",
|
|
567
|
+
template: `
|
|
568
|
+
<button
|
|
569
|
+
[disabled]="stream.isLoading()"
|
|
570
|
+
(click)="onSubmit()"
|
|
571
|
+
>Send</button>
|
|
572
|
+
`,
|
|
573
|
+
})
|
|
574
|
+
export class MessageInputComponent {
|
|
575
|
+
stream = injectStream();
|
|
576
|
+
|
|
577
|
+
onSubmit() {
|
|
578
|
+
void this.stream.submit({
|
|
579
|
+
messages: [{ type: "human", content: "Hello!" }],
|
|
580
|
+
});
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
```
|
|
584
|
+
|
|
585
|
+
### App-Level Configuration with `provideStreamDefaults`
|
|
586
|
+
|
|
587
|
+
Set default configuration for all `useStream` and `injectStream` calls application-wide:
|
|
588
|
+
|
|
589
|
+
```typescript
|
|
590
|
+
// app.config.ts
|
|
591
|
+
import { ApplicationConfig } from "@angular/core";
|
|
592
|
+
import { provideStreamDefaults } from "@langchain/angular";
|
|
593
|
+
|
|
594
|
+
export const appConfig: ApplicationConfig = {
|
|
595
|
+
providers: [
|
|
596
|
+
provideStreamDefaults({
|
|
597
|
+
apiUrl: "http://localhost:2024",
|
|
598
|
+
}),
|
|
599
|
+
],
|
|
600
|
+
};
|
|
601
|
+
```
|
|
602
|
+
|
|
603
|
+
Then in components, `apiUrl` is inherited automatically:
|
|
604
|
+
|
|
605
|
+
```typescript
|
|
606
|
+
@Component({
|
|
607
|
+
providers: [provideStream({ assistantId: "agent" })],
|
|
608
|
+
template: `...`,
|
|
609
|
+
})
|
|
610
|
+
export class ChatComponent {}
|
|
611
|
+
```
|
|
612
|
+
|
|
613
|
+
### Multiple Agents
|
|
614
|
+
|
|
615
|
+
Use separate `provideStream` entries on different components — Angular's hierarchical injector ensures each subtree gets its own isolated stream:
|
|
616
|
+
|
|
617
|
+
```typescript
|
|
618
|
+
@Component({
|
|
619
|
+
selector: "app-research-panel",
|
|
620
|
+
providers: [provideStream({ assistantId: "researcher", apiUrl: "http://localhost:2024" })],
|
|
621
|
+
template: `<app-message-list /> <app-message-input />`,
|
|
622
|
+
})
|
|
623
|
+
export class ResearchPanelComponent {}
|
|
624
|
+
|
|
625
|
+
@Component({
|
|
626
|
+
selector: "app-writer-panel",
|
|
627
|
+
providers: [provideStream({ assistantId: "writer", apiUrl: "http://localhost:2024" })],
|
|
628
|
+
template: `<app-message-list /> <app-message-input />`,
|
|
629
|
+
})
|
|
630
|
+
export class WriterPanelComponent {}
|
|
631
|
+
```
|
|
375
632
|
|
|
376
633
|
## Playground
|
|
377
634
|
|
|
378
|
-
For complete end-to-end examples with full agentic UIs, visit the [
|
|
635
|
+
For complete end-to-end examples with full agentic UIs, visit the [LangChain UI Playground](https://docs.langchain.com/playground).
|
|
379
636
|
|
|
380
637
|
## License
|
|
381
638
|
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
//#region \0@oxc-project+runtime@0.115.0/helpers/decorate.js
|
|
2
|
+
function __decorate(decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
}
|
|
8
|
+
//#endregion
|
|
9
|
+
exports.__decorate = __decorate;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
//#region \0@oxc-project+runtime@0.115.0/helpers/decorate.js
|
|
2
|
+
function __decorate(decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
}
|
|
8
|
+
//#endregion
|
|
9
|
+
export { __decorate };
|
package/dist/context.cjs
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
const require_index = require("./index.cjs");
|
|
2
|
+
let _angular_core = require("@angular/core");
|
|
3
|
+
//#region src/context.ts
|
|
4
|
+
/**
|
|
5
|
+
* Injection token for stream default configuration.
|
|
6
|
+
* Provide via `provideStreamDefaults()` in your application config.
|
|
7
|
+
*/
|
|
8
|
+
const STREAM_DEFAULTS = new _angular_core.InjectionToken("LANGCHAIN_STREAM_DEFAULTS");
|
|
9
|
+
/**
|
|
10
|
+
* Injection token for a shared stream instance.
|
|
11
|
+
* Provide via `provideStream()` at the component level.
|
|
12
|
+
*/
|
|
13
|
+
const STREAM_INSTANCE = new _angular_core.InjectionToken("LANGCHAIN_STREAM_INSTANCE");
|
|
14
|
+
/**
|
|
15
|
+
* Provides default LangGraph configuration at the application level.
|
|
16
|
+
*
|
|
17
|
+
* Use this in your application's `providers` array to set defaults like
|
|
18
|
+
* `apiUrl` that will be used by all `useStream` and `injectStream` calls.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* // app.config.ts
|
|
23
|
+
* import { ApplicationConfig } from "@angular/core";
|
|
24
|
+
* import { provideStreamDefaults } from "@langchain/angular";
|
|
25
|
+
*
|
|
26
|
+
* export const appConfig: ApplicationConfig = {
|
|
27
|
+
* providers: [
|
|
28
|
+
* provideStreamDefaults({
|
|
29
|
+
* apiUrl: "http://localhost:2024",
|
|
30
|
+
* }),
|
|
31
|
+
* ],
|
|
32
|
+
* };
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
function provideStreamDefaults(defaults) {
|
|
36
|
+
return (0, _angular_core.makeEnvironmentProviders)([{
|
|
37
|
+
provide: STREAM_DEFAULTS,
|
|
38
|
+
useValue: defaults
|
|
39
|
+
}]);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Creates a provider for a shared `useStream` instance at the component level.
|
|
43
|
+
*
|
|
44
|
+
* Add the returned provider to a component's `providers` array so that all
|
|
45
|
+
* child components can access the same stream via `injectStream()`.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```typescript
|
|
49
|
+
* import { Component } from "@angular/core";
|
|
50
|
+
* import { provideStream, injectStream } from "@langchain/angular";
|
|
51
|
+
*
|
|
52
|
+
* @Component({
|
|
53
|
+
* providers: [provideStream({ assistantId: "agent" })],
|
|
54
|
+
* template: `
|
|
55
|
+
* <app-message-list />
|
|
56
|
+
* <app-message-input />
|
|
57
|
+
* `,
|
|
58
|
+
* })
|
|
59
|
+
* export class ChatContainer {}
|
|
60
|
+
*
|
|
61
|
+
* // In child components:
|
|
62
|
+
* @Component({
|
|
63
|
+
* template: `
|
|
64
|
+
* @for (msg of stream.messages(); track msg.id) {
|
|
65
|
+
* <div>{{ msg.content }}</div>
|
|
66
|
+
* }
|
|
67
|
+
* `,
|
|
68
|
+
* })
|
|
69
|
+
* export class MessageListComponent {
|
|
70
|
+
* stream = injectStream();
|
|
71
|
+
* }
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
function provideStream(options) {
|
|
75
|
+
return {
|
|
76
|
+
provide: STREAM_INSTANCE,
|
|
77
|
+
useFactory: () => {
|
|
78
|
+
const defaults = (0, _angular_core.inject)(STREAM_DEFAULTS, { optional: true });
|
|
79
|
+
return require_index.useStream({
|
|
80
|
+
...defaults ?? {},
|
|
81
|
+
...options,
|
|
82
|
+
apiUrl: options.apiUrl ?? defaults?.apiUrl,
|
|
83
|
+
client: options.client ?? defaults?.client
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Injects the shared stream instance from the nearest ancestor that
|
|
90
|
+
* provided one via `provideStream()`.
|
|
91
|
+
*
|
|
92
|
+
* Throws if no ancestor provides a stream instance.
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```typescript
|
|
96
|
+
* import { Component } from "@angular/core";
|
|
97
|
+
* import { injectStream } from "@langchain/angular";
|
|
98
|
+
*
|
|
99
|
+
* @Component({
|
|
100
|
+
* template: `
|
|
101
|
+
* @for (msg of stream.messages(); track msg.id) {
|
|
102
|
+
* <div>{{ msg.content }}</div>
|
|
103
|
+
* }
|
|
104
|
+
* <button
|
|
105
|
+
* [disabled]="stream.isLoading()"
|
|
106
|
+
* (click)="onSubmit()"
|
|
107
|
+
* >Send</button>
|
|
108
|
+
* `,
|
|
109
|
+
* })
|
|
110
|
+
* export class ChatComponent {
|
|
111
|
+
* stream = injectStream();
|
|
112
|
+
*
|
|
113
|
+
* onSubmit() {
|
|
114
|
+
* void this.stream.submit({
|
|
115
|
+
* messages: [{ type: "human", content: "Hello!" }],
|
|
116
|
+
* });
|
|
117
|
+
* }
|
|
118
|
+
* }
|
|
119
|
+
* ```
|
|
120
|
+
*
|
|
121
|
+
* @example With type parameters for full type safety:
|
|
122
|
+
* ```typescript
|
|
123
|
+
* import type { agent } from "./agent";
|
|
124
|
+
*
|
|
125
|
+
* export class ChatComponent {
|
|
126
|
+
* stream = injectStream<typeof agent>();
|
|
127
|
+
* // stream.messages() returns typed messages
|
|
128
|
+
* }
|
|
129
|
+
* ```
|
|
130
|
+
*/
|
|
131
|
+
function injectStream() {
|
|
132
|
+
const instance = (0, _angular_core.inject)(STREAM_INSTANCE, { optional: true });
|
|
133
|
+
if (instance == null) throw new Error("injectStream() requires an ancestor component to provide a stream via provideStream(). Add provideStream({ assistantId: '...' }) to the providers array of a parent component, or use useStream() directly.");
|
|
134
|
+
return instance;
|
|
135
|
+
}
|
|
136
|
+
//#endregion
|
|
137
|
+
exports.STREAM_DEFAULTS = STREAM_DEFAULTS;
|
|
138
|
+
exports.STREAM_INSTANCE = STREAM_INSTANCE;
|
|
139
|
+
exports.injectStream = injectStream;
|
|
140
|
+
exports.provideStream = provideStream;
|
|
141
|
+
exports.provideStreamDefaults = provideStreamDefaults;
|
|
142
|
+
|
|
143
|
+
//# sourceMappingURL=context.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.cjs","names":["InjectionToken","useStream"],"sources":["../src/context.ts"],"sourcesContent":["import {\n InjectionToken,\n inject as angularInject,\n type EnvironmentProviders,\n makeEnvironmentProviders,\n} from \"@angular/core\";\nimport type { BagTemplate } from \"@langchain/langgraph-sdk\";\nimport { Client } from \"@langchain/langgraph-sdk\";\nimport type {\n ResolveStreamOptions,\n InferBag,\n InferStateType,\n UseStreamCustomOptions,\n} from \"@langchain/langgraph-sdk/ui\";\nimport { useStream } from \"./index.js\";\n\n/**\n * Configuration defaults for `useStream` and `injectStream` calls.\n */\nexport interface StreamDefaults {\n /** Base URL of the LangGraph API. */\n apiUrl?: string;\n /** API key for authenticating with the LangGraph API. */\n apiKey?: string;\n /** Pre-configured Client instance. */\n client?: Client;\n}\n\n/**\n * Injection token for stream default configuration.\n * Provide via `provideStreamDefaults()` in your application config.\n */\nexport const STREAM_DEFAULTS = new InjectionToken<StreamDefaults>(\n \"LANGCHAIN_STREAM_DEFAULTS\",\n);\n\n/**\n * Injection token for a shared stream instance.\n * Provide via `provideStream()` at the component level.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const STREAM_INSTANCE = new InjectionToken<any>(\n \"LANGCHAIN_STREAM_INSTANCE\",\n);\n\n/**\n * Provides default LangGraph configuration at the application level.\n *\n * Use this in your application's `providers` array to set defaults like\n * `apiUrl` that will be used by all `useStream` and `injectStream` calls.\n *\n * @example\n * ```typescript\n * // app.config.ts\n * import { ApplicationConfig } from \"@angular/core\";\n * import { provideStreamDefaults } from \"@langchain/angular\";\n *\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideStreamDefaults({\n * apiUrl: \"http://localhost:2024\",\n * }),\n * ],\n * };\n * ```\n */\nexport function provideStreamDefaults(\n defaults: StreamDefaults,\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n { provide: STREAM_DEFAULTS, useValue: defaults },\n ]);\n}\n\n/**\n * Creates a provider for a shared `useStream` instance at the component level.\n *\n * Add the returned provider to a component's `providers` array so that all\n * child components can access the same stream via `injectStream()`.\n *\n * @example\n * ```typescript\n * import { Component } from \"@angular/core\";\n * import { provideStream, injectStream } from \"@langchain/angular\";\n *\n * @Component({\n * providers: [provideStream({ assistantId: \"agent\" })],\n * template: `\n * <app-message-list />\n * <app-message-input />\n * `,\n * })\n * export class ChatContainer {}\n *\n * // In child components:\n * @Component({\n * template: `\n * @for (msg of stream.messages(); track msg.id) {\n * <div>{{ msg.content }}</div>\n * }\n * `,\n * })\n * export class MessageListComponent {\n * stream = injectStream();\n * }\n * ```\n */\nexport function provideStream<\n T = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(\n options:\n | ResolveStreamOptions<T, InferBag<T, Bag>>\n | UseStreamCustomOptions<InferStateType<T>, InferBag<T, Bag>>,\n) {\n return {\n provide: STREAM_INSTANCE,\n useFactory: () => {\n const defaults = angularInject(STREAM_DEFAULTS, { optional: true });\n const merged = {\n ...(defaults ?? {}),\n ...options,\n apiUrl: (options as Record<string, unknown>).apiUrl ?? defaults?.apiUrl,\n client: (options as Record<string, unknown>).client ?? defaults?.client,\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return useStream(merged as any);\n },\n };\n}\n\n/**\n * Injects the shared stream instance from the nearest ancestor that\n * provided one via `provideStream()`.\n *\n * Throws if no ancestor provides a stream instance.\n *\n * @example\n * ```typescript\n * import { Component } from \"@angular/core\";\n * import { injectStream } from \"@langchain/angular\";\n *\n * @Component({\n * template: `\n * @for (msg of stream.messages(); track msg.id) {\n * <div>{{ msg.content }}</div>\n * }\n * <button\n * [disabled]=\"stream.isLoading()\"\n * (click)=\"onSubmit()\"\n * >Send</button>\n * `,\n * })\n * export class ChatComponent {\n * stream = injectStream();\n *\n * onSubmit() {\n * void this.stream.submit({\n * messages: [{ type: \"human\", content: \"Hello!\" }],\n * });\n * }\n * }\n * ```\n *\n * @example With type parameters for full type safety:\n * ```typescript\n * import type { agent } from \"./agent\";\n *\n * export class ChatComponent {\n * stream = injectStream<typeof agent>();\n * // stream.messages() returns typed messages\n * }\n * ```\n */\nexport function injectStream<\n T = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(): ReturnType<typeof useStream<T, Bag>> {\n const instance = angularInject(STREAM_INSTANCE, { optional: true });\n if (instance == null) {\n throw new Error(\n \"injectStream() requires an ancestor component to provide a stream via provideStream(). \" +\n \"Add provideStream({ assistantId: '...' }) to the providers array of a parent component, \" +\n \"or use useStream() directly.\",\n );\n }\n return instance;\n}\n"],"mappings":";;;;;;;AAgCA,MAAa,kBAAkB,IAAIA,cAAAA,eACjC,4BACD;;;;;AAOD,MAAa,kBAAkB,IAAIA,cAAAA,eACjC,4BACD;;;;;;;;;;;;;;;;;;;;;;AAuBD,SAAgB,sBACd,UACsB;AACtB,SAAA,GAAA,cAAA,0BAAgC,CAC9B;EAAE,SAAS;EAAiB,UAAU;EAAU,CACjD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCJ,SAAgB,cAId,SAGA;AACA,QAAO;EACL,SAAS;EACT,kBAAkB;GAChB,MAAM,YAAA,GAAA,cAAA,QAAyB,iBAAiB,EAAE,UAAU,MAAM,CAAC;AAQnE,UAAOC,cAAAA,UAPQ;IACb,GAAI,YAAY,EAAE;IAClB,GAAG;IACH,QAAS,QAAoC,UAAU,UAAU;IACjE,QAAS,QAAoC,UAAU,UAAU;IAClE,CAE8B;;EAElC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CH,SAAgB,eAG0B;CACxC,MAAM,YAAA,GAAA,cAAA,QAAyB,iBAAiB,EAAE,UAAU,MAAM,CAAC;AACnE,KAAI,YAAY,KACd,OAAM,IAAI,MACR,8MAGD;AAEH,QAAO"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { BaseMessage as BaseMessage$1 } from "./node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/index.cjs";
|
|
2
|
+
import { useStream } from "./index.cjs";
|
|
3
|
+
import * as _langchain_langgraph_sdk0 from "@langchain/langgraph-sdk";
|
|
4
|
+
import { BagTemplate, Client } from "@langchain/langgraph-sdk";
|
|
5
|
+
import * as _langchain_core_messages0 from "@langchain/core/messages";
|
|
6
|
+
import * as _langchain_langgraph_sdk_ui0 from "@langchain/langgraph-sdk/ui";
|
|
7
|
+
import { InferBag, InferStateType, ResolveStreamOptions, UseStreamCustomOptions } from "@langchain/langgraph-sdk/ui";
|
|
8
|
+
import * as _angular_core0 from "@angular/core";
|
|
9
|
+
import { EnvironmentProviders, InjectionToken } from "@angular/core";
|
|
10
|
+
|
|
11
|
+
//#region src/context.d.ts
|
|
12
|
+
/**
|
|
13
|
+
* Configuration defaults for `useStream` and `injectStream` calls.
|
|
14
|
+
*/
|
|
15
|
+
interface StreamDefaults {
|
|
16
|
+
/** Base URL of the LangGraph API. */
|
|
17
|
+
apiUrl?: string;
|
|
18
|
+
/** API key for authenticating with the LangGraph API. */
|
|
19
|
+
apiKey?: string;
|
|
20
|
+
/** Pre-configured Client instance. */
|
|
21
|
+
client?: Client;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Injection token for stream default configuration.
|
|
25
|
+
* Provide via `provideStreamDefaults()` in your application config.
|
|
26
|
+
*/
|
|
27
|
+
declare const STREAM_DEFAULTS: InjectionToken<StreamDefaults>;
|
|
28
|
+
/**
|
|
29
|
+
* Injection token for a shared stream instance.
|
|
30
|
+
* Provide via `provideStream()` at the component level.
|
|
31
|
+
*/
|
|
32
|
+
declare const STREAM_INSTANCE: InjectionToken<any>;
|
|
33
|
+
/**
|
|
34
|
+
* Provides default LangGraph configuration at the application level.
|
|
35
|
+
*
|
|
36
|
+
* Use this in your application's `providers` array to set defaults like
|
|
37
|
+
* `apiUrl` that will be used by all `useStream` and `injectStream` calls.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```typescript
|
|
41
|
+
* // app.config.ts
|
|
42
|
+
* import { ApplicationConfig } from "@angular/core";
|
|
43
|
+
* import { provideStreamDefaults } from "@langchain/angular";
|
|
44
|
+
*
|
|
45
|
+
* export const appConfig: ApplicationConfig = {
|
|
46
|
+
* providers: [
|
|
47
|
+
* provideStreamDefaults({
|
|
48
|
+
* apiUrl: "http://localhost:2024",
|
|
49
|
+
* }),
|
|
50
|
+
* ],
|
|
51
|
+
* };
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
declare function provideStreamDefaults(defaults: StreamDefaults): EnvironmentProviders;
|
|
55
|
+
/**
|
|
56
|
+
* Creates a provider for a shared `useStream` instance at the component level.
|
|
57
|
+
*
|
|
58
|
+
* Add the returned provider to a component's `providers` array so that all
|
|
59
|
+
* child components can access the same stream via `injectStream()`.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```typescript
|
|
63
|
+
* import { Component } from "@angular/core";
|
|
64
|
+
* import { provideStream, injectStream } from "@langchain/angular";
|
|
65
|
+
*
|
|
66
|
+
* @Component({
|
|
67
|
+
* providers: [provideStream({ assistantId: "agent" })],
|
|
68
|
+
* template: `
|
|
69
|
+
* <app-message-list />
|
|
70
|
+
* <app-message-input />
|
|
71
|
+
* `,
|
|
72
|
+
* })
|
|
73
|
+
* export class ChatContainer {}
|
|
74
|
+
*
|
|
75
|
+
* // In child components:
|
|
76
|
+
* @Component({
|
|
77
|
+
* template: `
|
|
78
|
+
* @for (msg of stream.messages(); track msg.id) {
|
|
79
|
+
* <div>{{ msg.content }}</div>
|
|
80
|
+
* }
|
|
81
|
+
* `,
|
|
82
|
+
* })
|
|
83
|
+
* export class MessageListComponent {
|
|
84
|
+
* stream = injectStream();
|
|
85
|
+
* }
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
declare function provideStream<T = Record<string, unknown>, Bag extends BagTemplate = BagTemplate>(options: ResolveStreamOptions<T, InferBag<T, Bag>> | UseStreamCustomOptions<InferStateType<T>, InferBag<T, Bag>>): {
|
|
89
|
+
provide: InjectionToken<any>;
|
|
90
|
+
useFactory: () => {
|
|
91
|
+
values: _angular_core0.Signal<Record<string, unknown>>;
|
|
92
|
+
error: _angular_core0.Signal<unknown>;
|
|
93
|
+
isLoading: _angular_core0.WritableSignal<boolean>;
|
|
94
|
+
isThreadLoading: _angular_core0.Signal<boolean>;
|
|
95
|
+
interrupt: _angular_core0.Signal<_langchain_langgraph_sdk0.Interrupt<unknown> | undefined>;
|
|
96
|
+
interrupts: _angular_core0.Signal<_langchain_langgraph_sdk0.Interrupt<unknown>[]>;
|
|
97
|
+
stop: () => Promise<void>;
|
|
98
|
+
branch: _angular_core0.WritableSignal<string>;
|
|
99
|
+
setBranch: (branch: string) => void;
|
|
100
|
+
experimental_branchTree: _angular_core0.Signal<_langchain_langgraph_sdk_ui0.Sequence<Record<string, unknown>>>;
|
|
101
|
+
toolProgress: _angular_core0.Signal<_langchain_langgraph_sdk0.ToolProgress[]>;
|
|
102
|
+
client: Client<_langchain_langgraph_sdk0.DefaultValues, _langchain_langgraph_sdk0.DefaultValues, unknown>;
|
|
103
|
+
assistantId: string;
|
|
104
|
+
joinStream: (runId: string, lastEventId?: string | undefined, options?: {
|
|
105
|
+
streamMode?: _langchain_langgraph_sdk0.StreamMode[] | _langchain_langgraph_sdk0.StreamMode | undefined;
|
|
106
|
+
filter?: ((event: {
|
|
107
|
+
id?: string | undefined;
|
|
108
|
+
event: _langchain_langgraph_sdk0.StreamEvent;
|
|
109
|
+
data: unknown;
|
|
110
|
+
}) => boolean) | undefined;
|
|
111
|
+
} | undefined) => Promise<void>;
|
|
112
|
+
switchThread: (newThreadId: string | null) => void;
|
|
113
|
+
queue: {
|
|
114
|
+
entries: _angular_core0.WritableSignal<readonly _langchain_langgraph_sdk_ui0.QueueEntry<Record<string, unknown>, _langchain_langgraph_sdk_ui0.SubmitOptions<Record<string, unknown>, Record<string, unknown>>>[]>;
|
|
115
|
+
size: _angular_core0.WritableSignal<number>;
|
|
116
|
+
cancel: (id: string) => Promise<boolean>;
|
|
117
|
+
clear: () => Promise<void>;
|
|
118
|
+
};
|
|
119
|
+
messages: _angular_core0.Signal<BaseMessage$1<_langchain_core_messages0.MessageStructure<_langchain_core_messages0.MessageToolSet>, _langchain_core_messages0.MessageType>[]>;
|
|
120
|
+
getMessagesMetadata: (message: BaseMessage$1<_langchain_core_messages0.MessageStructure<_langchain_core_messages0.MessageToolSet>, _langchain_core_messages0.MessageType>, index?: number | undefined) => _langchain_langgraph_sdk_ui0.MessageMetadata<Record<string, unknown>> | undefined;
|
|
121
|
+
history: _angular_core0.Signal<_langchain_langgraph_sdk0.ThreadState<Omit<Record<string, unknown>, "messages"> & {
|
|
122
|
+
messages: BaseMessage$1<_langchain_core_messages0.MessageStructure<_langchain_core_messages0.MessageToolSet>, _langchain_core_messages0.MessageType>[];
|
|
123
|
+
}>[]>;
|
|
124
|
+
submit: (values: {
|
|
125
|
+
[x: string]: unknown;
|
|
126
|
+
} | null | undefined, options?: _langchain_langgraph_sdk_ui0.SubmitOptions<Record<string, unknown>, Record<string, unknown>> | undefined) => Promise<void>;
|
|
127
|
+
};
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* Injects the shared stream instance from the nearest ancestor that
|
|
131
|
+
* provided one via `provideStream()`.
|
|
132
|
+
*
|
|
133
|
+
* Throws if no ancestor provides a stream instance.
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* ```typescript
|
|
137
|
+
* import { Component } from "@angular/core";
|
|
138
|
+
* import { injectStream } from "@langchain/angular";
|
|
139
|
+
*
|
|
140
|
+
* @Component({
|
|
141
|
+
* template: `
|
|
142
|
+
* @for (msg of stream.messages(); track msg.id) {
|
|
143
|
+
* <div>{{ msg.content }}</div>
|
|
144
|
+
* }
|
|
145
|
+
* <button
|
|
146
|
+
* [disabled]="stream.isLoading()"
|
|
147
|
+
* (click)="onSubmit()"
|
|
148
|
+
* >Send</button>
|
|
149
|
+
* `,
|
|
150
|
+
* })
|
|
151
|
+
* export class ChatComponent {
|
|
152
|
+
* stream = injectStream();
|
|
153
|
+
*
|
|
154
|
+
* onSubmit() {
|
|
155
|
+
* void this.stream.submit({
|
|
156
|
+
* messages: [{ type: "human", content: "Hello!" }],
|
|
157
|
+
* });
|
|
158
|
+
* }
|
|
159
|
+
* }
|
|
160
|
+
* ```
|
|
161
|
+
*
|
|
162
|
+
* @example With type parameters for full type safety:
|
|
163
|
+
* ```typescript
|
|
164
|
+
* import type { agent } from "./agent";
|
|
165
|
+
*
|
|
166
|
+
* export class ChatComponent {
|
|
167
|
+
* stream = injectStream<typeof agent>();
|
|
168
|
+
* // stream.messages() returns typed messages
|
|
169
|
+
* }
|
|
170
|
+
* ```
|
|
171
|
+
*/
|
|
172
|
+
declare function injectStream<T = Record<string, unknown>, Bag extends BagTemplate = BagTemplate>(): ReturnType<typeof useStream<T, Bag>>;
|
|
173
|
+
//#endregion
|
|
174
|
+
export { STREAM_DEFAULTS, STREAM_INSTANCE, StreamDefaults, injectStream, provideStream, provideStreamDefaults };
|
|
175
|
+
//# sourceMappingURL=context.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.cts","names":[],"sources":["../src/context.ts"],"mappings":";;;;;;;;;;;;;;UAmBiB,cAAA;;EAEf,MAAA;EAFe;EAIf,MAAA;;EAEA,MAAA,GAAS,MAAA;AAAA;;;;;cAOE,eAAA,EAAe,cAAA,CAAA,cAAA;AAA5B;;;;AAAA,cASa,eAAA,EAAe,cAAA;AAA5B;;;;;AAyBA;;;;;;;;;AAyCA;;;;;;;AAlEA,iBAyBgB,qBAAA,CACd,QAAA,EAAU,cAAA,GACT,oBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAuCa,aAAA,KACV,MAAA,+BACQ,WAAA,GAAc,WAAA,CAAA,CAE1B,OAAA,EACI,oBAAA,CAAqB,CAAA,EAAG,QAAA,CAAS,CAAA,EAAG,GAAA,KACpC,sBAAA,CAAuB,cAAA,CAAe,CAAA,GAAI,QAAA,CAAS,CAAA,EAAG,GAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6D5C,YAAA,KACV,MAAA,+BACQ,WAAA,GAAc,WAAA,CAAA,CAAA,GACvB,UAAA,QAAkB,SAAA,CAAU,CAAA,EAAG,GAAA"}
|