@jini-ai/chat 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +109 -0
- package/dist/core/agentic/chat-capabilities.d.ts +19 -0
- package/dist/core/agentic/chat-capabilities.d.ts.map +1 -0
- package/dist/core/agentic/chat-capabilities.js +106 -0
- package/dist/core/agentic/chat-capabilities.js.map +1 -0
- package/dist/core/agentic/index.d.ts +22 -0
- package/dist/core/agentic/index.d.ts.map +1 -0
- package/dist/core/agentic/index.js +21 -0
- package/dist/core/agentic/index.js.map +1 -0
- package/dist/core/events.d.ts +84 -0
- package/dist/core/events.d.ts.map +1 -0
- package/dist/core/events.js +14 -0
- package/dist/core/events.js.map +1 -0
- package/dist/core/index.d.ts +40 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +40 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/messages.d.ts +53 -0
- package/dist/core/messages.d.ts.map +1 -0
- package/dist/core/messages.js +16 -0
- package/dist/core/messages.js.map +1 -0
- package/dist/core/partial-json.d.ts +36 -0
- package/dist/core/partial-json.d.ts.map +1 -0
- package/dist/core/partial-json.js +119 -0
- package/dist/core/partial-json.js.map +1 -0
- package/dist/core/persistence/index.d.ts +11 -0
- package/dist/core/persistence/index.d.ts.map +1 -0
- package/dist/core/persistence/index.js +11 -0
- package/dist/core/persistence/index.js.map +1 -0
- package/dist/core/persistence/ports.d.ts +124 -0
- package/dist/core/persistence/ports.d.ts.map +1 -0
- package/dist/core/persistence/ports.js +2 -0
- package/dist/core/persistence/ports.js.map +1 -0
- package/dist/core/persistence/title.d.ts +35 -0
- package/dist/core/persistence/title.d.ts.map +1 -0
- package/dist/core/persistence/title.js +137 -0
- package/dist/core/persistence/title.js.map +1 -0
- package/dist/core/question-form/format.d.ts +27 -0
- package/dist/core/question-form/format.d.ts.map +1 -0
- package/dist/core/question-form/format.js +45 -0
- package/dist/core/question-form/format.js.map +1 -0
- package/dist/core/question-form/normalize.d.ts +30 -0
- package/dist/core/question-form/normalize.d.ts.map +1 -0
- package/dist/core/question-form/normalize.js +192 -0
- package/dist/core/question-form/normalize.js.map +1 -0
- package/dist/core/question-form/scan.d.ts +50 -0
- package/dist/core/question-form/scan.d.ts.map +1 -0
- package/dist/core/question-form/scan.js +404 -0
- package/dist/core/question-form/scan.js.map +1 -0
- package/dist/core/question-form/types.d.ts +83 -0
- package/dist/core/question-form/types.d.ts.map +1 -0
- package/dist/core/question-form/types.js +11 -0
- package/dist/core/question-form/types.js.map +1 -0
- package/dist/core/question-form.d.ts +39 -0
- package/dist/core/question-form.d.ts.map +1 -0
- package/dist/core/question-form.js +4 -0
- package/dist/core/question-form.js.map +1 -0
- package/dist/core/todos.d.ts +70 -0
- package/dist/core/todos.d.ts.map +1 -0
- package/dist/core/todos.js +175 -0
- package/dist/core/todos.js.map +1 -0
- package/dist/core/tool-events.d.ts +18 -0
- package/dist/core/tool-events.d.ts.map +1 -0
- package/dist/core/tool-events.js +36 -0
- package/dist/core/tool-events.js.map +1 -0
- package/dist/core/tools.d.ts +51 -0
- package/dist/core/tools.d.ts.map +1 -0
- package/dist/core/tools.js +41 -0
- package/dist/core/tools.js.map +1 -0
- package/dist/core/transcript.d.ts +81 -0
- package/dist/core/transcript.d.ts.map +1 -0
- package/dist/core/transcript.js +133 -0
- package/dist/core/transcript.js.map +1 -0
- package/dist/core/transport.d.ts +109 -0
- package/dist/core/transport.d.ts.map +1 -0
- package/dist/core/transport.js +2 -0
- package/dist/core/transport.js.map +1 -0
- package/dist/core/util/index.d.ts +16 -0
- package/dist/core/util/index.d.ts.map +1 -0
- package/dist/core/util/index.js +16 -0
- package/dist/core/util/index.js.map +1 -0
- package/dist/core/util/manifest.d.ts +39 -0
- package/dist/core/util/manifest.d.ts.map +1 -0
- package/dist/core/util/manifest.js +173 -0
- package/dist/core/util/manifest.js.map +1 -0
- package/dist/core/util/markdown-context.d.ts +47 -0
- package/dist/core/util/markdown-context.d.ts.map +1 -0
- package/dist/core/util/markdown-context.js +125 -0
- package/dist/core/util/markdown-context.js.map +1 -0
- package/dist/core/util/markup-attributes.d.ts +20 -0
- package/dist/core/util/markup-attributes.d.ts.map +1 -0
- package/dist/core/util/markup-attributes.js +33 -0
- package/dist/core/util/markup-attributes.js.map +1 -0
- package/dist/core/util/parser.d.ts +42 -0
- package/dist/core/util/parser.d.ts.map +1 -0
- package/dist/core/util/parser.js +238 -0
- package/dist/core/util/parser.js.map +1 -0
- package/dist/core/util/pointer.d.ts +28 -0
- package/dist/core/util/pointer.d.ts.map +1 -0
- package/dist/core/util/pointer.js +75 -0
- package/dist/core/util/pointer.js.map +1 -0
- package/dist/core/util/recover.d.ts +40 -0
- package/dist/core/util/recover.d.ts.map +1 -0
- package/dist/core/util/recover.js +117 -0
- package/dist/core/util/recover.js.map +1 -0
- package/dist/core/util/strip.d.ts +112 -0
- package/dist/core/util/strip.d.ts.map +1 -0
- package/dist/core/util/strip.js +333 -0
- package/dist/core/util/strip.js.map +1 -0
- package/dist/core/util/types.d.ts +31 -0
- package/dist/core/util/types.d.ts.map +1 -0
- package/dist/core/util/types.js +2 -0
- package/dist/core/util/types.js.map +1 -0
- package/dist/core/util/validate.d.ts +50 -0
- package/dist/core/util/validate.d.ts.map +1 -0
- package/dist/core/util/validate.js +202 -0
- package/dist/core/util/validate.js.map +1 -0
- package/dist/react/agent-bridge/frontend-session-bridge.d.ts +45 -0
- package/dist/react/agent-bridge/frontend-session-bridge.d.ts.map +1 -0
- package/dist/react/agent-bridge/frontend-session-bridge.js +214 -0
- package/dist/react/agent-bridge/frontend-session-bridge.js.map +1 -0
- package/dist/react/artifact-types.d.ts +61 -0
- package/dist/react/artifact-types.d.ts.map +1 -0
- package/dist/react/artifact-types.js +33 -0
- package/dist/react/artifact-types.js.map +1 -0
- package/dist/react/chat-pane.d.ts +21 -0
- package/dist/react/chat-pane.d.ts.map +1 -0
- package/dist/react/chat-pane.js +20 -0
- package/dist/react/chat-pane.js.map +1 -0
- package/dist/react/components/A2uiSurfaceCard.d.ts +35 -0
- package/dist/react/components/A2uiSurfaceCard.d.ts.map +1 -0
- package/dist/react/components/A2uiSurfaceCard.js +272 -0
- package/dist/react/components/A2uiSurfaceCard.js.map +1 -0
- package/dist/react/components/AttachmentTray.d.ts +6 -0
- package/dist/react/components/AttachmentTray.d.ts.map +1 -0
- package/dist/react/components/AttachmentTray.js +30 -0
- package/dist/react/components/AttachmentTray.js.map +1 -0
- package/dist/react/components/ChatFab.d.ts +8 -0
- package/dist/react/components/ChatFab.d.ts.map +1 -0
- package/dist/react/components/ChatFab.js +24 -0
- package/dist/react/components/ChatFab.js.map +1 -0
- package/dist/react/components/Composer.d.ts +34 -0
- package/dist/react/components/Composer.d.ts.map +1 -0
- package/dist/react/components/Composer.js +300 -0
- package/dist/react/components/Composer.js.map +1 -0
- package/dist/react/components/ComposerDiscovery.d.ts +46 -0
- package/dist/react/components/ComposerDiscovery.d.ts.map +1 -0
- package/dist/react/components/ComposerDiscovery.js +38 -0
- package/dist/react/components/ComposerDiscovery.js.map +1 -0
- package/dist/react/components/ConversationList.d.ts +31 -0
- package/dist/react/components/ConversationList.d.ts.map +1 -0
- package/dist/react/components/ConversationList.js +221 -0
- package/dist/react/components/ConversationList.js.map +1 -0
- package/dist/react/components/ExtEventErrorBoundary.d.ts +35 -0
- package/dist/react/components/ExtEventErrorBoundary.d.ts.map +1 -0
- package/dist/react/components/ExtEventErrorBoundary.js +38 -0
- package/dist/react/components/ExtEventErrorBoundary.js.map +1 -0
- package/dist/react/components/Icon.d.ts +17 -0
- package/dist/react/components/Icon.d.ts.map +1 -0
- package/dist/react/components/Icon.js +46 -0
- package/dist/react/components/Icon.js.map +1 -0
- package/dist/react/components/JiniChatProvider.d.ts +45 -0
- package/dist/react/components/JiniChatProvider.d.ts.map +1 -0
- package/dist/react/components/JiniChatProvider.js +44 -0
- package/dist/react/components/JiniChatProvider.js.map +1 -0
- package/dist/react/components/Markdown.d.ts +5 -0
- package/dist/react/components/Markdown.d.ts.map +1 -0
- package/dist/react/components/Markdown.js +390 -0
- package/dist/react/components/Markdown.js.map +1 -0
- package/dist/react/components/McpUiSurfaceCard.d.ts +51 -0
- package/dist/react/components/McpUiSurfaceCard.d.ts.map +1 -0
- package/dist/react/components/McpUiSurfaceCard.js +159 -0
- package/dist/react/components/McpUiSurfaceCard.js.map +1 -0
- package/dist/react/components/MessageList.d.ts +15 -0
- package/dist/react/components/MessageList.d.ts.map +1 -0
- package/dist/react/components/MessageList.js +81 -0
- package/dist/react/components/MessageList.js.map +1 -0
- package/dist/react/components/MessageRow.d.ts +60 -0
- package/dist/react/components/MessageRow.d.ts.map +1 -0
- package/dist/react/components/MessageRow.js +156 -0
- package/dist/react/components/MessageRow.js.map +1 -0
- package/dist/react/components/NextStepActions.d.ts +34 -0
- package/dist/react/components/NextStepActions.d.ts.map +1 -0
- package/dist/react/components/NextStepActions.js +9 -0
- package/dist/react/components/NextStepActions.js.map +1 -0
- package/dist/react/components/QuestionForm.d.ts +26 -0
- package/dist/react/components/QuestionForm.d.ts.map +1 -0
- package/dist/react/components/QuestionForm.js +238 -0
- package/dist/react/components/QuestionForm.js.map +1 -0
- package/dist/react/components/QuestionsPanel.d.ts +13 -0
- package/dist/react/components/QuestionsPanel.d.ts.map +1 -0
- package/dist/react/components/QuestionsPanel.js +33 -0
- package/dist/react/components/QuestionsPanel.js.map +1 -0
- package/dist/react/components/TodoCard.d.ts +8 -0
- package/dist/react/components/TodoCard.d.ts.map +1 -0
- package/dist/react/components/TodoCard.js +29 -0
- package/dist/react/components/TodoCard.js.map +1 -0
- package/dist/react/components/ToolCard.d.ts +22 -0
- package/dist/react/components/ToolCard.d.ts.map +1 -0
- package/dist/react/components/ToolCard.js +298 -0
- package/dist/react/components/ToolCard.js.map +1 -0
- package/dist/react/components/composer-discovery.d.ts +107 -0
- package/dist/react/components/composer-discovery.d.ts.map +1 -0
- package/dist/react/components/composer-discovery.js +176 -0
- package/dist/react/components/composer-discovery.js.map +1 -0
- package/dist/react/ext-event-renderer-registry.d.ts +51 -0
- package/dist/react/ext-event-renderer-registry.d.ts.map +1 -0
- package/dist/react/ext-event-renderer-registry.js +20 -0
- package/dist/react/ext-event-renderer-registry.js.map +1 -0
- package/dist/react/features/chat-pane/agent-tools.d.ts +14 -0
- package/dist/react/features/chat-pane/agent-tools.d.ts.map +1 -0
- package/dist/react/features/chat-pane/agent-tools.js +22 -0
- package/dist/react/features/chat-pane/agent-tools.js.map +1 -0
- package/dist/react/features/chat-pane/components/AgentRuntimePicker.d.ts +12 -0
- package/dist/react/features/chat-pane/components/AgentRuntimePicker.d.ts.map +1 -0
- package/dist/react/features/chat-pane/components/AgentRuntimePicker.js +106 -0
- package/dist/react/features/chat-pane/components/AgentRuntimePicker.js.map +1 -0
- package/dist/react/features/chat-pane/components/ChatPane.d.ts +10 -0
- package/dist/react/features/chat-pane/components/ChatPane.d.ts.map +1 -0
- package/dist/react/features/chat-pane/components/ChatPane.js +169 -0
- package/dist/react/features/chat-pane/components/ChatPane.js.map +1 -0
- package/dist/react/features/chat-pane/create-daemon-attachment-uploader.d.ts +21 -0
- package/dist/react/features/chat-pane/create-daemon-attachment-uploader.d.ts.map +1 -0
- package/dist/react/features/chat-pane/create-daemon-attachment-uploader.js +213 -0
- package/dist/react/features/chat-pane/create-daemon-attachment-uploader.js.map +1 -0
- package/dist/react/features/chat-pane/create-mcp-ui-tool-caller.d.ts +70 -0
- package/dist/react/features/chat-pane/create-mcp-ui-tool-caller.d.ts.map +1 -0
- package/dist/react/features/chat-pane/create-mcp-ui-tool-caller.js +76 -0
- package/dist/react/features/chat-pane/create-mcp-ui-tool-caller.js.map +1 -0
- package/dist/react/features/chat-pane/hooks/useAgentRuntimePicker.hooks.d.ts +133 -0
- package/dist/react/features/chat-pane/hooks/useAgentRuntimePicker.hooks.d.ts.map +1 -0
- package/dist/react/features/chat-pane/hooks/useAgentRuntimePicker.hooks.js +258 -0
- package/dist/react/features/chat-pane/hooks/useAgentRuntimePicker.hooks.js.map +1 -0
- package/dist/react/features/chat-pane/hooks/useChatPane.hooks.d.ts +66 -0
- package/dist/react/features/chat-pane/hooks/useChatPane.hooks.d.ts.map +1 -0
- package/dist/react/features/chat-pane/hooks/useChatPane.hooks.js +224 -0
- package/dist/react/features/chat-pane/hooks/useChatPane.hooks.js.map +1 -0
- package/dist/react/features/chat-pane/hooks/useChatPaneAgentControl.hooks.d.ts +38 -0
- package/dist/react/features/chat-pane/hooks/useChatPaneAgentControl.hooks.d.ts.map +1 -0
- package/dist/react/features/chat-pane/hooks/useChatPaneAgentControl.hooks.js +252 -0
- package/dist/react/features/chat-pane/hooks/useChatPaneAgentControl.hooks.js.map +1 -0
- package/dist/react/features/chat-pane/hooks/useChatPaneControlsHeight.hooks.d.ts +16 -0
- package/dist/react/features/chat-pane/hooks/useChatPaneControlsHeight.hooks.d.ts.map +1 -0
- package/dist/react/features/chat-pane/hooks/useChatPaneControlsHeight.hooks.js +59 -0
- package/dist/react/features/chat-pane/hooks/useChatPaneControlsHeight.hooks.js.map +1 -0
- package/dist/react/features/chat-pane/hooks/useChatPaneFileDrop.hooks.d.ts +26 -0
- package/dist/react/features/chat-pane/hooks/useChatPaneFileDrop.hooks.d.ts.map +1 -0
- package/dist/react/features/chat-pane/hooks/useChatPaneFileDrop.hooks.js +74 -0
- package/dist/react/features/chat-pane/hooks/useChatPaneFileDrop.hooks.js.map +1 -0
- package/dist/react/features/chat-pane/hooks/useChatPaneRuntimeInventory.hooks.d.ts +25 -0
- package/dist/react/features/chat-pane/hooks/useChatPaneRuntimeInventory.hooks.d.ts.map +1 -0
- package/dist/react/features/chat-pane/hooks/useChatPaneRuntimeInventory.hooks.js +88 -0
- package/dist/react/features/chat-pane/hooks/useChatPaneRuntimeInventory.hooks.js.map +1 -0
- package/dist/react/features/chat-pane/hooks/useChatPaneWorkingDirectory.hooks.d.ts +38 -0
- package/dist/react/features/chat-pane/hooks/useChatPaneWorkingDirectory.hooks.d.ts.map +1 -0
- package/dist/react/features/chat-pane/hooks/useChatPaneWorkingDirectory.hooks.js +184 -0
- package/dist/react/features/chat-pane/hooks/useChatPaneWorkingDirectory.hooks.js.map +1 -0
- package/dist/react/features/chat-pane/index.d.ts +12 -0
- package/dist/react/features/chat-pane/index.d.ts.map +1 -0
- package/dist/react/features/chat-pane/index.js +11 -0
- package/dist/react/features/chat-pane/index.js.map +1 -0
- package/dist/react/features/chat-pane/react/components/AgentRuntimePicker.d.ts +12 -0
- package/dist/react/features/chat-pane/react/components/AgentRuntimePicker.d.ts.map +1 -0
- package/dist/react/features/chat-pane/react/components/AgentRuntimePicker.js +102 -0
- package/dist/react/features/chat-pane/react/components/AgentRuntimePicker.js.map +1 -0
- package/dist/react/features/chat-pane/react/components/ChatPane.d.ts +10 -0
- package/dist/react/features/chat-pane/react/components/ChatPane.d.ts.map +1 -0
- package/dist/react/features/chat-pane/react/components/ChatPane.js +137 -0
- package/dist/react/features/chat-pane/react/components/ChatPane.js.map +1 -0
- package/dist/react/features/chat-pane/react/hooks/useAgentRuntimePicker.hooks.d.ts +133 -0
- package/dist/react/features/chat-pane/react/hooks/useAgentRuntimePicker.hooks.d.ts.map +1 -0
- package/dist/react/features/chat-pane/react/hooks/useAgentRuntimePicker.hooks.js +258 -0
- package/dist/react/features/chat-pane/react/hooks/useAgentRuntimePicker.hooks.js.map +1 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPane.hooks.d.ts +66 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPane.hooks.d.ts.map +1 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPane.hooks.js +223 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPane.hooks.js.map +1 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPaneAgentControl.hooks.d.ts +38 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPaneAgentControl.hooks.d.ts.map +1 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPaneAgentControl.hooks.js +252 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPaneAgentControl.hooks.js.map +1 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPaneFileDrop.hooks.d.ts +26 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPaneFileDrop.hooks.d.ts.map +1 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPaneFileDrop.hooks.js +60 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPaneFileDrop.hooks.js.map +1 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPaneRuntimeInventory.hooks.d.ts +25 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPaneRuntimeInventory.hooks.d.ts.map +1 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPaneRuntimeInventory.hooks.js +83 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPaneRuntimeInventory.hooks.js.map +1 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPaneWorkingDirectory.hooks.d.ts +38 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPaneWorkingDirectory.hooks.d.ts.map +1 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPaneWorkingDirectory.hooks.js +184 -0
- package/dist/react/features/chat-pane/react/hooks/useChatPaneWorkingDirectory.hooks.js.map +1 -0
- package/dist/react/features/chat-pane/react/styles.d.ts +2 -0
- package/dist/react/features/chat-pane/react/styles.d.ts.map +1 -0
- package/dist/react/features/chat-pane/react/styles.js +863 -0
- package/dist/react/features/chat-pane/react/styles.js.map +1 -0
- package/dist/react/features/chat-pane/rules.d.ts +31 -0
- package/dist/react/features/chat-pane/rules.d.ts.map +1 -0
- package/dist/react/features/chat-pane/rules.js +81 -0
- package/dist/react/features/chat-pane/rules.js.map +1 -0
- package/dist/react/features/chat-pane/styles.d.ts +2 -0
- package/dist/react/features/chat-pane/styles.d.ts.map +1 -0
- package/dist/react/features/chat-pane/styles.js +1327 -0
- package/dist/react/features/chat-pane/styles.js.map +1 -0
- package/dist/react/features/chat-pane/types.d.ts +248 -0
- package/dist/react/features/chat-pane/types.d.ts.map +1 -0
- package/dist/react/features/chat-pane/types.js +2 -0
- package/dist/react/features/chat-pane/types.js.map +1 -0
- package/dist/react/features/model-picker/components/CredentialStatusBadge.d.ts +7 -0
- package/dist/react/features/model-picker/components/CredentialStatusBadge.d.ts.map +1 -0
- package/dist/react/features/model-picker/components/CredentialStatusBadge.js +20 -0
- package/dist/react/features/model-picker/components/CredentialStatusBadge.js.map +1 -0
- package/dist/react/features/model-picker/components/ModelPicker.d.ts +9 -0
- package/dist/react/features/model-picker/components/ModelPicker.d.ts.map +1 -0
- package/dist/react/features/model-picker/components/ModelPicker.js +34 -0
- package/dist/react/features/model-picker/components/ModelPicker.js.map +1 -0
- package/dist/react/features/model-picker/constants.d.ts +6 -0
- package/dist/react/features/model-picker/constants.d.ts.map +1 -0
- package/dist/react/features/model-picker/constants.js +9 -0
- package/dist/react/features/model-picker/constants.js.map +1 -0
- package/dist/react/features/model-picker/dependencies.d.ts +11 -0
- package/dist/react/features/model-picker/dependencies.d.ts.map +1 -0
- package/dist/react/features/model-picker/dependencies.js +10 -0
- package/dist/react/features/model-picker/dependencies.js.map +1 -0
- package/dist/react/features/model-picker/hooks/useModelPicker.hooks.d.ts +27 -0
- package/dist/react/features/model-picker/hooks/useModelPicker.hooks.d.ts.map +1 -0
- package/dist/react/features/model-picker/hooks/useModelPicker.hooks.js +62 -0
- package/dist/react/features/model-picker/hooks/useModelPicker.hooks.js.map +1 -0
- package/dist/react/features/model-picker/index.d.ts +32 -0
- package/dist/react/features/model-picker/index.d.ts.map +1 -0
- package/dist/react/features/model-picker/index.js +29 -0
- package/dist/react/features/model-picker/index.js.map +1 -0
- package/dist/react/features/model-picker/ports.d.ts +11 -0
- package/dist/react/features/model-picker/ports.d.ts.map +1 -0
- package/dist/react/features/model-picker/ports.js +2 -0
- package/dist/react/features/model-picker/ports.js.map +1 -0
- package/dist/react/features/model-picker/react/components/CredentialStatusBadge.d.ts +7 -0
- package/dist/react/features/model-picker/react/components/CredentialStatusBadge.d.ts.map +1 -0
- package/dist/react/features/model-picker/react/components/CredentialStatusBadge.js +20 -0
- package/dist/react/features/model-picker/react/components/CredentialStatusBadge.js.map +1 -0
- package/dist/react/features/model-picker/react/components/ModelPicker.d.ts +9 -0
- package/dist/react/features/model-picker/react/components/ModelPicker.d.ts.map +1 -0
- package/dist/react/features/model-picker/react/components/ModelPicker.js +34 -0
- package/dist/react/features/model-picker/react/components/ModelPicker.js.map +1 -0
- package/dist/react/features/model-picker/react/hooks/useModelPicker.hooks.d.ts +27 -0
- package/dist/react/features/model-picker/react/hooks/useModelPicker.hooks.d.ts.map +1 -0
- package/dist/react/features/model-picker/react/hooks/useModelPicker.hooks.js +62 -0
- package/dist/react/features/model-picker/react/hooks/useModelPicker.hooks.js.map +1 -0
- package/dist/react/features/model-picker/rules.d.ts +26 -0
- package/dist/react/features/model-picker/rules.d.ts.map +1 -0
- package/dist/react/features/model-picker/rules.js +84 -0
- package/dist/react/features/model-picker/rules.js.map +1 -0
- package/dist/react/features/model-picker/types.d.ts +38 -0
- package/dist/react/features/model-picker/types.d.ts.map +1 -0
- package/dist/react/features/model-picker/types.js +2 -0
- package/dist/react/features/model-picker/types.js.map +1 -0
- package/dist/react/hooks/composer-draft-cache.d.ts +65 -0
- package/dist/react/hooks/composer-draft-cache.d.ts.map +1 -0
- package/dist/react/hooks/composer-draft-cache.js +89 -0
- package/dist/react/hooks/composer-draft-cache.js.map +1 -0
- package/dist/react/hooks/context.d.ts +18 -0
- package/dist/react/hooks/context.d.ts.map +1 -0
- package/dist/react/hooks/context.js +60 -0
- package/dist/react/hooks/context.js.map +1 -0
- package/dist/react/hooks/testing/fake-transport.d.ts +34 -0
- package/dist/react/hooks/testing/fake-transport.d.ts.map +1 -0
- package/dist/react/hooks/testing/fake-transport.js +46 -0
- package/dist/react/hooks/testing/fake-transport.js.map +1 -0
- package/dist/react/hooks/useArtifactStream.d.ts +18 -0
- package/dist/react/hooks/useArtifactStream.d.ts.map +1 -0
- package/dist/react/hooks/useArtifactStream.js +55 -0
- package/dist/react/hooks/useArtifactStream.js.map +1 -0
- package/dist/react/hooks/useChatFabDrag.d.ts +25 -0
- package/dist/react/hooks/useChatFabDrag.d.ts.map +1 -0
- package/dist/react/hooks/useChatFabDrag.js +88 -0
- package/dist/react/hooks/useChatFabDrag.js.map +1 -0
- package/dist/react/hooks/useComposer.d.ts +48 -0
- package/dist/react/hooks/useComposer.d.ts.map +1 -0
- package/dist/react/hooks/useComposer.js +121 -0
- package/dist/react/hooks/useComposer.js.map +1 -0
- package/dist/react/hooks/useConversation.d.ts +34 -0
- package/dist/react/hooks/useConversation.d.ts.map +1 -0
- package/dist/react/hooks/useConversation.js +163 -0
- package/dist/react/hooks/useConversation.js.map +1 -0
- package/dist/react/hooks/useCopyToClipboard.d.ts +14 -0
- package/dist/react/hooks/useCopyToClipboard.d.ts.map +1 -0
- package/dist/react/hooks/useCopyToClipboard.js +98 -0
- package/dist/react/hooks/useCopyToClipboard.js.map +1 -0
- package/dist/react/hooks/useExtEventGroups.d.ts +7 -0
- package/dist/react/hooks/useExtEventGroups.d.ts.map +1 -0
- package/dist/react/hooks/useExtEventGroups.js +32 -0
- package/dist/react/hooks/useExtEventGroups.js.map +1 -0
- package/dist/react/hooks/useLatestOperation.d.ts +31 -0
- package/dist/react/hooks/useLatestOperation.d.ts.map +1 -0
- package/dist/react/hooks/useLatestOperation.js +74 -0
- package/dist/react/hooks/useLatestOperation.js.map +1 -0
- package/dist/react/hooks/usePinnedTodos.d.ts +15 -0
- package/dist/react/hooks/usePinnedTodos.d.ts.map +1 -0
- package/dist/react/hooks/usePinnedTodos.js +43 -0
- package/dist/react/hooks/usePinnedTodos.js.map +1 -0
- package/dist/react/hooks/useQuestionForms.d.ts +28 -0
- package/dist/react/hooks/useQuestionForms.d.ts.map +1 -0
- package/dist/react/hooks/useQuestionForms.js +113 -0
- package/dist/react/hooks/useQuestionForms.js.map +1 -0
- package/dist/react/hooks/useRunStream.d.ts +27 -0
- package/dist/react/hooks/useRunStream.d.ts.map +1 -0
- package/dist/react/hooks/useRunStream.js +180 -0
- package/dist/react/hooks/useRunStream.js.map +1 -0
- package/dist/react/hooks/useToolTimeline.d.ts +33 -0
- package/dist/react/hooks/useToolTimeline.d.ts.map +1 -0
- package/dist/react/hooks/useToolTimeline.js +47 -0
- package/dist/react/hooks/useToolTimeline.js.map +1 -0
- package/dist/react/index.d.ts +158 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +118 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/message-blocks.d.ts +86 -0
- package/dist/react/message-blocks.d.ts.map +1 -0
- package/dist/react/message-blocks.js +78 -0
- package/dist/react/message-blocks.js.map +1 -0
- package/dist/react/poc-mcp-ui-official/PocMcpUiCard.d.ts +9 -0
- package/dist/react/poc-mcp-ui-official/PocMcpUiCard.d.ts.map +1 -0
- package/dist/react/poc-mcp-ui-official/PocMcpUiCard.js +29 -0
- package/dist/react/poc-mcp-ui-official/PocMcpUiCard.js.map +1 -0
- package/dist/react/poc-mcp-ui-official/create-poc-resource.d.ts +30 -0
- package/dist/react/poc-mcp-ui-official/create-poc-resource.d.ts.map +1 -0
- package/dist/react/poc-mcp-ui-official/create-poc-resource.js +44 -0
- package/dist/react/poc-mcp-ui-official/create-poc-resource.js.map +1 -0
- package/dist/react/slots.d.ts +215 -0
- package/dist/react/slots.d.ts.map +1 -0
- package/dist/react/slots.js +2 -0
- package/dist/react/slots.js.map +1 -0
- package/dist/react/styles/reference.css +298 -0
- package/dist/react/tool-renderer-registry.d.ts +41 -0
- package/dist/react/tool-renderer-registry.d.ts.map +1 -0
- package/dist/react/tool-renderer-registry.js +22 -0
- package/dist/react/tool-renderer-registry.js.map +1 -0
- package/dist/react/util/defined-props.d.ts +31 -0
- package/dist/react/util/defined-props.d.ts.map +1 -0
- package/dist/react/util/defined-props.js +28 -0
- package/dist/react/util/defined-props.js.map +1 -0
- package/package.json +99 -0
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* @module QuestionForm
|
|
4
|
+
*
|
|
5
|
+
* Renders one parsed `<question-form>` as an interactive (or locked/
|
|
6
|
+
* answered) set of controls. Ported from OD's `components/QuestionForm.tsx`
|
|
7
|
+
* (verified 0 OD product references — the file only imports React,
|
|
8
|
+
* `useT()`, and its own question-form types) against `@jini-ai/chat/core`'s
|
|
9
|
+
* `QuestionForm`/`FormQuestion`/`FormOption`/`DirectionCard`/
|
|
10
|
+
* `formatFormAnswers` (the same shapes, lifted verbatim into chat-core
|
|
11
|
+
* already). className/structure kept verbatim (`question-form`/`qf-*`
|
|
12
|
+
* classes — unstyled semantic markup, host supplies CSS); every user-facing
|
|
13
|
+
* string wrapped in `useT()`.
|
|
14
|
+
*/
|
|
15
|
+
import { forwardRef, useEffect, useImperativeHandle, useMemo, useState } from 'react';
|
|
16
|
+
import { formatFormAnswers, formOptionValueForLabel } from '../../core/index.js';
|
|
17
|
+
import { useT } from '../hooks/context.js';
|
|
18
|
+
export const QuestionForm = forwardRef(function QuestionForm({ form, interactive, submittedAnswers, hideInternalSubmit = false, draftAnswers, onReadyChange, onDraftChange, onAnswerChange, onSubmit }, ref) {
|
|
19
|
+
const t = useT();
|
|
20
|
+
const initial = useMemo(() => buildInitialState(form, submittedAnswers, draftAnswers), [form, submittedAnswers, draftAnswers]);
|
|
21
|
+
const [answers, setAnswers] = useState(initial);
|
|
22
|
+
const [fileAnswers, setFileAnswers] = useState({});
|
|
23
|
+
const locked = !interactive || !onSubmit || submittedAnswers !== undefined;
|
|
24
|
+
const currentAnswers = submittedAnswers ?? answers;
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
setFileAnswers({});
|
|
27
|
+
}, [form.id]);
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
setAnswers((prev) => {
|
|
30
|
+
let changed = false;
|
|
31
|
+
const next = { ...prev };
|
|
32
|
+
for (const q of form.questions) {
|
|
33
|
+
if (next[q.id] !== undefined)
|
|
34
|
+
continue;
|
|
35
|
+
changed = true;
|
|
36
|
+
if (submittedAnswers && submittedAnswers[q.id] !== undefined) {
|
|
37
|
+
next[q.id] = canonicalizeQuestionValue(q, submittedAnswers[q.id]);
|
|
38
|
+
}
|
|
39
|
+
else if (q.defaultValue !== undefined) {
|
|
40
|
+
next[q.id] = canonicalizeQuestionValue(q, q.defaultValue);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
next[q.id] = emptyQuestionValue(q);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return changed ? next : prev;
|
|
47
|
+
});
|
|
48
|
+
}, [form, submittedAnswers]);
|
|
49
|
+
function update(id, value) {
|
|
50
|
+
if (locked)
|
|
51
|
+
return;
|
|
52
|
+
const next = { ...answers, [id]: value };
|
|
53
|
+
setAnswers(next);
|
|
54
|
+
onDraftChange?.(draftSafeAnswers(form, next));
|
|
55
|
+
onAnswerChange?.(id, value);
|
|
56
|
+
}
|
|
57
|
+
function toggleCheckbox(id, option, maxSelections) {
|
|
58
|
+
if (locked)
|
|
59
|
+
return;
|
|
60
|
+
const current = Array.isArray(answers[id]) ? answers[id] : [];
|
|
61
|
+
const has = current.includes(option);
|
|
62
|
+
if (!has && maxSelections !== undefined && current.length >= maxSelections)
|
|
63
|
+
return;
|
|
64
|
+
const next = has ? current.filter((v) => v !== option) : [...current, option];
|
|
65
|
+
const nextAnswers = { ...answers, [id]: next };
|
|
66
|
+
setAnswers(nextAnswers);
|
|
67
|
+
onDraftChange?.(draftSafeAnswers(form, nextAnswers));
|
|
68
|
+
onAnswerChange?.(id, next);
|
|
69
|
+
}
|
|
70
|
+
function updateCheckboxCustom(q, raw) {
|
|
71
|
+
if (locked)
|
|
72
|
+
return;
|
|
73
|
+
const current = Array.isArray(answers[q.id]) ? answers[q.id] : [];
|
|
74
|
+
const fixed = current.filter((entry) => questionValueIsKnown(q, entry));
|
|
75
|
+
update(q.id, [...fixed, ...splitCustomEntries(raw)]);
|
|
76
|
+
}
|
|
77
|
+
function handleSubmit() {
|
|
78
|
+
if (locked || !onSubmit)
|
|
79
|
+
return;
|
|
80
|
+
if (!ready)
|
|
81
|
+
return;
|
|
82
|
+
const files = collectFileSubmissions(form, fileAnswers);
|
|
83
|
+
if (files.length > 0)
|
|
84
|
+
onSubmit(formatFormAnswers(form, answers), answers, files);
|
|
85
|
+
else
|
|
86
|
+
onSubmit(formatFormAnswers(form, answers), answers);
|
|
87
|
+
}
|
|
88
|
+
function handleSkipAll() {
|
|
89
|
+
if (locked || !onSubmit)
|
|
90
|
+
return;
|
|
91
|
+
const empty = {};
|
|
92
|
+
onSubmit(formatFormAnswers(form, empty), empty);
|
|
93
|
+
}
|
|
94
|
+
const withinSelectionLimits = form.questions.every((q) => {
|
|
95
|
+
if (q.type !== 'checkbox' || q.maxSelections === undefined)
|
|
96
|
+
return true;
|
|
97
|
+
const v = currentAnswers[q.id];
|
|
98
|
+
return !Array.isArray(v) || v.length <= q.maxSelections;
|
|
99
|
+
});
|
|
100
|
+
const requiredAnswered = form.questions.every((q) => {
|
|
101
|
+
if (q.required !== true)
|
|
102
|
+
return true;
|
|
103
|
+
const v = currentAnswers[q.id];
|
|
104
|
+
if (Array.isArray(v))
|
|
105
|
+
return v.length > 0;
|
|
106
|
+
return typeof v === 'string' && v.trim().length > 0;
|
|
107
|
+
});
|
|
108
|
+
const ready = withinSelectionLimits && requiredAnswered;
|
|
109
|
+
useImperativeHandle(ref, () => ({ submit: handleSubmit, skipAll: handleSkipAll }));
|
|
110
|
+
useEffect(() => {
|
|
111
|
+
onReadyChange?.(!locked && ready);
|
|
112
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
113
|
+
}, [onReadyChange, locked, ready]);
|
|
114
|
+
return (_jsxs("div", { className: `question-form${locked ? ' question-form-locked' : ''}`, "data-form-id": form.id, children: [_jsxs("div", { className: "question-form-head", children: [_jsx("span", { className: "question-form-icon", "aria-hidden": true, children: "?" }), _jsxs("div", { className: "question-form-titles", children: [_jsx("div", { className: "question-form-title", children: form.title }), form.description ? _jsx("div", { className: "question-form-desc", children: form.description }) : null] }), locked ? _jsx("span", { className: "question-form-pill", children: t('Answered') }) : null] }), _jsx("div", { className: "question-form-body", children: form.questions.map((q) => {
|
|
115
|
+
const value = currentAnswers[q.id];
|
|
116
|
+
return (_jsxs("div", { className: "qf-field", children: [_jsxs("label", { className: "qf-label", children: [_jsx("span", { children: q.label }), q.required ? (_jsx("span", { className: "qf-required", "aria-label": t('required'), children: "*" })) : null] }), q.help ? _jsx("div", { className: "qf-help", children: q.help }) : null, q.type === 'radio' && q.options ? (_jsx("div", { className: "qf-options", children: q.options.map((opt) => (_jsxs("label", { className: `qf-chip${value === opt.value ? ' qf-chip-on' : ''}`, title: opt.description, children: [_jsx("input", { type: "radio", name: `${form.id}-${q.id}`, value: opt.value, checked: value === opt.value, disabled: locked, "aria-label": opt.label, onChange: () => update(q.id, opt.value) }), _jsx(OptionCopy, { option: opt })] }, opt.value))) })) : null, q.type === 'radio' && q.options && shouldRenderCustomChoice(q) ? (_jsx(CustomChoiceInput, { label: q.customLabel ?? t('Something else'), value: customSingleValue(q, value), placeholder: q.customPlaceholder ?? t('Type your own answer'), disabled: locked, onChange: (next) => update(q.id, next) })) : null, q.type === 'checkbox' && q.options ? (_jsx("div", { className: "qf-options", children: q.options.map((opt) => {
|
|
117
|
+
const arr = Array.isArray(value) ? value : [];
|
|
118
|
+
const on = arr.includes(opt.value);
|
|
119
|
+
const maxed = q.maxSelections !== undefined && !on && arr.length >= q.maxSelections;
|
|
120
|
+
return (_jsxs("label", { title: opt.description, className: `qf-chip${on ? ' qf-chip-on' : ''}${maxed ? ' qf-chip-disabled' : ''}`, children: [_jsx("input", { type: "checkbox", value: opt.value, checked: on, disabled: locked || maxed, "aria-label": opt.label, onChange: () => toggleCheckbox(q.id, opt.value, q.maxSelections) }), _jsx(OptionCopy, { option: opt })] }, opt.value));
|
|
121
|
+
}) })) : null, q.type === 'checkbox' && q.options && shouldRenderCustomChoice(q) ? (_jsx(CustomChoiceInput, { label: q.customLabel ?? t('Something else'), value: customCheckboxValue(q, value), placeholder: q.customPlaceholder ?? t('Type your own answer'), disabled: locked, onChange: (next) => updateCheckboxCustom(q, next) })) : null, q.type === 'select' && q.options ? (_jsxs("select", { className: "qf-select", value: typeof value === 'string' && questionValueIsKnown(q, value) ? value : '', disabled: locked, onChange: (e) => update(q.id, e.target.value), children: [_jsx("option", { value: "", disabled: true, children: q.placeholder ?? t('Choose one') }), q.options.map((opt) => (_jsx("option", { value: opt.value, title: opt.description, children: opt.label }, opt.value)))] })) : null, q.type === 'select' && q.options && shouldRenderCustomChoice(q) ? (_jsx(CustomChoiceInput, { label: q.customLabel ?? t('Something else'), value: customSingleValue(q, value), placeholder: q.customPlaceholder ?? t('Type your own answer'), disabled: locked, onChange: (next) => update(q.id, next) })) : null, q.type === 'text' ? _jsx("input", { type: "text", className: "qf-input", value: typeof value === 'string' ? value : '', placeholder: q.placeholder, disabled: locked, onChange: (e) => update(q.id, e.target.value) }) : null, q.type === 'number' ? _jsx("input", { type: "number", className: "qf-input", value: typeof value === 'string' ? value : '', placeholder: q.placeholder, min: q.min, max: q.max, step: q.step, disabled: locked, onChange: (e) => update(q.id, e.target.value) }) : null, q.type === 'range' ? (_jsxs("div", { className: "qf-range-wrap", children: [_jsx("input", { type: "range", className: "qf-range", value: typeof value === 'string' && value.trim() ? value : String(q.min ?? 0), min: q.min, max: q.max, step: q.step, disabled: locked, onChange: (e) => update(q.id, e.target.value) }), _jsx("output", { className: "qf-range-value", children: typeof value === 'string' && value.trim() ? value : String(q.min ?? 0) })] })) : null, q.type === 'date' || q.type === 'time' || q.type === 'datetime-local' ? _jsx("input", { type: q.type, className: "qf-input", value: typeof value === 'string' ? value : '', placeholder: q.placeholder, disabled: locked, onChange: (e) => update(q.id, e.target.value) }) : null, q.type === 'color' ? _jsx("input", { type: "color", className: "qf-color", value: normalizeColorInputValue(value), disabled: locked, onChange: (e) => update(q.id, e.target.value) }) : null, q.type === 'url' || q.type === 'email' || q.type === 'tel' ? _jsx("input", { type: q.type, className: "qf-input", value: typeof value === 'string' ? value : '', placeholder: q.placeholder, disabled: locked, onChange: (e) => update(q.id, e.target.value) }) : null, q.type === 'file' ? (_jsxs("div", { className: "qf-file-wrap", children: [_jsx("input", { type: "file", className: "qf-file", multiple: q.multiple, accept: q.accept, disabled: locked, onChange: (e) => {
|
|
122
|
+
const files = Array.from(e.target.files ?? []);
|
|
123
|
+
const names = files.map((file) => file.name);
|
|
124
|
+
setFileAnswers((current) => ({ ...current, [q.id]: files }));
|
|
125
|
+
update(q.id, q.multiple ? names : (names[0] ?? ''));
|
|
126
|
+
} }), fileValueLabel(value) ? _jsx("div", { className: "qf-file-summary", children: fileValueLabel(value) }) : null] })) : null, q.type === 'switch' ? (_jsxs("label", { className: "qf-switch", children: [_jsx("input", { type: "checkbox", role: "switch", checked: value === 'true', disabled: locked, onChange: (e) => update(q.id, e.target.checked ? 'true' : 'false') }), _jsx("span", { "aria-hidden": true })] })) : null, q.type === 'textarea' ? _jsx("textarea", { className: "qf-textarea", value: typeof value === 'string' ? value : '', placeholder: q.placeholder, disabled: locked, rows: 3, onChange: (e) => update(q.id, e.target.value) }) : null, q.type === 'direction-cards' && q.cards && q.cards.length > 0 ? (_jsx("div", { className: "qf-direction-cards", children: q.cards.map((card) => (_jsx(DirectionCardView, { card: card, formId: form.id, questionId: q.id, selected: value === card.id || value === card.label, disabled: locked, onSelect: () => update(q.id, card.id) }, card.id))) })) : null, q.type === 'direction-cards' && q.cards && q.cards.length > 0 && shouldRenderCustomChoice(q) ? (_jsx(CustomChoiceInput, { label: q.customLabel ?? t('Something else'), value: customSingleValue(q, value), placeholder: q.customPlaceholder ?? t('Type your own answer'), disabled: locked, onChange: (next) => update(q.id, next) })) : null] }, q.id));
|
|
127
|
+
}) }), hideInternalSubmit ? null : (_jsxs("div", { className: "question-form-foot", children: [locked ? _jsx("span", { className: "qf-locked-note", children: submittedAnswers ? t('You answered this') : t('A newer message answered this') }) : _jsx("span", { className: "qf-hint", children: t('Answer above, then continue') }), !locked ? (_jsx("button", { type: "button", className: "primary", onClick: handleSubmit, disabled: !ready, title: ready ? t('Submit your answers') : t('Answer the required questions first'), children: form.submitLabel ?? t('Continue') })) : null] }))] }));
|
|
128
|
+
});
|
|
129
|
+
function OptionCopy({ option }) {
|
|
130
|
+
return (_jsxs("span", { className: "qf-chip-copy", children: [_jsx("span", { children: option.label }), option.description ? _jsx("span", { className: "qf-chip-desc", children: option.description }) : null] }));
|
|
131
|
+
}
|
|
132
|
+
function CustomChoiceInput({ label, value, placeholder, disabled, onChange }) {
|
|
133
|
+
const chars = customInputCharCount(value, placeholder);
|
|
134
|
+
return (_jsxs("label", { className: "qf-custom", children: [_jsx("span", { children: label }), _jsx("input", { type: "text", className: "qf-input", value: value, placeholder: placeholder, disabled: disabled, style: { '--qf-custom-chars': String(chars) }, onChange: (event) => onChange(event.target.value) })] }));
|
|
135
|
+
}
|
|
136
|
+
function DirectionCardView({ card, formId, questionId, selected, disabled, onSelect }) {
|
|
137
|
+
const t = useT();
|
|
138
|
+
return (_jsxs("label", { className: `qf-card${selected ? ' qf-card-on' : ''}${disabled ? ' qf-card-disabled' : ''}`, children: [_jsx("input", { type: "radio", name: `${formId}-${questionId}`, value: card.id, checked: selected, disabled: disabled, onChange: () => onSelect() }), _jsxs("div", { className: "qf-card-head", children: [_jsx("div", { className: "qf-card-title", children: card.label }), selected ? _jsx("span", { className: "qf-card-pill", children: t('Selected') }) : null] }), card.palette.length > 0 ? (_jsx("div", { className: "qf-card-swatches", "aria-hidden": true, children: card.palette.slice(0, 6).map((c, i) => (_jsx("span", { className: "qf-card-swatch", style: { background: c }, title: c }, i))) })) : null, _jsxs("div", { className: "qf-card-types", "aria-hidden": true, children: [_jsx("span", { className: "qf-card-type-display", style: { fontFamily: card.displayFont }, children: "Aa" }), _jsx("span", { className: "qf-card-type-body", style: { fontFamily: card.bodyFont }, children: t('The quick brown fox') })] }), card.mood ? _jsx("p", { className: "qf-card-mood", children: card.mood }) : null, card.references.length > 0 ? (_jsxs("p", { className: "qf-card-refs", children: [_jsx("span", { className: "qf-card-refs-label", children: t('References:') }), " ", card.references.slice(0, 4).join(' · ')] })) : null] }));
|
|
139
|
+
}
|
|
140
|
+
function buildInitialState(form, submitted, draft) {
|
|
141
|
+
const out = {};
|
|
142
|
+
for (const q of form.questions) {
|
|
143
|
+
if (submitted && submitted[q.id] !== undefined) {
|
|
144
|
+
out[q.id] = canonicalizeQuestionValue(q, submitted[q.id]);
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
if (draft && draft[q.id] !== undefined && q.type !== 'file') {
|
|
148
|
+
out[q.id] = canonicalizeQuestionValue(q, draft[q.id]);
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
if (q.defaultValue !== undefined) {
|
|
152
|
+
out[q.id] = canonicalizeQuestionValue(q, q.defaultValue);
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
out[q.id] = emptyQuestionValue(q);
|
|
156
|
+
}
|
|
157
|
+
return out;
|
|
158
|
+
}
|
|
159
|
+
function draftSafeAnswers(form, answers) {
|
|
160
|
+
const fileQuestionIds = new Set(form.questions.filter((q) => q.type === 'file').map((q) => q.id));
|
|
161
|
+
if (fileQuestionIds.size === 0)
|
|
162
|
+
return answers;
|
|
163
|
+
const out = {};
|
|
164
|
+
for (const [id, value] of Object.entries(answers)) {
|
|
165
|
+
if (!fileQuestionIds.has(id))
|
|
166
|
+
out[id] = value;
|
|
167
|
+
}
|
|
168
|
+
return out;
|
|
169
|
+
}
|
|
170
|
+
function collectFileSubmissions(form, fileAnswers) {
|
|
171
|
+
const out = [];
|
|
172
|
+
for (const q of form.questions) {
|
|
173
|
+
if (q.type !== 'file')
|
|
174
|
+
continue;
|
|
175
|
+
const files = fileAnswers[q.id] ?? [];
|
|
176
|
+
if (files.length === 0)
|
|
177
|
+
continue;
|
|
178
|
+
out.push({ questionId: q.id, questionLabel: q.label, files });
|
|
179
|
+
}
|
|
180
|
+
return out;
|
|
181
|
+
}
|
|
182
|
+
function emptyQuestionValue(q) {
|
|
183
|
+
if (q.type === 'checkbox')
|
|
184
|
+
return [];
|
|
185
|
+
if (q.type === 'switch')
|
|
186
|
+
return 'false';
|
|
187
|
+
if (q.type === 'range')
|
|
188
|
+
return String(q.min ?? 0);
|
|
189
|
+
if (q.type === 'color')
|
|
190
|
+
return normalizeColorInputValue('');
|
|
191
|
+
return '';
|
|
192
|
+
}
|
|
193
|
+
function canonicalizeQuestionValue(q, value) {
|
|
194
|
+
if (Array.isArray(value))
|
|
195
|
+
return value.map((entry) => formOptionValueForLabel(q, entry));
|
|
196
|
+
return formOptionValueForLabel(q, value);
|
|
197
|
+
}
|
|
198
|
+
function shouldRenderCustomChoice(q) {
|
|
199
|
+
return q.allowCustom !== false;
|
|
200
|
+
}
|
|
201
|
+
function questionValueIsKnown(q, value) {
|
|
202
|
+
if (q.options?.some((option) => option.value === value || option.label === value))
|
|
203
|
+
return true;
|
|
204
|
+
if (q.cards?.some((card) => card.id === value || card.label === value))
|
|
205
|
+
return true;
|
|
206
|
+
return false;
|
|
207
|
+
}
|
|
208
|
+
function customSingleValue(q, value) {
|
|
209
|
+
if (typeof value !== 'string' || value.length === 0)
|
|
210
|
+
return '';
|
|
211
|
+
return questionValueIsKnown(q, value) ? '' : value;
|
|
212
|
+
}
|
|
213
|
+
function customCheckboxValue(q, value) {
|
|
214
|
+
if (!Array.isArray(value))
|
|
215
|
+
return '';
|
|
216
|
+
return value.filter((entry) => !questionValueIsKnown(q, entry)).join(', ');
|
|
217
|
+
}
|
|
218
|
+
function splitCustomEntries(raw) {
|
|
219
|
+
return raw
|
|
220
|
+
.split(/[\n,]/)
|
|
221
|
+
.map((entry) => entry.trim())
|
|
222
|
+
.filter(Boolean);
|
|
223
|
+
}
|
|
224
|
+
function customInputCharCount(value, placeholder) {
|
|
225
|
+
const base = value.length > 0 ? value.length : Math.min(placeholder.length, 22);
|
|
226
|
+
return Math.max(18, Math.min(base + 2, 72));
|
|
227
|
+
}
|
|
228
|
+
function normalizeColorInputValue(value) {
|
|
229
|
+
if (typeof value === 'string' && /^#[0-9a-fA-F]{6}$/.test(value))
|
|
230
|
+
return value;
|
|
231
|
+
return '#000000';
|
|
232
|
+
}
|
|
233
|
+
function fileValueLabel(value) {
|
|
234
|
+
if (Array.isArray(value))
|
|
235
|
+
return value.join(', ');
|
|
236
|
+
return typeof value === 'string' ? value : '';
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=QuestionForm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QuestionForm.js","sourceRoot":"","sources":["../../../src/react/components/QuestionForm.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { QuestionForm as QuestionFormType } from '../../core/index.js';
|
|
2
|
+
export interface QuestionsPanelProps {
|
|
3
|
+
form: QuestionFormType | null;
|
|
4
|
+
interactive: boolean;
|
|
5
|
+
/** Disables Continue/Skip while the turn is busy, without locking the form itself. */
|
|
6
|
+
submitDisabled?: boolean;
|
|
7
|
+
submittedAnswers?: Record<string, string | string[]>;
|
|
8
|
+
/** The assistant turn is still streaming the form — keeps Continue disabled and shows a generating hint. */
|
|
9
|
+
generating?: boolean;
|
|
10
|
+
onSubmit: (text: string, answers: Record<string, string | string[]>) => void;
|
|
11
|
+
}
|
|
12
|
+
export declare function QuestionsPanel({ form, interactive, submitDisabled, submittedAnswers, generating, onSubmit }: QuestionsPanelProps): import("react").JSX.Element | null;
|
|
13
|
+
//# sourceMappingURL=QuestionsPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QuestionsPanel.d.ts","sourceRoot":"","sources":["../../../src/react/components/QuestionsPanel.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAI5E,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,OAAO,CAAC;IACrB,sFAAsF;IACtF,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IACrD,4GAA4G;IAC5G,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;CAC9E;AAED,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,cAAsB,EAAE,gBAAgB,EAAE,UAAkB,EAAE,QAAQ,EAAE,EAAE,mBAAmB,sCA0BhJ"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* @module QuestionsPanel
|
|
4
|
+
*
|
|
5
|
+
* A host-facing wrapper around `<QuestionForm>` that owns the Continue/Skip
|
|
6
|
+
* footer UI and forwards `ready`/answer-change state. Generalized from OD's
|
|
7
|
+
* `components/QuestionsPanel.tsx`: the OD original also owns PostHog
|
|
8
|
+
* analytics tracking (`trackQuestionsFormClick`/`trackQuestionsFormSurfaceView`),
|
|
9
|
+
* a project-scoped file-upload path (`uploadProjectFiles`), and a 10-minute
|
|
10
|
+
* skip-countdown auto-continue — all OD product policy, not generic panel
|
|
11
|
+
* behavior, so they are dropped here per
|
|
12
|
+
* `ADS-memory/reports/jini-port/recon/r4b-webui-design.md` §1's "prune OD actions"
|
|
13
|
+
* directive for this component family. A host that wants analytics gets it
|
|
14
|
+
* for free via `<JiniChatProvider analytics={...}>` (not wired into this
|
|
15
|
+
* component directly — see `AnalyticsAdapter`); a host that wants a
|
|
16
|
+
* skip-countdown or file-upload-backed answers can compose its own wrapper
|
|
17
|
+
* around the exported `<QuestionForm>` instead. className/structure (`qp-*`)
|
|
18
|
+
* kept close to the original; every user-facing string wrapped in `useT()`.
|
|
19
|
+
*/
|
|
20
|
+
import { useRef, useState } from 'react';
|
|
21
|
+
import { useT } from '../hooks/context.js';
|
|
22
|
+
import { QuestionForm } from './QuestionForm.js';
|
|
23
|
+
export function QuestionsPanel({ form, interactive, submitDisabled = false, submittedAnswers, generating = false, onSubmit }) {
|
|
24
|
+
const t = useT();
|
|
25
|
+
const formRef = useRef(null);
|
|
26
|
+
const [ready, setReady] = useState(false);
|
|
27
|
+
if (!form)
|
|
28
|
+
return null;
|
|
29
|
+
const answered = submittedAnswers !== undefined;
|
|
30
|
+
const busy = submitDisabled || generating;
|
|
31
|
+
return (_jsxs("div", { className: "qp-panel", children: [_jsx(QuestionForm, { ref: formRef, form: form, interactive: interactive, ...(submittedAnswers !== undefined ? { submittedAnswers } : {}), hideInternalSubmit: true, onReadyChange: setReady, onSubmit: onSubmit }), !answered ? (_jsxs("div", { className: "qp-foot", children: [generating ? _jsx("span", { className: "qp-hint", children: t('Still generating…') }) : null, _jsx("button", { type: "button", className: "qp-skip", disabled: busy, onClick: () => formRef.current?.skipAll(), children: t('Skip') }), _jsx("button", { type: "button", className: "qp-continue primary", disabled: busy || !ready, onClick: () => formRef.current?.submit(), children: t('Continue') })] })) : null] }));
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=QuestionsPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QuestionsPanel.js","sourceRoot":"","sources":["../../../src/react/components/QuestionsPanel.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAA2B,MAAM,mBAAmB,CAAC;AAa1E,MAAM,UAAU,cAAc,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,GAAG,KAAK,EAAE,gBAAgB,EAAE,UAAU,GAAG,KAAK,EAAE,QAAQ,EAAuB;IAC/I,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;IACjB,MAAM,OAAO,GAAG,MAAM,CAAqB,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE1C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,QAAQ,GAAG,gBAAgB,KAAK,SAAS,CAAC;IAChD,MAAM,IAAI,GAAG,cAAc,IAAI,UAAU,CAAC;IAE1C,OAAO,CACL,eAAK,SAAS,EAAC,UAAU,aACvB,KAAC,YAAY,IAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,KAAM,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,kBAAkB,QAAC,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAI,EACrM,CAAC,QAAQ,CAAC,CAAC,CAAC,CACX,eAAK,SAAS,EAAC,SAAS,aACrB,UAAU,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,SAAS,YAAE,CAAC,CAAC,mBAAmB,CAAC,GAAQ,CAAC,CAAC,CAAC,IAAI,EAC9E,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,SAAS,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,YAChG,CAAC,CAAC,MAAM,CAAC,GACH,EACT,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,qBAAqB,EAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,YACrH,CAAC,CAAC,UAAU,CAAC,GACP,IACL,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { TodoItem } from '../../core/index.js';
|
|
2
|
+
export interface TodoCardProps {
|
|
3
|
+
todos: TodoItem[];
|
|
4
|
+
runStreaming?: boolean;
|
|
5
|
+
onDismiss?: () => void;
|
|
6
|
+
}
|
|
7
|
+
export declare function TodoCard({ todos, runStreaming, onDismiss }: TodoCardProps): import("react").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=TodoCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TodoCard.d.ts","sourceRoot":"","sources":["../../../src/react/components/TodoCard.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAIpD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,YAAoB,EAAE,SAAS,EAAE,EAAE,aAAa,+BA0DjF"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* @module TodoCard
|
|
4
|
+
*
|
|
5
|
+
* Renders a `TodoWrite`-style plan snapshot as a collapsible checklist.
|
|
6
|
+
* Ported from OD's `components/ToolCard.tsx` (`TodoCard`, verified 0 OD
|
|
7
|
+
* product references) with className/structure kept verbatim (`op-*`
|
|
8
|
+
* classes — this package ships unstyled semantic markup, same convention as
|
|
9
|
+
* `@jini-ai/ui`'s already-ported components; a host supplies CSS) and every
|
|
10
|
+
* user-facing string wrapped in `useT()`.
|
|
11
|
+
*/
|
|
12
|
+
import { useState } from 'react';
|
|
13
|
+
import { useT } from '../hooks/context.js';
|
|
14
|
+
import { Icon } from './Icon.js';
|
|
15
|
+
export function TodoCard({ todos, runStreaming = false, onDismiss }) {
|
|
16
|
+
const t = useT();
|
|
17
|
+
const hasInProgress = todos.some((todo) => todo.status === 'in_progress');
|
|
18
|
+
const hasPending = todos.some((todo) => todo.status === 'pending' || todo.status === 'in_progress');
|
|
19
|
+
const defaultExpanded = todos.length > 0 && (hasInProgress || hasPending || runStreaming);
|
|
20
|
+
const [overrideExpanded, setOverrideExpanded] = useState(null);
|
|
21
|
+
const expanded = overrideExpanded ?? defaultExpanded;
|
|
22
|
+
const inProgressTodo = todos.find((todo) => todo.status === 'in_progress');
|
|
23
|
+
const completed = todos.filter((todo) => todo.status === 'completed').length;
|
|
24
|
+
const done = todos.filter((todo) => todo.status === 'completed' || todo.status === 'in_progress').length;
|
|
25
|
+
const allComplete = todos.length > 0 && completed === todos.length;
|
|
26
|
+
const showDismiss = Boolean(onDismiss) && allComplete;
|
|
27
|
+
return (_jsxs("div", { className: `op-card op-todo${expanded ? '' : ' op-todo-collapsed'}`, children: [_jsxs("div", { className: "op-card-head op-todo-head", children: [_jsxs("button", { type: "button", className: "op-todo-toggle", "aria-expanded": expanded, onClick: () => setOverrideExpanded(!expanded), title: expanded ? t('Collapse todos') : t('Expand todos'), children: [_jsx("span", { className: "op-icon", "aria-hidden": true, children: "\u2610" }), _jsx("span", { className: "op-title", children: t('Todos') }), _jsxs("span", { className: "op-meta", children: [done, "/", todos.length] }), !expanded && inProgressTodo ? _jsx("span", { className: "op-todo-current", children: inProgressTodo.activeForm || inProgressTodo.content }) : null, _jsx("span", { className: "op-todo-chev", "aria-hidden": true, children: expanded ? _jsx(Icon, { name: "chevron-down", size: 11 }) : _jsx(Icon, { name: "chevron-right", size: 11 }) })] }), showDismiss ? (_jsx("button", { type: "button", className: "op-todo-done", onClick: () => onDismiss?.(), title: t('Dismiss'), children: t('Done') })) : null] }), _jsx("div", { className: `accordion-collapsible${expanded ? ' open' : ''}`, children: _jsx("div", { className: "accordion-collapsible-inner", children: _jsx("ul", { className: "todo-list", children: todos.map((todo, i) => (_jsxs("li", { className: `todo-item todo-${todo.status}`, children: [_jsx("span", { className: "todo-check", "aria-hidden": true, children: todo.status === 'completed' ? '✓' : todo.status === 'in_progress' ? '◐' : todo.status === 'stopped' ? '!' : '○' }), _jsx("span", { className: "todo-text", children: todo.status === 'in_progress' && todo.activeForm ? todo.activeForm : todo.content })] }, i))) }) }) })] }));
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=TodoCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TodoCard.js","sourceRoot":"","sources":["../../../src/react/components/TodoCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { AgentEvent } from '../../core/index.js';
|
|
2
|
+
type ToolUseEvent = Extract<AgentEvent, {
|
|
3
|
+
kind: 'tool_use';
|
|
4
|
+
}>;
|
|
5
|
+
type ToolResultEvent = Extract<AgentEvent, {
|
|
6
|
+
kind: 'tool_result';
|
|
7
|
+
}>;
|
|
8
|
+
export interface ToolCardProps {
|
|
9
|
+
use: ToolUseEvent;
|
|
10
|
+
result?: ToolResultEvent | undefined;
|
|
11
|
+
/** Whether the owning run is still streaming. Forwarded to registered renderers via `status`. */
|
|
12
|
+
runStreaming?: boolean;
|
|
13
|
+
/** Whether the owning run reached a successful terminal status. Missing tool results in a succeeded run render as done. */
|
|
14
|
+
runSucceeded?: boolean;
|
|
15
|
+
/** Basenames known to exist in the host's project/workspace — gates the "open" affordance on file-shaped tools. Omit to always show it. */
|
|
16
|
+
projectFileNames?: Set<string>;
|
|
17
|
+
/** Lifts a basename up to the host so it can focus the matching tab in its own file viewer. */
|
|
18
|
+
onRequestOpenFile?: (name: string) => void;
|
|
19
|
+
}
|
|
20
|
+
export declare function ToolCard({ use, result, runStreaming, runSucceeded, projectFileNames, onRequestOpenFile }: ToolCardProps): import("react").JSX.Element | null;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=ToolCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolCard.d.ts","sourceRoot":"","sources":["../../../src/react/components/ToolCard.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,UAAU,EAAwB,MAAM,qBAAqB,CAAC;AAO5E,KAAK,YAAY,GAAG,OAAO,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,CAAC;AAC9D,KAAK,eAAe,GAAG,OAAO,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC,CAAC;AAEpE,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,YAAY,CAAC;IAClB,MAAM,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IACrC,iGAAiG;IACjG,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,2HAA2H;IAC3H,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,2IAA2I;IAC3I,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,+FAA+F;IAC/F,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AASD,wBAAgB,QAAQ,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,EAAE,aAAa,sCAgBvH"}
|