@langchain/angular 0.4.7 → 1.0.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 +79 -584
- package/dist/context.cjs +13 -11
- package/dist/context.cjs.map +1 -1
- package/dist/context.d.cts +7 -76
- package/dist/context.d.cts.map +1 -1
- package/dist/context.d.ts +7 -76
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +13 -11
- package/dist/context.js.map +1 -1
- package/dist/index.cjs +33 -149
- package/dist/index.d.cts +11 -329
- package/dist/index.d.ts +11 -329
- package/dist/index.js +11 -114
- package/dist/inject-media-url.cjs +54 -0
- package/dist/inject-media-url.cjs.map +1 -0
- package/dist/inject-media-url.d.cts +34 -0
- package/dist/inject-media-url.d.cts.map +1 -0
- package/dist/inject-media-url.d.ts +34 -0
- package/dist/inject-media-url.d.ts.map +1 -0
- package/dist/inject-media-url.js +54 -0
- package/dist/inject-media-url.js.map +1 -0
- package/dist/inject-projection.cjs +74 -0
- package/dist/inject-projection.cjs.map +1 -0
- package/dist/inject-projection.d.cts +34 -0
- package/dist/inject-projection.d.cts.map +1 -0
- package/dist/inject-projection.d.ts +34 -0
- package/dist/inject-projection.d.ts.map +1 -0
- package/dist/inject-projection.js +74 -0
- package/dist/inject-projection.js.map +1 -0
- package/dist/inject-stream.cjs +27 -0
- package/dist/inject-stream.cjs.map +1 -0
- package/dist/inject-stream.d.cts +31 -0
- package/dist/inject-stream.d.cts.map +1 -0
- package/dist/inject-stream.d.ts +31 -0
- package/dist/inject-stream.d.ts.map +1 -0
- package/dist/inject-stream.js +27 -0
- package/dist/inject-stream.js.map +1 -0
- package/dist/selectors-metadata.cjs +39 -0
- package/dist/selectors-metadata.cjs.map +1 -0
- package/dist/selectors-metadata.d.cts +28 -0
- package/dist/selectors-metadata.d.cts.map +1 -0
- package/dist/selectors-metadata.d.ts +28 -0
- package/dist/selectors-metadata.d.ts.map +1 -0
- package/dist/selectors-metadata.js +39 -0
- package/dist/selectors-metadata.js.map +1 -0
- package/dist/selectors-queue.cjs +21 -0
- package/dist/selectors-queue.cjs.map +1 -0
- package/dist/selectors-queue.d.cts +36 -0
- package/dist/selectors-queue.d.cts.map +1 -0
- package/dist/selectors-queue.d.ts +36 -0
- package/dist/selectors-queue.d.ts.map +1 -0
- package/dist/selectors-queue.js +21 -0
- package/dist/selectors-queue.js.map +1 -0
- package/dist/selectors.cjs +144 -0
- package/dist/selectors.cjs.map +1 -0
- package/dist/selectors.d.cts +111 -0
- package/dist/selectors.d.cts.map +1 -0
- package/dist/selectors.d.ts +111 -0
- package/dist/selectors.d.ts.map +1 -0
- package/dist/selectors.js +136 -0
- package/dist/selectors.js.map +1 -0
- package/dist/stream-service.cjs +84 -0
- package/dist/stream-service.cjs.map +1 -0
- package/dist/stream-service.d.cts +67 -0
- package/dist/stream-service.d.cts.map +1 -0
- package/dist/stream-service.d.ts +67 -0
- package/dist/stream-service.d.ts.map +1 -0
- package/dist/stream-service.js +79 -0
- package/dist/stream-service.js.map +1 -0
- package/dist/use-stream.cjs +155 -0
- package/dist/use-stream.cjs.map +1 -0
- package/dist/use-stream.d.cts +97 -0
- package/dist/use-stream.d.cts.map +1 -0
- package/dist/use-stream.d.ts +97 -0
- package/dist/use-stream.d.ts.map +1 -0
- package/dist/use-stream.js +153 -0
- package/dist/use-stream.js.map +1 -0
- package/package.json +26 -25
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.6_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33._a807b9e815d3fdb40e51117306822e31/node_modules/@langchain/langgraph/dist/channels/base.d.cts +0 -83
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.6_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33._a807b9e815d3fdb40e51117306822e31/node_modules/@langchain/langgraph/dist/channels/base.d.cts.map +0 -1
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.6_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33._a807b9e815d3fdb40e51117306822e31/node_modules/@langchain/langgraph/dist/channels/base.d.ts +0 -83
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.6_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33._a807b9e815d3fdb40e51117306822e31/node_modules/@langchain/langgraph/dist/channels/base.d.ts.map +0 -1
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.6_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33._a807b9e815d3fdb40e51117306822e31/node_modules/@langchain/langgraph/dist/constants.d.cts +0 -42
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.6_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33._a807b9e815d3fdb40e51117306822e31/node_modules/@langchain/langgraph/dist/constants.d.cts.map +0 -1
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.6_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33._a807b9e815d3fdb40e51117306822e31/node_modules/@langchain/langgraph/dist/constants.d.ts +0 -42
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.6_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33._a807b9e815d3fdb40e51117306822e31/node_modules/@langchain/langgraph/dist/constants.d.ts.map +0 -1
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.6_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33._a807b9e815d3fdb40e51117306822e31/node_modules/@langchain/langgraph/dist/graph/zod/index.d.cts +0 -2
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.6_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33._a807b9e815d3fdb40e51117306822e31/node_modules/@langchain/langgraph/dist/graph/zod/index.d.ts +0 -2
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.6_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33._a807b9e815d3fdb40e51117306822e31/node_modules/@langchain/langgraph/dist/graph/zod/meta.d.cts +0 -109
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.6_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33._a807b9e815d3fdb40e51117306822e31/node_modules/@langchain/langgraph/dist/graph/zod/meta.d.cts.map +0 -1
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.6_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33._a807b9e815d3fdb40e51117306822e31/node_modules/@langchain/langgraph/dist/graph/zod/meta.d.ts +0 -109
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.6_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33._a807b9e815d3fdb40e51117306822e31/node_modules/@langchain/langgraph/dist/graph/zod/meta.d.ts.map +0 -1
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.6_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33._a807b9e815d3fdb40e51117306822e31/node_modules/@langchain/langgraph/dist/graph/zod/zod-registry.d.cts +0 -49
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.6_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33._a807b9e815d3fdb40e51117306822e31/node_modules/@langchain/langgraph/dist/graph/zod/zod-registry.d.cts.map +0 -1
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.6_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33._a807b9e815d3fdb40e51117306822e31/node_modules/@langchain/langgraph/dist/graph/zod/zod-registry.d.ts +0 -49
- package/dist/node_modules/.pnpm/@langchain_langgraph@1.2.6_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33._a807b9e815d3fdb40e51117306822e31/node_modules/@langchain/langgraph/dist/graph/zod/zod-registry.d.ts.map +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/ReactAgent.d.cts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/ReactAgent.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/index.d.cts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/index.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/contextEditing.d.cts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/contextEditing.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/dynamicSystemPrompt.d.cts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/dynamicSystemPrompt.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/hitl.d.cts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/hitl.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/llmToolSelector.d.cts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/llmToolSelector.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/modelCallLimit.d.cts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/modelCallLimit.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/modelFallback.d.cts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/modelFallback.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/modelRetry.d.cts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/modelRetry.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/pii.d.cts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/pii.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/piiRedaction.d.cts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/piiRedaction.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/provider/anthropic/promptCaching.d.cts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/provider/anthropic/promptCaching.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/provider/openai/moderation.d.cts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/provider/openai/moderation.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/summarization.d.cts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/summarization.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/todoListMiddleware.d.cts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/todoListMiddleware.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/toolCallLimit.d.cts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/toolCallLimit.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/toolEmulator.d.cts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/toolEmulator.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/toolRetry.d.cts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/toolRetry.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/types.d.cts +0 -2
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware/types.d.ts +0 -2
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware.d.cts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/middleware.d.ts +0 -1
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/types.d.cts +0 -2
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/agents/types.d.ts +0 -2
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/index.d.cts +0 -2
- package/dist/node_modules/.pnpm/langchain@1.3.0_@langchain_core@1.1.40_@opentelemetry_api@1.9.0_openai@6.33.0_ws@8.19.0_41511a57baf32de01f36b804226da973/node_modules/langchain/dist/index.d.ts +0 -2
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/checks.d.cts +0 -29
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/checks.d.cts.map +0 -1
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/checks.d.ts +0 -29
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/checks.d.ts.map +0 -1
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/core.d.cts +0 -29
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/core.d.cts.map +0 -1
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/core.d.ts +0 -29
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/core.d.ts.map +0 -1
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/errors.d.cts +0 -105
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/errors.d.cts.map +0 -1
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/errors.d.ts +0 -105
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/errors.d.ts.map +0 -1
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/json-schema.d.cts +0 -70
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/json-schema.d.cts.map +0 -1
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/json-schema.d.ts +0 -70
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/json-schema.d.ts.map +0 -1
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/registries.d.cts +0 -24
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/registries.d.cts.map +0 -1
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/registries.d.ts +0 -24
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/registries.d.ts.map +0 -1
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/schemas.d.cts +0 -97
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/schemas.d.cts.map +0 -1
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/schemas.d.ts +0 -97
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/schemas.d.ts.map +0 -1
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/standard-schema.d.cts +0 -79
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/standard-schema.d.cts.map +0 -1
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/standard-schema.d.ts +0 -79
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/standard-schema.d.ts.map +0 -1
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/to-json-schema.d.cts +0 -52
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/to-json-schema.d.cts.map +0 -1
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/to-json-schema.d.ts +0 -52
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/to-json-schema.d.ts.map +0 -1
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/util.d.cts +0 -17
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/util.d.cts.map +0 -1
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/util.d.ts +0 -17
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/util.d.ts.map +0 -1
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/versions.d.cts +0 -9
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/versions.d.cts.map +0 -1
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/versions.d.ts +0 -9
- package/dist/node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/versions.d.ts.map +0 -1
- package/dist/stream-service-instance.d.cts +0 -70
- package/dist/stream-service-instance.d.cts.map +0 -1
- package/dist/stream-service-instance.d.ts +0 -70
- package/dist/stream-service-instance.d.ts.map +0 -1
- package/dist/stream.custom.cjs +0 -117
- package/dist/stream.custom.cjs.map +0 -1
- package/dist/stream.custom.d.cts +0 -45
- package/dist/stream.custom.d.cts.map +0 -1
- package/dist/stream.custom.d.ts +0 -45
- package/dist/stream.custom.d.ts.map +0 -1
- package/dist/stream.custom.js +0 -116
- package/dist/stream.custom.js.map +0 -1
- package/dist/stream.lgp.cjs +0 -174
- package/dist/stream.lgp.cjs.map +0 -1
- package/dist/stream.lgp.d.cts +0 -57
- package/dist/stream.lgp.d.cts.map +0 -1
- package/dist/stream.lgp.d.ts +0 -57
- package/dist/stream.lgp.d.ts.map +0 -1
- package/dist/stream.lgp.js +0 -174
- package/dist/stream.lgp.js.map +0 -1
- package/dist/subagents.cjs +0 -76
- package/dist/subagents.cjs.map +0 -1
- package/dist/subagents.js +0 -76
- package/dist/subagents.js.map +0 -1
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
const require_use_stream = require("./use-stream.cjs");
|
|
2
|
+
let _angular_core = require("@angular/core");
|
|
3
|
+
//#region src/selectors-queue.ts
|
|
4
|
+
function injectSubmissionQueue(stream) {
|
|
5
|
+
const destroyRef = (0, _angular_core.inject)(_angular_core.DestroyRef);
|
|
6
|
+
const controller = stream[require_use_stream.STREAM_CONTROLLER];
|
|
7
|
+
const store = controller.queueStore;
|
|
8
|
+
const entriesSignal = (0, _angular_core.signal)(store.getSnapshot());
|
|
9
|
+
const unsubscribe = store.subscribe(() => entriesSignal.set(store.getSnapshot()));
|
|
10
|
+
destroyRef.onDestroy(unsubscribe);
|
|
11
|
+
return {
|
|
12
|
+
entries: (0, _angular_core.computed)(() => entriesSignal()),
|
|
13
|
+
size: (0, _angular_core.computed)(() => entriesSignal().length),
|
|
14
|
+
cancel: (id) => controller.cancelQueued(id),
|
|
15
|
+
clear: () => controller.clearQueue()
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
exports.injectSubmissionQueue = injectSubmissionQueue;
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=selectors-queue.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectors-queue.cjs","names":["DestroyRef","STREAM_CONTROLLER"],"sources":["../src/selectors-queue.ts"],"sourcesContent":["import {\n DestroyRef,\n computed,\n inject,\n signal,\n type Signal,\n} from \"@angular/core\";\nimport type {\n SubmissionQueueEntry,\n SubmissionQueueSnapshot,\n} from \"@langchain/langgraph-sdk/stream\";\nimport {\n STREAM_CONTROLLER,\n type AnyStream,\n type UseStreamReturn,\n} from \"./use-stream.js\";\n\n/**\n * Reactive handle on the server-side submission queue.\n *\n * Populated when `submit()` is invoked with\n * `multitaskStrategy: \"enqueue\"` while another run is in flight. The\n * returned `entries` signal is stable per snapshot so consumers can\n * feed it straight into Angular `@for` loops:\n *\n * ```html\n * @for (entry of queue.entries(); track entry.id) {\n * <div>{{ entry.values | json }}</div>\n * }\n * ```\n *\n * Today the queue is maintained client-side; once the server starts\n * emitting a dedicated queue channel (roadmap A0.3) the controller\n * will mirror that state directly — the selector surface will not\n * change.\n */\nexport interface InjectSubmissionQueueReturn<\n StateType extends object = Record<string, unknown>,\n> {\n readonly entries: Signal<SubmissionQueueSnapshot<StateType>>;\n readonly size: Signal<number>;\n cancel(id: string): Promise<boolean>;\n clear(): Promise<void>;\n}\n\ntype StreamHandle<StateType extends object> = UseStreamReturn<\n StateType,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any\n>;\n\nexport function injectSubmissionQueue<StateType extends object>(\n stream: StreamHandle<StateType>\n): InjectSubmissionQueueReturn<StateType>;\nexport function injectSubmissionQueue(\n stream: AnyStream\n): InjectSubmissionQueueReturn;\nexport function injectSubmissionQueue(\n stream: AnyStream\n): InjectSubmissionQueueReturn {\n const destroyRef = inject(DestroyRef);\n const controller = stream[STREAM_CONTROLLER];\n const store = controller.queueStore;\n\n const entriesSignal = signal<SubmissionQueueSnapshot>(store.getSnapshot());\n const unsubscribe = store.subscribe(() =>\n entriesSignal.set(store.getSnapshot())\n );\n destroyRef.onDestroy(unsubscribe);\n\n const entries = computed(() => entriesSignal());\n const size = computed(() => entriesSignal().length);\n\n return {\n entries,\n size,\n cancel: (id) => controller.cancelQueued(id),\n clear: () => controller.clearQueue(),\n };\n}\n\nexport type { SubmissionQueueEntry, SubmissionQueueSnapshot };\n"],"mappings":";;;AA2DA,SAAgB,sBACd,QAC6B;CAC7B,MAAM,cAAA,GAAA,cAAA,QAAoBA,cAAAA,WAAW;CACrC,MAAM,aAAa,OAAOC,mBAAAA;CAC1B,MAAM,QAAQ,WAAW;CAEzB,MAAM,iBAAA,GAAA,cAAA,QAAgD,MAAM,aAAa,CAAC;CAC1E,MAAM,cAAc,MAAM,gBACxB,cAAc,IAAI,MAAM,aAAa,CAAC,CACvC;AACD,YAAW,UAAU,YAAY;AAKjC,QAAO;EACL,UAAA,GAAA,cAAA,gBAJ6B,eAAe,CAAC;EAK7C,OAAA,GAAA,cAAA,gBAJ0B,eAAe,CAAC,OAAO;EAKjD,SAAS,OAAO,WAAW,aAAa,GAAG;EAC3C,aAAa,WAAW,YAAY;EACrC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { AnyStream, UseStreamReturn } from "./use-stream.cjs";
|
|
2
|
+
import { SubmissionQueueEntry, SubmissionQueueSnapshot } from "@langchain/langgraph-sdk/stream";
|
|
3
|
+
import { Signal } from "@angular/core";
|
|
4
|
+
|
|
5
|
+
//#region src/selectors-queue.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* Reactive handle on the server-side submission queue.
|
|
8
|
+
*
|
|
9
|
+
* Populated when `submit()` is invoked with
|
|
10
|
+
* `multitaskStrategy: "enqueue"` while another run is in flight. The
|
|
11
|
+
* returned `entries` signal is stable per snapshot so consumers can
|
|
12
|
+
* feed it straight into Angular `@for` loops:
|
|
13
|
+
*
|
|
14
|
+
* ```html
|
|
15
|
+
* @for (entry of queue.entries(); track entry.id) {
|
|
16
|
+
* <div>{{ entry.values | json }}</div>
|
|
17
|
+
* }
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* Today the queue is maintained client-side; once the server starts
|
|
21
|
+
* emitting a dedicated queue channel (roadmap A0.3) the controller
|
|
22
|
+
* will mirror that state directly — the selector surface will not
|
|
23
|
+
* change.
|
|
24
|
+
*/
|
|
25
|
+
interface InjectSubmissionQueueReturn<StateType extends object = Record<string, unknown>> {
|
|
26
|
+
readonly entries: Signal<SubmissionQueueSnapshot<StateType>>;
|
|
27
|
+
readonly size: Signal<number>;
|
|
28
|
+
cancel(id: string): Promise<boolean>;
|
|
29
|
+
clear(): Promise<void>;
|
|
30
|
+
}
|
|
31
|
+
type StreamHandle<StateType extends object> = UseStreamReturn<StateType, any, any>;
|
|
32
|
+
declare function injectSubmissionQueue<StateType extends object>(stream: StreamHandle<StateType>): InjectSubmissionQueueReturn<StateType>;
|
|
33
|
+
declare function injectSubmissionQueue(stream: AnyStream): InjectSubmissionQueueReturn;
|
|
34
|
+
//#endregion
|
|
35
|
+
export { InjectSubmissionQueueReturn, type SubmissionQueueEntry, type SubmissionQueueSnapshot, injectSubmissionQueue };
|
|
36
|
+
//# sourceMappingURL=selectors-queue.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectors-queue.d.cts","names":[],"sources":["../src/selectors-queue.ts"],"mappings":";;;;;;;AAoCA;;;;;;;;;;;;;;;;;UAAiB,2BAAA,4BACY,MAAA;EAAA,SAElB,OAAA,EAAS,MAAA,CAAO,uBAAA,CAAwB,SAAA;EAAA,SACxC,IAAA,EAAM,MAAA;EACf,MAAA,CAAO,EAAA,WAAa,OAAA;EACpB,KAAA,IAAS,OAAA;AAAA;AAAA,KAGN,YAAA,6BAAyC,eAAA,CAC5C,SAAA;AAAA,iBAOc,qBAAA,0BAAA,CACd,MAAA,EAAQ,YAAA,CAAa,SAAA,IACpB,2BAAA,CAA4B,SAAA;AAAA,iBACf,qBAAA,CACd,MAAA,EAAQ,SAAA,GACP,2BAAA"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { AnyStream, UseStreamReturn } from "./use-stream.js";
|
|
2
|
+
import { Signal } from "@angular/core";
|
|
3
|
+
import { SubmissionQueueEntry, SubmissionQueueSnapshot } from "@langchain/langgraph-sdk/stream";
|
|
4
|
+
|
|
5
|
+
//#region src/selectors-queue.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* Reactive handle on the server-side submission queue.
|
|
8
|
+
*
|
|
9
|
+
* Populated when `submit()` is invoked with
|
|
10
|
+
* `multitaskStrategy: "enqueue"` while another run is in flight. The
|
|
11
|
+
* returned `entries` signal is stable per snapshot so consumers can
|
|
12
|
+
* feed it straight into Angular `@for` loops:
|
|
13
|
+
*
|
|
14
|
+
* ```html
|
|
15
|
+
* @for (entry of queue.entries(); track entry.id) {
|
|
16
|
+
* <div>{{ entry.values | json }}</div>
|
|
17
|
+
* }
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* Today the queue is maintained client-side; once the server starts
|
|
21
|
+
* emitting a dedicated queue channel (roadmap A0.3) the controller
|
|
22
|
+
* will mirror that state directly — the selector surface will not
|
|
23
|
+
* change.
|
|
24
|
+
*/
|
|
25
|
+
interface InjectSubmissionQueueReturn<StateType extends object = Record<string, unknown>> {
|
|
26
|
+
readonly entries: Signal<SubmissionQueueSnapshot<StateType>>;
|
|
27
|
+
readonly size: Signal<number>;
|
|
28
|
+
cancel(id: string): Promise<boolean>;
|
|
29
|
+
clear(): Promise<void>;
|
|
30
|
+
}
|
|
31
|
+
type StreamHandle<StateType extends object> = UseStreamReturn<StateType, any, any>;
|
|
32
|
+
declare function injectSubmissionQueue<StateType extends object>(stream: StreamHandle<StateType>): InjectSubmissionQueueReturn<StateType>;
|
|
33
|
+
declare function injectSubmissionQueue(stream: AnyStream): InjectSubmissionQueueReturn;
|
|
34
|
+
//#endregion
|
|
35
|
+
export { InjectSubmissionQueueReturn, type SubmissionQueueEntry, type SubmissionQueueSnapshot, injectSubmissionQueue };
|
|
36
|
+
//# sourceMappingURL=selectors-queue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectors-queue.d.ts","names":[],"sources":["../src/selectors-queue.ts"],"mappings":";;;;;;;AAoCA;;;;;;;;;;;;;;;;;UAAiB,2BAAA,4BACY,MAAA;EAAA,SAElB,OAAA,EAAS,MAAA,CAAO,uBAAA,CAAwB,SAAA;EAAA,SACxC,IAAA,EAAM,MAAA;EACf,MAAA,CAAO,EAAA,WAAa,OAAA;EACpB,KAAA,IAAS,OAAA;AAAA;AAAA,KAGN,YAAA,6BAAyC,eAAA,CAC5C,SAAA;AAAA,iBAOc,qBAAA,0BAAA,CACd,MAAA,EAAQ,YAAA,CAAa,SAAA,IACpB,2BAAA,CAA4B,SAAA;AAAA,iBACf,qBAAA,CACd,MAAA,EAAQ,SAAA,GACP,2BAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { STREAM_CONTROLLER } from "./use-stream.js";
|
|
2
|
+
import { DestroyRef, computed, inject, signal } from "@angular/core";
|
|
3
|
+
//#region src/selectors-queue.ts
|
|
4
|
+
function injectSubmissionQueue(stream) {
|
|
5
|
+
const destroyRef = inject(DestroyRef);
|
|
6
|
+
const controller = stream[STREAM_CONTROLLER];
|
|
7
|
+
const store = controller.queueStore;
|
|
8
|
+
const entriesSignal = signal(store.getSnapshot());
|
|
9
|
+
const unsubscribe = store.subscribe(() => entriesSignal.set(store.getSnapshot()));
|
|
10
|
+
destroyRef.onDestroy(unsubscribe);
|
|
11
|
+
return {
|
|
12
|
+
entries: computed(() => entriesSignal()),
|
|
13
|
+
size: computed(() => entriesSignal().length),
|
|
14
|
+
cancel: (id) => controller.cancelQueued(id),
|
|
15
|
+
clear: () => controller.clearQueue()
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
export { injectSubmissionQueue };
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=selectors-queue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectors-queue.js","names":[],"sources":["../src/selectors-queue.ts"],"sourcesContent":["import {\n DestroyRef,\n computed,\n inject,\n signal,\n type Signal,\n} from \"@angular/core\";\nimport type {\n SubmissionQueueEntry,\n SubmissionQueueSnapshot,\n} from \"@langchain/langgraph-sdk/stream\";\nimport {\n STREAM_CONTROLLER,\n type AnyStream,\n type UseStreamReturn,\n} from \"./use-stream.js\";\n\n/**\n * Reactive handle on the server-side submission queue.\n *\n * Populated when `submit()` is invoked with\n * `multitaskStrategy: \"enqueue\"` while another run is in flight. The\n * returned `entries` signal is stable per snapshot so consumers can\n * feed it straight into Angular `@for` loops:\n *\n * ```html\n * @for (entry of queue.entries(); track entry.id) {\n * <div>{{ entry.values | json }}</div>\n * }\n * ```\n *\n * Today the queue is maintained client-side; once the server starts\n * emitting a dedicated queue channel (roadmap A0.3) the controller\n * will mirror that state directly — the selector surface will not\n * change.\n */\nexport interface InjectSubmissionQueueReturn<\n StateType extends object = Record<string, unknown>,\n> {\n readonly entries: Signal<SubmissionQueueSnapshot<StateType>>;\n readonly size: Signal<number>;\n cancel(id: string): Promise<boolean>;\n clear(): Promise<void>;\n}\n\ntype StreamHandle<StateType extends object> = UseStreamReturn<\n StateType,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any\n>;\n\nexport function injectSubmissionQueue<StateType extends object>(\n stream: StreamHandle<StateType>\n): InjectSubmissionQueueReturn<StateType>;\nexport function injectSubmissionQueue(\n stream: AnyStream\n): InjectSubmissionQueueReturn;\nexport function injectSubmissionQueue(\n stream: AnyStream\n): InjectSubmissionQueueReturn {\n const destroyRef = inject(DestroyRef);\n const controller = stream[STREAM_CONTROLLER];\n const store = controller.queueStore;\n\n const entriesSignal = signal<SubmissionQueueSnapshot>(store.getSnapshot());\n const unsubscribe = store.subscribe(() =>\n entriesSignal.set(store.getSnapshot())\n );\n destroyRef.onDestroy(unsubscribe);\n\n const entries = computed(() => entriesSignal());\n const size = computed(() => entriesSignal().length);\n\n return {\n entries,\n size,\n cancel: (id) => controller.cancelQueued(id),\n clear: () => controller.clearQueue(),\n };\n}\n\nexport type { SubmissionQueueEntry, SubmissionQueueSnapshot };\n"],"mappings":";;;AA2DA,SAAgB,sBACd,QAC6B;CAC7B,MAAM,aAAa,OAAO,WAAW;CACrC,MAAM,aAAa,OAAO;CAC1B,MAAM,QAAQ,WAAW;CAEzB,MAAM,gBAAgB,OAAgC,MAAM,aAAa,CAAC;CAC1E,MAAM,cAAc,MAAM,gBACxB,cAAc,IAAI,MAAM,aAAa,CAAC,CACvC;AACD,YAAW,UAAU,YAAY;AAKjC,QAAO;EACL,SAJc,eAAe,eAAe,CAAC;EAK7C,MAJW,eAAe,eAAe,CAAC,OAAO;EAKjD,SAAS,OAAO,WAAW,aAAa,GAAG;EAC3C,aAAa,WAAW,YAAY;EACrC"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
const require_use_stream = require("./use-stream.cjs");
|
|
2
|
+
const require_inject_projection = require("./inject-projection.cjs");
|
|
3
|
+
let _angular_core = require("@angular/core");
|
|
4
|
+
let _langchain_langgraph_sdk_stream = require("@langchain/langgraph-sdk/stream");
|
|
5
|
+
//#region src/selectors.ts
|
|
6
|
+
const EMPTY_NAMESPACE = [];
|
|
7
|
+
function resolveNamespace(target) {
|
|
8
|
+
if (target == null) return EMPTY_NAMESPACE;
|
|
9
|
+
if (Array.isArray(target)) return target;
|
|
10
|
+
return target.namespace ?? EMPTY_NAMESPACE;
|
|
11
|
+
}
|
|
12
|
+
function isRoot(namespace) {
|
|
13
|
+
return namespace.length === 0;
|
|
14
|
+
}
|
|
15
|
+
function namespaceKey(namespace) {
|
|
16
|
+
return namespace.join(_langchain_langgraph_sdk_stream.NAMESPACE_SEPARATOR);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Resolve a target or target-signal into a reactive
|
|
20
|
+
* `[namespace, key]` pair. The helper returns plain signals so
|
|
21
|
+
* `injectProjection` can track them via its internal effect.
|
|
22
|
+
*/
|
|
23
|
+
function normalizeTarget(target, prefix) {
|
|
24
|
+
if ((0, _angular_core.isSignal)(target)) {
|
|
25
|
+
const namespace = (0, _angular_core.computed)(() => resolveNamespace(target()));
|
|
26
|
+
return {
|
|
27
|
+
namespace,
|
|
28
|
+
key: (0, _angular_core.computed)(() => `${prefix}|${namespaceKey(namespace())}`),
|
|
29
|
+
isRootSignal: (0, _angular_core.computed)(() => isRoot(namespace()))
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
const ns = resolveNamespace(target);
|
|
33
|
+
const staticKey = `${prefix}|${namespaceKey(ns)}`;
|
|
34
|
+
return {
|
|
35
|
+
namespace: (0, _angular_core.computed)(() => ns),
|
|
36
|
+
key: (0, _angular_core.computed)(() => staticKey),
|
|
37
|
+
isRootSignal: (0, _angular_core.computed)(() => isRoot(ns))
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Subscribe to a scoped `messages` stream.
|
|
42
|
+
*
|
|
43
|
+
* Contract:
|
|
44
|
+
* - At the root (no `target`) this returns `stream.messages` — the
|
|
45
|
+
* always-on root projection; no extra subscription is opened.
|
|
46
|
+
* - For any non-root namespace, call-time triggers a ref-counted
|
|
47
|
+
* `messages` subscription scoped to that namespace. The
|
|
48
|
+
* subscription is released automatically when the calling
|
|
49
|
+
* component / service is destroyed (and the registry closes the
|
|
50
|
+
* underlying server subscription when the last consumer leaves).
|
|
51
|
+
*
|
|
52
|
+
* Messages are always `BaseMessage` class instances from
|
|
53
|
+
* `@langchain/core/messages`.
|
|
54
|
+
*/
|
|
55
|
+
function injectMessages(stream, target) {
|
|
56
|
+
const { namespace, key, isRootSignal } = normalizeTarget(target, "messages");
|
|
57
|
+
const scoped = require_inject_projection.injectProjection((0, _angular_core.computed)(() => isRootSignal() ? null : require_use_stream.getRegistry(stream)), () => (0, _langchain_langgraph_sdk_stream.messagesProjection)(namespace()), key, EMPTY_MESSAGES);
|
|
58
|
+
return (0, _angular_core.computed)(() => isRootSignal() ? stream.messages() : scoped());
|
|
59
|
+
}
|
|
60
|
+
const EMPTY_MESSAGES = [];
|
|
61
|
+
/**
|
|
62
|
+
* Subscribe to a scoped `tools` (tool-call) stream. Same target and
|
|
63
|
+
* lifecycle rules as {@link injectMessages}; at the root this returns
|
|
64
|
+
* `stream.toolCalls` directly.
|
|
65
|
+
*/
|
|
66
|
+
function injectToolCalls(stream, target) {
|
|
67
|
+
const { namespace, key, isRootSignal } = normalizeTarget(target, "toolCalls");
|
|
68
|
+
const scoped = require_inject_projection.injectProjection((0, _angular_core.computed)(() => isRootSignal() ? null : require_use_stream.getRegistry(stream)), () => (0, _langchain_langgraph_sdk_stream.toolCallsProjection)(namespace()), key, EMPTY_TOOLCALLS);
|
|
69
|
+
return (0, _angular_core.computed)(() => isRootSignal() ? stream.toolCalls() : scoped());
|
|
70
|
+
}
|
|
71
|
+
const EMPTY_TOOLCALLS = [];
|
|
72
|
+
function injectValues(stream, target, options) {
|
|
73
|
+
const messagesKey = options?.messagesKey ?? "messages";
|
|
74
|
+
const { namespace, key, isRootSignal } = normalizeTarget(target, `values|${messagesKey}`);
|
|
75
|
+
const scoped = require_inject_projection.injectProjection((0, _angular_core.computed)(() => isRootSignal() ? null : require_use_stream.getRegistry(stream)), () => (0, _langchain_langgraph_sdk_stream.valuesProjection)(namespace(), messagesKey), key, void 0);
|
|
76
|
+
return (0, _angular_core.computed)(() => isRootSignal() ? stream.values() : scoped());
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Subscribe to a `custom:<name>` stream extension — the most recent
|
|
80
|
+
* payload emitted by the transformer, scoped to the target namespace.
|
|
81
|
+
*/
|
|
82
|
+
function injectExtension(stream, name, target) {
|
|
83
|
+
const { namespace, key } = normalizeTarget(target, `extension|${name}`);
|
|
84
|
+
return require_inject_projection.injectProjection(require_use_stream.getRegistry(stream), () => (0, _langchain_langgraph_sdk_stream.extensionProjection)(name, namespace()), key, void 0);
|
|
85
|
+
}
|
|
86
|
+
function injectChannel(stream, channels, target, options) {
|
|
87
|
+
const sortedChannels = [...channels].sort().join(",");
|
|
88
|
+
const { namespace, key } = normalizeTarget(target, `channel|${options?.bufferSize ?? "default"}|${options?.replay ?? true ? "replay" : "live"}|${sortedChannels}`);
|
|
89
|
+
return require_inject_projection.injectProjection(require_use_stream.getRegistry(stream), () => (0, _langchain_langgraph_sdk_stream.channelProjection)(channels, namespace(), options), key, EMPTY_EVENTS);
|
|
90
|
+
}
|
|
91
|
+
const EMPTY_EVENTS = [];
|
|
92
|
+
/**
|
|
93
|
+
* Subscribe to a scoped audio-media stream. Each handle is yielded
|
|
94
|
+
* on its first matching `content-block-start`, exposes
|
|
95
|
+
* `.partialBytes` for live access, settles `.blob` / `.objectURL` /
|
|
96
|
+
* `.transcript` on `message-finish`, and surfaces errors via
|
|
97
|
+
* `.error`.
|
|
98
|
+
*
|
|
99
|
+
* Pair with `injectMediaUrl` to turn a handle into an `<audio src>`.
|
|
100
|
+
*/
|
|
101
|
+
function injectAudio(stream, target) {
|
|
102
|
+
const { namespace, key } = normalizeTarget(target, "audio");
|
|
103
|
+
return require_inject_projection.injectProjection(require_use_stream.getRegistry(stream), () => (0, _langchain_langgraph_sdk_stream.audioProjection)(namespace()), key, EMPTY_AUDIO);
|
|
104
|
+
}
|
|
105
|
+
const EMPTY_AUDIO = [];
|
|
106
|
+
/**
|
|
107
|
+
* Subscribe to a scoped image-media stream. Pair with
|
|
108
|
+
* `injectMediaUrl` for `<img src>`.
|
|
109
|
+
*/
|
|
110
|
+
function injectImages(stream, target) {
|
|
111
|
+
const { namespace, key } = normalizeTarget(target, "images");
|
|
112
|
+
return require_inject_projection.injectProjection(require_use_stream.getRegistry(stream), () => (0, _langchain_langgraph_sdk_stream.imagesProjection)(namespace()), key, EMPTY_IMAGES);
|
|
113
|
+
}
|
|
114
|
+
const EMPTY_IMAGES = [];
|
|
115
|
+
/**
|
|
116
|
+
* Subscribe to a scoped video-media stream. Pair with
|
|
117
|
+
* `injectMediaUrl` for `<video src>`.
|
|
118
|
+
*/
|
|
119
|
+
function injectVideo(stream, target) {
|
|
120
|
+
const { namespace, key } = normalizeTarget(target, "video");
|
|
121
|
+
return require_inject_projection.injectProjection(require_use_stream.getRegistry(stream), () => (0, _langchain_langgraph_sdk_stream.videoProjection)(namespace()), key, EMPTY_VIDEO);
|
|
122
|
+
}
|
|
123
|
+
const EMPTY_VIDEO = [];
|
|
124
|
+
/**
|
|
125
|
+
* Subscribe to a scoped file-media stream. Pair with
|
|
126
|
+
* `injectMediaUrl` for an `<a download href>` target.
|
|
127
|
+
*/
|
|
128
|
+
function injectFiles(stream, target) {
|
|
129
|
+
const { namespace, key } = normalizeTarget(target, "files");
|
|
130
|
+
return require_inject_projection.injectProjection(require_use_stream.getRegistry(stream), () => (0, _langchain_langgraph_sdk_stream.filesProjection)(namespace()), key, EMPTY_FILES);
|
|
131
|
+
}
|
|
132
|
+
const EMPTY_FILES = [];
|
|
133
|
+
//#endregion
|
|
134
|
+
exports.injectAudio = injectAudio;
|
|
135
|
+
exports.injectChannel = injectChannel;
|
|
136
|
+
exports.injectExtension = injectExtension;
|
|
137
|
+
exports.injectFiles = injectFiles;
|
|
138
|
+
exports.injectImages = injectImages;
|
|
139
|
+
exports.injectMessages = injectMessages;
|
|
140
|
+
exports.injectToolCalls = injectToolCalls;
|
|
141
|
+
exports.injectValues = injectValues;
|
|
142
|
+
exports.injectVideo = injectVideo;
|
|
143
|
+
|
|
144
|
+
//# sourceMappingURL=selectors.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectors.cjs","names":["NAMESPACE_SEPARATOR","injectProjection","getRegistry"],"sources":["../src/selectors.ts"],"sourcesContent":["import { computed, isSignal, type Signal } from \"@angular/core\";\nimport type { BaseMessage } from \"@langchain/core/messages\";\nimport {\n NAMESPACE_SEPARATOR,\n audioProjection,\n channelProjection,\n extensionProjection,\n filesProjection,\n imagesProjection,\n messagesProjection,\n toolCallsProjection,\n valuesProjection,\n videoProjection,\n type AssembledToolCall,\n type AudioMedia,\n type Channel,\n type ChannelProjectionOptions,\n type Event,\n type FileMedia,\n type ImageMedia,\n type InferStateType,\n type SubagentDiscoverySnapshot,\n type SubgraphDiscoverySnapshot,\n type VideoMedia,\n} from \"@langchain/langgraph-sdk/stream\";\nimport {\n getRegistry,\n type AnyStream,\n type UseStreamReturn,\n} from \"./use-stream.js\";\nimport { injectProjection } from \"./inject-projection.js\";\n\n/**\n * Selector primitives don't need to carry `InterruptType` /\n * `ConfigurableType`. Parameterising on `StateType` alone lets\n * callers with a full `injectStream<S, I, C>()` handle pass it in\n * without redeclaring those generics at every call site.\n */\ntype StreamHandle<StateType extends object> = UseStreamReturn<\n StateType,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any\n>;\n\n/**\n * What a selector primitive can be targeted at. Callers can pass:\n * - `undefined` / `null` — root namespace (served by the always-on\n * root store — no extra subscription);\n * - a {@link SubagentDiscoverySnapshot} (`stream.subagents().get(...)`);\n * - a {@link SubgraphDiscoverySnapshot} (`stream.subgraphs().get(...)`);\n * - an explicit `{ namespace: string[] }`;\n * - a raw `string[]` escape hatch.\n *\n * Selectors also accept a `Signal<SelectorTarget>` so callers can\n * feed a `computed(() => ...)` and have the projection rebind\n * automatically.\n */\nexport type SelectorTarget =\n | undefined\n | null\n | readonly string[]\n | { namespace: readonly string[] }\n | SubagentDiscoverySnapshot\n | SubgraphDiscoverySnapshot;\n\nconst EMPTY_NAMESPACE: readonly string[] = [];\n\nfunction resolveNamespace(target: SelectorTarget): readonly string[] {\n if (target == null) return EMPTY_NAMESPACE;\n if (Array.isArray(target)) return target as readonly string[];\n const obj = target as { namespace?: readonly string[] };\n return obj.namespace ?? EMPTY_NAMESPACE;\n}\n\nfunction isRoot(namespace: readonly string[]): boolean {\n return namespace.length === 0;\n}\n\nfunction namespaceKey(namespace: readonly string[]): string {\n return namespace.join(NAMESPACE_SEPARATOR);\n}\n\n/**\n * Resolve a target or target-signal into a reactive\n * `[namespace, key]` pair. The helper returns plain signals so\n * `injectProjection` can track them via its internal effect.\n */\nfunction normalizeTarget(\n target: SelectorTarget | Signal<SelectorTarget>,\n prefix: string\n): {\n namespace: Signal<readonly string[]>;\n key: Signal<string>;\n isRootSignal: Signal<boolean>;\n} {\n if (isSignal(target)) {\n const namespace = computed(() =>\n resolveNamespace((target as Signal<SelectorTarget>)())\n );\n const key = computed(() => `${prefix}|${namespaceKey(namespace())}`);\n const isRootSignal = computed(() => isRoot(namespace()));\n return { namespace, key, isRootSignal };\n }\n const ns = resolveNamespace(target as SelectorTarget);\n const staticKey = `${prefix}|${namespaceKey(ns)}`;\n return {\n namespace: computed(() => ns),\n key: computed(() => staticKey),\n isRootSignal: computed(() => isRoot(ns)),\n };\n}\n\n/**\n * Subscribe to a scoped `messages` stream.\n *\n * Contract:\n * - At the root (no `target`) this returns `stream.messages` — the\n * always-on root projection; no extra subscription is opened.\n * - For any non-root namespace, call-time triggers a ref-counted\n * `messages` subscription scoped to that namespace. The\n * subscription is released automatically when the calling\n * component / service is destroyed (and the registry closes the\n * underlying server subscription when the last consumer leaves).\n *\n * Messages are always `BaseMessage` class instances from\n * `@langchain/core/messages`.\n */\nexport function injectMessages(\n stream: AnyStream,\n target?: SelectorTarget | Signal<SelectorTarget>\n): Signal<BaseMessage[]> {\n const { namespace, key, isRootSignal } = normalizeTarget(\n target as SelectorTarget | Signal<SelectorTarget>,\n \"messages\"\n );\n const registry = computed(() =>\n isRootSignal() ? null : getRegistry(stream)\n );\n const scoped = injectProjection<BaseMessage[]>(\n registry,\n () => messagesProjection(namespace()),\n key,\n EMPTY_MESSAGES\n );\n return computed(() => (isRootSignal() ? stream.messages() : scoped()));\n}\n\nconst EMPTY_MESSAGES: BaseMessage[] = [];\n\n/**\n * Subscribe to a scoped `tools` (tool-call) stream. Same target and\n * lifecycle rules as {@link injectMessages}; at the root this returns\n * `stream.toolCalls` directly.\n */\nexport function injectToolCalls(\n stream: AnyStream,\n target?: SelectorTarget | Signal<SelectorTarget>\n): Signal<AssembledToolCall[]> {\n const { namespace, key, isRootSignal } = normalizeTarget(\n target as SelectorTarget | Signal<SelectorTarget>,\n \"toolCalls\"\n );\n const registry = computed(() =>\n isRootSignal() ? null : getRegistry(stream)\n );\n const scoped = injectProjection<AssembledToolCall[]>(\n registry,\n () => toolCallsProjection(namespace()),\n key,\n EMPTY_TOOLCALLS\n );\n return computed(() => (isRootSignal() ? stream.toolCalls() : scoped()));\n}\n\nconst EMPTY_TOOLCALLS: AssembledToolCall[] = [];\n\n/**\n * Subscribe to a scoped `values` stream — the most recent state\n * payload for a namespace. At the root returns `stream.values`.\n *\n * Typing:\n * - **Root** (`injectValues(stream)`): returns the `StateType`\n * declared on `injectStream<State>()` — non-nullable (the root\n * snapshot always has values, falling back to `initialValues ??\n * {}`).\n * - **Scoped** (`injectValues(stream, target)`): scoped payloads can\n * differ from the root state; callers should annotate the expected\n * shape explicitly (`injectValues<SubagentState>(stream, sub)`).\n * Defaults to `unknown` when not annotated.\n */\nexport function injectValues<StateType extends object>(\n stream: StreamHandle<StateType>\n): Signal<StateType>;\nexport function injectValues<T>(stream: AnyStream): Signal<InferStateType<T>>;\nexport function injectValues<T = unknown>(\n stream: AnyStream,\n target: SelectorTarget | Signal<SelectorTarget>,\n options?: { messagesKey?: string }\n): Signal<T | undefined>;\nexport function injectValues(\n stream: AnyStream,\n target?: SelectorTarget | Signal<SelectorTarget>,\n options?: { messagesKey?: string }\n): Signal<unknown> {\n const messagesKey = options?.messagesKey ?? \"messages\";\n const { namespace, key, isRootSignal } = normalizeTarget(\n target as SelectorTarget | Signal<SelectorTarget>,\n `values|${messagesKey}`\n );\n const registry = computed(() =>\n isRootSignal() ? null : getRegistry(stream)\n );\n const scoped = injectProjection<unknown>(\n registry,\n () => valuesProjection<unknown>(namespace(), messagesKey),\n key,\n undefined\n );\n return computed(() => (isRootSignal() ? stream.values() : scoped()));\n}\n\n/**\n * Subscribe to a `custom:<name>` stream extension — the most recent\n * payload emitted by the transformer, scoped to the target namespace.\n */\nexport function injectExtension<T = unknown>(\n stream: AnyStream,\n name: string,\n target?: SelectorTarget | Signal<SelectorTarget>\n): Signal<T | undefined> {\n const { namespace, key } = normalizeTarget(\n target as SelectorTarget | Signal<SelectorTarget>,\n `extension|${name}`\n );\n return injectProjection<T | undefined>(\n getRegistry(stream),\n () => extensionProjection<T>(name, namespace()),\n key,\n undefined\n );\n}\n\n/**\n * Raw-events escape hatch. Subscribes to one or more channels at a\n * namespace and returns a bounded buffer of raw protocol events.\n * Prefer {@link injectMessages} / {@link injectToolCalls} /\n * {@link injectValues} for the common cases.\n */\nexport type InjectChannelOptions = ChannelProjectionOptions;\n\nexport function injectChannel(\n stream: AnyStream,\n channels: readonly Channel[],\n target?: SelectorTarget | Signal<SelectorTarget>,\n options?: InjectChannelOptions\n): Signal<Event[]> {\n const sortedChannels = [...channels].sort().join(\",\");\n const prefix = `channel|${options?.bufferSize ?? \"default\"}|${(options?.replay ?? true) ? \"replay\" : \"live\"}|${sortedChannels}`;\n const { namespace, key } = normalizeTarget(\n target as SelectorTarget | Signal<SelectorTarget>,\n prefix\n );\n return injectProjection<Event[]>(\n getRegistry(stream),\n () => channelProjection(channels, namespace(), options),\n key,\n EMPTY_EVENTS\n );\n}\n\nconst EMPTY_EVENTS: Event[] = [];\n\n/**\n * Subscribe to a scoped audio-media stream. Each handle is yielded\n * on its first matching `content-block-start`, exposes\n * `.partialBytes` for live access, settles `.blob` / `.objectURL` /\n * `.transcript` on `message-finish`, and surfaces errors via\n * `.error`.\n *\n * Pair with `injectMediaUrl` to turn a handle into an `<audio src>`.\n */\nexport function injectAudio(\n stream: AnyStream,\n target?: SelectorTarget | Signal<SelectorTarget>\n): Signal<AudioMedia[]> {\n const { namespace, key } = normalizeTarget(\n target as SelectorTarget | Signal<SelectorTarget>,\n \"audio\"\n );\n return injectProjection<AudioMedia[]>(\n getRegistry(stream),\n () => audioProjection(namespace()),\n key,\n EMPTY_AUDIO\n );\n}\n\nconst EMPTY_AUDIO: AudioMedia[] = [];\n\n/**\n * Subscribe to a scoped image-media stream. Pair with\n * `injectMediaUrl` for `<img src>`.\n */\nexport function injectImages(\n stream: AnyStream,\n target?: SelectorTarget | Signal<SelectorTarget>\n): Signal<ImageMedia[]> {\n const { namespace, key } = normalizeTarget(\n target as SelectorTarget | Signal<SelectorTarget>,\n \"images\"\n );\n return injectProjection<ImageMedia[]>(\n getRegistry(stream),\n () => imagesProjection(namespace()),\n key,\n EMPTY_IMAGES\n );\n}\n\nconst EMPTY_IMAGES: ImageMedia[] = [];\n\n/**\n * Subscribe to a scoped video-media stream. Pair with\n * `injectMediaUrl` for `<video src>`.\n */\nexport function injectVideo(\n stream: AnyStream,\n target?: SelectorTarget | Signal<SelectorTarget>\n): Signal<VideoMedia[]> {\n const { namespace, key } = normalizeTarget(\n target as SelectorTarget | Signal<SelectorTarget>,\n \"video\"\n );\n return injectProjection<VideoMedia[]>(\n getRegistry(stream),\n () => videoProjection(namespace()),\n key,\n EMPTY_VIDEO\n );\n}\n\nconst EMPTY_VIDEO: VideoMedia[] = [];\n\n/**\n * Subscribe to a scoped file-media stream. Pair with\n * `injectMediaUrl` for an `<a download href>` target.\n */\nexport function injectFiles(\n stream: AnyStream,\n target?: SelectorTarget | Signal<SelectorTarget>\n): Signal<FileMedia[]> {\n const { namespace, key } = normalizeTarget(\n target as SelectorTarget | Signal<SelectorTarget>,\n \"files\"\n );\n return injectProjection<FileMedia[]>(\n getRegistry(stream),\n () => filesProjection(namespace()),\n key,\n EMPTY_FILES\n );\n}\n\nconst EMPTY_FILES: FileMedia[] = [];\n"],"mappings":";;;;;AAmEA,MAAM,kBAAqC,EAAE;AAE7C,SAAS,iBAAiB,QAA2C;AACnE,KAAI,UAAU,KAAM,QAAO;AAC3B,KAAI,MAAM,QAAQ,OAAO,CAAE,QAAO;AAElC,QADY,OACD,aAAa;;AAG1B,SAAS,OAAO,WAAuC;AACrD,QAAO,UAAU,WAAW;;AAG9B,SAAS,aAAa,WAAsC;AAC1D,QAAO,UAAU,KAAKA,gCAAAA,oBAAoB;;;;;;;AAQ5C,SAAS,gBACP,QACA,QAKA;AACA,MAAA,GAAA,cAAA,UAAa,OAAO,EAAE;EACpB,MAAM,aAAA,GAAA,cAAA,gBACJ,iBAAkB,QAAmC,CAAC,CACvD;AAGD,SAAO;GAAE;GAAW,MAAA,GAAA,cAAA,gBAFO,GAAG,OAAO,GAAG,aAAa,WAAW,CAAC,GAAG;GAE3C,eAAA,GAAA,cAAA,gBADW,OAAO,WAAW,CAAC,CAAC;GACjB;;CAEzC,MAAM,KAAK,iBAAiB,OAAyB;CACrD,MAAM,YAAY,GAAG,OAAO,GAAG,aAAa,GAAG;AAC/C,QAAO;EACL,YAAA,GAAA,cAAA,gBAA0B,GAAG;EAC7B,MAAA,GAAA,cAAA,gBAAoB,UAAU;EAC9B,eAAA,GAAA,cAAA,gBAA6B,OAAO,GAAG,CAAC;EACzC;;;;;;;;;;;;;;;;;AAkBH,SAAgB,eACd,QACA,QACuB;CACvB,MAAM,EAAE,WAAW,KAAK,iBAAiB,gBACvC,QACA,WACD;CAID,MAAM,SAASC,0BAAAA,kBAAAA,GAAAA,cAAAA,gBAFb,cAAc,GAAG,OAAOC,mBAAAA,YAAY,OAAO,CAC5C,SAAA,GAAA,gCAAA,oBAG0B,WAAW,CAAC,EACrC,KACA,eACD;AACD,SAAA,GAAA,cAAA,gBAAuB,cAAc,GAAG,OAAO,UAAU,GAAG,QAAQ,CAAE;;AAGxE,MAAM,iBAAgC,EAAE;;;;;;AAOxC,SAAgB,gBACd,QACA,QAC6B;CAC7B,MAAM,EAAE,WAAW,KAAK,iBAAiB,gBACvC,QACA,YACD;CAID,MAAM,SAASD,0BAAAA,kBAAAA,GAAAA,cAAAA,gBAFb,cAAc,GAAG,OAAOC,mBAAAA,YAAY,OAAO,CAC5C,SAAA,GAAA,gCAAA,qBAG2B,WAAW,CAAC,EACtC,KACA,gBACD;AACD,SAAA,GAAA,cAAA,gBAAuB,cAAc,GAAG,OAAO,WAAW,GAAG,QAAQ,CAAE;;AAGzE,MAAM,kBAAuC,EAAE;AAyB/C,SAAgB,aACd,QACA,QACA,SACiB;CACjB,MAAM,cAAc,SAAS,eAAe;CAC5C,MAAM,EAAE,WAAW,KAAK,iBAAiB,gBACvC,QACA,UAAU,cACX;CAID,MAAM,SAASD,0BAAAA,kBAAAA,GAAAA,cAAAA,gBAFb,cAAc,GAAG,OAAOC,mBAAAA,YAAY,OAAO,CAC5C,SAAA,GAAA,gCAAA,kBAGiC,WAAW,EAAE,YAAY,EACzD,KACA,KAAA,EACD;AACD,SAAA,GAAA,cAAA,gBAAuB,cAAc,GAAG,OAAO,QAAQ,GAAG,QAAQ,CAAE;;;;;;AAOtE,SAAgB,gBACd,QACA,MACA,QACuB;CACvB,MAAM,EAAE,WAAW,QAAQ,gBACzB,QACA,aAAa,OACd;AACD,QAAOD,0BAAAA,iBACLC,mBAAAA,YAAY,OAAO,SAAA,GAAA,gCAAA,qBACU,MAAM,WAAW,CAAC,EAC/C,KACA,KAAA,EACD;;AAWH,SAAgB,cACd,QACA,UACA,QACA,SACiB;CACjB,MAAM,iBAAiB,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI;CAErD,MAAM,EAAE,WAAW,QAAQ,gBACzB,QAFa,WAAW,SAAS,cAAc,UAAU,GAAI,SAAS,UAAU,OAAQ,WAAW,OAAO,GAAG,iBAI9G;AACD,QAAOD,0BAAAA,iBACLC,mBAAAA,YAAY,OAAO,SAAA,GAAA,gCAAA,mBACK,UAAU,WAAW,EAAE,QAAQ,EACvD,KACA,aACD;;AAGH,MAAM,eAAwB,EAAE;;;;;;;;;;AAWhC,SAAgB,YACd,QACA,QACsB;CACtB,MAAM,EAAE,WAAW,QAAQ,gBACzB,QACA,QACD;AACD,QAAOD,0BAAAA,iBACLC,mBAAAA,YAAY,OAAO,SAAA,GAAA,gCAAA,iBACG,WAAW,CAAC,EAClC,KACA,YACD;;AAGH,MAAM,cAA4B,EAAE;;;;;AAMpC,SAAgB,aACd,QACA,QACsB;CACtB,MAAM,EAAE,WAAW,QAAQ,gBACzB,QACA,SACD;AACD,QAAOD,0BAAAA,iBACLC,mBAAAA,YAAY,OAAO,SAAA,GAAA,gCAAA,kBACI,WAAW,CAAC,EACnC,KACA,aACD;;AAGH,MAAM,eAA6B,EAAE;;;;;AAMrC,SAAgB,YACd,QACA,QACsB;CACtB,MAAM,EAAE,WAAW,QAAQ,gBACzB,QACA,QACD;AACD,QAAOD,0BAAAA,iBACLC,mBAAAA,YAAY,OAAO,SAAA,GAAA,gCAAA,iBACG,WAAW,CAAC,EAClC,KACA,YACD;;AAGH,MAAM,cAA4B,EAAE;;;;;AAMpC,SAAgB,YACd,QACA,QACqB;CACrB,MAAM,EAAE,WAAW,QAAQ,gBACzB,QACA,QACD;AACD,QAAOD,0BAAAA,iBACLC,mBAAAA,YAAY,OAAO,SAAA,GAAA,gCAAA,iBACG,WAAW,CAAC,EAClC,KACA,YACD;;AAGH,MAAM,cAA2B,EAAE"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { AnyStream, UseStreamReturn } from "./use-stream.cjs";
|
|
2
|
+
import { AssembledToolCall, AudioMedia, Channel, ChannelProjectionOptions, Event, FileMedia, ImageMedia, InferStateType, SubagentDiscoverySnapshot, SubgraphDiscoverySnapshot, VideoMedia } from "@langchain/langgraph-sdk/stream";
|
|
3
|
+
import { Signal } from "@angular/core";
|
|
4
|
+
import { BaseMessage } from "@langchain/core/messages";
|
|
5
|
+
|
|
6
|
+
//#region src/selectors.d.ts
|
|
7
|
+
/**
|
|
8
|
+
* Selector primitives don't need to carry `InterruptType` /
|
|
9
|
+
* `ConfigurableType`. Parameterising on `StateType` alone lets
|
|
10
|
+
* callers with a full `injectStream<S, I, C>()` handle pass it in
|
|
11
|
+
* without redeclaring those generics at every call site.
|
|
12
|
+
*/
|
|
13
|
+
type StreamHandle<StateType extends object> = UseStreamReturn<StateType, any, any>;
|
|
14
|
+
/**
|
|
15
|
+
* What a selector primitive can be targeted at. Callers can pass:
|
|
16
|
+
* - `undefined` / `null` — root namespace (served by the always-on
|
|
17
|
+
* root store — no extra subscription);
|
|
18
|
+
* - a {@link SubagentDiscoverySnapshot} (`stream.subagents().get(...)`);
|
|
19
|
+
* - a {@link SubgraphDiscoverySnapshot} (`stream.subgraphs().get(...)`);
|
|
20
|
+
* - an explicit `{ namespace: string[] }`;
|
|
21
|
+
* - a raw `string[]` escape hatch.
|
|
22
|
+
*
|
|
23
|
+
* Selectors also accept a `Signal<SelectorTarget>` so callers can
|
|
24
|
+
* feed a `computed(() => ...)` and have the projection rebind
|
|
25
|
+
* automatically.
|
|
26
|
+
*/
|
|
27
|
+
type SelectorTarget = undefined | null | readonly string[] | {
|
|
28
|
+
namespace: readonly string[];
|
|
29
|
+
} | SubagentDiscoverySnapshot | SubgraphDiscoverySnapshot;
|
|
30
|
+
/**
|
|
31
|
+
* Subscribe to a scoped `messages` stream.
|
|
32
|
+
*
|
|
33
|
+
* Contract:
|
|
34
|
+
* - At the root (no `target`) this returns `stream.messages` — the
|
|
35
|
+
* always-on root projection; no extra subscription is opened.
|
|
36
|
+
* - For any non-root namespace, call-time triggers a ref-counted
|
|
37
|
+
* `messages` subscription scoped to that namespace. The
|
|
38
|
+
* subscription is released automatically when the calling
|
|
39
|
+
* component / service is destroyed (and the registry closes the
|
|
40
|
+
* underlying server subscription when the last consumer leaves).
|
|
41
|
+
*
|
|
42
|
+
* Messages are always `BaseMessage` class instances from
|
|
43
|
+
* `@langchain/core/messages`.
|
|
44
|
+
*/
|
|
45
|
+
declare function injectMessages(stream: AnyStream, target?: SelectorTarget | Signal<SelectorTarget>): Signal<BaseMessage[]>;
|
|
46
|
+
/**
|
|
47
|
+
* Subscribe to a scoped `tools` (tool-call) stream. Same target and
|
|
48
|
+
* lifecycle rules as {@link injectMessages}; at the root this returns
|
|
49
|
+
* `stream.toolCalls` directly.
|
|
50
|
+
*/
|
|
51
|
+
declare function injectToolCalls(stream: AnyStream, target?: SelectorTarget | Signal<SelectorTarget>): Signal<AssembledToolCall[]>;
|
|
52
|
+
/**
|
|
53
|
+
* Subscribe to a scoped `values` stream — the most recent state
|
|
54
|
+
* payload for a namespace. At the root returns `stream.values`.
|
|
55
|
+
*
|
|
56
|
+
* Typing:
|
|
57
|
+
* - **Root** (`injectValues(stream)`): returns the `StateType`
|
|
58
|
+
* declared on `injectStream<State>()` — non-nullable (the root
|
|
59
|
+
* snapshot always has values, falling back to `initialValues ??
|
|
60
|
+
* {}`).
|
|
61
|
+
* - **Scoped** (`injectValues(stream, target)`): scoped payloads can
|
|
62
|
+
* differ from the root state; callers should annotate the expected
|
|
63
|
+
* shape explicitly (`injectValues<SubagentState>(stream, sub)`).
|
|
64
|
+
* Defaults to `unknown` when not annotated.
|
|
65
|
+
*/
|
|
66
|
+
declare function injectValues<StateType extends object>(stream: StreamHandle<StateType>): Signal<StateType>;
|
|
67
|
+
declare function injectValues<T>(stream: AnyStream): Signal<InferStateType<T>>;
|
|
68
|
+
declare function injectValues<T = unknown>(stream: AnyStream, target: SelectorTarget | Signal<SelectorTarget>, options?: {
|
|
69
|
+
messagesKey?: string;
|
|
70
|
+
}): Signal<T | undefined>;
|
|
71
|
+
/**
|
|
72
|
+
* Subscribe to a `custom:<name>` stream extension — the most recent
|
|
73
|
+
* payload emitted by the transformer, scoped to the target namespace.
|
|
74
|
+
*/
|
|
75
|
+
declare function injectExtension<T = unknown>(stream: AnyStream, name: string, target?: SelectorTarget | Signal<SelectorTarget>): Signal<T | undefined>;
|
|
76
|
+
/**
|
|
77
|
+
* Raw-events escape hatch. Subscribes to one or more channels at a
|
|
78
|
+
* namespace and returns a bounded buffer of raw protocol events.
|
|
79
|
+
* Prefer {@link injectMessages} / {@link injectToolCalls} /
|
|
80
|
+
* {@link injectValues} for the common cases.
|
|
81
|
+
*/
|
|
82
|
+
type InjectChannelOptions = ChannelProjectionOptions;
|
|
83
|
+
declare function injectChannel(stream: AnyStream, channels: readonly Channel[], target?: SelectorTarget | Signal<SelectorTarget>, options?: InjectChannelOptions): Signal<Event[]>;
|
|
84
|
+
/**
|
|
85
|
+
* Subscribe to a scoped audio-media stream. Each handle is yielded
|
|
86
|
+
* on its first matching `content-block-start`, exposes
|
|
87
|
+
* `.partialBytes` for live access, settles `.blob` / `.objectURL` /
|
|
88
|
+
* `.transcript` on `message-finish`, and surfaces errors via
|
|
89
|
+
* `.error`.
|
|
90
|
+
*
|
|
91
|
+
* Pair with `injectMediaUrl` to turn a handle into an `<audio src>`.
|
|
92
|
+
*/
|
|
93
|
+
declare function injectAudio(stream: AnyStream, target?: SelectorTarget | Signal<SelectorTarget>): Signal<AudioMedia[]>;
|
|
94
|
+
/**
|
|
95
|
+
* Subscribe to a scoped image-media stream. Pair with
|
|
96
|
+
* `injectMediaUrl` for `<img src>`.
|
|
97
|
+
*/
|
|
98
|
+
declare function injectImages(stream: AnyStream, target?: SelectorTarget | Signal<SelectorTarget>): Signal<ImageMedia[]>;
|
|
99
|
+
/**
|
|
100
|
+
* Subscribe to a scoped video-media stream. Pair with
|
|
101
|
+
* `injectMediaUrl` for `<video src>`.
|
|
102
|
+
*/
|
|
103
|
+
declare function injectVideo(stream: AnyStream, target?: SelectorTarget | Signal<SelectorTarget>): Signal<VideoMedia[]>;
|
|
104
|
+
/**
|
|
105
|
+
* Subscribe to a scoped file-media stream. Pair with
|
|
106
|
+
* `injectMediaUrl` for an `<a download href>` target.
|
|
107
|
+
*/
|
|
108
|
+
declare function injectFiles(stream: AnyStream, target?: SelectorTarget | Signal<SelectorTarget>): Signal<FileMedia[]>;
|
|
109
|
+
//#endregion
|
|
110
|
+
export { SelectorTarget, injectAudio, injectChannel, injectExtension, injectFiles, injectImages, injectMessages, injectToolCalls, injectValues, injectVideo };
|
|
111
|
+
//# sourceMappingURL=selectors.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectors.d.cts","names":[],"sources":["../src/selectors.ts"],"mappings":";;;;;;;;AA6ByB;;;;KASpB,YAAA,6BAAyC,eAAA,CAC5C,SAAA;;;;;AAoBF;;;;;;;;;KAAY,cAAA;EAIN,SAAA;AAAA,IACF,yBAAA,GACA,yBAAA;;;;;;;;;;;;;;;;iBAgEY,cAAA,CACd,MAAA,EAAQ,SAAA,EACR,MAAA,GAAS,cAAA,GAAiB,MAAA,CAAO,cAAA,IAChC,MAAA,CAAO,WAAA;;;AAwBV;;;iBAAgB,eAAA,CACd,MAAA,EAAQ,SAAA,EACR,MAAA,GAAS,cAAA,GAAiB,MAAA,CAAO,cAAA,IAChC,MAAA,CAAO,iBAAA;;;;;;;;;;;;;;;iBAiCM,YAAA,0BAAA,CACd,MAAA,EAAQ,YAAA,CAAa,SAAA,IACpB,MAAA,CAAO,SAAA;AAAA,iBACM,YAAA,GAAA,CAAgB,MAAA,EAAQ,SAAA,GAAY,MAAA,CAAO,cAAA,CAAe,CAAA;AAAA,iBAC1D,YAAA,aAAA,CACd,MAAA,EAAQ,SAAA,EACR,MAAA,EAAQ,cAAA,GAAiB,MAAA,CAAO,cAAA,GAChC,OAAA;EAAY,WAAA;AAAA,IACX,MAAA,CAAO,CAAA;;;;;iBA2BM,eAAA,aAAA,CACd,MAAA,EAAQ,SAAA,EACR,IAAA,UACA,MAAA,GAAS,cAAA,GAAiB,MAAA,CAAO,cAAA,IAChC,MAAA,CAAO,CAAA;;;;;;;KAmBE,oBAAA,GAAuB,wBAAA;AAAA,iBAEnB,aAAA,CACd,MAAA,EAAQ,SAAA,EACR,QAAA,WAAmB,OAAA,IACnB,MAAA,GAAS,cAAA,GAAiB,MAAA,CAAO,cAAA,GACjC,OAAA,GAAU,oBAAA,GACT,MAAA,CAAO,KAAA;;;AA9DV;;;;;;;iBAwFgB,WAAA,CACd,MAAA,EAAQ,SAAA,EACR,MAAA,GAAS,cAAA,GAAiB,MAAA,CAAO,cAAA,IAChC,MAAA,CAAO,UAAA;;;;;iBAmBM,YAAA,CACd,MAAA,EAAQ,SAAA,EACR,MAAA,GAAS,cAAA,GAAiB,MAAA,CAAO,cAAA,IAChC,MAAA,CAAO,UAAA;;;;;iBAmBM,WAAA,CACd,MAAA,EAAQ,SAAA,EACR,MAAA,GAAS,cAAA,GAAiB,MAAA,CAAO,cAAA,IAChC,MAAA,CAAO,UAAA;;;;;iBAmBM,WAAA,CACd,MAAA,EAAQ,SAAA,EACR,MAAA,GAAS,cAAA,GAAiB,MAAA,CAAO,cAAA,IAChC,MAAA,CAAO,SAAA"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { AnyStream, UseStreamReturn } from "./use-stream.js";
|
|
2
|
+
import { Signal } from "@angular/core";
|
|
3
|
+
import { AssembledToolCall, AudioMedia, Channel, ChannelProjectionOptions, Event, FileMedia, ImageMedia, InferStateType, SubagentDiscoverySnapshot, SubgraphDiscoverySnapshot, VideoMedia } from "@langchain/langgraph-sdk/stream";
|
|
4
|
+
import { BaseMessage } from "@langchain/core/messages";
|
|
5
|
+
|
|
6
|
+
//#region src/selectors.d.ts
|
|
7
|
+
/**
|
|
8
|
+
* Selector primitives don't need to carry `InterruptType` /
|
|
9
|
+
* `ConfigurableType`. Parameterising on `StateType` alone lets
|
|
10
|
+
* callers with a full `injectStream<S, I, C>()` handle pass it in
|
|
11
|
+
* without redeclaring those generics at every call site.
|
|
12
|
+
*/
|
|
13
|
+
type StreamHandle<StateType extends object> = UseStreamReturn<StateType, any, any>;
|
|
14
|
+
/**
|
|
15
|
+
* What a selector primitive can be targeted at. Callers can pass:
|
|
16
|
+
* - `undefined` / `null` — root namespace (served by the always-on
|
|
17
|
+
* root store — no extra subscription);
|
|
18
|
+
* - a {@link SubagentDiscoverySnapshot} (`stream.subagents().get(...)`);
|
|
19
|
+
* - a {@link SubgraphDiscoverySnapshot} (`stream.subgraphs().get(...)`);
|
|
20
|
+
* - an explicit `{ namespace: string[] }`;
|
|
21
|
+
* - a raw `string[]` escape hatch.
|
|
22
|
+
*
|
|
23
|
+
* Selectors also accept a `Signal<SelectorTarget>` so callers can
|
|
24
|
+
* feed a `computed(() => ...)` and have the projection rebind
|
|
25
|
+
* automatically.
|
|
26
|
+
*/
|
|
27
|
+
type SelectorTarget = undefined | null | readonly string[] | {
|
|
28
|
+
namespace: readonly string[];
|
|
29
|
+
} | SubagentDiscoverySnapshot | SubgraphDiscoverySnapshot;
|
|
30
|
+
/**
|
|
31
|
+
* Subscribe to a scoped `messages` stream.
|
|
32
|
+
*
|
|
33
|
+
* Contract:
|
|
34
|
+
* - At the root (no `target`) this returns `stream.messages` — the
|
|
35
|
+
* always-on root projection; no extra subscription is opened.
|
|
36
|
+
* - For any non-root namespace, call-time triggers a ref-counted
|
|
37
|
+
* `messages` subscription scoped to that namespace. The
|
|
38
|
+
* subscription is released automatically when the calling
|
|
39
|
+
* component / service is destroyed (and the registry closes the
|
|
40
|
+
* underlying server subscription when the last consumer leaves).
|
|
41
|
+
*
|
|
42
|
+
* Messages are always `BaseMessage` class instances from
|
|
43
|
+
* `@langchain/core/messages`.
|
|
44
|
+
*/
|
|
45
|
+
declare function injectMessages(stream: AnyStream, target?: SelectorTarget | Signal<SelectorTarget>): Signal<BaseMessage[]>;
|
|
46
|
+
/**
|
|
47
|
+
* Subscribe to a scoped `tools` (tool-call) stream. Same target and
|
|
48
|
+
* lifecycle rules as {@link injectMessages}; at the root this returns
|
|
49
|
+
* `stream.toolCalls` directly.
|
|
50
|
+
*/
|
|
51
|
+
declare function injectToolCalls(stream: AnyStream, target?: SelectorTarget | Signal<SelectorTarget>): Signal<AssembledToolCall[]>;
|
|
52
|
+
/**
|
|
53
|
+
* Subscribe to a scoped `values` stream — the most recent state
|
|
54
|
+
* payload for a namespace. At the root returns `stream.values`.
|
|
55
|
+
*
|
|
56
|
+
* Typing:
|
|
57
|
+
* - **Root** (`injectValues(stream)`): returns the `StateType`
|
|
58
|
+
* declared on `injectStream<State>()` — non-nullable (the root
|
|
59
|
+
* snapshot always has values, falling back to `initialValues ??
|
|
60
|
+
* {}`).
|
|
61
|
+
* - **Scoped** (`injectValues(stream, target)`): scoped payloads can
|
|
62
|
+
* differ from the root state; callers should annotate the expected
|
|
63
|
+
* shape explicitly (`injectValues<SubagentState>(stream, sub)`).
|
|
64
|
+
* Defaults to `unknown` when not annotated.
|
|
65
|
+
*/
|
|
66
|
+
declare function injectValues<StateType extends object>(stream: StreamHandle<StateType>): Signal<StateType>;
|
|
67
|
+
declare function injectValues<T>(stream: AnyStream): Signal<InferStateType<T>>;
|
|
68
|
+
declare function injectValues<T = unknown>(stream: AnyStream, target: SelectorTarget | Signal<SelectorTarget>, options?: {
|
|
69
|
+
messagesKey?: string;
|
|
70
|
+
}): Signal<T | undefined>;
|
|
71
|
+
/**
|
|
72
|
+
* Subscribe to a `custom:<name>` stream extension — the most recent
|
|
73
|
+
* payload emitted by the transformer, scoped to the target namespace.
|
|
74
|
+
*/
|
|
75
|
+
declare function injectExtension<T = unknown>(stream: AnyStream, name: string, target?: SelectorTarget | Signal<SelectorTarget>): Signal<T | undefined>;
|
|
76
|
+
/**
|
|
77
|
+
* Raw-events escape hatch. Subscribes to one or more channels at a
|
|
78
|
+
* namespace and returns a bounded buffer of raw protocol events.
|
|
79
|
+
* Prefer {@link injectMessages} / {@link injectToolCalls} /
|
|
80
|
+
* {@link injectValues} for the common cases.
|
|
81
|
+
*/
|
|
82
|
+
type InjectChannelOptions = ChannelProjectionOptions;
|
|
83
|
+
declare function injectChannel(stream: AnyStream, channels: readonly Channel[], target?: SelectorTarget | Signal<SelectorTarget>, options?: InjectChannelOptions): Signal<Event[]>;
|
|
84
|
+
/**
|
|
85
|
+
* Subscribe to a scoped audio-media stream. Each handle is yielded
|
|
86
|
+
* on its first matching `content-block-start`, exposes
|
|
87
|
+
* `.partialBytes` for live access, settles `.blob` / `.objectURL` /
|
|
88
|
+
* `.transcript` on `message-finish`, and surfaces errors via
|
|
89
|
+
* `.error`.
|
|
90
|
+
*
|
|
91
|
+
* Pair with `injectMediaUrl` to turn a handle into an `<audio src>`.
|
|
92
|
+
*/
|
|
93
|
+
declare function injectAudio(stream: AnyStream, target?: SelectorTarget | Signal<SelectorTarget>): Signal<AudioMedia[]>;
|
|
94
|
+
/**
|
|
95
|
+
* Subscribe to a scoped image-media stream. Pair with
|
|
96
|
+
* `injectMediaUrl` for `<img src>`.
|
|
97
|
+
*/
|
|
98
|
+
declare function injectImages(stream: AnyStream, target?: SelectorTarget | Signal<SelectorTarget>): Signal<ImageMedia[]>;
|
|
99
|
+
/**
|
|
100
|
+
* Subscribe to a scoped video-media stream. Pair with
|
|
101
|
+
* `injectMediaUrl` for `<video src>`.
|
|
102
|
+
*/
|
|
103
|
+
declare function injectVideo(stream: AnyStream, target?: SelectorTarget | Signal<SelectorTarget>): Signal<VideoMedia[]>;
|
|
104
|
+
/**
|
|
105
|
+
* Subscribe to a scoped file-media stream. Pair with
|
|
106
|
+
* `injectMediaUrl` for an `<a download href>` target.
|
|
107
|
+
*/
|
|
108
|
+
declare function injectFiles(stream: AnyStream, target?: SelectorTarget | Signal<SelectorTarget>): Signal<FileMedia[]>;
|
|
109
|
+
//#endregion
|
|
110
|
+
export { SelectorTarget, injectAudio, injectChannel, injectExtension, injectFiles, injectImages, injectMessages, injectToolCalls, injectValues, injectVideo };
|
|
111
|
+
//# sourceMappingURL=selectors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectors.d.ts","names":[],"sources":["../src/selectors.ts"],"mappings":";;;;;;;;AA6ByB;;;;KASpB,YAAA,6BAAyC,eAAA,CAC5C,SAAA;;;;;AAoBF;;;;;;;;;KAAY,cAAA;EAIN,SAAA;AAAA,IACF,yBAAA,GACA,yBAAA;;;;;;;;;;;;;;;;iBAgEY,cAAA,CACd,MAAA,EAAQ,SAAA,EACR,MAAA,GAAS,cAAA,GAAiB,MAAA,CAAO,cAAA,IAChC,MAAA,CAAO,WAAA;;;AAwBV;;;iBAAgB,eAAA,CACd,MAAA,EAAQ,SAAA,EACR,MAAA,GAAS,cAAA,GAAiB,MAAA,CAAO,cAAA,IAChC,MAAA,CAAO,iBAAA;;;;;;;;;;;;;;;iBAiCM,YAAA,0BAAA,CACd,MAAA,EAAQ,YAAA,CAAa,SAAA,IACpB,MAAA,CAAO,SAAA;AAAA,iBACM,YAAA,GAAA,CAAgB,MAAA,EAAQ,SAAA,GAAY,MAAA,CAAO,cAAA,CAAe,CAAA;AAAA,iBAC1D,YAAA,aAAA,CACd,MAAA,EAAQ,SAAA,EACR,MAAA,EAAQ,cAAA,GAAiB,MAAA,CAAO,cAAA,GAChC,OAAA;EAAY,WAAA;AAAA,IACX,MAAA,CAAO,CAAA;;;;;iBA2BM,eAAA,aAAA,CACd,MAAA,EAAQ,SAAA,EACR,IAAA,UACA,MAAA,GAAS,cAAA,GAAiB,MAAA,CAAO,cAAA,IAChC,MAAA,CAAO,CAAA;;;;;;;KAmBE,oBAAA,GAAuB,wBAAA;AAAA,iBAEnB,aAAA,CACd,MAAA,EAAQ,SAAA,EACR,QAAA,WAAmB,OAAA,IACnB,MAAA,GAAS,cAAA,GAAiB,MAAA,CAAO,cAAA,GACjC,OAAA,GAAU,oBAAA,GACT,MAAA,CAAO,KAAA;;;AA9DV;;;;;;;iBAwFgB,WAAA,CACd,MAAA,EAAQ,SAAA,EACR,MAAA,GAAS,cAAA,GAAiB,MAAA,CAAO,cAAA,IAChC,MAAA,CAAO,UAAA;;;;;iBAmBM,YAAA,CACd,MAAA,EAAQ,SAAA,EACR,MAAA,GAAS,cAAA,GAAiB,MAAA,CAAO,cAAA,IAChC,MAAA,CAAO,UAAA;;;;;iBAmBM,WAAA,CACd,MAAA,EAAQ,SAAA,EACR,MAAA,GAAS,cAAA,GAAiB,MAAA,CAAO,cAAA,IAChC,MAAA,CAAO,UAAA;;;;;iBAmBM,WAAA,CACd,MAAA,EAAQ,SAAA,EACR,MAAA,GAAS,cAAA,GAAiB,MAAA,CAAO,cAAA,IAChC,MAAA,CAAO,SAAA"}
|