veryfront 0.1.1074 → 0.1.1077

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.
Files changed (88) hide show
  1. package/esm/cli/templates/manifest.js +1 -1
  2. package/esm/deno.js +1 -1
  3. package/esm/src/agent/react/index.d.ts +3 -3
  4. package/esm/src/agent/react/index.d.ts.map +1 -1
  5. package/esm/src/agent/react/index.js +1 -1
  6. package/esm/src/agent/react/use-agent-metadata.d.ts +18 -1
  7. package/esm/src/agent/react/use-agent-metadata.d.ts.map +1 -1
  8. package/esm/src/agent/react/use-agent-metadata.js +19 -0
  9. package/esm/src/agent/react/use-chat/index.d.ts +1 -1
  10. package/esm/src/agent/react/use-chat/index.d.ts.map +1 -1
  11. package/esm/src/agent/react/use-chat/types.d.ts +16 -0
  12. package/esm/src/agent/react/use-chat/types.d.ts.map +1 -1
  13. package/esm/src/agent/react/use-chat/use-chat.d.ts.map +1 -1
  14. package/esm/src/agent/react/use-chat/use-chat.js +36 -3
  15. package/esm/src/agent/schemas/agent.schema.d.ts +3 -3
  16. package/esm/src/channels/invoke.d.ts +2 -2
  17. package/esm/src/config/define-config.d.ts +4 -3
  18. package/esm/src/config/define-config.d.ts.map +1 -1
  19. package/esm/src/config/define-config.js +0 -1
  20. package/esm/src/config/loader.d.ts.map +1 -1
  21. package/esm/src/config/loader.js +8 -4
  22. package/esm/src/config/schemas/config.schema.d.ts +16 -7
  23. package/esm/src/config/schemas/config.schema.d.ts.map +1 -1
  24. package/esm/src/config/schemas/config.schema.js +6 -3
  25. package/esm/src/eval/agent-service/durable-run-canaries/runner.d.ts +1 -1
  26. package/esm/src/integrations/index.d.ts +1 -1
  27. package/esm/src/integrations/index.d.ts.map +1 -1
  28. package/esm/src/integrations/remote-tools.d.ts +7 -5
  29. package/esm/src/integrations/remote-tools.d.ts.map +1 -1
  30. package/esm/src/integrations/remote-tools.js +1 -1
  31. package/esm/src/integrations/types.d.ts +12 -4
  32. package/esm/src/integrations/types.d.ts.map +1 -1
  33. package/esm/src/internal-agents/schema.d.ts +3 -3
  34. package/esm/src/mcp/server.d.ts.map +1 -1
  35. package/esm/src/mcp/server.js +8 -1
  36. package/esm/src/react/components/chat/agent-picker.d.ts +4 -4
  37. package/esm/src/react/components/chat/agent-picker.d.ts.map +1 -1
  38. package/esm/src/react/components/chat/agent-picker.js +3 -5
  39. package/esm/src/react/components/chat/chat/app-mode-chat.d.ts.map +1 -1
  40. package/esm/src/react/components/chat/chat/app-mode-chat.js +16 -31
  41. package/esm/src/react/components/chat/chat/chat-props.d.ts +11 -4
  42. package/esm/src/react/components/chat/chat/chat-props.d.ts.map +1 -1
  43. package/esm/src/react/components/chat/chat/components/sidebar.d.ts +10 -16
  44. package/esm/src/react/components/chat/chat/components/sidebar.d.ts.map +1 -1
  45. package/esm/src/react/components/chat/chat/components/sidebar.js +16 -10
  46. package/esm/src/react/components/chat/chat/composition/chat-composer.d.ts +20 -19
  47. package/esm/src/react/components/chat/chat/composition/chat-composer.d.ts.map +1 -1
  48. package/esm/src/react/components/chat/chat/composition/chat-composer.js +16 -46
  49. package/esm/src/react/components/chat/chat/composition/chat-empty.d.ts +12 -3
  50. package/esm/src/react/components/chat/chat/composition/chat-empty.d.ts.map +1 -1
  51. package/esm/src/react/components/chat/chat/composition/chat-empty.js +12 -2
  52. package/esm/src/react/components/chat/chat/composition/chat-message-list.d.ts.map +1 -1
  53. package/esm/src/react/components/chat/chat/composition/chat-message-list.js +5 -1
  54. package/esm/src/react/components/chat/chat/composition/chat-root.d.ts +7 -3
  55. package/esm/src/react/components/chat/chat/composition/chat-root.d.ts.map +1 -1
  56. package/esm/src/react/components/chat/chat/composition/chat-root.js +5 -1
  57. package/esm/src/react/components/chat/chat/composition/message-sources.d.ts +35 -0
  58. package/esm/src/react/components/chat/chat/composition/message-sources.d.ts.map +1 -0
  59. package/esm/src/react/components/chat/chat/composition/message-sources.js +31 -0
  60. package/esm/src/react/components/chat/chat/composition/message.d.ts +8 -10
  61. package/esm/src/react/components/chat/chat/composition/message.d.ts.map +1 -1
  62. package/esm/src/react/components/chat/chat/composition/message.js +10 -17
  63. package/esm/src/react/components/chat/chat/composition/use-composer-value.d.ts +53 -0
  64. package/esm/src/react/components/chat/chat/composition/use-composer-value.d.ts.map +1 -0
  65. package/esm/src/react/components/chat/chat/composition/use-composer-value.js +78 -0
  66. package/esm/src/react/components/chat/chat/contexts/chat-context.d.ts +10 -2
  67. package/esm/src/react/components/chat/chat/contexts/chat-context.d.ts.map +1 -1
  68. package/esm/src/react/components/chat/chat/controlled-chat.d.ts +1 -1
  69. package/esm/src/react/components/chat/chat/controlled-chat.d.ts.map +1 -1
  70. package/esm/src/react/components/chat/chat/controlled-chat.js +5 -7
  71. package/esm/src/react/components/chat/chat/hooks/use-conversation-chat.d.ts.map +1 -1
  72. package/esm/src/react/components/chat/chat/hooks/use-conversation-chat.js +8 -5
  73. package/esm/src/react/components/chat/chat/hooks/use-conversation.d.ts.map +1 -1
  74. package/esm/src/react/components/chat/chat/hooks/use-conversation.js +3 -1
  75. package/esm/src/react/components/chat/chat/hooks/use-conversations.d.ts +5 -0
  76. package/esm/src/react/components/chat/chat/hooks/use-conversations.d.ts.map +1 -1
  77. package/esm/src/react/components/chat/chat/hooks/use-conversations.js +2 -0
  78. package/esm/src/react/components/chat/chat-agent-picker.d.ts +6 -1
  79. package/esm/src/react/components/chat/chat-agent-picker.d.ts.map +1 -1
  80. package/esm/src/react/components/chat/chat-agent-picker.js +7 -2
  81. package/esm/src/react/components/chat/model-selector.d.ts +2 -0
  82. package/esm/src/react/components/chat/model-selector.d.ts.map +1 -1
  83. package/esm/src/react/components/chat/model-selector.js +7 -6
  84. package/esm/src/server/handlers/dev/framework-candidates.generated.d.ts.map +1 -1
  85. package/esm/src/server/handlers/dev/framework-candidates.generated.js +198 -74
  86. package/esm/src/utils/version-constant.d.ts +1 -1
  87. package/esm/src/utils/version-constant.js +1 -1
  88. package/package.json +5 -5
