@adonis-agora/agent 0.61.0 → 0.62.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/CHANGELOG.md +62 -0
- package/README.md +12 -7
- package/dist/configure.d.ts +7 -5
- package/dist/configure.d.ts.map +1 -1
- package/dist/configure.js +7 -5
- package/dist/configure.js.map +1 -1
- package/dist/providers/a2a_provider.d.ts +14 -0
- package/dist/providers/a2a_provider.d.ts.map +1 -0
- package/dist/providers/a2a_provider.js +136 -0
- package/dist/providers/a2a_provider.js.map +1 -0
- package/dist/providers/agent_provider.d.ts.map +1 -1
- package/dist/providers/agent_provider.js +80 -13
- package/dist/providers/agent_provider.js.map +1 -1
- package/dist/providers/mcp_provider.d.ts +3 -0
- package/dist/providers/mcp_provider.d.ts.map +1 -1
- package/dist/providers/mcp_provider.js +147 -62
- package/dist/providers/mcp_provider.js.map +1 -1
- package/dist/src/a2a/auth.d.ts +67 -0
- package/dist/src/a2a/auth.d.ts.map +1 -0
- package/dist/src/a2a/auth.js +47 -0
- package/dist/src/a2a/auth.js.map +1 -0
- package/dist/src/a2a/define_config.d.ts +74 -0
- package/dist/src/a2a/define_config.d.ts.map +1 -0
- package/dist/src/a2a/define_config.js +5 -0
- package/dist/src/a2a/define_config.js.map +1 -0
- package/dist/src/a2a/gate.d.ts +23 -0
- package/dist/src/a2a/gate.d.ts.map +1 -0
- package/dist/src/a2a/gate.js +56 -0
- package/dist/src/a2a/gate.js.map +1 -0
- package/dist/src/a2a/handler.d.ts +65 -0
- package/dist/src/a2a/handler.d.ts.map +1 -0
- package/dist/src/a2a/handler.js +322 -0
- package/dist/src/a2a/handler.js.map +1 -0
- package/dist/src/a2a/index.d.ts +15 -0
- package/dist/src/a2a/index.d.ts.map +1 -0
- package/dist/src/a2a/index.js +9 -0
- package/dist/src/a2a/index.js.map +1 -0
- package/dist/src/a2a/permission-tool.d.ts +17 -0
- package/dist/src/a2a/permission-tool.d.ts.map +1 -0
- package/dist/src/a2a/permission-tool.js +70 -0
- package/dist/src/a2a/permission-tool.js.map +1 -0
- package/dist/src/a2a/protocol.d.ts +100 -0
- package/dist/src/a2a/protocol.d.ts.map +1 -0
- package/dist/src/a2a/protocol.js +106 -0
- package/dist/src/a2a/protocol.js.map +1 -0
- package/dist/src/a2a/runtime.d.ts +6 -0
- package/dist/src/a2a/runtime.d.ts.map +1 -0
- package/dist/src/a2a/runtime.js +13 -0
- package/dist/src/a2a/runtime.js.map +1 -0
- package/dist/src/a2a/server_middleware.d.ts +13 -0
- package/dist/src/a2a/server_middleware.d.ts.map +1 -0
- package/dist/src/a2a/server_middleware.js +18 -0
- package/dist/src/a2a/server_middleware.js.map +1 -0
- package/dist/src/a2a/store.d.ts +79 -0
- package/dist/src/a2a/store.d.ts.map +1 -0
- package/dist/src/a2a/store.js +151 -0
- package/dist/src/a2a/store.js.map +1 -0
- package/dist/src/a2a/turn.d.ts +80 -0
- package/dist/src/a2a/turn.d.ts.map +1 -0
- package/dist/src/a2a/turn.js +211 -0
- package/dist/src/a2a/turn.js.map +1 -0
- package/dist/src/action-proposal-executor.d.ts +3 -0
- package/dist/src/action-proposal-executor.d.ts.map +1 -1
- package/dist/src/action-proposal-executor.js +10 -0
- package/dist/src/action-proposal-executor.js.map +1 -1
- package/dist/src/action-proposal-service.d.ts +6 -2
- package/dist/src/action-proposal-service.d.ts.map +1 -1
- package/dist/src/action-proposal-service.js +20 -16
- package/dist/src/action-proposal-service.js.map +1 -1
- package/dist/src/action-proposal-text.d.ts +42 -3
- package/dist/src/action-proposal-text.d.ts.map +1 -1
- package/dist/src/action-proposal-text.js +80 -12
- package/dist/src/action-proposal-text.js.map +1 -1
- package/dist/src/action-proposal-worker.d.ts +2 -1
- package/dist/src/action-proposal-worker.d.ts.map +1 -1
- package/dist/src/action-proposal-worker.js +9 -2
- package/dist/src/action-proposal-worker.js.map +1 -1
- package/dist/src/ag-ui/adapter.d.ts.map +1 -1
- package/dist/src/ag-ui/adapter.js +83 -11
- package/dist/src/ag-ui/adapter.js.map +1 -1
- package/dist/src/ag-ui/core/encoder.d.ts +105 -0
- package/dist/src/ag-ui/core/encoder.d.ts.map +1 -0
- package/dist/src/ag-ui/core/encoder.js +523 -0
- package/dist/src/ag-ui/core/encoder.js.map +1 -0
- package/dist/src/ag-ui/core/index.d.ts +12 -0
- package/dist/src/ag-ui/core/index.d.ts.map +1 -0
- package/dist/src/ag-ui/core/index.js +12 -0
- package/dist/src/ag-ui/core/index.js.map +1 -0
- package/dist/src/ag-ui/core/input.d.ts +74 -0
- package/dist/src/ag-ui/core/input.d.ts.map +1 -0
- package/dist/src/ag-ui/core/input.js +228 -0
- package/dist/src/ag-ui/core/input.js.map +1 -0
- package/dist/src/ag-ui/core/interrupt-id.d.ts +31 -0
- package/dist/src/ag-ui/core/interrupt-id.d.ts.map +1 -0
- package/dist/src/ag-ui/core/interrupt-id.js +48 -0
- package/dist/src/ag-ui/core/interrupt-id.js.map +1 -0
- package/dist/src/ag-ui/{proposal-decision.d.ts → core/proposal-decision.d.ts} +1 -1
- package/dist/src/ag-ui/core/proposal-decision.d.ts.map +1 -0
- package/dist/src/ag-ui/{proposal-decision.js → core/proposal-decision.js} +3 -6
- package/dist/src/ag-ui/core/proposal-decision.js.map +1 -0
- package/dist/src/ag-ui/core/stream.d.ts +27 -0
- package/dist/src/ag-ui/core/stream.d.ts.map +1 -0
- package/dist/src/ag-ui/core/stream.js +68 -0
- package/dist/src/ag-ui/core/stream.js.map +1 -0
- package/dist/src/ag-ui/core/types.d.ts +249 -0
- package/dist/src/ag-ui/core/types.d.ts.map +1 -0
- package/dist/src/ag-ui/core/types.js +35 -0
- package/dist/src/ag-ui/core/types.js.map +1 -0
- package/dist/src/ag-ui/encoder.d.ts +3 -4
- package/dist/src/ag-ui/encoder.d.ts.map +1 -1
- package/dist/src/ag-ui/encoder.js +10 -11
- package/dist/src/ag-ui/encoder.js.map +1 -1
- package/dist/src/ag-ui/frames.d.ts +4 -5
- package/dist/src/ag-ui/frames.d.ts.map +1 -1
- package/dist/src/ag-ui/frames.js +8 -4
- package/dist/src/ag-ui/frames.js.map +1 -1
- package/dist/src/ag-ui/index.d.ts +3 -5
- package/dist/src/ag-ui/index.d.ts.map +1 -1
- package/dist/src/ag-ui/index.js +3 -5
- package/dist/src/ag-ui/index.js.map +1 -1
- package/dist/src/ag-ui/stream.d.ts +3 -4
- package/dist/src/ag-ui/stream.d.ts.map +1 -1
- package/dist/src/ag-ui/stream.js +4 -5
- package/dist/src/ag-ui/stream.js.map +1 -1
- package/dist/src/agent-deps-factory.d.ts +3 -0
- package/dist/src/agent-deps-factory.d.ts.map +1 -1
- package/dist/src/agent-deps-factory.js +3 -0
- package/dist/src/agent-deps-factory.js.map +1 -1
- package/dist/src/agent-deps.d.ts +3 -0
- package/dist/src/agent-deps.d.ts.map +1 -1
- package/dist/src/agent-deps.js.map +1 -1
- package/dist/src/agent-loop.d.ts +4 -3
- package/dist/src/agent-loop.d.ts.map +1 -1
- package/dist/src/agent-loop.js +50 -25
- package/dist/src/agent-loop.js.map +1 -1
- package/dist/src/agent-service.d.ts +11 -2
- package/dist/src/agent-service.d.ts.map +1 -1
- package/dist/src/agent-service.js +23 -11
- package/dist/src/agent-service.js.map +1 -1
- package/dist/src/ai-sdk/ai-sdk-model.js +4 -1
- package/dist/src/ai-sdk/ai-sdk-model.js.map +1 -1
- package/dist/src/ai-tool-ref.d.ts +4 -0
- package/dist/src/ai-tool-ref.d.ts.map +1 -1
- package/dist/src/ai-tool-ref.js +10 -14
- package/dist/src/ai-tool-ref.js.map +1 -1
- package/dist/src/chat-queue-service.d.ts.map +1 -1
- package/dist/src/chat-queue-service.js +2 -0
- package/dist/src/chat-queue-service.js.map +1 -1
- package/dist/src/define_config.d.ts +61 -12
- package/dist/src/define_config.d.ts.map +1 -1
- package/dist/src/define_config.js.map +1 -1
- package/dist/src/engine.d.ts +77 -0
- package/dist/src/engine.d.ts.map +1 -0
- package/dist/src/engine.js +27 -0
- package/dist/src/engine.js.map +1 -0
- package/dist/src/genui/builtins.d.ts +73 -3
- package/dist/src/genui/builtins.d.ts.map +1 -1
- package/dist/src/genui/builtins.js +298 -3
- package/dist/src/genui/builtins.js.map +1 -1
- package/dist/src/genui/capabilities.d.ts +24 -0
- package/dist/src/genui/capabilities.d.ts.map +1 -0
- package/dist/src/genui/capabilities.js +81 -0
- package/dist/src/genui/capabilities.js.map +1 -0
- package/dist/src/genui/catalog.d.ts +77 -0
- package/dist/src/genui/catalog.d.ts.map +1 -0
- package/dist/src/genui/catalog.js +88 -0
- package/dist/src/genui/catalog.js.map +1 -0
- package/dist/src/genui/factory.d.ts +7 -14
- package/dist/src/genui/factory.d.ts.map +1 -1
- package/dist/src/genui/factory.js.map +1 -1
- package/dist/src/genui/index.d.ts +4 -12
- package/dist/src/genui/index.d.ts.map +1 -1
- package/dist/src/genui/index.js +5 -18
- package/dist/src/genui/index.js.map +1 -1
- package/dist/src/genui/public.d.ts +9 -0
- package/dist/src/genui/public.d.ts.map +1 -0
- package/dist/src/genui/public.js +9 -0
- package/dist/src/genui/public.js.map +1 -0
- package/dist/src/genui/registry.d.ts +65 -0
- package/dist/src/genui/registry.d.ts.map +1 -0
- package/dist/src/genui/registry.js +151 -0
- package/dist/src/genui/registry.js.map +1 -0
- package/dist/src/genui/schema.d.ts +71 -0
- package/dist/src/genui/schema.d.ts.map +1 -0
- package/dist/src/genui/schema.js +304 -0
- package/dist/src/genui/schema.js.map +1 -0
- package/dist/src/genui/text.d.ts +35 -0
- package/dist/src/genui/text.d.ts.map +1 -0
- package/dist/src/genui/text.js +156 -0
- package/dist/src/genui/text.js.map +1 -0
- package/dist/src/genui/tools.d.ts +91 -0
- package/dist/src/genui/tools.d.ts.map +1 -0
- package/dist/src/genui/tools.js +292 -0
- package/dist/src/genui/tools.js.map +1 -0
- package/dist/src/genui/tree.d.ts +56 -0
- package/dist/src/genui/tree.d.ts.map +1 -0
- package/dist/src/genui/tree.js +188 -0
- package/dist/src/genui/tree.js.map +1 -0
- package/dist/src/index.d.ts +4 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/auth.d.ts +17 -1
- package/dist/src/mcp/auth.d.ts.map +1 -1
- package/dist/src/mcp/auth.js +14 -3
- package/dist/src/mcp/auth.js.map +1 -1
- package/dist/src/mcp/define_config.d.ts +81 -2
- package/dist/src/mcp/define_config.d.ts.map +1 -1
- package/dist/src/mcp/define_config.js.map +1 -1
- package/dist/src/mcp/index.d.ts +1 -1
- package/dist/src/mcp/index.d.ts.map +1 -1
- package/dist/src/mcp/index.js.map +1 -1
- package/dist/src/mcp/oauth-resource.d.ts +9 -0
- package/dist/src/mcp/oauth-resource.d.ts.map +1 -0
- package/dist/src/mcp/oauth-resource.js +16 -0
- package/dist/src/mcp/oauth-resource.js.map +1 -0
- package/dist/src/mcp/server.d.ts +5 -0
- package/dist/src/mcp/server.d.ts.map +1 -1
- package/dist/src/mcp/server.js +48 -16
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/negotiated-tool-ui.d.ts.map +1 -1
- package/dist/src/negotiated-tool-ui.js +12 -8
- package/dist/src/negotiated-tool-ui.js.map +1 -1
- package/dist/src/opencode/client.d.ts +202 -0
- package/dist/src/opencode/client.d.ts.map +1 -0
- package/dist/src/opencode/client.js +2 -0
- package/dist/src/opencode/client.js.map +1 -0
- package/dist/src/opencode/durable/index.d.ts +33 -0
- package/dist/src/opencode/durable/index.d.ts.map +1 -0
- package/dist/src/opencode/durable/index.js +38 -0
- package/dist/src/opencode/durable/index.js.map +1 -0
- package/dist/src/opencode/durable/runner.d.ts +36 -0
- package/dist/src/opencode/durable/runner.d.ts.map +1 -0
- package/dist/src/opencode/durable/runner.js +88 -0
- package/dist/src/opencode/durable/runner.js.map +1 -0
- package/dist/src/opencode/durable/workflow.d.ts +40 -0
- package/dist/src/opencode/durable/workflow.d.ts.map +1 -0
- package/dist/src/opencode/durable/workflow.js +106 -0
- package/dist/src/opencode/durable/workflow.js.map +1 -0
- package/dist/src/opencode/engine.d.ts +48 -0
- package/dist/src/opencode/engine.d.ts.map +1 -0
- package/dist/src/opencode/engine.js +98 -0
- package/dist/src/opencode/engine.js.map +1 -0
- package/dist/src/opencode/event-hub.d.ts +23 -0
- package/dist/src/opencode/event-hub.d.ts.map +1 -0
- package/dist/src/opencode/event-hub.js +99 -0
- package/dist/src/opencode/event-hub.js.map +1 -0
- package/dist/src/opencode/forms.d.ts +19 -0
- package/dist/src/opencode/forms.d.ts.map +1 -0
- package/dist/src/opencode/forms.js +82 -0
- package/dist/src/opencode/forms.js.map +1 -0
- package/dist/src/opencode/host.d.ts +179 -0
- package/dist/src/opencode/host.d.ts.map +1 -0
- package/dist/src/opencode/host.js +34 -0
- package/dist/src/opencode/host.js.map +1 -0
- package/dist/src/opencode/index.d.ts +15 -0
- package/dist/src/opencode/index.d.ts.map +1 -0
- package/dist/src/opencode/index.js +9 -0
- package/dist/src/opencode/index.js.map +1 -0
- package/dist/src/opencode/log.d.ts +9 -0
- package/dist/src/opencode/log.d.ts.map +1 -0
- package/dist/src/opencode/log.js +15 -0
- package/dist/src/opencode/log.js.map +1 -0
- package/dist/src/opencode/mcp.d.ts +60 -0
- package/dist/src/opencode/mcp.d.ts.map +1 -0
- package/dist/src/opencode/mcp.js +258 -0
- package/dist/src/opencode/mcp.js.map +1 -0
- package/dist/src/opencode/runner.d.ts +40 -0
- package/dist/src/opencode/runner.d.ts.map +1 -0
- package/dist/src/opencode/runner.js +125 -0
- package/dist/src/opencode/runner.js.map +1 -0
- package/dist/src/opencode/turn.d.ts +167 -0
- package/dist/src/opencode/turn.d.ts.map +1 -0
- package/dist/src/opencode/turn.js +761 -0
- package/dist/src/opencode/turn.js.map +1 -0
- package/dist/src/opencode/turns.d.ts +245 -0
- package/dist/src/opencode/turns.d.ts.map +1 -0
- package/dist/src/opencode/turns.js +867 -0
- package/dist/src/opencode/turns.js.map +1 -0
- package/dist/src/personas.d.ts.map +1 -1
- package/dist/src/personas.js +4 -1
- package/dist/src/personas.js.map +1 -1
- package/dist/src/react/ag-ui.d.ts +4 -2
- package/dist/src/react/ag-ui.d.ts.map +1 -1
- package/dist/src/react/ag-ui.js +2 -2
- package/dist/src/react/ag-ui.js.map +1 -1
- package/dist/src/react/client.d.ts +1 -1
- package/dist/src/react/client.d.ts.map +1 -1
- package/dist/src/react/client.js +1 -1
- package/dist/src/react/client.js.map +1 -1
- package/dist/src/react/core/ag-ui-backend.d.ts +85 -0
- package/dist/src/react/core/ag-ui-backend.d.ts.map +1 -0
- package/dist/src/react/core/ag-ui-backend.js +409 -0
- package/dist/src/react/core/ag-ui-backend.js.map +1 -0
- package/dist/src/react/core/agent-chat-transport.d.ts +187 -0
- package/dist/src/react/core/agent-chat-transport.d.ts.map +1 -0
- package/dist/src/react/core/agent-chat-transport.js +796 -0
- package/dist/src/react/core/agent-chat-transport.js.map +1 -0
- package/dist/src/react/core/approvals/countdown.d.ts +22 -0
- package/dist/src/react/core/approvals/countdown.d.ts.map +1 -0
- package/dist/src/react/core/approvals/countdown.js +39 -0
- package/dist/src/react/core/approvals/countdown.js.map +1 -0
- package/dist/src/react/core/approvals/proposals.d.ts +15 -0
- package/dist/src/react/core/approvals/proposals.d.ts.map +1 -0
- package/dist/src/react/core/approvals/proposals.js +82 -0
- package/dist/src/react/core/approvals/proposals.js.map +1 -0
- package/dist/src/react/core/approvals/use-action-proposals.d.ts +10 -0
- package/dist/src/react/core/approvals/use-action-proposals.d.ts.map +1 -0
- package/dist/src/react/core/approvals/use-action-proposals.js +86 -0
- package/dist/src/react/core/approvals/use-action-proposals.js.map +1 -0
- package/dist/src/react/core/attachments/files.d.ts +39 -0
- package/dist/src/react/core/attachments/files.d.ts.map +1 -0
- package/dist/src/react/core/attachments/files.js +89 -0
- package/dist/src/react/core/attachments/files.js.map +1 -0
- package/dist/src/react/core/attachments/use-attachments.d.ts +106 -0
- package/dist/src/react/core/attachments/use-attachments.d.ts.map +1 -0
- package/dist/src/react/core/attachments/use-attachments.js +217 -0
- package/dist/src/react/core/attachments/use-attachments.js.map +1 -0
- package/dist/src/react/core/backend.d.ts +234 -0
- package/dist/src/react/core/backend.d.ts.map +1 -0
- package/dist/src/react/core/backend.js +21 -0
- package/dist/src/react/core/backend.js.map +1 -0
- package/dist/src/react/core/background-runs.d.ts +32 -0
- package/dist/src/react/core/background-runs.d.ts.map +1 -0
- package/dist/src/react/core/background-runs.js +47 -0
- package/dist/src/react/core/background-runs.js.map +1 -0
- package/dist/src/react/core/catalog/use-agents.d.ts +31 -0
- package/dist/src/react/core/catalog/use-agents.d.ts.map +1 -0
- package/dist/src/react/core/catalog/use-agents.js +28 -0
- package/dist/src/react/core/catalog/use-agents.js.map +1 -0
- package/dist/src/react/core/catalog/use-models.d.ts +41 -0
- package/dist/src/react/core/catalog/use-models.d.ts.map +1 -0
- package/dist/src/react/core/catalog/use-models.js +35 -0
- package/dist/src/react/core/catalog/use-models.js.map +1 -0
- package/dist/src/react/core/catalog/use-resource.d.ts +12 -0
- package/dist/src/react/core/catalog/use-resource.d.ts.map +1 -0
- package/dist/src/react/core/catalog/use-resource.js +41 -0
- package/dist/src/react/core/catalog/use-resource.js.map +1 -0
- package/dist/src/react/core/client-wire.d.ts +14 -0
- package/dist/src/react/core/client-wire.d.ts.map +1 -0
- package/dist/src/react/core/client-wire.js +2 -0
- package/dist/src/react/core/client-wire.js.map +1 -0
- package/dist/src/react/core/client.d.ts +222 -0
- package/dist/src/react/core/client.d.ts.map +1 -0
- package/dist/src/react/core/client.js +435 -0
- package/dist/src/react/core/client.js.map +1 -0
- package/dist/src/react/core/components/ambient-ui.d.ts +22 -0
- package/dist/src/react/core/components/ambient-ui.d.ts.map +1 -0
- package/dist/src/react/core/components/ambient-ui.js +30 -0
- package/dist/src/react/core/components/ambient-ui.js.map +1 -0
- package/dist/src/react/core/components/chat-input.d.ts +44 -0
- package/dist/src/react/core/components/chat-input.d.ts.map +1 -0
- package/dist/src/react/core/components/chat-input.js +69 -0
- package/dist/src/react/core/components/chat-input.js.map +1 -0
- package/dist/src/react/core/components/index.d.ts +7 -0
- package/dist/src/react/core/components/index.d.ts.map +1 -0
- package/dist/src/react/core/components/index.js +7 -0
- package/dist/src/react/core/components/index.js.map +1 -0
- package/dist/src/react/core/components/message-item.d.ts +101 -0
- package/dist/src/react/core/components/message-item.d.ts.map +1 -0
- package/dist/src/react/core/components/message-item.js +118 -0
- package/dist/src/react/core/components/message-item.js.map +1 -0
- package/dist/src/react/core/components/message-list.d.ts +85 -0
- package/dist/src/react/core/components/message-list.d.ts.map +1 -0
- package/dist/src/react/core/components/message-list.js +45 -0
- package/dist/src/react/core/components/message-list.js.map +1 -0
- package/dist/src/react/core/components/speech-languages.d.ts +22 -0
- package/dist/src/react/core/components/speech-languages.d.ts.map +1 -0
- package/dist/src/react/core/components/speech-languages.js +38 -0
- package/dist/src/react/core/components/speech-languages.js.map +1 -0
- package/dist/src/react/core/components/use-speech-recognition.d.ts +19 -0
- package/dist/src/react/core/components/use-speech-recognition.d.ts.map +1 -0
- package/dist/src/react/core/components/use-speech-recognition.js +92 -0
- package/dist/src/react/core/components/use-speech-recognition.js.map +1 -0
- package/dist/src/react/core/composer/index.d.ts +4 -0
- package/dist/src/react/core/composer/index.d.ts.map +1 -0
- package/dist/src/react/core/composer/index.js +4 -0
- package/dist/src/react/core/composer/index.js.map +1 -0
- package/dist/src/react/core/composer/model.d.ts +83 -0
- package/dist/src/react/core/composer/model.d.ts.map +1 -0
- package/dist/src/react/core/composer/model.js +53 -0
- package/dist/src/react/core/composer/model.js.map +1 -0
- package/dist/src/react/core/composer/skills-source.d.ts +29 -0
- package/dist/src/react/core/composer/skills-source.d.ts.map +1 -0
- package/dist/src/react/core/composer/skills-source.js +61 -0
- package/dist/src/react/core/composer/skills-source.js.map +1 -0
- package/dist/src/react/core/composer/use-composer-autocomplete.d.ts +78 -0
- package/dist/src/react/core/composer/use-composer-autocomplete.d.ts.map +1 -0
- package/dist/src/react/core/composer/use-composer-autocomplete.js +244 -0
- package/dist/src/react/core/composer/use-composer-autocomplete.js.map +1 -0
- package/dist/src/react/core/config/use-agent-config.d.ts +21 -0
- package/dist/src/react/core/config/use-agent-config.d.ts.map +1 -0
- package/dist/src/react/core/config/use-agent-config.js +57 -0
- package/dist/src/react/core/config/use-agent-config.js.map +1 -0
- package/dist/src/react/core/elicitation/answers.d.ts +22 -0
- package/dist/src/react/core/elicitation/answers.d.ts.map +1 -0
- package/dist/src/react/core/elicitation/answers.js +65 -0
- package/dist/src/react/core/elicitation/answers.js.map +1 -0
- package/dist/src/react/core/feedback/use-message-feedback.d.ts +32 -0
- package/dist/src/react/core/feedback/use-message-feedback.d.ts.map +1 -0
- package/dist/src/react/core/feedback/use-message-feedback.js +106 -0
- package/dist/src/react/core/feedback/use-message-feedback.js.map +1 -0
- package/dist/src/react/core/genui/generative-ui.d.ts +76 -0
- package/dist/src/react/core/genui/generative-ui.d.ts.map +1 -0
- package/dist/src/react/core/genui/generative-ui.js +210 -0
- package/dist/src/react/core/genui/generative-ui.js.map +1 -0
- package/dist/src/react/core/genui/index.d.ts +5 -0
- package/dist/src/react/core/genui/index.d.ts.map +1 -0
- package/dist/src/react/core/genui/index.js +5 -0
- package/dist/src/react/core/genui/index.js.map +1 -0
- package/dist/src/react/core/genui/json-render.d.ts +54 -0
- package/dist/src/react/core/genui/json-render.d.ts.map +1 -0
- package/dist/src/react/core/genui/json-render.js +64 -0
- package/dist/src/react/core/genui/json-render.js.map +1 -0
- package/dist/src/react/core/genui/playwright.d.ts +12 -0
- package/dist/src/react/core/genui/playwright.d.ts.map +1 -0
- package/dist/src/react/core/genui/playwright.js +141 -0
- package/dist/src/react/core/genui/playwright.js.map +1 -0
- package/dist/src/react/core/genui/react-registry.d.ts +22 -0
- package/dist/src/react/core/genui/react-registry.d.ts.map +1 -0
- package/dist/src/react/core/genui/react-registry.js +72 -0
- package/dist/src/react/core/genui/react-registry.js.map +1 -0
- package/dist/src/react/core/genui/server.d.ts +32 -0
- package/dist/src/react/core/genui/server.d.ts.map +1 -0
- package/dist/src/react/core/genui/server.js +66 -0
- package/dist/src/react/core/genui/server.js.map +1 -0
- package/dist/src/react/core/genui/types.d.ts +98 -0
- package/dist/src/react/core/genui/types.d.ts.map +1 -0
- package/dist/src/react/core/genui/types.js +3 -0
- package/dist/src/react/core/genui/types.js.map +1 -0
- package/dist/src/react/core/genui/use-generative-ui.d.ts +42 -0
- package/dist/src/react/core/genui/use-generative-ui.d.ts.map +1 -0
- package/dist/src/react/core/genui/use-generative-ui.js +186 -0
- package/dist/src/react/core/genui/use-generative-ui.js.map +1 -0
- package/dist/src/react/core/http-error.d.ts +33 -0
- package/dist/src/react/core/http-error.d.ts.map +1 -0
- package/dist/src/react/core/http-error.js +47 -0
- package/dist/src/react/core/http-error.js.map +1 -0
- package/dist/src/react/core/index.d.ts +35 -0
- package/dist/src/react/core/index.d.ts.map +1 -0
- package/dist/src/react/core/index.js +34 -0
- package/dist/src/react/core/index.js.map +1 -0
- package/dist/src/react/core/markdown/agent-markdown.d.ts +39 -0
- package/dist/src/react/core/markdown/agent-markdown.d.ts.map +1 -0
- package/dist/src/react/core/markdown/agent-markdown.js +22 -0
- package/dist/src/react/core/markdown/agent-markdown.js.map +1 -0
- package/dist/src/react/core/markdown/index.d.ts +2 -0
- package/dist/src/react/core/markdown/index.d.ts.map +1 -0
- package/dist/src/react/core/markdown/index.js +2 -0
- package/dist/src/react/core/markdown/index.js.map +1 -0
- package/dist/src/react/core/media/index.d.ts +64 -0
- package/dist/src/react/core/media/index.d.ts.map +1 -0
- package/dist/src/react/core/media/index.js +135 -0
- package/dist/src/react/core/media/index.js.map +1 -0
- package/dist/src/react/core/media/tus.d.ts +13 -0
- package/dist/src/react/core/media/tus.d.ts.map +1 -0
- package/dist/src/react/core/media/tus.js +59 -0
- package/dist/src/react/core/media/tus.js.map +1 -0
- package/dist/src/react/core/presentation/phrasing.d.ts +25 -0
- package/dist/src/react/core/presentation/phrasing.d.ts.map +1 -0
- package/dist/src/react/core/presentation/phrasing.js +58 -0
- package/dist/src/react/core/presentation/phrasing.js.map +1 -0
- package/dist/src/react/core/presentation/result-view.d.ts +43 -0
- package/dist/src/react/core/presentation/result-view.d.ts.map +1 -0
- package/dist/src/react/core/presentation/result-view.js +90 -0
- package/dist/src/react/core/presentation/result-view.js.map +1 -0
- package/dist/src/react/core/presentation/tool-activity.d.ts +106 -0
- package/dist/src/react/core/presentation/tool-activity.d.ts.map +1 -0
- package/dist/src/react/core/presentation/tool-activity.js +165 -0
- package/dist/src/react/core/presentation/tool-activity.js.map +1 -0
- package/dist/src/react/core/presentation/use-tool-catalog.d.ts +39 -0
- package/dist/src/react/core/presentation/use-tool-catalog.d.ts.map +1 -0
- package/dist/src/react/core/presentation/use-tool-catalog.js +77 -0
- package/dist/src/react/core/presentation/use-tool-catalog.js.map +1 -0
- package/dist/src/react/core/provider.d.ts +68 -0
- package/dist/src/react/core/provider.d.ts.map +1 -0
- package/dist/src/react/core/provider.js +61 -0
- package/dist/src/react/core/provider.js.map +1 -0
- package/dist/src/react/core/queue/model.d.ts +73 -0
- package/dist/src/react/core/queue/model.d.ts.map +1 -0
- package/dist/src/react/core/queue/model.js +2 -0
- package/dist/src/react/core/queue/model.js.map +1 -0
- package/dist/src/react/core/quota/use-quota.d.ts +35 -0
- package/dist/src/react/core/quota/use-quota.d.ts.map +1 -0
- package/dist/src/react/core/quota/use-quota.js +47 -0
- package/dist/src/react/core/quota/use-quota.js.map +1 -0
- package/dist/src/react/core/reasoning/timing.d.ts +38 -0
- package/dist/src/react/core/reasoning/timing.d.ts.map +1 -0
- package/dist/src/react/core/reasoning/timing.js +73 -0
- package/dist/src/react/core/reasoning/timing.js.map +1 -0
- package/dist/src/react/core/run-errors.d.ts +37 -0
- package/dist/src/react/core/run-errors.d.ts.map +1 -0
- package/dist/src/react/core/run-errors.js +37 -0
- package/dist/src/react/core/run-errors.js.map +1 -0
- package/dist/src/react/core/stored-message-to-ui-message.d.ts +4 -0
- package/dist/src/react/core/stored-message-to-ui-message.d.ts.map +1 -0
- package/dist/src/react/core/stored-message-to-ui-message.js +216 -0
- package/dist/src/react/core/stored-message-to-ui-message.js.map +1 -0
- package/dist/src/react/core/stored-thread-to-ui-messages.d.ts +82 -0
- package/dist/src/react/core/stored-thread-to-ui-messages.d.ts.map +1 -0
- package/dist/src/react/core/stored-thread-to-ui-messages.js +116 -0
- package/dist/src/react/core/stored-thread-to-ui-messages.js.map +1 -0
- package/dist/src/react/core/threads/threads-events.d.ts +22 -0
- package/dist/src/react/core/threads/threads-events.d.ts.map +1 -0
- package/dist/src/react/core/threads/threads-events.js +21 -0
- package/dist/src/react/core/threads/threads-events.js.map +1 -0
- package/dist/src/react/core/threads/use-threads.d.ts +31 -0
- package/dist/src/react/core/threads/use-threads.d.ts.map +1 -0
- package/dist/src/react/core/threads/use-threads.js +81 -0
- package/dist/src/react/core/threads/use-threads.js.map +1 -0
- package/dist/src/react/core/transcript/index.d.ts +4 -0
- package/dist/src/react/core/transcript/index.d.ts.map +1 -0
- package/dist/src/react/core/transcript/index.js +4 -0
- package/dist/src/react/core/transcript/index.js.map +1 -0
- package/dist/src/react/core/transcript/model.d.ts +399 -0
- package/dist/src/react/core/transcript/model.d.ts.map +1 -0
- package/dist/src/react/core/transcript/model.js +725 -0
- package/dist/src/react/core/transcript/model.js.map +1 -0
- package/dist/src/react/core/transcript/use-chat-transcript.d.ts +254 -0
- package/dist/src/react/core/transcript/use-chat-transcript.d.ts.map +1 -0
- package/dist/src/react/core/transcript/use-chat-transcript.js +572 -0
- package/dist/src/react/core/transcript/use-chat-transcript.js.map +1 -0
- package/dist/src/react/core/transcript/use-stick-to-bottom.d.ts +33 -0
- package/dist/src/react/core/transcript/use-stick-to-bottom.d.ts.map +1 -0
- package/dist/src/react/core/transcript/use-stick-to-bottom.js +48 -0
- package/dist/src/react/core/transcript/use-stick-to-bottom.js.map +1 -0
- package/dist/src/react/core/use-agent-chat.d.ts +341 -0
- package/dist/src/react/core/use-agent-chat.d.ts.map +1 -0
- package/dist/src/react/core/use-agent-chat.js +1118 -0
- package/dist/src/react/core/use-agent-chat.js.map +1 -0
- package/dist/src/react/genui/index.d.ts +1 -7
- package/dist/src/react/genui/index.d.ts.map +1 -1
- package/dist/src/react/genui/index.js +1 -7
- package/dist/src/react/genui/index.js.map +1 -1
- package/dist/src/react/genui/json-render.d.ts +1 -5
- package/dist/src/react/genui/json-render.d.ts.map +1 -1
- package/dist/src/react/genui/json-render.js +1 -5
- package/dist/src/react/genui/json-render.js.map +1 -1
- package/dist/src/react/genui/server.d.ts +2 -0
- package/dist/src/react/genui/server.d.ts.map +1 -0
- package/dist/src/react/genui/server.js +2 -0
- package/dist/src/react/genui/server.js.map +1 -0
- package/dist/src/react/genui/server_playwright.d.ts +2 -0
- package/dist/src/react/genui/server_playwright.d.ts.map +1 -0
- package/dist/src/react/genui/server_playwright.js +2 -0
- package/dist/src/react/genui/server_playwright.js.map +1 -0
- package/dist/src/react/index.d.ts +5 -7
- package/dist/src/react/index.d.ts.map +1 -1
- package/dist/src/react/index.js +5 -7
- package/dist/src/react/index.js.map +1 -1
- package/dist/src/react/markdown.d.ts +1 -6
- package/dist/src/react/markdown.d.ts.map +1 -1
- package/dist/src/react/markdown.js +1 -6
- package/dist/src/react/markdown.js.map +1 -1
- package/dist/src/react/media.d.ts +1 -17
- package/dist/src/react/media.d.ts.map +1 -1
- package/dist/src/react/media.js +1 -17
- package/dist/src/react/media.js.map +1 -1
- package/dist/src/refusal.d.ts +3 -0
- package/dist/src/refusal.d.ts.map +1 -0
- package/dist/src/refusal.js +3 -0
- package/dist/src/refusal.js.map +1 -0
- package/dist/src/spi/agent-runner.d.ts +6 -0
- package/dist/src/spi/agent-runner.d.ts.map +1 -1
- package/dist/src/spi/chat-queue.d.ts +4 -1
- package/dist/src/spi/chat-queue.d.ts.map +1 -1
- package/dist/src/spi/chat-queue.js.map +1 -1
- package/dist/src/spi/protocol-adapter.d.ts +3 -3
- package/dist/src/spi/roles-policy.d.ts +7 -0
- package/dist/src/spi/roles-policy.d.ts.map +1 -1
- package/dist/src/spi/tool.d.ts +18 -3
- package/dist/src/spi/tool.d.ts.map +1 -1
- package/dist/src/stores/lucid-schema.d.ts.map +1 -1
- package/dist/src/stores/lucid-schema.js +2 -0
- package/dist/src/stores/lucid-schema.js.map +1 -1
- package/dist/src/stores/lucid.d.ts.map +1 -1
- package/dist/src/stores/lucid.js +3 -0
- package/dist/src/stores/lucid.js.map +1 -1
- package/dist/src/testing/chat-queue-store-contract.d.ts.map +1 -1
- package/dist/src/testing/chat-queue-store-contract.js +4 -0
- package/dist/src/testing/chat-queue-store-contract.js.map +1 -1
- package/dist/src/testing/in-memory-store.d.ts.map +1 -1
- package/dist/src/testing/in-memory-store.js +1 -0
- package/dist/src/testing/in-memory-store.js.map +1 -1
- package/dist/src/tool-discovery.d.ts +1 -1
- package/dist/src/tool-discovery.d.ts.map +1 -1
- package/dist/src/tool-discovery.js +5 -1
- package/dist/src/tool-discovery.js.map +1 -1
- package/dist/src/tool-registry.d.ts +3 -0
- package/dist/src/tool-registry.d.ts.map +1 -1
- package/dist/src/tool-registry.js +15 -3
- package/dist/src/tool-registry.js.map +1 -1
- package/dist/src/tool-result-presentation.d.ts +12 -0
- package/dist/src/tool-result-presentation.d.ts.map +1 -0
- package/dist/src/tool-result-presentation.js +44 -0
- package/dist/src/tool-result-presentation.js.map +1 -0
- package/dist/src/types.d.ts +20 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/ui-capabilities.d.ts +1 -8
- package/dist/src/ui-capabilities.d.ts.map +1 -1
- package/dist/src/ui-capabilities.js +3 -24
- package/dist/src/ui-capabilities.js.map +1 -1
- package/package.json +123 -22
- package/skills/agent-governance/SKILL.md +12 -4
- package/skills/agent-personas-agents/SKILL.md +2 -1
- package/skills/agent-setup/SKILL.md +36 -13
- package/skills/agent-testing/SKILL.md +22 -0
- package/skills/agent-tools/SKILL.md +54 -9
- package/dist/src/ag-ui/proposal-decision.d.ts.map +0 -1
- package/dist/src/ag-ui/proposal-decision.js.map +0 -1
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
/** The ids of an AG-UI run this consumer invented, when the send did not name a thread. */
|
|
2
|
+
function newId() {
|
|
3
|
+
return globalThis.crypto.randomUUID();
|
|
4
|
+
}
|
|
5
|
+
function isRecord(value) {
|
|
6
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
7
|
+
}
|
|
8
|
+
async function defaultRefusal(response) {
|
|
9
|
+
try {
|
|
10
|
+
const body = (await response.json());
|
|
11
|
+
if (typeof body.message === 'string' && body.message.length > 0)
|
|
12
|
+
return new Error(body.message);
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
// not JSON: fall through to the status
|
|
16
|
+
}
|
|
17
|
+
return new Error(`The agent refused the request (${response.status}).`);
|
|
18
|
+
}
|
|
19
|
+
function defaultForwardedProps(body) {
|
|
20
|
+
const out = {};
|
|
21
|
+
for (const key of ['pageContext', 'agent', 'model', 'persona', 'uiCapabilities']) {
|
|
22
|
+
if (body[key] !== undefined && body[key] !== null)
|
|
23
|
+
out[key] = body[key];
|
|
24
|
+
}
|
|
25
|
+
return Object.keys(out).length > 0 ? out : undefined;
|
|
26
|
+
}
|
|
27
|
+
/** Start a turn against an AG-UI producer; the stream comes back in this library's framing. */
|
|
28
|
+
export async function agUiChatStream(request, options) {
|
|
29
|
+
const body = request.body;
|
|
30
|
+
const threadId = typeof body.threadId === 'string' ? body.threadId : newId();
|
|
31
|
+
const message = typeof body.message === 'string' ? body.message : '';
|
|
32
|
+
const forwarded = (options.forwardedProps ?? defaultForwardedProps)(body);
|
|
33
|
+
const input = {
|
|
34
|
+
threadId,
|
|
35
|
+
runId: newId(),
|
|
36
|
+
protocolVersion: '1.0',
|
|
37
|
+
messages: [{ id: newId(), role: 'user', content: options.content?.(body) ?? message }],
|
|
38
|
+
...(forwarded !== undefined ? { forwardedProps: forwarded } : {}),
|
|
39
|
+
};
|
|
40
|
+
const doFetch = options.fetch ?? globalThis.fetch.bind(globalThis);
|
|
41
|
+
const response = await doFetch(options.url, {
|
|
42
|
+
method: 'POST',
|
|
43
|
+
credentials: 'same-origin',
|
|
44
|
+
headers: {
|
|
45
|
+
'content-type': 'application/json',
|
|
46
|
+
accept: 'text/event-stream',
|
|
47
|
+
...options.headers,
|
|
48
|
+
...request.headers,
|
|
49
|
+
},
|
|
50
|
+
body: JSON.stringify(input),
|
|
51
|
+
...(request.signal !== undefined ? { signal: request.signal } : {}),
|
|
52
|
+
});
|
|
53
|
+
if (!response.ok || response.body === null) {
|
|
54
|
+
throw await (options.refusal ?? defaultRefusal)(response);
|
|
55
|
+
}
|
|
56
|
+
const runId = response.headers.get('x-agent-run-id') ?? undefined;
|
|
57
|
+
return {
|
|
58
|
+
body: reframeAgUiStream(response.body, { threadId }),
|
|
59
|
+
threadId,
|
|
60
|
+
...(runId !== undefined ? { runId } : {}),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Re-frame an AG-UI event stream (SSE, one event per `data:`) in this library's stream protocol:
|
|
65
|
+
* `event: meta`, numbered `data:` frames of {@link AgentStreamEvent}, then `event: done` or
|
|
66
|
+
* `event: error`. Exported for a backend that fetches the stream itself.
|
|
67
|
+
*/
|
|
68
|
+
export function reframeAgUiStream(source, ids) {
|
|
69
|
+
const encoder = new TextEncoder();
|
|
70
|
+
const decoder = new TextDecoder();
|
|
71
|
+
const reframer = createReframer(ids.threadId);
|
|
72
|
+
const reader = source.getReader();
|
|
73
|
+
let buffer = '';
|
|
74
|
+
return new ReadableStream({
|
|
75
|
+
async pull(controller) {
|
|
76
|
+
for (;;) {
|
|
77
|
+
const { value, done } = await reader.read();
|
|
78
|
+
if (done) {
|
|
79
|
+
// A stream that stopped without a terminal event is a truncated run: end it plainly, and
|
|
80
|
+
// the transport reads the stored thread for the rest.
|
|
81
|
+
controller.close();
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
buffer += decoder.decode(value, { stream: true }).replace(/\r\n?/g, '\n');
|
|
85
|
+
let out = '';
|
|
86
|
+
let separator = buffer.indexOf('\n\n');
|
|
87
|
+
while (separator !== -1) {
|
|
88
|
+
const block = buffer.slice(0, separator);
|
|
89
|
+
buffer = buffer.slice(separator + 2);
|
|
90
|
+
separator = buffer.indexOf('\n\n');
|
|
91
|
+
const data = block
|
|
92
|
+
.split('\n')
|
|
93
|
+
.filter((line) => line.startsWith('data:'))
|
|
94
|
+
.map((line) => line.slice(5).trimStart())
|
|
95
|
+
.join('\n');
|
|
96
|
+
if (data.length === 0)
|
|
97
|
+
continue;
|
|
98
|
+
let event;
|
|
99
|
+
try {
|
|
100
|
+
event = JSON.parse(data);
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
if (isRecord(event) && typeof event.type === 'string') {
|
|
106
|
+
out += reframer.push(event);
|
|
107
|
+
}
|
|
108
|
+
if (reframer.closed)
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
if (out.length > 0)
|
|
112
|
+
controller.enqueue(encoder.encode(out));
|
|
113
|
+
if (reframer.closed) {
|
|
114
|
+
void reader.cancel().catch(() => undefined);
|
|
115
|
+
controller.close();
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
if (out.length > 0)
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
cancel(reason) {
|
|
123
|
+
return reader.cancel(reason).catch(() => undefined);
|
|
124
|
+
},
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
function createReframer(threadId) {
|
|
128
|
+
const activities = new Map();
|
|
129
|
+
let seq = 0;
|
|
130
|
+
let metaSent = false;
|
|
131
|
+
const tools = new Map();
|
|
132
|
+
const state = {
|
|
133
|
+
closed: false,
|
|
134
|
+
push(event) {
|
|
135
|
+
if (state.closed)
|
|
136
|
+
return '';
|
|
137
|
+
let out = '';
|
|
138
|
+
const frame = (streamEvent) => {
|
|
139
|
+
seq += 1;
|
|
140
|
+
out += `id: ${seq}\ndata: ${JSON.stringify(streamEvent)}\n\n`;
|
|
141
|
+
};
|
|
142
|
+
const meta = (runId, thread) => {
|
|
143
|
+
if (metaSent)
|
|
144
|
+
return;
|
|
145
|
+
metaSent = true;
|
|
146
|
+
out += `event: meta\ndata: ${JSON.stringify({
|
|
147
|
+
runId: typeof runId === 'string' ? runId : '',
|
|
148
|
+
threadId: typeof thread === 'string' ? thread : threadId,
|
|
149
|
+
})}\n\n`;
|
|
150
|
+
};
|
|
151
|
+
switch (event.type) {
|
|
152
|
+
case 'RUN_STARTED':
|
|
153
|
+
// `agora.run` (next) names the library's own run; wait a beat for it only if it follows
|
|
154
|
+
// at once — otherwise the protocol's own ids do.
|
|
155
|
+
pendingStart = { runId: event.runId, threadId: event.threadId };
|
|
156
|
+
return out;
|
|
157
|
+
case 'CUSTOM': {
|
|
158
|
+
const value = event.value;
|
|
159
|
+
if (event.name === 'agora.run' && isRecord(value)) {
|
|
160
|
+
meta(value.runId, pendingStart?.threadId ?? value.threadId);
|
|
161
|
+
pendingStart = undefined;
|
|
162
|
+
return out;
|
|
163
|
+
}
|
|
164
|
+
flushStart();
|
|
165
|
+
if (!isRecord(value))
|
|
166
|
+
return out;
|
|
167
|
+
if (event.name === 'agora.ui')
|
|
168
|
+
frame({ kind: 'ui', ...value });
|
|
169
|
+
else if (event.name === 'agora.title' && typeof value.title === 'string') {
|
|
170
|
+
frame({ kind: 'title', title: value.title });
|
|
171
|
+
}
|
|
172
|
+
else if (event.name === 'agora.queue')
|
|
173
|
+
frame({ kind: 'queue', ...value });
|
|
174
|
+
else if (event.name === 'agora.approval-requested') {
|
|
175
|
+
frame({ ...value, kind: 'approval-requested' });
|
|
176
|
+
}
|
|
177
|
+
else if (event.name === 'agora.approval-settled') {
|
|
178
|
+
frame({ ...value, kind: 'approval-settled' });
|
|
179
|
+
}
|
|
180
|
+
return out;
|
|
181
|
+
}
|
|
182
|
+
default:
|
|
183
|
+
flushStart();
|
|
184
|
+
}
|
|
185
|
+
switch (event.type) {
|
|
186
|
+
case 'TEXT_MESSAGE_CONTENT':
|
|
187
|
+
case 'TEXT_MESSAGE_CHUNK':
|
|
188
|
+
if (typeof event.delta === 'string' && event.delta.length > 0) {
|
|
189
|
+
frame({ kind: 'text', text: event.delta });
|
|
190
|
+
}
|
|
191
|
+
break;
|
|
192
|
+
case 'REASONING_MESSAGE_CONTENT':
|
|
193
|
+
case 'REASONING_MESSAGE_CHUNK':
|
|
194
|
+
if (typeof event.delta === 'string' && event.delta.length > 0) {
|
|
195
|
+
frame({ kind: 'reasoning', text: event.delta });
|
|
196
|
+
}
|
|
197
|
+
break;
|
|
198
|
+
case 'STEP_STARTED':
|
|
199
|
+
frame({ kind: 'step-start' });
|
|
200
|
+
break;
|
|
201
|
+
case 'STEP_FINISHED':
|
|
202
|
+
frame({ kind: 'step-finish' });
|
|
203
|
+
break;
|
|
204
|
+
case 'TOOL_CALL_START':
|
|
205
|
+
case 'TOOL_CALL_CHUNK': {
|
|
206
|
+
const id = String(event.toolCallId ?? '');
|
|
207
|
+
if (id === '')
|
|
208
|
+
break;
|
|
209
|
+
if (!tools.has(id)) {
|
|
210
|
+
const name = typeof event.toolCallName === 'string' ? event.toolCallName : '';
|
|
211
|
+
tools.set(id, { name, args: '' });
|
|
212
|
+
frame({ kind: 'tool-input-start', id, name, toolKind: 'read' });
|
|
213
|
+
}
|
|
214
|
+
if (event.type === 'TOOL_CALL_CHUNK' && typeof event.delta === 'string') {
|
|
215
|
+
tools.get(id).args += event.delta;
|
|
216
|
+
frame({ kind: 'tool-input-delta', id, delta: event.delta });
|
|
217
|
+
}
|
|
218
|
+
break;
|
|
219
|
+
}
|
|
220
|
+
case 'TOOL_CALL_ARGS': {
|
|
221
|
+
const call = tools.get(String(event.toolCallId));
|
|
222
|
+
if (call === undefined || typeof event.delta !== 'string')
|
|
223
|
+
break;
|
|
224
|
+
call.args += event.delta;
|
|
225
|
+
frame({ kind: 'tool-input-delta', id: String(event.toolCallId), delta: event.delta });
|
|
226
|
+
break;
|
|
227
|
+
}
|
|
228
|
+
case 'TOOL_CALL_END': {
|
|
229
|
+
const id = String(event.toolCallId);
|
|
230
|
+
const call = tools.get(id);
|
|
231
|
+
if (call === undefined)
|
|
232
|
+
break;
|
|
233
|
+
frame({
|
|
234
|
+
kind: 'tool-input-available',
|
|
235
|
+
id,
|
|
236
|
+
name: call.name,
|
|
237
|
+
input: parseJson(call.args, {}),
|
|
238
|
+
toolKind: 'read',
|
|
239
|
+
});
|
|
240
|
+
break;
|
|
241
|
+
}
|
|
242
|
+
case 'TOOL_CALL_RESULT': {
|
|
243
|
+
const id = String(event.toolCallId);
|
|
244
|
+
const content = contentText(event.content);
|
|
245
|
+
const outcome = isRecord(event.metadata) ? event.metadata['agora.outcome'] : undefined;
|
|
246
|
+
if (outcome === 'error')
|
|
247
|
+
frame({ kind: 'tool-output-error', id, error: content });
|
|
248
|
+
else if (outcome === 'denied')
|
|
249
|
+
frame({ kind: 'tool-output-denied', id, reason: content });
|
|
250
|
+
else
|
|
251
|
+
frame({ kind: 'tool-output', id, output: parseJson(content, content) });
|
|
252
|
+
break;
|
|
253
|
+
}
|
|
254
|
+
case 'ACTIVITY_SNAPSHOT':
|
|
255
|
+
case 'ACTIVITY_DELTA': {
|
|
256
|
+
const messageId = typeof event.messageId === 'string' ? event.messageId : '';
|
|
257
|
+
if (messageId === '')
|
|
258
|
+
break;
|
|
259
|
+
const known = activities.get(messageId);
|
|
260
|
+
const activityType = typeof event.activityType === 'string'
|
|
261
|
+
? event.activityType
|
|
262
|
+
: (known?.activityType ?? '');
|
|
263
|
+
let content;
|
|
264
|
+
if (event.type === 'ACTIVITY_SNAPSHOT') {
|
|
265
|
+
// `replace: false` leaves an existing activity as it stands
|
|
266
|
+
if (known !== undefined && event.replace === false)
|
|
267
|
+
break;
|
|
268
|
+
content = isRecord(event.content) ? event.content : {};
|
|
269
|
+
}
|
|
270
|
+
else {
|
|
271
|
+
// a delta for an activity nothing created is skipped, never fatal
|
|
272
|
+
if (known === undefined || !Array.isArray(event.patch))
|
|
273
|
+
break;
|
|
274
|
+
content = applyPatch(known.content, event.patch);
|
|
275
|
+
if (content === undefined)
|
|
276
|
+
break;
|
|
277
|
+
}
|
|
278
|
+
activities.set(messageId, { activityType, content });
|
|
279
|
+
frame({
|
|
280
|
+
kind: 'ui',
|
|
281
|
+
id: `activity:${messageId}`,
|
|
282
|
+
component: 'AgUiActivity',
|
|
283
|
+
props: { activityType, content },
|
|
284
|
+
});
|
|
285
|
+
break;
|
|
286
|
+
}
|
|
287
|
+
case 'RUN_ERROR':
|
|
288
|
+
state.closed = true;
|
|
289
|
+
out += `event: error\ndata: ${JSON.stringify({
|
|
290
|
+
code: typeof event.code === 'string' ? event.code : 'run_failed',
|
|
291
|
+
message: typeof event.message === 'string' ? event.message : 'The run failed.',
|
|
292
|
+
})}\n\n`;
|
|
293
|
+
break;
|
|
294
|
+
case 'RUN_FINISHED': {
|
|
295
|
+
const outcome = isRecord(event.outcome) ? event.outcome : undefined;
|
|
296
|
+
if (outcome?.type === 'cancelled')
|
|
297
|
+
frame({ kind: 'cancelled' });
|
|
298
|
+
if (outcome?.type === 'interrupt' && Array.isArray(outcome.interrupts)) {
|
|
299
|
+
frame({
|
|
300
|
+
kind: 'ui',
|
|
301
|
+
id: `ag-ui:interrupt:${String(event.runId ?? '')}`,
|
|
302
|
+
component: 'AgUiInterrupt',
|
|
303
|
+
props: { interrupts: outcome.interrupts },
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
state.closed = true;
|
|
307
|
+
out += 'event: done\ndata: {}\n\n';
|
|
308
|
+
break;
|
|
309
|
+
}
|
|
310
|
+
default:
|
|
311
|
+
// Everything else (message and span brackets, state, activity, raw) carries nothing this
|
|
312
|
+
// framing does not already say.
|
|
313
|
+
break;
|
|
314
|
+
}
|
|
315
|
+
return out;
|
|
316
|
+
function flushStart() {
|
|
317
|
+
if (pendingStart !== undefined) {
|
|
318
|
+
meta(pendingStart.runId, pendingStart.threadId);
|
|
319
|
+
pendingStart = undefined;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
},
|
|
323
|
+
};
|
|
324
|
+
let pendingStart;
|
|
325
|
+
return state;
|
|
326
|
+
}
|
|
327
|
+
function parseJson(text, fallback) {
|
|
328
|
+
if (text.trim().length === 0)
|
|
329
|
+
return fallback;
|
|
330
|
+
try {
|
|
331
|
+
return JSON.parse(text);
|
|
332
|
+
}
|
|
333
|
+
catch {
|
|
334
|
+
return fallback;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
/** A result's content as text: a string, or its text parts in order (other parts carry no text). */
|
|
338
|
+
function contentText(content) {
|
|
339
|
+
if (typeof content === 'string')
|
|
340
|
+
return content;
|
|
341
|
+
if (!Array.isArray(content))
|
|
342
|
+
return '';
|
|
343
|
+
return content
|
|
344
|
+
.filter((part) => isRecord(part) && part.type === 'text' && typeof part.text === 'string')
|
|
345
|
+
.map((part) => part.text)
|
|
346
|
+
.join('');
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* RFC 6902 on a copy: `add`, `replace`, `remove` (and `test`, which fails the patch). `undefined`
|
|
350
|
+
* when the patch does not apply — the activity then keeps its last good content until a snapshot.
|
|
351
|
+
*/
|
|
352
|
+
function applyPatch(target, patch) {
|
|
353
|
+
const doc = structuredClone(target);
|
|
354
|
+
for (const operation of patch) {
|
|
355
|
+
if (!isRecord(operation) || typeof operation.path !== 'string')
|
|
356
|
+
return undefined;
|
|
357
|
+
const tokens = operation.path
|
|
358
|
+
.split('/')
|
|
359
|
+
.slice(1)
|
|
360
|
+
.map((token) => token.replace(/~1/g, '/').replace(/~0/g, '~'));
|
|
361
|
+
const key = tokens.pop();
|
|
362
|
+
if (key === undefined)
|
|
363
|
+
return undefined;
|
|
364
|
+
let parent = doc;
|
|
365
|
+
for (const token of tokens) {
|
|
366
|
+
parent = Array.isArray(parent)
|
|
367
|
+
? parent[Number(token)]
|
|
368
|
+
: isRecord(parent)
|
|
369
|
+
? parent[token]
|
|
370
|
+
: undefined;
|
|
371
|
+
if (parent === undefined)
|
|
372
|
+
return undefined;
|
|
373
|
+
}
|
|
374
|
+
if (Array.isArray(parent)) {
|
|
375
|
+
const index = key === '-' ? parent.length : Number(key);
|
|
376
|
+
if (!Number.isInteger(index) || index < 0 || index > parent.length)
|
|
377
|
+
return undefined;
|
|
378
|
+
if (operation.op === 'add')
|
|
379
|
+
parent.splice(index, 0, operation.value);
|
|
380
|
+
else if (operation.op === 'replace' && index < parent.length)
|
|
381
|
+
parent[index] = operation.value;
|
|
382
|
+
else if (operation.op === 'remove' && index < parent.length)
|
|
383
|
+
parent.splice(index, 1);
|
|
384
|
+
else if (operation.op === 'test') {
|
|
385
|
+
if (JSON.stringify(parent[index]) !== JSON.stringify(operation.value))
|
|
386
|
+
return undefined;
|
|
387
|
+
}
|
|
388
|
+
else
|
|
389
|
+
return undefined;
|
|
390
|
+
}
|
|
391
|
+
else if (isRecord(parent)) {
|
|
392
|
+
if (operation.op === 'add' || (operation.op === 'replace' && key in parent)) {
|
|
393
|
+
parent[key] = operation.value;
|
|
394
|
+
}
|
|
395
|
+
else if (operation.op === 'remove' && key in parent)
|
|
396
|
+
delete parent[key];
|
|
397
|
+
else if (operation.op === 'test') {
|
|
398
|
+
if (JSON.stringify(parent[key]) !== JSON.stringify(operation.value))
|
|
399
|
+
return undefined;
|
|
400
|
+
}
|
|
401
|
+
else
|
|
402
|
+
return undefined;
|
|
403
|
+
}
|
|
404
|
+
else
|
|
405
|
+
return undefined;
|
|
406
|
+
}
|
|
407
|
+
return doc;
|
|
408
|
+
}
|
|
409
|
+
//# sourceMappingURL=ag-ui-backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ag-ui-backend.js","sourceRoot":"","sources":["../../../../src/react/core/ag-ui-backend.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import type { ChatTransport, UIMessage, UIMessageChunk } from 'ai';
|
|
2
|
+
import type { AgentBackend } from './backend.js';
|
|
3
|
+
import type { AgentRunFailure } from './run-errors.js';
|
|
4
|
+
/** Identity surfaced by the backend's `meta` SSE frame / response headers. */
|
|
5
|
+
export interface AgentStreamMeta {
|
|
6
|
+
runId: string;
|
|
7
|
+
threadId: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* How the transport retries a stream that dropped mid-run. It reconnects only to a server that
|
|
11
|
+
* numbers its frames (SSE `id:`) — without a cursor a reconnect would replay the run into the
|
|
12
|
+
* message it is already writing.
|
|
13
|
+
*/
|
|
14
|
+
export interface ReconnectOptions {
|
|
15
|
+
/** Attempts before giving up with an error chunk. Default 6. */
|
|
16
|
+
maxAttempts?: number;
|
|
17
|
+
/** Delay before the first attempt, doubled each attempt. Default 500 ms. */
|
|
18
|
+
baseDelayMs?: number;
|
|
19
|
+
/** Cap on the delay between attempts. Default 8000 ms. */
|
|
20
|
+
maxDelayMs?: number;
|
|
21
|
+
}
|
|
22
|
+
/** Where a live stream stands. `reconnecting` → it dropped and the transport is retrying. */
|
|
23
|
+
export type StreamConnectionState = {
|
|
24
|
+
status: 'live';
|
|
25
|
+
} | {
|
|
26
|
+
status: 'reconnecting';
|
|
27
|
+
runId: string;
|
|
28
|
+
attempt: number;
|
|
29
|
+
after: number;
|
|
30
|
+
}
|
|
31
|
+
/** The run ended while the client was away (the resume answered 404): reload the thread. */
|
|
32
|
+
| {
|
|
33
|
+
status: 'gone';
|
|
34
|
+
runId: string;
|
|
35
|
+
}
|
|
36
|
+
/** Every attempt failed; the stream ended with an error chunk. */
|
|
37
|
+
| {
|
|
38
|
+
status: 'failed';
|
|
39
|
+
runId: string;
|
|
40
|
+
};
|
|
41
|
+
export interface AgentChatTransportOptions {
|
|
42
|
+
/**
|
|
43
|
+
* What the transport talks to. Default: an {@link AgentClient} built from `baseUrl`, `headers`,
|
|
44
|
+
* `getHeaders`, `credentials` and `fetch` below — which are ignored when a backend is given.
|
|
45
|
+
*/
|
|
46
|
+
backend?: AgentBackend;
|
|
47
|
+
/** Retry a dropped stream from its last frame. Default on; `false` turns it off. */
|
|
48
|
+
reconnect?: ReconnectOptions | false;
|
|
49
|
+
/** Fires as a stream drops, reconnects, or gives up. */
|
|
50
|
+
onConnectionChange?: (state: StreamConnectionState) => void;
|
|
51
|
+
/** The server's origin, e.g. `https://api.example.com`. Defaults to `''` (same origin). */
|
|
52
|
+
baseUrl?: string;
|
|
53
|
+
/** The agent's route prefix (`AgentModule`'s `path`, global prefix included). Default `'agent'`. */
|
|
54
|
+
path?: string;
|
|
55
|
+
/** Static headers merged into every request (e.g. a tenant ref). */
|
|
56
|
+
headers?: Record<string, string>;
|
|
57
|
+
/**
|
|
58
|
+
* Resolved at request time — use for short-lived bearer tokens that
|
|
59
|
+
* must not be captured once at construction. Merged over `headers`.
|
|
60
|
+
*/
|
|
61
|
+
getHeaders?: () => Record<string, string> | Promise<Record<string, string>>;
|
|
62
|
+
/** Forwarded to `fetch` so cookie-based auth/impersonation works. */
|
|
63
|
+
credentials?: RequestCredentials;
|
|
64
|
+
/** Named agent to run the turn (backend `agent` field). */
|
|
65
|
+
agent?: string;
|
|
66
|
+
/** One of the agent's personas to answer as (backend `persona` field). */
|
|
67
|
+
persona?: string;
|
|
68
|
+
/**
|
|
69
|
+
* Extra body fields evaluated per send — the hook injects `threadId`
|
|
70
|
+
* and `pageContext` through this. Returned object is spread into the
|
|
71
|
+
* request body after the SDK's own `body`.
|
|
72
|
+
*/
|
|
73
|
+
getBody?: () => Record<string, unknown>;
|
|
74
|
+
/**
|
|
75
|
+
* The run id to resume on mount, if any. Returning `undefined` makes
|
|
76
|
+
* `reconnectToStream` resolve to `null` WITHOUT hitting the network —
|
|
77
|
+
* this is the generalized fix for "useChat fires a doomed GET on mount
|
|
78
|
+
* and surfaces its 404". Wire this to the thread's `activeRunId`.
|
|
79
|
+
*/
|
|
80
|
+
getResumeRunId?: () => string | undefined;
|
|
81
|
+
/**
|
|
82
|
+
* Fires once `reconnectToStream` has attached to a run's stream, with that run's id. A resumed
|
|
83
|
+
* stream replays frames but opens with no `meta` frame, so this is the only place a caller learns
|
|
84
|
+
* which run it is now reading — what a Stop pressed after a reload has to cancel.
|
|
85
|
+
*/
|
|
86
|
+
onResumeAttached?: (runId: string) => void;
|
|
87
|
+
/** Fires whenever a stream emits its `meta` frame. */
|
|
88
|
+
onMeta?: (meta: AgentStreamMeta) => void;
|
|
89
|
+
/**
|
|
90
|
+
* Fires synchronously at the very start of `sendMessages`/`reconnectToStream`, before any network
|
|
91
|
+
* call — i.e. strictly before that attempt's own `onMeta` (if any) can fire. Lets a caller reset
|
|
92
|
+
* "which run is THIS attempt settling" state without racing React's render/effect timing: a
|
|
93
|
+
* consumer that also read `onMeta` to learn the current run id would otherwise risk misattributing
|
|
94
|
+
* an early failure (no meta ever arrives) to a PRIOR attempt's id.
|
|
95
|
+
*/
|
|
96
|
+
onAttemptStart?: () => void;
|
|
97
|
+
/**
|
|
98
|
+
* A resume found nothing streaming under the run id (the backend answered 404): the run already
|
|
99
|
+
* ended. The SDK is told there is nothing to resume, so the caller is the one that has to reload
|
|
100
|
+
* what the run wrote — `useAgentChat` re-reads the thread.
|
|
101
|
+
*/
|
|
102
|
+
onResumeGone?: (runId: string) => void;
|
|
103
|
+
/**
|
|
104
|
+
* The run's stream ended with the backend's `event: error` frame — called with its `code` and
|
|
105
|
+
* `message` right before the stream is closed with an error chunk. The chunk can only carry the
|
|
106
|
+
* text; this is where the `code` reaches a caller, so it can word the failure itself.
|
|
107
|
+
*/
|
|
108
|
+
onRunError?: (failure: AgentRunFailure) => void;
|
|
109
|
+
/** Injectable for tests / non-browser runtimes. Defaults to global fetch. */
|
|
110
|
+
fetch?: typeof fetch;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* AI SDK v7 `ChatTransport` for the Adonis agent backend. POSTs
|
|
114
|
+
* `/agent/chat`, parses the backend's `meta` + `{delta}` + `done` SSE
|
|
115
|
+
* frames, and re-emits them as the v7 UI-message chunk stream
|
|
116
|
+
* (`start` → `text-start` → `text-delta`* → `text-end` → `finish`).
|
|
117
|
+
*
|
|
118
|
+
* The backend hydrates prior history from its store, so only the latest
|
|
119
|
+
* user message text is sent each turn — keeping payloads tiny and
|
|
120
|
+
* preventing the client from corrupting replayed history.
|
|
121
|
+
*
|
|
122
|
+
* Attachments (image/PDF for a vision-capable model) ride the per-send body:
|
|
123
|
+
* `sendMessage({ text }, { body: { attachments: MessageAttachment[] } })`. They
|
|
124
|
+
* flow to the backend as the turn's `attachments`, get persisted on the user
|
|
125
|
+
* message, and are rendered as native model content parts. Optimistic display of
|
|
126
|
+
* the user's own attachment thumbnails is the consumer's concern (it stages the
|
|
127
|
+
* upload), the same way history rendering reads `StoredMessage.attachments`.
|
|
128
|
+
*
|
|
129
|
+
* Frames beyond text/reasoning/tools become AI SDK data parts (seen by `useChat`'s `onData`):
|
|
130
|
+
* - `ui` → `data-ui` part, `id` = the component id (a repeat id updates it in place)
|
|
131
|
+
* - `approval-requested` → `data-approval-requested` part keyed by the call id, plus the SDK's
|
|
132
|
+
* native `tool-approval-request` (the part moves to `approval-requested`)
|
|
133
|
+
* - `approval-settled` → `data-approval-settled` part keyed by the call id (who decided, through
|
|
134
|
+
* what, remembered or not); the outcome still rides the call's own output
|
|
135
|
+
* - `title`, `cancelled`, `queue` → transient `data-title` / `data-cancelled` / `data-queue` (never
|
|
136
|
+
* stored on the message). A send the server queued (`202`) is reported
|
|
137
|
+
* as a transient `data-queue` too, carrying `queuedSend`
|
|
138
|
+
* - any other kind → `data-<kind>` part carrying the frame minus `kind`, keyed by its `id`
|
|
139
|
+
* when it has one — forwarded, never dropped
|
|
140
|
+
* `parentId` on a tool frame rides the part's `toolMetadata` next to `toolKind`.
|
|
141
|
+
*/
|
|
142
|
+
export declare class AgentChatTransport implements ChatTransport<UIMessage> {
|
|
143
|
+
private readonly options;
|
|
144
|
+
private currentRunId;
|
|
145
|
+
private currentThreadId;
|
|
146
|
+
/**
|
|
147
|
+
* One attempt at a time. The AI SDK keeps a single in-flight response per chat and decides
|
|
148
|
+
* whether its streamed message REPLACES the list's last entry or is appended by comparing that
|
|
149
|
+
* response's message id against the last entry alone. Two attempts writing into one chat
|
|
150
|
+
* therefore append alternating copies of each other's message, and the list ends up holding
|
|
151
|
+
* several entries under each id — which React renders as duplicate keys.
|
|
152
|
+
*/
|
|
153
|
+
private attemptLive;
|
|
154
|
+
private readonly backend;
|
|
155
|
+
constructor(options?: AgentChatTransportOptions);
|
|
156
|
+
/** Run id of the most recent stream — HITL approve/reject target this. */
|
|
157
|
+
get runId(): string | undefined;
|
|
158
|
+
/** Thread id of the most recent stream. */
|
|
159
|
+
get threadId(): string | undefined;
|
|
160
|
+
/**
|
|
161
|
+
* True from the moment a send or resume attempt starts until its chunk stream terminates. A
|
|
162
|
+
* caller that can refuse a turn BEFORE the SDK commits to one — `useAgentChat` wrapping
|
|
163
|
+
* `sendMessage` — reads this; the transport itself can only refuse a resume, which is the one
|
|
164
|
+
* attempt the SDK lets a transport decline.
|
|
165
|
+
*/
|
|
166
|
+
get isAttemptLive(): boolean;
|
|
167
|
+
sendMessages(options: Parameters<ChatTransport<UIMessage>['sendMessages']>[0]): Promise<ReadableStream<UIMessageChunk>>;
|
|
168
|
+
reconnectToStream(options: Parameters<ChatTransport<UIMessage>['reconnectToStream']>[0]): Promise<ReadableStream<UIMessageChunk> | null>;
|
|
169
|
+
private captureHeaderMeta;
|
|
170
|
+
private reconnectPolicy;
|
|
171
|
+
private recordMeta;
|
|
172
|
+
/**
|
|
173
|
+
* Parse the backend's SSE byte stream and re-emit it as a valid v7 UI-message chunk stream.
|
|
174
|
+
* Recognized frames:
|
|
175
|
+
* - `event: meta` `data: {"runId","threadId"}` → records identity
|
|
176
|
+
* - `data: <AgentStreamEvent JSON>` → mapped to UI chunks (text / reasoning / tool /
|
|
177
|
+
* `data-*`; see {@link AgentChatTransport} docs)
|
|
178
|
+
* - `event: done` `data: {}` → terminates
|
|
179
|
+
* - `event: error` `data: {code,message}` → error chunk
|
|
180
|
+
*
|
|
181
|
+
* A run is ONE UI message with N steps. Each `step-start`/`step-finish` pair brackets a model
|
|
182
|
+
* call plus its tool execution; text and reasoning open lazily and close at the step boundary, so
|
|
183
|
+
* tool-call cards (input streaming → output) render live between the prose.
|
|
184
|
+
*/
|
|
185
|
+
private toChunkStream;
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=agent-chat-transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-chat-transport.d.ts","sourceRoot":"","sources":["../../../../src/react/core/agent-chat-transport.ts"],"names":[],"mappings":"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"}
|