@datalayer/agent-runtimes 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/lib/Agent.js +2 -2
- package/lib/AgentLexical.d.ts +1 -12
- package/lib/AgentLexical.js +3 -14
- package/lib/AgentNotebook.js +3 -3
- package/lib/App.js +2 -2
- package/lib/{components/chat/components → agents}/AgentDetails.d.ts +13 -2
- package/lib/{components/chat/components → agents}/AgentDetails.js +6 -12
- package/lib/api/agents.d.ts +47 -0
- package/lib/api/agents.js +106 -0
- package/lib/api/context.d.ts +17 -0
- package/lib/api/context.js +45 -0
- package/lib/api/evals.d.ts +27 -0
- package/lib/api/evals.js +63 -0
- package/lib/api/events.d.ts +17 -0
- package/lib/api/events.js +93 -0
- package/lib/{components/chat → api}/handler.js +1 -1
- package/lib/api/index.d.ts +15 -0
- package/lib/api/index.js +20 -0
- package/lib/api/notifications.d.ts +39 -0
- package/lib/api/notifications.js +103 -0
- package/lib/api/output.d.ts +28 -0
- package/lib/api/output.js +64 -0
- package/lib/api/tool-approvals.d.ts +62 -0
- package/lib/api/tool-approvals.js +145 -0
- package/lib/{components/chat/components → chat}/Chat.d.ts +25 -16
- package/lib/{components/chat/components → chat}/Chat.js +16 -16
- package/lib/{components/chat/components → chat}/ChatFloating.d.ts +17 -9
- package/lib/{components/chat/components → chat}/ChatFloating.js +17 -9
- package/lib/{components/chat/components → chat}/ChatInline.d.ts +2 -2
- package/lib/{components/chat/components → chat}/ChatInline.js +8 -6
- package/lib/{components/chat/components → chat}/ChatPopupStandalone.d.ts +3 -4
- package/lib/{components/chat/components → chat}/ChatPopupStandalone.js +6 -6
- package/lib/{components/chat/components → chat}/ChatSidebar.d.ts +14 -5
- package/lib/{components/chat/components → chat}/ChatSidebar.js +48 -26
- package/lib/{components/chat/components → chat}/ChatStandalone.d.ts +3 -4
- package/lib/{components/chat/components → chat}/ChatStandalone.js +5 -5
- package/lib/chat/base/ChatBase.d.ts +6 -0
- package/lib/chat/base/ChatBase.js +1287 -0
- package/lib/chat/display/EmptyState.d.ts +27 -0
- package/lib/chat/display/EmptyState.js +41 -0
- package/lib/{components/chat/components/elements → chat/display}/FloatingBrandButton.d.ts +1 -1
- package/lib/{components/chat/components/elements → chat/display}/FloatingBrandButton.js +1 -1
- package/lib/{components/chat/components/elements → chat/display}/PoweredByTag.d.ts +1 -1
- package/lib/{components/chat/components/elements → chat/header}/ChatHeader.d.ts +1 -4
- package/lib/{components/chat/components/elements → chat/header}/ChatHeader.js +1 -1
- package/lib/chat/header/ChatHeaderBase.d.ts +38 -0
- package/lib/chat/header/ChatHeaderBase.js +83 -0
- package/lib/chat/index.d.ts +66 -0
- package/lib/chat/index.js +74 -0
- package/lib/chat/indicators/McpStatusIndicator.d.ts +9 -0
- package/lib/chat/indicators/McpStatusIndicator.js +128 -0
- package/lib/chat/indicators/SandboxStatusIndicator.d.ts +10 -0
- package/lib/chat/indicators/SandboxStatusIndicator.js +175 -0
- package/lib/chat/indicators/index.d.ts +17 -0
- package/lib/chat/indicators/index.js +19 -0
- package/lib/chat/messages/ChatMessageList.d.ts +49 -0
- package/lib/chat/messages/ChatMessageList.js +319 -0
- package/lib/{components/chat/components/elements → chat/messages}/ChatMessages.d.ts +2 -2
- package/lib/{components/chat/components/elements → chat/messages}/ChatMessages.js +6 -4
- package/lib/{components/chat/components → chat}/parts/DynamicToolPart.d.ts +1 -1
- package/lib/{components/chat/components/elements → chat/parts}/MessagePart.d.ts +1 -1
- package/lib/{components/chat/components/elements → chat/parts}/MessagePart.js +4 -4
- package/lib/{components/chat/components → chat}/parts/ReasoningPart.js +1 -1
- package/lib/{components/chat/components → chat}/parts/TextPart.d.ts +1 -1
- package/lib/{components/chat/components → chat}/parts/ToolPart.js +1 -1
- package/lib/{components/chat/components → chat}/parts/index.d.ts +2 -1
- package/lib/{components/chat/components → chat}/parts/index.js +2 -1
- package/lib/chat/prompt/InputFooter.d.ts +43 -0
- package/lib/chat/prompt/InputFooter.js +135 -0
- package/lib/chat/prompt/InputPrompt.d.ts +60 -0
- package/lib/chat/prompt/InputPrompt.js +83 -0
- package/lib/chat/prompt/InputPromptFooter.d.ts +25 -0
- package/lib/chat/prompt/InputPromptFooter.js +15 -0
- package/lib/chat/prompt/InputPromptHeader.d.ts +15 -0
- package/lib/chat/prompt/InputPromptHeader.js +15 -0
- package/lib/chat/prompt/InputPromptLexical.d.ts +16 -0
- package/lib/chat/prompt/InputPromptLexical.js +122 -0
- package/lib/chat/prompt/InputPromptText.d.ts +24 -0
- package/lib/chat/prompt/InputPromptText.js +66 -0
- package/lib/chat/prompt/index.d.ts +11 -0
- package/lib/chat/prompt/index.js +15 -0
- package/lib/{components/chat/components → chat}/styles/streamdownStyles.d.ts +1 -1
- package/lib/chat/tools/ToolApprovalBanner.d.ts +31 -0
- package/lib/chat/tools/ToolApprovalBanner.js +62 -0
- package/lib/{components/chat/components/elements → chat/tools}/ToolApprovalDialog.js +1 -1
- package/lib/{components/chat/components/display → chat/tools}/ToolCallDisplay.d.ts +13 -4
- package/lib/{components/chat/components/display → chat/tools}/ToolCallDisplay.js +18 -8
- package/lib/chat/tools/index.d.ts +8 -0
- package/lib/{components/chat/components/display → chat/tools}/index.js +3 -1
- package/lib/chat/usage/TokenUsageBar.d.ts +8 -0
- package/lib/chat/usage/TokenUsageBar.js +213 -0
- package/lib/client/AgentsMixin.d.ts +169 -0
- package/lib/client/AgentsMixin.js +279 -0
- package/lib/client/index.d.ts +6 -0
- package/lib/client/index.js +10 -0
- package/lib/components/NotificationEventCard.d.ts +8 -0
- package/lib/components/NotificationEventCard.js +152 -0
- package/lib/components/OutputCard.d.ts +8 -0
- package/lib/components/OutputCard.js +80 -0
- package/lib/components/ToolApprovalCard.d.ts +33 -0
- package/lib/components/ToolApprovalCard.js +60 -0
- package/lib/components/index.d.ts +3 -7
- package/lib/components/index.js +3 -4
- package/lib/{components → config}/AgentConfiguration.d.ts +43 -21
- package/lib/{components → config}/AgentConfiguration.js +48 -28
- package/lib/config/index.d.ts +2 -0
- package/lib/config/index.js +1 -0
- package/lib/{components/chat/components → context}/ContextInspector.js +38 -8
- package/lib/{components/chat/components → context}/ContextPanel.js +27 -6
- package/lib/context/CostTracker.d.ts +37 -0
- package/lib/context/CostTracker.js +124 -0
- package/lib/context/TokenUsageChart.d.ts +10 -0
- package/lib/context/TokenUsageChart.js +288 -0
- package/lib/examples/A2UiComponentGalleryExample.d.ts +20 -0
- package/lib/examples/A2UiComponentGalleryExample.js +568 -0
- package/lib/examples/A2UiContactCardExample.d.ts +21 -0
- package/lib/examples/A2UiContactCardExample.js +432 -0
- package/lib/examples/A2UiRestaurantExample.d.ts +11 -3
- package/lib/examples/A2UiRestaurantExample.js +63 -98
- package/lib/examples/A2UiViewerExample.d.ts +21 -0
- package/lib/examples/A2UiViewerExample.js +563 -0
- package/lib/examples/AgUiAgenticExample.js +3 -3
- package/lib/examples/AgUiBackendToolRenderingExample.js +3 -3
- package/lib/examples/{AgUiHaikuGenUIExample.d.ts → AgUiHaikuGenUiExample.d.ts} +4 -4
- package/lib/examples/{AgUiHaikuGenUIExample.js → AgUiHaikuGenUiExample.js} +7 -7
- package/lib/examples/AgUiHumanInTheLoopExample.js +3 -3
- package/lib/examples/AgUiSharedStateExample.js +3 -3
- package/lib/examples/{AgUiToolsBasedGenUIExample.d.ts → AgUiToolsBasedGenUiExample.d.ts} +4 -4
- package/lib/examples/{AgUiToolsBasedGenUIExample.js → AgUiToolsBasedGenUiExample.js} +7 -7
- package/lib/examples/AgentCheckpointsExample.d.ts +19 -0
- package/lib/examples/AgentCheckpointsExample.js +506 -0
- package/lib/examples/AgentCodemodeExample.d.ts +14 -0
- package/lib/examples/AgentCodemodeExample.js +262 -0
- package/lib/examples/AgentEvalsExample.d.ts +14 -0
- package/lib/examples/AgentEvalsExample.js +216 -0
- package/lib/examples/AgentGuardrailsExample.d.ts +14 -0
- package/lib/examples/AgentGuardrailsExample.js +218 -0
- package/lib/examples/AgentMemoryExample.d.ts +14 -0
- package/lib/examples/AgentMemoryExample.js +234 -0
- package/lib/examples/AgentMonitoringExample.d.ts +13 -0
- package/lib/examples/AgentMonitoringExample.js +311 -0
- package/lib/examples/AgentNotificationsExample.d.ts +14 -0
- package/lib/examples/AgentNotificationsExample.js +273 -0
- package/lib/examples/AgentOtelExample.d.ts +25 -0
- package/lib/examples/AgentOtelExample.js +281 -0
- package/lib/examples/AgentOutputsExample.d.ts +14 -0
- package/lib/examples/AgentOutputsExample.js +211 -0
- package/lib/examples/AgentSandboxExample.d.ts +17 -0
- package/lib/examples/AgentSandboxExample.js +496 -0
- package/lib/examples/AgentSkillsExample.d.ts +3 -0
- package/lib/examples/AgentSkillsExample.js +290 -0
- package/lib/examples/AgentToolApprovalsExample.d.ts +3 -0
- package/lib/examples/AgentToolApprovalsExample.js +672 -0
- package/lib/examples/AgentTriggersExample.d.ts +14 -0
- package/lib/examples/AgentTriggersExample.js +523 -0
- package/lib/examples/{AgentRuntimeFormExample.d.ts → AgentspecExample.d.ts} +3 -4
- package/lib/examples/{AgentRuntimeFormExample.js → AgentspecExample.js} +92 -34
- package/lib/examples/{JupyterCellExample.js → CellSimpleExample.js} +1 -1
- package/lib/examples/{AgentRuntimeCustomExample.js → ChatCustomExample.js} +3 -3
- package/lib/examples/{AgentRuntimeChatExample.js → ChatExample.js} +4 -4
- package/lib/examples/{AgentRuntimeStandaloneExample.js → ChatStandaloneExample.js} +2 -2
- package/lib/examples/CopilotKitLexicalExample.d.ts +3 -14
- package/lib/examples/CopilotKitLexicalExample.js +4 -15
- package/lib/examples/CopilotKitNotebookExample.js +4 -6
- package/lib/examples/DatalayerNotebookExample.js +2 -2
- package/lib/examples/{AgentRuntimeLexical2Example.d.ts → Lexical2Example.d.ts} +2 -13
- package/lib/examples/{AgentRuntimeLexical2Example.js → Lexical2Example.js} +8 -17
- package/lib/examples/{AgentRuntimeLexicalExample.d.ts → LexicalExample.d.ts} +1 -12
- package/lib/examples/{AgentRuntimeLexicalExample.js → LexicalExample.js} +28 -27
- package/lib/examples/{AgentRuntimeLexicalSidebarExample.d.ts → LexicalSidebarExample.d.ts} +2 -13
- package/lib/examples/{AgentRuntimeLexicalSidebarExample.js → LexicalSidebarExample.js} +6 -18
- package/lib/examples/{AgentRuntimeNotebookExample.js → NotebookExample.js} +14 -10
- package/lib/examples/{AgentRuntimeNotebookSidebarExample.js → NotebookSidebarExample.js} +5 -8
- package/lib/examples/{JupyterNotebookExample.js → NotebookSimpleExample.js} +2 -2
- package/lib/examples/ag-ui/weather/InlineWeatherCard.js +1 -1
- package/lib/examples/components/ExampleWrapper.d.ts +12 -0
- package/lib/examples/components/ExampleWrapper.js +16 -0
- package/lib/examples/components/Header.d.ts +2 -2
- package/lib/examples/components/HeaderControls.js +1 -1
- package/lib/examples/components/LexicalEditor.d.ts +1 -12
- package/lib/examples/components/LexicalEditor.js +1 -12
- package/lib/examples/components/MainContent.d.ts +4 -11
- package/lib/examples/components/MainContent.js +6 -60
- package/lib/examples/components/index.d.ts +1 -0
- package/lib/examples/components/index.js +1 -0
- package/lib/examples/example-selector.d.ts +1 -1
- package/lib/examples/example-selector.js +35 -22
- package/lib/examples/index.d.ts +26 -13
- package/lib/examples/index.js +26 -12
- package/lib/examples/main.d.ts +6 -0
- package/lib/examples/main.js +20 -43
- package/lib/examples/utils/examplesStore.d.ts +4 -0
- package/lib/examples/{stores → utils}/examplesStore.js +1 -1
- package/lib/examples/utils/notebooks/Empty.ipynb.json +33 -0
- package/lib/examples/utils/notebooks/NotebookExample2.ipynb.json +48 -0
- package/lib/examples/utils/themeStore.d.ts +8 -0
- package/lib/examples/utils/themeStore.js +14 -0
- package/lib/extensions/A2UIExtension.d.ts +65 -0
- package/lib/extensions/A2UIExtension.js +202 -0
- package/lib/{components/chat/extensions → extensions}/ExtensionRegistry.d.ts +2 -3
- package/lib/{components/chat/extensions → extensions}/ExtensionRegistry.js +0 -2
- package/lib/{components/chat/extensions → extensions}/MCPUIExtension.d.ts +2 -2
- package/lib/{components/chat/extensions → extensions}/MCPUIExtension.js +1 -1
- package/lib/extensions/index.d.ts +9 -0
- package/lib/{components/chat/extensions → extensions}/index.js +2 -2
- package/lib/hooks/index.d.ts +37 -12
- package/lib/hooks/index.js +37 -12
- package/lib/hooks/useAIAgentsWebSocket.d.ts +29 -0
- package/lib/hooks/useAIAgentsWebSocket.js +136 -0
- package/lib/hooks/{useAGUI.d.ts → useAgUi.d.ts} +2 -2
- package/lib/hooks/{useAGUI.js → useAgUi.js} +2 -2
- package/lib/hooks/useAgents.d.ts +150 -11
- package/lib/hooks/useAgents.js +623 -61
- package/lib/hooks/useAgentsCatalog.d.ts +25 -0
- package/lib/hooks/useAgentsCatalog.js +28 -0
- package/lib/hooks/useAgentsRegistry.d.ts +10 -0
- package/lib/hooks/useAgentsRegistry.js +20 -0
- package/lib/hooks/useAgentsService.d.ts +22 -0
- package/lib/hooks/useAgentsService.js +146 -0
- package/lib/hooks/useChat.d.ts +2 -2
- package/lib/hooks/useChat.js +14 -8
- package/lib/hooks/useCheckpoints.d.ts +176 -0
- package/lib/hooks/useCheckpoints.js +466 -0
- package/lib/hooks/useConfig.d.ts +11 -0
- package/lib/hooks/useConfig.js +46 -0
- package/lib/hooks/useContextSnapshot.d.ts +11 -0
- package/lib/hooks/useContextSnapshot.js +44 -0
- package/lib/hooks/useMonitoring.d.ts +24 -0
- package/lib/hooks/useMonitoring.js +111 -0
- package/lib/hooks/useNotifications.d.ts +67 -0
- package/lib/hooks/useNotifications.js +208 -0
- package/lib/hooks/useSandbox.d.ts +12 -0
- package/lib/hooks/useSandbox.js +49 -0
- package/lib/hooks/useSkills.d.ts +13 -0
- package/lib/hooks/useSkills.js +46 -0
- package/lib/hooks/useToolApprovals.d.ts +45 -0
- package/lib/hooks/useToolApprovals.js +126 -0
- package/lib/hooks/useTools.d.ts +4 -4
- package/lib/hooks/useTools.js +2 -2
- package/lib/hooks/{useVercelChat.d.ts → useVercelAI.d.ts} +3 -3
- package/lib/hooks/{useVercelChat.js → useVercelAI.js} +2 -2
- package/lib/{components/chat/components → identity}/AgentIdentity.d.ts +1 -1
- package/lib/{components/chat/components → identity}/AgentIdentity.js +4 -3
- package/lib/identity/index.d.ts +1 -0
- package/lib/identity/index.js +2 -0
- package/lib/index.d.ts +4 -3
- package/lib/index.js +3 -2
- package/lib/{components/chat/inference → inference}/BaseInferenceProvider.d.ts +3 -3
- package/lib/{components/chat/inference → inference}/DatalayerInferenceProvider.d.ts +3 -3
- package/lib/{components/chat/inference → inference}/DatalayerInferenceProvider.js +1 -1
- package/lib/{components/chat/inference → inference}/SelfHostedInferenceProvider.d.ts +2 -2
- package/lib/{components/chat/inference → inference}/SelfHostedInferenceProvider.js +1 -1
- package/lib/{components/chat/inference → inference}/index.d.ts +1 -1
- package/lib/{components/chat/inference → inference}/index.js +1 -1
- package/lib/lexical/ChatInlinePlugin.d.ts +1 -1
- package/lib/lexical/ChatInlinePlugin.js +1 -1
- package/lib/{components → mcp}/McpServerManager.d.ts +2 -3
- package/lib/{components → mcp}/McpServerManager.js +1 -1
- package/lib/mcp/index.d.ts +1 -0
- package/lib/{specs/agents/codeai → mcp}/index.js +1 -1
- package/lib/{components/chat/middleware → middleware}/MiddlewarePipeline.d.ts +3 -3
- package/lib/{components/chat/middleware → middleware}/index.d.ts +1 -1
- package/lib/{components/chat/middleware → middleware}/index.js +1 -1
- package/lib/{components/chat/protocols → protocols}/A2AAdapter.d.ts +6 -6
- package/lib/{components/chat/protocols → protocols}/A2AAdapter.js +3 -3
- package/lib/{components/chat/protocols → protocols}/ACPAdapter.d.ts +6 -6
- package/lib/{components/chat/protocols → protocols}/ACPAdapter.js +4 -4
- package/lib/{components/chat/protocols → protocols}/AGUIAdapter.d.ts +14 -6
- package/lib/{components/chat/protocols → protocols}/AGUIAdapter.js +72 -10
- package/lib/{components/chat/protocols → protocols}/BaseProtocolAdapter.d.ts +6 -6
- package/lib/{components/chat/protocols → protocols}/BaseProtocolAdapter.js +1 -1
- package/lib/{components/chat/protocols → protocols}/VercelAIAdapter.d.ts +31 -7
- package/lib/protocols/VercelAIAdapter.js +682 -0
- package/lib/{components/chat/protocols → protocols}/index.d.ts +1 -2
- package/lib/{components/chat/protocols → protocols}/index.js +1 -1
- package/lib/specs/agents/agents.d.ts +54 -0
- package/lib/specs/agents/agents.js +2638 -0
- package/lib/specs/agents/index.js +14 -7
- package/lib/specs/envvars.d.ts +11 -19
- package/lib/specs/envvars.js +42 -21
- package/lib/specs/evals.d.ts +20 -0
- package/lib/specs/evals.js +133 -0
- package/lib/specs/events.d.ts +18 -0
- package/lib/specs/events.js +182 -0
- package/lib/specs/frontendTools.d.ts +14 -0
- package/lib/specs/frontendTools.js +53 -0
- package/lib/specs/guardrails.d.ts +22 -0
- package/lib/specs/guardrails.js +391 -0
- package/lib/specs/index.d.ts +15 -2
- package/lib/specs/index.js +15 -2
- package/lib/specs/mcpServers.d.ts +13 -10
- package/lib/specs/mcpServers.js +95 -25
- package/lib/specs/memory.d.ts +34 -0
- package/lib/specs/memory.js +99 -0
- package/lib/specs/models.d.ts +22 -35
- package/lib/specs/models.js +64 -44
- package/lib/specs/notifications.d.ts +17 -0
- package/lib/specs/notifications.js +187 -0
- package/lib/specs/outputs.d.ts +19 -0
- package/lib/specs/outputs.js +112 -0
- package/lib/specs/skills.d.ts +7 -16
- package/lib/specs/skills.js +89 -12
- package/lib/specs/teams/index.d.ts +17 -0
- package/lib/specs/teams/index.js +37 -0
- package/lib/specs/teams/teams.d.ts +27 -0
- package/lib/specs/teams/teams.js +1120 -0
- package/lib/specs/tools.d.ts +15 -0
- package/lib/specs/tools.js +83 -0
- package/lib/specs/triggers.d.ts +15 -0
- package/lib/specs/triggers.js +117 -0
- package/lib/stores/agentsStore.d.ts +123 -0
- package/lib/stores/agentsStore.js +270 -0
- package/lib/{components/chat/store → stores}/chatStore.d.ts +3 -2
- package/lib/{components/chat/store → stores}/chatStore.js +2 -2
- package/lib/{components/chat/store → stores}/conversationStore.d.ts +2 -2
- package/lib/{components/chat/store → stores}/conversationStore.js +3 -3
- package/lib/{components/chat/store → stores}/index.d.ts +3 -2
- package/lib/{components/chat/store → stores}/index.js +3 -2
- package/lib/{components/chat/tools → tools}/ToolExecutor.d.ts +2 -2
- package/lib/{components/chat/tools → tools}/ToolExecutor.js +1 -1
- package/lib/tools/adapters/agent-runtimes/AgentRuntimesToolAdapter.d.ts +1 -1
- package/lib/tools/adapters/agent-runtimes/lexicalHooks.d.ts +14 -10
- package/lib/tools/adapters/agent-runtimes/lexicalHooks.js +31 -21
- package/lib/tools/adapters/agent-runtimes/notebookHooks.d.ts +1 -1
- package/lib/tools/index.d.ts +3 -0
- package/lib/tools/index.js +3 -7
- package/lib/types/a2a.d.ts +39 -0
- package/lib/types/acp.d.ts +21 -0
- package/lib/types/ag-ui.d.ts +25 -0
- package/lib/types/agents-lifecycle.d.ts +36 -0
- package/lib/types/agents.d.ts +80 -0
- package/lib/types/agents.js +22 -0
- package/lib/types/agentspecs.d.ts +90 -0
- package/lib/{components/chat/components/base/ChatBase.d.ts → types/chat.d.ts} +60 -100
- package/lib/types/checkpoints.d.ts +32 -0
- package/lib/types/checkpoints.js +5 -0
- package/lib/types/config.d.ts +67 -0
- package/lib/{runtime/types.js → types/config.js} +2 -2
- package/lib/types/connection.d.ts +31 -0
- package/lib/types/connection.js +5 -0
- package/lib/types/context.d.ts +67 -0
- package/lib/types/context.js +5 -0
- package/lib/types/cost.d.ts +42 -0
- package/lib/types/cost.js +5 -0
- package/lib/types/envvars.d.ts +21 -0
- package/lib/types/envvars.js +5 -0
- package/lib/types/evals.d.ts +66 -0
- package/lib/types/evals.js +5 -0
- package/lib/types/events.d.ts +49 -0
- package/lib/types/events.js +5 -0
- package/lib/types/eventspecs.d.ts +39 -0
- package/lib/types/eventspecs.js +5 -0
- package/lib/types/examples.d.ts +31 -0
- package/lib/types/examples.js +5 -0
- package/lib/{components/chat/types → types}/execution.d.ts +10 -1
- package/lib/{components/chat/types/extension.d.ts → types/extensions.d.ts} +3 -3
- package/lib/types/guardrails.d.ts +106 -0
- package/lib/types/guardrails.js +5 -0
- package/lib/types/index.d.ts +36 -2
- package/lib/types/index.js +35 -2
- package/lib/{components/chat/types → types}/inference.d.ts +3 -3
- package/lib/types/inference.js +5 -0
- package/lib/types/mcp.d.ts +117 -0
- package/lib/types/mcp.js +27 -0
- package/lib/types/memory.d.ts +23 -0
- package/lib/types/memory.js +5 -0
- package/lib/{components/chat/types/message.d.ts → types/messages.d.ts} +20 -1
- package/lib/{components/chat/types → types}/middleware.d.ts +3 -3
- package/lib/types/models.d.ts +63 -0
- package/lib/types/models.js +5 -0
- package/lib/types/notifications.d.ts +85 -0
- package/lib/types/notifications.js +5 -0
- package/lib/types/outputs.d.ts +51 -0
- package/lib/types/outputs.js +5 -0
- package/lib/{components/chat/types → types}/protocol.d.ts +37 -99
- package/lib/types/protocol.js +5 -0
- package/lib/types/sandbox.d.ts +27 -0
- package/lib/types/sandbox.js +24 -0
- package/lib/types/skills.d.ts +74 -0
- package/lib/types/skills.js +5 -0
- package/lib/types/teams.d.ts +133 -0
- package/lib/types/teams.js +5 -0
- package/lib/types/tool-approvals.d.ts +39 -0
- package/lib/types/tool-approvals.js +5 -0
- package/lib/{components/chat/types/tool.d.ts → types/tools.d.ts} +59 -4
- package/lib/types/triggers.d.ts +48 -0
- package/lib/types/triggers.js +5 -0
- package/lib/types/usage.d.ts +36 -0
- package/lib/types/usage.js +5 -0
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/index.js +5 -0
- package/lib/utils/utils.d.ts +60 -0
- package/lib/utils/utils.js +205 -0
- package/package.json +13 -14
- package/scripts/codegen/__pycache__/generate_agents.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/generate_envvars.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/generate_evals.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/generate_guardrails.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/generate_mcp_servers.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/generate_memory.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/generate_models.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/generate_notifications.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/generate_outputs.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/generate_skills.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/generate_teams.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/generate_tools.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/generate_triggers.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/versioning.cpython-313.pyc +0 -0
- package/scripts/codegen/generate_agents.py +464 -58
- package/scripts/codegen/generate_envvars.py +36 -35
- package/scripts/codegen/generate_evals.py +279 -0
- package/scripts/codegen/generate_events.py +312 -0
- package/scripts/codegen/generate_frontend_tools.py +266 -0
- package/scripts/codegen/generate_guardrails.py +475 -0
- package/scripts/codegen/generate_mcp_servers.py +36 -9
- package/scripts/codegen/generate_memory.py +468 -0
- package/scripts/codegen/generate_models.py +22 -46
- package/scripts/codegen/generate_notifications.py +309 -0
- package/scripts/codegen/generate_outputs.py +267 -0
- package/scripts/codegen/generate_skills.py +108 -51
- package/scripts/codegen/generate_teams.py +922 -0
- package/scripts/codegen/generate_tools.py +326 -0
- package/scripts/codegen/generate_triggers.py +295 -0
- package/scripts/codegen/versioning.py +53 -0
- package/lib/components/chat/components/base/ChatBase.js +0 -2240
- package/lib/components/chat/components/base/InputPrompt.d.ts +0 -42
- package/lib/components/chat/components/base/InputPrompt.js +0 -131
- package/lib/components/chat/components/display/index.d.ts +0 -6
- package/lib/components/chat/components/index.d.ts +0 -26
- package/lib/components/chat/components/index.js +0 -39
- package/lib/components/chat/extensions/A2UIExtension.d.ts +0 -87
- package/lib/components/chat/extensions/A2UIExtension.js +0 -312
- package/lib/components/chat/extensions/index.d.ts +0 -10
- package/lib/components/chat/index.d.ts +0 -61
- package/lib/components/chat/index.js +0 -76
- package/lib/components/chat/protocols/VercelAIAdapter.js +0 -315
- package/lib/components/chat/tools/index.d.ts +0 -8
- package/lib/components/chat/tools/index.js +0 -11
- package/lib/components/chat/types/index.d.ts +0 -12
- package/lib/components/chat/types/index.js +0 -17
- package/lib/components/sparklines/Sparklines.d.ts +0 -16
- package/lib/components/sparklines/Sparklines.js +0 -65
- package/lib/components/sparklines/SparklinesLine.d.ts +0 -8
- package/lib/components/sparklines/SparklinesLine.js +0 -37
- package/lib/components/sparklines/dataProcessing.d.ts +0 -25
- package/lib/components/sparklines/dataProcessing.js +0 -35
- package/lib/components/sparklines/index.d.ts +0 -4
- package/lib/components/sparklines/index.js +0 -7
- package/lib/components/sparklines/types.d.ts +0 -36
- package/lib/examples/stores/examplesStore.d.ts +0 -5
- package/lib/examples/stores/notebooks/Empty.ipynb.json +0 -33
- package/lib/examples/stores/notebooks/NotebookExample2.ipynb.json +0 -48
- package/lib/examples/stores/themeStore.d.ts +0 -33
- package/lib/examples/stores/themeStore.js +0 -38
- package/lib/hooks/useKeyboardShortcuts.d.ts +0 -47
- package/lib/hooks/useKeyboardShortcuts.js +0 -153
- package/lib/hooks/useMobile.d.ts +0 -1
- package/lib/hooks/useMobile.js +0 -19
- package/lib/hooks/useNotebookAIAgent.d.ts +0 -8
- package/lib/hooks/useNotebookAIAgent.js +0 -73
- package/lib/renderers/a2ui/components/A2UIRenderer.d.ts +0 -7
- package/lib/renderers/a2ui/components/A2UIRenderer.js +0 -102
- package/lib/renderers/a2ui/components/SurfaceRenderer.d.ts +0 -7
- package/lib/renderers/a2ui/components/SurfaceRenderer.js +0 -101
- package/lib/renderers/a2ui/components/content/AudioPlayer.d.ts +0 -9
- package/lib/renderers/a2ui/components/content/AudioPlayer.js +0 -38
- package/lib/renderers/a2ui/components/content/Divider.d.ts +0 -9
- package/lib/renderers/a2ui/components/content/Divider.js +0 -35
- package/lib/renderers/a2ui/components/content/Icon.d.ts +0 -9
- package/lib/renderers/a2ui/components/content/Icon.js +0 -110
- package/lib/renderers/a2ui/components/content/Image.d.ts +0 -9
- package/lib/renderers/a2ui/components/content/Image.js +0 -61
- package/lib/renderers/a2ui/components/content/Text.d.ts +0 -9
- package/lib/renderers/a2ui/components/content/Text.js +0 -64
- package/lib/renderers/a2ui/components/content/Video.d.ts +0 -9
- package/lib/renderers/a2ui/components/content/Video.js +0 -37
- package/lib/renderers/a2ui/components/content/index.d.ts +0 -6
- package/lib/renderers/a2ui/components/content/index.js +0 -25
- package/lib/renderers/a2ui/components/index.d.ts +0 -5
- package/lib/renderers/a2ui/components/index.js +0 -24
- package/lib/renderers/a2ui/components/interactive/Button.d.ts +0 -11
- package/lib/renderers/a2ui/components/interactive/Button.js +0 -71
- package/lib/renderers/a2ui/components/interactive/CheckBox.d.ts +0 -9
- package/lib/renderers/a2ui/components/interactive/CheckBox.js +0 -48
- package/lib/renderers/a2ui/components/interactive/DateTimeInput.d.ts +0 -9
- package/lib/renderers/a2ui/components/interactive/DateTimeInput.js +0 -62
- package/lib/renderers/a2ui/components/interactive/MultipleChoice.d.ts +0 -9
- package/lib/renderers/a2ui/components/interactive/MultipleChoice.js +0 -73
- package/lib/renderers/a2ui/components/interactive/Slider.d.ts +0 -9
- package/lib/renderers/a2ui/components/interactive/Slider.js +0 -53
- package/lib/renderers/a2ui/components/interactive/TextField.d.ts +0 -9
- package/lib/renderers/a2ui/components/interactive/TextField.js +0 -72
- package/lib/renderers/a2ui/components/interactive/index.d.ts +0 -6
- package/lib/renderers/a2ui/components/interactive/index.js +0 -25
- package/lib/renderers/a2ui/components/layout/Card.d.ts +0 -11
- package/lib/renderers/a2ui/components/layout/Card.js +0 -30
- package/lib/renderers/a2ui/components/layout/Column.d.ts +0 -11
- package/lib/renderers/a2ui/components/layout/Column.js +0 -65
- package/lib/renderers/a2ui/components/layout/List.d.ts +0 -11
- package/lib/renderers/a2ui/components/layout/List.js +0 -55
- package/lib/renderers/a2ui/components/layout/Modal.d.ts +0 -11
- package/lib/renderers/a2ui/components/layout/Modal.js +0 -58
- package/lib/renderers/a2ui/components/layout/Row.d.ts +0 -11
- package/lib/renderers/a2ui/components/layout/Row.js +0 -65
- package/lib/renderers/a2ui/components/layout/Tabs.d.ts +0 -11
- package/lib/renderers/a2ui/components/layout/Tabs.js +0 -48
- package/lib/renderers/a2ui/components/layout/index.d.ts +0 -6
- package/lib/renderers/a2ui/components/layout/index.js +0 -25
- package/lib/renderers/a2ui/context/A2UIContext.d.ts +0 -17
- package/lib/renderers/a2ui/context/A2UIContext.js +0 -54
- package/lib/renderers/a2ui/context/ThemeContext.d.ts +0 -20
- package/lib/renderers/a2ui/context/ThemeContext.js +0 -333
- package/lib/renderers/a2ui/hooks/useA2UI.d.ts +0 -36
- package/lib/renderers/a2ui/hooks/useA2UI.js +0 -62
- package/lib/renderers/a2ui/hooks/useDataBinding.d.ts +0 -8
- package/lib/renderers/a2ui/hooks/useDataBinding.js +0 -83
- package/lib/renderers/a2ui/index.d.ts +0 -9
- package/lib/renderers/a2ui/index.js +0 -28
- package/lib/renderers/a2ui/lib/utils.d.ts +0 -11
- package/lib/renderers/a2ui/lib/utils.js +0 -38
- package/lib/renderers/a2ui/types/index.d.ts +0 -17
- package/lib/runtime/index.d.ts +0 -38
- package/lib/runtime/index.js +0 -40
- package/lib/runtime/runtimeStore.d.ts +0 -76
- package/lib/runtime/runtimeStore.js +0 -184
- package/lib/runtime/types.d.ts +0 -84
- package/lib/runtime/useAgentConnection.d.ts +0 -45
- package/lib/runtime/useAgentConnection.js +0 -112
- package/lib/runtime/useAgentRuntime.d.ts +0 -93
- package/lib/runtime/useAgentRuntime.js +0 -125
- package/lib/specs/agents/codeai/agents.d.ts +0 -28
- package/lib/specs/agents/codeai/agents.js +0 -151
- package/lib/specs/agents/codeai/index.d.ts +0 -1
- package/lib/specs/agents/codemode-paper/agents.d.ts +0 -31
- package/lib/specs/agents/codemode-paper/agents.js +0 -308
- package/lib/specs/agents/codemode-paper/index.d.ts +0 -1
- package/lib/specs/agents/codemode-paper/index.js +0 -5
- package/lib/specs/agents/datalayer-ai/agents.d.ts +0 -31
- package/lib/specs/agents/datalayer-ai/agents.js +0 -282
- package/lib/specs/agents/datalayer-ai/index.d.ts +0 -1
- package/lib/specs/agents/datalayer-ai/index.js +0 -5
- package/lib/state/index.d.ts +0 -1
- package/lib/state/index.js +0 -5
- package/lib/state/substates/AIAgentState.d.ts +0 -80
- package/lib/state/substates/AIAgentState.js +0 -108
- package/lib/state/substates/index.d.ts +0 -1
- package/lib/state/substates/index.js +0 -5
- package/lib/types/AIAgent.d.ts +0 -17
- package/lib/types/Types.d.ts +0 -189
- /package/lib/{components/chat → api}/handler.d.ts +0 -0
- /package/lib/{renderers/index.d.ts → api/utils.d.ts} +0 -0
- /package/lib/{renderers/index.js → api/utils.js} +0 -0
- /package/lib/{components/chat/components/elements → chat/display}/PoweredByTag.js +0 -0
- /package/lib/{components/chat/components → chat}/parts/DynamicToolPart.js +0 -0
- /package/lib/{components/chat/components → chat}/parts/ReasoningPart.d.ts +0 -0
- /package/lib/{components/chat/components → chat}/parts/TextPart.js +0 -0
- /package/lib/{components/chat/components → chat}/parts/ToolPart.d.ts +0 -0
- /package/lib/{components/chat/components → chat}/styles/streamdownStyles.js +0 -0
- /package/lib/{components/chat/components/elements → chat/tools}/ToolApprovalDialog.d.ts +0 -0
- /package/lib/{components/chat/components → context}/ContextDistribution.d.ts +0 -0
- /package/lib/{components/chat/components → context}/ContextDistribution.js +0 -0
- /package/lib/{components/chat/components → context}/ContextInspector.d.ts +0 -0
- /package/lib/{components/chat/components → context}/ContextPanel.d.ts +0 -0
- /package/lib/{components/chat/components → context}/ContextUsage.d.ts +0 -0
- /package/lib/{components/chat/components → context}/ContextUsage.js +0 -0
- /package/lib/examples/{JupyterCellExample.d.ts → CellSimpleExample.d.ts} +0 -0
- /package/lib/examples/{AgentRuntimeCustomExample.d.ts → ChatCustomExample.d.ts} +0 -0
- /package/lib/examples/{AgentRuntimeChatExample.d.ts → ChatExample.d.ts} +0 -0
- /package/lib/examples/{AgentRuntimeStandaloneExample.d.ts → ChatStandaloneExample.d.ts} +0 -0
- /package/lib/examples/{AgentRuntimeNotebookExample.d.ts → NotebookExample.d.ts} +0 -0
- /package/lib/examples/{AgentRuntimeNotebookSidebarExample.d.ts → NotebookSidebarExample.d.ts} +0 -0
- /package/lib/examples/{JupyterNotebookExample.d.ts → NotebookSimpleExample.d.ts} +0 -0
- /package/lib/examples/{stores → utils}/agents/earthquake-detector.ipynb.json +0 -0
- /package/lib/examples/{stores → utils}/agents/earthquake-detector.json +0 -0
- /package/lib/examples/{stores → utils}/agents/earthquake-detector.lexical.json +0 -0
- /package/lib/examples/{stores → utils}/agents/sales-forecaster.ipynb.json +0 -0
- /package/lib/examples/{stores → utils}/agents/sales-forecaster.json +0 -0
- /package/lib/examples/{stores → utils}/agents/sales-forecaster.lexical.json +0 -0
- /package/lib/examples/{stores → utils}/agents/social-post-generator.ipynb.json +0 -0
- /package/lib/examples/{stores → utils}/agents/social-post-generator.json +0 -0
- /package/lib/examples/{stores → utils}/agents/social-post-generator.lexical.json +0 -0
- /package/lib/examples/{stores → utils}/agents/stock-market.ipynb.json +0 -0
- /package/lib/examples/{stores → utils}/agents/stock-market.json +0 -0
- /package/lib/examples/{stores → utils}/agents/stock-market.lexical.json +0 -0
- /package/lib/examples/{stores → utils}/notebooks/IPyWidgetsExample.ipynb.json +0 -0
- /package/lib/examples/{stores → utils}/notebooks/IPyWidgetsExampleWithState.ipynb.json +0 -0
- /package/lib/examples/{stores → utils}/notebooks/Lite.ipynb.json +0 -0
- /package/lib/examples/{stores → utils}/notebooks/Matplotlib.ipynb.json +0 -0
- /package/lib/examples/{stores → utils}/notebooks/NotebookExample1.ipynb.json +0 -0
- /package/lib/examples/{stores → utils}/notebooks/NotebookOutputs.ipynb.json +0 -0
- /package/lib/examples/{stores → utils}/notebooks/NotebookToCExample.ipynb.json +0 -0
- /package/lib/examples/{stores → utils}/notebooks/OutputIPyWidgetsExample.d.ts +0 -0
- /package/lib/examples/{stores → utils}/notebooks/OutputIPyWidgetsExample.js +0 -0
- /package/lib/examples/{stores → utils}/notebooks/PyGWalker.ipynb.json +0 -0
- /package/lib/examples/{stores → utils}/themedProvider.d.ts +0 -0
- /package/lib/examples/{stores → utils}/themedProvider.js +0 -0
- /package/lib/{components/chat/inference → inference}/BaseInferenceProvider.js +0 -0
- /package/lib/{components/chat/middleware → middleware}/MiddlewarePipeline.js +0 -0
- /package/lib/{components/chat/types/inference.js → types/a2a.js} +0 -0
- /package/lib/{components/chat/types/protocol.js → types/acp.js} +0 -0
- /package/lib/{components/sparklines/types.js → types/ag-ui.js} +0 -0
- /package/lib/{renderers/a2ui/types/index.js → types/agents-lifecycle.js} +0 -0
- /package/lib/types/{AIAgent.js → agentspecs.js} +0 -0
- /package/lib/types/{Types.js → chat.js} +0 -0
- /package/lib/{components/chat/types → types}/execution.js +0 -0
- /package/lib/{components/chat/types/extension.js → types/extensions.js} +0 -0
- /package/lib/{components/chat/types/message.js → types/messages.js} +0 -0
- /package/lib/{components/chat/types → types}/middleware.js +0 -0
- /package/lib/{components/chat/types/tool.js → types/tools.js} +0 -0
|
@@ -0,0 +1,468 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
# Distributed under the terms of the Modified BSD License.
|
|
4
|
+
|
|
5
|
+
"""
|
|
6
|
+
Generate Python and TypeScript code from YAML memory specifications.
|
|
7
|
+
|
|
8
|
+
Usage:
|
|
9
|
+
python generate_memory.py \\
|
|
10
|
+
--specs-dir agentspecs/agentspecs/memory \\
|
|
11
|
+
--python-output agent_runtimes/specs/memory.py \\
|
|
12
|
+
--typescript-output src/specs/memory.ts
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
import argparse
|
|
16
|
+
import sys
|
|
17
|
+
from pathlib import Path
|
|
18
|
+
from typing import Any
|
|
19
|
+
|
|
20
|
+
import yaml
|
|
21
|
+
from versioning import ensure_spec_version, version_suffix
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def _make_const_name(memory_id: str) -> str:
|
|
25
|
+
"""Convert a memory ID to a Python/TS constant name (e.g., 'mem0' -> 'MEM0_MEMORY')."""
|
|
26
|
+
return f"{memory_id.upper().replace('-', '_')}_MEMORY"
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def _make_enum_name(memory_id: str) -> str:
|
|
30
|
+
"""Convert a memory ID to an enum member name (e.g., 'mem0' -> 'MEM0')."""
|
|
31
|
+
return memory_id.upper().replace("-", "_")
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def _fmt_list(items: list[str]) -> str:
|
|
35
|
+
"""Format a list of strings with double quotes for ruff compliance."""
|
|
36
|
+
if not items:
|
|
37
|
+
return "[]"
|
|
38
|
+
return "[" + ", ".join(f'"{item}"' for item in items) + "]"
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def load_memory_specs(specs_dir: Path) -> list[dict[str, Any]]:
|
|
42
|
+
"""Load all memory YAML specifications from a directory."""
|
|
43
|
+
specs = []
|
|
44
|
+
for yaml_file in sorted(specs_dir.glob("*.yaml")):
|
|
45
|
+
with open(yaml_file) as f:
|
|
46
|
+
spec = yaml.safe_load(f)
|
|
47
|
+
ensure_spec_version(spec)
|
|
48
|
+
specs.append(spec)
|
|
49
|
+
return specs
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def generate_python_code(specs: list[dict[str, Any]]) -> str:
|
|
53
|
+
"""Generate Python code from memory specifications."""
|
|
54
|
+
lines = [
|
|
55
|
+
"# Copyright (c) 2025-2026 Datalayer, Inc.",
|
|
56
|
+
"# Distributed under the terms of the Modified BSD License.",
|
|
57
|
+
'"""',
|
|
58
|
+
"Memory Catalog.",
|
|
59
|
+
"",
|
|
60
|
+
"Predefined memory backend configurations that can be used by agents.",
|
|
61
|
+
"",
|
|
62
|
+
"This file is AUTO-GENERATED from YAML specifications.",
|
|
63
|
+
"DO NOT EDIT MANUALLY - run 'make specs' to regenerate.",
|
|
64
|
+
'"""',
|
|
65
|
+
"",
|
|
66
|
+
"from enum import Enum",
|
|
67
|
+
"from typing import Optional",
|
|
68
|
+
"",
|
|
69
|
+
"from agent_runtimes.types import MemorySpec",
|
|
70
|
+
"",
|
|
71
|
+
"",
|
|
72
|
+
"# " + "=" * 76,
|
|
73
|
+
"# Memories Enum",
|
|
74
|
+
"# " + "=" * 76,
|
|
75
|
+
"",
|
|
76
|
+
"",
|
|
77
|
+
"class Memories(str, Enum):",
|
|
78
|
+
' """Enumeration of available memory backends."""',
|
|
79
|
+
"",
|
|
80
|
+
]
|
|
81
|
+
|
|
82
|
+
for spec in specs:
|
|
83
|
+
enum_name = _make_enum_name(spec["id"])
|
|
84
|
+
lines.append(f' {enum_name} = "{spec["id"]}"')
|
|
85
|
+
|
|
86
|
+
lines.extend(
|
|
87
|
+
[
|
|
88
|
+
"",
|
|
89
|
+
"",
|
|
90
|
+
"# " + "=" * 76,
|
|
91
|
+
"# Memory Definitions",
|
|
92
|
+
"# " + "=" * 76,
|
|
93
|
+
"",
|
|
94
|
+
]
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
# Generate memory constants
|
|
98
|
+
for spec in specs:
|
|
99
|
+
version = spec["version"]
|
|
100
|
+
const_name = _make_const_name(spec["id"]) + version_suffix(version)
|
|
101
|
+
|
|
102
|
+
# Clean description
|
|
103
|
+
description = (
|
|
104
|
+
spec.get("description", "").replace("\n", " ").replace(" ", " ").strip()
|
|
105
|
+
)
|
|
106
|
+
# Escape double quotes
|
|
107
|
+
description = description.replace('"', '\\"')
|
|
108
|
+
|
|
109
|
+
icon = f'"{spec.get("icon", "database")}"'
|
|
110
|
+
emoji = f'"{spec.get("emoji", "🧠")}"'
|
|
111
|
+
|
|
112
|
+
lines.extend(
|
|
113
|
+
[
|
|
114
|
+
f"{const_name} = MemorySpec(",
|
|
115
|
+
f' id="{spec["id"]}",',
|
|
116
|
+
f' version="{version}",',
|
|
117
|
+
f' name="{spec["name"]}",',
|
|
118
|
+
f' description="{description}",',
|
|
119
|
+
f' persistence="{spec.get("persistence", "none")}",',
|
|
120
|
+
f' scope="{spec.get("scope", "agent")}",',
|
|
121
|
+
f' backend="{spec.get("backend", "in-memory")}",',
|
|
122
|
+
f" icon={icon},",
|
|
123
|
+
f" emoji={emoji},",
|
|
124
|
+
")",
|
|
125
|
+
"",
|
|
126
|
+
]
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
# Generate catalog
|
|
130
|
+
lines.extend(
|
|
131
|
+
[
|
|
132
|
+
"",
|
|
133
|
+
"# " + "=" * 76,
|
|
134
|
+
"# Memory Catalog",
|
|
135
|
+
"# " + "=" * 76,
|
|
136
|
+
"",
|
|
137
|
+
"MEMORY_CATALOGUE: dict[str, MemorySpec] = {",
|
|
138
|
+
]
|
|
139
|
+
)
|
|
140
|
+
|
|
141
|
+
for spec in specs:
|
|
142
|
+
memory_id = spec["id"]
|
|
143
|
+
version = spec["version"]
|
|
144
|
+
const_name = _make_const_name(memory_id) + version_suffix(version)
|
|
145
|
+
lines.append(f' "{memory_id}": {const_name},')
|
|
146
|
+
|
|
147
|
+
lines.extend(
|
|
148
|
+
[
|
|
149
|
+
"}",
|
|
150
|
+
"",
|
|
151
|
+
]
|
|
152
|
+
)
|
|
153
|
+
|
|
154
|
+
# Default memory
|
|
155
|
+
lines.extend(
|
|
156
|
+
[
|
|
157
|
+
"",
|
|
158
|
+
'DEFAULT_MEMORY: str = "ephemeral"',
|
|
159
|
+
"",
|
|
160
|
+
"",
|
|
161
|
+
"def get_memory(memory_id: str) -> Optional[MemorySpec]:",
|
|
162
|
+
' """',
|
|
163
|
+
" Get a memory specification by ID (accepts both bare and versioned refs).",
|
|
164
|
+
"",
|
|
165
|
+
" Args:",
|
|
166
|
+
" memory_id: The unique identifier of the memory backend.",
|
|
167
|
+
"",
|
|
168
|
+
" Returns:",
|
|
169
|
+
" The MemorySpec, or None if not found.",
|
|
170
|
+
' """',
|
|
171
|
+
" mem = MEMORY_CATALOGUE.get(memory_id)",
|
|
172
|
+
" if mem is not None:",
|
|
173
|
+
" return mem",
|
|
174
|
+
" base, _, ver = memory_id.rpartition(':')",
|
|
175
|
+
" if base and '.' in ver:",
|
|
176
|
+
" return MEMORY_CATALOGUE.get(base)",
|
|
177
|
+
" return None",
|
|
178
|
+
"",
|
|
179
|
+
"",
|
|
180
|
+
"def get_default_memory() -> Optional[MemorySpec]:",
|
|
181
|
+
' """',
|
|
182
|
+
" Get the default memory backend.",
|
|
183
|
+
"",
|
|
184
|
+
" Returns:",
|
|
185
|
+
" The default MemorySpec, or None if no default is set.",
|
|
186
|
+
' """',
|
|
187
|
+
" return MEMORY_CATALOGUE.get(DEFAULT_MEMORY)",
|
|
188
|
+
"",
|
|
189
|
+
"",
|
|
190
|
+
"def list_memories() -> list[MemorySpec]:",
|
|
191
|
+
' """',
|
|
192
|
+
" List all available memory backends.",
|
|
193
|
+
"",
|
|
194
|
+
" Returns:",
|
|
195
|
+
" List of all MemorySpec specifications.",
|
|
196
|
+
' """',
|
|
197
|
+
" return list(MEMORY_CATALOGUE.values())",
|
|
198
|
+
"",
|
|
199
|
+
]
|
|
200
|
+
)
|
|
201
|
+
|
|
202
|
+
return "\n".join(lines)
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
def generate_typescript_code(specs: list[dict[str, Any]]) -> str:
|
|
206
|
+
"""Generate TypeScript code from memory specifications."""
|
|
207
|
+
lines = [
|
|
208
|
+
"/*",
|
|
209
|
+
" * Copyright (c) 2025-2026 Datalayer, Inc.",
|
|
210
|
+
" * Distributed under the terms of the Modified BSD License.",
|
|
211
|
+
" */",
|
|
212
|
+
"",
|
|
213
|
+
"/**",
|
|
214
|
+
" * Memory Catalog",
|
|
215
|
+
" *",
|
|
216
|
+
" * Predefined memory backend configurations.",
|
|
217
|
+
" *",
|
|
218
|
+
" * This file is AUTO-GENERATED from YAML specifications.",
|
|
219
|
+
" * DO NOT EDIT MANUALLY - run 'make specs' to regenerate.",
|
|
220
|
+
" */",
|
|
221
|
+
"",
|
|
222
|
+
"import type { MemorySpec } from '../types';",
|
|
223
|
+
"",
|
|
224
|
+
"// " + "=" * 76,
|
|
225
|
+
"// Memories Enum",
|
|
226
|
+
"// " + "=" * 76,
|
|
227
|
+
"",
|
|
228
|
+
"export const Memories = {",
|
|
229
|
+
]
|
|
230
|
+
|
|
231
|
+
# Generate enum-like const object
|
|
232
|
+
for spec in specs:
|
|
233
|
+
enum_name = _make_enum_name(spec["id"])
|
|
234
|
+
lines.append(f" {enum_name}: '{spec['id']}',")
|
|
235
|
+
|
|
236
|
+
lines.extend(
|
|
237
|
+
[
|
|
238
|
+
"} as const;",
|
|
239
|
+
"",
|
|
240
|
+
"export type MemoryId = (typeof Memories)[keyof typeof Memories];",
|
|
241
|
+
"",
|
|
242
|
+
"// " + "=" * 76,
|
|
243
|
+
"// Memory Definitions",
|
|
244
|
+
"// " + "=" * 76,
|
|
245
|
+
"",
|
|
246
|
+
]
|
|
247
|
+
)
|
|
248
|
+
|
|
249
|
+
# Generate memory constants
|
|
250
|
+
for spec in specs:
|
|
251
|
+
version = spec["version"]
|
|
252
|
+
const_name = _make_const_name(spec["id"]) + version_suffix(version)
|
|
253
|
+
|
|
254
|
+
# Clean description
|
|
255
|
+
description = (
|
|
256
|
+
spec.get("description", "").replace("\n", " ").replace(" ", " ").strip()
|
|
257
|
+
)
|
|
258
|
+
# Escape single quotes
|
|
259
|
+
description = description.replace("'", "\\'")
|
|
260
|
+
|
|
261
|
+
lines.extend(
|
|
262
|
+
[
|
|
263
|
+
f"export const {const_name}: MemorySpec = {{",
|
|
264
|
+
f" id: '{spec['id']}',",
|
|
265
|
+
f" version: '{version}',",
|
|
266
|
+
f" name: '{spec['name']}',",
|
|
267
|
+
f" description: '{description}',",
|
|
268
|
+
f" persistence: '{spec.get('persistence', 'none')}',",
|
|
269
|
+
f" scope: '{spec.get('scope', 'agent')}',",
|
|
270
|
+
f" backend: '{spec.get('backend', 'in-memory')}',",
|
|
271
|
+
f" icon: '{spec.get('icon', 'database')}',",
|
|
272
|
+
f" emoji: '{spec.get('emoji', '🧠')}',",
|
|
273
|
+
"};",
|
|
274
|
+
"",
|
|
275
|
+
]
|
|
276
|
+
)
|
|
277
|
+
|
|
278
|
+
# Generate catalog
|
|
279
|
+
lines.extend(
|
|
280
|
+
[
|
|
281
|
+
"// " + "=" * 76,
|
|
282
|
+
"// Memory Catalog",
|
|
283
|
+
"// " + "=" * 76,
|
|
284
|
+
"",
|
|
285
|
+
"export const MEMORY_CATALOGUE: Record<string, MemorySpec> = {",
|
|
286
|
+
]
|
|
287
|
+
)
|
|
288
|
+
|
|
289
|
+
for spec in specs:
|
|
290
|
+
memory_id = spec["id"]
|
|
291
|
+
version = spec["version"]
|
|
292
|
+
const_name = _make_const_name(memory_id) + version_suffix(version)
|
|
293
|
+
lines.append(f" '{memory_id}': {const_name},")
|
|
294
|
+
|
|
295
|
+
lines.extend(
|
|
296
|
+
[
|
|
297
|
+
"};",
|
|
298
|
+
"",
|
|
299
|
+
"export const DEFAULT_MEMORY: MemoryId = Memories.EPHEMERAL;",
|
|
300
|
+
"",
|
|
301
|
+
"function resolveMemoryId(memoryId: string): string {",
|
|
302
|
+
" if (memoryId in MEMORY_CATALOGUE) return memoryId;",
|
|
303
|
+
" const idx = memoryId.lastIndexOf(':');",
|
|
304
|
+
" if (idx > 0) {",
|
|
305
|
+
" const base = memoryId.slice(0, idx);",
|
|
306
|
+
" if (base in MEMORY_CATALOGUE) return base;",
|
|
307
|
+
" }",
|
|
308
|
+
" return memoryId;",
|
|
309
|
+
"}",
|
|
310
|
+
"",
|
|
311
|
+
"/**",
|
|
312
|
+
" * Get a memory specification by ID.",
|
|
313
|
+
" */",
|
|
314
|
+
"export function getMemory(memoryId: string): MemorySpec | undefined {",
|
|
315
|
+
" return MEMORY_CATALOGUE[resolveMemoryId(memoryId)];",
|
|
316
|
+
"}",
|
|
317
|
+
"",
|
|
318
|
+
"/**",
|
|
319
|
+
" * Get the default memory backend.",
|
|
320
|
+
" */",
|
|
321
|
+
"export function getDefaultMemory(): MemorySpec | undefined {",
|
|
322
|
+
" return MEMORY_CATALOGUE[DEFAULT_MEMORY];",
|
|
323
|
+
"}",
|
|
324
|
+
"",
|
|
325
|
+
"/**",
|
|
326
|
+
" * List all available memory backends.",
|
|
327
|
+
" */",
|
|
328
|
+
"export function listMemories(): MemorySpec[] {",
|
|
329
|
+
" return Object.values(MEMORY_CATALOGUE);",
|
|
330
|
+
"}",
|
|
331
|
+
"",
|
|
332
|
+
]
|
|
333
|
+
)
|
|
334
|
+
|
|
335
|
+
return "\n".join(lines)
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
def update_init_file(specs: list[dict[str, Any]], init_file: Path) -> None:
|
|
339
|
+
"""Update the __init__.py file with correct imports based on generated specs."""
|
|
340
|
+
memory_constants = []
|
|
341
|
+
for spec in specs:
|
|
342
|
+
const_name = _make_const_name(spec["id"])
|
|
343
|
+
memory_constants.append(const_name)
|
|
344
|
+
|
|
345
|
+
init_content = init_file.read_text()
|
|
346
|
+
|
|
347
|
+
# Find the memory import section
|
|
348
|
+
import_start = init_content.find("from .memory import (")
|
|
349
|
+
if import_start == -1:
|
|
350
|
+
# Section doesn't exist yet — append it
|
|
351
|
+
all_names = sorted(
|
|
352
|
+
memory_constants
|
|
353
|
+
+ [
|
|
354
|
+
"MemorySpec",
|
|
355
|
+
"Memories",
|
|
356
|
+
"MEMORY_CATALOGUE",
|
|
357
|
+
"DEFAULT_MEMORY",
|
|
358
|
+
"get_default_memory",
|
|
359
|
+
"get_memory",
|
|
360
|
+
"list_memories",
|
|
361
|
+
],
|
|
362
|
+
key=str.casefold,
|
|
363
|
+
)
|
|
364
|
+
new_imports = ["\nfrom .memory import ("]
|
|
365
|
+
for name in all_names:
|
|
366
|
+
new_imports.append(f" {name},")
|
|
367
|
+
new_imports.append(")")
|
|
368
|
+
init_content = init_content.rstrip() + "\n" + "\n".join(new_imports) + "\n"
|
|
369
|
+
init_file.write_text(init_content)
|
|
370
|
+
print(f"✓ Added memory imports to {init_file}")
|
|
371
|
+
return
|
|
372
|
+
|
|
373
|
+
# Find the end of the import statement
|
|
374
|
+
import_end = init_content.find(")", import_start)
|
|
375
|
+
if import_end == -1:
|
|
376
|
+
print(f"Warning: Could not find end of memory import in {init_file}")
|
|
377
|
+
return
|
|
378
|
+
|
|
379
|
+
# Generate new import lines
|
|
380
|
+
all_names = sorted(
|
|
381
|
+
memory_constants
|
|
382
|
+
+ [
|
|
383
|
+
"MemorySpec",
|
|
384
|
+
"Memories",
|
|
385
|
+
"MEMORY_CATALOGUE",
|
|
386
|
+
"DEFAULT_MEMORY",
|
|
387
|
+
"get_default_memory",
|
|
388
|
+
"get_memory",
|
|
389
|
+
"list_memories",
|
|
390
|
+
],
|
|
391
|
+
key=str.casefold,
|
|
392
|
+
)
|
|
393
|
+
new_imports = ["from .memory import ("]
|
|
394
|
+
for name in all_names:
|
|
395
|
+
new_imports.append(f" {name},")
|
|
396
|
+
new_imports.append(")")
|
|
397
|
+
|
|
398
|
+
new_content = (
|
|
399
|
+
init_content[:import_start]
|
|
400
|
+
+ "\n".join(new_imports)
|
|
401
|
+
+ init_content[import_end + 1 :]
|
|
402
|
+
)
|
|
403
|
+
|
|
404
|
+
init_file.write_text(new_content)
|
|
405
|
+
print(f"✓ Updated {init_file}")
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
def main():
|
|
409
|
+
"""Main entry point."""
|
|
410
|
+
parser = argparse.ArgumentParser(
|
|
411
|
+
description="Generate Python and TypeScript code from YAML memory specifications"
|
|
412
|
+
)
|
|
413
|
+
parser.add_argument(
|
|
414
|
+
"--specs-dir",
|
|
415
|
+
type=Path,
|
|
416
|
+
required=True,
|
|
417
|
+
help="Directory containing YAML memory specification files",
|
|
418
|
+
)
|
|
419
|
+
parser.add_argument(
|
|
420
|
+
"--python-output",
|
|
421
|
+
type=Path,
|
|
422
|
+
required=True,
|
|
423
|
+
help="Output path for generated Python file",
|
|
424
|
+
)
|
|
425
|
+
parser.add_argument(
|
|
426
|
+
"--typescript-output",
|
|
427
|
+
type=Path,
|
|
428
|
+
required=True,
|
|
429
|
+
help="Output path for generated TypeScript file",
|
|
430
|
+
)
|
|
431
|
+
|
|
432
|
+
args = parser.parse_args()
|
|
433
|
+
|
|
434
|
+
# Validate specs directory
|
|
435
|
+
if not args.specs_dir.exists():
|
|
436
|
+
print(f"Error: Specs directory does not exist: {args.specs_dir}")
|
|
437
|
+
sys.exit(1)
|
|
438
|
+
|
|
439
|
+
# Load specifications
|
|
440
|
+
print(f"Loading memory specs from {args.specs_dir}...")
|
|
441
|
+
specs = load_memory_specs(args.specs_dir)
|
|
442
|
+
print(f"Loaded {len(specs)} memory specifications")
|
|
443
|
+
|
|
444
|
+
# Generate Python code
|
|
445
|
+
print("Generating Python code...")
|
|
446
|
+
python_code = generate_python_code(specs)
|
|
447
|
+
args.python_output.parent.mkdir(parents=True, exist_ok=True)
|
|
448
|
+
args.python_output.write_text(python_code)
|
|
449
|
+
print(f"✓ Generated {args.python_output}")
|
|
450
|
+
|
|
451
|
+
# Generate TypeScript code
|
|
452
|
+
print("Generating TypeScript code...")
|
|
453
|
+
typescript_code = generate_typescript_code(specs)
|
|
454
|
+
args.typescript_output.parent.mkdir(parents=True, exist_ok=True)
|
|
455
|
+
args.typescript_output.write_text(typescript_code)
|
|
456
|
+
print(f"✓ Generated {args.typescript_output}")
|
|
457
|
+
|
|
458
|
+
# Update __init__.py with correct imports
|
|
459
|
+
init_file = args.python_output.parent / "__init__.py"
|
|
460
|
+
if init_file.exists():
|
|
461
|
+
print("Updating imports in __init__.py...")
|
|
462
|
+
update_init_file(specs, init_file)
|
|
463
|
+
|
|
464
|
+
print(f"\n✓ Successfully generated code from {len(specs)} memory specs")
|
|
465
|
+
|
|
466
|
+
|
|
467
|
+
if __name__ == "__main__":
|
|
468
|
+
main()
|
|
@@ -18,6 +18,7 @@ from pathlib import Path
|
|
|
18
18
|
from typing import Any
|
|
19
19
|
|
|
20
20
|
import yaml
|
|
21
|
+
from versioning import ensure_spec_version, version_suffix
|
|
21
22
|
|
|
22
23
|
|
|
23
24
|
def load_model_specs(specs_dir: Path) -> list[dict[str, Any]]:
|
|
@@ -26,6 +27,7 @@ def load_model_specs(specs_dir: Path) -> list[dict[str, Any]]:
|
|
|
26
27
|
for yaml_file in sorted(specs_dir.glob("*.yaml")):
|
|
27
28
|
with open(yaml_file) as f:
|
|
28
29
|
spec = yaml.safe_load(f)
|
|
30
|
+
ensure_spec_version(spec)
|
|
29
31
|
specs.append(spec)
|
|
30
32
|
return specs
|
|
31
33
|
|
|
@@ -62,26 +64,7 @@ def generate_python_code(specs: list[dict[str, Any]]) -> str:
|
|
|
62
64
|
"from enum import Enum",
|
|
63
65
|
"from typing import Dict, List, Optional",
|
|
64
66
|
"",
|
|
65
|
-
"from
|
|
66
|
-
"",
|
|
67
|
-
"",
|
|
68
|
-
"# " + "=" * 76,
|
|
69
|
-
"# AIModel Pydantic class",
|
|
70
|
-
"# " + "=" * 76,
|
|
71
|
-
"",
|
|
72
|
-
"",
|
|
73
|
-
"class AIModel(BaseModel):",
|
|
74
|
-
' """Specification for an AI model."""',
|
|
75
|
-
"",
|
|
76
|
-
' id: str = Field(..., description="Unique model identifier")',
|
|
77
|
-
' name: str = Field(..., description="Display name")',
|
|
78
|
-
' description: str = Field(default="", description="Model description")',
|
|
79
|
-
' provider: str = Field(..., description="Provider name")',
|
|
80
|
-
' default: bool = Field(default=False, description="Whether this is the default model")',
|
|
81
|
-
" required_env_vars: List[str] = Field(",
|
|
82
|
-
" default_factory=list,",
|
|
83
|
-
' description="Required environment variable names",',
|
|
84
|
-
" )",
|
|
67
|
+
"from agent_runtimes.types import AIModel",
|
|
85
68
|
"",
|
|
86
69
|
"",
|
|
87
70
|
"# " + "=" * 76,
|
|
@@ -112,7 +95,7 @@ def generate_python_code(specs: list[dict[str, Any]]) -> str:
|
|
|
112
95
|
|
|
113
96
|
# Generate model constants
|
|
114
97
|
for spec in specs:
|
|
115
|
-
const_name = _make_const_name(spec["id"])
|
|
98
|
+
const_name = _make_const_name(spec["id"]) + version_suffix(spec["version"])
|
|
116
99
|
|
|
117
100
|
# Format required_env_vars
|
|
118
101
|
env_vars = spec.get("required_env_vars", [])
|
|
@@ -125,6 +108,7 @@ def generate_python_code(specs: list[dict[str, Any]]) -> str:
|
|
|
125
108
|
[
|
|
126
109
|
f"{const_name} = AIModel(",
|
|
127
110
|
f' id="{spec["id"]}",',
|
|
111
|
+
f' version="{spec["version"]}",',
|
|
128
112
|
f' name="{spec["name"]}",',
|
|
129
113
|
f' description="{spec.get("description", "")}",',
|
|
130
114
|
f' provider="{spec["provider"]}",',
|
|
@@ -148,7 +132,7 @@ def generate_python_code(specs: list[dict[str, Any]]) -> str:
|
|
|
148
132
|
|
|
149
133
|
for spec in specs:
|
|
150
134
|
model_id = spec["id"]
|
|
151
|
-
const_name = _make_const_name(model_id)
|
|
135
|
+
const_name = _make_const_name(model_id) + version_suffix(spec["version"])
|
|
152
136
|
lines.append(f' "{model_id}": {const_name},')
|
|
153
137
|
|
|
154
138
|
lines.extend(
|
|
@@ -200,7 +184,7 @@ def generate_python_code(specs: list[dict[str, Any]]) -> str:
|
|
|
200
184
|
"",
|
|
201
185
|
"def get_model(model_id: str) -> Optional[AIModel]:",
|
|
202
186
|
' """',
|
|
203
|
-
" Get an AI model by ID.",
|
|
187
|
+
" Get an AI model by ID (accepts both bare and versioned refs).",
|
|
204
188
|
"",
|
|
205
189
|
" Args:",
|
|
206
190
|
" model_id: The unique identifier of the AI model.",
|
|
@@ -208,7 +192,13 @@ def generate_python_code(specs: list[dict[str, Any]]) -> str:
|
|
|
208
192
|
" Returns:",
|
|
209
193
|
" The AIModel specification, or None if not found.",
|
|
210
194
|
' """',
|
|
211
|
-
"
|
|
195
|
+
" model = AI_MODEL_CATALOGUE.get(model_id)",
|
|
196
|
+
" if model is not None:",
|
|
197
|
+
" return model",
|
|
198
|
+
" base, _, ver = model_id.rpartition(':')",
|
|
199
|
+
" if base and '.' in ver:",
|
|
200
|
+
" return AI_MODEL_CATALOGUE.get(base)",
|
|
201
|
+
" return None",
|
|
212
202
|
"",
|
|
213
203
|
"",
|
|
214
204
|
"def get_default_model() -> Optional[AIModel]:",
|
|
@@ -257,24 +247,7 @@ def generate_typescript_code(specs: list[dict[str, Any]]) -> str:
|
|
|
257
247
|
" * DO NOT EDIT MANUALLY - run 'make specs' to regenerate.",
|
|
258
248
|
" */",
|
|
259
249
|
"",
|
|
260
|
-
"
|
|
261
|
-
"// AIModel Type",
|
|
262
|
-
"// " + "=" * 76,
|
|
263
|
-
"",
|
|
264
|
-
"export interface AIModel {",
|
|
265
|
-
" /** Unique model identifier (e.g., 'anthropic:claude-sonnet-4-5-20250514') */",
|
|
266
|
-
" id: string;",
|
|
267
|
-
" /** Display name for the model */",
|
|
268
|
-
" name: string;",
|
|
269
|
-
" /** Model description */",
|
|
270
|
-
" description: string;",
|
|
271
|
-
" /** Provider name (anthropic, openai, bedrock, azure-openai) */",
|
|
272
|
-
" provider: string;",
|
|
273
|
-
" /** Whether this is the default model */",
|
|
274
|
-
" default: boolean;",
|
|
275
|
-
" /** Required environment variable names */",
|
|
276
|
-
" requiredEnvVars: string[];",
|
|
277
|
-
"}",
|
|
250
|
+
"import type { AIModel } from '../types';",
|
|
278
251
|
"",
|
|
279
252
|
"// " + "=" * 76,
|
|
280
253
|
"// AIModels Enum",
|
|
@@ -303,7 +276,7 @@ def generate_typescript_code(specs: list[dict[str, Any]]) -> str:
|
|
|
303
276
|
|
|
304
277
|
# Generate model constants
|
|
305
278
|
for spec in specs:
|
|
306
|
-
const_name = _make_const_name(spec["id"])
|
|
279
|
+
const_name = _make_const_name(spec["id"]) + version_suffix(spec["version"])
|
|
307
280
|
|
|
308
281
|
# Format required_env_vars
|
|
309
282
|
env_vars = spec.get("required_env_vars", [])
|
|
@@ -319,6 +292,7 @@ def generate_typescript_code(specs: list[dict[str, Any]]) -> str:
|
|
|
319
292
|
[
|
|
320
293
|
f"export const {const_name}: AIModel = {{",
|
|
321
294
|
f" id: '{spec['id']}',",
|
|
295
|
+
f" version: '{spec['version']}',",
|
|
322
296
|
f" name: '{spec['name']}',",
|
|
323
297
|
f" description: '{description}',",
|
|
324
298
|
f" provider: '{spec['provider']}',",
|
|
@@ -342,7 +316,7 @@ def generate_typescript_code(specs: list[dict[str, Any]]) -> str:
|
|
|
342
316
|
|
|
343
317
|
for spec in specs:
|
|
344
318
|
model_id = spec["id"]
|
|
345
|
-
const_name = _make_const_name(model_id)
|
|
319
|
+
const_name = _make_const_name(model_id) + version_suffix(spec["version"])
|
|
346
320
|
lines.append(f" '{model_id}': {const_name},")
|
|
347
321
|
|
|
348
322
|
lines.extend(
|
|
@@ -356,7 +330,9 @@ def generate_typescript_code(specs: list[dict[str, Any]]) -> str:
|
|
|
356
330
|
default_specs = [s for s in specs if s.get("default", False)]
|
|
357
331
|
if default_specs:
|
|
358
332
|
default_id = default_specs[0]["id"]
|
|
359
|
-
default_const = _make_const_name(default_id)
|
|
333
|
+
default_const = _make_const_name(default_id) + version_suffix(
|
|
334
|
+
default_specs[0]["version"]
|
|
335
|
+
)
|
|
360
336
|
lines.extend(
|
|
361
337
|
[
|
|
362
338
|
f"export const DEFAULT_MODEL: AIModelId = AIModels.{_make_enum_name(default_id)};",
|
|
@@ -373,7 +349,7 @@ def update_init_file(specs: list[dict[str, Any]], init_file: Path) -> None:
|
|
|
373
349
|
# Generate list of model constant names
|
|
374
350
|
model_constants = []
|
|
375
351
|
for spec in specs:
|
|
376
|
-
const_name = _make_const_name(spec["id"])
|
|
352
|
+
const_name = _make_const_name(spec["id"]) + version_suffix(spec["version"])
|
|
377
353
|
model_constants.append(const_name)
|
|
378
354
|
|
|
379
355
|
# Read the current __init__.py
|