@@ -51,7 +51,7 @@ export default {
51
51
  "app/api/ag-ui/route.ts": "import { createAgUiHandler } from \"veryfront/agent\";\nimport { store } from \"../../../store.ts\";\n\nexport const POST = createAgUiHandler(\"rag\", {\n beforeStream: async ({ lastUserText }) => {\n const query = lastUserText.trim();\n if (!query) return;\n\n try {\n const results = await store.search(query, { topK: 5 });\n if (results.length === 0) return;\n\n const contextBlock = results\n .map(\n (result) =>\n `[${result.title}] (score: ${\n result.score.toFixed(2)\n })\\n${result.text}`,\n )\n .join(\"\\n\\n---\\n\\n\");\n\n return {\n prepend: [\n {\n role: \"system\",\n parts: [\n {\n type: \"text\",\n text:\n `Here are relevant documents retrieved for your question:\\n\\n${contextBlock}\\n\\n` +\n \"Use these documents to answer. Cite the document title when referencing information.\",\n },\n ],\n },\n ],\n };\n } catch (e) {\n console.error(\"[RAG] Retrieval failed:\", e);\n return;\n }\n },\n});\n",
52
52
  "app/api/ingest/route.ts": "import { store } from \"../../../store.ts\";\n\nexport async function POST() {\n await store.indexContentDir();\n return Response.json({ ok: true });\n}\n",
53
53
  "app/api/uploads/route.ts": "import { createUploadHandler } from \"veryfront/embedding\";\nimport { store } from \"../../../store.ts\";\n\nexport const { POST, GET, DELETE } = createUploadHandler(store, {\n auth: { type: \"none\", allowUnauthenticated: true },\n});\n",
54
- "app/layout.tsx": "'use client'\n\nimport \"../globals.css\";\nimport {\n AppShell,\n ChatSidebar,\n ChatThemeScope,\n ConversationsProvider,\n Tabs,\n TabsItem,\n} from \"veryfront/chat\";\nimport { Head } from \"veryfront/head\";\nimport { useRouter } from \"veryfront/router\";\n\nexport default function RootLayout({ children }: { children: React.ReactNode }): React.ReactNode {\n const router = useRouter();\n const activeTab = router.pathname.startsWith(\"/uploads\") ? \"uploads\" : \"chat\";\n\n return (\n <>\n <Head><title>Docs Agent</title></Head>\n <ChatThemeScope className=\"flex flex-col h-screen\">\n <ConversationsProvider storageKey=\"rag-conversations\">\n <AppShell className=\"flex-1 min-h-0\">\n <AppShell.Sidebar side=\"left\" className=\"border-r border-[var(--outline-border)]\">\n <AppShell.SidebarContent className=\"p-0\">\n <ChatSidebar fill />\n </AppShell.SidebarContent>\n </AppShell.Sidebar>\n <AppShell.Main>\n <AppShell.Header border className=\"h-16 gap-3 px-3\">\n <AppShell.Trigger side=\"left\" />\n <div className=\"flex flex-1 justify-center\">\n <Tabs\n value={activeTab}\n onValueChange={(value) => router.push(value === \"uploads\" ? \"/uploads\" : \"/\")}\n >\n <TabsItem value=\"chat\">Chat</TabsItem>\n <TabsItem value=\"uploads\">Uploads</TabsItem>\n </Tabs>\n </div>\n </AppShell.Header>\n <AppShell.Content className=\"flex flex-col min-h-0 pt-3\">\n {children}\n </AppShell.Content>\n </AppShell.Main>\n </AppShell>\n </ConversationsProvider>\n </ChatThemeScope>\n </>\n );\n}\n",
54
+ "app/layout.tsx": "'use client'\n\nimport \"../globals.css\";\nimport {\n AppShell,\n ChatSidebar,\n ChatThemeScope,\n ConversationsProvider,\n Tabs,\n TabsItem,\n} from \"veryfront/chat\";\nimport { Head } from \"veryfront/head\";\nimport { useRouter } from \"veryfront/router\";\n\nexport default function RootLayout({ children }: { children: React.ReactNode }): React.ReactNode {\n const router = useRouter();\n const activeTab = router.pathname.startsWith(\"/uploads\") ? \"uploads\" : \"chat\";\n\n return (\n <>\n <Head><title>Docs Agent</title></Head>\n <ChatThemeScope className=\"flex flex-col h-screen\">\n <ConversationsProvider storageKey=\"rag-conversations\">\n <AppShell className=\"flex-1 min-h-0\">\n <AppShell.Sidebar side=\"left\" className=\"border-r border-[var(--outline-border)]\">\n <AppShell.SidebarContent className=\"p-0\">\n <ChatSidebar.Root>\n <ChatSidebar.NewButton />\n <ChatSidebar.List />\n </ChatSidebar.Root>\n </AppShell.SidebarContent>\n </AppShell.Sidebar>\n <AppShell.Main>\n <AppShell.Header border className=\"h-16 gap-3 px-3\">\n <AppShell.Trigger side=\"left\" />\n <div className=\"flex flex-1 justify-center\">\n <Tabs\n value={activeTab}\n onValueChange={(value) => router.push(value === \"uploads\" ? \"/uploads\" : \"/\")}\n >\n <TabsItem value=\"chat\">Chat</TabsItem>\n <TabsItem value=\"uploads\">Uploads</TabsItem>\n </Tabs>\n </div>\n </AppShell.Header>\n <AppShell.Content className=\"flex flex-col min-h-0 pt-3\">\n {children}\n </AppShell.Content>\n </AppShell.Main>\n </AppShell>\n </ConversationsProvider>\n </ChatThemeScope>\n </>\n );\n}\n",
55
55
  "app/page.tsx": "'use client'\n\nimport { Chat } from 'veryfront/chat'\n\nconst ACCEPT = '.pdf,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.csv,.txt,.md,.mdx,.html,.rtf,.epub,.json,.xml'\n\nexport default function DocsChat() {\n return (\n <Chat\n agentId=\"rag\"\n api=\"/api/ag-ui\"\n uploadApi=\"/api/uploads\"\n attachAccept={ACCEPT}\n className=\"flex-1 min-h-0\"\n placeholder=\"Ask anything about your documents...\"\n />\n )\n}\n",
56
56
  "app/uploads/page.tsx": "'use client'\n\nimport { AttachmentsPanel, useUploadsRegistry } from 'veryfront/chat'\n\nconst UPLOAD_API = '/api/uploads'\nconst ACCEPT = '.pdf,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.csv,.txt,.md,.mdx,.html,.rtf,.epub,.json,.xml'\n\nexport default function UploadsPage(): React.JSX.Element {\n const uploads = useUploadsRegistry({ url: UPLOAD_API, storageKey: 'rag-uploads' })\n\n return (\n <AttachmentsPanel\n uploads={uploads.items}\n loading={uploads.isLoading}\n onAttach={uploads.upload}\n onRemoveUpload={uploads.remove}\n attachAccept={ACCEPT}\n className=\"flex-1 min-h-0\"\n />\n )\n}\n",
57
57
  "content/architecture.md": "# Architecture\n\nAcme Platform uses a modular, event-driven architecture.\n\n## Core Components\n\n### API Gateway\nRoutes incoming requests to the appropriate microservice. Handles authentication, rate limiting, and request validation.\n\n### Event Bus\nAsynchronous message broker connecting all services. Supports pub/sub and point-to-point messaging patterns.\n\n### Data Layer\nMulti-tenant data storage with automatic sharding. Supports PostgreSQL for relational data and Redis for caching.\n\n## Request Flow\n\n1. Client sends request to API Gateway\n2. Gateway validates authentication token\n3. Request is routed to the target service\n4. Service processes request and publishes events\n5. Response is returned through the gateway\n\n## Scaling\n\nEach component scales independently. The API Gateway uses horizontal scaling with load balancing. Services auto-scale based on queue depth and CPU utilization.\n\n## Security\n\n- All inter-service communication uses mTLS\n- API tokens are rotated every 24 hours\n- Data at rest is encrypted with AES-256\n- Audit logs are retained for 90 days\n",
package/esm/deno.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  "name": "veryfront",
3
- "version": "0.1.1074",
3
+ "version": "0.1.1077",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "minimumDependencyAge": {
@@ -4,11 +4,11 @@
4
4
  * @module agent/react
5
5
  */
6
6
  export { useChat } from "./use-chat/index.js";
7
- export type { BranchInfo, ChatDynamicToolPart, ChatFilePart, ChatFinishReason, ChatMessage, ChatMessagePart, ChatReasoningPart, ChatStepPart, ChatStreamEvent, ChatTextPart, ChatToolPart, ChatToolResultPart, ChatToolState, InferenceMode, OnToolCallArg, ToolOutput, UseChatOptions, UseChatResult, } from "./use-chat/index.js";
7
+ export type { BranchInfo, ChatDynamicToolPart, ChatFilePart, ChatFinishReason, ChatMessage, ChatMessagePart, ChatReasoningPart, ChatStatus, ChatStepPart, ChatStreamEvent, ChatTextPart, ChatToolPart, ChatToolResultPart, ChatToolState, InferenceMode, OnToolCallArg, ToolOutput, UseChatOptions, UseChatResult, } from "./use-chat/index.js";
8
8
  export { useAgent } from "./use-agent.js";
9
9
  export type { UseAgentOptions, UseAgentResult } from "./use-agent.js";
10
- export { getAgentPromptSuggestions, normalizeAgentMetadata, normalizeAgentMetadataResponse, useAgentMetadata, } from "./use-agent-metadata.js";
11
- export type { AgentMetadata, AgentMetadataPromptSuggestion, AgentMetadataSuggestion, AgentMetadataSuggestions, AgentMetadataTaskSuggestion, UseAgentMetadataResult, } from "./use-agent-metadata.js";
10
+ export { getAgentPromptSuggestionItems, getAgentPromptSuggestions, normalizeAgentMetadata, normalizeAgentMetadataResponse, useAgentMetadata, } from "./use-agent-metadata.js";
11
+ export type { AgentMetadata, AgentMetadataPromptSuggestion, AgentMetadataSuggestion, AgentMetadataSuggestions, AgentMetadataTaskSuggestion, PromptSuggestion, UseAgentMetadataResult, } from "./use-agent-metadata.js";
12
12
  export { normalizeAgentsListResponse, useAgents } from "./use-agents.js";
13
13
  export type { UseAgentsOptions, UseAgentsResult } from "./use-agents.js";
14
14
  export { useCompletion } from "./use-completion.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/react/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,YAAY,EACV,UAAU,EACV,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,aAAa,EACb,UAAU,EACV,cAAc,EACd,aAAa,GACd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEtE,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,8BAA8B,EAC9B,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,aAAa,EACb,6BAA6B,EAC7B,uBAAuB,EACvB,wBAAwB,EACxB,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,2BAA2B,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACzE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEzE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAErF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAElF,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/react/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,YAAY,EACV,UAAU,EACV,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,UAAU,EACV,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,aAAa,EACb,UAAU,EACV,cAAc,EACd,aAAa,GACd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEtE,OAAO,EACL,6BAA6B,EAC7B,yBAAyB,EACzB,sBAAsB,EACtB,8BAA8B,EAC9B,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,aAAa,EACb,6BAA6B,EAC7B,uBAAuB,EACvB,wBAAwB,EACxB,2BAA2B,EAC3B,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,2BAA2B,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACzE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEzE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAErF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAElF,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -5,7 +5,7 @@
5
5
  */
6
6
  export { useChat } from "./use-chat/index.js";
7
7
  export { useAgent } from "./use-agent.js";
8
- export { getAgentPromptSuggestions, normalizeAgentMetadata, normalizeAgentMetadataResponse, useAgentMetadata, } from "./use-agent-metadata.js";
8
+ export { getAgentPromptSuggestionItems, getAgentPromptSuggestions, normalizeAgentMetadata, normalizeAgentMetadataResponse, useAgentMetadata, } from "./use-agent-metadata.js";
9
9
  export { normalizeAgentsListResponse, useAgents } from "./use-agents.js";
10
10
  export { useCompletion } from "./use-completion.js";
11
11
  export { useStreaming } from "./use-streaming.js";
@@ -1,7 +1,7 @@
1
1
  /** Source-defined prompt suggestion shown by chat surfaces. */
2
2
  export type AgentMetadataPromptSuggestion = {
3
3
  type: "prompt";
4
- title: string;
4
+ title?: string;
5
5
  prompt: string;
6
6
  } | {
7
7
  id: string;
@@ -42,6 +42,23 @@ export declare function normalizeAgentMetadata(value: unknown): AgentMetadata;
42
42
  export declare function normalizeAgentMetadataResponse(value: unknown): AgentMetadata;
43
43
  /** Return prompt text suggestions that the current Chat component can render. */
44
44
  export declare function getAgentPromptSuggestions(agent: AgentMetadata | null): string[];
45
+ /**
46
+ * A prompt suggestion normalized for rendering: the short `label` shown on the
47
+ * chip and the full `prompt` sent when it is clicked.
48
+ */
49
+ export interface PromptSuggestion {
50
+ /** Short chip label — the agent's `title`, falling back to the prompt. */
51
+ label: string;
52
+ /** Full text sent to the agent when the chip is clicked. */
53
+ prompt: string;
54
+ }
55
+ /**
56
+ * Normalize an agent's prompt suggestions to `{ label, prompt }[]`, ready to
57
+ * render — the chip shows the short `title` while the click sends the full
58
+ * `prompt`. Saves consumers from flat-mapping `agent.suggestions.suggestions`
59
+ * and reconciling the `title`/`prompt` fields themselves.
60
+ */
61
+ export declare function getAgentPromptSuggestionItems(agent: AgentMetadata | null): PromptSuggestion[];
45
62
  /** React hook for browser-safe source-defined agent metadata. */
46
63
  export declare function useAgentMetadata(agentId: string | null | undefined): UseAgentMetadataResult;
47
64
  //# sourceMappingURL=use-agent-metadata.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-agent-metadata.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/react/use-agent-metadata.ts"],"names":[],"mappings":"AAGA,+DAA+D;AAC/D,MAAM,MAAM,6BAA6B,GACrC;IACA,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,GACC;IACA,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC;AAEJ,6DAA6D;AAC7D,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,uCAAuC;AACvC,MAAM,MAAM,uBAAuB,GAAG,6BAA6B,GAAG,2BAA2B,CAAC;AAElG,oDAAoD;AACpD,MAAM,WAAW,wBAAwB;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,uBAAuB,EAAE,CAAC;CACxC;AAED,kDAAkD;AAClD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,wBAAwB,CAAC;CACxC;AAED,6CAA6C;AAC7C,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AA2ED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAYpE;AAED,wDAAwD;AACxD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAK5E;AAED,iFAAiF;AACjF,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,GAAG,MAAM,EAAE,CAK/E;AAED,iEAAiE;AACjE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,sBAAsB,CAkD3F"}
1
+ {"version":3,"file":"use-agent-metadata.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/react/use-agent-metadata.ts"],"names":[],"mappings":"AAGA,+DAA+D;AAC/D,MAAM,MAAM,6BAA6B,GACrC;IACA,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,GACC;IACA,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC;AAEJ,6DAA6D;AAC7D,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,uCAAuC;AACvC,MAAM,MAAM,uBAAuB,GAAG,6BAA6B,GAAG,2BAA2B,CAAC;AAElG,oDAAoD;AACpD,MAAM,WAAW,wBAAwB;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,uBAAuB,EAAE,CAAC;CACxC;AAED,kDAAkD;AAClD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,wBAAwB,CAAC;CACxC;AAED,6CAA6C;AAC7C,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AA2ED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAYpE;AAED,wDAAwD;AACxD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAK5E;AAED,iFAAiF;AACjF,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,GAAG,MAAM,EAAE,CAK/E;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,aAAa,GAAG,IAAI,GAC1B,gBAAgB,EAAE,CAWpB;AAED,iEAAiE;AACjE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,sBAAsB,CAkD3F"}
@@ -93,6 +93,25 @@ export function getAgentPromptSuggestions(agent) {
93
93
  return [suggestion.prompt];
94
94
  }) ?? [];
95
95
  }
