@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,75 @@
|
|
|
1
|
+
// StreamingOutputPanel.ts — Streaming output panel management (GAP-UX-001f)
|
|
2
|
+
// Pure TypeScript: manages panels of streaming output with scrollback.
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// StreamPanelManager
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
export class StreamPanelManager {
|
|
7
|
+
panels = new Map();
|
|
8
|
+
addPanel(id, title, opts) {
|
|
9
|
+
const panel = {
|
|
10
|
+
id,
|
|
11
|
+
title,
|
|
12
|
+
lines: [],
|
|
13
|
+
maxLines: opts?.maxLines ?? 500,
|
|
14
|
+
autoScroll: opts?.autoScroll ?? true,
|
|
15
|
+
};
|
|
16
|
+
this.panels.set(id, panel);
|
|
17
|
+
return panel;
|
|
18
|
+
}
|
|
19
|
+
appendLine(panelId, line) {
|
|
20
|
+
const panel = this.panels.get(panelId);
|
|
21
|
+
if (!panel)
|
|
22
|
+
return;
|
|
23
|
+
panel.lines.push(line);
|
|
24
|
+
// Trim from front if exceeding maxLines
|
|
25
|
+
if (panel.lines.length > panel.maxLines) {
|
|
26
|
+
const excess = panel.lines.length - panel.maxLines;
|
|
27
|
+
panel.lines.splice(0, excess);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
getPanel(id) {
|
|
31
|
+
return this.panels.get(id);
|
|
32
|
+
}
|
|
33
|
+
listPanels() {
|
|
34
|
+
return Array.from(this.panels.values());
|
|
35
|
+
}
|
|
36
|
+
removePanel(id) {
|
|
37
|
+
return this.panels.delete(id);
|
|
38
|
+
}
|
|
39
|
+
clear(panelId) {
|
|
40
|
+
const panel = this.panels.get(panelId);
|
|
41
|
+
if (panel)
|
|
42
|
+
panel.lines = [];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// ---------------------------------------------------------------------------
|
|
46
|
+
// Panel text rendering
|
|
47
|
+
// ---------------------------------------------------------------------------
|
|
48
|
+
function repeatChar(char, count) {
|
|
49
|
+
return count > 0 ? char.repeat(count) : '';
|
|
50
|
+
}
|
|
51
|
+
export function formatPanelOutput(panel, width = 80) {
|
|
52
|
+
const innerWidth = Math.max(width - 4, 10); // 2 border chars + 2 padding
|
|
53
|
+
const titleText = ` ${panel.title} `;
|
|
54
|
+
const titlePadding = Math.max(innerWidth - titleText.length, 0);
|
|
55
|
+
const leftPad = Math.floor(titlePadding / 2);
|
|
56
|
+
const rightPad = titlePadding - leftPad;
|
|
57
|
+
const lines = [];
|
|
58
|
+
// Top border with title
|
|
59
|
+
lines.push(`┌${repeatChar('─', leftPad)}${titleText}${repeatChar('─', rightPad)}┐`);
|
|
60
|
+
// Content lines
|
|
61
|
+
if (panel.lines.length === 0) {
|
|
62
|
+
lines.push(`│ ${repeatChar(' ', innerWidth)} │`);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
for (const line of panel.lines) {
|
|
66
|
+
const truncated = line.length > innerWidth ? line.slice(0, innerWidth - 1) + '…' : line;
|
|
67
|
+
const padded = truncated + repeatChar(' ', innerWidth - truncated.length);
|
|
68
|
+
lines.push(`│ ${padded} │`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Bottom border
|
|
72
|
+
lines.push(`└${repeatChar('─', innerWidth + 2)}┘`);
|
|
73
|
+
return lines.join('\n');
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=StreamingOutputPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StreamingOutputPanel.js","sourceRoot":"","sources":["../../../src/components/Rendering/StreamingOutputPanel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type DiffLineType = 'add' | 'remove' | 'context';
|
|
2
|
+
export interface DiffLine {
|
|
3
|
+
type: DiffLineType;
|
|
4
|
+
content: string;
|
|
5
|
+
lineNumber: number | null;
|
|
6
|
+
}
|
|
7
|
+
export interface DiffHunk {
|
|
8
|
+
header: string;
|
|
9
|
+
lines: DiffLine[];
|
|
10
|
+
}
|
|
11
|
+
export declare function parseDiffOutput(diffText: string): DiffHunk[];
|
|
12
|
+
export declare function formatDiffText(hunks: DiffHunk[]): string;
|
|
13
|
+
export declare function formatDiffHtml(hunks: DiffHunk[]): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StructuredDiffView.d.ts","sourceRoot":"","sources":["../../../src/components/Rendering/StructuredDiffView.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;AAExD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAMD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,CAyC5D;AAMD,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAaxD;AA0BD,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAuBxD"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
// StructuredDiffView.ts — Unified diff parsing and rendering (GAP-UX-001b)
|
|
2
|
+
// Pure TypeScript: parses unified diff output, renders text or HTML.
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// Diff parsing
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
export function parseDiffOutput(diffText) {
|
|
7
|
+
const hunks = [];
|
|
8
|
+
const rawLines = diffText.split('\n');
|
|
9
|
+
let currentHunk = null;
|
|
10
|
+
let oldLine = 0;
|
|
11
|
+
let newLine = 0;
|
|
12
|
+
for (const rawLine of rawLines) {
|
|
13
|
+
// Hunk header: @@ -oldStart,oldCount +newStart,newCount @@
|
|
14
|
+
const hunkMatch = rawLine.match(/^@@\s+-(\d+)(?:,\d+)?\s+\+(\d+)(?:,\d+)?\s+@@(.*)$/);
|
|
15
|
+
if (hunkMatch) {
|
|
16
|
+
currentHunk = { header: rawLine, lines: [] };
|
|
17
|
+
hunks.push(currentHunk);
|
|
18
|
+
oldLine = parseInt(hunkMatch[1], 10);
|
|
19
|
+
newLine = parseInt(hunkMatch[2], 10);
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
// Skip file headers (---, +++, diff, index)
|
|
23
|
+
if (rawLine.startsWith('---') || rawLine.startsWith('+++') || rawLine.startsWith('diff ') || rawLine.startsWith('index ')) {
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
if (!currentHunk)
|
|
27
|
+
continue;
|
|
28
|
+
if (rawLine.startsWith('+')) {
|
|
29
|
+
currentHunk.lines.push({ type: 'add', content: rawLine.slice(1), lineNumber: newLine });
|
|
30
|
+
newLine++;
|
|
31
|
+
}
|
|
32
|
+
else if (rawLine.startsWith('-')) {
|
|
33
|
+
currentHunk.lines.push({ type: 'remove', content: rawLine.slice(1), lineNumber: oldLine });
|
|
34
|
+
oldLine++;
|
|
35
|
+
}
|
|
36
|
+
else if (rawLine.startsWith(' ') || rawLine === '') {
|
|
37
|
+
const content = rawLine.startsWith(' ') ? rawLine.slice(1) : rawLine;
|
|
38
|
+
currentHunk.lines.push({ type: 'context', content, lineNumber: newLine });
|
|
39
|
+
oldLine++;
|
|
40
|
+
newLine++;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return hunks;
|
|
44
|
+
}
|
|
45
|
+
// ---------------------------------------------------------------------------
|
|
46
|
+
// Text rendering
|
|
47
|
+
// ---------------------------------------------------------------------------
|
|
48
|
+
export function formatDiffText(hunks) {
|
|
49
|
+
if (hunks.length === 0)
|
|
50
|
+
return '(no changes)';
|
|
51
|
+
const lines = [];
|
|
52
|
+
for (const hunk of hunks) {
|
|
53
|
+
lines.push(hunk.header);
|
|
54
|
+
for (const line of hunk.lines) {
|
|
55
|
+
const prefix = line.type === 'add' ? '+' : line.type === 'remove' ? '-' : ' ';
|
|
56
|
+
const lineNum = line.lineNumber != null ? String(line.lineNumber).padStart(4) : ' ';
|
|
57
|
+
lines.push(`${lineNum} ${prefix} ${line.content}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return lines.join('\n');
|
|
61
|
+
}
|
|
62
|
+
// ---------------------------------------------------------------------------
|
|
63
|
+
// HTML rendering
|
|
64
|
+
// ---------------------------------------------------------------------------
|
|
65
|
+
function escapeHtml(text) {
|
|
66
|
+
return text
|
|
67
|
+
.replace(/&/g, '&')
|
|
68
|
+
.replace(/</g, '<')
|
|
69
|
+
.replace(/>/g, '>')
|
|
70
|
+
.replace(/"/g, '"');
|
|
71
|
+
}
|
|
72
|
+
const DIFF_LINE_CLASS = {
|
|
73
|
+
add: 'diff-add',
|
|
74
|
+
remove: 'diff-remove',
|
|
75
|
+
context: 'diff-context',
|
|
76
|
+
};
|
|
77
|
+
const DIFF_LINE_BG = {
|
|
78
|
+
add: '#e6ffec',
|
|
79
|
+
remove: '#ffebe9',
|
|
80
|
+
context: 'transparent',
|
|
81
|
+
};
|
|
82
|
+
export function formatDiffHtml(hunks) {
|
|
83
|
+
if (hunks.length === 0)
|
|
84
|
+
return '<div class="diff-view">(no changes)</div>';
|
|
85
|
+
let html = '<div class="diff-view">';
|
|
86
|
+
for (const hunk of hunks) {
|
|
87
|
+
html += `<div class="diff-hunk">`;
|
|
88
|
+
html += `<div class="diff-header">${escapeHtml(hunk.header)}</div>`;
|
|
89
|
+
html += `<table class="diff-table">`;
|
|
90
|
+
for (const line of hunk.lines) {
|
|
91
|
+
const cls = DIFF_LINE_CLASS[line.type];
|
|
92
|
+
const bg = DIFF_LINE_BG[line.type];
|
|
93
|
+
const prefix = line.type === 'add' ? '+' : line.type === 'remove' ? '-' : ' ';
|
|
94
|
+
const lineNum = line.lineNumber != null ? String(line.lineNumber) : '';
|
|
95
|
+
html += `<tr class="${cls}" style="background:${bg}">`;
|
|
96
|
+
html += `<td class="diff-line-num">${lineNum}</td>`;
|
|
97
|
+
html += `<td class="diff-prefix">${prefix}</td>`;
|
|
98
|
+
html += `<td class="diff-content">${escapeHtml(line.content)}</td>`;
|
|
99
|
+
html += `</tr>`;
|
|
100
|
+
}
|
|
101
|
+
html += `</table></div>`;
|
|
102
|
+
}
|
|
103
|
+
html += '</div>';
|
|
104
|
+
return html;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=StructuredDiffView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StructuredDiffView.js","sourceRoot":"","sources":["../../../src/components/Rendering/StructuredDiffView.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export type SubagentStatus = 'idle' | 'running' | 'completed' | 'failed' | 'cancelled';
|
|
2
|
+
export interface SubagentEffect {
|
|
3
|
+
id: string;
|
|
4
|
+
kind: string;
|
|
5
|
+
title: string;
|
|
6
|
+
status: string;
|
|
7
|
+
}
|
|
8
|
+
export interface SubagentView {
|
|
9
|
+
agentId: string;
|
|
10
|
+
status: SubagentStatus;
|
|
11
|
+
tokenUsage: {
|
|
12
|
+
input: number;
|
|
13
|
+
output: number;
|
|
14
|
+
};
|
|
15
|
+
effects: SubagentEffect[];
|
|
16
|
+
duration: number;
|
|
17
|
+
model: string;
|
|
18
|
+
}
|
|
19
|
+
export interface SubagentDrillDownData {
|
|
20
|
+
agents: SubagentView[];
|
|
21
|
+
selectedAgentId?: string;
|
|
22
|
+
expandedEffects: Set<string>;
|
|
23
|
+
}
|
|
24
|
+
export interface ProgressAgent {
|
|
25
|
+
id: string;
|
|
26
|
+
status?: string;
|
|
27
|
+
model?: string;
|
|
28
|
+
tokenUsage?: {
|
|
29
|
+
input?: number;
|
|
30
|
+
output?: number;
|
|
31
|
+
};
|
|
32
|
+
effects?: Array<{
|
|
33
|
+
id: string;
|
|
34
|
+
kind: string;
|
|
35
|
+
title: string;
|
|
36
|
+
status: string;
|
|
37
|
+
}>;
|
|
38
|
+
startedAt?: number;
|
|
39
|
+
completedAt?: number;
|
|
40
|
+
}
|
|
41
|
+
export interface ProgressTracker {
|
|
42
|
+
agents: ProgressAgent[];
|
|
43
|
+
}
|
|
44
|
+
export declare function buildSubagentView(tracker: ProgressTracker): SubagentDrillDownData;
|
|
45
|
+
export declare function formatSubagentSummary(view: SubagentView): string;
|
|
46
|
+
export declare function formatSubagentDetail(view: SubagentView): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SubagentDrillDown.d.ts","sourceRoot":"","sources":["../../../src/components/Rendering/SubagentDrillDown.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEvF,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC9B;AAMD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAMD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,qBAAqB,CAuBjF;AA+CD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAMhE;AAMD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAoB/D"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
// SubagentDrillDown.ts — Subagent drill-down view construction and rendering (GAP-SUBOBS-005)
|
|
2
|
+
// Pure TypeScript: builds subagent views and renders summary/detail strings.
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// View construction
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
export function buildSubagentView(tracker) {
|
|
7
|
+
const agents = tracker.agents.map((agent) => ({
|
|
8
|
+
agentId: agent.id,
|
|
9
|
+
status: normalizeStatus(agent.status),
|
|
10
|
+
tokenUsage: {
|
|
11
|
+
input: agent.tokenUsage?.input ?? 0,
|
|
12
|
+
output: agent.tokenUsage?.output ?? 0,
|
|
13
|
+
},
|
|
14
|
+
effects: (agent.effects ?? []).map((e) => ({
|
|
15
|
+
id: e.id,
|
|
16
|
+
kind: e.kind,
|
|
17
|
+
title: e.title,
|
|
18
|
+
status: e.status,
|
|
19
|
+
})),
|
|
20
|
+
duration: computeDuration(agent.startedAt, agent.completedAt),
|
|
21
|
+
model: agent.model ?? 'unknown',
|
|
22
|
+
}));
|
|
23
|
+
return {
|
|
24
|
+
agents,
|
|
25
|
+
selectedAgentId: undefined,
|
|
26
|
+
expandedEffects: new Set(),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
function normalizeStatus(status) {
|
|
30
|
+
const s = (status ?? '').toLowerCase();
|
|
31
|
+
if (s === 'idle' || s === 'running' || s === 'completed' || s === 'failed' || s === 'cancelled') {
|
|
32
|
+
return s;
|
|
33
|
+
}
|
|
34
|
+
if (s === 'error')
|
|
35
|
+
return 'failed';
|
|
36
|
+
if (s === 'done' || s === 'success')
|
|
37
|
+
return 'completed';
|
|
38
|
+
return 'idle';
|
|
39
|
+
}
|
|
40
|
+
function computeDuration(startedAt, completedAt) {
|
|
41
|
+
if (startedAt == null)
|
|
42
|
+
return 0;
|
|
43
|
+
const end = completedAt ?? Date.now();
|
|
44
|
+
return Math.max(end - startedAt, 0);
|
|
45
|
+
}
|
|
46
|
+
// ---------------------------------------------------------------------------
|
|
47
|
+
// Formatting helpers
|
|
48
|
+
// ---------------------------------------------------------------------------
|
|
49
|
+
function formatDuration(ms) {
|
|
50
|
+
if (ms < 1000)
|
|
51
|
+
return `${ms}ms`;
|
|
52
|
+
const seconds = Math.floor(ms / 1000);
|
|
53
|
+
if (seconds < 60)
|
|
54
|
+
return `${seconds}s`;
|
|
55
|
+
const minutes = Math.floor(seconds / 60);
|
|
56
|
+
const remainingSeconds = seconds % 60;
|
|
57
|
+
return remainingSeconds > 0 ? `${minutes}m ${remainingSeconds}s` : `${minutes}m`;
|
|
58
|
+
}
|
|
59
|
+
function formatTokens(usage) {
|
|
60
|
+
return `${usage.input.toLocaleString()}in/${usage.output.toLocaleString()}out`;
|
|
61
|
+
}
|
|
62
|
+
const STATUS_ICON = {
|
|
63
|
+
idle: '○', // ○
|
|
64
|
+
running: '◔', // ◔
|
|
65
|
+
completed: '✔', // ✔
|
|
66
|
+
failed: '✘', // ✘
|
|
67
|
+
cancelled: '–', // –
|
|
68
|
+
};
|
|
69
|
+
// ---------------------------------------------------------------------------
|
|
70
|
+
// Summary rendering (one-line per agent)
|
|
71
|
+
// ---------------------------------------------------------------------------
|
|
72
|
+
export function formatSubagentSummary(view) {
|
|
73
|
+
const icon = STATUS_ICON[view.status] ?? '?';
|
|
74
|
+
const dur = formatDuration(view.duration);
|
|
75
|
+
const tokens = formatTokens(view.tokenUsage);
|
|
76
|
+
const effectCount = view.effects.length;
|
|
77
|
+
return `${icon} ${view.agentId} [${view.model}] ${view.status} | ${dur} | ${tokens} | ${effectCount} effect${effectCount !== 1 ? 's' : ''}`;
|
|
78
|
+
}
|
|
79
|
+
// ---------------------------------------------------------------------------
|
|
80
|
+
// Detail rendering (expanded with effects)
|
|
81
|
+
// ---------------------------------------------------------------------------
|
|
82
|
+
export function formatSubagentDetail(view) {
|
|
83
|
+
const lines = [];
|
|
84
|
+
const icon = STATUS_ICON[view.status] ?? '?';
|
|
85
|
+
lines.push(`${icon} Agent: ${view.agentId}`);
|
|
86
|
+
lines.push(` Model: ${view.model}`);
|
|
87
|
+
lines.push(` Status: ${view.status}`);
|
|
88
|
+
lines.push(` Duration: ${formatDuration(view.duration)}`);
|
|
89
|
+
lines.push(` Tokens: ${formatTokens(view.tokenUsage)}`);
|
|
90
|
+
if (view.effects.length > 0) {
|
|
91
|
+
lines.push(` Effects (${view.effects.length}):`);
|
|
92
|
+
for (const effect of view.effects) {
|
|
93
|
+
lines.push(` │ [${effect.kind}] ${effect.title} (${effect.status})`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
lines.push(' Effects: (none)');
|
|
98
|
+
}
|
|
99
|
+
return lines.join('\n');
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=SubagentDrillDown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SubagentDrillDown.js","sourceRoot":"","sources":["../../../src/components/Rendering/SubagentDrillDown.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { buildEffectTree, formatEffectTreeText, renderEffectTreeHtml, } from './EffectTreeView.js';
|
|
2
|
+
export type { EffectStatus, EffectTreeNode, FlatEffect, } from './EffectTreeView.js';
|
|
3
|
+
export { formatProgressBar, formatStatusLine, } from './ProgressStatusLine.js';
|
|
4
|
+
export type { ProgressData, } from './ProgressStatusLine.js';
|
|
5
|
+
export { StreamPanelManager, formatPanelOutput, } from './StreamingOutputPanel.js';
|
|
6
|
+
export type { StreamPanel, } from './StreamingOutputPanel.js';
|
|
7
|
+
export { parseDiffOutput, formatDiffText, formatDiffHtml, } from './StructuredDiffView.js';
|
|
8
|
+
export type { DiffLine, DiffLineType, DiffHunk, } from './StructuredDiffView.js';
|
|
9
|
+
export { detectMessageType, formatMessageText, formatMessageHtml, } from './MessageTypeRenderer.js';
|
|
10
|
+
export type { MessageType, } from './MessageTypeRenderer.js';
|
|
11
|
+
export { buildSubagentView, formatSubagentSummary, formatSubagentDetail, } from './SubagentDrillDown.js';
|
|
12
|
+
export type { SubagentStatus, SubagentEffect, SubagentView, SubagentDrillDownData, ProgressAgent, ProgressTracker, } from './SubagentDrillDown.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Rendering/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,YAAY,EACZ,cAAc,EACd,UAAU,GACX,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,YAAY,GACb,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,WAAW,GACZ,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,GACf,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,QAAQ,EACR,YAAY,EACZ,QAAQ,GACT,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,WAAW,GACZ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,cAAc,EACd,cAAc,EACd,YAAY,EACZ,qBAAqB,EACrB,aAAa,EACb,eAAe,GAChB,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// Rendering primitives barrel export — pure TypeScript rendering utilities
|
|
2
|
+
// for effect trees, progress bars, streaming panels, diffs, message types,
|
|
3
|
+
// and subagent drill-down views.
|
|
4
|
+
export { buildEffectTree, formatEffectTreeText, renderEffectTreeHtml, } from './EffectTreeView.js';
|
|
5
|
+
export { formatProgressBar, formatStatusLine, } from './ProgressStatusLine.js';
|
|
6
|
+
export { StreamPanelManager, formatPanelOutput, } from './StreamingOutputPanel.js';
|
|
7
|
+
export { parseDiffOutput, formatDiffText, formatDiffHtml, } from './StructuredDiffView.js';
|
|
8
|
+
export { detectMessageType, formatMessageText, formatMessageHtml, } from './MessageTypeRenderer.js';
|
|
9
|
+
export { buildSubagentView, formatSubagentSummary, formatSubagentDetail, } from './SubagentDrillDown.js';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Rendering/index.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,2EAA2E;AAC3E,iCAAiC;AAEjC,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AAKjC,OAAO,EACL,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AAKnC,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,GACf,MAAM,yBAAyB,CAAC;AAOjC,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAKlC,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RunStatusBadge.d.ts","sourceRoot":"","sources":["../../src/components/RunStatusBadge.tsx"],"names":[],"mappings":"AAKA,wBAAgB,cAAc,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAMrE"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Card } from './primitives/Card.js';
|
|
3
|
+
import { Text } from './primitives/Text.js';
|
|
4
|
+
export function RunStatusBadge(props) {
|
|
5
|
+
return (_jsx(Card, { children: _jsx(Text, { children: props.status }) }));
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=RunStatusBadge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RunStatusBadge.js","sourceRoot":"","sources":["../../src/components/RunStatusBadge.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAE5C,MAAM,UAAU,cAAc,CAAC,KAAyB;IACtD,OAAO,CACL,KAAC,IAAI,cACH,KAAC,IAAI,cAAE,KAAK,CAAC,MAAM,GAAQ,GACtB,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface TurnUsage {
|
|
2
|
+
id?: string;
|
|
3
|
+
turnId?: string;
|
|
4
|
+
messageId?: string;
|
|
5
|
+
timestamp?: string;
|
|
6
|
+
model?: string;
|
|
7
|
+
modelId?: string;
|
|
8
|
+
inputTokens?: number;
|
|
9
|
+
input_tokens?: number;
|
|
10
|
+
outputTokens?: number;
|
|
11
|
+
output_tokens?: number;
|
|
12
|
+
cacheReadTokens?: number;
|
|
13
|
+
cache_read_input_tokens?: number;
|
|
14
|
+
cacheWriteTokens?: number;
|
|
15
|
+
cache_write_input_tokens?: number;
|
|
16
|
+
}
|
|
17
|
+
export interface SessionCostProps {
|
|
18
|
+
turns?: TurnUsage[];
|
|
19
|
+
totalCost?: number | string | null;
|
|
20
|
+
compact?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export declare function SessionCost({ turns, totalCost, compact }: SessionCostProps): JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionCost.d.ts","sourceRoot":"","sources":["../../../src/components/Session/SessionCost.tsx"],"names":[],"mappings":"AA2CA,MAAM,WAAW,SAAS;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AA6KD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,WAAW,CAAC,EAAE,KAAU,EAAE,SAAS,EAAE,OAAe,EAAE,EAAE,gBAAgB,GAAG,GAAG,CAAC,OAAO,CAsGrG"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
const MODEL_PRICING = {
|
|
4
|
+
'claude-opus-4': { input: 15, output: 75, cacheRead: 1.5, cacheWrite: 18.75 },
|
|
5
|
+
'claude-opus-4-5': { input: 15, output: 75, cacheRead: 1.5, cacheWrite: 18.75 },
|
|
6
|
+
'claude-sonnet-4': { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 },
|
|
7
|
+
'claude-sonnet-4-5': { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 },
|
|
8
|
+
'claude-sonnet-3-7': { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 },
|
|
9
|
+
'claude-sonnet-3-5': { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 },
|
|
10
|
+
'claude-haiku-3-5': { input: 0.8, output: 4, cacheRead: 0.08, cacheWrite: 1 },
|
|
11
|
+
'claude-haiku-3': { input: 0.25, output: 1.25, cacheRead: 0.03, cacheWrite: 0.3 },
|
|
12
|
+
'gpt-4o': { input: 2.5, output: 10, cacheRead: 1.25, cacheWrite: 0 },
|
|
13
|
+
'gpt-4o-mini': { input: 0.15, output: 0.6, cacheRead: 0.075, cacheWrite: 0 },
|
|
14
|
+
'gpt-4-turbo': { input: 10, output: 30, cacheRead: 0, cacheWrite: 0 },
|
|
15
|
+
'gpt-4': { input: 30, output: 60, cacheRead: 0, cacheWrite: 0 },
|
|
16
|
+
};
|
|
17
|
+
function normalizeModelKey(model) {
|
|
18
|
+
if (!model)
|
|
19
|
+
return null;
|
|
20
|
+
const s = model.toLowerCase().replace(/[_\s]/g, '-');
|
|
21
|
+
if (MODEL_PRICING[s])
|
|
22
|
+
return s;
|
|
23
|
+
const keys = Object.keys(MODEL_PRICING);
|
|
24
|
+
let best = null;
|
|
25
|
+
for (const key of keys) {
|
|
26
|
+
if (s.startsWith(key) || s.includes(key)) {
|
|
27
|
+
if (!best || key.length > best.length)
|
|
28
|
+
best = key;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return best;
|
|
32
|
+
}
|
|
33
|
+
function computeTurnCost(turn) {
|
|
34
|
+
const model = turn.model || turn.modelId || '';
|
|
35
|
+
const key = normalizeModelKey(model);
|
|
36
|
+
const rates = key ? MODEL_PRICING[key] : null;
|
|
37
|
+
if (!rates)
|
|
38
|
+
return null;
|
|
39
|
+
const inputTokens = turn.inputTokens || turn.input_tokens || 0;
|
|
40
|
+
const outputTokens = turn.outputTokens || turn.output_tokens || 0;
|
|
41
|
+
const cacheRead = turn.cacheReadTokens || turn.cache_read_input_tokens || 0;
|
|
42
|
+
const cacheWrite = turn.cacheWriteTokens || turn.cache_write_input_tokens || 0;
|
|
43
|
+
return ((inputTokens * rates.input +
|
|
44
|
+
outputTokens * rates.output +
|
|
45
|
+
cacheRead * rates.cacheRead +
|
|
46
|
+
cacheWrite * rates.cacheWrite) /
|
|
47
|
+
1_000_000);
|
|
48
|
+
}
|
|
49
|
+
function formatCost(usd) {
|
|
50
|
+
if (usd == null)
|
|
51
|
+
return '—';
|
|
52
|
+
if (usd < 0.0001)
|
|
53
|
+
return '<$0.0001';
|
|
54
|
+
if (usd < 0.01)
|
|
55
|
+
return `$${usd.toFixed(4)}`;
|
|
56
|
+
return `$${usd.toFixed(3)}`;
|
|
57
|
+
}
|
|
58
|
+
function formatTokens(n) {
|
|
59
|
+
if (n == null || n === 0)
|
|
60
|
+
return '0';
|
|
61
|
+
if (n >= 1_000_000)
|
|
62
|
+
return `${(n / 1_000_000).toFixed(1)}M`;
|
|
63
|
+
if (n >= 1000)
|
|
64
|
+
return `${(n / 1000).toFixed(1)}k`;
|
|
65
|
+
return String(n);
|
|
66
|
+
}
|
|
67
|
+
function turnCostKey(turn) {
|
|
68
|
+
return turn.id ||
|
|
69
|
+
turn.turnId ||
|
|
70
|
+
turn.messageId ||
|
|
71
|
+
turn.timestamp ||
|
|
72
|
+
[
|
|
73
|
+
turn.model || turn.modelId || 'unknown-model',
|
|
74
|
+
turn.inputTokens || turn.input_tokens || 0,
|
|
75
|
+
turn.outputTokens || turn.output_tokens || 0,
|
|
76
|
+
turn.cacheReadTokens || turn.cache_read_input_tokens || 0,
|
|
77
|
+
turn.cacheWriteTokens || turn.cache_write_input_tokens || 0,
|
|
78
|
+
].join(':') || '';
|
|
79
|
+
}
|
|
80
|
+
function TurnCostRow({ turn, index }) {
|
|
81
|
+
const [open, setOpen] = useState(false);
|
|
82
|
+
const model = turn.model || turn.modelId || '—';
|
|
83
|
+
const inputTokens = turn.inputTokens || turn.input_tokens || 0;
|
|
84
|
+
const outputTokens = turn.outputTokens || turn.output_tokens || 0;
|
|
85
|
+
const cacheRead = turn.cacheReadTokens || turn.cache_read_input_tokens || 0;
|
|
86
|
+
const cacheWrite = turn.cacheWriteTokens || turn.cache_write_input_tokens || 0;
|
|
87
|
+
const cost = computeTurnCost(turn);
|
|
88
|
+
const known = normalizeModelKey(model);
|
|
89
|
+
return (_jsxs("details", { open: open, onToggle: (e) => setOpen(e.target.open), style: { marginBottom: 4 }, children: [_jsxs("summary", { style: {
|
|
90
|
+
cursor: 'pointer',
|
|
91
|
+
display: 'flex',
|
|
92
|
+
alignItems: 'center',
|
|
93
|
+
gap: 8,
|
|
94
|
+
padding: '5px 8px',
|
|
95
|
+
backgroundColor: '#f8fafc',
|
|
96
|
+
border: '1px solid #e2e8f0',
|
|
97
|
+
borderRadius: 4,
|
|
98
|
+
fontSize: 12,
|
|
99
|
+
listStyle: 'none',
|
|
100
|
+
}, children: [_jsxs("span", { style: { color: 'var(--text-muted)', flexShrink: 0, fontSize: 11 }, children: ["Turn ", index + 1] }), _jsx("span", { style: {
|
|
101
|
+
fontFamily: 'monospace',
|
|
102
|
+
fontSize: 11,
|
|
103
|
+
color: 'var(--text)',
|
|
104
|
+
flex: 1,
|
|
105
|
+
overflow: 'hidden',
|
|
106
|
+
textOverflow: 'ellipsis',
|
|
107
|
+
whiteSpace: 'nowrap',
|
|
108
|
+
}, children: model }), _jsx("span", { style: {
|
|
109
|
+
fontFamily: 'monospace',
|
|
110
|
+
fontSize: 11,
|
|
111
|
+
fontWeight: 600,
|
|
112
|
+
color: cost != null ? '#1e293b' : '#9ca3af',
|
|
113
|
+
flexShrink: 0,
|
|
114
|
+
}, children: cost != null ? formatCost(cost) : '—' }), _jsx("span", { style: { fontSize: 10, color: 'var(--text-muted)', flexShrink: 0 }, children: open ? '▲' : '▼' })] }), _jsxs("div", { style: {
|
|
115
|
+
padding: '8px 10px',
|
|
116
|
+
border: '1px solid #e2e8f0',
|
|
117
|
+
borderTop: 'none',
|
|
118
|
+
borderRadius: '0 0 4px 4px',
|
|
119
|
+
backgroundColor: '#fff',
|
|
120
|
+
}, children: [_jsx("table", { style: { width: '100%', fontSize: 11, borderCollapse: 'collapse' }, children: _jsxs("tbody", { children: [_jsxs("tr", { children: [_jsx("td", { style: { padding: '2px 8px 2px 0', color: 'var(--text-muted)' }, children: "Input tokens" }), _jsx("td", { style: { fontFamily: 'monospace', textAlign: 'right' }, children: formatTokens(inputTokens) })] }), _jsxs("tr", { children: [_jsx("td", { style: { padding: '2px 8px 2px 0', color: 'var(--text-muted)' }, children: "Output tokens" }), _jsx("td", { style: { fontFamily: 'monospace', textAlign: 'right' }, children: formatTokens(outputTokens) })] }), cacheRead > 0 && (_jsxs("tr", { children: [_jsx("td", { style: { padding: '2px 8px 2px 0', color: 'var(--text-muted)' }, children: "Cache read" }), _jsx("td", { style: { fontFamily: 'monospace', textAlign: 'right' }, children: formatTokens(cacheRead) })] })), cacheWrite > 0 && (_jsxs("tr", { children: [_jsx("td", { style: { padding: '2px 8px 2px 0', color: 'var(--text-muted)' }, children: "Cache write" }), _jsx("td", { style: { fontFamily: 'monospace', textAlign: 'right' }, children: formatTokens(cacheWrite) })] })), _jsxs("tr", { style: { borderTop: '1px solid #e2e8f0' }, children: [_jsx("td", { style: { padding: '4px 8px 2px 0', color: 'var(--text)', fontWeight: 600 }, children: "Estimated cost" }), _jsx("td", { style: {
|
|
121
|
+
fontFamily: 'monospace',
|
|
122
|
+
textAlign: 'right',
|
|
123
|
+
fontWeight: 600,
|
|
124
|
+
color: cost != null ? '#1e293b' : '#9ca3af',
|
|
125
|
+
}, children: cost != null ? formatCost(cost) : known === null ? 'unknown model' : '—' })] })] }) }), !known && (_jsxs("p", { style: { fontSize: 10, color: 'var(--text-muted)', marginTop: 6 }, children: ["Pricing not available for model \"", model, "\". Cost cannot be estimated."] }))] })] }));
|
|
126
|
+
}
|
|
127
|
+
export function SessionCost({ turns = [], totalCost, compact = false }) {
|
|
128
|
+
const turnsWithUsage = (turns || []).filter((t) => ((t.inputTokens || t.input_tokens || 0) + (t.outputTokens || t.output_tokens || 0)) > 0);
|
|
129
|
+
const computedTotal = turnsWithUsage.reduce((acc, t) => {
|
|
130
|
+
const c = computeTurnCost(t);
|
|
131
|
+
return c != null ? acc + c : acc;
|
|
132
|
+
}, 0);
|
|
133
|
+
const displayTotal = totalCost != null
|
|
134
|
+
? `$${Number(totalCost).toFixed(3)}`
|
|
135
|
+
: turnsWithUsage.length > 0
|
|
136
|
+
? formatCost(computedTotal)
|
|
137
|
+
: '—';
|
|
138
|
+
const totalInputTokens = turnsWithUsage.reduce((acc, t) => acc + (t.inputTokens || t.input_tokens || 0), 0);
|
|
139
|
+
const totalOutputTokens = turnsWithUsage.reduce((acc, t) => acc + (t.outputTokens || t.output_tokens || 0), 0);
|
|
140
|
+
if (compact) {
|
|
141
|
+
return (_jsxs("div", { "aria-live": "polite", "aria-label": `Session cost: ${displayTotal}`, style: {
|
|
142
|
+
display: 'flex',
|
|
143
|
+
alignItems: 'center',
|
|
144
|
+
gap: 12,
|
|
145
|
+
fontSize: 12,
|
|
146
|
+
padding: '6px 10px',
|
|
147
|
+
backgroundColor: '#f8fafc',
|
|
148
|
+
border: '1px solid #e2e8f0',
|
|
149
|
+
borderRadius: 4,
|
|
150
|
+
}, children: [_jsx("span", { style: { color: 'var(--text-muted)' }, children: "Session cost" }), _jsx("strong", { style: { fontFamily: 'monospace', color: '#1e293b' }, children: displayTotal }), totalInputTokens > 0 && (_jsxs(_Fragment, { children: [_jsx("span", { style: { color: '#d1d5db' }, children: "|" }), _jsxs("span", { style: { color: 'var(--text-muted)', fontSize: 11 }, children: [formatTokens(totalInputTokens), " in / ", formatTokens(totalOutputTokens), " out"] })] })), _jsxs("span", { style: { color: 'var(--text-muted)', fontSize: 11 }, children: [turnsWithUsage.length, " turns"] })] }));
|
|
151
|
+
}
|
|
152
|
+
return (_jsxs("div", { children: [_jsxs("div", { "aria-live": "polite", "aria-label": `Total session cost: ${displayTotal}`, style: {
|
|
153
|
+
display: 'flex',
|
|
154
|
+
alignItems: 'center',
|
|
155
|
+
gap: 8,
|
|
156
|
+
marginBottom: 10,
|
|
157
|
+
padding: '8px 10px',
|
|
158
|
+
backgroundColor: '#f0fdf4',
|
|
159
|
+
border: '1px solid #bbf7d0',
|
|
160
|
+
borderRadius: 4,
|
|
161
|
+
}, children: [_jsx("span", { style: { fontSize: 12, color: '#166534' }, children: "Total session cost" }), _jsx("strong", { style: {
|
|
162
|
+
fontFamily: 'monospace',
|
|
163
|
+
fontSize: 14,
|
|
164
|
+
color: '#14532d',
|
|
165
|
+
flex: 1,
|
|
166
|
+
}, children: displayTotal }), _jsxs("span", { style: { fontSize: 11, color: '#16a34a' }, children: [formatTokens(totalInputTokens), " in / ", formatTokens(totalOutputTokens), " out"] })] }), turnsWithUsage.length > 0 ? (_jsx("div", { children: turnsWithUsage.map((turn, turnIndex) => (_jsx(TurnCostRow, { turn: turn, index: turnIndex }, turnCostKey(turn)))) })) : (_jsx("p", { style: { fontSize: 13, color: 'var(--text-muted)', padding: '8px 0' }, children: "No per-turn token usage data available for this session." }))] }));
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=SessionCost.js.map
|