@adonis-agora/agent 0.61.0 → 0.63.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 +91 -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 +81 -25
- 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 +7 -2
- package/dist/src/action-proposal-service.d.ts.map +1 -1
- package/dist/src/action-proposal-service.js +21 -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/actor-resolver.d.ts +12 -4
- package/dist/src/actor-resolver.d.ts.map +1 -1
- package/dist/src/actor-resolver.js +24 -7
- package/dist/src/actor-resolver.js.map +1 -1
- package/dist/src/ag-ui/adapter.d.ts.map +1 -1
- package/dist/src/ag-ui/adapter.js +115 -17
- package/dist/src/ag-ui/adapter.js.map +1 -1
- package/dist/src/ag-ui/core/encoder.d.ts +106 -0
- package/dist/src/ag-ui/core/encoder.d.ts.map +1 -0
- package/dist/src/ag-ui/core/encoder.js +534 -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 +92 -0
- package/dist/src/ag-ui/core/input.d.ts.map +1 -0
- package/dist/src/ag-ui/core/input.js +246 -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 +49 -0
- package/dist/src/ag-ui/core/stream.d.ts.map +1 -0
- package/dist/src/ag-ui/core/stream.js +90 -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 +8 -5
- package/dist/src/ag-ui/frames.d.ts.map +1 -1
- package/dist/src/ag-ui/frames.js +21 -7
- 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 +46 -4
- package/dist/src/agent-service.d.ts.map +1 -1
- package/dist/src/agent-service.js +87 -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/attachment-limits.d.ts +10 -0
- package/dist/src/attachment-limits.d.ts.map +1 -0
- package/dist/src/attachment-limits.js +13 -0
- package/dist/src/attachment-limits.js.map +1 -0
- package/dist/src/channels/adapters/evolution_api.d.ts +49 -0
- package/dist/src/channels/adapters/evolution_api.d.ts.map +1 -0
- package/dist/src/channels/adapters/evolution_api.js +241 -0
- package/dist/src/channels/adapters/evolution_api.js.map +1 -0
- package/dist/src/channels/adapters/telegram.d.ts +34 -0
- package/dist/src/channels/adapters/telegram.d.ts.map +1 -0
- package/dist/src/channels/adapters/telegram.js +196 -0
- package/dist/src/channels/adapters/telegram.js.map +1 -0
- package/dist/src/channels/adapters/whatsapp_cloud.d.ts +31 -0
- package/dist/src/channels/adapters/whatsapp_cloud.d.ts.map +1 -0
- package/dist/src/channels/adapters/whatsapp_cloud.js +177 -0
- package/dist/src/channels/adapters/whatsapp_cloud.js.map +1 -0
- package/dist/src/channels/handler.d.ts +167 -0
- package/dist/src/channels/handler.d.ts.map +1 -0
- package/dist/src/channels/handler.js +569 -0
- package/dist/src/channels/handler.js.map +1 -0
- package/dist/src/channels/http.d.ts +45 -0
- package/dist/src/channels/http.d.ts.map +1 -0
- package/dist/src/channels/http.js +147 -0
- package/dist/src/channels/http.js.map +1 -0
- package/dist/src/channels/index.d.ts +16 -0
- package/dist/src/channels/index.d.ts.map +1 -0
- package/dist/src/channels/index.js +15 -0
- package/dist/src/channels/index.js.map +1 -0
- package/dist/src/channels/markdown.d.ts +12 -0
- package/dist/src/channels/markdown.d.ts.map +1 -0
- package/dist/src/channels/markdown.js +120 -0
- package/dist/src/channels/markdown.js.map +1 -0
- package/dist/src/channels/questions.d.ts +43 -0
- package/dist/src/channels/questions.d.ts.map +1 -0
- package/dist/src/channels/questions.js +90 -0
- package/dist/src/channels/questions.js.map +1 -0
- package/dist/src/channels/split.d.ts +8 -0
- package/dist/src/channels/split.d.ts.map +1 -0
- package/dist/src/channels/split.js +45 -0
- package/dist/src/channels/split.js.map +1 -0
- package/dist/src/channels/store.d.ts +78 -0
- package/dist/src/channels/store.d.ts.map +1 -0
- package/dist/src/channels/store.js +151 -0
- package/dist/src/channels/store.js.map +1 -0
- package/dist/src/channels/types.d.ts +138 -0
- package/dist/src/channels/types.d.ts.map +1 -0
- package/dist/src/channels/types.js +7 -0
- package/dist/src/channels/types.js.map +1 -0
- 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 +357 -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 +86 -0
- package/dist/src/genui/catalog.d.ts.map +1 -0
- package/dist/src/genui/catalog.js +96 -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 +36 -0
- package/dist/src/genui/text.d.ts.map +1 -0
- package/dist/src/genui/text.js +157 -0
- package/dist/src/genui/text.js.map +1 -0
- package/dist/src/genui/tools.d.ts +92 -0
- package/dist/src/genui/tools.d.ts.map +1 -0
- package/dist/src/genui/tools.js +291 -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 +6 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -2
- 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 +247 -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 +109 -0
- package/dist/src/react/core/ag-ui-backend.d.ts.map +1 -0
- package/dist/src/react/core/ag-ui-backend.js +574 -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 +817 -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 +245 -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 +24 -6
- package/dist/src/stores/lucid-schema.d.ts.map +1 -1
- package/dist/src/stores/lucid-schema.js +49 -6
- package/dist/src/stores/lucid-schema.js.map +1 -1
- package/dist/src/stores/lucid.d.ts +2 -0
- package/dist/src/stores/lucid.d.ts.map +1 -1
- package/dist/src/stores/lucid.js +7 -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 +128 -22
- package/skills/agent-governance/SKILL.md +12 -4
- package/skills/agent-personas-agents/SKILL.md +2 -1
- package/skills/agent-setup/SKILL.md +73 -14
- package/skills/agent-testing/SKILL.md +22 -0
- package/skills/agent-tools/SKILL.md +57 -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,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a reasoning part carries how long the model thought, in ms. Both producers write it here —
|
|
3
|
+
* the transport on the live `reasoning-end` chunk, `storedMessageToUiMessage` on a replayed part —
|
|
4
|
+
* so a reader has one place to look whichever way the message arrived.
|
|
5
|
+
*/
|
|
6
|
+
export declare const REASONING_METADATA_KEY = "agent";
|
|
7
|
+
/** The `providerMetadata` a reasoning part is stamped with. */
|
|
8
|
+
export declare function reasoningDurationMetadata(reasoningMs: number): {
|
|
9
|
+
[REASONING_METADATA_KEY]: {
|
|
10
|
+
reasoningMs: number;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
/** The thinking time stamped on a reasoning part, or `null` when it carries none. */
|
|
14
|
+
export declare function readReasoningMs(part: {
|
|
15
|
+
providerMetadata?: unknown;
|
|
16
|
+
}): number | null;
|
|
17
|
+
export interface UseElapsedOptions {
|
|
18
|
+
/** How often the value re-renders while running. Default 1000 — a seconds label needs no more. */
|
|
19
|
+
intervalMs?: number;
|
|
20
|
+
/** Injectable clock for tests. */
|
|
21
|
+
now?: () => number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Milliseconds since `running` last turned true — ticking while it stays true, frozen at the final
|
|
25
|
+
* value once it turns false, `0` before it has ever run. Headless: pair it with
|
|
26
|
+
* {@link formatElapsed} or any label of your own.
|
|
27
|
+
*
|
|
28
|
+
* For a reasoning block, prefer the duration the block already carries (`block.durationMs`, the
|
|
29
|
+
* server's own measurement) and fall back to this only while the block streams:
|
|
30
|
+
* `block.durationMs ?? elapsed`.
|
|
31
|
+
*/
|
|
32
|
+
export declare function useElapsed(running: boolean, options?: UseElapsedOptions): number;
|
|
33
|
+
/**
|
|
34
|
+
* `"<1s"`, `"4s"`, `"1m 5s"`, `"1h 2m"` — whole units, the shape a "Thought for …" label wants.
|
|
35
|
+
* Negative or non-finite input reads as `"<1s"` rather than a nonsense figure.
|
|
36
|
+
*/
|
|
37
|
+
export declare function formatElapsed(ms: number): string;
|
|
38
|
+
//# sourceMappingURL=timing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timing.d.ts","sourceRoot":"","sources":["../../../../../src/react/core/reasoning/timing.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,UAAU,CAAC;AAE9C,+DAA+D;AAC/D,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG;IAC9D,CAAC,sBAAsB,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CACnD,CAEA;AAED,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,IAAI,EAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,GAAG,IAAI,CAOnF;AAED,MAAM,WAAW,iBAAiB;IAChC,kGAAkG;IAClG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,iBAAsB,GAAG,MAAM,CAwBpF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAShD"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { useEffect, useRef, useState } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Where a reasoning part carries how long the model thought, in ms. Both producers write it here —
|
|
4
|
+
* the transport on the live `reasoning-end` chunk, `storedMessageToUiMessage` on a replayed part —
|
|
5
|
+
* so a reader has one place to look whichever way the message arrived.
|
|
6
|
+
*/
|
|
7
|
+
export const REASONING_METADATA_KEY = 'agent';
|
|
8
|
+
/** The `providerMetadata` a reasoning part is stamped with. */
|
|
9
|
+
export function reasoningDurationMetadata(reasoningMs) {
|
|
10
|
+
return { [REASONING_METADATA_KEY]: { reasoningMs } };
|
|
11
|
+
}
|
|
12
|
+
/** The thinking time stamped on a reasoning part, or `null` when it carries none. */
|
|
13
|
+
export function readReasoningMs(part) {
|
|
14
|
+
const metadata = part.providerMetadata;
|
|
15
|
+
if (typeof metadata !== 'object' || metadata === null)
|
|
16
|
+
return null;
|
|
17
|
+
const scoped = metadata[REASONING_METADATA_KEY];
|
|
18
|
+
if (typeof scoped !== 'object' || scoped === null)
|
|
19
|
+
return null;
|
|
20
|
+
const value = scoped.reasoningMs;
|
|
21
|
+
return typeof value === 'number' && Number.isFinite(value) && value >= 0 ? value : null;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Milliseconds since `running` last turned true — ticking while it stays true, frozen at the final
|
|
25
|
+
* value once it turns false, `0` before it has ever run. Headless: pair it with
|
|
26
|
+
* {@link formatElapsed} or any label of your own.
|
|
27
|
+
*
|
|
28
|
+
* For a reasoning block, prefer the duration the block already carries (`block.durationMs`, the
|
|
29
|
+
* server's own measurement) and fall back to this only while the block streams:
|
|
30
|
+
* `block.durationMs ?? elapsed`.
|
|
31
|
+
*/
|
|
32
|
+
export function useElapsed(running, options = {}) {
|
|
33
|
+
const { intervalMs = 1000 } = options;
|
|
34
|
+
const nowRef = useRef(options.now ?? Date.now);
|
|
35
|
+
nowRef.current = options.now ?? Date.now;
|
|
36
|
+
const startedAt = useRef(null);
|
|
37
|
+
const [elapsed, setElapsed] = useState(0);
|
|
38
|
+
useEffect(() => {
|
|
39
|
+
if (!running) {
|
|
40
|
+
if (startedAt.current !== null) {
|
|
41
|
+
setElapsed(nowRef.current() - startedAt.current);
|
|
42
|
+
startedAt.current = null;
|
|
43
|
+
}
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
startedAt.current = nowRef.current();
|
|
47
|
+
setElapsed(0);
|
|
48
|
+
const timer = setInterval(() => {
|
|
49
|
+
if (startedAt.current !== null)
|
|
50
|
+
setElapsed(nowRef.current() - startedAt.current);
|
|
51
|
+
}, intervalMs);
|
|
52
|
+
return () => clearInterval(timer);
|
|
53
|
+
}, [running, intervalMs]);
|
|
54
|
+
return elapsed;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* `"<1s"`, `"4s"`, `"1m 5s"`, `"1h 2m"` — whole units, the shape a "Thought for …" label wants.
|
|
58
|
+
* Negative or non-finite input reads as `"<1s"` rather than a nonsense figure.
|
|
59
|
+
*/
|
|
60
|
+
export function formatElapsed(ms) {
|
|
61
|
+
if (!Number.isFinite(ms) || ms < 1000)
|
|
62
|
+
return '<1s';
|
|
63
|
+
const totalSeconds = Math.floor(ms / 1000);
|
|
64
|
+
const hours = Math.floor(totalSeconds / 3600);
|
|
65
|
+
const minutes = Math.floor((totalSeconds % 3600) / 60);
|
|
66
|
+
const seconds = totalSeconds % 60;
|
|
67
|
+
if (hours > 0)
|
|
68
|
+
return minutes > 0 ? `${hours}h ${minutes}m` : `${hours}h`;
|
|
69
|
+
if (minutes > 0)
|
|
70
|
+
return seconds > 0 ? `${minutes}m ${seconds}s` : `${minutes}m`;
|
|
71
|
+
return `${seconds}s`;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=timing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timing.js","sourceRoot":"","sources":["../../../../../src/react/core/reasoning/timing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { AgentRequestError } from './http-error.js';
|
|
2
|
+
/**
|
|
3
|
+
* The `code`s this library's own loop closes a failed run's stream with (`event: error`). A client
|
|
4
|
+
* branches on the code and words the failure itself — the frame's `message` is a sentence in
|
|
5
|
+
* English, and for a crash deliberately a generic one.
|
|
6
|
+
*
|
|
7
|
+
* - `quota_exceeded` — the actor's budget is spent; `message` says which.
|
|
8
|
+
* - `output_rejected` — an output processor refused the answer.
|
|
9
|
+
* - `structured_output_invalid` — the answer never satisfied the agent's output schema.
|
|
10
|
+
* - `replay_diverged` — the durable runtime refused to resume the run (its journal and the
|
|
11
|
+
* deployed code disagree). The turn is over; sending again starts a new one.
|
|
12
|
+
* - `model_no_output` — a model call ended without producing anything.
|
|
13
|
+
* - `run_failed` — anything else.
|
|
14
|
+
*
|
|
15
|
+
* A host's own runner may send codes of its own, which is why {@link AgentRunFailure.code} is a
|
|
16
|
+
* plain string.
|
|
17
|
+
*/
|
|
18
|
+
export declare const AGENT_RUN_ERROR_CODES: readonly ['quota_exceeded', 'output_rejected', 'structured_output_invalid', 'replay_diverged', 'model_no_output', 'run_failed'];
|
|
19
|
+
export type AgentRunErrorCode = (typeof AGENT_RUN_ERROR_CODES)[number];
|
|
20
|
+
/** How a run's stream said it failed: the `event: error` frame, read. */
|
|
21
|
+
export interface AgentRunFailure {
|
|
22
|
+
/** The frame's machine-readable `code`; `undefined` when the server sent none. */
|
|
23
|
+
code: AgentRunErrorCode | (string & {}) | undefined;
|
|
24
|
+
/** The frame's `message` — the server's words, safe to show but not translated. */
|
|
25
|
+
message: string;
|
|
26
|
+
/** The run that failed, when the stream had named it. */
|
|
27
|
+
runId?: string;
|
|
28
|
+
}
|
|
29
|
+
/** The `code` a decision is refused with when the run it was for has ended (`409`). */
|
|
30
|
+
export declare const RUN_NOT_ACTIVE_CODE = "run_not_active";
|
|
31
|
+
/**
|
|
32
|
+
* Whether `error` is the server refusing an approve / reject / answer / skip because the turn that
|
|
33
|
+
* asked is over (`409 { code: 'run_not_active' }`): nothing is waiting for the decision, and nothing
|
|
34
|
+
* will run. The card it was made on is stale — say so, and let the person send the message again.
|
|
35
|
+
*/
|
|
36
|
+
export declare function isRunNotActiveError(error: unknown): error is AgentRequestError;
|
|
37
|
+
//# sourceMappingURL=run-errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-errors.d.ts","sourceRoot":"","sources":["../../../../src/react/core/run-errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,qBAAqB,YAChC,gBAAgB,EAChB,iBAAiB,EACjB,2BAA2B,EAC3B,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,CACJ,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvE,yEAAyE;AACzE,MAAM,WAAW,eAAe;IAC9B,kFAAkF;IAClF,IAAI,EAAE,iBAAiB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,SAAS,CAAC;IACpD,mFAAmF;IACnF,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,uFAAuF;AACvF,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AAEpD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAM9E"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `code`s this library's own loop closes a failed run's stream with (`event: error`). A client
|
|
3
|
+
* branches on the code and words the failure itself — the frame's `message` is a sentence in
|
|
4
|
+
* English, and for a crash deliberately a generic one.
|
|
5
|
+
*
|
|
6
|
+
* - `quota_exceeded` — the actor's budget is spent; `message` says which.
|
|
7
|
+
* - `output_rejected` — an output processor refused the answer.
|
|
8
|
+
* - `structured_output_invalid` — the answer never satisfied the agent's output schema.
|
|
9
|
+
* - `replay_diverged` — the durable runtime refused to resume the run (its journal and the
|
|
10
|
+
* deployed code disagree). The turn is over; sending again starts a new one.
|
|
11
|
+
* - `model_no_output` — a model call ended without producing anything.
|
|
12
|
+
* - `run_failed` — anything else.
|
|
13
|
+
*
|
|
14
|
+
* A host's own runner may send codes of its own, which is why {@link AgentRunFailure.code} is a
|
|
15
|
+
* plain string.
|
|
16
|
+
*/
|
|
17
|
+
export const AGENT_RUN_ERROR_CODES = [
|
|
18
|
+
'quota_exceeded',
|
|
19
|
+
'output_rejected',
|
|
20
|
+
'structured_output_invalid',
|
|
21
|
+
'replay_diverged',
|
|
22
|
+
'model_no_output',
|
|
23
|
+
'run_failed',
|
|
24
|
+
];
|
|
25
|
+
/** The `code` a decision is refused with when the run it was for has ended (`409`). */
|
|
26
|
+
export const RUN_NOT_ACTIVE_CODE = 'run_not_active';
|
|
27
|
+
/**
|
|
28
|
+
* Whether `error` is the server refusing an approve / reject / answer / skip because the turn that
|
|
29
|
+
* asked is over (`409 { code: 'run_not_active' }`): nothing is waiting for the decision, and nothing
|
|
30
|
+
* will run. The card it was made on is stale — say so, and let the person send the message again.
|
|
31
|
+
*/
|
|
32
|
+
export function isRunNotActiveError(error) {
|
|
33
|
+
return (error instanceof Error &&
|
|
34
|
+
error.status === 409 &&
|
|
35
|
+
error.code === RUN_NOT_ACTIVE_CODE);
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=run-errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-errors.js","sourceRoot":"","sources":["../../../../src/react/core/run-errors.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,gBAAgB;IAChB,iBAAiB;IACjB,2BAA2B;IAC3B,iBAAiB;IACjB,iBAAiB;IACjB,YAAY;CACJ,CAAC;AAcX,uFAAuF;AACvF,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;AAEpD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,OAAO,CACL,KAAK,YAAY,KAAK;QACrB,KAAoC,CAAC,MAAM,KAAK,GAAG;QACnD,KAAoC,CAAC,IAAI,KAAK,mBAAmB,CACnE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stored-message-to-ui-message.d.ts","sourceRoot":"","sources":["../../../../src/react/core/stored-message-to-ui-message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAGpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AA+DtD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,CAmK1E"}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import { DEFAULT_REFUSAL_REASON } from '../../refusal.js';
|
|
2
|
+
import { reasoningDurationMetadata } from './reasoning/timing.js';
|
|
3
|
+
/**
|
|
4
|
+
* Convert a persisted `StoredMessage` (the agent-lib's on-disk shape) into an AI SDK v7
|
|
5
|
+
* `UIMessage` so a loaded thread can seed `useChat`'s `initialMessages` / `messages`.
|
|
6
|
+
*
|
|
7
|
+
* The lib stores a message as flat `content` text plus `toolCalls`/`toolResults` arrays; the SDK
|
|
8
|
+
* renders from `parts`. This maps, in this order:
|
|
9
|
+
* - `reasoning` → a `reasoning` part (state `done`) BEFORE the text, as it streamed; its
|
|
10
|
+
* `reasoningMs` rides `providerMetadata.agent.reasoningMs`, where the
|
|
11
|
+
* live transport stamps it too.
|
|
12
|
+
* - `content` → a single `text` part (skipped when empty).
|
|
13
|
+
* - each `attachment` → a `file` part (image/PDF) so the user bubble re-renders its
|
|
14
|
+
* thumbnails on a reloaded thread.
|
|
15
|
+
* - each `ui` component → a `data-ui` part keyed by the component id — the same part a live
|
|
16
|
+
* `ui` stream frame becomes.
|
|
17
|
+
* - each `approval` → a `data-approval-requested` part keyed by the call id (who decides,
|
|
18
|
+
* until when) and, once decided, a `data-approval-settled` one — the
|
|
19
|
+
* same parts the live `approval-requested`/`approval-settled` frames
|
|
20
|
+
* become, so the transcript folds both into `call.approval` either way.
|
|
21
|
+
* - each `toolCall` → a `tool-<name>` part, pairing its `toolResult` (matched by id):
|
|
22
|
+
* - a result found → `output-available` state, carrying `output`; `output-denied` when a
|
|
23
|
+
* person declined it; `output-error` (carrying `errorText`) when it
|
|
24
|
+
* failed — the states the live stream leaves the part in.
|
|
25
|
+
* - no result found → `input-available` state (the call never finished, e.g. the run was
|
|
26
|
+
* interrupted) — `output` is omitted, never a fabricated value.
|
|
27
|
+
* When the store reports the tool's kind (`'read' | 'action'`), it rides along as
|
|
28
|
+
* `toolMetadata.toolKind` so a UI can render an approval affordance for `action` tools
|
|
29
|
+
* without hardcoding tool-name sets, matching how live-streamed tool parts carry it.
|
|
30
|
+
*
|
|
31
|
+
* Live streaming still arrives as fully-typed SDK tool parts (see `AgentChatTransport`); this
|
|
32
|
+
* converter only feeds replayed history, so the tool cards render the same either way.
|
|
33
|
+
*/
|
|
34
|
+
/**
|
|
35
|
+
* Did a person decline this call? `denied` is what the loop sets today. The `output.rejected` shape
|
|
36
|
+
* is how a refusal was recorded before that flag existed, and threads holding those are still read
|
|
37
|
+
* back — so both count, and a thread from either era reloads as the same part.
|
|
38
|
+
*/
|
|
39
|
+
function isRefusal(result) {
|
|
40
|
+
if (result.denied === true) {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
const { output } = result;
|
|
44
|
+
return (output !== null &&
|
|
45
|
+
typeof output === 'object' &&
|
|
46
|
+
'rejected' in output &&
|
|
47
|
+
output.rejected === true);
|
|
48
|
+
}
|
|
49
|
+
/** The reason given when declining, when one was given. */
|
|
50
|
+
function refusalReason(result) {
|
|
51
|
+
const { output } = result;
|
|
52
|
+
if (output !== null && typeof output === 'object' && 'reason' in output) {
|
|
53
|
+
const reason = output.reason;
|
|
54
|
+
return typeof reason === 'string' && reason !== DEFAULT_REFUSAL_REASON ? reason : undefined;
|
|
55
|
+
}
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
export function storedMessageToUiMessage(message) {
|
|
59
|
+
const parts = [];
|
|
60
|
+
if (message.reasoning) {
|
|
61
|
+
parts.push({
|
|
62
|
+
type: 'reasoning',
|
|
63
|
+
text: message.reasoning,
|
|
64
|
+
state: 'done',
|
|
65
|
+
...(message.reasoningMs !== undefined
|
|
66
|
+
? { providerMetadata: reasoningDurationMetadata(message.reasoningMs) }
|
|
67
|
+
: {}),
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
if (message.content) {
|
|
71
|
+
parts.push({ type: 'text', text: message.content });
|
|
72
|
+
}
|
|
73
|
+
for (const attachment of message.attachments ?? []) {
|
|
74
|
+
parts.push({
|
|
75
|
+
type: 'file',
|
|
76
|
+
mediaType: attachment.contentType,
|
|
77
|
+
filename: attachment.name,
|
|
78
|
+
url: attachment.url,
|
|
79
|
+
// The stored id rides along, so a replayed file can be referenced again (`messageFiles`).
|
|
80
|
+
providerMetadata: { agent: { mediaId: attachment.mediaId } },
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
// A component a tool pushed (`toolCallId`) goes right after that call's tool part, where the live
|
|
84
|
+
// stream put it; the rest keep their place ahead of the calls.
|
|
85
|
+
const toolCallIds = new Set((message.toolCalls ?? []).map((call) => call.id));
|
|
86
|
+
const pushedByCall = new Map();
|
|
87
|
+
for (const component of message.ui ?? []) {
|
|
88
|
+
const part = {
|
|
89
|
+
type: 'data-ui',
|
|
90
|
+
id: component.id,
|
|
91
|
+
data: {
|
|
92
|
+
id: component.id,
|
|
93
|
+
component: component.component,
|
|
94
|
+
props: component.props,
|
|
95
|
+
...(component.componentVersions !== undefined
|
|
96
|
+
? { componentVersions: component.componentVersions }
|
|
97
|
+
: {}),
|
|
98
|
+
...(component.fallbackText !== undefined ? { fallbackText: component.fallbackText } : {}),
|
|
99
|
+
...(component.version !== undefined ? { version: component.version } : {}),
|
|
100
|
+
...(component.toolCallId !== undefined ? { toolCallId: component.toolCallId } : {}),
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
if (component.toolCallId !== undefined && toolCallIds.has(component.toolCallId)) {
|
|
104
|
+
const list = pushedByCall.get(component.toolCallId) ?? [];
|
|
105
|
+
list.push(part);
|
|
106
|
+
pushedByCall.set(component.toolCallId, list);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
parts.push(part);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
for (const approval of message.approvals ?? []) {
|
|
113
|
+
parts.push({
|
|
114
|
+
type: 'data-approval-requested',
|
|
115
|
+
id: approval.toolCallId,
|
|
116
|
+
data: {
|
|
117
|
+
id: approval.toolCallId,
|
|
118
|
+
approver: approval.approver,
|
|
119
|
+
...(approval.target !== undefined
|
|
120
|
+
? { target: approval.target }
|
|
121
|
+
: approval.proposalId !== undefined
|
|
122
|
+
? { target: { kind: 'proposal', proposalId: approval.proposalId } }
|
|
123
|
+
: {}),
|
|
124
|
+
...(approval.confirmation !== undefined ? { confirmation: approval.confirmation } : {}),
|
|
125
|
+
...(approval.expiresAt !== undefined ? { expiresAt: approval.expiresAt } : {}),
|
|
126
|
+
},
|
|
127
|
+
});
|
|
128
|
+
if (approval.status !== 'pending') {
|
|
129
|
+
parts.push({
|
|
130
|
+
type: 'data-approval-settled',
|
|
131
|
+
id: approval.toolCallId,
|
|
132
|
+
data: {
|
|
133
|
+
id: approval.toolCallId,
|
|
134
|
+
status: approval.status,
|
|
135
|
+
...(approval.decidedBy !== undefined ? { decidedBy: approval.decidedBy } : {}),
|
|
136
|
+
...(approval.decidedVia !== undefined ? { decidedVia: approval.decidedVia } : {}),
|
|
137
|
+
...(approval.remember === true ? { remember: true } : {}),
|
|
138
|
+
...(approval.reason !== undefined ? { reason: approval.reason } : {}),
|
|
139
|
+
},
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
for (const call of message.toolCalls ?? []) {
|
|
144
|
+
const result = message.toolResults?.find((candidate) => candidate.id === call.id);
|
|
145
|
+
// `call.kind` — the store's `'read' | 'action'` classification, once it lands there
|
|
146
|
+
// (parallel to `RecordToolCallInput.toolType` and the stream's `toolKind`).
|
|
147
|
+
const toolKind = call.kind;
|
|
148
|
+
// `parentId` nests a replayed call under its parent, as the live frames did.
|
|
149
|
+
const toolMetadata = {
|
|
150
|
+
...(toolKind !== undefined ? { toolKind } : {}),
|
|
151
|
+
...(call.parentId !== undefined ? { parentId: call.parentId } : {}),
|
|
152
|
+
};
|
|
153
|
+
parts.push({
|
|
154
|
+
type: `tool-${call.name}`,
|
|
155
|
+
toolCallId: call.id,
|
|
156
|
+
...(Object.keys(toolMetadata).length > 0 ? { toolMetadata } : {}),
|
|
157
|
+
...(result !== undefined
|
|
158
|
+
? isRefusal(result)
|
|
159
|
+
? {
|
|
160
|
+
// A declined action is NOT an available output. Reloading a thread used to bring one
|
|
161
|
+
// back as `output-available` carrying `{ rejected: true }`, which a card reads as a
|
|
162
|
+
// result — so the action a person refused was drawn, after a refresh, as one that
|
|
163
|
+
// had been carried out.
|
|
164
|
+
state: 'output-denied',
|
|
165
|
+
input: call.input,
|
|
166
|
+
approval: {
|
|
167
|
+
id: call.id,
|
|
168
|
+
approved: false,
|
|
169
|
+
...(refusalReason(result) !== undefined
|
|
170
|
+
? { reason: refusalReason(result) }
|
|
171
|
+
: {}),
|
|
172
|
+
},
|
|
173
|
+
}
|
|
174
|
+
: typeof result.error === 'string' && result.error !== ''
|
|
175
|
+
? {
|
|
176
|
+
// A call that FAILED — the tool threw, its input was refused, or its turn died
|
|
177
|
+
// before it was settled — is not an available output either. The live stream says
|
|
178
|
+
// so with `tool-output-error`; a reloaded thread has to say the same, or the card of
|
|
179
|
+
// an action that never ran comes back reading as one that completed.
|
|
180
|
+
state: 'output-error',
|
|
181
|
+
input: call.input,
|
|
182
|
+
errorText: result.error,
|
|
183
|
+
}
|
|
184
|
+
: { state: 'output-available', input: call.input, output: result.output }
|
|
185
|
+
: { state: 'input-available', input: call.input }),
|
|
186
|
+
});
|
|
187
|
+
parts.push(...(pushedByCall.get(call.id) ?? []));
|
|
188
|
+
}
|
|
189
|
+
const metadata = {
|
|
190
|
+
// The host's own facts first: the library's keys win on a clash.
|
|
191
|
+
...message.metadata,
|
|
192
|
+
...(message.actionProposalOutcome === undefined
|
|
193
|
+
? {}
|
|
194
|
+
: { actionProposalOutcomeId: message.actionProposalOutcome.id }),
|
|
195
|
+
...(message.feedback !== undefined ? { feedback: message.feedback } : {}),
|
|
196
|
+
...(message.createdAt ? { createdAt: message.createdAt } : {}),
|
|
197
|
+
...(message.agentName !== undefined ? { agentName: message.agentName } : {}),
|
|
198
|
+
...(message.persona !== undefined ? { persona: message.persona } : {}),
|
|
199
|
+
...(message.usage !== undefined
|
|
200
|
+
? {
|
|
201
|
+
usage: {
|
|
202
|
+
inputTokens: message.usage.inputTokens,
|
|
203
|
+
outputTokens: message.usage.outputTokens,
|
|
204
|
+
costUsd: message.usage.costUsd ?? null,
|
|
205
|
+
},
|
|
206
|
+
}
|
|
207
|
+
: {}),
|
|
208
|
+
};
|
|
209
|
+
return {
|
|
210
|
+
id: message.id,
|
|
211
|
+
role: message.role,
|
|
212
|
+
parts,
|
|
213
|
+
...(Object.keys(metadata).length > 0 ? { metadata } : {}),
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=stored-message-to-ui-message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stored-message-to-ui-message.js","sourceRoot":"","sources":["../../../../src/react/core/stored-message-to-ui-message.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { UIMessage } from 'ai';
|
|
2
|
+
import type { MessageFeedback } from '../../index.js';
|
|
3
|
+
import type { StoredMessage } from './client-wire.js';
|
|
4
|
+
/**
|
|
5
|
+
* Summed usage/cost across the stored-message rows merged into one turn (see
|
|
6
|
+
* {@link storedThreadToUiMessages}). Mirrors `MessageUsage`, but `costUsd` is always present
|
|
7
|
+
* (never omitted) since it's a computed aggregate, not a single provider report.
|
|
8
|
+
*/
|
|
9
|
+
export interface AggregatedTurnUsage {
|
|
10
|
+
inputTokens: number;
|
|
11
|
+
outputTokens: number;
|
|
12
|
+
/**
|
|
13
|
+
* `null` only when EVERY merged row reports a null/absent cost (no pricing store bound, or an
|
|
14
|
+
* unpriced model) — same "unknown, not a real $0" distinction `MessageUsage.costUsd` makes for a
|
|
15
|
+
* single row. A null cost on SOME rows (mixed with priced ones) contributes `0` to the sum
|
|
16
|
+
* instead of poisoning the whole turn's total to `null` — the tokens are still real and summed
|
|
17
|
+
* either way, so only the cost figure would be understated, never wrong in a "$0 turn" sense.
|
|
18
|
+
*/
|
|
19
|
+
costUsd: number | null;
|
|
20
|
+
}
|
|
21
|
+
/** Metadata the grouped `UIMessage` carries on `.metadata.usage` — see {@link AggregatedTurnUsage}. */
|
|
22
|
+
export interface StoredTurnMetadata {
|
|
23
|
+
usage: AggregatedTurnUsage;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Everything a message's `metadata` may carry from this library: `usage` on a merged replayed turn,
|
|
27
|
+
* `feedback` on a replayed message that was rated (a merged turn is rated through its last row,
|
|
28
|
+
* whose id it carries), `runId` on a live-streamed one, `costUsd` from the stream's step ends.
|
|
29
|
+
*/
|
|
30
|
+
export interface AgentMessageMetadata extends Partial<StoredTurnMetadata> {
|
|
31
|
+
feedback?: MessageFeedback;
|
|
32
|
+
runId?: string;
|
|
33
|
+
costUsd?: number | null;
|
|
34
|
+
/** ISO timestamp: the stored row's `createdAt` (a merged turn: its first row's), or when a live turn started streaming. */
|
|
35
|
+
createdAt?: string;
|
|
36
|
+
/** The agent that wrote a replayed message, when the row names one (`StoredMessage.agentName`). */
|
|
37
|
+
agentName?: string;
|
|
38
|
+
/** The persona the turn that wrote a replayed message ran under (`StoredMessage.persona`). */
|
|
39
|
+
persona?: string;
|
|
40
|
+
/** Host-defined keys: `StoredMessage.metadata` and the stream's `message-metadata` frames. */
|
|
41
|
+
[key: string]: unknown;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Convert a thread's full `StoredMessage[]` history into `UIMessage[]`, merging consecutive
|
|
45
|
+
* assistant rows (no user message between them) into ONE `UIMessage` per turn.
|
|
46
|
+
*
|
|
47
|
+
* Why: the agent loop persists one row per model iteration (see `agent-loop.ts`'s per-step
|
|
48
|
+
* `persist:assistant:${i}`) — a turn with tool calls appends "I'll check that..." + tool calls,
|
|
49
|
+
* then a separate final-answer row. `storedMessageToUiMessage` maps 1:1, so a reloaded thread
|
|
50
|
+
* renders 2-3 assistant bubbles (each with its own cost/tokens footer) for what the LIVE stream
|
|
51
|
+
* renders as one continuous response (one `UIMessage`, stepped internally — see
|
|
52
|
+
* `AgentChatTransport.toChunkStream`'s `start-step`/`finish-step` bracketing). This closes that gap
|
|
53
|
+
* for replayed history.
|
|
54
|
+
*
|
|
55
|
+
* Merge shape: each row is mapped via `storedMessageToUiMessage` (unchanged — same text-then-tool
|
|
56
|
+
* part ordering per row) and the parts are concatenated in row order, so the grouped message's parts
|
|
57
|
+
* read as `[row1 text?, row1 tools?, row2 text?, row2 tools?, ...]` — exactly the sequence the live
|
|
58
|
+
* transport streams for the same turn. The group's `id` is the LAST row's id (the final-answer row —
|
|
59
|
+
* it's the one carrying `followUps`, and what a host keys turn-level actions like "fork" or
|
|
60
|
+
* "regenerate" on). Non-assistant rows (user/system) pass through `storedMessageToUiMessage`
|
|
61
|
+
* unchanged, one row → one message, same as today.
|
|
62
|
+
*
|
|
63
|
+
* A lone assistant row between two user rows (the common case: no tool calls, or already a single
|
|
64
|
+
* iteration) has nothing to merge with, so it comes back byte-for-byte identical to calling
|
|
65
|
+
* `storedMessageToUiMessage` directly — no `metadata` is added for that case either, preserving
|
|
66
|
+
* exact backward compatibility for hosts that read stored usage some other way.
|
|
67
|
+
*
|
|
68
|
+
* Only an ACTUAL merge (2+ rows) attaches `metadata.usage` — the {@link AggregatedTurnUsage} summed
|
|
69
|
+
* across the merged rows' `usage` (rows without a `usage` at all, e.g. an older/test fixture, are
|
|
70
|
+
* skipped rather than treated as zero-and-priced).
|
|
71
|
+
*
|
|
72
|
+
* Deliberately NOT reproduced: the live transport's `{type: 'step-start'}` UI parts (one per model
|
|
73
|
+
* call, emitted by the AI SDK for every `start-step` chunk — see `repro-real-frames.spec.ts` for a
|
|
74
|
+
* captured wire dump). Those are structural brackets `MessageItem`'s `renderBlocks` never renders
|
|
75
|
+
* (it draws only text, reasoning, files and tool blocks), and `storedMessageToUiMessage` has never
|
|
76
|
+
* emitted them for a single row either — inventing them here would make a merged turn diverge from
|
|
77
|
+
* a same-shaped unmerged one instead of converging on it. "Indistinguishable from the live stream"
|
|
78
|
+
* is scoped to what actually renders: the text/tool-call content in step order, not the step
|
|
79
|
+
* brackets around it.
|
|
80
|
+
*/
|
|
81
|
+
export declare function storedThreadToUiMessages(messages: StoredMessage[]): UIMessage[];
|
|
82
|
+
//# sourceMappingURL=stored-thread-to-ui-messages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stored-thread-to-ui-messages.d.ts","sourceRoot":"","sources":["../../../../src/react/core/stored-thread-to-ui-messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGtD;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,uGAAuG;AACvG,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,mBAAmB,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAqB,SAAQ,OAAO,CAAC,kBAAkB,CAAC;IACvE,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,2HAA2H;IAC3H,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mGAAmG;IACnG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8FAA8F;IAC9F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8FAA8F;IAC9F,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,SAAS,EAAE,CAiB/E"}
|