96
+ /**
97
+ * Normalize an agent's prompt suggestions to `{ label, prompt }[]`, ready to
98
+ * render — the chip shows the short `title` while the click sends the full
99
+ * `prompt`. Saves consumers from flat-mapping `agent.suggestions.suggestions`
100
+ * and reconciling the `title`/`prompt` fields themselves.
101
+ */
102
+ export function getAgentPromptSuggestionItems(agent) {
103
+ const list = agent?.suggestions?.suggestions;
104
+ if (!Array.isArray(list))
105
+ return [];
106
+ return list.flatMap((suggestion) => {
107
+ if (suggestion.type !== "prompt" || !("prompt" in suggestion) || !suggestion.prompt) {
108
+ return [];
109
+ }
110
+ const title = suggestion.title;
111
+ const label = typeof title === "string" && title.length > 0 ? title : suggestion.prompt;
112
+ return [{ label, prompt: suggestion.prompt }];
113
+ });
114
+ }
96
115
  /** React hook for browser-safe source-defined agent metadata. */
97
116
  export function useAgentMetadata(agentId) {
98
117
  const [agent, setAgent] = useState(null);
@@ -5,6 +5,6 @@
5
5
  * Build any interface you want.
6
6
  */
7
7
  export { useChat } from "./use-chat.js";
8
- export type { BranchInfo, ChatDynamicToolPart, ChatFilePart, ChatMessage, ChatMessagePart, ChatReasoningPart, ChatStepPart, ChatTextPart, ChatToolPart, ChatToolResultPart, ChatToolState, InferenceMode, OnToolCallArg, ToolOutput, UseChatOptions, UseChatResult, } from "./types.js";
8
+ export type { BranchInfo, ChatDynamicToolPart, ChatFilePart, ChatMessage, ChatMessagePart, ChatReasoningPart, ChatStatus, ChatStepPart, ChatTextPart, ChatToolPart, ChatToolResultPart, ChatToolState, InferenceMode, OnToolCallArg, ToolOutput, UseChatOptions, UseChatResult, } from "./types.js";
9
9
  export type { ChatFinishReason, ChatStreamEvent, } from "./stream-protocol.js";
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/src/agent/react/use-chat/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,YAAY,EACV,UAAU,EACV,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,aAAa,EACb,UAAU,EACV,cAAc,EACd,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,gBAAgB,EAChB,eAAe,GAChB,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/src/agent/react/use-chat/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,YAAY,EACV,UAAU,EACV,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,aAAa,EACb,UAAU,EACV,cAAc,EACd,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,gBAAgB,EAChB,eAAe,GAChB,MAAM,sBAAsB,CAAC"}
@@ -43,10 +43,26 @@ export interface BranchInfo {
43
43
  total: number;
44
44
  }
45
45
  /** Result returned from use chat. */
46
+ /**
47
+ * Streaming lifecycle of a chat turn.
48
+ * - `submitted`: request sent, awaiting the first streamed token
49
+ * - `streaming`: assistant tokens are arriving
50
+ * - `ready`: idle — no turn in flight
51
+ * - `error`: the last turn failed
52
+ *
53
+ * Parity with the Vercel AI SDK `status` field. Prefer this over `isLoading`
54
+ * (which stays as a convenience alias for `submitted | streaming`).
55
+ */
56
+ export type ChatStatus = "submitted" | "streaming" | "ready" | "error";
46
57
  export interface UseChatResult {
47
58
  messages: ChatMessage[];
48
59
  input: string;
60
+ /** @deprecated Use `status`. Equivalent to `status === "submitted" || status === "streaming"`. */
49
61
  isLoading: boolean;
62
+ /** Streaming lifecycle of the current turn (AI-SDK parity). */
63
+ status: ChatStatus;
64
+ /** Id of the assistant message currently streaming, or `null` when idle. */
65
+ streamingMessageId: string | null;
50
66
  error: Error | null;
51
67
  /** Current model override (undefined = use agent default) */
52
68
  model: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/src/agent/react/use-chat/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/src/agent/react/use-chat/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-chat.d.ts","sourceRoot":"","sources":["../../../../../src/src/agent/react/use-chat/use-chat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,KAAK,EAEV,YAAY,EACZ,WAAW,EACX,eAAe,EAGf,cAAc,EACd,aAAa,EACd,MAAM,YAAY,CAAC;AAGpB,KAAK,oBAAoB,GAAG,OAAO,2BAA2B,CAAC;AAE/D,wDAAwD;AACxD,UAAU,MAAM;IACd,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB;AAED,sEAAsE;AACtE,UAAU,WAAW;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,WAAW,EAAE,CAAC;CAC7B;AAED,wBAAgB,eAAe,CAAC,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAEnF;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EACnC,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACxC,MAAM,GAAG,SAAS,CAGpB;AAED,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,WAAW,EAAE,EACvB,SAAS,EAAE,MAAM,EACjB,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACxC,MAAM,CAIR;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,YAAY,EAAE,GACrB,eAAe,EAAE,CAEnB;AAMD,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,WAAW,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,YAAY,EAAE,CAAA;CAAE,GAAG,IAAI,CAQjD;AAED,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,cAAc,CAAC,WAAW,CAAC,GACrC,oBAAoB,CAGtB;AAOD,UAAU,uBAAwB,SAAQ,aAAa;IACrD,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;CAC3C;AAED,wBAAgB,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,aAAa,CAInE;AAED,mFAAmF;AACnF,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,cAAmB,GAC3B,uBAAuB,CAEzB"}
1
+ {"version":3,"file":"use-chat.d.ts","sourceRoot":"","sources":["../../../../../src/src/agent/react/use-chat/use-chat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,KAAK,EAEV,YAAY,EACZ,WAAW,EACX,eAAe,EAIf,cAAc,EACd,aAAa,EACd,MAAM,YAAY,CAAC;AAGpB,KAAK,oBAAoB,GAAG,OAAO,2BAA2B,CAAC;AAE/D,wDAAwD;AACxD,UAAU,MAAM;IACd,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB;AAED,sEAAsE;AACtE,UAAU,WAAW;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,WAAW,EAAE,CAAC;CAC7B;AAED,wBAAgB,eAAe,CAAC,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAEnF;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EACnC,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACxC,MAAM,GAAG,SAAS,CAGpB;AAED,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,WAAW,EAAE,EACvB,SAAS,EAAE,MAAM,EACjB,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACxC,MAAM,CAIR;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,YAAY,EAAE,GACrB,eAAe,EAAE,CAEnB;AAMD,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,WAAW,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,YAAY,EAAE,CAAA;CAAE,GAAG,IAAI,CAQjD;AAED,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,cAAc,CAAC,WAAW,CAAC,GACrC,oBAAoB,CAGtB;AAOD,UAAU,uBAAwB,SAAQ,aAAa;IACrD,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;CAC3C;AAED,wBAAgB,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,aAAa,CAInE;AAED,mFAAmF;AACnF,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,cAAmB,GAC3B,uBAAuB,CAEzB"}
@@ -68,6 +68,8 @@ function useChatState(options) {
68
68
  messagesRef.current = messages;
69
69
  const [input, setInput] = useState("");
70
70
  const [isLoading, setIsLoading] = useState(false);
71
+ const [status, setStatus] = useState("ready");
72
+ const [streamingMessageId, setStreamingMessageId] = useState(null);
71
73
  const [error, setError] = useState(null);
72
74
  const [data, setData] = useState(null);
73
75
  const [model, setModel] = useState(options.model);
@@ -128,7 +130,10 @@ function useChatState(options) {
128
130
  const base = message.baseMessages ?? messagesRef.current;
129
131
  setMessages([...base, userMessage]);
130
132
  setIsLoading(true);
133
+ setStatus("submitted");
134
+ setStreamingMessageId(null);
131
135
  setError(null);
136
+ let didError = false;
132
137
  try {
133
138
  const allMessages = [...base, userMessage];
134
139
  const abortController = new AbortController();
@@ -171,9 +176,18 @@ function useChatState(options) {
171
176
  options.onResponse?.(response);
172
177
  if (!response.body)
173
178
  return;
174
- const streamingMessageId = generateClientId("msg");
179
+ const fallbackStreamingId = generateClientId("msg");
175
180
  let hasAddedStreamingMessage = false;
176
- const currentMessageIdRef = { current: streamingMessageId };
181
+ const currentMessageIdRef = { current: fallbackStreamingId };
182
+ // Promote the turn to `streaming` and publish the id of the message
183
+ // currently receiving tokens. Idempotent — repeated identical values
184
+ // bail out of re-render, so calling per chunk is cheap.
185
+ const markStreaming = () => {
186
+ if (!isLatestRequest(requestIdRef.current, requestId))
187
+ return;
188
+ setStatus("streaming");
189
+ setStreamingMessageId(currentMessageIdRef.current);
190
+ };
177
191
  // Mutable local — updated by onData before onMessage/onUpdate use it.
178
192
  let serverModel = model;
179
193
  setActiveModel((current) => isLatestRequest(requestIdRef.current, requestId) ? undefined : current);
@@ -186,6 +200,13 @@ function useChatState(options) {
186
200
  ...assistantMessage,
187
201
  metadata: { ...assistantMessage.metadata, model: serverModel },
188
202
  };
203
+ // A response delivered as a single complete message (no incremental
204
+ // `onUpdate`) still passes through `streaming` for one commit so
205
+ // consumers see a consistent lifecycle.
206
+ if (!hasAddedStreamingMessage) {
207
+ currentMessageIdRef.current = withMeta.id;
208
+ markStreaming();
209
+ }
189
210
  setMessages((prev) => {
190
211
  if (!isLatestRequest(requestIdRef.current, requestId))
191
212
  return prev;
@@ -224,7 +245,7 @@ function useChatState(options) {
224
245
  onUpdate: (parts, messageId, messageMetadata) => {
225
246
  if (!isLatestRequest(requestIdRef.current, requestId))
226
247
  return;
227
- const id = messageId ?? streamingMessageId;
248
+ const id = messageId ?? fallbackStreamingId;
228
249
  const metadata = { ...messageMetadata, model: serverModel };
229
250
  if (messageId && messageId !== currentMessageIdRef.current) {
230
251
  const oldId = currentMessageIdRef.current;
@@ -235,6 +256,7 @@ function useChatState(options) {
235
256
  ? { ...m, id, parts, metadata: { ...m.metadata, ...metadata } }
236
257
  : m)
237
258
  : prev);
259
+ markStreaming();
238
260
  return;
239
261
  }
240
262
  }
@@ -253,6 +275,7 @@ function useChatState(options) {
253
275
  },
254
276
  ]
255
277
  : prev);
278
+ markStreaming();
256
279
  return;
257
280
  }
258
281
  setMessages((prev) => isLatestRequest(requestIdRef.current, requestId)
@@ -260,6 +283,7 @@ function useChatState(options) {
260
283
  ? { ...m, parts, metadata: { ...m.metadata, ...metadata } }
261
284
  : m)
262
285
  : prev);
286
+ markStreaming();
263
287
  },
264
288
  onToolCall: options.onToolCall
265
289
  ? (arg) => isLatestRequest(requestIdRef.current, requestId)
@@ -274,6 +298,7 @@ function useChatState(options) {
274
298
  if (!isLatestRequest(requestIdRef.current, requestId))
275
299
  return;
276
300
  const nextError = ensureError(error);
301
+ didError = true;
277
302
  setError(nextError);
278
303
  options.onError?.(nextError);
279
304
  }
@@ -281,6 +306,8 @@ function useChatState(options) {
281
306
  // Only the latest request can clear loading/abort state.
282
307
  if (isLatestRequest(requestIdRef.current, requestId)) {
283
308
  setIsLoading(false);
309
+ setStatus(didError ? "error" : "ready");
310
+ setStreamingMessageId(null);
284
311
  abortControllerRef.current = null;
285
312
  }
286
313
  }
@@ -312,6 +339,8 @@ function useChatState(options) {
312
339
  // request id also fences callbacks and state updaters queued by that chunk.
313
340
  invalidateActiveRequest();
314
341
  setIsLoading(false);
342
+ setStatus("ready");
343
+ setStreamingMessageId(null);
315
344
  }, [invalidateActiveRequest]);
316
345
  /**
317
346
  * Reset state that belongs to one conversation while preserving the hook
@@ -327,6 +356,8 @@ function useChatState(options) {
327
356
  setMessages(nextMessages);
328
357
  setInput("");
329
358
  setIsLoading(false);
359
+ setStatus("ready");
360
+ setStreamingMessageId(null);
330
361
  setError(null);
331
362
  setData(null);
332
363
  setModel(options.model);
@@ -447,6 +478,8 @@ function useChatState(options) {
447
478
  messages,
448
479
  input,
449
480
  isLoading,
481
+ status,
482
+ streamingMessageId,
450
483
  error,
451
484
  model,
452
485
  activeModel,
@@ -102,7 +102,7 @@ export declare const getMessagePartSchema: () => import("../../internal-agents/s
102
102
  }>>;
103
103
  export declare const getMessageSchema: () => import("../../internal-agents/schema.js").Schema<import("../../extensions/schema/schema-validator.js").InferShape<{
104
104
  id: import("../../internal-agents/schema.js").Schema<string>;
105
- role: import("../../internal-agents/schema.js").Schema<"tool" | "user" | "assistant" | "system">;
105
+ role: import("../../internal-agents/schema.js").Schema<"user" | "tool" | "assistant" | "system">;
106
106
  parts: import("../../internal-agents/schema.js").Schema<(import("../../extensions/schema/schema-validator.js").InferShape<{
107
107
  type: import("../../internal-agents/schema.js").Schema<string>;
108
108
  toolCallId: import("../../internal-agents/schema.js").Schema<string>;
@@ -167,7 +167,7 @@ export declare const getAgentResponseSchema: () => import("../../internal-agents
167
167
  text: import("../../internal-agents/schema.js").Schema<string>;
168
168
  messages: import("../../internal-agents/schema.js").Schema<import("../../extensions/schema/schema-validator.js").InferShape<{
169
169
  id: import("../../internal-agents/schema.js").Schema<string>;
170
- role: import("../../internal-agents/schema.js").Schema<"tool" | "user" | "assistant" | "system">;
170
+ role: import("../../internal-agents/schema.js").Schema<"user" | "tool" | "assistant" | "system">;
171
171
  parts: import("../../internal-agents/schema.js").Schema<(import("../../extensions/schema/schema-validator.js").InferShape<{
172
172
  type: import("../../internal-agents/schema.js").Schema<string>;
173
173
  toolCallId: import("../../internal-agents/schema.js").Schema<string>;
@@ -255,7 +255,7 @@ export declare const getAgentContextSchema: () => import("../../internal-agents/
255
255
  model: import("../../internal-agents/schema.js").Schema<string | undefined>;
256
256
  input: import("../../internal-agents/schema.js").Schema<string | import("../../extensions/schema/schema-validator.js").InferShape<{
257
257
  id: import("../../internal-agents/schema.js").Schema<string>;
258
- role: import("../../internal-agents/schema.js").Schema<"tool" | "user" | "assistant" | "system">;
258
+ role: import("../../internal-agents/schema.js").Schema<"user" | "tool" | "assistant" | "system">;
259
259
  parts: import("../../internal-agents/schema.js").Schema<(import("../../extensions/schema/schema-validator.js").InferShape<{
260
260
  type: import("../../internal-agents/schema.js").Schema<string>;
261
261
  toolCallId: import("../../internal-agents/schema.js").Schema<string>;
@@ -25,7 +25,7 @@ export declare const getChannelInvokeRequestSchema: () => import("../internal-ag
25
25
  }>>;
26
26
  conversationHistory: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
27
27
  id: import("../internal-agents/schema.js").Schema<string>;
28
- role: import("../internal-agents/schema.js").Schema<"tool" | "user" | "assistant" | "system">;
28
+ role: import("../internal-agents/schema.js").Schema<"user" | "tool" | "assistant" | "system">;
29
29
  parts: import("../internal-agents/schema.js").Schema<({
30
30
  type: string;
31
31
  } & {} & Record<string, unknown>)[]>;
@@ -58,7 +58,7 @@ export declare const ChannelInvokeRequestSchema: import("../internal-agents/sche
58
58
  }>>;
59
59
  conversationHistory: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
60
60
  id: import("../internal-agents/schema.js").Schema<string>;
61
- role: import("../internal-agents/schema.js").Schema<"tool" | "user" | "assistant" | "system">;
61
+ role: import("../internal-agents/schema.js").Schema<"user" | "tool" | "assistant" | "system">;
62
62
  parts: import("../internal-agents/schema.js").Schema<({
63
63
  type: string;
64
64
  } & {} & Record<string, unknown>)[]>;
@@ -1,10 +1,11 @@
1
- import type { VeryfrontConfig } from "./schemas/index.js";
1
+ import type { VeryfrontConfig, VeryfrontConfigInput } from "./schemas/index.js";
2
2
  import { type EnvironmentConfig } from "./environment-config.js";
3
3
  /** Define a Veryfront project configuration object. */
4
- export declare function defineConfig(config: VeryfrontConfig): VeryfrontConfig;
4
+ export declare function defineConfig<const T extends VeryfrontConfigInput>(config: T): T;
5
5
  /** Define a Veryfront project configuration from the current environment name. */
6
- export declare function defineConfigWithEnv(factory: (env: string) => VeryfrontConfig, envConfig?: EnvironmentConfig): VeryfrontConfig;
6
+ export declare function defineConfigWithEnv<const T extends VeryfrontConfigInput>(factory: (env: string) => T, envConfig?: EnvironmentConfig): T;
7
7
  /** Merge multiple partial Veryfront configuration objects into one config object. */
8
8
  export declare function mergeConfigs(...configs: Partial<VeryfrontConfig>[]): VeryfrontConfig;
9
+ export declare function mergeConfigs(...configs: Partial<VeryfrontConfigInput>[]): VeryfrontConfigInput;
9
10
  export declare function validateConfig(config: unknown): Promise<void>;
10
11
  //# sourceMappingURL=define-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"define-config.d.ts","sourceRoot":"","sources":["../../../src/src/config/define-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,EAAE,KAAK,iBAAiB,EAAwB,MAAM,yBAAyB,CAAC;AAEvF,uDAAuD;AACvD,wBAAgB,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,CAErE;AAED,kFAAkF;AAClF,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,eAAe,EACzC,SAAS,GAAE,iBAA0C,GACpD,eAAe,CAEjB;AAED,qFAAqF;AACrF,wBAAgB,YAAY,CAAC,GAAG,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,EAAE,GAAG,eAAe,CAEpF;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAWnE"}
1
+ {"version":3,"file":"define-config.d.ts","sourceRoot":"","sources":["../../../src/src/config/define-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAEhF,OAAO,EAAE,KAAK,iBAAiB,EAAwB,MAAM,yBAAyB,CAAC;AAEvF,uDAAuD;AACvD,wBAAgB,YAAY,CAAC,KAAK,CAAC,CAAC,SAAS,oBAAoB,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAE/E;AAED,kFAAkF;AAClF,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,CAAC,SAAS,oBAAoB,EACtE,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,EAC3B,SAAS,GAAE,iBAA0C,GACpD,CAAC,CAEH;AAED,qFAAqF;AACrF,wBAAgB,YAAY,CAAC,GAAG,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,EAAE,GAAG,eAAe,CAAC;AACtF,wBAAgB,YAAY,CAAC,GAAG,OAAO,EAAE,OAAO,CAAC,oBAAoB,CAAC,EAAE,GAAG,oBAAoB,CAAC;AAOhG,wBAAsB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAWnE"}
@@ -8,7 +8,6 @@ export function defineConfig(config) {
8
8
  export function defineConfigWithEnv(factory, envConfig = getEnvironmentConfig()) {
9
9
  return factory(envConfig.nodeEnv);
10
10
  }
11
- /** Merge multiple partial Veryfront configuration objects into one config object. */
12
11
  export function mergeConfigs(...configs) {
13
12
  return Object.assign({}, ...configs);
14
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/src/config/loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAiCnE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAsJ1D,sGAAsG;AACtG,wBAAgB,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAuFlF;AAqFD;;;;;;;;GAQG;AACH,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMxE;AAED,gBAAgB;AAChB,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAUjB;AA4FD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,SAAS,CACvB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,eAAe,CAAC,CAmF1B;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAI9E"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/src/config/loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAiCnE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AA0J1D,sGAAsG;AACtG,wBAAgB,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAuFlF;AAqFD;;;;;;;;GAQG;AACH,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMxE;AAED,gBAAgB;AAChB,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAUjB;AA4FD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,SAAS,CACvB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,eAAe,CAAC,CAmF1B;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAI9E"}
@@ -157,15 +157,19 @@ function validateCorsConfig(userConfig) {
157
157
  });
158
158
  }
159
159
  function validateConfigShape(userConfig) {
160
- validateVeryfrontConfig(userConfig);
160
+ const normalizedConfig = validateVeryfrontConfig(userConfig);
161
161
  if (!userConfig || typeof userConfig !== "object")
162
- return;
162
+ return normalizedConfig;
163
163
  const unknown = findUnknownTopLevelKeys(userConfig);
164
164
  if (unknown.length > 0) {
165
165
  throw CONFIG_VALIDATION_FAILED.create({
166
166
  detail: `Unknown config keys: ${unknown.join(", ")}. Check for typos in veryfront.config.`,
167
167
  });
168
168
  }
169
+ return {
170
+ ...userConfig,
171
+ integrations: normalizedConfig.integrations,
172
+ };
169
173
  }
170
174
  /** @internal Exported for tests: merges user config over fresh defaults (deep for nested objects). */
171
175
  export function mergeConfigs(userConfig) {
@@ -259,8 +263,8 @@ function validateAndCacheConfig(userConfig, cacheKey) {
259
263
  });
260
264
  }
261
265
  validateCorsConfig(userConfig);
262
- validateConfigShape(userConfig);
263
- const merged = mergeConfigs(userConfig);
266
+ const normalizedConfig = validateConfigShape(userConfig);
267
+ const merged = mergeConfigs(normalizedConfig);
264
268
  if (merged.react?.version) {
265
269
  logger.debug("React version from config", { version: merged.react.version });
266
270
  }
@@ -1,4 +1,5 @@
1
1
  import type { InferInput, InferSchema } from "../../extensions/schema/index.js";
2
+ import type { IntegrationRuntimeConfigInput } from "../../integrations/types.js";
2
3
  export declare const getVeryfrontConfigSchema: () => import("../../internal-agents/schema.js").Schema<Partial<import("../../extensions/schema/schema-validator.js").InferShape<{
3
4
  projectSlug: import("../../internal-agents/schema.js").Schema<string | undefined>;
4
5
  title: import("../../internal-agents/schema.js").Schema<string | undefined>;
@@ -369,9 +370,9 @@ export declare const getVeryfrontConfigSchema: () => import("../../internal-agen
369
370
  }>> | undefined>;
370
371
  /** Third-party integration configuration (e.g., Slack, GitHub) */
371
372
  integrations: import("../../internal-agents/schema.js").Schema<Record<string, Partial<import("../../extensions/schema/schema-validator.js").InferShape<{
372
- /** Token scope: "project" (shared) or "endUser" (per-end-user OAuth). */
373
- scope: import("../../internal-agents/schema.js").Schema<string | undefined>;
374
- /** @deprecated Use `scope: "endUser"` instead. */
373
+ /** Token scope. Legacy "endUser" input is normalized to "user". */
374
+ scope: import("../../internal-agents/schema.js").Schema<"user" | "project" | undefined>;
375
+ /** @deprecated Use `scope: "user"` instead. */
375
376
  perUser: import("../../internal-agents/schema.js").Schema<boolean | undefined>;
376
377
  /** Allowlist of tool IDs to expose. When set, only these tools are registered.
377
378
  * This keeps the MCP context narrow by excluding unused tools.
@@ -791,9 +792,9 @@ export declare const veryfrontConfigSchema: import("../../internal-agents/schema
791
792
  }>> | undefined>;
792
793
  /** Third-party integration configuration (e.g., Slack, GitHub) */
793
794
  integrations: import("../../internal-agents/schema.js").Schema<Record<string, Partial<import("../../extensions/schema/schema-validator.js").InferShape<{
794
- /** Token scope: "project" (shared) or "endUser" (per-end-user OAuth). */
795
- scope: import("../../internal-agents/schema.js").Schema<string | undefined>;
796
- /** @deprecated Use `scope: "endUser"` instead. */
795
+ /** Token scope. Legacy "endUser" input is normalized to "user". */
796
+ scope: import("../../internal-agents/schema.js").Schema<"user" | "project" | undefined>;
797
+ /** @deprecated Use `scope: "user"` instead. */
797
798
  perUser: import("../../internal-agents/schema.js").Schema<boolean | undefined>;
798
799
  /** Allowlist of tool IDs to expose. When set, only these tools are registered.
799
800
  * This keeps the MCP context narrow by excluding unused tools.
@@ -844,7 +845,15 @@ export declare const veryfrontConfigSchema: import("../../internal-agents/schema
844
845
  }>> | undefined>;
845
846
  }>>>;
846
847
  export type VeryfrontConfig = InferSchema<ReturnType<typeof getVeryfrontConfigSchema>>;
847
- export type VeryfrontConfigInput = InferInput<ReturnType<typeof getVeryfrontConfigSchema>>;
848
+ type InferredVeryfrontConfigInput = InferInput<ReturnType<typeof getVeryfrontConfigSchema>>;
849
+ /**
850
+ * User-authored configuration accepted before schema transforms run.
851
+ * `endUser` remains a deprecated integration scope input and normalizes to `user`.
852
+ */
853
+ export type VeryfrontConfigInput = Omit<InferredVeryfrontConfigInput, "integrations"> & {
854
+ integrations?: Record<string, IntegrationRuntimeConfigInput | undefined>;
855
+ };
848
856
  export declare function validateVeryfrontConfig(input: unknown): VeryfrontConfig;
849
857
  export declare function findUnknownTopLevelKeys(input: Record<string, unknown>): string[];
858
+ export {};
850
859
  //# sourceMappingURL=config.schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.schema.d.ts","sourceRoot":"","sources":["../../../../src/src/config/schemas/config.schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.schema.d.ts","sourceRoot":"","sources":["../../../../src/src/config/schemas/config.schema.ts"],"names":[],"mappings":"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"}
@@ -581,9 +581,12 @@ export const getVeryfrontConfigSchema = defineSchema((v) => v
581
581
  integrations: v
582
582
  .record(v.string(), v
583
583
  .object({
584
- /** Token scope: "project" (shared) or "endUser" (per-end-user OAuth). */
585
- scope: v.enum(["project", "endUser"]).optional(),
586
- /** @deprecated Use `scope: "endUser"` instead. */
584
+ /** Token scope. Legacy "endUser" input is normalized to "user". */
585
+ scope: v
586
+ .enum(["user", "project", "endUser"])
587
+ .transform((scope) => scope === "project" ? "project" : "user")
588
+ .optional(),
589
+ /** @deprecated Use `scope: "user"` instead. */
587
590
  perUser: v.boolean().optional(),
588
591
  /** Allowlist of tool IDs to expose. When set, only these tools are registered.
589
592
  * This keeps the MCP context narrow by excluding unused tools.
@@ -28,7 +28,7 @@ export interface DurableRunCanaryStartRunInput extends DurableRunCanaryCreateRoo
28
28
  /** Zod schema for get durable run canary message. */
29
29
  export declare const getDurableRunCanaryMessageSchema: () => import("../../../internal-agents/schema.js").Schema<{
30
30
  id: string;
31
- role: "tool" | "user" | "assistant" | "system";
31
+ role: "user" | "tool" | "assistant" | "system";
32
32
  parts: ({
33
33
  type: string;
34
34
  } & {} & Record<string, unknown>)[];
@@ -30,5 +30,5 @@ export declare function getConnectorNames(): readonly string[];
30
30
  /** Return icon. */
31
31
  export declare function getIcon(name: IntegrationName | string): string | undefined;
32
32
  export { executeRemoteIntegrationTool, getRemoteIntegrationToolDefinitions, isRemoteIntegrationTool, syncIntegrationConfig, } from "./remote-tools.js";
33
- export type { IntegrationConnector, IntegrationRuntimeConfig, IntegrationScope, IntegrationTool, } from "./types.js";
33
+ export type { IntegrationConnector, IntegrationRuntimeConfig, IntegrationRuntimeConfigInput, IntegrationScope, IntegrationScopeInput, IntegrationTool, LegacyIntegrationScope, } from "./types.js";
34
34
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/integrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,yBAAyB,CAAC;AAEjC,YAAY,EACV,YAAY,EACZ,iBAAiB,EACjB,oCAAoC,EACpC,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,UAAU,GACX,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,0CAA0C,EAC1C,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAIrB,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAItE,wBAAwB;AACxB,wBAAgB,YAAY,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAG1F;AAED,uBAAuB;AACvB,wBAAgB,cAAc,IAAI,SAAS,iBAAiB,EAAE,CAE7D;AAED,8BAA8B;AAC9B,wBAAgB,iBAAiB,IAAI,SAAS,MAAM,EAAE,CAErD;AAED,mBAAmB;AACnB,wBAAgB,OAAO,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAG1E;AAGD,OAAO,EACL,4BAA4B,EAC5B,mCAAmC,EACnC,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,oBAAoB,EACpB,wBAAwB,EACxB,gBAAgB,EAChB,eAAe,GAChB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/integrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,yBAAyB,CAAC;AAEjC,YAAY,EACV,YAAY,EACZ,iBAAiB,EACjB,oCAAoC,EACpC,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,UAAU,GACX,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,0CAA0C,EAC1C,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAIrB,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAItE,wBAAwB;AACxB,wBAAgB,YAAY,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAG1F;AAED,uBAAuB;AACvB,wBAAgB,cAAc,IAAI,SAAS,iBAAiB,EAAE,CAE7D;AAED,8BAA8B;AAC9B,wBAAgB,iBAAiB,IAAI,SAAS,MAAM,EAAE,CAErD;AAED,mBAAmB;AACnB,wBAAgB,OAAO,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAG1E;AAGD,OAAO,EACL,4BAA4B,EAC5B,mCAAmC,EACnC,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,oBAAoB,EACpB,wBAAwB,EACxB,6BAA6B,EAC7B,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,sBAAsB,GACvB,MAAM,YAAY,CAAC"}
@@ -1,8 +1,13 @@
1
1
  import type { ToolDefinition } from "../tool/index.js";
2
+ import type { IntegrationScope } from "./types.js";
2
3
  type RemoteIntegrationToolExecutionContext = {
3
4
  runId?: string;
4
5
  agentId?: string;
5
6
  };
7
+ type IntegrationConfigSyncInput = {
8
+ scope: IntegrationScope;
9
+ tools?: string[];
10
+ };
6
11
  /**
7
12
  * Fetch integration tool definitions for the current request context.
8
13
  * Returns ToolDefinition[] that the agent runtime merges into the model's
@@ -25,11 +30,8 @@ export declare function executeRemoteIntegrationTool(toolName: string, args: Rec
25
30
  /**
26
31
  * Sync integration config from veryfront.config.ts to the API.
27
32
  * This is a full-replace operation. Called by the MCP server path
28
- * which has access to the config.
33
+ * which has access to the validated, canonical config.
29
34
  */
30
- export declare function syncIntegrationConfig(apiBaseUrl: string, apiToken: string, integrations: Record<string, {
31
- scope?: string;
32
- tools?: string[];
33
- }>): Promise<void>;
35
+ export declare function syncIntegrationConfig(apiBaseUrl: string, apiToken: string, integrations: Record<string, IntegrationConfigSyncInput>): Promise<void>;
34
36
  export {};
35
37
  //# sourceMappingURL=remote-tools.d.ts.map