@a5c-ai/genty-ui 5.1.1-staging.00ceebd28cf2
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 +94 -0
- package/dist/client/GatewayClient.d.ts +72 -0
- package/dist/client/GatewayClient.d.ts.map +1 -0
- package/dist/client/GatewayClient.js +239 -0
- package/dist/client/GatewayClient.js.map +1 -0
- package/dist/client/backoff.d.ts +6 -0
- package/dist/client/backoff.d.ts.map +1 -0
- package/dist/client/backoff.js +9 -0
- package/dist/client/backoff.js.map +1 -0
- package/dist/client/errors.d.ts +9 -0
- package/dist/client/errors.d.ts.map +1 -0
- package/dist/client/errors.js +19 -0
- package/dist/client/errors.js.map +1 -0
- package/dist/client/transports/ws-browser.d.ts +12 -0
- package/dist/client/transports/ws-browser.d.ts.map +1 -0
- package/dist/client/transports/ws-browser.js +24 -0
- package/dist/client/transports/ws-browser.js.map +1 -0
- package/dist/client/transports/ws-node.d.ts +2 -0
- package/dist/client/transports/ws-node.d.ts.map +1 -0
- package/dist/client/transports/ws-node.js +25 -0
- package/dist/client/transports/ws-node.js.map +1 -0
- package/dist/client/transports/ws-react-native.d.ts +2 -0
- package/dist/client/transports/ws-react-native.d.ts.map +1 -0
- package/dist/client/transports/ws-react-native.js +24 -0
- package/dist/client/transports/ws-react-native.js.map +1 -0
- package/dist/codegen/kotlin-types.d.ts +1 -0
- package/dist/codegen/kotlin-types.d.ts.map +1 -0
- package/dist/codegen/kotlin-types.js +236 -0
- package/dist/codegen/kotlin-types.js.map +1 -0
- package/dist/codegen/swift-types.d.ts +1 -0
- package/dist/codegen/swift-types.d.ts.map +1 -0
- package/dist/codegen/swift-types.js +298 -0
- package/dist/codegen/swift-types.js.map +1 -0
- package/dist/components/Agent/AgentAppearanceEditor.d.ts +23 -0
- package/dist/components/Agent/AgentAppearanceEditor.d.ts.map +1 -0
- package/dist/components/Agent/AgentAppearanceEditor.js +10 -0
- package/dist/components/Agent/AgentAppearanceEditor.js.map +1 -0
- package/dist/components/Agent/AgentCreateWizard.d.ts +26 -0
- package/dist/components/Agent/AgentCreateWizard.d.ts.map +1 -0
- package/dist/components/Agent/AgentCreateWizard.js +136 -0
- package/dist/components/Agent/AgentCreateWizard.js.map +1 -0
- package/dist/components/Agent/AgentDirectory.d.ts +8 -0
- package/dist/components/Agent/AgentDirectory.d.ts.map +1 -0
- package/dist/components/Agent/AgentDirectory.js +19 -0
- package/dist/components/Agent/AgentDirectory.js.map +1 -0
- package/dist/components/Agent/AgentPersonaEditor.d.ts +23 -0
- package/dist/components/Agent/AgentPersonaEditor.d.ts.map +1 -0
- package/dist/components/Agent/AgentPersonaEditor.js +29 -0
- package/dist/components/Agent/AgentPersonaEditor.js.map +1 -0
- package/dist/components/Agent/AgentProfileCard.d.ts +39 -0
- package/dist/components/Agent/AgentProfileCard.d.ts.map +1 -0
- package/dist/components/Agent/AgentProfileCard.js +27 -0
- package/dist/components/Agent/AgentProfileCard.js.map +1 -0
- package/dist/components/Agent/AgentProfilePage.d.ts +68 -0
- package/dist/components/Agent/AgentProfilePage.d.ts.map +1 -0
- package/dist/components/Agent/AgentProfilePage.js +31 -0
- package/dist/components/Agent/AgentProfilePage.js.map +1 -0
- package/dist/components/Agent/AgentSoulEditor.d.ts +5 -0
- package/dist/components/Agent/AgentSoulEditor.d.ts.map +1 -0
- package/dist/components/Agent/AgentSoulEditor.js +5 -0
- package/dist/components/Agent/AgentSoulEditor.js.map +1 -0
- package/dist/components/Agent/AgentVoiceEditor.d.ts +17 -0
- package/dist/components/Agent/AgentVoiceEditor.d.ts.map +1 -0
- package/dist/components/Agent/AgentVoiceEditor.js +29 -0
- package/dist/components/Agent/AgentVoiceEditor.js.map +1 -0
- package/dist/components/Agent/ApprovalActions.d.ts +5 -0
- package/dist/components/Agent/ApprovalActions.d.ts.map +1 -0
- package/dist/components/Agent/ApprovalActions.js +55 -0
- package/dist/components/Agent/ApprovalActions.js.map +1 -0
- package/dist/components/Agent/DispatchButton.d.ts +37 -0
- package/dist/components/Agent/DispatchButton.d.ts.map +1 -0
- package/dist/components/Agent/DispatchButton.js +111 -0
- package/dist/components/Agent/DispatchButton.js.map +1 -0
- package/dist/components/Agent/index.d.ts +20 -0
- package/dist/components/Agent/index.d.ts.map +1 -0
- package/dist/components/Agent/index.js +11 -0
- package/dist/components/Agent/index.js.map +1 -0
- package/dist/components/AgentPicker.d.ts +5 -0
- package/dist/components/AgentPicker.d.ts.map +1 -0
- package/dist/components/AgentPicker.js +7 -0
- package/dist/components/AgentPicker.js.map +1 -0
- package/dist/components/Chat/ChatMessages.d.ts +32 -0
- package/dist/components/Chat/ChatMessages.d.ts.map +1 -0
- package/dist/components/Chat/ChatMessages.js +146 -0
- package/dist/components/Chat/ChatMessages.js.map +1 -0
- package/dist/components/Chat/chatStyles.d.ts +41 -0
- package/dist/components/Chat/chatStyles.d.ts.map +1 -0
- package/dist/components/Chat/chatStyles.js +181 -0
- package/dist/components/Chat/chatStyles.js.map +1 -0
- package/dist/components/Chat/index.d.ts +2 -0
- package/dist/components/Chat/index.d.ts.map +1 -0
- package/dist/components/Chat/index.js +3 -0
- package/dist/components/Chat/index.js.map +1 -0
- package/dist/components/ConnectionBanner.d.ts +4 -0
- package/dist/components/ConnectionBanner.d.ts.map +1 -0
- package/dist/components/ConnectionBanner.js +9 -0
- package/dist/components/ConnectionBanner.js.map +1 -0
- package/dist/components/CostMeter.d.ts +3 -0
- package/dist/components/CostMeter.d.ts.map +1 -0
- package/dist/components/CostMeter.js +7 -0
- package/dist/components/CostMeter.js.map +1 -0
- package/dist/components/EventList.d.ts +9 -0
- package/dist/components/EventList.d.ts.map +1 -0
- package/dist/components/EventList.js +21 -0
- package/dist/components/EventList.js.map +1 -0
- package/dist/components/HookApprovalPrompt.d.ts +10 -0
- package/dist/components/HookApprovalPrompt.d.ts.map +1 -0
- package/dist/components/HookApprovalPrompt.js +20 -0
- package/dist/components/HookApprovalPrompt.js.map +1 -0
- package/dist/components/InputBar.d.ts +5 -0
- package/dist/components/InputBar.d.ts.map +1 -0
- package/dist/components/InputBar.js +9 -0
- package/dist/components/InputBar.js.map +1 -0
- package/dist/components/Kanban/KanbanBoard.d.ts +14 -0
- package/dist/components/Kanban/KanbanBoard.d.ts.map +1 -0
- package/dist/components/Kanban/KanbanBoard.js +183 -0
- package/dist/components/Kanban/KanbanBoard.js.map +1 -0
- package/dist/components/Kanban/KanbanCard.d.ts +13 -0
- package/dist/components/Kanban/KanbanCard.d.ts.map +1 -0
- package/dist/components/Kanban/KanbanCard.js +75 -0
- package/dist/components/Kanban/KanbanCard.js.map +1 -0
- package/dist/components/Kanban/KanbanColumn.d.ts +25 -0
- package/dist/components/Kanban/KanbanColumn.d.ts.map +1 -0
- package/dist/components/Kanban/KanbanColumn.js +130 -0
- package/dist/components/Kanban/KanbanColumn.js.map +1 -0
- package/dist/components/Kanban/KanbanFilters.d.ts +16 -0
- package/dist/components/Kanban/KanbanFilters.d.ts.map +1 -0
- package/dist/components/Kanban/KanbanFilters.js +45 -0
- package/dist/components/Kanban/KanbanFilters.js.map +1 -0
- package/dist/components/Kanban/index.d.ts +5 -0
- package/dist/components/Kanban/index.d.ts.map +1 -0
- package/dist/components/Kanban/index.js +6 -0
- package/dist/components/Kanban/index.js.map +1 -0
- package/dist/components/Kanban/kanbanHelpers.d.ts +76 -0
- package/dist/components/Kanban/kanbanHelpers.d.ts.map +1 -0
- package/dist/components/Kanban/kanbanHelpers.js +160 -0
- package/dist/components/Kanban/kanbanHelpers.js.map +1 -0
- package/dist/components/Memory/MemoryOntologyEditor.d.ts +27 -0
- package/dist/components/Memory/MemoryOntologyEditor.d.ts.map +1 -0
- package/dist/components/Memory/MemoryOntologyEditor.js +225 -0
- package/dist/components/Memory/MemoryOntologyEditor.js.map +1 -0
- package/dist/components/Memory/MemorySearchForm.d.ts +46 -0
- package/dist/components/Memory/MemorySearchForm.d.ts.map +1 -0
- package/dist/components/Memory/MemorySearchForm.js +194 -0
- package/dist/components/Memory/MemorySearchForm.js.map +1 -0
- package/dist/components/Memory/index.d.ts +4 -0
- package/dist/components/Memory/index.d.ts.map +1 -0
- package/dist/components/Memory/index.js +3 -0
- package/dist/components/Memory/index.js.map +1 -0
- package/dist/components/ModelPicker.d.ts +5 -0
- package/dist/components/ModelPicker.d.ts.map +1 -0
- package/dist/components/ModelPicker.js +7 -0
- package/dist/components/ModelPicker.js.map +1 -0
- package/dist/components/Observability/ActivityFeed.d.ts +13 -0
- package/dist/components/Observability/ActivityFeed.d.ts.map +1 -0
- package/dist/components/Observability/ActivityFeed.js +155 -0
- package/dist/components/Observability/ActivityFeed.js.map +1 -0
- package/dist/components/Observability/ToolInspector.d.ts +22 -0
- package/dist/components/Observability/ToolInspector.d.ts.map +1 -0
- package/dist/components/Observability/ToolInspector.js +166 -0
- package/dist/components/Observability/ToolInspector.js.map +1 -0
- package/dist/components/Observability/index.d.ts +4 -0
- package/dist/components/Observability/index.d.ts.map +1 -0
- package/dist/components/Observability/index.js +3 -0
- package/dist/components/Observability/index.js.map +1 -0
- package/dist/components/Rendering/EffectTreeView.d.ts +20 -0
- package/dist/components/Rendering/EffectTreeView.d.ts.map +1 -0
- package/dist/components/Rendering/EffectTreeView.js +123 -0
- package/dist/components/Rendering/EffectTreeView.js.map +1 -0
- package/dist/components/Rendering/MessageTypeRenderer.d.ts +4 -0
- package/dist/components/Rendering/MessageTypeRenderer.d.ts.map +1 -0
- package/dist/components/Rendering/MessageTypeRenderer.js +108 -0
- package/dist/components/Rendering/MessageTypeRenderer.js.map +1 -0
- package/dist/components/Rendering/ProgressStatusLine.d.ts +9 -0
- package/dist/components/Rendering/ProgressStatusLine.d.ts.map +1 -0
- package/dist/components/Rendering/ProgressStatusLine.js +57 -0
- package/dist/components/Rendering/ProgressStatusLine.js.map +1 -0
- package/dist/components/Rendering/StreamingOutputPanel.d.ts +20 -0
- package/dist/components/Rendering/StreamingOutputPanel.d.ts.map +1 -0
- package/dist/components/Rendering/StreamingOutputPanel.js +75 -0
- package/dist/components/Rendering/StreamingOutputPanel.js.map +1 -0
- package/dist/components/Rendering/StructuredDiffView.d.ts +13 -0
- package/dist/components/Rendering/StructuredDiffView.d.ts.map +1 -0
- package/dist/components/Rendering/StructuredDiffView.js +106 -0
- package/dist/components/Rendering/StructuredDiffView.js.map +1 -0
- package/dist/components/Rendering/SubagentDrillDown.d.ts +46 -0
- package/dist/components/Rendering/SubagentDrillDown.d.ts.map +1 -0
- package/dist/components/Rendering/SubagentDrillDown.js +101 -0
- package/dist/components/Rendering/SubagentDrillDown.js.map +1 -0
- package/dist/components/Rendering/index.d.ts +12 -0
- package/dist/components/Rendering/index.d.ts.map +1 -0
- package/dist/components/Rendering/index.js +10 -0
- package/dist/components/Rendering/index.js.map +1 -0
- package/dist/components/RunStatusBadge.d.ts +3 -0
- package/dist/components/RunStatusBadge.d.ts.map +1 -0
- package/dist/components/RunStatusBadge.js +7 -0
- package/dist/components/RunStatusBadge.js.map +1 -0
- package/dist/components/Session/SessionCost.d.ts +22 -0
- package/dist/components/Session/SessionCost.d.ts.map +1 -0
- package/dist/components/Session/SessionCost.js +168 -0
- package/dist/components/Session/SessionCost.js.map +1 -0
- package/dist/components/Session/SessionShell.d.ts +63 -0
- package/dist/components/Session/SessionShell.d.ts.map +1 -0
- package/dist/components/Session/SessionShell.js +150 -0
- package/dist/components/Session/SessionShell.js.map +1 -0
- package/dist/components/Session/SessionTabs.d.ts +6 -0
- package/dist/components/Session/SessionTabs.d.ts.map +1 -0
- package/dist/components/Session/SessionTabs.js +7 -0
- package/dist/components/Session/SessionTabs.js.map +1 -0
- package/dist/components/Session/index.d.ts +7 -0
- package/dist/components/Session/index.d.ts.map +1 -0
- package/dist/components/Session/index.js +5 -0
- package/dist/components/Session/index.js.map +1 -0
- package/dist/components/Session/sessionUtils.d.ts +31 -0
- package/dist/components/Session/sessionUtils.d.ts.map +1 -0
- package/dist/components/Session/sessionUtils.js +90 -0
- package/dist/components/Session/sessionUtils.js.map +1 -0
- package/dist/components/SessionListItem.d.ts +5 -0
- package/dist/components/SessionListItem.d.ts.map +1 -0
- package/dist/components/SessionListItem.js +8 -0
- package/dist/components/SessionListItem.js.map +1 -0
- package/dist/components/Workspace/WorkspaceAssociations.d.ts +10 -0
- package/dist/components/Workspace/WorkspaceAssociations.d.ts.map +1 -0
- package/dist/components/Workspace/WorkspaceAssociations.js +72 -0
- package/dist/components/Workspace/WorkspaceAssociations.js.map +1 -0
- package/dist/components/Workspace/WorkspaceCodespace.d.ts +18 -0
- package/dist/components/Workspace/WorkspaceCodespace.d.ts.map +1 -0
- package/dist/components/Workspace/WorkspaceCodespace.js +91 -0
- package/dist/components/Workspace/WorkspaceCodespace.js.map +1 -0
- package/dist/components/Workspace/WorkspacePanel.d.ts +89 -0
- package/dist/components/Workspace/WorkspacePanel.d.ts.map +1 -0
- package/dist/components/Workspace/WorkspacePanel.js +451 -0
- package/dist/components/Workspace/WorkspacePanel.js.map +1 -0
- package/dist/components/Workspace/index.d.ts +6 -0
- package/dist/components/Workspace/index.d.ts.map +1 -0
- package/dist/components/Workspace/index.js +4 -0
- package/dist/components/Workspace/index.js.map +1 -0
- package/dist/components/event-cards/TextDeltaBubble.d.ts +3 -0
- package/dist/components/event-cards/TextDeltaBubble.d.ts.map +1 -0
- package/dist/components/event-cards/TextDeltaBubble.js +7 -0
- package/dist/components/event-cards/TextDeltaBubble.js.map +1 -0
- package/dist/components/event-cards/ThinkingBubble.d.ts +3 -0
- package/dist/components/event-cards/ThinkingBubble.d.ts.map +1 -0
- package/dist/components/event-cards/ThinkingBubble.js +7 -0
- package/dist/components/event-cards/ThinkingBubble.js.map +1 -0
- package/dist/components/event-cards/ToolCallCard.d.ts +7 -0
- package/dist/components/event-cards/ToolCallCard.d.ts.map +1 -0
- package/dist/components/event-cards/ToolCallCard.js +27 -0
- package/dist/components/event-cards/ToolCallCard.js.map +1 -0
- package/dist/components/event-cards/ToolResultCard.d.ts +7 -0
- package/dist/components/event-cards/ToolResultCard.d.ts.map +1 -0
- package/dist/components/event-cards/ToolResultCard.js +20 -0
- package/dist/components/event-cards/ToolResultCard.js.map +1 -0
- package/dist/components/event-cards/builtins.d.ts +1 -0
- package/dist/components/event-cards/builtins.d.ts.map +1 -0
- package/dist/components/event-cards/builtins.js +31 -0
- package/dist/components/event-cards/builtins.js.map +1 -0
- package/dist/components/event-cards/index.d.ts +6 -0
- package/dist/components/event-cards/index.d.ts.map +1 -0
- package/dist/components/event-cards/index.js +6 -0
- package/dist/components/event-cards/index.js.map +1 -0
- package/dist/components/event-cards/registry.d.ts +24 -0
- package/dist/components/event-cards/registry.d.ts.map +1 -0
- package/dist/components/event-cards/registry.js +24 -0
- package/dist/components/event-cards/registry.js.map +1 -0
- package/dist/components/event-cards/renderers/bash.d.ts +2 -0
- package/dist/components/event-cards/renderers/bash.d.ts.map +1 -0
- package/dist/components/event-cards/renderers/bash.js +8 -0
- package/dist/components/event-cards/renderers/bash.js.map +1 -0
- package/dist/components/event-cards/renderers/edit.d.ts +2 -0
- package/dist/components/event-cards/renderers/edit.d.ts.map +1 -0
- package/dist/components/event-cards/renderers/edit.js +8 -0
- package/dist/components/event-cards/renderers/edit.js.map +1 -0
- package/dist/components/event-cards/renderers/generic.d.ts +2 -0
- package/dist/components/event-cards/renderers/generic.d.ts.map +1 -0
- package/dist/components/event-cards/renderers/generic.js +33 -0
- package/dist/components/event-cards/renderers/generic.js.map +1 -0
- package/dist/components/event-cards/renderers/glob.d.ts +2 -0
- package/dist/components/event-cards/renderers/glob.d.ts.map +1 -0
- package/dist/components/event-cards/renderers/glob.js +8 -0
- package/dist/components/event-cards/renderers/glob.js.map +1 -0
- package/dist/components/event-cards/renderers/grep.d.ts +2 -0
- package/dist/components/event-cards/renderers/grep.d.ts.map +1 -0
- package/dist/components/event-cards/renderers/grep.js +8 -0
- package/dist/components/event-cards/renderers/grep.js.map +1 -0
- package/dist/components/event-cards/renderers/read.d.ts +2 -0
- package/dist/components/event-cards/renderers/read.d.ts.map +1 -0
- package/dist/components/event-cards/renderers/read.js +8 -0
- package/dist/components/event-cards/renderers/read.js.map +1 -0
- package/dist/components/event-cards/renderers/web-fetch.d.ts +2 -0
- package/dist/components/event-cards/renderers/web-fetch.d.ts.map +1 -0
- package/dist/components/event-cards/renderers/web-fetch.js +8 -0
- package/dist/components/event-cards/renderers/web-fetch.js.map +1 -0
- package/dist/components/event-cards/renderers/web-search.d.ts +2 -0
- package/dist/components/event-cards/renderers/web-search.d.ts.map +1 -0
- package/dist/components/event-cards/renderers/web-search.js +8 -0
- package/dist/components/event-cards/renderers/web-search.js.map +1 -0
- package/dist/components/event-cards/renderers/write.d.ts +2 -0
- package/dist/components/event-cards/renderers/write.d.ts.map +1 -0
- package/dist/components/event-cards/renderers/write.js +8 -0
- package/dist/components/event-cards/renderers/write.js.map +1 -0
- package/dist/components/primitives/Button.d.ts +5 -0
- package/dist/components/primitives/Button.d.ts.map +1 -0
- package/dist/components/primitives/Button.js +19 -0
- package/dist/components/primitives/Button.js.map +1 -0
- package/dist/components/primitives/Card.d.ts +2 -0
- package/dist/components/primitives/Card.d.ts.map +1 -0
- package/dist/components/primitives/Card.js +22 -0
- package/dist/components/primitives/Card.js.map +1 -0
- package/dist/components/primitives/CommandPalette.d.ts +21 -0
- package/dist/components/primitives/CommandPalette.d.ts.map +1 -0
- package/dist/components/primitives/CommandPalette.js +229 -0
- package/dist/components/primitives/CommandPalette.js.map +1 -0
- package/dist/components/primitives/ConfirmDialog.d.ts +19 -0
- package/dist/components/primitives/ConfirmDialog.d.ts.map +1 -0
- package/dist/components/primitives/ConfirmDialog.js +78 -0
- package/dist/components/primitives/ConfirmDialog.js.map +1 -0
- package/dist/components/primitives/NotificationBell.d.ts +5 -0
- package/dist/components/primitives/NotificationBell.d.ts.map +1 -0
- package/dist/components/primitives/NotificationBell.js +202 -0
- package/dist/components/primitives/NotificationBell.js.map +1 -0
- package/dist/components/primitives/Pagination.d.ts +14 -0
- package/dist/components/primitives/Pagination.d.ts.map +1 -0
- package/dist/components/primitives/Pagination.js +46 -0
- package/dist/components/primitives/Pagination.js.map +1 -0
- package/dist/components/primitives/ScrollContainer.d.ts +2 -0
- package/dist/components/primitives/ScrollContainer.d.ts.map +1 -0
- package/dist/components/primitives/ScrollContainer.js +17 -0
- package/dist/components/primitives/ScrollContainer.js.map +1 -0
- package/dist/components/primitives/Text.d.ts +2 -0
- package/dist/components/primitives/Text.d.ts.map +1 -0
- package/dist/components/primitives/Text.js +14 -0
- package/dist/components/primitives/Text.js.map +1 -0
- package/dist/components/primitives/index.d.ts +13 -0
- package/dist/components/primitives/index.d.ts.map +1 -0
- package/dist/components/primitives/index.js +9 -0
- package/dist/components/primitives/index.js.map +1 -0
- package/dist/components/primitives/theme.d.ts +8 -0
- package/dist/components/primitives/theme.d.ts.map +1 -0
- package/dist/components/primitives/theme.js +10 -0
- package/dist/components/primitives/theme.js.map +1 -0
- package/dist/components/session-flow/SessionFlowView.d.ts +9 -0
- package/dist/components/session-flow/SessionFlowView.d.ts.map +1 -0
- package/dist/components/session-flow/SessionFlowView.js +228 -0
- package/dist/components/session-flow/SessionFlowView.js.map +1 -0
- package/dist/gateway.d.ts +8 -0
- package/dist/gateway.d.ts.map +1 -0
- package/dist/gateway.js +8 -0
- package/dist/gateway.js.map +1 -0
- package/dist/hooks/GatewayProvider.d.ts +10 -0
- package/dist/hooks/GatewayProvider.d.ts.map +1 -0
- package/dist/hooks/GatewayProvider.js +84 -0
- package/dist/hooks/GatewayProvider.js.map +1 -0
- package/dist/hooks/useAgents.d.ts +1 -0
- package/dist/hooks/useAgents.d.ts.map +1 -0
- package/dist/hooks/useAgents.js +7 -0
- package/dist/hooks/useAgents.js.map +1 -0
- package/dist/hooks/useConnection.d.ts +1 -0
- package/dist/hooks/useConnection.d.ts.map +1 -0
- package/dist/hooks/useConnection.js +7 -0
- package/dist/hooks/useConnection.js.map +1 -0
- package/dist/hooks/useCostTotals.d.ts +3 -0
- package/dist/hooks/useCostTotals.d.ts.map +1 -0
- package/dist/hooks/useCostTotals.js +8 -0
- package/dist/hooks/useCostTotals.js.map +1 -0
- package/dist/hooks/useGateway.d.ts +4 -0
- package/dist/hooks/useGateway.d.ts.map +1 -0
- package/dist/hooks/useGateway.js +11 -0
- package/dist/hooks/useGateway.js.map +1 -0
- package/dist/hooks/useHookRequests.d.ts +1 -0
- package/dist/hooks/useHookRequests.d.ts.map +1 -0
- package/dist/hooks/useHookRequests.js +9 -0
- package/dist/hooks/useHookRequests.js.map +1 -0
- package/dist/hooks/useRun.d.ts +1 -0
- package/dist/hooks/useRun.d.ts.map +1 -0
- package/dist/hooks/useRun.js +7 -0
- package/dist/hooks/useRun.js.map +1 -0
- package/dist/hooks/useRunEvents.d.ts +8 -0
- package/dist/hooks/useRunEvents.d.ts.map +1 -0
- package/dist/hooks/useRunEvents.js +8 -0
- package/dist/hooks/useRunEvents.js.map +1 -0
- package/dist/hooks/useSendSessionMessage.d.ts +6 -0
- package/dist/hooks/useSendSessionMessage.d.ts.map +1 -0
- package/dist/hooks/useSendSessionMessage.js +19 -0
- package/dist/hooks/useSendSessionMessage.js.map +1 -0
- package/dist/hooks/useSession.d.ts +1 -0
- package/dist/hooks/useSession.d.ts.map +1 -0
- package/dist/hooks/useSession.js +7 -0
- package/dist/hooks/useSession.js.map +1 -0
- package/dist/hooks/useSessions.d.ts +1 -0
- package/dist/hooks/useSessions.d.ts.map +1 -0
- package/dist/hooks/useSessions.js +8 -0
- package/dist/hooks/useSessions.js.map +1 -0
- package/dist/hooks/useStartSession.d.ts +10 -0
- package/dist/hooks/useStartSession.d.ts.map +1 -0
- package/dist/hooks/useStartSession.js +29 -0
- package/dist/hooks/useStartSession.js.map +1 -0
- package/dist/hooks/useStopRun.d.ts +1 -0
- package/dist/hooks/useStopRun.d.ts.map +1 -0
- package/dist/hooks/useStopRun.js +11 -0
- package/dist/hooks/useStopRun.js.map +1 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +46 -0
- package/dist/index.js.map +1 -0
- package/dist/protocol/v1.d.ts +111 -0
- package/dist/protocol/v1.d.ts.map +1 -0
- package/dist/protocol/v1.js +2 -0
- package/dist/protocol/v1.js.map +1 -0
- package/dist/screens/AgentsScreen.d.ts +4 -0
- package/dist/screens/AgentsScreen.d.ts.map +1 -0
- package/dist/screens/AgentsScreen.js +9 -0
- package/dist/screens/AgentsScreen.js.map +1 -0
- package/dist/screens/HookInboxScreen.d.ts +1 -0
- package/dist/screens/HookInboxScreen.d.ts.map +1 -0
- package/dist/screens/HookInboxScreen.js +19 -0
- package/dist/screens/HookInboxScreen.js.map +1 -0
- package/dist/screens/NewRunScreen.d.ts +6 -0
- package/dist/screens/NewRunScreen.d.ts.map +1 -0
- package/dist/screens/NewRunScreen.js +35 -0
- package/dist/screens/NewRunScreen.js.map +1 -0
- package/dist/screens/SessionDetailScreen.d.ts +3 -0
- package/dist/screens/SessionDetailScreen.d.ts.map +1 -0
- package/dist/screens/SessionDetailScreen.js +46 -0
- package/dist/screens/SessionDetailScreen.js.map +1 -0
- package/dist/screens/SessionListScreen.d.ts +3 -0
- package/dist/screens/SessionListScreen.d.ts.map +1 -0
- package/dist/screens/SessionListScreen.js +9 -0
- package/dist/screens/SessionListScreen.js.map +1 -0
- package/dist/screens/SettingsScreen.d.ts +1 -0
- package/dist/screens/SettingsScreen.d.ts.map +1 -0
- package/dist/screens/SettingsScreen.js +9 -0
- package/dist/screens/SettingsScreen.js.map +1 -0
- package/dist/session-flow/adapters.d.ts +36 -0
- package/dist/session-flow/adapters.d.ts.map +1 -0
- package/dist/session-flow/adapters.js +362 -0
- package/dist/session-flow/adapters.js.map +1 -0
- package/dist/session-flow/cost.d.ts +2 -0
- package/dist/session-flow/cost.d.ts.map +1 -0
- package/dist/session-flow/cost.js +30 -0
- package/dist/session-flow/cost.js.map +1 -0
- package/dist/session-flow/file-attention.d.ts +3 -0
- package/dist/session-flow/file-attention.d.ts.map +1 -0
- package/dist/session-flow/file-attention.js +43 -0
- package/dist/session-flow/file-attention.js.map +1 -0
- package/dist/session-flow/model.d.ts +6 -0
- package/dist/session-flow/model.d.ts.map +1 -0
- package/dist/session-flow/model.js +110 -0
- package/dist/session-flow/model.js.map +1 -0
- package/dist/session-flow/native.d.ts +3 -0
- package/dist/session-flow/native.d.ts.map +1 -0
- package/dist/session-flow/native.js +185 -0
- package/dist/session-flow/native.js.map +1 -0
- package/dist/session-flow/projector.d.ts +8 -0
- package/dist/session-flow/projector.d.ts.map +1 -0
- package/dist/session-flow/projector.js +392 -0
- package/dist/session-flow/projector.js.map +1 -0
- package/dist/session-flow/types.d.ts +87 -0
- package/dist/session-flow/types.d.ts.map +1 -0
- package/dist/session-flow/types.js +2 -0
- package/dist/session-flow/types.js.map +1 -0
- package/dist/session-flow/utils.d.ts +11 -0
- package/dist/session-flow/utils.d.ts.map +1 -0
- package/dist/session-flow/utils.js +118 -0
- package/dist/session-flow/utils.js.map +1 -0
- package/dist/session-flow.d.ts +7 -0
- package/dist/session-flow.d.ts.map +1 -0
- package/dist/session-flow.js +6 -0
- package/dist/session-flow.js.map +1 -0
- package/dist/store/index.d.ts +72 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +145 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/selectors.d.ts +15 -0
- package/dist/store/selectors.d.ts.map +1 -0
- package/dist/store/selectors.js +72 -0
- package/dist/store/selectors.js.map +1 -0
- package/dist/store/slices/agents.d.ts +2 -0
- package/dist/store/slices/agents.d.ts.map +1 -0
- package/dist/store/slices/agents.js +4 -0
- package/dist/store/slices/agents.js.map +1 -0
- package/dist/store/slices/connection.d.ts +2 -0
- package/dist/store/slices/connection.d.ts.map +1 -0
- package/dist/store/slices/connection.js +4 -0
- package/dist/store/slices/connection.js.map +1 -0
- package/dist/store/slices/events.d.ts +2 -0
- package/dist/store/slices/events.d.ts.map +1 -0
- package/dist/store/slices/events.js +4 -0
- package/dist/store/slices/events.js.map +1 -0
- package/dist/store/slices/hooks.d.ts +2 -0
- package/dist/store/slices/hooks.d.ts.map +1 -0
- package/dist/store/slices/hooks.js +4 -0
- package/dist/store/slices/hooks.js.map +1 -0
- package/dist/store/slices/runs.d.ts +2 -0
- package/dist/store/slices/runs.d.ts.map +1 -0
- package/dist/store/slices/runs.js +4 -0
- package/dist/store/slices/runs.js.map +1 -0
- package/dist/store/slices/sessions.d.ts +2 -0
- package/dist/store/slices/sessions.d.ts.map +1 -0
- package/dist/store/slices/sessions.js +4 -0
- package/dist/store/slices/sessions.js.map +1 -0
- package/dist/theme/dark.d.ts +2 -0
- package/dist/theme/dark.d.ts.map +1 -0
- package/dist/theme/dark.js +21 -0
- package/dist/theme/dark.js.map +1 -0
- package/dist/theme/light.d.ts +2 -0
- package/dist/theme/light.d.ts.map +1 -0
- package/dist/theme/light.js +21 -0
- package/dist/theme/light.js.map +1 -0
- package/dist/theme/tokens.d.ts +20 -0
- package/dist/theme/tokens.d.ts.map +1 -0
- package/dist/theme/tokens.js +2 -0
- package/dist/theme/tokens.js.map +1 -0
- package/package.json +152 -0
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
function tryParseJson(value) {
|
|
4
|
+
if (value == null)
|
|
5
|
+
return value;
|
|
6
|
+
if (typeof value !== 'string')
|
|
7
|
+
return value;
|
|
8
|
+
try {
|
|
9
|
+
return JSON.parse(value);
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
return value;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function formatJson(value) {
|
|
16
|
+
if (value == null)
|
|
17
|
+
return '';
|
|
18
|
+
if (typeof value === 'string')
|
|
19
|
+
return value;
|
|
20
|
+
try {
|
|
21
|
+
return JSON.stringify(value, null, 2);
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return String(value);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function truncate(text, maxLen) {
|
|
28
|
+
if (!text || text.length <= maxLen)
|
|
29
|
+
return text || '';
|
|
30
|
+
return text.slice(0, maxLen) + '...';
|
|
31
|
+
}
|
|
32
|
+
const STATUS_COLOR = {
|
|
33
|
+
completed: '#22c55e',
|
|
34
|
+
error: '#ef4444',
|
|
35
|
+
running: '#f59e0b',
|
|
36
|
+
};
|
|
37
|
+
function statusColor(status) {
|
|
38
|
+
return STATUS_COLOR[status] || '#94a3b8';
|
|
39
|
+
}
|
|
40
|
+
const TOOL_META = {
|
|
41
|
+
bash: { label: 'Bash', prefix: '$' },
|
|
42
|
+
read: { label: 'Read', prefix: 'R' },
|
|
43
|
+
write: { label: 'Write', prefix: 'W' },
|
|
44
|
+
edit: { label: 'Edit', prefix: 'E' },
|
|
45
|
+
glob: { label: 'Glob', prefix: 'G' },
|
|
46
|
+
grep: { label: 'Grep', prefix: '/' },
|
|
47
|
+
web_fetch: { label: 'Fetch', prefix: 'F' },
|
|
48
|
+
web_search: { label: 'Search', prefix: 'S' },
|
|
49
|
+
};
|
|
50
|
+
function resolveToolMeta(toolName) {
|
|
51
|
+
const key = (toolName || '').toLowerCase().replace(/[^a-z_]/g, '');
|
|
52
|
+
return TOOL_META[key] || { label: toolName || 'Tool', prefix: 'T' };
|
|
53
|
+
}
|
|
54
|
+
function inputSummary(toolName, input) {
|
|
55
|
+
const parsed = typeof input === 'string' ? tryParseJson(input) : input;
|
|
56
|
+
if (!parsed)
|
|
57
|
+
return '';
|
|
58
|
+
const p = parsed;
|
|
59
|
+
const key = (toolName || '').toLowerCase().replace(/[^a-z_]/g, '');
|
|
60
|
+
if (key === 'bash')
|
|
61
|
+
return truncate(String(p?.command || JSON.stringify(parsed)), 120);
|
|
62
|
+
if (key === 'read')
|
|
63
|
+
return String(p?.file_path || p?.path || JSON.stringify(parsed));
|
|
64
|
+
if (key === 'write' || key === 'edit')
|
|
65
|
+
return String(p?.file_path || JSON.stringify(parsed));
|
|
66
|
+
if (key === 'glob')
|
|
67
|
+
return String(p?.pattern || JSON.stringify(parsed));
|
|
68
|
+
if (key === 'grep')
|
|
69
|
+
return String(p?.pattern || JSON.stringify(parsed));
|
|
70
|
+
if (key === 'web_fetch')
|
|
71
|
+
return String(p?.url || JSON.stringify(parsed));
|
|
72
|
+
if (key === 'web_search')
|
|
73
|
+
return String(p?.query || JSON.stringify(parsed));
|
|
74
|
+
return truncate(typeof parsed === 'string' ? parsed : JSON.stringify(parsed), 120);
|
|
75
|
+
}
|
|
76
|
+
export function ToolCallInspector({ toolName, input, output, status = 'completed', durationMs, }) {
|
|
77
|
+
const [open, setOpen] = useState(false);
|
|
78
|
+
const meta = resolveToolMeta(toolName);
|
|
79
|
+
const color = statusColor(status);
|
|
80
|
+
const summary = inputSummary(toolName, input);
|
|
81
|
+
const parsedInput = typeof input === 'string' ? tryParseJson(input) : input;
|
|
82
|
+
const parsedOutput = typeof output === 'string' ? tryParseJson(output) : output;
|
|
83
|
+
return (_jsxs("details", { open: open, onToggle: (e) => setOpen(e.target.open), "aria-label": `Tool call: ${meta.label} - ${summary || 'no input'}`, style: {
|
|
84
|
+
border: '1px solid #e2e8f0',
|
|
85
|
+
borderLeft: `3px solid ${color}`,
|
|
86
|
+
borderRadius: 4,
|
|
87
|
+
marginBottom: 6,
|
|
88
|
+
fontSize: 12,
|
|
89
|
+
backgroundColor: '#fafafa',
|
|
90
|
+
}, children: [_jsxs("summary", { style: {
|
|
91
|
+
cursor: 'pointer',
|
|
92
|
+
padding: '6px 10px',
|
|
93
|
+
display: 'flex',
|
|
94
|
+
alignItems: 'center',
|
|
95
|
+
gap: 6,
|
|
96
|
+
listStyle: 'none',
|
|
97
|
+
userSelect: 'none',
|
|
98
|
+
}, children: [_jsx("span", { style: {
|
|
99
|
+
fontFamily: 'monospace',
|
|
100
|
+
fontSize: 10,
|
|
101
|
+
color: '#fff',
|
|
102
|
+
backgroundColor: color,
|
|
103
|
+
borderRadius: 3,
|
|
104
|
+
padding: '1px 5px',
|
|
105
|
+
fontWeight: 700,
|
|
106
|
+
flexShrink: 0,
|
|
107
|
+
}, children: meta.prefix }), _jsx("strong", { style: { fontSize: 11, color: '#1e293b', flexShrink: 0 }, children: meta.label }), _jsx("span", { style: {
|
|
108
|
+
fontFamily: 'monospace',
|
|
109
|
+
fontSize: 11,
|
|
110
|
+
color: 'var(--text)',
|
|
111
|
+
flex: 1,
|
|
112
|
+
overflow: 'hidden',
|
|
113
|
+
textOverflow: 'ellipsis',
|
|
114
|
+
whiteSpace: 'nowrap',
|
|
115
|
+
}, children: summary }), durationMs != null && (_jsx("span", { style: { fontSize: 10, color: 'var(--text-muted)', flexShrink: 0 }, children: durationMs < 1000 ? `${durationMs}ms` : `${(durationMs / 1000).toFixed(1)}s` })), _jsx("span", { style: { fontSize: 10, color: 'var(--text-muted)', flexShrink: 0, marginLeft: 4 }, children: open ? '▲' : '▼' })] }), _jsxs("div", { style: { padding: '8px 10px', borderTop: '1px solid #e2e8f0' }, children: [_jsxs("div", { style: { marginBottom: parsedOutput != null ? 8 : 0 }, children: [_jsx("span", { style: {
|
|
116
|
+
fontSize: 10,
|
|
117
|
+
fontWeight: 600,
|
|
118
|
+
color: 'var(--text-muted)',
|
|
119
|
+
textTransform: 'uppercase',
|
|
120
|
+
letterSpacing: '0.05em',
|
|
121
|
+
display: 'block',
|
|
122
|
+
marginBottom: 4,
|
|
123
|
+
}, children: "Input" }), _jsx("pre", { style: {
|
|
124
|
+
margin: 0,
|
|
125
|
+
fontFamily: 'monospace',
|
|
126
|
+
fontSize: 11,
|
|
127
|
+
color: '#1e293b',
|
|
128
|
+
backgroundColor: '#f1f5f9',
|
|
129
|
+
border: '1px solid #e2e8f0',
|
|
130
|
+
borderRadius: 3,
|
|
131
|
+
padding: '6px 8px',
|
|
132
|
+
whiteSpace: 'pre-wrap',
|
|
133
|
+
wordBreak: 'break-word',
|
|
134
|
+
maxHeight: 200,
|
|
135
|
+
overflow: 'auto',
|
|
136
|
+
}, children: parsedInput != null ? formatJson(parsedInput) : '(empty)' })] }), parsedOutput != null && (_jsxs("div", { children: [_jsx("span", { style: {
|
|
137
|
+
fontSize: 10,
|
|
138
|
+
fontWeight: 600,
|
|
139
|
+
color: 'var(--text-muted)',
|
|
140
|
+
textTransform: 'uppercase',
|
|
141
|
+
letterSpacing: '0.05em',
|
|
142
|
+
display: 'block',
|
|
143
|
+
marginBottom: 4,
|
|
144
|
+
}, children: "Output" }), _jsx("pre", { style: {
|
|
145
|
+
margin: 0,
|
|
146
|
+
fontFamily: 'monospace',
|
|
147
|
+
fontSize: 11,
|
|
148
|
+
color: status === 'error' ? '#dc2626' : '#374151',
|
|
149
|
+
backgroundColor: status === 'error' ? '#fef2f2' : '#f8fafc',
|
|
150
|
+
border: `1px solid ${status === 'error' ? '#fca5a5' : '#e2e8f0'}`,
|
|
151
|
+
borderRadius: 3,
|
|
152
|
+
padding: '6px 8px',
|
|
153
|
+
whiteSpace: 'pre-wrap',
|
|
154
|
+
wordBreak: 'break-word',
|
|
155
|
+
maxHeight: 300,
|
|
156
|
+
overflow: 'auto',
|
|
157
|
+
}, children: formatJson(parsedOutput) })] }))] })] }));
|
|
158
|
+
}
|
|
159
|
+
export function ToolCallList({ messages }) {
|
|
160
|
+
const toolMessages = (messages || []).filter((m) => m.role === 'tool' || m.role === 'tool_use' || m.role === 'tool_result');
|
|
161
|
+
if (!toolMessages.length) {
|
|
162
|
+
return (_jsx("p", { style: { fontSize: 13, color: 'var(--text-muted)', padding: '8px 0' }, children: "No tool calls in this transcript." }));
|
|
163
|
+
}
|
|
164
|
+
return (_jsx("div", { role: "list", "aria-label": "Tool calls", children: toolMessages.map((msg, i) => (_jsx(ToolCallInspector, { toolName: msg.toolName || msg.name || 'Tool', input: msg.input || msg.content, output: msg.output, status: msg.status || 'completed', durationMs: msg.durationMs }, i))) }));
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=ToolInspector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolInspector.js","sourceRoot":"","sources":["../../../src/components/Observability/ToolInspector.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { ToolCallInspector, ToolCallList } from './ToolInspector.js';
|
|
2
|
+
export type { ToolCallInspectorProps, ToolCallListProps, ToolMessage } from './ToolInspector.js';
|
|
3
|
+
export { ActivityFeed } from './ActivityFeed.js';
|
|
4
|
+
export type { ActivityFeedProps, ActivityItem } from './ActivityFeed.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Observability/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACrE,YAAY,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjG,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Observability/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGrE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export type EffectStatus = 'pending' | 'running' | 'completed' | 'failed' | 'skipped';
|
|
2
|
+
export interface EffectTreeNode {
|
|
3
|
+
id: string;
|
|
4
|
+
parentId: string | null;
|
|
5
|
+
kind: string;
|
|
6
|
+
title: string;
|
|
7
|
+
status: EffectStatus;
|
|
8
|
+
children: EffectTreeNode[];
|
|
9
|
+
depth: number;
|
|
10
|
+
}
|
|
11
|
+
export interface FlatEffect {
|
|
12
|
+
id: string;
|
|
13
|
+
parentId?: string | null;
|
|
14
|
+
kind: string;
|
|
15
|
+
title: string;
|
|
16
|
+
status: EffectStatus;
|
|
17
|
+
}
|
|
18
|
+
export declare function buildEffectTree(effects: FlatEffect[]): EffectTreeNode[];
|
|
19
|
+
export declare function formatEffectTreeText(tree: EffectTreeNode[]): string;
|
|
20
|
+
export declare function renderEffectTreeHtml(tree: EffectTreeNode[]): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EffectTreeView.d.ts","sourceRoot":"","sources":["../../../src/components/Rendering/EffectTreeView.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEtF,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,YAAY,CAAC;CACtB;AAMD,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,cAAc,EAAE,CAuCvE;AAyBD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,MAAM,CAenE;AA2CD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,MAAM,CASnE"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
// EffectTreeView.ts — Effect tree construction and rendering (GAP-UX-001 + UX-001a)
|
|
2
|
+
// Pure TypeScript: builds a tree from a flat effect list, renders ASCII or HTML.
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// Tree construction
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
export function buildEffectTree(effects) {
|
|
7
|
+
const nodeMap = new Map();
|
|
8
|
+
// First pass: create nodes
|
|
9
|
+
for (const effect of effects) {
|
|
10
|
+
nodeMap.set(effect.id, {
|
|
11
|
+
id: effect.id,
|
|
12
|
+
parentId: effect.parentId ?? null,
|
|
13
|
+
kind: effect.kind,
|
|
14
|
+
title: effect.title,
|
|
15
|
+
status: effect.status,
|
|
16
|
+
children: [],
|
|
17
|
+
depth: 0,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
// Second pass: wire parent-child relationships
|
|
21
|
+
const roots = [];
|
|
22
|
+
for (const node of nodeMap.values()) {
|
|
23
|
+
if (node.parentId && nodeMap.has(node.parentId)) {
|
|
24
|
+
nodeMap.get(node.parentId).children.push(node);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
roots.push(node);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// Third pass: compute depths
|
|
31
|
+
function setDepth(node, depth) {
|
|
32
|
+
node.depth = depth;
|
|
33
|
+
for (const child of node.children) {
|
|
34
|
+
setDepth(child, depth + 1);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
for (const root of roots) {
|
|
38
|
+
setDepth(root, 0);
|
|
39
|
+
}
|
|
40
|
+
return roots;
|
|
41
|
+
}
|
|
42
|
+
// ---------------------------------------------------------------------------
|
|
43
|
+
// ASCII tree rendering (terminal)
|
|
44
|
+
// ---------------------------------------------------------------------------
|
|
45
|
+
const STATUS_ICON = {
|
|
46
|
+
pending: '○', // ○
|
|
47
|
+
running: '◔', // ◔
|
|
48
|
+
completed: '✔', // ✔
|
|
49
|
+
failed: '✘', // ✘
|
|
50
|
+
skipped: '–', // –
|
|
51
|
+
};
|
|
52
|
+
function renderNodeText(node, prefix, isLast, lines) {
|
|
53
|
+
const connector = isLast ? '└── ' : '├── ';
|
|
54
|
+
const icon = STATUS_ICON[node.status] ?? '?';
|
|
55
|
+
lines.push(`${prefix}${connector}${icon} [${node.kind}] ${node.title} (${node.status})`);
|
|
56
|
+
const childPrefix = prefix + (isLast ? ' ' : '│ ');
|
|
57
|
+
for (let i = 0; i < node.children.length; i++) {
|
|
58
|
+
renderNodeText(node.children[i], childPrefix, i === node.children.length - 1, lines);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
export function formatEffectTreeText(tree) {
|
|
62
|
+
if (tree.length === 0)
|
|
63
|
+
return '(empty tree)';
|
|
64
|
+
const lines = [];
|
|
65
|
+
for (let i = 0; i < tree.length; i++) {
|
|
66
|
+
const root = tree[i];
|
|
67
|
+
const icon = STATUS_ICON[root.status] ?? '?';
|
|
68
|
+
lines.push(`${icon} [${root.kind}] ${root.title} (${root.status})`);
|
|
69
|
+
const childPrefix = i < tree.length - 1 ? '│ ' : ' ';
|
|
70
|
+
for (let j = 0; j < root.children.length; j++) {
|
|
71
|
+
renderNodeText(root.children[j], childPrefix, j === root.children.length - 1, lines);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return lines.join('\n');
|
|
75
|
+
}
|
|
76
|
+
// ---------------------------------------------------------------------------
|
|
77
|
+
// HTML tree rendering (collapsible)
|
|
78
|
+
// ---------------------------------------------------------------------------
|
|
79
|
+
const STATUS_CLASS = {
|
|
80
|
+
pending: 'effect-pending',
|
|
81
|
+
running: 'effect-running',
|
|
82
|
+
completed: 'effect-completed',
|
|
83
|
+
failed: 'effect-failed',
|
|
84
|
+
skipped: 'effect-skipped',
|
|
85
|
+
};
|
|
86
|
+
function escapeHtml(text) {
|
|
87
|
+
return text
|
|
88
|
+
.replace(/&/g, '&')
|
|
89
|
+
.replace(/</g, '<')
|
|
90
|
+
.replace(/>/g, '>')
|
|
91
|
+
.replace(/"/g, '"');
|
|
92
|
+
}
|
|
93
|
+
function renderNodeHtml(node) {
|
|
94
|
+
const cls = STATUS_CLASS[node.status] ?? 'effect-pending';
|
|
95
|
+
const icon = STATUS_ICON[node.status] ?? '?';
|
|
96
|
+
const hasChildren = node.children.length > 0;
|
|
97
|
+
let html = `<li class="effect-node ${cls}" data-effect-id="${escapeHtml(node.id)}" data-depth="${node.depth}">`;
|
|
98
|
+
if (hasChildren) {
|
|
99
|
+
html += `<details open>`;
|
|
100
|
+
html += `<summary>${icon} <span class="effect-kind">[${escapeHtml(node.kind)}]</span> ${escapeHtml(node.title)} <span class="effect-status">(${node.status})</span></summary>`;
|
|
101
|
+
html += `<ul>`;
|
|
102
|
+
for (const child of node.children) {
|
|
103
|
+
html += renderNodeHtml(child);
|
|
104
|
+
}
|
|
105
|
+
html += `</ul></details>`;
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
html += `${icon} <span class="effect-kind">[${escapeHtml(node.kind)}]</span> ${escapeHtml(node.title)} <span class="effect-status">(${node.status})</span>`;
|
|
109
|
+
}
|
|
110
|
+
html += `</li>`;
|
|
111
|
+
return html;
|
|
112
|
+
}
|
|
113
|
+
export function renderEffectTreeHtml(tree) {
|
|
114
|
+
if (tree.length === 0)
|
|
115
|
+
return '<ul class="effect-tree"><li>(empty tree)</li></ul>';
|
|
116
|
+
let html = '<ul class="effect-tree">';
|
|
117
|
+
for (const root of tree) {
|
|
118
|
+
html += renderNodeHtml(root);
|
|
119
|
+
}
|
|
120
|
+
html += '</ul>';
|
|
121
|
+
return html;
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=EffectTreeView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EffectTreeView.js","sourceRoot":"","sources":["../../../src/components/Rendering/EffectTreeView.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export type MessageType = 'text' | 'code' | 'tool_call' | 'tool_result' | 'thinking' | 'error' | 'system';
|
|
2
|
+
export declare function detectMessageType(content: string): MessageType;
|
|
3
|
+
export declare function formatMessageText(content: string, type: MessageType): string;
|
|
4
|
+
export declare function formatMessageHtml(content: string, type: MessageType): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessageTypeRenderer.d.ts","sourceRoot":"","sources":["../../../src/components/Rendering/MessageTypeRenderer.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,aAAa,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;AAa1G,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAW9D;AAkCD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM,CAa5E;AAwBD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM,CAsB5E"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
// MessageTypeRenderer.ts — Message type detection and rendering (GAP-UX-001d)
|
|
2
|
+
// Pure TypeScript: detects message types and renders with appropriate formatting.
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// Message type detection
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
const CODE_BLOCK_PATTERN = /^```[\s\S]*```$/m;
|
|
7
|
+
const TOOL_CALL_PATTERN = /^\s*\{[\s\S]*"tool_name"\s*:/;
|
|
8
|
+
const TOOL_RESULT_PATTERN = /^\s*\{[\s\S]*"tool_result"\s*:/;
|
|
9
|
+
const THINKING_PATTERN = /^<thinking>[\s\S]*<\/thinking>$/;
|
|
10
|
+
const ERROR_PATTERN = /^(Error|ERROR|Exception|FATAL|Traceback)[\s:]/;
|
|
11
|
+
const SYSTEM_PATTERN = /^\[system\]|^\[SYSTEM\]/;
|
|
12
|
+
export function detectMessageType(content) {
|
|
13
|
+
const trimmed = content.trim();
|
|
14
|
+
if (SYSTEM_PATTERN.test(trimmed))
|
|
15
|
+
return 'system';
|
|
16
|
+
if (ERROR_PATTERN.test(trimmed))
|
|
17
|
+
return 'error';
|
|
18
|
+
if (THINKING_PATTERN.test(trimmed))
|
|
19
|
+
return 'thinking';
|
|
20
|
+
if (TOOL_CALL_PATTERN.test(trimmed))
|
|
21
|
+
return 'tool_call';
|
|
22
|
+
if (TOOL_RESULT_PATTERN.test(trimmed))
|
|
23
|
+
return 'tool_result';
|
|
24
|
+
if (CODE_BLOCK_PATTERN.test(trimmed))
|
|
25
|
+
return 'code';
|
|
26
|
+
return 'text';
|
|
27
|
+
}
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
// Text formatting
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
const TYPE_PREFIX = {
|
|
32
|
+
text: '',
|
|
33
|
+
code: '┌─ code ──────────────────\n',
|
|
34
|
+
tool_call: '⇒ Tool Call:\n',
|
|
35
|
+
tool_result: '⇐ Tool Result:\n',
|
|
36
|
+
thinking: '\u{1F4AD} Thinking:\n',
|
|
37
|
+
error: '⚠ Error:\n',
|
|
38
|
+
system: 'ℹ System:\n',
|
|
39
|
+
};
|
|
40
|
+
const TYPE_SUFFIX = {
|
|
41
|
+
text: '',
|
|
42
|
+
code: '\n└─────────────────────────┘',
|
|
43
|
+
tool_call: '',
|
|
44
|
+
tool_result: '',
|
|
45
|
+
thinking: '',
|
|
46
|
+
error: '',
|
|
47
|
+
system: '',
|
|
48
|
+
};
|
|
49
|
+
function stripCodeFences(content) {
|
|
50
|
+
return content.replace(/^```\w*\n?/, '').replace(/\n?```$/, '');
|
|
51
|
+
}
|
|
52
|
+
function stripThinkingTags(content) {
|
|
53
|
+
return content.replace(/^<thinking>\n?/, '').replace(/\n?<\/thinking>$/, '');
|
|
54
|
+
}
|
|
55
|
+
export function formatMessageText(content, type) {
|
|
56
|
+
let body = content;
|
|
57
|
+
switch (type) {
|
|
58
|
+
case 'code':
|
|
59
|
+
body = stripCodeFences(body.trim());
|
|
60
|
+
break;
|
|
61
|
+
case 'thinking':
|
|
62
|
+
body = stripThinkingTags(body.trim());
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
return `${TYPE_PREFIX[type]}${body}${TYPE_SUFFIX[type]}`;
|
|
66
|
+
}
|
|
67
|
+
// ---------------------------------------------------------------------------
|
|
68
|
+
// HTML rendering
|
|
69
|
+
// ---------------------------------------------------------------------------
|
|
70
|
+
function escapeHtml(text) {
|
|
71
|
+
return text
|
|
72
|
+
.replace(/&/g, '&')
|
|
73
|
+
.replace(/</g, '<')
|
|
74
|
+
.replace(/>/g, '>')
|
|
75
|
+
.replace(/"/g, '"');
|
|
76
|
+
}
|
|
77
|
+
const TYPE_HTML_CLASS = {
|
|
78
|
+
text: 'msg-text',
|
|
79
|
+
code: 'msg-code',
|
|
80
|
+
tool_call: 'msg-tool-call',
|
|
81
|
+
tool_result: 'msg-tool-result',
|
|
82
|
+
thinking: 'msg-thinking',
|
|
83
|
+
error: 'msg-error',
|
|
84
|
+
system: 'msg-system',
|
|
85
|
+
};
|
|
86
|
+
export function formatMessageHtml(content, type) {
|
|
87
|
+
const cls = TYPE_HTML_CLASS[type];
|
|
88
|
+
let body = content;
|
|
89
|
+
switch (type) {
|
|
90
|
+
case 'code':
|
|
91
|
+
body = stripCodeFences(body.trim());
|
|
92
|
+
return `<div class="${cls}"><pre><code>${escapeHtml(body)}</code></pre></div>`;
|
|
93
|
+
case 'thinking':
|
|
94
|
+
body = stripThinkingTags(body.trim());
|
|
95
|
+
return `<div class="${cls}"><em>${escapeHtml(body)}</em></div>`;
|
|
96
|
+
case 'error':
|
|
97
|
+
return `<div class="${cls}"><strong>${escapeHtml(body)}</strong></div>`;
|
|
98
|
+
case 'tool_call':
|
|
99
|
+
return `<div class="${cls}"><pre class="tool-call">${escapeHtml(body)}</pre></div>`;
|
|
100
|
+
case 'tool_result':
|
|
101
|
+
return `<div class="${cls}"><pre class="tool-result">${escapeHtml(body)}</pre></div>`;
|
|
102
|
+
case 'system':
|
|
103
|
+
return `<div class="${cls}"><span class="system-msg">${escapeHtml(body)}</span></div>`;
|
|
104
|
+
default:
|
|
105
|
+
return `<div class="${cls}"><p>${escapeHtml(body)}</p></div>`;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=MessageTypeRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessageTypeRenderer.js","sourceRoot":"","sources":["../../../src/components/Rendering/MessageTypeRenderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface ProgressData {
|
|
2
|
+
current: number;
|
|
3
|
+
total: number;
|
|
4
|
+
label: string;
|
|
5
|
+
startedAt: number;
|
|
6
|
+
estimatedCompletion?: number;
|
|
7
|
+
}
|
|
8
|
+
export declare function formatProgressBar(data: ProgressData, width?: number): string;
|
|
9
|
+
export declare function formatStatusLine(data: ProgressData, now?: number): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProgressStatusLine.d.ts","sourceRoot":"","sources":["../../../src/components/Rendering/ProgressStatusLine.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AASD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,GAAE,MAAW,GAAG,MAAM,CAQhF;AAqCD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAQzE"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// ProgressStatusLine.ts — Progress bar and status line formatting (GAP-UX-001e)
|
|
2
|
+
// Pure TypeScript: renders progress bars and status lines as strings.
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// Progress bar rendering
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
const FILL_CHAR = '█'; // █
|
|
7
|
+
const EMPTY_CHAR = '░'; // ░
|
|
8
|
+
export function formatProgressBar(data, width = 20) {
|
|
9
|
+
const safeTotal = Math.max(data.total, 1);
|
|
10
|
+
const ratio = Math.min(Math.max(data.current / safeTotal, 0), 1);
|
|
11
|
+
const filled = Math.round(ratio * width);
|
|
12
|
+
const empty = width - filled;
|
|
13
|
+
const percent = Math.round(ratio * 100);
|
|
14
|
+
return `[${FILL_CHAR.repeat(filled)}${EMPTY_CHAR.repeat(empty)}] ${percent}%`;
|
|
15
|
+
}
|
|
16
|
+
// ---------------------------------------------------------------------------
|
|
17
|
+
// Time remaining
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
function formatDuration(ms) {
|
|
20
|
+
if (ms < 0)
|
|
21
|
+
return '0s';
|
|
22
|
+
const totalSeconds = Math.floor(ms / 1000);
|
|
23
|
+
if (totalSeconds < 60)
|
|
24
|
+
return `${totalSeconds}s`;
|
|
25
|
+
const minutes = Math.floor(totalSeconds / 60);
|
|
26
|
+
const seconds = totalSeconds % 60;
|
|
27
|
+
if (minutes < 60)
|
|
28
|
+
return seconds > 0 ? `${minutes}m ${seconds}s` : `${minutes}m`;
|
|
29
|
+
const hours = Math.floor(minutes / 60);
|
|
30
|
+
const remainingMinutes = minutes % 60;
|
|
31
|
+
return remainingMinutes > 0 ? `${hours}h ${remainingMinutes}m` : `${hours}h`;
|
|
32
|
+
}
|
|
33
|
+
function estimateRemaining(data, now) {
|
|
34
|
+
if (data.estimatedCompletion != null) {
|
|
35
|
+
const remaining = data.estimatedCompletion - now;
|
|
36
|
+
return remaining > 0 ? formatDuration(remaining) : 'any moment';
|
|
37
|
+
}
|
|
38
|
+
// Derive from elapsed time and progress
|
|
39
|
+
const elapsed = now - data.startedAt;
|
|
40
|
+
if (elapsed <= 0 || data.current <= 0)
|
|
41
|
+
return null;
|
|
42
|
+
const totalEstimate = (elapsed / data.current) * data.total;
|
|
43
|
+
const remaining = totalEstimate - elapsed;
|
|
44
|
+
return remaining > 0 ? formatDuration(remaining) : 'any moment';
|
|
45
|
+
}
|
|
46
|
+
// ---------------------------------------------------------------------------
|
|
47
|
+
// Status line rendering
|
|
48
|
+
// ---------------------------------------------------------------------------
|
|
49
|
+
export function formatStatusLine(data, now) {
|
|
50
|
+
const currentTime = now ?? Date.now();
|
|
51
|
+
const bar = formatProgressBar(data);
|
|
52
|
+
const stepLabel = `Step ${data.current}/${data.total}`;
|
|
53
|
+
const remaining = estimateRemaining(data, currentTime);
|
|
54
|
+
const remainingText = remaining ? ` (${remaining} remaining)` : '';
|
|
55
|
+
return `${stepLabel} — ${data.label} ${bar}${remainingText}`;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=ProgressStatusLine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProgressStatusLine.js","sourceRoot":"","sources":["../../../src/components/Rendering/ProgressStatusLine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface StreamPanel {
|
|
2
|
+
id: string;
|
|
3
|
+
title: string;
|
|
4
|
+
lines: string[];
|
|
5
|
+
maxLines: number;
|
|
6
|
+
autoScroll: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare class StreamPanelManager {
|
|
9
|
+
private panels;
|
|
10
|
+
addPanel(id: string, title: string, opts?: {
|
|
11
|
+
maxLines?: number;
|
|
12
|
+
autoScroll?: boolean;
|
|
13
|
+
}): StreamPanel;
|
|
14
|
+
appendLine(panelId: string, line: string): void;
|
|
15
|
+
getPanel(id: string): StreamPanel | undefined;
|
|
16
|
+
listPanels(): StreamPanel[];
|
|
17
|
+
removePanel(id: string): boolean;
|
|
18
|
+
clear(panelId: string): void;
|
|
19
|
+
}
|
|
20
|
+
export declare function formatPanelOutput(panel: StreamPanel, width?: number): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StreamingOutputPanel.d.ts","sourceRoot":"","sources":["../../../src/components/Rendering/StreamingOutputPanel.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;CACrB;AAMD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAkC;IAEhD,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,WAAW;IAYpG,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAW/C,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAI7C,UAAU,IAAI,WAAW,EAAE;IAI3B,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIhC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAI7B;AAUD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,GAAE,MAAW,GAAG,MAAM,CA6BhF"}
|