@flanksource/clicky-ui 0.3.15 → 0.3.17
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/NOTICE.md +10 -0
- package/dist/ai.cjs +33 -4
- package/dist/ai.cjs.map +1 -1
- package/dist/ai.js +31 -2
- package/dist/ai.js.map +1 -1
- package/dist/chat.cjs +6 -0
- package/dist/chat.cjs.map +1 -1
- package/dist/chat.js +7 -1
- package/dist/chat.js.map +1 -1
- package/dist/components/Combobox.cjs +92 -170
- package/dist/components/Combobox.cjs.map +1 -1
- package/dist/components/Combobox.d.ts +2 -111
- package/dist/components/Combobox.d.ts.map +1 -1
- package/dist/components/Combobox.js +95 -173
- package/dist/components/Combobox.js.map +1 -1
- package/dist/components/ComboboxActions.cjs +70 -0
- package/dist/components/ComboboxActions.cjs.map +1 -0
- package/dist/components/ComboboxActions.d.ts +8 -0
- package/dist/components/ComboboxActions.d.ts.map +1 -0
- package/dist/components/ComboboxActions.js +70 -0
- package/dist/components/ComboboxActions.js.map +1 -0
- package/dist/components/ComboboxMenu.cjs +160 -0
- package/dist/components/ComboboxMenu.cjs.map +1 -0
- package/dist/components/ComboboxMenu.d.ts +22 -0
- package/dist/components/ComboboxMenu.d.ts.map +1 -0
- package/dist/components/ComboboxMenu.js +160 -0
- package/dist/components/ComboboxMenu.js.map +1 -0
- package/dist/components/EndpointSelector.cjs +407 -0
- package/dist/components/EndpointSelector.cjs.map +1 -0
- package/dist/components/EndpointSelector.d.ts +3 -0
- package/dist/components/EndpointSelector.d.ts.map +1 -0
- package/dist/components/EndpointSelector.js +407 -0
- package/dist/components/EndpointSelector.js.map +1 -0
- package/dist/components/EndpointSelector.model.d.ts +52 -0
- package/dist/components/EndpointSelector.model.d.ts.map +1 -0
- package/dist/components/FilterBar.cjs +12 -0
- package/dist/components/FilterBar.cjs.map +1 -1
- package/dist/components/FilterBar.d.ts +4 -0
- package/dist/components/FilterBar.d.ts.map +1 -1
- package/dist/components/FilterBar.js +12 -0
- package/dist/components/FilterBar.js.map +1 -1
- package/dist/components/InputField.cjs +11 -12
- package/dist/components/InputField.cjs.map +1 -1
- package/dist/components/InputField.d.ts +7 -0
- package/dist/components/InputField.d.ts.map +1 -1
- package/dist/components/InputField.js +12 -13
- package/dist/components/InputField.js.map +1 -1
- package/dist/components/JsonSchemaForm.cjs +22 -16
- package/dist/components/JsonSchemaForm.cjs.map +1 -1
- package/dist/components/JsonSchemaForm.d.ts +1 -1
- package/dist/components/JsonSchemaForm.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm.js +22 -16
- package/dist/components/JsonSchemaForm.js.map +1 -1
- package/dist/components/MultiSelect.cjs +3 -3
- package/dist/components/MultiSelect.cjs.map +1 -1
- package/dist/components/MultiSelect.d.ts.map +1 -1
- package/dist/components/MultiSelect.js +3 -3
- package/dist/components/MultiSelect.js.map +1 -1
- package/dist/components/SecretKeySelector.cjs +150 -77
- package/dist/components/SecretKeySelector.cjs.map +1 -1
- package/dist/components/SecretKeySelector.d.ts.map +1 -1
- package/dist/components/SecretKeySelector.js +151 -78
- package/dist/components/SecretKeySelector.js.map +1 -1
- package/dist/components/WorkloadPicker.cjs +2 -1
- package/dist/components/WorkloadPicker.cjs.map +1 -1
- package/dist/components/WorkloadPicker.d.ts +6 -1
- package/dist/components/WorkloadPicker.d.ts.map +1 -1
- package/dist/components/WorkloadPicker.js +2 -1
- package/dist/components/WorkloadPicker.js.map +1 -1
- package/dist/components/combobox-types.d.ts +107 -0
- package/dist/components/combobox-types.d.ts.map +1 -0
- package/dist/components/combobox-utils.cjs +21 -0
- package/dist/components/combobox-utils.cjs.map +1 -0
- package/dist/components/combobox-utils.d.ts +15 -0
- package/dist/components/combobox-utils.d.ts.map +1 -0
- package/dist/components/combobox-utils.js +21 -0
- package/dist/components/combobox-utils.js.map +1 -0
- package/dist/components/endpoint-port.cjs +12 -0
- package/dist/components/endpoint-port.cjs.map +1 -0
- package/dist/components/endpoint-port.d.ts +4 -0
- package/dist/components/endpoint-port.d.ts.map +1 -0
- package/dist/components/endpoint-port.js +12 -0
- package/dist/components/endpoint-port.js.map +1 -0
- package/dist/components/json-schema-form-array.cjs +12 -23
- package/dist/components/json-schema-form-array.cjs.map +1 -1
- package/dist/components/json-schema-form-array.d.ts +1 -1
- package/dist/components/json-schema-form-array.d.ts.map +1 -1
- package/dist/components/json-schema-form-array.js +12 -23
- package/dist/components/json-schema-form-array.js.map +1 -1
- package/dist/components/json-schema-form-discriminator.cjs +6 -2
- package/dist/components/json-schema-form-discriminator.cjs.map +1 -1
- package/dist/components/json-schema-form-discriminator.d.ts.map +1 -1
- package/dist/components/json-schema-form-discriminator.js +6 -2
- package/dist/components/json-schema-form-discriminator.js.map +1 -1
- package/dist/components/json-schema-form-error-display.cjs +50 -0
- package/dist/components/json-schema-form-error-display.cjs.map +1 -0
- package/dist/components/json-schema-form-error-display.d.ts +12 -0
- package/dist/components/json-schema-form-error-display.d.ts.map +1 -0
- package/dist/components/json-schema-form-error-display.js +50 -0
- package/dist/components/json-schema-form-error-display.js.map +1 -0
- package/dist/components/json-schema-form-error-types.d.ts +26 -0
- package/dist/components/json-schema-form-error-types.d.ts.map +1 -0
- package/dist/components/json-schema-form-errors.cjs +169 -0
- package/dist/components/json-schema-form-errors.cjs.map +1 -0
- package/dist/components/json-schema-form-errors.d.ts +14 -0
- package/dist/components/json-schema-form-errors.d.ts.map +1 -0
- package/dist/components/json-schema-form-errors.js +169 -0
- package/dist/components/json-schema-form-errors.js.map +1 -0
- package/dist/components/json-schema-form-object.cjs +12 -2
- package/dist/components/json-schema-form-object.cjs.map +1 -1
- package/dist/components/json-schema-form-object.d.ts.map +1 -1
- package/dist/components/json-schema-form-object.js +12 -2
- package/dist/components/json-schema-form-object.js.map +1 -1
- package/dist/components/json-schema-form-refs.cjs +84 -19
- package/dist/components/json-schema-form-refs.cjs.map +1 -1
- package/dist/components/json-schema-form-refs.d.ts.map +1 -1
- package/dist/components/json-schema-form-refs.js +84 -19
- package/dist/components/json-schema-form-refs.js.map +1 -1
- package/dist/components/json-schema-form-render.cjs +33 -10
- package/dist/components/json-schema-form-render.cjs.map +1 -1
- package/dist/components/json-schema-form-render.d.ts.map +1 -1
- package/dist/components/json-schema-form-render.js +34 -11
- package/dist/components/json-schema-form-render.js.map +1 -1
- package/dist/components/json-schema-form-resolve.cjs +16 -4
- package/dist/components/json-schema-form-resolve.cjs.map +1 -1
- package/dist/components/json-schema-form-resolve.d.ts +1 -0
- package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
- package/dist/components/json-schema-form-resolve.js +17 -5
- package/dist/components/json-schema-form-resolve.js.map +1 -1
- package/dist/components/json-schema-form-types.d.ts +4 -3
- package/dist/components/json-schema-form-types.d.ts.map +1 -1
- package/dist/components.cjs +13 -0
- package/dist/components.cjs.map +1 -1
- package/dist/components.d.ts +8 -1
- package/dist/components.d.ts.map +1 -1
- package/dist/components.js +15 -2
- package/dist/components.js.map +1 -1
- package/dist/data/DataTable.cjs +205 -14
- package/dist/data/DataTable.cjs.map +1 -1
- package/dist/data/DataTable.d.ts +41 -0
- package/dist/data/DataTable.d.ts.map +1 -1
- package/dist/data/DataTable.grouping.cjs +21 -0
- package/dist/data/DataTable.grouping.cjs.map +1 -0
- package/dist/data/DataTable.grouping.d.ts +26 -0
- package/dist/data/DataTable.grouping.d.ts.map +1 -0
- package/dist/data/DataTable.grouping.js +21 -0
- package/dist/data/DataTable.grouping.js.map +1 -0
- package/dist/data/DataTable.js +205 -14
- package/dist/data/DataTable.js.map +1 -1
- package/dist/data/Markdown.cjs +45 -1
- package/dist/data/Markdown.cjs.map +1 -1
- package/dist/data/Markdown.d.ts +3 -2
- package/dist/data/Markdown.d.ts.map +1 -1
- package/dist/data/Markdown.js +45 -1
- package/dist/data/Markdown.js.map +1 -1
- package/dist/data/MarkdownEditor.cjs +4 -3
- package/dist/data/MarkdownEditor.cjs.map +1 -1
- package/dist/data/MarkdownEditor.d.ts +6 -2
- package/dist/data/MarkdownEditor.d.ts.map +1 -1
- package/dist/data/MarkdownEditor.js +4 -3
- package/dist/data/MarkdownEditor.js.map +1 -1
- package/dist/data/ServerTimingBadge.cjs +64 -0
- package/dist/data/ServerTimingBadge.cjs.map +1 -0
- package/dist/data/ServerTimingBadge.d.ts +9 -0
- package/dist/data/ServerTimingBadge.d.ts.map +1 -0
- package/dist/data/ServerTimingBadge.js +64 -0
- package/dist/data/ServerTimingBadge.js.map +1 -0
- package/dist/data/StatStrip.cjs +99 -0
- package/dist/data/StatStrip.cjs.map +1 -0
- package/dist/data/StatStrip.d.ts +41 -0
- package/dist/data/StatStrip.d.ts.map +1 -0
- package/dist/data/StatStrip.js +99 -0
- package/dist/data/StatStrip.js.map +1 -0
- package/dist/data/TaskManager.cjs +20 -1
- package/dist/data/TaskManager.cjs.map +1 -1
- package/dist/data/TaskManager.d.ts +3 -1
- package/dist/data/TaskManager.d.ts.map +1 -1
- package/dist/data/TaskManager.js +20 -1
- package/dist/data/TaskManager.js.map +1 -1
- package/dist/data/TaskManagerButton.cjs +49 -0
- package/dist/data/TaskManagerButton.cjs.map +1 -0
- package/dist/data/TaskManagerButton.d.ts +8 -0
- package/dist/data/TaskManagerButton.d.ts.map +1 -0
- package/dist/data/TaskManagerButton.js +49 -0
- package/dist/data/TaskManagerButton.js.map +1 -0
- package/dist/data/TaskProcessDetails.cjs +113 -0
- package/dist/data/TaskProcessDetails.cjs.map +1 -0
- package/dist/data/TaskProcessDetails.d.ts +6 -0
- package/dist/data/TaskProcessDetails.d.ts.map +1 -0
- package/dist/data/TaskProcessDetails.js +113 -0
- package/dist/data/TaskProcessDetails.js.map +1 -0
- package/dist/data/TaskProgress.cjs +106 -19
- package/dist/data/TaskProgress.cjs.map +1 -1
- package/dist/data/TaskProgress.d.ts +4 -2
- package/dist/data/TaskProgress.d.ts.map +1 -1
- package/dist/data/TaskProgress.js +107 -20
- package/dist/data/TaskProgress.js.map +1 -1
- package/dist/data/TaskSnapshot.cjs.map +1 -1
- package/dist/data/TaskSnapshot.d.ts +43 -0
- package/dist/data/TaskSnapshot.d.ts.map +1 -1
- package/dist/data/TaskSnapshot.js.map +1 -1
- package/dist/data/Tree.cjs +91 -82
- package/dist/data/Tree.cjs.map +1 -1
- package/dist/data/Tree.d.ts +3 -1
- package/dist/data/Tree.d.ts.map +1 -1
- package/dist/data/Tree.js +91 -82
- package/dist/data/Tree.js.map +1 -1
- package/dist/data/TreeNode.cjs +3 -0
- package/dist/data/TreeNode.cjs.map +1 -1
- package/dist/data/TreeNode.d.ts +2 -1
- package/dist/data/TreeNode.d.ts.map +1 -1
- package/dist/data/TreeNode.js +3 -0
- package/dist/data/TreeNode.js.map +1 -1
- package/dist/data/ai/ChatWindow.cjs +18 -141
- package/dist/data/ai/ChatWindow.cjs.map +1 -1
- package/dist/data/ai/ChatWindow.d.ts +2 -40
- package/dist/data/ai/ChatWindow.d.ts.map +1 -1
- package/dist/data/ai/ChatWindow.js +15 -138
- package/dist/data/ai/ChatWindow.js.map +1 -1
- package/dist/data/ai/ChatWindow.models.cjs +11 -0
- package/dist/data/ai/ChatWindow.models.cjs.map +1 -0
- package/dist/data/ai/ChatWindow.models.d.ts +3 -0
- package/dist/data/ai/ChatWindow.models.d.ts.map +1 -0
- package/dist/data/ai/ChatWindow.models.js +11 -0
- package/dist/data/ai/ChatWindow.models.js.map +1 -0
- package/dist/data/ai/ChatWindow.preferences.cjs +57 -0
- package/dist/data/ai/ChatWindow.preferences.cjs.map +1 -0
- package/dist/data/ai/ChatWindow.preferences.d.ts +13 -0
- package/dist/data/ai/ChatWindow.preferences.d.ts.map +1 -0
- package/dist/data/ai/ChatWindow.preferences.js +57 -0
- package/dist/data/ai/ChatWindow.preferences.js.map +1 -0
- package/dist/data/ai/ChatWindow.thread-status.cjs +14 -0
- package/dist/data/ai/ChatWindow.thread-status.cjs.map +1 -0
- package/dist/data/ai/ChatWindow.thread-status.d.ts +5 -0
- package/dist/data/ai/ChatWindow.thread-status.d.ts.map +1 -0
- package/dist/data/ai/ChatWindow.thread-status.js +14 -0
- package/dist/data/ai/ChatWindow.thread-status.js.map +1 -0
- package/dist/data/ai/ChatWindow.thread.cjs +68 -0
- package/dist/data/ai/ChatWindow.thread.cjs.map +1 -0
- package/dist/data/ai/ChatWindow.thread.d.ts +16 -0
- package/dist/data/ai/ChatWindow.thread.d.ts.map +1 -0
- package/dist/data/ai/ChatWindow.thread.js +68 -0
- package/dist/data/ai/ChatWindow.thread.js.map +1 -0
- package/dist/data/ai/ChatWindow.tool-catalog.cjs +99 -0
- package/dist/data/ai/ChatWindow.tool-catalog.cjs.map +1 -0
- package/dist/data/ai/ChatWindow.tool-catalog.d.ts +3 -0
- package/dist/data/ai/ChatWindow.tool-catalog.d.ts.map +1 -0
- package/dist/data/ai/ChatWindow.tool-catalog.js +99 -0
- package/dist/data/ai/ChatWindow.tool-catalog.js.map +1 -0
- package/dist/data/ai/ChatWindow.types.d.ts +41 -0
- package/dist/data/ai/ChatWindow.types.d.ts.map +1 -0
- package/dist/data/ai/ContextBadges.cjs +76 -46
- package/dist/data/ai/ContextBadges.cjs.map +1 -1
- package/dist/data/ai/ContextBadges.d.ts.map +1 -1
- package/dist/data/ai/ContextBadges.js +77 -47
- package/dist/data/ai/ContextBadges.js.map +1 -1
- package/dist/data/ai/PromptPicker/PromptPicker.cjs +151 -32
- package/dist/data/ai/PromptPicker/PromptPicker.cjs.map +1 -1
- package/dist/data/ai/PromptPicker/PromptPicker.d.ts +7 -4
- package/dist/data/ai/PromptPicker/PromptPicker.d.ts.map +1 -1
- package/dist/data/ai/PromptPicker/PromptPicker.js +152 -33
- package/dist/data/ai/PromptPicker/PromptPicker.js.map +1 -1
- package/dist/data/ai/PromptPicker/PromptSourceRepair.cjs +133 -0
- package/dist/data/ai/PromptPicker/PromptSourceRepair.cjs.map +1 -0
- package/dist/data/ai/PromptPicker/PromptSourceRepair.d.ts +11 -0
- package/dist/data/ai/PromptPicker/PromptSourceRepair.d.ts.map +1 -0
- package/dist/data/ai/PromptPicker/PromptSourceRepair.js +133 -0
- package/dist/data/ai/PromptPicker/PromptSourceRepair.js.map +1 -0
- package/dist/data/ai/PromptPicker/index.d.ts +2 -1
- package/dist/data/ai/PromptPicker/index.d.ts.map +1 -1
- package/dist/data/ai/PromptPicker/types.cjs +7 -0
- package/dist/data/ai/PromptPicker/types.cjs.map +1 -0
- package/dist/data/ai/PromptPicker/types.d.ts +18 -2
- package/dist/data/ai/PromptPicker/types.d.ts.map +1 -1
- package/dist/data/ai/PromptPicker/types.js +7 -0
- package/dist/data/ai/PromptPicker/types.js.map +1 -0
- package/dist/data/ai/PromptRunEditor/index.cjs +171 -91
- package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.d.ts +9 -9
- package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.js +175 -95
- package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
- package/dist/data/ai/PromptRunEditor/model.cjs +47 -0
- package/dist/data/ai/PromptRunEditor/model.cjs.map +1 -0
- package/dist/data/ai/PromptRunEditor/model.d.ts +17 -0
- package/dist/data/ai/PromptRunEditor/model.d.ts.map +1 -0
- package/dist/data/ai/PromptRunEditor/model.js +47 -0
- package/dist/data/ai/PromptRunEditor/model.js.map +1 -0
- package/dist/data/ai/RuntimeBar.cjs +408 -0
- package/dist/data/ai/RuntimeBar.cjs.map +1 -0
- package/dist/data/ai/RuntimeBar.d.ts +20 -0
- package/dist/data/ai/RuntimeBar.d.ts.map +1 -0
- package/dist/data/ai/RuntimeBar.js +408 -0
- package/dist/data/ai/RuntimeBar.js.map +1 -0
- package/dist/data/ai/RuntimeBar.model.cjs +14 -0
- package/dist/data/ai/RuntimeBar.model.cjs.map +1 -0
- package/dist/data/ai/RuntimeBar.model.d.ts +10 -0
- package/dist/data/ai/RuntimeBar.model.d.ts.map +1 -0
- package/dist/data/ai/RuntimeBar.model.js +14 -0
- package/dist/data/ai/RuntimeBar.model.js.map +1 -0
- package/dist/data/ai/RuntimeBarCombo.cjs +359 -0
- package/dist/data/ai/RuntimeBarCombo.cjs.map +1 -0
- package/dist/data/ai/RuntimeBarCombo.d.ts +22 -0
- package/dist/data/ai/RuntimeBarCombo.d.ts.map +1 -0
- package/dist/data/ai/RuntimeBarCombo.js +359 -0
- package/dist/data/ai/RuntimeBarCombo.js.map +1 -0
- package/dist/data/ai/SessionChatComposer.cjs +56 -0
- package/dist/data/ai/SessionChatComposer.cjs.map +1 -0
- package/dist/data/ai/SessionChatComposer.d.ts +24 -0
- package/dist/data/ai/SessionChatComposer.d.ts.map +1 -0
- package/dist/data/ai/SessionChatComposer.js +56 -0
- package/dist/data/ai/SessionChatComposer.js.map +1 -0
- package/dist/data/ai/SessionInspector.cjs +222 -382
- package/dist/data/ai/SessionInspector.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.collection-types.d.ts +55 -0
- package/dist/data/ai/SessionInspector.collection-types.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.collection.cjs +377 -0
- package/dist/data/ai/SessionInspector.collection.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.collection.d.ts +15 -0
- package/dist/data/ai/SessionInspector.collection.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.collection.js +377 -0
- package/dist/data/ai/SessionInspector.collection.js.map +1 -0
- package/dist/data/ai/SessionInspector.d.ts +9 -4
- package/dist/data/ai/SessionInspector.d.ts.map +1 -1
- package/dist/data/ai/SessionInspector.files.cjs +162 -0
- package/dist/data/ai/SessionInspector.files.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.files.d.ts +5 -0
- package/dist/data/ai/SessionInspector.files.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.files.js +162 -0
- package/dist/data/ai/SessionInspector.files.js.map +1 -0
- package/dist/data/ai/SessionInspector.hierarchy-state.cjs +148 -0
- package/dist/data/ai/SessionInspector.hierarchy-state.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.hierarchy-state.d.ts +15 -0
- package/dist/data/ai/SessionInspector.hierarchy-state.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.hierarchy-state.js +148 -0
- package/dist/data/ai/SessionInspector.hierarchy-state.js.map +1 -0
- package/dist/data/ai/SessionInspector.hierarchy.cjs +256 -0
- package/dist/data/ai/SessionInspector.hierarchy.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.hierarchy.d.ts +9 -0
- package/dist/data/ai/SessionInspector.hierarchy.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.hierarchy.js +256 -0
- package/dist/data/ai/SessionInspector.hierarchy.js.map +1 -0
- package/dist/data/ai/SessionInspector.js +224 -384
- package/dist/data/ai/SessionInspector.js.map +1 -1
- package/dist/data/ai/SessionInspector.model.cjs +125 -0
- package/dist/data/ai/SessionInspector.model.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.model.d.ts +14 -0
- package/dist/data/ai/SessionInspector.model.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.model.js +125 -0
- package/dist/data/ai/SessionInspector.model.js.map +1 -0
- package/dist/data/ai/SessionInspector.panels.cjs +265 -0
- package/dist/data/ai/SessionInspector.panels.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.panels.d.ts +10 -0
- package/dist/data/ai/SessionInspector.panels.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.panels.js +265 -0
- package/dist/data/ai/SessionInspector.panels.js.map +1 -0
- package/dist/data/ai/SessionInspector.plan.cjs +77 -0
- package/dist/data/ai/SessionInspector.plan.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.plan.d.ts +6 -0
- package/dist/data/ai/SessionInspector.plan.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.plan.js +77 -0
- package/dist/data/ai/SessionInspector.plan.js.map +1 -0
- package/dist/data/ai/SessionInspector.summary.cjs +182 -0
- package/dist/data/ai/SessionInspector.summary.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.summary.d.ts +8 -0
- package/dist/data/ai/SessionInspector.summary.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.summary.js +182 -0
- package/dist/data/ai/SessionInspector.summary.js.map +1 -0
- package/dist/data/ai/SessionInspector.transcript.cjs +94 -0
- package/dist/data/ai/SessionInspector.transcript.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.transcript.d.ts +7 -0
- package/dist/data/ai/SessionInspector.transcript.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.transcript.js +94 -0
- package/dist/data/ai/SessionInspector.transcript.js.map +1 -0
- package/dist/data/ai/SessionInspector.turns.d.ts +11 -0
- package/dist/data/ai/SessionInspector.turns.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.cjs +86 -121
- package/dist/data/ai/SessionViewer.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.d.ts +8 -1
- package/dist/data/ai/SessionViewer.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.fixtures.d.ts +2 -0
- package/dist/data/ai/SessionViewer.fixtures.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.header.cjs +118 -0
- package/dist/data/ai/SessionViewer.header.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.header.d.ts +11 -0
- package/dist/data/ai/SessionViewer.header.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.header.js +118 -0
- package/dist/data/ai/SessionViewer.header.js.map +1 -0
- package/dist/data/ai/SessionViewer.js +87 -122
- package/dist/data/ai/SessionViewer.js.map +1 -1
- package/dist/data/ai/SessionViewer.model.cjs +111 -39
- package/dist/data/ai/SessionViewer.model.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.model.d.ts +6 -0
- package/dist/data/ai/SessionViewer.model.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.model.js +111 -39
- package/dist/data/ai/SessionViewer.model.js.map +1 -1
- package/dist/data/ai/SessionViewer.row-metadata.cjs +132 -0
- package/dist/data/ai/SessionViewer.row-metadata.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.row-metadata.d.ts +14 -0
- package/dist/data/ai/SessionViewer.row-metadata.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.row-metadata.js +132 -0
- package/dist/data/ai/SessionViewer.row-metadata.js.map +1 -0
- package/dist/data/ai/SessionViewer.row-time.cjs +15 -0
- package/dist/data/ai/SessionViewer.row-time.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.row-time.d.ts +3 -0
- package/dist/data/ai/SessionViewer.row-time.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.row-time.js +15 -0
- package/dist/data/ai/SessionViewer.row-time.js.map +1 -0
- package/dist/data/ai/SessionViewer.rows.cjs +37 -424
- package/dist/data/ai/SessionViewer.rows.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.rows.d.ts +5 -2
- package/dist/data/ai/SessionViewer.rows.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.rows.js +31 -418
- package/dist/data/ai/SessionViewer.rows.js.map +1 -1
- package/dist/data/ai/SessionViewer.tool-details.cjs +65 -0
- package/dist/data/ai/SessionViewer.tool-details.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.tool-details.d.ts +20 -0
- package/dist/data/ai/SessionViewer.tool-details.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.tool-details.js +65 -0
- package/dist/data/ai/SessionViewer.tool-details.js.map +1 -0
- package/dist/data/ai/SessionViewer.tool-row.cjs +404 -0
- package/dist/data/ai/SessionViewer.tool-row.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.tool-row.d.ts +12 -0
- package/dist/data/ai/SessionViewer.tool-row.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.tool-row.js +404 -0
- package/dist/data/ai/SessionViewer.tool-row.js.map +1 -0
- package/dist/data/ai/SessionViewer.unified.d.ts +11 -2
- package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs +44 -26
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.js +47 -29
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs +45 -153
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.js +51 -159
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs +0 -1
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.js +0 -1
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.cjs +0 -5
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.js +0 -5
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/fields.js +1 -1
- package/dist/data/ai/SpecRuntimeEditor/summaries.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/summaries.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/update.cjs +19 -6
- package/dist/data/ai/SpecRuntimeEditor/update.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/update.d.ts +5 -2
- package/dist/data/ai/SpecRuntimeEditor/update.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/update.js +19 -6
- package/dist/data/ai/SpecRuntimeEditor/update.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor.model.cjs +67 -10
- package/dist/data/ai/SpecRuntimeEditor.model.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor.model.d.ts +31 -4
- package/dist/data/ai/SpecRuntimeEditor.model.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor.model.js +67 -10
- package/dist/data/ai/SpecRuntimeEditor.model.js.map +1 -1
- package/dist/data/ai/ThreadPicker.cjs.map +1 -1
- package/dist/data/ai/ThreadPicker.d.ts +2 -0
- package/dist/data/ai/ThreadPicker.d.ts.map +1 -1
- package/dist/data/ai/ThreadPicker.js.map +1 -1
- package/dist/data/ai/ToolPreferences.cjs +2 -1
- package/dist/data/ai/ToolPreferences.cjs.map +1 -1
- package/dist/data/ai/ToolPreferences.d.ts.map +1 -1
- package/dist/data/ai/ToolPreferences.js +2 -1
- package/dist/data/ai/ToolPreferences.js.map +1 -1
- package/dist/data/ai/agent-action-icons.cjs +7 -10
- package/dist/data/ai/agent-action-icons.cjs.map +1 -1
- package/dist/data/ai/agent-action-icons.d.ts +1 -2
- package/dist/data/ai/agent-action-icons.d.ts.map +1 -1
- package/dist/data/ai/agent-action-icons.js +8 -11
- package/dist/data/ai/agent-action-icons.js.map +1 -1
- package/dist/data/ai/context.cjs.map +1 -1
- package/dist/data/ai/context.d.ts +4 -0
- package/dist/data/ai/context.d.ts.map +1 -1
- package/dist/data/ai/context.js.map +1 -1
- package/dist/data/ai/examples/sessions/claude-complete.cjs +513 -0
- package/dist/data/ai/examples/sessions/claude-complete.cjs.map +1 -0
- package/dist/data/ai/examples/sessions/claude-complete.d.ts +3 -0
- package/dist/data/ai/examples/sessions/claude-complete.d.ts.map +1 -0
- package/dist/data/ai/examples/sessions/claude-complete.js +513 -0
- package/dist/data/ai/examples/sessions/claude-complete.js.map +1 -0
- package/dist/data/ai/examples/sessions/claude.cjs +252 -0
- package/dist/data/ai/examples/sessions/claude.cjs.map +1 -0
- package/dist/data/ai/examples/sessions/claude.d.ts +3 -0
- package/dist/data/ai/examples/sessions/claude.d.ts.map +1 -0
- package/dist/data/ai/examples/sessions/claude.js +252 -0
- package/dist/data/ai/examples/sessions/claude.js.map +1 -0
- package/dist/data/ai/examples/sessions/codex-complete.cjs +394 -0
- package/dist/data/ai/examples/sessions/codex-complete.cjs.map +1 -0
- package/dist/data/ai/examples/sessions/codex-complete.d.ts +3 -0
- package/dist/data/ai/examples/sessions/codex-complete.d.ts.map +1 -0
- package/dist/data/ai/examples/sessions/codex-complete.js +394 -0
- package/dist/data/ai/examples/sessions/codex-complete.js.map +1 -0
- package/dist/data/ai/examples/sessions/codex.cjs +236 -0
- package/dist/data/ai/examples/sessions/codex.cjs.map +1 -0
- package/dist/data/ai/examples/sessions/codex.d.ts +3 -0
- package/dist/data/ai/examples/sessions/codex.d.ts.map +1 -0
- package/dist/data/ai/examples/sessions/codex.js +236 -0
- package/dist/data/ai/examples/sessions/codex.js.map +1 -0
- package/dist/data/ai/examples/sessions/index.cjs +21 -0
- package/dist/data/ai/examples/sessions/index.cjs.map +1 -0
- package/dist/data/ai/examples/sessions/index.d.ts +10 -0
- package/dist/data/ai/examples/sessions/index.d.ts.map +1 -0
- package/dist/data/ai/examples/sessions/index.js +21 -0
- package/dist/data/ai/examples/sessions/index.js.map +1 -0
- package/dist/data/ai/index.d.ts +9 -3
- package/dist/data/ai/index.d.ts.map +1 -1
- package/dist/data/ai/model-capabilities.cjs +12 -1
- package/dist/data/ai/model-capabilities.cjs.map +1 -1
- package/dist/data/ai/model-capabilities.d.ts +2 -6
- package/dist/data/ai/model-capabilities.d.ts.map +1 -1
- package/dist/data/ai/model-capabilities.js +12 -1
- package/dist/data/ai/model-capabilities.js.map +1 -1
- package/dist/data/ai/runtime-mode.cjs +72 -1
- package/dist/data/ai/runtime-mode.cjs.map +1 -1
- package/dist/data/ai/runtime-mode.d.ts +28 -0
- package/dist/data/ai/runtime-mode.d.ts.map +1 -1
- package/dist/data/ai/runtime-mode.js +73 -2
- package/dist/data/ai/runtime-mode.js.map +1 -1
- package/dist/data/cells/EntityCell.cjs +64 -0
- package/dist/data/cells/EntityCell.cjs.map +1 -0
- package/dist/data/cells/EntityCell.d.ts +27 -0
- package/dist/data/cells/EntityCell.d.ts.map +1 -0
- package/dist/data/cells/EntityCell.js +64 -0
- package/dist/data/cells/EntityCell.js.map +1 -0
- package/dist/data/chat/Attachment.cjs +53 -13
- package/dist/data/chat/Attachment.cjs.map +1 -1
- package/dist/data/chat/Attachment.d.ts +9 -3
- package/dist/data/chat/Attachment.d.ts.map +1 -1
- package/dist/data/chat/Attachment.js +54 -14
- package/dist/data/chat/Attachment.js.map +1 -1
- package/dist/data/chat/Chat.cjs +113 -36
- package/dist/data/chat/Chat.cjs.map +1 -1
- package/dist/data/chat/Chat.d.ts +11 -4
- package/dist/data/chat/Chat.d.ts.map +1 -1
- package/dist/data/chat/Chat.js +111 -34
- package/dist/data/chat/Chat.js.map +1 -1
- package/dist/data/chat/ContextMeter.cjs +240 -66
- package/dist/data/chat/ContextMeter.cjs.map +1 -1
- package/dist/data/chat/ContextMeter.d.ts +11 -3
- package/dist/data/chat/ContextMeter.d.ts.map +1 -1
- package/dist/data/chat/ContextMeter.js +241 -67
- package/dist/data/chat/ContextMeter.js.map +1 -1
- package/dist/data/chat/Conversation.cjs +55 -3
- package/dist/data/chat/Conversation.cjs.map +1 -1
- package/dist/data/chat/Conversation.d.ts +5 -1
- package/dist/data/chat/Conversation.d.ts.map +1 -1
- package/dist/data/chat/Conversation.js +55 -3
- package/dist/data/chat/Conversation.js.map +1 -1
- package/dist/data/chat/ModelSelector.cjs +8 -10
- package/dist/data/chat/ModelSelector.cjs.map +1 -1
- package/dist/data/chat/ModelSelector.d.ts.map +1 -1
- package/dist/data/chat/ModelSelector.js +9 -11
- package/dist/data/chat/ModelSelector.js.map +1 -1
- package/dist/data/chat/PromptInput.cjs +56 -5
- package/dist/data/chat/PromptInput.cjs.map +1 -1
- package/dist/data/chat/PromptInput.d.ts +10 -1
- package/dist/data/chat/PromptInput.d.ts.map +1 -1
- package/dist/data/chat/PromptInput.js +57 -6
- package/dist/data/chat/PromptInput.js.map +1 -1
- package/dist/data/chat/approval.cjs +21 -0
- package/dist/data/chat/approval.cjs.map +1 -0
- package/dist/data/chat/approval.d.ts +11 -0
- package/dist/data/chat/approval.d.ts.map +1 -0
- package/dist/data/chat/approval.js +21 -0
- package/dist/data/chat/approval.js.map +1 -0
- package/dist/data/chat/attachment-upload.cjs +33 -0
- package/dist/data/chat/attachment-upload.cjs.map +1 -0
- package/dist/data/chat/attachment-upload.d.ts +21 -0
- package/dist/data/chat/attachment-upload.d.ts.map +1 -0
- package/dist/data/chat/attachment-upload.js +33 -0
- package/dist/data/chat/attachment-upload.js.map +1 -0
- package/dist/data/chat/effort-icons.cjs +36 -6
- package/dist/data/chat/effort-icons.cjs.map +1 -1
- package/dist/data/chat/effort-icons.d.ts +6 -3
- package/dist/data/chat/effort-icons.d.ts.map +1 -1
- package/dist/data/chat/effort-icons.js +37 -7
- package/dist/data/chat/effort-icons.js.map +1 -1
- package/dist/data/chat/index.d.ts +3 -1
- package/dist/data/chat/index.d.ts.map +1 -1
- package/dist/data/chat/models.cjs +8 -0
- package/dist/data/chat/models.cjs.map +1 -0
- package/dist/data/chat/models.d.ts +11 -0
- package/dist/data/chat/models.d.ts.map +1 -0
- package/dist/data/chat/models.js +8 -0
- package/dist/data/chat/models.js.map +1 -0
- package/dist/data/chat/provider-icons.cjs +49 -16
- package/dist/data/chat/provider-icons.cjs.map +1 -1
- package/dist/data/chat/provider-icons.d.ts +2 -0
- package/dist/data/chat/provider-icons.d.ts.map +1 -1
- package/dist/data/chat/provider-icons.js +50 -17
- package/dist/data/chat/provider-icons.js.map +1 -1
- package/dist/data/chat/types.cjs.map +1 -1
- package/dist/data/chat/types.d.ts +21 -0
- package/dist/data/chat/types.d.ts.map +1 -1
- package/dist/data/chat/types.js.map +1 -1
- package/dist/data/examples/markdown-preview-mock.cjs +45 -0
- package/dist/data/examples/markdown-preview-mock.cjs.map +1 -0
- package/dist/data/examples/markdown-preview-mock.d.ts +23 -0
- package/dist/data/examples/markdown-preview-mock.d.ts.map +1 -0
- package/dist/data/examples/markdown-preview-mock.js +45 -0
- package/dist/data/examples/markdown-preview-mock.js.map +1 -0
- package/dist/data/examples/markdown-syntax.cjs +36 -0
- package/dist/data/examples/markdown-syntax.cjs.map +1 -0
- package/dist/data/examples/markdown-syntax.d.ts +12 -0
- package/dist/data/examples/markdown-syntax.d.ts.map +1 -0
- package/dist/data/examples/markdown-syntax.js +36 -0
- package/dist/data/examples/markdown-syntax.js.map +1 -0
- package/dist/data/examples/markdown-syntax.md.cjs +4 -0
- package/dist/data/examples/markdown-syntax.md.cjs.map +1 -0
- package/dist/data/examples/markdown-syntax.md.js +5 -0
- package/dist/data/examples/markdown-syntax.md.js.map +1 -0
- package/dist/data/server-timing.cjs +120 -0
- package/dist/data/server-timing.cjs.map +1 -0
- package/dist/data/server-timing.d.ts +11 -0
- package/dist/data/server-timing.d.ts.map +1 -0
- package/dist/data/server-timing.js +120 -0
- package/dist/data/server-timing.js.map +1 -0
- package/dist/data/task-process-details.cjs +48 -0
- package/dist/data/task-process-details.cjs.map +1 -0
- package/dist/data/task-process-details.d.ts +5 -0
- package/dist/data/task-process-details.d.ts.map +1 -0
- package/dist/data/task-process-details.js +48 -0
- package/dist/data/task-process-details.js.map +1 -0
- package/dist/data/version-info.cjs +3 -3
- package/dist/data/version-info.js +3 -3
- package/dist/data.cjs +37 -0
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.ts +9 -1
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +37 -0
- package/dist/data.js.map +1 -1
- package/dist/hooks/use-hotkey.cjs +98 -0
- package/dist/hooks/use-hotkey.cjs.map +1 -0
- package/dist/hooks/use-hotkey.d.ts +42 -0
- package/dist/hooks/use-hotkey.d.ts.map +1 -0
- package/dist/hooks/use-hotkey.js +98 -0
- package/dist/hooks/use-hotkey.js.map +1 -0
- package/dist/hooks/use-task-run.cjs +23 -1
- package/dist/hooks/use-task-run.cjs.map +1 -1
- package/dist/hooks/use-task-run.d.ts.map +1 -1
- package/dist/hooks/use-task-run.js +23 -1
- package/dist/hooks/use-task-run.js.map +1 -1
- package/dist/hooks.cjs +4 -0
- package/dist/hooks.cjs.map +1 -1
- package/dist/hooks.d.ts +1 -0
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +4 -0
- package/dist/hooks.js.map +1 -1
- package/dist/icons/components/UiBank.cjs +15 -0
- package/dist/icons/components/UiBank.cjs.map +1 -0
- package/dist/icons/components/UiBank.d.ts +15 -0
- package/dist/icons/components/UiBank.d.ts.map +1 -0
- package/dist/icons/components/UiBank.js +15 -0
- package/dist/icons/components/UiBank.js.map +1 -0
- package/dist/icons/components/UiChartOfAccounts.cjs +15 -0
- package/dist/icons/components/UiChartOfAccounts.cjs.map +1 -0
- package/dist/icons/components/UiChartOfAccounts.d.ts +15 -0
- package/dist/icons/components/UiChartOfAccounts.d.ts.map +1 -0
- package/dist/icons/components/UiChartOfAccounts.js +15 -0
- package/dist/icons/components/UiChartOfAccounts.js.map +1 -0
- package/dist/icons/components/UiCloudUpload.cjs +15 -0
- package/dist/icons/components/UiCloudUpload.cjs.map +1 -0
- package/dist/icons/components/UiCloudUpload.d.ts +15 -0
- package/dist/icons/components/UiCloudUpload.d.ts.map +1 -0
- package/dist/icons/components/UiCloudUpload.js +15 -0
- package/dist/icons/components/UiCloudUpload.js.map +1 -0
- package/dist/icons/components/UiLedger.cjs +15 -0
- package/dist/icons/components/UiLedger.cjs.map +1 -0
- package/dist/icons/components/UiLedger.d.ts +15 -0
- package/dist/icons/components/UiLedger.d.ts.map +1 -0
- package/dist/icons/components/UiLedger.js +15 -0
- package/dist/icons/components/UiLedger.js.map +1 -0
- package/dist/icons/components/UiReceipt.cjs +15 -0
- package/dist/icons/components/UiReceipt.cjs.map +1 -0
- package/dist/icons/components/UiReceipt.d.ts +15 -0
- package/dist/icons/components/UiReceipt.d.ts.map +1 -0
- package/dist/icons/components/UiReceipt.js +15 -0
- package/dist/icons/components/UiReceipt.js.map +1 -0
- package/dist/icons/index.d.ts +10 -0
- package/dist/icons/index.d.ts.map +1 -1
- package/dist/icons.cjs +15 -0
- package/dist/icons.cjs.map +1 -1
- package/dist/icons.js +15 -0
- package/dist/icons.js.map +1 -1
- package/dist/index.cjs +54 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +56 -2
- package/dist/index.js.map +1 -1
- package/dist/layout/AppShell.cjs +270 -238
- package/dist/layout/AppShell.cjs.map +1 -1
- package/dist/layout/AppShell.d.ts +9 -0
- package/dist/layout/AppShell.d.ts.map +1 -1
- package/dist/layout/AppShell.debug.cjs +53 -0
- package/dist/layout/AppShell.debug.cjs.map +1 -0
- package/dist/layout/AppShell.debug.d.ts +6 -0
- package/dist/layout/AppShell.debug.d.ts.map +1 -0
- package/dist/layout/AppShell.debug.js +53 -0
- package/dist/layout/AppShell.debug.js.map +1 -0
- package/dist/layout/AppShell.js +269 -237
- package/dist/layout/AppShell.js.map +1 -1
- package/dist/layout/AppShell.nav.cjs +90 -0
- package/dist/layout/AppShell.nav.cjs.map +1 -0
- package/dist/layout/AppShell.nav.d.ts +7 -0
- package/dist/layout/AppShell.nav.d.ts.map +1 -0
- package/dist/layout/AppShell.nav.js +90 -0
- package/dist/layout/AppShell.nav.js.map +1 -0
- package/dist/layout/AppSidebar.cjs +35 -5
- package/dist/layout/AppSidebar.cjs.map +1 -1
- package/dist/layout/AppSidebar.d.ts +4 -1
- package/dist/layout/AppSidebar.d.ts.map +1 -1
- package/dist/layout/AppSidebar.js +35 -5
- package/dist/layout/AppSidebar.js.map +1 -1
- package/dist/layout/Panel.cjs +25 -41
- package/dist/layout/Panel.cjs.map +1 -1
- package/dist/layout/Panel.d.ts +2 -1
- package/dist/layout/Panel.d.ts.map +1 -1
- package/dist/layout/Panel.js +26 -42
- package/dist/layout/Panel.js.map +1 -1
- package/dist/layout/PanelFrame.cjs +56 -0
- package/dist/layout/PanelFrame.cjs.map +1 -0
- package/dist/layout/PanelFrame.d.ts +15 -0
- package/dist/layout/PanelFrame.d.ts.map +1 -0
- package/dist/layout/PanelFrame.js +56 -0
- package/dist/layout/PanelFrame.js.map +1 -0
- package/dist/layout/Section.cjs +51 -41
- package/dist/layout/Section.cjs.map +1 -1
- package/dist/layout/Section.d.ts +3 -2
- package/dist/layout/Section.d.ts.map +1 -1
- package/dist/layout/Section.js +51 -41
- package/dist/layout/Section.js.map +1 -1
- package/dist/layout/content-width.cjs +8 -0
- package/dist/layout/content-width.cjs.map +1 -0
- package/dist/layout/content-width.d.ts +3 -0
- package/dist/layout/content-width.d.ts.map +1 -0
- package/dist/layout/content-width.js +8 -0
- package/dist/layout/content-width.js.map +1 -0
- package/dist/overlay/CommandPalette.cjs +207 -0
- package/dist/overlay/CommandPalette.cjs.map +1 -0
- package/dist/overlay/CommandPalette.d.ts +71 -0
- package/dist/overlay/CommandPalette.d.ts.map +1 -0
- package/dist/overlay/CommandPalette.js +207 -0
- package/dist/overlay/CommandPalette.js.map +1 -0
- package/dist/overlay/CommandPalette.model.cjs +70 -0
- package/dist/overlay/CommandPalette.model.cjs.map +1 -0
- package/dist/overlay/CommandPalette.model.d.ts +71 -0
- package/dist/overlay/CommandPalette.model.d.ts.map +1 -0
- package/dist/overlay/CommandPalette.model.js +70 -0
- package/dist/overlay/CommandPalette.model.js.map +1 -0
- package/dist/overlay/CommandPaletteList.cjs +88 -0
- package/dist/overlay/CommandPaletteList.cjs.map +1 -0
- package/dist/overlay/CommandPaletteList.d.ts +23 -0
- package/dist/overlay/CommandPaletteList.d.ts.map +1 -0
- package/dist/overlay/CommandPaletteList.js +88 -0
- package/dist/overlay/CommandPaletteList.js.map +1 -0
- package/dist/overlay/CommandPaletteTrigger.cjs +36 -0
- package/dist/overlay/CommandPaletteTrigger.cjs.map +1 -0
- package/dist/overlay/CommandPaletteTrigger.d.ts +22 -0
- package/dist/overlay/CommandPaletteTrigger.d.ts.map +1 -0
- package/dist/overlay/CommandPaletteTrigger.js +36 -0
- package/dist/overlay/CommandPaletteTrigger.js.map +1 -0
- package/dist/overlay/HoverCard.cjs.map +1 -1
- package/dist/overlay/HoverCard.d.ts +2 -2
- package/dist/overlay/HoverCard.d.ts.map +1 -1
- package/dist/overlay/HoverCard.js.map +1 -1
- package/dist/overlay/Modal.cjs +12 -5
- package/dist/overlay/Modal.cjs.map +1 -1
- package/dist/overlay/Modal.d.ts.map +1 -1
- package/dist/overlay/Modal.js +12 -5
- package/dist/overlay/Modal.js.map +1 -1
- package/dist/overlay/modalStack.js +1 -1
- package/dist/overlay/zIndex.cjs +2 -0
- package/dist/overlay/zIndex.cjs.map +1 -1
- package/dist/overlay/zIndex.js +2 -0
- package/dist/overlay/zIndex.js.map +1 -1
- package/dist/rpc/EntityExplorerApp.cjs +6 -0
- package/dist/rpc/EntityExplorerApp.cjs.map +1 -1
- package/dist/rpc/EntityExplorerApp.d.ts.map +1 -1
- package/dist/rpc/EntityExplorerApp.js +6 -0
- package/dist/rpc/EntityExplorerApp.js.map +1 -1
- package/dist/rpc/OperationCatalog.cjs +45 -71
- package/dist/rpc/OperationCatalog.cjs.map +1 -1
- package/dist/rpc/OperationCatalog.d.ts +12 -2
- package/dist/rpc/OperationCatalog.d.ts.map +1 -1
- package/dist/rpc/OperationCatalog.js +46 -72
- package/dist/rpc/OperationCatalog.js.map +1 -1
- package/dist/rpc/OperationResultView.cjs +42 -0
- package/dist/rpc/OperationResultView.cjs.map +1 -1
- package/dist/rpc/OperationResultView.d.ts +2 -1
- package/dist/rpc/OperationResultView.d.ts.map +1 -1
- package/dist/rpc/OperationResultView.js +42 -0
- package/dist/rpc/OperationResultView.js.map +1 -1
- package/dist/rpc/clickyMetadata.cjs +2 -1
- package/dist/rpc/clickyMetadata.cjs.map +1 -1
- package/dist/rpc/clickyMetadata.d.ts.map +1 -1
- package/dist/rpc/clickyMetadata.js +2 -1
- package/dist/rpc/clickyMetadata.js.map +1 -1
- package/dist/rpc/rpc-story-fixtures/orders.fixture.d.ts.map +1 -1
- package/dist/rpc/rpc-story-fixtures/services.fixture.d.ts.map +1 -1
- package/dist/rpc/rpc-story-fixtures/surface-fixture.d.ts +25 -2
- package/dist/rpc/rpc-story-fixtures/surface-fixture.d.ts.map +1 -1
- package/dist/rpc/rpc-story-fixtures/widgets.fixture.d.ts.map +1 -1
- package/dist/rpc/rpc-story.fixtures.d.ts +2 -1
- package/dist/rpc/rpc-story.fixtures.d.ts.map +1 -1
- package/dist/rpc/types.cjs.map +1 -1
- package/dist/rpc/types.d.ts +1 -0
- package/dist/rpc/types.d.ts.map +1 -1
- package/dist/rpc/types.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/tailwind-preset.cjs +15 -0
- package/dist/tailwind-preset.cjs.map +1 -1
- package/dist/tailwind-preset.d.ts.map +1 -1
- package/dist/tailwind-preset.js +15 -0
- package/dist/tailwind-preset.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../../lib/utils.js";
|
|
3
|
+
import { Icon } from "../Icon.js";
|
|
4
|
+
import { Tree } from "../Tree.js";
|
|
5
|
+
import { UiFolder } from "../../icons/components/UiFolder.js";
|
|
6
|
+
import { UiMarkdown } from "../../icons/components/UiMarkdown.js";
|
|
7
|
+
import { UiJson } from "../../icons/components/UiJson.js";
|
|
8
|
+
import { UiFileSpreadsheet } from "../../icons/components/UiFileSpreadsheet.js";
|
|
9
|
+
import { UiImage } from "../../icons/components/UiImage.js";
|
|
10
|
+
import { UiFileText } from "../../icons/components/UiFileText.js";
|
|
11
|
+
import { UiFileCode } from "../../icons/components/UiFileCode.js";
|
|
12
|
+
import { UiFile } from "../../icons/components/UiFile.js";
|
|
13
|
+
function SessionFilesPanel({
|
|
14
|
+
files
|
|
15
|
+
}) {
|
|
16
|
+
const roots = buildFileTree(files);
|
|
17
|
+
if (!roots.length) {
|
|
18
|
+
return /* @__PURE__ */ jsx("div", { className: "rounded-md border border-dashed border-border p-density-6 text-center text-sm text-muted-foreground", children: "No changed-file summary." });
|
|
19
|
+
}
|
|
20
|
+
return /* @__PURE__ */ jsxs("div", { className: "overflow-hidden rounded-lg border border-border bg-background", children: [
|
|
21
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between border-b border-border bg-muted/30 px-density-3 py-density-2 text-xs text-muted-foreground", children: [
|
|
22
|
+
/* @__PURE__ */ jsxs("span", { children: [
|
|
23
|
+
roots.reduce((count, node) => count + countFiles(node), 0),
|
|
24
|
+
" files"
|
|
25
|
+
] }),
|
|
26
|
+
/* @__PURE__ */ jsxs("span", { className: "flex gap-density-3", children: [
|
|
27
|
+
/* @__PURE__ */ jsx("span", { children: "R read" }),
|
|
28
|
+
/* @__PURE__ */ jsx("span", { children: "W written" })
|
|
29
|
+
] })
|
|
30
|
+
] }),
|
|
31
|
+
/* @__PURE__ */ jsx(
|
|
32
|
+
Tree,
|
|
33
|
+
{
|
|
34
|
+
roots,
|
|
35
|
+
ariaLabel: "Session files",
|
|
36
|
+
getChildren: (node) => [...node.children.values()].sort(compareNodes),
|
|
37
|
+
getKey: (node) => node.path,
|
|
38
|
+
getAriaLabel: (node) => node.path,
|
|
39
|
+
getSearchText: (node) => node.path,
|
|
40
|
+
defaultOpen: () => true,
|
|
41
|
+
renderRow: ({ node, hasChildren }) => /* @__PURE__ */ jsx(FileTreeRow, { node, directory: hasChildren }),
|
|
42
|
+
rowClass: (node) => cn(
|
|
43
|
+
"group min-h-6 border-l-2 border-transparent py-0 pr-density-3 text-xs hover:border-primary/40 hover:bg-muted/40",
|
|
44
|
+
!node.children.size && node.access.has("written") && "border-l-amber-500/60"
|
|
45
|
+
),
|
|
46
|
+
className: "pb-1"
|
|
47
|
+
}
|
|
48
|
+
)
|
|
49
|
+
] });
|
|
50
|
+
}
|
|
51
|
+
function FileTreeRow({
|
|
52
|
+
node,
|
|
53
|
+
directory
|
|
54
|
+
}) {
|
|
55
|
+
const FileIcon = directory ? UiFolder : fileTypeIcon(node.name);
|
|
56
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
57
|
+
/* @__PURE__ */ jsx(
|
|
58
|
+
Icon,
|
|
59
|
+
{
|
|
60
|
+
icon: FileIcon,
|
|
61
|
+
className: cn(
|
|
62
|
+
"size-4 shrink-0",
|
|
63
|
+
directory ? "text-sky-600 dark:text-sky-400" : "text-muted-foreground"
|
|
64
|
+
)
|
|
65
|
+
}
|
|
66
|
+
),
|
|
67
|
+
/* @__PURE__ */ jsx(
|
|
68
|
+
"span",
|
|
69
|
+
{
|
|
70
|
+
className: cn(
|
|
71
|
+
"min-w-0 flex-1 truncate",
|
|
72
|
+
directory ? "font-medium" : "font-mono"
|
|
73
|
+
),
|
|
74
|
+
children: node.name
|
|
75
|
+
}
|
|
76
|
+
),
|
|
77
|
+
!directory ? /* @__PURE__ */ jsx(AccessBadge, { access: node.access }) : null
|
|
78
|
+
] });
|
|
79
|
+
}
|
|
80
|
+
function AccessBadge({ access }) {
|
|
81
|
+
const label = access.has("read") && access.has("written") ? "RW" : access.has("written") ? "W" : "R";
|
|
82
|
+
return /* @__PURE__ */ jsx(
|
|
83
|
+
"span",
|
|
84
|
+
{
|
|
85
|
+
title: label === "RW" ? "Read and written" : label === "W" ? "Written" : "Read",
|
|
86
|
+
className: cn(
|
|
87
|
+
"w-6 shrink-0 text-right font-mono text-[11px] font-semibold",
|
|
88
|
+
access.has("written") ? "text-amber-600 dark:text-amber-400" : "text-muted-foreground"
|
|
89
|
+
),
|
|
90
|
+
children: label
|
|
91
|
+
}
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
function buildFileTree(files) {
|
|
95
|
+
const roots = /* @__PURE__ */ new Map();
|
|
96
|
+
addPaths(roots, (files == null ? void 0 : files.read) ?? [], "read");
|
|
97
|
+
addPaths(roots, (files == null ? void 0 : files.written) ?? [], "written");
|
|
98
|
+
return [...roots.values()].sort(compareNodes);
|
|
99
|
+
}
|
|
100
|
+
function addPaths(roots, paths, access) {
|
|
101
|
+
for (const path of paths) {
|
|
102
|
+
const parts = path.split("/").filter(Boolean);
|
|
103
|
+
let nodes = roots;
|
|
104
|
+
let currentPath = "";
|
|
105
|
+
parts.forEach((part, index) => {
|
|
106
|
+
currentPath = currentPath ? `${currentPath}/${part}` : part;
|
|
107
|
+
const node = nodes.get(part) ?? {
|
|
108
|
+
name: part,
|
|
109
|
+
path: currentPath,
|
|
110
|
+
children: /* @__PURE__ */ new Map(),
|
|
111
|
+
access: /* @__PURE__ */ new Set()
|
|
112
|
+
};
|
|
113
|
+
nodes.set(part, node);
|
|
114
|
+
if (index === parts.length - 1) node.access.add(access);
|
|
115
|
+
nodes = node.children;
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
function compareNodes(left, right) {
|
|
120
|
+
const leftDirectory = left.children.size > 0;
|
|
121
|
+
const rightDirectory = right.children.size > 0;
|
|
122
|
+
if (leftDirectory !== rightDirectory) return leftDirectory ? -1 : 1;
|
|
123
|
+
return left.name.localeCompare(right.name);
|
|
124
|
+
}
|
|
125
|
+
function countFiles(node) {
|
|
126
|
+
return node.children.size ? [...node.children.values()].reduce(
|
|
127
|
+
(count, child) => count + countFiles(child),
|
|
128
|
+
0
|
|
129
|
+
) : 1;
|
|
130
|
+
}
|
|
131
|
+
function fileTypeIcon(path) {
|
|
132
|
+
const extension = path.toLowerCase().split(".").at(-1) ?? "";
|
|
133
|
+
if (["md", "mdx"].includes(extension)) return UiMarkdown;
|
|
134
|
+
if (["json", "jsonl"].includes(extension)) return UiJson;
|
|
135
|
+
if (["csv", "xls", "xlsx"].includes(extension)) return UiFileSpreadsheet;
|
|
136
|
+
if (["png", "jpg", "jpeg", "gif", "svg", "webp"].includes(extension))
|
|
137
|
+
return UiImage;
|
|
138
|
+
if (["txt", "log", "rst"].includes(extension)) return UiFileText;
|
|
139
|
+
if ([
|
|
140
|
+
"ts",
|
|
141
|
+
"tsx",
|
|
142
|
+
"js",
|
|
143
|
+
"jsx",
|
|
144
|
+
"go",
|
|
145
|
+
"py",
|
|
146
|
+
"rs",
|
|
147
|
+
"java",
|
|
148
|
+
"css",
|
|
149
|
+
"scss",
|
|
150
|
+
"html",
|
|
151
|
+
"yaml",
|
|
152
|
+
"yml",
|
|
153
|
+
"toml",
|
|
154
|
+
"sh"
|
|
155
|
+
].includes(extension))
|
|
156
|
+
return UiFileCode;
|
|
157
|
+
return UiFile;
|
|
158
|
+
}
|
|
159
|
+
export {
|
|
160
|
+
SessionFilesPanel
|
|
161
|
+
};
|
|
162
|
+
//# sourceMappingURL=SessionInspector.files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionInspector.files.js","sources":["../../../src/data/ai/SessionInspector.files.tsx"],"sourcesContent":["import {\n UiFile,\n UiFileCode,\n UiFileSpreadsheet,\n UiFileText,\n UiFolder,\n UiImage,\n UiJson,\n UiMarkdown,\n} from \"../../icons\";\nimport type { IconComponent } from \"../../icons/types\";\nimport { cn } from \"../../lib/utils\";\nimport { Icon } from \"../Icon\";\nimport { Tree } from \"../Tree\";\nimport type { SessionChangedFiles } from \"./SessionViewer.unified\";\n\ntype FileAccess = \"read\" | \"written\";\n\ntype FileTreeNode = {\n name: string;\n path: string;\n children: Map<string, FileTreeNode>;\n access: Set<FileAccess>;\n};\n\nexport function SessionFilesPanel({\n files,\n}: {\n files: SessionChangedFiles | undefined;\n}) {\n const roots = buildFileTree(files);\n if (!roots.length) {\n return (\n <div className=\"rounded-md border border-dashed border-border p-density-6 text-center text-sm text-muted-foreground\">\n No changed-file summary.\n </div>\n );\n }\n return (\n <div className=\"overflow-hidden rounded-lg border border-border bg-background\">\n <div className=\"flex items-center justify-between border-b border-border bg-muted/30 px-density-3 py-density-2 text-xs text-muted-foreground\">\n <span>\n {roots.reduce((count, node) => count + countFiles(node), 0)} files\n </span>\n <span className=\"flex gap-density-3\">\n <span>R read</span>\n <span>W written</span>\n </span>\n </div>\n <Tree<FileTreeNode>\n roots={roots}\n ariaLabel=\"Session files\"\n getChildren={(node) => [...node.children.values()].sort(compareNodes)}\n getKey={(node) => node.path}\n getAriaLabel={(node) => node.path}\n getSearchText={(node) => node.path}\n defaultOpen={() => true}\n renderRow={({ node, hasChildren }) => (\n <FileTreeRow node={node} directory={hasChildren} />\n )}\n rowClass={(node) =>\n cn(\n \"group min-h-6 border-l-2 border-transparent py-0 pr-density-3 text-xs hover:border-primary/40 hover:bg-muted/40\",\n !node.children.size &&\n node.access.has(\"written\") &&\n \"border-l-amber-500/60\",\n )\n }\n className=\"pb-1\"\n />\n </div>\n );\n}\n\nfunction FileTreeRow({\n node,\n directory,\n}: {\n node: FileTreeNode;\n directory: boolean;\n}) {\n const FileIcon = directory ? UiFolder : fileTypeIcon(node.name);\n return (\n <>\n <Icon\n icon={FileIcon}\n className={cn(\n \"size-4 shrink-0\",\n directory\n ? \"text-sky-600 dark:text-sky-400\"\n : \"text-muted-foreground\",\n )}\n />\n <span\n className={cn(\n \"min-w-0 flex-1 truncate\",\n directory ? \"font-medium\" : \"font-mono\",\n )}\n >\n {node.name}\n </span>\n {!directory ? <AccessBadge access={node.access} /> : null}\n </>\n );\n}\n\nfunction AccessBadge({ access }: { access: Set<FileAccess> }) {\n const label =\n access.has(\"read\") && access.has(\"written\")\n ? \"RW\"\n : access.has(\"written\")\n ? \"W\"\n : \"R\";\n return (\n <span\n title={\n label === \"RW\" ? \"Read and written\" : label === \"W\" ? \"Written\" : \"Read\"\n }\n className={cn(\n \"w-6 shrink-0 text-right font-mono text-[11px] font-semibold\",\n access.has(\"written\")\n ? \"text-amber-600 dark:text-amber-400\"\n : \"text-muted-foreground\",\n )}\n >\n {label}\n </span>\n );\n}\n\nfunction buildFileTree(files: SessionChangedFiles | undefined) {\n const roots = new Map<string, FileTreeNode>();\n addPaths(roots, files?.read ?? [], \"read\");\n addPaths(roots, files?.written ?? [], \"written\");\n return [...roots.values()].sort(compareNodes);\n}\n\nfunction addPaths(\n roots: Map<string, FileTreeNode>,\n paths: string[],\n access: FileAccess,\n) {\n for (const path of paths) {\n const parts = path.split(\"/\").filter(Boolean);\n let nodes = roots;\n let currentPath = \"\";\n parts.forEach((part, index) => {\n currentPath = currentPath ? `${currentPath}/${part}` : part;\n const node = nodes.get(part) ?? {\n name: part,\n path: currentPath,\n children: new Map(),\n access: new Set<FileAccess>(),\n };\n nodes.set(part, node);\n if (index === parts.length - 1) node.access.add(access);\n nodes = node.children;\n });\n }\n}\n\nfunction compareNodes(left: FileTreeNode, right: FileTreeNode) {\n const leftDirectory = left.children.size > 0;\n const rightDirectory = right.children.size > 0;\n if (leftDirectory !== rightDirectory) return leftDirectory ? -1 : 1;\n return left.name.localeCompare(right.name);\n}\n\nfunction countFiles(node: FileTreeNode): number {\n return node.children.size\n ? [...node.children.values()].reduce(\n (count, child) => count + countFiles(child),\n 0,\n )\n : 1;\n}\n\nfunction fileTypeIcon(path: string): IconComponent {\n const extension = path.toLowerCase().split(\".\").at(-1) ?? \"\";\n if ([\"md\", \"mdx\"].includes(extension)) return UiMarkdown;\n if ([\"json\", \"jsonl\"].includes(extension)) return UiJson;\n if ([\"csv\", \"xls\", \"xlsx\"].includes(extension)) return UiFileSpreadsheet;\n if ([\"png\", \"jpg\", \"jpeg\", \"gif\", \"svg\", \"webp\"].includes(extension))\n return UiImage;\n if ([\"txt\", \"log\", \"rst\"].includes(extension)) return UiFileText;\n if (\n [\n \"ts\",\n \"tsx\",\n \"js\",\n \"jsx\",\n \"go\",\n \"py\",\n \"rs\",\n \"java\",\n \"css\",\n \"scss\",\n \"html\",\n \"yaml\",\n \"yml\",\n \"toml\",\n \"sh\",\n ].includes(extension)\n )\n return UiFileCode;\n return UiFile;\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AAyBO,SAAS,kBAAkB;AAAA,EAChC;AACF,GAEG;AACD,QAAM,QAAQ,cAAc,KAAK;AACjC,MAAI,CAAC,MAAM,QAAQ;AACjB,WACE,oBAAC,OAAA,EAAI,WAAU,uGAAsG,UAAA,4BAErH;AAAA,EAEJ;AACA,SACE,qBAAC,OAAA,EAAI,WAAU,iEACb,UAAA;AAAA,IAAA,qBAAC,OAAA,EAAI,WAAU,gIACb,UAAA;AAAA,MAAA,qBAAC,QAAA,EACE,UAAA;AAAA,QAAA,MAAM,OAAO,CAAC,OAAO,SAAS,QAAQ,WAAW,IAAI,GAAG,CAAC;AAAA,QAAE;AAAA,MAAA,GAC9D;AAAA,MACA,qBAAC,QAAA,EAAK,WAAU,sBACd,UAAA;AAAA,QAAA,oBAAC,UAAK,UAAA,SAAA,CAAM;AAAA,QACZ,oBAAC,UAAK,UAAA,YAAA,CAAS;AAAA,MAAA,EAAA,CACjB;AAAA,IAAA,GACF;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,WAAU;AAAA,QACV,aAAa,CAAC,SAAS,CAAC,GAAG,KAAK,SAAS,OAAA,CAAQ,EAAE,KAAK,YAAY;AAAA,QACpE,QAAQ,CAAC,SAAS,KAAK;AAAA,QACvB,cAAc,CAAC,SAAS,KAAK;AAAA,QAC7B,eAAe,CAAC,SAAS,KAAK;AAAA,QAC9B,aAAa,MAAM;AAAA,QACnB,WAAW,CAAC,EAAE,MAAM,kBAClB,oBAAC,aAAA,EAAY,MAAY,WAAW,aAAa;AAAA,QAEnD,UAAU,CAAC,SACT;AAAA,UACE;AAAA,UACA,CAAC,KAAK,SAAS,QACb,KAAK,OAAO,IAAI,SAAS,KACzB;AAAA,QAAA;AAAA,QAGN,WAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EACZ,GACF;AAEJ;AAEA,SAAS,YAAY;AAAA,EACnB;AAAA,EACA;AACF,GAGG;AACD,QAAM,WAAW,YAAY,WAAW,aAAa,KAAK,IAAI;AAC9D,SACE,qBAAA,UAAA,EACE,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACN,WAAW;AAAA,UACT;AAAA,UACA,YACI,mCACA;AAAA,QAAA;AAAA,MACN;AAAA,IAAA;AAAA,IAEF;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA,YAAY,gBAAgB;AAAA,QAAA;AAAA,QAG7B,UAAA,KAAK;AAAA,MAAA;AAAA,IAAA;AAAA,IAEP,CAAC,YAAY,oBAAC,eAAY,QAAQ,KAAK,QAAQ,IAAK;AAAA,EAAA,GACvD;AAEJ;AAEA,SAAS,YAAY,EAAE,UAAuC;AAC5D,QAAM,QACJ,OAAO,IAAI,MAAM,KAAK,OAAO,IAAI,SAAS,IACtC,OACA,OAAO,IAAI,SAAS,IAClB,MACA;AACR,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OACE,UAAU,OAAO,qBAAqB,UAAU,MAAM,YAAY;AAAA,MAEpE,WAAW;AAAA,QACT;AAAA,QACA,OAAO,IAAI,SAAS,IAChB,uCACA;AAAA,MAAA;AAAA,MAGL,UAAA;AAAA,IAAA;AAAA,EAAA;AAGP;AAEA,SAAS,cAAc,OAAwC;AAC7D,QAAM,4BAAY,IAAA;AAClB,WAAS,QAAO,+BAAO,SAAQ,CAAA,GAAI,MAAM;AACzC,WAAS,QAAO,+BAAO,YAAW,CAAA,GAAI,SAAS;AAC/C,SAAO,CAAC,GAAG,MAAM,QAAQ,EAAE,KAAK,YAAY;AAC9C;AAEA,SAAS,SACP,OACA,OACA,QACA;AACA,aAAW,QAAQ,OAAO;AACxB,UAAM,QAAQ,KAAK,MAAM,GAAG,EAAE,OAAO,OAAO;AAC5C,QAAI,QAAQ;AACZ,QAAI,cAAc;AAClB,UAAM,QAAQ,CAAC,MAAM,UAAU;AAC7B,oBAAc,cAAc,GAAG,WAAW,IAAI,IAAI,KAAK;AACvD,YAAM,OAAO,MAAM,IAAI,IAAI,KAAK;AAAA,QAC9B,MAAM;AAAA,QACN,MAAM;AAAA,QACN,8BAAc,IAAA;AAAA,QACd,4BAAY,IAAA;AAAA,MAAgB;AAE9B,YAAM,IAAI,MAAM,IAAI;AACpB,UAAI,UAAU,MAAM,SAAS,EAAG,MAAK,OAAO,IAAI,MAAM;AACtD,cAAQ,KAAK;AAAA,IACf,CAAC;AAAA,EACH;AACF;AAEA,SAAS,aAAa,MAAoB,OAAqB;AAC7D,QAAM,gBAAgB,KAAK,SAAS,OAAO;AAC3C,QAAM,iBAAiB,MAAM,SAAS,OAAO;AAC7C,MAAI,kBAAkB,eAAgB,QAAO,gBAAgB,KAAK;AAClE,SAAO,KAAK,KAAK,cAAc,MAAM,IAAI;AAC3C;AAEA,SAAS,WAAW,MAA4B;AAC9C,SAAO,KAAK,SAAS,OACjB,CAAC,GAAG,KAAK,SAAS,OAAA,CAAQ,EAAE;AAAA,IAC1B,CAAC,OAAO,UAAU,QAAQ,WAAW,KAAK;AAAA,IAC1C;AAAA,EAAA,IAEF;AACN;AAEA,SAAS,aAAa,MAA6B;AACjD,QAAM,YAAY,KAAK,cAAc,MAAM,GAAG,EAAE,GAAG,EAAE,KAAK;AAC1D,MAAI,CAAC,MAAM,KAAK,EAAE,SAAS,SAAS,EAAG,QAAO;AAC9C,MAAI,CAAC,QAAQ,OAAO,EAAE,SAAS,SAAS,EAAG,QAAO;AAClD,MAAI,CAAC,OAAO,OAAO,MAAM,EAAE,SAAS,SAAS,EAAG,QAAO;AACvD,MAAI,CAAC,OAAO,OAAO,QAAQ,OAAO,OAAO,MAAM,EAAE,SAAS,SAAS;AACjE,WAAO;AACT,MAAI,CAAC,OAAO,OAAO,KAAK,EAAE,SAAS,SAAS,EAAG,QAAO;AACtD,MACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,EACA,SAAS,SAAS;AAEpB,WAAO;AACT,SAAO;AACT;"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const react = require("react");
|
|
4
|
+
const SessionInspector_collection = require("./SessionInspector.collection.cjs");
|
|
5
|
+
function useSessionHierarchy(collection) {
|
|
6
|
+
var _a;
|
|
7
|
+
SessionInspector_collection.validateSessionCollection(collection);
|
|
8
|
+
const [loaded, setLoaded] = react.useState(
|
|
9
|
+
/* @__PURE__ */ new Map()
|
|
10
|
+
);
|
|
11
|
+
const [loading, setLoading] = react.useState(/* @__PURE__ */ new Set());
|
|
12
|
+
const [errors, setErrors] = react.useState(/* @__PURE__ */ new Map());
|
|
13
|
+
const roots = react.useMemo(
|
|
14
|
+
() => SessionInspector_collection.buildSessionHierarchy(collection, loaded),
|
|
15
|
+
[collection, loaded]
|
|
16
|
+
);
|
|
17
|
+
const initialSessionIds = ((_a = collection.defaultSelectedSessionIds) == null ? void 0 : _a.length) ? collection.defaultSelectedSessionIds : [collection.currentSessionId];
|
|
18
|
+
const [checked, setChecked] = react.useState(
|
|
19
|
+
() => SessionInspector_collection.initialCheckedKeys(roots, initialSessionIds)
|
|
20
|
+
);
|
|
21
|
+
const identity = `${collection.id}:${collection.currentSessionId}:${initialSessionIds.join(",")}`;
|
|
22
|
+
const previousIdentity = react.useRef(identity);
|
|
23
|
+
react.useEffect(() => {
|
|
24
|
+
if (previousIdentity.current === identity) return;
|
|
25
|
+
previousIdentity.current = identity;
|
|
26
|
+
setLoaded(/* @__PURE__ */ new Map());
|
|
27
|
+
setErrors(/* @__PURE__ */ new Map());
|
|
28
|
+
setChecked(
|
|
29
|
+
SessionInspector_collection.initialCheckedKeys(
|
|
30
|
+
SessionInspector_collection.buildSessionHierarchy(collection, /* @__PURE__ */ new Map()),
|
|
31
|
+
initialSessionIds
|
|
32
|
+
)
|
|
33
|
+
);
|
|
34
|
+
}, [collection, identity]);
|
|
35
|
+
react.useEffect(() => {
|
|
36
|
+
setChecked((previous) => reconcileCheckedBranches(roots, previous));
|
|
37
|
+
}, [roots]);
|
|
38
|
+
const ensureLoaded = react.useCallback(
|
|
39
|
+
async (item) => {
|
|
40
|
+
const existing = SessionInspector_collection.collectionSession(item, loaded);
|
|
41
|
+
if (existing) return existing;
|
|
42
|
+
if (!collection.loadSession) {
|
|
43
|
+
throw new Error(
|
|
44
|
+
`Session ${item.id} is not loaded and no loader was provided`
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
setLoading((previous) => new Set(previous).add(item.id));
|
|
48
|
+
setErrors((previous) => {
|
|
49
|
+
const next = new Map(previous);
|
|
50
|
+
next.delete(item.id);
|
|
51
|
+
return next;
|
|
52
|
+
});
|
|
53
|
+
try {
|
|
54
|
+
const session = await collection.loadSession(item);
|
|
55
|
+
if (!session.id) throw new Error(`Loaded session ${item.id} has no id`);
|
|
56
|
+
setLoaded((previous) => new Map(previous).set(item.id, session));
|
|
57
|
+
return session;
|
|
58
|
+
} catch (reason) {
|
|
59
|
+
const message = reason instanceof Error ? reason.message : String(reason);
|
|
60
|
+
setErrors((previous) => new Map(previous).set(item.id, message));
|
|
61
|
+
throw reason;
|
|
62
|
+
} finally {
|
|
63
|
+
setLoading((previous) => {
|
|
64
|
+
const next = new Set(previous);
|
|
65
|
+
next.delete(item.id);
|
|
66
|
+
return next;
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
[collection, loaded]
|
|
71
|
+
);
|
|
72
|
+
const loadChildren = react.useCallback(
|
|
73
|
+
async (node) => {
|
|
74
|
+
if (node.kind !== "session" || !node.item) return node.children;
|
|
75
|
+
const session = await ensureLoaded(node.item);
|
|
76
|
+
const nextLoaded = new Map(loaded).set(node.item.id, session);
|
|
77
|
+
const nextRoots = SessionInspector_collection.buildSessionHierarchy(collection, nextLoaded);
|
|
78
|
+
const nextNode = findNode(nextRoots, node.key);
|
|
79
|
+
if (!nextNode) throw new Error(`Loaded hierarchy is missing ${node.key}`);
|
|
80
|
+
if (checked.has(node.key)) {
|
|
81
|
+
setChecked((previous) => {
|
|
82
|
+
const next = new Set(previous);
|
|
83
|
+
SessionInspector_collection.branchKeys(nextNode).forEach((key) => next.add(key));
|
|
84
|
+
return next;
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
return nextNode.children;
|
|
88
|
+
},
|
|
89
|
+
[checked, collection, ensureLoaded, loaded]
|
|
90
|
+
);
|
|
91
|
+
const setBranchChecked = react.useCallback(
|
|
92
|
+
async (node, include) => {
|
|
93
|
+
let nextNode = node;
|
|
94
|
+
let targetRoots = roots;
|
|
95
|
+
if (include && node.kind === "session" && node.item && !SessionInspector_collection.collectionSession(node.item, loaded)) {
|
|
96
|
+
const session = await ensureLoaded(node.item);
|
|
97
|
+
targetRoots = SessionInspector_collection.buildSessionHierarchy(
|
|
98
|
+
collection,
|
|
99
|
+
new Map(loaded).set(node.item.id, session)
|
|
100
|
+
);
|
|
101
|
+
nextNode = findNode(targetRoots, node.key) ?? node;
|
|
102
|
+
}
|
|
103
|
+
setChecked(
|
|
104
|
+
(previous) => SessionInspector_collection.toggleHierarchyBranch(targetRoots, previous, nextNode.key, include)
|
|
105
|
+
);
|
|
106
|
+
},
|
|
107
|
+
[collection, ensureLoaded, loaded, roots]
|
|
108
|
+
);
|
|
109
|
+
const currentItem = collection.sessions.find(
|
|
110
|
+
(item) => item.id === collection.currentSessionId
|
|
111
|
+
);
|
|
112
|
+
const current = SessionInspector_collection.collectionSession(currentItem, loaded);
|
|
113
|
+
return {
|
|
114
|
+
current,
|
|
115
|
+
filtered: SessionInspector_collection.filterSessionCollection(collection, loaded, roots, checked),
|
|
116
|
+
roots,
|
|
117
|
+
checked,
|
|
118
|
+
setBranchChecked,
|
|
119
|
+
loadChildren,
|
|
120
|
+
loading,
|
|
121
|
+
loadedSessionIds: /* @__PURE__ */ new Set([
|
|
122
|
+
...collection.sessions.filter((item) => Boolean(item.session)).map((item) => item.id),
|
|
123
|
+
...loaded.keys()
|
|
124
|
+
]),
|
|
125
|
+
errors
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
function findNode(roots, key) {
|
|
129
|
+
for (const root of roots) {
|
|
130
|
+
if (root.key === key) return root;
|
|
131
|
+
const child = findNode(root.children, key);
|
|
132
|
+
if (child) return child;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
function reconcileCheckedBranches(roots, checked) {
|
|
136
|
+
const next = new Set(checked);
|
|
137
|
+
const visit = (node) => {
|
|
138
|
+
if (checked.has(node.key)) {
|
|
139
|
+
SessionInspector_collection.branchKeys(node).forEach((key) => next.add(key));
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
node.children.forEach(visit);
|
|
143
|
+
};
|
|
144
|
+
roots.forEach(visit);
|
|
145
|
+
return next;
|
|
146
|
+
}
|
|
147
|
+
exports.useSessionHierarchy = useSessionHierarchy;
|
|
148
|
+
//# sourceMappingURL=SessionInspector.hierarchy-state.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionInspector.hierarchy-state.cjs","sources":["../../../src/data/ai/SessionInspector.hierarchy-state.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n branchKeys,\n buildSessionHierarchy,\n collectionSession,\n filterSessionCollection,\n initialCheckedKeys,\n toggleHierarchyBranch,\n validateSessionCollection,\n type SessionCollectionInput,\n type SessionCollectionItem,\n type SessionHierarchyNode,\n} from \"./SessionInspector.collection\";\nimport type { UnifiedSessionInput } from \"./SessionViewer.unified\";\n\nexport interface SessionHierarchyState {\n current: UnifiedSessionInput;\n filtered: UnifiedSessionInput;\n roots: SessionHierarchyNode[];\n checked: ReadonlySet<string>;\n setBranchChecked: (\n node: SessionHierarchyNode,\n include: boolean\n ) => Promise<void>;\n loadChildren: (node: SessionHierarchyNode) => Promise<SessionHierarchyNode[]>;\n loading: ReadonlySet<string>;\n loadedSessionIds: ReadonlySet<string>;\n errors: ReadonlyMap<string, string>;\n}\n\nexport function useSessionHierarchy(\n collection: SessionCollectionInput\n): SessionHierarchyState {\n validateSessionCollection(collection);\n const [loaded, setLoaded] = useState<Map<string, UnifiedSessionInput>>(\n new Map()\n );\n const [loading, setLoading] = useState<Set<string>>(new Set());\n const [errors, setErrors] = useState<Map<string, string>>(new Map());\n const roots = useMemo(\n () => buildSessionHierarchy(collection, loaded),\n [collection, loaded]\n );\n const initialSessionIds = collection.defaultSelectedSessionIds?.length\n ? collection.defaultSelectedSessionIds\n : [collection.currentSessionId];\n const [checked, setChecked] = useState<Set<string>>(() =>\n initialCheckedKeys(roots, initialSessionIds)\n );\n const identity = `${collection.id}:${\n collection.currentSessionId\n }:${initialSessionIds.join(\",\")}`;\n const previousIdentity = useRef(identity);\n\n useEffect(() => {\n if (previousIdentity.current === identity) return;\n previousIdentity.current = identity;\n setLoaded(new Map());\n setErrors(new Map());\n setChecked(\n initialCheckedKeys(\n buildSessionHierarchy(collection, new Map()),\n initialSessionIds\n )\n );\n }, [collection, identity]);\n\n useEffect(() => {\n setChecked((previous) => reconcileCheckedBranches(roots, previous));\n }, [roots]);\n\n const ensureLoaded = useCallback(\n async (item: SessionCollectionItem) => {\n const existing = collectionSession(item, loaded);\n if (existing) return existing;\n if (!collection.loadSession) {\n throw new Error(\n `Session ${item.id} is not loaded and no loader was provided`\n );\n }\n setLoading((previous) => new Set(previous).add(item.id));\n setErrors((previous) => {\n const next = new Map(previous);\n next.delete(item.id);\n return next;\n });\n try {\n const session = await collection.loadSession(item);\n if (!session.id) throw new Error(`Loaded session ${item.id} has no id`);\n setLoaded((previous) => new Map(previous).set(item.id, session));\n return session;\n } catch (reason) {\n const message =\n reason instanceof Error ? reason.message : String(reason);\n setErrors((previous) => new Map(previous).set(item.id, message));\n throw reason;\n } finally {\n setLoading((previous) => {\n const next = new Set(previous);\n next.delete(item.id);\n return next;\n });\n }\n },\n [collection, loaded]\n );\n\n const loadChildren = useCallback(\n async (node: SessionHierarchyNode) => {\n if (node.kind !== \"session\" || !node.item) return node.children;\n const session = await ensureLoaded(node.item);\n const nextLoaded = new Map(loaded).set(node.item.id, session);\n const nextRoots = buildSessionHierarchy(collection, nextLoaded);\n const nextNode = findNode(nextRoots, node.key);\n if (!nextNode) throw new Error(`Loaded hierarchy is missing ${node.key}`);\n if (checked.has(node.key)) {\n setChecked((previous) => {\n const next = new Set(previous);\n branchKeys(nextNode).forEach((key) => next.add(key));\n return next;\n });\n }\n return nextNode.children;\n },\n [checked, collection, ensureLoaded, loaded]\n );\n\n const setBranchChecked = useCallback(\n async (node: SessionHierarchyNode, include: boolean) => {\n let nextNode = node;\n let targetRoots = roots;\n if (\n include &&\n node.kind === \"session\" &&\n node.item &&\n !collectionSession(node.item, loaded)\n ) {\n const session = await ensureLoaded(node.item);\n targetRoots = buildSessionHierarchy(\n collection,\n new Map(loaded).set(node.item.id, session)\n );\n nextNode = findNode(targetRoots, node.key) ?? node;\n }\n setChecked((previous) =>\n toggleHierarchyBranch(targetRoots, previous, nextNode.key, include)\n );\n },\n [collection, ensureLoaded, loaded, roots]\n );\n\n const currentItem = collection.sessions.find(\n (item) => item.id === collection.currentSessionId\n )!;\n const current = collectionSession(currentItem, loaded)!;\n return {\n current,\n filtered: filterSessionCollection(collection, loaded, roots, checked),\n roots,\n checked,\n setBranchChecked,\n loadChildren,\n loading,\n loadedSessionIds: new Set([\n ...collection.sessions\n .filter((item) => Boolean(item.session))\n .map((item) => item.id),\n ...loaded.keys(),\n ]),\n errors,\n };\n}\n\nfunction findNode(\n roots: SessionHierarchyNode[],\n key: string\n): SessionHierarchyNode | undefined {\n for (const root of roots) {\n if (root.key === key) return root;\n const child = findNode(root.children, key);\n if (child) return child;\n }\n}\n\nfunction reconcileCheckedBranches(\n roots: SessionHierarchyNode[],\n checked: ReadonlySet<string>\n) {\n const next = new Set(checked);\n const visit = (node: SessionHierarchyNode) => {\n if (checked.has(node.key)) {\n branchKeys(node).forEach((key) => next.add(key));\n return;\n }\n node.children.forEach(visit);\n };\n roots.forEach(visit);\n return next;\n}\n"],"names":["validateSessionCollection","useState","useMemo","buildSessionHierarchy","initialCheckedKeys","useRef","useEffect","useCallback","collectionSession","branchKeys","toggleHierarchyBranch","filterSessionCollection"],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { SessionCollectionInput, SessionHierarchyNode } from './SessionInspector.collection';
|
|
2
|
+
import { UnifiedSessionInput } from './SessionViewer.unified';
|
|
3
|
+
export interface SessionHierarchyState {
|
|
4
|
+
current: UnifiedSessionInput;
|
|
5
|
+
filtered: UnifiedSessionInput;
|
|
6
|
+
roots: SessionHierarchyNode[];
|
|
7
|
+
checked: ReadonlySet<string>;
|
|
8
|
+
setBranchChecked: (node: SessionHierarchyNode, include: boolean) => Promise<void>;
|
|
9
|
+
loadChildren: (node: SessionHierarchyNode) => Promise<SessionHierarchyNode[]>;
|
|
10
|
+
loading: ReadonlySet<string>;
|
|
11
|
+
loadedSessionIds: ReadonlySet<string>;
|
|
12
|
+
errors: ReadonlyMap<string, string>;
|
|
13
|
+
}
|
|
14
|
+
export declare function useSessionHierarchy(collection: SessionCollectionInput): SessionHierarchyState;
|
|
15
|
+
//# sourceMappingURL=SessionInspector.hierarchy-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionInspector.hierarchy-state.d.ts","sourceRoot":"","sources":["../../../src/data/ai/SessionInspector.hierarchy-state.ts"],"names":[],"mappings":"AACA,OAAO,EAQL,KAAK,sBAAsB,EAE3B,KAAK,oBAAoB,EAC1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,mBAAmB,CAAC;IAC7B,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAC9B,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,gBAAgB,EAAE,CAChB,IAAI,EAAE,oBAAoB,EAC1B,OAAO,EAAE,OAAO,KACb,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,YAAY,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC9E,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,sBAAsB,GACjC,qBAAqB,CA2IvB"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { useState, useMemo, useRef, useEffect, useCallback } from "react";
|
|
2
|
+
import { validateSessionCollection, buildSessionHierarchy, initialCheckedKeys, collectionSession, branchKeys, toggleHierarchyBranch, filterSessionCollection } from "./SessionInspector.collection.js";
|
|
3
|
+
function useSessionHierarchy(collection) {
|
|
4
|
+
var _a;
|
|
5
|
+
validateSessionCollection(collection);
|
|
6
|
+
const [loaded, setLoaded] = useState(
|
|
7
|
+
/* @__PURE__ */ new Map()
|
|
8
|
+
);
|
|
9
|
+
const [loading, setLoading] = useState(/* @__PURE__ */ new Set());
|
|
10
|
+
const [errors, setErrors] = useState(/* @__PURE__ */ new Map());
|
|
11
|
+
const roots = useMemo(
|
|
12
|
+
() => buildSessionHierarchy(collection, loaded),
|
|
13
|
+
[collection, loaded]
|
|
14
|
+
);
|
|
15
|
+
const initialSessionIds = ((_a = collection.defaultSelectedSessionIds) == null ? void 0 : _a.length) ? collection.defaultSelectedSessionIds : [collection.currentSessionId];
|
|
16
|
+
const [checked, setChecked] = useState(
|
|
17
|
+
() => initialCheckedKeys(roots, initialSessionIds)
|
|
18
|
+
);
|
|
19
|
+
const identity = `${collection.id}:${collection.currentSessionId}:${initialSessionIds.join(",")}`;
|
|
20
|
+
const previousIdentity = useRef(identity);
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
if (previousIdentity.current === identity) return;
|
|
23
|
+
previousIdentity.current = identity;
|
|
24
|
+
setLoaded(/* @__PURE__ */ new Map());
|
|
25
|
+
setErrors(/* @__PURE__ */ new Map());
|
|
26
|
+
setChecked(
|
|
27
|
+
initialCheckedKeys(
|
|
28
|
+
buildSessionHierarchy(collection, /* @__PURE__ */ new Map()),
|
|
29
|
+
initialSessionIds
|
|
30
|
+
)
|
|
31
|
+
);
|
|
32
|
+
}, [collection, identity]);
|
|
33
|
+
useEffect(() => {
|
|
34
|
+
setChecked((previous) => reconcileCheckedBranches(roots, previous));
|
|
35
|
+
}, [roots]);
|
|
36
|
+
const ensureLoaded = useCallback(
|
|
37
|
+
async (item) => {
|
|
38
|
+
const existing = collectionSession(item, loaded);
|
|
39
|
+
if (existing) return existing;
|
|
40
|
+
if (!collection.loadSession) {
|
|
41
|
+
throw new Error(
|
|
42
|
+
`Session ${item.id} is not loaded and no loader was provided`
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
setLoading((previous) => new Set(previous).add(item.id));
|
|
46
|
+
setErrors((previous) => {
|
|
47
|
+
const next = new Map(previous);
|
|
48
|
+
next.delete(item.id);
|
|
49
|
+
return next;
|
|
50
|
+
});
|
|
51
|
+
try {
|
|
52
|
+
const session = await collection.loadSession(item);
|
|
53
|
+
if (!session.id) throw new Error(`Loaded session ${item.id} has no id`);
|
|
54
|
+
setLoaded((previous) => new Map(previous).set(item.id, session));
|
|
55
|
+
return session;
|
|
56
|
+
} catch (reason) {
|
|
57
|
+
const message = reason instanceof Error ? reason.message : String(reason);
|
|
58
|
+
setErrors((previous) => new Map(previous).set(item.id, message));
|
|
59
|
+
throw reason;
|
|
60
|
+
} finally {
|
|
61
|
+
setLoading((previous) => {
|
|
62
|
+
const next = new Set(previous);
|
|
63
|
+
next.delete(item.id);
|
|
64
|
+
return next;
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
[collection, loaded]
|
|
69
|
+
);
|
|
70
|
+
const loadChildren = useCallback(
|
|
71
|
+
async (node) => {
|
|
72
|
+
if (node.kind !== "session" || !node.item) return node.children;
|
|
73
|
+
const session = await ensureLoaded(node.item);
|
|
74
|
+
const nextLoaded = new Map(loaded).set(node.item.id, session);
|
|
75
|
+
const nextRoots = buildSessionHierarchy(collection, nextLoaded);
|
|
76
|
+
const nextNode = findNode(nextRoots, node.key);
|
|
77
|
+
if (!nextNode) throw new Error(`Loaded hierarchy is missing ${node.key}`);
|
|
78
|
+
if (checked.has(node.key)) {
|
|
79
|
+
setChecked((previous) => {
|
|
80
|
+
const next = new Set(previous);
|
|
81
|
+
branchKeys(nextNode).forEach((key) => next.add(key));
|
|
82
|
+
return next;
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
return nextNode.children;
|
|
86
|
+
},
|
|
87
|
+
[checked, collection, ensureLoaded, loaded]
|
|
88
|
+
);
|
|
89
|
+
const setBranchChecked = useCallback(
|
|
90
|
+
async (node, include) => {
|
|
91
|
+
let nextNode = node;
|
|
92
|
+
let targetRoots = roots;
|
|
93
|
+
if (include && node.kind === "session" && node.item && !collectionSession(node.item, loaded)) {
|
|
94
|
+
const session = await ensureLoaded(node.item);
|
|
95
|
+
targetRoots = buildSessionHierarchy(
|
|
96
|
+
collection,
|
|
97
|
+
new Map(loaded).set(node.item.id, session)
|
|
98
|
+
);
|
|
99
|
+
nextNode = findNode(targetRoots, node.key) ?? node;
|
|
100
|
+
}
|
|
101
|
+
setChecked(
|
|
102
|
+
(previous) => toggleHierarchyBranch(targetRoots, previous, nextNode.key, include)
|
|
103
|
+
);
|
|
104
|
+
},
|
|
105
|
+
[collection, ensureLoaded, loaded, roots]
|
|
106
|
+
);
|
|
107
|
+
const currentItem = collection.sessions.find(
|
|
108
|
+
(item) => item.id === collection.currentSessionId
|
|
109
|
+
);
|
|
110
|
+
const current = collectionSession(currentItem, loaded);
|
|
111
|
+
return {
|
|
112
|
+
current,
|
|
113
|
+
filtered: filterSessionCollection(collection, loaded, roots, checked),
|
|
114
|
+
roots,
|
|
115
|
+
checked,
|
|
116
|
+
setBranchChecked,
|
|
117
|
+
loadChildren,
|
|
118
|
+
loading,
|
|
119
|
+
loadedSessionIds: /* @__PURE__ */ new Set([
|
|
120
|
+
...collection.sessions.filter((item) => Boolean(item.session)).map((item) => item.id),
|
|
121
|
+
...loaded.keys()
|
|
122
|
+
]),
|
|
123
|
+
errors
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
function findNode(roots, key) {
|
|
127
|
+
for (const root of roots) {
|
|
128
|
+
if (root.key === key) return root;
|
|
129
|
+
const child = findNode(root.children, key);
|
|
130
|
+
if (child) return child;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
function reconcileCheckedBranches(roots, checked) {
|
|
134
|
+
const next = new Set(checked);
|
|
135
|
+
const visit = (node) => {
|
|
136
|
+
if (checked.has(node.key)) {
|
|
137
|
+
branchKeys(node).forEach((key) => next.add(key));
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
node.children.forEach(visit);
|
|
141
|
+
};
|
|
142
|
+
roots.forEach(visit);
|
|
143
|
+
return next;
|
|
144
|
+
}
|
|
145
|
+
export {
|
|
146
|
+
useSessionHierarchy
|
|
147
|
+
};
|
|
148
|
+
//# sourceMappingURL=SessionInspector.hierarchy-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionInspector.hierarchy-state.js","sources":["../../../src/data/ai/SessionInspector.hierarchy-state.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n branchKeys,\n buildSessionHierarchy,\n collectionSession,\n filterSessionCollection,\n initialCheckedKeys,\n toggleHierarchyBranch,\n validateSessionCollection,\n type SessionCollectionInput,\n type SessionCollectionItem,\n type SessionHierarchyNode,\n} from \"./SessionInspector.collection\";\nimport type { UnifiedSessionInput } from \"./SessionViewer.unified\";\n\nexport interface SessionHierarchyState {\n current: UnifiedSessionInput;\n filtered: UnifiedSessionInput;\n roots: SessionHierarchyNode[];\n checked: ReadonlySet<string>;\n setBranchChecked: (\n node: SessionHierarchyNode,\n include: boolean\n ) => Promise<void>;\n loadChildren: (node: SessionHierarchyNode) => Promise<SessionHierarchyNode[]>;\n loading: ReadonlySet<string>;\n loadedSessionIds: ReadonlySet<string>;\n errors: ReadonlyMap<string, string>;\n}\n\nexport function useSessionHierarchy(\n collection: SessionCollectionInput\n): SessionHierarchyState {\n validateSessionCollection(collection);\n const [loaded, setLoaded] = useState<Map<string, UnifiedSessionInput>>(\n new Map()\n );\n const [loading, setLoading] = useState<Set<string>>(new Set());\n const [errors, setErrors] = useState<Map<string, string>>(new Map());\n const roots = useMemo(\n () => buildSessionHierarchy(collection, loaded),\n [collection, loaded]\n );\n const initialSessionIds = collection.defaultSelectedSessionIds?.length\n ? collection.defaultSelectedSessionIds\n : [collection.currentSessionId];\n const [checked, setChecked] = useState<Set<string>>(() =>\n initialCheckedKeys(roots, initialSessionIds)\n );\n const identity = `${collection.id}:${\n collection.currentSessionId\n }:${initialSessionIds.join(\",\")}`;\n const previousIdentity = useRef(identity);\n\n useEffect(() => {\n if (previousIdentity.current === identity) return;\n previousIdentity.current = identity;\n setLoaded(new Map());\n setErrors(new Map());\n setChecked(\n initialCheckedKeys(\n buildSessionHierarchy(collection, new Map()),\n initialSessionIds\n )\n );\n }, [collection, identity]);\n\n useEffect(() => {\n setChecked((previous) => reconcileCheckedBranches(roots, previous));\n }, [roots]);\n\n const ensureLoaded = useCallback(\n async (item: SessionCollectionItem) => {\n const existing = collectionSession(item, loaded);\n if (existing) return existing;\n if (!collection.loadSession) {\n throw new Error(\n `Session ${item.id} is not loaded and no loader was provided`\n );\n }\n setLoading((previous) => new Set(previous).add(item.id));\n setErrors((previous) => {\n const next = new Map(previous);\n next.delete(item.id);\n return next;\n });\n try {\n const session = await collection.loadSession(item);\n if (!session.id) throw new Error(`Loaded session ${item.id} has no id`);\n setLoaded((previous) => new Map(previous).set(item.id, session));\n return session;\n } catch (reason) {\n const message =\n reason instanceof Error ? reason.message : String(reason);\n setErrors((previous) => new Map(previous).set(item.id, message));\n throw reason;\n } finally {\n setLoading((previous) => {\n const next = new Set(previous);\n next.delete(item.id);\n return next;\n });\n }\n },\n [collection, loaded]\n );\n\n const loadChildren = useCallback(\n async (node: SessionHierarchyNode) => {\n if (node.kind !== \"session\" || !node.item) return node.children;\n const session = await ensureLoaded(node.item);\n const nextLoaded = new Map(loaded).set(node.item.id, session);\n const nextRoots = buildSessionHierarchy(collection, nextLoaded);\n const nextNode = findNode(nextRoots, node.key);\n if (!nextNode) throw new Error(`Loaded hierarchy is missing ${node.key}`);\n if (checked.has(node.key)) {\n setChecked((previous) => {\n const next = new Set(previous);\n branchKeys(nextNode).forEach((key) => next.add(key));\n return next;\n });\n }\n return nextNode.children;\n },\n [checked, collection, ensureLoaded, loaded]\n );\n\n const setBranchChecked = useCallback(\n async (node: SessionHierarchyNode, include: boolean) => {\n let nextNode = node;\n let targetRoots = roots;\n if (\n include &&\n node.kind === \"session\" &&\n node.item &&\n !collectionSession(node.item, loaded)\n ) {\n const session = await ensureLoaded(node.item);\n targetRoots = buildSessionHierarchy(\n collection,\n new Map(loaded).set(node.item.id, session)\n );\n nextNode = findNode(targetRoots, node.key) ?? node;\n }\n setChecked((previous) =>\n toggleHierarchyBranch(targetRoots, previous, nextNode.key, include)\n );\n },\n [collection, ensureLoaded, loaded, roots]\n );\n\n const currentItem = collection.sessions.find(\n (item) => item.id === collection.currentSessionId\n )!;\n const current = collectionSession(currentItem, loaded)!;\n return {\n current,\n filtered: filterSessionCollection(collection, loaded, roots, checked),\n roots,\n checked,\n setBranchChecked,\n loadChildren,\n loading,\n loadedSessionIds: new Set([\n ...collection.sessions\n .filter((item) => Boolean(item.session))\n .map((item) => item.id),\n ...loaded.keys(),\n ]),\n errors,\n };\n}\n\nfunction findNode(\n roots: SessionHierarchyNode[],\n key: string\n): SessionHierarchyNode | undefined {\n for (const root of roots) {\n if (root.key === key) return root;\n const child = findNode(root.children, key);\n if (child) return child;\n }\n}\n\nfunction reconcileCheckedBranches(\n roots: SessionHierarchyNode[],\n checked: ReadonlySet<string>\n) {\n const next = new Set(checked);\n const visit = (node: SessionHierarchyNode) => {\n if (checked.has(node.key)) {\n branchKeys(node).forEach((key) => next.add(key));\n return;\n }\n node.children.forEach(visit);\n };\n roots.forEach(visit);\n return next;\n}\n"],"names":[],"mappings":"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"}
|