@adonis-agora/agent 0.60.1 → 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 +96 -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 +9 -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 +195 -11
- 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-approval.d.ts +26 -0
- package/dist/src/action-proposal-approval.d.ts.map +1 -0
- package/dist/src/action-proposal-approval.js +28 -0
- package/dist/src/action-proposal-approval.js.map +1 -0
- package/dist/src/action-proposal-discovery.d.ts +9 -0
- package/dist/src/action-proposal-discovery.d.ts.map +1 -0
- package/dist/src/action-proposal-discovery.js +20 -0
- package/dist/src/action-proposal-discovery.js.map +1 -0
- package/dist/src/action-proposal-executor.d.ts +40 -0
- package/dist/src/action-proposal-executor.d.ts.map +1 -0
- package/dist/src/action-proposal-executor.js +80 -0
- package/dist/src/action-proposal-executor.js.map +1 -0
- package/dist/src/action-proposal-outcome.d.ts +12 -0
- package/dist/src/action-proposal-outcome.d.ts.map +1 -0
- package/dist/src/action-proposal-outcome.js +86 -0
- package/dist/src/action-proposal-outcome.js.map +1 -0
- package/dist/src/action-proposal-preparation.d.ts +20 -0
- package/dist/src/action-proposal-preparation.d.ts.map +1 -0
- package/dist/src/action-proposal-preparation.js +27 -0
- package/dist/src/action-proposal-preparation.js.map +1 -0
- package/dist/src/action-proposal-receipt.d.ts +12 -0
- package/dist/src/action-proposal-receipt.d.ts.map +1 -0
- package/dist/src/action-proposal-receipt.js +4 -0
- package/dist/src/action-proposal-receipt.js.map +1 -0
- package/dist/src/action-proposal-runtime.d.ts +9 -0
- package/dist/src/action-proposal-runtime.d.ts.map +1 -0
- package/dist/src/action-proposal-runtime.js +34 -0
- package/dist/src/action-proposal-runtime.js.map +1 -0
- package/dist/src/action-proposal-service.d.ts +47 -0
- package/dist/src/action-proposal-service.d.ts.map +1 -0
- package/dist/src/action-proposal-service.js +136 -0
- package/dist/src/action-proposal-service.js.map +1 -0
- package/dist/src/action-proposal-text.d.ts +72 -0
- package/dist/src/action-proposal-text.d.ts.map +1 -0
- package/dist/src/action-proposal-text.js +119 -0
- package/dist/src/action-proposal-text.js.map +1 -0
- package/dist/src/action-proposal-transitions.d.ts +20 -0
- package/dist/src/action-proposal-transitions.d.ts.map +1 -0
- package/dist/src/action-proposal-transitions.js +311 -0
- package/dist/src/action-proposal-transitions.js.map +1 -0
- package/dist/src/action-proposal-worker.d.ts +32 -0
- package/dist/src/action-proposal-worker.d.ts.map +1 -0
- package/dist/src/action-proposal-worker.js +140 -0
- package/dist/src/action-proposal-worker.js.map +1 -0
- package/dist/src/ag-ui/adapter.d.ts.map +1 -1
- package/dist/src/ag-ui/adapter.js +106 -1
- 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/core/proposal-decision.d.ts +9 -0
- package/dist/src/ag-ui/core/proposal-decision.d.ts.map +1 -0
- package/dist/src/ag-ui/core/proposal-decision.js +20 -0
- 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 +9 -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 +8 -0
- package/dist/src/agent-deps-factory.d.ts.map +1 -1
- package/dist/src/agent-deps-factory.js +12 -0
- package/dist/src/agent-deps-factory.js.map +1 -1
- package/dist/src/agent-deps.d.ts +7 -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 +8 -3
- package/dist/src/agent-loop.d.ts.map +1 -1
- package/dist/src/agent-loop.js +398 -63
- package/dist/src/agent-loop.js.map +1 -1
- package/dist/src/agent-service.d.ts +52 -2
- package/dist/src/agent-service.d.ts.map +1 -1
- package/dist/src/agent-service.js +62 -2
- 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 +6 -1
- package/dist/src/ai-tool-ref.d.ts.map +1 -1
- package/dist/src/ai-tool-ref.js +32 -16
- 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 +4 -0
- package/dist/src/chat-queue-service.js.map +1 -1
- package/dist/src/client/chat-client.d.ts +12 -0
- package/dist/src/client/chat-client.d.ts.map +1 -1
- package/dist/src/client/chat-client.js +69 -1
- package/dist/src/client/chat-client.js.map +1 -1
- package/dist/src/client/sse.d.ts +15 -0
- package/dist/src/client/sse.d.ts.map +1 -1
- package/dist/src/client/sse.js +45 -0
- package/dist/src/client/sse.js.map +1 -1
- package/dist/src/define_config.d.ts +70 -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 +8 -8
- package/dist/src/genui/factory.d.ts.map +1 -1
- package/dist/src/genui/factory.js +3 -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 +6 -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 +21 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +19 -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 +10 -0
- package/dist/src/negotiated-tool-ui.d.ts.map +1 -0
- package/dist/src/negotiated-tool-ui.js +57 -0
- package/dist/src/negotiated-tool-ui.js.map +1 -0
- 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/action-proposal-outcome-store.d.ts +43 -0
- package/dist/src/spi/action-proposal-outcome-store.d.ts.map +1 -0
- package/dist/src/spi/action-proposal-outcome-store.js +2 -0
- package/dist/src/spi/action-proposal-outcome-store.js.map +1 -0
- package/dist/src/spi/action-proposal-store.d.ts +152 -0
- package/dist/src/spi/action-proposal-store.d.ts.map +1 -0
- package/dist/src/spi/action-proposal-store.js +2 -0
- package/dist/src/spi/action-proposal-store.js.map +1 -0
- package/dist/src/spi/action-proposal-worker-store.d.ts +17 -0
- package/dist/src/spi/action-proposal-worker-store.d.ts.map +1 -0
- package/dist/src/spi/action-proposal-worker-store.js +2 -0
- package/dist/src/spi/action-proposal-worker-store.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/agent-store.d.ts +5 -0
- package/dist/src/spi/agent-store.d.ts.map +1 -1
- package/dist/src/spi/agent-store.js.map +1 -1
- package/dist/src/spi/approval-policy.d.ts +3 -0
- package/dist/src/spi/approval-policy.d.ts.map +1 -1
- package/dist/src/spi/approval-policy.js +8 -1
- package/dist/src/spi/approval-policy.js.map +1 -1
- package/dist/src/spi/background-actor-resolver.d.ts +9 -0
- package/dist/src/spi/background-actor-resolver.d.ts.map +1 -0
- package/dist/src/spi/background-actor-resolver.js +2 -0
- package/dist/src/spi/background-actor-resolver.js.map +1 -0
- package/dist/src/spi/chat-queue.d.ts +7 -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/token-stream-sink.d.ts +9 -0
- package/dist/src/spi/token-stream-sink.d.ts.map +1 -1
- package/dist/src/spi/token-stream-sink.js.map +1 -1
- package/dist/src/spi/tool.d.ts +40 -3
- package/dist/src/spi/tool.d.ts.map +1 -1
- package/dist/src/sse.d.ts.map +1 -1
- package/dist/src/sse.js +6 -0
- package/dist/src/sse.js.map +1 -1
- package/dist/src/stores/lucid-action-proposal-store.d.ts +55 -0
- package/dist/src/stores/lucid-action-proposal-store.d.ts.map +1 -0
- package/dist/src/stores/lucid-action-proposal-store.js +465 -0
- package/dist/src/stores/lucid-action-proposal-store.js.map +1 -0
- package/dist/src/stores/lucid-schema.d.ts +8 -6
- package/dist/src/stores/lucid-schema.d.ts.map +1 -1
- package/dist/src/stores/lucid-schema.js +61 -6
- package/dist/src/stores/lucid-schema.js.map +1 -1
- package/dist/src/stores/lucid.d.ts +4 -2
- package/dist/src/stores/lucid.d.ts.map +1 -1
- package/dist/src/stores/lucid.js +46 -14
- package/dist/src/stores/lucid.js.map +1 -1
- package/dist/src/stores/sqlite-transactions.d.ts +8 -0
- package/dist/src/stores/sqlite-transactions.d.ts.map +1 -0
- package/dist/src/stores/sqlite-transactions.js +24 -0
- package/dist/src/stores/sqlite-transactions.js.map +1 -0
- package/dist/src/stream-events.d.ts +4 -0
- package/dist/src/stream-events.d.ts.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-action-proposal-store.d.ts +32 -0
- package/dist/src/testing/in-memory-action-proposal-store.d.ts.map +1 -0
- package/dist/src/testing/in-memory-action-proposal-store.js +159 -0
- package/dist/src/testing/in-memory-action-proposal-store.js.map +1 -0
- package/dist/src/testing/in-memory-store.d.ts +9 -1
- package/dist/src/testing/in-memory-store.d.ts.map +1 -1
- package/dist/src/testing/in-memory-store.js +80 -1
- package/dist/src/testing/in-memory-store.js.map +1 -1
- package/dist/src/testing/index.d.ts +1 -0
- package/dist/src/testing/index.d.ts.map +1 -1
- package/dist/src/testing/index.js +1 -0
- package/dist/src/testing/index.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 +12 -1
- package/dist/src/tool-discovery.js.map +1 -1
- package/dist/src/tool-registry.d.ts +28 -1
- package/dist/src/tool-registry.d.ts.map +1 -1
- package/dist/src/tool-registry.js +85 -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/tool-retry.d.ts +0 -11
- package/dist/src/tool-retry.d.ts.map +1 -1
- package/dist/src/tool-retry.js +5 -1
- package/dist/src/tool-retry.js.map +1 -1
- package/dist/src/tool-ui.d.ts +4 -1
- package/dist/src/tool-ui.d.ts.map +1 -1
- package/dist/src/tool-ui.js +32 -4
- package/dist/src/tool-ui.js.map +1 -1
- package/dist/src/types.d.ts +48 -2
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/ui-capabilities.d.ts +2 -0
- package/dist/src/ui-capabilities.d.ts.map +1 -0
- package/dist/src/ui-capabilities.js +4 -0
- package/dist/src/ui-capabilities.js.map +1 -0
- package/dist/stubs/database/migrations/add_action_proposal_discovery.stub +24 -0
- package/dist/stubs/database/migrations/add_action_proposal_runtime.stub +19 -0
- package/dist/stubs/database/migrations/create_agent_tables.stub +3 -3
- 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
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{{{
|
|
2
|
+
exports({ to: app.migrationsPath(`${new Date().getTime() + 1}_add_action_proposal_discovery.ts`) })
|
|
3
|
+
}}}
|
|
4
|
+
import { BaseSchema } from '@adonisjs/lucid/schema'
|
|
5
|
+
import db from '@adonisjs/lucid/services/db'
|
|
6
|
+
import { createAgentTables, LucidAgentStore } from '@adonis-agora/agent'
|
|
7
|
+
|
|
8
|
+
/** Quiesce old writers before this upgrade; start discovery workers after it finishes. */
|
|
9
|
+
export default class extends BaseSchema {
|
|
10
|
+
static disableTransactions = true
|
|
11
|
+
|
|
12
|
+
async up() {
|
|
13
|
+
const connection = db.connection(this.db.connectionName)
|
|
14
|
+
await createAgentTables(connection)
|
|
15
|
+
const store = new LucidAgentStore(connection, { autoCreateTables: false })
|
|
16
|
+
while (await store.backfillActionProposalDiscoveryIndex({ limit: 500 })) {
|
|
17
|
+
// Each batch preserves snapshots and audits; an interrupted upgrade can be resumed.
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
async down() {
|
|
22
|
+
throw new Error('Forward-only discovery upgrade: proposal history and work must be preserved')
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{{{
|
|
2
|
+
exports({ to: app.migrationsPath(`${new Date().getTime() + 2}_add_action_proposal_runtime.ts`) })
|
|
3
|
+
}}}
|
|
4
|
+
import { BaseSchema } from '@adonisjs/lucid/schema'
|
|
5
|
+
import db from '@adonisjs/lucid/services/db'
|
|
6
|
+
import { createAgentTables } from '@adonis-agora/agent'
|
|
7
|
+
|
|
8
|
+
/** Quiesce old writers before provisioning atomic outcome delivery and capability persistence. */
|
|
9
|
+
export default class extends BaseSchema {
|
|
10
|
+
static disableTransactions = true
|
|
11
|
+
|
|
12
|
+
async up() {
|
|
13
|
+
await createAgentTables(db.connection(this.db.connectionName))
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
async down() {
|
|
17
|
+
throw new Error('Forward-only runtime upgrade: proposals, outcomes and history must be preserved')
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -6,9 +6,9 @@ import db from '@adonisjs/lucid/services/db'
|
|
|
6
6
|
import { createAgentTables, dropAgentTables } from '@adonis-agora/agent'
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
|
-
* The
|
|
9
|
+
* The ten tables for the @adonis-agora/agent \`lucid\` store: threads, messages, tool calls, token
|
|
10
10
|
* usage, model pricing, the run lifecycle, the chat message queue, the spent confirm tokens, and the
|
|
11
|
-
* frame buffer of the Lucid token sink (\`tokenSinks.lucid()\`) — plus their indexes.
|
|
11
|
+
* frame buffer of the Lucid token sink (\`tokenSinks.lucid()\`) — plus independent action proposals and their indexes.
|
|
12
12
|
*
|
|
13
13
|
* This migration DELEGATES to the library instead of reproducing its DDL. The schema belongs to the
|
|
14
14
|
* library: \`LucidAgentStore\`, the pricing store and the governance read-model all decide together what
|
|
@@ -20,7 +20,7 @@ import { createAgentTables, dropAgentTables } from '@adonis-agora/agent'
|
|
|
20
20
|
* existed purely to ALTER in the \`run_id\` columns this one had been written before.
|
|
21
21
|
*
|
|
22
22
|
* \`createAgentTables\` is idempotent (\`CREATE TABLE IF NOT EXISTS\`) and additive-only: it creates what
|
|
23
|
-
* is missing and ALTERs the \`run_id\` columns into a database that predates run tracking. So it is safe
|
|
23
|
+
* is missing and ALTERs the \`run_id\` columns into a database that predates run tracking, plus approval metadata including resolved confirmation. So it is safe
|
|
24
24
|
* against an empty database, against one the library already auto-created, and against one left over
|
|
25
25
|
* from an older version — which is exactly the set of states a real app is in.
|
|
26
26
|
*
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adonis-agora/agent",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.62.0",
|
|
4
4
|
"description": "Governed, durable-backed AI agent (chat + tool-calling + governance) for AdonisJS — part of the Agora ecosystem.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
"ai-sdk",
|
|
24
24
|
"durable",
|
|
25
25
|
"tanstack-intent",
|
|
26
|
+
"opencode",
|
|
26
27
|
"agora",
|
|
27
28
|
"guardrails"
|
|
28
29
|
],
|
|
@@ -41,6 +42,21 @@
|
|
|
41
42
|
"import": "./dist/src/ai-sdk/index.js",
|
|
42
43
|
"default": "./dist/src/ai-sdk/index.js"
|
|
43
44
|
},
|
|
45
|
+
"./a2a": {
|
|
46
|
+
"types": "./dist/src/a2a/index.d.ts",
|
|
47
|
+
"import": "./dist/src/a2a/index.js",
|
|
48
|
+
"default": "./dist/src/a2a/index.js"
|
|
49
|
+
},
|
|
50
|
+
"./a2a_provider": {
|
|
51
|
+
"types": "./dist/providers/a2a_provider.d.ts",
|
|
52
|
+
"import": "./dist/providers/a2a_provider.js",
|
|
53
|
+
"default": "./dist/providers/a2a_provider.js"
|
|
54
|
+
},
|
|
55
|
+
"./a2a/server_middleware": {
|
|
56
|
+
"types": "./dist/src/a2a/server_middleware.d.ts",
|
|
57
|
+
"import": "./dist/src/a2a/server_middleware.js",
|
|
58
|
+
"default": "./dist/src/a2a/server_middleware.js"
|
|
59
|
+
},
|
|
44
60
|
"./mcp": {
|
|
45
61
|
"types": "./dist/src/mcp/index.d.ts",
|
|
46
62
|
"import": "./dist/src/mcp/index.js",
|
|
@@ -76,6 +92,16 @@
|
|
|
76
92
|
"import": "./dist/src/durable/index.js",
|
|
77
93
|
"default": "./dist/src/durable/index.js"
|
|
78
94
|
},
|
|
95
|
+
"./opencode": {
|
|
96
|
+
"types": "./dist/src/opencode/index.d.ts",
|
|
97
|
+
"import": "./dist/src/opencode/index.js",
|
|
98
|
+
"default": "./dist/src/opencode/index.js"
|
|
99
|
+
},
|
|
100
|
+
"./opencode/durable": {
|
|
101
|
+
"types": "./dist/src/opencode/durable/index.d.ts",
|
|
102
|
+
"import": "./dist/src/opencode/durable/index.js",
|
|
103
|
+
"default": "./dist/src/opencode/durable/index.js"
|
|
104
|
+
},
|
|
79
105
|
"./authz": {
|
|
80
106
|
"types": "./dist/src/authz/index.d.ts",
|
|
81
107
|
"import": "./dist/src/authz/index.js",
|
|
@@ -180,6 +206,16 @@
|
|
|
180
206
|
"types": "./dist/src/media/index.d.ts",
|
|
181
207
|
"import": "./dist/src/media/index.js",
|
|
182
208
|
"default": "./dist/src/media/index.js"
|
|
209
|
+
},
|
|
210
|
+
"./react/genui/server": {
|
|
211
|
+
"types": "./dist/src/react/genui/server.d.ts",
|
|
212
|
+
"import": "./dist/src/react/genui/server.js",
|
|
213
|
+
"default": "./dist/src/react/genui/server.js"
|
|
214
|
+
},
|
|
215
|
+
"./react/genui/server/playwright": {
|
|
216
|
+
"types": "./dist/src/react/genui/server_playwright.d.ts",
|
|
217
|
+
"import": "./dist/src/react/genui/server_playwright.js",
|
|
218
|
+
"default": "./dist/src/react/genui/server_playwright.js"
|
|
183
219
|
}
|
|
184
220
|
},
|
|
185
221
|
"files": [
|
|
@@ -197,21 +233,34 @@
|
|
|
197
233
|
"peerDependencies": {
|
|
198
234
|
"@adonis-agora/authz": ">=0.4.2 <1.0.0",
|
|
199
235
|
"@adonis-agora/diagnostics": ">=0.1.0 <1.0.0",
|
|
200
|
-
"@adonis-agora/durable": ">=0.
|
|
236
|
+
"@adonis-agora/durable": ">=0.43.3 <1.0.0",
|
|
201
237
|
"@adonis-agora/media": ">=0.18.0 <1.0.0",
|
|
202
238
|
"@adonis-agora/telescope": ">=0.4.0 <1.0.0",
|
|
203
239
|
"@adonisjs/assembler": "^8.4.0",
|
|
204
240
|
"@adonisjs/core": "^7.3.0",
|
|
205
241
|
"@adonisjs/lucid": "^22.4.0",
|
|
206
242
|
"@adonisjs/redis": "^9.2.0 || ^10.0.0 || ^11.0.0",
|
|
207
|
-
"@dudousxd/nestjs-agent-core": ">=0.35.0 <1.0.0",
|
|
208
|
-
"@dudousxd/nestjs-agent-react": ">=0.30.0 <1.0.0",
|
|
209
|
-
"@dudousxd/nestjs-media-client": ">=0.3.0 <1.0.0",
|
|
210
243
|
"@qdrant/js-client-rest": "^1.11.0",
|
|
211
244
|
"ai": "^7.0.0",
|
|
212
245
|
"node-sql-parser": "^5.3.0",
|
|
213
246
|
"react": "^18.0.0 || ^19.0.0",
|
|
214
|
-
"zod": "^4.0.0"
|
|
247
|
+
"zod": "^4.0.0",
|
|
248
|
+
"@ai-sdk/react": "^4.0.0",
|
|
249
|
+
"@json-render/react": ">=0.21.0 <1.0.0",
|
|
250
|
+
"@streamdown/code": "^1.1.1",
|
|
251
|
+
"@streamdown/math": "^1.0.2",
|
|
252
|
+
"@streamdown/mermaid": "^1.0.2",
|
|
253
|
+
"katex": "^0.16.45",
|
|
254
|
+
"prism-react-renderer": "^2.4.1",
|
|
255
|
+
"react-dom": ">=18",
|
|
256
|
+
"react-markdown": "^10.1.0",
|
|
257
|
+
"rehype-katex": "^7.0.1",
|
|
258
|
+
"rehype-sanitize": "^6.0.0",
|
|
259
|
+
"remark-gfm": "^4.0.1",
|
|
260
|
+
"remark-math": "^6.0.0",
|
|
261
|
+
"streamdown": "^2.5.0",
|
|
262
|
+
"unist-util-visit": "^5.1.0",
|
|
263
|
+
"playwright-core": ">=1.48 <2"
|
|
215
264
|
},
|
|
216
265
|
"peerDependenciesMeta": {
|
|
217
266
|
"react": {
|
|
@@ -253,23 +302,62 @@
|
|
|
253
302
|
"zod": {
|
|
254
303
|
"optional": true
|
|
255
304
|
},
|
|
256
|
-
"@
|
|
305
|
+
"@adonis-agora/media": {
|
|
257
306
|
"optional": true
|
|
258
307
|
},
|
|
259
|
-
"@
|
|
308
|
+
"@ai-sdk/react": {
|
|
260
309
|
"optional": true
|
|
261
310
|
},
|
|
262
|
-
"@
|
|
311
|
+
"@json-render/react": {
|
|
263
312
|
"optional": true
|
|
264
313
|
},
|
|
265
|
-
"@
|
|
314
|
+
"@streamdown/code": {
|
|
315
|
+
"optional": true
|
|
316
|
+
},
|
|
317
|
+
"@streamdown/math": {
|
|
318
|
+
"optional": true
|
|
319
|
+
},
|
|
320
|
+
"@streamdown/mermaid": {
|
|
321
|
+
"optional": true
|
|
322
|
+
},
|
|
323
|
+
"katex": {
|
|
324
|
+
"optional": true
|
|
325
|
+
},
|
|
326
|
+
"prism-react-renderer": {
|
|
327
|
+
"optional": true
|
|
328
|
+
},
|
|
329
|
+
"react-dom": {
|
|
330
|
+
"optional": true
|
|
331
|
+
},
|
|
332
|
+
"react-markdown": {
|
|
333
|
+
"optional": true
|
|
334
|
+
},
|
|
335
|
+
"rehype-katex": {
|
|
336
|
+
"optional": true
|
|
337
|
+
},
|
|
338
|
+
"rehype-sanitize": {
|
|
339
|
+
"optional": true
|
|
340
|
+
},
|
|
341
|
+
"remark-gfm": {
|
|
342
|
+
"optional": true
|
|
343
|
+
},
|
|
344
|
+
"remark-math": {
|
|
345
|
+
"optional": true
|
|
346
|
+
},
|
|
347
|
+
"streamdown": {
|
|
348
|
+
"optional": true
|
|
349
|
+
},
|
|
350
|
+
"unist-util-visit": {
|
|
351
|
+
"optional": true
|
|
352
|
+
},
|
|
353
|
+
"playwright-core": {
|
|
266
354
|
"optional": true
|
|
267
355
|
}
|
|
268
356
|
},
|
|
269
357
|
"devDependencies": {
|
|
270
|
-
"@adonis-agora/authz": "0.
|
|
358
|
+
"@adonis-agora/authz": "0.18.0",
|
|
271
359
|
"@adonis-agora/diagnostics": "0.2.10",
|
|
272
|
-
"@adonis-agora/durable": "0.43.
|
|
360
|
+
"@adonis-agora/durable": "0.43.3",
|
|
273
361
|
"@adonis-agora/telescope": "0.21.1",
|
|
274
362
|
"@adonisjs/assembler": "8.5.2",
|
|
275
363
|
"@adonisjs/core": "7.5.2",
|
|
@@ -278,37 +366,50 @@
|
|
|
278
366
|
"@ag-ui/client": "1.0.1",
|
|
279
367
|
"@ag-ui/core": "1.0.1",
|
|
280
368
|
"@ai-sdk/react": "^4.0.125",
|
|
281
|
-
"@
|
|
282
|
-
"@dudousxd/nestjs-agent-react": "0.31.0",
|
|
283
|
-
"@dudousxd/nestjs-media-client": "0.3.0",
|
|
369
|
+
"@opencode/client": "2.0.18",
|
|
284
370
|
"@qdrant/js-client-rest": "1.19.0",
|
|
285
|
-
"@tanstack/intent": "0.
|
|
371
|
+
"@tanstack/intent": "0.5.0",
|
|
286
372
|
"@testcontainers/mysql": "12.2.0",
|
|
287
373
|
"@testcontainers/postgresql": "12.2.0",
|
|
288
374
|
"@testing-library/dom": "10.4.2",
|
|
289
375
|
"@testing-library/react": "16.3.3",
|
|
290
|
-
"@types/node": "26.6.
|
|
376
|
+
"@types/node": "26.6.4",
|
|
291
377
|
"@types/pg": "8.23.1",
|
|
292
378
|
"@types/react": "19.3.0",
|
|
293
379
|
"@types/react-dom": "19.3.0",
|
|
294
380
|
"agent-0-56": "npm:@adonis-agora/agent@0.56.0",
|
|
295
381
|
"agent-0-58": "npm:@adonis-agora/agent@0.58.0",
|
|
296
382
|
"agent-0-59": "npm:@adonis-agora/agent@0.59.0",
|
|
297
|
-
"ai": "7.0.
|
|
383
|
+
"ai": "7.0.122",
|
|
298
384
|
"ajv": "^8.20.0",
|
|
299
385
|
"better-sqlite3": "13.0.3",
|
|
300
386
|
"jsdom": "30.1.1",
|
|
301
387
|
"luxon": "3.7.2",
|
|
302
|
-
"mysql2": "3.24.
|
|
388
|
+
"mysql2": "3.24.5",
|
|
303
389
|
"node-sql-parser": "5.4.0",
|
|
304
|
-
"pg": "8.23.
|
|
390
|
+
"pg": "8.23.1",
|
|
305
391
|
"react": "19.3.0",
|
|
306
392
|
"react-dom": "19.3.0",
|
|
307
393
|
"rxjs": "^7.8.1",
|
|
308
394
|
"testcontainers": "12.2.0",
|
|
309
395
|
"typescript": "7.0.2",
|
|
310
|
-
"vitest": "5.0.
|
|
311
|
-
"zod": "4.6.5"
|
|
396
|
+
"vitest": "5.0.3",
|
|
397
|
+
"zod": "4.6.5",
|
|
398
|
+
"@json-render/core": "0.21.0",
|
|
399
|
+
"@json-render/react": "0.21.0",
|
|
400
|
+
"@streamdown/code": "1.1.1",
|
|
401
|
+
"@streamdown/math": "1.0.3",
|
|
402
|
+
"@streamdown/mermaid": "1.0.3",
|
|
403
|
+
"katex": "0.16.45",
|
|
404
|
+
"playwright-core": "^1.63.0",
|
|
405
|
+
"prism-react-renderer": "2.4.1",
|
|
406
|
+
"react-markdown": "10.1.0",
|
|
407
|
+
"rehype-katex": "7.0.1",
|
|
408
|
+
"rehype-sanitize": "6.0.0",
|
|
409
|
+
"remark-gfm": "4.0.1",
|
|
410
|
+
"remark-math": "6.0.0",
|
|
411
|
+
"streamdown": "2.6.0",
|
|
412
|
+
"unist-util-visit": "5.1.0"
|
|
312
413
|
},
|
|
313
414
|
"engines": {
|
|
314
415
|
"node": ">=20.6.0"
|
|
@@ -74,12 +74,20 @@ export default defineConfig({
|
|
|
74
74
|
})
|
|
75
75
|
```
|
|
76
76
|
|
|
77
|
-
Because the offered-tools filter
|
|
78
|
-
`can
|
|
79
|
-
disagree
|
|
77
|
+
Because the offered-tools filter calls `canOffer(actor, tool)` when the policy defines
|
|
78
|
+
it (else `can`) and the invoke-time re-check always calls `can(actor, tool)`, swapping
|
|
79
|
+
the policy changes both layers together — they disagree only when a policy defines
|
|
80
|
+
`canOffer` to offer what it will not run (A2A step-up).
|
|
81
|
+
|
|
82
|
+
The provider wraps whatever policy you configure with `personalAgentGate`: an actor with
|
|
83
|
+
the `personal_agent` role (A2A personal agents) reaches only tools that declare one of its
|
|
84
|
+
roles — a tool with no `roles` is out of its reach even when open by default — and its
|
|
85
|
+
memory and skill scopes resolve to none. Nothing changes for any other actor.
|
|
80
86
|
|
|
81
87
|
Source: `packages/adonis/docs/governance/authorization.mdx` ("Ability-aware
|
|
82
|
-
authorization"), `packages/adonis/src/authorizer.ts
|
|
88
|
+
authorization"), `packages/adonis/src/authorizer.ts`,
|
|
89
|
+
`packages/adonis/src/a2a/gate.ts` (`personalAgentGate`, `personalAgentScopes`),
|
|
90
|
+
`packages/adonis/docs/a2a.mdx` ("What a personal agent can reach").
|
|
83
91
|
|
|
84
92
|
### Pattern 2 — mount the governance read-model with `governanceAuthorize`
|
|
85
93
|
|
|
@@ -175,7 +175,8 @@ delegatesTo: [{ agent: 'researcher', roles: ['ANALYST', 'ADMIN'] }]
|
|
|
175
175
|
|
|
176
176
|
Mechanism: a delegate tool goes through the SAME gate as every other tool. A bare string
|
|
177
177
|
carries nothing, so under `DefaultToolAuthorizer` it takes `defaultRoles` (open unless
|
|
178
|
-
configured
|
|
178
|
+
configured — except for A2A personal agents, which reach only tools that declare one of
|
|
179
|
+
their roles), and under the authz Bouncer adapter a spec without `ability` is denied
|
|
179
180
|
outright — the edge becomes uncalled for everyone.
|
|
180
181
|
Source: `packages/adonis/docs/authoring/personas-and-agents.mdx` ("Authorizing a
|
|
181
182
|
delegation"), `packages/adonis/src/types.ts` (`DelegateEdge`).
|
|
@@ -26,9 +26,11 @@ sources:
|
|
|
26
26
|
# Setting up @adonis-agora/agent
|
|
27
27
|
|
|
28
28
|
`@adonis-agora/agent` is a governed AI agent module for AdonisJS: one `defineConfig`
|
|
29
|
-
call in `config/agent.ts` wires a provider-agnostic agent loop
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
call in `config/agent.ts` wires a provider-agnostic agent (the loop by default, or an
|
|
30
|
+
`engine` that runs turns instead), persistence, budgeting,
|
|
31
|
+
and the `/agent/*` HTTP+SSE routes. Either `model` (the loop runs the turns) or
|
|
32
|
+
`engine` (something else does) is required — everything else ships with a default that
|
|
33
|
+
this skill walks through.
|
|
32
34
|
|
|
33
35
|
## Setup
|
|
34
36
|
|
|
@@ -42,8 +44,9 @@ node ace configure @adonis-agora/agent
|
|
|
42
44
|
`configure` registers `@adonis-agora/agent/agent_provider` and
|
|
43
45
|
`@adonis-agora/agent/dashboard_provider` in `adonisrc.ts`, registers the Assembler init
|
|
44
46
|
hook that generates the typed `app/agent_tools` barrel, publishes `config/agent.ts`,
|
|
45
|
-
`config/mcp.ts`, and
|
|
46
|
-
|
|
47
|
+
`config/mcp.ts`, and five migrations: three for the agent tables (the base tables plus two
|
|
48
|
+
forward-only action-proposal upgrades) and two Postgres-only ones (the pgvector RAG chunk
|
|
49
|
+
table and the document-tree tables — delete the ones you don't use). Then add the model peer and write your config:
|
|
47
50
|
|
|
48
51
|
```bash
|
|
49
52
|
pnpm add ai zod @ai-sdk/openai
|
|
@@ -75,9 +78,10 @@ export default defineConfig({
|
|
|
75
78
|
})
|
|
76
79
|
```
|
|
77
80
|
|
|
78
|
-
Run the
|
|
79
|
-
`
|
|
80
|
-
|
|
81
|
+
Run the published migrations for the ten agent tables (`agent_action_proposal`,
|
|
82
|
+
`agent_thread`, `agent_message`, `agent_tool_call`, `agent_token_usage`,
|
|
83
|
+
`agent_model_pricing`, `agent_run`, `agent_queued_message`, `agent_confirm_token`, plus the
|
|
84
|
+
`agent_stream_frame` buffer):
|
|
81
85
|
|
|
82
86
|
```bash
|
|
83
87
|
node ace migration:run
|
|
@@ -85,8 +89,8 @@ node ace migration:run
|
|
|
85
89
|
|
|
86
90
|
You can skip it: the Lucid store provisions and repairs its own tables as the app starts
|
|
87
91
|
(`autoCreateTables` defaults to true; an ace command or a hand-built store does it on first
|
|
88
|
-
use), so an upgrade that adds a column needs no app migration. The published
|
|
89
|
-
|
|
92
|
+
use), so an upgrade that adds a column needs no app migration. The published migrations
|
|
93
|
+
delegate to the same `createAgentTables` helper, so the two schemas can never drift.
|
|
90
94
|
Only with `autoCreateTables: false` does an upgrade need a migration that calls
|
|
91
95
|
`createAgentTables` again.
|
|
92
96
|
|
|
@@ -179,6 +183,7 @@ export default defineConfig({
|
|
|
179
183
|
|
|
180
184
|
Requires `@adonisjs/redis` installed and configured unless you pass `client:` (a
|
|
181
185
|
bring-your-own `RedisStreamClient`). Pair with `durable: true` for cross-instance resume.
|
|
186
|
+
Under an `engine`, `durable: true` is refused at boot unless the engine is durable itself.
|
|
182
187
|
|
|
183
188
|
No Redis? `tokenSinks.lucid()` keeps the frames in the app's SQL database instead
|
|
184
189
|
(table `agent_stream_frame`, created with the other agent tables). Subscribers poll
|
|
@@ -206,9 +211,9 @@ Source: `packages/adonis/src/stores/factory.ts` (`tokenSinks`),
|
|
|
206
211
|
|
|
207
212
|
### Pattern 4 — a React chat with `@adonis-agora/agent/react`
|
|
208
213
|
|
|
209
|
-
|
|
210
|
-
`@ai-sdk/react` and `ai`
|
|
211
|
-
shield's CSRF token. No
|
|
214
|
+
Agora owns the React layer inside `@adonis-agora/agent/react`. Install the optional
|
|
215
|
+
`react`, `@ai-sdk/react` and `ai` peers for this entry. `AgentProvider` already sends the
|
|
216
|
+
session cookie and shield's CSRF token. No Aviary package or release is required:
|
|
212
217
|
|
|
213
218
|
```tsx
|
|
214
219
|
import { AgentProvider, useAgentChat } from '@adonis-agora/agent/react'
|
|
@@ -260,6 +265,24 @@ token sink any replica serves the resume. The native stream is unchanged.
|
|
|
260
265
|
|
|
261
266
|
Source: `packages/adonis/docs/ag-ui.mdx`, `packages/adonis/src/ag-ui/`.
|
|
262
267
|
|
|
268
|
+
## Component rendering entries
|
|
269
|
+
|
|
270
|
+
Agora owns its catalog (`@adonis-agora/agent/genui`), browser rendering
|
|
271
|
+
(`@adonis-agora/agent/react/genui`), AG-UI adapters and resumable upload client
|
|
272
|
+
(`@adonis-agora/agent/react/media`). Protocol compatibility does not require installing
|
|
273
|
+
Aviary packages.
|
|
274
|
+
|
|
275
|
+
For static HTML, use `createReactComponentRegistry` and `createReactServerRenderer` from
|
|
276
|
+
`@adonis-agora/agent/react/genui/server`; install matching `react` and `react-dom` peers.
|
|
277
|
+
Keep this server entry out of browser bundles: it reads trusted filesystem stylesheets
|
|
278
|
+
and imports ReactDOM's server renderer. HTML does not require a browser or AI SDK.
|
|
279
|
+
PNG/PDF output takes a capture adapter; the optional Playwright implementation lives at
|
|
280
|
+
`@adonis-agora/agent/react/genui/server/playwright` and needs `playwright-core`. A supplied
|
|
281
|
+
browser remains caller-owned. Binary captures are attachments, not durable UI-frame props.
|
|
282
|
+
|
|
283
|
+
Source: `packages/adonis/docs/authoring/component-rendering.mdx`,
|
|
284
|
+
`packages/adonis/docs/react.mdx`.
|
|
285
|
+
|
|
263
286
|
## Common mistakes
|
|
264
287
|
|
|
265
288
|
### MEDIUM — restating history to the AG-UI route and expecting it to be read
|
|
@@ -167,6 +167,28 @@ for await (const frame of sink.subscribe(runId)) {
|
|
|
167
167
|
Source: `packages/adonis/docs/testing.mdx` ("Because the fakes are behavioral twins"
|
|
168
168
|
note), `packages/adonis/src/in-process-sink.ts`.
|
|
169
169
|
|
|
170
|
+
### Pattern 4 — verify presentation, replay and optional rendering locally
|
|
171
|
+
|
|
172
|
+
Use Agora's own entries in tests; do not install or alias Aviary packages. Exercise
|
|
173
|
+
class presentation through discovery, and functional presentation through `defineTool`
|
|
174
|
+
and `ToolRegistry.invoke`. Verify unchanged domain output, authorization and denied
|
|
175
|
+
preflight, completed preflight without execution, ordered emissions, and a throwing
|
|
176
|
+
`present`/sink/reporter without repeating the domain write. A loop test should replay
|
|
177
|
+
its journaled tool result and assert that presentation is not emitted or persisted twice.
|
|
178
|
+
|
|
179
|
+
Test custom schema transformations with distinct `props` and `outputProps` through
|
|
180
|
+
static and request-resolved component/show/tree tools; normalized props must remain
|
|
181
|
+
unchanged in rendering and persisted history. For SSR, import
|
|
182
|
+
`@adonis-agora/agent/react/genui/server`, provide trusted CSS/theme, and use a fake capture
|
|
183
|
+
adapter to inspect every paginated row and escaped HTML without a browser. Real
|
|
184
|
+
PNG/PDF tests can use the optional Playwright entry and a host Chromium executable;
|
|
185
|
+
assert byte signatures and page/context cleanup while retaining the supplied browser.
|
|
186
|
+
Keep binary captures out of persisted component frames.
|
|
187
|
+
|
|
188
|
+
Source: `packages/adonis/test/tool-present.spec.ts`,
|
|
189
|
+
`packages/adonis/test/emit-ui.spec.ts`, `packages/adonis/test/react-server.spec.ts`,
|
|
190
|
+
`packages/adonis/test/react-playwright.browser.spec.ts`.
|
|
191
|
+
|
|
170
192
|
## Common mistakes
|
|
171
193
|
|
|
172
194
|
### MEDIUM — keeping mutable state in a FakeModelProvider script
|
|
@@ -59,7 +59,8 @@ export default class GetWeather extends ReadTool<Input, { tempC: number }> {
|
|
|
59
59
|
}
|
|
60
60
|
```
|
|
61
61
|
|
|
62
|
-
Prefer a function? `defineTool(
|
|
62
|
+
Prefer a function? `defineTool({ name, input, execute, present, ... })` or the existing
|
|
63
|
+
`defineTool(options, execute)` returns a branded `{ spec, handler }`
|
|
63
64
|
discovery picks up identically — or pass it straight to `defineConfig({ tools: [...] })`.
|
|
64
65
|
|
|
65
66
|
## Core patterns
|
|
@@ -109,8 +110,9 @@ An action's write and the checkpoint that records it are two writes: a worker th
|
|
|
109
110
|
them re-runs the tool on recovery. Pass `ctx.idempotencyKey` (`<runId>:<toolCallId>`, the same for
|
|
110
111
|
every execution of one call) on as the downstream idempotency key — a provider's
|
|
111
112
|
`Idempotency-Key`, a unique column on the inserted row, the `id` of a workflow the tool starts — so
|
|
112
|
-
the second attempt lands on the first.
|
|
113
|
-
`
|
|
113
|
+
the second attempt lands on the first. Over MCP the server mints one per `tools/call`
|
|
114
|
+
(alongside `toolCallId` and `pageContext: { channel: 'mcp' }`). It is absent on a direct
|
|
115
|
+
`registry.invoke`, so fall back to a key of your own there.
|
|
114
116
|
|
|
115
117
|
Source: `packages/adonis/src/spi/tool.ts` (`AiToolCtx.idempotencyKey`).
|
|
116
118
|
|
|
@@ -177,10 +179,12 @@ Source: `packages/adonis/docs/authoring/tools.mdx` ("Configuring the generator")
|
|
|
177
179
|
|
|
178
180
|
### Pattern 4 — a write reachable over MCP: `defineConfirmedTool`
|
|
179
181
|
|
|
180
|
-
An `action`
|
|
182
|
+
An `action` is off the MCP surface by default (`actions: 'refuse'` in `config/mcp.ts` —
|
|
183
|
+
neither listed nor callable, since there is no approval channel, and Claude.ai/Desktop have no
|
|
181
184
|
elicitation). For a write that must be callable there, put the gate inside the tool: the
|
|
182
185
|
first call previews and returns a signed `confirmToken`; the same arguments plus
|
|
183
|
-
`confirm: true` and the token commit.
|
|
186
|
+
`confirm: true` and the token commit. (`actions: 'execute'` opts out and runs actions when
|
|
187
|
+
called — the MCP client's own confirmation stands in for the loop's approval gate.)
|
|
184
188
|
|
|
185
189
|
```ts
|
|
186
190
|
import { defineConfirmedTool, LucidConfirmTokenStore } from '@adonis-agora/agent'
|
|
@@ -209,6 +213,44 @@ arguments and expires (`ttlMs`, default 15 min).
|
|
|
209
213
|
Source: `packages/adonis/docs/mcp.mdx` ("Writes with a human gate"),
|
|
210
214
|
`packages/adonis/src/confirmed-tool.ts`.
|
|
211
215
|
|
|
216
|
+
### Pattern 5 — present a domain result through the component catalog
|
|
217
|
+
|
|
218
|
+
Keep `execute` returning domain data. An optional `present(output, ctx)` on a class or
|
|
219
|
+
functional handler returns one component presentation, an array, or `undefined`. The
|
|
220
|
+
registry emits presentations through `ctx.emitUi` and preserves the domain result for
|
|
221
|
+
REST/MCP callers. Denied or failed execution does not present; presentation errors do
|
|
222
|
+
not retry a successful write. Methods keep their receiver, including injected services.
|
|
223
|
+
|
|
224
|
+
```ts
|
|
225
|
+
import { defineTool } from '@adonis-agora/agent'
|
|
226
|
+
import { table } from '@adonis-agora/agent/genui'
|
|
227
|
+
import { z } from 'zod'
|
|
228
|
+
|
|
229
|
+
export const listRecords = defineTool({
|
|
230
|
+
name: 'list_records',
|
|
231
|
+
description: 'List records visible to the current actor.',
|
|
232
|
+
input: z.object({ limit: z.number().int().min(1).max(100) }),
|
|
233
|
+
execute: async ({ limit }, ctx) => recordsFor(ctx.actor, limit),
|
|
234
|
+
present: async (records) => table({
|
|
235
|
+
columns: [{ key: 'name', label: 'Name' }],
|
|
236
|
+
rows: records,
|
|
237
|
+
}),
|
|
238
|
+
})
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
Use `createComponent` for custom definitions and one `createComponentRegistry` per app
|
|
242
|
+
or tenant. Input `props` may transform; if the transform changes shape or is not
|
|
243
|
+
idempotent, declare `outputProps` to validate the normalized JSON persisted in frames.
|
|
244
|
+
Do not send renderer functions or image/PDF bytes as props. Set `onPresentationError(error,
|
|
245
|
+
{ toolName, toolCallId, runId, threadId })` in `defineConfig` — it is wired for turns
|
|
246
|
+
and proposal executions (the loop/executor fill in the call, run and thread); omit it
|
|
247
|
+
and the provider logs a warning on the app logger. Inside a tool,
|
|
248
|
+
`ctx.onPresentationError` carries the same details. SSR and capture use optional server entries,
|
|
249
|
+
separate from tool execution and browser chat hooks.
|
|
250
|
+
|
|
251
|
+
Source: `packages/adonis/docs/authoring/component-rendering.mdx`,
|
|
252
|
+
`packages/adonis/src/spi/tool.ts`, `packages/adonis/src/tool-result-presentation.ts`.
|
|
253
|
+
|
|
212
254
|
## Feature flags and per-user gates — `enabled`, `isEnabled()`, `canUse(actor)`
|
|
213
255
|
|
|
214
256
|
```ts
|
|
@@ -232,8 +274,8 @@ Source: `packages/adonis/docs/authoring/tools.mdx`, `packages/adonis/src/tool-fi
|
|
|
232
274
|
### CRITICAL — shipping a privileged tool without `roles`
|
|
233
275
|
|
|
234
276
|
```ts
|
|
235
|
-
// Wrong — no roles → inherits defaultRoles, which is [] (open) by default: every actor
|
|
236
|
-
// an anonymous visitor included, is offered this tool.
|
|
277
|
+
// Wrong — no roles → inherits defaultRoles, which is [] (open) by default: every actor
|
|
278
|
+
// except A2A personal agents, an anonymous visitor included, is offered this tool.
|
|
237
279
|
static tool = { name: 'refund_order', kind: 'action', description: '...', input }
|
|
238
280
|
```
|
|
239
281
|
|
|
@@ -245,10 +287,13 @@ static tool = { name: 'refund_order', kind: 'action', description: '...', input,
|
|
|
245
287
|
Mechanism: `definitionsFor` filters the offered tool list through the role gate BEFORE
|
|
246
288
|
each model turn, and `invoke` re-checks it. A tool with no `roles` takes `defaultRoles`;
|
|
247
289
|
an empty list is no restriction (since 0.46 — before, it denied everyone; `emptyRoles: 'deny'`
|
|
248
|
-
in the config, or `ClosedRolesPolicy`, keeps it closed)
|
|
290
|
+
in the config, or `ClosedRolesPolicy`, keeps it closed) — except for an actor with the
|
|
291
|
+
`personal_agent` role (A2A personal agents): it reaches only tools that declare one of its
|
|
292
|
+
roles, so a tool with no `roles` is out of its reach even when open by default. An `action` still parks on approval — but by default the
|
|
249
293
|
requester approves, so for a public chat that is only a confirmation.
|
|
250
294
|
Source: `packages/adonis/docs/governance/authorization.mdx`,
|
|
251
|
-
`packages/adonis/src/tool-registry.ts` (`DefaultRolesPolicy.can`)
|
|
295
|
+
`packages/adonis/src/tool-registry.ts` (`DefaultRolesPolicy.can`),
|
|
296
|
+
`packages/adonis/src/a2a/gate.ts` (`personalAgentGate`).
|
|
252
297
|
|
|
253
298
|
### HIGH — trusting an id from the model's arguments instead of `ctx.actor`
|
|
254
299
|
|